@design.estate/dees-wcctools 3.3.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_bundle/bundle.js +735 -231
- package/dist_bundle/bundle.js.map +4 -4
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/wcc-contextmenu.d.ts +25 -0
- package/dist_ts_web/elements/wcc-contextmenu.js +257 -0
- package/dist_ts_web/elements/wcc-dashboard.d.ts +2 -0
- package/dist_ts_web/elements/wcc-dashboard.js +95 -4
- package/dist_ts_web/elements/wcc-sidebar.d.ts +17 -0
- package/dist_ts_web/elements/wcc-sidebar.js +341 -64
- package/dist_watch/bundle.js +1144 -383
- package/dist_watch/bundle.js.map +4 -4
- package/package.json +1 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/wcc-contextmenu.ts +211 -0
- package/ts_web/elements/wcc-dashboard.ts +77 -2
- package/ts_web/elements/wcc-sidebar.ts +350 -62
|
@@ -9,12 +9,22 @@ export declare class WccSidebar extends DeesElement {
|
|
|
9
9
|
accessor isNative: boolean;
|
|
10
10
|
accessor expandedElements: Set<string>;
|
|
11
11
|
accessor collapsedSections: Set<string>;
|
|
12
|
+
accessor searchQuery: string;
|
|
13
|
+
accessor pinnedItems: Set<string>;
|
|
12
14
|
private sectionsInitialized;
|
|
13
15
|
render(): TemplateResult;
|
|
14
16
|
/**
|
|
15
17
|
* Initialize collapsed sections from section config
|
|
16
18
|
*/
|
|
17
19
|
private initCollapsedSections;
|
|
20
|
+
private getPinKey;
|
|
21
|
+
private isPinned;
|
|
22
|
+
private togglePin;
|
|
23
|
+
private showContextMenu;
|
|
24
|
+
/**
|
|
25
|
+
* Render the PINNED section (only if there are pinned items)
|
|
26
|
+
*/
|
|
27
|
+
private renderPinnedSection;
|
|
18
28
|
/**
|
|
19
29
|
* Render all sections
|
|
20
30
|
*/
|
|
@@ -23,8 +33,15 @@ export declare class WccSidebar extends DeesElement {
|
|
|
23
33
|
* Render items for a section
|
|
24
34
|
*/
|
|
25
35
|
private renderSectionItems;
|
|
36
|
+
/**
|
|
37
|
+
* Render a single element item (used by renderSectionItems)
|
|
38
|
+
*/
|
|
39
|
+
private renderElementItem;
|
|
26
40
|
private toggleSectionCollapsed;
|
|
27
41
|
private toggleExpanded;
|
|
42
|
+
private handleSearchInput;
|
|
43
|
+
private matchesSearch;
|
|
44
|
+
private highlightMatch;
|
|
28
45
|
protected updated(changedProperties: Map<string, unknown>): void;
|
|
29
46
|
selectItem(typeArg: TElementType, itemNameArg: string, itemArg: TTemplateFactory | DeesElement, demoIndex?: number, section?: IWccSection): void;
|
|
30
47
|
}
|
|
@@ -36,6 +36,7 @@ import * as plugins from '../wcctools.plugins.js';
|
|
|
36
36
|
import { DeesElement, property, html, customElement, state } from '@design.estate/dees-element';
|
|
37
37
|
import { WccDashboard, getSectionItems } from './wcc-dashboard.js';
|
|
38
38
|
import { getDemoCount, hasMultipleDemos } from './wcctools.helpers.js';
|
|
39
|
+
import { WccContextmenu } from './wcc-contextmenu.js';
|
|
39
40
|
let WccSidebar = (() => {
|
|
40
41
|
let _classDecorators = [customElement('wcc-sidebar')];
|
|
41
42
|
let _classDescriptor;
|
|
@@ -60,6 +61,12 @@ let WccSidebar = (() => {
|
|
|
60
61
|
let _collapsedSections_decorators;
|
|
61
62
|
let _collapsedSections_initializers = [];
|
|
62
63
|
let _collapsedSections_extraInitializers = [];
|
|
64
|
+
let _searchQuery_decorators;
|
|
65
|
+
let _searchQuery_initializers = [];
|
|
66
|
+
let _searchQuery_extraInitializers = [];
|
|
67
|
+
let _pinnedItems_decorators;
|
|
68
|
+
let _pinnedItems_initializers = [];
|
|
69
|
+
let _pinnedItems_extraInitializers = [];
|
|
63
70
|
var WccSidebar = class extends _classSuper {
|
|
64
71
|
static { _classThis = this; }
|
|
65
72
|
static {
|
|
@@ -70,12 +77,16 @@ let WccSidebar = (() => {
|
|
|
70
77
|
_isNative_decorators = [property()];
|
|
71
78
|
_expandedElements_decorators = [state()];
|
|
72
79
|
_collapsedSections_decorators = [state()];
|
|
80
|
+
_searchQuery_decorators = [property()];
|
|
81
|
+
_pinnedItems_decorators = [property({ attribute: false })];
|
|
73
82
|
__esDecorate(this, null, _selectedItem_decorators, { kind: "accessor", name: "selectedItem", static: false, private: false, access: { has: obj => "selectedItem" in obj, get: obj => obj.selectedItem, set: (obj, value) => { obj.selectedItem = value; } }, metadata: _metadata }, _selectedItem_initializers, _selectedItem_extraInitializers);
|
|
74
83
|
__esDecorate(this, null, _selectedType_decorators, { kind: "accessor", name: "selectedType", static: false, private: false, access: { has: obj => "selectedType" in obj, get: obj => obj.selectedType, set: (obj, value) => { obj.selectedType = value; } }, metadata: _metadata }, _selectedType_initializers, _selectedType_extraInitializers);
|
|
75
84
|
__esDecorate(this, null, _dashboardRef_decorators, { kind: "accessor", name: "dashboardRef", static: false, private: false, access: { has: obj => "dashboardRef" in obj, get: obj => obj.dashboardRef, set: (obj, value) => { obj.dashboardRef = value; } }, metadata: _metadata }, _dashboardRef_initializers, _dashboardRef_extraInitializers);
|
|
76
85
|
__esDecorate(this, null, _isNative_decorators, { kind: "accessor", name: "isNative", static: false, private: false, access: { has: obj => "isNative" in obj, get: obj => obj.isNative, set: (obj, value) => { obj.isNative = value; } }, metadata: _metadata }, _isNative_initializers, _isNative_extraInitializers);
|
|
77
86
|
__esDecorate(this, null, _expandedElements_decorators, { kind: "accessor", name: "expandedElements", static: false, private: false, access: { has: obj => "expandedElements" in obj, get: obj => obj.expandedElements, set: (obj, value) => { obj.expandedElements = value; } }, metadata: _metadata }, _expandedElements_initializers, _expandedElements_extraInitializers);
|
|
78
87
|
__esDecorate(this, null, _collapsedSections_decorators, { kind: "accessor", name: "collapsedSections", static: false, private: false, access: { has: obj => "collapsedSections" in obj, get: obj => obj.collapsedSections, set: (obj, value) => { obj.collapsedSections = value; } }, metadata: _metadata }, _collapsedSections_initializers, _collapsedSections_extraInitializers);
|
|
88
|
+
__esDecorate(this, null, _searchQuery_decorators, { kind: "accessor", name: "searchQuery", static: false, private: false, access: { has: obj => "searchQuery" in obj, get: obj => obj.searchQuery, set: (obj, value) => { obj.searchQuery = value; } }, metadata: _metadata }, _searchQuery_initializers, _searchQuery_extraInitializers);
|
|
89
|
+
__esDecorate(this, null, _pinnedItems_decorators, { kind: "accessor", name: "pinnedItems", static: false, private: false, access: { has: obj => "pinnedItems" in obj, get: obj => obj.pinnedItems, set: (obj, value) => { obj.pinnedItems = value; } }, metadata: _metadata }, _pinnedItems_initializers, _pinnedItems_extraInitializers);
|
|
79
90
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
80
91
|
WccSidebar = _classThis = _classDescriptor.value;
|
|
81
92
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
@@ -101,7 +112,15 @@ let WccSidebar = (() => {
|
|
|
101
112
|
// Track which sections are collapsed
|
|
102
113
|
get collapsedSections() { return this.#collapsedSections_accessor_storage; }
|
|
103
114
|
set collapsedSections(value) { this.#collapsedSections_accessor_storage = value; }
|
|
104
|
-
|
|
115
|
+
#searchQuery_accessor_storage = (__runInitializers(this, _collapsedSections_extraInitializers), __runInitializers(this, _searchQuery_initializers, ''));
|
|
116
|
+
// Search query for filtering sidebar items
|
|
117
|
+
get searchQuery() { return this.#searchQuery_accessor_storage; }
|
|
118
|
+
set searchQuery(value) { this.#searchQuery_accessor_storage = value; }
|
|
119
|
+
#pinnedItems_accessor_storage = (__runInitializers(this, _searchQuery_extraInitializers), __runInitializers(this, _pinnedItems_initializers, new Set()));
|
|
120
|
+
// Pinned items as Set of "sectionName::itemName"
|
|
121
|
+
get pinnedItems() { return this.#pinnedItems_accessor_storage; }
|
|
122
|
+
set pinnedItems(value) { this.#pinnedItems_accessor_storage = value; }
|
|
123
|
+
sectionsInitialized = (__runInitializers(this, _pinnedItems_extraInitializers), false);
|
|
105
124
|
render() {
|
|
106
125
|
return html `
|
|
107
126
|
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet" />
|
|
@@ -228,7 +247,7 @@ let WccSidebar = (() => {
|
|
|
228
247
|
}
|
|
229
248
|
|
|
230
249
|
.selectOption.folder {
|
|
231
|
-
grid-template-columns: 16px
|
|
250
|
+
grid-template-columns: 16px 1fr;
|
|
232
251
|
}
|
|
233
252
|
|
|
234
253
|
.selectOption .expand-icon {
|
|
@@ -325,8 +344,109 @@ let WccSidebar = (() => {
|
|
|
325
344
|
::-webkit-scrollbar-thumb:hover {
|
|
326
345
|
background: rgba(255, 255, 255, 0.2);
|
|
327
346
|
}
|
|
347
|
+
|
|
348
|
+
.search-container {
|
|
349
|
+
padding: 0.5rem;
|
|
350
|
+
border-bottom: 1px solid var(--border);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.search-input {
|
|
354
|
+
width: 100%;
|
|
355
|
+
box-sizing: border-box;
|
|
356
|
+
background: var(--input);
|
|
357
|
+
border: 1px solid var(--border);
|
|
358
|
+
border-radius: var(--radius);
|
|
359
|
+
padding: 0.5rem 0.75rem;
|
|
360
|
+
color: var(--foreground);
|
|
361
|
+
font-size: 0.75rem;
|
|
362
|
+
font-family: inherit;
|
|
363
|
+
outline: none;
|
|
364
|
+
transition: border-color 0.15s ease;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
.search-input:focus {
|
|
368
|
+
border-color: var(--primary);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.search-input::placeholder {
|
|
372
|
+
color: var(--muted-foreground);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.highlight {
|
|
376
|
+
background: rgba(59, 130, 246, 0.3);
|
|
377
|
+
border-radius: 2px;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/* Pinned item highlight in original section */
|
|
381
|
+
.selectOption.pinned {
|
|
382
|
+
background: rgba(245, 158, 11, 0.08);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.selectOption.pinned:hover {
|
|
386
|
+
background: rgba(245, 158, 11, 0.12);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.selectOption.pinned.selected {
|
|
390
|
+
background: rgba(245, 158, 11, 0.18);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/* Pinned section styling */
|
|
394
|
+
.section-header.pinned-section {
|
|
395
|
+
background: rgba(245, 158, 11, 0.08);
|
|
396
|
+
color: #f59e0b;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
.section-header.pinned-section:hover {
|
|
400
|
+
background: rgba(245, 158, 11, 0.12);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
.section-header.pinned-section .section-icon {
|
|
404
|
+
opacity: 0.8;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/* Section tag for pinned items */
|
|
408
|
+
.section-tag {
|
|
409
|
+
font-size: 0.55rem;
|
|
410
|
+
color: #555;
|
|
411
|
+
margin-left: auto;
|
|
412
|
+
text-transform: uppercase;
|
|
413
|
+
letter-spacing: 0.03em;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/* Group container */
|
|
417
|
+
.item-group {
|
|
418
|
+
margin: 0.375rem 0.375rem;
|
|
419
|
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
420
|
+
border-radius: 6px;
|
|
421
|
+
padding: 0.25rem 0;
|
|
422
|
+
background: rgba(255, 255, 255, 0.01);
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
.item-group-legend {
|
|
426
|
+
font-size: 0.55rem;
|
|
427
|
+
text-transform: uppercase;
|
|
428
|
+
letter-spacing: 0.05em;
|
|
429
|
+
color: #555;
|
|
430
|
+
padding: 0.125rem 0.625rem 0.25rem;
|
|
431
|
+
display: block;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
.item-group .selectOption {
|
|
435
|
+
margin-left: 0.25rem;
|
|
436
|
+
margin-right: 0.25rem;
|
|
437
|
+
}
|
|
328
438
|
</style>
|
|
439
|
+
<div class="search-container">
|
|
440
|
+
<input
|
|
441
|
+
type="text"
|
|
442
|
+
class="search-input"
|
|
443
|
+
placeholder="Search..."
|
|
444
|
+
.value=${this.searchQuery}
|
|
445
|
+
@input=${this.handleSearchInput}
|
|
446
|
+
/>
|
|
447
|
+
</div>
|
|
329
448
|
<div class="menu">
|
|
449
|
+
${this.renderPinnedSection()}
|
|
330
450
|
${this.renderSections()}
|
|
331
451
|
</div>
|
|
332
452
|
`;
|
|
@@ -335,7 +455,7 @@ let WccSidebar = (() => {
|
|
|
335
455
|
* Initialize collapsed sections from section config
|
|
336
456
|
*/
|
|
337
457
|
initCollapsedSections() {
|
|
338
|
-
if (this.sectionsInitialized)
|
|
458
|
+
if (this.sectionsInitialized || !this.dashboardRef?.sections)
|
|
339
459
|
return;
|
|
340
460
|
const collapsed = new Set();
|
|
341
461
|
for (const section of this.dashboardRef.sections) {
|
|
@@ -346,12 +466,109 @@ let WccSidebar = (() => {
|
|
|
346
466
|
this.collapsedSections = collapsed;
|
|
347
467
|
this.sectionsInitialized = true;
|
|
348
468
|
}
|
|
469
|
+
// ============ Pinning helpers ============
|
|
470
|
+
getPinKey(sectionName, itemName) {
|
|
471
|
+
return `${sectionName}::${itemName}`;
|
|
472
|
+
}
|
|
473
|
+
isPinned(sectionName, itemName) {
|
|
474
|
+
return this.pinnedItems.has(this.getPinKey(sectionName, itemName));
|
|
475
|
+
}
|
|
476
|
+
togglePin(sectionName, itemName) {
|
|
477
|
+
const key = this.getPinKey(sectionName, itemName);
|
|
478
|
+
const newPinned = new Set(this.pinnedItems);
|
|
479
|
+
if (newPinned.has(key)) {
|
|
480
|
+
newPinned.delete(key);
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
newPinned.add(key);
|
|
484
|
+
}
|
|
485
|
+
this.pinnedItems = newPinned;
|
|
486
|
+
this.dispatchEvent(new CustomEvent('pinnedChanged', { detail: newPinned }));
|
|
487
|
+
}
|
|
488
|
+
showContextMenu(e, sectionName, itemName) {
|
|
489
|
+
const isPinned = this.isPinned(sectionName, itemName);
|
|
490
|
+
WccContextmenu.show(e, [
|
|
491
|
+
{
|
|
492
|
+
name: isPinned ? 'Unpin' : 'Pin',
|
|
493
|
+
iconName: isPinned ? 'push_pin' : 'push_pin',
|
|
494
|
+
action: () => this.togglePin(sectionName, itemName),
|
|
495
|
+
},
|
|
496
|
+
]);
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* Render the PINNED section (only if there are pinned items)
|
|
500
|
+
*/
|
|
501
|
+
renderPinnedSection() {
|
|
502
|
+
if (!this.dashboardRef?.sections || this.pinnedItems.size === 0) {
|
|
503
|
+
return null;
|
|
504
|
+
}
|
|
505
|
+
const isCollapsed = this.collapsedSections.has('__pinned__');
|
|
506
|
+
// Collect pinned items with their original section info
|
|
507
|
+
const pinnedEntries = [];
|
|
508
|
+
for (const key of this.pinnedItems) {
|
|
509
|
+
const [sectionName, itemName] = key.split('::');
|
|
510
|
+
const section = this.dashboardRef.sections.find(s => s.name === sectionName);
|
|
511
|
+
if (section) {
|
|
512
|
+
const entries = getSectionItems(section);
|
|
513
|
+
const found = entries.find(([name]) => name === itemName);
|
|
514
|
+
if (found) {
|
|
515
|
+
pinnedEntries.push({ sectionName, itemName, item: found[1], section });
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
// Filter by search
|
|
520
|
+
const filteredEntries = pinnedEntries.filter(e => this.matchesSearch(e.itemName));
|
|
521
|
+
if (filteredEntries.length === 0 && this.searchQuery) {
|
|
522
|
+
return null;
|
|
523
|
+
}
|
|
524
|
+
return html `
|
|
525
|
+
<div
|
|
526
|
+
class="section-header pinned-section ${isCollapsed ? 'collapsed' : ''}"
|
|
527
|
+
@click=${() => this.toggleSectionCollapsed('__pinned__')}
|
|
528
|
+
>
|
|
529
|
+
<i class="material-symbols-outlined expand-icon">expand_more</i>
|
|
530
|
+
<i class="material-symbols-outlined section-icon">push_pin</i>
|
|
531
|
+
<span>Pinned</span>
|
|
532
|
+
</div>
|
|
533
|
+
<div class="section-content ${isCollapsed ? 'collapsed' : ''}">
|
|
534
|
+
${filteredEntries.map(({ sectionName, itemName, item, section }) => {
|
|
535
|
+
const isSelected = this.selectedItem === item;
|
|
536
|
+
const type = section.type === 'elements' ? 'element' : 'page';
|
|
537
|
+
const icon = section.type === 'elements' ? 'featured_video' : 'insert_drive_file';
|
|
538
|
+
return html `
|
|
539
|
+
<div
|
|
540
|
+
class="selectOption ${isSelected ? 'selected' : ''}"
|
|
541
|
+
@click=${async () => {
|
|
542
|
+
await plugins.deesDomtools.DomTools.setupDomTools();
|
|
543
|
+
this.selectItem(type, itemName, item, 0, section);
|
|
544
|
+
}}
|
|
545
|
+
@contextmenu=${(e) => this.showContextMenu(e, sectionName, itemName)}
|
|
546
|
+
>
|
|
547
|
+
<i class="material-symbols-outlined">${icon}</i>
|
|
548
|
+
<div class="text">${this.highlightMatch(itemName)}</div>
|
|
549
|
+
<span class="section-tag">${sectionName}</span>
|
|
550
|
+
</div>
|
|
551
|
+
`;
|
|
552
|
+
})}
|
|
553
|
+
</div>
|
|
554
|
+
`;
|
|
555
|
+
}
|
|
349
556
|
/**
|
|
350
557
|
* Render all sections
|
|
351
558
|
*/
|
|
352
559
|
renderSections() {
|
|
560
|
+
if (!this.dashboardRef?.sections) {
|
|
561
|
+
return null;
|
|
562
|
+
}
|
|
353
563
|
this.initCollapsedSections();
|
|
354
|
-
return this.dashboardRef.sections.map((section
|
|
564
|
+
return this.dashboardRef.sections.map((section) => {
|
|
565
|
+
// Check if section has any matching items
|
|
566
|
+
const entries = getSectionItems(section);
|
|
567
|
+
const filteredEntries = entries.filter(([name]) => this.matchesSearch(name));
|
|
568
|
+
// Hide section if no items match the search
|
|
569
|
+
if (filteredEntries.length === 0 && this.searchQuery) {
|
|
570
|
+
return null;
|
|
571
|
+
}
|
|
355
572
|
const isCollapsed = this.collapsedSections.has(section.name);
|
|
356
573
|
const sectionIcon = section.icon || (section.type === 'pages' ? 'insert_drive_file' : 'widgets');
|
|
357
574
|
return html `
|
|
@@ -374,79 +591,116 @@ let WccSidebar = (() => {
|
|
|
374
591
|
*/
|
|
375
592
|
renderSectionItems(section) {
|
|
376
593
|
const entries = getSectionItems(section);
|
|
594
|
+
// Filter entries by search query
|
|
595
|
+
const filteredEntries = entries.filter(([name]) => this.matchesSearch(name));
|
|
377
596
|
if (section.type === 'pages') {
|
|
378
|
-
return
|
|
597
|
+
return filteredEntries.map(([pageName, item]) => {
|
|
598
|
+
const isPinned = this.isPinned(section.name, pageName);
|
|
379
599
|
return html `
|
|
380
600
|
<div
|
|
381
|
-
class="selectOption ${this.selectedItem === item ? 'selected' : ''}"
|
|
601
|
+
class="selectOption ${this.selectedItem === item ? 'selected' : ''} ${isPinned ? 'pinned' : ''}"
|
|
382
602
|
@click=${async () => {
|
|
383
603
|
await plugins.deesDomtools.DomTools.setupDomTools();
|
|
384
604
|
this.selectItem('page', pageName, item, 0, section);
|
|
385
605
|
}}
|
|
606
|
+
@contextmenu=${(e) => this.showContextMenu(e, section.name, pageName)}
|
|
386
607
|
>
|
|
387
608
|
<i class="material-symbols-outlined">insert_drive_file</i>
|
|
388
|
-
<div class="text">${pageName}</div>
|
|
609
|
+
<div class="text">${this.highlightMatch(pageName)}</div>
|
|
389
610
|
</div>
|
|
390
611
|
`;
|
|
391
612
|
});
|
|
392
613
|
}
|
|
393
614
|
else {
|
|
394
|
-
// type === 'elements'
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
const
|
|
398
|
-
const
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
if (isMultiDemo) {
|
|
402
|
-
// Multi-demo element - render as expandable folder
|
|
403
|
-
return html `
|
|
404
|
-
<div
|
|
405
|
-
class="selectOption folder ${isExpanded ? 'expanded' : ''} ${isSelected ? 'selected' : ''}"
|
|
406
|
-
@click=${() => this.toggleExpanded(elementName)}
|
|
407
|
-
>
|
|
408
|
-
<i class="material-symbols-outlined expand-icon">chevron_right</i>
|
|
409
|
-
<i class="material-symbols-outlined">folder</i>
|
|
410
|
-
<div class="text">${elementName}</div>
|
|
411
|
-
</div>
|
|
412
|
-
${isExpanded ? html `
|
|
413
|
-
<div class="demo-children">
|
|
414
|
-
${Array.from({ length: demoCount }, (_, i) => {
|
|
415
|
-
const demoIndex = i;
|
|
416
|
-
const isThisDemoSelected = isSelected && this.dashboardRef.selectedDemoIndex === demoIndex;
|
|
417
|
-
return html `
|
|
418
|
-
<div
|
|
419
|
-
class="demo-child ${isThisDemoSelected ? 'selected' : ''}"
|
|
420
|
-
@click=${async () => {
|
|
421
|
-
await plugins.deesDomtools.DomTools.setupDomTools();
|
|
422
|
-
this.selectItem('element', elementName, item, demoIndex, section);
|
|
423
|
-
}}
|
|
424
|
-
>
|
|
425
|
-
<i class="material-symbols-outlined">play_circle</i>
|
|
426
|
-
<div class="text">demo${demoIndex + 1}</div>
|
|
427
|
-
</div>
|
|
428
|
-
`;
|
|
429
|
-
})}
|
|
430
|
-
</div>
|
|
431
|
-
` : null}
|
|
432
|
-
`;
|
|
433
|
-
}
|
|
434
|
-
else {
|
|
435
|
-
// Single demo element
|
|
436
|
-
return html `
|
|
437
|
-
<div
|
|
438
|
-
class="selectOption ${isSelected ? 'selected' : ''}"
|
|
439
|
-
@click=${async () => {
|
|
440
|
-
await plugins.deesDomtools.DomTools.setupDomTools();
|
|
441
|
-
this.selectItem('element', elementName, item, 0, section);
|
|
442
|
-
}}
|
|
443
|
-
>
|
|
444
|
-
<i class="material-symbols-outlined">featured_video</i>
|
|
445
|
-
<div class="text">${elementName}</div>
|
|
446
|
-
</div>
|
|
447
|
-
`;
|
|
615
|
+
// type === 'elements' - group by demoGroup
|
|
616
|
+
const groupedItems = new Map();
|
|
617
|
+
for (const entry of filteredEntries) {
|
|
618
|
+
const [, item] = entry;
|
|
619
|
+
const group = item.demoGroup || null;
|
|
620
|
+
if (!groupedItems.has(group)) {
|
|
621
|
+
groupedItems.set(group, []);
|
|
448
622
|
}
|
|
449
|
-
|
|
623
|
+
groupedItems.get(group).push(entry);
|
|
624
|
+
}
|
|
625
|
+
const result = [];
|
|
626
|
+
// Render ungrouped items first
|
|
627
|
+
const ungrouped = groupedItems.get(null) || [];
|
|
628
|
+
for (const entry of ungrouped) {
|
|
629
|
+
result.push(this.renderElementItem(entry, section));
|
|
630
|
+
}
|
|
631
|
+
// Render grouped items
|
|
632
|
+
for (const [groupName, items] of groupedItems) {
|
|
633
|
+
if (groupName === null)
|
|
634
|
+
continue;
|
|
635
|
+
result.push(html `
|
|
636
|
+
<div class="item-group">
|
|
637
|
+
<span class="item-group-legend">${groupName}</span>
|
|
638
|
+
${items.map((entry) => this.renderElementItem(entry, section))}
|
|
639
|
+
</div>
|
|
640
|
+
`);
|
|
641
|
+
}
|
|
642
|
+
return result;
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
/**
|
|
646
|
+
* Render a single element item (used by renderSectionItems)
|
|
647
|
+
*/
|
|
648
|
+
renderElementItem(entry, section) {
|
|
649
|
+
const [elementName, item] = entry;
|
|
650
|
+
const anonItem = item;
|
|
651
|
+
const demoCount = anonItem.demo ? getDemoCount(anonItem.demo) : 0;
|
|
652
|
+
const isMultiDemo = anonItem.demo && hasMultipleDemos(anonItem.demo);
|
|
653
|
+
const isExpanded = this.expandedElements.has(elementName);
|
|
654
|
+
const isSelected = this.selectedItem === item;
|
|
655
|
+
const isPinned = this.isPinned(section.name, elementName);
|
|
656
|
+
if (isMultiDemo) {
|
|
657
|
+
// Multi-demo element - render as expandable folder
|
|
658
|
+
return html `
|
|
659
|
+
<div
|
|
660
|
+
class="selectOption folder ${isExpanded ? 'expanded' : ''} ${isSelected ? 'selected' : ''} ${isPinned ? 'pinned' : ''}"
|
|
661
|
+
@click=${() => this.toggleExpanded(elementName)}
|
|
662
|
+
@contextmenu=${(e) => this.showContextMenu(e, section.name, elementName)}
|
|
663
|
+
>
|
|
664
|
+
<i class="material-symbols-outlined expand-icon">chevron_right</i>
|
|
665
|
+
<div class="text">${this.highlightMatch(elementName)}</div>
|
|
666
|
+
</div>
|
|
667
|
+
${isExpanded ? html `
|
|
668
|
+
<div class="demo-children">
|
|
669
|
+
${Array.from({ length: demoCount }, (_, i) => {
|
|
670
|
+
const demoIndex = i;
|
|
671
|
+
const isThisDemoSelected = isSelected && this.dashboardRef.selectedDemoIndex === demoIndex;
|
|
672
|
+
return html `
|
|
673
|
+
<div
|
|
674
|
+
class="demo-child ${isThisDemoSelected ? 'selected' : ''}"
|
|
675
|
+
@click=${async () => {
|
|
676
|
+
await plugins.deesDomtools.DomTools.setupDomTools();
|
|
677
|
+
this.selectItem('element', elementName, item, demoIndex, section);
|
|
678
|
+
}}
|
|
679
|
+
>
|
|
680
|
+
<i class="material-symbols-outlined">play_circle</i>
|
|
681
|
+
<div class="text">demo${demoIndex + 1}</div>
|
|
682
|
+
</div>
|
|
683
|
+
`;
|
|
684
|
+
})}
|
|
685
|
+
</div>
|
|
686
|
+
` : null}
|
|
687
|
+
`;
|
|
688
|
+
}
|
|
689
|
+
else {
|
|
690
|
+
// Single demo element
|
|
691
|
+
return html `
|
|
692
|
+
<div
|
|
693
|
+
class="selectOption ${isSelected ? 'selected' : ''} ${isPinned ? 'pinned' : ''}"
|
|
694
|
+
@click=${async () => {
|
|
695
|
+
await plugins.deesDomtools.DomTools.setupDomTools();
|
|
696
|
+
this.selectItem('element', elementName, item, 0, section);
|
|
697
|
+
}}
|
|
698
|
+
@contextmenu=${(e) => this.showContextMenu(e, section.name, elementName)}
|
|
699
|
+
>
|
|
700
|
+
<i class="material-symbols-outlined">featured_video</i>
|
|
701
|
+
<div class="text">${this.highlightMatch(elementName)}</div>
|
|
702
|
+
</div>
|
|
703
|
+
`;
|
|
450
704
|
}
|
|
451
705
|
}
|
|
452
706
|
toggleSectionCollapsed(sectionName) {
|
|
@@ -469,10 +723,33 @@ let WccSidebar = (() => {
|
|
|
469
723
|
}
|
|
470
724
|
this.expandedElements = newSet;
|
|
471
725
|
}
|
|
726
|
+
handleSearchInput(e) {
|
|
727
|
+
const input = e.target;
|
|
728
|
+
this.searchQuery = input.value;
|
|
729
|
+
this.dispatchEvent(new CustomEvent('searchChanged', { detail: this.searchQuery }));
|
|
730
|
+
}
|
|
731
|
+
matchesSearch(name) {
|
|
732
|
+
if (!this.searchQuery)
|
|
733
|
+
return true;
|
|
734
|
+
return name.toLowerCase().includes(this.searchQuery.toLowerCase());
|
|
735
|
+
}
|
|
736
|
+
highlightMatch(text) {
|
|
737
|
+
if (!this.searchQuery)
|
|
738
|
+
return html `${text}`;
|
|
739
|
+
const lowerText = text.toLowerCase();
|
|
740
|
+
const lowerQuery = this.searchQuery.toLowerCase();
|
|
741
|
+
const index = lowerText.indexOf(lowerQuery);
|
|
742
|
+
if (index === -1)
|
|
743
|
+
return html `${text}`;
|
|
744
|
+
const before = text.slice(0, index);
|
|
745
|
+
const match = text.slice(index, index + this.searchQuery.length);
|
|
746
|
+
const after = text.slice(index + this.searchQuery.length);
|
|
747
|
+
return html `${before}<span class="highlight">${match}</span>${after}`;
|
|
748
|
+
}
|
|
472
749
|
updated(changedProperties) {
|
|
473
750
|
super.updated(changedProperties);
|
|
474
751
|
// Auto-expand folder when a multi-demo element is selected
|
|
475
|
-
if (changedProperties.has('selectedItem') && this.selectedItem) {
|
|
752
|
+
if (changedProperties.has('selectedItem') && this.selectedItem && this.dashboardRef?.sections) {
|
|
476
753
|
// Find the element in any section
|
|
477
754
|
for (const section of this.dashboardRef.sections) {
|
|
478
755
|
if (section.type !== 'elements')
|
|
@@ -524,4 +801,4 @@ let WccSidebar = (() => {
|
|
|
524
801
|
return WccSidebar = _classThis;
|
|
525
802
|
})();
|
|
526
803
|
export { WccSidebar };
|
|
527
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLXNpZGViYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvd2NjLXNpZGViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUIsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7SUFJMUQsVUFBVTs0QkFEdEIsYUFBYSxDQUFDLGFBQWEsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQUFuQixTQUFRLFdBQVc7Ozs7d0NBQ3hDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3Q0FHOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3dDQUc5QixRQUFRLEVBQUU7b0NBR1YsUUFBUSxFQUFFOzRDQUlWLEtBQUssRUFBRTs2Q0FJUCxLQUFLLEVBQUU7WUFoQlIseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUFpQztZQUd0RCx5TEFBUyxZQUFZLDZCQUFaLFlBQVksbUdBQWU7WUFHcEMseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUFlO1lBR3BDLDZLQUFTLFFBQVEsNkJBQVIsUUFBUSwyRkFBa0I7WUFJbkMscU1BQVMsZ0JBQWdCLDZCQUFoQixnQkFBZ0IsMkdBQTBCO1lBSW5ELHdNQUFTLGlCQUFpQiw2QkFBakIsaUJBQWlCLDZHQUEwQjtZQW5CdEQsNktBa2RDOzs7WUFsZFksdURBQVU7O1FBRXJCLDZGQUFzRDtR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
|
|
804
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLXNpZGViYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvd2NjLXNpZGViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUIsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0lBR3pDLFVBQVU7NEJBRHRCLGFBQWEsQ0FBQyxhQUFhLENBQUM7Ozs7c0JBQ0csV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkFBbkIsU0FBUSxXQUFXOzs7O3dDQUN4QyxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7d0NBRzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3Q0FHOUIsUUFBUSxFQUFFO29DQUdWLFFBQVEsRUFBRTs0Q0FJVixLQUFLLEVBQUU7NkNBSVAsS0FBSyxFQUFFO3VDQUlQLFFBQVEsRUFBRTt1Q0FJVixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7WUF4Qi9CLHlMQUFTLFlBQVksNkJBQVosWUFBWSxtR0FBaUM7WUFHdEQseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUFlO1lBR3BDLHlMQUFTLFlBQVksNkJBQVosWUFBWSxtR0FBZTtZQUdwQyw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQWtCO1lBSW5DLHFNQUFT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
|