@cloudscape-design/components 3.0.706 → 3.0.707

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 (73) hide show
  1. package/i18n/messages/all.all.js +1 -1
  2. package/i18n/messages/all.all.json +1 -1
  3. package/i18n/messages/all.ar.js +1 -1
  4. package/i18n/messages/all.ar.json +1 -1
  5. package/i18n/messages/all.de.js +1 -1
  6. package/i18n/messages/all.de.json +1 -1
  7. package/i18n/messages/all.en-GB.js +1 -1
  8. package/i18n/messages/all.en-GB.json +1 -1
  9. package/i18n/messages/all.en.js +1 -1
  10. package/i18n/messages/all.en.json +1 -1
  11. package/i18n/messages/all.es.js +1 -1
  12. package/i18n/messages/all.es.json +1 -1
  13. package/i18n/messages/all.fr.js +1 -1
  14. package/i18n/messages/all.fr.json +1 -1
  15. package/i18n/messages/all.id.js +1 -1
  16. package/i18n/messages/all.id.json +1 -1
  17. package/i18n/messages/all.it.js +1 -1
  18. package/i18n/messages/all.it.json +1 -1
  19. package/i18n/messages/all.ja.js +1 -1
  20. package/i18n/messages/all.ja.json +1 -1
  21. package/i18n/messages/all.ko.js +1 -1
  22. package/i18n/messages/all.ko.json +1 -1
  23. package/i18n/messages/all.pt-BR.js +1 -1
  24. package/i18n/messages/all.pt-BR.json +1 -1
  25. package/i18n/messages/all.th.js +1 -1
  26. package/i18n/messages/all.th.json +1 -1
  27. package/i18n/messages/all.tr.js +1 -1
  28. package/i18n/messages/all.tr.json +1 -1
  29. package/i18n/messages/all.zh-CN.js +1 -1
  30. package/i18n/messages/all.zh-CN.json +1 -1
  31. package/i18n/messages/all.zh-TW.js +1 -1
  32. package/i18n/messages/all.zh-TW.json +1 -1
  33. package/i18n/messages-types.d.ts +1 -1
  34. package/i18n/messages-types.d.ts.map +1 -1
  35. package/i18n/messages-types.js.map +1 -1
  36. package/internal/components/token-list/styles.css.js +9 -9
  37. package/internal/components/token-list/styles.scoped.css +22 -22
  38. package/internal/components/token-list/styles.selectors.js +9 -9
  39. package/internal/environment.js +1 -1
  40. package/internal/environment.json +1 -1
  41. package/internal/manifest.json +1 -1
  42. package/package.json +1 -1
  43. package/property-filter/i18n-utils.d.ts +9 -0
  44. package/property-filter/i18n-utils.d.ts.map +1 -0
  45. package/property-filter/i18n-utils.js +48 -0
  46. package/property-filter/i18n-utils.js.map +1 -0
  47. package/property-filter/index.d.ts.map +1 -1
  48. package/property-filter/index.js +5 -38
  49. package/property-filter/index.js.map +1 -1
  50. package/property-filter/interfaces.d.ts +8 -1
  51. package/property-filter/interfaces.d.ts.map +1 -1
  52. package/property-filter/interfaces.js.map +1 -1
  53. package/property-filter/token.d.ts.map +1 -1
  54. package/property-filter/token.js +12 -13
  55. package/property-filter/token.js.map +1 -1
  56. package/property-filter/utils.d.ts +0 -6
  57. package/property-filter/utils.d.ts.map +1 -1
  58. package/property-filter/utils.js +0 -8
  59. package/property-filter/utils.js.map +1 -1
  60. package/tabs/styles.css.js +28 -28
  61. package/tabs/styles.scoped.css +49 -54
  62. package/tabs/styles.selectors.js +28 -28
  63. package/tabs/tab-header-bar.d.ts.map +1 -1
  64. package/tabs/tab-header-bar.js +4 -3
  65. package/tabs/tab-header-bar.js.map +1 -1
  66. package/tabs/test-classes/styles.css.js +6 -0
  67. package/tabs/test-classes/styles.scoped.css +7 -0
  68. package/tabs/test-classes/styles.selectors.js +7 -0
  69. package/test-utils/dom/tabs/index.js +4 -3
  70. package/test-utils/dom/tabs/index.js.map +1 -1
  71. package/test-utils/selectors/tabs/index.js +4 -3
  72. package/test-utils/selectors/tabs/index.js.map +1 -1
  73. package/test-utils/tsconfig.tsbuildinfo +1 -1
@@ -191,7 +191,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
191
191
  SPDX-License-Identifier: Apache-2.0
192
192
  */
193
193
  /* stylelint-disable selector-max-type */
194
- .awsui_tabs-header_14rmt_1kz54_194:not(#\9) {
194
+ .awsui_tabs-header_14rmt_1wcao_194:not(#\9) {
195
195
  margin-block: 0;
196
196
  margin-inline: 0;
197
197
  padding-block: 0;
@@ -199,7 +199,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
199
199
  display: flex;
200
200
  }
201
201
 
202
- .awsui_tabs-header-list_14rmt_1kz54_202:not(#\9) {
202
+ .awsui_tabs-header-list_14rmt_1wcao_202:not(#\9) {
203
203
  margin-block: 0;
204
204
  margin-inline: 0;
205
205
  padding-block: 0;
@@ -212,33 +212,33 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
212
212
  -ms-overflow-style: none; /* Internet Explorer 10+ */
213
213
  scrollbar-width: none; /* Firefox */
214
214
  }
215
- .awsui_tabs-header-list_14rmt_1kz54_202:not(#\9)::-webkit-scrollbar {
215
+ .awsui_tabs-header-list_14rmt_1wcao_202:not(#\9)::-webkit-scrollbar {
216
216
  display: none; /* Safari and Chrome */
217
217
  }
218
218
 
219
- .awsui_pagination-button_14rmt_1kz54_219:not(#\9) {
219
+ .awsui_pagination-button_14rmt_1wcao_219:not(#\9) {
220
220
  margin-block: var(--space-scaled-s-aqzyko, 12px);
221
221
  margin-inline: 0;
222
222
  padding-block: 0;
223
223
  padding-inline: var(--space-xxs-p8yyaw, 4px);
224
224
  display: flex;
225
225
  }
226
- .awsui_pagination-button-left_14rmt_1kz54_226:not(#\9) {
226
+ .awsui_pagination-button-left_14rmt_1wcao_226:not(#\9) {
227
227
  border-inline-end: var(--border-divider-section-width-1061zr, 1px) solid var(--color-border-control-disabled-bv2kkn, #d1d5db);
228
228
  }
229
- .awsui_pagination-button-left-scrollable_14rmt_1kz54_229:not(#\9) {
229
+ .awsui_pagination-button-left-scrollable_14rmt_1wcao_229:not(#\9) {
230
230
  z-index: 1;
231
231
  box-shadow: 5px 0px 4px -3px var(--color-border-tabs-shadow-w5xpb4, rgba(0, 7, 22, 0.12)), 1px 0px 0px 0px var(--color-border-tabs-shadow-w5xpb4, rgba(0, 7, 22, 0.12));
232
232
  }
233
- .awsui_pagination-button-right_14rmt_1kz54_233:not(#\9) {
233
+ .awsui_pagination-button-right_14rmt_1wcao_233:not(#\9) {
234
234
  border-inline-start: var(--border-divider-section-width-1061zr, 1px) solid var(--color-border-control-disabled-bv2kkn, #d1d5db);
235
235
  }
236
- .awsui_pagination-button-right-scrollable_14rmt_1kz54_236:not(#\9) {
236
+ .awsui_pagination-button-right-scrollable_14rmt_1wcao_236:not(#\9) {
237
237
  z-index: 1;
238
238
  box-shadow: -5px 0px 4px -3px var(--color-border-tabs-shadow-w5xpb4, rgba(0, 7, 22, 0.12)), -1px 0px 0px 0 var(--color-border-tabs-shadow-w5xpb4, rgba(0, 7, 22, 0.12));
239
239
  }
240
240
 
241
- .awsui_tabs-tab_14rmt_1kz54_241:not(#\9) {
241
+ .awsui_tabs-tab_14rmt_1wcao_241:not(#\9) {
242
242
  list-style: none;
243
243
  padding-block: 0;
244
244
  padding-inline: 0;
@@ -247,7 +247,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
247
247
  max-inline-size: calc(90% - var(--space-l-t419sm, 20px));
248
248
  }
249
249
 
250
- .awsui_tabs-tab-label_14rmt_1kz54_250:not(#\9) {
250
+ .awsui_tabs-tab-label_14rmt_1wcao_250:not(#\9) {
251
251
  display: flex;
252
252
  align-items: center;
253
253
  padding-inline: var(--space-xs-zb16t3, 8px);
@@ -258,12 +258,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
258
258
  word-break: break-word;
259
259
  }
260
260
 
261
- .awsui_tabs-tab-dismiss_14rmt_1kz54_261:not(#\9),
262
- .awsui_tabs-tab-action_14rmt_1kz54_262:not(#\9) {
263
- /* Used as a selector for tests */
264
- }
265
-
266
- .awsui_tabs-tab-header-container_14rmt_1kz54_266:not(#\9) {
261
+ .awsui_tabs-tab-header-container_14rmt_1wcao_261:not(#\9) {
267
262
  position: relative;
268
263
  border-block: var(--border-divider-section-width-1061zr, 1px) solid transparent;
269
264
  border-inline: var(--border-divider-section-width-1061zr, 1px) solid transparent;
@@ -271,18 +266,18 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
271
266
  display: flex;
272
267
  align-items: stretch;
273
268
  }
274
- .awsui_tabs-tab-header-container_14rmt_1kz54_266:not(#\9), .awsui_tabs-tab-header-container_14rmt_1kz54_266 > button:not(#\9) {
269
+ .awsui_tabs-tab-header-container_14rmt_1wcao_261:not(#\9), .awsui_tabs-tab-header-container_14rmt_1wcao_261 > button:not(#\9) {
275
270
  background-color: transparent;
276
271
  }
277
- .awsui_tabs-tab-header-container_14rmt_1kz54_266 > .awsui_tabs-tab-dismiss_14rmt_1kz54_261:not(#\9), .awsui_tabs-tab-header-container_14rmt_1kz54_266 > .awsui_tabs-tab-action_14rmt_1kz54_262:not(#\9) {
272
+ .awsui_tabs-tab-header-container_14rmt_1wcao_261 > .awsui_tabs-tab-dismiss_14rmt_1wcao_272:not(#\9), .awsui_tabs-tab-header-container_14rmt_1wcao_261 > .awsui_tabs-tab-action_14rmt_1wcao_272:not(#\9) {
278
273
  display: flex;
279
274
  align-items: center;
280
275
  }
281
- .awsui_tabs-tab-header-container_14rmt_1kz54_266.awsui_refresh_14rmt_1kz54_281 > span:not(#\9):first-of-type {
276
+ .awsui_tabs-tab-header-container_14rmt_1wcao_261.awsui_refresh_14rmt_1wcao_276 > span:not(#\9):first-of-type {
282
277
  margin-inline-start: calc(-1 * var(--space-scaled-xs-26e2du, 8px));
283
278
  }
284
279
 
285
- .awsui_tabs-tab-header-container_14rmt_1kz54_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1kz54_285):after {
280
+ .awsui_tabs-tab-header-container_14rmt_1wcao_261:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1wcao_280):after {
286
281
  content: "";
287
282
  position: absolute;
288
283
  inset-inline-start: 0;
@@ -296,35 +291,35 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
296
291
  background: var(--color-border-tabs-underline-f1qo5r, #0972d3);
297
292
  opacity: 0;
298
293
  }
299
- .awsui_tabs-tab-header-container_14rmt_1kz54_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1kz54_285).awsui_refresh_14rmt_1kz54_281:after {
294
+ .awsui_tabs-tab-header-container_14rmt_1wcao_261:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1wcao_280).awsui_refresh_14rmt_1wcao_276:after {
300
295
  transition: opacity var(--motion-duration-refresh-only-medium-nf6485, 165ms) var(--motion-easing-refresh-only-c-vg1m9h, cubic-bezier(0.84, 0, 0.16, 1));
301
296
  }
302
297
  @media (prefers-reduced-motion: reduce) {
303
- .awsui_tabs-tab-header-container_14rmt_1kz54_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1kz54_285).awsui_refresh_14rmt_1kz54_281:after {
298
+ .awsui_tabs-tab-header-container_14rmt_1wcao_261:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1wcao_280).awsui_refresh_14rmt_1wcao_276:after {
304
299
  animation: none;
305
300
  transition: none;
306
301
  }
307
302
  }
308
- .awsui-motion-disabled .awsui_tabs-tab-header-container_14rmt_1kz54_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1kz54_285).awsui_refresh_14rmt_1kz54_281:after, .awsui-mode-entering .awsui_tabs-tab-header-container_14rmt_1kz54_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1kz54_285).awsui_refresh_14rmt_1kz54_281:after {
303
+ .awsui-motion-disabled .awsui_tabs-tab-header-container_14rmt_1wcao_261:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1wcao_280).awsui_refresh_14rmt_1wcao_276:after, .awsui-mode-entering .awsui_tabs-tab-header-container_14rmt_1wcao_261:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1wcao_280).awsui_refresh_14rmt_1wcao_276:after {
309
304
  animation: none;
310
305
  transition: none;
311
306
  }
312
307
 
313
- .awsui_tabs-tab_14rmt_1kz54_241:not(#\9):not(:last-child) > .awsui_tabs-tab-header-container_14rmt_1kz54_266 {
308
+ .awsui_tabs-tab_14rmt_1wcao_241:not(#\9):not(:last-child) > .awsui_tabs-tab-header-container_14rmt_1wcao_261 {
314
309
  margin-inline-end: calc(-1 * var(--border-divider-section-width-1061zr, 1px));
315
310
  }
316
- .awsui_tabs-tab_14rmt_1kz54_241:not(#\9):not(:last-child) > .awsui_tabs-tab-header-container_14rmt_1kz54_266:before {
311
+ .awsui_tabs-tab_14rmt_1wcao_241:not(#\9):not(:last-child) > .awsui_tabs-tab-header-container_14rmt_1wcao_261:before {
317
312
  content: "";
318
313
  position: absolute;
319
314
  border-inline-end: var(--border-divider-section-width-1061zr, 1px) solid var(--color-border-tabs-divider-6vpso4, #b6bec9);
320
315
  inset: var(--space-scaled-s-aqzyko, 12px) 0;
321
316
  opacity: 1;
322
317
  }
323
- .awsui_tabs-tab_14rmt_1kz54_241:not(#\9):not(:last-child) > .awsui_tabs-tab-header-container_14rmt_1kz54_266.awsui_refresh_14rmt_1kz54_281:before {
318
+ .awsui_tabs-tab_14rmt_1wcao_241:not(#\9):not(:last-child) > .awsui_tabs-tab-header-container_14rmt_1wcao_261.awsui_refresh_14rmt_1wcao_276:before {
324
319
  inset: calc(var(--space-static-s-n2eb28, 12px) - var(--border-active-width-9dmqf4, 4px)) 0;
325
320
  }
326
321
 
327
- .awsui_tabs-tab-link_14rmt_1kz54_327:not(#\9) {
322
+ .awsui_tabs-tab-link_14rmt_1wcao_322:not(#\9) {
328
323
  position: relative;
329
324
  display: flex;
330
325
  align-items: stretch;
@@ -345,27 +340,27 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
345
340
  -webkit-font-smoothing: var(--font-smoothing-webkit-m8nc84, antialiased);
346
341
  -moz-osx-font-smoothing: var(--font-smoothing-moz-osx-foywby, grayscale);
347
342
  }
348
- .awsui_tabs-tab-link_14rmt_1kz54_327.awsui_refresh_14rmt_1kz54_281:not(#\9) {
343
+ .awsui_tabs-tab-link_14rmt_1wcao_322.awsui_refresh_14rmt_1wcao_276:not(#\9) {
349
344
  padding-block-start: calc(var(--space-static-xs-7sfb63, 8px) - 1px);
350
345
  padding-block-end: calc(var(--space-static-xs-7sfb63, 8px) - 1px);
351
346
  margin-block-start: 0;
352
347
  }
353
- .awsui_tabs-tab-link_14rmt_1kz54_327:not(#\9):hover {
348
+ .awsui_tabs-tab-link_14rmt_1wcao_322:not(#\9):hover {
354
349
  color: var(--color-text-accent-n2acxv, #0972d3);
355
350
  }
356
- .awsui_tabs-tab-link_14rmt_1kz54_327:not(#\9):focus {
351
+ .awsui_tabs-tab-link_14rmt_1wcao_322:not(#\9):focus {
357
352
  outline: none;
358
353
  }
359
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1kz54_327:not(#\9):focus {
354
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1wcao_322:not(#\9):focus {
360
355
  z-index: 1;
361
356
  position: relative;
362
357
  border-inline-end-color: transparent;
363
358
  }
364
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1kz54_327:not(#\9):focus {
359
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1wcao_322:not(#\9):focus {
365
360
  outline: 2px dotted transparent;
366
361
  outline-offset: calc(var(--space-tabs-focus-outline-gutter-xm37ly, -8px) - 1px);
367
362
  }
368
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1kz54_327:not(#\9):focus::before {
363
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1wcao_322:not(#\9):focus::before {
369
364
  content: " ";
370
365
  display: block;
371
366
  position: absolute;
@@ -380,46 +375,46 @@ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1kz54_327:not(#\9
380
375
  box-shadow: 0 0 0 2px var(--color-border-item-focused-b2ntyl, #0972d3);
381
376
  }
382
377
 
383
- .awsui_tabs-tab_14rmt_1kz54_241:not(#\9):first-child {
378
+ .awsui_tabs-tab_14rmt_1wcao_241:not(#\9):first-child {
384
379
  margin-inline-start: 1px;
385
380
  }
386
- .awsui_tabs-tab_14rmt_1kz54_241:not(#\9):first-child > .awsui_tabs-tab-header-container_14rmt_1kz54_266 {
381
+ .awsui_tabs-tab_14rmt_1wcao_241:not(#\9):first-child > .awsui_tabs-tab-header-container_14rmt_1wcao_261 {
387
382
  padding-inline-start: calc(var(--space-xs-zb16t3, 8px) - 1px);
388
383
  }
389
384
 
390
- .awsui_tabs-tab_14rmt_1kz54_241:not(#\9):last-child {
385
+ .awsui_tabs-tab_14rmt_1wcao_241:not(#\9):last-child {
391
386
  margin-inline-end: 1px;
392
387
  }
393
- .awsui_tabs-tab_14rmt_1kz54_241:not(#\9):last-child > .awsui_tabs-tab-header-container_14rmt_1kz54_266 {
388
+ .awsui_tabs-tab_14rmt_1wcao_241:not(#\9):last-child > .awsui_tabs-tab-header-container_14rmt_1wcao_261 {
394
389
  padding-inline-end: calc(var(--space-xs-zb16t3, 8px) - 1px);
395
390
  }
396
391
 
397
- .awsui_tabs-tab-disabled_14rmt_1kz54_285:not(#\9), .awsui_tabs-tab-disabled_14rmt_1kz54_285:not(#\9):hover {
392
+ .awsui_tabs-tab-disabled_14rmt_1wcao_280:not(#\9), .awsui_tabs-tab-disabled_14rmt_1wcao_280:not(#\9):hover {
398
393
  cursor: default;
399
394
  color: var(--color-text-interactive-disabled-z7a3t4, #9ba7b6);
400
395
  font-weight: var(--font-tabs-disabled-weight-1xcs5l, 700);
401
396
  }
402
397
 
403
- .awsui_tabs-tab-active_14rmt_1kz54_403:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1kz54_285) {
398
+ .awsui_tabs-tab-active_14rmt_1wcao_398:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1wcao_280) {
404
399
  color: var(--color-text-accent-n2acxv, #0972d3);
405
400
  }
406
- .awsui_tabs-tab-active_14rmt_1kz54_403:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1kz54_285):after {
401
+ .awsui_tabs-tab-active_14rmt_1wcao_398:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1wcao_280):after {
407
402
  opacity: 1;
408
403
  }
409
404
 
410
- .awsui_tabs-header-with-divider_14rmt_1kz54_410:not(#\9) {
405
+ .awsui_tabs-header-with-divider_14rmt_1wcao_405:not(#\9) {
411
406
  border-block-end: var(--border-divider-section-width-1061zr, 1px) solid var(--color-border-tabs-divider-6vpso4, #b6bec9);
412
407
  }
413
408
 
414
- .awsui_tabs-tab-focusable_14rmt_1kz54_414:not(#\9) {
409
+ .awsui_tabs-tab-focusable_14rmt_1wcao_409:not(#\9) {
415
410
  /* used to manage focusable logic */
416
411
  }
417
412
 
418
- .awsui_root_14rmt_1kz54_418:not(#\9) {
413
+ .awsui_root_14rmt_1wcao_413:not(#\9) {
419
414
  /* used in test-utils or tests */
420
415
  }
421
416
 
422
- .awsui_tabs_14rmt_1kz54_194:not(#\9) {
417
+ .awsui_tabs_14rmt_1wcao_194:not(#\9) {
423
418
  border-collapse: separate;
424
419
  border-spacing: 0;
425
420
  box-sizing: border-box;
@@ -457,21 +452,21 @@ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1kz54_327:not(#\9
457
452
  inline-size: 100%;
458
453
  }
459
454
 
460
- .awsui_tabs-content_14rmt_1kz54_459:not(#\9) {
455
+ .awsui_tabs-content_14rmt_1wcao_454:not(#\9) {
461
456
  display: none;
462
457
  }
463
458
 
464
- .awsui_fit-height_14rmt_1kz54_463:not(#\9) {
459
+ .awsui_fit-height_14rmt_1wcao_458:not(#\9) {
465
460
  display: flex;
466
461
  flex-direction: column;
467
462
  block-size: 100%;
468
463
  }
469
464
 
470
- .awsui_tabs-content-active_14rmt_1kz54_469:not(#\9) {
465
+ .awsui_tabs-content-active_14rmt_1wcao_464:not(#\9) {
471
466
  display: block;
472
467
  flex: 1;
473
468
  }
474
- body[data-awsui-focus-visible=true] .awsui_tabs-content-active_14rmt_1kz54_469:not(#\9):focus {
469
+ body[data-awsui-focus-visible=true] .awsui_tabs-content-active_14rmt_1wcao_464:not(#\9):focus {
475
470
  outline: 2px dotted transparent;
476
471
  outline-offset: 2px;
477
472
  border-start-start-radius: var(--border-radius-container-wqv1zi, 16px);
@@ -481,32 +476,32 @@ body[data-awsui-focus-visible=true] .awsui_tabs-content-active_14rmt_1kz54_469:n
481
476
  box-shadow: 0 0 0 2px var(--color-border-item-focused-b2ntyl, #0972d3);
482
477
  }
483
478
 
484
- .awsui_tabs-content-wrapper_14rmt_1kz54_483.awsui_with-paddings_14rmt_1kz54_483 > .awsui_tabs-content_14rmt_1kz54_459:not(#\9) {
479
+ .awsui_tabs-content-wrapper_14rmt_1wcao_478.awsui_with-paddings_14rmt_1wcao_478 > .awsui_tabs-content_14rmt_1wcao_454:not(#\9) {
485
480
  padding-block: var(--space-scaled-m-mo5yse, 16px);
486
481
  padding-inline: 0;
487
482
  }
488
- .awsui_fit-height_14rmt_1kz54_463 > .awsui_tabs-content-wrapper_14rmt_1kz54_483:not(#\9) {
483
+ .awsui_fit-height_14rmt_1wcao_458 > .awsui_tabs-content-wrapper_14rmt_1wcao_478:not(#\9) {
489
484
  flex: 1;
490
485
  display: flex;
491
486
  flex-direction: column;
492
487
  overflow: auto;
493
488
  }
494
489
 
495
- .awsui_fit-height_14rmt_1kz54_463 > .awsui_tabs-content-wrapper_14rmt_1kz54_483 > .awsui_tabs-container-content-wrapper_14rmt_1kz54_494:not(#\9) {
490
+ .awsui_fit-height_14rmt_1wcao_458 > .awsui_tabs-content-wrapper_14rmt_1wcao_478 > .awsui_tabs-container-content-wrapper_14rmt_1wcao_489:not(#\9) {
496
491
  block-size: 100%;
497
492
  display: flex;
498
493
  flex-direction: column;
499
494
  }
500
- .awsui_tabs-container-content-wrapper_14rmt_1kz54_494.awsui_with-paddings_14rmt_1kz54_483 > .awsui_tabs-content_14rmt_1kz54_459:not(#\9) {
495
+ .awsui_tabs-container-content-wrapper_14rmt_1wcao_489.awsui_with-paddings_14rmt_1wcao_478 > .awsui_tabs-content_14rmt_1wcao_454:not(#\9) {
501
496
  padding-block-start: var(--space-tabs-content-top-dedu0k, 12px);
502
497
  padding-block-end: var(--space-scaled-l-0hpmd7, 20px);
503
498
  padding-inline: var(--space-container-horizontal-wfukh3, 20px);
504
499
  }
505
500
 
506
- .awsui_disabled-reason-tooltip_14rmt_1kz54_505:not(#\9) {
501
+ .awsui_disabled-reason-tooltip_14rmt_1wcao_500:not(#\9) {
507
502
  /* used in test-utils or tests */
508
503
  }
509
504
 
510
- .awsui_tabs-tab-focused_14rmt_1kz54_509:not(#\9) {
505
+ .awsui_tabs-tab-focused_14rmt_1wcao_504:not(#\9) {
511
506
  /* used to manage focusable state for disabled with reason tabs */
512
507
  }
@@ -2,33 +2,33 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "tabs-header": "awsui_tabs-header_14rmt_1kz54_194",
6
- "tabs-header-list": "awsui_tabs-header-list_14rmt_1kz54_202",
7
- "pagination-button": "awsui_pagination-button_14rmt_1kz54_219",
8
- "pagination-button-left": "awsui_pagination-button-left_14rmt_1kz54_226",
9
- "pagination-button-left-scrollable": "awsui_pagination-button-left-scrollable_14rmt_1kz54_229",
10
- "pagination-button-right": "awsui_pagination-button-right_14rmt_1kz54_233",
11
- "pagination-button-right-scrollable": "awsui_pagination-button-right-scrollable_14rmt_1kz54_236",
12
- "tabs-tab": "awsui_tabs-tab_14rmt_1kz54_241",
13
- "tabs-tab-label": "awsui_tabs-tab-label_14rmt_1kz54_250",
14
- "tabs-tab-dismiss": "awsui_tabs-tab-dismiss_14rmt_1kz54_261",
15
- "tabs-tab-action": "awsui_tabs-tab-action_14rmt_1kz54_262",
16
- "tabs-tab-header-container": "awsui_tabs-tab-header-container_14rmt_1kz54_266",
17
- "refresh": "awsui_refresh_14rmt_1kz54_281",
18
- "tabs-tab-disabled": "awsui_tabs-tab-disabled_14rmt_1kz54_285",
19
- "tabs-tab-link": "awsui_tabs-tab-link_14rmt_1kz54_327",
20
- "tabs-tab-active": "awsui_tabs-tab-active_14rmt_1kz54_403",
21
- "tabs-header-with-divider": "awsui_tabs-header-with-divider_14rmt_1kz54_410",
22
- "tabs-tab-focusable": "awsui_tabs-tab-focusable_14rmt_1kz54_414",
23
- "root": "awsui_root_14rmt_1kz54_418",
24
- "tabs": "awsui_tabs_14rmt_1kz54_194",
25
- "tabs-content": "awsui_tabs-content_14rmt_1kz54_459",
26
- "fit-height": "awsui_fit-height_14rmt_1kz54_463",
27
- "tabs-content-active": "awsui_tabs-content-active_14rmt_1kz54_469",
28
- "tabs-content-wrapper": "awsui_tabs-content-wrapper_14rmt_1kz54_483",
29
- "with-paddings": "awsui_with-paddings_14rmt_1kz54_483",
30
- "tabs-container-content-wrapper": "awsui_tabs-container-content-wrapper_14rmt_1kz54_494",
31
- "disabled-reason-tooltip": "awsui_disabled-reason-tooltip_14rmt_1kz54_505",
32
- "tabs-tab-focused": "awsui_tabs-tab-focused_14rmt_1kz54_509"
5
+ "tabs-header": "awsui_tabs-header_14rmt_1wcao_194",
6
+ "tabs-header-list": "awsui_tabs-header-list_14rmt_1wcao_202",
7
+ "pagination-button": "awsui_pagination-button_14rmt_1wcao_219",
8
+ "pagination-button-left": "awsui_pagination-button-left_14rmt_1wcao_226",
9
+ "pagination-button-left-scrollable": "awsui_pagination-button-left-scrollable_14rmt_1wcao_229",
10
+ "pagination-button-right": "awsui_pagination-button-right_14rmt_1wcao_233",
11
+ "pagination-button-right-scrollable": "awsui_pagination-button-right-scrollable_14rmt_1wcao_236",
12
+ "tabs-tab": "awsui_tabs-tab_14rmt_1wcao_241",
13
+ "tabs-tab-label": "awsui_tabs-tab-label_14rmt_1wcao_250",
14
+ "tabs-tab-header-container": "awsui_tabs-tab-header-container_14rmt_1wcao_261",
15
+ "tabs-tab-dismiss": "awsui_tabs-tab-dismiss_14rmt_1wcao_272",
16
+ "tabs-tab-action": "awsui_tabs-tab-action_14rmt_1wcao_272",
17
+ "refresh": "awsui_refresh_14rmt_1wcao_276",
18
+ "tabs-tab-disabled": "awsui_tabs-tab-disabled_14rmt_1wcao_280",
19
+ "tabs-tab-link": "awsui_tabs-tab-link_14rmt_1wcao_322",
20
+ "tabs-tab-active": "awsui_tabs-tab-active_14rmt_1wcao_398",
21
+ "tabs-header-with-divider": "awsui_tabs-header-with-divider_14rmt_1wcao_405",
22
+ "tabs-tab-focusable": "awsui_tabs-tab-focusable_14rmt_1wcao_409",
23
+ "root": "awsui_root_14rmt_1wcao_413",
24
+ "tabs": "awsui_tabs_14rmt_1wcao_194",
25
+ "tabs-content": "awsui_tabs-content_14rmt_1wcao_454",
26
+ "fit-height": "awsui_fit-height_14rmt_1wcao_458",
27
+ "tabs-content-active": "awsui_tabs-content-active_14rmt_1wcao_464",
28
+ "tabs-content-wrapper": "awsui_tabs-content-wrapper_14rmt_1wcao_478",
29
+ "with-paddings": "awsui_with-paddings_14rmt_1wcao_478",
30
+ "tabs-container-content-wrapper": "awsui_tabs-container-content-wrapper_14rmt_1wcao_489",
31
+ "disabled-reason-tooltip": "awsui_disabled-reason-tooltip_14rmt_1wcao_500",
32
+ "tabs-tab-focused": "awsui_tabs-tab-focused_14rmt_1wcao_504"
33
33
  };
34
34
 
@@ -1 +1 @@
1
- {"version":3,"file":"tab-header-bar.d.ts","sourceRoot":"","sources":["../../../src/tabs/tab-header-bar.tsx"],"names":[],"mappings":";AAwBA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAgCzC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC;IACzD,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACtC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC;CACrC;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,WAAW,GACZ,EAAE,iBAAiB,eAgYnB;AAgED,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,UAEzF"}
1
+ {"version":3,"file":"tab-header-bar.d.ts","sourceRoot":"","sources":["../../../src/tabs/tab-header-bar.tsx"],"names":[],"mappings":";AAwBA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAyCzC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC;IACzD,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACtC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC;CACrC;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,WAAW,GACZ,EAAE,iBAAiB,eAgYnB;AAgED,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,UAEzF"}
@@ -17,11 +17,12 @@ import { circleIndex } from '../internal/utils/circle-index';
17
17
  import handleKey from '../internal/utils/handle-key';
18
18
  import { hasHorizontalOverflow, hasInlineEndOverflow, hasInlineStartOverflow, onPaginationClick, scrollIntoView, } from './scroll-utils';
19
19
  import styles from './styles.css.js';
20
+ import testUtilStyles from './test-classes/styles.css.js';
20
21
  const tabSelector = `.${styles['tabs-tab-link']}`;
21
22
  const focusedTabSelector = `[role="tab"].${styles['tabs-tab-focused']}`;
22
23
  const focusableTabSelector = `.${styles['tabs-tab-focusable']}`;
23
- function dismissButton(dismissLabel, dismissDisabled, onDismiss) {
24
- return (React.createElement(InternalButton, { onClick: onDismiss, variant: "icon", iconName: "close", formAction: "none", ariaLabel: dismissLabel, disabled: dismissDisabled }));
24
+ function dismissButton({ dismissLabel, dismissDisabled, onDismiss, tabId, }) {
25
+ return (React.createElement(InternalButton, { onClick: onDismiss, variant: "icon", iconName: "close", formAction: "none", ariaLabel: dismissLabel, disabled: dismissDisabled, className: testUtilStyles['tab-dismiss-button'], "data-testid": `awsui-tab-dismiss-button-${tabId}` }));
25
26
  }
26
27
  export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace, ariaLabel, ariaLabelledby, i18nStrings, }) {
27
28
  const headerBarRef = useRef(null);
@@ -317,7 +318,7 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
317
318
  React.createElement("div", Object.assign({ className: tabHeaderContainerClasses }, tabHeaderContainerAriaProps),
318
319
  React.createElement(TabTrigger, { ref: setElement, tab: tab, elementProps: commonProps }),
319
320
  action && React.createElement("span", { className: tabActionClasses }, action),
320
- dismissible && (React.createElement("span", { className: styles['tabs-tab-dismiss'] }, dismissButton(dismissLabel, dismissDisabled, handleDismiss))))));
321
+ dismissible && (React.createElement("span", { className: styles['tabs-tab-dismiss'] }, dismissButton({ dismissLabel, dismissDisabled, onDismiss: handleDismiss, tabId: tab.id }))))));
321
322
  }
322
323
  }
323
324
  const TabTrigger = forwardRef(({ tab, elementProps, }, ref) => {
@@ -1 +1 @@
1
- {"version":3,"file":"tab-header-bar.js","sourceRoot":"","sources":["../../../src/tabs/tab-header-bar.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { useContainerQuery } from '@cloudscape-design/component-toolkit';\n\nimport { ButtonProps } from '../button/interfaces';\nimport { InternalButton } from '../button/internal';\nimport { useInternalI18n } from '../i18n/context';\nimport { getAllFocusables } from '../internal/components/focus-lock/utils';\nimport Tooltip from '../internal/components/tooltip';\nimport {\n SingleTabStopNavigationAPI,\n SingleTabStopNavigationProvider,\n useSingleTabStopNavigation,\n} from '../internal/context/single-tab-stop-navigation-context';\nimport { hasModifierKeys, isPlainLeftClick } from '../internal/events';\nimport useHiddenDescription from '../internal/hooks/use-hidden-description';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { KeyCode } from '../internal/keycode';\nimport { circleIndex } from '../internal/utils/circle-index';\nimport handleKey from '../internal/utils/handle-key';\nimport { TabsProps } from './interfaces';\nimport {\n hasHorizontalOverflow,\n hasInlineEndOverflow,\n hasInlineStartOverflow,\n onPaginationClick,\n scrollIntoView,\n} from './scroll-utils';\n\nimport styles from './styles.css.js';\n\nconst tabSelector = `.${styles['tabs-tab-link']}`;\nconst focusedTabSelector = `[role=\"tab\"].${styles['tabs-tab-focused']}`;\nconst focusableTabSelector = `.${styles['tabs-tab-focusable']}`;\n\nfunction dismissButton(\n dismissLabel: TabsProps.Tab['dismissLabel'],\n dismissDisabled: TabsProps.Tab['dismissDisabled'],\n onDismiss: TabsProps.Tab['onDismiss']\n) {\n return (\n <InternalButton\n onClick={onDismiss}\n variant=\"icon\"\n iconName=\"close\"\n formAction=\"none\"\n ariaLabel={dismissLabel}\n disabled={dismissDisabled}\n />\n );\n}\n\nexport interface TabHeaderBarProps {\n onChange: (changeDetail: TabsProps.ChangeDetail) => void;\n activeTabId: TabsProps['activeTabId'];\n tabs: TabsProps['tabs'];\n variant: TabsProps['variant'];\n idNamespace: string;\n ariaLabel?: string;\n ariaLabelledby?: string;\n i18nStrings?: TabsProps.I18nStrings;\n}\n\nexport function TabHeaderBar({\n onChange,\n activeTabId,\n tabs,\n variant,\n idNamespace,\n ariaLabel,\n ariaLabelledby,\n i18nStrings,\n}: TabHeaderBarProps) {\n const headerBarRef = useRef<HTMLUListElement>(null);\n const activeTabHeaderRef = useRef<null | HTMLElement>(null);\n const inlineStartOverflowButton = useRef<HTMLElement>(null);\n const i18n = useInternalI18n('tabs');\n\n const isVisualRefresh = useVisualRefresh();\n\n const containerObjectRef = useRef<HTMLDivElement>(null);\n const [widthChange, containerMeasureRef] = useContainerQuery<number>(rect => rect.contentBoxWidth);\n const containerRef = useMergeRefs(containerObjectRef, containerMeasureRef);\n const tabRefs = useRef<Map<string, HTMLElement>>(new Map());\n const [horizontalOverflow, setHorizontalOverflow] = useState(false);\n const [inlineStartOverflow, setInlineStartOverflow] = useState(false);\n const [inlineEndOverflow, setInlineEndOverflow] = useState(false);\n const [focusedTabId, setFocusedTabId] = useState(activeTabId);\n const [previousActiveTabId, setPreviousActiveTabId] = useState<string | undefined>(activeTabId);\n const hasActionOrDismissible = tabs.some(tab => tab.action || tab.dismissible);\n const tabActionAttributes = hasActionOrDismissible\n ? {\n role: 'application',\n 'aria-roledescription': i18n(\n 'i18nStrings.tabsWithActionsAriaRoleDescription',\n i18nStrings?.tabsWithActionsAriaRoleDescription\n ),\n }\n : {\n role: 'tablist',\n };\n\n useEffect(() => {\n if (headerBarRef.current) {\n setHorizontalOverflow(hasHorizontalOverflow(headerBarRef.current, inlineStartOverflowButton));\n setInlineStartOverflow(hasInlineStartOverflow(headerBarRef.current));\n setInlineEndOverflow(hasInlineEndOverflow(headerBarRef.current));\n }\n }, [widthChange, tabs]);\n\n const scrollIntoViewIfPossible = (smooth: boolean) => {\n if (!activeTabId) {\n return;\n }\n const activeTabRef = tabRefs.current.get(activeTabId);\n if (activeTabRef && headerBarRef.current) {\n scrollIntoView(activeTabRef, headerBarRef.current, smooth);\n }\n };\n\n useEffect(() => {\n // Delay scrollIntoView as the position is depending on parent elements\n // (effects are called inside-out in the component tree).\n // Wait one frame to allow parents to complete it's calculation.\n requestAnimationFrame(() => {\n scrollIntoViewIfPossible(false);\n });\n // Non-smooth scrolling should not be called upon activeId change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [horizontalOverflow, widthChange, tabs.length]);\n\n useEffect(() => {\n scrollIntoViewIfPossible(true);\n // Smooth scrolling should only be called upon activeId change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeTabId]);\n\n useEffect(() => {\n /*\n When the selected tab changes and we are currently already focused on a tab,\n move the focus to the newly selected tab.\n */\n if (headerBarRef.current?.contains(document.activeElement)) {\n if (document.activeElement !== activeTabHeaderRef.current) {\n activeTabHeaderRef.current?.focus({ preventScroll: true });\n }\n }\n }, [activeTabId]);\n\n const onScroll = () => {\n if (headerBarRef.current) {\n setInlineStartOverflow(hasInlineStartOverflow(headerBarRef.current));\n setInlineEndOverflow(hasInlineEndOverflow(headerBarRef.current));\n }\n };\n\n const classes = clsx({\n [styles['tabs-header']]: true,\n [styles['tabs-header-with-divider']]: variant === 'default' || isVisualRefresh,\n });\n\n const leftButtonClasses = clsx({\n [styles['pagination-button']]: true,\n [styles['pagination-button-left']]: true,\n [styles['pagination-button-left-scrollable']]: inlineStartOverflow,\n });\n\n const rightButtonClasses = clsx({\n [styles['pagination-button']]: true,\n [styles['pagination-button-right']]: true,\n [styles['pagination-button-right-scrollable']]: inlineEndOverflow,\n });\n\n const navigationAPI = useRef<SingleTabStopNavigationAPI>(null);\n\n function getNextFocusTarget(): null | HTMLElement {\n if (!containerObjectRef.current) {\n return null;\n }\n const tabElements: HTMLButtonElement[] = Array.from(containerObjectRef.current.querySelectorAll(tabSelector));\n return tabElements.find(tab => tab.matches(focusedTabSelector)) ?? tabElements.find(tab => !tab.disabled) ?? null;\n }\n\n function onUnregisterActive(focusableElement: HTMLElement) {\n const isFocusableActionOrDismissible = !focusableElement.classList.contains(styles['tabs-tab-link']);\n if (!isFocusableActionOrDismissible) {\n const nextFocusTarget = navigationAPI.current?.getFocusTarget();\n const tabLinkButton = nextFocusTarget?.querySelector(`.${styles['tabs-tab-link']}`) as HTMLElement;\n tabLinkButton?.focus();\n }\n }\n\n useEffect(() => {\n navigationAPI.current?.updateFocusTarget();\n });\n function onFocus() {\n navigationAPI.current?.updateFocusTarget();\n }\n function onBlur() {\n navigationAPI.current?.updateFocusTarget();\n }\n\n function onKeyDown(event: React.KeyboardEvent) {\n const focusTarget = document.activeElement;\n const specialKeys = [KeyCode.right, KeyCode.left, KeyCode.end, KeyCode.home, KeyCode.pageUp, KeyCode.pageDown];\n const isActionOpen = document.querySelector(`.${styles['tabs-tab-action']} [aria-expanded=\"true\"]`);\n const isDismissOrActionFocused = !focusTarget?.classList.contains(styles['tabs-tab-link']);\n\n if (isActionOpen) {\n return;\n }\n if (event.key === 'Tab' && !event.shiftKey && isDismissOrActionFocused) {\n event.preventDefault();\n const panelId = `${idNamespace}-${activeTabId}-panel`;\n const panel = document.getElementById(panelId);\n panel?.focus();\n }\n if (hasModifierKeys(event) || specialKeys.indexOf(event.keyCode) === -1) {\n return;\n }\n if (!containerObjectRef.current || !focusTarget) {\n return;\n }\n event.preventDefault();\n\n const focusables = getFocusablesFrom(containerObjectRef.current);\n const activeIndex = document.activeElement instanceof HTMLElement ? focusables.indexOf(document.activeElement) : -1;\n handleKey(event as any, {\n onHome: () => focusElement(focusables[0]),\n onEnd: () => focusElement(focusables[focusables.length - 1]),\n onInlineStart: () => focusElement(focusables[circleIndex(activeIndex - 1, [0, focusables.length - 1])]),\n onInlineEnd: () => focusElement(focusables[circleIndex(activeIndex + 1, [0, focusables.length - 1])]),\n onPageDown: () => inlineEndOverflow && onPaginationClick(headerBarRef, 'forward'),\n onPageUp: () => inlineStartOverflow && onPaginationClick(headerBarRef, 'backward'),\n });\n }\n function focusElement(element: HTMLElement) {\n element.focus();\n // If focusable element is a tab - fire the onChange for it.\n const tabsById = tabs.reduce((map, tab) => map.set(tab.id, tab), new Map<string, TabsProps.Tab>());\n for (const [tabId, focusTargetTabTriggerElement] of tabRefs.current.entries()) {\n const focusTargetTabLabelElement = focusTargetTabTriggerElement?.querySelector(`.${styles['tabs-tab-link']}`);\n if (tabId !== activeTabId && focusTargetTabLabelElement === element) {\n setPreviousActiveTabId(tabId);\n setFocusedTabId(tabId);\n\n if (!tabsById.get(tabId)?.disabled) {\n onChange({ activeTabId: tabId, activeTabHref: tabsById.get(tabId)?.href });\n }\n break;\n }\n }\n }\n // List all non-disabled and registered focusables: those are eligible for keyboard navigation.\n function getFocusablesFrom(target: HTMLElement) {\n function isElementRegistered(element: HTMLElement) {\n return navigationAPI.current?.isRegistered(element) ?? false;\n }\n function isElementFocusable(element: HTMLElement) {\n if (element instanceof HTMLButtonElement) {\n return !element.disabled || element.closest(focusableTabSelector);\n }\n\n return element.matches(focusableTabSelector);\n }\n return getAllFocusables(target).filter(el => isElementRegistered(el) && isElementFocusable(el));\n }\n\n const TabList = hasActionOrDismissible ? 'div' : 'ul';\n\n return (\n //converted span to div as list should not be a child of span for HTML validation\n <div className={classes} ref={containerRef}>\n {horizontalOverflow && (\n <span ref={inlineStartOverflowButton} className={leftButtonClasses}>\n <InternalButton\n formAction=\"none\"\n variant=\"icon\"\n iconName=\"angle-left\"\n disabled={!inlineStartOverflow}\n __focusable={true}\n onClick={() => onPaginationClick(headerBarRef, 'backward')}\n ariaLabel={i18n('i18nStrings.scrollLeftAriaLabel', i18nStrings?.scrollLeftAriaLabel)}\n />\n </span>\n )}\n <SingleTabStopNavigationProvider\n ref={navigationAPI}\n navigationActive={true}\n getNextFocusTarget={getNextFocusTarget}\n onUnregisterActive={onUnregisterActive}\n >\n <TabList\n {...tabActionAttributes}\n className={styles['tabs-header-list']}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n ref={headerBarRef as never}\n onScroll={onScroll}\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n {tabs.map(renderTabHeader)}\n </TabList>\n </SingleTabStopNavigationProvider>\n {horizontalOverflow && (\n <span className={rightButtonClasses}>\n <InternalButton\n formAction=\"none\"\n variant=\"icon\"\n iconName=\"angle-right\"\n disabled={!inlineEndOverflow}\n __focusable={true}\n onClick={() => onPaginationClick(headerBarRef, 'forward')}\n ariaLabel={i18n('i18nStrings.scrollRightAriaLabel', i18nStrings?.scrollRightAriaLabel)}\n />\n </span>\n )}\n </div>\n );\n\n function renderTabHeader(tab: TabsProps.Tab) {\n const { dismissible, dismissLabel, dismissDisabled, action, onDismiss } = tab;\n const isActive = activeTabId === tab.id && !tab.disabled;\n\n const clickTab = (event: React.MouseEvent) => {\n if (tab.disabled) {\n event.preventDefault();\n return;\n }\n\n // if the primary mouse button is clicked with a modifier key, the browser will handle opening a new tab\n const specialKey = !isPlainLeftClick(event);\n if (specialKey && tab.href) {\n return;\n }\n\n event.preventDefault();\n // for browsers that do not focus buttons on button click\n if (!tab.href) {\n const clickedTabRef = tabRefs.current.get(tab.id) as undefined | HTMLButtonElement;\n if (clickedTabRef) {\n if (clickedTabRef && clickedTabRef !== document.activeElement) {\n clickedTabRef.focus({ preventScroll: true });\n }\n }\n }\n\n if (tab.id === activeTabId) {\n return;\n }\n\n setFocusedTabId(tab.id);\n setPreviousActiveTabId(tab.id);\n onChange({ activeTabId: tab.id, activeTabHref: tab.href });\n };\n\n const classes = clsx({\n [styles['tabs-tab-link']]: true,\n [styles.refresh]: isVisualRefresh,\n [styles['tabs-tab-active']]: activeTabId === tab.id && !tab.disabled,\n [styles['tabs-tab-focused']]: focusedTabId === tab.id,\n [styles['tabs-tab-active']]: isActive,\n [styles['tabs-tab-disabled']]: tab.disabled,\n [styles['tabs-tab-focusable']]: !tab.disabled || (tab.disabled && !!tab.disabledReason),\n });\n\n const tabHeaderContainerClasses = clsx({\n [styles['tabs-tab-header-container']]: true,\n [styles.refresh]: isVisualRefresh,\n [styles['tabs-tab-active']]: isActive,\n [styles['tabs-tab-disabled']]: tab.disabled,\n [styles['tabs-tab-focusable']]: !tab.disabled || (tab.disabled && !!tab.disabledReason),\n });\n\n const tabActionClasses = clsx({\n [styles['tabs-tab-action']]: true,\n [styles['tabs-tab-active']]: isActive,\n });\n\n const commonProps: (JSX.IntrinsicElements['a'] | JSX.IntrinsicElements['button']) & { 'data-testid': string } = {\n className: classes,\n 'aria-controls': `${idNamespace}-${tab.id}-panel`,\n 'data-testid': tab.id,\n id: getTabElementId({ namespace: idNamespace, tabId: tab.id }),\n onClick: clickTab,\n };\n\n const tabHeaderContainerAriaProps = hasActionOrDismissible\n ? {\n role: 'group',\n 'aria-labelledby': commonProps.id,\n }\n : {};\n\n if (!hasActionOrDismissible) {\n commonProps['aria-selected'] = activeTabId === tab.id;\n commonProps.role = 'tab';\n } else {\n commonProps['aria-expanded'] = activeTabId === tab.id;\n }\n\n if (tab.disabled) {\n commonProps['aria-disabled'] = 'true';\n }\n\n const setElement = (tabElement: null | HTMLElement) => {\n if (tab.id === activeTabId) {\n activeTabHeaderRef.current = tabElement;\n }\n tabRefs.current.set(tab.id, tabElement as HTMLElement);\n };\n\n const handleDismiss: ButtonProps['onClick'] = event => {\n if (!containerObjectRef.current || !onDismiss) {\n return;\n }\n const tabElements = getFocusablesFrom(containerObjectRef.current).filter(el =>\n el.classList.contains(styles['tabs-tab-link'])\n );\n const activeTabIndex = tabElements.findIndex(el => el.dataset.testid === tab.id);\n tabElements.splice(activeTabIndex, 1);\n let nextActive: HTMLElement | undefined;\n if (previousActiveTabId && previousActiveTabId !== tab.id) {\n nextActive = tabElements.find(el => el.dataset.testid === previousActiveTabId);\n } else {\n nextActive = tabElements[Math.min(tabElements.length - 1, activeTabIndex)];\n }\n if (nextActive && nextActive.dataset.testid) {\n onChange({ activeTabId: nextActive.dataset.testid });\n nextActive.focus();\n }\n onDismiss(event);\n };\n\n const TabItem = hasActionOrDismissible ? 'div' : 'li';\n return (\n <TabItem\n ref={(element: any) => tabRefs.current.set(tab.id, element as HTMLElement)}\n className={styles['tabs-tab']}\n role=\"presentation\"\n key={tab.id}\n >\n <div className={tabHeaderContainerClasses} {...tabHeaderContainerAriaProps}>\n <TabTrigger ref={setElement} tab={tab} elementProps={commonProps} />\n {action && <span className={tabActionClasses}>{action}</span>}\n {dismissible && (\n <span className={styles['tabs-tab-dismiss']}>\n {dismissButton(dismissLabel, dismissDisabled, handleDismiss)}\n </span>\n )}\n </div>\n </TabItem>\n );\n }\n}\n\nconst TabTrigger = forwardRef(\n (\n {\n tab,\n elementProps,\n }: { tab: TabsProps.Tab; elementProps: React.HTMLAttributes<HTMLAnchorElement | HTMLButtonElement> },\n ref: React.Ref<HTMLElement>\n ) => {\n const refObject = useRef<HTMLElement>(null);\n const tabLabelRefObject = useRef<HTMLElement>(null);\n const mergedRef = useMergeRefs(refObject, ref);\n const { tabIndex } = useSingleTabStopNavigation(refObject);\n const isDisabledWithReason = tab.disabled && !!tab.disabledReason;\n const [showTooltip, setShowTooltip] = useState(false);\n const { targetProps, descriptionEl } = useHiddenDescription(tab.disabledReason);\n const children = (\n <>\n <span className={styles['tabs-tab-label']} ref={tabLabelRefObject}>\n {tab.label}\n </span>\n {isDisabledWithReason && (\n <>\n {descriptionEl}\n {showTooltip && (\n <Tooltip\n className={styles['disabled-reason-tooltip']}\n trackRef={tabLabelRefObject}\n value={tab.disabledReason!}\n />\n )}\n </>\n )}\n </>\n );\n\n const handlers = {\n onFocus: () => setShowTooltip(true),\n onBlur: () => setShowTooltip(false),\n onMouseEnter: () => setShowTooltip(true),\n onMouseLeave: () => setShowTooltip(false),\n };\n\n const commonProps = {\n ...elementProps,\n ...(isDisabledWithReason ? targetProps : {}),\n ...(isDisabledWithReason ? handlers : {}),\n ref: mergedRef,\n tabIndex: tabIndex,\n };\n\n return tab.href ? (\n <a {...commonProps} href={tab.href}>\n {children}\n </a>\n ) : (\n <button {...commonProps} type=\"button\" disabled={tab.disabled && !isDisabledWithReason}>\n {children}\n </button>\n );\n }\n);\n\nexport function getTabElementId({ namespace, tabId }: { namespace: string; tabId: string }) {\n return namespace + '-' + tabId;\n}\n"]}
1
+ {"version":3,"file":"tab-header-bar.js","sourceRoot":"","sources":["../../../src/tabs/tab-header-bar.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { useContainerQuery } from '@cloudscape-design/component-toolkit';\n\nimport { ButtonProps } from '../button/interfaces';\nimport { InternalButton } from '../button/internal';\nimport { useInternalI18n } from '../i18n/context';\nimport { getAllFocusables } from '../internal/components/focus-lock/utils';\nimport Tooltip from '../internal/components/tooltip';\nimport {\n SingleTabStopNavigationAPI,\n SingleTabStopNavigationProvider,\n useSingleTabStopNavigation,\n} from '../internal/context/single-tab-stop-navigation-context';\nimport { hasModifierKeys, isPlainLeftClick } from '../internal/events';\nimport useHiddenDescription from '../internal/hooks/use-hidden-description';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { KeyCode } from '../internal/keycode';\nimport { circleIndex } from '../internal/utils/circle-index';\nimport handleKey from '../internal/utils/handle-key';\nimport { TabsProps } from './interfaces';\nimport {\n hasHorizontalOverflow,\n hasInlineEndOverflow,\n hasInlineStartOverflow,\n onPaginationClick,\n scrollIntoView,\n} from './scroll-utils';\n\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\n\nconst tabSelector = `.${styles['tabs-tab-link']}`;\nconst focusedTabSelector = `[role=\"tab\"].${styles['tabs-tab-focused']}`;\nconst focusableTabSelector = `.${styles['tabs-tab-focusable']}`;\n\nfunction dismissButton({\n dismissLabel,\n dismissDisabled,\n onDismiss,\n tabId,\n}: {\n dismissLabel?: string;\n dismissDisabled?: boolean;\n onDismiss: ButtonProps['onClick'];\n tabId: string;\n}) {\n return (\n <InternalButton\n onClick={onDismiss}\n variant=\"icon\"\n iconName=\"close\"\n formAction=\"none\"\n ariaLabel={dismissLabel}\n disabled={dismissDisabled}\n className={testUtilStyles['tab-dismiss-button']}\n data-testid={`awsui-tab-dismiss-button-${tabId}`}\n />\n );\n}\n\nexport interface TabHeaderBarProps {\n onChange: (changeDetail: TabsProps.ChangeDetail) => void;\n activeTabId: TabsProps['activeTabId'];\n tabs: TabsProps['tabs'];\n variant: TabsProps['variant'];\n idNamespace: string;\n ariaLabel?: string;\n ariaLabelledby?: string;\n i18nStrings?: TabsProps.I18nStrings;\n}\n\nexport function TabHeaderBar({\n onChange,\n activeTabId,\n tabs,\n variant,\n idNamespace,\n ariaLabel,\n ariaLabelledby,\n i18nStrings,\n}: TabHeaderBarProps) {\n const headerBarRef = useRef<HTMLUListElement>(null);\n const activeTabHeaderRef = useRef<null | HTMLElement>(null);\n const inlineStartOverflowButton = useRef<HTMLElement>(null);\n const i18n = useInternalI18n('tabs');\n\n const isVisualRefresh = useVisualRefresh();\n\n const containerObjectRef = useRef<HTMLDivElement>(null);\n const [widthChange, containerMeasureRef] = useContainerQuery<number>(rect => rect.contentBoxWidth);\n const containerRef = useMergeRefs(containerObjectRef, containerMeasureRef);\n const tabRefs = useRef<Map<string, HTMLElement>>(new Map());\n const [horizontalOverflow, setHorizontalOverflow] = useState(false);\n const [inlineStartOverflow, setInlineStartOverflow] = useState(false);\n const [inlineEndOverflow, setInlineEndOverflow] = useState(false);\n const [focusedTabId, setFocusedTabId] = useState(activeTabId);\n const [previousActiveTabId, setPreviousActiveTabId] = useState<string | undefined>(activeTabId);\n const hasActionOrDismissible = tabs.some(tab => tab.action || tab.dismissible);\n const tabActionAttributes = hasActionOrDismissible\n ? {\n role: 'application',\n 'aria-roledescription': i18n(\n 'i18nStrings.tabsWithActionsAriaRoleDescription',\n i18nStrings?.tabsWithActionsAriaRoleDescription\n ),\n }\n : {\n role: 'tablist',\n };\n\n useEffect(() => {\n if (headerBarRef.current) {\n setHorizontalOverflow(hasHorizontalOverflow(headerBarRef.current, inlineStartOverflowButton));\n setInlineStartOverflow(hasInlineStartOverflow(headerBarRef.current));\n setInlineEndOverflow(hasInlineEndOverflow(headerBarRef.current));\n }\n }, [widthChange, tabs]);\n\n const scrollIntoViewIfPossible = (smooth: boolean) => {\n if (!activeTabId) {\n return;\n }\n const activeTabRef = tabRefs.current.get(activeTabId);\n if (activeTabRef && headerBarRef.current) {\n scrollIntoView(activeTabRef, headerBarRef.current, smooth);\n }\n };\n\n useEffect(() => {\n // Delay scrollIntoView as the position is depending on parent elements\n // (effects are called inside-out in the component tree).\n // Wait one frame to allow parents to complete it's calculation.\n requestAnimationFrame(() => {\n scrollIntoViewIfPossible(false);\n });\n // Non-smooth scrolling should not be called upon activeId change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [horizontalOverflow, widthChange, tabs.length]);\n\n useEffect(() => {\n scrollIntoViewIfPossible(true);\n // Smooth scrolling should only be called upon activeId change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeTabId]);\n\n useEffect(() => {\n /*\n When the selected tab changes and we are currently already focused on a tab,\n move the focus to the newly selected tab.\n */\n if (headerBarRef.current?.contains(document.activeElement)) {\n if (document.activeElement !== activeTabHeaderRef.current) {\n activeTabHeaderRef.current?.focus({ preventScroll: true });\n }\n }\n }, [activeTabId]);\n\n const onScroll = () => {\n if (headerBarRef.current) {\n setInlineStartOverflow(hasInlineStartOverflow(headerBarRef.current));\n setInlineEndOverflow(hasInlineEndOverflow(headerBarRef.current));\n }\n };\n\n const classes = clsx({\n [styles['tabs-header']]: true,\n [styles['tabs-header-with-divider']]: variant === 'default' || isVisualRefresh,\n });\n\n const leftButtonClasses = clsx({\n [styles['pagination-button']]: true,\n [styles['pagination-button-left']]: true,\n [styles['pagination-button-left-scrollable']]: inlineStartOverflow,\n });\n\n const rightButtonClasses = clsx({\n [styles['pagination-button']]: true,\n [styles['pagination-button-right']]: true,\n [styles['pagination-button-right-scrollable']]: inlineEndOverflow,\n });\n\n const navigationAPI = useRef<SingleTabStopNavigationAPI>(null);\n\n function getNextFocusTarget(): null | HTMLElement {\n if (!containerObjectRef.current) {\n return null;\n }\n const tabElements: HTMLButtonElement[] = Array.from(containerObjectRef.current.querySelectorAll(tabSelector));\n return tabElements.find(tab => tab.matches(focusedTabSelector)) ?? tabElements.find(tab => !tab.disabled) ?? null;\n }\n\n function onUnregisterActive(focusableElement: HTMLElement) {\n const isFocusableActionOrDismissible = !focusableElement.classList.contains(styles['tabs-tab-link']);\n if (!isFocusableActionOrDismissible) {\n const nextFocusTarget = navigationAPI.current?.getFocusTarget();\n const tabLinkButton = nextFocusTarget?.querySelector(`.${styles['tabs-tab-link']}`) as HTMLElement;\n tabLinkButton?.focus();\n }\n }\n\n useEffect(() => {\n navigationAPI.current?.updateFocusTarget();\n });\n function onFocus() {\n navigationAPI.current?.updateFocusTarget();\n }\n function onBlur() {\n navigationAPI.current?.updateFocusTarget();\n }\n\n function onKeyDown(event: React.KeyboardEvent) {\n const focusTarget = document.activeElement;\n const specialKeys = [KeyCode.right, KeyCode.left, KeyCode.end, KeyCode.home, KeyCode.pageUp, KeyCode.pageDown];\n const isActionOpen = document.querySelector(`.${styles['tabs-tab-action']} [aria-expanded=\"true\"]`);\n const isDismissOrActionFocused = !focusTarget?.classList.contains(styles['tabs-tab-link']);\n\n if (isActionOpen) {\n return;\n }\n if (event.key === 'Tab' && !event.shiftKey && isDismissOrActionFocused) {\n event.preventDefault();\n const panelId = `${idNamespace}-${activeTabId}-panel`;\n const panel = document.getElementById(panelId);\n panel?.focus();\n }\n if (hasModifierKeys(event) || specialKeys.indexOf(event.keyCode) === -1) {\n return;\n }\n if (!containerObjectRef.current || !focusTarget) {\n return;\n }\n event.preventDefault();\n\n const focusables = getFocusablesFrom(containerObjectRef.current);\n const activeIndex = document.activeElement instanceof HTMLElement ? focusables.indexOf(document.activeElement) : -1;\n handleKey(event as any, {\n onHome: () => focusElement(focusables[0]),\n onEnd: () => focusElement(focusables[focusables.length - 1]),\n onInlineStart: () => focusElement(focusables[circleIndex(activeIndex - 1, [0, focusables.length - 1])]),\n onInlineEnd: () => focusElement(focusables[circleIndex(activeIndex + 1, [0, focusables.length - 1])]),\n onPageDown: () => inlineEndOverflow && onPaginationClick(headerBarRef, 'forward'),\n onPageUp: () => inlineStartOverflow && onPaginationClick(headerBarRef, 'backward'),\n });\n }\n function focusElement(element: HTMLElement) {\n element.focus();\n // If focusable element is a tab - fire the onChange for it.\n const tabsById = tabs.reduce((map, tab) => map.set(tab.id, tab), new Map<string, TabsProps.Tab>());\n for (const [tabId, focusTargetTabTriggerElement] of tabRefs.current.entries()) {\n const focusTargetTabLabelElement = focusTargetTabTriggerElement?.querySelector(`.${styles['tabs-tab-link']}`);\n if (tabId !== activeTabId && focusTargetTabLabelElement === element) {\n setPreviousActiveTabId(tabId);\n setFocusedTabId(tabId);\n\n if (!tabsById.get(tabId)?.disabled) {\n onChange({ activeTabId: tabId, activeTabHref: tabsById.get(tabId)?.href });\n }\n break;\n }\n }\n }\n // List all non-disabled and registered focusables: those are eligible for keyboard navigation.\n function getFocusablesFrom(target: HTMLElement) {\n function isElementRegistered(element: HTMLElement) {\n return navigationAPI.current?.isRegistered(element) ?? false;\n }\n function isElementFocusable(element: HTMLElement) {\n if (element instanceof HTMLButtonElement) {\n return !element.disabled || element.closest(focusableTabSelector);\n }\n\n return element.matches(focusableTabSelector);\n }\n return getAllFocusables(target).filter(el => isElementRegistered(el) && isElementFocusable(el));\n }\n\n const TabList = hasActionOrDismissible ? 'div' : 'ul';\n\n return (\n //converted span to div as list should not be a child of span for HTML validation\n <div className={classes} ref={containerRef}>\n {horizontalOverflow && (\n <span ref={inlineStartOverflowButton} className={leftButtonClasses}>\n <InternalButton\n formAction=\"none\"\n variant=\"icon\"\n iconName=\"angle-left\"\n disabled={!inlineStartOverflow}\n __focusable={true}\n onClick={() => onPaginationClick(headerBarRef, 'backward')}\n ariaLabel={i18n('i18nStrings.scrollLeftAriaLabel', i18nStrings?.scrollLeftAriaLabel)}\n />\n </span>\n )}\n <SingleTabStopNavigationProvider\n ref={navigationAPI}\n navigationActive={true}\n getNextFocusTarget={getNextFocusTarget}\n onUnregisterActive={onUnregisterActive}\n >\n <TabList\n {...tabActionAttributes}\n className={styles['tabs-header-list']}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n ref={headerBarRef as never}\n onScroll={onScroll}\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n {tabs.map(renderTabHeader)}\n </TabList>\n </SingleTabStopNavigationProvider>\n {horizontalOverflow && (\n <span className={rightButtonClasses}>\n <InternalButton\n formAction=\"none\"\n variant=\"icon\"\n iconName=\"angle-right\"\n disabled={!inlineEndOverflow}\n __focusable={true}\n onClick={() => onPaginationClick(headerBarRef, 'forward')}\n ariaLabel={i18n('i18nStrings.scrollRightAriaLabel', i18nStrings?.scrollRightAriaLabel)}\n />\n </span>\n )}\n </div>\n );\n\n function renderTabHeader(tab: TabsProps.Tab) {\n const { dismissible, dismissLabel, dismissDisabled, action, onDismiss } = tab;\n const isActive = activeTabId === tab.id && !tab.disabled;\n\n const clickTab = (event: React.MouseEvent) => {\n if (tab.disabled) {\n event.preventDefault();\n return;\n }\n\n // if the primary mouse button is clicked with a modifier key, the browser will handle opening a new tab\n const specialKey = !isPlainLeftClick(event);\n if (specialKey && tab.href) {\n return;\n }\n\n event.preventDefault();\n // for browsers that do not focus buttons on button click\n if (!tab.href) {\n const clickedTabRef = tabRefs.current.get(tab.id) as undefined | HTMLButtonElement;\n if (clickedTabRef) {\n if (clickedTabRef && clickedTabRef !== document.activeElement) {\n clickedTabRef.focus({ preventScroll: true });\n }\n }\n }\n\n if (tab.id === activeTabId) {\n return;\n }\n\n setFocusedTabId(tab.id);\n setPreviousActiveTabId(tab.id);\n onChange({ activeTabId: tab.id, activeTabHref: tab.href });\n };\n\n const classes = clsx({\n [styles['tabs-tab-link']]: true,\n [styles.refresh]: isVisualRefresh,\n [styles['tabs-tab-active']]: activeTabId === tab.id && !tab.disabled,\n [styles['tabs-tab-focused']]: focusedTabId === tab.id,\n [styles['tabs-tab-active']]: isActive,\n [styles['tabs-tab-disabled']]: tab.disabled,\n [styles['tabs-tab-focusable']]: !tab.disabled || (tab.disabled && !!tab.disabledReason),\n });\n\n const tabHeaderContainerClasses = clsx({\n [styles['tabs-tab-header-container']]: true,\n [styles.refresh]: isVisualRefresh,\n [styles['tabs-tab-active']]: isActive,\n [styles['tabs-tab-disabled']]: tab.disabled,\n [styles['tabs-tab-focusable']]: !tab.disabled || (tab.disabled && !!tab.disabledReason),\n });\n\n const tabActionClasses = clsx({\n [styles['tabs-tab-action']]: true,\n [styles['tabs-tab-active']]: isActive,\n });\n\n const commonProps: (JSX.IntrinsicElements['a'] | JSX.IntrinsicElements['button']) & { 'data-testid': string } = {\n className: classes,\n 'aria-controls': `${idNamespace}-${tab.id}-panel`,\n 'data-testid': tab.id,\n id: getTabElementId({ namespace: idNamespace, tabId: tab.id }),\n onClick: clickTab,\n };\n\n const tabHeaderContainerAriaProps = hasActionOrDismissible\n ? {\n role: 'group',\n 'aria-labelledby': commonProps.id,\n }\n : {};\n\n if (!hasActionOrDismissible) {\n commonProps['aria-selected'] = activeTabId === tab.id;\n commonProps.role = 'tab';\n } else {\n commonProps['aria-expanded'] = activeTabId === tab.id;\n }\n\n if (tab.disabled) {\n commonProps['aria-disabled'] = 'true';\n }\n\n const setElement = (tabElement: null | HTMLElement) => {\n if (tab.id === activeTabId) {\n activeTabHeaderRef.current = tabElement;\n }\n tabRefs.current.set(tab.id, tabElement as HTMLElement);\n };\n\n const handleDismiss: ButtonProps['onClick'] = event => {\n if (!containerObjectRef.current || !onDismiss) {\n return;\n }\n const tabElements = getFocusablesFrom(containerObjectRef.current).filter(el =>\n el.classList.contains(styles['tabs-tab-link'])\n );\n const activeTabIndex = tabElements.findIndex(el => el.dataset.testid === tab.id);\n tabElements.splice(activeTabIndex, 1);\n let nextActive: HTMLElement | undefined;\n if (previousActiveTabId && previousActiveTabId !== tab.id) {\n nextActive = tabElements.find(el => el.dataset.testid === previousActiveTabId);\n } else {\n nextActive = tabElements[Math.min(tabElements.length - 1, activeTabIndex)];\n }\n if (nextActive && nextActive.dataset.testid) {\n onChange({ activeTabId: nextActive.dataset.testid });\n nextActive.focus();\n }\n onDismiss(event);\n };\n\n const TabItem = hasActionOrDismissible ? 'div' : 'li';\n return (\n <TabItem\n ref={(element: any) => tabRefs.current.set(tab.id, element as HTMLElement)}\n className={styles['tabs-tab']}\n role=\"presentation\"\n key={tab.id}\n >\n <div className={tabHeaderContainerClasses} {...tabHeaderContainerAriaProps}>\n <TabTrigger ref={setElement} tab={tab} elementProps={commonProps} />\n {action && <span className={tabActionClasses}>{action}</span>}\n {dismissible && (\n <span className={styles['tabs-tab-dismiss']}>\n {dismissButton({ dismissLabel, dismissDisabled, onDismiss: handleDismiss, tabId: tab.id })}\n </span>\n )}\n </div>\n </TabItem>\n );\n }\n}\n\nconst TabTrigger = forwardRef(\n (\n {\n tab,\n elementProps,\n }: { tab: TabsProps.Tab; elementProps: React.HTMLAttributes<HTMLAnchorElement | HTMLButtonElement> },\n ref: React.Ref<HTMLElement>\n ) => {\n const refObject = useRef<HTMLElement>(null);\n const tabLabelRefObject = useRef<HTMLElement>(null);\n const mergedRef = useMergeRefs(refObject, ref);\n const { tabIndex } = useSingleTabStopNavigation(refObject);\n const isDisabledWithReason = tab.disabled && !!tab.disabledReason;\n const [showTooltip, setShowTooltip] = useState(false);\n const { targetProps, descriptionEl } = useHiddenDescription(tab.disabledReason);\n const children = (\n <>\n <span className={styles['tabs-tab-label']} ref={tabLabelRefObject}>\n {tab.label}\n </span>\n {isDisabledWithReason && (\n <>\n {descriptionEl}\n {showTooltip && (\n <Tooltip\n className={styles['disabled-reason-tooltip']}\n trackRef={tabLabelRefObject}\n value={tab.disabledReason!}\n />\n )}\n </>\n )}\n </>\n );\n\n const handlers = {\n onFocus: () => setShowTooltip(true),\n onBlur: () => setShowTooltip(false),\n onMouseEnter: () => setShowTooltip(true),\n onMouseLeave: () => setShowTooltip(false),\n };\n\n const commonProps = {\n ...elementProps,\n ...(isDisabledWithReason ? targetProps : {}),\n ...(isDisabledWithReason ? handlers : {}),\n ref: mergedRef,\n tabIndex: tabIndex,\n };\n\n return tab.href ? (\n <a {...commonProps} href={tab.href}>\n {children}\n </a>\n ) : (\n <button {...commonProps} type=\"button\" disabled={tab.disabled && !isDisabledWithReason}>\n {children}\n </button>\n );\n }\n);\n\nexport function getTabElementId({ namespace, tabId }: { namespace: string; tabId: string }) {\n return namespace + '-' + tabId;\n}\n"]}
@@ -0,0 +1,6 @@
1
+
2
+ import './styles.scoped.css';
3
+ export default {
4
+ "tab-dismiss-button": "awsui_tab-dismiss-button_1nq1i_1nd7r_5"
5
+ };
6
+
@@ -0,0 +1,7 @@
1
+ /*
2
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ .awsui_tab-dismiss-button_1nq1i_1nd7r_5:not(#\9) {
6
+ /* used in test-utils */
7
+ }
@@ -0,0 +1,7 @@
1
+
2
+ // es-module interop with Babel and Typescript
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ module.exports.default = {
5
+ "tab-dismiss-button": "awsui_tab-dismiss-button_1nq1i_1nd7r_5"
6
+ };
7
+