@cloudscape-design/components-themeable 3.0.1300 → 3.0.1302

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 (165) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/breadcrumb-group/item/styles.scss +1 -1
  3. package/lib/internal/scss/breadcrumb-group/styles.scss +1 -1
  4. package/lib/internal/scss/copy-to-clipboard/styles.scss +18 -0
  5. package/lib/internal/scss/drawer/styles.scss +13 -2
  6. package/lib/internal/scss/form-field/styles.scss +1 -1
  7. package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
  8. package/lib/internal/scss/internal/styles/links.scss +1 -0
  9. package/lib/internal/scss/internal/styles/typography/mixins.scss +8 -3
  10. package/lib/internal/scss/key-value-pairs/styles.scss +5 -1
  11. package/lib/internal/scss/link/constants.scss +11 -11
  12. package/lib/internal/scss/skeleton/styles.scss +121 -0
  13. package/lib/internal/template/attribute-editor/styles.css.js +15 -15
  14. package/lib/internal/template/attribute-editor/styles.scoped.css +29 -28
  15. package/lib/internal/template/attribute-editor/styles.selectors.js +15 -15
  16. package/lib/internal/template/breadcrumb-group/item/styles.css.js +7 -7
  17. package/lib/internal/template/breadcrumb-group/item/styles.scoped.css +30 -29
  18. package/lib/internal/template/breadcrumb-group/item/styles.selectors.js +7 -7
  19. package/lib/internal/template/breadcrumb-group/styles.css.js +14 -14
  20. package/lib/internal/template/breadcrumb-group/styles.scoped.css +25 -25
  21. package/lib/internal/template/breadcrumb-group/styles.selectors.js +14 -14
  22. package/lib/internal/template/button-dropdown/category-elements/category-element.js +1 -1
  23. package/lib/internal/template/button-dropdown/category-elements/category-element.js.map +1 -1
  24. package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.js +1 -1
  25. package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.js.map +1 -1
  26. package/lib/internal/template/button-dropdown/category-elements/mobile-expandable-category-element.js +1 -1
  27. package/lib/internal/template/button-dropdown/category-elements/mobile-expandable-category-element.js.map +1 -1
  28. package/lib/internal/template/button-dropdown/item-element/index.js +1 -1
  29. package/lib/internal/template/button-dropdown/item-element/index.js.map +1 -1
  30. package/lib/internal/template/button-dropdown/item-element/styles.css.js +21 -21
  31. package/lib/internal/template/button-dropdown/item-element/styles.scoped.css +38 -37
  32. package/lib/internal/template/button-dropdown/item-element/styles.selectors.js +21 -21
  33. package/lib/internal/template/copy-to-clipboard/index.d.ts +1 -1
  34. package/lib/internal/template/copy-to-clipboard/index.d.ts.map +1 -1
  35. package/lib/internal/template/copy-to-clipboard/index.js +2 -2
  36. package/lib/internal/template/copy-to-clipboard/index.js.map +1 -1
  37. package/lib/internal/template/copy-to-clipboard/interfaces.d.ts +5 -0
  38. package/lib/internal/template/copy-to-clipboard/interfaces.d.ts.map +1 -1
  39. package/lib/internal/template/copy-to-clipboard/interfaces.js.map +1 -1
  40. package/lib/internal/template/copy-to-clipboard/internal.d.ts +1 -1
  41. package/lib/internal/template/copy-to-clipboard/internal.d.ts.map +1 -1
  42. package/lib/internal/template/copy-to-clipboard/internal.js +3 -3
  43. package/lib/internal/template/copy-to-clipboard/internal.js.map +1 -1
  44. package/lib/internal/template/copy-to-clipboard/styles.css.js +5 -3
  45. package/lib/internal/template/copy-to-clipboard/styles.scoped.css +18 -3
  46. package/lib/internal/template/copy-to-clipboard/styles.selectors.js +5 -3
  47. package/lib/internal/template/drawer/implementation.d.ts +3 -3
  48. package/lib/internal/template/drawer/implementation.d.ts.map +1 -1
  49. package/lib/internal/template/drawer/implementation.js +3 -2
  50. package/lib/internal/template/drawer/implementation.js.map +1 -1
  51. package/lib/internal/template/drawer/index.d.ts +2 -1
  52. package/lib/internal/template/drawer/index.d.ts.map +1 -1
  53. package/lib/internal/template/drawer/index.js +21 -9
  54. package/lib/internal/template/drawer/index.js.map +1 -1
  55. package/lib/internal/template/drawer/interfaces.d.ts +45 -18
  56. package/lib/internal/template/drawer/interfaces.d.ts.map +1 -1
  57. package/lib/internal/template/drawer/interfaces.js.map +1 -1
  58. package/lib/internal/template/drawer/styles.css.js +29 -25
  59. package/lib/internal/template/drawer/styles.scoped.css +43 -34
  60. package/lib/internal/template/drawer/styles.selectors.js +29 -25
  61. package/lib/internal/template/drawer/utils.d.ts +2 -2
  62. package/lib/internal/template/drawer/utils.d.ts.map +1 -1
  63. package/lib/internal/template/drawer/utils.js +6 -5
  64. package/lib/internal/template/drawer/utils.js.map +1 -1
  65. package/lib/internal/template/flashbar/collapsible-flashbar.d.ts.map +1 -1
  66. package/lib/internal/template/flashbar/collapsible-flashbar.js +6 -1
  67. package/lib/internal/template/flashbar/collapsible-flashbar.js.map +1 -1
  68. package/lib/internal/template/flashbar/flash.d.ts.map +1 -1
  69. package/lib/internal/template/flashbar/flash.js +2 -5
  70. package/lib/internal/template/flashbar/flash.js.map +1 -1
  71. package/lib/internal/template/form-field/styles.css.js +24 -24
  72. package/lib/internal/template/form-field/styles.scoped.css +41 -41
  73. package/lib/internal/template/form-field/styles.selectors.js +24 -24
  74. package/lib/internal/template/help-panel/styles.css.js +6 -6
  75. package/lib/internal/template/help-panel/styles.scoped.css +73 -71
  76. package/lib/internal/template/help-panel/styles.selectors.js +6 -6
  77. package/lib/internal/template/index.d.ts +1 -0
  78. package/lib/internal/template/index.d.ts.map +1 -1
  79. package/lib/internal/template/index.js +1 -0
  80. package/lib/internal/template/index.js.map +1 -1
  81. package/lib/internal/template/internal/base-component/styles.scoped.css +50 -20
  82. package/lib/internal/template/internal/components/token-list/styles.css.js +10 -10
  83. package/lib/internal/template/internal/components/token-list/styles.scoped.css +24 -23
  84. package/lib/internal/template/internal/components/token-list/styles.selectors.js +10 -10
  85. package/lib/internal/template/internal/environment.js +2 -2
  86. package/lib/internal/template/internal/environment.json +2 -2
  87. package/lib/internal/template/internal/generated/styles/tokens.d.ts +27 -12
  88. package/lib/internal/template/internal/generated/styles/tokens.js +27 -12
  89. package/lib/internal/template/internal/generated/theming/index.cjs +229 -58
  90. package/lib/internal/template/internal/generated/theming/index.cjs.d.ts +225 -99
  91. package/lib/internal/template/internal/generated/theming/index.d.ts +225 -99
  92. package/lib/internal/template/internal/generated/theming/index.js +229 -58
  93. package/lib/internal/template/key-value-pairs/styles.css.js +8 -8
  94. package/lib/internal/template/key-value-pairs/styles.scoped.css +12 -12
  95. package/lib/internal/template/key-value-pairs/styles.selectors.js +8 -8
  96. package/lib/internal/template/link/internal.js +1 -1
  97. package/lib/internal/template/link/internal.js.map +1 -1
  98. package/lib/internal/template/link/styles.css.js +21 -21
  99. package/lib/internal/template/link/styles.scoped.css +94 -84
  100. package/lib/internal/template/link/styles.selectors.js +21 -21
  101. package/lib/internal/template/live-region/internal.d.ts +5 -0
  102. package/lib/internal/template/live-region/internal.d.ts.map +1 -1
  103. package/lib/internal/template/live-region/internal.js +10 -2
  104. package/lib/internal/template/live-region/internal.js.map +1 -1
  105. package/lib/internal/template/package.json +1 -0
  106. package/lib/internal/template/pagination/index.d.ts.map +1 -1
  107. package/lib/internal/template/pagination/index.js +4 -1
  108. package/lib/internal/template/pagination/index.js.map +1 -1
  109. package/lib/internal/template/skeleton/index.d.ts +4 -0
  110. package/lib/internal/template/skeleton/index.d.ts.map +1 -0
  111. package/lib/internal/template/skeleton/index.js +21 -0
  112. package/lib/internal/template/skeleton/index.js.map +1 -0
  113. package/lib/internal/template/skeleton/interfaces.d.ts +37 -0
  114. package/lib/internal/template/skeleton/interfaces.d.ts.map +1 -0
  115. package/lib/internal/template/skeleton/interfaces.js +2 -0
  116. package/lib/internal/template/skeleton/interfaces.js.map +1 -0
  117. package/lib/internal/template/skeleton/internal.d.ts +8 -0
  118. package/lib/internal/template/skeleton/internal.d.ts.map +1 -0
  119. package/lib/internal/template/skeleton/internal.js +13 -0
  120. package/lib/internal/template/skeleton/internal.js.map +1 -0
  121. package/lib/internal/template/skeleton/styles.css.js +20 -0
  122. package/lib/internal/template/skeleton/styles.scoped.css +273 -0
  123. package/lib/internal/template/skeleton/styles.selectors.js +21 -0
  124. package/lib/internal/template/status-indicator/internal.js +1 -1
  125. package/lib/internal/template/status-indicator/internal.js.map +1 -1
  126. package/lib/internal/template/table/body-cell/td-element.js +1 -1
  127. package/lib/internal/template/table/body-cell/td-element.js.map +1 -1
  128. package/lib/internal/template/tag-editor/styles.css.js +3 -3
  129. package/lib/internal/template/tag-editor/styles.scoped.css +12 -11
  130. package/lib/internal/template/tag-editor/styles.selectors.js +3 -3
  131. package/lib/internal/template/test-utils/dom/drawer/index.d.ts +2 -0
  132. package/lib/internal/template/test-utils/dom/drawer/index.js +6 -0
  133. package/lib/internal/template/test-utils/dom/drawer/index.js.map +1 -1
  134. package/lib/internal/template/test-utils/dom/index.d.ts +28 -0
  135. package/lib/internal/template/test-utils/dom/index.js +20 -1
  136. package/lib/internal/template/test-utils/dom/index.js.map +1 -1
  137. package/lib/internal/template/test-utils/dom/skeleton/index.d.ts +4 -0
  138. package/lib/internal/template/test-utils/dom/skeleton/index.js +11 -0
  139. package/lib/internal/template/test-utils/dom/skeleton/index.js.map +1 -0
  140. package/lib/internal/template/test-utils/selectors/drawer/index.d.ts +2 -0
  141. package/lib/internal/template/test-utils/selectors/drawer/index.js +6 -0
  142. package/lib/internal/template/test-utils/selectors/drawer/index.js.map +1 -1
  143. package/lib/internal/template/test-utils/selectors/index.d.ts +18 -0
  144. package/lib/internal/template/test-utils/selectors/index.js +15 -1
  145. package/lib/internal/template/test-utils/selectors/index.js.map +1 -1
  146. package/lib/internal/template/test-utils/selectors/skeleton/index.d.ts +4 -0
  147. package/lib/internal/template/test-utils/selectors/skeleton/index.js +11 -0
  148. package/lib/internal/template/test-utils/selectors/skeleton/index.js.map +1 -0
  149. package/lib/internal/template/text-content/styles.css.js +1 -1
  150. package/lib/internal/template/text-content/styles.scoped.css +68 -66
  151. package/lib/internal/template/text-content/styles.selectors.js +1 -1
  152. package/lib/internal/template/tooltip/index.d.ts +0 -3
  153. package/lib/internal/template/tooltip/index.d.ts.map +1 -1
  154. package/lib/internal/template/tooltip/index.js +0 -3
  155. package/lib/internal/template/tooltip/index.js.map +1 -1
  156. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/index.d.ts.map +1 -1
  157. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/index.js +2 -1
  158. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/index.js.map +1 -1
  159. package/lib/internal/template/tutorial-panel/components/tutorial-list/index.js +11 -12
  160. package/lib/internal/template/tutorial-panel/components/tutorial-list/index.js.map +1 -1
  161. package/package.json +1 -1
  162. package/lib/internal/template/drawer/next.d.ts +0 -6
  163. package/lib/internal/template/drawer/next.d.ts.map +0 -1
  164. package/lib/internal/template/drawer/next.js +0 -38
  165. package/lib/internal/template/drawer/next.js.map +0 -1
@@ -190,11 +190,11 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
190
190
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
191
191
  SPDX-License-Identifier: Apache-2.0
192
192
  */
193
- .awsui_root_1sxt8_j93of_193:not(#\9) {
193
+ .awsui_root_1sxt8_15280_193:not(#\9) {
194
194
  display: contents;
195
195
  }
196
196
 
197
- .awsui_drawer_1sxt8_j93of_197:not(#\9) {
197
+ .awsui_drawer_1sxt8_15280_197:not(#\9) {
198
198
  border-collapse: separate;
199
199
  border-spacing: 0;
200
200
  box-sizing: border-box;
@@ -227,33 +227,42 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
227
227
  word-wrap: break-word;
228
228
  background-color: var(--color-background-drawer-v79o7e, #ffffff);
229
229
  }
230
- .awsui_drawer_1sxt8_j93of_197.awsui_has-close-action_1sxt8_j93of_230:not(#\9) {
230
+ .awsui_drawer_1sxt8_15280_197.awsui_has-close-action_1sxt8_15280_230:not(#\9) {
231
231
  position: relative;
232
232
  }
233
- .awsui_drawer_1sxt8_j93of_197.awsui_position-absolute_1sxt8_j93of_233:not(#\9), .awsui_drawer_1sxt8_j93of_197.awsui_position-sticky_1sxt8_j93of_233:not(#\9), .awsui_drawer_1sxt8_j93of_197.awsui_position-fixed_1sxt8_j93of_233:not(#\9) {
234
- box-shadow: var(--shadow-panel-ywy40s, 0 1px 1px 0 rgba(0, 28, 36, 0.3), 1px 1px 1px 0 rgba(0, 28, 36, 0.15), -1px 1px 1px 0 rgba(0, 28, 36, 0.15));
233
+ .awsui_drawer_1sxt8_15280_197.awsui_position-absolute_1sxt8_15280_233.awsui_placement-end_1sxt8_15280_233:not(#\9), .awsui_drawer_1sxt8_15280_197.awsui_position-sticky_1sxt8_15280_233.awsui_placement-end_1sxt8_15280_233:not(#\9), .awsui_drawer_1sxt8_15280_197.awsui_position-fixed_1sxt8_15280_233.awsui_placement-end_1sxt8_15280_233:not(#\9) {
234
+ border-inline-start: var(--border-divider-section-width-sznrdy, 1px) solid var(--color-border-panel-header-iffljr, #eaeded);
235
235
  }
236
- .awsui_drawer_1sxt8_j93of_197.awsui_with-footer_1sxt8_j93of_236:not(#\9) {
236
+ .awsui_drawer_1sxt8_15280_197.awsui_position-absolute_1sxt8_15280_233.awsui_placement-start_1sxt8_15280_236:not(#\9), .awsui_drawer_1sxt8_15280_197.awsui_position-sticky_1sxt8_15280_233.awsui_placement-start_1sxt8_15280_236:not(#\9), .awsui_drawer_1sxt8_15280_197.awsui_position-fixed_1sxt8_15280_233.awsui_placement-start_1sxt8_15280_236:not(#\9) {
237
+ border-inline-end: var(--border-divider-section-width-sznrdy, 1px) solid var(--color-border-panel-header-iffljr, #eaeded);
238
+ }
239
+ .awsui_drawer_1sxt8_15280_197.awsui_position-absolute_1sxt8_15280_233.awsui_placement-top_1sxt8_15280_239:not(#\9), .awsui_drawer_1sxt8_15280_197.awsui_position-sticky_1sxt8_15280_233.awsui_placement-top_1sxt8_15280_239:not(#\9), .awsui_drawer_1sxt8_15280_197.awsui_position-fixed_1sxt8_15280_233.awsui_placement-top_1sxt8_15280_239:not(#\9) {
240
+ border-block-end: var(--border-divider-section-width-sznrdy, 1px) solid var(--color-border-panel-header-iffljr, #eaeded);
241
+ }
242
+ .awsui_drawer_1sxt8_15280_197.awsui_position-absolute_1sxt8_15280_233.awsui_placement-bottom_1sxt8_15280_242:not(#\9), .awsui_drawer_1sxt8_15280_197.awsui_position-sticky_1sxt8_15280_233.awsui_placement-bottom_1sxt8_15280_242:not(#\9), .awsui_drawer_1sxt8_15280_197.awsui_position-fixed_1sxt8_15280_233.awsui_placement-bottom_1sxt8_15280_242:not(#\9) {
243
+ border-block-start: var(--border-divider-section-width-sznrdy, 1px) solid var(--color-border-panel-header-iffljr, #eaeded);
244
+ }
245
+ .awsui_drawer_1sxt8_15280_197.awsui_with-footer_1sxt8_15280_245:not(#\9) {
237
246
  display: flex;
238
247
  flex-direction: column;
239
248
  }
240
- .awsui_drawer_1sxt8_j93of_197.awsui_with-footer_1sxt8_j93of_236.awsui_position-static_1sxt8_j93of_240:not(#\9) {
249
+ .awsui_drawer_1sxt8_15280_197.awsui_with-footer_1sxt8_15280_245.awsui_position-static_1sxt8_15280_249:not(#\9) {
241
250
  min-block-size: 100%;
242
251
  }
243
- .awsui_drawer_1sxt8_j93of_197.awsui_with-footer_1sxt8_j93of_236 > .awsui_content_1sxt8_j93of_243:not(#\9) {
252
+ .awsui_drawer_1sxt8_15280_197.awsui_with-footer_1sxt8_15280_245 > .awsui_content_1sxt8_15280_252:not(#\9) {
244
253
  flex: 1;
245
254
  }
246
- .awsui_drawer_1sxt8_j93of_197:not(#\9):focus {
255
+ .awsui_drawer_1sxt8_15280_197:not(#\9):focus {
247
256
  outline: none;
248
257
  }
249
- body[data-awsui-focus-visible=true] .awsui_drawer_1sxt8_j93of_197:not(#\9):focus {
258
+ body[data-awsui-focus-visible=true] .awsui_drawer_1sxt8_15280_197:not(#\9):focus {
250
259
  position: relative;
251
260
  }
252
- body[data-awsui-focus-visible=true] .awsui_drawer_1sxt8_j93of_197:not(#\9):focus {
261
+ body[data-awsui-focus-visible=true] .awsui_drawer_1sxt8_15280_197:not(#\9):focus {
253
262
  outline: 2px dotted transparent;
254
263
  outline-offset: calc(-2px - 1px);
255
264
  }
256
- body[data-awsui-focus-visible=true] .awsui_drawer_1sxt8_j93of_197:not(#\9):focus::before {
265
+ body[data-awsui-focus-visible=true] .awsui_drawer_1sxt8_15280_197:not(#\9):focus::before {
257
266
  content: " ";
258
267
  display: block;
259
268
  position: absolute;
@@ -268,7 +277,7 @@ body[data-awsui-focus-visible=true] .awsui_drawer_1sxt8_j93of_197:not(#\9):focus
268
277
  box-shadow: 0 0 0 2px var(--color-border-item-focused-r5f6xl, #0073bb);
269
278
  }
270
279
 
271
- .awsui_header_1sxt8_j93of_271:not(#\9) {
280
+ .awsui_header_1sxt8_15280_280:not(#\9) {
272
281
  font-size: var(--font-panel-header-size-i1j838, 18px);
273
282
  letter-spacing: var(--letter-spacing-heading-m-93y02s, normal);
274
283
  line-height: var(--font-panel-header-line-height-z3wpa5, 22px);
@@ -284,11 +293,11 @@ body[data-awsui-focus-visible=true] .awsui_drawer_1sxt8_j93of_197:not(#\9):focus
284
293
  /* stylelint-disable @cloudscape-design/no-implicit-descendant, selector-max-type */
285
294
  /* stylelint-enable @cloudscape-design/no-implicit-descendant, selector-max-type */
286
295
  }
287
- .awsui_header_1sxt8_j93of_271.awsui_hide-close-action_1sxt8_j93of_287:not(#\9) {
296
+ .awsui_header_1sxt8_15280_280.awsui_hide-close-action_1sxt8_15280_296:not(#\9) {
288
297
  padding-inline: var(--space-panel-side-left-07kpj4, 32px) var(--space-panel-side-right-b77xx0, 32px);
289
298
  }
290
299
  @media (min-width: 689px) {
291
- .awsui_header_1sxt8_j93of_271.awsui_with-additional-action_1sxt8_j93of_291:not(#\9) {
300
+ .awsui_header_1sxt8_15280_280.awsui_with-additional-action_1sxt8_15280_300:not(#\9) {
292
301
  /*
293
302
  this padding is needed when the drawer renders inside a runtime drawer and the runtime drawer has an additional action
294
303
  on the right (or left in rtl). in this case this padding ensures that the drawer's content does not overlap with runtime actions
@@ -296,18 +305,18 @@ body[data-awsui-focus-visible=true] .awsui_drawer_1sxt8_j93of_197:not(#\9):focus
296
305
  padding-inline: var(--space-panel-side-left-07kpj4, 32px) calc(var(--space-xxxl-qhelse, 40px) + var(--space-scaled-xxl-9ur2is, 32px));
297
306
  }
298
307
  }
299
- .awsui_header_1sxt8_j93of_271.awsui_with-runtime-context_1sxt8_j93of_299:not(#\9) {
308
+ .awsui_header_1sxt8_15280_280.awsui_with-runtime-context_1sxt8_15280_308:not(#\9) {
300
309
  padding-block: 14px;
301
310
  }
302
- .awsui_with-toolbar_1sxt8_j93of_302 > .awsui_header_1sxt8_j93of_271:not(#\9) {
311
+ .awsui_with-toolbar_1sxt8_15280_311 > .awsui_header_1sxt8_15280_280:not(#\9) {
303
312
  border-color: transparent;
304
313
  margin-block-end: 0px;
305
314
  }
306
- .awsui_header_1sxt8_j93of_271 h2:not(#\9),
307
- .awsui_header_1sxt8_j93of_271 h3:not(#\9),
308
- .awsui_header_1sxt8_j93of_271 h4:not(#\9),
309
- .awsui_header_1sxt8_j93of_271 h5:not(#\9),
310
- .awsui_header_1sxt8_j93of_271 h6:not(#\9) {
315
+ .awsui_header_1sxt8_15280_280 h2:not(#\9),
316
+ .awsui_header_1sxt8_15280_280 h3:not(#\9),
317
+ .awsui_header_1sxt8_15280_280 h4:not(#\9),
318
+ .awsui_header_1sxt8_15280_280 h5:not(#\9),
319
+ .awsui_header_1sxt8_15280_280 h6:not(#\9) {
311
320
  font-size: var(--font-panel-header-size-i1j838, 18px);
312
321
  letter-spacing: var(--letter-spacing-heading-m-93y02s, normal);
313
322
  line-height: var(--font-panel-header-line-height-z3wpa5, 22px);
@@ -318,32 +327,32 @@ body[data-awsui-focus-visible=true] .awsui_drawer_1sxt8_j93of_197:not(#\9):focus
318
327
  margin-block: 0;
319
328
  }
320
329
 
321
- .awsui_header-actions_1sxt8_j93of_321:not(#\9) {
330
+ .awsui_header-actions_1sxt8_15280_330:not(#\9) {
322
331
  display: inline-flex;
323
332
  align-items: flex-start;
324
333
  z-index: 1;
325
334
  }
326
335
 
327
- .awsui_close-action_1sxt8_j93of_327:not(#\9) {
336
+ .awsui_close-action_1sxt8_15280_336:not(#\9) {
328
337
  position: absolute;
329
- inset-block-start: var(--space-panel-header-vertical-c9e5ei, 20px);
338
+ inset-block-start: var(--space-static-m-1cd7a5, 16px);
330
339
  inset-inline-end: var(--space-scaled-l-66n9sr, 20px);
331
340
  }
332
341
 
333
- .awsui_content-with-paddings_1sxt8_j93of_333:not(#\9):not(:empty) {
342
+ .awsui_content-with-paddings_1sxt8_15280_342:not(#\9):not(:empty) {
334
343
  padding-block-start: var(--space-panel-content-top-s8rcdz, 20px);
335
344
  padding-inline-start: var(--space-panel-side-left-07kpj4, 32px);
336
345
  padding-inline-end: var(--space-panel-side-right-b77xx0, 32px);
337
346
  padding-block-end: var(--space-panel-content-bottom-igtxf0, 40px);
338
347
  }
339
348
 
340
- .awsui_footer_1sxt8_j93of_340:not(#\9) {
349
+ .awsui_footer_1sxt8_15280_349:not(#\9) {
341
350
  background-color: var(--color-background-container-content-aemn43, #ffffff);
342
351
  border-block-start: var(--border-divider-section-width-sznrdy, 1px) solid var(--color-border-panel-header-iffljr, #eaeded);
343
352
  padding-block: var(--space-panel-content-top-s8rcdz, 20px);
344
353
  padding-inline: var(--space-panel-side-left-07kpj4, 32px) var(--space-panel-side-right-b77xx0, 32px);
345
354
  }
346
- .awsui_footer_1sxt8_j93of_340.awsui_is-sticky_1sxt8_j93of_346:not(#\9) {
355
+ .awsui_footer_1sxt8_15280_349.awsui_is-sticky_1sxt8_15280_355:not(#\9) {
347
356
  position: sticky;
348
357
  inset-block-end: 0;
349
358
  inset-inline-start: 0;
@@ -351,25 +360,25 @@ body[data-awsui-focus-visible=true] .awsui_drawer_1sxt8_j93of_197:not(#\9):focus
351
360
  z-index: 810;
352
361
  }
353
362
 
354
- .awsui_test-utils-drawer-content_1sxt8_j93of_354:not(#\9) {
363
+ .awsui_test-utils-drawer-content_1sxt8_15280_363:not(#\9) {
355
364
  /* used in test-utils */
356
365
  }
357
366
 
358
- .awsui_hidden_1sxt8_j93of_358:not(#\9) {
367
+ .awsui_hidden_1sxt8_15280_367:not(#\9) {
359
368
  display: none;
360
369
  }
361
370
 
362
- .awsui_focus-trap_1sxt8_j93of_362:not(#\9) {
371
+ .awsui_focus-trap_1sxt8_15280_371:not(#\9) {
363
372
  display: contents;
364
373
  }
365
374
 
366
- .awsui_backdrop_1sxt8_j93of_366:not(#\9) {
375
+ .awsui_backdrop_1sxt8_15280_375:not(#\9) {
367
376
  inset: 0;
368
377
  background-color: var(--color-background-drawer-backdrop-if96qn, rgba(242, 243, 243, 0.9));
369
378
  }
370
- .awsui_backdrop_1sxt8_j93of_366.awsui_backdrop-fixed_1sxt8_j93of_370:not(#\9) {
379
+ .awsui_backdrop_1sxt8_15280_375.awsui_backdrop-fixed_1sxt8_15280_379:not(#\9) {
371
380
  position: fixed;
372
381
  }
373
- .awsui_backdrop_1sxt8_j93of_366.awsui_backdrop-absolute_1sxt8_j93of_373:not(#\9) {
382
+ .awsui_backdrop_1sxt8_15280_375.awsui_backdrop-absolute_1sxt8_15280_382:not(#\9) {
374
383
  position: absolute;
375
384
  }
@@ -2,30 +2,34 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "root": "awsui_root_1sxt8_j93of_193",
6
- "drawer": "awsui_drawer_1sxt8_j93of_197",
7
- "has-close-action": "awsui_has-close-action_1sxt8_j93of_230",
8
- "position-absolute": "awsui_position-absolute_1sxt8_j93of_233",
9
- "position-sticky": "awsui_position-sticky_1sxt8_j93of_233",
10
- "position-fixed": "awsui_position-fixed_1sxt8_j93of_233",
11
- "with-footer": "awsui_with-footer_1sxt8_j93of_236",
12
- "position-static": "awsui_position-static_1sxt8_j93of_240",
13
- "content": "awsui_content_1sxt8_j93of_243",
14
- "header": "awsui_header_1sxt8_j93of_271",
15
- "hide-close-action": "awsui_hide-close-action_1sxt8_j93of_287",
16
- "with-additional-action": "awsui_with-additional-action_1sxt8_j93of_291",
17
- "with-runtime-context": "awsui_with-runtime-context_1sxt8_j93of_299",
18
- "with-toolbar": "awsui_with-toolbar_1sxt8_j93of_302",
19
- "header-actions": "awsui_header-actions_1sxt8_j93of_321",
20
- "close-action": "awsui_close-action_1sxt8_j93of_327",
21
- "content-with-paddings": "awsui_content-with-paddings_1sxt8_j93of_333",
22
- "footer": "awsui_footer_1sxt8_j93of_340",
23
- "is-sticky": "awsui_is-sticky_1sxt8_j93of_346",
24
- "test-utils-drawer-content": "awsui_test-utils-drawer-content_1sxt8_j93of_354",
25
- "hidden": "awsui_hidden_1sxt8_j93of_358",
26
- "focus-trap": "awsui_focus-trap_1sxt8_j93of_362",
27
- "backdrop": "awsui_backdrop_1sxt8_j93of_366",
28
- "backdrop-fixed": "awsui_backdrop-fixed_1sxt8_j93of_370",
29
- "backdrop-absolute": "awsui_backdrop-absolute_1sxt8_j93of_373"
5
+ "root": "awsui_root_1sxt8_15280_193",
6
+ "drawer": "awsui_drawer_1sxt8_15280_197",
7
+ "has-close-action": "awsui_has-close-action_1sxt8_15280_230",
8
+ "position-absolute": "awsui_position-absolute_1sxt8_15280_233",
9
+ "placement-end": "awsui_placement-end_1sxt8_15280_233",
10
+ "position-sticky": "awsui_position-sticky_1sxt8_15280_233",
11
+ "position-fixed": "awsui_position-fixed_1sxt8_15280_233",
12
+ "placement-start": "awsui_placement-start_1sxt8_15280_236",
13
+ "placement-top": "awsui_placement-top_1sxt8_15280_239",
14
+ "placement-bottom": "awsui_placement-bottom_1sxt8_15280_242",
15
+ "with-footer": "awsui_with-footer_1sxt8_15280_245",
16
+ "position-static": "awsui_position-static_1sxt8_15280_249",
17
+ "content": "awsui_content_1sxt8_15280_252",
18
+ "header": "awsui_header_1sxt8_15280_280",
19
+ "hide-close-action": "awsui_hide-close-action_1sxt8_15280_296",
20
+ "with-additional-action": "awsui_with-additional-action_1sxt8_15280_300",
21
+ "with-runtime-context": "awsui_with-runtime-context_1sxt8_15280_308",
22
+ "with-toolbar": "awsui_with-toolbar_1sxt8_15280_311",
23
+ "header-actions": "awsui_header-actions_1sxt8_15280_330",
24
+ "close-action": "awsui_close-action_1sxt8_15280_336",
25
+ "content-with-paddings": "awsui_content-with-paddings_1sxt8_15280_342",
26
+ "footer": "awsui_footer_1sxt8_15280_349",
27
+ "is-sticky": "awsui_is-sticky_1sxt8_15280_355",
28
+ "test-utils-drawer-content": "awsui_test-utils-drawer-content_1sxt8_15280_363",
29
+ "hidden": "awsui_hidden_1sxt8_15280_367",
30
+ "focus-trap": "awsui_focus-trap_1sxt8_15280_371",
31
+ "backdrop": "awsui_backdrop_1sxt8_15280_375",
32
+ "backdrop-fixed": "awsui_backdrop-fixed_1sxt8_15280_379",
33
+ "backdrop-absolute": "awsui_backdrop-absolute_1sxt8_15280_382"
30
34
  };
31
35
 
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { NextDrawerProps } from './interfaces';
3
- type PositionProps = Pick<NextDrawerProps, 'position' | 'placement' | 'offset' | 'stickyOffset' | 'zIndex'>;
2
+ import { DrawerProps } from './interfaces';
3
+ type PositionProps = Pick<DrawerProps, 'position' | 'placement' | 'offset' | 'stickyOffset' | 'zIndex'>;
4
4
  export declare function getPositionStyles({ position, zIndex, ...props }: PositionProps): {
5
5
  className: string;
6
6
  style: React.CSSProperties;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/drawer/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAI/C,KAAK,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,QAAQ,CAAC,CAAC;AAE5G,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,GAAG;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC;CAC5B,CAmBA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/drawer/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAI3C,KAAK,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,QAAQ,CAAC,CAAC;AAExG,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,GAAG;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC;CAC5B,CAmBA"}
@@ -1,5 +1,6 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
+ import clsx from 'clsx';
3
4
  import { warnOnce } from '@cloudscape-design/component-toolkit/internal';
4
5
  import styles from './styles.css.js';
5
6
  export function getPositionStyles({ position, zIndex, ...props }) {
@@ -9,18 +10,18 @@ export function getPositionStyles({ position, zIndex, ...props }) {
9
10
  }
10
11
  switch (position) {
11
12
  case 'absolute':
12
- return getStyles(position, { position: 'absolute', zIndex, ...computeAbsoluteOffsets(props) });
13
+ return getStyles(position, { position: 'absolute', zIndex, ...computeAbsoluteOffsets(props) }, props.placement);
13
14
  case 'sticky':
14
- return getStyles(position, { position: 'sticky', zIndex, ...computeStickyOffsets(props) });
15
+ return getStyles(position, { position: 'sticky', zIndex, ...computeStickyOffsets(props) }, props.placement);
15
16
  case 'fixed':
16
- return getStyles(position, { position: 'fixed', zIndex, ...computeAbsoluteOffsets(props) });
17
+ return getStyles(position, { position: 'fixed', zIndex, ...computeAbsoluteOffsets(props) }, props.placement);
17
18
  case 'static':
18
19
  default:
19
20
  return getStyles(position);
20
21
  }
21
22
  }
22
- function getStyles(position = 'static', style = {}) {
23
- return { className: styles[`position-${position}`], style };
23
+ function getStyles(position = 'static', style = {}, placement) {
24
+ return { className: clsx(styles[`position-${position}`], placement && styles[`placement-${placement}`]), style };
24
25
  }
25
26
  function computeAbsoluteOffsets({ placement, offset: { top, bottom, start, end } = {}, }) {
26
27
  const style = {};
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/drawer/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React from 'react';\n\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { NextDrawerProps } from './interfaces';\n\nimport styles from './styles.css.js';\n\ntype PositionProps = Pick<NextDrawerProps, 'position' | 'placement' | 'offset' | 'stickyOffset' | 'zIndex'>;\n\nexport function getPositionStyles({ position, zIndex, ...props }: PositionProps): {\n className: string;\n style: React.CSSProperties;\n} {\n if (position === 'sticky' && (props.placement === 'start' || props.placement === 'end')) {\n warnOnce(\n 'Drawer',\n `position=\"sticky\" is not supported with placement=\"${props.placement}\" and falls back to position=\"static\".`\n );\n position = 'static';\n }\n switch (position) {\n case 'absolute':\n return getStyles(position, { position: 'absolute', zIndex, ...computeAbsoluteOffsets(props) });\n case 'sticky':\n return getStyles(position, { position: 'sticky', zIndex, ...computeStickyOffsets(props) });\n case 'fixed':\n return getStyles(position, { position: 'fixed', zIndex, ...computeAbsoluteOffsets(props) });\n case 'static':\n default:\n return getStyles(position);\n }\n}\n\nfunction getStyles(position: NextDrawerProps.Position = 'static', style: React.CSSProperties = {}) {\n return { className: styles[`position-${position}`], style };\n}\n\nfunction computeAbsoluteOffsets({\n placement,\n offset: { top, bottom, start, end } = {},\n}: Pick<NextDrawerProps, 'placement' | 'offset'>) {\n const style: React.CSSProperties = {};\n const offset = { top: top ?? 0, bottom: bottom ?? 0, start: start ?? 0, end: end ?? 0 };\n switch (placement) {\n case 'top':\n style.insetBlockStart = offset.top;\n style.insetInlineStart = offset.start;\n style.insetInlineEnd = offset.end;\n break;\n case 'bottom':\n style.insetBlockEnd = offset.bottom;\n style.insetInlineStart = offset.start;\n style.insetInlineEnd = offset.end;\n break;\n case 'start':\n style.insetInlineStart = offset.start;\n style.insetBlockStart = offset.top;\n style.insetBlockEnd = offset.bottom;\n break;\n case 'end':\n style.insetInlineEnd = offset.end;\n style.insetBlockStart = offset.top;\n style.insetBlockEnd = offset.bottom;\n break;\n }\n return style;\n}\n\nfunction computeStickyOffsets({\n placement,\n offset: { top, bottom, start, end } = {},\n stickyOffset: { top: stickyTop, bottom: stickyBottom } = {},\n}: Pick<NextDrawerProps, 'placement' | 'offset' | 'stickyOffset'>) {\n const style: React.CSSProperties = {};\n const offset = { top: top ?? 0, bottom: bottom ?? 0, start: start ?? 0, end: end ?? 0 };\n const stickyOffset = { top: stickyTop ?? 0, bottom: stickyBottom ?? 0 };\n switch (placement) {\n case 'top':\n style.insetBlockStart = stickyOffset.top;\n style.marginBlockStart = offset.top;\n style.marginInlineStart = offset.start;\n style.marginInlineEnd = offset.end;\n style.inlineSize = `calc(100% - ${offset.start + offset.end}px)`;\n break;\n case 'bottom':\n style.insetBlockEnd = stickyOffset.bottom;\n style.marginBlockEnd = offset.bottom;\n style.marginInlineStart = offset.start;\n style.marginInlineEnd = offset.end;\n style.inlineSize = `calc(100% - ${offset.start + offset.end}px)`;\n break;\n }\n return style;\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/drawer/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { DrawerProps } from './interfaces';\n\nimport styles from './styles.css.js';\n\ntype PositionProps = Pick<DrawerProps, 'position' | 'placement' | 'offset' | 'stickyOffset' | 'zIndex'>;\n\nexport function getPositionStyles({ position, zIndex, ...props }: PositionProps): {\n className: string;\n style: React.CSSProperties;\n} {\n if (position === 'sticky' && (props.placement === 'start' || props.placement === 'end')) {\n warnOnce(\n 'Drawer',\n `position=\"sticky\" is not supported with placement=\"${props.placement}\" and falls back to position=\"static\".`\n );\n position = 'static';\n }\n switch (position) {\n case 'absolute':\n return getStyles(position, { position: 'absolute', zIndex, ...computeAbsoluteOffsets(props) }, props.placement);\n case 'sticky':\n return getStyles(position, { position: 'sticky', zIndex, ...computeStickyOffsets(props) }, props.placement);\n case 'fixed':\n return getStyles(position, { position: 'fixed', zIndex, ...computeAbsoluteOffsets(props) }, props.placement);\n case 'static':\n default:\n return getStyles(position);\n }\n}\n\nfunction getStyles(\n position: DrawerProps.Position = 'static',\n style: React.CSSProperties = {},\n placement?: DrawerProps.Placement\n) {\n return { className: clsx(styles[`position-${position}`], placement && styles[`placement-${placement}`]), style };\n}\n\nfunction computeAbsoluteOffsets({\n placement,\n offset: { top, bottom, start, end } = {},\n}: Pick<DrawerProps, 'placement' | 'offset'>) {\n const style: React.CSSProperties = {};\n const offset = { top: top ?? 0, bottom: bottom ?? 0, start: start ?? 0, end: end ?? 0 };\n switch (placement) {\n case 'top':\n style.insetBlockStart = offset.top;\n style.insetInlineStart = offset.start;\n style.insetInlineEnd = offset.end;\n break;\n case 'bottom':\n style.insetBlockEnd = offset.bottom;\n style.insetInlineStart = offset.start;\n style.insetInlineEnd = offset.end;\n break;\n case 'start':\n style.insetInlineStart = offset.start;\n style.insetBlockStart = offset.top;\n style.insetBlockEnd = offset.bottom;\n break;\n case 'end':\n style.insetInlineEnd = offset.end;\n style.insetBlockStart = offset.top;\n style.insetBlockEnd = offset.bottom;\n break;\n }\n return style;\n}\n\nfunction computeStickyOffsets({\n placement,\n offset: { top, bottom, start, end } = {},\n stickyOffset: { top: stickyTop, bottom: stickyBottom } = {},\n}: Pick<DrawerProps, 'placement' | 'offset' | 'stickyOffset'>) {\n const style: React.CSSProperties = {};\n const offset = { top: top ?? 0, bottom: bottom ?? 0, start: start ?? 0, end: end ?? 0 };\n const stickyOffset = { top: stickyTop ?? 0, bottom: stickyBottom ?? 0 };\n switch (placement) {\n case 'top':\n style.insetBlockStart = stickyOffset.top;\n style.marginBlockStart = offset.top;\n style.marginInlineStart = offset.start;\n style.marginInlineEnd = offset.end;\n style.inlineSize = `calc(100% - ${offset.start + offset.end}px)`;\n break;\n case 'bottom':\n style.insetBlockEnd = stickyOffset.bottom;\n style.marginBlockEnd = offset.bottom;\n style.marginInlineStart = offset.start;\n style.marginInlineEnd = offset.end;\n style.inlineSize = `calc(100% - ${offset.start + offset.end}px)`;\n break;\n }\n return style;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"collapsible-flashbar.d.ts","sourceRoot":"","sources":["../../../src/flashbar/collapsible-flashbar.tsx"],"names":[],"mappings":"AA6BA,OAAO,EAAiB,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAqBpE,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,qBAAqB,eAoVhG"}
1
+ {"version":3,"file":"collapsible-flashbar.d.ts","sourceRoot":"","sources":["../../../src/flashbar/collapsible-flashbar.tsx"],"names":[],"mappings":"AA8BA,OAAO,EAAiB,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAqBpE,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,qBAAqB,eA2VhG"}
@@ -16,6 +16,7 @@ import { useDebounceCallback } from '../internal/hooks/use-debounce-callback';
16
16
  import { useEffectOnUpdate } from '../internal/hooks/use-effect-on-update';
17
17
  import { useThrottleCallback } from '../internal/hooks/use-throttle-callback';
18
18
  import { scrollElementIntoView } from '../internal/utils/scrollable-containers';
19
+ import InternalLiveRegion from '../live-region/internal';
19
20
  import { getComponentsAnalyticsMetadata, getItemAnalyticsMetadata } from './analytics-metadata/utils';
20
21
  import { useFlashbar, useFlashbarVisibility } from './common';
21
22
  import { Flash, focusFlashById } from './flash';
@@ -219,9 +220,13 @@ export default function CollapsibleFlashbar({ items, style, ...restProps }) {
219
220
  label: 'h2',
220
221
  },
221
222
  }) },
222
- React.createElement("span", { "aria-live": "polite", className: styles.status, role: "status", id: itemCountElementId },
223
+ React.createElement("span", { className: styles.status, id: itemCountElementId, role: "status", "aria-live": "off" },
223
224
  notificationBarText && React.createElement("h2", { className: styles.header }, notificationBarText),
224
225
  React.createElement("span", { className: styles['item-count'] }, counterTypes.map(({ type, labelName, iconName }) => (React.createElement(NotificationTypeCount, { key: type, iconName: iconName, label: iconAriaLabels[labelName], count: countByType[type] }))))),
226
+ React.createElement(InternalLiveRegion, { preventInitialAnnouncement: true, sources: [
227
+ notificationBarText,
228
+ ...counterTypes.flatMap(({ type, labelName }) => [iconAriaLabels[labelName], `${countByType[type]}`]),
229
+ ] }),
225
230
  React.createElement("button", { "aria-controls": flashbarElementId, "aria-describedby": itemCountElementId, "aria-expanded": isFlashbarStackExpanded, "aria-label": notificationBarAriaLabel, className: clsx(styles.button, isFlashbarStackExpanded && styles.expanded) },
226
231
  React.createElement(InternalIcon, { className: styles.icon, size: "normal", name: "angle-down" })))),
227
232
  !isFlashbarStackExpanded && renderList()));
@@ -1 +1 @@
1
- {"version":3,"file":"collapsible-flashbar.js","sourceRoot":"","sources":["../../../src/flashbar/collapsible-flashbar.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\n\nimport React, { ReactNode, useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\n\nimport { findUpUntil } from '@cloudscape-design/component-toolkit/dom';\nimport { useUniqueId } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { useInternalI18n } from '../i18n/context';\nimport { IconProps } from '../icon/interfaces';\nimport InternalIcon from '../icon/internal';\nimport { animate, getDOMRects } from '../internal/animate';\nimport { Transition } from '../internal/components/transition';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\nimport customCssProps from '../internal/generated/custom-css-properties';\nimport { useDebounceCallback } from '../internal/hooks/use-debounce-callback';\nimport { useEffectOnUpdate } from '../internal/hooks/use-effect-on-update';\nimport { useThrottleCallback } from '../internal/hooks/use-throttle-callback';\nimport { scrollElementIntoView } from '../internal/utils/scrollable-containers';\nimport {\n GeneratedAnalyticsMetadataFlashbarCollapse,\n GeneratedAnalyticsMetadataFlashbarExpand,\n} from './analytics-metadata/interfaces';\nimport { getComponentsAnalyticsMetadata, getItemAnalyticsMetadata } from './analytics-metadata/utils';\nimport { useFlashbar, useFlashbarVisibility } from './common';\nimport { Flash, focusFlashById } from './flash';\nimport { FlashbarProps, InternalFlashbarProps } from './interfaces';\nimport { getCollapsibleFlashStyles, getNotificationBarStyles } from './style';\nimport {\n counterTypes,\n FOCUS_DEBOUNCE_DELAY,\n getFlashTypeCount,\n getItemColor,\n getVisibleCollapsedItems,\n isRefObject,\n isStackableItem,\n StackableItem,\n} from './utils';\n\nimport styles from './styles.css.js';\n\n// If the number of items is equal or less than this value,\n// the toggle element will not be displayed and the Flashbar will look like a regular single-item Flashbar.\nconst maxNonCollapsibleItems = 1;\n\nconst resizeListenerThrottleDelay = 100;\n\nexport default function CollapsibleFlashbar({ items, style, ...restProps }: InternalFlashbarProps) {\n const visibleItems = useFlashbarVisibility(items);\n const [enteringItems, setEnteringItems] = useState<ReadonlyArray<FlashbarProps.MessageDefinition>>([]);\n const [exitingItems, setExitingItems] = useState<ReadonlyArray<FlashbarProps.MessageDefinition>>([]);\n const [isFlashbarStackExpanded, setIsFlashbarStackExpanded] = useState(false);\n\n const getElementsToAnimate = useCallback(() => {\n const flashElements = isFlashbarStackExpanded ? expandedItemRefs.current : collapsedItemRefs.current;\n return { ...flashElements, notificationBar: notificationBarRef.current };\n }, [isFlashbarStackExpanded]);\n\n const prepareAnimations = useCallback(() => {\n const rects = getDOMRects(getElementsToAnimate());\n setInitialAnimationState(rects);\n }, [getElementsToAnimate]);\n\n const collapsedItemRefs = useRef<Record<string, HTMLElement | null>>({});\n const expandedItemRefs = useRef<Record<string, HTMLElement | null>>({});\n const [initialAnimationState, setInitialAnimationState] = useState<Record<string, DOMRect> | null>(null);\n const listElementRef = useRef<HTMLUListElement | null>(null);\n const notificationBarRef = useRef<HTMLDivElement | null>(null);\n const [transitioning, setTransitioning] = useState(false);\n const flashbarElementId = useUniqueId('flashbar');\n const itemCountElementId = useUniqueId('item-count');\n\n const { baseProps, isReducedMotion, isVisualRefresh, mergedRef, ref, flashRefs, handleFlashDismissed } = useFlashbar({\n items: visibleItems,\n ...restProps,\n onItemsAdded: newItems => {\n setEnteringItems([...enteringItems, ...newItems]);\n },\n onItemsChanged: options => {\n // If not all items have ID, we can still animate collapse/expand transitions\n // because we can rely on each item's index in the original array,\n // but we can't do that when elements are added or removed, since the index changes.\n if (options?.allItemsHaveId && !options?.isReducedMotion) {\n prepareAnimations();\n }\n },\n onItemsRemoved: removedItems => {\n setExitingItems([...exitingItems, ...removedItems]);\n },\n });\n\n if (visibleItems.length <= maxNonCollapsibleItems && isFlashbarStackExpanded) {\n setIsFlashbarStackExpanded(false);\n }\n\n const animateFlash = !isReducedMotion;\n\n function toggleCollapseExpand() {\n if (!isReducedMotion) {\n prepareAnimations();\n }\n setIsFlashbarStackExpanded(prev => !prev);\n }\n\n const debouncedFocus = useDebounceCallback(focusFlashById, FOCUS_DEBOUNCE_DELAY);\n useLayoutEffect(() => {\n if (isFlashbarStackExpanded && visibleItems?.length) {\n const mostRecentItem = visibleItems[0];\n if (mostRecentItem.id !== undefined) {\n debouncedFocus(ref.current, mostRecentItem.id);\n }\n }\n // Run this after expanding, but not every time the items change.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedFocus, isFlashbarStackExpanded]);\n\n // When collapsing, scroll up if necessary to avoid losing track of the focused button\n useEffectOnUpdate(() => {\n if (!isFlashbarStackExpanded && notificationBarRef.current) {\n scrollElementIntoView(notificationBarRef.current);\n }\n }, [isFlashbarStackExpanded]);\n\n const updateBottomSpacing = useThrottleCallback(\n () => {\n // Allow vertical space between Flashbar and page bottom only when the Flashbar is reaching the end of the page,\n // otherwise avoid spacing with eventual sticky elements below.\n const listElement = listElementRef?.current;\n const flashbar = listElement?.parentElement;\n if (listElement && flashbar) {\n // Make sure the bottom padding is present when we make the calculations,\n // then we might decide to remove it or not.\n flashbar.classList.remove(styles.floating);\n const windowHeight = window.innerHeight;\n // Take the parent region into account if using the App Layout, because it might have additional margins.\n // Otherwise we use the Flashbar component for this calculation.\n const outerElement = findUpUntil(flashbar, element => element.getAttribute('role') === 'region') || flashbar;\n const applySpacing =\n isFlashbarStackExpanded && Math.ceil(outerElement.getBoundingClientRect().bottom) >= windowHeight;\n if (!applySpacing) {\n flashbar.classList.add(styles.floating);\n }\n }\n },\n resizeListenerThrottleDelay,\n [isFlashbarStackExpanded]\n );\n\n useLayoutEffect(() => {\n window.addEventListener('resize', updateBottomSpacing);\n return () => {\n window.removeEventListener('resize', updateBottomSpacing);\n updateBottomSpacing.cancel();\n };\n }, [updateBottomSpacing]);\n\n const { i18nStrings } = restProps;\n\n const i18n = useInternalI18n('flashbar');\n const ariaLabel = i18n('i18nStrings.ariaLabel', i18nStrings?.ariaLabel);\n const notificationBarText = i18n('i18nStrings.notificationBarText', i18nStrings?.notificationBarText);\n const notificationBarAriaLabel = i18n('i18nStrings.notificationBarAriaLabel', i18nStrings?.notificationBarAriaLabel);\n const iconAriaLabels = {\n errorIconAriaLabel: i18n('i18nStrings.errorIconAriaLabel', i18nStrings?.errorIconAriaLabel),\n inProgressIconAriaLabel: i18n('i18nStrings.inProgressIconAriaLabel', i18nStrings?.inProgressIconAriaLabel),\n infoIconAriaLabel: i18n('i18nStrings.infoIconAriaLabel', i18nStrings?.infoIconAriaLabel),\n successIconAriaLabel: i18n('i18nStrings.successIconAriaLabel', i18nStrings?.successIconAriaLabel),\n warningIconAriaLabel: i18n('i18nStrings.warningIconAriaLabel', i18nStrings?.warningIconAriaLabel),\n };\n\n useLayoutEffect(() => {\n // When `useLayoutEffect` is called, the DOM is updated but has not been painted yet,\n // so it's a good moment to trigger animations that will make calculations based on old and new DOM state.\n // The old state is kept in `initialAnimationState`\n // and the new state can be retrieved from the current DOM elements.\n\n if (initialAnimationState) {\n updateBottomSpacing();\n\n animate({\n elements: getElementsToAnimate(),\n oldState: initialAnimationState,\n newElementInitialState: ({ top }) => ({ scale: 0.9, y: -0.2 * top }),\n onTransitionsEnd: () => setTransitioning(false),\n });\n\n setTransitioning(true);\n setInitialAnimationState(null);\n }\n }, [updateBottomSpacing, getElementsToAnimate, initialAnimationState, isFlashbarStackExpanded]);\n\n const isCollapsible = visibleItems.length > maxNonCollapsibleItems;\n\n const countByType = getFlashTypeCount(visibleItems);\n\n const numberOfColorsInStack = new Set(visibleItems.map(getItemColor)).size;\n const maxSlots = Math.max(numberOfColorsInStack, 3);\n const stackDepth = Math.min(maxSlots, visibleItems.length);\n\n const itemsToShow = isFlashbarStackExpanded\n ? visibleItems.map((item, index) => ({ ...item, expandedIndex: index }))\n : getVisibleCollapsedItems(visibleItems, stackDepth).map((item: StackableItem, index: number) => ({\n ...item,\n collapsedIndex: index,\n }));\n\n const getItemId = (item: StackableItem | FlashbarProps.MessageDefinition) =>\n item.id ?? (item as StackableItem).expandedIndex ?? 0;\n\n // This check allows us to use the standard \"enter\" Transition only when the notification was not existing before.\n // If instead it was moved to the top of the stack but was already present in the array\n // (e.g, after dismissing another notification),\n // we need to use different, more custom and more controlled animations.\n const hasEntered = (item: StackableItem | FlashbarProps.MessageDefinition) =>\n enteringItems.some(_item => _item.id && _item.id === item.id);\n const hasLeft = (item: StackableItem | FlashbarProps.MessageDefinition) => !isStackableItem(item);\n const hasEnteredOrLeft = (item: StackableItem | FlashbarProps.MessageDefinition) => hasEntered(item) || hasLeft(item);\n\n const showInnerContent = (item: StackableItem | FlashbarProps.MessageDefinition) =>\n isFlashbarStackExpanded || hasLeft(item) || (isStackableItem(item) && item.expandedIndex === 0);\n\n const shouldUseStandardAnimation = (item: StackableItem, index: number) => index === 0 && hasEnteredOrLeft(item);\n\n const getAnimationElementId = (item: StackableItem) => `flash-${getItemId(item)}`;\n\n const renderList = () => (\n <ul\n ref={listElementRef}\n className={clsx(\n styles['flash-list'],\n isFlashbarStackExpanded ? styles.expanded : styles.collapsed,\n transitioning && styles['animation-running'],\n initialAnimationState && styles['animation-ready'],\n isVisualRefresh && styles['visual-refresh']\n )}\n id={flashbarElementId}\n aria-label={ariaLabel}\n aria-describedby={isCollapsible ? itemCountElementId : undefined}\n style={\n !isFlashbarStackExpanded || transitioning\n ? {\n [customCssProps.flashbarStackDepth]: stackDepth,\n }\n : undefined\n }\n >\n <ListWrapper withMotion={!isReducedMotion}>\n {itemsToShow.map((item: StackableItem, index: number) => (\n <Transition\n key={getItemId(item)}\n in={!hasLeft(item)}\n onStatusChange={status => {\n if (status === 'entered') {\n setEnteringItems([]);\n } else if (status === 'exited') {\n setExitingItems([]);\n }\n }}\n >\n {(state: string, transitionRootElement: React.Ref<HTMLDivElement> | undefined) => (\n <li\n aria-hidden={!showInnerContent(item)}\n className={\n showInnerContent(item)\n ? clsx(\n styles['flash-list-item'],\n !isFlashbarStackExpanded && styles.item,\n !collapsedItemRefs.current[getAnimationElementId(item)] && styles['expanded-only']\n )\n : clsx(styles.flash, styles[`flash-type-${item.type ?? 'info'}`], styles.item)\n }\n ref={element => {\n if (isFlashbarStackExpanded) {\n expandedItemRefs.current[getAnimationElementId(item)] = element;\n } else {\n collapsedItemRefs.current[getAnimationElementId(item)] = element;\n }\n }}\n style={{\n ...(index > 0 && !isFlashbarStackExpanded && getCollapsibleFlashStyles(style, item.type)),\n ...((!isFlashbarStackExpanded || transitioning) && {\n [customCssProps.flashbarStackIndex]:\n (item as StackableItem).collapsedIndex ?? (item as StackableItem).expandedIndex ?? index,\n }),\n }}\n key={getItemId(item)}\n {...getAnalyticsMetadataAttribute(getItemAnalyticsMetadata(index + 1, item.type || 'info', item.id))}\n >\n {showInnerContent(item) && (\n <Flash\n className={clsx(\n animateFlash && styles['flash-with-motion'],\n isVisualRefresh && styles['flash-refresh']\n )}\n key={getItemId(item)}\n ref={(el: HTMLDivElement | null) => {\n // Store the Flash element reference for focus management\n flashRefs.current[getItemId(item)] = el;\n\n if (shouldUseStandardAnimation(item, index) && transitionRootElement) {\n if (typeof transitionRootElement === 'function') {\n transitionRootElement(el);\n } else if (isRefObject(transitionRootElement)) {\n (transitionRootElement as React.MutableRefObject<HTMLDivElement | null>).current = el;\n }\n }\n }}\n transitionState={shouldUseStandardAnimation(item, index) ? state : undefined}\n i18nStrings={iconAriaLabels}\n style={style}\n onDismissed={handleFlashDismissed}\n {...item}\n />\n )}\n </li>\n )}\n </Transition>\n ))}\n </ListWrapper>\n </ul>\n );\n\n return (\n <div\n {...baseProps}\n className={clsx(\n baseProps.className,\n styles.flashbar,\n styles.stack,\n isCollapsible && styles.collapsible,\n visibleItems.length === 2 && styles['short-list'],\n isFlashbarStackExpanded && styles.expanded,\n isVisualRefresh && styles['visual-refresh']\n )}\n ref={mergedRef}\n {...getAnalyticsMetadataAttribute(\n getComponentsAnalyticsMetadata(visibleItems.length, true, isFlashbarStackExpanded)\n )}\n >\n {isFlashbarStackExpanded && renderList()}\n {isCollapsible && (\n <div\n className={clsx(\n styles['notification-bar'],\n isVisualRefresh && styles['visual-refresh'],\n isFlashbarStackExpanded ? styles.expanded : styles.collapsed,\n transitioning && styles['animation-running'],\n visibleItems.length === 2 && styles['short-list'],\n getVisualContextClassname('flashbar') // Visual context is needed for focus ring to be white\n )}\n onClick={toggleCollapseExpand}\n ref={notificationBarRef}\n style={getNotificationBarStyles(style)}\n {...getAnalyticsMetadataAttribute({\n action: !isFlashbarStackExpanded ? 'expand' : 'collapse',\n detail: {\n label: 'h2',\n },\n } as GeneratedAnalyticsMetadataFlashbarExpand | GeneratedAnalyticsMetadataFlashbarCollapse)}\n >\n <span aria-live=\"polite\" className={styles.status} role=\"status\" id={itemCountElementId}>\n {notificationBarText && <h2 className={styles.header}>{notificationBarText}</h2>}\n <span className={styles['item-count']}>\n {counterTypes.map(({ type, labelName, iconName }) => (\n <NotificationTypeCount\n key={type}\n iconName={iconName}\n label={iconAriaLabels[labelName]}\n count={countByType[type]}\n />\n ))}\n </span>\n </span>\n <button\n aria-controls={flashbarElementId}\n aria-describedby={itemCountElementId}\n aria-expanded={isFlashbarStackExpanded}\n aria-label={notificationBarAriaLabel}\n className={clsx(styles.button, isFlashbarStackExpanded && styles.expanded)}\n >\n <InternalIcon className={styles.icon} size=\"normal\" name=\"angle-down\" />\n </button>\n </div>\n )}\n {!isFlashbarStackExpanded && renderList()}\n </div>\n );\n}\n\nconst NotificationTypeCount = ({\n iconName,\n label,\n count,\n}: {\n iconName: IconProps.Name;\n label?: string;\n count: number;\n}) => {\n return (\n <span className={styles['type-count']}>\n <span title={label}>\n <InternalIcon name={iconName} ariaLabel={label} />\n </span>\n <span className={styles['count-number']}>{count}</span>\n </span>\n );\n};\n\nconst ListWrapper = ({ children, withMotion }: { children: ReactNode; withMotion: boolean }) =>\n withMotion ? <TransitionGroup component={null}>{children}</TransitionGroup> : <>{children}</>;\n"]}
1
+ {"version":3,"file":"collapsible-flashbar.js","sourceRoot":"","sources":["../../../src/flashbar/collapsible-flashbar.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\n\nimport React, { ReactNode, useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\n\nimport { findUpUntil } from '@cloudscape-design/component-toolkit/dom';\nimport { useUniqueId } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { useInternalI18n } from '../i18n/context';\nimport { IconProps } from '../icon/interfaces';\nimport InternalIcon from '../icon/internal';\nimport { animate, getDOMRects } from '../internal/animate';\nimport { Transition } from '../internal/components/transition';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\nimport customCssProps from '../internal/generated/custom-css-properties';\nimport { useDebounceCallback } from '../internal/hooks/use-debounce-callback';\nimport { useEffectOnUpdate } from '../internal/hooks/use-effect-on-update';\nimport { useThrottleCallback } from '../internal/hooks/use-throttle-callback';\nimport { scrollElementIntoView } from '../internal/utils/scrollable-containers';\nimport InternalLiveRegion from '../live-region/internal';\nimport {\n GeneratedAnalyticsMetadataFlashbarCollapse,\n GeneratedAnalyticsMetadataFlashbarExpand,\n} from './analytics-metadata/interfaces';\nimport { getComponentsAnalyticsMetadata, getItemAnalyticsMetadata } from './analytics-metadata/utils';\nimport { useFlashbar, useFlashbarVisibility } from './common';\nimport { Flash, focusFlashById } from './flash';\nimport { FlashbarProps, InternalFlashbarProps } from './interfaces';\nimport { getCollapsibleFlashStyles, getNotificationBarStyles } from './style';\nimport {\n counterTypes,\n FOCUS_DEBOUNCE_DELAY,\n getFlashTypeCount,\n getItemColor,\n getVisibleCollapsedItems,\n isRefObject,\n isStackableItem,\n StackableItem,\n} from './utils';\n\nimport styles from './styles.css.js';\n\n// If the number of items is equal or less than this value,\n// the toggle element will not be displayed and the Flashbar will look like a regular single-item Flashbar.\nconst maxNonCollapsibleItems = 1;\n\nconst resizeListenerThrottleDelay = 100;\n\nexport default function CollapsibleFlashbar({ items, style, ...restProps }: InternalFlashbarProps) {\n const visibleItems = useFlashbarVisibility(items);\n const [enteringItems, setEnteringItems] = useState<ReadonlyArray<FlashbarProps.MessageDefinition>>([]);\n const [exitingItems, setExitingItems] = useState<ReadonlyArray<FlashbarProps.MessageDefinition>>([]);\n const [isFlashbarStackExpanded, setIsFlashbarStackExpanded] = useState(false);\n\n const getElementsToAnimate = useCallback(() => {\n const flashElements = isFlashbarStackExpanded ? expandedItemRefs.current : collapsedItemRefs.current;\n return { ...flashElements, notificationBar: notificationBarRef.current };\n }, [isFlashbarStackExpanded]);\n\n const prepareAnimations = useCallback(() => {\n const rects = getDOMRects(getElementsToAnimate());\n setInitialAnimationState(rects);\n }, [getElementsToAnimate]);\n\n const collapsedItemRefs = useRef<Record<string, HTMLElement | null>>({});\n const expandedItemRefs = useRef<Record<string, HTMLElement | null>>({});\n const [initialAnimationState, setInitialAnimationState] = useState<Record<string, DOMRect> | null>(null);\n const listElementRef = useRef<HTMLUListElement | null>(null);\n const notificationBarRef = useRef<HTMLDivElement | null>(null);\n const [transitioning, setTransitioning] = useState(false);\n const flashbarElementId = useUniqueId('flashbar');\n const itemCountElementId = useUniqueId('item-count');\n\n const { baseProps, isReducedMotion, isVisualRefresh, mergedRef, ref, flashRefs, handleFlashDismissed } = useFlashbar({\n items: visibleItems,\n ...restProps,\n onItemsAdded: newItems => {\n setEnteringItems([...enteringItems, ...newItems]);\n },\n onItemsChanged: options => {\n // If not all items have ID, we can still animate collapse/expand transitions\n // because we can rely on each item's index in the original array,\n // but we can't do that when elements are added or removed, since the index changes.\n if (options?.allItemsHaveId && !options?.isReducedMotion) {\n prepareAnimations();\n }\n },\n onItemsRemoved: removedItems => {\n setExitingItems([...exitingItems, ...removedItems]);\n },\n });\n\n if (visibleItems.length <= maxNonCollapsibleItems && isFlashbarStackExpanded) {\n setIsFlashbarStackExpanded(false);\n }\n\n const animateFlash = !isReducedMotion;\n\n function toggleCollapseExpand() {\n if (!isReducedMotion) {\n prepareAnimations();\n }\n setIsFlashbarStackExpanded(prev => !prev);\n }\n\n const debouncedFocus = useDebounceCallback(focusFlashById, FOCUS_DEBOUNCE_DELAY);\n useLayoutEffect(() => {\n if (isFlashbarStackExpanded && visibleItems?.length) {\n const mostRecentItem = visibleItems[0];\n if (mostRecentItem.id !== undefined) {\n debouncedFocus(ref.current, mostRecentItem.id);\n }\n }\n // Run this after expanding, but not every time the items change.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedFocus, isFlashbarStackExpanded]);\n\n // When collapsing, scroll up if necessary to avoid losing track of the focused button\n useEffectOnUpdate(() => {\n if (!isFlashbarStackExpanded && notificationBarRef.current) {\n scrollElementIntoView(notificationBarRef.current);\n }\n }, [isFlashbarStackExpanded]);\n\n const updateBottomSpacing = useThrottleCallback(\n () => {\n // Allow vertical space between Flashbar and page bottom only when the Flashbar is reaching the end of the page,\n // otherwise avoid spacing with eventual sticky elements below.\n const listElement = listElementRef?.current;\n const flashbar = listElement?.parentElement;\n if (listElement && flashbar) {\n // Make sure the bottom padding is present when we make the calculations,\n // then we might decide to remove it or not.\n flashbar.classList.remove(styles.floating);\n const windowHeight = window.innerHeight;\n // Take the parent region into account if using the App Layout, because it might have additional margins.\n // Otherwise we use the Flashbar component for this calculation.\n const outerElement = findUpUntil(flashbar, element => element.getAttribute('role') === 'region') || flashbar;\n const applySpacing =\n isFlashbarStackExpanded && Math.ceil(outerElement.getBoundingClientRect().bottom) >= windowHeight;\n if (!applySpacing) {\n flashbar.classList.add(styles.floating);\n }\n }\n },\n resizeListenerThrottleDelay,\n [isFlashbarStackExpanded]\n );\n\n useLayoutEffect(() => {\n window.addEventListener('resize', updateBottomSpacing);\n return () => {\n window.removeEventListener('resize', updateBottomSpacing);\n updateBottomSpacing.cancel();\n };\n }, [updateBottomSpacing]);\n\n const { i18nStrings } = restProps;\n\n const i18n = useInternalI18n('flashbar');\n const ariaLabel = i18n('i18nStrings.ariaLabel', i18nStrings?.ariaLabel);\n const notificationBarText = i18n('i18nStrings.notificationBarText', i18nStrings?.notificationBarText);\n const notificationBarAriaLabel = i18n('i18nStrings.notificationBarAriaLabel', i18nStrings?.notificationBarAriaLabel);\n const iconAriaLabels = {\n errorIconAriaLabel: i18n('i18nStrings.errorIconAriaLabel', i18nStrings?.errorIconAriaLabel),\n inProgressIconAriaLabel: i18n('i18nStrings.inProgressIconAriaLabel', i18nStrings?.inProgressIconAriaLabel),\n infoIconAriaLabel: i18n('i18nStrings.infoIconAriaLabel', i18nStrings?.infoIconAriaLabel),\n successIconAriaLabel: i18n('i18nStrings.successIconAriaLabel', i18nStrings?.successIconAriaLabel),\n warningIconAriaLabel: i18n('i18nStrings.warningIconAriaLabel', i18nStrings?.warningIconAriaLabel),\n };\n\n useLayoutEffect(() => {\n // When `useLayoutEffect` is called, the DOM is updated but has not been painted yet,\n // so it's a good moment to trigger animations that will make calculations based on old and new DOM state.\n // The old state is kept in `initialAnimationState`\n // and the new state can be retrieved from the current DOM elements.\n\n if (initialAnimationState) {\n updateBottomSpacing();\n\n animate({\n elements: getElementsToAnimate(),\n oldState: initialAnimationState,\n newElementInitialState: ({ top }) => ({ scale: 0.9, y: -0.2 * top }),\n onTransitionsEnd: () => setTransitioning(false),\n });\n\n setTransitioning(true);\n setInitialAnimationState(null);\n }\n }, [updateBottomSpacing, getElementsToAnimate, initialAnimationState, isFlashbarStackExpanded]);\n\n const isCollapsible = visibleItems.length > maxNonCollapsibleItems;\n\n const countByType = getFlashTypeCount(visibleItems);\n\n const numberOfColorsInStack = new Set(visibleItems.map(getItemColor)).size;\n const maxSlots = Math.max(numberOfColorsInStack, 3);\n const stackDepth = Math.min(maxSlots, visibleItems.length);\n\n const itemsToShow = isFlashbarStackExpanded\n ? visibleItems.map((item, index) => ({ ...item, expandedIndex: index }))\n : getVisibleCollapsedItems(visibleItems, stackDepth).map((item: StackableItem, index: number) => ({\n ...item,\n collapsedIndex: index,\n }));\n\n const getItemId = (item: StackableItem | FlashbarProps.MessageDefinition) =>\n item.id ?? (item as StackableItem).expandedIndex ?? 0;\n\n // This check allows us to use the standard \"enter\" Transition only when the notification was not existing before.\n // If instead it was moved to the top of the stack but was already present in the array\n // (e.g, after dismissing another notification),\n // we need to use different, more custom and more controlled animations.\n const hasEntered = (item: StackableItem | FlashbarProps.MessageDefinition) =>\n enteringItems.some(_item => _item.id && _item.id === item.id);\n const hasLeft = (item: StackableItem | FlashbarProps.MessageDefinition) => !isStackableItem(item);\n const hasEnteredOrLeft = (item: StackableItem | FlashbarProps.MessageDefinition) => hasEntered(item) || hasLeft(item);\n\n const showInnerContent = (item: StackableItem | FlashbarProps.MessageDefinition) =>\n isFlashbarStackExpanded || hasLeft(item) || (isStackableItem(item) && item.expandedIndex === 0);\n\n const shouldUseStandardAnimation = (item: StackableItem, index: number) => index === 0 && hasEnteredOrLeft(item);\n\n const getAnimationElementId = (item: StackableItem) => `flash-${getItemId(item)}`;\n\n const renderList = () => (\n <ul\n ref={listElementRef}\n className={clsx(\n styles['flash-list'],\n isFlashbarStackExpanded ? styles.expanded : styles.collapsed,\n transitioning && styles['animation-running'],\n initialAnimationState && styles['animation-ready'],\n isVisualRefresh && styles['visual-refresh']\n )}\n id={flashbarElementId}\n aria-label={ariaLabel}\n aria-describedby={isCollapsible ? itemCountElementId : undefined}\n style={\n !isFlashbarStackExpanded || transitioning\n ? {\n [customCssProps.flashbarStackDepth]: stackDepth,\n }\n : undefined\n }\n >\n <ListWrapper withMotion={!isReducedMotion}>\n {itemsToShow.map((item: StackableItem, index: number) => (\n <Transition\n key={getItemId(item)}\n in={!hasLeft(item)}\n onStatusChange={status => {\n if (status === 'entered') {\n setEnteringItems([]);\n } else if (status === 'exited') {\n setExitingItems([]);\n }\n }}\n >\n {(state: string, transitionRootElement: React.Ref<HTMLDivElement> | undefined) => (\n <li\n aria-hidden={!showInnerContent(item)}\n className={\n showInnerContent(item)\n ? clsx(\n styles['flash-list-item'],\n !isFlashbarStackExpanded && styles.item,\n !collapsedItemRefs.current[getAnimationElementId(item)] && styles['expanded-only']\n )\n : clsx(styles.flash, styles[`flash-type-${item.type ?? 'info'}`], styles.item)\n }\n ref={element => {\n if (isFlashbarStackExpanded) {\n expandedItemRefs.current[getAnimationElementId(item)] = element;\n } else {\n collapsedItemRefs.current[getAnimationElementId(item)] = element;\n }\n }}\n style={{\n ...(index > 0 && !isFlashbarStackExpanded && getCollapsibleFlashStyles(style, item.type)),\n ...((!isFlashbarStackExpanded || transitioning) && {\n [customCssProps.flashbarStackIndex]:\n (item as StackableItem).collapsedIndex ?? (item as StackableItem).expandedIndex ?? index,\n }),\n }}\n key={getItemId(item)}\n {...getAnalyticsMetadataAttribute(getItemAnalyticsMetadata(index + 1, item.type || 'info', item.id))}\n >\n {showInnerContent(item) && (\n <Flash\n className={clsx(\n animateFlash && styles['flash-with-motion'],\n isVisualRefresh && styles['flash-refresh']\n )}\n key={getItemId(item)}\n ref={(el: HTMLDivElement | null) => {\n // Store the Flash element reference for focus management\n flashRefs.current[getItemId(item)] = el;\n\n if (shouldUseStandardAnimation(item, index) && transitionRootElement) {\n if (typeof transitionRootElement === 'function') {\n transitionRootElement(el);\n } else if (isRefObject(transitionRootElement)) {\n (transitionRootElement as React.MutableRefObject<HTMLDivElement | null>).current = el;\n }\n }\n }}\n transitionState={shouldUseStandardAnimation(item, index) ? state : undefined}\n i18nStrings={iconAriaLabels}\n style={style}\n onDismissed={handleFlashDismissed}\n {...item}\n />\n )}\n </li>\n )}\n </Transition>\n ))}\n </ListWrapper>\n </ul>\n );\n\n return (\n <div\n {...baseProps}\n className={clsx(\n baseProps.className,\n styles.flashbar,\n styles.stack,\n isCollapsible && styles.collapsible,\n visibleItems.length === 2 && styles['short-list'],\n isFlashbarStackExpanded && styles.expanded,\n isVisualRefresh && styles['visual-refresh']\n )}\n ref={mergedRef}\n {...getAnalyticsMetadataAttribute(\n getComponentsAnalyticsMetadata(visibleItems.length, true, isFlashbarStackExpanded)\n )}\n >\n {isFlashbarStackExpanded && renderList()}\n {isCollapsible && (\n <div\n className={clsx(\n styles['notification-bar'],\n isVisualRefresh && styles['visual-refresh'],\n isFlashbarStackExpanded ? styles.expanded : styles.collapsed,\n transitioning && styles['animation-running'],\n visibleItems.length === 2 && styles['short-list'],\n getVisualContextClassname('flashbar') // Visual context is needed for focus ring to be white\n )}\n onClick={toggleCollapseExpand}\n ref={notificationBarRef}\n style={getNotificationBarStyles(style)}\n {...getAnalyticsMetadataAttribute({\n action: !isFlashbarStackExpanded ? 'expand' : 'collapse',\n detail: {\n label: 'h2',\n },\n } as GeneratedAnalyticsMetadataFlashbarExpand | GeneratedAnalyticsMetadataFlashbarCollapse)}\n >\n <span className={styles.status} id={itemCountElementId} role=\"status\" aria-live=\"off\">\n {notificationBarText && <h2 className={styles.header}>{notificationBarText}</h2>}\n <span className={styles['item-count']}>\n {counterTypes.map(({ type, labelName, iconName }) => (\n <NotificationTypeCount\n key={type}\n iconName={iconName}\n label={iconAriaLabels[labelName]}\n count={countByType[type]}\n />\n ))}\n </span>\n </span>\n <InternalLiveRegion\n preventInitialAnnouncement={true}\n sources={[\n notificationBarText,\n ...counterTypes.flatMap(({ type, labelName }) => [iconAriaLabels[labelName], `${countByType[type]}`]),\n ]}\n />\n <button\n aria-controls={flashbarElementId}\n aria-describedby={itemCountElementId}\n aria-expanded={isFlashbarStackExpanded}\n aria-label={notificationBarAriaLabel}\n className={clsx(styles.button, isFlashbarStackExpanded && styles.expanded)}\n >\n <InternalIcon className={styles.icon} size=\"normal\" name=\"angle-down\" />\n </button>\n </div>\n )}\n {!isFlashbarStackExpanded && renderList()}\n </div>\n );\n}\n\nconst NotificationTypeCount = ({\n iconName,\n label,\n count,\n}: {\n iconName: IconProps.Name;\n label?: string;\n count: number;\n}) => {\n return (\n <span className={styles['type-count']}>\n <span title={label}>\n <InternalIcon name={iconName} ariaLabel={label} />\n </span>\n <span className={styles['count-number']}>{count}</span>\n </span>\n );\n};\n\nconst ListWrapper = ({ children, withMotion }: { children: ReactNode; withMotion: boolean }) =>\n withMotion ? <TransitionGroup component={null}>{children}</TransitionGroup> : <>{children}</>;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"flash.d.ts","sourceRoot":"","sources":["../../../src/flashbar/flash.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiB,MAAM,OAAO,CAAC;AA6BtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAoD7C,eAAO,MAAM,uBAAuB,GAAI,OAAO,WAAW,GAAG,IAAI,SAYhE,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,QAYzE;AAED,UAAU,UAAW,SAAQ,aAAa,CAAC,iBAAiB;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC;IACxC,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC;IAC5B,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,KAAK,mFAuLjB,CAAC"}
1
+ {"version":3,"file":"flash.d.ts","sourceRoot":"","sources":["../../../src/flashbar/flash.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiB,MAAM,OAAO,CAAC;AA6BtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAoD7C,eAAO,MAAM,uBAAuB,GAAI,OAAO,WAAW,GAAG,IAAI,SAYhE,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,QAYzE;AAED,UAAU,UAAW,SAAQ,aAAa,CAAC,iBAAiB;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC;IACxC,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC;IAC5B,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,KAAK,mFAoLjB,CAAC"}
@@ -95,17 +95,14 @@ export const Flash = React.forwardRef(({ id, header, content, dismissible, dismi
95
95
  if (analyticsMetadata === null || analyticsMetadata === void 0 ? void 0 : analyticsMetadata.suppressFlowMetricEvents) {
96
96
  analyticsAttributes[DATA_ATTR_ANALYTICS_SUPPRESS_FLOW_EVENTS] = 'true';
97
97
  }
98
- return (
99
- // We're not using "polite" or "assertive" here, just turning default behavior off.
100
- // eslint-disable-next-line @cloudscape-design/components/prefer-live-region
101
- React.createElement("div", { ref: mergedRef, role: ariaRole, "aria-live": ariaRole ? 'off' : undefined, "data-itemid": id, className: clsx(styles.flash, styles[`flash-type-${effectiveType}`], className, transitionState && {
98
+ return (React.createElement("div", { ref: mergedRef, "data-itemid": id, className: clsx(styles.flash, styles[`flash-type-${effectiveType}`], className, transitionState && {
102
99
  [styles.enter]: transitionState === 'enter',
103
100
  [styles.entering]: transitionState === 'entering',
104
101
  [styles.entered]: transitionState === 'entered',
105
102
  [styles.exit]: transitionState === 'exit',
106
103
  [styles.exiting]: transitionState === 'exiting',
107
104
  [styles.exited]: transitionState === 'exited',
108
- }, getVisualContextClassname(type === 'warning' && !loading ? 'flashbar-warning' : 'flashbar'), initialHidden && styles['initial-hidden']), style: getFlashStyles(style, effectiveType), ...analyticsAttributes },
105
+ }, getVisualContextClassname(type === 'warning' && !loading ? 'flashbar-warning' : 'flashbar'), initialHidden && styles['initial-hidden']), style: getFlashStyles(style, effectiveType), ...(ariaRole ? { role: ariaRole, 'aria-live': 'off' } : {}), ...analyticsAttributes },
109
106
  React.createElement("div", { className: styles['flash-body'] },
110
107
  React.createElement("div", { className: styles['flash-focus-container'], tabIndex: -1, role: "group", "aria-labelledby": `${flashIconId} ${flashMessageId}` },
111
108
  React.createElement("div", { className: clsx(styles['flash-icon'], styles['flash-text']), id: flashIconId }, icon),