@cloudscape-design/components-themeable 3.0.1360 → 3.0.1362

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 (258) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/alert/styles.scss +13 -12
  3. package/lib/internal/scss/badge/styles.scss +38 -49
  4. package/lib/internal/scss/button/styles.scss +51 -51
  5. package/lib/internal/scss/cards/styles.scss +4 -0
  6. package/lib/internal/scss/container/styles.scss +2 -0
  7. package/lib/internal/scss/icon/hover-motion.scss +24 -12
  8. package/lib/internal/scss/input/styles.scss +4 -0
  9. package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +175 -174
  10. package/lib/internal/scss/internal/styles/forms/mixins.scss +11 -2
  11. package/lib/internal/scss/internal/styles/style-api.scss +60 -10
  12. package/lib/internal/scss/pagination/styles.scss +3 -1
  13. package/lib/internal/scss/table/styles.scss +5 -0
  14. package/lib/internal/template/action-card/internal.d.ts.map +1 -1
  15. package/lib/internal/template/action-card/internal.js +5 -2
  16. package/lib/internal/template/action-card/internal.js.map +1 -1
  17. package/lib/internal/template/alert/styles.css.js +27 -27
  18. package/lib/internal/template/alert/styles.scoped.css +50 -50
  19. package/lib/internal/template/alert/styles.selectors.js +27 -27
  20. package/lib/internal/template/annotation-context/annotation/styles.css.js +13 -13
  21. package/lib/internal/template/annotation-context/annotation/styles.scoped.css +21 -21
  22. package/lib/internal/template/annotation-context/annotation/styles.selectors.js +13 -13
  23. package/lib/internal/template/app-layout/notifications/styles.css.js +3 -3
  24. package/lib/internal/template/app-layout/notifications/styles.scoped.css +7 -7
  25. package/lib/internal/template/app-layout/notifications/styles.selectors.js +3 -3
  26. package/lib/internal/template/app-layout/toggles/index.d.ts.map +1 -1
  27. package/lib/internal/template/app-layout/toggles/index.js +1 -1
  28. package/lib/internal/template/app-layout/toggles/index.js.map +1 -1
  29. package/lib/internal/template/app-layout/visual-refresh/styles.css.js +86 -86
  30. package/lib/internal/template/app-layout/visual-refresh/styles.scoped.css +258 -258
  31. package/lib/internal/template/app-layout/visual-refresh/styles.selectors.js +86 -86
  32. package/lib/internal/template/app-layout/visual-refresh/trigger-button.d.ts.map +1 -1
  33. package/lib/internal/template/app-layout/visual-refresh/trigger-button.js +1 -1
  34. package/lib/internal/template/app-layout/visual-refresh/trigger-button.js.map +1 -1
  35. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.css.js +32 -32
  36. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.scoped.css +89 -89
  37. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.selectors.js +32 -32
  38. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.css.js +6 -6
  39. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.scoped.css +13 -13
  40. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.selectors.js +6 -6
  41. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.css.js +30 -30
  42. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.scoped.css +68 -68
  43. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.selectors.js +30 -30
  44. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.d.ts.map +1 -1
  45. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js +1 -1
  46. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js.map +1 -1
  47. package/lib/internal/template/attribute-editor/styles.css.js +15 -15
  48. package/lib/internal/template/attribute-editor/styles.scoped.css +28 -28
  49. package/lib/internal/template/attribute-editor/styles.selectors.js +15 -15
  50. package/lib/internal/template/breadcrumb-group/all-items-dropdown.js +2 -2
  51. package/lib/internal/template/breadcrumb-group/all-items-dropdown.js.map +1 -1
  52. package/lib/internal/template/breadcrumb-group/item/styles.css.js +7 -7
  53. package/lib/internal/template/breadcrumb-group/item/styles.scoped.css +28 -28
  54. package/lib/internal/template/breadcrumb-group/item/styles.selectors.js +7 -7
  55. package/lib/internal/template/button/internal.d.ts.map +1 -1
  56. package/lib/internal/template/button/internal.js +2 -0
  57. package/lib/internal/template/button/internal.js.map +1 -1
  58. package/lib/internal/template/button/styles.css.js +23 -23
  59. package/lib/internal/template/button/styles.scoped.css +261 -261
  60. package/lib/internal/template/button/styles.selectors.js +23 -23
  61. package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.d.ts.map +1 -1
  62. package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.js +2 -2
  63. package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.js.map +1 -1
  64. package/lib/internal/template/button-dropdown/filter.d.ts +1 -1
  65. package/lib/internal/template/button-dropdown/filter.d.ts.map +1 -1
  66. package/lib/internal/template/button-dropdown/internal.d.ts.map +1 -1
  67. package/lib/internal/template/button-dropdown/internal.js +9 -3
  68. package/lib/internal/template/button-dropdown/internal.js.map +1 -1
  69. package/lib/internal/template/button-dropdown/item-element/index.d.ts.map +1 -1
  70. package/lib/internal/template/button-dropdown/item-element/index.js +2 -2
  71. package/lib/internal/template/button-dropdown/item-element/index.js.map +1 -1
  72. package/lib/internal/template/button-dropdown/item-element/styles.css.js +21 -21
  73. package/lib/internal/template/button-dropdown/item-element/styles.scoped.css +37 -37
  74. package/lib/internal/template/button-dropdown/item-element/styles.selectors.js +21 -21
  75. package/lib/internal/template/button-dropdown/utils/use-button-dropdown.d.ts +5 -3
  76. package/lib/internal/template/button-dropdown/utils/use-button-dropdown.d.ts.map +1 -1
  77. package/lib/internal/template/button-dropdown/utils/use-button-dropdown.js +14 -2
  78. package/lib/internal/template/button-dropdown/utils/use-button-dropdown.js.map +1 -1
  79. package/lib/internal/template/cards/styles.css.js +39 -38
  80. package/lib/internal/template/cards/styles.scoped.css +42 -39
  81. package/lib/internal/template/cards/styles.selectors.js +39 -38
  82. package/lib/internal/template/checkbox/styles.css.js +3 -3
  83. package/lib/internal/template/checkbox/styles.scoped.css +11 -11
  84. package/lib/internal/template/checkbox/styles.selectors.js +3 -3
  85. package/lib/internal/template/code-editor/tab-button.d.ts.map +1 -1
  86. package/lib/internal/template/code-editor/tab-button.js +1 -1
  87. package/lib/internal/template/code-editor/tab-button.js.map +1 -1
  88. package/lib/internal/template/container/styles.css.js +33 -33
  89. package/lib/internal/template/container/styles.scoped.css +57 -56
  90. package/lib/internal/template/container/styles.selectors.js +33 -33
  91. package/lib/internal/template/content-layout/styles.css.js +14 -14
  92. package/lib/internal/template/content-layout/styles.scoped.css +27 -27
  93. package/lib/internal/template/content-layout/styles.selectors.js +14 -14
  94. package/lib/internal/template/dropdown/styles.css.js +20 -20
  95. package/lib/internal/template/dropdown/styles.scoped.css +49 -49
  96. package/lib/internal/template/dropdown/styles.selectors.js +20 -20
  97. package/lib/internal/template/expandable-section/expandable-section-header.d.ts.map +1 -1
  98. package/lib/internal/template/expandable-section/expandable-section-header.js +13 -7
  99. package/lib/internal/template/expandable-section/expandable-section-header.js.map +1 -1
  100. package/lib/internal/template/file-token-group/styles.css.js +23 -23
  101. package/lib/internal/template/file-token-group/styles.scoped.css +36 -36
  102. package/lib/internal/template/file-token-group/styles.selectors.js +23 -23
  103. package/lib/internal/template/flashbar/collapsible-flashbar.d.ts.map +1 -1
  104. package/lib/internal/template/flashbar/collapsible-flashbar.js +3 -3
  105. package/lib/internal/template/flashbar/collapsible-flashbar.js.map +1 -1
  106. package/lib/internal/template/flashbar/styles.css.js +50 -50
  107. package/lib/internal/template/flashbar/styles.scoped.css +192 -192
  108. package/lib/internal/template/flashbar/styles.selectors.js +50 -50
  109. package/lib/internal/template/help-panel/styles.css.js +6 -6
  110. package/lib/internal/template/help-panel/styles.scoped.css +72 -72
  111. package/lib/internal/template/help-panel/styles.selectors.js +6 -6
  112. package/lib/internal/template/input/index.d.ts.map +1 -1
  113. package/lib/internal/template/input/index.js +3 -2
  114. package/lib/internal/template/input/index.js.map +1 -1
  115. package/lib/internal/template/input/interfaces.d.ts +6 -0
  116. package/lib/internal/template/input/interfaces.d.ts.map +1 -1
  117. package/lib/internal/template/input/interfaces.js.map +1 -1
  118. package/lib/internal/template/input/internal.d.ts +0 -1
  119. package/lib/internal/template/input/internal.d.ts.map +1 -1
  120. package/lib/internal/template/input/internal.js +26 -12
  121. package/lib/internal/template/input/internal.js.map +1 -1
  122. package/lib/internal/template/input/styles.css.js +29 -28
  123. package/lib/internal/template/input/styles.scoped.css +134 -131
  124. package/lib/internal/template/input/styles.selectors.js +29 -28
  125. package/lib/internal/template/internal/base-component/styles.scoped.css +1 -1
  126. package/lib/internal/template/internal/components/button-trigger/index.d.ts.map +1 -1
  127. package/lib/internal/template/internal/components/button-trigger/index.js +2 -2
  128. package/lib/internal/template/internal/components/button-trigger/index.js.map +1 -1
  129. package/lib/internal/template/internal/components/drag-handle/button.d.ts.map +1 -1
  130. package/lib/internal/template/internal/components/drag-handle/button.js +3 -1
  131. package/lib/internal/template/internal/components/drag-handle/button.js.map +1 -1
  132. package/lib/internal/template/internal/components/drag-handle-wrapper/index.d.ts.map +1 -1
  133. package/lib/internal/template/internal/components/drag-handle-wrapper/index.js +2 -1
  134. package/lib/internal/template/internal/components/drag-handle-wrapper/index.js.map +1 -1
  135. package/lib/internal/template/internal/components/drag-handle-wrapper/styles.css.js +30 -30
  136. package/lib/internal/template/internal/components/drag-handle-wrapper/styles.scoped.css +58 -58
  137. package/lib/internal/template/internal/components/drag-handle-wrapper/styles.selectors.js +30 -30
  138. package/lib/internal/template/internal/components/expand-toggle-button/index.d.ts.map +1 -1
  139. package/lib/internal/template/internal/components/expand-toggle-button/index.js +1 -1
  140. package/lib/internal/template/internal/components/expand-toggle-button/index.js.map +1 -1
  141. package/lib/internal/template/internal/components/menu-dropdown/index.d.ts.map +1 -1
  142. package/lib/internal/template/internal/components/menu-dropdown/index.js +1 -1
  143. package/lib/internal/template/internal/components/menu-dropdown/index.js.map +1 -1
  144. package/lib/internal/template/internal/components/option/styles.css.js +17 -17
  145. package/lib/internal/template/internal/components/option/styles.scoped.css +31 -31
  146. package/lib/internal/template/internal/components/option/styles.selectors.js +17 -17
  147. package/lib/internal/template/internal/components/radio-button/styles.css.js +7 -7
  148. package/lib/internal/template/internal/components/radio-button/styles.scoped.css +18 -18
  149. package/lib/internal/template/internal/components/radio-button/styles.selectors.js +7 -7
  150. package/lib/internal/template/internal/components/selectable-item/styles.css.js +22 -22
  151. package/lib/internal/template/internal/components/selectable-item/styles.scoped.css +57 -57
  152. package/lib/internal/template/internal/components/selectable-item/styles.selectors.js +22 -22
  153. package/lib/internal/template/internal/components/token-list/styles.css.js +10 -10
  154. package/lib/internal/template/internal/components/token-list/styles.scoped.css +25 -25
  155. package/lib/internal/template/internal/components/token-list/styles.selectors.js +10 -10
  156. package/lib/internal/template/internal/components/token-list/token-limit-toggle.d.ts.map +1 -1
  157. package/lib/internal/template/internal/components/token-list/token-limit-toggle.js +2 -2
  158. package/lib/internal/template/internal/components/token-list/token-limit-toggle.js.map +1 -1
  159. package/lib/internal/template/internal/environment.js +2 -2
  160. package/lib/internal/template/internal/environment.json +2 -2
  161. package/lib/internal/template/internal/generated/custom-css-properties/index.d.ts +1 -0
  162. package/lib/internal/template/internal/generated/custom-css-properties/index.d.ts.map +1 -1
  163. package/lib/internal/template/internal/generated/custom-css-properties/index.js +174 -173
  164. package/lib/internal/template/internal/generated/custom-css-properties/index.js.map +1 -1
  165. package/lib/internal/template/internal/generated/styles/tokens.js +200 -200
  166. package/lib/internal/template/internal/generated/theming/index.cjs +200 -200
  167. package/lib/internal/template/internal/generated/theming/index.js +200 -200
  168. package/lib/internal/template/internal/utils/focus-visible.d.ts +15 -0
  169. package/lib/internal/template/internal/utils/focus-visible.d.ts.map +1 -0
  170. package/lib/internal/template/internal/utils/focus-visible.js +21 -0
  171. package/lib/internal/template/internal/utils/focus-visible.js.map +1 -0
  172. package/lib/internal/template/item-card/styles.css.js +14 -14
  173. package/lib/internal/template/item-card/styles.scoped.css +63 -63
  174. package/lib/internal/template/item-card/styles.selectors.js +14 -14
  175. package/lib/internal/template/link/internal.d.ts.map +1 -1
  176. package/lib/internal/template/link/internal.js +2 -0
  177. package/lib/internal/template/link/internal.js.map +1 -1
  178. package/lib/internal/template/link/styles.css.js +21 -21
  179. package/lib/internal/template/link/styles.scoped.css +104 -104
  180. package/lib/internal/template/link/styles.selectors.js +21 -21
  181. package/lib/internal/template/modal/styles.css.js +31 -31
  182. package/lib/internal/template/modal/styles.scoped.css +48 -48
  183. package/lib/internal/template/modal/styles.selectors.js +31 -31
  184. package/lib/internal/template/pagination/internal.d.ts.map +1 -1
  185. package/lib/internal/template/pagination/internal.js +4 -4
  186. package/lib/internal/template/pagination/internal.js.map +1 -1
  187. package/lib/internal/template/pagination/styles.css.js +12 -12
  188. package/lib/internal/template/pagination/styles.scoped.css +31 -31
  189. package/lib/internal/template/pagination/styles.selectors.js +12 -12
  190. package/lib/internal/template/progress-bar/styles.css.js +19 -19
  191. package/lib/internal/template/progress-bar/styles.scoped.css +58 -58
  192. package/lib/internal/template/progress-bar/styles.selectors.js +19 -19
  193. package/lib/internal/template/prompt-input/styles.css.js +26 -26
  194. package/lib/internal/template/prompt-input/styles.scoped.css +105 -105
  195. package/lib/internal/template/prompt-input/styles.selectors.js +26 -26
  196. package/lib/internal/template/property-filter/filtering-token/index.js +4 -4
  197. package/lib/internal/template/property-filter/filtering-token/index.js.map +1 -1
  198. package/lib/internal/template/segmented-control/segment.d.ts.map +1 -1
  199. package/lib/internal/template/segmented-control/segment.js +1 -1
  200. package/lib/internal/template/segmented-control/segment.js.map +1 -1
  201. package/lib/internal/template/segmented-control/styles.css.js +16 -16
  202. package/lib/internal/template/segmented-control/styles.scoped.css +46 -46
  203. package/lib/internal/template/segmented-control/styles.selectors.js +16 -16
  204. package/lib/internal/template/select/parts/filter.d.ts +1 -1
  205. package/lib/internal/template/select/parts/filter.d.ts.map +1 -1
  206. package/lib/internal/template/select/parts/styles.css.js +21 -21
  207. package/lib/internal/template/select/parts/styles.scoped.css +24 -24
  208. package/lib/internal/template/select/parts/styles.selectors.js +21 -21
  209. package/lib/internal/template/side-navigation/parts.js +3 -3
  210. package/lib/internal/template/side-navigation/parts.js.map +1 -1
  211. package/lib/internal/template/side-navigation/styles.css.js +64 -64
  212. package/lib/internal/template/side-navigation/styles.scoped.css +111 -111
  213. package/lib/internal/template/side-navigation/styles.selectors.js +64 -64
  214. package/lib/internal/template/slider/styles.css.js +26 -26
  215. package/lib/internal/template/slider/styles.scoped.css +165 -165
  216. package/lib/internal/template/slider/styles.selectors.js +26 -26
  217. package/lib/internal/template/spinner/styles.css.js +14 -14
  218. package/lib/internal/template/spinner/styles.scoped.css +40 -40
  219. package/lib/internal/template/spinner/styles.selectors.js +14 -14
  220. package/lib/internal/template/table/header-cell/index.d.ts.map +1 -1
  221. package/lib/internal/template/table/header-cell/index.js +2 -1
  222. package/lib/internal/template/table/header-cell/index.js.map +1 -1
  223. package/lib/internal/template/table/styles.css.js +37 -37
  224. package/lib/internal/template/table/styles.scoped.css +47 -44
  225. package/lib/internal/template/table/styles.selectors.js +37 -37
  226. package/lib/internal/template/tabs/styles.css.js +30 -30
  227. package/lib/internal/template/tabs/styles.scoped.css +76 -76
  228. package/lib/internal/template/tabs/styles.selectors.js +30 -30
  229. package/lib/internal/template/tabs/tab-header-bar.d.ts.map +1 -1
  230. package/lib/internal/template/tabs/tab-header-bar.js +1 -1
  231. package/lib/internal/template/tabs/tab-header-bar.js.map +1 -1
  232. package/lib/internal/template/tag-editor/styles.css.js +3 -3
  233. package/lib/internal/template/tag-editor/styles.scoped.css +13 -13
  234. package/lib/internal/template/tag-editor/styles.selectors.js +3 -3
  235. package/lib/internal/template/test-utils/dom/input/index.d.ts +1 -0
  236. package/lib/internal/template/test-utils/dom/input/index.js +3 -0
  237. package/lib/internal/template/test-utils/dom/input/index.js.map +1 -1
  238. package/lib/internal/template/test-utils/selectors/input/index.d.ts +1 -0
  239. package/lib/internal/template/test-utils/selectors/input/index.js +3 -0
  240. package/lib/internal/template/test-utils/selectors/input/index.js.map +1 -1
  241. package/lib/internal/template/text-content/styles.css.js +1 -1
  242. package/lib/internal/template/text-content/styles.scoped.css +66 -66
  243. package/lib/internal/template/text-content/styles.selectors.js +1 -1
  244. package/lib/internal/template/textarea/styles.css.js +9 -9
  245. package/lib/internal/template/textarea/styles.scoped.css +51 -51
  246. package/lib/internal/template/textarea/styles.selectors.js +9 -9
  247. package/lib/internal/template/toggle/styles.css.js +10 -10
  248. package/lib/internal/template/toggle/styles.scoped.css +23 -23
  249. package/lib/internal/template/toggle/styles.selectors.js +10 -10
  250. package/lib/internal/template/token/dismiss-button.js +2 -2
  251. package/lib/internal/template/token/dismiss-button.js.map +1 -1
  252. package/lib/internal/template/token/styles.css.js +14 -14
  253. package/lib/internal/template/token/styles.scoped.css +46 -46
  254. package/lib/internal/template/token/styles.selectors.js +14 -14
  255. package/lib/internal/template/top-navigation/parts/overflow-menu/menu-item.d.ts.map +1 -1
  256. package/lib/internal/template/top-navigation/parts/overflow-menu/menu-item.js +5 -5
  257. package/lib/internal/template/top-navigation/parts/overflow-menu/menu-item.js.map +1 -1
  258. package/package.json +1 -1
@@ -6,7 +6,7 @@
6
6
  /* stylelint-enable @cloudscape-design/no-motion-outside-of-mixin, selector-combinator-disallowed-list, selector-pseudo-class-no-unknown, selector-class-pattern */
7
7
  /* Style used for links in slots/components that are text heavy, to help links stand out among
8
8
  surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F73#description */
9
- .awsui_item-element_93a1u_nfu0d_9:not(#\9) {
9
+ .awsui_item-element_93a1u_1rolk_9:not(#\9) {
10
10
  position: relative;
11
11
  z-index: 1;
12
12
  border-block: var(--border-item-width-pyfg4s, 1px) solid transparent;
@@ -18,22 +18,22 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
18
18
  margin-block-start: calc(-1 * var(--border-width-dropdown-4gpjx5, 1px));
19
19
  cursor: pointer;
20
20
  }
21
- .awsui_item-element_93a1u_nfu0d_9.awsui_no-content-styling_93a1u_nfu0d_21:not(#\9) {
21
+ .awsui_item-element_93a1u_1rolk_9.awsui_no-content-styling_93a1u_1rolk_21:not(#\9) {
22
22
  padding-block: 0;
23
23
  padding-inline: 0;
24
24
  color: var(--color-text-dropdown-item-default-u2mfqy, #16191f);
25
25
  }
26
- .awsui_item-element_93a1u_nfu0d_9.awsui_disabled_93a1u_nfu0d_26:not(#\9) {
26
+ .awsui_item-element_93a1u_1rolk_9.awsui_disabled_93a1u_1rolk_26:not(#\9) {
27
27
  cursor: default;
28
28
  color: var(--color-text-dropdown-item-disabled-2udtn0, #aab7b8);
29
29
  }
30
- .awsui_item-element_93a1u_nfu0d_9:not(#\9):first-child {
30
+ .awsui_item-element_93a1u_1rolk_9:not(#\9):first-child {
31
31
  margin-block-start: 0;
32
32
  }
33
- .awsui_item-element_93a1u_nfu0d_9.awsui_show-divider_93a1u_nfu0d_33:not(#\9) {
33
+ .awsui_item-element_93a1u_1rolk_9.awsui_show-divider_93a1u_1rolk_33:not(#\9) {
34
34
  border-block-end: var(--border-item-width-pyfg4s, 1px) solid var(--color-border-dropdown-group-y5droz, #eaeded);
35
35
  }
36
- .awsui_item-element_93a1u_nfu0d_9.awsui_highlighted_93a1u_nfu0d_36:not(#\9) {
36
+ .awsui_item-element_93a1u_1rolk_9.awsui_highlighted_93a1u_1rolk_36:not(#\9) {
37
37
  color: var(--color-text-dropdown-item-highlighted-dikwgu, #16191f);
38
38
  z-index: 2;
39
39
  background-color: var(--color-background-dropdown-item-hover-pvfsrg, #f2f3f3);
@@ -43,19 +43,19 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
43
43
  border-end-start-radius: var(--border-radius-item-mitz8h, 0px);
44
44
  border-end-end-radius: var(--border-radius-item-mitz8h, 0px);
45
45
  }
46
- .awsui_item-element_93a1u_nfu0d_9.awsui_highlighted_93a1u_nfu0d_36.awsui_disabled_93a1u_nfu0d_26:not(#\9) {
46
+ .awsui_item-element_93a1u_1rolk_9.awsui_highlighted_93a1u_1rolk_36.awsui_disabled_93a1u_1rolk_26:not(#\9) {
47
47
  color: var(--color-text-dropdown-item-dimmed-asp9ue, #aab7b8);
48
48
  border-color: var(--color-border-dropdown-item-dimmed-hover-54pdcr, #879596);
49
49
  background-color: var(--color-background-dropdown-item-dimmed-vz24i5, transparent);
50
50
  }
51
- .awsui_item-element_93a1u_nfu0d_9.awsui_highlighted_93a1u_nfu0d_36.awsui_is-focused_93a1u_nfu0d_51:not(#\9) {
51
+ .awsui_item-element_93a1u_1rolk_9.awsui_highlighted_93a1u_1rolk_36.awsui_is-focused_93a1u_1rolk_51:not(#\9) {
52
52
  border-color: var(--color-border-dropdown-item-focused-y1x3ts, #0073bb);
53
53
  }
54
- .awsui_item-element_93a1u_nfu0d_9.awsui_highlighted_93a1u_nfu0d_36.awsui_is-focused_93a1u_nfu0d_51:not(#\9):not(.awsui_visual-refresh_93a1u_nfu0d_54) {
54
+ .awsui_item-element_93a1u_1rolk_9.awsui_highlighted_93a1u_1rolk_36.awsui_is-focused_93a1u_1rolk_51:not(#\9):not(.awsui_visual-refresh_93a1u_1rolk_54) {
55
55
  box-shadow: inset 0 0 0 var(--border-control-focus-ring-shadow-spread-iijyo6, 1px) var(--color-border-item-focused-sewkzn, #0073bb);
56
56
  }
57
57
 
58
- .awsui_menu-item_93a1u_nfu0d_58:not(#\9) {
58
+ .awsui_menu-item_93a1u_1rolk_58:not(#\9) {
59
59
  min-inline-size: 0;
60
60
  word-break: break-word;
61
61
  display: flex;
@@ -67,17 +67,17 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
67
67
  /* stylelint-disable selector-max-type */
68
68
  /* stylelint-enable selector-max-type */
69
69
  }
70
- .awsui_menu-item_93a1u_nfu0d_58.awsui_no-content-styling_93a1u_nfu0d_21:not(#\9) {
70
+ .awsui_menu-item_93a1u_1rolk_58.awsui_no-content-styling_93a1u_1rolk_21:not(#\9) {
71
71
  padding-block: 0;
72
72
  padding-inline: 0;
73
73
  color: var(--color-text-dropdown-item-default-u2mfqy, #16191f);
74
74
  }
75
- .awsui_menu-item_93a1u_nfu0d_58.awsui_link-style_93a1u_nfu0d_75:not(#\9) {
75
+ .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9) {
76
76
  padding-block-end: calc(var(--space-option-padding-vertical-hggcse, 4px) + var(--space-xxxs-3ulqs3, 2px));
77
77
  text-underline-offset: 0.25em;
78
78
  text-decoration-thickness: var(--font-decoration-thickness-link-n3u7wl, 1px);
79
79
  text-decoration-style: var(--font-decoration-style-link-lw1s9g, solid);
80
- color: var(--awsui-style-color-default-esndbs, var(--color-text-link-default-qabnuk, #0073bb));
80
+ color: var(--awsui-style-color-default-66120l, var(--color-text-link-default-qabnuk, #0073bb));
81
81
  font-weight: inherit;
82
82
  letter-spacing: normal;
83
83
  text-decoration-line: underline;
@@ -88,30 +88,30 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
88
88
  transition-duration: var(--motion-duration-refresh-only-medium-s8g1xv, 0ms);
89
89
  }
90
90
  @media (prefers-reduced-motion: reduce) {
91
- .awsui_menu-item_93a1u_nfu0d_58.awsui_link-style_93a1u_nfu0d_75:not(#\9) {
91
+ .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9) {
92
92
  animation: none;
93
93
  transition: none;
94
94
  }
95
95
  }
96
- .awsui-motion-disabled .awsui_menu-item_93a1u_nfu0d_58.awsui_link-style_93a1u_nfu0d_75:not(#\9), .awsui-mode-entering .awsui_menu-item_93a1u_nfu0d_58.awsui_link-style_93a1u_nfu0d_75:not(#\9) {
96
+ .awsui-motion-disabled .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9), .awsui-mode-entering .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9) {
97
97
  animation: none;
98
98
  transition: none;
99
99
  }
100
- .awsui_menu-item_93a1u_nfu0d_58.awsui_link-style_93a1u_nfu0d_75:not(#\9):hover {
100
+ .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9):hover {
101
101
  cursor: pointer;
102
- color: var(--awsui-style-color-hover-esndbs, var(--color-text-link-hover-n1r6g0, #0a4a74));
102
+ color: var(--awsui-style-color-hover-66120l, var(--color-text-link-hover-n1r6g0, #0a4a74));
103
103
  }
104
- .awsui_menu-item_93a1u_nfu0d_58.awsui_link-style_93a1u_nfu0d_75:not(#\9):focus {
104
+ .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9):focus {
105
105
  outline: none;
106
106
  }
107
- .awsui_menu-item_93a1u_nfu0d_58.awsui_link-style_93a1u_nfu0d_75:not(#\9):active {
108
- color: var(--awsui-style-color-active-esndbs, var(--color-text-link-hover-n1r6g0, #0a4a74));
107
+ .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9):active {
108
+ color: var(--awsui-style-color-active-66120l, var(--color-text-link-hover-n1r6g0, #0a4a74));
109
109
  }
110
- .awsui_menu-item_93a1u_nfu0d_58.awsui_link-style_93a1u_nfu0d_75:not(#\9):active, .awsui_menu-item_93a1u_nfu0d_58.awsui_link-style_93a1u_nfu0d_75:not(#\9):focus, .awsui_menu-item_93a1u_nfu0d_58.awsui_link-style_93a1u_nfu0d_75:not(#\9):hover {
110
+ .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9):active, .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9):focus, .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9):hover {
111
111
  text-decoration-line: underline;
112
112
  text-decoration-color: var(--color-text-link-decoration-hover-opkmr8, currentColor);
113
113
  }
114
- .awsui_menu-item_93a1u_nfu0d_58.awsui_link-style_93a1u_nfu0d_75.awsui_current-breadcrumb_93a1u_nfu0d_112:not(#\9) {
114
+ .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75.awsui_current-breadcrumb_93a1u_1rolk_112:not(#\9) {
115
115
  font-weight: var(--font-weight-button-2p3grf, 700);
116
116
  -webkit-font-smoothing: var(--font-smoothing-webkit-dpz0hr, auto);
117
117
  -moz-osx-font-smoothing: var(--font-smoothing-moz-osx-kjlydy, auto);
@@ -119,63 +119,63 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
119
119
  font-weight: var(--font-weight-bold-xpar9m, 700);
120
120
  text-decoration: none;
121
121
  }
122
- .awsui_menu-item_93a1u_nfu0d_58.awsui_link-style_93a1u_nfu0d_75.awsui_link-style-highlighted_93a1u_nfu0d_120:not(#\9) {
122
+ .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75.awsui_link-style-highlighted_93a1u_1rolk_120:not(#\9) {
123
123
  color: var(--color-text-link-hover-n1r6g0, #0a4a74);
124
124
  }
125
- .awsui_menu-item_93a1u_nfu0d_58:not(#\9):focus {
125
+ .awsui_menu-item_93a1u_1rolk_58:not(#\9):focus {
126
126
  outline: none;
127
127
  }
128
- .awsui_has-category-header_93a1u_nfu0d_126 > .awsui_menu-item_93a1u_nfu0d_58:not(#\9), .awsui_has-category-header_93a1u_nfu0d_126 > .awsui_item-tooltip-wrapper_93a1u_nfu0d_126 > .awsui_menu-item_93a1u_nfu0d_58:not(#\9), .awsui_has-category-header_93a1u_nfu0d_126:not(#\9):not(.awsui_has-checkmark_93a1u_nfu0d_126) > span > .awsui_menu-item_93a1u_nfu0d_58 {
128
+ .awsui_has-category-header_93a1u_1rolk_126 > .awsui_menu-item_93a1u_1rolk_58:not(#\9), .awsui_has-category-header_93a1u_1rolk_126 > .awsui_item-tooltip-wrapper_93a1u_1rolk_126 > .awsui_menu-item_93a1u_1rolk_58:not(#\9), .awsui_has-category-header_93a1u_1rolk_126:not(#\9):not(.awsui_has-checkmark_93a1u_1rolk_126) > span > .awsui_menu-item_93a1u_1rolk_58 {
129
129
  padding-inline-start: calc(var(--space-xs-m9b7jf, 8px) + var(--space-option-padding-horizontal-5om7we, 20px));
130
130
  }
131
- .awsui_has-category-header_93a1u_nfu0d_126 > .awsui_menu-item_93a1u_nfu0d_58.awsui_no-content-styling_93a1u_nfu0d_21:not(#\9), .awsui_has-category-header_93a1u_nfu0d_126 > .awsui_item-tooltip-wrapper_93a1u_nfu0d_126 > .awsui_menu-item_93a1u_nfu0d_58.awsui_no-content-styling_93a1u_nfu0d_21:not(#\9), .awsui_has-category-header_93a1u_nfu0d_126:not(#\9):not(.awsui_has-checkmark_93a1u_nfu0d_126) > span > .awsui_menu-item_93a1u_nfu0d_58.awsui_no-content-styling_93a1u_nfu0d_21 {
131
+ .awsui_has-category-header_93a1u_1rolk_126 > .awsui_menu-item_93a1u_1rolk_58.awsui_no-content-styling_93a1u_1rolk_21:not(#\9), .awsui_has-category-header_93a1u_1rolk_126 > .awsui_item-tooltip-wrapper_93a1u_1rolk_126 > .awsui_menu-item_93a1u_1rolk_58.awsui_no-content-styling_93a1u_1rolk_21:not(#\9), .awsui_has-category-header_93a1u_1rolk_126:not(#\9):not(.awsui_has-checkmark_93a1u_1rolk_126) > span > .awsui_menu-item_93a1u_1rolk_58.awsui_no-content-styling_93a1u_1rolk_21 {
132
132
  padding-inline-start: 0;
133
133
  }
134
134
 
135
- .awsui_icon_93a1u_nfu0d_133:not(#\9) {
135
+ .awsui_icon_93a1u_1rolk_133:not(#\9) {
136
136
  padding-inline-end: var(--space-xxs-3o1yoq, 4px);
137
137
  flex-shrink: 0;
138
138
  }
139
- .awsui_icon_93a1u_nfu0d_133.awsui_checkmark_93a1u_nfu0d_137:not(#\9) {
139
+ .awsui_icon_93a1u_1rolk_133.awsui_checkmark_93a1u_1rolk_137:not(#\9) {
140
140
  color: var(--color-item-selected-2irl78, #0073bb);
141
141
  }
142
- .awsui_icon_93a1u_nfu0d_133.awsui_disabled_93a1u_nfu0d_26:not(#\9) {
142
+ .awsui_icon_93a1u_1rolk_133.awsui_disabled_93a1u_1rolk_26:not(#\9) {
143
143
  color: var(--color-text-interactive-disabled-tuxgxq, #aab7b8);
144
144
  }
145
145
 
146
- .awsui_external-icon_93a1u_nfu0d_144:not(#\9) {
146
+ .awsui_external-icon_93a1u_1rolk_144:not(#\9) {
147
147
  margin-inline-start: var(--space-xxs-3o1yoq, 4px);
148
148
  }
149
149
 
150
- .awsui_content-wrapper_93a1u_nfu0d_148:not(#\9) {
150
+ .awsui_content-wrapper_93a1u_1rolk_148:not(#\9) {
151
151
  flex: 1;
152
152
  display: flex;
153
153
  flex-direction: column;
154
154
  }
155
155
 
156
- .awsui_main-row_93a1u_nfu0d_154:not(#\9) {
156
+ .awsui_main-row_93a1u_1rolk_154:not(#\9) {
157
157
  display: flex;
158
158
  justify-content: space-between;
159
159
  align-items: center;
160
160
  gap: var(--space-s-kll7oj, 12px);
161
161
  }
162
162
 
163
- .awsui_label-tag_93a1u_nfu0d_161:not(#\9) {
163
+ .awsui_label-tag_93a1u_1rolk_161:not(#\9) {
164
164
  color: var(--color-text-body-default-b2us04, #16191f);
165
165
  }
166
- .awsui_label-tag_93a1u_nfu0d_161.awsui_disabled_93a1u_nfu0d_26:not(#\9) {
166
+ .awsui_label-tag_93a1u_1rolk_161.awsui_disabled_93a1u_1rolk_26:not(#\9) {
167
167
  color: var(--color-text-interactive-disabled-tuxgxq, #aab7b8);
168
168
  }
169
169
 
170
- .awsui_secondary-text_93a1u_nfu0d_168:not(#\9) {
170
+ .awsui_secondary-text_93a1u_1rolk_168:not(#\9) {
171
171
  font-size: var(--font-size-body-s-89y7qg, 12px);
172
172
  line-height: var(--line-height-body-s-gako33, 16px);
173
173
  letter-spacing: var(--letter-spacing-body-s-dzcybc, normal);
174
174
  color: var(--color-text-dropdown-item-secondary-1qkuo5, #687078);
175
175
  }
176
- .awsui_secondary-text_93a1u_nfu0d_168.awsui_highlighted_93a1u_nfu0d_36:not(#\9) {
176
+ .awsui_secondary-text_93a1u_1rolk_168.awsui_highlighted_93a1u_1rolk_36:not(#\9) {
177
177
  color: var(--color-text-dropdown-item-highlighted-dikwgu, #16191f);
178
178
  }
179
- .awsui_secondary-text_93a1u_nfu0d_168.awsui_disabled_93a1u_nfu0d_26:not(#\9) {
179
+ .awsui_secondary-text_93a1u_1rolk_168.awsui_disabled_93a1u_1rolk_26:not(#\9) {
180
180
  color: var(--color-text-interactive-disabled-tuxgxq, #aab7b8);
181
181
  }
@@ -2,26 +2,26 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "item-element": "awsui_item-element_93a1u_nfu0d_9",
6
- "no-content-styling": "awsui_no-content-styling_93a1u_nfu0d_21",
7
- "disabled": "awsui_disabled_93a1u_nfu0d_26",
8
- "show-divider": "awsui_show-divider_93a1u_nfu0d_33",
9
- "highlighted": "awsui_highlighted_93a1u_nfu0d_36",
10
- "is-focused": "awsui_is-focused_93a1u_nfu0d_51",
11
- "visual-refresh": "awsui_visual-refresh_93a1u_nfu0d_54",
12
- "menu-item": "awsui_menu-item_93a1u_nfu0d_58",
13
- "link-style": "awsui_link-style_93a1u_nfu0d_75",
14
- "current-breadcrumb": "awsui_current-breadcrumb_93a1u_nfu0d_112",
15
- "link-style-highlighted": "awsui_link-style-highlighted_93a1u_nfu0d_120",
16
- "has-category-header": "awsui_has-category-header_93a1u_nfu0d_126",
17
- "item-tooltip-wrapper": "awsui_item-tooltip-wrapper_93a1u_nfu0d_126",
18
- "has-checkmark": "awsui_has-checkmark_93a1u_nfu0d_126",
19
- "icon": "awsui_icon_93a1u_nfu0d_133",
20
- "checkmark": "awsui_checkmark_93a1u_nfu0d_137",
21
- "external-icon": "awsui_external-icon_93a1u_nfu0d_144",
22
- "content-wrapper": "awsui_content-wrapper_93a1u_nfu0d_148",
23
- "main-row": "awsui_main-row_93a1u_nfu0d_154",
24
- "label-tag": "awsui_label-tag_93a1u_nfu0d_161",
25
- "secondary-text": "awsui_secondary-text_93a1u_nfu0d_168"
5
+ "item-element": "awsui_item-element_93a1u_1rolk_9",
6
+ "no-content-styling": "awsui_no-content-styling_93a1u_1rolk_21",
7
+ "disabled": "awsui_disabled_93a1u_1rolk_26",
8
+ "show-divider": "awsui_show-divider_93a1u_1rolk_33",
9
+ "highlighted": "awsui_highlighted_93a1u_1rolk_36",
10
+ "is-focused": "awsui_is-focused_93a1u_1rolk_51",
11
+ "visual-refresh": "awsui_visual-refresh_93a1u_1rolk_54",
12
+ "menu-item": "awsui_menu-item_93a1u_1rolk_58",
13
+ "link-style": "awsui_link-style_93a1u_1rolk_75",
14
+ "current-breadcrumb": "awsui_current-breadcrumb_93a1u_1rolk_112",
15
+ "link-style-highlighted": "awsui_link-style-highlighted_93a1u_1rolk_120",
16
+ "has-category-header": "awsui_has-category-header_93a1u_1rolk_126",
17
+ "item-tooltip-wrapper": "awsui_item-tooltip-wrapper_93a1u_1rolk_126",
18
+ "has-checkmark": "awsui_has-checkmark_93a1u_1rolk_126",
19
+ "icon": "awsui_icon_93a1u_1rolk_133",
20
+ "checkmark": "awsui_checkmark_93a1u_1rolk_137",
21
+ "external-icon": "awsui_external-icon_93a1u_1rolk_144",
22
+ "content-wrapper": "awsui_content-wrapper_93a1u_1rolk_148",
23
+ "main-row": "awsui_main-row_93a1u_1rolk_154",
24
+ "label-tag": "awsui_label-tag_93a1u_1rolk_161",
25
+ "secondary-text": "awsui_secondary-text_93a1u_1rolk_168"
26
26
  };
27
27
 
@@ -1,11 +1,13 @@
1
1
  import React from 'react';
2
- import { CancelableEventHandler } from '../../types/events';
2
+ import { CancelableEventHandler, NonCancelableCustomEvent } from '../../types/events';
3
3
  import { ButtonDropdownProps, ButtonDropdownSettings, GroupToggle, HighlightProps, ItemActivate } from '../interfaces';
4
+ type DropdownFocusLeaveEvent = NonCancelableCustomEvent<Pick<React.FocusEvent, 'target' | 'relatedTarget'>>;
4
5
  interface UseButtonDropdownOptions extends ButtonDropdownSettings {
5
6
  items: ButtonDropdownProps.Items;
6
7
  onItemClick?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;
7
8
  onItemFollow?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;
8
9
  onReturnFocus: () => void;
10
+ isTriggerElement: (element: Element) => boolean;
9
11
  expandToViewport?: boolean;
10
12
  hasFiltering: boolean;
11
13
  }
@@ -15,7 +17,7 @@ interface UseButtonDropdownApi extends HighlightProps {
15
17
  onKeyUp: (event: React.KeyboardEvent) => void;
16
18
  onItemActivate: ItemActivate;
17
19
  onGroupToggle: GroupToggle;
18
- onDropdownFocusLeave: () => void;
20
+ onDropdownFocusLeave: (event: DropdownFocusLeaveEvent) => void;
19
21
  onDropdownBlur: () => void;
20
22
  toggleDropdown: (options?: {
21
23
  moveHighlightOnOpen?: boolean;
@@ -27,6 +29,6 @@ interface UseButtonDropdownApi extends HighlightProps {
27
29
  filteredItems: ButtonDropdownProps.Items;
28
30
  showExpandableGroups: boolean;
29
31
  }
30
- export declare function useButtonDropdown({ items, onItemClick, onItemFollow, onReturnFocus, hasExpandableGroups, isInRestrictedView, expandToViewport, hasFiltering, }: UseButtonDropdownOptions): UseButtonDropdownApi;
32
+ export declare function useButtonDropdown({ items, onItemClick, onItemFollow, onReturnFocus, isTriggerElement, hasExpandableGroups, isInRestrictedView, expandToViewport, hasFiltering, }: UseButtonDropdownOptions): UseButtonDropdownApi;
31
33
  export {};
32
34
  //# sourceMappingURL=use-button-dropdown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-button-dropdown.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.ts"],"names":[],"mappings":"AAEA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAKpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKvH,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACjC,WAAW,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC3E,YAAY,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC5E,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,oBAAqB,SAAQ,cAAc;IACnD,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAC9C,cAAc,EAAE,YAAY,CAAC;IAC7B,aAAa,EAAE,WAAW,CAAC;IAC3B,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACtE,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACzC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,kBAA0B,EAC1B,gBAAwB,EACxB,YAAY,GACb,EAAE,wBAAwB,GAAG,oBAAoB,CA4PjD"}
1
+ {"version":3,"file":"use-button-dropdown.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.ts"],"names":[],"mappings":"AAEA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAOpE,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKvH,KAAK,uBAAuB,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC;AAE5G,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACjC,WAAW,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC3E,YAAY,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC5E,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,gBAAgB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IAChD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,oBAAqB,SAAQ,cAAc;IACnD,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAC9C,cAAc,EAAE,YAAY,CAAC;IAC7B,aAAa,EAAE,WAAW,CAAC;IAC3B,oBAAoB,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC/D,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACtE,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACzC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,kBAA0B,EAC1B,gBAAwB,EACxB,YAAY,GACb,EAAE,wBAAwB,GAAG,oBAAoB,CAuQjD"}
@@ -4,10 +4,12 @@ import { useEffect, useMemo, useRef, useState } from 'react';
4
4
  import { useOpenState } from '../../internal/components/options-list/utils/use-open-state';
5
5
  import { fireCancelableEvent, isPlainLeftClick } from '../../internal/events';
6
6
  import { KeyCode } from '../../internal/keycode';
7
+ import { isElement } from '../../internal/utils/dom';
8
+ import { isKeyboardInteraction } from '../../internal/utils/focus-visible';
7
9
  import { filterItems } from './filter-items';
8
10
  import useHighlightedMenu from './use-highlighted-menu';
9
11
  import { getItemTarget, isCheckboxItem, isItemGroup, isLinkItem } from './utils';
10
- export function useButtonDropdown({ items, onItemClick, onItemFollow, onReturnFocus, hasExpandableGroups, isInRestrictedView = false, expandToViewport = false, hasFiltering, }) {
12
+ export function useButtonDropdown({ items, onItemClick, onItemFollow, onReturnFocus, isTriggerElement, hasExpandableGroups, isInRestrictedView = false, expandToViewport = false, hasFiltering, }) {
11
13
  const [filteringValue, setFilteringValue] = useState('');
12
14
  const filteredItems = useMemo(() => (hasFiltering && filteringValue ? filterItems(items, filteringValue) : items), [hasFiltering, filteringValue, items]);
13
15
  const showExpandableGroups = hasExpandableGroups && !filteringValue;
@@ -41,8 +43,18 @@ export function useButtonDropdown({ items, onItemClick, onItemFollow, onReturnFo
41
43
  }
42
44
  openStateProps.toggleDropdown();
43
45
  };
44
- const onDropdownFocusLeave = () => {
46
+ const onDropdownFocusLeave = (event) => {
45
47
  if (hasFiltering && isOpen) {
48
+ const { relatedTarget } = event.detail;
49
+ // When focus moves from the filter input to the trigger via a mouse click, the trigger's
50
+ // own click handler already closes the dropdown.
51
+ const clickedTrigger = !!relatedTarget &&
52
+ isElement(relatedTarget) &&
53
+ isTriggerElement(relatedTarget) &&
54
+ !isKeyboardInteraction(relatedTarget);
55
+ if (clickedTrigger) {
56
+ return;
57
+ }
46
58
  if (expandToViewport) {
47
59
  // When expanded to viewport the focus can't move naturally to the next element.
48
60
  // Returning the focus to the trigger instead.
@@ -1 +1 @@
1
- {"version":3,"file":"use-button-dropdown.js","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useOpenState } from '../../internal/components/options-list/utils/use-open-state';\nimport { fireCancelableEvent, isPlainLeftClick } from '../../internal/events';\nimport { KeyCode } from '../../internal/keycode';\nimport { CancelableEventHandler } from '../../types/events';\nimport { ButtonDropdownProps, ButtonDropdownSettings, GroupToggle, HighlightProps, ItemActivate } from '../interfaces';\nimport { filterItems } from './filter-items';\nimport useHighlightedMenu from './use-highlighted-menu';\nimport { getItemTarget, isCheckboxItem, isItemGroup, isLinkItem } from './utils';\n\ninterface UseButtonDropdownOptions extends ButtonDropdownSettings {\n items: ButtonDropdownProps.Items;\n onItemClick?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;\n onItemFollow?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;\n onReturnFocus: () => void;\n expandToViewport?: boolean;\n hasFiltering: boolean;\n}\n\ninterface UseButtonDropdownApi extends HighlightProps {\n isOpen: boolean;\n onKeyDown: (event: React.KeyboardEvent) => void;\n onKeyUp: (event: React.KeyboardEvent) => void;\n onItemActivate: ItemActivate;\n onGroupToggle: GroupToggle;\n onDropdownFocusLeave: () => void;\n onDropdownBlur: () => void;\n toggleDropdown: (options?: { moveHighlightOnOpen?: boolean }) => void;\n closeDropdown: () => void;\n setIsUsingMouse: (isUsingMouse: boolean) => void;\n filteringValue: string;\n setFilteringValue: (value: string) => void;\n filteredItems: ButtonDropdownProps.Items;\n showExpandableGroups: boolean;\n}\n\nexport function useButtonDropdown({\n items,\n onItemClick,\n onItemFollow,\n onReturnFocus,\n hasExpandableGroups,\n isInRestrictedView = false,\n expandToViewport = false,\n hasFiltering,\n}: UseButtonDropdownOptions): UseButtonDropdownApi {\n const [filteringValue, setFilteringValue] = useState('');\n\n const filteredItems = useMemo(\n () => (hasFiltering && filteringValue ? filterItems(items, filteringValue) : items),\n [hasFiltering, filteringValue, items]\n );\n\n const showExpandableGroups = hasExpandableGroups && !filteringValue;\n\n const {\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n moveHighlight,\n expandGroup,\n collapseGroup,\n reset,\n setIsUsingMouse,\n } = useHighlightedMenu({\n items: filteredItems,\n hasExpandableGroups: showExpandableGroups,\n isInRestrictedView,\n });\n\n // If the filtering input changes, the options list also changes,\n // so the highlight isn't valid anymore.\n const prevFilteringValue = useRef(filteringValue);\n useEffect(() => {\n if (prevFilteringValue.current !== filteringValue) {\n prevFilteringValue.current = filteringValue;\n reset();\n }\n }, [filteringValue, reset]);\n\n const { isOpen, closeDropdown: closeDropdownState, ...openStateProps } = useOpenState({ onClose: reset });\n\n const closeDropdown = () => {\n setFilteringValue('');\n closeDropdownState();\n };\n\n const toggleDropdown = (options: { moveHighlightOnOpen?: boolean } = {}) => {\n const moveHighlightOnOpen = options.moveHighlightOnOpen ?? true;\n if (!isOpen && moveHighlightOnOpen && !hasFiltering) {\n moveHighlight(1);\n }\n if (isOpen) {\n setFilteringValue('');\n }\n openStateProps.toggleDropdown();\n };\n\n const onDropdownFocusLeave = () => {\n if (hasFiltering && isOpen) {\n if (expandToViewport) {\n // When expanded to viewport the focus can't move naturally to the next element.\n // Returning the focus to the trigger instead.\n onReturnFocus();\n }\n closeDropdown();\n }\n };\n\n // Close when focus leaves the entire widget (trigger and menu), for example when focus\n // moves to an app layout drawer or an element in a different frame. The filtering variant\n // keeps focus inside the dropdown content and closes via onDropdownFocusLeave instead.\n const onDropdownBlur = () => {\n if (isOpen && !hasFiltering) {\n closeDropdown();\n }\n };\n\n const onGroupToggle: GroupToggle = item => (!isExpanded(item) ? expandGroup(item) : collapseGroup());\n\n const onItemActivate: ItemActivate = (item, event) => {\n const isCheckbox = isCheckboxItem(item);\n const isLink = isLinkItem(item);\n const details = {\n id: item.id || 'undefined',\n href: isLink ? item.href : undefined,\n external: isLink ? item.external : undefined,\n target: isLink ? getItemTarget(item) : undefined,\n checked: isCheckbox ? !item.checked : undefined,\n };\n onReturnFocus();\n if (onItemFollow && isLink && isPlainLeftClick(event)) {\n fireCancelableEvent(onItemFollow, details, event);\n }\n if (onItemClick) {\n fireCancelableEvent(onItemClick, details, event);\n }\n closeDropdown();\n };\n\n const openAndSelectFirst = (event: React.KeyboardEvent) => {\n toggleDropdown();\n event.preventDefault();\n };\n\n const actOnParentDropdown = (event: React.KeyboardEvent) => {\n // if there is no highlighted item we act on the trigger by opening or closing dropdown\n if (!targetItem) {\n if (isOpen && !isInRestrictedView) {\n toggleDropdown();\n } else {\n openAndSelectFirst(event);\n }\n } else {\n if (isItemGroup(targetItem)) {\n onGroupToggle(targetItem, event);\n } else {\n onItemActivate(targetItem, event);\n }\n }\n };\n\n const activate = (event: React.KeyboardEvent, isEnter?: boolean) => {\n setIsUsingMouse(false);\n\n // if item is a link we rely on default behavior of an anchor, no need to prevent\n if (targetItem && isLinkItem(targetItem) && isEnter) {\n return;\n }\n\n event.preventDefault();\n actOnParentDropdown(event);\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n setIsUsingMouse(false);\n switch (event.keyCode) {\n case KeyCode.down: {\n if (!isOpen) {\n toggleDropdown();\n if (!hasFiltering) {\n moveHighlight(1, true);\n }\n } else {\n moveHighlight(1);\n }\n event.preventDefault();\n break;\n }\n case KeyCode.up: {\n if (!isOpen) {\n toggleDropdown();\n if (!hasFiltering) {\n moveHighlight(-1, true);\n }\n } else {\n moveHighlight(-1);\n }\n event.preventDefault();\n break;\n }\n case KeyCode.space: {\n // Prevent scrolling the list of items and highlighting the trigger when filtering\n // isn't active. Hitting space when filtering is active should just type a space\n // character into the input, or activate the clear button.\n if (!hasFiltering && !isOpen) {\n event.preventDefault();\n }\n break;\n }\n case KeyCode.enter: {\n // While filtering, pressing Enter without a highlighted item should not select\n // any item or close the dropdown.\n if (isOpen && hasFiltering && !targetItem) {\n break;\n }\n if (!targetItem?.disabled) {\n activate(event, true);\n }\n break;\n }\n case KeyCode.left:\n case KeyCode.right: {\n // When filtering is enabled and there's text in the filter input, left/right\n // arrow keys should move the caret between the characters.\n if (hasFiltering && filteringValue) {\n break;\n }\n if (targetItem && !targetItem.disabled && isItemGroup(targetItem) && !isExpanded(targetItem)) {\n expandGroup();\n } else if (hasExpandableGroups) {\n collapseGroup();\n }\n\n event.preventDefault();\n break;\n }\n case KeyCode.escape: {\n onReturnFocus();\n closeDropdown();\n event.preventDefault();\n if (isOpen) {\n event.stopPropagation();\n }\n break;\n }\n case KeyCode.tab: {\n // In filtering mode the dropdown contains multiple focusable elements (the filter\n // input and its clear button). Tabbing between them must not close the dropdown, so\n // closing on Tab is handled by onDropdownFocusLeave instead, which only fires once\n // focus actually leaves the dropdown.\n if (hasFiltering) {\n break;\n }\n // When expanded to viewport the focus can't move naturally to the next element.\n // Returning the focus to the trigger instead.\n if (expandToViewport) {\n onReturnFocus();\n }\n closeDropdown();\n break;\n }\n }\n };\n const onKeyUp = (event: React.KeyboardEvent) => {\n // When using a roving tabindex (filtering disabled), we need to handle activating items\n // with Space separately because there is a bug in Firefox where changing the focus during\n // a Space keydown event it will trigger unexpected click events on the new element.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n if (event.keyCode === KeyCode.space && !targetItem?.disabled && !hasFiltering) {\n activate(event);\n }\n };\n\n return {\n isOpen,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n onKeyDown,\n onKeyUp,\n onItemActivate,\n onGroupToggle,\n onDropdownFocusLeave,\n onDropdownBlur,\n toggleDropdown,\n closeDropdown,\n setIsUsingMouse,\n filteringValue,\n setFilteringValue,\n filteredItems,\n showExpandableGroups,\n };\n}\n"]}
1
+ {"version":3,"file":"use-button-dropdown.js","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useOpenState } from '../../internal/components/options-list/utils/use-open-state';\nimport { fireCancelableEvent, isPlainLeftClick } from '../../internal/events';\nimport { KeyCode } from '../../internal/keycode';\nimport { isElement } from '../../internal/utils/dom';\nimport { isKeyboardInteraction } from '../../internal/utils/focus-visible';\nimport { CancelableEventHandler, NonCancelableCustomEvent } from '../../types/events';\nimport { ButtonDropdownProps, ButtonDropdownSettings, GroupToggle, HighlightProps, ItemActivate } from '../interfaces';\nimport { filterItems } from './filter-items';\nimport useHighlightedMenu from './use-highlighted-menu';\nimport { getItemTarget, isCheckboxItem, isItemGroup, isLinkItem } from './utils';\n\ntype DropdownFocusLeaveEvent = NonCancelableCustomEvent<Pick<React.FocusEvent, 'target' | 'relatedTarget'>>;\n\ninterface UseButtonDropdownOptions extends ButtonDropdownSettings {\n items: ButtonDropdownProps.Items;\n onItemClick?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;\n onItemFollow?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;\n onReturnFocus: () => void;\n // Returns whether the given element is (or is inside) the dropdown trigger.\n isTriggerElement: (element: Element) => boolean;\n expandToViewport?: boolean;\n hasFiltering: boolean;\n}\n\ninterface UseButtonDropdownApi extends HighlightProps {\n isOpen: boolean;\n onKeyDown: (event: React.KeyboardEvent) => void;\n onKeyUp: (event: React.KeyboardEvent) => void;\n onItemActivate: ItemActivate;\n onGroupToggle: GroupToggle;\n onDropdownFocusLeave: (event: DropdownFocusLeaveEvent) => void;\n onDropdownBlur: () => void;\n toggleDropdown: (options?: { moveHighlightOnOpen?: boolean }) => void;\n closeDropdown: () => void;\n setIsUsingMouse: (isUsingMouse: boolean) => void;\n filteringValue: string;\n setFilteringValue: (value: string) => void;\n filteredItems: ButtonDropdownProps.Items;\n showExpandableGroups: boolean;\n}\n\nexport function useButtonDropdown({\n items,\n onItemClick,\n onItemFollow,\n onReturnFocus,\n isTriggerElement,\n hasExpandableGroups,\n isInRestrictedView = false,\n expandToViewport = false,\n hasFiltering,\n}: UseButtonDropdownOptions): UseButtonDropdownApi {\n const [filteringValue, setFilteringValue] = useState('');\n\n const filteredItems = useMemo(\n () => (hasFiltering && filteringValue ? filterItems(items, filteringValue) : items),\n [hasFiltering, filteringValue, items]\n );\n\n const showExpandableGroups = hasExpandableGroups && !filteringValue;\n\n const {\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n moveHighlight,\n expandGroup,\n collapseGroup,\n reset,\n setIsUsingMouse,\n } = useHighlightedMenu({\n items: filteredItems,\n hasExpandableGroups: showExpandableGroups,\n isInRestrictedView,\n });\n\n // If the filtering input changes, the options list also changes,\n // so the highlight isn't valid anymore.\n const prevFilteringValue = useRef(filteringValue);\n useEffect(() => {\n if (prevFilteringValue.current !== filteringValue) {\n prevFilteringValue.current = filteringValue;\n reset();\n }\n }, [filteringValue, reset]);\n\n const { isOpen, closeDropdown: closeDropdownState, ...openStateProps } = useOpenState({ onClose: reset });\n\n const closeDropdown = () => {\n setFilteringValue('');\n closeDropdownState();\n };\n\n const toggleDropdown = (options: { moveHighlightOnOpen?: boolean } = {}) => {\n const moveHighlightOnOpen = options.moveHighlightOnOpen ?? true;\n if (!isOpen && moveHighlightOnOpen && !hasFiltering) {\n moveHighlight(1);\n }\n if (isOpen) {\n setFilteringValue('');\n }\n openStateProps.toggleDropdown();\n };\n\n const onDropdownFocusLeave = (event: DropdownFocusLeaveEvent) => {\n if (hasFiltering && isOpen) {\n const { relatedTarget } = event.detail;\n // When focus moves from the filter input to the trigger via a mouse click, the trigger's\n // own click handler already closes the dropdown.\n const clickedTrigger =\n !!relatedTarget &&\n isElement(relatedTarget) &&\n isTriggerElement(relatedTarget) &&\n !isKeyboardInteraction(relatedTarget);\n if (clickedTrigger) {\n return;\n }\n if (expandToViewport) {\n // When expanded to viewport the focus can't move naturally to the next element.\n // Returning the focus to the trigger instead.\n onReturnFocus();\n }\n closeDropdown();\n }\n };\n\n // Close when focus leaves the entire widget (trigger and menu), for example when focus\n // moves to an app layout drawer or an element in a different frame. The filtering variant\n // keeps focus inside the dropdown content and closes via onDropdownFocusLeave instead.\n const onDropdownBlur = () => {\n if (isOpen && !hasFiltering) {\n closeDropdown();\n }\n };\n\n const onGroupToggle: GroupToggle = item => (!isExpanded(item) ? expandGroup(item) : collapseGroup());\n\n const onItemActivate: ItemActivate = (item, event) => {\n const isCheckbox = isCheckboxItem(item);\n const isLink = isLinkItem(item);\n const details = {\n id: item.id || 'undefined',\n href: isLink ? item.href : undefined,\n external: isLink ? item.external : undefined,\n target: isLink ? getItemTarget(item) : undefined,\n checked: isCheckbox ? !item.checked : undefined,\n };\n onReturnFocus();\n if (onItemFollow && isLink && isPlainLeftClick(event)) {\n fireCancelableEvent(onItemFollow, details, event);\n }\n if (onItemClick) {\n fireCancelableEvent(onItemClick, details, event);\n }\n closeDropdown();\n };\n\n const openAndSelectFirst = (event: React.KeyboardEvent) => {\n toggleDropdown();\n event.preventDefault();\n };\n\n const actOnParentDropdown = (event: React.KeyboardEvent) => {\n // if there is no highlighted item we act on the trigger by opening or closing dropdown\n if (!targetItem) {\n if (isOpen && !isInRestrictedView) {\n toggleDropdown();\n } else {\n openAndSelectFirst(event);\n }\n } else {\n if (isItemGroup(targetItem)) {\n onGroupToggle(targetItem, event);\n } else {\n onItemActivate(targetItem, event);\n }\n }\n };\n\n const activate = (event: React.KeyboardEvent, isEnter?: boolean) => {\n setIsUsingMouse(false);\n\n // if item is a link we rely on default behavior of an anchor, no need to prevent\n if (targetItem && isLinkItem(targetItem) && isEnter) {\n return;\n }\n\n event.preventDefault();\n actOnParentDropdown(event);\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n setIsUsingMouse(false);\n switch (event.keyCode) {\n case KeyCode.down: {\n if (!isOpen) {\n toggleDropdown();\n if (!hasFiltering) {\n moveHighlight(1, true);\n }\n } else {\n moveHighlight(1);\n }\n event.preventDefault();\n break;\n }\n case KeyCode.up: {\n if (!isOpen) {\n toggleDropdown();\n if (!hasFiltering) {\n moveHighlight(-1, true);\n }\n } else {\n moveHighlight(-1);\n }\n event.preventDefault();\n break;\n }\n case KeyCode.space: {\n // Prevent scrolling the list of items and highlighting the trigger when filtering\n // isn't active. Hitting space when filtering is active should just type a space\n // character into the input, or activate the clear button.\n if (!hasFiltering && !isOpen) {\n event.preventDefault();\n }\n break;\n }\n case KeyCode.enter: {\n // While filtering, pressing Enter without a highlighted item should not select\n // any item or close the dropdown.\n if (isOpen && hasFiltering && !targetItem) {\n break;\n }\n if (!targetItem?.disabled) {\n activate(event, true);\n }\n break;\n }\n case KeyCode.left:\n case KeyCode.right: {\n // When filtering is enabled and there's text in the filter input, left/right\n // arrow keys should move the caret between the characters.\n if (hasFiltering && filteringValue) {\n break;\n }\n if (targetItem && !targetItem.disabled && isItemGroup(targetItem) && !isExpanded(targetItem)) {\n expandGroup();\n } else if (hasExpandableGroups) {\n collapseGroup();\n }\n\n event.preventDefault();\n break;\n }\n case KeyCode.escape: {\n onReturnFocus();\n closeDropdown();\n event.preventDefault();\n if (isOpen) {\n event.stopPropagation();\n }\n break;\n }\n case KeyCode.tab: {\n // In filtering mode the dropdown contains multiple focusable elements (the filter\n // input and its clear button). Tabbing between them must not close the dropdown, so\n // closing on Tab is handled by onDropdownFocusLeave instead, which only fires once\n // focus actually leaves the dropdown.\n if (hasFiltering) {\n break;\n }\n // When expanded to viewport the focus can't move naturally to the next element.\n // Returning the focus to the trigger instead.\n if (expandToViewport) {\n onReturnFocus();\n }\n closeDropdown();\n break;\n }\n }\n };\n const onKeyUp = (event: React.KeyboardEvent) => {\n // When using a roving tabindex (filtering disabled), we need to handle activating items\n // with Space separately because there is a bug in Firefox where changing the focus during\n // a Space keydown event it will trigger unexpected click events on the new element.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n if (event.keyCode === KeyCode.space && !targetItem?.disabled && !hasFiltering) {\n activate(event);\n }\n };\n\n return {\n isOpen,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n onKeyDown,\n onKeyUp,\n onItemActivate,\n onGroupToggle,\n onDropdownFocusLeave,\n onDropdownBlur,\n toggleDropdown,\n closeDropdown,\n setIsUsingMouse,\n filteringValue,\n setFilteringValue,\n filteredItems,\n showExpandableGroups,\n };\n}\n"]}
@@ -1,43 +1,44 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "root": "awsui_root_p8a6i_k1rsq_9",
5
- "header-variant-full-page": "awsui_header-variant-full-page_p8a6i_k1rsq_41",
6
- "header-refresh": "awsui_header-refresh_p8a6i_k1rsq_41",
7
- "list": "awsui_list_p8a6i_k1rsq_48",
8
- "list-grid-1": "awsui_list-grid-1_p8a6i_k1rsq_59",
9
- "card": "awsui_card_p8a6i_k1rsq_59",
10
- "list-grid-2": "awsui_list-grid-2_p8a6i_k1rsq_62",
11
- "list-grid-3": "awsui_list-grid-3_p8a6i_k1rsq_65",
12
- "list-grid-4": "awsui_list-grid-4_p8a6i_k1rsq_68",
13
- "list-grid-5": "awsui_list-grid-5_p8a6i_k1rsq_71",
14
- "list-grid-6": "awsui_list-grid-6_p8a6i_k1rsq_74",
15
- "list-grid-7": "awsui_list-grid-7_p8a6i_k1rsq_77",
16
- "list-grid-8": "awsui_list-grid-8_p8a6i_k1rsq_80",
17
- "list-grid-9": "awsui_list-grid-9_p8a6i_k1rsq_83",
18
- "list-grid-10": "awsui_list-grid-10_p8a6i_k1rsq_86",
19
- "list-grid-11": "awsui_list-grid-11_p8a6i_k1rsq_89",
20
- "list-grid-12": "awsui_list-grid-12_p8a6i_k1rsq_92",
21
- "list-grid-13": "awsui_list-grid-13_p8a6i_k1rsq_95",
22
- "list-grid-14": "awsui_list-grid-14_p8a6i_k1rsq_98",
23
- "list-grid-15": "awsui_list-grid-15_p8a6i_k1rsq_101",
24
- "list-grid-16": "awsui_list-grid-16_p8a6i_k1rsq_104",
25
- "list-grid-17": "awsui_list-grid-17_p8a6i_k1rsq_107",
26
- "list-grid-18": "awsui_list-grid-18_p8a6i_k1rsq_110",
27
- "list-grid-19": "awsui_list-grid-19_p8a6i_k1rsq_113",
28
- "list-grid-20": "awsui_list-grid-20_p8a6i_k1rsq_116",
29
- "selection-control": "awsui_selection-control_p8a6i_k1rsq_120",
30
- "loading": "awsui_loading_p8a6i_k1rsq_130",
31
- "empty": "awsui_empty_p8a6i_k1rsq_131",
32
- "has-header": "awsui_has-header_p8a6i_k1rsq_138",
33
- "refresh": "awsui_refresh_p8a6i_k1rsq_141",
34
- "card-header": "awsui_card-header_p8a6i_k1rsq_157",
35
- "card-header-inner": "awsui_card-header-inner_p8a6i_k1rsq_166",
36
- "card-header-inner-selectable": "awsui_card-header-inner-selectable_p8a6i_k1rsq_169",
37
- "card-selected": "awsui_card-selected_p8a6i_k1rsq_172",
38
- "section": "awsui_section_p8a6i_k1rsq_176",
39
- "section-header": "awsui_section-header_p8a6i_k1rsq_183",
40
- "section-content": "awsui_section-content_p8a6i_k1rsq_189",
41
- "footer-pagination": "awsui_footer-pagination_p8a6i_k1rsq_201"
4
+ "root": "awsui_root_p8a6i_1ktd8_9",
5
+ "header": "awsui_header_p8a6i_1ktd8_41",
6
+ "header-variant-full-page": "awsui_header-variant-full-page_p8a6i_1ktd8_41",
7
+ "header-refresh": "awsui_header-refresh_p8a6i_1ktd8_44",
8
+ "list": "awsui_list_p8a6i_1ktd8_51",
9
+ "list-grid-1": "awsui_list-grid-1_p8a6i_1ktd8_62",
10
+ "card": "awsui_card_p8a6i_1ktd8_62",
11
+ "list-grid-2": "awsui_list-grid-2_p8a6i_1ktd8_65",
12
+ "list-grid-3": "awsui_list-grid-3_p8a6i_1ktd8_68",
13
+ "list-grid-4": "awsui_list-grid-4_p8a6i_1ktd8_71",
14
+ "list-grid-5": "awsui_list-grid-5_p8a6i_1ktd8_74",
15
+ "list-grid-6": "awsui_list-grid-6_p8a6i_1ktd8_77",
16
+ "list-grid-7": "awsui_list-grid-7_p8a6i_1ktd8_80",
17
+ "list-grid-8": "awsui_list-grid-8_p8a6i_1ktd8_83",
18
+ "list-grid-9": "awsui_list-grid-9_p8a6i_1ktd8_86",
19
+ "list-grid-10": "awsui_list-grid-10_p8a6i_1ktd8_89",
20
+ "list-grid-11": "awsui_list-grid-11_p8a6i_1ktd8_92",
21
+ "list-grid-12": "awsui_list-grid-12_p8a6i_1ktd8_95",
22
+ "list-grid-13": "awsui_list-grid-13_p8a6i_1ktd8_98",
23
+ "list-grid-14": "awsui_list-grid-14_p8a6i_1ktd8_101",
24
+ "list-grid-15": "awsui_list-grid-15_p8a6i_1ktd8_104",
25
+ "list-grid-16": "awsui_list-grid-16_p8a6i_1ktd8_107",
26
+ "list-grid-17": "awsui_list-grid-17_p8a6i_1ktd8_110",
27
+ "list-grid-18": "awsui_list-grid-18_p8a6i_1ktd8_113",
28
+ "list-grid-19": "awsui_list-grid-19_p8a6i_1ktd8_116",
29
+ "list-grid-20": "awsui_list-grid-20_p8a6i_1ktd8_119",
30
+ "selection-control": "awsui_selection-control_p8a6i_1ktd8_123",
31
+ "loading": "awsui_loading_p8a6i_1ktd8_133",
32
+ "empty": "awsui_empty_p8a6i_1ktd8_134",
33
+ "has-header": "awsui_has-header_p8a6i_1ktd8_141",
34
+ "refresh": "awsui_refresh_p8a6i_1ktd8_144",
35
+ "card-header": "awsui_card-header_p8a6i_1ktd8_160",
36
+ "card-header-inner": "awsui_card-header-inner_p8a6i_1ktd8_169",
37
+ "card-header-inner-selectable": "awsui_card-header-inner-selectable_p8a6i_1ktd8_172",
38
+ "card-selected": "awsui_card-selected_p8a6i_1ktd8_175",
39
+ "section": "awsui_section_p8a6i_1ktd8_179",
40
+ "section-header": "awsui_section-header_p8a6i_1ktd8_186",
41
+ "section-content": "awsui_section-content_p8a6i_1ktd8_192",
42
+ "footer-pagination": "awsui_footer-pagination_p8a6i_1ktd8_204"
42
43
  };
43
44