@cloudscape-design/components 3.0.193 → 3.0.195

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 (347) hide show
  1. package/alert/styles.css.js +19 -19
  2. package/alert/styles.scoped.css +33 -33
  3. package/alert/styles.selectors.js +19 -19
  4. package/annotation-context/annotation/styles.css.js +24 -24
  5. package/annotation-context/annotation/styles.scoped.css +32 -32
  6. package/annotation-context/annotation/styles.selectors.js +24 -24
  7. package/app-layout/content-wrapper/styles.css.js +3 -3
  8. package/app-layout/content-wrapper/styles.scoped.css +8 -8
  9. package/app-layout/content-wrapper/styles.selectors.js +3 -3
  10. package/app-layout/mobile-toolbar/styles.css.js +4 -4
  11. package/app-layout/mobile-toolbar/styles.scoped.css +9 -9
  12. package/app-layout/mobile-toolbar/styles.selectors.js +4 -4
  13. package/app-layout/notifications/styles.css.js +1 -1
  14. package/app-layout/notifications/styles.scoped.css +2 -1
  15. package/app-layout/notifications/styles.selectors.js +1 -1
  16. package/app-layout/styles.css.js +26 -26
  17. package/app-layout/styles.scoped.css +35 -35
  18. package/app-layout/styles.selectors.js +26 -26
  19. package/app-layout/toggles/styles.css.js +1 -1
  20. package/app-layout/toggles/styles.scoped.css +3 -3
  21. package/app-layout/toggles/styles.selectors.js +1 -1
  22. package/app-layout/visual-refresh/styles.css.js +60 -60
  23. package/app-layout/visual-refresh/styles.scoped.css +225 -224
  24. package/app-layout/visual-refresh/styles.selectors.js +60 -60
  25. package/area-chart/styles.css.js +13 -13
  26. package/area-chart/styles.scoped.css +18 -18
  27. package/area-chart/styles.selectors.js +13 -13
  28. package/attribute-editor/interfaces.d.ts +1 -0
  29. package/attribute-editor/interfaces.d.ts.map +1 -1
  30. package/attribute-editor/interfaces.js.map +1 -1
  31. package/attribute-editor/internal.d.ts.map +1 -1
  32. package/attribute-editor/internal.js +17 -2
  33. package/attribute-editor/internal.js.map +1 -1
  34. package/attribute-editor/styles.css.js +14 -14
  35. package/attribute-editor/styles.scoped.css +26 -26
  36. package/attribute-editor/styles.selectors.js +14 -14
  37. package/badge/styles.css.js +5 -5
  38. package/badge/styles.scoped.css +7 -7
  39. package/badge/styles.selectors.js +5 -5
  40. package/box/styles.css.js +189 -189
  41. package/box/styles.scoped.css +240 -240
  42. package/box/styles.selectors.js +189 -189
  43. package/breadcrumb-group/item/styles.css.js +9 -9
  44. package/breadcrumb-group/item/styles.scoped.css +19 -19
  45. package/breadcrumb-group/item/styles.selectors.js +9 -9
  46. package/breadcrumb-group/styles.css.js +6 -6
  47. package/breadcrumb-group/styles.scoped.css +13 -13
  48. package/breadcrumb-group/styles.selectors.js +6 -6
  49. package/button/styles.css.js +18 -18
  50. package/button/styles.scoped.css +138 -138
  51. package/button/styles.selectors.js +18 -18
  52. package/button-dropdown/category-elements/styles.css.js +13 -13
  53. package/button-dropdown/category-elements/styles.scoped.css +25 -25
  54. package/button-dropdown/category-elements/styles.selectors.js +13 -13
  55. package/button-dropdown/item-element/styles.css.js +14 -14
  56. package/button-dropdown/item-element/styles.scoped.css +20 -20
  57. package/button-dropdown/item-element/styles.selectors.js +14 -14
  58. package/button-dropdown/mobile-expandable-group/styles.css.js +5 -5
  59. package/button-dropdown/mobile-expandable-group/styles.scoped.css +7 -7
  60. package/button-dropdown/mobile-expandable-group/styles.selectors.js +5 -5
  61. package/button-dropdown/styles.css.js +8 -8
  62. package/button-dropdown/styles.scoped.css +16 -16
  63. package/button-dropdown/styles.selectors.js +8 -8
  64. package/calendar/styles.css.js +18 -18
  65. package/calendar/styles.scoped.css +40 -40
  66. package/calendar/styles.selectors.js +18 -18
  67. package/cards/styles.css.js +37 -37
  68. package/cards/styles.scoped.css +122 -57
  69. package/cards/styles.selectors.js +37 -37
  70. package/checkbox/styles.css.js +3 -3
  71. package/checkbox/styles.scoped.css +7 -7
  72. package/checkbox/styles.selectors.js +3 -3
  73. package/code-editor/styles.css.js +32 -32
  74. package/code-editor/styles.scoped.css +111 -111
  75. package/code-editor/styles.selectors.js +32 -32
  76. package/collection-preferences/styles.css.js +20 -20
  77. package/collection-preferences/styles.scoped.css +25 -25
  78. package/collection-preferences/styles.selectors.js +20 -20
  79. package/column-layout/styles.css.js +13 -13
  80. package/column-layout/styles.scoped.css +45 -45
  81. package/column-layout/styles.selectors.js +13 -13
  82. package/container/internal.d.ts.map +1 -1
  83. package/container/internal.js +1 -1
  84. package/container/internal.js.map +1 -1
  85. package/container/styles.css.js +18 -17
  86. package/container/styles.scoped.css +107 -44
  87. package/container/styles.selectors.js +18 -17
  88. package/container/use-sticky-header.d.ts.map +1 -1
  89. package/container/use-sticky-header.js +4 -15
  90. package/container/use-sticky-header.js.map +1 -1
  91. package/content-layout/styles.css.js +7 -7
  92. package/content-layout/styles.scoped.css +13 -13
  93. package/content-layout/styles.selectors.js +7 -7
  94. package/date-picker/styles.css.js +7 -7
  95. package/date-picker/styles.scoped.css +11 -11
  96. package/date-picker/styles.selectors.js +7 -7
  97. package/date-range-picker/calendar/grids/styles.css.js +25 -25
  98. package/date-range-picker/calendar/grids/styles.scoped.css +44 -44
  99. package/date-range-picker/calendar/grids/styles.selectors.js +25 -25
  100. package/date-range-picker/relative-range/styles.css.js +9 -9
  101. package/date-range-picker/relative-range/styles.scoped.css +15 -15
  102. package/date-range-picker/relative-range/styles.selectors.js +9 -9
  103. package/date-range-picker/styles.css.js +38 -38
  104. package/date-range-picker/styles.scoped.css +47 -47
  105. package/date-range-picker/styles.selectors.js +38 -38
  106. package/expandable-section/styles.css.js +21 -21
  107. package/expandable-section/styles.scoped.css +44 -44
  108. package/expandable-section/styles.selectors.js +21 -21
  109. package/flashbar/collapsible-flashbar.d.ts +2 -2
  110. package/flashbar/collapsible-flashbar.d.ts.map +1 -1
  111. package/flashbar/collapsible-flashbar.js +19 -9
  112. package/flashbar/collapsible-flashbar.js.map +1 -1
  113. package/flashbar/common.d.ts +2 -2
  114. package/flashbar/common.d.ts.map +1 -1
  115. package/flashbar/common.js.map +1 -1
  116. package/flashbar/index.d.ts +2 -2
  117. package/flashbar/index.d.ts.map +1 -1
  118. package/flashbar/index.js +1 -4
  119. package/flashbar/index.js.map +1 -1
  120. package/flashbar/interfaces.d.ts +30 -17
  121. package/flashbar/interfaces.d.ts.map +1 -1
  122. package/flashbar/interfaces.js.map +1 -1
  123. package/flashbar/non-collapsible-flashbar.d.ts +2 -2
  124. package/flashbar/non-collapsible-flashbar.d.ts.map +1 -1
  125. package/flashbar/non-collapsible-flashbar.js.map +1 -1
  126. package/flashbar/styles.css.js +43 -43
  127. package/flashbar/styles.scoped.css +152 -163
  128. package/flashbar/styles.selectors.js +43 -43
  129. package/flashbar/utils.d.ts +1 -0
  130. package/flashbar/utils.d.ts.map +1 -1
  131. package/flashbar/utils.js +3 -0
  132. package/flashbar/utils.js.map +1 -1
  133. package/form/styles.css.js +8 -8
  134. package/form/styles.scoped.css +10 -10
  135. package/form/styles.selectors.js +8 -8
  136. package/form-field/styles.css.js +19 -19
  137. package/form-field/styles.scoped.css +31 -31
  138. package/form-field/styles.selectors.js +19 -19
  139. package/grid/styles.css.js +53 -53
  140. package/grid/styles.scoped.css +56 -56
  141. package/grid/styles.selectors.js +53 -53
  142. package/header/styles.css.js +44 -44
  143. package/header/styles.scoped.css +49 -49
  144. package/header/styles.selectors.js +44 -44
  145. package/help-panel/styles.css.js +4 -4
  146. package/help-panel/styles.scoped.css +60 -60
  147. package/help-panel/styles.selectors.js +4 -4
  148. package/hotspot/styles.css.js +7 -7
  149. package/hotspot/styles.scoped.css +9 -9
  150. package/hotspot/styles.selectors.js +7 -7
  151. package/icon/styles.css.js +21 -21
  152. package/icon/styles.scoped.css +50 -50
  153. package/icon/styles.selectors.js +21 -21
  154. package/input/styles.css.js +12 -12
  155. package/input/styles.scoped.css +32 -32
  156. package/input/styles.selectors.js +12 -12
  157. package/internal/base-component/styles.scoped.css +6 -6
  158. package/internal/components/abstract-switch/styles.css.js +12 -12
  159. package/internal/components/abstract-switch/styles.scoped.css +21 -21
  160. package/internal/components/abstract-switch/styles.selectors.js +12 -12
  161. package/internal/components/button-trigger/styles.css.js +9 -9
  162. package/internal/components/button-trigger/styles.scoped.css +25 -25
  163. package/internal/components/button-trigger/styles.selectors.js +9 -9
  164. package/internal/components/chart-filter/styles.css.js +3 -3
  165. package/internal/components/chart-filter/styles.scoped.css +5 -5
  166. package/internal/components/chart-filter/styles.selectors.js +3 -3
  167. package/internal/components/chart-legend/styles.css.js +6 -6
  168. package/internal/components/chart-legend/styles.scoped.css +17 -17
  169. package/internal/components/chart-legend/styles.selectors.js +6 -6
  170. package/internal/components/chart-plot/styles.css.js +5 -5
  171. package/internal/components/chart-plot/styles.scoped.css +7 -7
  172. package/internal/components/chart-plot/styles.selectors.js +5 -5
  173. package/internal/components/chart-popover/styles.css.js +3 -3
  174. package/internal/components/chart-popover/styles.scoped.css +5 -5
  175. package/internal/components/chart-popover/styles.selectors.js +3 -3
  176. package/internal/components/chart-series-details/styles.css.js +5 -5
  177. package/internal/components/chart-series-details/styles.scoped.css +10 -10
  178. package/internal/components/chart-series-details/styles.selectors.js +5 -5
  179. package/internal/components/chart-series-marker/styles.css.js +5 -5
  180. package/internal/components/chart-series-marker/styles.scoped.css +9 -9
  181. package/internal/components/chart-series-marker/styles.selectors.js +5 -5
  182. package/internal/components/checkbox-icon/styles.css.js +7 -7
  183. package/internal/components/checkbox-icon/styles.scoped.css +10 -10
  184. package/internal/components/checkbox-icon/styles.selectors.js +7 -7
  185. package/internal/components/dropdown/styles.css.js +20 -20
  186. package/internal/components/dropdown/styles.scoped.css +37 -37
  187. package/internal/components/dropdown/styles.selectors.js +20 -20
  188. package/internal/components/dropdown-footer/styles.css.js +3 -3
  189. package/internal/components/dropdown-footer/styles.scoped.css +5 -5
  190. package/internal/components/dropdown-footer/styles.selectors.js +3 -3
  191. package/internal/components/dropdown-status/styles.css.js +2 -2
  192. package/internal/components/dropdown-status/styles.scoped.css +4 -4
  193. package/internal/components/dropdown-status/styles.selectors.js +2 -2
  194. package/internal/components/filtering-token/styles.css.js +7 -7
  195. package/internal/components/filtering-token/styles.scoped.css +15 -15
  196. package/internal/components/filtering-token/styles.selectors.js +7 -7
  197. package/internal/components/menu-dropdown/styles.css.js +7 -7
  198. package/internal/components/menu-dropdown/styles.scoped.css +15 -15
  199. package/internal/components/menu-dropdown/styles.selectors.js +7 -7
  200. package/internal/components/option/styles.css.js +17 -17
  201. package/internal/components/option/styles.scoped.css +31 -31
  202. package/internal/components/option/styles.selectors.js +17 -17
  203. package/internal/components/options-list/styles.css.js +2 -2
  204. package/internal/components/options-list/styles.scoped.css +4 -4
  205. package/internal/components/options-list/styles.selectors.js +2 -2
  206. package/internal/components/screenreader-only/styles.css.js +1 -1
  207. package/internal/components/screenreader-only/styles.scoped.css +3 -3
  208. package/internal/components/screenreader-only/styles.selectors.js +1 -1
  209. package/internal/components/selectable-item/styles.css.js +16 -16
  210. package/internal/components/selectable-item/styles.scoped.css +29 -29
  211. package/internal/components/selectable-item/styles.selectors.js +16 -16
  212. package/internal/environment.js +1 -1
  213. package/internal/generated/custom-css-properties/index.d.ts.map +1 -1
  214. package/internal/generated/custom-css-properties/index.js +28 -27
  215. package/internal/generated/custom-css-properties/index.js.map +1 -1
  216. package/internal/generated/theming/index.cjs +6 -6
  217. package/internal/generated/theming/index.js +6 -6
  218. package/internal/manifest.json +1 -1
  219. package/link/styles.css.js +20 -20
  220. package/link/styles.scoped.css +73 -73
  221. package/link/styles.selectors.js +20 -20
  222. package/mixed-line-bar-chart/styles.css.js +19 -19
  223. package/mixed-line-bar-chart/styles.scoped.css +28 -28
  224. package/mixed-line-bar-chart/styles.selectors.js +19 -19
  225. package/modal/styles.css.js +22 -22
  226. package/modal/styles.scoped.css +40 -47
  227. package/modal/styles.selectors.js +22 -22
  228. package/multiselect/styles.css.js +1 -1
  229. package/multiselect/styles.scoped.css +3 -3
  230. package/multiselect/styles.selectors.js +1 -1
  231. package/package.json +1 -1
  232. package/pagination/styles.css.js +9 -9
  233. package/pagination/styles.scoped.css +25 -25
  234. package/pagination/styles.selectors.js +9 -9
  235. package/pie-chart/styles.css.js +27 -27
  236. package/pie-chart/styles.scoped.css +45 -45
  237. package/pie-chart/styles.selectors.js +27 -27
  238. package/popover/styles.css.js +50 -50
  239. package/popover/styles.scoped.css +73 -73
  240. package/popover/styles.selectors.js +50 -50
  241. package/progress-bar/styles.css.js +18 -18
  242. package/progress-bar/styles.scoped.css +36 -36
  243. package/progress-bar/styles.selectors.js +18 -18
  244. package/property-filter/styles.css.js +33 -33
  245. package/property-filter/styles.scoped.css +37 -37
  246. package/property-filter/styles.selectors.js +33 -33
  247. package/radio-group/styles.css.js +9 -9
  248. package/radio-group/styles.scoped.css +17 -17
  249. package/radio-group/styles.selectors.js +9 -9
  250. package/segmented-control/styles.css.js +14 -14
  251. package/segmented-control/styles.scoped.css +35 -35
  252. package/segmented-control/styles.selectors.js +14 -14
  253. package/select/parts/styles.css.js +9 -9
  254. package/select/parts/styles.scoped.css +14 -14
  255. package/select/parts/styles.selectors.js +9 -9
  256. package/select/styles.css.js +1 -1
  257. package/select/styles.scoped.css +3 -3
  258. package/select/styles.selectors.js +1 -1
  259. package/side-navigation/styles.css.js +26 -26
  260. package/side-navigation/styles.scoped.css +38 -38
  261. package/side-navigation/styles.selectors.js +26 -26
  262. package/space-between/styles.css.js +28 -28
  263. package/space-between/styles.scoped.css +31 -31
  264. package/space-between/styles.selectors.js +28 -28
  265. package/spinner/styles.css.js +13 -13
  266. package/spinner/styles.scoped.css +20 -20
  267. package/spinner/styles.selectors.js +13 -13
  268. package/split-panel/styles.css.js +59 -59
  269. package/split-panel/styles.scoped.css +85 -85
  270. package/split-panel/styles.selectors.js +59 -59
  271. package/status-indicator/styles.css.js +20 -20
  272. package/status-indicator/styles.scoped.css +28 -28
  273. package/status-indicator/styles.selectors.js +20 -20
  274. package/table/body-cell/styles.css.js +18 -18
  275. package/table/body-cell/styles.scoped.css +52 -52
  276. package/table/body-cell/styles.selectors.js +18 -18
  277. package/table/header-cell/styles.css.js +19 -19
  278. package/table/header-cell/styles.scoped.css +33 -33
  279. package/table/header-cell/styles.selectors.js +19 -19
  280. package/table/resizer/styles.css.js +6 -6
  281. package/table/resizer/styles.scoped.css +13 -13
  282. package/table/resizer/styles.selectors.js +6 -6
  283. package/table/selection-control/styles.css.js +3 -3
  284. package/table/selection-control/styles.scoped.css +5 -5
  285. package/table/selection-control/styles.selectors.js +3 -3
  286. package/table/styles.css.js +33 -33
  287. package/table/styles.scoped.css +41 -41
  288. package/table/styles.selectors.js +33 -33
  289. package/tabs/styles.css.js +21 -21
  290. package/tabs/styles.scoped.css +42 -42
  291. package/tabs/styles.selectors.js +21 -21
  292. package/tag-editor/interfaces.d.ts +1 -0
  293. package/tag-editor/interfaces.d.ts.map +1 -1
  294. package/tag-editor/interfaces.js.map +1 -1
  295. package/tag-editor/styles.css.js +3 -3
  296. package/tag-editor/styles.scoped.css +12 -12
  297. package/tag-editor/styles.selectors.js +3 -3
  298. package/test-utils/dom/flashbar/index.d.ts +2 -0
  299. package/test-utils/dom/flashbar/index.js +2 -0
  300. package/test-utils/dom/flashbar/index.js.map +1 -1
  301. package/test-utils/selectors/flashbar/index.d.ts +2 -0
  302. package/test-utils/selectors/flashbar/index.js +2 -0
  303. package/test-utils/selectors/flashbar/index.js.map +1 -1
  304. package/test-utils/tsconfig.tsbuildinfo +1 -1
  305. package/text-content/styles.css.js +1 -1
  306. package/text-content/styles.scoped.css +62 -62
  307. package/text-content/styles.selectors.js +1 -1
  308. package/text-filter/styles.css.js +4 -4
  309. package/text-filter/styles.scoped.css +6 -6
  310. package/text-filter/styles.selectors.js +4 -4
  311. package/textarea/styles.css.js +4 -4
  312. package/textarea/styles.scoped.css +14 -14
  313. package/textarea/styles.selectors.js +4 -4
  314. package/tiles/styles.css.js +28 -28
  315. package/tiles/styles.scoped.css +70 -70
  316. package/tiles/styles.selectors.js +28 -28
  317. package/toggle/styles.css.js +8 -8
  318. package/toggle/styles.scoped.css +15 -15
  319. package/toggle/styles.selectors.js +8 -8
  320. package/token-group/styles.css.js +7 -7
  321. package/token-group/styles.scoped.css +24 -24
  322. package/token-group/styles.selectors.js +7 -7
  323. package/top-navigation/1.0-beta/styles.css.js +25 -25
  324. package/top-navigation/1.0-beta/styles.scoped.css +44 -44
  325. package/top-navigation/1.0-beta/styles.selectors.js +25 -25
  326. package/top-navigation/styles.css.js +47 -47
  327. package/top-navigation/styles.scoped.css +68 -68
  328. package/top-navigation/styles.selectors.js +47 -47
  329. package/tutorial-panel/components/tutorial-detail-view/styles.css.js +20 -20
  330. package/tutorial-panel/components/tutorial-detail-view/styles.scoped.css +23 -23
  331. package/tutorial-panel/components/tutorial-detail-view/styles.selectors.js +20 -20
  332. package/tutorial-panel/components/tutorial-list/styles.css.js +18 -18
  333. package/tutorial-panel/components/tutorial-list/styles.scoped.css +29 -29
  334. package/tutorial-panel/components/tutorial-list/styles.selectors.js +18 -18
  335. package/tutorial-panel/styles.css.js +1 -1
  336. package/tutorial-panel/styles.scoped.css +3 -3
  337. package/tutorial-panel/styles.selectors.js +1 -1
  338. package/wizard/index.d.ts.map +1 -1
  339. package/wizard/index.js +5 -4
  340. package/wizard/index.js.map +1 -1
  341. package/wizard/internal/analytics.d.ts +3 -3
  342. package/wizard/internal/analytics.d.ts.map +1 -1
  343. package/wizard/internal/analytics.js +6 -11
  344. package/wizard/internal/analytics.js.map +1 -1
  345. package/wizard/styles.css.js +32 -32
  346. package/wizard/styles.scoped.css +98 -64
  347. package/wizard/styles.selectors.js +32 -32
@@ -50,8 +50,6 @@
50
50
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
51
51
  SPDX-License-Identifier: Apache-2.0
52
52
  */
53
- /* stylelint-disable @cloudscape-design/no-motion-outside-of-mixin, selector-combinator-disallowed-list, selector-pseudo-class-no-unknown, selector-class-pattern */
54
- /* stylelint-enable @cloudscape-design/no-motion-outside-of-mixin, selector-combinator-disallowed-list, selector-pseudo-class-no-unknown, selector-class-pattern */
55
53
  /*
56
54
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
57
55
  SPDX-License-Identifier: Apache-2.0
@@ -64,6 +62,8 @@
64
62
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
65
63
  SPDX-License-Identifier: Apache-2.0
66
64
  */
65
+ /* stylelint-disable @cloudscape-design/no-motion-outside-of-mixin, selector-combinator-disallowed-list, selector-pseudo-class-no-unknown, selector-class-pattern */
66
+ /* stylelint-enable @cloudscape-design/no-motion-outside-of-mixin, selector-combinator-disallowed-list, selector-pseudo-class-no-unknown, selector-class-pattern */
67
67
  /*
68
68
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
69
69
  SPDX-License-Identifier: Apache-2.0
@@ -94,10 +94,10 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
94
94
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
95
95
  SPDX-License-Identifier: Apache-2.0
96
96
  */
97
- .awsui_content-enter_gwq0h_f8qtu_97:not(#\9) {
98
- animation: awsui_awsui-motion-fade-in_gwq0h_f8qtu_1 var(--motion-duration-show-paced-7wspqf, 180ms) var(--motion-easing-show-paced-wj4ybn, ease-out);
97
+ .awsui_content-enter_gwq0h_1djey_97:not(#\9) {
98
+ animation: awsui_awsui-motion-fade-in_gwq0h_1djey_1 var(--motion-duration-show-paced-7wspqf, 180ms) var(--motion-easing-show-paced-wj4ybn, ease-out);
99
99
  }
100
- @keyframes awsui_awsui-motion-fade-in_gwq0h_f8qtu_1 {
100
+ @keyframes awsui_awsui-motion-fade-in_gwq0h_1djey_1 {
101
101
  from {
102
102
  opacity: 0.2;
103
103
  }
@@ -106,40 +106,40 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
106
106
  }
107
107
  }
108
108
  @media (prefers-reduced-motion: reduce) {
109
- .awsui_content-enter_gwq0h_f8qtu_97:not(#\9) {
109
+ .awsui_content-enter_gwq0h_1djey_97:not(#\9) {
110
110
  animation: none;
111
111
  transition: none;
112
112
  }
113
113
  }
114
- .awsui-motion-disabled .awsui_content-enter_gwq0h_f8qtu_97:not(#\9), .awsui-mode-entering .awsui_content-enter_gwq0h_f8qtu_97:not(#\9) {
114
+ .awsui-motion-disabled .awsui_content-enter_gwq0h_1djey_97:not(#\9), .awsui-mode-entering .awsui_content-enter_gwq0h_1djey_97:not(#\9) {
115
115
  animation: none;
116
116
  transition: none;
117
117
  }
118
118
 
119
- .awsui_trigger-expanded_gwq0h_f8qtu_119:not(#\9) {
119
+ .awsui_trigger-expanded_gwq0h_1djey_119:not(#\9) {
120
120
  transition: border-bottom-color var(--motion-duration-show-paced-7wspqf, 180ms) var(--motion-easing-show-paced-wj4ybn, ease-out);
121
121
  }
122
122
  @media (prefers-reduced-motion: reduce) {
123
- .awsui_trigger-expanded_gwq0h_f8qtu_119:not(#\9) {
123
+ .awsui_trigger-expanded_gwq0h_1djey_119:not(#\9) {
124
124
  animation: none;
125
125
  transition: none;
126
126
  }
127
127
  }
128
- .awsui-motion-disabled .awsui_trigger-expanded_gwq0h_f8qtu_119:not(#\9), .awsui-mode-entering .awsui_trigger-expanded_gwq0h_f8qtu_119:not(#\9) {
128
+ .awsui-motion-disabled .awsui_trigger-expanded_gwq0h_1djey_119:not(#\9), .awsui-mode-entering .awsui_trigger-expanded_gwq0h_1djey_119:not(#\9) {
129
129
  animation: none;
130
130
  transition: none;
131
131
  }
132
132
 
133
- .awsui_icon_gwq0h_f8qtu_133:not(#\9) {
133
+ .awsui_icon_gwq0h_1djey_133:not(#\9) {
134
134
  transition: transform var(--motion-duration-rotate-90-ux18sr, 135ms) var(--motion-easing-rotate-90-eoew89, cubic-bezier(0.165, 0.84, 0.44, 1));
135
135
  }
136
136
  @media (prefers-reduced-motion: reduce) {
137
- .awsui_icon_gwq0h_f8qtu_133:not(#\9) {
137
+ .awsui_icon_gwq0h_1djey_133:not(#\9) {
138
138
  animation: none;
139
139
  transition: none;
140
140
  }
141
141
  }
142
- .awsui-motion-disabled .awsui_icon_gwq0h_f8qtu_133:not(#\9), .awsui-mode-entering .awsui_icon_gwq0h_f8qtu_133:not(#\9) {
142
+ .awsui-motion-disabled .awsui_icon_gwq0h_1djey_133:not(#\9), .awsui-mode-entering .awsui_icon_gwq0h_1djey_133:not(#\9) {
143
143
  animation: none;
144
144
  transition: none;
145
145
  }
@@ -148,7 +148,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
148
148
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
149
149
  SPDX-License-Identifier: Apache-2.0
150
150
  */
151
- .awsui_root_gwq0h_f8qtu_151:not(#\9) {
151
+ .awsui_root_gwq0h_1djey_151:not(#\9) {
152
152
  /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
153
153
  border-collapse: separate;
154
154
  border-spacing: 0;
@@ -191,20 +191,20 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
191
191
  display: block;
192
192
  }
193
193
 
194
- .awsui_icon_gwq0h_f8qtu_133:not(#\9) {
194
+ .awsui_icon_gwq0h_1djey_133:not(#\9) {
195
195
  transform: rotate(-90deg);
196
196
  }
197
- .awsui_icon_gwq0h_f8qtu_133.awsui_expanded_gwq0h_f8qtu_171:not(#\9) {
197
+ .awsui_icon_gwq0h_1djey_133.awsui_expanded_gwq0h_1djey_171:not(#\9) {
198
198
  transform: rotate(0deg);
199
199
  }
200
200
 
201
- .awsui_icon-container_gwq0h_f8qtu_175:not(#\9) {
201
+ .awsui_icon-container_gwq0h_1djey_175:not(#\9) {
202
202
  position: relative;
203
203
  margin-left: calc((var(--font-body-m-line-height-i7xxvv, 22px) - var(--size-icon-normal-j1z5fn, 16px)) / -2);
204
204
  margin-right: calc(var(--space-xxs-ynfts5, 4px) + var(--border-divider-list-width-hacikr, 1px));
205
205
  }
206
206
 
207
- .awsui_trigger_gwq0h_f8qtu_119:not(#\9) {
207
+ .awsui_trigger_gwq0h_1djey_119:not(#\9) {
208
208
  cursor: pointer;
209
209
  box-sizing: border-box;
210
210
  display: flex;
@@ -213,19 +213,19 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
213
213
  line-height: var(--font-body-m-line-height-i7xxvv, 22px);
214
214
  text-align: left;
215
215
  }
216
- .awsui_trigger-default_gwq0h_f8qtu_190:not(#\9) {
216
+ .awsui_trigger-default_gwq0h_1djey_190:not(#\9) {
217
217
  padding: var(--space-scaled-xxs-95dhkm, 4px) var(--space-xxs-ynfts5, 4px);
218
218
  }
219
- .awsui_trigger-footer_gwq0h_f8qtu_193:not(#\9) {
219
+ .awsui_trigger-footer_gwq0h_1djey_193:not(#\9) {
220
220
  padding: var(--space-scaled-xxs-95dhkm, 4px) 0;
221
221
  }
222
- .awsui_trigger-default_gwq0h_f8qtu_190:not(#\9), .awsui_trigger-footer_gwq0h_f8qtu_193:not(#\9) {
222
+ .awsui_trigger-default_gwq0h_1djey_190:not(#\9), .awsui_trigger-footer_gwq0h_1djey_193:not(#\9) {
223
223
  border: var(--border-divider-section-width-4wm2it, 2px) solid transparent;
224
224
  }
225
- .awsui_trigger-navigation_gwq0h_f8qtu_199:not(#\9) {
225
+ .awsui_trigger-navigation_gwq0h_1djey_199:not(#\9) {
226
226
  border-left: var(--border-divider-section-width-4wm2it, 2px) solid transparent;
227
227
  }
228
- .awsui_trigger-default_gwq0h_f8qtu_190:not(#\9), .awsui_trigger-navigation_gwq0h_f8qtu_199:not(#\9), .awsui_trigger-footer_gwq0h_f8qtu_193:not(#\9) {
228
+ .awsui_trigger-default_gwq0h_1djey_190:not(#\9), .awsui_trigger-navigation_gwq0h_1djey_199:not(#\9), .awsui_trigger-footer_gwq0h_1djey_193:not(#\9) {
229
229
  color: var(--color-text-expandable-section-default-k03p1p, #000716);
230
230
  font-weight: var(--font-heading-s-weight-k8ys41, 800);
231
231
  -webkit-font-smoothing: var(--font-smoothing-webkit-vu3hx4, antialiased);
@@ -233,30 +233,30 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
233
233
  font-size: var(--font-expandable-heading-size-m2wptt, 16px);
234
234
  letter-spacing: var(--font-heading-s-letter-spacing-4d69jc, -0.005em);
235
235
  }
236
- .awsui_trigger-default_gwq0h_f8qtu_190:not(#\9):hover, .awsui_trigger-navigation_gwq0h_f8qtu_199:not(#\9):hover, .awsui_trigger-footer_gwq0h_f8qtu_193:not(#\9):hover {
236
+ .awsui_trigger-default_gwq0h_1djey_190:not(#\9):hover, .awsui_trigger-navigation_gwq0h_1djey_199:not(#\9):hover, .awsui_trigger-footer_gwq0h_1djey_193:not(#\9):hover {
237
237
  color: var(--color-text-expandable-section-hover-73g3du, #0972d3);
238
238
  }
239
- .awsui_trigger-container_gwq0h_f8qtu_213:not(#\9) {
239
+ .awsui_trigger-container_gwq0h_1djey_213:not(#\9) {
240
240
  padding: var(--space-container-header-vertical-zsjhel, 12px) var(--space-container-horizontal-tlw03i, 20px);
241
241
  }
242
- .awsui_trigger-container_gwq0h_f8qtu_213[data-awsui-focus-visible=true]:not(#\9):focus {
242
+ .awsui_trigger-container_gwq0h_1djey_213[data-awsui-focus-visible=true]:not(#\9):focus {
243
243
  padding: calc(var(--space-scaled-s-cu1hzn, 12px) - var(--border-divider-section-width-4wm2it, 2px)) calc(var(--space-l-4vl6xu, 20px) - var(--border-divider-section-width-4wm2it, 2px));
244
244
  }
245
- .awsui_trigger-default_gwq0h_f8qtu_190.awsui_trigger-expanded_gwq0h_f8qtu_119:not(#\9) {
245
+ .awsui_trigger-default_gwq0h_1djey_190.awsui_trigger-expanded_gwq0h_1djey_119:not(#\9) {
246
246
  border-bottom-color: var(--color-border-divider-default-7s2wjw, #e9ebed);
247
247
  }
248
248
 
249
- .awsui_header_gwq0h_f8qtu_223:not(#\9) {
249
+ .awsui_header_gwq0h_1djey_223:not(#\9) {
250
250
  display: flex;
251
251
  }
252
- .awsui_header-container_gwq0h_f8qtu_226:not(#\9) {
252
+ .awsui_header-container_gwq0h_1djey_226:not(#\9) {
253
253
  width: 100%;
254
254
  }
255
- .awsui_header-container_gwq0h_f8qtu_226 > .awsui_icon-container_gwq0h_f8qtu_175:not(#\9) {
255
+ .awsui_header-container_gwq0h_1djey_226 > .awsui_icon-container_gwq0h_1djey_175:not(#\9) {
256
256
  margin-top: var(--space-expandable-section-icon-offset-top-svbirl, 4px);
257
257
  margin-right: var(--space-xs-rsr2qu, 8px);
258
258
  }
259
- .awsui_header-container_gwq0h_f8qtu_226[data-awsui-focus-visible=true]:not(#\9):focus-within {
259
+ .awsui_header-container_gwq0h_1djey_226[data-awsui-focus-visible=true]:not(#\9):focus-within {
260
260
  outline: none;
261
261
  text-decoration: none;
262
262
  padding: calc(var(--space-scaled-s-cu1hzn, 12px) - var(--border-divider-section-width-4wm2it, 2px)) calc(var(--space-l-4vl6xu, 20px) - var(--border-divider-section-width-4wm2it, 2px));
@@ -265,15 +265,15 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
265
265
  border-radius: var(--border-radius-control-default-focus-ring-7661kz, 4px);
266
266
  box-shadow: 0 0 0 var(--border-control-focus-ring-shadow-spread-srzyiu, 0px) var(--color-border-item-focused-ap3b6s, #0972d3);
267
267
  }
268
- .awsui_header-container-button_gwq0h_f8qtu_242:not(#\9):focus {
268
+ .awsui_header-container-button_gwq0h_1djey_242:not(#\9):focus {
269
269
  outline: none;
270
270
  text-decoration: none;
271
271
  }
272
- .awsui_header-container-button_gwq0h_f8qtu_242 > .awsui_icon-container_gwq0h_f8qtu_175:not(#\9) {
272
+ .awsui_header-container-button_gwq0h_1djey_242 > .awsui_icon-container_gwq0h_1djey_175:not(#\9) {
273
273
  margin-top: var(--space-expandable-section-icon-offset-top-svbirl, 4px);
274
274
  margin-right: var(--space-xs-rsr2qu, 8px);
275
275
  }
276
- .awsui_header-navigation_gwq0h_f8qtu_250 > .awsui_icon-container_gwq0h_f8qtu_175:not(#\9) {
276
+ .awsui_header-navigation_gwq0h_1djey_250 > .awsui_icon-container_gwq0h_1djey_175:not(#\9) {
277
277
  display: inline-flex;
278
278
  cursor: pointer;
279
279
  color: var(--color-text-expandable-section-navigation-icon-default-lb9rm0, #414d5c);
@@ -284,17 +284,17 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
284
284
  text-decoration: none;
285
285
  flex-direction: column;
286
286
  }
287
- .awsui_header-navigation_gwq0h_f8qtu_250 > .awsui_icon-container_gwq0h_f8qtu_175:not(#\9):hover {
287
+ .awsui_header-navigation_gwq0h_1djey_250 > .awsui_icon-container_gwq0h_1djey_175:not(#\9):hover {
288
288
  color: var(--color-text-expandable-section-hover-73g3du, #0972d3);
289
289
  }
290
- .awsui_header-navigation_gwq0h_f8qtu_250 > .awsui_icon-container_gwq0h_f8qtu_175[data-awsui-focus-visible=true]:not(#\9):focus {
290
+ .awsui_header-navigation_gwq0h_1djey_250 > .awsui_icon-container_gwq0h_1djey_175[data-awsui-focus-visible=true]:not(#\9):focus {
291
291
  position: relative;
292
292
  }
293
- .awsui_header-navigation_gwq0h_f8qtu_250 > .awsui_icon-container_gwq0h_f8qtu_175[data-awsui-focus-visible=true]:not(#\9):focus {
293
+ .awsui_header-navigation_gwq0h_1djey_250 > .awsui_icon-container_gwq0h_1djey_175[data-awsui-focus-visible=true]:not(#\9):focus {
294
294
  outline: 2px dotted transparent;
295
295
  outline-offset: calc(2px - 1px);
296
296
  }
297
- .awsui_header-navigation_gwq0h_f8qtu_250 > .awsui_icon-container_gwq0h_f8qtu_175[data-awsui-focus-visible=true]:not(#\9):focus::before {
297
+ .awsui_header-navigation_gwq0h_1djey_250 > .awsui_icon-container_gwq0h_1djey_175[data-awsui-focus-visible=true]:not(#\9):focus::before {
298
298
  content: " ";
299
299
  display: block;
300
300
  position: absolute;
@@ -306,24 +306,24 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
306
306
  box-shadow: 0 0 0 2px var(--color-border-item-focused-ap3b6s, #0972d3);
307
307
  }
308
308
 
309
- .awsui_content_gwq0h_f8qtu_97:not(#\9) {
309
+ .awsui_content_gwq0h_1djey_97:not(#\9) {
310
310
  display: none;
311
311
  }
312
- .awsui_content-default_gwq0h_f8qtu_286:not(#\9) {
312
+ .awsui_content-default_gwq0h_1djey_286:not(#\9) {
313
313
  padding: var(--space-scaled-xs-6859qs, 8px) 0;
314
314
  }
315
- .awsui_content-footer_gwq0h_f8qtu_289:not(#\9) {
315
+ .awsui_content-footer_gwq0h_1djey_289:not(#\9) {
316
316
  padding: var(--space-xs-rsr2qu, 8px) 0;
317
317
  }
318
- .awsui_content-expanded_gwq0h_f8qtu_292:not(#\9) {
318
+ .awsui_content-expanded_gwq0h_1djey_292:not(#\9) {
319
319
  display: block;
320
320
  }
321
321
 
322
- .awsui_focusable_gwq0h_f8qtu_296:not(#\9):focus {
322
+ .awsui_focusable_gwq0h_1djey_296:not(#\9):focus {
323
323
  outline: none;
324
324
  text-decoration: none;
325
325
  }
326
- .awsui_focusable_gwq0h_f8qtu_296[data-awsui-focus-visible=true]:not(#\9):focus {
326
+ .awsui_focusable_gwq0h_1djey_296[data-awsui-focus-visible=true]:not(#\9):focus {
327
327
  outline: 2px dotted transparent;
328
328
  border: var(--border-field-width-idlekx, 2px) solid var(--color-border-item-focused-ap3b6s, #0972d3);
329
329
  border-radius: var(--border-radius-control-default-focus-ring-7661kz, 4px);
@@ -2,26 +2,26 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "content-enter": "awsui_content-enter_gwq0h_f8qtu_97",
6
- "awsui-motion-fade-in": "awsui_awsui-motion-fade-in_gwq0h_f8qtu_1",
7
- "trigger-expanded": "awsui_trigger-expanded_gwq0h_f8qtu_119",
8
- "icon": "awsui_icon_gwq0h_f8qtu_133",
9
- "root": "awsui_root_gwq0h_f8qtu_151",
10
- "expanded": "awsui_expanded_gwq0h_f8qtu_171",
11
- "icon-container": "awsui_icon-container_gwq0h_f8qtu_175",
12
- "trigger": "awsui_trigger_gwq0h_f8qtu_119",
13
- "trigger-default": "awsui_trigger-default_gwq0h_f8qtu_190",
14
- "trigger-footer": "awsui_trigger-footer_gwq0h_f8qtu_193",
15
- "trigger-navigation": "awsui_trigger-navigation_gwq0h_f8qtu_199",
16
- "trigger-container": "awsui_trigger-container_gwq0h_f8qtu_213",
17
- "header": "awsui_header_gwq0h_f8qtu_223",
18
- "header-container": "awsui_header-container_gwq0h_f8qtu_226",
19
- "header-container-button": "awsui_header-container-button_gwq0h_f8qtu_242",
20
- "header-navigation": "awsui_header-navigation_gwq0h_f8qtu_250",
21
- "content": "awsui_content_gwq0h_f8qtu_97",
22
- "content-default": "awsui_content-default_gwq0h_f8qtu_286",
23
- "content-footer": "awsui_content-footer_gwq0h_f8qtu_289",
24
- "content-expanded": "awsui_content-expanded_gwq0h_f8qtu_292",
25
- "focusable": "awsui_focusable_gwq0h_f8qtu_296"
5
+ "content-enter": "awsui_content-enter_gwq0h_1djey_97",
6
+ "awsui-motion-fade-in": "awsui_awsui-motion-fade-in_gwq0h_1djey_1",
7
+ "trigger-expanded": "awsui_trigger-expanded_gwq0h_1djey_119",
8
+ "icon": "awsui_icon_gwq0h_1djey_133",
9
+ "root": "awsui_root_gwq0h_1djey_151",
10
+ "expanded": "awsui_expanded_gwq0h_1djey_171",
11
+ "icon-container": "awsui_icon-container_gwq0h_1djey_175",
12
+ "trigger": "awsui_trigger_gwq0h_1djey_119",
13
+ "trigger-default": "awsui_trigger-default_gwq0h_1djey_190",
14
+ "trigger-footer": "awsui_trigger-footer_gwq0h_1djey_193",
15
+ "trigger-navigation": "awsui_trigger-navigation_gwq0h_1djey_199",
16
+ "trigger-container": "awsui_trigger-container_gwq0h_1djey_213",
17
+ "header": "awsui_header_gwq0h_1djey_223",
18
+ "header-container": "awsui_header-container_gwq0h_1djey_226",
19
+ "header-container-button": "awsui_header-container-button_gwq0h_1djey_242",
20
+ "header-navigation": "awsui_header-navigation_gwq0h_1djey_250",
21
+ "content": "awsui_content_gwq0h_1djey_97",
22
+ "content-default": "awsui_content-default_gwq0h_1djey_286",
23
+ "content-footer": "awsui_content-footer_gwq0h_1djey_289",
24
+ "content-expanded": "awsui_content-expanded_gwq0h_1djey_292",
25
+ "focusable": "awsui_focusable_gwq0h_1djey_296"
26
26
  };
27
27
 
@@ -1,4 +1,4 @@
1
- import { FlashbarProps, CollapsibleFlashbarProps } from './interfaces';
1
+ import { FlashbarProps } from './interfaces';
2
2
  export { FlashbarProps };
3
- export default function CollapsibleFlashbar({ items, ...restProps }: FlashbarProps & CollapsibleFlashbarProps): JSX.Element;
3
+ export default function CollapsibleFlashbar({ items, ...restProps }: FlashbarProps): JSX.Element;
4
4
  //# sourceMappingURL=collapsible-flashbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collapsible-flashbar.d.ts","sourceRoot":"","sources":["../../../src/flashbar/collapsible-flashbar.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAgBvE,OAAO,EAAE,aAAa,EAAE,CAAC;AAQzB,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,aAAa,GAAG,wBAAwB,eAuS5G"}
1
+ {"version":3,"file":"collapsible-flashbar.d.ts","sourceRoot":"","sources":["../../../src/flashbar/collapsible-flashbar.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAuB7C,OAAO,EAAE,aAAa,EAAE,CAAC;AAQzB,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,aAAa,eAoTjF"}
@@ -11,12 +11,13 @@ import { Transition } from '../internal/components/transition';
11
11
  import useFocusVisible from '../internal/hooks/focus-visible';
12
12
  import { getVisualContextClassname } from '../internal/components/visual-context';
13
13
  import styles from './styles.css.js';
14
- import { counterTypes, getFlashTypeCount, getVisibleCollapsedItems } from './utils';
14
+ import { counterTypes, getFlashTypeCount, getVisibleCollapsedItems, isElementTopBeyondViewport, } from './utils';
15
15
  import { animate, getDOMRects } from '../internal/animate';
16
16
  import { useUniqueId } from '../internal/hooks/use-unique-id';
17
17
  import { sendToggleMetric } from './internal/analytics';
18
18
  import { useFlashbar } from './common';
19
19
  import { throttle } from '../internal/utils/throttle';
20
+ import { scrollElementIntoView } from '../internal/utils/scrollable-containers';
20
21
  // If the number of items is equal or less than this value,
21
22
  // the toggle element will not be displayed and the Flashbar will look like a regular single-item Flashbar.
22
23
  var maxNonCollapsibleItems = 1;
@@ -78,20 +79,22 @@ export default function CollapsibleFlashbar(_a) {
78
79
  }, [isFlashbarStackExpanded]);
79
80
  var updateBottomSpacing = useMemo(function () {
80
81
  return throttle(function () {
82
+ var _a;
81
83
  // Allow vertical space between Flashbar and page bottom only when the Flashbar is reaching the end of the page,
82
84
  // otherwise avoid spacing with eventual sticky elements below.
83
85
  var listElement = listElementRef === null || listElementRef === void 0 ? void 0 : listElementRef.current;
84
86
  var flashbar = listElement === null || listElement === void 0 ? void 0 : listElement.parentElement;
85
87
  if (listElement && flashbar) {
86
- var bottom = listElement.getBoundingClientRect().bottom;
87
- var windowHeight = window.innerHeight;
88
- // Apply the class first (before rendering)
89
- // so that we can make calculations based on the applied padding-bottom;
88
+ // Make sure the bottom padding is present when we make the calculations,
90
89
  // then we might decide to remove it or not.
91
- flashbar.classList.add(styles['spaced-bottom']);
92
- var applySpacing = isFlashbarStackExpanded && bottom + parseInt(getComputedStyle(flashbar).paddingBottom) >= windowHeight;
90
+ flashbar.classList.remove(styles.floating);
91
+ var windowHeight = window.innerHeight;
92
+ // Take the parent region into account if using the App Layout, because it might have additional margins.
93
+ // Otherwise we use the Flashbar component for this calculation.
94
+ var outerElement = ((_a = flashbar.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement) || flashbar;
95
+ var applySpacing = isFlashbarStackExpanded && Math.ceil(outerElement.getBoundingClientRect().bottom) >= windowHeight;
93
96
  if (!applySpacing) {
94
- flashbar.classList.remove(styles['spaced-bottom']);
97
+ flashbar.classList.add(styles.floating);
95
98
  }
96
99
  }
97
100
  }, resizeListenerThrottleDelay);
@@ -111,6 +114,10 @@ export default function CollapsibleFlashbar(_a) {
111
114
  // and the new state can be retrieved from the current DOM elements.
112
115
  if (initialAnimationState) {
113
116
  updateBottomSpacing();
117
+ // When collapsing, scroll up if necessary to avoid losing track of the focused button
118
+ var shouldScrollUp = notificationBarRef.current &&
119
+ !isFlashbarStackExpanded &&
120
+ isElementTopBeyondViewport(notificationBarRef.current);
114
121
  animate({
115
122
  elements: getElementsToAnimate(),
116
123
  oldState: initialAnimationState,
@@ -120,6 +127,9 @@ export default function CollapsibleFlashbar(_a) {
120
127
  },
121
128
  onTransitionsEnd: function () { return setTransitioning(false); }
122
129
  });
130
+ if (notificationBarRef.current && shouldScrollUp) {
131
+ scrollElementIntoView(notificationBarRef.current);
132
+ }
123
133
  setTransitioning(true);
124
134
  setInitialAnimationState(null);
125
135
  }
@@ -184,7 +194,7 @@ export default function CollapsibleFlashbar(_a) {
184
194
  return (React.createElement("div", __assign({}, baseProps, { className: clsx(baseProps.className, styles.flashbar, styles["breakpoint-".concat(breakpoint)], styles.stack, isFlashbarStackExpanded && styles.expanded, getVisualContextClassname('flashbar')), ref: mergedRef }),
185
195
  React.createElement(React.Fragment, null,
186
196
  isFlashbarStackExpanded && renderList(),
187
- isCollapsible && (React.createElement("div", { className: clsx(styles.toggle, isVisualRefresh && styles['visual-refresh'], isFlashbarStackExpanded ? styles.expanded : styles.collapsed, transitioning && styles['animation-running']), onClick: toggleCollapseExpand, ref: notificationBarRef },
197
+ isCollapsible && (React.createElement("div", { className: clsx(styles['notification-bar'], isVisualRefresh && styles['visual-refresh'], isFlashbarStackExpanded ? styles.expanded : styles.collapsed, transitioning && styles['animation-running']), onClick: toggleCollapseExpand, ref: notificationBarRef },
188
198
  React.createElement("span", { "aria-live": "polite", className: styles.status, role: "status", id: itemCountElementId },
189
199
  notificationBarText && React.createElement("h2", { className: styles.header }, notificationBarText),
190
200
  React.createElement("span", { className: styles['item-count'] }, counterTypes.map(function (_a) {
@@ -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\nimport clsx from 'clsx';\nimport React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport customCssProps from '../internal/generated/custom-css-properties';\nimport { Flash, focusFlashById } from './flash';\nimport { FlashbarProps, CollapsibleFlashbarProps } from './interfaces';\nimport InternalIcon from '../icon/internal';\nimport { TransitionGroup } from 'react-transition-group';\nimport { Transition } from '../internal/components/transition';\nimport useFocusVisible from '../internal/hooks/focus-visible';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\n\nimport styles from './styles.css.js';\nimport { counterTypes, getFlashTypeCount, getVisibleCollapsedItems, StackableItem } from './utils';\nimport { animate, getDOMRects } from '../internal/animate';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { IconProps } from '../icon/interfaces';\nimport { sendToggleMetric } from './internal/analytics';\nimport { useFlashbar } from './common';\nimport { throttle } from '../internal/utils/throttle';\n\nexport { FlashbarProps };\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, ...restProps }: FlashbarProps & CollapsibleFlashbarProps) {\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 { ariaLabel, baseProps, breakpoint, isReducedMotion, isVisualRefresh, mergedRef, ref } = useFlashbar({\n items,\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 const isFocusVisible = useFocusVisible();\n const collapsedItemRefs = useRef<Record<string | number, HTMLElement | null>>({});\n const expandedItemRefs = useRef<Record<string | number, HTMLElement | null>>({});\n const [initialAnimationState, setInitialAnimationState] = useState<Record<string | number, 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 if (items.length <= maxNonCollapsibleItems && isFlashbarStackExpanded) {\n setIsFlashbarStackExpanded(false);\n }\n\n const animateFlash = !isReducedMotion;\n\n function toggleCollapseExpand() {\n sendToggleMetric(items.length, !isFlashbarStackExpanded);\n if (!isReducedMotion) {\n prepareAnimations();\n }\n setIsFlashbarStackExpanded(prev => !prev);\n }\n\n useLayoutEffect(() => {\n if (isFlashbarStackExpanded && items?.length) {\n const mostRecentItem = items[0];\n if (mostRecentItem.id !== undefined) {\n focusFlashById(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 }, [isFlashbarStackExpanded]);\n\n const updateBottomSpacing = useMemo(\n () =>\n throttle(() => {\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 const bottom = listElement.getBoundingClientRect().bottom;\n const windowHeight = window.innerHeight;\n // Apply the class first (before rendering)\n // so that we can make calculations based on the applied padding-bottom;\n // then we might decide to remove it or not.\n flashbar.classList.add(styles['spaced-bottom']);\n const applySpacing =\n isFlashbarStackExpanded && bottom + parseInt(getComputedStyle(flashbar).paddingBottom) >= windowHeight;\n if (!applySpacing) {\n flashbar.classList.remove(styles['spaced-bottom']);\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 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 animate({\n elements: getElementsToAnimate(),\n oldState: initialAnimationState,\n newElementInitialState: ({ top }) => ({ scale: 0.9, y: -0.2 * top }),\n onTransitionsEnd: () => setTransitioning(false),\n });\n setTransitioning(true);\n setInitialAnimationState(null);\n }\n }, [updateBottomSpacing, getElementsToAnimate, initialAnimationState, isFlashbarStackExpanded]);\n\n const isCollapsible = items.length > maxNonCollapsibleItems;\n\n const countByType = getFlashTypeCount(items);\n\n const stackDepth = Math.min(3, items.length);\n\n const itemsToShow = isFlashbarStackExpanded\n ? items.map((item, index) => ({ ...item, expandedIndex: index }))\n : getVisibleCollapsedItems(items, stackDepth).map((item: StackableItem, index: number) => ({\n ...item,\n collapsedIndex: index,\n }));\n\n const notificationBarText = i18nStrings?.notificationBarText;\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) => !('expandedIndex' in item);\n const hasEnteredOrLeft = (item: StackableItem | FlashbarProps.MessageDefinition) => hasEntered(item) || hasLeft(item);\n\n const showInnerContent = (item: StackableItem | FlashbarProps.MessageDefinition) =>\n isFlashbarStackExpanded || hasLeft(item) || ('expandedIndex' in 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 <TransitionGroup component={null}>\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 !isFlashbarStackExpanded || transitioning\n ? {\n [customCssProps.flashbarStackIndex]:\n (item as StackableItem).collapsedIndex ?? (item as StackableItem).expandedIndex ?? index,\n }\n : undefined\n }\n key={getItemId(item)}\n >\n {showInnerContent(item) && (\n <Flash\n // eslint-disable-next-line react/forbid-component-props\n className={clsx(\n animateFlash && styles['flash-with-motion'],\n isVisualRefresh && styles['flash-refresh']\n )}\n key={getItemId(item)}\n ref={shouldUseStandardAnimation(item, index) ? transitionRootElement : undefined}\n transitionState={shouldUseStandardAnimation(item, index) ? state : undefined}\n {...item}\n />\n )}\n </li>\n )}\n </Transition>\n ))}\n </TransitionGroup>\n </ul>\n );\n\n return (\n <div\n {...baseProps}\n className={clsx(\n baseProps.className,\n styles.flashbar,\n styles[`breakpoint-${breakpoint}`],\n styles.stack,\n isFlashbarStackExpanded && styles.expanded,\n getVisualContextClassname('flashbar')\n )}\n ref={mergedRef}\n >\n <>\n {isFlashbarStackExpanded && renderList()}\n {isCollapsible && (\n <div\n className={clsx(\n styles.toggle,\n isVisualRefresh && styles['visual-refresh'],\n isFlashbarStackExpanded ? styles.expanded : styles.collapsed,\n transitioning && styles['animation-running']\n )}\n onClick={toggleCollapseExpand}\n ref={notificationBarRef}\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={i18nStrings ? i18nStrings[labelName] : undefined}\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={i18nStrings?.notificationBarAriaLabel}\n className={clsx(styles.button, isFlashbarStackExpanded && styles.expanded)}\n {...isFocusVisible}\n >\n <InternalIcon className={styles.icon} size=\"normal\" name=\"angle-down\" />\n </button>\n </div>\n )}\n {!isFlashbarStackExpanded && renderList()}\n </>\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 aria-label={label} role=\"img\">\n <span title={label} aria-hidden=\"true\">\n <InternalIcon name={iconName} />\n </span>\n </span>\n <span className={styles['count-number']}>{count}</span>\n </span>\n );\n};\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\nimport clsx from 'clsx';\nimport React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport customCssProps from '../internal/generated/custom-css-properties';\nimport { Flash, focusFlashById } from './flash';\nimport { FlashbarProps } from './interfaces';\nimport InternalIcon from '../icon/internal';\nimport { TransitionGroup } from 'react-transition-group';\nimport { Transition } from '../internal/components/transition';\nimport useFocusVisible from '../internal/hooks/focus-visible';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\n\nimport styles from './styles.css.js';\nimport {\n counterTypes,\n getFlashTypeCount,\n getVisibleCollapsedItems,\n isElementTopBeyondViewport,\n StackableItem,\n} from './utils';\nimport { animate, getDOMRects } from '../internal/animate';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { IconProps } from '../icon/interfaces';\nimport { sendToggleMetric } from './internal/analytics';\nimport { useFlashbar } from './common';\nimport { throttle } from '../internal/utils/throttle';\nimport { scrollElementIntoView } from '../internal/utils/scrollable-containers';\n\nexport { FlashbarProps };\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, ...restProps }: FlashbarProps) {\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 { ariaLabel, baseProps, breakpoint, isReducedMotion, isVisualRefresh, mergedRef, ref } = useFlashbar({\n items,\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 const isFocusVisible = useFocusVisible();\n const collapsedItemRefs = useRef<Record<string | number, HTMLElement | null>>({});\n const expandedItemRefs = useRef<Record<string | number, HTMLElement | null>>({});\n const [initialAnimationState, setInitialAnimationState] = useState<Record<string | number, 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 if (items.length <= maxNonCollapsibleItems && isFlashbarStackExpanded) {\n setIsFlashbarStackExpanded(false);\n }\n\n const animateFlash = !isReducedMotion;\n\n function toggleCollapseExpand() {\n sendToggleMetric(items.length, !isFlashbarStackExpanded);\n if (!isReducedMotion) {\n prepareAnimations();\n }\n setIsFlashbarStackExpanded(prev => !prev);\n }\n\n useLayoutEffect(() => {\n if (isFlashbarStackExpanded && items?.length) {\n const mostRecentItem = items[0];\n if (mostRecentItem.id !== undefined) {\n focusFlashById(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 }, [isFlashbarStackExpanded]);\n\n const updateBottomSpacing = useMemo(\n () =>\n throttle(() => {\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 = flashbar.parentElement?.parentElement || flashbar;\n const applySpacing =\n isFlashbarStackExpanded && Math.ceil(outerElement.getBoundingClientRect().bottom) >= windowHeight;\n if (!applySpacing) {\n flashbar.classList.add(styles.floating);\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 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 // When collapsing, scroll up if necessary to avoid losing track of the focused button\n const shouldScrollUp =\n notificationBarRef.current &&\n !isFlashbarStackExpanded &&\n isElementTopBeyondViewport(notificationBarRef.current);\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 if (notificationBarRef.current && shouldScrollUp) {\n scrollElementIntoView(notificationBarRef.current);\n }\n\n setTransitioning(true);\n setInitialAnimationState(null);\n }\n }, [updateBottomSpacing, getElementsToAnimate, initialAnimationState, isFlashbarStackExpanded]);\n\n const isCollapsible = items.length > maxNonCollapsibleItems;\n\n const countByType = getFlashTypeCount(items);\n\n const stackDepth = Math.min(3, items.length);\n\n const itemsToShow = isFlashbarStackExpanded\n ? items.map((item, index) => ({ ...item, expandedIndex: index }))\n : getVisibleCollapsedItems(items, stackDepth).map((item: StackableItem, index: number) => ({\n ...item,\n collapsedIndex: index,\n }));\n\n const notificationBarText = i18nStrings?.notificationBarText;\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) => !('expandedIndex' in item);\n const hasEnteredOrLeft = (item: StackableItem | FlashbarProps.MessageDefinition) => hasEntered(item) || hasLeft(item);\n\n const showInnerContent = (item: StackableItem | FlashbarProps.MessageDefinition) =>\n isFlashbarStackExpanded || hasLeft(item) || ('expandedIndex' in 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 <TransitionGroup component={null}>\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 !isFlashbarStackExpanded || transitioning\n ? {\n [customCssProps.flashbarStackIndex]:\n (item as StackableItem).collapsedIndex ?? (item as StackableItem).expandedIndex ?? index,\n }\n : undefined\n }\n key={getItemId(item)}\n >\n {showInnerContent(item) && (\n <Flash\n // eslint-disable-next-line react/forbid-component-props\n className={clsx(\n animateFlash && styles['flash-with-motion'],\n isVisualRefresh && styles['flash-refresh']\n )}\n key={getItemId(item)}\n ref={shouldUseStandardAnimation(item, index) ? transitionRootElement : undefined}\n transitionState={shouldUseStandardAnimation(item, index) ? state : undefined}\n {...item}\n />\n )}\n </li>\n )}\n </Transition>\n ))}\n </TransitionGroup>\n </ul>\n );\n\n return (\n <div\n {...baseProps}\n className={clsx(\n baseProps.className,\n styles.flashbar,\n styles[`breakpoint-${breakpoint}`],\n styles.stack,\n isFlashbarStackExpanded && styles.expanded,\n getVisualContextClassname('flashbar')\n )}\n ref={mergedRef}\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 )}\n onClick={toggleCollapseExpand}\n ref={notificationBarRef}\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={i18nStrings ? i18nStrings[labelName] : undefined}\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={i18nStrings?.notificationBarAriaLabel}\n className={clsx(styles.button, isFlashbarStackExpanded && styles.expanded)}\n {...isFocusVisible}\n >\n <InternalIcon className={styles.icon} size=\"normal\" name=\"angle-down\" />\n </button>\n </div>\n )}\n {!isFlashbarStackExpanded && renderList()}\n </>\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 aria-label={label} role=\"img\">\n <span title={label} aria-hidden=\"true\">\n <InternalIcon name={iconName} />\n </span>\n </span>\n <span className={styles['count-number']}>{count}</span>\n </span>\n );\n};\n"]}
@@ -1,6 +1,6 @@
1
- import { CollapsibleFlashbarProps, FlashbarProps } from './interfaces';
1
+ import { FlashbarProps } from './interfaces';
2
2
  export declare const componentName = "Flashbar";
3
- export declare function useFlashbar({ i18nStrings, items, onItemsAdded, onItemsChanged, onItemsRemoved, ...restProps }: CollapsibleFlashbarProps & {
3
+ export declare function useFlashbar({ i18nStrings, items, onItemsAdded, onItemsChanged, onItemsRemoved, ...restProps }: FlashbarProps & {
4
4
  onItemsAdded?: (items: FlashbarProps.MessageDefinition[]) => void;
5
5
  onItemsRemoved?: (items: FlashbarProps.MessageDefinition[]) => void;
6
6
  onItemsChanged?: (options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/flashbar/common.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGvE,eAAO,MAAM,aAAa,aAAa,CAAC;AAGxC,wBAAgB,WAAW,CAAC,EAC1B,WAAW,EACX,KAAK,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,GAAG,SAAS,EACb,EAAE,wBAAwB,GAAG;IAC5B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAClE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,iBAAiB,EAAE,KAAK,IAAI,CAAC;IACpE,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC9F;;;;;;;;;EAmDA"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/flashbar/common.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,eAAO,MAAM,aAAa,aAAa,CAAC;AAGxC,wBAAgB,WAAW,CAAC,EAC1B,WAAW,EACX,KAAK,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,GAAG,SAAS,EACb,EAAE,aAAa,GAAG;IACjB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAClE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,iBAAiB,EAAE,KAAK,IAAI,CAAC;IACpE,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC9F;;;;;;;;;EAmDA"}
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/flashbar/common.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 useBaseComponent from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { useReducedMotion, useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { getBaseProps } from '../internal/base-component';\nimport { CollapsibleFlashbarProps, FlashbarProps } from './interfaces';\nimport { focusFlashById } from './flash';\n\nexport const componentName = 'Flashbar';\n\n// Common logic for collapsible and non-collapsible Flashbar\nexport function useFlashbar({\n i18nStrings,\n items,\n onItemsAdded,\n onItemsChanged,\n onItemsRemoved,\n ...restProps\n}: CollapsibleFlashbarProps & {\n onItemsAdded?: (items: FlashbarProps.MessageDefinition[]) => void;\n onItemsRemoved?: (items: FlashbarProps.MessageDefinition[]) => void;\n onItemsChanged?: (options?: { allItemsHaveId?: boolean; isReducedMotion?: boolean }) => void;\n}) {\n const { __internalRootRef } = useBaseComponent(componentName);\n const allItemsHaveId = useMemo(() => items.every(item => 'id' in item), [items]);\n const baseProps = getBaseProps(restProps);\n const ref = useRef<HTMLDivElement | null>(null);\n const [breakpoint, breakpointRef] = useContainerBreakpoints(['xs']);\n const mergedRef = useMergeRefs(ref, breakpointRef, __internalRootRef);\n const isReducedMotion = useReducedMotion(breakpointRef as any);\n const isVisualRefresh = useVisualRefresh();\n const [previousItems, setPreviousItems] = useState<ReadonlyArray<FlashbarProps.MessageDefinition>>(items);\n const [nextFocusId, setNextFocusId] = useState<string | null>(null);\n\n // Track new or removed item IDs in state to only trigger focus changes for newly added items.\n // https://reactjs.org/docs/hooks-faq.html#how-do-i-implement-getderivedstatefromprops\n if (items) {\n const newItems = items.filter(({ id }) => id && !previousItems.some(item => item.id === id));\n const removedItems = previousItems.filter(({ id }) => id && !items.some(item => item.id === id));\n if (newItems.length > 0 || removedItems.length > 0) {\n setPreviousItems(items);\n if (onItemsAdded) {\n onItemsAdded(newItems);\n }\n if (onItemsRemoved) {\n onItemsRemoved(removedItems);\n }\n const newFocusItems = newItems.filter(({ ariaRole }) => ariaRole === 'alert');\n if (newFocusItems.length > 0) {\n setNextFocusId(newFocusItems[0].id!);\n }\n if (onItemsChanged) {\n onItemsChanged({ allItemsHaveId, isReducedMotion });\n }\n }\n }\n\n useEffect(() => {\n if (nextFocusId) {\n focusFlashById(ref.current, nextFocusId);\n }\n }, [nextFocusId, ref]);\n\n return {\n allItemsHaveId,\n ariaLabel: i18nStrings?.ariaLabel,\n baseProps,\n breakpoint,\n isReducedMotion,\n isVisualRefresh,\n mergedRef,\n ref,\n };\n}\n"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/flashbar/common.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 useBaseComponent from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { useReducedMotion, useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { getBaseProps } from '../internal/base-component';\nimport { FlashbarProps } from './interfaces';\nimport { focusFlashById } from './flash';\n\nexport const componentName = 'Flashbar';\n\n// Common logic for collapsible and non-collapsible Flashbar\nexport function useFlashbar({\n i18nStrings,\n items,\n onItemsAdded,\n onItemsChanged,\n onItemsRemoved,\n ...restProps\n}: FlashbarProps & {\n onItemsAdded?: (items: FlashbarProps.MessageDefinition[]) => void;\n onItemsRemoved?: (items: FlashbarProps.MessageDefinition[]) => void;\n onItemsChanged?: (options?: { allItemsHaveId?: boolean; isReducedMotion?: boolean }) => void;\n}) {\n const { __internalRootRef } = useBaseComponent(componentName);\n const allItemsHaveId = useMemo(() => items.every(item => 'id' in item), [items]);\n const baseProps = getBaseProps(restProps);\n const ref = useRef<HTMLDivElement | null>(null);\n const [breakpoint, breakpointRef] = useContainerBreakpoints(['xs']);\n const mergedRef = useMergeRefs(ref, breakpointRef, __internalRootRef);\n const isReducedMotion = useReducedMotion(breakpointRef as any);\n const isVisualRefresh = useVisualRefresh();\n const [previousItems, setPreviousItems] = useState<ReadonlyArray<FlashbarProps.MessageDefinition>>(items);\n const [nextFocusId, setNextFocusId] = useState<string | null>(null);\n\n // Track new or removed item IDs in state to only trigger focus changes for newly added items.\n // https://reactjs.org/docs/hooks-faq.html#how-do-i-implement-getderivedstatefromprops\n if (items) {\n const newItems = items.filter(({ id }) => id && !previousItems.some(item => item.id === id));\n const removedItems = previousItems.filter(({ id }) => id && !items.some(item => item.id === id));\n if (newItems.length > 0 || removedItems.length > 0) {\n setPreviousItems(items);\n if (onItemsAdded) {\n onItemsAdded(newItems);\n }\n if (onItemsRemoved) {\n onItemsRemoved(removedItems);\n }\n const newFocusItems = newItems.filter(({ ariaRole }) => ariaRole === 'alert');\n if (newFocusItems.length > 0) {\n setNextFocusId(newFocusItems[0].id!);\n }\n if (onItemsChanged) {\n onItemsChanged({ allItemsHaveId, isReducedMotion });\n }\n }\n }\n\n useEffect(() => {\n if (nextFocusId) {\n focusFlashById(ref.current, nextFocusId);\n }\n }, [nextFocusId, ref]);\n\n return {\n allItemsHaveId,\n ariaLabel: i18nStrings?.ariaLabel,\n baseProps,\n breakpoint,\n isReducedMotion,\n isVisualRefresh,\n mergedRef,\n ref,\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { FlashbarProps, CollapsibleFlashbarProps } from './interfaces';
1
+ import { FlashbarProps } from './interfaces';
2
2
  export { FlashbarProps };
3
- export default function Flashbar(props: FlashbarProps | CollapsibleFlashbarProps): JSX.Element;
3
+ export default function Flashbar(props: FlashbarProps): JSX.Element;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/flashbar/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAMvE,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,wBAAwB,eAY/E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/flashbar/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAM7C,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,aAAa,eAYpD"}
package/flashbar/index.js CHANGED
@@ -12,15 +12,12 @@ export default function Flashbar(props) {
12
12
  sendRenderMetric(props.items);
13
13
  }
14
14
  }, [props.items]);
15
- if (isStackedFlashbar(props)) {
15
+ if (props.stackItems) {
16
16
  return React.createElement(CollapsibleFlashbar, __assign({}, props));
17
17
  }
18
18
  else {
19
19
  return React.createElement(NonCollapsibleFlashbar, __assign({}, props));
20
20
  }
21
21
  }
22
- function isStackedFlashbar(props) {
23
- return 'stackItems' in props && props.stackItems;
24
- }
25
22
  applyDisplayName(Flashbar, 'Flashbar');
26
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/flashbar/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,mBAAmB,MAAM,wBAAwB,CAAC;AACzD,OAAO,sBAAsB,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAA+C;IAC9E,SAAS,CAAC;QACR,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC/B;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAElB,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;QAC5B,OAAO,oBAAC,mBAAmB,eAAK,KAAK,EAAI,CAAC;KAC3C;SAAM;QACL,OAAO,oBAAC,sBAAsB,eAAK,KAAK,EAAI,CAAC;KAC9C;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAU;IACnC,OAAO,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC;AACnD,CAAC;AAED,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect } from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { FlashbarProps, CollapsibleFlashbarProps } from './interfaces';\nimport CollapsibleFlashbar from './collapsible-flashbar';\nimport NonCollapsibleFlashbar from './non-collapsible-flashbar';\n\nimport { sendRenderMetric } from './internal/analytics';\n\nexport { FlashbarProps };\n\nexport default function Flashbar(props: FlashbarProps | CollapsibleFlashbarProps) {\n useEffect(() => {\n if (props.items.length > 0) {\n sendRenderMetric(props.items);\n }\n }, [props.items]);\n\n if (isStackedFlashbar(props)) {\n return <CollapsibleFlashbar {...props} />;\n } else {\n return <NonCollapsibleFlashbar {...props} />;\n }\n}\n\nfunction isStackedFlashbar(props: any): props is CollapsibleFlashbarProps {\n return 'stackItems' in props && props.stackItems;\n}\n\napplyDisplayName(Flashbar, 'Flashbar');\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/flashbar/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,mBAAmB,MAAM,wBAAwB,CAAC;AACzD,OAAO,sBAAsB,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAoB;IACnD,SAAS,CAAC;QACR,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC/B;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAElB,IAAI,KAAK,CAAC,UAAU,EAAE;QACpB,OAAO,oBAAC,mBAAmB,eAAK,KAAK,EAAI,CAAC;KAC3C;SAAM;QACL,OAAO,oBAAC,sBAAsB,eAAK,KAAK,EAAI,CAAC;KAC9C;AACH,CAAC;AAED,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect } from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { FlashbarProps } from './interfaces';\nimport CollapsibleFlashbar from './collapsible-flashbar';\nimport NonCollapsibleFlashbar from './non-collapsible-flashbar';\n\nimport { sendRenderMetric } from './internal/analytics';\n\nexport { FlashbarProps };\n\nexport default function Flashbar(props: FlashbarProps) {\n useEffect(() => {\n if (props.items.length > 0) {\n sendRenderMetric(props.items);\n }\n }, [props.items]);\n\n if (props.stackItems) {\n return <CollapsibleFlashbar {...props} />;\n } else {\n return <NonCollapsibleFlashbar {...props} />;\n }\n}\n\napplyDisplayName(Flashbar, 'Flashbar');\n"]}