@cloudscape-design/components-themeable 3.0.853 → 3.0.855

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 (617) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/breadcrumb-group/styles.scss +47 -0
  3. package/lib/internal/scss/button/test-classes/styles.scss +4 -0
  4. package/lib/internal/scss/button-dropdown/item-element/styles.scss +6 -0
  5. package/lib/internal/scss/button-dropdown/styles.scss +27 -12
  6. package/lib/internal/scss/file-input/styles.scss +12 -1
  7. package/lib/internal/scss/internal/styles/motion/animations.scss +11 -0
  8. package/lib/internal/scss/top-navigation/1.0-beta/styles.scss +0 -14
  9. package/lib/internal/scss/top-navigation/styles.scss +1 -7
  10. package/lib/internal/template/alert/styles.css.js +28 -28
  11. package/lib/internal/template/alert/styles.scoped.css +49 -45
  12. package/lib/internal/template/alert/styles.selectors.js +28 -28
  13. package/lib/internal/template/anchor-navigation/styles.css.js +8 -8
  14. package/lib/internal/template/anchor-navigation/styles.scoped.css +24 -20
  15. package/lib/internal/template/anchor-navigation/styles.selectors.js +8 -8
  16. package/lib/internal/template/annotation-context/annotation/styles.css.js +24 -24
  17. package/lib/internal/template/annotation-context/annotation/styles.scoped.css +36 -32
  18. package/lib/internal/template/annotation-context/annotation/styles.selectors.js +24 -24
  19. package/lib/internal/template/app-layout/content-wrapper/styles.css.js +3 -3
  20. package/lib/internal/template/app-layout/content-wrapper/styles.scoped.css +10 -6
  21. package/lib/internal/template/app-layout/content-wrapper/styles.selectors.js +3 -3
  22. package/lib/internal/template/app-layout/drawer/styles.css.js +14 -14
  23. package/lib/internal/template/app-layout/drawer/styles.scoped.css +28 -24
  24. package/lib/internal/template/app-layout/drawer/styles.selectors.js +14 -14
  25. package/lib/internal/template/app-layout/mobile-toolbar/styles.css.js +8 -8
  26. package/lib/internal/template/app-layout/mobile-toolbar/styles.scoped.css +12 -8
  27. package/lib/internal/template/app-layout/mobile-toolbar/styles.selectors.js +8 -8
  28. package/lib/internal/template/app-layout/resize/styles.css.js +5 -5
  29. package/lib/internal/template/app-layout/resize/styles.scoped.css +16 -12
  30. package/lib/internal/template/app-layout/resize/styles.selectors.js +5 -5
  31. package/lib/internal/template/app-layout/split-panel/styles.css.js +2 -2
  32. package/lib/internal/template/app-layout/split-panel/styles.scoped.css +6 -2
  33. package/lib/internal/template/app-layout/split-panel/styles.selectors.js +2 -2
  34. package/lib/internal/template/app-layout/styles.css.js +12 -12
  35. package/lib/internal/template/app-layout/styles.scoped.css +16 -12
  36. package/lib/internal/template/app-layout/styles.selectors.js +12 -12
  37. package/lib/internal/template/app-layout/toggles/styles.css.js +2 -2
  38. package/lib/internal/template/app-layout/toggles/styles.scoped.css +12 -8
  39. package/lib/internal/template/app-layout/toggles/styles.selectors.js +2 -2
  40. package/lib/internal/template/app-layout/visual-refresh/styles.css.js +86 -86
  41. package/lib/internal/template/app-layout/visual-refresh/styles.scoped.css +167 -163
  42. package/lib/internal/template/app-layout/visual-refresh/styles.selectors.js +86 -86
  43. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.css.js +10 -10
  44. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.scoped.css +17 -13
  45. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.selectors.js +10 -10
  46. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.css.js +4 -4
  47. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.scoped.css +9 -5
  48. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.selectors.js +4 -4
  49. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.css.js +19 -19
  50. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.scoped.css +39 -35
  51. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.selectors.js +19 -19
  52. package/lib/internal/template/app-layout/visual-refresh-toolbar/split-panel/styles.css.js +1 -1
  53. package/lib/internal/template/app-layout/visual-refresh-toolbar/split-panel/styles.scoped.css +5 -1
  54. package/lib/internal/template/app-layout/visual-refresh-toolbar/split-panel/styles.selectors.js +1 -1
  55. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.css.js +13 -13
  56. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.scoped.css +19 -15
  57. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.selectors.js +13 -13
  58. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.css.js +7 -7
  59. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.scoped.css +23 -19
  60. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.selectors.js +7 -7
  61. package/lib/internal/template/area-chart/styles.css.js +6 -6
  62. package/lib/internal/template/area-chart/styles.scoped.css +15 -11
  63. package/lib/internal/template/area-chart/styles.selectors.js +6 -6
  64. package/lib/internal/template/attribute-editor/styles.css.js +14 -14
  65. package/lib/internal/template/attribute-editor/styles.scoped.css +28 -24
  66. package/lib/internal/template/attribute-editor/styles.selectors.js +14 -14
  67. package/lib/internal/template/autosuggest/load-more-controller.d.ts.map +1 -1
  68. package/lib/internal/template/autosuggest/load-more-controller.js +1 -1
  69. package/lib/internal/template/autosuggest/load-more-controller.js.map +1 -1
  70. package/lib/internal/template/badge/styles.css.js +10 -10
  71. package/lib/internal/template/badge/styles.scoped.css +14 -10
  72. package/lib/internal/template/badge/styles.selectors.js +10 -10
  73. package/lib/internal/template/box/styles.css.js +191 -191
  74. package/lib/internal/template/box/styles.scoped.css +240 -236
  75. package/lib/internal/template/box/styles.selectors.js +191 -191
  76. package/lib/internal/template/breadcrumb-group/all-items-dropdown.d.ts +15 -0
  77. package/lib/internal/template/breadcrumb-group/all-items-dropdown.d.ts.map +1 -0
  78. package/lib/internal/template/breadcrumb-group/all-items-dropdown.js +47 -0
  79. package/lib/internal/template/breadcrumb-group/all-items-dropdown.js.map +1 -0
  80. package/lib/internal/template/breadcrumb-group/implementation.d.ts.map +1 -1
  81. package/lib/internal/template/breadcrumb-group/implementation.js +9 -6
  82. package/lib/internal/template/breadcrumb-group/implementation.js.map +1 -1
  83. package/lib/internal/template/breadcrumb-group/item/styles.css.js +7 -7
  84. package/lib/internal/template/breadcrumb-group/item/styles.scoped.css +29 -25
  85. package/lib/internal/template/breadcrumb-group/item/styles.selectors.js +7 -7
  86. package/lib/internal/template/breadcrumb-group/styles.css.js +14 -10
  87. package/lib/internal/template/breadcrumb-group/styles.scoped.css +124 -11
  88. package/lib/internal/template/breadcrumb-group/styles.selectors.js +14 -10
  89. package/lib/internal/template/breadcrumb-group/utils.d.ts +0 -2
  90. package/lib/internal/template/breadcrumb-group/utils.d.ts.map +1 -1
  91. package/lib/internal/template/breadcrumb-group/utils.js +17 -46
  92. package/lib/internal/template/breadcrumb-group/utils.js.map +1 -1
  93. package/lib/internal/template/button/index.d.ts.map +1 -1
  94. package/lib/internal/template/button/index.js +3 -3
  95. package/lib/internal/template/button/index.js.map +1 -1
  96. package/lib/internal/template/button/interfaces.d.ts +18 -0
  97. package/lib/internal/template/button/interfaces.d.ts.map +1 -1
  98. package/lib/internal/template/button/interfaces.js.map +1 -1
  99. package/lib/internal/template/button/internal.d.ts.map +1 -1
  100. package/lib/internal/template/button/internal.js +15 -2
  101. package/lib/internal/template/button/internal.js.map +1 -1
  102. package/lib/internal/template/button/styles.css.js +21 -21
  103. package/lib/internal/template/button/styles.scoped.css +158 -154
  104. package/lib/internal/template/button/styles.selectors.js +21 -21
  105. package/lib/internal/template/button/test-classes/styles.css.js +2 -1
  106. package/lib/internal/template/button/test-classes/styles.scoped.css +5 -1
  107. package/lib/internal/template/button/test-classes/styles.selectors.js +2 -1
  108. package/lib/internal/template/button-dropdown/category-elements/styles.css.js +14 -14
  109. package/lib/internal/template/button-dropdown/category-elements/styles.scoped.css +27 -23
  110. package/lib/internal/template/button-dropdown/category-elements/styles.selectors.js +14 -14
  111. package/lib/internal/template/button-dropdown/index.d.ts.map +1 -1
  112. package/lib/internal/template/button-dropdown/index.js +2 -2
  113. package/lib/internal/template/button-dropdown/index.js.map +1 -1
  114. package/lib/internal/template/button-dropdown/interfaces.d.ts +18 -2
  115. package/lib/internal/template/button-dropdown/interfaces.d.ts.map +1 -1
  116. package/lib/internal/template/button-dropdown/interfaces.js.map +1 -1
  117. package/lib/internal/template/button-dropdown/internal.d.ts.map +1 -1
  118. package/lib/internal/template/button-dropdown/internal.js +13 -6
  119. package/lib/internal/template/button-dropdown/internal.js.map +1 -1
  120. package/lib/internal/template/button-dropdown/item-element/index.d.ts.map +1 -1
  121. package/lib/internal/template/button-dropdown/item-element/index.js +3 -2
  122. package/lib/internal/template/button-dropdown/item-element/index.js.map +1 -1
  123. package/lib/internal/template/button-dropdown/item-element/styles.css.js +14 -13
  124. package/lib/internal/template/button-dropdown/item-element/styles.scoped.css +33 -21
  125. package/lib/internal/template/button-dropdown/item-element/styles.selectors.js +14 -13
  126. package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.css.js +5 -5
  127. package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.scoped.css +9 -5
  128. package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.selectors.js +5 -5
  129. package/lib/internal/template/button-dropdown/styles.css.js +21 -17
  130. package/lib/internal/template/button-dropdown/styles.scoped.css +51 -38
  131. package/lib/internal/template/button-dropdown/styles.selectors.js +21 -17
  132. package/lib/internal/template/button-group/file-input-item.d.ts +11 -0
  133. package/lib/internal/template/button-group/file-input-item.d.ts.map +1 -0
  134. package/lib/internal/template/button-group/file-input-item.js +23 -0
  135. package/lib/internal/template/button-group/file-input-item.js.map +1 -0
  136. package/lib/internal/template/button-group/interfaces.d.ts +23 -1
  137. package/lib/internal/template/button-group/interfaces.d.ts.map +1 -1
  138. package/lib/internal/template/button-group/interfaces.js.map +1 -1
  139. package/lib/internal/template/button-group/internal.d.ts.map +1 -1
  140. package/lib/internal/template/button-group/internal.js +2 -2
  141. package/lib/internal/template/button-group/internal.js.map +1 -1
  142. package/lib/internal/template/button-group/item-element.d.ts +1 -0
  143. package/lib/internal/template/button-group/item-element.d.ts.map +1 -1
  144. package/lib/internal/template/button-group/item-element.js +12 -6
  145. package/lib/internal/template/button-group/item-element.js.map +1 -1
  146. package/lib/internal/template/button-group/styles.css.js +4 -4
  147. package/lib/internal/template/button-group/styles.scoped.css +10 -6
  148. package/lib/internal/template/button-group/styles.selectors.js +4 -4
  149. package/lib/internal/template/calendar/grid/index.d.ts +1 -2
  150. package/lib/internal/template/calendar/grid/index.d.ts.map +1 -1
  151. package/lib/internal/template/calendar/grid/index.js.map +1 -1
  152. package/lib/internal/template/calendar/grid/use-calendar-grid-keyboard-navigation.d.ts.map +1 -1
  153. package/lib/internal/template/calendar/grid/use-calendar-grid-keyboard-navigation.js +2 -1
  154. package/lib/internal/template/calendar/grid/use-calendar-grid-keyboard-navigation.js.map +1 -1
  155. package/lib/internal/template/calendar/internal.d.ts.map +1 -1
  156. package/lib/internal/template/calendar/internal.js +2 -1
  157. package/lib/internal/template/calendar/internal.js.map +1 -1
  158. package/lib/internal/template/calendar/styles.css.js +21 -21
  159. package/lib/internal/template/calendar/styles.scoped.css +47 -43
  160. package/lib/internal/template/calendar/styles.selectors.js +21 -21
  161. package/lib/internal/template/calendar/utils/navigation-day.d.ts +8 -0
  162. package/lib/internal/template/calendar/utils/navigation-day.d.ts.map +1 -0
  163. package/lib/internal/template/calendar/utils/navigation-day.js +39 -0
  164. package/lib/internal/template/calendar/utils/navigation-day.js.map +1 -0
  165. package/lib/internal/template/calendar/utils/{navigation.d.ts → navigation-month.d.ts} +2 -6
  166. package/lib/internal/template/calendar/utils/navigation-month.d.ts.map +1 -0
  167. package/lib/internal/template/calendar/utils/navigation-month.js +39 -0
  168. package/lib/internal/template/calendar/utils/navigation-month.js.map +1 -0
  169. package/lib/internal/template/cards/styles.css.js +39 -39
  170. package/lib/internal/template/cards/styles.scoped.css +54 -50
  171. package/lib/internal/template/cards/styles.selectors.js +39 -39
  172. package/lib/internal/template/checkbox/styles.css.js +3 -3
  173. package/lib/internal/template/checkbox/styles.scoped.css +9 -5
  174. package/lib/internal/template/checkbox/styles.selectors.js +3 -3
  175. package/lib/internal/template/code-editor/resizable-box/styles.css.js +3 -3
  176. package/lib/internal/template/code-editor/resizable-box/styles.scoped.css +13 -9
  177. package/lib/internal/template/code-editor/resizable-box/styles.selectors.js +3 -3
  178. package/lib/internal/template/code-editor/styles.css.js +33 -33
  179. package/lib/internal/template/code-editor/styles.scoped.css +187 -183
  180. package/lib/internal/template/code-editor/styles.selectors.js +33 -33
  181. package/lib/internal/template/collection-preferences/content-display/styles.css.js +12 -12
  182. package/lib/internal/template/collection-preferences/content-display/styles.scoped.css +23 -15
  183. package/lib/internal/template/collection-preferences/content-display/styles.selectors.js +12 -12
  184. package/lib/internal/template/collection-preferences/styles.css.js +38 -38
  185. package/lib/internal/template/collection-preferences/styles.scoped.css +58 -42
  186. package/lib/internal/template/collection-preferences/styles.selectors.js +38 -38
  187. package/lib/internal/template/column-layout/flexible-column-layout/styles.css.js +5 -5
  188. package/lib/internal/template/column-layout/flexible-column-layout/styles.scoped.css +14 -10
  189. package/lib/internal/template/column-layout/flexible-column-layout/styles.selectors.js +5 -5
  190. package/lib/internal/template/column-layout/styles.css.js +13 -13
  191. package/lib/internal/template/column-layout/styles.scoped.css +49 -45
  192. package/lib/internal/template/column-layout/styles.selectors.js +13 -13
  193. package/lib/internal/template/container/styles.css.js +31 -31
  194. package/lib/internal/template/container/styles.scoped.css +60 -56
  195. package/lib/internal/template/container/styles.selectors.js +31 -31
  196. package/lib/internal/template/content-layout/styles.css.js +14 -14
  197. package/lib/internal/template/content-layout/styles.scoped.css +20 -16
  198. package/lib/internal/template/content-layout/styles.selectors.js +14 -14
  199. package/lib/internal/template/date-picker/styles.css.js +7 -7
  200. package/lib/internal/template/date-picker/styles.scoped.css +13 -9
  201. package/lib/internal/template/date-picker/styles.selectors.js +7 -7
  202. package/lib/internal/template/date-range-picker/calendar/grids/index.d.ts.map +1 -1
  203. package/lib/internal/template/date-range-picker/calendar/grids/index.js +1 -1
  204. package/lib/internal/template/date-range-picker/calendar/grids/index.js.map +1 -1
  205. package/lib/internal/template/date-range-picker/calendar/grids/styles.css.js +28 -28
  206. package/lib/internal/template/date-range-picker/calendar/grids/styles.scoped.css +47 -43
  207. package/lib/internal/template/date-range-picker/calendar/grids/styles.selectors.js +28 -28
  208. package/lib/internal/template/date-range-picker/calendar/index.js +1 -1
  209. package/lib/internal/template/date-range-picker/calendar/index.js.map +1 -1
  210. package/lib/internal/template/date-range-picker/index.d.ts.map +1 -1
  211. package/lib/internal/template/date-range-picker/index.js +3 -10
  212. package/lib/internal/template/date-range-picker/index.js.map +1 -1
  213. package/lib/internal/template/date-range-picker/relative-range/styles.css.js +9 -9
  214. package/lib/internal/template/date-range-picker/relative-range/styles.scoped.css +17 -13
  215. package/lib/internal/template/date-range-picker/relative-range/styles.selectors.js +9 -9
  216. package/lib/internal/template/date-range-picker/styles.css.js +38 -38
  217. package/lib/internal/template/date-range-picker/styles.scoped.css +51 -47
  218. package/lib/internal/template/date-range-picker/styles.selectors.js +38 -38
  219. package/lib/internal/template/date-range-picker/time-offset.d.ts +2 -1
  220. package/lib/internal/template/date-range-picker/time-offset.d.ts.map +1 -1
  221. package/lib/internal/template/date-range-picker/time-offset.js +1 -1
  222. package/lib/internal/template/date-range-picker/time-offset.js.map +1 -1
  223. package/lib/internal/template/date-range-picker/utils.d.ts +9 -0
  224. package/lib/internal/template/date-range-picker/utils.d.ts.map +1 -1
  225. package/lib/internal/template/date-range-picker/utils.js +19 -2
  226. package/lib/internal/template/date-range-picker/utils.js.map +1 -1
  227. package/lib/internal/template/drawer/styles.css.js +5 -5
  228. package/lib/internal/template/drawer/styles.scoped.css +16 -12
  229. package/lib/internal/template/drawer/styles.selectors.js +5 -5
  230. package/lib/internal/template/expandable-section/styles.css.js +34 -34
  231. package/lib/internal/template/expandable-section/styles.scoped.css +69 -65
  232. package/lib/internal/template/expandable-section/styles.selectors.js +34 -34
  233. package/lib/internal/template/file-dropzone/styles.css.js +3 -3
  234. package/lib/internal/template/file-dropzone/styles.scoped.css +9 -5
  235. package/lib/internal/template/file-dropzone/styles.selectors.js +3 -3
  236. package/lib/internal/template/file-input/internal.d.ts +5 -1
  237. package/lib/internal/template/file-input/internal.d.ts.map +1 -1
  238. package/lib/internal/template/file-input/internal.js +18 -10
  239. package/lib/internal/template/file-input/internal.js.map +1 -1
  240. package/lib/internal/template/file-input/styles.css.js +6 -5
  241. package/lib/internal/template/file-input/styles.scoped.css +33 -8
  242. package/lib/internal/template/file-input/styles.selectors.js +6 -5
  243. package/lib/internal/template/file-token-group/styles.css.js +22 -22
  244. package/lib/internal/template/file-token-group/styles.scoped.css +35 -31
  245. package/lib/internal/template/file-token-group/styles.selectors.js +22 -22
  246. package/lib/internal/template/flashbar/styles.css.js +50 -50
  247. package/lib/internal/template/flashbar/styles.scoped.css +152 -148
  248. package/lib/internal/template/flashbar/styles.selectors.js +50 -50
  249. package/lib/internal/template/form/styles.css.js +8 -8
  250. package/lib/internal/template/form/styles.scoped.css +12 -8
  251. package/lib/internal/template/form/styles.selectors.js +8 -8
  252. package/lib/internal/template/form-field/styles.css.js +24 -24
  253. package/lib/internal/template/form-field/styles.scoped.css +42 -38
  254. package/lib/internal/template/form-field/styles.selectors.js +24 -24
  255. package/lib/internal/template/grid/styles.css.js +53 -53
  256. package/lib/internal/template/grid/styles.scoped.css +58 -54
  257. package/lib/internal/template/grid/styles.selectors.js +53 -53
  258. package/lib/internal/template/header/styles.css.js +34 -34
  259. package/lib/internal/template/header/styles.scoped.css +56 -52
  260. package/lib/internal/template/header/styles.selectors.js +34 -34
  261. package/lib/internal/template/help-panel/styles.css.js +6 -6
  262. package/lib/internal/template/help-panel/styles.scoped.css +73 -69
  263. package/lib/internal/template/help-panel/styles.selectors.js +6 -6
  264. package/lib/internal/template/hotspot/styles.css.js +7 -7
  265. package/lib/internal/template/hotspot/styles.scoped.css +13 -9
  266. package/lib/internal/template/hotspot/styles.selectors.js +7 -7
  267. package/lib/internal/template/i18n/messages/all.all.js +1 -1
  268. package/lib/internal/template/i18n/messages/all.all.json +1 -1
  269. package/lib/internal/template/i18n/messages/all.ar.js +1 -1
  270. package/lib/internal/template/i18n/messages/all.ar.json +1 -1
  271. package/lib/internal/template/i18n/messages/all.de.js +1 -1
  272. package/lib/internal/template/i18n/messages/all.de.json +1 -1
  273. package/lib/internal/template/i18n/messages/all.en-GB.js +1 -1
  274. package/lib/internal/template/i18n/messages/all.en-GB.json +1 -1
  275. package/lib/internal/template/i18n/messages/all.en.js +1 -1
  276. package/lib/internal/template/i18n/messages/all.en.json +1 -1
  277. package/lib/internal/template/i18n/messages/all.es.js +1 -1
  278. package/lib/internal/template/i18n/messages/all.es.json +1 -1
  279. package/lib/internal/template/i18n/messages/all.fr.js +1 -1
  280. package/lib/internal/template/i18n/messages/all.fr.json +1 -1
  281. package/lib/internal/template/i18n/messages/all.id.js +1 -1
  282. package/lib/internal/template/i18n/messages/all.id.json +1 -1
  283. package/lib/internal/template/i18n/messages/all.it.js +1 -1
  284. package/lib/internal/template/i18n/messages/all.it.json +1 -1
  285. package/lib/internal/template/i18n/messages/all.ja.js +1 -1
  286. package/lib/internal/template/i18n/messages/all.ja.json +1 -1
  287. package/lib/internal/template/i18n/messages/all.ko.js +1 -1
  288. package/lib/internal/template/i18n/messages/all.ko.json +1 -1
  289. package/lib/internal/template/i18n/messages/all.pt-BR.js +1 -1
  290. package/lib/internal/template/i18n/messages/all.pt-BR.json +1 -1
  291. package/lib/internal/template/i18n/messages/all.tr.js +1 -1
  292. package/lib/internal/template/i18n/messages/all.tr.json +1 -1
  293. package/lib/internal/template/i18n/messages/all.zh-CN.js +1 -1
  294. package/lib/internal/template/i18n/messages/all.zh-CN.json +1 -1
  295. package/lib/internal/template/i18n/messages/all.zh-TW.js +1 -1
  296. package/lib/internal/template/i18n/messages/all.zh-TW.json +1 -1
  297. package/lib/internal/template/i18n/messages-types.d.ts +3 -0
  298. package/lib/internal/template/i18n/messages-types.d.ts.map +1 -1
  299. package/lib/internal/template/i18n/messages-types.js.map +1 -1
  300. package/lib/internal/template/icon/styles.css.js +38 -38
  301. package/lib/internal/template/icon/styles.scoped.css +89 -85
  302. package/lib/internal/template/icon/styles.selectors.js +38 -38
  303. package/lib/internal/template/input/styles.css.js +13 -13
  304. package/lib/internal/template/input/styles.scoped.css +36 -32
  305. package/lib/internal/template/input/styles.selectors.js +13 -13
  306. package/lib/internal/template/internal/components/abstract-switch/styles.css.js +13 -13
  307. package/lib/internal/template/internal/components/abstract-switch/styles.scoped.css +24 -20
  308. package/lib/internal/template/internal/components/abstract-switch/styles.selectors.js +13 -13
  309. package/lib/internal/template/internal/components/button-trigger/styles.css.js +13 -13
  310. package/lib/internal/template/internal/components/button-trigger/styles.scoped.css +31 -27
  311. package/lib/internal/template/internal/components/button-trigger/styles.selectors.js +13 -13
  312. package/lib/internal/template/internal/components/chart-filter/styles.css.js +3 -3
  313. package/lib/internal/template/internal/components/chart-filter/styles.scoped.css +7 -3
  314. package/lib/internal/template/internal/components/chart-filter/styles.selectors.js +3 -3
  315. package/lib/internal/template/internal/components/chart-legend/styles.css.js +6 -6
  316. package/lib/internal/template/internal/components/chart-legend/styles.scoped.css +19 -15
  317. package/lib/internal/template/internal/components/chart-legend/styles.selectors.js +6 -6
  318. package/lib/internal/template/internal/components/chart-plot/styles.css.js +5 -5
  319. package/lib/internal/template/internal/components/chart-plot/styles.scoped.css +9 -5
  320. package/lib/internal/template/internal/components/chart-plot/styles.selectors.js +5 -5
  321. package/lib/internal/template/internal/components/chart-popover/styles.css.js +3 -3
  322. package/lib/internal/template/internal/components/chart-popover/styles.scoped.css +7 -3
  323. package/lib/internal/template/internal/components/chart-popover/styles.selectors.js +3 -3
  324. package/lib/internal/template/internal/components/chart-series-details/styles.css.js +20 -20
  325. package/lib/internal/template/internal/components/chart-series-details/styles.scoped.css +37 -33
  326. package/lib/internal/template/internal/components/chart-series-details/styles.selectors.js +20 -20
  327. package/lib/internal/template/internal/components/chart-series-marker/styles.css.js +5 -5
  328. package/lib/internal/template/internal/components/chart-series-marker/styles.scoped.css +11 -7
  329. package/lib/internal/template/internal/components/chart-series-marker/styles.selectors.js +5 -5
  330. package/lib/internal/template/internal/components/chart-wrapper/styles.css.js +9 -9
  331. package/lib/internal/template/internal/components/chart-wrapper/styles.scoped.css +15 -11
  332. package/lib/internal/template/internal/components/chart-wrapper/styles.selectors.js +9 -9
  333. package/lib/internal/template/internal/components/checkbox-icon/styles.css.js +9 -9
  334. package/lib/internal/template/internal/components/checkbox-icon/styles.scoped.css +13 -9
  335. package/lib/internal/template/internal/components/checkbox-icon/styles.selectors.js +9 -9
  336. package/lib/internal/template/internal/components/dnd-container/styles.css.js +1 -1
  337. package/lib/internal/template/internal/components/dnd-container/styles.scoped.css +8 -4
  338. package/lib/internal/template/internal/components/dnd-container/styles.selectors.js +1 -1
  339. package/lib/internal/template/internal/components/dropdown/styles.css.js +20 -20
  340. package/lib/internal/template/internal/components/dropdown/styles.scoped.css +41 -37
  341. package/lib/internal/template/internal/components/dropdown/styles.selectors.js +20 -20
  342. package/lib/internal/template/internal/components/dropdown-footer/styles.css.js +3 -3
  343. package/lib/internal/template/internal/components/dropdown-footer/styles.scoped.css +7 -3
  344. package/lib/internal/template/internal/components/dropdown-footer/styles.selectors.js +3 -3
  345. package/lib/internal/template/internal/components/dropdown-status/styles.css.js +2 -2
  346. package/lib/internal/template/internal/components/dropdown-status/styles.scoped.css +6 -2
  347. package/lib/internal/template/internal/components/dropdown-status/styles.selectors.js +2 -2
  348. package/lib/internal/template/internal/components/handle/styles.css.js +2 -2
  349. package/lib/internal/template/internal/components/handle/styles.scoped.css +10 -6
  350. package/lib/internal/template/internal/components/handle/styles.selectors.js +2 -2
  351. package/lib/internal/template/internal/components/menu-dropdown/index.d.ts.map +1 -1
  352. package/lib/internal/template/internal/components/menu-dropdown/index.js +2 -1
  353. package/lib/internal/template/internal/components/menu-dropdown/index.js.map +1 -1
  354. package/lib/internal/template/internal/components/menu-dropdown/styles.css.js +7 -7
  355. package/lib/internal/template/internal/components/menu-dropdown/styles.scoped.css +17 -13
  356. package/lib/internal/template/internal/components/menu-dropdown/styles.selectors.js +7 -7
  357. package/lib/internal/template/internal/components/option/styles.css.js +17 -17
  358. package/lib/internal/template/internal/components/option/styles.scoped.css +33 -29
  359. package/lib/internal/template/internal/components/option/styles.selectors.js +17 -17
  360. package/lib/internal/template/internal/components/options-list/styles.css.js +3 -3
  361. package/lib/internal/template/internal/components/options-list/styles.scoped.css +7 -3
  362. package/lib/internal/template/internal/components/options-list/styles.selectors.js +3 -3
  363. package/lib/internal/template/internal/components/options-list/utils/use-keyboard.d.ts.map +1 -1
  364. package/lib/internal/template/internal/components/options-list/utils/use-keyboard.js +13 -16
  365. package/lib/internal/template/internal/components/options-list/utils/use-keyboard.js.map +1 -1
  366. package/lib/internal/template/internal/components/panel-resize-handle/styles.css.js +5 -5
  367. package/lib/internal/template/internal/components/panel-resize-handle/styles.scoped.css +14 -10
  368. package/lib/internal/template/internal/components/panel-resize-handle/styles.selectors.js +5 -5
  369. package/lib/internal/template/internal/components/screenreader-only/styles.css.js +1 -1
  370. package/lib/internal/template/internal/components/screenreader-only/styles.scoped.css +5 -1
  371. package/lib/internal/template/internal/components/screenreader-only/styles.selectors.js +1 -1
  372. package/lib/internal/template/internal/components/selectable-item/styles.css.js +16 -16
  373. package/lib/internal/template/internal/components/selectable-item/styles.scoped.css +33 -29
  374. package/lib/internal/template/internal/components/selectable-item/styles.selectors.js +16 -16
  375. package/lib/internal/template/internal/components/token-list/styles.css.js +10 -10
  376. package/lib/internal/template/internal/components/token-list/styles.scoped.css +28 -24
  377. package/lib/internal/template/internal/components/token-list/styles.selectors.js +10 -10
  378. package/lib/internal/template/internal/environment.js +1 -1
  379. package/lib/internal/template/internal/environment.json +1 -1
  380. package/lib/internal/template/internal/hooks/use-performance-marks/index.d.ts.map +1 -1
  381. package/lib/internal/template/internal/hooks/use-performance-marks/index.js +23 -2
  382. package/lib/internal/template/internal/hooks/use-performance-marks/index.js.map +1 -1
  383. package/lib/internal/template/internal/styles/motion/utils.d.ts +2 -0
  384. package/lib/internal/template/internal/styles/motion/utils.d.ts.map +1 -0
  385. package/lib/internal/template/internal/styles/motion/utils.js +5 -0
  386. package/lib/internal/template/internal/styles/motion/utils.js.map +1 -0
  387. package/lib/internal/template/internal/utils/date-time/format-date-iso.d.ts +2 -1
  388. package/lib/internal/template/internal/utils/date-time/format-date-iso.d.ts.map +1 -1
  389. package/lib/internal/template/internal/utils/date-time/format-date-iso.js +6 -2
  390. package/lib/internal/template/internal/utils/date-time/format-date-iso.js.map +1 -1
  391. package/lib/internal/template/internal/utils/date-time/format-date-localized.d.ts +2 -1
  392. package/lib/internal/template/internal/utils/date-time/format-date-localized.d.ts.map +1 -1
  393. package/lib/internal/template/internal/utils/date-time/format-date-localized.js +9 -2
  394. package/lib/internal/template/internal/utils/date-time/format-date-localized.js.map +1 -1
  395. package/lib/internal/template/internal/utils/date-time/format-date-time-with-offset.d.ts.map +1 -1
  396. package/lib/internal/template/internal/utils/date-time/format-date-time-with-offset.js +4 -3
  397. package/lib/internal/template/internal/utils/date-time/format-date-time-with-offset.js.map +1 -1
  398. package/lib/internal/template/internal/utils/date-time/index.d.ts +1 -1
  399. package/lib/internal/template/internal/utils/date-time/index.d.ts.map +1 -1
  400. package/lib/internal/template/internal/utils/date-time/index.js +1 -1
  401. package/lib/internal/template/internal/utils/date-time/index.js.map +1 -1
  402. package/lib/internal/template/internal/utils/date-time/is-iso-only.d.ts +9 -0
  403. package/lib/internal/template/internal/utils/date-time/is-iso-only.d.ts.map +1 -0
  404. package/lib/internal/template/internal/utils/date-time/is-iso-only.js +18 -0
  405. package/lib/internal/template/internal/utils/date-time/is-iso-only.js.map +1 -0
  406. package/lib/internal/template/internal/utils/handle-key.d.ts +1 -2
  407. package/lib/internal/template/internal/utils/handle-key.d.ts.map +1 -1
  408. package/lib/internal/template/internal/utils/handle-key.js.map +1 -1
  409. package/lib/internal/template/internal/utils/throttle.d.ts +1 -2
  410. package/lib/internal/template/internal/utils/throttle.d.ts.map +1 -1
  411. package/lib/internal/template/internal/utils/throttle.js.map +1 -1
  412. package/lib/internal/template/key-value-pairs/index.d.ts +1 -1
  413. package/lib/internal/template/key-value-pairs/index.d.ts.map +1 -1
  414. package/lib/internal/template/key-value-pairs/index.js +2 -2
  415. package/lib/internal/template/key-value-pairs/index.js.map +1 -1
  416. package/lib/internal/template/key-value-pairs/interfaces.d.ts +8 -0
  417. package/lib/internal/template/key-value-pairs/interfaces.d.ts.map +1 -1
  418. package/lib/internal/template/key-value-pairs/interfaces.js.map +1 -1
  419. package/lib/internal/template/key-value-pairs/internal.d.ts.map +1 -1
  420. package/lib/internal/template/key-value-pairs/internal.js +2 -2
  421. package/lib/internal/template/key-value-pairs/internal.js.map +1 -1
  422. package/lib/internal/template/key-value-pairs/styles.css.js +8 -8
  423. package/lib/internal/template/key-value-pairs/styles.scoped.css +13 -9
  424. package/lib/internal/template/key-value-pairs/styles.selectors.js +8 -8
  425. package/lib/internal/template/link/styles.css.js +20 -20
  426. package/lib/internal/template/link/styles.scoped.css +75 -71
  427. package/lib/internal/template/link/styles.selectors.js +20 -20
  428. package/lib/internal/template/live-region/styles.css.js +2 -2
  429. package/lib/internal/template/live-region/styles.scoped.css +7 -3
  430. package/lib/internal/template/live-region/styles.selectors.js +2 -2
  431. package/lib/internal/template/mixed-line-bar-chart/styles.css.js +11 -11
  432. package/lib/internal/template/mixed-line-bar-chart/styles.scoped.css +23 -19
  433. package/lib/internal/template/mixed-line-bar-chart/styles.selectors.js +11 -11
  434. package/lib/internal/template/modal/index.js +1 -1
  435. package/lib/internal/template/modal/index.js.map +1 -1
  436. package/lib/internal/template/modal/styles.css.js +23 -23
  437. package/lib/internal/template/modal/styles.scoped.css +42 -38
  438. package/lib/internal/template/modal/styles.selectors.js +23 -23
  439. package/lib/internal/template/multiselect/styles.css.js +3 -3
  440. package/lib/internal/template/multiselect/styles.scoped.css +7 -3
  441. package/lib/internal/template/multiselect/styles.selectors.js +3 -3
  442. package/lib/internal/template/pagination/styles.css.js +9 -9
  443. package/lib/internal/template/pagination/styles.scoped.css +27 -23
  444. package/lib/internal/template/pagination/styles.selectors.js +9 -9
  445. package/lib/internal/template/pie-chart/styles.css.js +27 -27
  446. package/lib/internal/template/pie-chart/styles.scoped.css +52 -48
  447. package/lib/internal/template/pie-chart/styles.selectors.js +27 -27
  448. package/lib/internal/template/popover/styles.css.js +53 -53
  449. package/lib/internal/template/popover/styles.scoped.css +89 -69
  450. package/lib/internal/template/popover/styles.selectors.js +53 -53
  451. package/lib/internal/template/progress-bar/styles.css.js +19 -19
  452. package/lib/internal/template/progress-bar/styles.scoped.css +42 -34
  453. package/lib/internal/template/progress-bar/styles.selectors.js +19 -19
  454. package/lib/internal/template/prompt-input/styles.css.js +14 -14
  455. package/lib/internal/template/prompt-input/styles.scoped.css +43 -39
  456. package/lib/internal/template/prompt-input/styles.selectors.js +14 -14
  457. package/lib/internal/template/property-filter/filtering-token/styles.css.js +18 -18
  458. package/lib/internal/template/property-filter/filtering-token/styles.scoped.css +45 -41
  459. package/lib/internal/template/property-filter/filtering-token/styles.selectors.js +18 -18
  460. package/lib/internal/template/property-filter/styles.css.js +39 -39
  461. package/lib/internal/template/property-filter/styles.scoped.css +45 -41
  462. package/lib/internal/template/property-filter/styles.selectors.js +39 -39
  463. package/lib/internal/template/radio-group/styles.css.js +10 -10
  464. package/lib/internal/template/radio-group/styles.scoped.css +20 -16
  465. package/lib/internal/template/radio-group/styles.selectors.js +10 -10
  466. package/lib/internal/template/s3-resource-selector/s3-modal/basic-table.js +1 -0
  467. package/lib/internal/template/s3-resource-selector/s3-modal/basic-table.js.map +1 -1
  468. package/lib/internal/template/s3-resource-selector/s3-modal/styles.css.js +3 -3
  469. package/lib/internal/template/s3-resource-selector/s3-modal/styles.scoped.css +9 -5
  470. package/lib/internal/template/s3-resource-selector/s3-modal/styles.selectors.js +3 -3
  471. package/lib/internal/template/segmented-control/styles.css.js +15 -15
  472. package/lib/internal/template/segmented-control/styles.scoped.css +38 -34
  473. package/lib/internal/template/segmented-control/styles.selectors.js +15 -15
  474. package/lib/internal/template/select/parts/filter.d.ts +1 -1
  475. package/lib/internal/template/select/parts/styles.css.js +21 -21
  476. package/lib/internal/template/select/parts/styles.scoped.css +26 -22
  477. package/lib/internal/template/select/parts/styles.selectors.js +21 -21
  478. package/lib/internal/template/select/styles.css.js +1 -1
  479. package/lib/internal/template/select/styles.scoped.css +5 -1
  480. package/lib/internal/template/select/styles.selectors.js +1 -1
  481. package/lib/internal/template/select/utils/use-select.js +1 -1
  482. package/lib/internal/template/select/utils/use-select.js.map +1 -1
  483. package/lib/internal/template/side-navigation/styles.css.js +30 -30
  484. package/lib/internal/template/side-navigation/styles.scoped.css +50 -46
  485. package/lib/internal/template/side-navigation/styles.selectors.js +30 -30
  486. package/lib/internal/template/slider/styles.css.js +26 -26
  487. package/lib/internal/template/slider/styles.scoped.css +80 -76
  488. package/lib/internal/template/slider/styles.selectors.js +26 -26
  489. package/lib/internal/template/space-between/styles.css.js +23 -23
  490. package/lib/internal/template/space-between/styles.scoped.css +28 -24
  491. package/lib/internal/template/space-between/styles.selectors.js +23 -23
  492. package/lib/internal/template/spinner/styles.css.js +13 -13
  493. package/lib/internal/template/spinner/styles.scoped.css +23 -19
  494. package/lib/internal/template/spinner/styles.selectors.js +13 -13
  495. package/lib/internal/template/split-panel/icons/styles.css.js +22 -22
  496. package/lib/internal/template/split-panel/icons/styles.scoped.css +28 -24
  497. package/lib/internal/template/split-panel/icons/styles.selectors.js +22 -22
  498. package/lib/internal/template/split-panel/styles.css.js +26 -26
  499. package/lib/internal/template/split-panel/styles.scoped.css +47 -43
  500. package/lib/internal/template/split-panel/styles.selectors.js +26 -26
  501. package/lib/internal/template/status-indicator/styles.css.js +23 -23
  502. package/lib/internal/template/status-indicator/styles.scoped.css +33 -29
  503. package/lib/internal/template/status-indicator/styles.selectors.js +23 -23
  504. package/lib/internal/template/steps/styles.css.js +6 -6
  505. package/lib/internal/template/steps/styles.scoped.css +13 -9
  506. package/lib/internal/template/steps/styles.selectors.js +6 -6
  507. package/lib/internal/template/table/body-cell/styles.css.js +46 -46
  508. package/lib/internal/template/table/body-cell/styles.scoped.css +296 -292
  509. package/lib/internal/template/table/body-cell/styles.selectors.js +46 -46
  510. package/lib/internal/template/table/expandable-rows/styles.css.js +3 -3
  511. package/lib/internal/template/table/expandable-rows/styles.scoped.css +17 -13
  512. package/lib/internal/template/table/expandable-rows/styles.selectors.js +3 -3
  513. package/lib/internal/template/table/header-cell/styles.css.js +26 -26
  514. package/lib/internal/template/table/header-cell/styles.scoped.css +69 -65
  515. package/lib/internal/template/table/header-cell/styles.selectors.js +26 -26
  516. package/lib/internal/template/table/header-cell/th-element.d.ts +2 -1
  517. package/lib/internal/template/table/header-cell/th-element.d.ts.map +1 -1
  518. package/lib/internal/template/table/header-cell/th-element.js +2 -2
  519. package/lib/internal/template/table/header-cell/th-element.js.map +1 -1
  520. package/lib/internal/template/table/interfaces.d.ts +14 -3
  521. package/lib/internal/template/table/interfaces.d.ts.map +1 -1
  522. package/lib/internal/template/table/interfaces.js.map +1 -1
  523. package/lib/internal/template/table/internal.d.ts.map +1 -1
  524. package/lib/internal/template/table/internal.js +13 -4
  525. package/lib/internal/template/table/internal.js.map +1 -1
  526. package/lib/internal/template/table/progressive-loading/items-loader.d.ts +8 -2
  527. package/lib/internal/template/table/progressive-loading/items-loader.d.ts.map +1 -1
  528. package/lib/internal/template/table/progressive-loading/items-loader.js +11 -5
  529. package/lib/internal/template/table/progressive-loading/items-loader.js.map +1 -1
  530. package/lib/internal/template/table/progressive-loading/loader-cell.d.ts +2 -3
  531. package/lib/internal/template/table/progressive-loading/loader-cell.d.ts.map +1 -1
  532. package/lib/internal/template/table/progressive-loading/loader-cell.js +2 -2
  533. package/lib/internal/template/table/progressive-loading/loader-cell.js.map +1 -1
  534. package/lib/internal/template/table/progressive-loading/progressive-loading-utils.d.ts.map +1 -1
  535. package/lib/internal/template/table/progressive-loading/progressive-loading-utils.js +2 -2
  536. package/lib/internal/template/table/progressive-loading/progressive-loading-utils.js.map +1 -1
  537. package/lib/internal/template/table/resizer/styles.css.js +8 -8
  538. package/lib/internal/template/table/resizer/styles.scoped.css +19 -15
  539. package/lib/internal/template/table/resizer/styles.selectors.js +8 -8
  540. package/lib/internal/template/table/selection/interfaces.d.ts +1 -0
  541. package/lib/internal/template/table/selection/interfaces.d.ts.map +1 -1
  542. package/lib/internal/template/table/selection/interfaces.js.map +1 -1
  543. package/lib/internal/template/table/selection/selection-cell.d.ts.map +1 -1
  544. package/lib/internal/template/table/selection/selection-cell.js +4 -3
  545. package/lib/internal/template/table/selection/selection-cell.js.map +1 -1
  546. package/lib/internal/template/table/selection/styles.css.js +3 -3
  547. package/lib/internal/template/table/selection/styles.scoped.css +7 -3
  548. package/lib/internal/template/table/selection/styles.selectors.js +3 -3
  549. package/lib/internal/template/table/selection/use-selection.js +1 -0
  550. package/lib/internal/template/table/selection/use-selection.js.map +1 -1
  551. package/lib/internal/template/table/sticky-scrollbar/styles.css.js +6 -6
  552. package/lib/internal/template/table/sticky-scrollbar/styles.scoped.css +14 -10
  553. package/lib/internal/template/table/sticky-scrollbar/styles.selectors.js +6 -6
  554. package/lib/internal/template/table/styles.css.js +34 -34
  555. package/lib/internal/template/table/styles.scoped.css +45 -41
  556. package/lib/internal/template/table/styles.selectors.js +34 -34
  557. package/lib/internal/template/tabs/styles.css.js +28 -28
  558. package/lib/internal/template/tabs/styles.scoped.css +57 -49
  559. package/lib/internal/template/tabs/styles.selectors.js +28 -28
  560. package/lib/internal/template/tag-editor/styles.css.js +3 -3
  561. package/lib/internal/template/tag-editor/styles.scoped.css +14 -10
  562. package/lib/internal/template/tag-editor/styles.selectors.js +3 -3
  563. package/lib/internal/template/test-utils/dom/button-group/index.d.ts +5 -0
  564. package/lib/internal/template/test-utils/dom/button-group/index.js +16 -7
  565. package/lib/internal/template/test-utils/dom/button-group/index.js.map +1 -1
  566. package/lib/internal/template/test-utils/selectors/button-group/index.d.ts +5 -0
  567. package/lib/internal/template/test-utils/selectors/button-group/index.js +16 -7
  568. package/lib/internal/template/test-utils/selectors/button-group/index.js.map +1 -1
  569. package/lib/internal/template/test-utils/tsconfig.tsbuildinfo +1 -1
  570. package/lib/internal/template/text-content/styles.css.js +1 -1
  571. package/lib/internal/template/text-content/styles.scoped.css +64 -60
  572. package/lib/internal/template/text-content/styles.selectors.js +1 -1
  573. package/lib/internal/template/text-filter/styles.css.js +3 -3
  574. package/lib/internal/template/text-filter/styles.scoped.css +7 -3
  575. package/lib/internal/template/text-filter/styles.selectors.js +3 -3
  576. package/lib/internal/template/textarea/styles.css.js +5 -5
  577. package/lib/internal/template/textarea/styles.scoped.css +18 -14
  578. package/lib/internal/template/textarea/styles.selectors.js +5 -5
  579. package/lib/internal/template/tiles/styles.css.js +30 -30
  580. package/lib/internal/template/tiles/styles.scoped.css +77 -73
  581. package/lib/internal/template/tiles/styles.selectors.js +30 -30
  582. package/lib/internal/template/toggle/styles.css.js +10 -10
  583. package/lib/internal/template/toggle/styles.scoped.css +21 -17
  584. package/lib/internal/template/toggle/styles.selectors.js +10 -10
  585. package/lib/internal/template/token-group/styles.css.js +8 -8
  586. package/lib/internal/template/token-group/styles.scoped.css +20 -16
  587. package/lib/internal/template/token-group/styles.selectors.js +8 -8
  588. package/lib/internal/template/top-navigation/1.0-beta/styles.css.js +23 -25
  589. package/lib/internal/template/top-navigation/1.0-beta/styles.scoped.css +40 -66
  590. package/lib/internal/template/top-navigation/1.0-beta/styles.selectors.js +23 -25
  591. package/lib/internal/template/top-navigation/parts/overflow-menu/menu-item.d.ts.map +1 -1
  592. package/lib/internal/template/top-navigation/parts/overflow-menu/menu-item.js +3 -2
  593. package/lib/internal/template/top-navigation/parts/overflow-menu/menu-item.js.map +1 -1
  594. package/lib/internal/template/top-navigation/styles.css.js +47 -47
  595. package/lib/internal/template/top-navigation/styles.scoped.css +78 -85
  596. package/lib/internal/template/top-navigation/styles.selectors.js +47 -47
  597. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.css.js +20 -20
  598. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.scoped.css +27 -23
  599. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.selectors.js +20 -20
  600. package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.css.js +18 -18
  601. package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.scoped.css +33 -29
  602. package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.selectors.js +18 -18
  603. package/lib/internal/template/tutorial-panel/styles.css.js +1 -1
  604. package/lib/internal/template/tutorial-panel/styles.scoped.css +7 -3
  605. package/lib/internal/template/tutorial-panel/styles.selectors.js +1 -1
  606. package/lib/internal/template/wizard/styles.css.js +30 -30
  607. package/lib/internal/template/wizard/styles.scoped.css +62 -58
  608. package/lib/internal/template/wizard/styles.selectors.js +30 -30
  609. package/package.json +1 -1
  610. package/lib/internal/scss/top-navigation/motion.scss +0 -13
  611. package/lib/internal/template/calendar/utils/navigation.d.ts.map +0 -1
  612. package/lib/internal/template/calendar/utils/navigation.js +0 -73
  613. package/lib/internal/template/calendar/utils/navigation.js.map +0 -1
  614. package/lib/internal/template/internal/utils/date-time/is-iso-date-only.d.ts +0 -5
  615. package/lib/internal/template/internal/utils/date-time/is-iso-date-only.d.ts.map +0 -1
  616. package/lib/internal/template/internal/utils/date-time/is-iso-date-only.js +0 -10
  617. package/lib/internal/template/internal/utils/date-time/is-iso-date-only.js.map +0 -1
@@ -136,62 +136,58 @@
136
136
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
137
137
  SPDX-License-Identifier: Apache-2.0
138
138
  */
139
+ /*
140
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
141
+ SPDX-License-Identifier: Apache-2.0
142
+ */
139
143
  /* Style used for links in slots/components that are text heavy, to help links stand out among
140
144
  surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F73#description */
141
- .awsui_button-dropdown_sne0l_gvtil_141:not(#\9) {
145
+ .awsui_button-dropdown_sne0l_3cc6z_145:not(#\9) {
142
146
  display: inline-block;
143
147
  }
148
+ .awsui_button-dropdown_sne0l_3cc6z_145.awsui_full-width_sne0l_3cc6z_148:not(#\9) {
149
+ inline-size: 100%;
150
+ display: block;
151
+ }
144
152
 
145
- .awsui_items-list-container_sne0l_gvtil_145:not(#\9) {
153
+ .awsui_items-list-container_sne0l_3cc6z_153:not(#\9) {
146
154
  padding-block: 0;
147
155
  padding-inline: 0;
148
156
  margin-block: 0;
149
157
  margin-inline: 0;
150
- animation: awsui_awsui-motion-fade-in-0_sne0l_gvtil_1 500ms var(--motion-easing-show-quick-014od6, ease-out);
158
+ animation: awsui_awsui-motion-fade-in-0_sne0l_3cc6z_1 500ms var(--motion-easing-show-quick-014od6, ease-out);
151
159
  animation-fill-mode: none;
152
160
  }
153
161
  @media (prefers-reduced-motion: reduce) {
154
- .awsui_items-list-container_sne0l_gvtil_145:not(#\9) {
155
- animation: none;
156
- transition: none;
157
- }
158
- }
159
- .awsui-motion-disabled .awsui_items-list-container_sne0l_gvtil_145:not(#\9), .awsui-mode-entering .awsui_items-list-container_sne0l_gvtil_145:not(#\9) {
160
- animation: none;
161
- transition: none;
162
- }
163
-
164
- .awsui_rotate-up_sne0l_gvtil_164:not(#\9) {
165
- transform: rotate(-180deg);
166
- transition: transform var(--motion-duration-rotate-180-llqolb, 135ms) var(--motion-easing-rotate-180-wt4cje, cubic-bezier(0.165, 0.84, 0.44, 1));
167
- }
168
- @media (prefers-reduced-motion: reduce) {
169
- .awsui_rotate-up_sne0l_gvtil_164:not(#\9) {
162
+ .awsui_items-list-container_sne0l_3cc6z_153:not(#\9) {
170
163
  animation: none;
171
164
  transition: none;
172
165
  }
173
166
  }
174
- .awsui-motion-disabled .awsui_rotate-up_sne0l_gvtil_164:not(#\9), .awsui-mode-entering .awsui_rotate-up_sne0l_gvtil_164:not(#\9) {
167
+ .awsui-motion-disabled .awsui_items-list-container_sne0l_3cc6z_153:not(#\9), .awsui-mode-entering .awsui_items-list-container_sne0l_3cc6z_153:not(#\9) {
175
168
  animation: none;
176
169
  transition: none;
177
170
  }
178
171
 
179
- .awsui_rotate-down_sne0l_gvtil_179:not(#\9) {
172
+ .awsui_rotate_sne0l_3cc6z_172:not(#\9) {
180
173
  transform: rotate(0deg);
181
174
  transition: transform var(--motion-duration-rotate-180-llqolb, 135ms) var(--motion-easing-rotate-180-wt4cje, cubic-bezier(0.165, 0.84, 0.44, 1));
182
175
  }
183
176
  @media (prefers-reduced-motion: reduce) {
184
- .awsui_rotate-down_sne0l_gvtil_179:not(#\9) {
177
+ .awsui_rotate_sne0l_3cc6z_172:not(#\9) {
185
178
  animation: none;
186
179
  transition: none;
187
180
  }
188
181
  }
189
- .awsui-motion-disabled .awsui_rotate-down_sne0l_gvtil_179:not(#\9), .awsui-mode-entering .awsui_rotate-down_sne0l_gvtil_179:not(#\9) {
182
+ .awsui-motion-disabled .awsui_rotate_sne0l_3cc6z_172:not(#\9), .awsui-mode-entering .awsui_rotate_sne0l_3cc6z_172:not(#\9) {
190
183
  animation: none;
191
184
  transition: none;
192
185
  }
186
+ .awsui_rotate-open_sne0l_3cc6z_186:not(#\9) {
187
+ transform: rotate(-180deg);
188
+ }
193
189
 
194
- .awsui_header_sne0l_gvtil_194:not(#\9) {
190
+ .awsui_header_sne0l_3cc6z_190:not(#\9) {
195
191
  display: flex;
196
192
  flex-direction: column;
197
193
  list-style: none;
@@ -202,52 +198,69 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
202
198
  border-inline: var(--border-width-field-9kmoac, 1px) solid transparent;
203
199
  }
204
200
 
205
- .awsui_title_sne0l_gvtil_205:not(#\9),
206
- .awsui_description_sne0l_gvtil_206:not(#\9) {
201
+ .awsui_title_sne0l_3cc6z_201:not(#\9),
202
+ .awsui_description_sne0l_3cc6z_202:not(#\9) {
207
203
  color: var(--color-text-top-navigation-title-e4w0av, #16191f);
208
204
  }
209
205
 
210
- .awsui_split-trigger-wrapper_sne0l_gvtil_210:not(#\9) {
206
+ .awsui_trigger-button_sne0l_3cc6z_206.awsui_full-width_sne0l_3cc6z_148:not(#\9) {
207
+ display: grid;
208
+ grid-template-columns: 1fr auto;
209
+ }
210
+ .awsui_trigger-button_sne0l_3cc6z_206.awsui_full-width_sne0l_3cc6z_148.awsui_loading_sne0l_3cc6z_210:not(#\9) {
211
+ grid-template-columns: auto 1fr auto;
212
+ }
213
+
214
+ .awsui_split-trigger-wrapper_sne0l_3cc6z_214:not(#\9) {
211
215
  display: flex;
212
216
  }
213
- .awsui_split-trigger-wrapper_sne0l_gvtil_210 > .awsui_trigger-item_sne0l_gvtil_213 > .awsui_trigger-button_sne0l_gvtil_213:not(#\9):focus, .awsui_split-trigger-wrapper_sne0l_gvtil_210 > .awsui_trigger-item_sne0l_gvtil_213 > .awsui_trigger-button_sne0l_gvtil_213:not(#\9):hover {
217
+ .awsui_split-trigger-wrapper_sne0l_3cc6z_214 > .awsui_trigger-item_sne0l_3cc6z_217 > .awsui_trigger-button_sne0l_3cc6z_206:not(#\9):focus, .awsui_split-trigger-wrapper_sne0l_3cc6z_214 > .awsui_trigger-item_sne0l_3cc6z_217 > .awsui_trigger-button_sne0l_3cc6z_206:not(#\9):hover {
214
218
  z-index: 1;
215
219
  }
216
- .awsui_split-trigger-wrapper_sne0l_gvtil_210 > .awsui_trigger-item_sne0l_gvtil_213:not(#\9):not(:last-child) > .awsui_trigger-button_sne0l_gvtil_213 {
220
+ .awsui_split-trigger-wrapper_sne0l_3cc6z_214 > .awsui_trigger-item_sne0l_3cc6z_217:not(#\9):not(:last-child) > .awsui_trigger-button_sne0l_3cc6z_206 {
217
221
  border-start-end-radius: 0;
218
222
  border-end-end-radius: 0;
219
223
  padding-inline-end: var(--space-m-u91ipm, 16px);
220
224
  margin-inline-end: var(--space-xxxs-gn3248, 2px);
221
225
  }
222
- .awsui_split-trigger-wrapper_sne0l_gvtil_210 > .awsui_trigger-item_sne0l_gvtil_213:not(#\9):not(:last-child) > .awsui_trigger-button_sne0l_gvtil_213.awsui_has-no-text_sne0l_gvtil_222 {
226
+ .awsui_split-trigger-wrapper_sne0l_3cc6z_214 > .awsui_trigger-item_sne0l_3cc6z_217:not(#\9):not(:last-child) > .awsui_trigger-button_sne0l_3cc6z_206.awsui_has-no-text_sne0l_3cc6z_226 {
223
227
  padding-inline: var(--space-button-icon-only-horizontal-gl6z91, 16px);
224
228
  }
225
- .awsui_split-trigger-wrapper_sne0l_gvtil_210 > .awsui_trigger-item_sne0l_gvtil_213:not(#\9):not(:last-child) > .awsui_trigger-button_sne0l_gvtil_213.awsui_has-no-text_sne0l_gvtil_222.awsui_visual-refresh_sne0l_gvtil_225 {
229
+ .awsui_split-trigger-wrapper_sne0l_3cc6z_214 > .awsui_trigger-item_sne0l_3cc6z_217:not(#\9):not(:last-child) > .awsui_trigger-button_sne0l_3cc6z_206.awsui_has-no-text_sne0l_3cc6z_226.awsui_visual-refresh_sne0l_3cc6z_229 {
226
230
  padding-inline-start: calc(var(--space-s-vmutj3, 12px) - 2px);
227
231
  }
228
- .awsui_split-trigger-wrapper_sne0l_gvtil_210 > .awsui_trigger-item_sne0l_gvtil_213:not(#\9):not(:first-child) > .awsui_trigger-button_sne0l_gvtil_213 {
232
+ .awsui_split-trigger-wrapper_sne0l_3cc6z_214 > .awsui_trigger-item_sne0l_3cc6z_217:not(#\9):not(:first-child) > .awsui_trigger-button_sne0l_3cc6z_206 {
229
233
  border-start-start-radius: 0;
230
234
  border-end-start-radius: 0;
231
235
  padding-inline: calc(var(--space-xs-6dgkww, 8px) - 2px);
232
236
  }
233
- .awsui_split-trigger-wrapper_sne0l_gvtil_210 > .awsui_trigger-item_sne0l_gvtil_213:not(#\9):not(:first-child).awsui_visual-refresh_sne0l_gvtil_225 > .awsui_trigger-button_sne0l_gvtil_213 {
237
+ .awsui_split-trigger-wrapper_sne0l_3cc6z_214 > .awsui_trigger-item_sne0l_3cc6z_217:not(#\9):not(:first-child).awsui_visual-refresh_sne0l_3cc6z_229 > .awsui_trigger-button_sne0l_3cc6z_206 {
234
238
  padding-inline-end: calc(var(--space-s-vmutj3, 12px) - 2px);
235
239
  }
236
- .awsui_split-trigger-wrapper_sne0l_gvtil_210 > .awsui_trigger-item_sne0l_gvtil_213.awsui_variant-normal_sne0l_gvtil_236:not(#\9):not(:last-child) > .awsui_trigger-button_sne0l_gvtil_213 {
240
+ .awsui_split-trigger-wrapper_sne0l_3cc6z_214 > .awsui_trigger-item_sne0l_3cc6z_217.awsui_variant-normal_sne0l_3cc6z_240:not(#\9):not(:last-child) > .awsui_trigger-button_sne0l_3cc6z_206 {
237
241
  margin-inline-end: 0;
238
242
  }
239
- .awsui_split-trigger-wrapper_sne0l_gvtil_210 > .awsui_trigger-item_sne0l_gvtil_213.awsui_variant-normal_sne0l_gvtil_236:not(#\9):not(:first-child) > .awsui_trigger-button_sne0l_gvtil_213 {
243
+ .awsui_split-trigger-wrapper_sne0l_3cc6z_214 > .awsui_trigger-item_sne0l_3cc6z_217.awsui_variant-normal_sne0l_3cc6z_240:not(#\9):not(:first-child) > .awsui_trigger-button_sne0l_3cc6z_206 {
240
244
  margin-inline-start: calc(var(--border-width-field-9kmoac, 1px) * -1);
241
245
  }
242
246
 
243
- .awsui_split-trigger_sne0l_gvtil_210:not(#\9) {
247
+ .awsui_split-trigger_sne0l_3cc6z_214:not(#\9) {
244
248
  display: contents;
245
249
  }
246
250
 
247
- .awsui_dropdown-trigger_sne0l_gvtil_247:not(#\9) {
251
+ .awsui_dropdown-trigger_sne0l_3cc6z_251:not(#\9) {
248
252
  display: contents;
249
253
  }
250
254
 
251
- .awsui_test-utils-button-trigger_sne0l_gvtil_251:not(#\9) {
255
+ .awsui_main-action-full-width_sne0l_3cc6z_255:not(#\9) {
256
+ flex: 1 1 0;
257
+ text-align: center;
258
+ }
259
+
260
+ .awsui_main-action-trigger-full-width_sne0l_3cc6z_260:not(#\9) {
261
+ flex: 0 0 auto;
262
+ }
263
+
264
+ .awsui_test-utils-button-trigger_sne0l_3cc6z_264:not(#\9) {
252
265
  /* used in test-utils */
253
266
  }
@@ -2,22 +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
- "button-dropdown": "awsui_button-dropdown_sne0l_gvtil_141",
6
- "items-list-container": "awsui_items-list-container_sne0l_gvtil_145",
7
- "awsui-motion-fade-in-0": "awsui_awsui-motion-fade-in-0_sne0l_gvtil_1",
8
- "rotate-up": "awsui_rotate-up_sne0l_gvtil_164",
9
- "rotate-down": "awsui_rotate-down_sne0l_gvtil_179",
10
- "header": "awsui_header_sne0l_gvtil_194",
11
- "title": "awsui_title_sne0l_gvtil_205",
12
- "description": "awsui_description_sne0l_gvtil_206",
13
- "split-trigger-wrapper": "awsui_split-trigger-wrapper_sne0l_gvtil_210",
14
- "trigger-item": "awsui_trigger-item_sne0l_gvtil_213",
15
- "trigger-button": "awsui_trigger-button_sne0l_gvtil_213",
16
- "has-no-text": "awsui_has-no-text_sne0l_gvtil_222",
17
- "visual-refresh": "awsui_visual-refresh_sne0l_gvtil_225",
18
- "variant-normal": "awsui_variant-normal_sne0l_gvtil_236",
19
- "split-trigger": "awsui_split-trigger_sne0l_gvtil_210",
20
- "dropdown-trigger": "awsui_dropdown-trigger_sne0l_gvtil_247",
21
- "test-utils-button-trigger": "awsui_test-utils-button-trigger_sne0l_gvtil_251"
5
+ "button-dropdown": "awsui_button-dropdown_sne0l_3cc6z_145",
6
+ "full-width": "awsui_full-width_sne0l_3cc6z_148",
7
+ "items-list-container": "awsui_items-list-container_sne0l_3cc6z_153",
8
+ "awsui-motion-fade-in-0": "awsui_awsui-motion-fade-in-0_sne0l_3cc6z_1",
9
+ "rotate": "awsui_rotate_sne0l_3cc6z_172",
10
+ "rotate-open": "awsui_rotate-open_sne0l_3cc6z_186",
11
+ "header": "awsui_header_sne0l_3cc6z_190",
12
+ "title": "awsui_title_sne0l_3cc6z_201",
13
+ "description": "awsui_description_sne0l_3cc6z_202",
14
+ "trigger-button": "awsui_trigger-button_sne0l_3cc6z_206",
15
+ "loading": "awsui_loading_sne0l_3cc6z_210",
16
+ "split-trigger-wrapper": "awsui_split-trigger-wrapper_sne0l_3cc6z_214",
17
+ "trigger-item": "awsui_trigger-item_sne0l_3cc6z_217",
18
+ "has-no-text": "awsui_has-no-text_sne0l_3cc6z_226",
19
+ "visual-refresh": "awsui_visual-refresh_sne0l_3cc6z_229",
20
+ "variant-normal": "awsui_variant-normal_sne0l_3cc6z_240",
21
+ "split-trigger": "awsui_split-trigger_sne0l_3cc6z_214",
22
+ "dropdown-trigger": "awsui_dropdown-trigger_sne0l_3cc6z_251",
23
+ "main-action-full-width": "awsui_main-action-full-width_sne0l_3cc6z_255",
24
+ "main-action-trigger-full-width": "awsui_main-action-trigger-full-width_sne0l_3cc6z_260",
25
+ "test-utils-button-trigger": "awsui_test-utils-button-trigger_sne0l_3cc6z_264"
22
26
  };
23
27
 
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { FileInputProps } from '../file-input/interfaces.js';
3
+ import { CancelableEventHandler } from '../internal/events/index.js';
4
+ import { ButtonGroupProps } from './interfaces.js';
5
+ declare const FileInputItem: React.ForwardRefExoticComponent<{
6
+ item: ButtonGroupProps.IconFileInput;
7
+ showTooltip: boolean;
8
+ onFilesChange?: CancelableEventHandler<ButtonGroupProps.FilesChangeDetails> | undefined;
9
+ } & React.RefAttributes<FileInputProps.Ref>>;
10
+ export default FileInputItem;
11
+ //# sourceMappingURL=file-input-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-input-item.d.ts","sourceRoot":"","sources":["../../../src/button-group/file-input-item.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,OAAO,EAAE,sBAAsB,EAAuB,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAInD,QAAA,MAAM,aAAa;UAOP,iBAAiB,aAAa;iBACvB,OAAO;;4CAyCzB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,23 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import React, { forwardRef, useState } from 'react';
4
+ import clsx from 'clsx';
5
+ import InternalFileInput from '../file-input/internal.js';
6
+ import Tooltip from '../internal/components/tooltip/index.js';
7
+ import { fireCancelableEvent } from '../internal/events/index.js';
8
+ import testUtilStyles from './test-classes/styles.css.js';
9
+ const FileInputItem = forwardRef(({ item, showTooltip, onFilesChange, }, ref) => {
10
+ const [files, setFiles] = useState([]);
11
+ const containerRef = React.useRef(null);
12
+ const canShowTooltip = Boolean(showTooltip);
13
+ return (React.createElement("div", { ref: containerRef },
14
+ React.createElement(InternalFileInput, { className: clsx(testUtilStyles['button-group-item']), ref: ref, variant: "icon", ariaLabel: item.text, accept: item.accept, multiple: item.multiple, value: files, onChange: event => {
15
+ fireCancelableEvent(onFilesChange, { id: item.id, files: event.detail.value });
16
+ setFiles(event.detail.value);
17
+ }, "data-testid": item.id, __inputNativeAttributes: {
18
+ 'data-itemid': item.id,
19
+ }, __inputClassName: testUtilStyles.item }),
20
+ canShowTooltip && (React.createElement(Tooltip, { trackRef: containerRef, trackKey: item.id, value: item.text, className: clsx(testUtilStyles.tooltip, testUtilStyles['button-group-tooltip']) }))));
21
+ });
22
+ export default FileInputItem;
23
+ //# sourceMappingURL=file-input-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-input-item.js","sourceRoot":"","sources":["../../../src/button-group/file-input-item.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,iBAAiB,MAAM,2BAA2B,CAAC;AAC1D,OAAO,OAAO,MAAM,yCAAyC,CAAC;AAC9D,OAAO,EAA0B,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAG1F,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAE1D,MAAM,aAAa,GAAG,UAAU,CAC9B,CACE,EACE,IAAI,EACJ,WAAW,EACX,aAAa,GAKd,EACD,GAAkC,EAClC,EAAE;IACF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAExD,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE5C,OAAO,CACL,6BAAK,GAAG,EAAE,YAAY;QACpB,oBAAC,iBAAiB,IAChB,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,EACpD,GAAG,EAAE,GAAG,EACR,OAAO,EAAC,MAAM,EACd,SAAS,EAAE,IAAI,CAAC,IAAI,EACpB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,KAAK,CAAC,EAAE;gBAChB,mBAAmB,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/E,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC,iBACY,IAAI,CAAC,EAAE,EACpB,uBAAuB,EAAE;gBACvB,aAAa,EAAE,IAAI,CAAC,EAAE;aACvB,EACD,gBAAgB,EAAE,cAAc,CAAC,IAAI,GACrC;QACD,cAAc,IAAI,CACjB,oBAAC,OAAO,IACN,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,IAAI,CAAC,EAAE,EACjB,KAAK,EAAE,IAAI,CAAC,IAAI,EAChB,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,sBAAsB,CAAC,CAAC,GAC/E,CACH,CACG,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { forwardRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { FileInputProps } from '../file-input/interfaces.js';\nimport InternalFileInput from '../file-input/internal.js';\nimport Tooltip from '../internal/components/tooltip/index.js';\nimport { CancelableEventHandler, fireCancelableEvent } from '../internal/events/index.js';\nimport { ButtonGroupProps } from './interfaces.js';\n\nimport testUtilStyles from './test-classes/styles.css.js';\n\nconst FileInputItem = forwardRef(\n (\n {\n item,\n showTooltip,\n onFilesChange,\n }: {\n item: ButtonGroupProps.IconFileInput;\n showTooltip: boolean;\n onFilesChange?: CancelableEventHandler<ButtonGroupProps.FilesChangeDetails>;\n },\n ref: React.Ref<FileInputProps.Ref>\n ) => {\n const [files, setFiles] = useState<File[]>([]);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n const canShowTooltip = Boolean(showTooltip);\n\n return (\n <div ref={containerRef}>\n <InternalFileInput\n className={clsx(testUtilStyles['button-group-item'])}\n ref={ref}\n variant=\"icon\"\n ariaLabel={item.text}\n accept={item.accept}\n multiple={item.multiple}\n value={files}\n onChange={event => {\n fireCancelableEvent(onFilesChange, { id: item.id, files: event.detail.value });\n setFiles(event.detail.value);\n }}\n data-testid={item.id}\n __inputNativeAttributes={{\n 'data-itemid': item.id,\n }}\n __inputClassName={testUtilStyles.item}\n />\n {canShowTooltip && (\n <Tooltip\n trackRef={containerRef}\n trackKey={item.id}\n value={item.text}\n className={clsx(testUtilStyles.tooltip, testUtilStyles['button-group-tooltip'])}\n />\n )}\n </div>\n );\n }\n);\n\nexport default FileInputItem;\n"]}
@@ -62,6 +62,13 @@ export interface ButtonGroupProps extends BaseComponentProps {
62
62
  * * `popoverFeedback` (optional, ReactNode) - Text that appears when the user clicks the button. Use to provide feedback to the user.
63
63
  * * `pressedPopoverFeedback` (optional, ReactNode) - Text that appears when the user clicks the button in pressed state. Defaults to `popoverFeedback`.
64
64
  *
65
+ * * ### file-input
66
+ *
67
+ * * `id` (string) - The unique identifier of the button, used as detail in `onFilesChange`.
68
+ * * `text` (string) - The name of the menu button shown as a tooltip.
69
+ * * `accept` (optional, string) - Specifies the native file input `accept` attribute to describe the allow-list of file types.
70
+ * * `multiple` (optional, string) - Specifies the native file input `multiple` attribute to allow users entering more than one file.
71
+ *
65
72
  * ### menu-dropdown
66
73
  *
67
74
  * * `id` (string) - The unique identifier of the button, used as detail in `onItemClick`.
@@ -81,13 +88,17 @@ export interface ButtonGroupProps extends BaseComponentProps {
81
88
  * Called when the user clicks on an item, and the item is not disabled. The event detail object contains the id of the clicked item.
82
89
  */
83
90
  onItemClick?: NonCancelableEventHandler<ButtonGroupProps.ItemClickDetails>;
91
+ /**
92
+ * Called when the user uploads files. The event detail object contains the id and files from the file input item.
93
+ */
94
+ onFilesChange?: NonCancelableEventHandler<ButtonGroupProps.FilesChangeDetails>;
84
95
  }
85
96
  export interface InternalButtonGroupProps extends ButtonGroupProps, InternalBaseComponentProps {
86
97
  }
87
98
  export declare namespace ButtonGroupProps {
88
99
  type Variant = 'icon';
89
100
  type ItemOrGroup = Item | Group;
90
- type Item = IconButton | IconToggleButton | MenuDropdown;
101
+ type Item = IconButton | IconToggleButton | IconFileInput | MenuDropdown;
91
102
  interface IconButton {
92
103
  type: 'icon-button';
93
104
  id: string;
@@ -118,6 +129,13 @@ export declare namespace ButtonGroupProps {
118
129
  popoverFeedback?: React.ReactNode;
119
130
  pressedPopoverFeedback?: React.ReactNode;
120
131
  }
132
+ interface IconFileInput {
133
+ type: 'icon-file-input';
134
+ id: string;
135
+ text: string;
136
+ accept?: string;
137
+ multiple?: boolean;
138
+ }
121
139
  interface MenuDropdown {
122
140
  type: 'menu-dropdown';
123
141
  id: string;
@@ -137,6 +155,10 @@ export declare namespace ButtonGroupProps {
137
155
  pressed?: boolean;
138
156
  checked?: boolean;
139
157
  }
158
+ interface FilesChangeDetails {
159
+ id: string;
160
+ files: File[];
161
+ }
140
162
  interface Ref {
141
163
  /**
142
164
  * Focuses button group item by id.
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/button-group/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/button-group/interfaces.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/button-group/interfaces.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { ButtonDropdownProps } from '../button-dropdown/interfaces';\nimport { IconProps } from '../icon/interfaces';\nimport { BaseComponentProps } from '../internal/base-component';\nimport { NonCancelableEventHandler } from '../internal/events';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\n\nexport interface ButtonGroupProps extends BaseComponentProps {\n /**\n * Adds `aria-label` to the button group toolbar element.\n * Use this to provide a unique accessible name for each button group on the page.\n */\n ariaLabel?: string;\n /**\n * Determines the general styling of the button dropdown.\n * * `icon` for icon buttons.\n */\n variant: ButtonGroupProps.Variant;\n /**\n * Use this property to determine dropdown placement strategy for all menu dropdown items.\n *\n * By default, the dropdown height is constrained to fit inside the height of its next scrollable container element.\n * Enabling this property will allow the dropdown to extend beyond that container by using fixed positioning and\n * [React Portals](https://reactjs.org/docs/portals.html).\n *\n * Set this property if the dropdown would otherwise be constrained by a scrollable container,\n * for example inside table and split view layouts.\n *\n * We recommend you use discretion, and don't enable this property unless necessary\n * because fixed positioning results in a slight, visible lag when scrolling complex pages.\n */\n dropdownExpandToViewport?: boolean;\n /**\n * Array of objects with a number of supported types.\n *\n * ### icon-button\n *\n * * `id` (string) - The unique identifier of the button, used as detail in `onItemClick` handler and to focus the button using `ref.focus(id)`.\n * * `text` (string) - The name shown as a tooltip for this button.\n * * `disabled` (optional, boolean) - The disabled state indication for this button.\n * * `loading` (optional, boolean) - The loading state indication for this button.\n * * `loadingText` (optional, string) - The loading text announced to screen readers.\n * * `iconName` (optional, string) - Specifies the name of the icon, used with the [icon component](/components/icon/).\n * * `iconAlt` (optional, string) - Specifies alternate text for the icon when using `iconUrl`.\n * * `iconUrl` (optional, string) - Specifies the URL of a custom icon.\n * * `iconSvg` (optional, ReactNode) - Custom SVG icon. Equivalent to the `svg` slot of the [icon component](/components/icon/).\n * * `popoverFeedback` (optional, ReactNode) - Text that appears when the user clicks the button. Use to provide feedback to the user.\n *\n * ### icon-toggle-button\n *\n * * `id` (string) - The unique identifier of the button, used as detail in `onItemClick` handler and to focus the button using `ref.focus(id)`.\n * * `pressed` (boolean) - The toggle button pressed state.\n * * `text` (string) - The name shown as a tooltip for this button.\n * * `disabled` (optional, boolean) - The disabled state indication for this button.\n * * `loading` (optional, boolean) - The loading state indication for this button.\n * * `loadingText` (optional, string) - The loading text announced to screen readers.\n * * `iconName` (optional, string) - Specifies the name of the icon, used with the [icon component](/components/icon/).\n * * `iconUrl` (optional, string) - Specifies the URL of a custom icon.\n * * `iconSvg` (optional, ReactNode) - Custom SVG icon. Equivalent to the `svg` slot of the [icon component](/components/icon/).\n * * `pressedIconName` (optional, string) - Specifies the name of the icon in pressed state, used with the [icon component](/components/icon/).\n * * `pressedIconUrl` (optional, string) - Specifies the URL of a custom icon in pressed state.\n * * `pressedIconSvg` (optional, ReactNode) - Custom SVG icon in pressed state. Equivalent to the `svg` slot of the [icon component](/components/icon/).\n * * `popoverFeedback` (optional, ReactNode) - Text that appears when the user clicks the button. Use to provide feedback to the user.\n * * `pressedPopoverFeedback` (optional, ReactNode) - Text that appears when the user clicks the button in pressed state. Defaults to `popoverFeedback`.\n *\n * ### menu-dropdown\n *\n * * `id` (string) - The unique identifier of the button, used as detail in `onItemClick`.\n * * `text` (string) - The name of the menu button shown as a tooltip.\n * * `disabled` (optional, boolean) - The disabled state indication for the menu button.\n * * `loading` (optional, boolean) - The loading state indication for the menu button.\n * * `loadingText` (optional, string) - The loading text announced to screen readers.\n * * `items` (ButtonDropdownProps.ItemOrGroup[]) - The array of dropdown items that belong to this menu.\n *\n * ### group\n *\n * * `text` (string) - The name of the group rendered as ARIA label for this group.\n * * `items` ((ButtonGroupProps.IconButton | ButtonGroupProps.MenuDropdown)[]) - The array of items that belong to this group.\n */\n items: ReadonlyArray<ButtonGroupProps.ItemOrGroup>;\n /**\n * Called when the user clicks on an item, and the item is not disabled. The event detail object contains the id of the clicked item.\n */\n onItemClick?: NonCancelableEventHandler<ButtonGroupProps.ItemClickDetails>;\n}\n\nexport interface InternalButtonGroupProps extends ButtonGroupProps, InternalBaseComponentProps {}\n\nexport namespace ButtonGroupProps {\n export type Variant = 'icon';\n\n export type ItemOrGroup = Item | Group;\n export type Item = IconButton | IconToggleButton | MenuDropdown;\n\n export interface IconButton {\n type: 'icon-button';\n id: string;\n text: string;\n disabled?: boolean;\n loading?: boolean;\n loadingText?: string;\n iconName?: IconProps.Name;\n iconAlt?: string;\n iconUrl?: string;\n iconSvg?: React.ReactNode;\n popoverFeedback?: React.ReactNode;\n }\n\n export interface IconToggleButton {\n type: 'icon-toggle-button';\n id: string;\n text: string;\n pressed: boolean;\n disabled?: boolean;\n loading?: boolean;\n loadingText?: string;\n iconName?: IconProps.Name;\n iconUrl?: string;\n iconSvg?: React.ReactNode;\n pressedIconName?: IconProps.Name;\n pressedIconUrl?: string;\n pressedIconSvg?: React.ReactNode;\n popoverFeedback?: React.ReactNode;\n pressedPopoverFeedback?: React.ReactNode;\n }\n\n export interface MenuDropdown {\n type: 'menu-dropdown';\n id: string;\n text: string;\n disabled?: boolean;\n loading?: boolean;\n loadingText?: string;\n items: ReadonlyArray<ButtonDropdownProps.ItemOrGroup>;\n }\n\n export interface Group {\n type: 'group';\n text: string;\n items: ReadonlyArray<ButtonGroupProps.Item>;\n }\n\n export interface ItemClickDetails {\n id: string;\n pressed?: boolean;\n checked?: boolean;\n }\n\n export interface Ref {\n /**\n * Focuses button group item by id.\n */\n focus(itemId: string): void;\n }\n}\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/button-group/interfaces.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { ButtonDropdownProps } from '../button-dropdown/interfaces';\nimport { IconProps } from '../icon/interfaces';\nimport { BaseComponentProps } from '../internal/base-component';\nimport { NonCancelableEventHandler } from '../internal/events';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\n\nexport interface ButtonGroupProps extends BaseComponentProps {\n /**\n * Adds `aria-label` to the button group toolbar element.\n * Use this to provide a unique accessible name for each button group on the page.\n */\n ariaLabel?: string;\n /**\n * Determines the general styling of the button dropdown.\n * * `icon` for icon buttons.\n */\n variant: ButtonGroupProps.Variant;\n /**\n * Use this property to determine dropdown placement strategy for all menu dropdown items.\n *\n * By default, the dropdown height is constrained to fit inside the height of its next scrollable container element.\n * Enabling this property will allow the dropdown to extend beyond that container by using fixed positioning and\n * [React Portals](https://reactjs.org/docs/portals.html).\n *\n * Set this property if the dropdown would otherwise be constrained by a scrollable container,\n * for example inside table and split view layouts.\n *\n * We recommend you use discretion, and don't enable this property unless necessary\n * because fixed positioning results in a slight, visible lag when scrolling complex pages.\n */\n dropdownExpandToViewport?: boolean;\n /**\n * Array of objects with a number of supported types.\n *\n * ### icon-button\n *\n * * `id` (string) - The unique identifier of the button, used as detail in `onItemClick` handler and to focus the button using `ref.focus(id)`.\n * * `text` (string) - The name shown as a tooltip for this button.\n * * `disabled` (optional, boolean) - The disabled state indication for this button.\n * * `loading` (optional, boolean) - The loading state indication for this button.\n * * `loadingText` (optional, string) - The loading text announced to screen readers.\n * * `iconName` (optional, string) - Specifies the name of the icon, used with the [icon component](/components/icon/).\n * * `iconAlt` (optional, string) - Specifies alternate text for the icon when using `iconUrl`.\n * * `iconUrl` (optional, string) - Specifies the URL of a custom icon.\n * * `iconSvg` (optional, ReactNode) - Custom SVG icon. Equivalent to the `svg` slot of the [icon component](/components/icon/).\n * * `popoverFeedback` (optional, ReactNode) - Text that appears when the user clicks the button. Use to provide feedback to the user.\n *\n * ### icon-toggle-button\n *\n * * `id` (string) - The unique identifier of the button, used as detail in `onItemClick` handler and to focus the button using `ref.focus(id)`.\n * * `pressed` (boolean) - The toggle button pressed state.\n * * `text` (string) - The name shown as a tooltip for this button.\n * * `disabled` (optional, boolean) - The disabled state indication for this button.\n * * `loading` (optional, boolean) - The loading state indication for this button.\n * * `loadingText` (optional, string) - The loading text announced to screen readers.\n * * `iconName` (optional, string) - Specifies the name of the icon, used with the [icon component](/components/icon/).\n * * `iconUrl` (optional, string) - Specifies the URL of a custom icon.\n * * `iconSvg` (optional, ReactNode) - Custom SVG icon. Equivalent to the `svg` slot of the [icon component](/components/icon/).\n * * `pressedIconName` (optional, string) - Specifies the name of the icon in pressed state, used with the [icon component](/components/icon/).\n * * `pressedIconUrl` (optional, string) - Specifies the URL of a custom icon in pressed state.\n * * `pressedIconSvg` (optional, ReactNode) - Custom SVG icon in pressed state. Equivalent to the `svg` slot of the [icon component](/components/icon/).\n * * `popoverFeedback` (optional, ReactNode) - Text that appears when the user clicks the button. Use to provide feedback to the user.\n * * `pressedPopoverFeedback` (optional, ReactNode) - Text that appears when the user clicks the button in pressed state. Defaults to `popoverFeedback`.\n *\n * * ### file-input\n *\n * * `id` (string) - The unique identifier of the button, used as detail in `onFilesChange`.\n * * `text` (string) - The name of the menu button shown as a tooltip.\n * * `accept` (optional, string) - Specifies the native file input `accept` attribute to describe the allow-list of file types.\n * * `multiple` (optional, string) - Specifies the native file input `multiple` attribute to allow users entering more than one file.\n *\n * ### menu-dropdown\n *\n * * `id` (string) - The unique identifier of the button, used as detail in `onItemClick`.\n * * `text` (string) - The name of the menu button shown as a tooltip.\n * * `disabled` (optional, boolean) - The disabled state indication for the menu button.\n * * `loading` (optional, boolean) - The loading state indication for the menu button.\n * * `loadingText` (optional, string) - The loading text announced to screen readers.\n * * `items` (ButtonDropdownProps.ItemOrGroup[]) - The array of dropdown items that belong to this menu.\n *\n * ### group\n *\n * * `text` (string) - The name of the group rendered as ARIA label for this group.\n * * `items` ((ButtonGroupProps.IconButton | ButtonGroupProps.MenuDropdown)[]) - The array of items that belong to this group.\n */\n items: ReadonlyArray<ButtonGroupProps.ItemOrGroup>;\n /**\n * Called when the user clicks on an item, and the item is not disabled. The event detail object contains the id of the clicked item.\n */\n onItemClick?: NonCancelableEventHandler<ButtonGroupProps.ItemClickDetails>;\n /**\n * Called when the user uploads files. The event detail object contains the id and files from the file input item.\n */\n onFilesChange?: NonCancelableEventHandler<ButtonGroupProps.FilesChangeDetails>;\n}\n\nexport interface InternalButtonGroupProps extends ButtonGroupProps, InternalBaseComponentProps {}\n\nexport namespace ButtonGroupProps {\n export type Variant = 'icon';\n\n export type ItemOrGroup = Item | Group;\n export type Item = IconButton | IconToggleButton | IconFileInput | MenuDropdown;\n\n export interface IconButton {\n type: 'icon-button';\n id: string;\n text: string;\n disabled?: boolean;\n loading?: boolean;\n loadingText?: string;\n iconName?: IconProps.Name;\n iconAlt?: string;\n iconUrl?: string;\n iconSvg?: React.ReactNode;\n popoverFeedback?: React.ReactNode;\n }\n\n export interface IconToggleButton {\n type: 'icon-toggle-button';\n id: string;\n text: string;\n pressed: boolean;\n disabled?: boolean;\n loading?: boolean;\n loadingText?: string;\n iconName?: IconProps.Name;\n iconUrl?: string;\n iconSvg?: React.ReactNode;\n pressedIconName?: IconProps.Name;\n pressedIconUrl?: string;\n pressedIconSvg?: React.ReactNode;\n popoverFeedback?: React.ReactNode;\n pressedPopoverFeedback?: React.ReactNode;\n }\n\n export interface IconFileInput {\n type: 'icon-file-input';\n id: string;\n text: string;\n accept?: string;\n multiple?: boolean;\n }\n\n export interface MenuDropdown {\n type: 'menu-dropdown';\n id: string;\n text: string;\n disabled?: boolean;\n loading?: boolean;\n loadingText?: string;\n items: ReadonlyArray<ButtonDropdownProps.ItemOrGroup>;\n }\n\n export interface Group {\n type: 'group';\n text: string;\n items: ReadonlyArray<ButtonGroupProps.Item>;\n }\n\n export interface ItemClickDetails {\n id: string;\n pressed?: boolean;\n checked?: boolean;\n }\n\n export interface FilesChangeDetails {\n id: string;\n files: File[];\n }\n\n export interface Ref {\n /**\n * Focuses button group item by id.\n */\n focus(itemId: string): void;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/button-group/internal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAiB5F,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAM1E,QAAA,MAAM,mBAAmB,uGAoKxB,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/button-group/internal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAiB5F,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAM1E,QAAA,MAAM,mBAAmB,uGAsKxB,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -16,7 +16,7 @@ import ItemElement from './item-element.js';
16
16
  import styles from './styles.css.js';
17
17
  import testUtilStyles from './test-classes/styles.css.js';
18
18
  const InternalButtonGroup = forwardRef((_a, ref) => {
19
- var { items = [], onItemClick, ariaLabel, dropdownExpandToViewport, __internalRootRef = null } = _a, props = __rest(_a, ["items", "onItemClick", "ariaLabel", "dropdownExpandToViewport", "__internalRootRef"]);
19
+ var { items = [], onItemClick, onFilesChange, ariaLabel, dropdownExpandToViewport, __internalRootRef = null } = _a, props = __rest(_a, ["items", "onItemClick", "onFilesChange", "ariaLabel", "dropdownExpandToViewport", "__internalRootRef"]);
20
20
  const baseProps = getBaseProps(props);
21
21
  const focusedIdRef = useRef(null);
22
22
  const navigationAPI = useRef(null);
@@ -106,7 +106,7 @@ const InternalButtonGroup = forwardRef((_a, ref) => {
106
106
  return (React.createElement("div", Object.assign({}, baseProps, { className: clsx(styles.root, testUtilStyles['button-group'], baseProps.className), ref: containerRef, role: "toolbar", "aria-label": ariaLabel, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown }),
107
107
  React.createElement(SingleTabStopNavigationProvider, { ref: navigationAPI, navigationActive: true, getNextFocusTarget: getNextFocusTarget, onUnregisterActive: onUnregisterActive }, items.map((itemOrGroup, index) => {
108
108
  var _a;
109
- const itemContent = (item) => (React.createElement(ItemElement, { key: item.id, item: item, dropdownExpandToViewport: dropdownExpandToViewport, tooltip: tooltip, setTooltip: setTooltip, onItemClick: onItemClick, ref: element => (itemsRef.current[item.id] = element) }));
109
+ const itemContent = (item) => (React.createElement(ItemElement, { key: item.id, item: item, dropdownExpandToViewport: dropdownExpandToViewport, tooltip: tooltip, setTooltip: setTooltip, onItemClick: onItemClick, onFilesChange: onFilesChange, ref: element => (itemsRef.current[item.id] = element) }));
110
110
  const isGroupBefore = ((_a = items[index - 1]) === null || _a === void 0 ? void 0 : _a.type) === 'group';
111
111
  const currentItem = items[index];
112
112
  const isGroupNow = (currentItem === null || currentItem === void 0 ? void 0 : currentItem.type) === 'group';
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/button-group/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { ButtonProps } from '../button/interfaces';\nimport { getBaseProps } from '../internal/base-component';\nimport { getAllFocusables } from '../internal/components/focus-lock/utils';\nimport {\n SingleTabStopNavigationAPI,\n SingleTabStopNavigationProvider,\n} from '../internal/context/single-tab-stop-navigation-context';\nimport { hasModifierKeys } from '../internal/events';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { KeyCode } from '../internal/keycode';\nimport { circleIndex } from '../internal/utils/circle-index';\nimport handleKey from '../internal/utils/handle-key';\nimport { ButtonGroupProps, InternalButtonGroupProps } from './interfaces';\nimport ItemElement from './item-element.js';\n\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\n\nconst InternalButtonGroup = forwardRef(\n (\n {\n items = [],\n onItemClick,\n ariaLabel,\n dropdownExpandToViewport,\n __internalRootRef = null,\n ...props\n }: InternalButtonGroupProps,\n ref: React.Ref<ButtonGroupProps.Ref>\n ) => {\n const baseProps = getBaseProps(props);\n const focusedIdRef = useRef<null | string>(null);\n const navigationAPI = useRef<SingleTabStopNavigationAPI>(null);\n const containerObjectRef = useRef<HTMLDivElement>(null);\n const containerRef = useMergeRefs(containerObjectRef, __internalRootRef);\n const itemsRef = useRef<Record<string, ButtonProps.Ref | null>>({});\n const [tooltip, setTooltip] = useState<null | { item: string; feedback: boolean }>(null);\n\n useImperativeHandle(ref, () => ({\n focus: id => {\n itemsRef.current[id]?.focus();\n },\n }));\n\n function getNextFocusTarget(): null | HTMLElement {\n if (containerObjectRef.current) {\n const buttons: HTMLButtonElement[] = Array.from(\n containerObjectRef.current.querySelectorAll(`.${testUtilStyles.item}`)\n );\n const activeButtons = buttons.filter(button => !button.disabled);\n return activeButtons.find(button => button.dataset.itemid === focusedIdRef.current) ?? activeButtons[0] ?? null;\n }\n return null;\n }\n\n function onUnregisterActive(focusableElement: HTMLElement) {\n // Only refocus when the node is actually removed (no such ID anymore).\n const target = navigationAPI.current?.getFocusTarget();\n\n if (target && target.dataset.itemid !== focusableElement.dataset.itemid) {\n target.focus();\n }\n }\n\n useEffect(() => {\n navigationAPI.current?.updateFocusTarget();\n });\n\n function onFocus(event: React.FocusEvent) {\n if (event.target instanceof HTMLElement && event.target.dataset.itemid) {\n focusedIdRef.current = event.target.dataset.itemid;\n }\n\n navigationAPI.current?.updateFocusTarget();\n }\n\n function onBlur() {\n navigationAPI.current?.updateFocusTarget();\n }\n\n function onKeyDown(event: React.KeyboardEvent) {\n const focusTarget = navigationAPI.current?.getFocusTarget();\n const specialKeys = [KeyCode.right, KeyCode.left, KeyCode.end, KeyCode.home, KeyCode.pageUp, KeyCode.pageDown];\n if (hasModifierKeys(event) || specialKeys.indexOf(event.keyCode) === -1) {\n return;\n }\n if (!containerObjectRef.current || !focusTarget) {\n return;\n }\n // Ignore navigation when the focused element is not an item.\n if (document.activeElement && !document.activeElement.matches(`.${testUtilStyles.item}`)) {\n return;\n }\n event.preventDefault();\n\n const focusables = getFocusablesFrom(containerObjectRef.current);\n const activeIndex = focusables.indexOf(focusTarget);\n handleKey(event as any, {\n onHome: () => focusElement(focusables[0]),\n onEnd: () => focusElement(focusables[focusables.length - 1]),\n onInlineStart: () => focusElement(focusables[circleIndex(activeIndex - 1, [0, focusables.length - 1])]),\n onInlineEnd: () => focusElement(focusables[circleIndex(activeIndex + 1, [0, focusables.length - 1])]),\n });\n }\n\n function focusElement(element: HTMLElement) {\n element.focus();\n }\n\n // List all non-disabled and registered focusables: those are eligible for keyboard navigation.\n function getFocusablesFrom(target: HTMLElement) {\n function isElementRegistered(element: HTMLElement) {\n return navigationAPI.current?.isRegistered(element) ?? false;\n }\n\n function isElementDisabled(element: HTMLElement) {\n if (element instanceof HTMLButtonElement) {\n return element.disabled;\n }\n\n return false;\n }\n\n return getAllFocusables(target).filter(el => isElementRegistered(el) && !isElementDisabled(el));\n }\n\n return (\n <div\n {...baseProps}\n className={clsx(styles.root, testUtilStyles['button-group'], baseProps.className)}\n ref={containerRef}\n role=\"toolbar\"\n aria-label={ariaLabel}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n >\n <SingleTabStopNavigationProvider\n ref={navigationAPI}\n navigationActive={true}\n getNextFocusTarget={getNextFocusTarget}\n onUnregisterActive={onUnregisterActive}\n >\n {items.map((itemOrGroup, index) => {\n const itemContent = (item: ButtonGroupProps.Item) => (\n <ItemElement\n key={item.id}\n item={item}\n dropdownExpandToViewport={dropdownExpandToViewport}\n tooltip={tooltip}\n setTooltip={setTooltip}\n onItemClick={onItemClick}\n ref={element => (itemsRef.current[item.id] = element)}\n />\n );\n\n const isGroupBefore = items[index - 1]?.type === 'group';\n const currentItem = items[index];\n const isGroupNow = currentItem?.type === 'group';\n const shouldAddDivider = isGroupBefore || (!isGroupBefore && isGroupNow && index !== 0);\n\n if (isGroupNow && currentItem.items.length === 0) {\n warnOnce('ButtonGroup', 'Empty group detected. Empty groups are not allowed.');\n }\n\n return (\n <React.Fragment key={itemOrGroup.type === 'group' ? index : itemOrGroup.id}>\n {shouldAddDivider && <div className={styles.divider} />}\n {itemOrGroup.type === 'group' ? (\n <div key={index} role=\"group\" aria-label={itemOrGroup.text} className={styles.group}>\n {itemOrGroup.items.map(item => itemContent(item))}\n </div>\n ) : (\n itemContent(itemOrGroup)\n )}\n </React.Fragment>\n );\n })}\n </SingleTabStopNavigationProvider>\n </div>\n );\n }\n);\n\nexport default InternalButtonGroup;\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/button-group/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { ButtonProps } from '../button/interfaces';\nimport { getBaseProps } from '../internal/base-component';\nimport { getAllFocusables } from '../internal/components/focus-lock/utils';\nimport {\n SingleTabStopNavigationAPI,\n SingleTabStopNavigationProvider,\n} from '../internal/context/single-tab-stop-navigation-context';\nimport { hasModifierKeys } from '../internal/events';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { KeyCode } from '../internal/keycode';\nimport { circleIndex } from '../internal/utils/circle-index';\nimport handleKey from '../internal/utils/handle-key';\nimport { ButtonGroupProps, InternalButtonGroupProps } from './interfaces';\nimport ItemElement from './item-element.js';\n\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\n\nconst InternalButtonGroup = forwardRef(\n (\n {\n items = [],\n onItemClick,\n onFilesChange,\n ariaLabel,\n dropdownExpandToViewport,\n __internalRootRef = null,\n ...props\n }: InternalButtonGroupProps,\n ref: React.Ref<ButtonGroupProps.Ref>\n ) => {\n const baseProps = getBaseProps(props);\n const focusedIdRef = useRef<null | string>(null);\n const navigationAPI = useRef<SingleTabStopNavigationAPI>(null);\n const containerObjectRef = useRef<HTMLDivElement>(null);\n const containerRef = useMergeRefs(containerObjectRef, __internalRootRef);\n const itemsRef = useRef<Record<string, ButtonProps.Ref | null>>({});\n const [tooltip, setTooltip] = useState<null | { item: string; feedback: boolean }>(null);\n\n useImperativeHandle(ref, () => ({\n focus: id => {\n itemsRef.current[id]?.focus();\n },\n }));\n\n function getNextFocusTarget(): null | HTMLElement {\n if (containerObjectRef.current) {\n const buttons: HTMLButtonElement[] = Array.from(\n containerObjectRef.current.querySelectorAll(`.${testUtilStyles.item}`)\n );\n const activeButtons = buttons.filter(button => !button.disabled);\n return activeButtons.find(button => button.dataset.itemid === focusedIdRef.current) ?? activeButtons[0] ?? null;\n }\n return null;\n }\n\n function onUnregisterActive(focusableElement: HTMLElement) {\n // Only refocus when the node is actually removed (no such ID anymore).\n const target = navigationAPI.current?.getFocusTarget();\n\n if (target && target.dataset.itemid !== focusableElement.dataset.itemid) {\n target.focus();\n }\n }\n\n useEffect(() => {\n navigationAPI.current?.updateFocusTarget();\n });\n\n function onFocus(event: React.FocusEvent) {\n if (event.target instanceof HTMLElement && event.target.dataset.itemid) {\n focusedIdRef.current = event.target.dataset.itemid;\n }\n\n navigationAPI.current?.updateFocusTarget();\n }\n\n function onBlur() {\n navigationAPI.current?.updateFocusTarget();\n }\n\n function onKeyDown(event: React.KeyboardEvent) {\n const focusTarget = navigationAPI.current?.getFocusTarget();\n const specialKeys = [KeyCode.right, KeyCode.left, KeyCode.end, KeyCode.home, KeyCode.pageUp, KeyCode.pageDown];\n if (hasModifierKeys(event) || specialKeys.indexOf(event.keyCode) === -1) {\n return;\n }\n if (!containerObjectRef.current || !focusTarget) {\n return;\n }\n // Ignore navigation when the focused element is not an item.\n if (document.activeElement && !document.activeElement.matches(`.${testUtilStyles.item}`)) {\n return;\n }\n event.preventDefault();\n\n const focusables = getFocusablesFrom(containerObjectRef.current);\n const activeIndex = focusables.indexOf(focusTarget);\n handleKey(event as any, {\n onHome: () => focusElement(focusables[0]),\n onEnd: () => focusElement(focusables[focusables.length - 1]),\n onInlineStart: () => focusElement(focusables[circleIndex(activeIndex - 1, [0, focusables.length - 1])]),\n onInlineEnd: () => focusElement(focusables[circleIndex(activeIndex + 1, [0, focusables.length - 1])]),\n });\n }\n\n function focusElement(element: HTMLElement) {\n element.focus();\n }\n\n // List all non-disabled and registered focusables: those are eligible for keyboard navigation.\n function getFocusablesFrom(target: HTMLElement) {\n function isElementRegistered(element: HTMLElement) {\n return navigationAPI.current?.isRegistered(element) ?? false;\n }\n\n function isElementDisabled(element: HTMLElement) {\n if (element instanceof HTMLButtonElement) {\n return element.disabled;\n }\n\n return false;\n }\n\n return getAllFocusables(target).filter(el => isElementRegistered(el) && !isElementDisabled(el));\n }\n\n return (\n <div\n {...baseProps}\n className={clsx(styles.root, testUtilStyles['button-group'], baseProps.className)}\n ref={containerRef}\n role=\"toolbar\"\n aria-label={ariaLabel}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n >\n <SingleTabStopNavigationProvider\n ref={navigationAPI}\n navigationActive={true}\n getNextFocusTarget={getNextFocusTarget}\n onUnregisterActive={onUnregisterActive}\n >\n {items.map((itemOrGroup, index) => {\n const itemContent = (item: ButtonGroupProps.Item) => (\n <ItemElement\n key={item.id}\n item={item}\n dropdownExpandToViewport={dropdownExpandToViewport}\n tooltip={tooltip}\n setTooltip={setTooltip}\n onItemClick={onItemClick}\n onFilesChange={onFilesChange}\n ref={element => (itemsRef.current[item.id] = element)}\n />\n );\n\n const isGroupBefore = items[index - 1]?.type === 'group';\n const currentItem = items[index];\n const isGroupNow = currentItem?.type === 'group';\n const shouldAddDivider = isGroupBefore || (!isGroupBefore && isGroupNow && index !== 0);\n\n if (isGroupNow && currentItem.items.length === 0) {\n warnOnce('ButtonGroup', 'Empty group detected. Empty groups are not allowed.');\n }\n\n return (\n <React.Fragment key={itemOrGroup.type === 'group' ? index : itemOrGroup.id}>\n {shouldAddDivider && <div className={styles.divider} />}\n {itemOrGroup.type === 'group' ? (\n <div key={index} role=\"group\" aria-label={itemOrGroup.text} className={styles.group}>\n {itemOrGroup.items.map(item => itemContent(item))}\n </div>\n ) : (\n itemContent(itemOrGroup)\n )}\n </React.Fragment>\n );\n })}\n </SingleTabStopNavigationProvider>\n </div>\n );\n }\n);\n\nexport default InternalButtonGroup;\n"]}
@@ -14,6 +14,7 @@ interface ItemElementProps {
14
14
  feedback: boolean;
15
15
  }) => void;
16
16
  onItemClick?: NonCancelableEventHandler<ButtonGroupProps.ItemClickDetails> | undefined;
17
+ onFilesChange?: NonCancelableEventHandler<ButtonGroupProps.FilesChangeDetails> | undefined;
17
18
  }
18
19
  declare const ItemElement: React.ForwardRefExoticComponent<ItemElementProps & React.RefAttributes<ButtonProps.Ref>>;
19
20
  export default ItemElement;
@@ -1 +1 @@
1
- {"version":3,"file":"item-element.d.ts","sourceRoot":"","sources":["../../../src/button-group/item-element.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6D,MAAM,OAAO,CAAC;AAElF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAuB,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAIpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAKhD,UAAU,gBAAgB;IACxB,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,OAAO,EAAE,IAAI,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IACpD,UAAU,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1E,WAAW,CAAC,EAAE,yBAAyB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;CACxF;AAED,QAAA,MAAM,WAAW,0FAqHhB,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"item-element.d.ts","sourceRoot":"","sources":["../../../src/button-group/item-element.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6D,MAAM,OAAO,CAAC;AAElF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAuB,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAKpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAKhD,UAAU,gBAAgB;IACxB,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,OAAO,EAAE,IAAI,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IACpD,UAAU,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1E,WAAW,CAAC,EAAE,yBAAyB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;IACvF,aAAa,CAAC,EAAE,yBAAyB,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC;CAC5F;AAED,QAAA,MAAM,WAAW,0FAmIhB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -3,17 +3,18 @@
3
3
  import React, { forwardRef, useEffect, useImperativeHandle, useRef } from 'react';
4
4
  import { fireCancelableEvent } from '../internal/events';
5
5
  import { nodeBelongs } from '../internal/utils/node-belongs';
6
+ import FileInputItem from './file-input-item';
6
7
  import IconButtonItem from './icon-button-item';
7
8
  import IconToggleButtonItem from './icon-toggle-button-item.js';
8
9
  import MenuDropdownItem from './menu-dropdown-item';
9
10
  import styles from './styles.css.js';
10
- const ItemElement = forwardRef(({ item, dropdownExpandToViewport, tooltip, setTooltip, onItemClick }, ref) => {
11
+ const ItemElement = forwardRef(({ item, dropdownExpandToViewport, tooltip, setTooltip, onItemClick, onFilesChange }, ref) => {
11
12
  const containerRef = useRef(null);
12
- const buttonRef = useRef(null);
13
+ const itemRef = useRef(null);
13
14
  useImperativeHandle(ref, () => ({
14
15
  focus: () => {
15
16
  var _a;
16
- (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus();
17
+ (_a = itemRef.current) === null || _a === void 0 ? void 0 : _a.focus();
17
18
  },
18
19
  }));
19
20
  useEffect(() => {
@@ -60,6 +61,10 @@ const ItemElement = forwardRef(({ item, dropdownExpandToViewport, tooltip, setTo
60
61
  }
61
62
  fireCancelableEvent(onItemClick, event.detail, event);
62
63
  };
64
+ const onFilesChangeHandler = (event) => {
65
+ fireCancelableEvent(onFilesChange, event.detail, event);
66
+ setTooltip(null);
67
+ };
63
68
  return (React.createElement("div", { key: item.id, className: styles['item-wrapper'], ref: containerRef, onPointerEnter: () => onShowTooltipSoft(true), onPointerLeave: () => onShowTooltipSoft(false), onFocus: event => {
64
69
  // Showing no tooltip when the focus comes from inside the container.
65
70
  // This is needed to prevent the tooltip after a menu closes with item selection or Escape.
@@ -68,9 +73,10 @@ const ItemElement = forwardRef(({ item, dropdownExpandToViewport, tooltip, setTo
68
73
  }
69
74
  onShowTooltipHard(true);
70
75
  }, onBlur: () => onShowTooltipHard(false) },
71
- item.type === 'icon-button' && (React.createElement(IconButtonItem, { ref: buttonRef, item: item, onItemClick: onClickHandler, showTooltip: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.item) === item.id, showFeedback: !!(tooltip === null || tooltip === void 0 ? void 0 : tooltip.feedback) })),
72
- item.type === 'icon-toggle-button' && (React.createElement(IconToggleButtonItem, { ref: buttonRef, item: item, onItemClick: onClickHandler, showTooltip: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.item) === item.id, showFeedback: !!(tooltip === null || tooltip === void 0 ? void 0 : tooltip.feedback) })),
73
- item.type === 'menu-dropdown' && (React.createElement(MenuDropdownItem, { ref: buttonRef, item: item, showTooltip: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.item) === item.id, onItemClick: onClickHandler, expandToViewport: dropdownExpandToViewport }))));
76
+ item.type === 'icon-button' && (React.createElement(IconButtonItem, { ref: itemRef, item: item, onItemClick: onClickHandler, showTooltip: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.item) === item.id, showFeedback: !!(tooltip === null || tooltip === void 0 ? void 0 : tooltip.feedback) })),
77
+ item.type === 'icon-toggle-button' && (React.createElement(IconToggleButtonItem, { ref: itemRef, item: item, onItemClick: onClickHandler, showTooltip: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.item) === item.id, showFeedback: !!(tooltip === null || tooltip === void 0 ? void 0 : tooltip.feedback) })),
78
+ item.type === 'icon-file-input' && (React.createElement(FileInputItem, { ref: itemRef, item: item, onFilesChange: onFilesChangeHandler, showTooltip: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.item) === item.id })),
79
+ item.type === 'menu-dropdown' && (React.createElement(MenuDropdownItem, { ref: itemRef, item: item, showTooltip: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.item) === item.id, onItemClick: onClickHandler, expandToViewport: dropdownExpandToViewport }))));
74
80
  });
75
81
  export default ItemElement;
76
82
  //# sourceMappingURL=item-element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"item-element.js","sourceRoot":"","sources":["../../../src/button-group/item-element.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef } from 'react';\n\nimport { ButtonProps } from '../button/interfaces.js';\nimport { fireCancelableEvent, NonCancelableEventHandler } from '../internal/events';\nimport { nodeBelongs } from '../internal/utils/node-belongs';\nimport IconButtonItem from './icon-button-item';\nimport IconToggleButtonItem from './icon-toggle-button-item.js';\nimport { ButtonGroupProps } from './interfaces';\nimport MenuDropdownItem from './menu-dropdown-item';\n\nimport styles from './styles.css.js';\n\ninterface ItemElementProps {\n item: ButtonGroupProps.Item;\n dropdownExpandToViewport?: boolean;\n tooltip: null | { item: string; feedback: boolean };\n setTooltip: (tooltip: null | { item: string; feedback: boolean }) => void;\n onItemClick?: NonCancelableEventHandler<ButtonGroupProps.ItemClickDetails> | undefined;\n}\n\nconst ItemElement = forwardRef(\n (\n { item, dropdownExpandToViewport, tooltip, setTooltip, onItemClick }: ItemElementProps,\n ref: React.Ref<ButtonProps.Ref>\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n buttonRef.current?.focus();\n },\n }));\n\n useEffect(() => {\n if (tooltip?.item !== item.id) {\n return;\n }\n\n const close = () => {\n setTooltip(null);\n };\n\n const handlePointerDownEvent = (event: PointerEvent) => {\n if (event.target && containerRef.current?.contains(event.target as HTMLElement)) {\n return;\n }\n\n close();\n };\n\n const handleKeyDownEvent = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n close();\n }\n };\n\n window.addEventListener('pointerdown', handlePointerDownEvent);\n window.addEventListener('keydown', handleKeyDownEvent);\n\n return () => {\n window.removeEventListener('pointerdown', handlePointerDownEvent);\n window.removeEventListener('keydown', handleKeyDownEvent);\n };\n }, [item.id, tooltip, setTooltip]);\n\n const onShowTooltipSoft = (show: boolean) => {\n if (!tooltip?.feedback) {\n setTooltip(show ? { item: item.id, feedback: false } : null);\n }\n };\n\n const onShowTooltipHard = (show: boolean) => {\n if (!show && item.id !== tooltip?.item) {\n return;\n }\n\n setTooltip(show ? { item: item.id, feedback: false } : null);\n };\n\n const onClickHandler = (event: CustomEvent<ButtonGroupProps.ItemClickDetails>) => {\n const hasPopoverFeedback = 'popoverFeedback' in item && item.popoverFeedback;\n\n if (hasPopoverFeedback) {\n setTooltip({ item: item.id, feedback: true });\n }\n\n fireCancelableEvent(onItemClick, event.detail, event);\n };\n\n return (\n <div\n key={item.id}\n className={styles['item-wrapper']}\n ref={containerRef}\n onPointerEnter={() => onShowTooltipSoft(true)}\n onPointerLeave={() => onShowTooltipSoft(false)}\n onFocus={event => {\n // Showing no tooltip when the focus comes from inside the container.\n // This is needed to prevent the tooltip after a menu closes with item selection or Escape.\n if (event && event.relatedTarget && nodeBelongs(containerRef.current, event.relatedTarget)) {\n return;\n }\n onShowTooltipHard(true);\n }}\n onBlur={() => onShowTooltipHard(false)}\n >\n {item.type === 'icon-button' && (\n <IconButtonItem\n ref={buttonRef}\n item={item}\n onItemClick={onClickHandler}\n showTooltip={tooltip?.item === item.id}\n showFeedback={!!tooltip?.feedback}\n />\n )}\n {item.type === 'icon-toggle-button' && (\n <IconToggleButtonItem\n ref={buttonRef}\n item={item}\n onItemClick={onClickHandler}\n showTooltip={tooltip?.item === item.id}\n showFeedback={!!tooltip?.feedback}\n />\n )}\n {item.type === 'menu-dropdown' && (\n <MenuDropdownItem\n ref={buttonRef}\n item={item}\n showTooltip={tooltip?.item === item.id}\n onItemClick={onClickHandler}\n expandToViewport={dropdownExpandToViewport}\n />\n )}\n </div>\n );\n }\n);\n\nexport default ItemElement;\n"]}
1
+ {"version":3,"file":"item-element.js","sourceRoot":"","sources":["../../../src/button-group/item-element.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef } from 'react';\n\nimport { ButtonProps } from '../button/interfaces.js';\nimport { fireCancelableEvent, NonCancelableEventHandler } from '../internal/events';\nimport { nodeBelongs } from '../internal/utils/node-belongs';\nimport FileInputItem from './file-input-item';\nimport IconButtonItem from './icon-button-item';\nimport IconToggleButtonItem from './icon-toggle-button-item.js';\nimport { ButtonGroupProps } from './interfaces';\nimport MenuDropdownItem from './menu-dropdown-item';\n\nimport styles from './styles.css.js';\n\ninterface ItemElementProps {\n item: ButtonGroupProps.Item;\n dropdownExpandToViewport?: boolean;\n tooltip: null | { item: string; feedback: boolean };\n setTooltip: (tooltip: null | { item: string; feedback: boolean }) => void;\n onItemClick?: NonCancelableEventHandler<ButtonGroupProps.ItemClickDetails> | undefined;\n onFilesChange?: NonCancelableEventHandler<ButtonGroupProps.FilesChangeDetails> | undefined;\n}\n\nconst ItemElement = forwardRef(\n (\n { item, dropdownExpandToViewport, tooltip, setTooltip, onItemClick, onFilesChange }: ItemElementProps,\n ref: React.Ref<ButtonProps.Ref>\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const itemRef = useRef<HTMLButtonElement | HTMLInputElement>(null);\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n itemRef.current?.focus();\n },\n }));\n\n useEffect(() => {\n if (tooltip?.item !== item.id) {\n return;\n }\n\n const close = () => {\n setTooltip(null);\n };\n\n const handlePointerDownEvent = (event: PointerEvent) => {\n if (event.target && containerRef.current?.contains(event.target as HTMLElement)) {\n return;\n }\n\n close();\n };\n\n const handleKeyDownEvent = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n close();\n }\n };\n\n window.addEventListener('pointerdown', handlePointerDownEvent);\n window.addEventListener('keydown', handleKeyDownEvent);\n\n return () => {\n window.removeEventListener('pointerdown', handlePointerDownEvent);\n window.removeEventListener('keydown', handleKeyDownEvent);\n };\n }, [item.id, tooltip, setTooltip]);\n\n const onShowTooltipSoft = (show: boolean) => {\n if (!tooltip?.feedback) {\n setTooltip(show ? { item: item.id, feedback: false } : null);\n }\n };\n\n const onShowTooltipHard = (show: boolean) => {\n if (!show && item.id !== tooltip?.item) {\n return;\n }\n\n setTooltip(show ? { item: item.id, feedback: false } : null);\n };\n\n const onClickHandler = (event: CustomEvent<ButtonGroupProps.ItemClickDetails>) => {\n const hasPopoverFeedback = 'popoverFeedback' in item && item.popoverFeedback;\n\n if (hasPopoverFeedback) {\n setTooltip({ item: item.id, feedback: true });\n }\n\n fireCancelableEvent(onItemClick, event.detail, event);\n };\n\n const onFilesChangeHandler = (event: CustomEvent<ButtonGroupProps.FilesChangeDetails>) => {\n fireCancelableEvent(onFilesChange, event.detail, event);\n\n setTooltip(null);\n };\n\n return (\n <div\n key={item.id}\n className={styles['item-wrapper']}\n ref={containerRef}\n onPointerEnter={() => onShowTooltipSoft(true)}\n onPointerLeave={() => onShowTooltipSoft(false)}\n onFocus={event => {\n // Showing no tooltip when the focus comes from inside the container.\n // This is needed to prevent the tooltip after a menu closes with item selection or Escape.\n if (event && event.relatedTarget && nodeBelongs(containerRef.current, event.relatedTarget)) {\n return;\n }\n onShowTooltipHard(true);\n }}\n onBlur={() => onShowTooltipHard(false)}\n >\n {item.type === 'icon-button' && (\n <IconButtonItem\n ref={itemRef}\n item={item}\n onItemClick={onClickHandler}\n showTooltip={tooltip?.item === item.id}\n showFeedback={!!tooltip?.feedback}\n />\n )}\n {item.type === 'icon-toggle-button' && (\n <IconToggleButtonItem\n ref={itemRef}\n item={item}\n onItemClick={onClickHandler}\n showTooltip={tooltip?.item === item.id}\n showFeedback={!!tooltip?.feedback}\n />\n )}\n {item.type === 'icon-file-input' && (\n <FileInputItem\n ref={itemRef}\n item={item}\n onFilesChange={onFilesChangeHandler}\n showTooltip={tooltip?.item === item.id}\n />\n )}\n {item.type === 'menu-dropdown' && (\n <MenuDropdownItem\n ref={itemRef}\n item={item}\n showTooltip={tooltip?.item === item.id}\n onItemClick={onClickHandler}\n expandToViewport={dropdownExpandToViewport}\n />\n )}\n </div>\n );\n }\n);\n\nexport default ItemElement;\n"]}
@@ -1,9 +1,9 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "root": "awsui_root_vdkpj_1db0a_177",
5
- "item-wrapper": "awsui_item-wrapper_vdkpj_1db0a_213",
6
- "group": "awsui_group_vdkpj_1db0a_217",
7
- "divider": "awsui_divider_vdkpj_1db0a_221"
4
+ "root": "awsui_root_vdkpj_1laq4_181",
5
+ "item-wrapper": "awsui_item-wrapper_vdkpj_1laq4_217",
6
+ "group": "awsui_group_vdkpj_1laq4_221",
7
+ "divider": "awsui_divider_vdkpj_1laq4_225"
8
8
  };
9
9