@spectrum-web-components/swatch 0.41.1 → 0.42.0

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.
@@ -390,6 +390,16 @@
390
390
  "attribute": "border",
391
391
  "reflects": true
392
392
  },
393
+ {
394
+ "kind": "field",
395
+ "name": "density",
396
+ "type": {
397
+ "text": "'compact' | 'spacious' | undefined"
398
+ },
399
+ "privacy": "public",
400
+ "attribute": "density",
401
+ "reflects": true
402
+ },
393
403
  {
394
404
  "kind": "field",
395
405
  "name": "rounding",
@@ -407,9 +417,17 @@
407
417
  "text": "string[]"
408
418
  },
409
419
  "privacy": "public",
410
- "default": "[]",
411
420
  "attribute": "selected"
412
421
  },
422
+ {
423
+ "kind": "field",
424
+ "name": "_selected",
425
+ "type": {
426
+ "text": "string[]"
427
+ },
428
+ "privacy": "private",
429
+ "default": "[]"
430
+ },
413
431
  {
414
432
  "kind": "field",
415
433
  "name": "selects",
@@ -437,18 +455,16 @@
437
455
  },
438
456
  {
439
457
  "kind": "field",
440
- "name": "density",
458
+ "name": "swatches",
441
459
  "type": {
442
- "text": "'compact' | 'spacious' | undefined"
460
+ "text": "Swatch[]"
443
461
  },
444
- "privacy": "public",
445
- "attribute": "density",
446
- "reflects": true
462
+ "privacy": "public"
447
463
  },
448
464
  {
449
465
  "kind": "field",
450
466
  "name": "rovingTabindexController",
451
- "default": "new RovingTabindexController<Swatch>(this, {\n focusInIndex: (elements: Swatch[]) => {\n let firstEnabledIndex = -1;\n const firstSelectedIndex = elements.findIndex((el, index) => {\n if (!elements[firstEnabledIndex] && !el.disabled) {\n firstEnabledIndex = index;\n }\n return el.selected && !el.disabled;\n });\n return elements[firstSelectedIndex]\n ? firstSelectedIndex\n : firstEnabledIndex;\n },\n elements: () => [...this.children] as Swatch[],\n isFocusableElement: (el: Swatch) => !el.disabled,\n })"
467
+ "default": "new RovingTabindexController<Swatch>(this, {\n focusInIndex: (elements: Swatch[]) => {\n let firstEnabledIndex = -1;\n const firstSelectedIndex = elements.findIndex((el, index) => {\n if (!elements[firstEnabledIndex] && !el.disabled) {\n firstEnabledIndex = index;\n }\n return el.selected && !el.disabled;\n });\n return elements[firstSelectedIndex]\n ? firstSelectedIndex\n : firstEnabledIndex;\n },\n elements: () => this.swatches,\n isFocusableElement: (el: Swatch) => !el.disabled,\n })"
452
468
  },
453
469
  {
454
470
  "kind": "method",
@@ -545,6 +561,13 @@
545
561
  },
546
562
  "fieldName": "border"
547
563
  },
564
+ {
565
+ "name": "density",
566
+ "type": {
567
+ "text": "'compact' | 'spacious' | undefined"
568
+ },
569
+ "fieldName": "density"
570
+ },
548
571
  {
549
572
  "name": "rounding",
550
573
  "type": {
@@ -557,7 +580,6 @@
557
580
  "type": {
558
581
  "text": "string[]"
559
582
  },
560
- "default": "[]",
561
583
  "fieldName": "selected"
562
584
  },
563
585
  {
@@ -573,13 +595,6 @@
573
595
  "text": "SwatchShape"
574
596
  },
575
597
  "fieldName": "shape"
576
- },
577
- {
578
- "name": "density",
579
- "type": {
580
- "text": "'compact' | 'spacious' | undefined"
581
- },
582
- "fieldName": "density"
583
598
  }
584
599
  ],
585
600
  "mixins": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/swatch",
3
- "version": "0.41.1",
3
+ "version": "0.42.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -67,16 +67,16 @@
67
67
  ],
68
68
  "dependencies": {
69
69
  "@lit-labs/observers": "^2.0.0",
70
- "@spectrum-web-components/base": "^0.41.1",
71
- "@spectrum-web-components/icon": "^0.41.1",
72
- "@spectrum-web-components/icons-ui": "^0.41.1",
73
- "@spectrum-web-components/opacity-checkerboard": "^0.41.1",
74
- "@spectrum-web-components/reactive-controllers": "^0.41.1",
75
- "@spectrum-web-components/shared": "^0.41.1"
70
+ "@spectrum-web-components/base": "^0.42.0",
71
+ "@spectrum-web-components/icon": "^0.42.0",
72
+ "@spectrum-web-components/icons-ui": "^0.42.0",
73
+ "@spectrum-web-components/opacity-checkerboard": "^0.42.0",
74
+ "@spectrum-web-components/reactive-controllers": "^0.42.0",
75
+ "@spectrum-web-components/shared": "^0.42.0"
76
76
  },
77
77
  "devDependencies": {
78
- "@spectrum-css/swatch": "^5.1.1",
79
- "@spectrum-css/swatchgroup": "^2.1.1"
78
+ "@spectrum-css/swatch": "^5.1.4",
79
+ "@spectrum-css/swatchgroup": "^2.1.4"
80
80
  },
81
81
  "types": "./src/index.d.ts",
82
82
  "customElements": "custom-elements.json",
@@ -84,5 +84,5 @@
84
84
  "./sp-*.js",
85
85
  "./**/*.dev.js"
86
86
  ],
87
- "gitHead": "1eded35d98d01973b40990486b86840ba464a2da"
87
+ "gitHead": "9b3bd55ff8e8f9438817255976e77fd456b19d72"
88
88
  }
@@ -15,12 +15,15 @@ declare const SwatchGroup_base: typeof SpectrumElement & {
15
15
  export declare class SwatchGroup extends SwatchGroup_base {
16
16
  static get styles(): CSSResultArray;
17
17
  border: SwatchBorder;
18
+ density: 'compact' | 'spacious' | undefined;
18
19
  rounding: SwatchRounding;
19
- selected: string[];
20
+ get selected(): string[];
21
+ set selected(selected: string[]);
22
+ private _selected;
20
23
  selects: SwatchSelects;
21
24
  private selectedSet;
22
25
  shape: SwatchShape;
23
- density: 'compact' | 'spacious' | undefined;
26
+ swatches: Swatch[];
24
27
  constructor();
25
28
  rovingTabindexController: RovingTabindexController<Swatch>;
26
29
  focus(options?: FocusOptions): void;
@@ -15,7 +15,10 @@ import {
15
15
  SizedMixin,
16
16
  SpectrumElement
17
17
  } from "@spectrum-web-components/base";
18
- import { property } from "@spectrum-web-components/base/src/decorators.js";
18
+ import {
19
+ property,
20
+ queryAssignedElements
21
+ } from "@spectrum-web-components/base/src/decorators.js";
19
22
  import { RovingTabindexController } from "@spectrum-web-components/reactive-controllers/src/RovingTabindex.js";
20
23
  import { MutationController } from "@lit-labs/observers/mutation-controller.js";
21
24
  import styles from "./swatch-group.css.js";
@@ -25,7 +28,9 @@ export class SwatchGroup extends SizedMixin(SpectrumElement, {
25
28
  }) {
26
29
  constructor() {
27
30
  super();
28
- this.selected = [];
31
+ // Specifically surface `_selected` internally so that change can be made to this value internally
32
+ // without triggering the update lifecycle directly.
33
+ this._selected = [];
29
34
  this.selectedSet = /* @__PURE__ */ new Set();
30
35
  this.rovingTabindexController = new RovingTabindexController(this, {
31
36
  focusInIndex: (elements) => {
@@ -38,14 +43,14 @@ export class SwatchGroup extends SizedMixin(SpectrumElement, {
38
43
  });
39
44
  return elements[firstSelectedIndex] ? firstSelectedIndex : firstEnabledIndex;
40
45
  },
41
- elements: () => [...this.children],
46
+ elements: () => this.swatches,
42
47
  isFocusableElement: (el) => !el.disabled
43
48
  });
44
- this.manageChange = () => {
49
+ this.manageChange = async () => {
45
50
  const presentSet = /* @__PURE__ */ new Set();
46
51
  this.selectedSet = new Set(this.selected);
47
- const swatches = [...this.children];
48
- swatches.forEach((swatch) => {
52
+ await Promise.all(this.swatches.map((swatch) => swatch.updateComplete));
53
+ this.swatches.forEach((swatch) => {
49
54
  presentSet.add(swatch.value);
50
55
  if (swatch.selected) {
51
56
  this.selectedSet.add(swatch.value);
@@ -56,7 +61,8 @@ export class SwatchGroup extends SizedMixin(SpectrumElement, {
56
61
  this.selectedSet.delete(value);
57
62
  }
58
63
  });
59
- this.selected = [...this.selectedSet];
64
+ this._selected = [...this.selectedSet];
65
+ this.rovingTabindexController.clearElementCache();
60
66
  };
61
67
  new MutationController(this, {
62
68
  config: {
@@ -72,6 +78,16 @@ export class SwatchGroup extends SizedMixin(SpectrumElement, {
72
78
  static get styles() {
73
79
  return [styles];
74
80
  }
81
+ get selected() {
82
+ return this._selected;
83
+ }
84
+ set selected(selected) {
85
+ if (selected === this.selected)
86
+ return;
87
+ const oldSelected = this.selected;
88
+ this._selected = selected;
89
+ this.requestUpdate("selected", oldSelected);
90
+ }
75
91
  focus(options) {
76
92
  this.rovingTabindexController.focus(options);
77
93
  }
@@ -104,7 +120,7 @@ export class SwatchGroup extends SizedMixin(SpectrumElement, {
104
120
  this.selectedSet.delete(target.value);
105
121
  }
106
122
  }
107
- this.selected = [...this.selectedSet];
123
+ this._selected = [...this.selectedSet];
108
124
  const applyDefault = this.dispatchEvent(
109
125
  new Event("change", {
110
126
  cancelable: true,
@@ -112,7 +128,7 @@ export class SwatchGroup extends SizedMixin(SpectrumElement, {
112
128
  })
113
129
  );
114
130
  if (!applyDefault) {
115
- this.selected = oldSelected;
131
+ this._selected = oldSelected;
116
132
  event.preventDefault();
117
133
  }
118
134
  }
@@ -195,7 +211,7 @@ export class SwatchGroup extends SizedMixin(SpectrumElement, {
195
211
  ...this.getPassthroughSwatchActions(changes),
196
212
  ...this.getSelectionSwatchActions(changes)
197
213
  ];
198
- const nextSelected = new Set(this.selected);
214
+ let nextSelected = new Set(this.selected);
199
215
  const currentValues = /* @__PURE__ */ new Set();
200
216
  if (changes.has("selected")) {
201
217
  swatchActions.push((swatch) => {
@@ -207,28 +223,44 @@ export class SwatchGroup extends SizedMixin(SpectrumElement, {
207
223
  }
208
224
  });
209
225
  }
210
- this.rovingTabindexController.elements.forEach((swatch) => {
211
- swatchActions.forEach((action) => {
212
- action(swatch);
226
+ const doActions = () => {
227
+ nextSelected = new Set(this.selected);
228
+ this.swatches.forEach((swatch) => {
229
+ swatchActions.forEach((action) => {
230
+ action(swatch);
231
+ });
213
232
  });
214
- });
215
- if (changes.has("selected")) {
216
- this.selected = [...nextSelected].filter(
217
- (selectedValue) => currentValues.has(selectedValue)
233
+ if (changes.has("selected")) {
234
+ this._selected = [...nextSelected.values()].filter(
235
+ (selectedValue) => currentValues.has(selectedValue)
236
+ );
237
+ }
238
+ };
239
+ if (this.hasUpdated) {
240
+ doActions();
241
+ } else {
242
+ this.shadowRoot.addEventListener(
243
+ "slotchange",
244
+ () => {
245
+ requestAnimationFrame(doActions);
246
+ },
247
+ { once: true }
218
248
  );
219
- this.rovingTabindexController.clearElementCache();
220
249
  }
221
250
  }
222
251
  }
223
252
  __decorateClass([
224
253
  property({ reflect: true })
225
254
  ], SwatchGroup.prototype, "border", 2);
255
+ __decorateClass([
256
+ property({ reflect: true })
257
+ ], SwatchGroup.prototype, "density", 2);
226
258
  __decorateClass([
227
259
  property({ reflect: true })
228
260
  ], SwatchGroup.prototype, "rounding", 2);
229
261
  __decorateClass([
230
262
  property({ type: Array })
231
- ], SwatchGroup.prototype, "selected", 2);
263
+ ], SwatchGroup.prototype, "selected", 1);
232
264
  __decorateClass([
233
265
  property()
234
266
  ], SwatchGroup.prototype, "selects", 2);
@@ -236,6 +268,6 @@ __decorateClass([
236
268
  property({ reflect: true })
237
269
  ], SwatchGroup.prototype, "shape", 2);
238
270
  __decorateClass([
239
- property({ reflect: true })
240
- ], SwatchGroup.prototype, "density", 2);
271
+ queryAssignedElements({ flatten: true })
272
+ ], SwatchGroup.prototype, "swatches", 2);
241
273
  //# sourceMappingURL=SwatchGroup.dev.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["SwatchGroup.ts"],
4
- "sourcesContent": ["/*\nCopyright 2022 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n ElementSize,\n html,\n PropertyValues,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport { RovingTabindexController } from '@spectrum-web-components/reactive-controllers/src/RovingTabindex.js';\nimport { MutationController } from '@lit-labs/observers/mutation-controller.js';\n\nimport styles from './swatch-group.css.js';\nimport type {\n Swatch,\n SwatchBorder,\n SwatchRounding,\n SwatchShape,\n} from './Swatch.dev.js'\n\nexport type SwatchGroupSizes = Exclude<ElementSize, 'xxs' | 'xl' | 'xxl'>;\nexport type SwatchSelects = 'single' | 'multiple' | undefined;\n\n/**\n * @element sp-swatch-group\n *\n * @slot - Swatch elements to manage as a group\n */\nexport class SwatchGroup extends SizedMixin(SpectrumElement, {\n validSizes: ['xs', 's', 'm', 'l'],\n noDefaultSize: true,\n}) {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ reflect: true })\n public border: SwatchBorder;\n\n @property({ reflect: true })\n public rounding: SwatchRounding;\n\n @property({ type: Array })\n public selected: string[] = [];\n\n @property()\n public selects: SwatchSelects;\n\n private selectedSet = new Set<string>();\n\n @property({ reflect: true })\n public shape: SwatchShape;\n\n @property({ reflect: true })\n public density: 'compact' | 'spacious' | undefined;\n\n constructor() {\n super();\n\n new MutationController(this, {\n config: {\n attributes: true,\n childList: true,\n subtree: true,\n },\n callback: () => {\n this.manageChange();\n },\n });\n }\n\n rovingTabindexController = new RovingTabindexController<Swatch>(this, {\n focusInIndex: (elements: Swatch[]) => {\n let firstEnabledIndex = -1;\n const firstSelectedIndex = elements.findIndex((el, index) => {\n if (!elements[firstEnabledIndex] && !el.disabled) {\n firstEnabledIndex = index;\n }\n return el.selected && !el.disabled;\n });\n return elements[firstSelectedIndex]\n ? firstSelectedIndex\n : firstEnabledIndex;\n },\n elements: () => [...this.children] as Swatch[],\n isFocusableElement: (el: Swatch) => !el.disabled,\n });\n\n public override focus(options?: FocusOptions): void {\n this.rovingTabindexController.focus(options);\n }\n\n protected handleChange(event: Event & { target: Swatch }): void {\n event.stopPropagation();\n const oldSelected = this.selected;\n if (!this.selects) {\n event.preventDefault();\n return;\n }\n if (this.selects === 'single') {\n const { target } = event;\n target.tabIndex = 0;\n target.selected = true;\n if (this.selectedSet.has(target.value)) {\n return;\n }\n this.selectedSet.clear();\n this.selectedSet.add(target.value);\n this.rovingTabindexController.elements.forEach((child) => {\n if (child === target) return;\n child.selected = false;\n });\n } else if (this.selects === 'multiple') {\n const { target } = event;\n if (target.selected) {\n this.selectedSet.add(target.value);\n } else {\n this.selectedSet.delete(target.value);\n }\n }\n this.selected = [...this.selectedSet];\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n cancelable: true,\n bubbles: true,\n })\n );\n if (!applyDefault) {\n this.selected = oldSelected;\n event.preventDefault();\n }\n }\n\n private manageChange = (): void => {\n const presentSet = new Set();\n this.selectedSet = new Set(this.selected);\n const swatches = [...this.children] as Swatch[];\n swatches.forEach((swatch) => {\n presentSet.add(swatch.value);\n if (swatch.selected) {\n this.selectedSet.add(swatch.value);\n }\n });\n this.selectedSet.forEach((value) => {\n if (!presentSet.has(value)) {\n this.selectedSet.delete(value);\n }\n });\n this.selected = [...this.selectedSet];\n };\n\n private getPassthroughSwatchActions(\n changes: PropertyValues\n ): ((swatch: Swatch) => void)[] {\n const targetValues: {\n border?: SwatchBorder;\n rounding?: SwatchRounding;\n shape?: SwatchShape;\n size?: SwatchGroupSizes;\n selects?: SwatchSelects;\n } = {};\n if (\n changes.has('selects') &&\n (this.selects || typeof changes.get('selects') !== 'undefined')\n ) {\n targetValues.selects = this.selects;\n }\n if (\n changes.has('border') &&\n (this.border || typeof changes.get('border') !== 'undefined')\n ) {\n targetValues.border = this.border;\n }\n if (\n changes.has('rounding') &&\n (this.rounding || typeof changes.get('rounding') !== 'undefined')\n ) {\n targetValues.rounding = this.rounding;\n }\n if (\n changes.has('size') &&\n (this.size !== 'm' || typeof changes.get('size') !== 'undefined')\n ) {\n targetValues.size = this.size as SwatchGroupSizes;\n }\n if (\n changes.has('shape') &&\n (this.shape || typeof changes.get('shape') !== 'undefined')\n ) {\n targetValues.shape = this.shape;\n }\n const passThroughSwatchActions: ((swatch: Swatch) => void)[] = [];\n if (Object.keys(targetValues).length) {\n passThroughSwatchActions.push((swatch) => {\n if (window.__swc.DEBUG) {\n if (\n 'selects' in targetValues &&\n targetValues.selects !== 'multiple' &&\n swatch.mixedValue\n ) {\n window.__swc.warn(\n this,\n `<sp-swatch> elements can only leverage the \"mixed-value\" attribute when their <sp-swatch-group> parent element is also leveraging \"selects=\"multiple\"\"`,\n 'https://opensource.adobe.com/spectrum-web-components/components/swatch-group/#multiple',\n {\n type: 'accessibility',\n }\n );\n }\n }\n if ('border' in targetValues)\n swatch.border = targetValues.border;\n if ('rounding' in targetValues)\n swatch.rounding = targetValues.rounding;\n if ('shape' in targetValues) swatch.shape = targetValues.shape;\n if ('size' in targetValues)\n swatch.size = targetValues.size as SwatchGroupSizes;\n });\n }\n return passThroughSwatchActions;\n }\n\n private getSelectionSwatchActions(\n changes: PropertyValues\n ): ((swatch: Swatch) => void)[] {\n const selectionSwatchActions: ((swatch: Swatch) => void)[] = [];\n if (!changes.has('selects')) return selectionSwatchActions;\n if (this.selects) {\n this.setAttribute(\n 'role',\n this.selects === 'single' ? 'radiogroup' : 'group'\n );\n } else {\n this.removeAttribute('role');\n }\n const swatchRoles = {\n single: 'radio',\n multiple: 'checkbox',\n };\n const swatchRole = this.selects ? swatchRoles[this.selects] : 'button';\n selectionSwatchActions.push((swatch) => {\n swatch.setAttribute('role', swatchRole);\n });\n return selectionSwatchActions;\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot\n @change=${this.handleChange}\n @slotchange=${this.manageChange}\n ></slot>\n `;\n }\n\n protected override willUpdate(changes: PropertyValues<this>): void {\n const swatchActions = [\n ...this.getPassthroughSwatchActions(changes),\n ...this.getSelectionSwatchActions(changes),\n ];\n\n // Create Swatch actions that build state to be applied later.\n const nextSelected = new Set(this.selected);\n const currentValues = new Set();\n if (changes.has('selected')) {\n swatchActions.push((swatch) => {\n currentValues.add(swatch.value);\n if (\n nextSelected.has(swatch.value) ||\n (!this.hasUpdated && swatch.selected)\n ) {\n swatch.selected = true;\n } else {\n swatch.selected = false;\n }\n });\n }\n\n // Do Swatch actions to each Swach in the collection.\n this.rovingTabindexController.elements.forEach((swatch) => {\n swatchActions.forEach((action) => {\n action(swatch);\n });\n });\n\n // Apply state built in actions back to the Swatch Group\n if (changes.has('selected')) {\n this.selected = [...nextSelected].filter((selectedValue) =>\n currentValues.has(selectedValue)\n );\n this.rovingTabindexController.clearElementCache();\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/*\nCopyright 2022 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n ElementSize,\n html,\n PropertyValues,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n queryAssignedElements,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { RovingTabindexController } from '@spectrum-web-components/reactive-controllers/src/RovingTabindex.js';\nimport { MutationController } from '@lit-labs/observers/mutation-controller.js';\n\nimport styles from './swatch-group.css.js';\nimport type {\n Swatch,\n SwatchBorder,\n SwatchRounding,\n SwatchShape,\n} from './Swatch.dev.js'\n\nexport type SwatchGroupSizes = Exclude<ElementSize, 'xxs' | 'xl' | 'xxl'>;\nexport type SwatchSelects = 'single' | 'multiple' | undefined;\n\n/**\n * @element sp-swatch-group\n *\n * @slot - Swatch elements to manage as a group\n */\nexport class SwatchGroup extends SizedMixin(SpectrumElement, {\n validSizes: ['xs', 's', 'm', 'l'],\n noDefaultSize: true,\n}) {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ reflect: true })\n public border: SwatchBorder;\n\n @property({ reflect: true })\n public density: 'compact' | 'spacious' | undefined;\n\n @property({ reflect: true })\n public rounding: SwatchRounding;\n\n @property({ type: Array })\n public get selected(): string[] {\n return this._selected;\n }\n\n public set selected(selected: string[]) {\n if (selected === this.selected) return;\n\n const oldSelected = this.selected;\n this._selected = selected;\n this.requestUpdate('selected', oldSelected);\n }\n\n // Specifically surface `_selected` internally so that change can be made to this value internally\n // without triggering the update lifecycle directly.\n private _selected: string[] = [];\n\n @property()\n public selects: SwatchSelects;\n\n private selectedSet = new Set<string>();\n\n @property({ reflect: true })\n public shape: SwatchShape;\n\n @queryAssignedElements({ flatten: true })\n public swatches!: Swatch[];\n\n constructor() {\n super();\n\n new MutationController(this, {\n config: {\n attributes: true,\n childList: true,\n subtree: true,\n },\n callback: () => {\n this.manageChange();\n },\n });\n }\n\n rovingTabindexController = new RovingTabindexController<Swatch>(this, {\n focusInIndex: (elements: Swatch[]) => {\n let firstEnabledIndex = -1;\n const firstSelectedIndex = elements.findIndex((el, index) => {\n if (!elements[firstEnabledIndex] && !el.disabled) {\n firstEnabledIndex = index;\n }\n return el.selected && !el.disabled;\n });\n return elements[firstSelectedIndex]\n ? firstSelectedIndex\n : firstEnabledIndex;\n },\n elements: () => this.swatches,\n isFocusableElement: (el: Swatch) => !el.disabled,\n });\n\n public override focus(options?: FocusOptions): void {\n this.rovingTabindexController.focus(options);\n }\n\n protected handleChange(event: Event & { target: Swatch }): void {\n event.stopPropagation();\n const oldSelected = this.selected;\n if (!this.selects) {\n event.preventDefault();\n return;\n }\n if (this.selects === 'single') {\n const { target } = event;\n target.tabIndex = 0;\n target.selected = true;\n if (this.selectedSet.has(target.value)) {\n return;\n }\n this.selectedSet.clear();\n this.selectedSet.add(target.value);\n this.rovingTabindexController.elements.forEach((child) => {\n if (child === target) return;\n child.selected = false;\n });\n } else if (this.selects === 'multiple') {\n const { target } = event;\n if (target.selected) {\n this.selectedSet.add(target.value);\n } else {\n this.selectedSet.delete(target.value);\n }\n }\n this._selected = [...this.selectedSet];\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n cancelable: true,\n bubbles: true,\n })\n );\n if (!applyDefault) {\n this._selected = oldSelected;\n event.preventDefault();\n }\n }\n\n private manageChange = async (): Promise<void> => {\n const presentSet = new Set();\n this.selectedSet = new Set(this.selected);\n await Promise.all(this.swatches.map((swatch) => swatch.updateComplete));\n this.swatches.forEach((swatch) => {\n presentSet.add(swatch.value);\n if (swatch.selected) {\n this.selectedSet.add(swatch.value);\n }\n });\n this.selectedSet.forEach((value) => {\n if (!presentSet.has(value)) {\n this.selectedSet.delete(value);\n }\n });\n this._selected = [...this.selectedSet];\n this.rovingTabindexController.clearElementCache();\n };\n\n private getPassthroughSwatchActions(\n changes: PropertyValues\n ): ((swatch: Swatch) => void)[] {\n const targetValues: {\n border?: SwatchBorder;\n rounding?: SwatchRounding;\n shape?: SwatchShape;\n size?: SwatchGroupSizes;\n selects?: SwatchSelects;\n } = {};\n if (\n changes.has('selects') &&\n (this.selects || typeof changes.get('selects') !== 'undefined')\n ) {\n targetValues.selects = this.selects;\n }\n if (\n changes.has('border') &&\n (this.border || typeof changes.get('border') !== 'undefined')\n ) {\n targetValues.border = this.border;\n }\n if (\n changes.has('rounding') &&\n (this.rounding || typeof changes.get('rounding') !== 'undefined')\n ) {\n targetValues.rounding = this.rounding;\n }\n if (\n changes.has('size') &&\n (this.size !== 'm' || typeof changes.get('size') !== 'undefined')\n ) {\n targetValues.size = this.size as SwatchGroupSizes;\n }\n if (\n changes.has('shape') &&\n (this.shape || typeof changes.get('shape') !== 'undefined')\n ) {\n targetValues.shape = this.shape;\n }\n const passThroughSwatchActions: ((swatch: Swatch) => void)[] = [];\n if (Object.keys(targetValues).length) {\n passThroughSwatchActions.push((swatch) => {\n if (window.__swc.DEBUG) {\n if (\n 'selects' in targetValues &&\n targetValues.selects !== 'multiple' &&\n swatch.mixedValue\n ) {\n window.__swc.warn(\n this,\n `<sp-swatch> elements can only leverage the \"mixed-value\" attribute when their <sp-swatch-group> parent element is also leveraging \"selects=\"multiple\"\"`,\n 'https://opensource.adobe.com/spectrum-web-components/components/swatch-group/#multiple',\n {\n type: 'accessibility',\n }\n );\n }\n }\n if ('border' in targetValues)\n swatch.border = targetValues.border;\n if ('rounding' in targetValues)\n swatch.rounding = targetValues.rounding;\n if ('shape' in targetValues) swatch.shape = targetValues.shape;\n if ('size' in targetValues)\n swatch.size = targetValues.size as SwatchGroupSizes;\n });\n }\n return passThroughSwatchActions;\n }\n\n private getSelectionSwatchActions(\n changes: PropertyValues\n ): ((swatch: Swatch) => void)[] {\n const selectionSwatchActions: ((swatch: Swatch) => void)[] = [];\n if (!changes.has('selects')) return selectionSwatchActions;\n if (this.selects) {\n this.setAttribute(\n 'role',\n this.selects === 'single' ? 'radiogroup' : 'group'\n );\n } else {\n this.removeAttribute('role');\n }\n const swatchRoles = {\n single: 'radio',\n multiple: 'checkbox',\n };\n const swatchRole = this.selects ? swatchRoles[this.selects] : 'button';\n selectionSwatchActions.push((swatch) => {\n swatch.setAttribute('role', swatchRole);\n });\n return selectionSwatchActions;\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot\n @change=${this.handleChange}\n @slotchange=${this.manageChange}\n ></slot>\n `;\n }\n\n protected override willUpdate(changes: PropertyValues<this>): void {\n const swatchActions = [\n ...this.getPassthroughSwatchActions(changes),\n ...this.getSelectionSwatchActions(changes),\n ];\n\n // Create Swatch actions that build state to be applied later.\n let nextSelected = new Set(this.selected);\n const currentValues = new Set();\n if (changes.has('selected')) {\n swatchActions.push((swatch) => {\n currentValues.add(swatch.value);\n if (\n nextSelected.has(swatch.value) ||\n (!this.hasUpdated && swatch.selected)\n ) {\n swatch.selected = true;\n } else {\n swatch.selected = false;\n }\n });\n }\n\n const doActions = (): void => {\n nextSelected = new Set(this.selected);\n\n // Do Swatch actions to each Swatch in the collection.\n this.swatches.forEach((swatch) => {\n swatchActions.forEach((action) => {\n action(swatch);\n });\n });\n\n // Apply state built in actions back to the Swatch Group\n if (changes.has('selected')) {\n this._selected = [...nextSelected.values()].filter(\n (selectedValue) => currentValues.has(selectedValue)\n );\n }\n };\n\n if (this.hasUpdated) {\n // Do actions immediately when the element has already updated.\n doActions();\n } else {\n // On first update wait for a `slotchange` event, which is not currently managed\n // by the element lifecycle before allowing Swatch actions to be commited.\n this.shadowRoot.addEventListener(\n 'slotchange',\n () => {\n requestAnimationFrame(doActions);\n },\n { once: true }\n );\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
- "use strict";var d=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var l=(c,a,e,t)=>{for(var i=t>1?void 0:t?h(a,e):a,s=c.length-1,r;s>=0;s--)(r=c[s])&&(i=(t?r(a,e,i):r(i))||i);return t&&i&&d(a,e,i),i};import{html as u,SizedMixin as p,SpectrumElement as S}from"@spectrum-web-components/base";import{property as o}from"@spectrum-web-components/base/src/decorators.js";import{RovingTabindexController as f}from"@spectrum-web-components/reactive-controllers/src/RovingTabindex.js";import{MutationController as g}from"@lit-labs/observers/mutation-controller.js";import w from"./swatch-group.css.js";export class SwatchGroup extends p(S,{validSizes:["xs","s","m","l"],noDefaultSize:!0}){constructor(){super();this.selected=[];this.selectedSet=new Set;this.rovingTabindexController=new f(this,{focusInIndex:e=>{let t=-1;const i=e.findIndex((s,r)=>(!e[t]&&!s.disabled&&(t=r),s.selected&&!s.disabled));return e[i]?i:t},elements:()=>[...this.children],isFocusableElement:e=>!e.disabled});this.manageChange=()=>{const e=new Set;this.selectedSet=new Set(this.selected),[...this.children].forEach(i=>{e.add(i.value),i.selected&&this.selectedSet.add(i.value)}),this.selectedSet.forEach(i=>{e.has(i)||this.selectedSet.delete(i)}),this.selected=[...this.selectedSet]};new g(this,{config:{attributes:!0,childList:!0,subtree:!0},callback:()=>{this.manageChange()}})}static get styles(){return[w]}focus(e){this.rovingTabindexController.focus(e)}handleChange(e){e.stopPropagation();const t=this.selected;if(!this.selects){e.preventDefault();return}if(this.selects==="single"){const{target:s}=e;if(s.tabIndex=0,s.selected=!0,this.selectedSet.has(s.value))return;this.selectedSet.clear(),this.selectedSet.add(s.value),this.rovingTabindexController.elements.forEach(r=>{r!==s&&(r.selected=!1)})}else if(this.selects==="multiple"){const{target:s}=e;s.selected?this.selectedSet.add(s.value):this.selectedSet.delete(s.value)}this.selected=[...this.selectedSet],this.dispatchEvent(new Event("change",{cancelable:!0,bubbles:!0}))||(this.selected=t,e.preventDefault())}getPassthroughSwatchActions(e){const t={};e.has("selects")&&(this.selects||typeof e.get("selects")!="undefined")&&(t.selects=this.selects),e.has("border")&&(this.border||typeof e.get("border")!="undefined")&&(t.border=this.border),e.has("rounding")&&(this.rounding||typeof e.get("rounding")!="undefined")&&(t.rounding=this.rounding),e.has("size")&&(this.size!=="m"||typeof e.get("size")!="undefined")&&(t.size=this.size),e.has("shape")&&(this.shape||typeof e.get("shape")!="undefined")&&(t.shape=this.shape);const i=[];return Object.keys(t).length&&i.push(s=>{"border"in t&&(s.border=t.border),"rounding"in t&&(s.rounding=t.rounding),"shape"in t&&(s.shape=t.shape),"size"in t&&(s.size=t.size)}),i}getSelectionSwatchActions(e){const t=[];if(!e.has("selects"))return t;this.selects?this.setAttribute("role",this.selects==="single"?"radiogroup":"group"):this.removeAttribute("role");const i={single:"radio",multiple:"checkbox"},s=this.selects?i[this.selects]:"button";return t.push(r=>{r.setAttribute("role",s)}),t}render(){return u`
1
+ "use strict";var h=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var a=(n,o,t,e)=>{for(var i=e>1?void 0:e?u(o,t):o,s=n.length-1,r;s>=0;s--)(r=n[s])&&(i=(e?r(o,t,i):r(i))||i);return e&&i&&h(o,t,i),i};import{html as p,SizedMixin as f,SpectrumElement as S}from"@spectrum-web-components/base";import{property as c,queryAssignedElements as g}from"@spectrum-web-components/base/src/decorators.js";import{RovingTabindexController as w}from"@spectrum-web-components/reactive-controllers/src/RovingTabindex.js";import{MutationController as m}from"@lit-labs/observers/mutation-controller.js";import b from"./swatch-group.css.js";export class SwatchGroup extends f(S,{validSizes:["xs","s","m","l"],noDefaultSize:!0}){constructor(){super();this._selected=[];this.selectedSet=new Set;this.rovingTabindexController=new w(this,{focusInIndex:t=>{let e=-1;const i=t.findIndex((s,r)=>(!t[e]&&!s.disabled&&(e=r),s.selected&&!s.disabled));return t[i]?i:e},elements:()=>this.swatches,isFocusableElement:t=>!t.disabled});this.manageChange=async()=>{const t=new Set;this.selectedSet=new Set(this.selected),await Promise.all(this.swatches.map(e=>e.updateComplete)),this.swatches.forEach(e=>{t.add(e.value),e.selected&&this.selectedSet.add(e.value)}),this.selectedSet.forEach(e=>{t.has(e)||this.selectedSet.delete(e)}),this._selected=[...this.selectedSet],this.rovingTabindexController.clearElementCache()};new m(this,{config:{attributes:!0,childList:!0,subtree:!0},callback:()=>{this.manageChange()}})}static get styles(){return[b]}get selected(){return this._selected}set selected(t){if(t===this.selected)return;const e=this.selected;this._selected=t,this.requestUpdate("selected",e)}focus(t){this.rovingTabindexController.focus(t)}handleChange(t){t.stopPropagation();const e=this.selected;if(!this.selects){t.preventDefault();return}if(this.selects==="single"){const{target:s}=t;if(s.tabIndex=0,s.selected=!0,this.selectedSet.has(s.value))return;this.selectedSet.clear(),this.selectedSet.add(s.value),this.rovingTabindexController.elements.forEach(r=>{r!==s&&(r.selected=!1)})}else if(this.selects==="multiple"){const{target:s}=t;s.selected?this.selectedSet.add(s.value):this.selectedSet.delete(s.value)}this._selected=[...this.selectedSet],this.dispatchEvent(new Event("change",{cancelable:!0,bubbles:!0}))||(this._selected=e,t.preventDefault())}getPassthroughSwatchActions(t){const e={};t.has("selects")&&(this.selects||typeof t.get("selects")!="undefined")&&(e.selects=this.selects),t.has("border")&&(this.border||typeof t.get("border")!="undefined")&&(e.border=this.border),t.has("rounding")&&(this.rounding||typeof t.get("rounding")!="undefined")&&(e.rounding=this.rounding),t.has("size")&&(this.size!=="m"||typeof t.get("size")!="undefined")&&(e.size=this.size),t.has("shape")&&(this.shape||typeof t.get("shape")!="undefined")&&(e.shape=this.shape);const i=[];return Object.keys(e).length&&i.push(s=>{"border"in e&&(s.border=e.border),"rounding"in e&&(s.rounding=e.rounding),"shape"in e&&(s.shape=e.shape),"size"in e&&(s.size=e.size)}),i}getSelectionSwatchActions(t){const e=[];if(!t.has("selects"))return e;this.selects?this.setAttribute("role",this.selects==="single"?"radiogroup":"group"):this.removeAttribute("role");const i={single:"radio",multiple:"checkbox"},s=this.selects?i[this.selects]:"button";return e.push(r=>{r.setAttribute("role",s)}),e}render(){return p`
2
2
  <slot
3
3
  @change=${this.handleChange}
4
4
  @slotchange=${this.manageChange}
5
5
  ></slot>
6
- `}willUpdate(e){const t=[...this.getPassthroughSwatchActions(e),...this.getSelectionSwatchActions(e)],i=new Set(this.selected),s=new Set;e.has("selected")&&t.push(r=>{s.add(r.value),i.has(r.value)||!this.hasUpdated&&r.selected?r.selected=!0:r.selected=!1}),this.rovingTabindexController.elements.forEach(r=>{t.forEach(n=>{n(r)})}),e.has("selected")&&(this.selected=[...i].filter(r=>s.has(r)),this.rovingTabindexController.clearElementCache())}}l([o({reflect:!0})],SwatchGroup.prototype,"border",2),l([o({reflect:!0})],SwatchGroup.prototype,"rounding",2),l([o({type:Array})],SwatchGroup.prototype,"selected",2),l([o()],SwatchGroup.prototype,"selects",2),l([o({reflect:!0})],SwatchGroup.prototype,"shape",2),l([o({reflect:!0})],SwatchGroup.prototype,"density",2);
6
+ `}willUpdate(t){const e=[...this.getPassthroughSwatchActions(t),...this.getSelectionSwatchActions(t)];let i=new Set(this.selected);const s=new Set;t.has("selected")&&e.push(l=>{s.add(l.value),i.has(l.value)||!this.hasUpdated&&l.selected?l.selected=!0:l.selected=!1});const r=()=>{i=new Set(this.selected),this.swatches.forEach(l=>{e.forEach(d=>{d(l)})}),t.has("selected")&&(this._selected=[...i.values()].filter(l=>s.has(l)))};this.hasUpdated?r():this.shadowRoot.addEventListener("slotchange",()=>{requestAnimationFrame(r)},{once:!0})}}a([c({reflect:!0})],SwatchGroup.prototype,"border",2),a([c({reflect:!0})],SwatchGroup.prototype,"density",2),a([c({reflect:!0})],SwatchGroup.prototype,"rounding",2),a([c({type:Array})],SwatchGroup.prototype,"selected",1),a([c()],SwatchGroup.prototype,"selects",2),a([c({reflect:!0})],SwatchGroup.prototype,"shape",2),a([g({flatten:!0})],SwatchGroup.prototype,"swatches",2);
7
7
  //# sourceMappingURL=SwatchGroup.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["SwatchGroup.ts"],
4
- "sourcesContent": ["/*\nCopyright 2022 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n ElementSize,\n html,\n PropertyValues,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport { RovingTabindexController } from '@spectrum-web-components/reactive-controllers/src/RovingTabindex.js';\nimport { MutationController } from '@lit-labs/observers/mutation-controller.js';\n\nimport styles from './swatch-group.css.js';\nimport type {\n Swatch,\n SwatchBorder,\n SwatchRounding,\n SwatchShape,\n} from './Swatch.js';\n\nexport type SwatchGroupSizes = Exclude<ElementSize, 'xxs' | 'xl' | 'xxl'>;\nexport type SwatchSelects = 'single' | 'multiple' | undefined;\n\n/**\n * @element sp-swatch-group\n *\n * @slot - Swatch elements to manage as a group\n */\nexport class SwatchGroup extends SizedMixin(SpectrumElement, {\n validSizes: ['xs', 's', 'm', 'l'],\n noDefaultSize: true,\n}) {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ reflect: true })\n public border: SwatchBorder;\n\n @property({ reflect: true })\n public rounding: SwatchRounding;\n\n @property({ type: Array })\n public selected: string[] = [];\n\n @property()\n public selects: SwatchSelects;\n\n private selectedSet = new Set<string>();\n\n @property({ reflect: true })\n public shape: SwatchShape;\n\n @property({ reflect: true })\n public density: 'compact' | 'spacious' | undefined;\n\n constructor() {\n super();\n\n new MutationController(this, {\n config: {\n attributes: true,\n childList: true,\n subtree: true,\n },\n callback: () => {\n this.manageChange();\n },\n });\n }\n\n rovingTabindexController = new RovingTabindexController<Swatch>(this, {\n focusInIndex: (elements: Swatch[]) => {\n let firstEnabledIndex = -1;\n const firstSelectedIndex = elements.findIndex((el, index) => {\n if (!elements[firstEnabledIndex] && !el.disabled) {\n firstEnabledIndex = index;\n }\n return el.selected && !el.disabled;\n });\n return elements[firstSelectedIndex]\n ? firstSelectedIndex\n : firstEnabledIndex;\n },\n elements: () => [...this.children] as Swatch[],\n isFocusableElement: (el: Swatch) => !el.disabled,\n });\n\n public override focus(options?: FocusOptions): void {\n this.rovingTabindexController.focus(options);\n }\n\n protected handleChange(event: Event & { target: Swatch }): void {\n event.stopPropagation();\n const oldSelected = this.selected;\n if (!this.selects) {\n event.preventDefault();\n return;\n }\n if (this.selects === 'single') {\n const { target } = event;\n target.tabIndex = 0;\n target.selected = true;\n if (this.selectedSet.has(target.value)) {\n return;\n }\n this.selectedSet.clear();\n this.selectedSet.add(target.value);\n this.rovingTabindexController.elements.forEach((child) => {\n if (child === target) return;\n child.selected = false;\n });\n } else if (this.selects === 'multiple') {\n const { target } = event;\n if (target.selected) {\n this.selectedSet.add(target.value);\n } else {\n this.selectedSet.delete(target.value);\n }\n }\n this.selected = [...this.selectedSet];\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n cancelable: true,\n bubbles: true,\n })\n );\n if (!applyDefault) {\n this.selected = oldSelected;\n event.preventDefault();\n }\n }\n\n private manageChange = (): void => {\n const presentSet = new Set();\n this.selectedSet = new Set(this.selected);\n const swatches = [...this.children] as Swatch[];\n swatches.forEach((swatch) => {\n presentSet.add(swatch.value);\n if (swatch.selected) {\n this.selectedSet.add(swatch.value);\n }\n });\n this.selectedSet.forEach((value) => {\n if (!presentSet.has(value)) {\n this.selectedSet.delete(value);\n }\n });\n this.selected = [...this.selectedSet];\n };\n\n private getPassthroughSwatchActions(\n changes: PropertyValues\n ): ((swatch: Swatch) => void)[] {\n const targetValues: {\n border?: SwatchBorder;\n rounding?: SwatchRounding;\n shape?: SwatchShape;\n size?: SwatchGroupSizes;\n selects?: SwatchSelects;\n } = {};\n if (\n changes.has('selects') &&\n (this.selects || typeof changes.get('selects') !== 'undefined')\n ) {\n targetValues.selects = this.selects;\n }\n if (\n changes.has('border') &&\n (this.border || typeof changes.get('border') !== 'undefined')\n ) {\n targetValues.border = this.border;\n }\n if (\n changes.has('rounding') &&\n (this.rounding || typeof changes.get('rounding') !== 'undefined')\n ) {\n targetValues.rounding = this.rounding;\n }\n if (\n changes.has('size') &&\n (this.size !== 'm' || typeof changes.get('size') !== 'undefined')\n ) {\n targetValues.size = this.size as SwatchGroupSizes;\n }\n if (\n changes.has('shape') &&\n (this.shape || typeof changes.get('shape') !== 'undefined')\n ) {\n targetValues.shape = this.shape;\n }\n const passThroughSwatchActions: ((swatch: Swatch) => void)[] = [];\n if (Object.keys(targetValues).length) {\n passThroughSwatchActions.push((swatch) => {\n if (window.__swc.DEBUG) {\n if (\n 'selects' in targetValues &&\n targetValues.selects !== 'multiple' &&\n swatch.mixedValue\n ) {\n window.__swc.warn(\n this,\n `<sp-swatch> elements can only leverage the \"mixed-value\" attribute when their <sp-swatch-group> parent element is also leveraging \"selects=\"multiple\"\"`,\n 'https://opensource.adobe.com/spectrum-web-components/components/swatch-group/#multiple',\n {\n type: 'accessibility',\n }\n );\n }\n }\n if ('border' in targetValues)\n swatch.border = targetValues.border;\n if ('rounding' in targetValues)\n swatch.rounding = targetValues.rounding;\n if ('shape' in targetValues) swatch.shape = targetValues.shape;\n if ('size' in targetValues)\n swatch.size = targetValues.size as SwatchGroupSizes;\n });\n }\n return passThroughSwatchActions;\n }\n\n private getSelectionSwatchActions(\n changes: PropertyValues\n ): ((swatch: Swatch) => void)[] {\n const selectionSwatchActions: ((swatch: Swatch) => void)[] = [];\n if (!changes.has('selects')) return selectionSwatchActions;\n if (this.selects) {\n this.setAttribute(\n 'role',\n this.selects === 'single' ? 'radiogroup' : 'group'\n );\n } else {\n this.removeAttribute('role');\n }\n const swatchRoles = {\n single: 'radio',\n multiple: 'checkbox',\n };\n const swatchRole = this.selects ? swatchRoles[this.selects] : 'button';\n selectionSwatchActions.push((swatch) => {\n swatch.setAttribute('role', swatchRole);\n });\n return selectionSwatchActions;\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot\n @change=${this.handleChange}\n @slotchange=${this.manageChange}\n ></slot>\n `;\n }\n\n protected override willUpdate(changes: PropertyValues<this>): void {\n const swatchActions = [\n ...this.getPassthroughSwatchActions(changes),\n ...this.getSelectionSwatchActions(changes),\n ];\n\n // Create Swatch actions that build state to be applied later.\n const nextSelected = new Set(this.selected);\n const currentValues = new Set();\n if (changes.has('selected')) {\n swatchActions.push((swatch) => {\n currentValues.add(swatch.value);\n if (\n nextSelected.has(swatch.value) ||\n (!this.hasUpdated && swatch.selected)\n ) {\n swatch.selected = true;\n } else {\n swatch.selected = false;\n }\n });\n }\n\n // Do Swatch actions to each Swach in the collection.\n this.rovingTabindexController.elements.forEach((swatch) => {\n swatchActions.forEach((action) => {\n action(swatch);\n });\n });\n\n // Apply state built in actions back to the Swatch Group\n if (changes.has('selected')) {\n this.selected = [...nextSelected].filter((selectedValue) =>\n currentValues.has(selectedValue)\n );\n this.rovingTabindexController.clearElementCache();\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["html", "SizedMixin", "SpectrumElement", "property", "RovingTabindexController", "MutationController", "styles", "elements", "firstEnabledIndex", "firstSelectedIndex", "el", "index", "presentSet", "swatch", "value", "options", "event", "oldSelected", "target", "child", "changes", "targetValues", "passThroughSwatchActions", "selectionSwatchActions", "swatchRoles", "swatchRole", "swatchActions", "nextSelected", "currentValues", "action", "selectedValue", "__decorateClass"]
4
+ "sourcesContent": ["/*\nCopyright 2022 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n ElementSize,\n html,\n PropertyValues,\n SizedMixin,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n queryAssignedElements,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { RovingTabindexController } from '@spectrum-web-components/reactive-controllers/src/RovingTabindex.js';\nimport { MutationController } from '@lit-labs/observers/mutation-controller.js';\n\nimport styles from './swatch-group.css.js';\nimport type {\n Swatch,\n SwatchBorder,\n SwatchRounding,\n SwatchShape,\n} from './Swatch.js';\n\nexport type SwatchGroupSizes = Exclude<ElementSize, 'xxs' | 'xl' | 'xxl'>;\nexport type SwatchSelects = 'single' | 'multiple' | undefined;\n\n/**\n * @element sp-swatch-group\n *\n * @slot - Swatch elements to manage as a group\n */\nexport class SwatchGroup extends SizedMixin(SpectrumElement, {\n validSizes: ['xs', 's', 'm', 'l'],\n noDefaultSize: true,\n}) {\n public static override get styles(): CSSResultArray {\n return [styles];\n }\n\n @property({ reflect: true })\n public border: SwatchBorder;\n\n @property({ reflect: true })\n public density: 'compact' | 'spacious' | undefined;\n\n @property({ reflect: true })\n public rounding: SwatchRounding;\n\n @property({ type: Array })\n public get selected(): string[] {\n return this._selected;\n }\n\n public set selected(selected: string[]) {\n if (selected === this.selected) return;\n\n const oldSelected = this.selected;\n this._selected = selected;\n this.requestUpdate('selected', oldSelected);\n }\n\n // Specifically surface `_selected` internally so that change can be made to this value internally\n // without triggering the update lifecycle directly.\n private _selected: string[] = [];\n\n @property()\n public selects: SwatchSelects;\n\n private selectedSet = new Set<string>();\n\n @property({ reflect: true })\n public shape: SwatchShape;\n\n @queryAssignedElements({ flatten: true })\n public swatches!: Swatch[];\n\n constructor() {\n super();\n\n new MutationController(this, {\n config: {\n attributes: true,\n childList: true,\n subtree: true,\n },\n callback: () => {\n this.manageChange();\n },\n });\n }\n\n rovingTabindexController = new RovingTabindexController<Swatch>(this, {\n focusInIndex: (elements: Swatch[]) => {\n let firstEnabledIndex = -1;\n const firstSelectedIndex = elements.findIndex((el, index) => {\n if (!elements[firstEnabledIndex] && !el.disabled) {\n firstEnabledIndex = index;\n }\n return el.selected && !el.disabled;\n });\n return elements[firstSelectedIndex]\n ? firstSelectedIndex\n : firstEnabledIndex;\n },\n elements: () => this.swatches,\n isFocusableElement: (el: Swatch) => !el.disabled,\n });\n\n public override focus(options?: FocusOptions): void {\n this.rovingTabindexController.focus(options);\n }\n\n protected handleChange(event: Event & { target: Swatch }): void {\n event.stopPropagation();\n const oldSelected = this.selected;\n if (!this.selects) {\n event.preventDefault();\n return;\n }\n if (this.selects === 'single') {\n const { target } = event;\n target.tabIndex = 0;\n target.selected = true;\n if (this.selectedSet.has(target.value)) {\n return;\n }\n this.selectedSet.clear();\n this.selectedSet.add(target.value);\n this.rovingTabindexController.elements.forEach((child) => {\n if (child === target) return;\n child.selected = false;\n });\n } else if (this.selects === 'multiple') {\n const { target } = event;\n if (target.selected) {\n this.selectedSet.add(target.value);\n } else {\n this.selectedSet.delete(target.value);\n }\n }\n this._selected = [...this.selectedSet];\n const applyDefault = this.dispatchEvent(\n new Event('change', {\n cancelable: true,\n bubbles: true,\n })\n );\n if (!applyDefault) {\n this._selected = oldSelected;\n event.preventDefault();\n }\n }\n\n private manageChange = async (): Promise<void> => {\n const presentSet = new Set();\n this.selectedSet = new Set(this.selected);\n await Promise.all(this.swatches.map((swatch) => swatch.updateComplete));\n this.swatches.forEach((swatch) => {\n presentSet.add(swatch.value);\n if (swatch.selected) {\n this.selectedSet.add(swatch.value);\n }\n });\n this.selectedSet.forEach((value) => {\n if (!presentSet.has(value)) {\n this.selectedSet.delete(value);\n }\n });\n this._selected = [...this.selectedSet];\n this.rovingTabindexController.clearElementCache();\n };\n\n private getPassthroughSwatchActions(\n changes: PropertyValues\n ): ((swatch: Swatch) => void)[] {\n const targetValues: {\n border?: SwatchBorder;\n rounding?: SwatchRounding;\n shape?: SwatchShape;\n size?: SwatchGroupSizes;\n selects?: SwatchSelects;\n } = {};\n if (\n changes.has('selects') &&\n (this.selects || typeof changes.get('selects') !== 'undefined')\n ) {\n targetValues.selects = this.selects;\n }\n if (\n changes.has('border') &&\n (this.border || typeof changes.get('border') !== 'undefined')\n ) {\n targetValues.border = this.border;\n }\n if (\n changes.has('rounding') &&\n (this.rounding || typeof changes.get('rounding') !== 'undefined')\n ) {\n targetValues.rounding = this.rounding;\n }\n if (\n changes.has('size') &&\n (this.size !== 'm' || typeof changes.get('size') !== 'undefined')\n ) {\n targetValues.size = this.size as SwatchGroupSizes;\n }\n if (\n changes.has('shape') &&\n (this.shape || typeof changes.get('shape') !== 'undefined')\n ) {\n targetValues.shape = this.shape;\n }\n const passThroughSwatchActions: ((swatch: Swatch) => void)[] = [];\n if (Object.keys(targetValues).length) {\n passThroughSwatchActions.push((swatch) => {\n if (window.__swc.DEBUG) {\n if (\n 'selects' in targetValues &&\n targetValues.selects !== 'multiple' &&\n swatch.mixedValue\n ) {\n window.__swc.warn(\n this,\n `<sp-swatch> elements can only leverage the \"mixed-value\" attribute when their <sp-swatch-group> parent element is also leveraging \"selects=\"multiple\"\"`,\n 'https://opensource.adobe.com/spectrum-web-components/components/swatch-group/#multiple',\n {\n type: 'accessibility',\n }\n );\n }\n }\n if ('border' in targetValues)\n swatch.border = targetValues.border;\n if ('rounding' in targetValues)\n swatch.rounding = targetValues.rounding;\n if ('shape' in targetValues) swatch.shape = targetValues.shape;\n if ('size' in targetValues)\n swatch.size = targetValues.size as SwatchGroupSizes;\n });\n }\n return passThroughSwatchActions;\n }\n\n private getSelectionSwatchActions(\n changes: PropertyValues\n ): ((swatch: Swatch) => void)[] {\n const selectionSwatchActions: ((swatch: Swatch) => void)[] = [];\n if (!changes.has('selects')) return selectionSwatchActions;\n if (this.selects) {\n this.setAttribute(\n 'role',\n this.selects === 'single' ? 'radiogroup' : 'group'\n );\n } else {\n this.removeAttribute('role');\n }\n const swatchRoles = {\n single: 'radio',\n multiple: 'checkbox',\n };\n const swatchRole = this.selects ? swatchRoles[this.selects] : 'button';\n selectionSwatchActions.push((swatch) => {\n swatch.setAttribute('role', swatchRole);\n });\n return selectionSwatchActions;\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot\n @change=${this.handleChange}\n @slotchange=${this.manageChange}\n ></slot>\n `;\n }\n\n protected override willUpdate(changes: PropertyValues<this>): void {\n const swatchActions = [\n ...this.getPassthroughSwatchActions(changes),\n ...this.getSelectionSwatchActions(changes),\n ];\n\n // Create Swatch actions that build state to be applied later.\n let nextSelected = new Set(this.selected);\n const currentValues = new Set();\n if (changes.has('selected')) {\n swatchActions.push((swatch) => {\n currentValues.add(swatch.value);\n if (\n nextSelected.has(swatch.value) ||\n (!this.hasUpdated && swatch.selected)\n ) {\n swatch.selected = true;\n } else {\n swatch.selected = false;\n }\n });\n }\n\n const doActions = (): void => {\n nextSelected = new Set(this.selected);\n\n // Do Swatch actions to each Swatch in the collection.\n this.swatches.forEach((swatch) => {\n swatchActions.forEach((action) => {\n action(swatch);\n });\n });\n\n // Apply state built in actions back to the Swatch Group\n if (changes.has('selected')) {\n this._selected = [...nextSelected.values()].filter(\n (selectedValue) => currentValues.has(selectedValue)\n );\n }\n };\n\n if (this.hasUpdated) {\n // Do actions immediately when the element has already updated.\n doActions();\n } else {\n // On first update wait for a `slotchange` event, which is not currently managed\n // by the element lifecycle before allowing Swatch actions to be commited.\n this.shadowRoot.addEventListener(\n 'slotchange',\n () => {\n requestAnimationFrame(doActions);\n },\n { once: true }\n );\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["html", "SizedMixin", "SpectrumElement", "property", "queryAssignedElements", "RovingTabindexController", "MutationController", "styles", "elements", "firstEnabledIndex", "firstSelectedIndex", "el", "index", "presentSet", "swatch", "value", "selected", "oldSelected", "options", "event", "target", "child", "changes", "targetValues", "passThroughSwatchActions", "selectionSwatchActions", "swatchRoles", "swatchRole", "swatchActions", "nextSelected", "currentValues", "doActions", "action", "selectedValue", "__decorateClass"]
7
7
  }
@@ -1,13 +1,7 @@
1
1
  "use strict";
2
2
  import { css } from "@spectrum-web-components/base";
3
3
  const styles = css`
4
- :host{--spectrum-swatchgroup-spacing-compact:var(--spectrum-spacing-50);--spectrum-swatchgroup-spacing-regular:var(--spectrum-spacing-75);--spectrum-swatchgroup-spacing-spacious:var(--spectrum-spacing-100);align-items:flex-start;display:inline-flex;flex-flow:wrap;gap:var(
5
- --mod-swatchgroup-spacing-regular,var(--spectrum-swatchgroup-spacing-regular)
6
- );justify-content:flex-start}:host([density=compact]){gap:var(
7
- --mod-swatchgroup-spacing-compact,var(--spectrum-swatchgroup-spacing-compact)
8
- )}:host([density=spacious]){gap:var(
9
- --mod-swatchgroup-spacing-spacious,var(--spectrum-swatchgroup-spacing-spacious)
10
- )}
4
+ :host{--spectrum-swatchgroup-spacing-compact:var(--spectrum-spacing-50);--spectrum-swatchgroup-spacing-regular:var(--spectrum-spacing-75);--spectrum-swatchgroup-spacing-spacious:var(--spectrum-spacing-100);justify-content:flex-start;align-items:flex-start;gap:var(--mod-swatchgroup-spacing-regular,var(--spectrum-swatchgroup-spacing-regular));flex-flow:wrap;display:inline-flex}:host([density=compact]){gap:var(--mod-swatchgroup-spacing-compact,var(--spectrum-swatchgroup-spacing-compact))}:host([density=spacious]){gap:var(--mod-swatchgroup-spacing-spacious,var(--spectrum-swatchgroup-spacing-spacious))}
11
5
  `;
12
6
  export default styles;
13
7
  //# sourceMappingURL=spectrum-swatch-group.css.dev.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["spectrum-swatch-group.css.ts"],
4
- "sourcesContent": ["/*\nCopyright 2024 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n:host{--spectrum-swatchgroup-spacing-compact:var(--spectrum-spacing-50);--spectrum-swatchgroup-spacing-regular:var(--spectrum-spacing-75);--spectrum-swatchgroup-spacing-spacious:var(--spectrum-spacing-100);align-items:flex-start;display:inline-flex;flex-flow:wrap;gap:var(\n--mod-swatchgroup-spacing-regular,var(--spectrum-swatchgroup-spacing-regular)\n);justify-content:flex-start}:host([density=compact]){gap:var(\n--mod-swatchgroup-spacing-compact,var(--spectrum-swatchgroup-spacing-compact)\n)}:host([density=spacious]){gap:var(\n--mod-swatchgroup-spacing-spacious,var(--spectrum-swatchgroup-spacing-spacious)\n)}\n`;\nexport default styles;"],
5
- "mappings": ";AAWA,SAAS,WAAW;AACpB,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASf,eAAe;",
4
+ "sourcesContent": ["/*\nCopyright 2024 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n :host{--spectrum-swatchgroup-spacing-compact:var(--spectrum-spacing-50);--spectrum-swatchgroup-spacing-regular:var(--spectrum-spacing-75);--spectrum-swatchgroup-spacing-spacious:var(--spectrum-spacing-100);justify-content:flex-start;align-items:flex-start;gap:var(--mod-swatchgroup-spacing-regular,var(--spectrum-swatchgroup-spacing-regular));flex-flow:wrap;display:inline-flex}:host([density=compact]){gap:var(--mod-swatchgroup-spacing-compact,var(--spectrum-swatchgroup-spacing-compact))}:host([density=spacious]){gap:var(--mod-swatchgroup-spacing-spacious,var(--spectrum-swatchgroup-spacing-spacious))}\n`;\nexport default styles;"],
5
+ "mappings": ";AAWA,SAAS,WAAW;AACpB,MAAM,SAAS;AAAA;AAAA;AAGf,eAAe;",
6
6
  "names": []
7
7
  }
@@ -1,10 +1,4 @@
1
1
  "use strict";import{css as s}from"@spectrum-web-components/base";const a=s`
2
- :host{--spectrum-swatchgroup-spacing-compact:var(--spectrum-spacing-50);--spectrum-swatchgroup-spacing-regular:var(--spectrum-spacing-75);--spectrum-swatchgroup-spacing-spacious:var(--spectrum-spacing-100);align-items:flex-start;display:inline-flex;flex-flow:wrap;gap:var(
3
- --mod-swatchgroup-spacing-regular,var(--spectrum-swatchgroup-spacing-regular)
4
- );justify-content:flex-start}:host([density=compact]){gap:var(
5
- --mod-swatchgroup-spacing-compact,var(--spectrum-swatchgroup-spacing-compact)
6
- )}:host([density=spacious]){gap:var(
7
- --mod-swatchgroup-spacing-spacious,var(--spectrum-swatchgroup-spacing-spacious)
8
- )}
2
+ :host{--spectrum-swatchgroup-spacing-compact:var(--spectrum-spacing-50);--spectrum-swatchgroup-spacing-regular:var(--spectrum-spacing-75);--spectrum-swatchgroup-spacing-spacious:var(--spectrum-spacing-100);justify-content:flex-start;align-items:flex-start;gap:var(--mod-swatchgroup-spacing-regular,var(--spectrum-swatchgroup-spacing-regular));flex-flow:wrap;display:inline-flex}:host([density=compact]){gap:var(--mod-swatchgroup-spacing-compact,var(--spectrum-swatchgroup-spacing-compact))}:host([density=spacious]){gap:var(--mod-swatchgroup-spacing-spacious,var(--spectrum-swatchgroup-spacing-spacious))}
9
3
  `;export default a;
10
4
  //# sourceMappingURL=spectrum-swatch-group.css.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["spectrum-swatch-group.css.ts"],
4
- "sourcesContent": ["/*\nCopyright 2024 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n:host{--spectrum-swatchgroup-spacing-compact:var(--spectrum-spacing-50);--spectrum-swatchgroup-spacing-regular:var(--spectrum-spacing-75);--spectrum-swatchgroup-spacing-spacious:var(--spectrum-spacing-100);align-items:flex-start;display:inline-flex;flex-flow:wrap;gap:var(\n--mod-swatchgroup-spacing-regular,var(--spectrum-swatchgroup-spacing-regular)\n);justify-content:flex-start}:host([density=compact]){gap:var(\n--mod-swatchgroup-spacing-compact,var(--spectrum-swatchgroup-spacing-compact)\n)}:host([density=spacious]){gap:var(\n--mod-swatchgroup-spacing-spacious,var(--spectrum-swatchgroup-spacing-spacious)\n)}\n`;\nexport default styles;"],
5
- "mappings": "aAWA,OAAS,OAAAA,MAAW,gCACpB,MAAMC,EAASD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASf,eAAeC",
4
+ "sourcesContent": ["/*\nCopyright 2024 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\nimport { css } from '@spectrum-web-components/base';\nconst styles = css`\n :host{--spectrum-swatchgroup-spacing-compact:var(--spectrum-spacing-50);--spectrum-swatchgroup-spacing-regular:var(--spectrum-spacing-75);--spectrum-swatchgroup-spacing-spacious:var(--spectrum-spacing-100);justify-content:flex-start;align-items:flex-start;gap:var(--mod-swatchgroup-spacing-regular,var(--spectrum-swatchgroup-spacing-regular));flex-flow:wrap;display:inline-flex}:host([density=compact]){gap:var(--mod-swatchgroup-spacing-compact,var(--spectrum-swatchgroup-spacing-compact))}:host([density=spacious]){gap:var(--mod-swatchgroup-spacing-spacious,var(--spectrum-swatchgroup-spacing-spacious))}\n`;\nexport default styles;"],
5
+ "mappings": "aAWA,OAAS,OAAAA,MAAW,gCACpB,MAAMC,EAASD;AAAA;AAAA,EAGf,eAAeC",
6
6
  "names": ["css", "styles"]
7
7
  }