aboutsummaryrefslogtreecommitdiff
path: root/htmx/remove-me.js
blob: a064d1b621c5bc8c6df6298dfdb7206e95e27a5f (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
29
30
(function () {
  function maybeRemoveMe(elt) {
    var timing =
      elt.getAttribute("remove-me") || elt.getAttribute("data-remove-me");
    if (timing) {
      setTimeout(function () {
        elt.parentElement.removeChild(elt);
      }, htmx.parseInterval(timing));
    }
  }

  htmx.defineExtension("remove-me", {
    onEvent: function (name, evt) {
      if (name === "htmx:afterProcessNode") {
        var elt = evt.detail.elt;
        if (elt.getAttribute) {
          maybeRemoveMe(elt);
          if (elt.querySelectorAll) {
            var children = elt.querySelectorAll(
              "[remove-me], [data-remove-me]",
            );
            for (var i = 0; i < children.length; i++) {
              maybeRemoveMe(children[i]);
            }
          }
        }
      }
    },
  });
})();