diff --git a/readme.hints.md b/readme.hints.md index 53d3f94..982bc46 100644 --- a/readme.hints.md +++ b/readme.hints.md @@ -25,9 +25,11 @@ The properties panel had timing issues detecting rendered elements because: ### Code Flow 1. Dashboard renders element demo into viewport using `render(anonItem.demo(), viewport)` -2. Properties panel waits, then searches recursively for the element instance -3. If not found, retries with delays to handle async rendering -4. Once found, extracts and displays element properties +2. Properties panel waits 200ms for demo wrappers to run and set initial values +3. Searches recursively for the element instance +4. If not found, retries with delays to handle async rendering +5. Once found, extracts and displays element properties +6. Uses property binding (`.value=`) instead of attribute binding to prevent input events during initialization ## Demo Tools diff --git a/readme.plan.md b/readme.plan.md index a466ac9..2169c7e 100644 --- a/readme.plan.md +++ b/readme.plan.md @@ -85,4 +85,16 @@ These test various scenarios: - Complex data type display and editing - Element detection inside dees-demowrapper - Error handling for problematic values -- Deep nesting and shadow DOM traversal \ No newline at end of file +- Deep nesting and shadow DOM traversal + +# Fixed Demo Value Overwriting (COMPLETED) + +## Issue: +Properties panel was overwriting values set by demo functions + +## Solution: +1. Changed from attribute binding (`value=`) to property binding (`.value=`) +2. This prevents browser from firing input events during initialization +3. Added proper number parsing for number inputs +4. Increased initial wait to 200ms for demo wrappers to complete +5. Simplified select element handling to use property binding \ No newline at end of file diff --git a/ts_web/elements/wcc-properties.ts b/ts_web/elements/wcc-properties.ts index 7480b26..dea3409 100644 --- a/ts_web/elements/wcc-properties.ts +++ b/ts_web/elements/wcc-properties.ts @@ -309,8 +309,8 @@ export class WccProperties extends DeesElement { console.log(anonItem.elementProperties); const wccFrame = await this.dashboardRef.wccFrame; - // Wait for render to complete - await new Promise(resolve => setTimeout(resolve, 100)); + // Wait for render to complete and any demo wrappers to run + await new Promise(resolve => setTimeout(resolve, 200)); // Try to find the element with recursive search const viewport = await wccFrame.getViewportElement(); @@ -370,7 +370,7 @@ export class WccProperties extends DeesElement { case 'String': return html``; case 'Enum': const enumValues: any[] = getEnumValues(property); return html`