diff options
author | tdro <tdro@noreply.example.com> | 2022-08-06 02:09:42 -0400 |
---|---|---|
committer | tdro <tdro@noreply.example.com> | 2022-08-06 02:09:42 -0400 |
commit | d9a29082d810f2954c29aea215ba5cbbaa361ac6 (patch) | |
tree | 7b903c56e2868204eb18ea85399cfbe30e56921c /static/js | |
parent | ac0e2a0c9e96cb827681ca4bdd0e727a85ee708d (diff) | |
download | canory-d9a29082d810f2954c29aea215ba5cbbaa361ac6.tar.gz canory-d9a29082d810f2954c29aea215ba5cbbaa361ac6.tar.bz2 canory-d9a29082d810f2954c29aea215ba5cbbaa361ac6.zip |
themes/default/layouts/partials: Hack in card context menu
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"; |