fix: statesListener issue
Some checks failed
Quality Check & Publish / quality (push) Failing after 27s
Quality Check & Publish / quality-failed-webhook (push) Has been skipped
Quality Check & Publish / publish (push) Has been skipped
Quality Check & Publish / publish-failed-webhook (push) Has been skipped

This commit is contained in:
Astrian Zheng 2025-05-21 21:35:17 +10:00
parent 0a971f16d9
commit 27be016d29
Signed by: Astrian
SSH Key Fingerprint: SHA256:rVnhx3DAKjujCwWE13aDl7uV6+9U1MvydLkNRXJrBiA
2 changed files with 7 additions and 5 deletions

View File

@ -57,11 +57,12 @@ export default (options: ComponentOptions) => {
updateTextNode: (node: Text, value: string) => this._updateTextNode(node, value, value),
getNestedState: (keyPath: string) => this._getNestedState(keyPath),
scheduleUpdate: this._scheduleUpdate.bind(this),
statesListeners: this._statesListeners,
statesListenersSelf: this._statesListeners,
conditionalElements: this._conditionalElements,
evaluateIfCondition: this._evaluateIfCondition.bind(this),
},
options.states,
options.statesListeners
)
// initialize shadow dom

View File

@ -17,7 +17,6 @@ export default function initState(
updateTextNode: (node: Text, value: string) => void
getNestedState: (keyPath: string) => unknown
scheduleUpdate: (elements: Set<HTMLElement>) => void
statesListeners: Record<string, (value: unknown) => void>
conditionalElements: Map<
Element,
{
@ -28,8 +27,10 @@ export default function initState(
>
evaluateIfCondition: (element: Element, expr: string) => void
currentRenderingElement?: HTMLElement
statesListenersSelf: Record<string, (...args: unknown[]) => void>
},
states?: Record<string, unknown>,
statesListeners?: { [key: string]: (value: unknown) => void; } | undefined
) {
console.log(states)
// copy state from options
@ -61,8 +62,8 @@ export default function initState(
getNestedState: ops.getNestedState,
scheduleUpdate: ops.scheduleUpdate,
})
if (ops.statesListeners[keyPath])
ops.statesListeners[keyPath](value)
if (ops.statesListenersSelf[keyPath])
ops.statesListenersSelf[keyPath](value)
// trigger %if macros
if (ops.conditionalElements.size > 0)
@ -72,7 +73,7 @@ export default function initState(
})
// trigger state update events
ops.statesListeners?.[keyPath]?.(value)
statesListeners?.[keyPath]?.(value)
return true
},