import * as plugins from '../wcctools.plugins.js'; import { DeesElement, property, html, customElement, type TemplateResult, state } from '@design.estate/dees-element'; import { WccDashboard } from './wcc-dashboard.js'; import type { TTemplateFactory } from './wcctools.helpers.js'; import { getDemoCount, hasMultipleDemos } from './wcctools.helpers.js'; export type TElementType = 'element' | 'page'; @customElement('wcc-sidebar') export class WccSidebar extends DeesElement { @property({ attribute: false }) accessor selectedItem: DeesElement | TTemplateFactory; @property({ attribute: false }) accessor selectedType: TElementType; @property() accessor dashboardRef: WccDashboard; @property() accessor isFullscreen: boolean = false; // Track which elements are expanded (for multi-demo elements) @state() accessor expandedElements: Set = new Set(); public render(): TemplateResult { return html` `; } private toggleExpanded(elementName: string) { const newSet = new Set(this.expandedElements); if (newSet.has(elementName)) { newSet.delete(elementName); } else { newSet.add(elementName); } this.expandedElements = newSet; } public selectItem(typeArg: TElementType, itemNameArg: string, itemArg: TTemplateFactory | DeesElement, demoIndex: number = 0) { console.log('selected item'); console.log(itemNameArg); console.log(itemArg); console.log('demo index:', demoIndex); this.selectedItem = itemArg; this.selectedType = typeArg; this.dashboardRef.selectedDemoIndex = demoIndex; this.dispatchEvent( new CustomEvent('selectedType', { detail: typeArg }) ); this.dispatchEvent( new CustomEvent('selectedItemName', { detail: itemNameArg }) ); this.dispatchEvent( new CustomEvent('selectedItem', { detail: itemArg }) ); this.dashboardRef.buildUrl(); } }