@spectrum-web-components/tabs 0.9.0 → 0.9.1

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.
Files changed (74) hide show
  1. package/README.md +154 -36
  2. package/custom-elements.json +41 -13
  3. package/package.json +3 -2
  4. package/sp-tab-panel.dev.js +1 -0
  5. package/sp-tab-panel.dev.js.map +1 -1
  6. package/sp-tab-panel.js +1 -1
  7. package/sp-tab-panel.js.map +2 -2
  8. package/sp-tab.dev.js +1 -0
  9. package/sp-tab.dev.js.map +1 -1
  10. package/sp-tab.js +1 -1
  11. package/sp-tab.js.map +2 -2
  12. package/sp-tabs.dev.js +1 -0
  13. package/sp-tabs.dev.js.map +1 -1
  14. package/sp-tabs.js +1 -1
  15. package/sp-tabs.js.map +2 -2
  16. package/src/Tab.dev.js +18 -7
  17. package/src/Tab.dev.js.map +1 -1
  18. package/src/Tab.js +5 -5
  19. package/src/Tab.js.map +2 -2
  20. package/src/TabPanel.dev.js +1 -0
  21. package/src/TabPanel.dev.js.map +1 -1
  22. package/src/TabPanel.js +2 -2
  23. package/src/TabPanel.js.map +2 -2
  24. package/src/Tabs.d.ts +9 -2
  25. package/src/Tabs.dev.js +52 -12
  26. package/src/Tabs.dev.js.map +2 -2
  27. package/src/Tabs.js +4 -4
  28. package/src/Tabs.js.map +3 -3
  29. package/src/index.dev.js +1 -0
  30. package/src/index.dev.js.map +1 -1
  31. package/src/index.js +1 -1
  32. package/src/index.js.map +1 -1
  33. package/src/spectrum-tab.css.dev.js +1 -0
  34. package/src/spectrum-tab.css.dev.js.map +1 -1
  35. package/src/spectrum-tab.css.js +1 -1
  36. package/src/spectrum-tab.css.js.map +2 -2
  37. package/src/spectrum-tabs.css.dev.js +1 -0
  38. package/src/spectrum-tabs.css.dev.js.map +1 -1
  39. package/src/spectrum-tabs.css.js +1 -1
  40. package/src/spectrum-tabs.css.js.map +2 -2
  41. package/src/tab-panel.css.dev.js +1 -0
  42. package/src/tab-panel.css.dev.js.map +1 -1
  43. package/src/tab-panel.css.js +1 -1
  44. package/src/tab-panel.css.js.map +2 -2
  45. package/src/tab.css.dev.js +1 -0
  46. package/src/tab.css.dev.js.map +1 -1
  47. package/src/tab.css.js +1 -1
  48. package/src/tab.css.js.map +2 -2
  49. package/src/tabs.css.dev.js +2 -1
  50. package/src/tabs.css.dev.js.map +2 -2
  51. package/src/tabs.css.js +2 -2
  52. package/src/tabs.css.js.map +3 -3
  53. package/stories/tabs-horizontal-sizes.stories.js +77 -7
  54. package/stories/tabs-horizontal-sizes.stories.js.map +1 -1
  55. package/stories/tabs-vertical-right-sizes.stories.js +74 -7
  56. package/stories/tabs-vertical-right-sizes.stories.js.map +1 -1
  57. package/stories/tabs-vertical-sizes.stories.js +74 -7
  58. package/stories/tabs-vertical-sizes.stories.js.map +1 -1
  59. package/stories/tabs.stories.js +279 -75
  60. package/stories/tabs.stories.js.map +2 -2
  61. package/test/benchmark/basic-test.js +6 -1
  62. package/test/benchmark/basic-test.js.map +1 -1
  63. package/test/tab.test.js +37 -4
  64. package/test/tab.test.js.map +1 -1
  65. package/test/tabs-horizontal-sizes.test-vrt.js +4 -1
  66. package/test/tabs-horizontal-sizes.test-vrt.js.map +1 -1
  67. package/test/tabs-vertical-right-sizes.test-vrt.js +4 -1
  68. package/test/tabs-vertical-right-sizes.test-vrt.js.map +1 -1
  69. package/test/tabs-vertical-sizes.test-vrt.js +4 -1
  70. package/test/tabs-vertical-sizes.test-vrt.js.map +1 -1
  71. package/test/tabs.test-vrt.js +4 -1
  72. package/test/tabs.test-vrt.js.map +1 -1
  73. package/test/tabs.test.js +428 -17
  74. package/test/tabs.test.js.map +1 -1
package/README.md CHANGED
@@ -103,11 +103,36 @@ import {
103
103
  </sp-tab-panel>
104
104
  </sp-tabs>
105
105
 
106
- ### Disabled
106
+ ## Horizontal Tabs
107
+
108
+ An `<sp-tabs>` element will display horizontally by default. It can be modified with states like `compact`, `disabled`, and `quiet`, or with content like icons, etc.
109
+
110
+ <sp-tabs selected="compact" auto label="Horizontal Tabs variants">
111
+ <sp-tab value="compact">Compact</sp-tab>
112
+ <sp-tab-panel value="compact">
113
+
114
+ Compact tabs should never be used without the quiet variation. Please use Quiet + Compact Tabs instead.
115
+
116
+ ```html demo
117
+ <sp-tabs selected="1" compact>
118
+ <sp-tab label="Tab 1" value="1"></sp-tab>
119
+ <sp-tab label="Tab 2" value="2"></sp-tab>
120
+ <sp-tab label="Tab 3" value="3"></sp-tab>
121
+ <sp-tab label="Tab 4" value="4"></sp-tab>
122
+ <sp-tab-panel value="1">Content for Tab 1</sp-tab-panel>
123
+ <sp-tab-panel value="2">Content for Tab 2</sp-tab-panel>
124
+ <sp-tab-panel value="3">Content for Tab 3</sp-tab-panel>
125
+ <sp-tab-panel value="4">Content for Tab 4</sp-tab-panel>
126
+ </sp-tabs>
127
+ ```
128
+
129
+ </sp-tab-panel>
130
+ <sp-tab value="disabled">Disabled</sp-tab>
131
+ <sp-tab-panel value="disabled">
107
132
 
108
133
  When an `<sp-tabs>` element is given the `disabled` attribute its `<sp-tab>` children will be disabled as well, preventing a visitor from changing the selected tab. By default, `<sp-tab-panel>` children will not be addressed and the available content of the currently selected tab will be fully visible.
109
134
 
110
- ```html
135
+ ```html demo
111
136
  <sp-tabs selected="2" disabled>
112
137
  <sp-tab label="Tab 1" value="1"></sp-tab>
113
138
  <sp-tab label="Tab 2" value="2"></sp-tab>
@@ -120,10 +145,37 @@ When an `<sp-tabs>` element is given the `disabled` attribute its `<sp-tab>` chi
120
145
  </sp-tabs>
121
146
  ```
122
147
 
123
- ### Vertical
148
+ </sp-tab-panel>
149
+ <sp-tab value="icons">Icons</sp-tab>
150
+ <sp-tab-panel value="icons">
124
151
 
125
- ```html
126
- <sp-tabs selected="1" direction="vertical">
152
+ ```html demo
153
+ <sp-tabs selected="1">
154
+ <sp-tab label="Tab 1" value="1">
155
+ <sp-icon-checkmark slot="icon"></sp-icon-checkmark>
156
+ </sp-tab>
157
+ <sp-tab label="Tab 2" value="2">
158
+ <sp-icon-close slot="icon"></sp-icon-close>
159
+ </sp-tab>
160
+ <sp-tab label="Tab 3" value="3">
161
+ <sp-icon-chevron-down slot="icon"></sp-icon-chevron-down>
162
+ </sp-tab>
163
+ <sp-tab label="Tab 4" value="4">
164
+ <sp-icon-help slot="icon"></sp-icon-help>
165
+ </sp-tab>
166
+ <sp-tab-panel value="1">Content for Tab 1</sp-tab-panel>
167
+ <sp-tab-panel value="2">Content for Tab 2</sp-tab-panel>
168
+ <sp-tab-panel value="3">Content for Tab 3</sp-tab-panel>
169
+ <sp-tab-panel value="4">Content for Tab 4</sp-tab-panel>
170
+ </sp-tabs>
171
+ ```
172
+
173
+ </sp-tab-panel>
174
+ <sp-tab value="quiet">Quiet</sp-tab>
175
+ <sp-tab-panel value="quiet">
176
+
177
+ ```html demo
178
+ <sp-tabs selected="1" quiet>
127
179
  <sp-tab label="Tab 1" value="1"></sp-tab>
128
180
  <sp-tab label="Tab 2" value="2"></sp-tab>
129
181
  <sp-tab label="Tab 3" value="3"></sp-tab>
@@ -135,12 +187,38 @@ When an `<sp-tabs>` element is given the `disabled` attribute its `<sp-tab>` chi
135
187
  </sp-tabs>
136
188
  ```
137
189
 
138
- ## Variants
190
+ </sp-tab-panel>
191
+ <sp-tab value="quiet+compact">Quiet + Compact</sp-tab>
192
+ <sp-tab-panel value="quiet+compact">
139
193
 
140
- ### Quiet
194
+ ```html demo
195
+ <sp-tabs selected="1" quiet compact>
196
+ <sp-tab label="Tab 1" value="1"></sp-tab>
197
+ <sp-tab label="Tab 2" value="2"></sp-tab>
198
+ <sp-tab label="Tab 3" value="3"></sp-tab>
199
+ <sp-tab label="Tab 4" value="4"></sp-tab>
200
+ <sp-tab-panel value="1">Content for Tab 1</sp-tab-panel>
201
+ <sp-tab-panel value="2">Content for Tab 2</sp-tab-panel>
202
+ <sp-tab-panel value="3">Content for Tab 3</sp-tab-panel>
203
+ <sp-tab-panel value="4">Content for Tab 4</sp-tab-panel>
204
+ </sp-tabs>
205
+ ```
141
206
 
142
- ```html
143
- <sp-tabs selected="1" quiet>
207
+ </sp-tab-panel>
208
+ </sp-tabs>
209
+
210
+ ## Vertical Tabs
211
+
212
+ An `<sp-tabs>` element will display horizontally by default. It can be modified with states like `compact`, `disabled`, and `quiet`, or with content like icons, etc.
213
+
214
+ <sp-tabs selected="compact" auto label="Horizontal Tabs variants">
215
+ <sp-tab value="compact">Compact</sp-tab>
216
+ <sp-tab-panel value="compact">
217
+
218
+ Compact tabs should never be used without the quiet variation. Please use Quiet + Compact Tabs instead.
219
+
220
+ ```html demo
221
+ <sp-tabs selected="1" compact direction="vertical">
144
222
  <sp-tab label="Tab 1" value="1"></sp-tab>
145
223
  <sp-tab label="Tab 2" value="2"></sp-tab>
146
224
  <sp-tab label="Tab 3" value="3"></sp-tab>
@@ -152,14 +230,43 @@ When an `<sp-tabs>` element is given the `disabled` attribute its `<sp-tab>` chi
152
230
  </sp-tabs>
153
231
  ```
154
232
 
155
- ### Compact
233
+ </sp-tab-panel>
234
+ <sp-tab value="disabled">Disabled</sp-tab>
235
+ <sp-tab-panel value="disabled">
156
236
 
157
- ```html
158
- <sp-tabs selected="1" compact>
237
+ When an `<sp-tabs>` element is given the `disabled` attribute its `<sp-tab>` children will be disabled as well, preventing a visitor from changing the selected tab. By default, `<sp-tab-panel>` children will not be addressed and the available content of the currently selected tab will be fully visible.
238
+
239
+ ```html demo
240
+ <sp-tabs selected="2" disabled direction="vertical">
159
241
  <sp-tab label="Tab 1" value="1"></sp-tab>
160
242
  <sp-tab label="Tab 2" value="2"></sp-tab>
161
243
  <sp-tab label="Tab 3" value="3"></sp-tab>
162
244
  <sp-tab label="Tab 4" value="4"></sp-tab>
245
+ <sp-tab-panel value="1">Content for Tab 1 is not selectable</sp-tab-panel>
246
+ <sp-tab-panel value="2">Content for Tab 2 is selected</sp-tab-panel>
247
+ <sp-tab-panel value="3">Content for Tab 3 is not selectable</sp-tab-panel>
248
+ <sp-tab-panel value="4">Content for Tab 4 is not selectable</sp-tab-panel>
249
+ </sp-tabs>
250
+ ```
251
+
252
+ </sp-tab-panel>
253
+ <sp-tab value="icons">Icons</sp-tab>
254
+ <sp-tab-panel value="icons">
255
+
256
+ ```html demo
257
+ <sp-tabs selected="1" direction="vertical">
258
+ <sp-tab label="Tab 1" value="1">
259
+ <sp-icon-checkmark slot="icon"></sp-icon-checkmark>
260
+ </sp-tab>
261
+ <sp-tab label="Tab 2" value="2">
262
+ <sp-icon-close slot="icon"></sp-icon-close>
263
+ </sp-tab>
264
+ <sp-tab label="Tab 3" value="3">
265
+ <sp-icon-chevron-down slot="icon"></sp-icon-chevron-down>
266
+ </sp-tab>
267
+ <sp-tab label="Tab 4" value="4">
268
+ <sp-icon-help slot="icon"></sp-icon-help>
269
+ </sp-tab>
163
270
  <sp-tab-panel value="1">Content for Tab 1</sp-tab-panel>
164
271
  <sp-tab-panel value="2">Content for Tab 2</sp-tab-panel>
165
272
  <sp-tab-panel value="3">Content for Tab 3</sp-tab-panel>
@@ -167,32 +274,43 @@ When an `<sp-tabs>` element is given the `disabled` attribute its `<sp-tab>` chi
167
274
  </sp-tabs>
168
275
  ```
169
276
 
170
- ## With icons
171
-
172
- ```html
173
- <div>
174
- <sp-icons-medium></sp-icons-medium>
175
- <sp-tabs selected="1" direction="horizontal">
176
- <sp-tab label="Tab 1" value="1">
177
- <sp-icon-checkmark slot="icon"></sp-icon-checkmark>
178
- </sp-tab>
179
- <sp-tab label="Tab 2" value="2">
180
- <sp-icon-close slot="icon"></sp-icon-close>
181
- </sp-tab>
182
- <sp-tab label="Tab 3" value="3">
183
- <sp-icon-chevron-down slot="icon"></sp-icon-chevron-down>
184
- </sp-tab>
185
- <sp-tab label="Tab 4" value="4">
186
- <sp-icon-help slot="icon"></sp-icon-help>
187
- </sp-tab>
188
- <sp-tab-panel value="1">Content for Tab 1</sp-tab-panel>
189
- <sp-tab-panel value="2">Content for Tab 2</sp-tab-panel>
190
- <sp-tab-panel value="3">Content for Tab 3</sp-tab-panel>
191
- <sp-tab-panel value="4">Content for Tab 4</sp-tab-panel>
192
- </sp-tabs>
193
- </div>
277
+ </sp-tab-panel>
278
+ <sp-tab value="quiet">Quiet</sp-tab>
279
+ <sp-tab-panel value="quiet">
280
+
281
+ ```html demo
282
+ <sp-tabs selected="1" quiet direction="vertical">
283
+ <sp-tab label="Tab 1" value="1"></sp-tab>
284
+ <sp-tab label="Tab 2" value="2"></sp-tab>
285
+ <sp-tab label="Tab 3" value="3"></sp-tab>
286
+ <sp-tab label="Tab 4" value="4"></sp-tab>
287
+ <sp-tab-panel value="1">Content for Tab 1</sp-tab-panel>
288
+ <sp-tab-panel value="2">Content for Tab 2</sp-tab-panel>
289
+ <sp-tab-panel value="3">Content for Tab 3</sp-tab-panel>
290
+ <sp-tab-panel value="4">Content for Tab 4</sp-tab-panel>
291
+ </sp-tabs>
292
+ ```
293
+
294
+ </sp-tab-panel>
295
+ <sp-tab value="quiet+compact">Quiet + Compact</sp-tab>
296
+ <sp-tab-panel value="quiet+compact">
297
+
298
+ ```html demo
299
+ <sp-tabs selected="1" quiet compact direction="vertical">
300
+ <sp-tab label="Tab 1" value="1"></sp-tab>
301
+ <sp-tab label="Tab 2" value="2"></sp-tab>
302
+ <sp-tab label="Tab 3" value="3"></sp-tab>
303
+ <sp-tab label="Tab 4" value="4"></sp-tab>
304
+ <sp-tab-panel value="1">Content for Tab 1</sp-tab-panel>
305
+ <sp-tab-panel value="2">Content for Tab 2</sp-tab-panel>
306
+ <sp-tab-panel value="3">Content for Tab 3</sp-tab-panel>
307
+ <sp-tab-panel value="4">Content for Tab 4</sp-tab-panel>
308
+ </sp-tabs>
194
309
  ```
195
310
 
311
+ </sp-tab-panel>
312
+ </sp-tabs>
313
+
196
314
  ## Accessibility
197
315
 
198
316
  When an `<sp-tabs>` has a `selected` value, the `<sp-tab>` child of that `value` will be given `[tabindex="0"]` and will receive initial focus when tabbing into the `<sp-tabs>` element. When no `selected` value is present, the first `<sp-tab>` child will be treated in this way. When focus is currently within the `<sp-tabs>` element, the left and right arrows will move that focus back and forth through the available `<sp-tab>` children.
@@ -363,6 +363,18 @@
363
363
  "description": "Whether to activate a tab on keyboard focus or not.\n\nBy default a tab is activated via a \"click\" interaction. This is specifically intended for when\ntab content cannot be displayed instantly, e.g. not all of the DOM content is available, etc.\nTo learn more about \"Deciding When to Make Selection Automatically Follow Focus\", visit:\nhttps://w3c.github.io/aria-practices/#kbd_selection_follows_focus",
364
364
  "attribute": "auto"
365
365
  },
366
+ {
367
+ "kind": "field",
368
+ "name": "compact",
369
+ "type": {
370
+ "text": "boolean"
371
+ },
372
+ "privacy": "public",
373
+ "default": "false",
374
+ "description": "The tab items are displayed closer together.",
375
+ "attribute": "compact",
376
+ "reflects": true
377
+ },
366
378
  {
367
379
  "kind": "field",
368
380
  "name": "direction",
@@ -395,6 +407,18 @@
395
407
  "default": "''",
396
408
  "attribute": "label"
397
409
  },
410
+ {
411
+ "kind": "field",
412
+ "name": "quiet",
413
+ "type": {
414
+ "text": "boolean"
415
+ },
416
+ "privacy": "public",
417
+ "default": "false",
418
+ "description": "The tab list is displayed without a border.",
419
+ "attribute": "quiet",
420
+ "reflects": true
421
+ },
398
422
  {
399
423
  "kind": "field",
400
424
  "name": "selectionIndicatorStyle",
@@ -592,27 +616,22 @@
592
616
  ],
593
617
  "attributes": [
594
618
  {
619
+ "name": "auto",
595
620
  "type": {
596
- "text": "Boolean"
597
- },
598
- "description": "The tabs border is a lot smaller",
599
- "name": "quiet"
600
- },
601
- {
602
- "type": {
603
- "text": "Boolean"
621
+ "text": "boolean"
604
622
  },
605
- "description": "The collection of tabs take up less space",
606
- "name": "compact"
623
+ "default": "false",
624
+ "description": "Whether to activate a tab on keyboard focus or not.\n\nBy default a tab is activated via a \"click\" interaction. This is specifically intended for when\ntab content cannot be displayed instantly, e.g. not all of the DOM content is available, etc.\nTo learn more about \"Deciding When to Make Selection Automatically Follow Focus\", visit:\nhttps://w3c.github.io/aria-practices/#kbd_selection_follows_focus",
625
+ "fieldName": "auto"
607
626
  },
608
627
  {
609
- "name": "auto",
628
+ "name": "compact",
610
629
  "type": {
611
630
  "text": "boolean"
612
631
  },
613
632
  "default": "false",
614
- "description": "Whether to activate a tab on keyboard focus or not.\n\nBy default a tab is activated via a \"click\" interaction. This is specifically intended for when\ntab content cannot be displayed instantly, e.g. not all of the DOM content is available, etc.\nTo learn more about \"Deciding When to Make Selection Automatically Follow Focus\", visit:\nhttps://w3c.github.io/aria-practices/#kbd_selection_follows_focus",
615
- "fieldName": "auto"
633
+ "description": "The tab items are displayed closer together.",
634
+ "fieldName": "compact"
616
635
  },
617
636
  {
618
637
  "name": "direction",
@@ -638,6 +657,15 @@
638
657
  "default": "''",
639
658
  "fieldName": "label"
640
659
  },
660
+ {
661
+ "name": "quiet",
662
+ "type": {
663
+ "text": "boolean"
664
+ },
665
+ "default": "false",
666
+ "description": "The tab list is displayed without a border.",
667
+ "fieldName": "quiet"
668
+ },
641
669
  {
642
670
  "name": "selected",
643
671
  "type": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/tabs",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -75,6 +75,7 @@
75
75
  "lit-html"
76
76
  ],
77
77
  "dependencies": {
78
+ "@lit-labs/observers": "^1.0.1",
78
79
  "@spectrum-web-components/base": "^0.7.0",
79
80
  "@spectrum-web-components/reactive-controllers": "^0.3.0",
80
81
  "@spectrum-web-components/shared": "^0.15.0",
@@ -89,5 +90,5 @@
89
90
  "./sp-*.js",
90
91
  "./**/*.dev.js"
91
92
  ],
92
- "gitHead": "05c81318844160db3f8156144106e643507fef97"
93
+ "gitHead": "60b2d3b7d9020d72f9ae930568670321a1918e6f"
93
94
  }
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  import { TabPanel } from "./src/TabPanel.dev.js";
2
3
  customElements.define("sp-tab-panel", TabPanel);
3
4
  //# sourceMappingURL=sp-tab-panel.dev.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["sp-tab-panel.ts"],
4
4
  "sourcesContent": ["/*\nCopyright 2020 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 { TabPanel } from './src/TabPanel.dev.js'\n\ncustomElements.define('sp-tab-panel', TabPanel);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-tab-panel': TabPanel;\n }\n}\n"],
5
- "mappings": "AAYA;AAEA,eAAe,OAAO,gBAAgB,QAAQ;",
5
+ "mappings": ";AAYA,SAAS,gBAAgB;AAEzB,eAAe,OAAO,gBAAgB,QAAQ;",
6
6
  "names": []
7
7
  }
package/sp-tab-panel.js CHANGED
@@ -1,2 +1,2 @@
1
- import{TabPanel as e}from"./src/TabPanel.js";customElements.define("sp-tab-panel",e);
1
+ "use strict";import{TabPanel as e}from"./src/TabPanel.js";customElements.define("sp-tab-panel",e);
2
2
  //# sourceMappingURL=sp-tab-panel.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["sp-tab-panel.ts"],
4
4
  "sourcesContent": ["/*\nCopyright 2020 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 { TabPanel } from './src/TabPanel.js';\n\ncustomElements.define('sp-tab-panel', TabPanel);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-tab-panel': TabPanel;\n }\n}\n"],
5
- "mappings": "AAYA,6CAEA,eAAe,OAAO,eAAgB,CAAQ",
6
- "names": []
5
+ "mappings": "aAYA,OAAS,YAAAA,MAAgB,oBAEzB,eAAe,OAAO,eAAgBA,CAAQ",
6
+ "names": ["TabPanel"]
7
7
  }
package/sp-tab.dev.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  import { Tab } from "./src/Tab.dev.js";
2
3
  customElements.define("sp-tab", Tab);
3
4
  //# sourceMappingURL=sp-tab.dev.js.map
package/sp-tab.dev.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["sp-tab.ts"],
4
4
  "sourcesContent": ["/*\nCopyright 2020 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 { Tab } from './src/Tab.dev.js'\n\ncustomElements.define('sp-tab', Tab);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-tab': Tab;\n }\n}\n"],
5
- "mappings": "AAYA;AAEA,eAAe,OAAO,UAAU,GAAG;",
5
+ "mappings": ";AAYA,SAAS,WAAW;AAEpB,eAAe,OAAO,UAAU,GAAG;",
6
6
  "names": []
7
7
  }
package/sp-tab.js CHANGED
@@ -1,2 +1,2 @@
1
- import{Tab as e}from"./src/Tab.js";customElements.define("sp-tab",e);
1
+ "use strict";import{Tab as e}from"./src/Tab.js";customElements.define("sp-tab",e);
2
2
  //# sourceMappingURL=sp-tab.js.map
package/sp-tab.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["sp-tab.ts"],
4
4
  "sourcesContent": ["/*\nCopyright 2020 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 { Tab } from './src/Tab.js';\n\ncustomElements.define('sp-tab', Tab);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-tab': Tab;\n }\n}\n"],
5
- "mappings": "AAYA,mCAEA,eAAe,OAAO,SAAU,CAAG",
6
- "names": []
5
+ "mappings": "aAYA,OAAS,OAAAA,MAAW,eAEpB,eAAe,OAAO,SAAUA,CAAG",
6
+ "names": ["Tab"]
7
7
  }
package/sp-tabs.dev.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  import { Tabs } from "./src/Tabs.dev.js";
2
3
  customElements.define("sp-tabs", Tabs);
3
4
  //# sourceMappingURL=sp-tabs.dev.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["sp-tabs.ts"],
4
4
  "sourcesContent": ["/*\nCopyright 2020 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 { Tabs } from './src/Tabs.dev.js'\n\ncustomElements.define('sp-tabs', Tabs);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-tabs': Tabs;\n }\n}\n"],
5
- "mappings": "AAYA;AAEA,eAAe,OAAO,WAAW,IAAI;",
5
+ "mappings": ";AAYA,SAAS,YAAY;AAErB,eAAe,OAAO,WAAW,IAAI;",
6
6
  "names": []
7
7
  }
package/sp-tabs.js CHANGED
@@ -1,2 +1,2 @@
1
- import{Tabs as e}from"./src/Tabs.js";customElements.define("sp-tabs",e);
1
+ "use strict";import{Tabs as e}from"./src/Tabs.js";customElements.define("sp-tabs",e);
2
2
  //# sourceMappingURL=sp-tabs.js.map
package/sp-tabs.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["sp-tabs.ts"],
4
4
  "sourcesContent": ["/*\nCopyright 2020 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 { Tabs } from './src/Tabs.js';\n\ncustomElements.define('sp-tabs', Tabs);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sp-tabs': Tabs;\n }\n}\n"],
5
- "mappings": "AAYA,qCAEA,eAAe,OAAO,UAAW,CAAI",
6
- "names": []
5
+ "mappings": "aAYA,OAAS,QAAAA,MAAY,gBAErB,eAAe,OAAO,UAAWA,CAAI",
6
+ "names": ["Tabs"]
7
7
  }
package/src/Tab.dev.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __decorateClass = (decorators, target, key, kind) => {
@@ -20,7 +21,9 @@ import {
20
21
  ObserveSlotText
21
22
  } from "@spectrum-web-components/shared";
22
23
  import tabItemStyles from "./tab.css.js";
23
- const _Tab = class extends FocusVisiblePolyfillMixin(ObserveSlotText(ObserveSlotPresence(SpectrumElement, '[slot="icon"]'), "")) {
24
+ const _Tab = class extends FocusVisiblePolyfillMixin(
25
+ ObserveSlotText(ObserveSlotPresence(SpectrumElement, '[slot="icon"]'), "")
26
+ ) {
24
27
  constructor() {
25
28
  super(...arguments);
26
29
  this.disabled = false;
@@ -39,10 +42,12 @@ const _Tab = class extends FocusVisiblePolyfillMixin(ObserveSlotText(ObserveSlot
39
42
  return !!this.label || this.slotHasContent;
40
43
  }
41
44
  handleContentChange() {
42
- this.dispatchEvent(new Event("sp-tab-contentchange", {
43
- bubbles: true,
44
- composed: true
45
- }));
45
+ this.dispatchEvent(
46
+ new Event("sp-tab-contentchange", {
47
+ bubbles: true,
48
+ composed: true
49
+ })
50
+ );
46
51
  }
47
52
  render() {
48
53
  return html`
@@ -61,7 +66,10 @@ const _Tab = class extends FocusVisiblePolyfillMixin(ObserveSlotText(ObserveSlot
61
66
  if (!this.hasAttribute("id")) {
62
67
  this.id = `sp-tab-${_Tab.instanceCount++}`;
63
68
  }
64
- this.shadowRoot.addEventListener("slotchange", this.handleContentChange);
69
+ this.shadowRoot.addEventListener(
70
+ "slotchange",
71
+ this.handleContentChange
72
+ );
65
73
  }
66
74
  updated(changes) {
67
75
  super.updated(changes);
@@ -69,7 +77,10 @@ const _Tab = class extends FocusVisiblePolyfillMixin(ObserveSlotText(ObserveSlot
69
77
  this.handleContentChange();
70
78
  }
71
79
  if (changes.has("selected")) {
72
- this.setAttribute("aria-selected", this.selected ? "true" : "false");
80
+ this.setAttribute(
81
+ "aria-selected",
82
+ this.selected ? "true" : "false"
83
+ );
73
84
  this.setAttribute("tabindex", this.selected ? "0" : "-1");
74
85
  }
75
86
  if (changes.has("disabled")) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["Tab.ts"],
4
4
  "sourcesContent": ["/*\nCopyright 2020 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 html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport {\n FocusVisiblePolyfillMixin,\n ObserveSlotPresence,\n ObserveSlotText,\n} from '@spectrum-web-components/shared';\n\nimport tabItemStyles from './tab.css.js';\n\n/**\n * @element sp-tab\n *\n * @slot - text label of the Tab\n * @slot icon - The icon that appears on the left of the label\n */\nexport class Tab extends FocusVisiblePolyfillMixin(\n ObserveSlotText(ObserveSlotPresence(SpectrumElement, '[slot=\"icon\"]'), '')\n) {\n public static override get styles(): CSSResultArray {\n return [tabItemStyles];\n }\n\n /**\n * @private\n */\n static instanceCount = 0;\n\n protected get hasIcon(): boolean {\n return this.slotContentIsPresent;\n }\n\n protected get hasLabel(): boolean {\n return !!this.label || this.slotHasContent;\n }\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @property({ reflect: true })\n public label = '';\n\n @property({ type: Boolean, reflect: true })\n public selected = false;\n\n @property({ type: Boolean, reflect: true })\n public vertical = false;\n\n @property({ type: String, reflect: true })\n public value = '';\n\n protected handleContentChange(): void {\n /**\n * When the content in a tab has changed, JS powered layout related to that content may also need to be changed.\n */\n this.dispatchEvent(\n new Event('sp-tab-contentchange', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.hasIcon\n ? html`\n <slot name=\"icon\"></slot>\n `\n : html``}\n <label id=\"item-label\" ?hidden=${!this.hasLabel}>\n ${this.slotHasContent ? html`` : this.label}\n <slot>${this.label}</slot>\n </label>\n `;\n }\n\n protected override firstUpdated(changes: PropertyValues): void {\n super.firstUpdated(changes);\n this.setAttribute('role', 'tab');\n if (!this.hasAttribute('id')) {\n this.id = `sp-tab-${Tab.instanceCount++}`;\n }\n // @TODO - refactor this as a ResizeObserver up to `sp-tabs` so that it can be more\n // resiliant to Tab content changes, as well as other content slotted into the \"tablist\".\n this.shadowRoot.addEventListener(\n 'slotchange',\n this.handleContentChange\n );\n }\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n if (\n changes.has('label') &&\n typeof changes.get('label') !== 'undefined'\n ) {\n this.handleContentChange();\n }\n if (changes.has('selected')) {\n this.setAttribute(\n 'aria-selected',\n this.selected ? 'true' : 'false'\n );\n this.setAttribute('tabindex', this.selected ? '0' : '-1');\n }\n if (changes.has('disabled')) {\n if (this.disabled) {\n this.setAttribute('aria-disabled', 'true');\n } else {\n this.removeAttribute('aria-disabled');\n }\n }\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;AAYA;AAAA;AAAA;AAAA;AAOA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;AAQO,2BAAkB,0BACrB,gBAAgB,oBAAoB,iBAAiB,eAAe,GAAG,EAAE,CAC7E,EAAE;AAAA,EAFK;AAAA;AAqBI,oBAAW;AAGX,iBAAQ;AAGR,oBAAW;AAGX,oBAAW;AAGX,iBAAQ;AAAA;AAAA,aA9BY,SAAyB;AAChD,WAAO,CAAC,aAAa;AAAA,EACzB;AAAA,MAOc,UAAmB;AAC7B,WAAO,KAAK;AAAA,EAChB;AAAA,MAEc,WAAoB;AAC9B,WAAO,CAAC,CAAC,KAAK,SAAS,KAAK;AAAA,EAChC;AAAA,EAiBU,sBAA4B;AAIlC,SAAK,cACD,IAAI,MAAM,wBAAwB;AAAA,MAC9B,SAAS;AAAA,MACT,UAAU;AAAA,IACd,CAAC,CACL;AAAA,EACJ;AAAA,EAEmB,SAAyB;AACxC,WAAO;AAAA,cACD,KAAK,UACD;AAAA;AAAA,sBAGA;AAAA,6CAC2B,CAAC,KAAK;AAAA,kBACjC,KAAK,iBAAiB,SAAS,KAAK;AAAA,wBAC9B,KAAK;AAAA;AAAA;AAAA,EAGzB;AAAA,EAEmB,aAAa,SAA+B;AAC3D,UAAM,aAAa,OAAO;AAC1B,SAAK,aAAa,QAAQ,KAAK;AAC/B,QAAI,CAAC,KAAK,aAAa,IAAI,GAAG;AAC1B,WAAK,KAAK,UAAU,KAAI;AAAA,IAC5B;AAGA,SAAK,WAAW,iBACZ,cACA,KAAK,mBACT;AAAA,EACJ;AAAA,EAEmB,QAAQ,SAA+B;AACtD,UAAM,QAAQ,OAAO;AACrB,QACI,QAAQ,IAAI,OAAO,KACnB,OAAO,QAAQ,IAAI,OAAO,MAAM,aAClC;AACE,WAAK,oBAAoB;AAAA,IAC7B;AACA,QAAI,QAAQ,IAAI,UAAU,GAAG;AACzB,WAAK,aACD,iBACA,KAAK,WAAW,SAAS,OAC7B;AACA,WAAK,aAAa,YAAY,KAAK,WAAW,MAAM,IAAI;AAAA,IAC5D;AACA,QAAI,QAAQ,IAAI,UAAU,GAAG;AACzB,UAAI,KAAK,UAAU;AACf,aAAK,aAAa,iBAAiB,MAAM;AAAA,MAC7C,OAAO;AACH,aAAK,gBAAgB,eAAe;AAAA,MACxC;AAAA,IACJ;AAAA,EACJ;AACJ;AAlGO;AAUI,AAVJ,IAUI,gBAAgB;AAWhB;AAAA,EADP,AAAC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GACnC,AArBJ,IAqBI;AAGA;AAAA,EADP,AAAC,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,GACpB,AAxBJ,IAwBI;AAGA;AAAA,EADP,AAAC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GACnC,AA3BJ,IA2BI;AAGA;AAAA,EADP,AAAC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GACnC,AA9BJ,IA8BI;AAGA;AAAA,EADP,AAAC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAClC,AAjCJ,IAiCI;",
5
+ "mappings": ";;;;;;;;;;;;AAYA;AAAA,EAEI;AAAA,EAEA;AAAA,OAEG;AACP,SAAS,gBAAgB;AACzB;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,OAAO,mBAAmB;AAQnB,MAAM,OAAN,cAAkB;AAAA,EACrB,gBAAgB,oBAAoB,iBAAiB,eAAe,GAAG,EAAE;AAC7E,EAAE;AAAA,EAFK;AAAA;AAqBH,SAAO,WAAW;AAGlB,SAAO,QAAQ;AAGf,SAAO,WAAW;AAGlB,SAAO,WAAW;AAGlB,SAAO,QAAQ;AAAA;AAAA,EA9Bf,WAA2B,SAAyB;AAChD,WAAO,CAAC,aAAa;AAAA,EACzB;AAAA,EAOA,IAAc,UAAmB;AAC7B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAc,WAAoB;AAC9B,WAAO,CAAC,CAAC,KAAK,SAAS,KAAK;AAAA,EAChC;AAAA,EAiBU,sBAA4B;AAIlC,SAAK;AAAA,MACD,IAAI,MAAM,wBAAwB;AAAA,QAC9B,SAAS;AAAA,QACT,UAAU;AAAA,MACd,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAEmB,SAAyB;AACxC,WAAO;AAAA,cACD,KAAK,UACD;AAAA;AAAA,sBAGA;AAAA,6CAC2B,CAAC,KAAK;AAAA,kBACjC,KAAK,iBAAiB,SAAS,KAAK;AAAA,wBAC9B,KAAK;AAAA;AAAA;AAAA,EAGzB;AAAA,EAEmB,aAAa,SAA+B;AAC3D,UAAM,aAAa,OAAO;AAC1B,SAAK,aAAa,QAAQ,KAAK;AAC/B,QAAI,CAAC,KAAK,aAAa,IAAI,GAAG;AAC1B,WAAK,KAAK,UAAU,KAAI;AAAA,IAC5B;AAGA,SAAK,WAAW;AAAA,MACZ;AAAA,MACA,KAAK;AAAA,IACT;AAAA,EACJ;AAAA,EAEmB,QAAQ,SAA+B;AACtD,UAAM,QAAQ,OAAO;AACrB,QACI,QAAQ,IAAI,OAAO,KACnB,OAAO,QAAQ,IAAI,OAAO,MAAM,aAClC;AACE,WAAK,oBAAoB;AAAA,IAC7B;AACA,QAAI,QAAQ,IAAI,UAAU,GAAG;AACzB,WAAK;AAAA,QACD;AAAA,QACA,KAAK,WAAW,SAAS;AAAA,MAC7B;AACA,WAAK,aAAa,YAAY,KAAK,WAAW,MAAM,IAAI;AAAA,IAC5D;AACA,QAAI,QAAQ,IAAI,UAAU,GAAG;AACzB,UAAI,KAAK,UAAU;AACf,aAAK,aAAa,iBAAiB,MAAM;AAAA,MAC7C,OAAO;AACH,aAAK,gBAAgB,eAAe;AAAA,MACxC;AAAA,IACJ;AAAA,EACJ;AACJ;AAlGO,WAAM,MAAN;AAAM,IAUF,gBAAgB;AAWhB;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GApBjC,IAqBF;AAGA;AAAA,EADN,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,GAvBlB,IAwBF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GA1BjC,IA2BF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GA7BjC,IA8BF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAhChC,IAiCF;",
6
6
  "names": []
7
7
  }
package/src/Tab.js CHANGED
@@ -1,10 +1,10 @@
1
- var p=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var s=(u,e,o,i)=>{for(var t=i>1?void 0:i?h(e,o):e,a=u.length-1,d;a>=0;a--)(d=u[a])&&(t=(i?d(e,o,t):d(t))||t);return i&&t&&p(e,o,t),t};import{html as r,SpectrumElement as c}from"@spectrum-web-components/base";import{property as l}from"@spectrum-web-components/base/src/decorators.js";import{FocusVisiblePolyfillMixin as b,ObserveSlotPresence as f,ObserveSlotText as m}from"@spectrum-web-components/shared";import v from"./tab.css.js";const n=class extends b(m(f(c,'[slot="icon"]'),"")){constructor(){super(...arguments);this.disabled=!1;this.label="";this.selected=!1;this.vertical=!1;this.value=""}static get styles(){return[v]}get hasIcon(){return this.slotContentIsPresent}get hasLabel(){return!!this.label||this.slotHasContent}handleContentChange(){this.dispatchEvent(new Event("sp-tab-contentchange",{bubbles:!0,composed:!0}))}render(){return r`
2
- ${this.hasIcon?r`
1
+ "use strict";var p=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var s=(u,l,e,r)=>{for(var t=r>1?void 0:r?h(l,e):l,a=u.length-1,d;a>=0;a--)(d=u[a])&&(t=(r?d(l,e,t):d(t))||t);return r&&t&&p(l,e,t),t};import{html as o,SpectrumElement as c}from"@spectrum-web-components/base";import{property as i}from"@spectrum-web-components/base/src/decorators.js";import{FocusVisiblePolyfillMixin as b,ObserveSlotPresence as f,ObserveSlotText as m}from"@spectrum-web-components/shared";import v from"./tab.css.js";const n=class extends b(m(f(c,'[slot="icon"]'),"")){constructor(){super(...arguments);this.disabled=!1;this.label="";this.selected=!1;this.vertical=!1;this.value=""}static get styles(){return[v]}get hasIcon(){return this.slotContentIsPresent}get hasLabel(){return!!this.label||this.slotHasContent}handleContentChange(){this.dispatchEvent(new Event("sp-tab-contentchange",{bubbles:!0,composed:!0}))}render(){return o`
2
+ ${this.hasIcon?o`
3
3
  <slot name="icon"></slot>
4
- `:r``}
4
+ `:o``}
5
5
  <label id="item-label" ?hidden=${!this.hasLabel}>
6
- ${this.slotHasContent?r``:this.label}
6
+ ${this.slotHasContent?o``:this.label}
7
7
  <slot>${this.label}</slot>
8
8
  </label>
9
- `}firstUpdated(e){super.firstUpdated(e),this.setAttribute("role","tab"),this.hasAttribute("id")||(this.id=`sp-tab-${n.instanceCount++}`),this.shadowRoot.addEventListener("slotchange",this.handleContentChange)}updated(e){super.updated(e),e.has("label")&&typeof e.get("label")!="undefined"&&this.handleContentChange(),e.has("selected")&&(this.setAttribute("aria-selected",this.selected?"true":"false"),this.setAttribute("tabindex",this.selected?"0":"-1")),e.has("disabled")&&(this.disabled?this.setAttribute("aria-disabled","true"):this.removeAttribute("aria-disabled"))}};export let Tab=n;Tab.instanceCount=0,s([l({type:Boolean,reflect:!0})],Tab.prototype,"disabled",2),s([l({reflect:!0})],Tab.prototype,"label",2),s([l({type:Boolean,reflect:!0})],Tab.prototype,"selected",2),s([l({type:Boolean,reflect:!0})],Tab.prototype,"vertical",2),s([l({type:String,reflect:!0})],Tab.prototype,"value",2);
9
+ `}firstUpdated(e){super.firstUpdated(e),this.setAttribute("role","tab"),this.hasAttribute("id")||(this.id=`sp-tab-${n.instanceCount++}`),this.shadowRoot.addEventListener("slotchange",this.handleContentChange)}updated(e){super.updated(e),e.has("label")&&typeof e.get("label")!="undefined"&&this.handleContentChange(),e.has("selected")&&(this.setAttribute("aria-selected",this.selected?"true":"false"),this.setAttribute("tabindex",this.selected?"0":"-1")),e.has("disabled")&&(this.disabled?this.setAttribute("aria-disabled","true"):this.removeAttribute("aria-disabled"))}};export let Tab=n;Tab.instanceCount=0,s([i({type:Boolean,reflect:!0})],Tab.prototype,"disabled",2),s([i({reflect:!0})],Tab.prototype,"label",2),s([i({type:Boolean,reflect:!0})],Tab.prototype,"selected",2),s([i({type:Boolean,reflect:!0})],Tab.prototype,"vertical",2),s([i({type:String,reflect:!0})],Tab.prototype,"value",2);
10
10
  //# sourceMappingURL=Tab.js.map
package/src/Tab.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["Tab.ts"],
4
4
  "sourcesContent": ["/*\nCopyright 2020 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 html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport {\n FocusVisiblePolyfillMixin,\n ObserveSlotPresence,\n ObserveSlotText,\n} from '@spectrum-web-components/shared';\n\nimport tabItemStyles from './tab.css.js';\n\n/**\n * @element sp-tab\n *\n * @slot - text label of the Tab\n * @slot icon - The icon that appears on the left of the label\n */\nexport class Tab extends FocusVisiblePolyfillMixin(\n ObserveSlotText(ObserveSlotPresence(SpectrumElement, '[slot=\"icon\"]'), '')\n) {\n public static override get styles(): CSSResultArray {\n return [tabItemStyles];\n }\n\n /**\n * @private\n */\n static instanceCount = 0;\n\n protected get hasIcon(): boolean {\n return this.slotContentIsPresent;\n }\n\n protected get hasLabel(): boolean {\n return !!this.label || this.slotHasContent;\n }\n\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n @property({ reflect: true })\n public label = '';\n\n @property({ type: Boolean, reflect: true })\n public selected = false;\n\n @property({ type: Boolean, reflect: true })\n public vertical = false;\n\n @property({ type: String, reflect: true })\n public value = '';\n\n protected handleContentChange(): void {\n /**\n * When the content in a tab has changed, JS powered layout related to that content may also need to be changed.\n */\n this.dispatchEvent(\n new Event('sp-tab-contentchange', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.hasIcon\n ? html`\n <slot name=\"icon\"></slot>\n `\n : html``}\n <label id=\"item-label\" ?hidden=${!this.hasLabel}>\n ${this.slotHasContent ? html`` : this.label}\n <slot>${this.label}</slot>\n </label>\n `;\n }\n\n protected override firstUpdated(changes: PropertyValues): void {\n super.firstUpdated(changes);\n this.setAttribute('role', 'tab');\n if (!this.hasAttribute('id')) {\n this.id = `sp-tab-${Tab.instanceCount++}`;\n }\n // @TODO - refactor this as a ResizeObserver up to `sp-tabs` so that it can be more\n // resiliant to Tab content changes, as well as other content slotted into the \"tablist\".\n this.shadowRoot.addEventListener(\n 'slotchange',\n this.handleContentChange\n );\n }\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n if (\n changes.has('label') &&\n typeof changes.get('label') !== 'undefined'\n ) {\n this.handleContentChange();\n }\n if (changes.has('selected')) {\n this.setAttribute(\n 'aria-selected',\n this.selected ? 'true' : 'false'\n );\n this.setAttribute('tabindex', this.selected ? '0' : '-1');\n }\n if (changes.has('disabled')) {\n if (this.disabled) {\n this.setAttribute('aria-disabled', 'true');\n } else {\n this.removeAttribute('aria-disabled');\n }\n }\n }\n}\n"],
5
- "mappings": "wMAYA,0EAOA,2EACA,0HAMA,4BAQO,qBAAkB,GACrB,EAAgB,EAAoB,EAAiB,eAAe,EAAG,EAAE,CAC7E,CAAE,CAFK,kCAqBI,cAAW,GAGX,WAAQ,GAGR,cAAW,GAGX,cAAW,GAGX,WAAQ,aA9BY,SAAyB,CAChD,MAAO,CAAC,CAAa,CACzB,IAOc,UAAmB,CAC7B,MAAO,MAAK,oBAChB,IAEc,WAAoB,CAC9B,MAAO,CAAC,CAAC,KAAK,OAAS,KAAK,cAChC,CAiBU,qBAA4B,CAIlC,KAAK,cACD,GAAI,OAAM,uBAAwB,CAC9B,QAAS,GACT,SAAU,EACd,CAAC,CACL,CACJ,CAEmB,QAAyB,CACxC,MAAO;AAAA,cACD,KAAK,QACD;AAAA;AAAA,oBAGA;AAAA,6CAC2B,CAAC,KAAK;AAAA,kBACjC,KAAK,eAAiB,IAAS,KAAK;AAAA,wBAC9B,KAAK;AAAA;AAAA,SAGzB,CAEmB,aAAa,EAA+B,CAC3D,MAAM,aAAa,CAAO,EAC1B,KAAK,aAAa,OAAQ,KAAK,EAC1B,KAAK,aAAa,IAAI,GACvB,MAAK,GAAK,UAAU,EAAI,mBAI5B,KAAK,WAAW,iBACZ,aACA,KAAK,mBACT,CACJ,CAEmB,QAAQ,EAA+B,CACtD,MAAM,QAAQ,CAAO,EAEjB,EAAQ,IAAI,OAAO,GACnB,MAAO,GAAQ,IAAI,OAAO,GAAM,aAEhC,KAAK,oBAAoB,EAEzB,EAAQ,IAAI,UAAU,GACtB,MAAK,aACD,gBACA,KAAK,SAAW,OAAS,OAC7B,EACA,KAAK,aAAa,WAAY,KAAK,SAAW,IAAM,IAAI,GAExD,EAAQ,IAAI,UAAU,GACtB,CAAI,KAAK,SACL,KAAK,aAAa,gBAAiB,MAAM,EAEzC,KAAK,gBAAgB,eAAe,EAGhD,CACJ,EAlGO,iBAUI,AAVJ,IAUI,cAAgB,EAWhB,GADP,AAAC,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GACnC,AArBJ,IAqBI,wBAGA,GADP,AAAC,EAAS,CAAE,QAAS,EAAK,CAAC,GACpB,AAxBJ,IAwBI,qBAGA,GADP,AAAC,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GACnC,AA3BJ,IA2BI,wBAGA,GADP,AAAC,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GACnC,AA9BJ,IA8BI,wBAGA,GADP,AAAC,EAAS,CAAE,KAAM,OAAQ,QAAS,EAAK,CAAC,GAClC,AAjCJ,IAiCI",
6
- "names": []
5
+ "mappings": "qNAYA,OAEI,QAAAA,EAEA,mBAAAC,MAEG,gCACP,OAAS,YAAAC,MAAgB,kDACzB,OACI,6BAAAC,EACA,uBAAAC,EACA,mBAAAC,MACG,kCAEP,OAAOC,MAAmB,eAQnB,MAAMC,EAAN,cAAkBJ,EACrBE,EAAgBD,EAAoBH,EAAiB,eAAe,EAAG,EAAE,CAC7E,CAAE,CAFK,kCAqBH,KAAO,SAAW,GAGlB,KAAO,MAAQ,GAGf,KAAO,SAAW,GAGlB,KAAO,SAAW,GAGlB,KAAO,MAAQ,GA9Bf,WAA2B,QAAyB,CAChD,MAAO,CAACK,CAAa,CACzB,CAOA,IAAc,SAAmB,CAC7B,OAAO,KAAK,oBAChB,CAEA,IAAc,UAAoB,CAC9B,MAAO,CAAC,CAAC,KAAK,OAAS,KAAK,cAChC,CAiBU,qBAA4B,CAIlC,KAAK,cACD,IAAI,MAAM,uBAAwB,CAC9B,QAAS,GACT,SAAU,EACd,CAAC,CACL,CACJ,CAEmB,QAAyB,CACxC,OAAON;AAAA,cACD,KAAK,QACDA;AAAA;AAAA,oBAGAA;AAAA,6CAC2B,CAAC,KAAK;AAAA,kBACjC,KAAK,eAAiBA,IAAS,KAAK;AAAA,wBAC9B,KAAK;AAAA;AAAA,SAGzB,CAEmB,aAAaQ,EAA+B,CAC3D,MAAM,aAAaA,CAAO,EAC1B,KAAK,aAAa,OAAQ,KAAK,EAC1B,KAAK,aAAa,IAAI,IACvB,KAAK,GAAK,UAAUD,EAAI,mBAI5B,KAAK,WAAW,iBACZ,aACA,KAAK,mBACT,CACJ,CAEmB,QAAQC,EAA+B,CACtD,MAAM,QAAQA,CAAO,EAEjBA,EAAQ,IAAI,OAAO,GACnB,OAAOA,EAAQ,IAAI,OAAO,GAAM,aAEhC,KAAK,oBAAoB,EAEzBA,EAAQ,IAAI,UAAU,IACtB,KAAK,aACD,gBACA,KAAK,SAAW,OAAS,OAC7B,EACA,KAAK,aAAa,WAAY,KAAK,SAAW,IAAM,IAAI,GAExDA,EAAQ,IAAI,UAAU,IAClB,KAAK,SACL,KAAK,aAAa,gBAAiB,MAAM,EAEzC,KAAK,gBAAgB,eAAe,EAGhD,CACJ,EAlGO,WAAM,IAAND,EAAM,IAUF,cAAgB,EAWhBE,EAAA,CADNP,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GApBjC,IAqBF,wBAGAO,EAAA,CADNP,EAAS,CAAE,QAAS,EAAK,CAAC,GAvBlB,IAwBF,qBAGAO,EAAA,CADNP,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GA1BjC,IA2BF,wBAGAO,EAAA,CADNP,EAAS,CAAE,KAAM,QAAS,QAAS,EAAK,CAAC,GA7BjC,IA8BF,wBAGAO,EAAA,CADNP,EAAS,CAAE,KAAM,OAAQ,QAAS,EAAK,CAAC,GAhChC,IAiCF",
6
+ "names": ["html", "SpectrumElement", "property", "FocusVisiblePolyfillMixin", "ObserveSlotPresence", "ObserveSlotText", "tabItemStyles", "_Tab", "changes", "__decorateClass"]
7
7
  }
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __decorateClass = (decorators, target, key, kind) => {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["TabPanel.ts"],
4
4
  "sourcesContent": ["/*\nCopyright 2020 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 html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\n\nimport panelStyles from './tab-panel.css.js';\n\n/**\n * @element sp-tab-panel\n *\n * @slot - content of the Tab Panel\n */\nexport class TabPanel extends SpectrumElement {\n static override styles = [panelStyles];\n\n /**\n * @private\n */\n static instanceCount = 0;\n\n @property({ type: Boolean, reflect: true })\n public selected = false;\n\n @property({ type: String, reflect: true })\n public value = '';\n\n protected override render(): TemplateResult {\n return html`\n <slot></slot>\n `;\n }\n\n protected override firstUpdated(): void {\n this.slot = 'tab-panel';\n this.setAttribute('role', 'tabpanel');\n this.tabIndex = 0;\n if (!this.hasAttribute('id')) {\n this.id = `sp-tab-panel-${TabPanel.instanceCount++}`;\n }\n }\n\n protected override updated(changes: PropertyValues<this>): void {\n if (changes.has('selected')) {\n if (this.selected) {\n this.removeAttribute('aria-hidden');\n this.tabIndex = 0;\n } else {\n this.setAttribute('aria-hidden', 'true');\n this.tabIndex = -1;\n }\n }\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;AAYA;AAAA;AAAA;AAAA;AAMA;AAEA;AAOO,gCAAuB,gBAAgB;AAAA,EAAvC;AAAA;AASI,oBAAW;AAGX,iBAAQ;AAAA;AAAA,EAEI,SAAyB;AACxC,WAAO;AAAA;AAAA;AAAA,EAGX;AAAA,EAEmB,eAAqB;AACpC,SAAK,OAAO;AACZ,SAAK,aAAa,QAAQ,UAAU;AACpC,SAAK,WAAW;AAChB,QAAI,CAAC,KAAK,aAAa,IAAI,GAAG;AAC1B,WAAK,KAAK,gBAAgB,UAAS;AAAA,IACvC;AAAA,EACJ;AAAA,EAEmB,QAAQ,SAAqC;AAC5D,QAAI,QAAQ,IAAI,UAAU,GAAG;AACzB,UAAI,KAAK,UAAU;AACf,aAAK,gBAAgB,aAAa;AAClC,aAAK,WAAW;AAAA,MACpB,OAAO;AACH,aAAK,aAAa,eAAe,MAAM;AACvC,aAAK,WAAW;AAAA,MACpB;AAAA,IACJ;AAAA,EACJ;AACJ;AAxCO;AACa,AADb,SACa,SAAS,CAAC,WAAW;AAK9B,AANJ,SAMI,gBAAgB;AAGhB;AAAA,EADP,AAAC,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GACnC,AATJ,SASI;AAGA;AAAA,EADP,AAAC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAClC,AAZJ,SAYI;",
5
+ "mappings": ";;;;;;;;;;;;AAYA;AAAA,EACI;AAAA,EAEA;AAAA,OAEG;AACP,SAAS,gBAAgB;AAEzB,OAAO,iBAAiB;AAOjB,MAAM,YAAN,cAAuB,gBAAgB;AAAA,EAAvC;AAAA;AASH,SAAO,WAAW;AAGlB,SAAO,QAAQ;AAAA;AAAA,EAEI,SAAyB;AACxC,WAAO;AAAA;AAAA;AAAA,EAGX;AAAA,EAEmB,eAAqB;AACpC,SAAK,OAAO;AACZ,SAAK,aAAa,QAAQ,UAAU;AACpC,SAAK,WAAW;AAChB,QAAI,CAAC,KAAK,aAAa,IAAI,GAAG;AAC1B,WAAK,KAAK,gBAAgB,UAAS;AAAA,IACvC;AAAA,EACJ;AAAA,EAEmB,QAAQ,SAAqC;AAC5D,QAAI,QAAQ,IAAI,UAAU,GAAG;AACzB,UAAI,KAAK,UAAU;AACf,aAAK,gBAAgB,aAAa;AAClC,aAAK,WAAW;AAAA,MACpB,OAAO;AACH,aAAK,aAAa,eAAe,MAAM;AACvC,aAAK,WAAW;AAAA,MACpB;AAAA,IACJ;AAAA,EACJ;AACJ;AAxCO,WAAM,WAAN;AAAM,SACO,SAAS,CAAC,WAAW;AAD5B,SAMF,gBAAgB;AAGhB;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GARjC,SASF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAXhC,SAYF;",
6
6
  "names": []
7
7
  }
package/src/TabPanel.js CHANGED
@@ -1,4 +1,4 @@
1
- var u=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var d=(p,e,i,r)=>{for(var t=r>1?void 0:r?n(e,i):e,s=p.length-1,o;s>=0;s--)(o=p[s])&&(t=(r?o(e,i,t):o(t))||t);return r&&t&&u(e,i,t),t};import{html as c,SpectrumElement as h}from"@spectrum-web-components/base";import{property as a}from"@spectrum-web-components/base/src/decorators.js";import m from"./tab-panel.css.js";const l=class extends h{constructor(){super(...arguments);this.selected=!1;this.value=""}render(){return c`
1
+ "use strict";var u=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var d=(p,e,r,i)=>{for(var t=i>1?void 0:i?c(e,r):e,s=p.length-1,o;s>=0;s--)(o=p[s])&&(t=(i?o(e,r,t):o(t))||t);return i&&t&&u(e,r,t),t};import{html as h,SpectrumElement as n}from"@spectrum-web-components/base";import{property as a}from"@spectrum-web-components/base/src/decorators.js";import m from"./tab-panel.css.js";const l=class extends n{constructor(){super(...arguments);this.selected=!1;this.value=""}render(){return h`
2
2
  <slot></slot>
3
- `}firstUpdated(){this.slot="tab-panel",this.setAttribute("role","tabpanel"),this.tabIndex=0,this.hasAttribute("id")||(this.id=`sp-tab-panel-${l.instanceCount++}`)}updated(e){e.has("selected")&&(this.selected?(this.removeAttribute("aria-hidden"),this.tabIndex=0):(this.setAttribute("aria-hidden","true"),this.tabIndex=-1))}};export let TabPanel=l;TabPanel.styles=[m],TabPanel.instanceCount=0,d([a({type:Boolean,reflect:!0})],TabPanel.prototype,"selected",2),d([a({type:String,reflect:!0})],TabPanel.prototype,"value",2);
3
+ `}firstUpdated(){this.slot="tab-panel",this.setAttribute("role","tabpanel"),this.tabIndex=0,this.hasAttribute("id")||(this.id=`sp-tab-panel-${l.instanceCount++}`)}updated(r){r.has("selected")&&(this.selected?(this.removeAttribute("aria-hidden"),this.tabIndex=0):(this.setAttribute("aria-hidden","true"),this.tabIndex=-1))}};export let TabPanel=l;TabPanel.styles=[m],TabPanel.instanceCount=0,d([a({type:Boolean,reflect:!0})],TabPanel.prototype,"selected",2),d([a({type:String,reflect:!0})],TabPanel.prototype,"value",2);
4
4
  //# sourceMappingURL=TabPanel.js.map