Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
e11f0df950 | |||
c64b106569 |
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@design.estate/dees-wcctools",
|
"name": "@design.estate/dees-wcctools",
|
||||||
"version": "1.0.97",
|
"version": "1.0.98",
|
||||||
"private": false,
|
"private": false,
|
||||||
"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.",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
@ -25,9 +25,11 @@ The properties panel had timing issues detecting rendered elements because:
|
|||||||
|
|
||||||
### Code Flow
|
### Code Flow
|
||||||
1. Dashboard renders element demo into viewport using `render(anonItem.demo(), viewport)`
|
1. Dashboard renders element demo into viewport using `render(anonItem.demo(), viewport)`
|
||||||
2. Properties panel waits, then searches recursively for the element instance
|
2. Properties panel waits 200ms for demo wrappers to run and set initial values
|
||||||
3. If not found, retries with delays to handle async rendering
|
3. Searches recursively for the element instance
|
||||||
4. Once found, extracts and displays element properties
|
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
|
## Demo Tools
|
||||||
|
|
||||||
|
@ -86,3 +86,15 @@ These test various scenarios:
|
|||||||
- Element detection inside dees-demowrapper
|
- Element detection inside dees-demowrapper
|
||||||
- Error handling for problematic values
|
- Error handling for problematic values
|
||||||
- Deep nesting and shadow DOM traversal
|
- 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
|
@ -309,8 +309,8 @@ export class WccProperties extends DeesElement {
|
|||||||
console.log(anonItem.elementProperties);
|
console.log(anonItem.elementProperties);
|
||||||
const wccFrame = await this.dashboardRef.wccFrame;
|
const wccFrame = await this.dashboardRef.wccFrame;
|
||||||
|
|
||||||
// Wait for render to complete
|
// Wait for render to complete and any demo wrappers to run
|
||||||
await new Promise(resolve => setTimeout(resolve, 100));
|
await new Promise(resolve => setTimeout(resolve, 200));
|
||||||
|
|
||||||
// Try to find the element with recursive search
|
// Try to find the element with recursive search
|
||||||
const viewport = await wccFrame.getViewportElement();
|
const viewport = await wccFrame.getViewportElement();
|
||||||
@ -370,7 +370,7 @@ export class WccProperties extends DeesElement {
|
|||||||
case 'String':
|
case 'String':
|
||||||
return html`<input
|
return html`<input
|
||||||
type="text"
|
type="text"
|
||||||
value=${firstFoundInstantiatedElement[key]}
|
.value=${firstFoundInstantiatedElement[key] || ''}
|
||||||
@input="${(eventArg: any) => {
|
@input="${(eventArg: any) => {
|
||||||
firstFoundInstantiatedElement[key] = eventArg.target.value;
|
firstFoundInstantiatedElement[key] = eventArg.target.value;
|
||||||
}}"
|
}}"
|
||||||
@ -378,14 +378,15 @@ export class WccProperties extends DeesElement {
|
|||||||
case 'Number':
|
case 'Number':
|
||||||
return html`<input
|
return html`<input
|
||||||
type="number"
|
type="number"
|
||||||
value=${firstFoundInstantiatedElement[key]}
|
.value=${firstFoundInstantiatedElement[key] ?? ''}
|
||||||
@input="${(eventArg: any) => {
|
@input="${(eventArg: any) => {
|
||||||
firstFoundInstantiatedElement[key] = eventArg.target.value;
|
firstFoundInstantiatedElement[key] = parseFloat(eventArg.target.value) || 0;
|
||||||
}}"
|
}}"
|
||||||
/>`;
|
/>`;
|
||||||
case 'Enum':
|
case 'Enum':
|
||||||
const enumValues: any[] = getEnumValues(property);
|
const enumValues: any[] = getEnumValues(property);
|
||||||
return html`<select
|
return html`<select
|
||||||
|
.value=${firstFoundInstantiatedElement[key] || ''}
|
||||||
@change="${(eventArg: any) => {
|
@change="${(eventArg: any) => {
|
||||||
firstFoundInstantiatedElement[key] = eventArg.target.value;
|
firstFoundInstantiatedElement[key] = eventArg.target.value;
|
||||||
}}"
|
}}"
|
||||||
@ -393,8 +394,7 @@ export class WccProperties extends DeesElement {
|
|||||||
${enumValues.map((valueArg) => {
|
${enumValues.map((valueArg) => {
|
||||||
return html`
|
return html`
|
||||||
<option
|
<option
|
||||||
?selected=${valueArg === firstFoundInstantiatedElement[key] ? true : false}
|
value="${valueArg}"
|
||||||
name="${valueArg}"
|
|
||||||
>
|
>
|
||||||
${valueArg}
|
${valueArg}
|
||||||
</option>
|
</option>
|
||||||
|
Reference in New Issue
Block a user