Skip to content

Commit c952c18

Browse files
committed
IMP: base event logic
1 parent 3a25c94 commit c952c18

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/dialog.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,22 @@ export default function (Alpine) {
1515
el.style.display = null;
1616
el.hidden = false;
1717
el.style.length === 0 && el.removeAttribute("style");
18+
19+
el.addEventListener("keydown", escapeDialog);
1820
el.addEventListener("mousedown", backdropDialog);
1921

2022
function scrollLock(use = true) {
2123
document.body.style.overflow = use ? "hidden" : "";
2224
}
2325

26+
// Prevent native escape for AlpineJs logic
2427
function escapeDialog(event) {
2528
if (event.key !== "Escape") return;
26-
event.preventDefault(); // prevent native escape
29+
event.preventDefault();
2730
evaluate();
2831
}
2932

33+
// Mimics the new closeby=any attribute
3034
function backdropDialog(event) {
3135
const rect = el.getBoundingClientRect();
3236
const isInDialog =
@@ -41,19 +45,17 @@ export default function (Alpine) {
4145
el._x_doShow = () => {
4246
if (el.hasAttribute("open")) return;
4347
el.showModal();
44-
document.addEventListener("keydown", escapeDialog);
4548
scrollLock(lockPageScroll);
4649
};
4750

4851
el._x_doHide = () => {
4952
if (!el.hasAttribute("open")) return;
5053
el.close();
51-
document.removeEventListener("keydown", escapeDialog);
5254
scrollLock(false);
5355
};
5456

5557
cleanup(() => {
56-
document.removeEventListener("keydown", escapeDialog);
58+
el.removeEventListener("keydown", escapeDialog);
5759
el.removeEventListener("mousedown", backdropDialog);
5860
scrollLock(false);
5961
});

0 commit comments

Comments
 (0)