aboutsummaryrefslogtreecommitdiff
path: root/static/js/contextmenu.ts
blob: 5add288b8dd75c642f017bb066f92fcbcefb334a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(function () {
  const hide = function (triggers) {
    for (let i = 0; i < triggers.length; i++) {
      triggers[i].checked = false;
    }
  };

  const hideIfClickedOutside = function (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("menu input");
    hide(triggers);
  });

  ["click", "touchstart"].forEach(function (event) {
    self.addEventListener(event, function (event) {
      const menus = document.querySelectorAll("menu");
      const triggers = document.querySelectorAll("menu input");
      hideIfClickedOutside(menus, triggers, event);
    });
  });
})();