@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.
@@ -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
- sectionsInitialized = (__runInitializers(this, _collapsedSections_extraInitializers), false);
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 20px 1fr;
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, index) => {
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 entries.map(([pageName, item]) => {
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
- return entries.map(([elementName, item]) => {
396
- const anonItem = item;
397
- const demoCount = anonItem.demo ? getDemoCount(anonItem.demo) : 0;
398
- const isMultiDemo = anonItem.demo && hasMultipleDemos(anonItem.demo);
399
- const isExpanded = this.expandedElements.has(elementName);
400
- const isSelected = this.selectedItem === item;
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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