@y14e/accordion 1.4.6 → 1.4.8
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/README.md +4 -4
- package/dist/index.cjs +55 -33
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +55 -33
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -10,14 +10,14 @@ npm i @y14e/accordion
|
|
|
10
10
|
|
|
11
11
|
```ts
|
|
12
12
|
// npm
|
|
13
|
-
import Accordion from '@y14e/accordion@1.4.
|
|
13
|
+
import Accordion from '@y14e/accordion@1.4.8';
|
|
14
14
|
|
|
15
15
|
// CDNs
|
|
16
|
-
import Accordion from 'https://esm.sh/@y14e/accordion@1.4.
|
|
16
|
+
import Accordion from 'https://esm.sh/@y14e/accordion@1.4.8';
|
|
17
17
|
// or
|
|
18
|
-
import Accordion from 'https://cdn.jsdelivr.net/npm/@y14e/accordion@1.4.
|
|
18
|
+
import Accordion from 'https://cdn.jsdelivr.net/npm/@y14e/accordion@1.4.8/+esm';
|
|
19
19
|
// or
|
|
20
|
-
import Accordion from 'https://esm.unpkg.com/@y14e/accordion@1.4.
|
|
20
|
+
import Accordion from 'https://esm.unpkg.com/@y14e/accordion@1.4.8';
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## Usage
|
package/dist/index.cjs
CHANGED
|
@@ -13,11 +13,10 @@ function addTokenToAttribute(element, attribute, token, options = {}) {
|
|
|
13
13
|
const tokens = value ? parse(value).filter(Boolean) : [];
|
|
14
14
|
if (caseInsensitive) {
|
|
15
15
|
const lower = token.toLowerCase();
|
|
16
|
-
if (tokens.
|
|
17
|
-
|
|
16
|
+
if (tokens.every((token2) => token2.toLowerCase() !== lower)) {
|
|
17
|
+
tokens.push(token);
|
|
18
|
+
element.setAttribute(attribute, serialize(tokens));
|
|
18
19
|
}
|
|
19
|
-
tokens.push(token);
|
|
20
|
-
element.setAttribute(attribute, serialize(tokens));
|
|
21
20
|
return;
|
|
22
21
|
}
|
|
23
22
|
const set = new Set(tokens);
|
|
@@ -119,11 +118,10 @@ function addTokenToAttribute2(element, attribute, token, options = {}) {
|
|
|
119
118
|
const tokens = value ? parse(value).filter(Boolean) : [];
|
|
120
119
|
if (caseInsensitive) {
|
|
121
120
|
const lower = token.toLowerCase();
|
|
122
|
-
if (tokens.
|
|
123
|
-
|
|
121
|
+
if (tokens.every((token2) => token2.toLowerCase() !== lower)) {
|
|
122
|
+
tokens.push(token);
|
|
123
|
+
element.setAttribute(attribute, serialize(tokens));
|
|
124
124
|
}
|
|
125
|
-
tokens.push(token);
|
|
126
|
-
element.setAttribute(attribute, serialize(tokens));
|
|
127
125
|
return;
|
|
128
126
|
}
|
|
129
127
|
const set = new Set(tokens);
|
|
@@ -402,6 +400,8 @@ function createRovingTabIndex(container, options = {}) {
|
|
|
402
400
|
let {
|
|
403
401
|
direction,
|
|
404
402
|
navigationOnly = false,
|
|
403
|
+
noMemory = false,
|
|
404
|
+
noStart = false,
|
|
405
405
|
selector,
|
|
406
406
|
typeahead = false,
|
|
407
407
|
wrap = false
|
|
@@ -414,6 +414,14 @@ function createRovingTabIndex(container, options = {}) {
|
|
|
414
414
|
console.warn("Invalid navigationOnly option. Fallback: false.");
|
|
415
415
|
navigationOnly = false;
|
|
416
416
|
}
|
|
417
|
+
if (typeof noMemory !== "boolean") {
|
|
418
|
+
console.warn("Invalid noMemory option. Fallback: false.");
|
|
419
|
+
noMemory = false;
|
|
420
|
+
}
|
|
421
|
+
if (typeof noStart !== "boolean") {
|
|
422
|
+
console.warn("Invalid noStart option. Fallback: false.");
|
|
423
|
+
noStart = false;
|
|
424
|
+
}
|
|
417
425
|
if (typeof selector !== "undefined" && (typeof selector !== "string" || !selector.trim())) {
|
|
418
426
|
console.warn(
|
|
419
427
|
"Invalid selector. Fallback: all focusable elements (undefined)."
|
|
@@ -428,13 +436,15 @@ function createRovingTabIndex(container, options = {}) {
|
|
|
428
436
|
console.warn("Invalid wrap option. Fallback: false.");
|
|
429
437
|
wrap = false;
|
|
430
438
|
}
|
|
431
|
-
const settings = {
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
}
|
|
439
|
+
const settings = {
|
|
440
|
+
navigationOnly,
|
|
441
|
+
noMemory,
|
|
442
|
+
noStart,
|
|
443
|
+
typeahead,
|
|
444
|
+
wrap
|
|
445
|
+
};
|
|
446
|
+
direction && Object.assign(settings, { direction });
|
|
447
|
+
selector && Object.assign(settings, { selector });
|
|
438
448
|
const roving = new RovingTabIndex(container, settings);
|
|
439
449
|
return () => roving.destroy();
|
|
440
450
|
}
|
|
@@ -467,12 +477,29 @@ var RovingTabIndex = class {
|
|
|
467
477
|
#initialize() {
|
|
468
478
|
this.#update(document.activeElement);
|
|
469
479
|
this.#controller = new AbortController();
|
|
480
|
+
const { signal } = this.#controller;
|
|
481
|
+
document.addEventListener("focusin", this.#onFocusIn, {
|
|
482
|
+
capture: true,
|
|
483
|
+
signal
|
|
484
|
+
});
|
|
470
485
|
document.addEventListener("keydown", this.#onKeyDown, {
|
|
471
486
|
capture: true,
|
|
472
|
-
signal
|
|
487
|
+
signal
|
|
473
488
|
});
|
|
474
489
|
this.#container.setAttribute("data-roving-tabindex-initialized", "");
|
|
475
490
|
}
|
|
491
|
+
#onFocusIn = (event) => {
|
|
492
|
+
const { target } = event;
|
|
493
|
+
if (!(target instanceof Element)) {
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
const isFocusable22 = this.#focusables.has(target);
|
|
497
|
+
if (this.#options.noMemory && !isFocusable22) {
|
|
498
|
+
this.#update(null);
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
501
|
+
isFocusable22 && this.#update(target);
|
|
502
|
+
};
|
|
476
503
|
#onKeyDown = (event) => {
|
|
477
504
|
if (!event.composedPath().includes(this.#container)) {
|
|
478
505
|
return;
|
|
@@ -503,7 +530,6 @@ var RovingTabIndex = class {
|
|
|
503
530
|
return;
|
|
504
531
|
}
|
|
505
532
|
event.preventDefault();
|
|
506
|
-
event.stopPropagation();
|
|
507
533
|
const currentIndex = current.indexOf(active);
|
|
508
534
|
let rawIndex;
|
|
509
535
|
let newIndex = currentIndex;
|
|
@@ -534,11 +560,7 @@ var RovingTabIndex = class {
|
|
|
534
560
|
}
|
|
535
561
|
}
|
|
536
562
|
const focusable = target.at(newIndex);
|
|
537
|
-
|
|
538
|
-
return;
|
|
539
|
-
}
|
|
540
|
-
this.#update(focusable);
|
|
541
|
-
focusElement(focusable);
|
|
563
|
+
focusable && focusElement(focusable);
|
|
542
564
|
};
|
|
543
565
|
#update(active) {
|
|
544
566
|
const current = new Set(this.#getFocusables());
|
|
@@ -553,7 +575,7 @@ var RovingTabIndex = class {
|
|
|
553
575
|
index >= 0 && focusables.splice(index, 1);
|
|
554
576
|
});
|
|
555
577
|
}
|
|
556
|
-
const { navigationOnly } = this.#options;
|
|
578
|
+
const { navigationOnly, noStart, typeahead } = this.#options;
|
|
557
579
|
for (const focusable of current) {
|
|
558
580
|
if (this.#focusables.has(focusable)) {
|
|
559
581
|
continue;
|
|
@@ -563,7 +585,7 @@ var RovingTabIndex = class {
|
|
|
563
585
|
saveAttributes2([focusable], ["tabindex"]);
|
|
564
586
|
focusable.setAttribute("tabindex", "-1");
|
|
565
587
|
}
|
|
566
|
-
if (!
|
|
588
|
+
if (!typeahead) {
|
|
567
589
|
continue;
|
|
568
590
|
}
|
|
569
591
|
const value = focusable.ariaKeyShortcuts?.trim();
|
|
@@ -594,7 +616,7 @@ var RovingTabIndex = class {
|
|
|
594
616
|
return;
|
|
595
617
|
}
|
|
596
618
|
[...this.#focusables].forEach((focusable, i) => {
|
|
597
|
-
focusable.setAttribute("tabindex", i ? "-1" : "0");
|
|
619
|
+
focusable.setAttribute("tabindex", i || noStart ? "-1" : "0");
|
|
598
620
|
});
|
|
599
621
|
}
|
|
600
622
|
#createSelectorFilter() {
|
|
@@ -605,7 +627,8 @@ var RovingTabIndex = class {
|
|
|
605
627
|
return getFocusables(this.#container, {
|
|
606
628
|
composed: true,
|
|
607
629
|
filter: this.#selectorFilter,
|
|
608
|
-
skipNegativeTabIndexCheck: !this.#options.navigationOnly
|
|
630
|
+
skipNegativeTabIndexCheck: !this.#options.navigationOnly,
|
|
631
|
+
skipVisibilityCheck: true
|
|
609
632
|
});
|
|
610
633
|
}
|
|
611
634
|
};
|
|
@@ -883,8 +906,7 @@ function isFocusable2(element) {
|
|
|
883
906
|
return !element.hasAttribute("disabled") && element.tabIndex >= 0;
|
|
884
907
|
}
|
|
885
908
|
function waitAnimationFinish(animation) {
|
|
886
|
-
|
|
887
|
-
if (playState === "idle" || playState === "finished") {
|
|
909
|
+
if (["idle", "finished"].includes(animation.playState)) {
|
|
888
910
|
return Promise.resolve();
|
|
889
911
|
}
|
|
890
912
|
return new Promise(
|
|
@@ -895,7 +917,7 @@ function waitAnimationFinish(animation) {
|
|
|
895
917
|
* Accordion
|
|
896
918
|
* WAI-ARIA compliant accordion pattern implementation in TypeScript.
|
|
897
919
|
*
|
|
898
|
-
* @version 1.4.
|
|
920
|
+
* @version 1.4.8
|
|
899
921
|
* @author Yusuke Kamiyamane
|
|
900
922
|
* @license MIT
|
|
901
923
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
|
@@ -907,7 +929,7 @@ function waitAnimationFinish(animation) {
|
|
|
907
929
|
(**
|
|
908
930
|
* Attributes Utils
|
|
909
931
|
*
|
|
910
|
-
* @version 1.1.
|
|
932
|
+
* @version 1.1.1
|
|
911
933
|
* @author Yusuke Kamiyamane
|
|
912
934
|
* @license MIT
|
|
913
935
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
|
@@ -931,7 +953,7 @@ function waitAnimationFinish(animation) {
|
|
|
931
953
|
* Lightweight roving tabindex utility with fully focus management.
|
|
932
954
|
* Designed for accessible menus, tabs, toolbars, and composite widgets.
|
|
933
955
|
*
|
|
934
|
-
* @version
|
|
956
|
+
* @version 3.0.0
|
|
935
957
|
* @author Yusuke Kamiyamane
|
|
936
958
|
* @license MIT
|
|
937
959
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
|
@@ -943,7 +965,7 @@ function waitAnimationFinish(animation) {
|
|
|
943
965
|
(**
|
|
944
966
|
* Attributes Utils
|
|
945
967
|
*
|
|
946
|
-
* @version 1.1.
|
|
968
|
+
* @version 1.1.1
|
|
947
969
|
* @author Yusuke Kamiyamane
|
|
948
970
|
* @license MIT
|
|
949
971
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
|
@@ -956,7 +978,7 @@ function waitAnimationFinish(animation) {
|
|
|
956
978
|
* High-precision focus management utility with full composed tree support.
|
|
957
979
|
* Handles complex focus rules including tabindex ordering, radio groups, inert.
|
|
958
980
|
*
|
|
959
|
-
* @version 4.3.
|
|
981
|
+
* @version 4.3.2
|
|
960
982
|
* @author Yusuke Kamiyamane
|
|
961
983
|
* @license MIT
|
|
962
984
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
package/dist/index.d.cts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -11,11 +11,10 @@ function addTokenToAttribute(element, attribute, token, options = {}) {
|
|
|
11
11
|
const tokens = value ? parse(value).filter(Boolean) : [];
|
|
12
12
|
if (caseInsensitive) {
|
|
13
13
|
const lower = token.toLowerCase();
|
|
14
|
-
if (tokens.
|
|
15
|
-
|
|
14
|
+
if (tokens.every((token2) => token2.toLowerCase() !== lower)) {
|
|
15
|
+
tokens.push(token);
|
|
16
|
+
element.setAttribute(attribute, serialize(tokens));
|
|
16
17
|
}
|
|
17
|
-
tokens.push(token);
|
|
18
|
-
element.setAttribute(attribute, serialize(tokens));
|
|
19
18
|
return;
|
|
20
19
|
}
|
|
21
20
|
const set = new Set(tokens);
|
|
@@ -117,11 +116,10 @@ function addTokenToAttribute2(element, attribute, token, options = {}) {
|
|
|
117
116
|
const tokens = value ? parse(value).filter(Boolean) : [];
|
|
118
117
|
if (caseInsensitive) {
|
|
119
118
|
const lower = token.toLowerCase();
|
|
120
|
-
if (tokens.
|
|
121
|
-
|
|
119
|
+
if (tokens.every((token2) => token2.toLowerCase() !== lower)) {
|
|
120
|
+
tokens.push(token);
|
|
121
|
+
element.setAttribute(attribute, serialize(tokens));
|
|
122
122
|
}
|
|
123
|
-
tokens.push(token);
|
|
124
|
-
element.setAttribute(attribute, serialize(tokens));
|
|
125
123
|
return;
|
|
126
124
|
}
|
|
127
125
|
const set = new Set(tokens);
|
|
@@ -400,6 +398,8 @@ function createRovingTabIndex(container, options = {}) {
|
|
|
400
398
|
let {
|
|
401
399
|
direction,
|
|
402
400
|
navigationOnly = false,
|
|
401
|
+
noMemory = false,
|
|
402
|
+
noStart = false,
|
|
403
403
|
selector,
|
|
404
404
|
typeahead = false,
|
|
405
405
|
wrap = false
|
|
@@ -412,6 +412,14 @@ function createRovingTabIndex(container, options = {}) {
|
|
|
412
412
|
console.warn("Invalid navigationOnly option. Fallback: false.");
|
|
413
413
|
navigationOnly = false;
|
|
414
414
|
}
|
|
415
|
+
if (typeof noMemory !== "boolean") {
|
|
416
|
+
console.warn("Invalid noMemory option. Fallback: false.");
|
|
417
|
+
noMemory = false;
|
|
418
|
+
}
|
|
419
|
+
if (typeof noStart !== "boolean") {
|
|
420
|
+
console.warn("Invalid noStart option. Fallback: false.");
|
|
421
|
+
noStart = false;
|
|
422
|
+
}
|
|
415
423
|
if (typeof selector !== "undefined" && (typeof selector !== "string" || !selector.trim())) {
|
|
416
424
|
console.warn(
|
|
417
425
|
"Invalid selector. Fallback: all focusable elements (undefined)."
|
|
@@ -426,13 +434,15 @@ function createRovingTabIndex(container, options = {}) {
|
|
|
426
434
|
console.warn("Invalid wrap option. Fallback: false.");
|
|
427
435
|
wrap = false;
|
|
428
436
|
}
|
|
429
|
-
const settings = {
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
}
|
|
437
|
+
const settings = {
|
|
438
|
+
navigationOnly,
|
|
439
|
+
noMemory,
|
|
440
|
+
noStart,
|
|
441
|
+
typeahead,
|
|
442
|
+
wrap
|
|
443
|
+
};
|
|
444
|
+
direction && Object.assign(settings, { direction });
|
|
445
|
+
selector && Object.assign(settings, { selector });
|
|
436
446
|
const roving = new RovingTabIndex(container, settings);
|
|
437
447
|
return () => roving.destroy();
|
|
438
448
|
}
|
|
@@ -465,12 +475,29 @@ var RovingTabIndex = class {
|
|
|
465
475
|
#initialize() {
|
|
466
476
|
this.#update(document.activeElement);
|
|
467
477
|
this.#controller = new AbortController();
|
|
478
|
+
const { signal } = this.#controller;
|
|
479
|
+
document.addEventListener("focusin", this.#onFocusIn, {
|
|
480
|
+
capture: true,
|
|
481
|
+
signal
|
|
482
|
+
});
|
|
468
483
|
document.addEventListener("keydown", this.#onKeyDown, {
|
|
469
484
|
capture: true,
|
|
470
|
-
signal
|
|
485
|
+
signal
|
|
471
486
|
});
|
|
472
487
|
this.#container.setAttribute("data-roving-tabindex-initialized", "");
|
|
473
488
|
}
|
|
489
|
+
#onFocusIn = (event) => {
|
|
490
|
+
const { target } = event;
|
|
491
|
+
if (!(target instanceof Element)) {
|
|
492
|
+
return;
|
|
493
|
+
}
|
|
494
|
+
const isFocusable22 = this.#focusables.has(target);
|
|
495
|
+
if (this.#options.noMemory && !isFocusable22) {
|
|
496
|
+
this.#update(null);
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
isFocusable22 && this.#update(target);
|
|
500
|
+
};
|
|
474
501
|
#onKeyDown = (event) => {
|
|
475
502
|
if (!event.composedPath().includes(this.#container)) {
|
|
476
503
|
return;
|
|
@@ -501,7 +528,6 @@ var RovingTabIndex = class {
|
|
|
501
528
|
return;
|
|
502
529
|
}
|
|
503
530
|
event.preventDefault();
|
|
504
|
-
event.stopPropagation();
|
|
505
531
|
const currentIndex = current.indexOf(active);
|
|
506
532
|
let rawIndex;
|
|
507
533
|
let newIndex = currentIndex;
|
|
@@ -532,11 +558,7 @@ var RovingTabIndex = class {
|
|
|
532
558
|
}
|
|
533
559
|
}
|
|
534
560
|
const focusable = target.at(newIndex);
|
|
535
|
-
|
|
536
|
-
return;
|
|
537
|
-
}
|
|
538
|
-
this.#update(focusable);
|
|
539
|
-
focusElement(focusable);
|
|
561
|
+
focusable && focusElement(focusable);
|
|
540
562
|
};
|
|
541
563
|
#update(active) {
|
|
542
564
|
const current = new Set(this.#getFocusables());
|
|
@@ -551,7 +573,7 @@ var RovingTabIndex = class {
|
|
|
551
573
|
index >= 0 && focusables.splice(index, 1);
|
|
552
574
|
});
|
|
553
575
|
}
|
|
554
|
-
const { navigationOnly } = this.#options;
|
|
576
|
+
const { navigationOnly, noStart, typeahead } = this.#options;
|
|
555
577
|
for (const focusable of current) {
|
|
556
578
|
if (this.#focusables.has(focusable)) {
|
|
557
579
|
continue;
|
|
@@ -561,7 +583,7 @@ var RovingTabIndex = class {
|
|
|
561
583
|
saveAttributes2([focusable], ["tabindex"]);
|
|
562
584
|
focusable.setAttribute("tabindex", "-1");
|
|
563
585
|
}
|
|
564
|
-
if (!
|
|
586
|
+
if (!typeahead) {
|
|
565
587
|
continue;
|
|
566
588
|
}
|
|
567
589
|
const value = focusable.ariaKeyShortcuts?.trim();
|
|
@@ -592,7 +614,7 @@ var RovingTabIndex = class {
|
|
|
592
614
|
return;
|
|
593
615
|
}
|
|
594
616
|
[...this.#focusables].forEach((focusable, i) => {
|
|
595
|
-
focusable.setAttribute("tabindex", i ? "-1" : "0");
|
|
617
|
+
focusable.setAttribute("tabindex", i || noStart ? "-1" : "0");
|
|
596
618
|
});
|
|
597
619
|
}
|
|
598
620
|
#createSelectorFilter() {
|
|
@@ -603,7 +625,8 @@ var RovingTabIndex = class {
|
|
|
603
625
|
return getFocusables(this.#container, {
|
|
604
626
|
composed: true,
|
|
605
627
|
filter: this.#selectorFilter,
|
|
606
|
-
skipNegativeTabIndexCheck: !this.#options.navigationOnly
|
|
628
|
+
skipNegativeTabIndexCheck: !this.#options.navigationOnly,
|
|
629
|
+
skipVisibilityCheck: true
|
|
607
630
|
});
|
|
608
631
|
}
|
|
609
632
|
};
|
|
@@ -881,8 +904,7 @@ function isFocusable2(element) {
|
|
|
881
904
|
return !element.hasAttribute("disabled") && element.tabIndex >= 0;
|
|
882
905
|
}
|
|
883
906
|
function waitAnimationFinish(animation) {
|
|
884
|
-
|
|
885
|
-
if (playState === "idle" || playState === "finished") {
|
|
907
|
+
if (["idle", "finished"].includes(animation.playState)) {
|
|
886
908
|
return Promise.resolve();
|
|
887
909
|
}
|
|
888
910
|
return new Promise(
|
|
@@ -893,7 +915,7 @@ function waitAnimationFinish(animation) {
|
|
|
893
915
|
* Accordion
|
|
894
916
|
* WAI-ARIA compliant accordion pattern implementation in TypeScript.
|
|
895
917
|
*
|
|
896
|
-
* @version 1.4.
|
|
918
|
+
* @version 1.4.8
|
|
897
919
|
* @author Yusuke Kamiyamane
|
|
898
920
|
* @license MIT
|
|
899
921
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
|
@@ -905,7 +927,7 @@ function waitAnimationFinish(animation) {
|
|
|
905
927
|
(**
|
|
906
928
|
* Attributes Utils
|
|
907
929
|
*
|
|
908
|
-
* @version 1.1.
|
|
930
|
+
* @version 1.1.1
|
|
909
931
|
* @author Yusuke Kamiyamane
|
|
910
932
|
* @license MIT
|
|
911
933
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
|
@@ -929,7 +951,7 @@ function waitAnimationFinish(animation) {
|
|
|
929
951
|
* Lightweight roving tabindex utility with fully focus management.
|
|
930
952
|
* Designed for accessible menus, tabs, toolbars, and composite widgets.
|
|
931
953
|
*
|
|
932
|
-
* @version
|
|
954
|
+
* @version 3.0.0
|
|
933
955
|
* @author Yusuke Kamiyamane
|
|
934
956
|
* @license MIT
|
|
935
957
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
|
@@ -941,7 +963,7 @@ function waitAnimationFinish(animation) {
|
|
|
941
963
|
(**
|
|
942
964
|
* Attributes Utils
|
|
943
965
|
*
|
|
944
|
-
* @version 1.1.
|
|
966
|
+
* @version 1.1.1
|
|
945
967
|
* @author Yusuke Kamiyamane
|
|
946
968
|
* @license MIT
|
|
947
969
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
|
@@ -954,7 +976,7 @@ function waitAnimationFinish(animation) {
|
|
|
954
976
|
* High-precision focus management utility with full composed tree support.
|
|
955
977
|
* Handles complex focus rules including tabindex ordering, radio groups, inert.
|
|
956
978
|
*
|
|
957
|
-
* @version 4.3.
|
|
979
|
+
* @version 4.3.2
|
|
958
980
|
* @author Yusuke Kamiyamane
|
|
959
981
|
* @license MIT
|
|
960
982
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@y14e/accordion",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.8",
|
|
4
4
|
"description": "WAI-ARIA compliant accordion pattern implementation in TypeScript",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
},
|
|
44
44
|
"homepage": "https://github.com/y14e/accordion#readme",
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@y14e/attributes-utils": "^1.1.
|
|
46
|
+
"@y14e/attributes-utils": "^1.1.1",
|
|
47
47
|
"@y14e/button": "^1.0.0",
|
|
48
|
-
"@y14e/roving-tabindex": "^
|
|
48
|
+
"@y14e/roving-tabindex": "^3.0.0",
|
|
49
49
|
"bun-types": "latest",
|
|
50
50
|
"tsup": "^8.0.0",
|
|
51
51
|
"typescript": "^5.6.0",
|