inclusive-elements 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,7 +25,7 @@ class D extends HTMLElement {
25
25
  });
26
26
  h(this, "onContentClick", (t) => {
27
27
  var e;
28
- t.target instanceof Element && t.target.closest("[role=menuitem], [role=menuitemradio]") && (this.open = !1, (e = this.button) == null || e.focus(), t.stopPropagation());
28
+ t.target instanceof Element && t.target.closest("[role=menuitem], [role=menuitemradio]") && (this.open = !1, (e = this.button) == null || e.focus());
29
29
  });
30
30
  const t = document.createElement("template");
31
31
  t.innerHTML = `
@@ -1,47 +1,55 @@
1
- var o = Object.defineProperty;
2
- var b = (l, i, t) => i in l ? o(l, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[i] = t;
3
- var n = (l, i, t) => (b(l, typeof i != "symbol" ? i + "" : i, t), t);
4
- let c = 0;
5
- class d extends HTMLElement {
1
+ var h = Object.defineProperty;
2
+ var d = (l, a, t) => a in l ? h(l, a, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[a] = t;
3
+ var o = (l, a, t) => (d(l, typeof a != "symbol" ? a + "" : a, t), t);
4
+ let u = 0;
5
+ class A extends HTMLElement {
6
6
  constructor() {
7
7
  super(...arguments);
8
- n(this, "idPrefix", "tabs" + ++c);
9
- n(this, "onKeyDown", (t) => {
10
- const a = t.target, e = this.tabs.indexOf(a), s = this.tablist.getAttribute("aria-orientation") === "vertical";
11
- let r = !1;
8
+ o(this, "idPrefix", "tabs" + ++u);
9
+ o(this, "onKeyDown", (t) => {
10
+ const r = t.target, e = this.tabs.indexOf(r), s = this.tablist.getAttribute("aria-orientation") === "vertical";
11
+ let i = !1;
12
12
  switch (t.key) {
13
13
  case (s ? "ArrowUp" : "ArrowLeft"):
14
- this.selectTab(e - 1), r = !0;
14
+ this.selectTab(e - 1), i = !0;
15
15
  break;
16
16
  case (s ? "ArrowDown" : "ArrowRight"):
17
- this.selectTab(e + 1), r = !0;
17
+ this.selectTab(e + 1), i = !0;
18
18
  break;
19
19
  case "Home":
20
- this.selectTab(0), r = !0;
20
+ this.selectTab(0), i = !0;
21
21
  break;
22
22
  case "End":
23
- this.selectTab(this.tabs.length - 1), r = !0;
23
+ this.selectTab(this.tabs.length - 1), i = !0;
24
24
  }
25
- r && (t.stopPropagation(), t.preventDefault());
25
+ i && (t.stopPropagation(), t.preventDefault());
26
26
  });
27
- n(this, "onClick", (t) => {
27
+ o(this, "onClick", (t) => {
28
28
  const e = t.target.closest("[role=tab]");
29
29
  e && this.selectTab(this.tabs.indexOf(e));
30
30
  });
31
31
  }
32
32
  connectedCallback() {
33
- this.tablist.addEventListener("keydown", this.onKeyDown), this.tablist.addEventListener("click", this.onClick), this.selectTab(0, !1), this.tabs.forEach((t, a) => {
34
- const e = this.tabpanels[a], s = t.getAttribute("id") || this.idPrefix + "_tab_" + a, r = e.getAttribute("id") || this.idPrefix + "_panel_" + a;
35
- t.setAttribute("id", s), t.setAttribute("aria-controls", r), e.setAttribute("id", r), e.setAttribute("aria-labelledby", s), e.setAttribute("tabindex", "0");
33
+ this.tablist.addEventListener("keydown", this.onKeyDown), this.tablist.addEventListener("click", this.onClick), this.selectTab(this.initialTabIndex, !1, !1), this.tabs.forEach((t, r) => {
34
+ const e = this.tabpanels[r], s = t.getAttribute("id") || this.idPrefix + "_tab_" + r, i = e.getAttribute("id") || this.idPrefix + "_panel_" + r;
35
+ t.setAttribute("id", s), t.setAttribute("aria-controls", i), e.setAttribute("id", i), e.setAttribute("aria-labelledby", s), e.setAttribute("tabindex", "0");
36
36
  });
37
37
  }
38
38
  disconnectedCallback() {
39
39
  this.tablist.removeEventListener("keydown", this.onKeyDown), this.tablist.removeEventListener("click", this.onClick);
40
40
  }
41
- selectTab(t, a = !0) {
42
- t < 0 ? t += this.tabs.length : t >= this.tabs.length && (t -= this.tabs.length), this.tabs.forEach((e, s) => {
43
- s === t ? (e.setAttribute("aria-selected", "true"), e.removeAttribute("tabindex"), this.tabpanels[s].hidden = !1, a && e.focus()) : (e.setAttribute("aria-selected", "false"), e.setAttribute("tabindex", "-1"), this.tabpanels[s].hidden = !0);
44
- });
41
+ selectTab(t, r = !0, e = !0) {
42
+ const s = this.tabs, i = this.tabpanels, b = s.findIndex(
43
+ (n) => n.getAttribute("aria-selected") === "true"
44
+ );
45
+ t < 0 ? t += s.length : t >= s.length && (t -= s.length), s.forEach((n, c) => {
46
+ c === t ? (n.setAttribute("aria-selected", "true"), n.removeAttribute("tabindex"), i[c].hidden = !1, r && n.focus()) : (n.setAttribute("aria-selected", "false"), n.setAttribute("tabindex", "-1"), i[c].hidden = !0);
47
+ }), e && b !== t && this.dispatchEvent(new Event("change"));
48
+ }
49
+ get initialTabIndex() {
50
+ return this.tabs.findIndex(
51
+ (t) => t.getAttribute("aria-selected") === "true"
52
+ ) || 0;
45
53
  }
46
54
  get tablist() {
47
55
  return this.querySelector("[role=tablist]");
@@ -54,5 +62,5 @@ class d extends HTMLElement {
54
62
  }
55
63
  }
56
64
  export {
57
- d as default
65
+ A as default
58
66
  };
@@ -5,6 +5,7 @@ export default class TabsElement extends HTMLElement {
5
5
  private selectTab;
6
6
  private onKeyDown;
7
7
  private onClick;
8
+ private get initialTabIndex();
8
9
  private get tablist();
9
10
  private get tabs();
10
11
  private get tabpanels();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "inclusive-elements",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
4
4
  "description": "Accessible, lightweight, unstyled implementations of common UI controls.",
5
5
  "module": "dist/inclusive-elements.js",
6
6
  "type": "module",