@cloudscape-design/components-themeable 3.0.1340 → 3.0.1342

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 (212) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/expandable-section/styles.scss +142 -0
  3. package/lib/internal/scss/input/styles.scss +228 -37
  4. package/lib/internal/scss/internal/components/chart-legend/styles.scss +1 -0
  5. package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
  6. package/lib/internal/scss/multiselect/styles.scss +14 -0
  7. package/lib/internal/scss/pagination/styles.scss +9 -2
  8. package/lib/internal/scss/pagination/test-classes/styles.scss +8 -0
  9. package/lib/internal/scss/select/styles.scss +14 -1
  10. package/lib/internal/scss/side-navigation/styles.scss +62 -24
  11. package/lib/internal/scss/textarea/styles.scss +21 -2
  12. package/lib/internal/template/button-dropdown/filter.d.ts +1 -1
  13. package/lib/internal/template/button-dropdown/filter.d.ts.map +1 -1
  14. package/lib/internal/template/button-dropdown/internal.d.ts.map +1 -1
  15. package/lib/internal/template/button-dropdown/internal.js +2 -2
  16. package/lib/internal/template/button-dropdown/internal.js.map +1 -1
  17. package/lib/internal/template/button-dropdown/utils/use-button-dropdown.d.ts +1 -0
  18. package/lib/internal/template/button-dropdown/utils/use-button-dropdown.d.ts.map +1 -1
  19. package/lib/internal/template/button-dropdown/utils/use-button-dropdown.js +9 -0
  20. package/lib/internal/template/button-dropdown/utils/use-button-dropdown.js.map +1 -1
  21. package/lib/internal/template/expandable-section/expandable-section-header.d.ts +2 -1
  22. package/lib/internal/template/expandable-section/expandable-section-header.d.ts.map +1 -1
  23. package/lib/internal/template/expandable-section/expandable-section-header.js +57 -13
  24. package/lib/internal/template/expandable-section/expandable-section-header.js.map +1 -1
  25. package/lib/internal/template/expandable-section/interfaces.d.ts +1 -1
  26. package/lib/internal/template/expandable-section/interfaces.js.map +1 -1
  27. package/lib/internal/template/expandable-section/internal.d.ts +14 -1
  28. package/lib/internal/template/expandable-section/internal.d.ts.map +1 -1
  29. package/lib/internal/template/expandable-section/internal.js +3 -3
  30. package/lib/internal/template/expandable-section/internal.js.map +1 -1
  31. package/lib/internal/template/expandable-section/styles.css.js +42 -35
  32. package/lib/internal/template/expandable-section/styles.scoped.css +177 -69
  33. package/lib/internal/template/expandable-section/styles.selectors.js +42 -35
  34. package/lib/internal/template/i18n/context.d.ts +16 -4
  35. package/lib/internal/template/i18n/context.d.ts.map +1 -1
  36. package/lib/internal/template/i18n/context.js +10 -4
  37. package/lib/internal/template/i18n/context.js.map +1 -1
  38. package/lib/internal/template/i18n/index.d.ts +2 -0
  39. package/lib/internal/template/i18n/index.d.ts.map +1 -1
  40. package/lib/internal/template/i18n/index.js +1 -0
  41. package/lib/internal/template/i18n/index.js.map +1 -1
  42. package/lib/internal/template/i18n/messages/all.all.js +1 -1
  43. package/lib/internal/template/i18n/messages/all.all.json +1 -1
  44. package/lib/internal/template/i18n/messages/all.ar.js +1 -1
  45. package/lib/internal/template/i18n/messages/all.ar.json +1 -1
  46. package/lib/internal/template/i18n/messages/all.de.js +1 -1
  47. package/lib/internal/template/i18n/messages/all.de.json +1 -1
  48. package/lib/internal/template/i18n/messages/all.en-GB.js +1 -1
  49. package/lib/internal/template/i18n/messages/all.en-GB.json +1 -1
  50. package/lib/internal/template/i18n/messages/all.en.js +1 -1
  51. package/lib/internal/template/i18n/messages/all.en.json +1 -1
  52. package/lib/internal/template/i18n/messages/all.es.js +1 -1
  53. package/lib/internal/template/i18n/messages/all.es.json +1 -1
  54. package/lib/internal/template/i18n/messages/all.fr.js +1 -1
  55. package/lib/internal/template/i18n/messages/all.fr.json +1 -1
  56. package/lib/internal/template/i18n/messages/all.id.js +1 -1
  57. package/lib/internal/template/i18n/messages/all.id.json +1 -1
  58. package/lib/internal/template/i18n/messages/all.it.js +1 -1
  59. package/lib/internal/template/i18n/messages/all.it.json +1 -1
  60. package/lib/internal/template/i18n/messages/all.ja.js +1 -1
  61. package/lib/internal/template/i18n/messages/all.ja.json +1 -1
  62. package/lib/internal/template/i18n/messages/all.ko.js +1 -1
  63. package/lib/internal/template/i18n/messages/all.ko.json +1 -1
  64. package/lib/internal/template/i18n/messages/all.pt-BR.js +1 -1
  65. package/lib/internal/template/i18n/messages/all.pt-BR.json +1 -1
  66. package/lib/internal/template/i18n/messages/all.tr.js +1 -1
  67. package/lib/internal/template/i18n/messages/all.tr.json +1 -1
  68. package/lib/internal/template/i18n/messages/all.zh-CN.js +1 -1
  69. package/lib/internal/template/i18n/messages/all.zh-CN.json +1 -1
  70. package/lib/internal/template/i18n/messages/all.zh-TW.js +1 -1
  71. package/lib/internal/template/i18n/messages/all.zh-TW.json +1 -1
  72. package/lib/internal/template/i18n/messages-types.d.ts +5 -0
  73. package/lib/internal/template/i18n/messages-types.d.ts.map +1 -1
  74. package/lib/internal/template/i18n/messages-types.js.map +1 -1
  75. package/lib/internal/template/input/index.d.ts.map +1 -1
  76. package/lib/internal/template/input/index.js +4 -2
  77. package/lib/internal/template/input/index.js.map +1 -1
  78. package/lib/internal/template/input/interfaces.d.ts +9 -0
  79. package/lib/internal/template/input/interfaces.d.ts.map +1 -1
  80. package/lib/internal/template/input/interfaces.js.map +1 -1
  81. package/lib/internal/template/input/internal.d.ts +5 -5
  82. package/lib/internal/template/input/internal.d.ts.map +1 -1
  83. package/lib/internal/template/input/internal.js +60 -24
  84. package/lib/internal/template/input/internal.js.map +1 -1
  85. package/lib/internal/template/input/styles.css.js +28 -18
  86. package/lib/internal/template/input/styles.scoped.css +213 -52
  87. package/lib/internal/template/input/styles.selectors.js +28 -18
  88. package/lib/internal/template/input/utils.js +3 -3
  89. package/lib/internal/template/input/utils.js.map +1 -1
  90. package/lib/internal/template/internal/base-component/styles.scoped.css +297 -289
  91. package/lib/internal/template/internal/components/cartesian-chart/styles.css.js +28 -28
  92. package/lib/internal/template/internal/components/cartesian-chart/styles.scoped.css +35 -35
  93. package/lib/internal/template/internal/components/cartesian-chart/styles.selectors.js +28 -28
  94. package/lib/internal/template/internal/components/chart-legend/styles.css.js +6 -6
  95. package/lib/internal/template/internal/components/chart-legend/styles.scoped.css +16 -14
  96. package/lib/internal/template/internal/components/chart-legend/styles.selectors.js +6 -6
  97. package/lib/internal/template/internal/environment.js +2 -2
  98. package/lib/internal/template/internal/environment.json +2 -2
  99. package/lib/internal/template/internal/generated/styles/tokens.d.ts +1 -0
  100. package/lib/internal/template/internal/generated/styles/tokens.js +1 -0
  101. package/lib/internal/template/internal/generated/theming/index.cjs +31 -0
  102. package/lib/internal/template/internal/generated/theming/index.js +31 -0
  103. package/lib/internal/template/multiselect/embedded.d.ts +1 -1
  104. package/lib/internal/template/multiselect/index.d.ts.map +1 -1
  105. package/lib/internal/template/multiselect/index.js +4 -0
  106. package/lib/internal/template/multiselect/index.js.map +1 -1
  107. package/lib/internal/template/multiselect/interfaces.d.ts +8 -1
  108. package/lib/internal/template/multiselect/interfaces.d.ts.map +1 -1
  109. package/lib/internal/template/multiselect/interfaces.js.map +1 -1
  110. package/lib/internal/template/multiselect/internal.d.ts.map +1 -1
  111. package/lib/internal/template/multiselect/internal.js +22 -2
  112. package/lib/internal/template/multiselect/internal.js.map +1 -1
  113. package/lib/internal/template/multiselect/styles.css.js +5 -3
  114. package/lib/internal/template/multiselect/styles.scoped.css +13 -3
  115. package/lib/internal/template/multiselect/styles.selectors.js +5 -3
  116. package/lib/internal/template/multiselect/use-multiselect.d.ts +3 -2
  117. package/lib/internal/template/multiselect/use-multiselect.d.ts.map +1 -1
  118. package/lib/internal/template/multiselect/use-multiselect.js +5 -3
  119. package/lib/internal/template/multiselect/use-multiselect.js.map +1 -1
  120. package/lib/internal/template/pagination/index.d.ts.map +1 -1
  121. package/lib/internal/template/pagination/index.js +3 -3
  122. package/lib/internal/template/pagination/index.js.map +1 -1
  123. package/lib/internal/template/pagination/interfaces.d.ts +19 -3
  124. package/lib/internal/template/pagination/interfaces.d.ts.map +1 -1
  125. package/lib/internal/template/pagination/interfaces.js.map +1 -1
  126. package/lib/internal/template/pagination/internal.d.ts.map +1 -1
  127. package/lib/internal/template/pagination/internal.js +18 -6
  128. package/lib/internal/template/pagination/internal.js.map +1 -1
  129. package/lib/internal/template/pagination/styles.css.js +12 -11
  130. package/lib/internal/template/pagination/styles.scoped.css +34 -25
  131. package/lib/internal/template/pagination/styles.selectors.js +12 -11
  132. package/lib/internal/template/pagination/test-classes/styles.css.js +6 -0
  133. package/lib/internal/template/pagination/test-classes/styles.scoped.css +7 -0
  134. package/lib/internal/template/pagination/test-classes/styles.selectors.js +7 -0
  135. package/lib/internal/template/prompt-input/internal.d.ts.map +1 -1
  136. package/lib/internal/template/prompt-input/internal.js +14 -2
  137. package/lib/internal/template/prompt-input/internal.js.map +1 -1
  138. package/lib/internal/template/select/index.d.ts.map +1 -1
  139. package/lib/internal/template/select/index.js +4 -0
  140. package/lib/internal/template/select/index.js.map +1 -1
  141. package/lib/internal/template/select/interfaces.d.ts +39 -0
  142. package/lib/internal/template/select/interfaces.d.ts.map +1 -1
  143. package/lib/internal/template/select/interfaces.js.map +1 -1
  144. package/lib/internal/template/select/internal.d.ts.map +1 -1
  145. package/lib/internal/template/select/internal.js +20 -4
  146. package/lib/internal/template/select/internal.js.map +1 -1
  147. package/lib/internal/template/select/parts/filter.d.ts +1 -1
  148. package/lib/internal/template/select/parts/filter.d.ts.map +1 -1
  149. package/lib/internal/template/select/styles.css.js +3 -1
  150. package/lib/internal/template/select/styles.scoped.css +11 -1
  151. package/lib/internal/template/select/styles.selectors.js +3 -1
  152. package/lib/internal/template/select/utils/dropdown-customization.d.ts +20 -0
  153. package/lib/internal/template/select/utils/dropdown-customization.d.ts.map +1 -0
  154. package/lib/internal/template/select/utils/dropdown-customization.js +22 -0
  155. package/lib/internal/template/select/utils/dropdown-customization.js.map +1 -0
  156. package/lib/internal/template/select/utils/use-select.d.ts +4 -1
  157. package/lib/internal/template/select/utils/use-select.d.ts.map +1 -1
  158. package/lib/internal/template/select/utils/use-select.js +21 -4
  159. package/lib/internal/template/select/utils/use-select.js.map +1 -1
  160. package/lib/internal/template/side-navigation/parts.d.ts.map +1 -1
  161. package/lib/internal/template/side-navigation/parts.js +3 -2
  162. package/lib/internal/template/side-navigation/parts.js.map +1 -1
  163. package/lib/internal/template/side-navigation/styles.css.js +50 -48
  164. package/lib/internal/template/side-navigation/styles.scoped.css +106 -93
  165. package/lib/internal/template/side-navigation/styles.selectors.js +50 -48
  166. package/lib/internal/template/status-indicator/interfaces.d.ts +1 -1
  167. package/lib/internal/template/status-indicator/interfaces.d.ts.map +1 -1
  168. package/lib/internal/template/status-indicator/interfaces.js.map +1 -1
  169. package/lib/internal/template/status-indicator/internal.d.ts +2 -6
  170. package/lib/internal/template/status-indicator/internal.d.ts.map +1 -1
  171. package/lib/internal/template/status-indicator/internal.js.map +1 -1
  172. package/lib/internal/template/steps/interfaces.d.ts +2 -2
  173. package/lib/internal/template/steps/interfaces.d.ts.map +1 -1
  174. package/lib/internal/template/steps/interfaces.js.map +1 -1
  175. package/lib/internal/template/test-utils/dom/input/index.d.ts +2 -0
  176. package/lib/internal/template/test-utils/dom/input/index.js +6 -0
  177. package/lib/internal/template/test-utils/dom/input/index.js.map +1 -1
  178. package/lib/internal/template/test-utils/dom/multiselect/index.d.ts +16 -0
  179. package/lib/internal/template/test-utils/dom/multiselect/index.js +16 -0
  180. package/lib/internal/template/test-utils/dom/multiselect/index.js.map +1 -1
  181. package/lib/internal/template/test-utils/dom/pagination/index.d.ts +5 -1
  182. package/lib/internal/template/test-utils/dom/pagination/index.js +7 -0
  183. package/lib/internal/template/test-utils/dom/pagination/index.js.map +1 -1
  184. package/lib/internal/template/test-utils/dom/select/index.d.ts +16 -0
  185. package/lib/internal/template/test-utils/dom/select/index.js +16 -0
  186. package/lib/internal/template/test-utils/dom/select/index.js.map +1 -1
  187. package/lib/internal/template/test-utils/selectors/input/index.d.ts +2 -0
  188. package/lib/internal/template/test-utils/selectors/input/index.js +6 -0
  189. package/lib/internal/template/test-utils/selectors/input/index.js.map +1 -1
  190. package/lib/internal/template/test-utils/selectors/multiselect/index.d.ts +16 -0
  191. package/lib/internal/template/test-utils/selectors/multiselect/index.js +20 -0
  192. package/lib/internal/template/test-utils/selectors/multiselect/index.js.map +1 -1
  193. package/lib/internal/template/test-utils/selectors/pagination/index.d.ts +5 -1
  194. package/lib/internal/template/test-utils/selectors/pagination/index.js +7 -0
  195. package/lib/internal/template/test-utils/selectors/pagination/index.js.map +1 -1
  196. package/lib/internal/template/test-utils/selectors/select/index.d.ts +16 -0
  197. package/lib/internal/template/test-utils/selectors/select/index.js +20 -0
  198. package/lib/internal/template/test-utils/selectors/select/index.js.map +1 -1
  199. package/lib/internal/template/textarea/index.d.ts.map +1 -1
  200. package/lib/internal/template/textarea/index.js +11 -3
  201. package/lib/internal/template/textarea/index.js.map +1 -1
  202. package/lib/internal/template/textarea/interfaces.d.ts +12 -0
  203. package/lib/internal/template/textarea/interfaces.d.ts.map +1 -1
  204. package/lib/internal/template/textarea/interfaces.js.map +1 -1
  205. package/lib/internal/template/textarea/styles.css.js +9 -5
  206. package/lib/internal/template/textarea/styles.scoped.css +26 -14
  207. package/lib/internal/template/textarea/styles.selectors.js +9 -5
  208. package/package.json +1 -1
  209. package/lib/internal/template/status-indicator/internal-interfaces.d.ts +0 -3
  210. package/lib/internal/template/status-indicator/internal-interfaces.d.ts.map +0 -1
  211. package/lib/internal/template/status-indicator/internal-interfaces.js +0 -2
  212. package/lib/internal/template/status-indicator/internal-interfaces.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/select/parts/filter.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAsB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,MAAM,WAAW,WAAY,SAAQ,kBAAkB;IACrD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC;CAC1C;AAED,QAAA,MAAM,MAAM,i1BA0BV,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/select/parts/filter.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAsB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,MAAM,WAAW,WAAY,SAAQ,kBAAkB;IACrD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC;CAC1C;AAED,QAAA,MAAM,MAAM,s2BA0BV,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -1,6 +1,8 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "root": "awsui_root_r2vco_629bf_145"
4
+ "root": "awsui_root_r2vco_6kz8i_145",
5
+ "dropdown-header": "awsui_dropdown-header_r2vco_6kz8i_177",
6
+ "dropdown-footer": "awsui_dropdown-footer_r2vco_6kz8i_183"
5
7
  };
6
8
 
@@ -142,7 +142,7 @@
142
142
  */
143
143
  /* Style used for links in slots/components that are text heavy, to help links stand out among
144
144
  surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F73#description */
145
- .awsui_root_r2vco_629bf_145:not(#\9) {
145
+ .awsui_root_r2vco_6kz8i_145:not(#\9) {
146
146
  border-collapse: separate;
147
147
  border-spacing: 0;
148
148
  box-sizing: border-box;
@@ -172,4 +172,14 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
172
172
  font-family: var(--font-family-base-c9u5cr, "Noto Sans", "Helvetica Neue", Roboto, Arial, sans-serif);
173
173
  -webkit-font-smoothing: auto;
174
174
  -moz-osx-font-smoothing: auto;
175
+ }
176
+
177
+ .awsui_dropdown-header_r2vco_6kz8i_177:not(#\9) {
178
+ inline-size: 100%;
179
+ position: relative;
180
+ z-index: 4;
181
+ }
182
+
183
+ .awsui_dropdown-footer_r2vco_6kz8i_183:not(#\9) {
184
+ inline-size: 100%;
175
185
  }
@@ -2,6 +2,8 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "root": "awsui_root_r2vco_629bf_145"
5
+ "root": "awsui_root_r2vco_6kz8i_145",
6
+ "dropdown-header": "awsui_dropdown-header_r2vco_6kz8i_177",
7
+ "dropdown-footer": "awsui_dropdown-footer_r2vco_6kz8i_183"
6
8
  };
7
9
 
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ interface ComposeDropdownContentProps {
3
+ filter: React.ReactNode;
4
+ customDropdownHeader: React.ReactNode;
5
+ customDropdownFooter: React.ReactNode;
6
+ statusFooter: React.ReactNode;
7
+ dropdownHeaderClass: string;
8
+ dropdownFooterClass: string;
9
+ }
10
+ /**
11
+ * Builds the dropdown `header` and `footer` nodes shared by Select and Multiselect. When no custom header or
12
+ * custom footer is provided, the header is just the filter and the footer is the built-in sticky status, so the
13
+ * output is identical to the component's original behavior.
14
+ */
15
+ export declare function composeDropdownContent({ filter, customDropdownHeader, customDropdownFooter, statusFooter, dropdownHeaderClass, dropdownFooterClass, }: ComposeDropdownContentProps): {
16
+ header: React.ReactNode;
17
+ footer: React.ReactNode;
18
+ };
19
+ export {};
20
+ //# sourceMappingURL=dropdown-customization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-customization.d.ts","sourceRoot":"","sources":["../../../../src/select/utils/dropdown-customization.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,2BAA2B;IAEnC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,MAAM,EACN,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,GACpB,EAAE,2BAA2B,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CA2BpF"}
@@ -0,0 +1,22 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import React from 'react';
4
+ /**
5
+ * Builds the dropdown `header` and `footer` nodes shared by Select and Multiselect. When no custom header or
6
+ * custom footer is provided, the header is just the filter and the footer is the built-in sticky status, so the
7
+ * output is identical to the component's original behavior.
8
+ */
9
+ export function composeDropdownContent({ filter, customDropdownHeader, customDropdownFooter, statusFooter, dropdownHeaderClass, dropdownFooterClass, }) {
10
+ const headerNode = customDropdownHeader !== null && customDropdownHeader !== void 0 ? customDropdownHeader : null;
11
+ const footerNode = customDropdownFooter !== null && customDropdownFooter !== void 0 ? customDropdownFooter : null;
12
+ // Custom header renders at the top of the dropdown, above the filter (and options list).
13
+ const header = headerNode !== null ? (React.createElement(React.Fragment, null,
14
+ React.createElement("div", { className: dropdownHeaderClass }, headerNode),
15
+ filter)) : (filter);
16
+ // Only wrap the footer in a fragment when a custom footer is present; otherwise keep the original sticky-status node.
17
+ const footer = footerNode !== null ? (React.createElement(React.Fragment, null,
18
+ statusFooter,
19
+ React.createElement("div", { className: dropdownFooterClass }, footerNode))) : (statusFooter);
20
+ return { header, footer };
21
+ }
22
+ //# sourceMappingURL=dropdown-customization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-customization.js","sourceRoot":"","sources":["../../../../src/select/utils/dropdown-customization.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,MAAM,EACN,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,GACS;IAC5B,MAAM,UAAU,GAAG,oBAAoB,aAApB,oBAAoB,cAApB,oBAAoB,GAAI,IAAI,CAAC;IAChD,MAAM,UAAU,GAAG,oBAAoB,aAApB,oBAAoB,cAApB,oBAAoB,GAAI,IAAI,CAAC;IAEhD,yFAAyF;IACzF,MAAM,MAAM,GACV,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CACpB;QACE,6BAAK,SAAS,EAAE,mBAAmB,IAAG,UAAU,CAAO;QACtD,MAAM,CACN,CACJ,CAAC,CAAC,CAAC,CACF,MAAM,CACP,CAAC;IAEJ,sHAAsH;IACtH,MAAM,MAAM,GACV,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CACpB;QACG,YAAY;QACb,6BAAK,SAAS,EAAE,mBAAmB,IAAG,UAAU,CAAO,CACtD,CACJ,CAAC,CAAC,CAAC,CACF,YAAY,CACb,CAAC;IAEJ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\ninterface ComposeDropdownContentProps {\n // The filter node (already includes any custom filtering actions, composed by the Filter component).\n filter: React.ReactNode;\n customDropdownHeader: React.ReactNode;\n customDropdownFooter: React.ReactNode;\n statusFooter: React.ReactNode;\n dropdownHeaderClass: string;\n dropdownFooterClass: string;\n}\n\n/**\n * Builds the dropdown `header` and `footer` nodes shared by Select and Multiselect. When no custom header or\n * custom footer is provided, the header is just the filter and the footer is the built-in sticky status, so the\n * output is identical to the component's original behavior.\n */\nexport function composeDropdownContent({\n filter,\n customDropdownHeader,\n customDropdownFooter,\n statusFooter,\n dropdownHeaderClass,\n dropdownFooterClass,\n}: ComposeDropdownContentProps): { header: React.ReactNode; footer: React.ReactNode } {\n const headerNode = customDropdownHeader ?? null;\n const footerNode = customDropdownFooter ?? null;\n\n // Custom header renders at the top of the dropdown, above the filter (and options list).\n const header =\n headerNode !== null ? (\n <>\n <div className={dropdownHeaderClass}>{headerNode}</div>\n {filter}\n </>\n ) : (\n filter\n );\n\n // Only wrap the footer in a fragment when a custom footer is present; otherwise keep the original sticky-status node.\n const footer =\n footerNode !== null ? (\n <>\n {statusFooter}\n <div className={dropdownFooterClass}>{footerNode}</div>\n </>\n ) : (\n statusFooter\n );\n\n return { header, footer };\n}\n"]}
@@ -6,6 +6,7 @@ import { OptionsListProps } from '../../internal/components/options-list';
6
6
  import { DropdownStatusProps } from '../../types/dropdown-status';
7
7
  import { NonCancelableEventHandler } from '../../types/events';
8
8
  import { OptionDefinition } from '../../types/option';
9
+ import { SelectProps } from '../interfaces';
9
10
  import { FilterProps } from '../parts/filter';
10
11
  import { ItemProps } from '../parts/item';
11
12
  export type MenuProps = Omit<OptionsListProps, 'children'> & {
@@ -29,11 +30,12 @@ interface UseSelectProps {
29
30
  isAllSelected?: boolean;
30
31
  isSomeSelected?: boolean;
31
32
  toggleAll?: () => void;
33
+ dropdownRole?: SelectProps.DropdownRole;
32
34
  }
33
35
  export interface SelectTriggerProps extends ButtonTriggerProps {
34
36
  ref: RefObject<HTMLButtonElement>;
35
37
  }
36
- export declare function useSelect({ selectedOptions, updateSelectedOption, options, filteringType, onBlur, onFocus, externalRef, keepOpen, embedded, fireLoadItems, setFilteringValue, useInteractiveGroups, statusType, isAllSelected, isSomeSelected, toggleAll, }: UseSelectProps): {
38
+ export declare function useSelect({ selectedOptions, updateSelectedOption, options, filteringType, onBlur, onFocus, externalRef, keepOpen, embedded, fireLoadItems, setFilteringValue, useInteractiveGroups, statusType, isAllSelected, isSomeSelected, toggleAll, dropdownRole, }: UseSelectProps): {
37
39
  isOpen: boolean;
38
40
  highlightedOption: DropdownOption | undefined;
39
41
  highlightedIndex: number;
@@ -46,6 +48,7 @@ export declare function useSelect({ selectedOptions, updateSelectedOption, optio
46
48
  highlightOption: (option: DropdownOption) => void;
47
49
  selectOption: (option?: DropdownOption) => void;
48
50
  announceSelected: boolean;
51
+ closeDropdown: () => void;
49
52
  dialogId: string;
50
53
  focusActiveRef: () => void;
51
54
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-select.d.ts","sourceRoot":"","sources":["../../../../src/select/utils/use-select.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAe,MAAM,OAAO,CAAC;AAKtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAQ1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAe,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAAG;IAAE,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;CAAE,CAAC;AACtG,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;AAElF,UAAU,cAAc;IACtB,eAAe,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACjD,oBAAoB,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,aAAa,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,EAAE,mBAAmB,CAAC,UAAU,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,GAAG,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;CACnC;AAED,wBAAgB,SAAS,CAAC,EACxB,eAAe,EACf,oBAAoB,EACpB,OAAO,EACP,aAAa,EACb,MAAM,EACN,OAAO,EACP,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,oBAA4B,EAC5B,UAAU,EACV,aAAa,EACb,cAAc,EACd,SAAS,GACV,EAAE,cAAc;;;;;;4BA8Ge,IAAI,CAChC,qBAAqB,EACrB,SAAS,GAAG,QAAQ,GAAG,mBAAmB,GAAG,UAAU,CACxD;;0BA4B0B,OAAO,CAAC,WAAW,CAAC;6BAoEf,cAAc,SAAS,MAAM;;4BApJ9B,cAAc;;;;EAuP9C"}
1
+ {"version":3,"file":"use-select.d.ts","sourceRoot":"","sources":["../../../../src/select/utils/use-select.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAe,MAAM,OAAO,CAAC;AAKtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAQ1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAe,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAAG;IAAE,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;CAAE,CAAC;AACtG,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;AAElF,UAAU,cAAc;IACtB,eAAe,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACjD,oBAAoB,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,aAAa,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,EAAE,mBAAmB,CAAC,UAAU,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC;CACzC;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,GAAG,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;CACnC;AAED,wBAAgB,SAAS,CAAC,EACxB,eAAe,EACf,oBAAoB,EACpB,OAAO,EACP,aAAa,EACb,MAAM,EACN,OAAO,EACP,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,oBAA4B,EAC5B,UAAU,EACV,aAAa,EACb,cAAc,EACd,SAAS,EACT,YAAY,GACb,EAAE,cAAc;;;;;;4BAgHe,IAAI,CAChC,qBAAqB,EACrB,SAAS,GAAG,QAAQ,GAAG,mBAAmB,GAAG,UAAU,CACxD;;0BA4B0B,OAAO,CAAC,WAAW,CAAC;6BAoEf,cAAc,SAAS,MAAM;;4BApJ9B,cAAc;;;;;EAsQ9C"}
@@ -12,13 +12,15 @@ import { fireNonCancelableEvent } from '../../internal/events';
12
12
  import useForwardFocus from '../../internal/hooks/forward-focus';
13
13
  import { usePrevious } from '../../internal/hooks/use-previous';
14
14
  import { connectOptionsByValue } from './connect-options';
15
- export function useSelect({ selectedOptions, updateSelectedOption, options, filteringType, onBlur, onFocus, externalRef, keepOpen, embedded, fireLoadItems, setFilteringValue, useInteractiveGroups = false, statusType, isAllSelected, isSomeSelected, toggleAll, }) {
15
+ export function useSelect({ selectedOptions, updateSelectedOption, options, filteringType, onBlur, onFocus, externalRef, keepOpen, embedded, fireLoadItems, setFilteringValue, useInteractiveGroups = false, statusType, isAllSelected, isSomeSelected, toggleAll, dropdownRole, }) {
16
16
  const interactivityCheck = useInteractiveGroups ? isGroupInteractive : isInteractive;
17
17
  const isHighlightable = (option) => !!option && (useInteractiveGroups || option.type !== 'parent');
18
18
  const filterRef = useRef(null);
19
19
  const triggerRef = useRef(null);
20
20
  const menuRef = useRef(null);
21
21
  const hasFilter = filteringType !== 'none' && !embedded;
22
+ // Filtering always renders a dialog; `dropdownRole` can additionally force dialog semantics without a filter.
23
+ const isDialog = hasFilter || dropdownRole === 'dialog';
22
24
  const activeRef = hasFilter ? filterRef : menuRef;
23
25
  const __selectedOptions = connectOptionsByValue(options, selectedOptions);
24
26
  const __selectedOptionsSet = new Set(__selectedOptions);
@@ -104,15 +106,15 @@ export function useSelect({ selectedOptions, updateSelectedOption, options, filt
104
106
  onFocus: handleFocus,
105
107
  onBlur: handleBlur,
106
108
  dropdownContentId: dialogId,
107
- ariaRole: hasFilter ? 'dialog' : undefined,
109
+ ariaRole: isDialog ? 'dialog' : undefined,
108
110
  });
109
111
  const getTriggerProps = (disabled = false, autoFocus = false) => {
110
112
  const triggerProps = {
111
113
  ref: triggerRef,
112
114
  onFocus: () => closeDropdown(),
113
115
  autoFocus,
114
- ariaHasPopup: hasFilter ? 'dialog' : 'listbox',
115
- ariaControls: isOpen ? (hasFilter ? dialogId : menuId) : undefined,
116
+ ariaHasPopup: isDialog ? 'dialog' : 'listbox',
117
+ ariaControls: isOpen ? (isDialog ? dialogId : menuId) : undefined,
116
118
  };
117
119
  if (!disabled) {
118
120
  triggerProps.onMouseDown = (event) => {
@@ -270,6 +272,20 @@ export function useSelect({ selectedOptions, updateSelectedOption, options, filt
270
272
  useForwardFocus(externalRef, triggerRef);
271
273
  const highlightedGroupSelected = !!highlightedOption && isGroup(highlightedOption.option) && getGroupState(highlightedOption.option).selected;
272
274
  const announceSelected = !!highlightedOption && (__selectedOptionsSet.has(highlightedOption) || highlightedGroupSelected);
275
+ // Closes the dropdown and returns focus to the trigger, matching the normal close behavior.
276
+ // Exposed to the public dropdown-customization render props via `DropdownContentProps.closeDropdown`.
277
+ // Focusing the trigger fires its onFocus handler, which already closes the dropdown; only close
278
+ // explicitly when the trigger is already focused (re-focusing it does not fire onFocus), so the
279
+ // close side effects run exactly once.
280
+ const closeDropdownAndRefocus = useCallback(() => {
281
+ const trigger = triggerRef.current;
282
+ if (trigger && trigger === document.activeElement) {
283
+ closeDropdown();
284
+ }
285
+ else {
286
+ trigger === null || trigger === void 0 ? void 0 : trigger.focus();
287
+ }
288
+ }, [closeDropdown]);
273
289
  return {
274
290
  isOpen,
275
291
  highlightedOption,
@@ -283,6 +299,7 @@ export function useSelect({ selectedOptions, updateSelectedOption, options, filt
283
299
  highlightOption: highlightOptionWithKeyboard,
284
300
  selectOption,
285
301
  announceSelected,
302
+ closeDropdown: closeDropdownAndRefocus,
286
303
  dialogId,
287
304
  focusActiveRef,
288
305
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-select.js","sourceRoot":"","sources":["../../../../src/select/utils/use-select.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, { RefObject, useCallback } from 'react';\nimport { useEffect, useRef } from 'react';\n\nimport { useUniqueId } from '@cloudscape-design/component-toolkit/internal';\n\nimport { InternalDropdownProps } from '../../dropdown/internal';\nimport { ButtonTriggerProps } from '../../internal/components/button-trigger';\nimport { DropdownOption } from '../../internal/components/option/interfaces';\nimport { isGroup, isGroupInteractive, isInteractive } from '../../internal/components/option/utils/filter-options';\nimport { OptionsListProps } from '../../internal/components/options-list';\nimport { useHighlightedOption } from '../../internal/components/options-list/utils/use-highlight-option';\nimport { getOptionId } from '../../internal/components/options-list/utils/use-ids';\nimport { useMenuKeyboard, useTriggerKeyboard } from '../../internal/components/options-list/utils/use-keyboard';\nimport { useOpenState } from '../../internal/components/options-list/utils/use-open-state';\nimport { fireNonCancelableEvent } from '../../internal/events';\nimport useForwardFocus from '../../internal/hooks/forward-focus';\nimport { usePrevious } from '../../internal/hooks/use-previous';\nimport { DropdownStatusProps } from '../../types/dropdown-status';\nimport { NonCancelableEventHandler } from '../../types/events';\nimport { OptionDefinition, OptionGroup } from '../../types/option';\nimport { FilterProps } from '../parts/filter';\nimport { ItemProps } from '../parts/item';\nimport { connectOptionsByValue } from './connect-options';\n\nexport type MenuProps = Omit<OptionsListProps, 'children'> & { ref: React.RefObject<HTMLDivElement> };\nexport type GetOptionProps = (option: DropdownOption, index: number) => ItemProps;\n\ninterface UseSelectProps {\n selectedOptions: ReadonlyArray<OptionDefinition>;\n updateSelectedOption: (option: OptionDefinition) => void;\n options: ReadonlyArray<DropdownOption>;\n filteringType: string;\n keepOpen?: boolean;\n embedded?: boolean;\n onBlur?: NonCancelableEventHandler;\n onFocus?: NonCancelableEventHandler;\n externalRef: React.Ref<any>;\n fireLoadItems: (filteringText: string) => void;\n setFilteringValue?: (filteringText: string) => void;\n useInteractiveGroups?: boolean;\n statusType: DropdownStatusProps.StatusType;\n isAllSelected?: boolean;\n isSomeSelected?: boolean;\n toggleAll?: () => void;\n}\n\nexport interface SelectTriggerProps extends ButtonTriggerProps {\n ref: RefObject<HTMLButtonElement>;\n}\n\nexport function useSelect({\n selectedOptions,\n updateSelectedOption,\n options,\n filteringType,\n onBlur,\n onFocus,\n externalRef,\n keepOpen,\n embedded,\n fireLoadItems,\n setFilteringValue,\n useInteractiveGroups = false,\n statusType,\n isAllSelected,\n isSomeSelected,\n toggleAll,\n}: UseSelectProps) {\n const interactivityCheck = useInteractiveGroups ? isGroupInteractive : isInteractive;\n\n const isHighlightable = (option?: DropdownOption) => !!option && (useInteractiveGroups || option.type !== 'parent');\n\n const filterRef = useRef<HTMLInputElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const hasFilter = filteringType !== 'none' && !embedded;\n const activeRef = hasFilter ? filterRef : menuRef;\n const __selectedOptions = connectOptionsByValue(options, selectedOptions);\n const __selectedOptionsSet = new Set(__selectedOptions);\n const __selectedValuesSet = selectedOptions.reduce((selectedValuesSet: Set<string>, item: OptionDefinition) => {\n if (item.value) {\n selectedValuesSet.add(item.value);\n }\n return selectedValuesSet;\n }, new Set<string>());\n const [\n { highlightType, highlightedOption, highlightedIndex },\n {\n moveHighlightWithKeyboard,\n resetHighlightWithKeyboard,\n setHighlightedIndexWithMouse,\n highlightOptionWithKeyboard,\n highlightFirstOptionWithMouse,\n goHomeWithKeyboard,\n goEndWithKeyboard,\n },\n ] = useHighlightedOption({ options: options, isHighlightable });\n\n const { isOpen, openDropdown, closeDropdown, toggleDropdown, openedWithKeyboard } = useOpenState({\n defaultOpen: embedded,\n onOpen: () => fireLoadItems(''),\n onClose: () => {\n resetHighlightWithKeyboard();\n setFilteringValue?.('');\n },\n });\n\n const handleFocus = () => {\n fireNonCancelableEvent(onFocus, {});\n };\n\n const handleBlur = () => {\n fireNonCancelableEvent(onBlur, {});\n closeDropdown();\n };\n\n const hasSelectedOption = __selectedOptions.length > 0;\n const menuId = useUniqueId('option-list');\n const dialogId = useUniqueId('dialog');\n const highlightedOptionId = getOptionId(menuId, highlightedIndex);\n\n const closeDropdownIfNecessary = () => {\n if (!keepOpen) {\n triggerRef.current?.focus();\n closeDropdown();\n }\n };\n\n const selectOption = (option?: DropdownOption) => {\n const optionToSelect = option || highlightedOption;\n if (!optionToSelect || !interactivityCheck(optionToSelect)) {\n return;\n }\n if (optionToSelect.type === 'select-all' && toggleAll) {\n toggleAll();\n } else {\n updateSelectedOption(optionToSelect.option);\n }\n closeDropdownIfNecessary();\n };\n\n const activeKeyDownHandler = useMenuKeyboard({\n goUp: () => {\n if (\n (!useInteractiveGroups && highlightedOption?.type === 'child' && highlightedIndex === 1) ||\n highlightedIndex === 0\n ) {\n goEndWithKeyboard();\n return;\n }\n moveHighlightWithKeyboard(-1);\n },\n goDown: () => {\n if (highlightedIndex === options.length - 1) {\n goHomeWithKeyboard();\n return;\n }\n\n moveHighlightWithKeyboard(1);\n },\n selectOption,\n goHome: goHomeWithKeyboard,\n goEnd: goEndWithKeyboard,\n closeDropdown: () => {\n if (!embedded) {\n triggerRef.current?.focus();\n closeDropdown();\n }\n },\n preventNativeSpace: !hasFilter || (highlightedOption && highlightType.type === 'keyboard'),\n });\n\n const triggerKeyDownHandler = useTriggerKeyboard({\n openDropdown: () => openDropdown(true),\n goHome: goHomeWithKeyboard,\n });\n\n const getDropdownProps: () => Pick<\n InternalDropdownProps,\n 'onFocus' | 'onBlur' | 'dropdownContentId' | 'ariaRole'\n > = () => ({\n onFocus: handleFocus,\n onBlur: handleBlur,\n dropdownContentId: dialogId,\n ariaRole: hasFilter ? 'dialog' : undefined,\n });\n\n const getTriggerProps = (disabled = false, autoFocus = false) => {\n const triggerProps: SelectTriggerProps = {\n ref: triggerRef,\n onFocus: () => closeDropdown(),\n autoFocus,\n ariaHasPopup: hasFilter ? 'dialog' : 'listbox',\n ariaControls: isOpen ? (hasFilter ? dialogId : menuId) : undefined,\n };\n if (!disabled) {\n triggerProps.onMouseDown = (event: CustomEvent) => {\n event.preventDefault(); // prevent current focus from blurring as it immediately closes the dropdown\n if (isOpen) {\n triggerRef.current?.focus();\n }\n toggleDropdown();\n };\n triggerProps.onKeyDown = triggerKeyDownHandler;\n }\n return triggerProps;\n };\n\n const getFilterProps = (): Partial<FilterProps> => {\n if (!hasFilter || !setFilteringValue) {\n return {};\n }\n\n return {\n ref: filterRef,\n onKeyDown: activeKeyDownHandler,\n onChange: event => {\n setFilteringValue(event.detail.value);\n resetHighlightWithKeyboard();\n },\n __onDelayedInput: event => {\n fireLoadItems(event.detail.value);\n },\n nativeInputAttributes: {\n 'aria-activedescendant': highlightedOptionId,\n ['aria-owns']: menuId,\n ['aria-controls']: menuId,\n },\n };\n };\n\n const getMenuProps = () => {\n const menuProps: MenuProps = {\n id: menuId,\n ref: menuRef,\n open: isOpen,\n onMouseUp: itemIndex => {\n if (itemIndex > -1) {\n selectOption(options[itemIndex]);\n }\n },\n onMouseMove: itemIndex => {\n if (itemIndex > -1) {\n setHighlightedIndexWithMouse(itemIndex);\n }\n },\n statusType,\n };\n if (!hasFilter) {\n menuProps.onKeyDown = activeKeyDownHandler;\n menuProps.nativeAttributes = {\n 'aria-activedescendant': highlightedOptionId,\n };\n }\n if (embedded) {\n menuProps.onFocus = () => {\n if (!highlightedOption) {\n goHomeWithKeyboard();\n }\n };\n menuProps.onBlur = () => {\n resetHighlightWithKeyboard();\n };\n }\n return menuProps;\n };\n const getGroupState = (option: OptionGroup) => {\n const totalSelected = option.options.filter(item => !!item.value && __selectedValuesSet.has(item.value)).length;\n const hasSelected = totalSelected > 0;\n const allSelected = totalSelected === option.options.length;\n return {\n selected: hasSelected && allSelected && useInteractiveGroups,\n indeterminate: hasSelected && !allSelected,\n };\n };\n\n const getOptionProps = (option: DropdownOption, index: number) => {\n const isSelectAll = option.type === 'select-all';\n const highlighted = option === highlightedOption;\n const groupState = isGroup(option.option) ? getGroupState(option.option) : undefined;\n const selected = isSelectAll ? isAllSelected : __selectedOptionsSet.has(option) || !!groupState?.selected;\n const nextOption = options[index + 1]?.option;\n const isNextSelected =\n !!nextOption && isGroup(nextOption)\n ? getGroupState(nextOption).selected\n : __selectedOptionsSet.has(options[index + 1]);\n const previousOption = options[index - 1]?.option;\n const isPreviousSelected =\n !!previousOption && isGroup(previousOption)\n ? getGroupState(previousOption).selected\n : __selectedOptionsSet.has(options[index - 1]);\n const optionProps: any = {\n key: index,\n option,\n highlighted,\n selected,\n isNextSelected,\n isPreviousSelected,\n indeterminate: !!groupState?.indeterminate || (isSelectAll && !isAllSelected && isSomeSelected),\n ['data-mouse-target']: isHighlightable(option) ? index : -1,\n id: getOptionId(menuId, index),\n };\n\n return optionProps;\n };\n\n const prevOpen = usePrevious<boolean>(isOpen);\n useEffect(() => {\n // highlight the first selected option, when opening the Select component without filter input\n // keep the focus in the filter input when opening, so that screenreader can recognize the combobox\n if (isOpen && !prevOpen && options.length > 0 && !hasFilter) {\n if (openedWithKeyboard) {\n if (__selectedOptions[0]) {\n highlightOptionWithKeyboard(__selectedOptions[0]);\n } else {\n goHomeWithKeyboard();\n }\n } else {\n if (!__selectedOptions[0] || !options.includes(__selectedOptions[0])) {\n highlightFirstOptionWithMouse();\n } else {\n const highlightedIndex = options.indexOf(__selectedOptions[0]);\n setHighlightedIndexWithMouse(highlightedIndex, true);\n }\n }\n }\n }, [\n isOpen,\n __selectedOptions,\n hasSelectedOption,\n setHighlightedIndexWithMouse,\n highlightOptionWithKeyboard,\n highlightFirstOptionWithMouse,\n goHomeWithKeyboard,\n openedWithKeyboard,\n options,\n prevOpen,\n hasFilter,\n ]);\n\n const focusActiveRef = useCallback(() => {\n // dropdown-fit calculations ensure that the dropdown will fit inside the current\n // viewport, so prevent the browser from trying to scroll it into view (e.g. if\n // scroll-padding-top is set on a parent)\n activeRef.current?.focus({ preventScroll: true });\n }, [activeRef]);\n\n useEffect(() => {\n if (isOpen && !embedded) {\n focusActiveRef();\n }\n }, [isOpen, activeRef, embedded, focusActiveRef]);\n\n useForwardFocus(externalRef, triggerRef as React.RefObject<HTMLElement>);\n const highlightedGroupSelected =\n !!highlightedOption && isGroup(highlightedOption.option) && getGroupState(highlightedOption.option).selected;\n const announceSelected =\n !!highlightedOption && (__selectedOptionsSet.has(highlightedOption) || highlightedGroupSelected);\n\n return {\n isOpen,\n highlightedOption,\n highlightedIndex,\n highlightType,\n getTriggerProps,\n getDropdownProps,\n getMenuProps,\n getFilterProps,\n getOptionProps,\n highlightOption: highlightOptionWithKeyboard,\n selectOption,\n announceSelected,\n dialogId,\n focusActiveRef,\n };\n}\n"]}
1
+ {"version":3,"file":"use-select.js","sourceRoot":"","sources":["../../../../src/select/utils/use-select.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, { RefObject, useCallback } from 'react';\nimport { useEffect, useRef } from 'react';\n\nimport { useUniqueId } from '@cloudscape-design/component-toolkit/internal';\n\nimport { InternalDropdownProps } from '../../dropdown/internal';\nimport { ButtonTriggerProps } from '../../internal/components/button-trigger';\nimport { DropdownOption } from '../../internal/components/option/interfaces';\nimport { isGroup, isGroupInteractive, isInteractive } from '../../internal/components/option/utils/filter-options';\nimport { OptionsListProps } from '../../internal/components/options-list';\nimport { useHighlightedOption } from '../../internal/components/options-list/utils/use-highlight-option';\nimport { getOptionId } from '../../internal/components/options-list/utils/use-ids';\nimport { useMenuKeyboard, useTriggerKeyboard } from '../../internal/components/options-list/utils/use-keyboard';\nimport { useOpenState } from '../../internal/components/options-list/utils/use-open-state';\nimport { fireNonCancelableEvent } from '../../internal/events';\nimport useForwardFocus from '../../internal/hooks/forward-focus';\nimport { usePrevious } from '../../internal/hooks/use-previous';\nimport { DropdownStatusProps } from '../../types/dropdown-status';\nimport { NonCancelableEventHandler } from '../../types/events';\nimport { OptionDefinition, OptionGroup } from '../../types/option';\nimport { SelectProps } from '../interfaces';\nimport { FilterProps } from '../parts/filter';\nimport { ItemProps } from '../parts/item';\nimport { connectOptionsByValue } from './connect-options';\n\nexport type MenuProps = Omit<OptionsListProps, 'children'> & { ref: React.RefObject<HTMLDivElement> };\nexport type GetOptionProps = (option: DropdownOption, index: number) => ItemProps;\n\ninterface UseSelectProps {\n selectedOptions: ReadonlyArray<OptionDefinition>;\n updateSelectedOption: (option: OptionDefinition) => void;\n options: ReadonlyArray<DropdownOption>;\n filteringType: string;\n keepOpen?: boolean;\n embedded?: boolean;\n onBlur?: NonCancelableEventHandler;\n onFocus?: NonCancelableEventHandler;\n externalRef: React.Ref<any>;\n fireLoadItems: (filteringText: string) => void;\n setFilteringValue?: (filteringText: string) => void;\n useInteractiveGroups?: boolean;\n statusType: DropdownStatusProps.StatusType;\n isAllSelected?: boolean;\n isSomeSelected?: boolean;\n toggleAll?: () => void;\n dropdownRole?: SelectProps.DropdownRole;\n}\n\nexport interface SelectTriggerProps extends ButtonTriggerProps {\n ref: RefObject<HTMLButtonElement>;\n}\n\nexport function useSelect({\n selectedOptions,\n updateSelectedOption,\n options,\n filteringType,\n onBlur,\n onFocus,\n externalRef,\n keepOpen,\n embedded,\n fireLoadItems,\n setFilteringValue,\n useInteractiveGroups = false,\n statusType,\n isAllSelected,\n isSomeSelected,\n toggleAll,\n dropdownRole,\n}: UseSelectProps) {\n const interactivityCheck = useInteractiveGroups ? isGroupInteractive : isInteractive;\n\n const isHighlightable = (option?: DropdownOption) => !!option && (useInteractiveGroups || option.type !== 'parent');\n\n const filterRef = useRef<HTMLInputElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const hasFilter = filteringType !== 'none' && !embedded;\n // Filtering always renders a dialog; `dropdownRole` can additionally force dialog semantics without a filter.\n const isDialog = hasFilter || dropdownRole === 'dialog';\n const activeRef = hasFilter ? filterRef : menuRef;\n const __selectedOptions = connectOptionsByValue(options, selectedOptions);\n const __selectedOptionsSet = new Set(__selectedOptions);\n const __selectedValuesSet = selectedOptions.reduce((selectedValuesSet: Set<string>, item: OptionDefinition) => {\n if (item.value) {\n selectedValuesSet.add(item.value);\n }\n return selectedValuesSet;\n }, new Set<string>());\n const [\n { highlightType, highlightedOption, highlightedIndex },\n {\n moveHighlightWithKeyboard,\n resetHighlightWithKeyboard,\n setHighlightedIndexWithMouse,\n highlightOptionWithKeyboard,\n highlightFirstOptionWithMouse,\n goHomeWithKeyboard,\n goEndWithKeyboard,\n },\n ] = useHighlightedOption({ options: options, isHighlightable });\n\n const { isOpen, openDropdown, closeDropdown, toggleDropdown, openedWithKeyboard } = useOpenState({\n defaultOpen: embedded,\n onOpen: () => fireLoadItems(''),\n onClose: () => {\n resetHighlightWithKeyboard();\n setFilteringValue?.('');\n },\n });\n\n const handleFocus = () => {\n fireNonCancelableEvent(onFocus, {});\n };\n\n const handleBlur = () => {\n fireNonCancelableEvent(onBlur, {});\n closeDropdown();\n };\n\n const hasSelectedOption = __selectedOptions.length > 0;\n const menuId = useUniqueId('option-list');\n const dialogId = useUniqueId('dialog');\n const highlightedOptionId = getOptionId(menuId, highlightedIndex);\n\n const closeDropdownIfNecessary = () => {\n if (!keepOpen) {\n triggerRef.current?.focus();\n closeDropdown();\n }\n };\n\n const selectOption = (option?: DropdownOption) => {\n const optionToSelect = option || highlightedOption;\n if (!optionToSelect || !interactivityCheck(optionToSelect)) {\n return;\n }\n if (optionToSelect.type === 'select-all' && toggleAll) {\n toggleAll();\n } else {\n updateSelectedOption(optionToSelect.option);\n }\n closeDropdownIfNecessary();\n };\n\n const activeKeyDownHandler = useMenuKeyboard({\n goUp: () => {\n if (\n (!useInteractiveGroups && highlightedOption?.type === 'child' && highlightedIndex === 1) ||\n highlightedIndex === 0\n ) {\n goEndWithKeyboard();\n return;\n }\n moveHighlightWithKeyboard(-1);\n },\n goDown: () => {\n if (highlightedIndex === options.length - 1) {\n goHomeWithKeyboard();\n return;\n }\n\n moveHighlightWithKeyboard(1);\n },\n selectOption,\n goHome: goHomeWithKeyboard,\n goEnd: goEndWithKeyboard,\n closeDropdown: () => {\n if (!embedded) {\n triggerRef.current?.focus();\n closeDropdown();\n }\n },\n preventNativeSpace: !hasFilter || (highlightedOption && highlightType.type === 'keyboard'),\n });\n\n const triggerKeyDownHandler = useTriggerKeyboard({\n openDropdown: () => openDropdown(true),\n goHome: goHomeWithKeyboard,\n });\n\n const getDropdownProps: () => Pick<\n InternalDropdownProps,\n 'onFocus' | 'onBlur' | 'dropdownContentId' | 'ariaRole'\n > = () => ({\n onFocus: handleFocus,\n onBlur: handleBlur,\n dropdownContentId: dialogId,\n ariaRole: isDialog ? 'dialog' : undefined,\n });\n\n const getTriggerProps = (disabled = false, autoFocus = false) => {\n const triggerProps: SelectTriggerProps = {\n ref: triggerRef,\n onFocus: () => closeDropdown(),\n autoFocus,\n ariaHasPopup: isDialog ? 'dialog' : 'listbox',\n ariaControls: isOpen ? (isDialog ? dialogId : menuId) : undefined,\n };\n if (!disabled) {\n triggerProps.onMouseDown = (event: CustomEvent) => {\n event.preventDefault(); // prevent current focus from blurring as it immediately closes the dropdown\n if (isOpen) {\n triggerRef.current?.focus();\n }\n toggleDropdown();\n };\n triggerProps.onKeyDown = triggerKeyDownHandler;\n }\n return triggerProps;\n };\n\n const getFilterProps = (): Partial<FilterProps> => {\n if (!hasFilter || !setFilteringValue) {\n return {};\n }\n\n return {\n ref: filterRef,\n onKeyDown: activeKeyDownHandler,\n onChange: event => {\n setFilteringValue(event.detail.value);\n resetHighlightWithKeyboard();\n },\n __onDelayedInput: event => {\n fireLoadItems(event.detail.value);\n },\n nativeInputAttributes: {\n 'aria-activedescendant': highlightedOptionId,\n ['aria-owns']: menuId,\n ['aria-controls']: menuId,\n },\n };\n };\n\n const getMenuProps = () => {\n const menuProps: MenuProps = {\n id: menuId,\n ref: menuRef,\n open: isOpen,\n onMouseUp: itemIndex => {\n if (itemIndex > -1) {\n selectOption(options[itemIndex]);\n }\n },\n onMouseMove: itemIndex => {\n if (itemIndex > -1) {\n setHighlightedIndexWithMouse(itemIndex);\n }\n },\n statusType,\n };\n if (!hasFilter) {\n menuProps.onKeyDown = activeKeyDownHandler;\n menuProps.nativeAttributes = {\n 'aria-activedescendant': highlightedOptionId,\n };\n }\n if (embedded) {\n menuProps.onFocus = () => {\n if (!highlightedOption) {\n goHomeWithKeyboard();\n }\n };\n menuProps.onBlur = () => {\n resetHighlightWithKeyboard();\n };\n }\n return menuProps;\n };\n const getGroupState = (option: OptionGroup) => {\n const totalSelected = option.options.filter(item => !!item.value && __selectedValuesSet.has(item.value)).length;\n const hasSelected = totalSelected > 0;\n const allSelected = totalSelected === option.options.length;\n return {\n selected: hasSelected && allSelected && useInteractiveGroups,\n indeterminate: hasSelected && !allSelected,\n };\n };\n\n const getOptionProps = (option: DropdownOption, index: number) => {\n const isSelectAll = option.type === 'select-all';\n const highlighted = option === highlightedOption;\n const groupState = isGroup(option.option) ? getGroupState(option.option) : undefined;\n const selected = isSelectAll ? isAllSelected : __selectedOptionsSet.has(option) || !!groupState?.selected;\n const nextOption = options[index + 1]?.option;\n const isNextSelected =\n !!nextOption && isGroup(nextOption)\n ? getGroupState(nextOption).selected\n : __selectedOptionsSet.has(options[index + 1]);\n const previousOption = options[index - 1]?.option;\n const isPreviousSelected =\n !!previousOption && isGroup(previousOption)\n ? getGroupState(previousOption).selected\n : __selectedOptionsSet.has(options[index - 1]);\n const optionProps: any = {\n key: index,\n option,\n highlighted,\n selected,\n isNextSelected,\n isPreviousSelected,\n indeterminate: !!groupState?.indeterminate || (isSelectAll && !isAllSelected && isSomeSelected),\n ['data-mouse-target']: isHighlightable(option) ? index : -1,\n id: getOptionId(menuId, index),\n };\n\n return optionProps;\n };\n\n const prevOpen = usePrevious<boolean>(isOpen);\n useEffect(() => {\n // highlight the first selected option, when opening the Select component without filter input\n // keep the focus in the filter input when opening, so that screenreader can recognize the combobox\n if (isOpen && !prevOpen && options.length > 0 && !hasFilter) {\n if (openedWithKeyboard) {\n if (__selectedOptions[0]) {\n highlightOptionWithKeyboard(__selectedOptions[0]);\n } else {\n goHomeWithKeyboard();\n }\n } else {\n if (!__selectedOptions[0] || !options.includes(__selectedOptions[0])) {\n highlightFirstOptionWithMouse();\n } else {\n const highlightedIndex = options.indexOf(__selectedOptions[0]);\n setHighlightedIndexWithMouse(highlightedIndex, true);\n }\n }\n }\n }, [\n isOpen,\n __selectedOptions,\n hasSelectedOption,\n setHighlightedIndexWithMouse,\n highlightOptionWithKeyboard,\n highlightFirstOptionWithMouse,\n goHomeWithKeyboard,\n openedWithKeyboard,\n options,\n prevOpen,\n hasFilter,\n ]);\n\n const focusActiveRef = useCallback(() => {\n // dropdown-fit calculations ensure that the dropdown will fit inside the current\n // viewport, so prevent the browser from trying to scroll it into view (e.g. if\n // scroll-padding-top is set on a parent)\n activeRef.current?.focus({ preventScroll: true });\n }, [activeRef]);\n\n useEffect(() => {\n if (isOpen && !embedded) {\n focusActiveRef();\n }\n }, [isOpen, activeRef, embedded, focusActiveRef]);\n\n useForwardFocus(externalRef, triggerRef as React.RefObject<HTMLElement>);\n const highlightedGroupSelected =\n !!highlightedOption && isGroup(highlightedOption.option) && getGroupState(highlightedOption.option).selected;\n const announceSelected =\n !!highlightedOption && (__selectedOptionsSet.has(highlightedOption) || highlightedGroupSelected);\n\n // Closes the dropdown and returns focus to the trigger, matching the normal close behavior.\n // Exposed to the public dropdown-customization render props via `DropdownContentProps.closeDropdown`.\n // Focusing the trigger fires its onFocus handler, which already closes the dropdown; only close\n // explicitly when the trigger is already focused (re-focusing it does not fire onFocus), so the\n // close side effects run exactly once.\n const closeDropdownAndRefocus = useCallback(() => {\n const trigger = triggerRef.current;\n if (trigger && trigger === document.activeElement) {\n closeDropdown();\n } else {\n trigger?.focus();\n }\n }, [closeDropdown]);\n\n return {\n isOpen,\n highlightedOption,\n highlightedIndex,\n highlightType,\n getTriggerProps,\n getDropdownProps,\n getMenuProps,\n getFilterProps,\n getOptionProps,\n highlightOption: highlightOptionWithKeyboard,\n selectOption,\n announceSelected,\n closeDropdown: closeDropdownAndRefocus,\n dialogId,\n focusActiveRef,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../../src/side-navigation/parts.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAgB5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAOnD,UAAU,sBAAsB;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,GAAG,mBAAmB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACrH,UAAU,EAAE,CACV,IAAI,EACA,mBAAmB,CAAC,IAAI,GACxB,mBAAmB,CAAC,MAAM,GAC1B,mBAAmB,CAAC,SAAS,GAC7B,mBAAmB,CAAC,mBAAmB,EAC3C,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,KAChC,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACtD;AAED,UAAU,WAAY,SAAQ,sBAAsB;IAClD,UAAU,EAAE,mBAAmB,CAAC,MAAM,CAAC;CACxC;AAED,wBAAgB,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,WAAW,eA2DpF;AAED,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,KAAK,EAAE,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GAAG,YAAY,GAAG,uBAAuB,GAAG,MAAM,CAAC;IACvF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAQD,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAa,EACb,SAAS,EACT,SAAS,EACT,aAAa,EACb,gBAAgB,GACjB,EAAE,wBAAwB,eA+R1B"}
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../../src/side-navigation/parts.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAgB5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAOnD,UAAU,sBAAsB;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,GAAG,mBAAmB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACrH,UAAU,EAAE,CACV,IAAI,EACA,mBAAmB,CAAC,IAAI,GACxB,mBAAmB,CAAC,MAAM,GAC1B,mBAAmB,CAAC,SAAS,GAC7B,mBAAmB,CAAC,mBAAmB,EAC3C,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,KAChC,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACtD;AAED,UAAU,WAAY,SAAQ,sBAAsB;IAClD,UAAU,EAAE,mBAAmB,CAAC,MAAM,CAAC;CACxC;AAED,wBAAgB,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,WAAW,eA2DpF;AAED,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,KAAK,EAAE,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GAAG,YAAY,GAAG,uBAAuB,GAAG,MAAM,CAAC;IACvF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAQD,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAa,EACb,SAAS,EACT,SAAS,EACT,aAAa,EACb,gBAAgB,GACjB,EAAE,wBAAwB,eAgS1B"}
@@ -176,6 +176,7 @@ export function NavigationItemsList({ items, variant, activeHref, fireChange, fi
176
176
  return (React.createElement("div", { key: `hr-${index}`, className: clsx(styles.list, styles[`list-variant-${variant}`], {
177
177
  [styles['list-variant-root--first']]: list.listVariant === 'root' && index === 0,
178
178
  [styles['list-variant-root--collapsed']]: list.listVariant === 'root' && collapsed,
179
+ [styles['list--with-icons']]: withIcons,
179
180
  }) }, list.element));
180
181
  }
181
182
  else {
@@ -275,7 +276,7 @@ function Section({ definition, activeHref, fireFollow, fireChange, variant, posi
275
276
  return null;
276
277
  }
277
278
  const isInSectionGroup = variant === 'section-group';
278
- return (React.createElement(InternalExpandableSection, { variant: "footer", expanded: expanded, onChange: onExpandedChange, className: clsx(styles.section, isInSectionGroup && styles['section--no-ident'], isVisualRefresh && styles.refresh), headerText: React.createElement("span", { className: styles['section-header'] }, definition.text) },
279
+ return (React.createElement(InternalExpandableSection, { variant: "footer", expanded: expanded, onChange: onExpandedChange, disableContentPaddings: true, className: clsx(styles.section, isInSectionGroup && styles['section--no-ident'], withIcons && styles['section--expand-icon-end'], isVisualRefresh && styles.refresh), headerText: React.createElement("span", { className: styles['section-header'] }, definition.text), __expandIconPosition: withIcons ? 'end' : 'start' },
279
280
  React.createElement(NavigationItemsList, { variant: "section", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position, withIcons: withIcons })));
280
281
  }
281
282
  function SectionGroup({ definition, activeHref, fireFollow, fireChange, position, collapsed, withIcons, }) {
@@ -336,7 +337,7 @@ function ExpandableLinkGroup({ definition, fireFollow, fireChange, activeHref, v
336
337
  if (collapsed) {
337
338
  return (React.createElement(Link, { definition: { type: 'link', href: definition.href, text: definition.text, icon: definition.icon }, fireFollow: onHeaderFollow, fireChange: fireChange, activeHref: activeHref, position: position, collapsed: collapsed, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }));
338
339
  }
339
- return (React.createElement(InternalExpandableSection, { className: clsx(styles['expandable-link-group'], variant === 'section-group' && styles['expandable-link-group--no-ident'], definition.href === activeHref && styles['expandable-link-group--active']), variant: "navigation", expanded: userExpanded !== null && userExpanded !== void 0 ? userExpanded : expanded, onChange: onExpandedChange, headerText: React.createElement(Link, { definition: { type: 'link', href: definition.href, text: definition.text, icon: definition.icon }, fireFollow: onHeaderFollow, fireChange: fireChange, activeHref: activeHref, position: position }) },
340
+ return (React.createElement(InternalExpandableSection, { className: clsx(styles['expandable-link-group'], variant === 'section-group' && styles['expandable-link-group--no-ident'], withIcons && styles['expandable-link-group--expand-icon-end'], definition.href === activeHref && styles['expandable-link-group--active']), variant: "navigation", expanded: userExpanded !== null && userExpanded !== void 0 ? userExpanded : expanded, onChange: onExpandedChange, disableContentPaddings: true, __disableHeaderPaddings: true, __expandIconPosition: withIcons ? 'end' : 'start', headerText: React.createElement(Link, { definition: { type: 'link', href: definition.href, text: definition.text, icon: definition.icon }, fireFollow: onHeaderFollow, fireChange: fireChange, activeHref: activeHref, position: position }) },
340
341
  React.createElement(NavigationItemsList, { variant: "expandable-link-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position, withIcons: withIcons })));
341
342
  }
342
343
  //# sourceMappingURL=parts.js.map