Skip to content

Commit 77de4a4

Browse files
committed
added selection panel expansion
1 parent f84ec0f commit 77de4a4

3 files changed

Lines changed: 61 additions & 1 deletion

File tree

src/graph_lens_lite.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,14 @@ <h5 class="purple">Shown:
9090
onclick="cache.sm.undoSelection()"></button>
9191
<button class="small-btn disabled" title="Redo Selection" id="redoSelectionBtn"
9292
onclick="cache.sm.redoSelection()"></button>
93+
<div class="button-separator"></div>
94+
<button class="small-btn" title="Expand selection editor" id="selectionEditorToggleBtn"
95+
onclick="cache.ui.toggleSelectionEditor()"></button>
9396
<div id="manualGroupSeparator" class="button-separator" style="display: none;"></div>
9497
<span id="manualBubbleGroupStatus" class="manual-group-status" style="display: none;"></span>
9598
<button id="clearManualGroupsBtn" class="small-btn red" title="Clear all manual bubble groups"
9699
onclick="cache.bs.clearAllManualGroups()" style="display: none;">×</button>
100+
<div id="selectionEditorPanel" class="selection-editor-panel"></div>
97101
</div>
98102
<div id="innerGraphContainer"></div>
99103
</div>

src/managers/ui.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,18 @@ class UIManager {
372372
}, 300);
373373
}
374374

375+
toggleSelectionEditor() {
376+
const container = document.getElementById("selectedElementsContainer");
377+
const panel = document.getElementById("selectionEditorPanel");
378+
const toggleBtn = document.getElementById("selectionEditorToggleBtn");
379+
if (!container || !panel || !toggleBtn) return;
380+
381+
const isExpanded = container.classList.toggle("expanded");
382+
toggleBtn.textContent = isExpanded ? "▴" : "▾";
383+
toggleBtn.title = isExpanded ? "Collapse selection editor" : "Expand selection editor";
384+
toggleBtn.setAttribute("aria-expanded", isExpanded ? "true" : "false");
385+
}
386+
375387
async toggleLassoSelection() {
376388
const lassoWrapper = document.getElementById("lassoWrapper");
377389
let lassoIsActive = lassoWrapper.classList.contains("active");
@@ -712,6 +724,18 @@ class UIManager {
712724
const content = document.getElementById("stylingPanelContent");
713725
content.innerHTML = "";
714726
content.appendChild(createStyleDiv(this.cache));
727+
this.mountSelectionEditorCards();
728+
}
729+
730+
mountSelectionEditorCards() {
731+
const selectionPanel = document.getElementById("selectionEditorPanel");
732+
if (!selectionPanel) return;
733+
734+
selectionPanel.innerHTML = "";
735+
["Focus Elements", "Select Elements", "Arrange Selection"].forEach((cardId) => {
736+
const card = document.getElementById(cardId);
737+
if (card) selectionPanel.appendChild(card);
738+
});
715739
}
716740
}
717741

src/style.css

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,11 +188,12 @@ body, html {
188188
border: 1px solid #403C53;
189189
border-radius: 5px;
190190
background-color: #E4E3EA80;
191-
transition: opacity 0.1s ease-in-out, right 0.3s ease-in-out;
191+
transition: opacity 0.1s ease-in-out, right 0.3s ease-in-out, width 0.25s ease-in-out, max-width 0.25s ease-in-out, box-shadow 0.25s ease-in-out;
192192
text-align: center;
193193
padding: 2px;
194194
font-size: 13px;
195195
z-index: 1000;
196+
max-width: calc(100% - 20px);
196197
}
197198

198199
#selectedElementsContainer.hidden {
@@ -202,6 +203,37 @@ body, html {
202203
height: 0;
203204
}
204205

206+
#selectedElementsContainer.expanded {
207+
width: 360px;
208+
box-shadow: 0 6px 12px rgba(64, 60, 83, 0.2);
209+
}
210+
211+
.selection-editor-panel {
212+
width: 0;
213+
max-height: 0;
214+
opacity: 0;
215+
overflow: hidden;
216+
margin-top: 0;
217+
transition: max-height 0.25s ease-in-out, opacity 0.2s ease-in-out, margin-top 0.25s ease-in-out;
218+
}
219+
220+
#selectedElementsContainer.expanded .selection-editor-panel {
221+
width: 100%;
222+
max-height: 420px;
223+
opacity: 1;
224+
margin-top: 6px;
225+
overflow-y: auto;
226+
}
227+
228+
#selectedElementsContainer .selection-editor-panel .card-labeled {
229+
width: 100%;
230+
box-sizing: border-box;
231+
}
232+
233+
#selectedElementsContainer .selection-editor-panel .card-row {
234+
flex-wrap: wrap;
235+
}
236+
205237
#selectView {
206238
margin-bottom: 10px;
207239
}

0 commit comments

Comments
 (0)