diff --git a/.changeset/moody-chairs-beam.md b/.changeset/moody-chairs-beam.md new file mode 100644 index 000000000..8a25ff7d8 --- /dev/null +++ b/.changeset/moody-chairs-beam.md @@ -0,0 +1,5 @@ +--- +"@marko/runtime-tags": patch +--- + +Fix issue where details and dialog elements were incorrectly running change handlers when the value had not changed. diff --git a/.sizes.json b/.sizes.json index cfb21259b..155e1700a 100644 --- a/.sizes.json +++ b/.sizes.json @@ -7,7 +7,7 @@ { "name": "*", "total": { - "min": 18364, + "min": 18373, "brotli": 6749 } }, diff --git a/.sizes/dom.js b/.sizes/dom.js index 227713563..aca636a8a 100644 --- a/.sizes/dom.js +++ b/.sizes/dom.js @@ -1,4 +1,4 @@ -// size: 18364 (min) 6749 (brotli) +// size: 18373 (min) 6749 (brotli) var empty = [], rest = Symbol(); function attrTag(attrs2) { @@ -446,7 +446,8 @@ function controllable_detailsOrDialog_open( ) { (scope[nodeAccessor + ";"] = openChange), (scope[nodeAccessor + "="] = openChange ? 4 : 5), - (scope[nodeAccessor].open = normalizeBoolProp(open)); + (scope[nodeAccessor].open = scope[nodeAccessor + ":"] = + normalizeBoolProp(open)); } function controllable_detailsOrDialog_open_effect(scope, nodeAccessor) { let el = scope[nodeAccessor], diff --git a/packages/runtime-tags/src/dom/controllable.ts b/packages/runtime-tags/src/dom/controllable.ts index 524c27e98..cf966b9ae 100644 --- a/packages/runtime-tags/src/dom/controllable.ts +++ b/packages/runtime-tags/src/dom/controllable.ts @@ -259,7 +259,9 @@ export function controllable_detailsOrDialog_open( scope[nodeAccessor + AccessorChar.ControlledType] = ControlledType.None; } - (scope[nodeAccessor] as HTMLDetailsElement).open = normalizeBoolProp(open); + (scope[nodeAccessor] as HTMLDetailsElement).open = scope[ + nodeAccessor + AccessorChar.ControlledValue + ] = normalizeBoolProp(open); } export function controllable_detailsOrDialog_open_effect( scope: Scope,