Skip to content

Commit 5a80fab

Browse files
committed
IMP: state handlers
This now allows the dialog from opening on load, same as x-collapse, closes #16
1 parent 8373309 commit 5a80fab

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/dialog.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@ export default function (Alpine) {
1616

1717
// Remove any logic set by `x-show`
1818
el.style.display = null;
19-
el.hidden = false;
2019
el.style.length === 0 && el.removeAttribute("style");
2120

2221
el.addEventListener("keydown", escapeDialog);
2322
el.addEventListener("click", backdropDialog);
2423
el.addEventListener("submit", methodDialog);
24+
// Open dialog if the initial value is true
25+
if (el._x_isShown) {
26+
open();
27+
}
2528

2629
function scrollLock(use = true) {
2730
document.body.style.overflow = use ? "hidden" : "";
@@ -63,17 +66,20 @@ export default function (Alpine) {
6366
evaluate();
6467
}
6568

66-
el._x_doShow = () => {
69+
function open() {
6770
if (el.hasAttribute("open")) return;
6871
el.showModal();
6972
scrollLock(lockPageScroll);
70-
};
73+
}
7174

72-
el._x_doHide = () => {
75+
function close() {
7376
if (!el.hasAttribute("open")) return;
7477
el.close();
7578
scrollLock(false);
76-
};
79+
}
80+
81+
el._x_doShow = () => open();
82+
el._x_doHide = () => close();
7783

7884
cleanup(() => {
7985
el.removeEventListener("keydown", escapeDialog);

0 commit comments

Comments
 (0)