diff options
Diffstat (limited to 'static/js')
-rw-r--r-- | static/js/contextmenu.ts | 28 | ||||
-rw-r--r-- | static/js/index.ts | 1 |
2 files changed, 29 insertions, 0 deletions
diff --git a/static/js/contextmenu.ts b/static/js/contextmenu.ts new file mode 100644 index 0000000..dea9bec --- /dev/null +++ b/static/js/contextmenu.ts @@ -0,0 +1,28 @@ +(function () { + const hide = (triggers) => { + for (let i = 0; i < triggers.length; i++) { + triggers[i].checked = false; + } + }; + + const hideIfClickedOutside = (menus, triggers, event) => { + for (let i = 0; i < menus.length; i++) { + const active = triggers[i].checked === true; + const outside = !menus[i].contains(event.target); + if (outside && active) hide(triggers); + } + }; + + self.addEventListener("scroll", function () { + const triggers = document.querySelectorAll("micro-metadata-menu input"); + hide(triggers); + }); + + ["click", "touchstart"].forEach(function (event) { + self.addEventListener(event, function (event) { + const menus = document.querySelectorAll("micro-metadata-menu"); + const triggers = document.querySelectorAll("micro-metadata-menu input"); + hideIfClickedOutside(menus, triggers, event); + }); + }); +})(); diff --git a/static/js/index.ts b/static/js/index.ts index 52cc678..e00907b 100644 --- a/static/js/index.ts +++ b/static/js/index.ts @@ -1,6 +1,7 @@ import "./pager.ts"; import "./plumber.ts"; import "./instantpage.ts"; +import "./contextmenu.ts"; import "./fixedsearch.ts"; import "./timeago.ts"; |