@cloudscape-design/components-themeable 3.0.1333 → 3.0.1335

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 (206) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/box/visual-accent.scss +61 -25
  3. package/lib/internal/scss/button/styles.scss +6 -0
  4. package/lib/internal/scss/code-editor/ace-editor.scss +1 -1
  5. package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
  6. package/lib/internal/scss/side-navigation/styles.scss +10 -3
  7. package/lib/internal/scss/steps/styles.scss +113 -31
  8. package/lib/internal/scss/table/header-cell/styles.scss +42 -14
  9. package/lib/internal/scss/table/styles.scss +6 -0
  10. package/lib/internal/scss/tooltip/styles.scss +22 -0
  11. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.js +1 -1
  12. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.js.map +1 -1
  13. package/lib/internal/template/box/interfaces.d.ts +1 -1
  14. package/lib/internal/template/box/interfaces.d.ts.map +1 -1
  15. package/lib/internal/template/box/interfaces.js.map +1 -1
  16. package/lib/internal/template/box/styles.css.js +220 -224
  17. package/lib/internal/template/box/styles.scoped.css +293 -313
  18. package/lib/internal/template/box/styles.selectors.js +220 -224
  19. package/lib/internal/template/button/internal.d.ts +2 -0
  20. package/lib/internal/template/button/internal.d.ts.map +1 -1
  21. package/lib/internal/template/button/internal.js +2 -1
  22. package/lib/internal/template/button/internal.js.map +1 -1
  23. package/lib/internal/template/button/styles.css.js +23 -22
  24. package/lib/internal/template/button/styles.scoped.css +74 -69
  25. package/lib/internal/template/button/styles.selectors.js +23 -22
  26. package/lib/internal/template/button-dropdown/internal-interfaces.d.ts +11 -0
  27. package/lib/internal/template/button-dropdown/internal-interfaces.d.ts.map +1 -1
  28. package/lib/internal/template/button-dropdown/internal-interfaces.js.map +1 -1
  29. package/lib/internal/template/button-dropdown/internal.d.ts.map +1 -1
  30. package/lib/internal/template/button-dropdown/internal.js +3 -2
  31. package/lib/internal/template/button-dropdown/internal.js.map +1 -1
  32. package/lib/internal/template/button-group/copy-to-clipboard-item.d.ts +16 -0
  33. package/lib/internal/template/button-group/copy-to-clipboard-item.d.ts.map +1 -0
  34. package/lib/internal/template/button-group/copy-to-clipboard-item.js +38 -0
  35. package/lib/internal/template/button-group/copy-to-clipboard-item.js.map +1 -0
  36. package/lib/internal/template/button-group/index.d.ts.map +1 -1
  37. package/lib/internal/template/button-group/index.js +9 -1
  38. package/lib/internal/template/button-group/index.js.map +1 -1
  39. package/lib/internal/template/button-group/interfaces.d.ts +38 -2
  40. package/lib/internal/template/button-group/interfaces.d.ts.map +1 -1
  41. package/lib/internal/template/button-group/interfaces.js.map +1 -1
  42. package/lib/internal/template/button-group/internal-interfaces.d.ts +1 -1
  43. package/lib/internal/template/button-group/internal-interfaces.d.ts.map +1 -1
  44. package/lib/internal/template/button-group/internal-interfaces.js.map +1 -1
  45. package/lib/internal/template/button-group/internal.d.ts.map +1 -1
  46. package/lib/internal/template/button-group/internal.js +2 -2
  47. package/lib/internal/template/button-group/internal.js.map +1 -1
  48. package/lib/internal/template/button-group/item-element.d.ts +2 -0
  49. package/lib/internal/template/button-group/item-element.d.ts.map +1 -1
  50. package/lib/internal/template/button-group/item-element.js +13 -3
  51. package/lib/internal/template/button-group/item-element.js.map +1 -1
  52. package/lib/internal/template/code-editor/styles.css.js +33 -33
  53. package/lib/internal/template/code-editor/styles.scoped.css +187 -187
  54. package/lib/internal/template/code-editor/styles.selectors.js +33 -33
  55. package/lib/internal/template/i18n/messages/all.all.js +1 -1
  56. package/lib/internal/template/i18n/messages/all.all.json +1 -1
  57. package/lib/internal/template/i18n/messages/all.ar.js +1 -1
  58. package/lib/internal/template/i18n/messages/all.ar.json +1 -1
  59. package/lib/internal/template/i18n/messages/all.de.js +1 -1
  60. package/lib/internal/template/i18n/messages/all.de.json +1 -1
  61. package/lib/internal/template/i18n/messages/all.en-GB.js +1 -1
  62. package/lib/internal/template/i18n/messages/all.en-GB.json +1 -1
  63. package/lib/internal/template/i18n/messages/all.en.js +1 -1
  64. package/lib/internal/template/i18n/messages/all.en.json +1 -1
  65. package/lib/internal/template/i18n/messages/all.es.js +1 -1
  66. package/lib/internal/template/i18n/messages/all.es.json +1 -1
  67. package/lib/internal/template/i18n/messages/all.fr.js +1 -1
  68. package/lib/internal/template/i18n/messages/all.fr.json +1 -1
  69. package/lib/internal/template/i18n/messages/all.id.js +1 -1
  70. package/lib/internal/template/i18n/messages/all.id.json +1 -1
  71. package/lib/internal/template/i18n/messages/all.it.js +1 -1
  72. package/lib/internal/template/i18n/messages/all.it.json +1 -1
  73. package/lib/internal/template/i18n/messages/all.ja.js +1 -1
  74. package/lib/internal/template/i18n/messages/all.ja.json +1 -1
  75. package/lib/internal/template/i18n/messages/all.ko.js +1 -1
  76. package/lib/internal/template/i18n/messages/all.ko.json +1 -1
  77. package/lib/internal/template/i18n/messages/all.pt-BR.js +1 -1
  78. package/lib/internal/template/i18n/messages/all.pt-BR.json +1 -1
  79. package/lib/internal/template/i18n/messages/all.tr.js +1 -1
  80. package/lib/internal/template/i18n/messages/all.tr.json +1 -1
  81. package/lib/internal/template/i18n/messages/all.zh-CN.js +1 -1
  82. package/lib/internal/template/i18n/messages/all.zh-CN.json +1 -1
  83. package/lib/internal/template/i18n/messages/all.zh-TW.js +1 -1
  84. package/lib/internal/template/i18n/messages/all.zh-TW.json +1 -1
  85. package/lib/internal/template/i18n/messages-types.d.ts +19 -0
  86. package/lib/internal/template/i18n/messages-types.d.ts.map +1 -1
  87. package/lib/internal/template/i18n/messages-types.js.map +1 -1
  88. package/lib/internal/template/internal/base-component/styles.scoped.css +163 -3
  89. package/lib/internal/template/internal/environment.js +2 -2
  90. package/lib/internal/template/internal/environment.json +2 -2
  91. package/lib/internal/template/internal/generated/styles/tokens.d.ts +35 -38
  92. package/lib/internal/template/internal/generated/styles/tokens.js +35 -38
  93. package/lib/internal/template/internal/generated/theming/index.cjs +585 -774
  94. package/lib/internal/template/internal/generated/theming/index.cjs.d.ts +36 -9
  95. package/lib/internal/template/internal/generated/theming/index.d.ts +36 -9
  96. package/lib/internal/template/internal/generated/theming/index.js +585 -774
  97. package/lib/internal/template/internal/utils/scrollable-containers.d.ts +5 -0
  98. package/lib/internal/template/internal/utils/scrollable-containers.d.ts.map +1 -1
  99. package/lib/internal/template/internal/utils/scrollable-containers.js +16 -0
  100. package/lib/internal/template/internal/utils/scrollable-containers.js.map +1 -1
  101. package/lib/internal/template/side-navigation/implementation.d.ts.map +1 -1
  102. package/lib/internal/template/side-navigation/implementation.js +3 -2
  103. package/lib/internal/template/side-navigation/implementation.js.map +1 -1
  104. package/lib/internal/template/side-navigation/parts.d.ts +2 -1
  105. package/lib/internal/template/side-navigation/parts.d.ts.map +1 -1
  106. package/lib/internal/template/side-navigation/parts.js +14 -13
  107. package/lib/internal/template/side-navigation/parts.js.map +1 -1
  108. package/lib/internal/template/side-navigation/styles.css.js +48 -47
  109. package/lib/internal/template/side-navigation/styles.scoped.css +77 -74
  110. package/lib/internal/template/side-navigation/styles.selectors.js +48 -47
  111. package/lib/internal/template/side-navigation/util.d.ts +1 -0
  112. package/lib/internal/template/side-navigation/util.d.ts.map +1 -1
  113. package/lib/internal/template/side-navigation/util.js +5 -0
  114. package/lib/internal/template/side-navigation/util.js.map +1 -1
  115. package/lib/internal/template/steps/interfaces.d.ts +2 -0
  116. package/lib/internal/template/steps/interfaces.d.ts.map +1 -1
  117. package/lib/internal/template/steps/interfaces.js.map +1 -1
  118. package/lib/internal/template/steps/internal.d.ts.map +1 -1
  119. package/lib/internal/template/steps/internal.js +35 -12
  120. package/lib/internal/template/steps/internal.js.map +1 -1
  121. package/lib/internal/template/steps/styles.css.js +17 -13
  122. package/lib/internal/template/steps/styles.scoped.css +99 -42
  123. package/lib/internal/template/steps/styles.selectors.js +17 -13
  124. package/lib/internal/template/table/clear-sort.d.ts +9 -0
  125. package/lib/internal/template/table/clear-sort.d.ts.map +1 -0
  126. package/lib/internal/template/table/clear-sort.js +15 -0
  127. package/lib/internal/template/table/clear-sort.js.map +1 -0
  128. package/lib/internal/template/table/header-cell/index.d.ts +4 -1
  129. package/lib/internal/template/table/header-cell/index.d.ts.map +1 -1
  130. package/lib/internal/template/table/header-cell/index.js +122 -33
  131. package/lib/internal/template/table/header-cell/index.js.map +1 -1
  132. package/lib/internal/template/table/header-cell/sort-menu.d.ts +14 -0
  133. package/lib/internal/template/table/header-cell/sort-menu.d.ts.map +1 -0
  134. package/lib/internal/template/table/header-cell/sort-menu.js +50 -0
  135. package/lib/internal/template/table/header-cell/sort-menu.js.map +1 -0
  136. package/lib/internal/template/table/header-cell/styles.css.js +38 -33
  137. package/lib/internal/template/table/header-cell/styles.scoped.css +101 -76
  138. package/lib/internal/template/table/header-cell/styles.selectors.js +38 -33
  139. package/lib/internal/template/table/header-cell/th-element.d.ts +8 -1
  140. package/lib/internal/template/table/header-cell/th-element.d.ts.map +1 -1
  141. package/lib/internal/template/table/header-cell/th-element.js +6 -2
  142. package/lib/internal/template/table/header-cell/th-element.js.map +1 -1
  143. package/lib/internal/template/table/index.d.ts.map +1 -1
  144. package/lib/internal/template/table/index.js +8 -4
  145. package/lib/internal/template/table/index.js.map +1 -1
  146. package/lib/internal/template/table/interfaces.d.ts +81 -2
  147. package/lib/internal/template/table/interfaces.d.ts.map +1 -1
  148. package/lib/internal/template/table/interfaces.js.map +1 -1
  149. package/lib/internal/template/table/internal.d.ts.map +1 -1
  150. package/lib/internal/template/table/internal.js +40 -9
  151. package/lib/internal/template/table/internal.js.map +1 -1
  152. package/lib/internal/template/table/multi-column-sort/live-announcement.d.ts +16 -0
  153. package/lib/internal/template/table/multi-column-sort/live-announcement.d.ts.map +1 -0
  154. package/lib/internal/template/table/multi-column-sort/live-announcement.js +68 -0
  155. package/lib/internal/template/table/multi-column-sort/live-announcement.js.map +1 -0
  156. package/lib/internal/template/table/multi-column-sort/utils.d.ts +45 -0
  157. package/lib/internal/template/table/multi-column-sort/utils.d.ts.map +1 -0
  158. package/lib/internal/template/table/multi-column-sort/utils.js +76 -0
  159. package/lib/internal/template/table/multi-column-sort/utils.js.map +1 -0
  160. package/lib/internal/template/table/styles.css.js +37 -36
  161. package/lib/internal/template/table/styles.scoped.css +46 -43
  162. package/lib/internal/template/table/styles.selectors.js +37 -36
  163. package/lib/internal/template/table/thead.d.ts +3 -0
  164. package/lib/internal/template/table/thead.d.ts.map +1 -1
  165. package/lib/internal/template/table/thead.js +3 -3
  166. package/lib/internal/template/table/thead.js.map +1 -1
  167. package/lib/internal/template/table/tools-header.d.ts +2 -1
  168. package/lib/internal/template/table/tools-header.d.ts.map +1 -1
  169. package/lib/internal/template/table/tools-header.js +4 -3
  170. package/lib/internal/template/table/tools-header.js.map +1 -1
  171. package/lib/internal/template/table/use-auto-skeleton-rows.d.ts +12 -0
  172. package/lib/internal/template/table/use-auto-skeleton-rows.d.ts.map +1 -0
  173. package/lib/internal/template/table/use-auto-skeleton-rows.js +100 -0
  174. package/lib/internal/template/table/use-auto-skeleton-rows.js.map +1 -0
  175. package/lib/internal/template/test-utils/dom/button-group/index.d.ts +4 -0
  176. package/lib/internal/template/test-utils/dom/button-group/index.js +8 -0
  177. package/lib/internal/template/test-utils/dom/button-group/index.js.map +1 -1
  178. package/lib/internal/template/test-utils/dom/pagination/index.js +2 -2
  179. package/lib/internal/template/test-utils/dom/pagination/index.js.map +1 -1
  180. package/lib/internal/template/test-utils/dom/steps/index.d.ts +4 -0
  181. package/lib/internal/template/test-utils/dom/steps/index.js +6 -0
  182. package/lib/internal/template/test-utils/dom/steps/index.js.map +1 -1
  183. package/lib/internal/template/test-utils/dom/table/index.d.ts +77 -0
  184. package/lib/internal/template/test-utils/dom/table/index.js +87 -2
  185. package/lib/internal/template/test-utils/dom/table/index.js.map +1 -1
  186. package/lib/internal/template/test-utils/selectors/button-group/index.d.ts +4 -0
  187. package/lib/internal/template/test-utils/selectors/button-group/index.js +8 -0
  188. package/lib/internal/template/test-utils/selectors/button-group/index.js.map +1 -1
  189. package/lib/internal/template/test-utils/selectors/pagination/index.js +2 -2
  190. package/lib/internal/template/test-utils/selectors/pagination/index.js.map +1 -1
  191. package/lib/internal/template/test-utils/selectors/steps/index.d.ts +4 -0
  192. package/lib/internal/template/test-utils/selectors/steps/index.js +6 -0
  193. package/lib/internal/template/test-utils/selectors/steps/index.js.map +1 -1
  194. package/lib/internal/template/test-utils/selectors/table/index.d.ts +77 -0
  195. package/lib/internal/template/test-utils/selectors/table/index.js +87 -2
  196. package/lib/internal/template/test-utils/selectors/table/index.js.map +1 -1
  197. package/lib/internal/template/tooltip/internal.d.ts.map +1 -1
  198. package/lib/internal/template/tooltip/internal.js +2 -1
  199. package/lib/internal/template/tooltip/internal.js.map +1 -1
  200. package/lib/internal/template/tooltip/styles.css.js +7 -0
  201. package/lib/internal/template/tooltip/styles.scoped.css +165 -0
  202. package/lib/internal/template/tooltip/styles.selectors.js +8 -0
  203. package/lib/internal/template/top-navigation/use-top-navigation.d.ts.map +1 -1
  204. package/lib/internal/template/top-navigation/use-top-navigation.js +2 -5
  205. package/lib/internal/template/top-navigation/use-top-navigation.js.map +1 -1
  206. package/package.json +1 -1
@@ -30,6 +30,11 @@ export declare function calculateScroll({ insetBlockStart, blockSize }: Bounding
30
30
  * Supports only vertical scrolling.
31
31
  */
32
32
  export declare function scrollRectangleIntoView(box: BoundingBox, scrollableParent?: HTMLElement): void;
33
+ /**
34
+ * Returns the element's ancestors whose computed `overflow-y` is `auto` or `scroll`,
35
+ * ordered nearest-first. These are the ancestors capable of producing a vertical scrollbar.
36
+ */
37
+ export declare function getScrollableParents(element: HTMLElement): HTMLElement[];
33
38
  export declare function getFirstScrollableParent(element: HTMLElement): HTMLElement | undefined;
34
39
  export {};
35
40
  //# sourceMappingURL=scrollable-containers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scrollable-containers.d.ts","sourceRoot":"","sources":["../../../../src/internal/utils/scrollable-containers.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,WAAW,KAAG,WAAW,EAUpE,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,gFAKzC;IACD,OAAO,EAAE,WAAW,CAAC;IACrB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,wBAAwB,EAAE,OAAO,CAAC;CACnC,KAAG,WAAW,EAuCd,CAAC;AAEF,KAAK,qBAAqB,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1E;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,OAAO,GAAE,qBAA+D,QAGzE;AAED,wBAAgB,eAAe,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,WAAW,UAW1E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAE,WAAW,QAKvF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAOtF"}
1
+ {"version":3,"file":"scrollable-containers.d.ts","sourceRoot":"","sources":["../../../../src/internal/utils/scrollable-containers.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,WAAW,KAAG,WAAW,EAUpE,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,gFAKzC;IACD,OAAO,EAAE,WAAW,CAAC;IACrB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,wBAAwB,EAAE,OAAO,CAAC;CACnC,KAAG,WAAW,EAuCd,CAAC;AAEF,KAAK,qBAAqB,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1E;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,OAAO,GAAE,qBAA+D,QAGzE;AAED,wBAAgB,eAAe,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,WAAW,UAW1E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAE,WAAW,QAKvF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,CAUxE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAOtF"}
@@ -1,6 +1,7 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { findUpUntil } from '@cloudscape-design/component-toolkit/dom';
4
+ import { isHTMLElement } from './dom';
4
5
  export const getOverflowParents = (element) => {
5
6
  const parents = [];
6
7
  let node = element;
@@ -89,6 +90,21 @@ export function scrollRectangleIntoView(box, scrollableParent) {
89
90
  (scrollableParent || window).scrollBy(0, scrollAmount);
90
91
  }
91
92
  }
93
+ /**
94
+ * Returns the element's ancestors whose computed `overflow-y` is `auto` or `scroll`,
95
+ * ordered nearest-first. These are the ancestors capable of producing a vertical scrollbar.
96
+ */
97
+ export function getScrollableParents(element) {
98
+ const parents = [];
99
+ let node = element.parentElement;
100
+ while (node) {
101
+ if (isHTMLElement(node) && ['auto', 'scroll'].includes(getComputedStyle(node).overflowY)) {
102
+ parents.push(node);
103
+ }
104
+ node = node.parentElement;
105
+ }
106
+ return parents;
107
+ }
92
108
  export function getFirstScrollableParent(element) {
93
109
  return (findUpUntil(element, el => {
94
110
  const overflows = el.scrollHeight > el.clientHeight;
@@ -1 +1 @@
1
- {"version":3,"file":"scrollable-containers.js","sourceRoot":"","sources":["../../../../src/internal/utils/scrollable-containers.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AASvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAoB,EAAiB,EAAE;IACxE,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,IAAI,IAAI,GAAuB,OAAO,CAAC;IAEvC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,KAAK,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1E,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,EAC1C,OAAO,EACP,oBAAoB,GAAG,KAAK,EAC5B,gBAAgB,GAAG,KAAK,EACxB,wBAAwB,GAAG,KAAK,GAMjC,EAAiB,EAAE;;IAClB,MAAM,OAAO,GAAG,gBAAgB;QAC9B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACnC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;YAChE,OAAO;gBACL,0DAA0D;gBAC1D,gDAAgD;gBAChD,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;gBAC9D,UAAU,EAAE,KAAK;gBACjB,eAAe,EAAE,GAAG;gBACpB,gBAAgB,EAAE,IAAI;aACvB,CAAC;QACJ,CAAC,CAAC,CAAC;IAEP,IAAI,wBAAwB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;QACvC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC;YACX,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC;YACpF,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;YACrF,eAAe,EAAE,kBAAkB,CAAC,GAAG;YACvC,gBAAgB,EAAE,kBAAkB,CAAC,IAAI;SAC1C,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,MAAA,OAAO,CAAC,aAAa,CAAC,WAAW,mCAAI,MAAM,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,MAAA,MAAA,YAAY,CAAC,cAAc,0CAAE,MAAM,mCAAI,YAAY,CAAC,WAAW;YAC1E,UAAU,EAAE,MAAA,MAAA,YAAY,CAAC,cAAc,0CAAE,KAAK,mCAAI,YAAY,CAAC,UAAU;YACzE,eAAe,EAAE,CAAC;YAClB,gBAAgB,EAAE,CAAC;SACpB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,oBAAoB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAIF;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAgC,EAChC,UAAiC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;;IAExE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,wDAAG,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAE,eAAe,EAAE,SAAS,EAAe;IACzE,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,eAAe,CAAC;IACzB,CAAC;SAAM,IAAI,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5D,IAAI,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,OAAO,eAAe,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAgB,EAAE,gBAA8B;IACtF,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,YAAY,EAAE,CAAC;QACjB,CAAC,gBAAgB,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAoB;IAC3D,OAAO,CACL,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;QACxB,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;QACpD,OAAO,SAAS,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IAClF,CAAC,CAAC,IAAI,SAAS,CAChB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { findUpUntil } from '@cloudscape-design/component-toolkit/dom';\n\nexport interface BoundingBox {\n blockSize: number;\n inlineSize: number;\n insetBlockStart: number;\n insetInlineStart: number;\n}\n\nexport const getOverflowParents = (element: HTMLElement): HTMLElement[] => {\n const parents = [];\n let node: HTMLElement | null = element;\n\n while ((node = node.parentElement) && node !== element.ownerDocument.body) {\n if (getComputedStyle(node).overflow !== 'visible') {\n parents.push(node);\n }\n }\n return parents;\n};\n\nexport const getOverflowParentDimensions = ({\n element,\n excludeClosestParent = false,\n expandToViewport = false,\n canExpandOutsideViewport = false,\n}: {\n element: HTMLElement;\n excludeClosestParent: boolean;\n expandToViewport: boolean;\n canExpandOutsideViewport: boolean;\n}): BoundingBox[] => {\n const parents = expandToViewport\n ? []\n : getOverflowParents(element).map(el => {\n const { height, width, top, left } = el.getBoundingClientRect();\n return {\n // Treat the whole scrollable area as the available height\n // if we're allowed to expand past the viewport.\n blockSize: canExpandOutsideViewport ? el.scrollHeight : height,\n inlineSize: width,\n insetBlockStart: top,\n insetInlineStart: left,\n };\n });\n\n if (canExpandOutsideViewport && !expandToViewport) {\n const document = element.ownerDocument;\n const documentDimensions = document.documentElement.getBoundingClientRect();\n parents.push({\n inlineSize: Math.max(documentDimensions.width, document.documentElement.clientWidth),\n blockSize: Math.max(documentDimensions.height, document.documentElement.clientHeight),\n insetBlockStart: documentDimensions.top,\n insetInlineStart: documentDimensions.left,\n });\n } else {\n const owningWindow = element.ownerDocument.defaultView ?? window;\n parents.push({\n blockSize: owningWindow.visualViewport?.height ?? owningWindow.innerHeight,\n inlineSize: owningWindow.visualViewport?.width ?? owningWindow.innerWidth,\n insetBlockStart: 0,\n insetInlineStart: 0,\n });\n }\n\n if (excludeClosestParent && !expandToViewport) {\n parents.shift();\n }\n\n return parents;\n};\n\ntype ScrollIntoViewOptions = Parameters<HTMLElement['scrollIntoView']>[0];\n\n/**\n * Calls `scrollIntoView` on the provided element with sensible defaults. If\n * the element does not exist or does not support the `scrollIntoView`\n * method, it will do nothing. This wrapper is created to support environments\n * where the native function is not available like JSDom (feature request:\n * https://github.com/jsdom/jsdom/issues/1422).\n *\n * @param element to be scrolled into view\n * @param options native options for `scrollIntoView`\n */\nexport function scrollElementIntoView(\n element: HTMLElement | undefined,\n options: ScrollIntoViewOptions = { block: 'nearest', inline: 'nearest' }\n) {\n element?.scrollIntoView?.(options);\n}\n\nexport function calculateScroll({ insetBlockStart, blockSize }: BoundingBox) {\n if (insetBlockStart < 0) {\n return insetBlockStart;\n } else if (insetBlockStart + blockSize > window.innerHeight) {\n if (blockSize > window.innerHeight) {\n return insetBlockStart;\n } else {\n return insetBlockStart + blockSize - window.innerHeight;\n }\n }\n return 0;\n}\n\n/**\n * For elements with fixed position, the browser's native scrollIntoView API doesn't work,\n * so we need to manually scroll to the element's position.\n * Supports only vertical scrolling.\n */\nexport function scrollRectangleIntoView(box: BoundingBox, scrollableParent?: HTMLElement) {\n const scrollAmount = calculateScroll(box);\n if (scrollAmount) {\n (scrollableParent || window).scrollBy(0, scrollAmount);\n }\n}\n\nexport function getFirstScrollableParent(element: HTMLElement): HTMLElement | undefined {\n return (\n findUpUntil(element, el => {\n const overflows = el.scrollHeight > el.clientHeight;\n return overflows && ['scroll', 'auto'].includes(getComputedStyle(el).overflowY);\n }) || undefined\n );\n}\n"]}
1
+ {"version":3,"file":"scrollable-containers.js","sourceRoot":"","sources":["../../../../src/internal/utils/scrollable-containers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { findUpUntil } from '@cloudscape-design/component-toolkit/dom';\n\nimport { isHTMLElement } from './dom';\n\nexport interface BoundingBox {\n blockSize: number;\n inlineSize: number;\n insetBlockStart: number;\n insetInlineStart: number;\n}\n\nexport const getOverflowParents = (element: HTMLElement): HTMLElement[] => {\n const parents = [];\n let node: HTMLElement | null = element;\n\n while ((node = node.parentElement) && node !== element.ownerDocument.body) {\n if (getComputedStyle(node).overflow !== 'visible') {\n parents.push(node);\n }\n }\n return parents;\n};\n\nexport const getOverflowParentDimensions = ({\n element,\n excludeClosestParent = false,\n expandToViewport = false,\n canExpandOutsideViewport = false,\n}: {\n element: HTMLElement;\n excludeClosestParent: boolean;\n expandToViewport: boolean;\n canExpandOutsideViewport: boolean;\n}): BoundingBox[] => {\n const parents = expandToViewport\n ? []\n : getOverflowParents(element).map(el => {\n const { height, width, top, left } = el.getBoundingClientRect();\n return {\n // Treat the whole scrollable area as the available height\n // if we're allowed to expand past the viewport.\n blockSize: canExpandOutsideViewport ? el.scrollHeight : height,\n inlineSize: width,\n insetBlockStart: top,\n insetInlineStart: left,\n };\n });\n\n if (canExpandOutsideViewport && !expandToViewport) {\n const document = element.ownerDocument;\n const documentDimensions = document.documentElement.getBoundingClientRect();\n parents.push({\n inlineSize: Math.max(documentDimensions.width, document.documentElement.clientWidth),\n blockSize: Math.max(documentDimensions.height, document.documentElement.clientHeight),\n insetBlockStart: documentDimensions.top,\n insetInlineStart: documentDimensions.left,\n });\n } else {\n const owningWindow = element.ownerDocument.defaultView ?? window;\n parents.push({\n blockSize: owningWindow.visualViewport?.height ?? owningWindow.innerHeight,\n inlineSize: owningWindow.visualViewport?.width ?? owningWindow.innerWidth,\n insetBlockStart: 0,\n insetInlineStart: 0,\n });\n }\n\n if (excludeClosestParent && !expandToViewport) {\n parents.shift();\n }\n\n return parents;\n};\n\ntype ScrollIntoViewOptions = Parameters<HTMLElement['scrollIntoView']>[0];\n\n/**\n * Calls `scrollIntoView` on the provided element with sensible defaults. If\n * the element does not exist or does not support the `scrollIntoView`\n * method, it will do nothing. This wrapper is created to support environments\n * where the native function is not available like JSDom (feature request:\n * https://github.com/jsdom/jsdom/issues/1422).\n *\n * @param element to be scrolled into view\n * @param options native options for `scrollIntoView`\n */\nexport function scrollElementIntoView(\n element: HTMLElement | undefined,\n options: ScrollIntoViewOptions = { block: 'nearest', inline: 'nearest' }\n) {\n element?.scrollIntoView?.(options);\n}\n\nexport function calculateScroll({ insetBlockStart, blockSize }: BoundingBox) {\n if (insetBlockStart < 0) {\n return insetBlockStart;\n } else if (insetBlockStart + blockSize > window.innerHeight) {\n if (blockSize > window.innerHeight) {\n return insetBlockStart;\n } else {\n return insetBlockStart + blockSize - window.innerHeight;\n }\n }\n return 0;\n}\n\n/**\n * For elements with fixed position, the browser's native scrollIntoView API doesn't work,\n * so we need to manually scroll to the element's position.\n * Supports only vertical scrolling.\n */\nexport function scrollRectangleIntoView(box: BoundingBox, scrollableParent?: HTMLElement) {\n const scrollAmount = calculateScroll(box);\n if (scrollAmount) {\n (scrollableParent || window).scrollBy(0, scrollAmount);\n }\n}\n\n/**\n * Returns the element's ancestors whose computed `overflow-y` is `auto` or `scroll`,\n * ordered nearest-first. These are the ancestors capable of producing a vertical scrollbar.\n */\nexport function getScrollableParents(element: HTMLElement): HTMLElement[] {\n const parents: HTMLElement[] = [];\n let node = element.parentElement;\n while (node) {\n if (isHTMLElement(node) && ['auto', 'scroll'].includes(getComputedStyle(node).overflowY)) {\n parents.push(node);\n }\n node = node.parentElement;\n }\n return parents;\n}\n\nexport function getFirstScrollableParent(element: HTMLElement): HTMLElement | undefined {\n return (\n findUpUntil(element, el => {\n const overflows = el.scrollHeight > el.clientHeight;\n return overflows && ['scroll', 'auto'].includes(getComputedStyle(el).overflowY);\n }) || undefined\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"implementation.d.ts","sourceRoot":"","sources":["../../../src/side-navigation/implementation.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAGlF,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAMnD,KAAK,2BAA2B,GAAG,mBAAmB,GAAG,0BAA0B,CAAC;AAEpF,wBAAgB,4BAA4B,CAAC,EAC3C,MAAM,EACN,YAAY,EACZ,UAAU,EACV,KAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAiB,EACjB,iBAAiB,EACjB,GAAG,KAAK,EACT,EAAE,2BAA2B,eAuE7B;AAED,eAAO,MAAM,8BAA8B,mGAA0D,CAAC"}
1
+ {"version":3,"file":"implementation.d.ts","sourceRoot":"","sources":["../../../src/side-navigation/implementation.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAGlF,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAMnD,KAAK,2BAA2B,GAAG,mBAAmB,GAAG,0BAA0B,CAAC;AAEpF,wBAAgB,4BAA4B,CAAC,EAC3C,MAAM,EACN,YAAY,EACZ,UAAU,EACV,KAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAiB,EACjB,iBAAiB,EACjB,GAAG,KAAK,EACT,EAAE,2BAA2B,eAyE7B;AAED,eAAO,MAAM,8BAA8B,mGAA0D,CAAC"}
@@ -8,12 +8,13 @@ import { fireCancelableEvent, fireNonCancelableEvent } from '../internal/events'
8
8
  import { isDevelopment } from '../internal/is-development';
9
9
  import { createWidgetizedComponent } from '../internal/widgets';
10
10
  import { Header, NavigationItemsList } from './parts';
11
- import { checkDuplicateHrefs, generateExpandableItemsMapping } from './util';
11
+ import { checkDuplicateHrefs, generateExpandableItemsMapping, hasNavigationIcons } from './util';
12
12
  import styles from './styles.css.js';
13
13
  export function SideNavigationImplementation({ header, itemsControl, activeHref, items = [], onFollow, onChange, collapsed = false, __internalRootRef, ...props }) {
14
14
  const baseProps = getBaseProps(props);
15
15
  const isToolbar = useAppLayoutToolbarDesignEnabled();
16
16
  const parentMap = useMemo(() => generateExpandableItemsMapping(items), [items]);
17
+ const withIcons = useMemo(() => hasNavigationIcons(items), [items]);
17
18
  const [activeTooltip, setActiveTooltip] = useState(null);
18
19
  if (isDevelopment) {
19
20
  // This code should be wiped in production anyway.
@@ -31,7 +32,7 @@ export function SideNavigationImplementation({ header, itemsControl, activeHref,
31
32
  header && (React.createElement(Header, { definition: header, activeHref: activeHref, fireChange: onChangeHandler, fireFollow: onFollowHandler, collapsed: collapsed })),
32
33
  !collapsed && itemsControl && React.createElement("div", { className: styles['items-control'] }, itemsControl),
33
34
  items && (React.createElement("div", { className: styles['list-container'] },
34
- React.createElement(NavigationItemsList, { variant: "root", items: items, fireFollow: onFollowHandler, fireChange: onChangeHandler, activeHref: activeHref, collapsed: collapsed, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip })))));
35
+ React.createElement(NavigationItemsList, { variant: "root", items: items, fireFollow: onFollowHandler, fireChange: onChangeHandler, activeHref: activeHref, collapsed: collapsed, withIcons: withIcons, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip })))));
35
36
  }
36
37
  export const createWidgetizedSideNavigation = createWidgetizedComponent(SideNavigationImplementation);
37
38
  //# sourceMappingURL=implementation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"implementation.js","sourceRoot":"","sources":["../../../src/side-navigation/implementation.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { useAppLayoutToolbarDesignEnabled } from '../app-layout/utils/feature-flags';\nimport { getBaseProps } from '../internal/base-component';\nimport { fireCancelableEvent, fireNonCancelableEvent } from '../internal/events';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { isDevelopment } from '../internal/is-development';\nimport { createWidgetizedComponent } from '../internal/widgets';\nimport { SideNavigationProps } from './interfaces';\nimport { Header, NavigationItemsList } from './parts';\nimport { checkDuplicateHrefs, generateExpandableItemsMapping } from './util';\n\nimport styles from './styles.css.js';\n\ntype SideNavigationInternalProps = SideNavigationProps & InternalBaseComponentProps;\n\nexport function SideNavigationImplementation({\n header,\n itemsControl,\n activeHref,\n items = [],\n onFollow,\n onChange,\n collapsed = false,\n __internalRootRef,\n ...props\n}: SideNavigationInternalProps) {\n const baseProps = getBaseProps(props);\n const isToolbar = useAppLayoutToolbarDesignEnabled();\n const parentMap = useMemo(() => generateExpandableItemsMapping(items), [items]);\n const [activeTooltip, setActiveTooltip] = useState<string | null>(null);\n\n if (isDevelopment) {\n // This code should be wiped in production anyway.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => checkDuplicateHrefs(items), [items]);\n }\n\n const onChangeHandler = useCallback(\n (item: SideNavigationProps.Section | SideNavigationProps.ExpandableLinkGroup, expanded: boolean) => {\n // generateExpandableItemsMapping walks through the entire tree, so we're certain about getting a value.\n fireNonCancelableEvent(onChange, { item, expanded: expanded, expandableParents: parentMap.get(item)! });\n },\n [onChange, parentMap]\n );\n\n const onFollowHandler = useCallback(\n (\n item:\n | SideNavigationProps.Link\n | SideNavigationProps.Header\n | SideNavigationProps.LinkGroup\n | SideNavigationProps.ExpandableLinkGroup,\n sourceEvent: React.SyntheticEvent | Event\n ) => {\n fireCancelableEvent(onFollow, item, sourceEvent);\n },\n [onFollow]\n );\n\n return (\n <div\n {...baseProps}\n className={clsx(\n styles.root,\n baseProps.className,\n isToolbar && styles['with-toolbar'],\n collapsed && styles['root--collapsed']\n )}\n ref={__internalRootRef}\n >\n {header && (\n <Header\n definition={header}\n activeHref={activeHref}\n fireChange={onChangeHandler}\n fireFollow={onFollowHandler}\n collapsed={collapsed}\n />\n )}\n {!collapsed && itemsControl && <div className={styles['items-control']}>{itemsControl}</div>}\n {items && (\n <div className={styles['list-container']}>\n <NavigationItemsList\n variant=\"root\"\n items={items}\n fireFollow={onFollowHandler}\n fireChange={onChangeHandler}\n activeHref={activeHref}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </div>\n )}\n </div>\n );\n}\n\nexport const createWidgetizedSideNavigation = createWidgetizedComponent(SideNavigationImplementation);\n"]}
1
+ {"version":3,"file":"implementation.js","sourceRoot":"","sources":["../../../src/side-navigation/implementation.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { useAppLayoutToolbarDesignEnabled } from '../app-layout/utils/feature-flags';\nimport { getBaseProps } from '../internal/base-component';\nimport { fireCancelableEvent, fireNonCancelableEvent } from '../internal/events';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { isDevelopment } from '../internal/is-development';\nimport { createWidgetizedComponent } from '../internal/widgets';\nimport { SideNavigationProps } from './interfaces';\nimport { Header, NavigationItemsList } from './parts';\nimport { checkDuplicateHrefs, generateExpandableItemsMapping, hasNavigationIcons } from './util';\n\nimport styles from './styles.css.js';\n\ntype SideNavigationInternalProps = SideNavigationProps & InternalBaseComponentProps;\n\nexport function SideNavigationImplementation({\n header,\n itemsControl,\n activeHref,\n items = [],\n onFollow,\n onChange,\n collapsed = false,\n __internalRootRef,\n ...props\n}: SideNavigationInternalProps) {\n const baseProps = getBaseProps(props);\n const isToolbar = useAppLayoutToolbarDesignEnabled();\n const parentMap = useMemo(() => generateExpandableItemsMapping(items), [items]);\n const withIcons = useMemo(() => hasNavigationIcons(items), [items]);\n const [activeTooltip, setActiveTooltip] = useState<string | null>(null);\n\n if (isDevelopment) {\n // This code should be wiped in production anyway.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => checkDuplicateHrefs(items), [items]);\n }\n\n const onChangeHandler = useCallback(\n (item: SideNavigationProps.Section | SideNavigationProps.ExpandableLinkGroup, expanded: boolean) => {\n // generateExpandableItemsMapping walks through the entire tree, so we're certain about getting a value.\n fireNonCancelableEvent(onChange, { item, expanded: expanded, expandableParents: parentMap.get(item)! });\n },\n [onChange, parentMap]\n );\n\n const onFollowHandler = useCallback(\n (\n item:\n | SideNavigationProps.Link\n | SideNavigationProps.Header\n | SideNavigationProps.LinkGroup\n | SideNavigationProps.ExpandableLinkGroup,\n sourceEvent: React.SyntheticEvent | Event\n ) => {\n fireCancelableEvent(onFollow, item, sourceEvent);\n },\n [onFollow]\n );\n\n return (\n <div\n {...baseProps}\n className={clsx(\n styles.root,\n baseProps.className,\n isToolbar && styles['with-toolbar'],\n collapsed && styles['root--collapsed']\n )}\n ref={__internalRootRef}\n >\n {header && (\n <Header\n definition={header}\n activeHref={activeHref}\n fireChange={onChangeHandler}\n fireFollow={onFollowHandler}\n collapsed={collapsed}\n />\n )}\n {!collapsed && itemsControl && <div className={styles['items-control']}>{itemsControl}</div>}\n {items && (\n <div className={styles['list-container']}>\n <NavigationItemsList\n variant=\"root\"\n items={items}\n fireFollow={onFollowHandler}\n fireChange={onChangeHandler}\n activeHref={activeHref}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </div>\n )}\n </div>\n );\n}\n\nexport const createWidgetizedSideNavigation = createWidgetizedComponent(SideNavigationImplementation);\n"]}
@@ -16,7 +16,8 @@ export declare function Header({ definition, activeHref, fireFollow, collapsed }
16
16
  interface NavigationItemsListProps extends BaseItemComponentProps {
17
17
  items: ReadonlyArray<SideNavigationProps.Item>;
18
18
  variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';
19
+ withIcons?: boolean;
19
20
  }
20
- export declare function NavigationItemsList({ items, variant, activeHref, fireChange, fireFollow, position, collapsed, activeTooltip, setActiveTooltip, }: NavigationItemsListProps): JSX.Element;
21
+ export declare function NavigationItemsList({ items, variant, activeHref, fireChange, fireFollow, position, collapsed, withIcons, activeTooltip, setActiveTooltip, }: NavigationItemsListProps): JSX.Element;
21
22
  export {};
22
23
  //# sourceMappingURL=parts.d.ts.map
@@ -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;CACxF;AAQD,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAa,EACb,SAAS,EACT,aAAa,EACb,gBAAgB,GACjB,EAAE,wBAAwB,eA0R1B"}
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"}
@@ -43,7 +43,7 @@ export function Header({ definition, activeHref, fireFollow, collapsed }) {
43
43
  React.createElement("span", { className: clsx(styles['header-link-text'], analyticsSelectors['header-link-text']) }, definition.text)))),
44
44
  !collapsed && React.createElement(Divider, { isPresentational: true, variant: "header" })));
45
45
  }
46
- export function NavigationItemsList({ items, variant, activeHref, fireChange, fireFollow, position = '', collapsed, activeTooltip, setActiveTooltip, }) {
46
+ export function NavigationItemsList({ items, variant, activeHref, fireChange, fireFollow, position = '', collapsed, withIcons, activeTooltip, setActiveTooltip, }) {
47
47
  const lists = [];
48
48
  let currentListIndex = 0;
49
49
  lists[currentListIndex] = {
@@ -127,28 +127,28 @@ export function NavigationItemsList({ items, variant, activeHref, fireChange, fi
127
127
  case 'section': {
128
128
  (_b = lists[currentListIndex].items) === null || _b === void 0 ? void 0 : _b.push({
129
129
  element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: clsx(styles['list-item'], collapsed && styles['list-item--collapsed']) },
130
- React.createElement(Section, { definition: item, activeHref: activeHref, variant: variant, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition, collapsed: collapsed, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))),
130
+ React.createElement(Section, { definition: item, activeHref: activeHref, variant: variant, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition, collapsed: collapsed, withIcons: withIcons, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))),
131
131
  });
132
132
  return;
133
133
  }
134
134
  case 'section-group': {
135
135
  (_c = lists[currentListIndex].items) === null || _c === void 0 ? void 0 : _c.push({
136
136
  element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: clsx(styles['list-item'], collapsed && styles['list-item--collapsed']) },
137
- React.createElement(SectionGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition, collapsed: collapsed, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))),
137
+ React.createElement(SectionGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition, collapsed: collapsed, withIcons: withIcons, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))),
138
138
  });
139
139
  return;
140
140
  }
141
141
  case 'link-group': {
142
142
  (_d = lists[currentListIndex].items) === null || _d === void 0 ? void 0 : _d.push({
143
143
  element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: clsx(styles['list-item'], collapsed && styles['list-item--collapsed']) },
144
- React.createElement(LinkGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition, collapsed: collapsed, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))),
144
+ React.createElement(LinkGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition, collapsed: collapsed, withIcons: withIcons, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))),
145
145
  });
146
146
  return;
147
147
  }
148
148
  case 'expandable-link-group': {
149
149
  (_e = lists[currentListIndex].items) === null || _e === void 0 ? void 0 : _e.push({
150
150
  element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: clsx(styles['list-item'], collapsed && styles['list-item--collapsed']) },
151
- React.createElement(ExpandableLinkGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, variant: variant, position: itemPosition, collapsed: collapsed, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))),
151
+ React.createElement(ExpandableLinkGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, variant: variant, position: itemPosition, collapsed: collapsed, withIcons: withIcons, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))),
152
152
  });
153
153
  return;
154
154
  }
@@ -182,6 +182,7 @@ export function NavigationItemsList({ items, variant, activeHref, fireChange, fi
182
182
  return (React.createElement("ul", { key: `list-${index}`, className: clsx(styles.list, styles[`list-variant-${list.listVariant}`], {
183
183
  [styles['list-variant-root--first']]: list.listVariant === 'root' && index === 0,
184
184
  [styles['list-variant-root--collapsed']]: list.listVariant === 'root' && collapsed,
185
+ [styles['list--with-icons']]: withIcons,
185
186
  }) }, list.items.map(item => item.element)));
186
187
  }
187
188
  })));
@@ -258,7 +259,7 @@ function Link({ definition, activeHref, fireFollow, position, collapsed, activeT
258
259
  internalLink,
259
260
  React.createElement("span", { className: clsx(styles.info, testUtilStyles.info) }, definition.info))) : (internalLink);
260
261
  }
261
- function Section({ definition, activeHref, fireFollow, fireChange, variant, position, collapsed }) {
262
+ function Section({ definition, activeHref, fireFollow, fireChange, variant, position, collapsed, withIcons, }) {
262
263
  var _a;
263
264
  const [expanded, setExpanded] = useState((_a = definition.defaultExpanded) !== null && _a !== void 0 ? _a : true);
264
265
  const isVisualRefresh = useVisualRefresh();
@@ -275,18 +276,18 @@ function Section({ definition, activeHref, fireFollow, fireChange, variant, posi
275
276
  }
276
277
  const isInSectionGroup = variant === 'section-group';
277
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) },
278
- React.createElement(NavigationItemsList, { variant: "section", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position })));
279
+ React.createElement(NavigationItemsList, { variant: "section", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position, withIcons: withIcons })));
279
280
  }
280
- function SectionGroup({ definition, activeHref, fireFollow, fireChange, position, collapsed }) {
281
+ function SectionGroup({ definition, activeHref, fireFollow, fireChange, position, collapsed, withIcons, }) {
281
282
  const isOneTheme = useOneTheme();
282
283
  if (collapsed) {
283
284
  return null;
284
285
  }
285
286
  return (React.createElement("div", { className: styles['section-group'] },
286
287
  React.createElement(InternalBox, { className: styles['section-group-title'], variant: "h3", fontSize: isOneTheme ? 'heading-s' : undefined }, definition.title),
287
- React.createElement(NavigationItemsList, { variant: "section-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position })));
288
+ React.createElement(NavigationItemsList, { variant: "section-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position, withIcons: withIcons })));
288
289
  }
289
- function LinkGroup({ definition, activeHref, fireFollow, fireChange, position, collapsed, activeTooltip, setActiveTooltip, }) {
290
+ function LinkGroup({ definition, activeHref, fireFollow, fireChange, position, collapsed, withIcons, activeTooltip, setActiveTooltip, }) {
290
291
  checkSafeUrl('SideNavigation', definition.href);
291
292
  return (React.createElement(React.Fragment, null,
292
293
  React.createElement(Link, { definition: {
@@ -296,9 +297,9 @@ function LinkGroup({ definition, activeHref, fireFollow, fireChange, position, c
296
297
  info: definition.info,
297
298
  icon: definition.icon,
298
299
  }, fireFollow: (_, event) => fireFollow(definition, event), fireChange: fireChange, activeHref: activeHref, position: position, collapsed: collapsed, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }),
299
- !collapsed && (React.createElement(NavigationItemsList, { variant: "link-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position }))));
300
+ !collapsed && (React.createElement(NavigationItemsList, { variant: "link-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position, withIcons: withIcons }))));
300
301
  }
301
- function ExpandableLinkGroup({ definition, fireFollow, fireChange, activeHref, variant, position, collapsed, activeTooltip, setActiveTooltip, }) {
302
+ function ExpandableLinkGroup({ definition, fireFollow, fireChange, activeHref, variant, position, collapsed, withIcons, activeTooltip, setActiveTooltip, }) {
302
303
  // Check whether the definition contains an active link and memoize it to avoid
303
304
  // rechecking every time.
304
305
  const containsActiveLink = useMemo(() => {
@@ -336,6 +337,6 @@ function ExpandableLinkGroup({ definition, fireFollow, fireChange, activeHref, v
336
337
  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 }));
337
338
  }
338
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 }) },
339
- React.createElement(NavigationItemsList, { variant: "expandable-link-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position })));
340
+ React.createElement(NavigationItemsList, { variant: "expandable-link-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position, withIcons: withIcons })));
340
341
  }
341
342
  //# sourceMappingURL=parts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parts.js","sourceRoot":"","sources":["../../../src/side-navigation/parts.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalBox from '../box/internal';\nimport { ExpandableSectionProps } from '../expandable-section/interfaces';\nimport InternalExpandableSection from '../expandable-section/internal';\nimport { useInternalI18n } from '../i18n/context';\nimport InternalIcon from '../icon/internal';\nimport { isPlainLeftClick } from '../internal/events';\nimport { useOneTheme, useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport Tooltip from '../tooltip/internal';\nimport { NonCancelableCustomEvent } from '../types/events';\nimport { GeneratedAnalyticsMetadataSideNavigationClick } from './analytics-metadata/interfaces';\nimport { SideNavigationProps } from './interfaces';\nimport { hasActiveLink } from './util';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\n\ninterface BaseItemComponentProps {\n activeHref?: string;\n fireChange: (item: SideNavigationProps.Section | SideNavigationProps.ExpandableLinkGroup, expanded: boolean) => void;\n fireFollow: (\n item:\n | SideNavigationProps.Link\n | SideNavigationProps.Header\n | SideNavigationProps.LinkGroup\n | SideNavigationProps.ExpandableLinkGroup,\n event: React.SyntheticEvent | Event\n ) => void;\n position?: string;\n collapsed?: boolean;\n activeTooltip?: string | null;\n setActiveTooltip?: (position: string | null) => void;\n}\n\ninterface HeaderProps extends BaseItemComponentProps {\n definition: SideNavigationProps.Header;\n}\n\nexport function Header({ definition, activeHref, fireFollow, collapsed }: HeaderProps) {\n checkSafeUrl('SideNavigation', definition.href);\n const onClick = useCallback(\n (event: React.MouseEvent) => {\n if (isPlainLeftClick(event)) {\n fireFollow(definition, event);\n }\n },\n [fireFollow, definition]\n );\n\n const clickActionAnalyticsMetadata: GeneratedAnalyticsMetadataSideNavigationClick = {\n action: 'click',\n detail: {\n label: `.${analyticsSelectors['header-link-text']}`,\n external: 'false',\n href: definition.href,\n position: 'header',\n },\n };\n\n return (\n <>\n {!collapsed && (\n <h2 className={styles.header}>\n <a\n href={definition.href}\n className={clsx(styles['header-link'], { [styles['header-link--has-logo']]: !!definition.logo })}\n aria-current={definition.href === activeHref ? 'page' : undefined}\n onClick={onClick}\n {...getAnalyticsMetadataAttribute(clickActionAnalyticsMetadata)}\n >\n {definition.logo &&\n (definition.logo.svg ? (\n <span\n className={clsx(styles['header-logo'], {\n [styles['header-logo--stretched']]: !definition.text,\n })}\n >\n {definition.logo.svg}\n </span>\n ) : (\n <img\n className={clsx(styles['header-logo'], {\n [styles['header-logo--stretched']]: !definition.text,\n })}\n src={definition.logo.src}\n alt={definition.logo.alt}\n />\n ))}\n <span className={clsx(styles['header-link-text'], analyticsSelectors['header-link-text'])}>\n {definition.text}\n </span>\n </a>\n </h2>\n )}\n {!collapsed && <Divider isPresentational={true} variant=\"header\" />}\n </>\n );\n}\n\ninterface NavigationItemsListProps extends BaseItemComponentProps {\n items: ReadonlyArray<SideNavigationProps.Item>;\n variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n}\n\ninterface Item {\n element?: ReactNode;\n listVariant?: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n items?: Array<Item>;\n}\n\nexport function NavigationItemsList({\n items,\n variant,\n activeHref,\n fireChange,\n fireFollow,\n position = '',\n collapsed,\n activeTooltip,\n setActiveTooltip,\n}: NavigationItemsListProps) {\n const lists: Array<Item> = [];\n let currentListIndex = 0;\n lists[currentListIndex] = {\n listVariant: variant,\n items: [],\n };\n\n items.forEach((item, index) => {\n const itemid = index + 1;\n const itemPosition = `${position ? `${position},` : ''}${itemid}`;\n\n // Emits a divider as its own list segment (dividers break the <ul> grouping).\n function pushDivider() {\n lists.push({\n listVariant: variant,\n element: (\n <div data-itemid={`item-${itemid}`}>\n <Divider variant=\"default\" collapsed={collapsed} />\n </div>\n ),\n });\n currentListIndex =\n lists.push({\n listVariant: variant,\n items: [],\n }) - 1;\n }\n\n // Renders icon-bearing children of a container item as a collapsed group.\n // The inner <ul> carries the group label so list semantics are preserved\n // for screen readers even when the visual header is hidden.\n function pushCollapsedGroup(\n children: ReadonlyArray<SideNavigationProps.Item>,\n label: string,\n { leadingDivider = false }: { leadingDivider?: boolean } = {}\n ) {\n const iconChildren = children.filter(child => (child as SideNavigationProps.Link).icon);\n if (iconChildren.length === 0) {\n return;\n }\n // A section's title is hidden when collapsed; render a divider in its place\n if (leadingDivider) {\n pushDivider();\n }\n const groupElements = iconChildren.map((child, childIndex) => {\n const childPosition = `${position ? `${position},` : ''}${itemid},${childIndex + 1}`;\n return (\n <li key={childPosition} className={clsx(styles['list-item'], styles['list-item--collapsed'])}>\n <Link\n definition={child as SideNavigationProps.Link}\n activeHref={activeHref}\n fireFollow={fireFollow}\n fireChange={fireChange}\n position={childPosition}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n );\n });\n const prevItem = index > 0 ? items[index - 1] : null;\n const nextItem = index < items.length - 1 ? items[index + 1] : null;\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={`group-${itemid}`}\n className={clsx(\n styles['list-item--group'],\n (leadingDivider || prevItem?.type === 'divider') && styles['list-item--group-no-padding-start'],\n nextItem?.type === 'divider' && styles['list-item--group-no-padding-end']\n )}\n >\n <ul className={styles['list--collapsed-group']} aria-label={label}>\n {groupElements}\n </ul>\n </li>\n ),\n });\n }\n\n // In collapsed mode, flatten container items to show only icon-bearing children.\n if (collapsed && (item.type === 'expandable-link-group' || item.type === 'link-group') && !item.icon) {\n const group = item as SideNavigationProps.ExpandableLinkGroup | SideNavigationProps.LinkGroup;\n pushCollapsedGroup(group.items, group.text);\n return;\n }\n if (collapsed && (item.type === 'section' || item.type === 'section-group')) {\n const sectionLabel =\n item.type === 'section'\n ? (item as SideNavigationProps.Section).text\n : (item as SideNavigationProps.SectionGroup).title;\n // Section-groups may contain nested sections — flatten one level.\n const childItems =\n item.type === 'section'\n ? (item as SideNavigationProps.Section).items\n : (item as SideNavigationProps.SectionGroup).items.flatMap(child =>\n child.type === 'section' ? (child as SideNavigationProps.Section).items : [child]\n );\n pushCollapsedGroup(childItems, sectionLabel, { leadingDivider: true });\n return;\n }\n if (collapsed && item.type !== 'divider' && !(item as SideNavigationProps.Link).icon) {\n return;\n }\n switch (item.type) {\n case 'divider': {\n pushDivider();\n return;\n }\n case 'link': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <Link\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'section': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <Section\n definition={item}\n activeHref={activeHref}\n variant={variant}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'section-group': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <SectionGroup\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'link-group': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <LinkGroup\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'expandable-link-group': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <ExpandableLinkGroup\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n variant={variant}\n position={itemPosition}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n }\n });\n\n // In collapsed mode, skip empty item segments and deduplicate consecutive dividers.\n const filteredLists = collapsed\n ? lists.filter((list, index) => {\n if (list.items) {\n return list.items.length > 0;\n }\n // Divider — skip if preceded by another divider or empty segment, or followed by nothing.\n const prevVisible = lists\n .slice(0, index)\n .reverse()\n .find(l => !l.items || l.items.length > 0);\n const nextVisible = lists.slice(index + 1).find(l => !l.items || l.items.length > 0);\n return (\n (!prevVisible || (prevVisible.items !== undefined && prevVisible.items.length > 0)) &&\n nextVisible !== undefined &&\n (nextVisible.items === undefined || nextVisible.items.length > 0)\n );\n })\n : lists;\n\n return (\n <>\n {filteredLists.map((list, index) => {\n if (!list.items || list.items.length === 0) {\n return (\n <div\n key={`hr-${index}`}\n className={clsx(styles.list, styles[`list-variant-${variant}`], {\n [styles['list-variant-root--first']]: list.listVariant === 'root' && index === 0,\n [styles['list-variant-root--collapsed']]: list.listVariant === 'root' && collapsed,\n })}\n >\n {list.element}\n </div>\n );\n } else {\n return (\n <ul\n key={`list-${index}`}\n className={clsx(styles.list, styles[`list-variant-${list.listVariant}`], {\n [styles['list-variant-root--first']]: list.listVariant === 'root' && index === 0,\n [styles['list-variant-root--collapsed']]: list.listVariant === 'root' && collapsed,\n })}\n >\n {list.items.map(item => item.element)}\n </ul>\n );\n }\n })}\n </>\n );\n}\n\ninterface DividerProps {\n variant: 'default' | 'header';\n isPresentational?: boolean;\n collapsed?: boolean;\n}\n\nfunction Divider({ variant = 'default', isPresentational = false, collapsed }: DividerProps) {\n return (\n <hr\n className={clsx(styles.divider, styles[`divider-${variant}`], collapsed && styles['divider--collapsed'])}\n role={isPresentational ? 'presentation' : undefined}\n />\n );\n}\n\ninterface LinkProps extends BaseItemComponentProps {\n definition: SideNavigationProps.Link;\n}\n\ninterface ItemIconProps extends React.HTMLAttributes<HTMLSpanElement> {\n icon: React.ReactNode;\n collapsed?: boolean;\n}\n\nconst ItemIcon = React.forwardRef<HTMLSpanElement, ItemIconProps>(function ItemIcon(\n { icon, collapsed, className, ...rest },\n ref\n) {\n if (!icon) {\n return null;\n }\n return (\n <span\n ref={ref}\n className={clsx(\n styles['item-icon'],\n testUtilStyles['item-icon'],\n collapsed && styles['item-icon--collapsed'],\n className\n )}\n {...rest}\n >\n {icon}\n </span>\n );\n});\n\n// Manages a tooltip that shows the item's text label on focus or hover.\n// Used in the collapsed state, where the visible labels are hidden, to give\n// pointer and keyboard users a way to identify each item without relying on\n// their browser's native title popup.\nfunction useCollapsedTooltip<T extends HTMLElement>({\n label,\n position,\n activeTooltip,\n setActiveTooltip,\n}: {\n label: React.ReactNode;\n position?: string;\n activeTooltip?: string | null;\n setActiveTooltip?: (position: string | null) => void;\n}) {\n const triggerRef = useRef<T | null>(null);\n const id = position ?? '';\n const show = activeTooltip === id;\n\n const claim = () => setActiveTooltip?.(id);\n const release = () => {\n if (activeTooltip === id) {\n setActiveTooltip?.(null);\n }\n };\n\n const triggerProps = {\n onFocus: claim,\n onBlur: release,\n onMouseEnter: claim,\n onMouseLeave: release,\n };\n\n const tooltip = show ? (\n <Tooltip getTrack={() => triggerRef.current} content={label} position=\"right\" onEscape={release} />\n ) : null;\n\n return { triggerRef, triggerProps, tooltip };\n}\n\nfunction Link({ definition, activeHref, fireFollow, position, collapsed, activeTooltip, setActiveTooltip }: LinkProps) {\n checkSafeUrl('SideNavigation', definition.href);\n const isActive = definition.href === activeHref;\n const i18n = useInternalI18n('link');\n const collapsedTooltip = useCollapsedTooltip<HTMLAnchorElement>({\n label: definition.text,\n position,\n activeTooltip,\n setActiveTooltip,\n });\n\n const onClick = useCallback(\n (event: React.MouseEvent) => {\n if (isPlainLeftClick(event)) {\n fireFollow(definition, event);\n }\n },\n [fireFollow, definition]\n );\n\n const clickActionAnalyticsMetadata: GeneratedAnalyticsMetadataSideNavigationClick = {\n action: 'click',\n detail: {\n label: `.${analyticsSelectors['link-text']}`,\n external: `${!!definition.external}`,\n href: definition.href,\n position,\n },\n };\n\n const renderedExternalIconAriaLabel = i18n('externalIconAriaLabel', definition.externalIconAriaLabel);\n\n const showInfo = !collapsed && definition.info;\n\n const internalLink = (\n <a\n ref={collapsed ? collapsedTooltip.triggerRef : undefined}\n href={definition.href}\n className={clsx(styles.link, {\n [styles['link-active']]: isActive,\n [styles['link--collapsed']]: collapsed,\n })}\n target={definition.external ? '_blank' : undefined}\n rel={definition.external ? 'noopener noreferrer' : undefined}\n aria-current={definition.href === activeHref ? 'page' : undefined}\n aria-label={collapsed ? definition.text : undefined}\n onClick={onClick}\n {...(collapsed ? collapsedTooltip.triggerProps : {})}\n {...getAnalyticsMetadataAttribute(clickActionAnalyticsMetadata)}\n >\n <ItemIcon icon={definition.icon} collapsed={collapsed} aria-hidden={collapsed ? true : undefined} />\n {!collapsed && (\n <span className={styles['link-text-wrapper']}>\n <span className={analyticsSelectors['link-text']}>{definition.text}</span>\n {definition.external && (\n <span aria-label={renderedExternalIconAriaLabel} role={renderedExternalIconAriaLabel ? 'img' : undefined}>\n <InternalIcon name=\"external\" className={styles['external-icon']} />\n </span>\n )}\n </span>\n )}\n {collapsed && collapsedTooltip.tooltip}\n </a>\n );\n return showInfo ? (\n <div className={styles['list-item--link-with-info']}>\n {internalLink}\n <span className={clsx(styles.info, testUtilStyles.info)}>{definition.info}</span>\n </div>\n ) : (\n internalLink\n );\n}\n\ninterface SectionProps extends BaseItemComponentProps {\n definition: SideNavigationProps.Section;\n variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n}\n\nfunction Section({ definition, activeHref, fireFollow, fireChange, variant, position, collapsed }: SectionProps) {\n const [expanded, setExpanded] = useState<boolean>(definition.defaultExpanded ?? true);\n const isVisualRefresh = useVisualRefresh();\n\n const onExpandedChange = useCallback(\n (e: NonCancelableCustomEvent<ExpandableSectionProps.ChangeDetail>) => {\n fireChange(definition, e.detail.expanded);\n setExpanded(e.detail.expanded);\n },\n [definition, fireChange]\n );\n\n useEffect(() => {\n setExpanded(definition.defaultExpanded ?? true);\n }, [definition]);\n\n if (collapsed) {\n return null;\n }\n\n const isInSectionGroup = variant === 'section-group';\n\n return (\n <InternalExpandableSection\n variant=\"footer\"\n expanded={expanded}\n onChange={onExpandedChange}\n className={clsx(\n styles.section,\n isInSectionGroup && styles['section--no-ident'],\n isVisualRefresh && styles.refresh\n )}\n headerText={<span className={styles['section-header']}>{definition.text}</span>}\n >\n <NavigationItemsList\n variant=\"section\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n />\n </InternalExpandableSection>\n );\n}\n\ninterface SectionGroupProps extends BaseItemComponentProps {\n definition: SideNavigationProps.SectionGroup;\n}\n\nfunction SectionGroup({ definition, activeHref, fireFollow, fireChange, position, collapsed }: SectionGroupProps) {\n const isOneTheme = useOneTheme();\n if (collapsed) {\n return null;\n }\n return (\n <div className={styles['section-group']}>\n <InternalBox\n className={styles['section-group-title']}\n variant=\"h3\"\n fontSize={isOneTheme ? 'heading-s' : undefined}\n >\n {definition.title}\n </InternalBox>\n <NavigationItemsList\n variant=\"section-group\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n />\n </div>\n );\n}\n\ninterface LinkGroupProps extends BaseItemComponentProps {\n definition: SideNavigationProps.LinkGroup;\n}\n\nfunction LinkGroup({\n definition,\n activeHref,\n fireFollow,\n fireChange,\n position,\n collapsed,\n activeTooltip,\n setActiveTooltip,\n}: LinkGroupProps) {\n checkSafeUrl('SideNavigation', definition.href);\n\n return (\n <>\n <Link\n definition={{\n type: 'link',\n href: definition.href,\n text: definition.text,\n info: definition.info,\n icon: definition.icon,\n }}\n fireFollow={(_, event) => fireFollow(definition, event)}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n {!collapsed && (\n <NavigationItemsList\n variant=\"link-group\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n />\n )}\n </>\n );\n}\n\ninterface ExpandableLinkGroupProps extends BaseItemComponentProps {\n definition: SideNavigationProps.ExpandableLinkGroup;\n variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n}\n\nfunction ExpandableLinkGroup({\n definition,\n fireFollow,\n fireChange,\n activeHref,\n variant,\n position,\n collapsed,\n activeTooltip,\n setActiveTooltip,\n}: ExpandableLinkGroupProps) {\n // Check whether the definition contains an active link and memoize it to avoid\n // rechecking every time.\n const containsActiveLink = useMemo(() => {\n return activeHref ? hasActiveLink(definition.items, activeHref) : false;\n }, [activeHref, definition.items]);\n\n const [expanded, setExpanded] = useState<boolean>(() => {\n return definition.defaultExpanded ?? (definition.href === activeHref || containsActiveLink);\n });\n\n const [userExpanded, setUserExpanded] = useState<boolean | undefined>();\n\n // Reset user expansion status when the items property is updated.\n useEffect(() => setUserExpanded(undefined), [definition]);\n\n // By default, the expandable section is open when there's an active link inside.\n useEffect(() => {\n setExpanded(definition.href === activeHref || containsActiveLink);\n }, [definition.href, containsActiveLink, activeHref]);\n\n // If the definition object itself is updated, reset the expansion state to default.\n useEffect(() => {\n if (definition.defaultExpanded !== undefined) {\n setExpanded(definition.defaultExpanded);\n }\n }, [definition]);\n\n const onExpandedChange = useCallback(\n (e: NonCancelableCustomEvent<ExpandableSectionProps.ChangeDetail>) => {\n fireChange(definition, e.detail.expanded);\n setUserExpanded(e.detail.expanded);\n },\n [definition, fireChange]\n );\n\n const onHeaderFollow: LinkProps['fireFollow'] = (_, event) => {\n fireFollow(definition, event);\n setUserExpanded(true);\n if (!expanded) {\n fireChange(definition, true);\n }\n };\n\n if (collapsed) {\n return (\n <Link\n definition={{ type: 'link', href: definition.href, text: definition.text, icon: definition.icon }}\n fireFollow={onHeaderFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n );\n }\n\n return (\n <InternalExpandableSection\n className={clsx(\n styles['expandable-link-group'],\n variant === 'section-group' && styles['expandable-link-group--no-ident'],\n definition.href === activeHref && styles['expandable-link-group--active']\n )}\n variant=\"navigation\"\n expanded={userExpanded ?? expanded}\n onChange={onExpandedChange}\n headerText={\n <Link\n definition={{ type: 'link', href: definition.href, text: definition.text, icon: definition.icon }}\n fireFollow={onHeaderFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n />\n }\n >\n <NavigationItemsList\n variant=\"expandable-link-group\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n />\n </InternalExpandableSection>\n );\n}\n"]}
1
+ {"version":3,"file":"parts.js","sourceRoot":"","sources":["../../../src/side-navigation/parts.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalBox from '../box/internal';\nimport { ExpandableSectionProps } from '../expandable-section/interfaces';\nimport InternalExpandableSection from '../expandable-section/internal';\nimport { useInternalI18n } from '../i18n/context';\nimport InternalIcon from '../icon/internal';\nimport { isPlainLeftClick } from '../internal/events';\nimport { useOneTheme, useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport Tooltip from '../tooltip/internal';\nimport { NonCancelableCustomEvent } from '../types/events';\nimport { GeneratedAnalyticsMetadataSideNavigationClick } from './analytics-metadata/interfaces';\nimport { SideNavigationProps } from './interfaces';\nimport { hasActiveLink } from './util';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\n\ninterface BaseItemComponentProps {\n activeHref?: string;\n fireChange: (item: SideNavigationProps.Section | SideNavigationProps.ExpandableLinkGroup, expanded: boolean) => void;\n fireFollow: (\n item:\n | SideNavigationProps.Link\n | SideNavigationProps.Header\n | SideNavigationProps.LinkGroup\n | SideNavigationProps.ExpandableLinkGroup,\n event: React.SyntheticEvent | Event\n ) => void;\n position?: string;\n collapsed?: boolean;\n activeTooltip?: string | null;\n setActiveTooltip?: (position: string | null) => void;\n}\n\ninterface HeaderProps extends BaseItemComponentProps {\n definition: SideNavigationProps.Header;\n}\n\nexport function Header({ definition, activeHref, fireFollow, collapsed }: HeaderProps) {\n checkSafeUrl('SideNavigation', definition.href);\n const onClick = useCallback(\n (event: React.MouseEvent) => {\n if (isPlainLeftClick(event)) {\n fireFollow(definition, event);\n }\n },\n [fireFollow, definition]\n );\n\n const clickActionAnalyticsMetadata: GeneratedAnalyticsMetadataSideNavigationClick = {\n action: 'click',\n detail: {\n label: `.${analyticsSelectors['header-link-text']}`,\n external: 'false',\n href: definition.href,\n position: 'header',\n },\n };\n\n return (\n <>\n {!collapsed && (\n <h2 className={styles.header}>\n <a\n href={definition.href}\n className={clsx(styles['header-link'], { [styles['header-link--has-logo']]: !!definition.logo })}\n aria-current={definition.href === activeHref ? 'page' : undefined}\n onClick={onClick}\n {...getAnalyticsMetadataAttribute(clickActionAnalyticsMetadata)}\n >\n {definition.logo &&\n (definition.logo.svg ? (\n <span\n className={clsx(styles['header-logo'], {\n [styles['header-logo--stretched']]: !definition.text,\n })}\n >\n {definition.logo.svg}\n </span>\n ) : (\n <img\n className={clsx(styles['header-logo'], {\n [styles['header-logo--stretched']]: !definition.text,\n })}\n src={definition.logo.src}\n alt={definition.logo.alt}\n />\n ))}\n <span className={clsx(styles['header-link-text'], analyticsSelectors['header-link-text'])}>\n {definition.text}\n </span>\n </a>\n </h2>\n )}\n {!collapsed && <Divider isPresentational={true} variant=\"header\" />}\n </>\n );\n}\n\ninterface NavigationItemsListProps extends BaseItemComponentProps {\n items: ReadonlyArray<SideNavigationProps.Item>;\n variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n withIcons?: boolean;\n}\n\ninterface Item {\n element?: ReactNode;\n listVariant?: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n items?: Array<Item>;\n}\n\nexport function NavigationItemsList({\n items,\n variant,\n activeHref,\n fireChange,\n fireFollow,\n position = '',\n collapsed,\n withIcons,\n activeTooltip,\n setActiveTooltip,\n}: NavigationItemsListProps) {\n const lists: Array<Item> = [];\n let currentListIndex = 0;\n lists[currentListIndex] = {\n listVariant: variant,\n items: [],\n };\n\n items.forEach((item, index) => {\n const itemid = index + 1;\n const itemPosition = `${position ? `${position},` : ''}${itemid}`;\n\n // Emits a divider as its own list segment (dividers break the <ul> grouping).\n function pushDivider() {\n lists.push({\n listVariant: variant,\n element: (\n <div data-itemid={`item-${itemid}`}>\n <Divider variant=\"default\" collapsed={collapsed} />\n </div>\n ),\n });\n currentListIndex =\n lists.push({\n listVariant: variant,\n items: [],\n }) - 1;\n }\n\n // Renders icon-bearing children of a container item as a collapsed group.\n // The inner <ul> carries the group label so list semantics are preserved\n // for screen readers even when the visual header is hidden.\n function pushCollapsedGroup(\n children: ReadonlyArray<SideNavigationProps.Item>,\n label: string,\n { leadingDivider = false }: { leadingDivider?: boolean } = {}\n ) {\n const iconChildren = children.filter(child => (child as SideNavigationProps.Link).icon);\n if (iconChildren.length === 0) {\n return;\n }\n // A section's title is hidden when collapsed; render a divider in its place\n if (leadingDivider) {\n pushDivider();\n }\n const groupElements = iconChildren.map((child, childIndex) => {\n const childPosition = `${position ? `${position},` : ''}${itemid},${childIndex + 1}`;\n return (\n <li key={childPosition} className={clsx(styles['list-item'], styles['list-item--collapsed'])}>\n <Link\n definition={child as SideNavigationProps.Link}\n activeHref={activeHref}\n fireFollow={fireFollow}\n fireChange={fireChange}\n position={childPosition}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n );\n });\n const prevItem = index > 0 ? items[index - 1] : null;\n const nextItem = index < items.length - 1 ? items[index + 1] : null;\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={`group-${itemid}`}\n className={clsx(\n styles['list-item--group'],\n (leadingDivider || prevItem?.type === 'divider') && styles['list-item--group-no-padding-start'],\n nextItem?.type === 'divider' && styles['list-item--group-no-padding-end']\n )}\n >\n <ul className={styles['list--collapsed-group']} aria-label={label}>\n {groupElements}\n </ul>\n </li>\n ),\n });\n }\n\n // In collapsed mode, flatten container items to show only icon-bearing children.\n if (collapsed && (item.type === 'expandable-link-group' || item.type === 'link-group') && !item.icon) {\n const group = item as SideNavigationProps.ExpandableLinkGroup | SideNavigationProps.LinkGroup;\n pushCollapsedGroup(group.items, group.text);\n return;\n }\n if (collapsed && (item.type === 'section' || item.type === 'section-group')) {\n const sectionLabel =\n item.type === 'section'\n ? (item as SideNavigationProps.Section).text\n : (item as SideNavigationProps.SectionGroup).title;\n // Section-groups may contain nested sections — flatten one level.\n const childItems =\n item.type === 'section'\n ? (item as SideNavigationProps.Section).items\n : (item as SideNavigationProps.SectionGroup).items.flatMap(child =>\n child.type === 'section' ? (child as SideNavigationProps.Section).items : [child]\n );\n pushCollapsedGroup(childItems, sectionLabel, { leadingDivider: true });\n return;\n }\n if (collapsed && item.type !== 'divider' && !(item as SideNavigationProps.Link).icon) {\n return;\n }\n switch (item.type) {\n case 'divider': {\n pushDivider();\n return;\n }\n case 'link': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <Link\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'section': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <Section\n definition={item}\n activeHref={activeHref}\n variant={variant}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'section-group': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <SectionGroup\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'link-group': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <LinkGroup\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'expandable-link-group': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <ExpandableLinkGroup\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n variant={variant}\n position={itemPosition}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n }\n });\n\n // In collapsed mode, skip empty item segments and deduplicate consecutive dividers.\n const filteredLists = collapsed\n ? lists.filter((list, index) => {\n if (list.items) {\n return list.items.length > 0;\n }\n // Divider — skip if preceded by another divider or empty segment, or followed by nothing.\n const prevVisible = lists\n .slice(0, index)\n .reverse()\n .find(l => !l.items || l.items.length > 0);\n const nextVisible = lists.slice(index + 1).find(l => !l.items || l.items.length > 0);\n return (\n (!prevVisible || (prevVisible.items !== undefined && prevVisible.items.length > 0)) &&\n nextVisible !== undefined &&\n (nextVisible.items === undefined || nextVisible.items.length > 0)\n );\n })\n : lists;\n\n return (\n <>\n {filteredLists.map((list, index) => {\n if (!list.items || list.items.length === 0) {\n return (\n <div\n key={`hr-${index}`}\n className={clsx(styles.list, styles[`list-variant-${variant}`], {\n [styles['list-variant-root--first']]: list.listVariant === 'root' && index === 0,\n [styles['list-variant-root--collapsed']]: list.listVariant === 'root' && collapsed,\n })}\n >\n {list.element}\n </div>\n );\n } else {\n return (\n <ul\n key={`list-${index}`}\n className={clsx(styles.list, styles[`list-variant-${list.listVariant}`], {\n [styles['list-variant-root--first']]: list.listVariant === 'root' && index === 0,\n [styles['list-variant-root--collapsed']]: list.listVariant === 'root' && collapsed,\n [styles['list--with-icons']]: withIcons,\n })}\n >\n {list.items.map(item => item.element)}\n </ul>\n );\n }\n })}\n </>\n );\n}\n\ninterface DividerProps {\n variant: 'default' | 'header';\n isPresentational?: boolean;\n collapsed?: boolean;\n}\n\nfunction Divider({ variant = 'default', isPresentational = false, collapsed }: DividerProps) {\n return (\n <hr\n className={clsx(styles.divider, styles[`divider-${variant}`], collapsed && styles['divider--collapsed'])}\n role={isPresentational ? 'presentation' : undefined}\n />\n );\n}\n\ninterface LinkProps extends BaseItemComponentProps {\n definition: SideNavigationProps.Link;\n}\n\ninterface ItemIconProps extends React.HTMLAttributes<HTMLSpanElement> {\n icon: React.ReactNode;\n collapsed?: boolean;\n}\n\nconst ItemIcon = React.forwardRef<HTMLSpanElement, ItemIconProps>(function ItemIcon(\n { icon, collapsed, className, ...rest },\n ref\n) {\n if (!icon) {\n return null;\n }\n return (\n <span\n ref={ref}\n className={clsx(\n styles['item-icon'],\n testUtilStyles['item-icon'],\n collapsed && styles['item-icon--collapsed'],\n className\n )}\n {...rest}\n >\n {icon}\n </span>\n );\n});\n\n// Manages a tooltip that shows the item's text label on focus or hover.\n// Used in the collapsed state, where the visible labels are hidden, to give\n// pointer and keyboard users a way to identify each item without relying on\n// their browser's native title popup.\nfunction useCollapsedTooltip<T extends HTMLElement>({\n label,\n position,\n activeTooltip,\n setActiveTooltip,\n}: {\n label: React.ReactNode;\n position?: string;\n activeTooltip?: string | null;\n setActiveTooltip?: (position: string | null) => void;\n}) {\n const triggerRef = useRef<T | null>(null);\n const id = position ?? '';\n const show = activeTooltip === id;\n\n const claim = () => setActiveTooltip?.(id);\n const release = () => {\n if (activeTooltip === id) {\n setActiveTooltip?.(null);\n }\n };\n\n const triggerProps = {\n onFocus: claim,\n onBlur: release,\n onMouseEnter: claim,\n onMouseLeave: release,\n };\n\n const tooltip = show ? (\n <Tooltip getTrack={() => triggerRef.current} content={label} position=\"right\" onEscape={release} />\n ) : null;\n\n return { triggerRef, triggerProps, tooltip };\n}\n\nfunction Link({ definition, activeHref, fireFollow, position, collapsed, activeTooltip, setActiveTooltip }: LinkProps) {\n checkSafeUrl('SideNavigation', definition.href);\n const isActive = definition.href === activeHref;\n const i18n = useInternalI18n('link');\n const collapsedTooltip = useCollapsedTooltip<HTMLAnchorElement>({\n label: definition.text,\n position,\n activeTooltip,\n setActiveTooltip,\n });\n\n const onClick = useCallback(\n (event: React.MouseEvent) => {\n if (isPlainLeftClick(event)) {\n fireFollow(definition, event);\n }\n },\n [fireFollow, definition]\n );\n\n const clickActionAnalyticsMetadata: GeneratedAnalyticsMetadataSideNavigationClick = {\n action: 'click',\n detail: {\n label: `.${analyticsSelectors['link-text']}`,\n external: `${!!definition.external}`,\n href: definition.href,\n position,\n },\n };\n\n const renderedExternalIconAriaLabel = i18n('externalIconAriaLabel', definition.externalIconAriaLabel);\n\n const showInfo = !collapsed && definition.info;\n\n const internalLink = (\n <a\n ref={collapsed ? collapsedTooltip.triggerRef : undefined}\n href={definition.href}\n className={clsx(styles.link, {\n [styles['link-active']]: isActive,\n [styles['link--collapsed']]: collapsed,\n })}\n target={definition.external ? '_blank' : undefined}\n rel={definition.external ? 'noopener noreferrer' : undefined}\n aria-current={definition.href === activeHref ? 'page' : undefined}\n aria-label={collapsed ? definition.text : undefined}\n onClick={onClick}\n {...(collapsed ? collapsedTooltip.triggerProps : {})}\n {...getAnalyticsMetadataAttribute(clickActionAnalyticsMetadata)}\n >\n <ItemIcon icon={definition.icon} collapsed={collapsed} aria-hidden={collapsed ? true : undefined} />\n {!collapsed && (\n <span className={styles['link-text-wrapper']}>\n <span className={analyticsSelectors['link-text']}>{definition.text}</span>\n {definition.external && (\n <span aria-label={renderedExternalIconAriaLabel} role={renderedExternalIconAriaLabel ? 'img' : undefined}>\n <InternalIcon name=\"external\" className={styles['external-icon']} />\n </span>\n )}\n </span>\n )}\n {collapsed && collapsedTooltip.tooltip}\n </a>\n );\n return showInfo ? (\n <div className={styles['list-item--link-with-info']}>\n {internalLink}\n <span className={clsx(styles.info, testUtilStyles.info)}>{definition.info}</span>\n </div>\n ) : (\n internalLink\n );\n}\n\ninterface SectionProps extends BaseItemComponentProps {\n definition: SideNavigationProps.Section;\n variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n withIcons?: boolean;\n}\n\nfunction Section({\n definition,\n activeHref,\n fireFollow,\n fireChange,\n variant,\n position,\n collapsed,\n withIcons,\n}: SectionProps) {\n const [expanded, setExpanded] = useState<boolean>(definition.defaultExpanded ?? true);\n const isVisualRefresh = useVisualRefresh();\n\n const onExpandedChange = useCallback(\n (e: NonCancelableCustomEvent<ExpandableSectionProps.ChangeDetail>) => {\n fireChange(definition, e.detail.expanded);\n setExpanded(e.detail.expanded);\n },\n [definition, fireChange]\n );\n\n useEffect(() => {\n setExpanded(definition.defaultExpanded ?? true);\n }, [definition]);\n\n if (collapsed) {\n return null;\n }\n\n const isInSectionGroup = variant === 'section-group';\n\n return (\n <InternalExpandableSection\n variant=\"footer\"\n expanded={expanded}\n onChange={onExpandedChange}\n className={clsx(\n styles.section,\n isInSectionGroup && styles['section--no-ident'],\n isVisualRefresh && styles.refresh\n )}\n headerText={<span className={styles['section-header']}>{definition.text}</span>}\n >\n <NavigationItemsList\n variant=\"section\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n withIcons={withIcons}\n />\n </InternalExpandableSection>\n );\n}\n\ninterface SectionGroupProps extends BaseItemComponentProps {\n definition: SideNavigationProps.SectionGroup;\n withIcons?: boolean;\n}\n\nfunction SectionGroup({\n definition,\n activeHref,\n fireFollow,\n fireChange,\n position,\n collapsed,\n withIcons,\n}: SectionGroupProps) {\n const isOneTheme = useOneTheme();\n if (collapsed) {\n return null;\n }\n return (\n <div className={styles['section-group']}>\n <InternalBox\n className={styles['section-group-title']}\n variant=\"h3\"\n fontSize={isOneTheme ? 'heading-s' : undefined}\n >\n {definition.title}\n </InternalBox>\n <NavigationItemsList\n variant=\"section-group\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n withIcons={withIcons}\n />\n </div>\n );\n}\n\ninterface LinkGroupProps extends BaseItemComponentProps {\n definition: SideNavigationProps.LinkGroup;\n withIcons?: boolean;\n}\n\nfunction LinkGroup({\n definition,\n activeHref,\n fireFollow,\n fireChange,\n position,\n collapsed,\n withIcons,\n activeTooltip,\n setActiveTooltip,\n}: LinkGroupProps) {\n checkSafeUrl('SideNavigation', definition.href);\n\n return (\n <>\n <Link\n definition={{\n type: 'link',\n href: definition.href,\n text: definition.text,\n info: definition.info,\n icon: definition.icon,\n }}\n fireFollow={(_, event) => fireFollow(definition, event)}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n {!collapsed && (\n <NavigationItemsList\n variant=\"link-group\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n withIcons={withIcons}\n />\n )}\n </>\n );\n}\n\ninterface ExpandableLinkGroupProps extends BaseItemComponentProps {\n definition: SideNavigationProps.ExpandableLinkGroup;\n variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n withIcons?: boolean;\n}\n\nfunction ExpandableLinkGroup({\n definition,\n fireFollow,\n fireChange,\n activeHref,\n variant,\n position,\n collapsed,\n withIcons,\n activeTooltip,\n setActiveTooltip,\n}: ExpandableLinkGroupProps) {\n // Check whether the definition contains an active link and memoize it to avoid\n // rechecking every time.\n const containsActiveLink = useMemo(() => {\n return activeHref ? hasActiveLink(definition.items, activeHref) : false;\n }, [activeHref, definition.items]);\n\n const [expanded, setExpanded] = useState<boolean>(() => {\n return definition.defaultExpanded ?? (definition.href === activeHref || containsActiveLink);\n });\n\n const [userExpanded, setUserExpanded] = useState<boolean | undefined>();\n\n // Reset user expansion status when the items property is updated.\n useEffect(() => setUserExpanded(undefined), [definition]);\n\n // By default, the expandable section is open when there's an active link inside.\n useEffect(() => {\n setExpanded(definition.href === activeHref || containsActiveLink);\n }, [definition.href, containsActiveLink, activeHref]);\n\n // If the definition object itself is updated, reset the expansion state to default.\n useEffect(() => {\n if (definition.defaultExpanded !== undefined) {\n setExpanded(definition.defaultExpanded);\n }\n }, [definition]);\n\n const onExpandedChange = useCallback(\n (e: NonCancelableCustomEvent<ExpandableSectionProps.ChangeDetail>) => {\n fireChange(definition, e.detail.expanded);\n setUserExpanded(e.detail.expanded);\n },\n [definition, fireChange]\n );\n\n const onHeaderFollow: LinkProps['fireFollow'] = (_, event) => {\n fireFollow(definition, event);\n setUserExpanded(true);\n if (!expanded) {\n fireChange(definition, true);\n }\n };\n\n if (collapsed) {\n return (\n <Link\n definition={{ type: 'link', href: definition.href, text: definition.text, icon: definition.icon }}\n fireFollow={onHeaderFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n );\n }\n\n return (\n <InternalExpandableSection\n className={clsx(\n styles['expandable-link-group'],\n variant === 'section-group' && styles['expandable-link-group--no-ident'],\n definition.href === activeHref && styles['expandable-link-group--active']\n )}\n variant=\"navigation\"\n expanded={userExpanded ?? expanded}\n onChange={onExpandedChange}\n headerText={\n <Link\n definition={{ type: 'link', href: definition.href, text: definition.text, icon: definition.icon }}\n fireFollow={onHeaderFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n />\n }\n >\n <NavigationItemsList\n variant=\"expandable-link-group\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n withIcons={withIcons}\n />\n </InternalExpandableSection>\n );\n}\n"]}