aboutsummaryrefslogtreecommitdiff
path: root/static/js
diff options
context:
space:
mode:
authortdro <tdro@noreply.example.com>2022-08-06 02:09:42 -0400
committertdro <tdro@noreply.example.com>2022-08-06 02:09:42 -0400
commitd9a29082d810f2954c29aea215ba5cbbaa361ac6 (patch)
tree7b903c56e2868204eb18ea85399cfbe30e56921c /static/js
parentac0e2a0c9e96cb827681ca4bdd0e727a85ee708d (diff)
downloadcanory-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.ts28
-rw-r--r--static/js/index.ts1
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";