@y14e/accordion 1.3.0 → 1.3.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.
package/dist/index.cjs CHANGED
@@ -598,12 +598,6 @@ var Accordion = class _Accordion {
598
598
  this.#bindings.set(trigger2, binding);
599
599
  this.#bindings.set(content2, binding);
600
600
  });
601
- this.#cleanupRovingTabIndex = createRovingTabIndex(this.#rootElement, {
602
- direction: "vertical",
603
- navigationOnly: true,
604
- selector: `${trigger}${NOT_NESTED}`,
605
- wrap: true
606
- });
607
601
  this.#initialize();
608
602
  }
609
603
  open(trigger) {
@@ -633,6 +627,8 @@ var Accordion = class _Accordion {
633
627
  this.#isDestroyed = true;
634
628
  this.#eventController?.abort();
635
629
  this.#eventController = null;
630
+ this.#cleanupRovingTabIndex?.();
631
+ this.#cleanupRovingTabIndex = null;
636
632
  !force && await this.#waitAnimationsFinish();
637
633
  this.#contentElements.forEach((content) => {
638
634
  force && this.#bindings.get(content)?.animation?.finish();
@@ -640,8 +636,6 @@ var Accordion = class _Accordion {
640
636
  });
641
637
  this.#animationController?.abort();
642
638
  this.#animationController = null;
643
- this.#cleanupRovingTabIndex?.();
644
- this.#cleanupRovingTabIndex = null;
645
639
  restoreAttributes([...this.#triggerElements, ...this.#contentElements]);
646
640
  this.#triggerElements.length = 0;
647
641
  this.#contentElements.length = 0;
@@ -657,33 +651,40 @@ var Accordion = class _Accordion {
657
651
  "style",
658
652
  "tabindex"
659
653
  ]);
660
- this.#triggerElements.forEach((trigger, i) => {
654
+ this.#triggerElements.forEach((trigger2, i) => {
661
655
  const id = Math.random().toString(36).slice(-8);
662
- const content = this.#contentElements[i];
663
- if (!content) {
656
+ const content2 = this.#contentElements[i];
657
+ if (!content2) {
664
658
  return;
665
659
  }
666
- saveAttributes([content], ["aria-labelledby", "id", "role"]);
667
- content.id ||= `accordion-content-${id}`;
668
- addTokenToAttribute(trigger, "aria-controls", content.id);
669
- trigger.setAttribute(
660
+ saveAttributes([content2], ["aria-labelledby", "id", "role"]);
661
+ content2.id ||= `accordion-content-${id}`;
662
+ addTokenToAttribute(trigger2, "aria-controls", content2.id);
663
+ trigger2.setAttribute(
670
664
  "aria-expanded",
671
- trigger.ariaExpanded === "true" ? "true" : "false"
665
+ trigger2.ariaExpanded === "true" ? "true" : "false"
672
666
  );
673
- trigger.id ||= `accordion-trigger-${id}`;
674
- if (!isFocusable2(trigger)) {
675
- trigger.setAttribute("aria-disabled", "true");
676
- trigger.setAttribute("tabindex", "-1");
677
- trigger.style.setProperty("pointer-events", "none");
667
+ trigger2.id ||= `accordion-trigger-${id}`;
668
+ if (!isFocusable2(trigger2)) {
669
+ trigger2.setAttribute("aria-disabled", "true");
670
+ trigger2.setAttribute("tabindex", "-1");
671
+ trigger2.style.setProperty("pointer-events", "none");
678
672
  }
679
- trigger.addEventListener("click", this.#onTriggerClick, { signal });
680
- trigger.addEventListener("keydown", this.#onTriggerKeyDown, { signal });
681
- addTokenToAttribute(content, "aria-labelledby", trigger.id);
682
- content.setAttribute("role", "region");
683
- content.addEventListener("beforematch", this.#onContentBeforeMatch, {
673
+ trigger2.addEventListener("click", this.#onTriggerClick, { signal });
674
+ trigger2.addEventListener("keydown", this.#onTriggerKeyDown, { signal });
675
+ addTokenToAttribute(content2, "aria-labelledby", trigger2.id);
676
+ content2.setAttribute("role", "region");
677
+ content2.addEventListener("beforematch", this.#onContentBeforeMatch, {
684
678
  signal
685
679
  });
686
680
  });
681
+ const { trigger, content } = this.#settings.selector;
682
+ this.#cleanupRovingTabIndex = createRovingTabIndex(this.#rootElement, {
683
+ direction: "vertical",
684
+ navigationOnly: true,
685
+ selector: `${trigger}:not(:scope ${content} *)`,
686
+ wrap: true
687
+ });
687
688
  this.#rootElement.setAttribute("data-accordion-initialized", "");
688
689
  }
689
690
  #onTriggerClick = (event) => {
@@ -833,7 +834,7 @@ function waitAnimationFinish(animation) {
833
834
  * Accordion
834
835
  * WAI-ARIA compliant accordion pattern implementation in TypeScript.
835
836
  *
836
- * @version 1.3.0
837
+ * @version 1.3.2
837
838
  * @author Yusuke Kamiyamane
838
839
  * @license MIT
839
840
  * @copyright Copyright (c) Yusuke Kamiyamane
package/dist/index.d.cts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Accordion
3
3
  * WAI-ARIA compliant accordion pattern implementation in TypeScript.
4
4
  *
5
- * @version 1.3.0
5
+ * @version 1.3.2
6
6
  * @author Yusuke Kamiyamane
7
7
  * @license MIT
8
8
  * @copyright Copyright (c) Yusuke Kamiyamane
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Accordion
3
3
  * WAI-ARIA compliant accordion pattern implementation in TypeScript.
4
4
  *
5
- * @version 1.3.0
5
+ * @version 1.3.2
6
6
  * @author Yusuke Kamiyamane
7
7
  * @license MIT
8
8
  * @copyright Copyright (c) Yusuke Kamiyamane
package/dist/index.js CHANGED
@@ -596,12 +596,6 @@ var Accordion = class _Accordion {
596
596
  this.#bindings.set(trigger2, binding);
597
597
  this.#bindings.set(content2, binding);
598
598
  });
599
- this.#cleanupRovingTabIndex = createRovingTabIndex(this.#rootElement, {
600
- direction: "vertical",
601
- navigationOnly: true,
602
- selector: `${trigger}${NOT_NESTED}`,
603
- wrap: true
604
- });
605
599
  this.#initialize();
606
600
  }
607
601
  open(trigger) {
@@ -631,6 +625,8 @@ var Accordion = class _Accordion {
631
625
  this.#isDestroyed = true;
632
626
  this.#eventController?.abort();
633
627
  this.#eventController = null;
628
+ this.#cleanupRovingTabIndex?.();
629
+ this.#cleanupRovingTabIndex = null;
634
630
  !force && await this.#waitAnimationsFinish();
635
631
  this.#contentElements.forEach((content) => {
636
632
  force && this.#bindings.get(content)?.animation?.finish();
@@ -638,8 +634,6 @@ var Accordion = class _Accordion {
638
634
  });
639
635
  this.#animationController?.abort();
640
636
  this.#animationController = null;
641
- this.#cleanupRovingTabIndex?.();
642
- this.#cleanupRovingTabIndex = null;
643
637
  restoreAttributes([...this.#triggerElements, ...this.#contentElements]);
644
638
  this.#triggerElements.length = 0;
645
639
  this.#contentElements.length = 0;
@@ -655,33 +649,40 @@ var Accordion = class _Accordion {
655
649
  "style",
656
650
  "tabindex"
657
651
  ]);
658
- this.#triggerElements.forEach((trigger, i) => {
652
+ this.#triggerElements.forEach((trigger2, i) => {
659
653
  const id = Math.random().toString(36).slice(-8);
660
- const content = this.#contentElements[i];
661
- if (!content) {
654
+ const content2 = this.#contentElements[i];
655
+ if (!content2) {
662
656
  return;
663
657
  }
664
- saveAttributes([content], ["aria-labelledby", "id", "role"]);
665
- content.id ||= `accordion-content-${id}`;
666
- addTokenToAttribute(trigger, "aria-controls", content.id);
667
- trigger.setAttribute(
658
+ saveAttributes([content2], ["aria-labelledby", "id", "role"]);
659
+ content2.id ||= `accordion-content-${id}`;
660
+ addTokenToAttribute(trigger2, "aria-controls", content2.id);
661
+ trigger2.setAttribute(
668
662
  "aria-expanded",
669
- trigger.ariaExpanded === "true" ? "true" : "false"
663
+ trigger2.ariaExpanded === "true" ? "true" : "false"
670
664
  );
671
- trigger.id ||= `accordion-trigger-${id}`;
672
- if (!isFocusable2(trigger)) {
673
- trigger.setAttribute("aria-disabled", "true");
674
- trigger.setAttribute("tabindex", "-1");
675
- trigger.style.setProperty("pointer-events", "none");
665
+ trigger2.id ||= `accordion-trigger-${id}`;
666
+ if (!isFocusable2(trigger2)) {
667
+ trigger2.setAttribute("aria-disabled", "true");
668
+ trigger2.setAttribute("tabindex", "-1");
669
+ trigger2.style.setProperty("pointer-events", "none");
676
670
  }
677
- trigger.addEventListener("click", this.#onTriggerClick, { signal });
678
- trigger.addEventListener("keydown", this.#onTriggerKeyDown, { signal });
679
- addTokenToAttribute(content, "aria-labelledby", trigger.id);
680
- content.setAttribute("role", "region");
681
- content.addEventListener("beforematch", this.#onContentBeforeMatch, {
671
+ trigger2.addEventListener("click", this.#onTriggerClick, { signal });
672
+ trigger2.addEventListener("keydown", this.#onTriggerKeyDown, { signal });
673
+ addTokenToAttribute(content2, "aria-labelledby", trigger2.id);
674
+ content2.setAttribute("role", "region");
675
+ content2.addEventListener("beforematch", this.#onContentBeforeMatch, {
682
676
  signal
683
677
  });
684
678
  });
679
+ const { trigger, content } = this.#settings.selector;
680
+ this.#cleanupRovingTabIndex = createRovingTabIndex(this.#rootElement, {
681
+ direction: "vertical",
682
+ navigationOnly: true,
683
+ selector: `${trigger}:not(:scope ${content} *)`,
684
+ wrap: true
685
+ });
685
686
  this.#rootElement.setAttribute("data-accordion-initialized", "");
686
687
  }
687
688
  #onTriggerClick = (event) => {
@@ -831,7 +832,7 @@ function waitAnimationFinish(animation) {
831
832
  * Accordion
832
833
  * WAI-ARIA compliant accordion pattern implementation in TypeScript.
833
834
  *
834
- * @version 1.3.0
835
+ * @version 1.3.2
835
836
  * @author Yusuke Kamiyamane
836
837
  * @license MIT
837
838
  * @copyright Copyright (c) Yusuke Kamiyamane
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@y14e/accordion",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "WAI-ARIA compliant accordion pattern implementation in TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",