mirror of
https://github.com/marko-js/marko.git
synced 2026-02-01 16:07:13 +00:00
fix: guard change handler since toggle is fired from programatic changes to open
This commit is contained in:
parent
9421a60e95
commit
da44e24ef4
@ -7,8 +7,8 @@
|
||||
{
|
||||
"name": "*",
|
||||
"total": {
|
||||
"min": 18048,
|
||||
"brotli": 6515
|
||||
"min": 18045,
|
||||
"brotli": 6518
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
// size: 18048 (min) 6515 (brotli)
|
||||
// size: 18045 (min) 6518 (brotli)
|
||||
var empty = [],
|
||||
rest = Symbol();
|
||||
function attrTag(attrs2) {
|
||||
@ -742,14 +742,16 @@ function controllable_detailsOrDialog_open(
|
||||
(scope[nodeAccessor].open = normalizeBoolProp(open));
|
||||
}
|
||||
function controllable_detailsOrDialog_open_effect(scope, nodeAccessor) {
|
||||
let el = scope[nodeAccessor];
|
||||
let el = scope[nodeAccessor],
|
||||
hasChanged = () => el.open !== scope[nodeAccessor + ":"];
|
||||
syncControllable(
|
||||
el,
|
||||
"DIALOG" === el.tagName ? "close" : "toggle",
|
||||
() => scope[nodeAccessor + ";"] && el.open !== scope[nodeAccessor + ":"],
|
||||
hasChanged,
|
||||
() => {
|
||||
let openChange = scope[nodeAccessor + ";"];
|
||||
openChange &&
|
||||
hasChanged() &&
|
||||
((scope[nodeAccessor + "="] = 6),
|
||||
openChange(el.open),
|
||||
run(),
|
||||
|
||||
@ -264,20 +264,17 @@ export function controllable_detailsOrDialog_open_effect(
|
||||
nodeAccessor: Accessor,
|
||||
) {
|
||||
const el = scope[nodeAccessor] as HTMLDetailsElement;
|
||||
const hasChanged = () =>
|
||||
el.open !== scope[nodeAccessor + AccessorChar.ControlledValue];
|
||||
syncControllable(
|
||||
el,
|
||||
el.tagName === "DIALOG" ? "close" : "toggle",
|
||||
() => {
|
||||
return (
|
||||
scope[nodeAccessor + AccessorChar.ControlledHandler] &&
|
||||
el.open !== scope[nodeAccessor + AccessorChar.ControlledValue]
|
||||
);
|
||||
},
|
||||
hasChanged,
|
||||
() => {
|
||||
const openChange = scope[
|
||||
nodeAccessor + AccessorChar.ControlledHandler
|
||||
] as undefined | ((value: unknown) => unknown);
|
||||
if (openChange) {
|
||||
if (openChange && hasChanged()) {
|
||||
scope[nodeAccessor + AccessorChar.ControlledType] =
|
||||
ControlledType.Pending;
|
||||
openChange(el.open);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user