feat(wcc-sidebar): auto-expand sidebar folder when selecting an element with multiple demos

This commit is contained in:
2025-12-22 10:49:02 +00:00
parent eb7f482b75
commit bd409745e6
3 changed files with 30 additions and 1 deletions

View File

@@ -1,5 +1,13 @@
# Changelog # Changelog
## 2025-12-22 - 3.2.0 - feat(wcc-sidebar)
auto-expand sidebar folder when selecting an element with multiple demos
- Add updated() lifecycle to auto-expand folder when selectedItem changes
- Find element name by matching selectedItem against dashboardRef.elements
- Only auto-expand when the element has multiple demos (checks item.demo and hasMultipleDemos)
- Immutably update expandedElements set to trigger re-render and avoid duplicate additions
## 2025-12-21 - 3.1.2 - fix(wcc-properties) ## 2025-12-21 - 3.1.2 - fix(wcc-properties)
Use LitElement.updated to recreate properties only when selectedItem changes and handle errors; remove custom scheduleUpdate implementation Use LitElement.updated to recreate properties only when selectedItem changes and handle errors; remove custom scheduleUpdate implementation

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@design.estate/dees-wcctools', name: '@design.estate/dees-wcctools',
version: '3.1.2', version: '3.2.0',
description: 'A set of web component tools for creating element catalogues, enabling the structured development and documentation of custom elements and pages.' description: 'A set of web component tools for creating element catalogues, enabling the structured development and documentation of custom elements and pages.'
} }

View File

@@ -308,6 +308,27 @@ export class WccSidebar extends DeesElement {
this.expandedElements = newSet; this.expandedElements = newSet;
} }
protected updated(changedProperties: Map<string, unknown>) {
super.updated(changedProperties);
// Auto-expand folder when a multi-demo element is selected
if (changedProperties.has('selectedItem') && this.selectedItem) {
const elementName = Object.keys(this.dashboardRef.elements).find(
name => this.dashboardRef.elements[name] === this.selectedItem
);
if (elementName) {
const item = this.dashboardRef.elements[elementName] as any;
if (item.demo && hasMultipleDemos(item.demo)) {
if (!this.expandedElements.has(elementName)) {
const newSet = new Set(this.expandedElements);
newSet.add(elementName);
this.expandedElements = newSet;
}
}
}
}
}
public selectItem(typeArg: TElementType, itemNameArg: string, itemArg: TTemplateFactory | DeesElement, demoIndex: number = 0) { public selectItem(typeArg: TElementType, itemNameArg: string, itemArg: TTemplateFactory | DeesElement, demoIndex: number = 0) {
console.log('selected item'); console.log('selected item');
console.log(itemNameArg); console.log(itemNameArg);