@y14e/tabs 1.3.5 → 1.3.7
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 +30 -17
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +30 -17
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1,29 +1,41 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
// node_modules/@y14e/attributes-utils/dist/index.js
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
var defaultParser = (value) => value.split(/\s+/);
|
|
5
|
+
var defaultSerializer = (tokens) => tokens.join(" ");
|
|
6
|
+
function addTokenToAttribute(element, attribute, token, options = {}) {
|
|
7
|
+
const {
|
|
8
|
+
caseInsensitive = false,
|
|
9
|
+
parse = defaultParser,
|
|
10
|
+
serialize = defaultSerializer
|
|
11
|
+
} = options;
|
|
12
|
+
const value = element.getAttribute(attribute)?.trim();
|
|
13
|
+
const tokens = value ? parse(value).filter(Boolean) : [];
|
|
14
|
+
if (caseInsensitive) {
|
|
15
|
+
const lower = token.toLowerCase();
|
|
16
|
+
if (tokens.some((token2) => token2.toLowerCase() === lower)) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
tokens.push(token);
|
|
20
|
+
element.setAttribute(attribute, serialize(tokens));
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const set = new Set(tokens);
|
|
24
|
+
set.add(token);
|
|
25
|
+
element.setAttribute(attribute, serialize([...set]));
|
|
10
26
|
}
|
|
11
27
|
var snapshots = /* @__PURE__ */ new WeakMap();
|
|
12
28
|
function restoreAttributes(elements) {
|
|
13
|
-
|
|
29
|
+
for (const element of elements) {
|
|
14
30
|
const snapshot = snapshots.get(element);
|
|
15
31
|
if (!snapshot) {
|
|
16
|
-
|
|
32
|
+
continue;
|
|
17
33
|
}
|
|
18
34
|
for (const [attribute, value] of snapshot.entries()) {
|
|
19
|
-
|
|
20
|
-
element.removeAttribute(attribute);
|
|
21
|
-
} else {
|
|
22
|
-
element.setAttribute(attribute, value);
|
|
23
|
-
}
|
|
35
|
+
value === null ? element.removeAttribute(attribute) : element.setAttribute(attribute, value);
|
|
24
36
|
}
|
|
25
37
|
snapshots.delete(element);
|
|
26
|
-
}
|
|
38
|
+
}
|
|
27
39
|
}
|
|
28
40
|
function saveAttributes(elements, attributes) {
|
|
29
41
|
elements.forEach((element) => {
|
|
@@ -324,7 +336,8 @@ var Tabs = class _Tabs {
|
|
|
324
336
|
this.#rootElement.removeAttribute("data-tabs-initialized");
|
|
325
337
|
}
|
|
326
338
|
#initialize() {
|
|
327
|
-
|
|
339
|
+
this.#eventController = new AbortController();
|
|
340
|
+
const { signal } = this.#eventController;
|
|
328
341
|
saveAttributes(this.#listElements, [
|
|
329
342
|
"aria-hidden",
|
|
330
343
|
"aria-orientation",
|
|
@@ -617,7 +630,7 @@ function isFocusable(element) {
|
|
|
617
630
|
* Tabs
|
|
618
631
|
* WAI-ARIA compliant tabs pattern implementation in TypeScript.
|
|
619
632
|
*
|
|
620
|
-
* @version 1.3.
|
|
633
|
+
* @version 1.3.7
|
|
621
634
|
* @author Yusuke Kamiyamane
|
|
622
635
|
* @license MIT
|
|
623
636
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
|
@@ -629,7 +642,7 @@ function isFocusable(element) {
|
|
|
629
642
|
(**
|
|
630
643
|
* Attributes Utils
|
|
631
644
|
*
|
|
632
|
-
* @version 1.0.
|
|
645
|
+
* @version 1.0.5
|
|
633
646
|
* @author Yusuke Kamiyamane
|
|
634
647
|
* @license MIT
|
|
635
648
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
package/dist/index.d.cts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,27 +1,39 @@
|
|
|
1
1
|
// node_modules/@y14e/attributes-utils/dist/index.js
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
var defaultParser = (value) => value.split(/\s+/);
|
|
3
|
+
var defaultSerializer = (tokens) => tokens.join(" ");
|
|
4
|
+
function addTokenToAttribute(element, attribute, token, options = {}) {
|
|
5
|
+
const {
|
|
6
|
+
caseInsensitive = false,
|
|
7
|
+
parse = defaultParser,
|
|
8
|
+
serialize = defaultSerializer
|
|
9
|
+
} = options;
|
|
10
|
+
const value = element.getAttribute(attribute)?.trim();
|
|
11
|
+
const tokens = value ? parse(value).filter(Boolean) : [];
|
|
12
|
+
if (caseInsensitive) {
|
|
13
|
+
const lower = token.toLowerCase();
|
|
14
|
+
if (tokens.some((token2) => token2.toLowerCase() === lower)) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
tokens.push(token);
|
|
18
|
+
element.setAttribute(attribute, serialize(tokens));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const set = new Set(tokens);
|
|
22
|
+
set.add(token);
|
|
23
|
+
element.setAttribute(attribute, serialize([...set]));
|
|
8
24
|
}
|
|
9
25
|
var snapshots = /* @__PURE__ */ new WeakMap();
|
|
10
26
|
function restoreAttributes(elements) {
|
|
11
|
-
|
|
27
|
+
for (const element of elements) {
|
|
12
28
|
const snapshot = snapshots.get(element);
|
|
13
29
|
if (!snapshot) {
|
|
14
|
-
|
|
30
|
+
continue;
|
|
15
31
|
}
|
|
16
32
|
for (const [attribute, value] of snapshot.entries()) {
|
|
17
|
-
|
|
18
|
-
element.removeAttribute(attribute);
|
|
19
|
-
} else {
|
|
20
|
-
element.setAttribute(attribute, value);
|
|
21
|
-
}
|
|
33
|
+
value === null ? element.removeAttribute(attribute) : element.setAttribute(attribute, value);
|
|
22
34
|
}
|
|
23
35
|
snapshots.delete(element);
|
|
24
|
-
}
|
|
36
|
+
}
|
|
25
37
|
}
|
|
26
38
|
function saveAttributes(elements, attributes) {
|
|
27
39
|
elements.forEach((element) => {
|
|
@@ -322,7 +334,8 @@ var Tabs = class _Tabs {
|
|
|
322
334
|
this.#rootElement.removeAttribute("data-tabs-initialized");
|
|
323
335
|
}
|
|
324
336
|
#initialize() {
|
|
325
|
-
|
|
337
|
+
this.#eventController = new AbortController();
|
|
338
|
+
const { signal } = this.#eventController;
|
|
326
339
|
saveAttributes(this.#listElements, [
|
|
327
340
|
"aria-hidden",
|
|
328
341
|
"aria-orientation",
|
|
@@ -615,7 +628,7 @@ function isFocusable(element) {
|
|
|
615
628
|
* Tabs
|
|
616
629
|
* WAI-ARIA compliant tabs pattern implementation in TypeScript.
|
|
617
630
|
*
|
|
618
|
-
* @version 1.3.
|
|
631
|
+
* @version 1.3.7
|
|
619
632
|
* @author Yusuke Kamiyamane
|
|
620
633
|
* @license MIT
|
|
621
634
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
|
@@ -627,7 +640,7 @@ function isFocusable(element) {
|
|
|
627
640
|
(**
|
|
628
641
|
* Attributes Utils
|
|
629
642
|
*
|
|
630
|
-
* @version 1.0.
|
|
643
|
+
* @version 1.0.5
|
|
631
644
|
* @author Yusuke Kamiyamane
|
|
632
645
|
* @license MIT
|
|
633
646
|
* @copyright Copyright (c) Yusuke Kamiyamane
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@y14e/tabs",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.7",
|
|
4
4
|
"description": "WAI-ARIA compliant tabs pattern implementation in TypeScript",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
},
|
|
43
43
|
"homepage": "https://github.com/y14e/tabs#readme",
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@y14e/attributes-utils": "^1.0.
|
|
45
|
+
"@y14e/attributes-utils": "^1.0.5",
|
|
46
46
|
"bun-types": "latest",
|
|
47
47
|
"tsup": "^8.0.0",
|
|
48
48
|
"typescript": "^5.6.0",
|