@y14e/accordion 1.2.8 → 1.2.10

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
@@ -1,29 +1,41 @@
1
1
  'use strict';
2
2
 
3
3
  // node_modules/@y14e/attributes-utils/dist/index.js
4
- function addTokenToAttribute(element, attribute, token) {
5
- const tokens = new Set(
6
- element.getAttribute(attribute)?.trim().split(/\s+/) ?? []
7
- );
8
- tokens.add(token);
9
- element.setAttribute(attribute, [...tokens].join(" "));
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
- elements.forEach((element) => {
29
+ for (const element of elements) {
14
30
  const snapshot = snapshots.get(element);
15
31
  if (!snapshot) {
16
- return;
32
+ continue;
17
33
  }
18
34
  for (const [attribute, value] of snapshot.entries()) {
19
- if (value === null) {
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) => {
@@ -143,8 +155,10 @@ var Accordion = class _Accordion {
143
155
  const { signal } = this.#eventController;
144
156
  saveAttributes(this.#triggerElements, [
145
157
  "aria-controls",
158
+ "aria-disabled",
146
159
  "aria-label",
147
160
  "id",
161
+ "style",
148
162
  "tabindex"
149
163
  ]);
150
164
  this.#triggerElements.forEach((trigger, i) => {
@@ -229,7 +243,7 @@ var Accordion = class _Accordion {
229
243
  if (!binding) {
230
244
  return;
231
245
  }
232
- binding.trigger.ariaExpanded !== "true" && this.#toggle(binding.trigger, true, true);
246
+ binding.trigger.ariaExpanded === "false" && this.#toggle(binding.trigger, true, true);
233
247
  };
234
248
  #toggle(trigger, isOpen, isMatch = false) {
235
249
  if (trigger.ariaExpanded === String(isOpen)) {
@@ -339,7 +353,7 @@ function waitAnimationFinish(animation) {
339
353
  * Accordion
340
354
  * WAI-ARIA compliant accordion pattern implementation in TypeScript.
341
355
  *
342
- * @version 1.2.8
356
+ * @version 1.2.10
343
357
  * @author Yusuke Kamiyamane
344
358
  * @license MIT
345
359
  * @copyright Copyright (c) Yusuke Kamiyamane
@@ -351,7 +365,7 @@ function waitAnimationFinish(animation) {
351
365
  (**
352
366
  * Attributes Utils
353
367
  *
354
- * @version 1.0.0
368
+ * @version 1.0.5
355
369
  * @author Yusuke Kamiyamane
356
370
  * @license MIT
357
371
  * @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.2.8
5
+ * @version 1.2.10
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.2.8
5
+ * @version 1.2.10
6
6
  * @author Yusuke Kamiyamane
7
7
  * @license MIT
8
8
  * @copyright Copyright (c) Yusuke Kamiyamane
package/dist/index.js CHANGED
@@ -1,27 +1,39 @@
1
1
  // node_modules/@y14e/attributes-utils/dist/index.js
2
- function addTokenToAttribute(element, attribute, token) {
3
- const tokens = new Set(
4
- element.getAttribute(attribute)?.trim().split(/\s+/) ?? []
5
- );
6
- tokens.add(token);
7
- element.setAttribute(attribute, [...tokens].join(" "));
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
- elements.forEach((element) => {
27
+ for (const element of elements) {
12
28
  const snapshot = snapshots.get(element);
13
29
  if (!snapshot) {
14
- return;
30
+ continue;
15
31
  }
16
32
  for (const [attribute, value] of snapshot.entries()) {
17
- if (value === null) {
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) => {
@@ -141,8 +153,10 @@ var Accordion = class _Accordion {
141
153
  const { signal } = this.#eventController;
142
154
  saveAttributes(this.#triggerElements, [
143
155
  "aria-controls",
156
+ "aria-disabled",
144
157
  "aria-label",
145
158
  "id",
159
+ "style",
146
160
  "tabindex"
147
161
  ]);
148
162
  this.#triggerElements.forEach((trigger, i) => {
@@ -227,7 +241,7 @@ var Accordion = class _Accordion {
227
241
  if (!binding) {
228
242
  return;
229
243
  }
230
- binding.trigger.ariaExpanded !== "true" && this.#toggle(binding.trigger, true, true);
244
+ binding.trigger.ariaExpanded === "false" && this.#toggle(binding.trigger, true, true);
231
245
  };
232
246
  #toggle(trigger, isOpen, isMatch = false) {
233
247
  if (trigger.ariaExpanded === String(isOpen)) {
@@ -337,7 +351,7 @@ function waitAnimationFinish(animation) {
337
351
  * Accordion
338
352
  * WAI-ARIA compliant accordion pattern implementation in TypeScript.
339
353
  *
340
- * @version 1.2.8
354
+ * @version 1.2.10
341
355
  * @author Yusuke Kamiyamane
342
356
  * @license MIT
343
357
  * @copyright Copyright (c) Yusuke Kamiyamane
@@ -349,7 +363,7 @@ function waitAnimationFinish(animation) {
349
363
  (**
350
364
  * Attributes Utils
351
365
  *
352
- * @version 1.0.0
366
+ * @version 1.0.5
353
367
  * @author Yusuke Kamiyamane
354
368
  * @license MIT
355
369
  * @copyright Copyright (c) Yusuke Kamiyamane
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@y14e/accordion",
3
- "version": "1.2.8",
3
+ "version": "1.2.10",
4
4
  "description": "WAI-ARIA compliant accordion pattern implementation in TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "homepage": "https://github.com/y14e/accordion#readme",
45
45
  "devDependencies": {
46
- "@y14e/attributes-utils": "^1.0.0",
46
+ "@y14e/attributes-utils": "^1.0.5",
47
47
  "bun-types": "latest",
48
48
  "tsup": "^8.0.0",
49
49
  "typescript": "^5.6.0",