@okta/odyssey-react-mui 1.41.1 → 1.43.0

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 (354) hide show
  1. package/dist/cjs/DataTable/DataTable.cjs +67 -42
  2. package/dist/cjs/DataTable/DataTable.cjs.map +1 -1
  3. package/dist/cjs/Drawer.cjs +16 -14
  4. package/dist/cjs/Drawer.cjs.map +1 -1
  5. package/dist/cjs/PasswordField.cjs +1 -1
  6. package/dist/cjs/PasswordField.cjs.map +1 -1
  7. package/dist/cjs/Select.cjs +35 -44
  8. package/dist/cjs/Select.cjs.map +1 -1
  9. package/dist/cjs/Status.cjs +2 -0
  10. package/dist/cjs/Status.cjs.map +1 -1
  11. package/dist/cjs/Typography.cjs +32 -8
  12. package/dist/cjs/Typography.cjs.map +1 -1
  13. package/dist/cjs/createContrastColors.cjs +6 -2
  14. package/dist/cjs/createContrastColors.cjs.map +1 -1
  15. package/dist/cjs/getLogicalBoundaries.cjs +33 -0
  16. package/dist/cjs/getLogicalBoundaries.cjs.map +1 -0
  17. package/dist/cjs/labs/DataFilters.cjs +1 -0
  18. package/dist/cjs/labs/DataFilters.cjs.map +1 -1
  19. package/dist/cjs/labs/DataView/BulkActionsMenu.cjs.map +1 -1
  20. package/dist/cjs/labs/DataView/CardLayoutContent.cjs.map +1 -1
  21. package/dist/cjs/labs/DataView/DataView.cjs +10 -1
  22. package/dist/cjs/labs/DataView/DataView.cjs.map +1 -1
  23. package/dist/cjs/labs/DataView/RowActions.cjs +3 -4
  24. package/dist/cjs/labs/DataView/RowActions.cjs.map +1 -1
  25. package/dist/cjs/labs/DataView/TableLayoutContent.cjs +2 -4
  26. package/dist/cjs/labs/DataView/TableLayoutContent.cjs.map +1 -1
  27. package/dist/cjs/labs/DataView/useFilterConversion.cjs.map +1 -1
  28. package/dist/cjs/labs/OdysseyPickers/ComposablePicker.cjs.map +1 -1
  29. package/dist/cjs/labs/OdysseyPickers/Picker.cjs +17 -11
  30. package/dist/cjs/labs/OdysseyPickers/Picker.cjs.map +1 -1
  31. package/dist/cjs/labs/OdysseyPickers/PickerWithOptionAdornment.cjs +2 -1
  32. package/dist/cjs/labs/OdysseyPickers/PickerWithOptionAdornment.cjs.map +1 -1
  33. package/dist/cjs/labs/OdysseyPickers/SearchDropdown.cjs +2 -3
  34. package/dist/cjs/labs/OdysseyPickers/SearchDropdown.cjs.map +1 -1
  35. package/dist/cjs/labs/PageTemplate/PageTemplate.cjs +15 -4
  36. package/dist/cjs/labs/PageTemplate/PageTemplate.cjs.map +1 -1
  37. package/dist/cjs/properties/ts/odyssey-react-mui.cjs +0 -1
  38. package/dist/cjs/properties/ts/odyssey-react-mui.cjs.map +1 -1
  39. package/dist/cjs/properties/ts/odyssey-react-mui_cs.cjs +0 -1
  40. package/dist/cjs/properties/ts/odyssey-react-mui_cs.cjs.map +1 -1
  41. package/dist/cjs/properties/ts/odyssey-react-mui_da.cjs +0 -1
  42. package/dist/cjs/properties/ts/odyssey-react-mui_da.cjs.map +1 -1
  43. package/dist/cjs/properties/ts/odyssey-react-mui_de.cjs +0 -1
  44. package/dist/cjs/properties/ts/odyssey-react-mui_de.cjs.map +1 -1
  45. package/dist/cjs/properties/ts/odyssey-react-mui_el.cjs +0 -1
  46. package/dist/cjs/properties/ts/odyssey-react-mui_el.cjs.map +1 -1
  47. package/dist/cjs/properties/ts/odyssey-react-mui_es.cjs +0 -1
  48. package/dist/cjs/properties/ts/odyssey-react-mui_es.cjs.map +1 -1
  49. package/dist/cjs/properties/ts/odyssey-react-mui_eu.cjs +136 -0
  50. package/dist/cjs/properties/ts/odyssey-react-mui_eu.cjs.map +1 -0
  51. package/dist/cjs/properties/ts/odyssey-react-mui_fi.cjs +0 -1
  52. package/dist/cjs/properties/ts/odyssey-react-mui_fi.cjs.map +1 -1
  53. package/dist/cjs/properties/ts/odyssey-react-mui_fr.cjs +0 -1
  54. package/dist/cjs/properties/ts/odyssey-react-mui_fr.cjs.map +1 -1
  55. package/dist/cjs/properties/ts/odyssey-react-mui_ht.cjs +0 -1
  56. package/dist/cjs/properties/ts/odyssey-react-mui_ht.cjs.map +1 -1
  57. package/dist/cjs/properties/ts/odyssey-react-mui_hu.cjs +0 -1
  58. package/dist/cjs/properties/ts/odyssey-react-mui_hu.cjs.map +1 -1
  59. package/dist/cjs/properties/ts/odyssey-react-mui_id.cjs +0 -1
  60. package/dist/cjs/properties/ts/odyssey-react-mui_id.cjs.map +1 -1
  61. package/dist/cjs/properties/ts/odyssey-react-mui_it.cjs +0 -1
  62. package/dist/cjs/properties/ts/odyssey-react-mui_it.cjs.map +1 -1
  63. package/dist/cjs/properties/ts/odyssey-react-mui_ja.cjs +0 -1
  64. package/dist/cjs/properties/ts/odyssey-react-mui_ja.cjs.map +1 -1
  65. package/dist/cjs/properties/ts/odyssey-react-mui_ko.cjs +0 -1
  66. package/dist/cjs/properties/ts/odyssey-react-mui_ko.cjs.map +1 -1
  67. package/dist/cjs/properties/ts/odyssey-react-mui_ms.cjs +0 -1
  68. package/dist/cjs/properties/ts/odyssey-react-mui_ms.cjs.map +1 -1
  69. package/dist/cjs/properties/ts/odyssey-react-mui_nb.cjs +0 -1
  70. package/dist/cjs/properties/ts/odyssey-react-mui_nb.cjs.map +1 -1
  71. package/dist/cjs/properties/ts/odyssey-react-mui_nl_NL.cjs +0 -1
  72. package/dist/cjs/properties/ts/odyssey-react-mui_nl_NL.cjs.map +1 -1
  73. package/dist/cjs/properties/ts/odyssey-react-mui_ok_PL.cjs +4 -2
  74. package/dist/cjs/properties/ts/odyssey-react-mui_ok_PL.cjs.map +1 -1
  75. package/dist/cjs/properties/ts/odyssey-react-mui_ok_SK.cjs +129 -126
  76. package/dist/cjs/properties/ts/odyssey-react-mui_ok_SK.cjs.map +1 -1
  77. package/dist/cjs/properties/ts/odyssey-react-mui_pl.cjs +0 -1
  78. package/dist/cjs/properties/ts/odyssey-react-mui_pl.cjs.map +1 -1
  79. package/dist/cjs/properties/ts/odyssey-react-mui_pt_BR.cjs +0 -1
  80. package/dist/cjs/properties/ts/odyssey-react-mui_pt_BR.cjs.map +1 -1
  81. package/dist/cjs/properties/ts/odyssey-react-mui_ro.cjs +0 -1
  82. package/dist/cjs/properties/ts/odyssey-react-mui_ro.cjs.map +1 -1
  83. package/dist/cjs/properties/ts/odyssey-react-mui_ru.cjs +0 -1
  84. package/dist/cjs/properties/ts/odyssey-react-mui_ru.cjs.map +1 -1
  85. package/dist/cjs/properties/ts/odyssey-react-mui_sv.cjs +0 -1
  86. package/dist/cjs/properties/ts/odyssey-react-mui_sv.cjs.map +1 -1
  87. package/dist/cjs/properties/ts/odyssey-react-mui_th.cjs +0 -1
  88. package/dist/cjs/properties/ts/odyssey-react-mui_th.cjs.map +1 -1
  89. package/dist/cjs/properties/ts/odyssey-react-mui_tr.cjs +0 -1
  90. package/dist/cjs/properties/ts/odyssey-react-mui_tr.cjs.map +1 -1
  91. package/dist/cjs/properties/ts/odyssey-react-mui_uk.cjs +0 -1
  92. package/dist/cjs/properties/ts/odyssey-react-mui_uk.cjs.map +1 -1
  93. package/dist/cjs/properties/ts/odyssey-react-mui_vi.cjs +0 -1
  94. package/dist/cjs/properties/ts/odyssey-react-mui_vi.cjs.map +1 -1
  95. package/dist/cjs/properties/ts/odyssey-react-mui_zh_CN.cjs +0 -1
  96. package/dist/cjs/properties/ts/odyssey-react-mui_zh_CN.cjs.map +1 -1
  97. package/dist/cjs/properties/ts/odyssey-react-mui_zh_TW.cjs +0 -1
  98. package/dist/cjs/properties/ts/odyssey-react-mui_zh_TW.cjs.map +1 -1
  99. package/dist/cjs/theme/components.cjs +7 -1
  100. package/dist/cjs/theme/components.cjs.map +1 -1
  101. package/dist/cjs/ui-shell/NarrowUiShellContent.cjs +0 -1
  102. package/dist/cjs/ui-shell/NarrowUiShellContent.cjs.map +1 -1
  103. package/dist/cjs/ui-shell/SideNav/SideNav.cjs +24 -18
  104. package/dist/cjs/ui-shell/SideNav/SideNav.cjs.map +1 -1
  105. package/dist/cjs/ui-shell/SideNav/SideNavItemLinkContent.cjs +4 -3
  106. package/dist/cjs/ui-shell/SideNav/SideNavItemLinkContent.cjs.map +1 -1
  107. package/dist/cjs/ui-shell/UiShell.cjs +2 -0
  108. package/dist/cjs/ui-shell/UiShell.cjs.map +1 -1
  109. package/dist/cjs/ui-shell/UiShellProvider.cjs +6 -1
  110. package/dist/cjs/ui-shell/UiShellProvider.cjs.map +1 -1
  111. package/dist/cjs/ui-shell/renderUiShell.cjs +2 -0
  112. package/dist/cjs/ui-shell/renderUiShell.cjs.map +1 -1
  113. package/dist/cjs/ui-shell/useElementAtContainerEdge.cjs +74 -0
  114. package/dist/cjs/ui-shell/useElementAtContainerEdge.cjs.map +1 -0
  115. package/dist/cjs/useMountLifecycleEffect.cjs +3 -3
  116. package/dist/cjs/useMountLifecycleEffect.cjs.map +1 -1
  117. package/dist/cjs/web-component/odysseyWebComponentVersion.generated.cjs +1 -1
  118. package/dist/cjs/web-component/odysseyWebComponentVersion.generated.cjs.map +1 -1
  119. package/dist/esm/DataTable/DataTable.js +67 -40
  120. package/dist/esm/DataTable/DataTable.js.map +1 -1
  121. package/dist/esm/Drawer.js +16 -14
  122. package/dist/esm/Drawer.js.map +1 -1
  123. package/dist/esm/PasswordField.js +1 -1
  124. package/dist/esm/PasswordField.js.map +1 -1
  125. package/dist/esm/Select.js +35 -44
  126. package/dist/esm/Select.js.map +1 -1
  127. package/dist/esm/Status.js +2 -0
  128. package/dist/esm/Status.js.map +1 -1
  129. package/dist/esm/Typography.js +32 -8
  130. package/dist/esm/Typography.js.map +1 -1
  131. package/dist/esm/createContrastColors.js +6 -2
  132. package/dist/esm/createContrastColors.js.map +1 -1
  133. package/dist/esm/getLogicalBoundaries.js +26 -0
  134. package/dist/esm/getLogicalBoundaries.js.map +1 -0
  135. package/dist/esm/labs/DataFilters.js +1 -0
  136. package/dist/esm/labs/DataFilters.js.map +1 -1
  137. package/dist/esm/labs/DataView/BulkActionsMenu.js.map +1 -1
  138. package/dist/esm/labs/DataView/CardLayoutContent.js.map +1 -1
  139. package/dist/esm/labs/DataView/DataView.js +10 -1
  140. package/dist/esm/labs/DataView/DataView.js.map +1 -1
  141. package/dist/esm/labs/DataView/RowActions.js +2 -1
  142. package/dist/esm/labs/DataView/RowActions.js.map +1 -1
  143. package/dist/esm/labs/DataView/TableLayoutContent.js +2 -4
  144. package/dist/esm/labs/DataView/TableLayoutContent.js.map +1 -1
  145. package/dist/esm/labs/DataView/useFilterConversion.js.map +1 -1
  146. package/dist/esm/labs/OdysseyPickers/ComposablePicker.js.map +1 -1
  147. package/dist/esm/labs/OdysseyPickers/Picker.js +19 -13
  148. package/dist/esm/labs/OdysseyPickers/Picker.js.map +1 -1
  149. package/dist/esm/labs/OdysseyPickers/PickerWithOptionAdornment.js +2 -1
  150. package/dist/esm/labs/OdysseyPickers/PickerWithOptionAdornment.js.map +1 -1
  151. package/dist/esm/labs/OdysseyPickers/SearchDropdown.js +2 -3
  152. package/dist/esm/labs/OdysseyPickers/SearchDropdown.js.map +1 -1
  153. package/dist/esm/labs/PageTemplate/PageTemplate.js +16 -5
  154. package/dist/esm/labs/PageTemplate/PageTemplate.js.map +1 -1
  155. package/dist/esm/properties/ts/odyssey-react-mui.js +0 -1
  156. package/dist/esm/properties/ts/odyssey-react-mui.js.map +1 -1
  157. package/dist/esm/properties/ts/odyssey-react-mui_cs.js +0 -1
  158. package/dist/esm/properties/ts/odyssey-react-mui_cs.js.map +1 -1
  159. package/dist/esm/properties/ts/odyssey-react-mui_da.js +0 -1
  160. package/dist/esm/properties/ts/odyssey-react-mui_da.js.map +1 -1
  161. package/dist/esm/properties/ts/odyssey-react-mui_de.js +0 -1
  162. package/dist/esm/properties/ts/odyssey-react-mui_de.js.map +1 -1
  163. package/dist/esm/properties/ts/odyssey-react-mui_el.js +0 -1
  164. package/dist/esm/properties/ts/odyssey-react-mui_el.js.map +1 -1
  165. package/dist/esm/properties/ts/odyssey-react-mui_es.js +0 -1
  166. package/dist/esm/properties/ts/odyssey-react-mui_es.js.map +1 -1
  167. package/dist/esm/properties/ts/odyssey-react-mui_eu.js +130 -0
  168. package/dist/esm/properties/ts/odyssey-react-mui_eu.js.map +1 -0
  169. package/dist/esm/properties/ts/odyssey-react-mui_fi.js +0 -1
  170. package/dist/esm/properties/ts/odyssey-react-mui_fi.js.map +1 -1
  171. package/dist/esm/properties/ts/odyssey-react-mui_fr.js +0 -1
  172. package/dist/esm/properties/ts/odyssey-react-mui_fr.js.map +1 -1
  173. package/dist/esm/properties/ts/odyssey-react-mui_ht.js +0 -1
  174. package/dist/esm/properties/ts/odyssey-react-mui_ht.js.map +1 -1
  175. package/dist/esm/properties/ts/odyssey-react-mui_hu.js +0 -1
  176. package/dist/esm/properties/ts/odyssey-react-mui_hu.js.map +1 -1
  177. package/dist/esm/properties/ts/odyssey-react-mui_id.js +0 -1
  178. package/dist/esm/properties/ts/odyssey-react-mui_id.js.map +1 -1
  179. package/dist/esm/properties/ts/odyssey-react-mui_it.js +0 -1
  180. package/dist/esm/properties/ts/odyssey-react-mui_it.js.map +1 -1
  181. package/dist/esm/properties/ts/odyssey-react-mui_ja.js +0 -1
  182. package/dist/esm/properties/ts/odyssey-react-mui_ja.js.map +1 -1
  183. package/dist/esm/properties/ts/odyssey-react-mui_ko.js +0 -1
  184. package/dist/esm/properties/ts/odyssey-react-mui_ko.js.map +1 -1
  185. package/dist/esm/properties/ts/odyssey-react-mui_ms.js +0 -1
  186. package/dist/esm/properties/ts/odyssey-react-mui_ms.js.map +1 -1
  187. package/dist/esm/properties/ts/odyssey-react-mui_nb.js +0 -1
  188. package/dist/esm/properties/ts/odyssey-react-mui_nb.js.map +1 -1
  189. package/dist/esm/properties/ts/odyssey-react-mui_nl_NL.js +0 -1
  190. package/dist/esm/properties/ts/odyssey-react-mui_nl_NL.js.map +1 -1
  191. package/dist/esm/properties/ts/odyssey-react-mui_ok_PL.js +4 -2
  192. package/dist/esm/properties/ts/odyssey-react-mui_ok_PL.js.map +1 -1
  193. package/dist/esm/properties/ts/odyssey-react-mui_ok_SK.js +129 -126
  194. package/dist/esm/properties/ts/odyssey-react-mui_ok_SK.js.map +1 -1
  195. package/dist/esm/properties/ts/odyssey-react-mui_pl.js +0 -1
  196. package/dist/esm/properties/ts/odyssey-react-mui_pl.js.map +1 -1
  197. package/dist/esm/properties/ts/odyssey-react-mui_pt_BR.js +0 -1
  198. package/dist/esm/properties/ts/odyssey-react-mui_pt_BR.js.map +1 -1
  199. package/dist/esm/properties/ts/odyssey-react-mui_ro.js +0 -1
  200. package/dist/esm/properties/ts/odyssey-react-mui_ro.js.map +1 -1
  201. package/dist/esm/properties/ts/odyssey-react-mui_ru.js +0 -1
  202. package/dist/esm/properties/ts/odyssey-react-mui_ru.js.map +1 -1
  203. package/dist/esm/properties/ts/odyssey-react-mui_sv.js +0 -1
  204. package/dist/esm/properties/ts/odyssey-react-mui_sv.js.map +1 -1
  205. package/dist/esm/properties/ts/odyssey-react-mui_th.js +0 -1
  206. package/dist/esm/properties/ts/odyssey-react-mui_th.js.map +1 -1
  207. package/dist/esm/properties/ts/odyssey-react-mui_tr.js +0 -1
  208. package/dist/esm/properties/ts/odyssey-react-mui_tr.js.map +1 -1
  209. package/dist/esm/properties/ts/odyssey-react-mui_uk.js +0 -1
  210. package/dist/esm/properties/ts/odyssey-react-mui_uk.js.map +1 -1
  211. package/dist/esm/properties/ts/odyssey-react-mui_vi.js +0 -1
  212. package/dist/esm/properties/ts/odyssey-react-mui_vi.js.map +1 -1
  213. package/dist/esm/properties/ts/odyssey-react-mui_zh_CN.js +0 -1
  214. package/dist/esm/properties/ts/odyssey-react-mui_zh_CN.js.map +1 -1
  215. package/dist/esm/properties/ts/odyssey-react-mui_zh_TW.js +0 -1
  216. package/dist/esm/properties/ts/odyssey-react-mui_zh_TW.js.map +1 -1
  217. package/dist/esm/theme/components.js +7 -1
  218. package/dist/esm/theme/components.js.map +1 -1
  219. package/dist/esm/ui-shell/NarrowUiShellContent.js +0 -1
  220. package/dist/esm/ui-shell/NarrowUiShellContent.js.map +1 -1
  221. package/dist/esm/ui-shell/SideNav/SideNav.js +24 -18
  222. package/dist/esm/ui-shell/SideNav/SideNav.js.map +1 -1
  223. package/dist/esm/ui-shell/SideNav/SideNavItemLinkContent.js +4 -3
  224. package/dist/esm/ui-shell/SideNav/SideNavItemLinkContent.js.map +1 -1
  225. package/dist/esm/ui-shell/UiShell.js +2 -0
  226. package/dist/esm/ui-shell/UiShell.js.map +1 -1
  227. package/dist/esm/ui-shell/UiShellProvider.js +6 -1
  228. package/dist/esm/ui-shell/UiShellProvider.js.map +1 -1
  229. package/dist/esm/ui-shell/renderUiShell.js +2 -0
  230. package/dist/esm/ui-shell/renderUiShell.js.map +1 -1
  231. package/dist/esm/ui-shell/useElementAtContainerEdge.js +68 -0
  232. package/dist/esm/ui-shell/useElementAtContainerEdge.js.map +1 -0
  233. package/dist/esm/useMountLifecycleEffect.js +3 -3
  234. package/dist/esm/useMountLifecycleEffect.js.map +1 -1
  235. package/dist/esm/web-component/odysseyWebComponentVersion.generated.js +1 -1
  236. package/dist/esm/web-component/odysseyWebComponentVersion.generated.js.map +1 -1
  237. package/dist/index.cjs +1 -1
  238. package/dist/index.d.ts +1 -1
  239. package/dist/index.d.ts.map +1 -0
  240. package/dist/index.js +25 -0
  241. package/dist/index.mjs +1 -1
  242. package/dist/index.scss +1 -1
  243. package/dist/tsconfig.production.tsbuildinfo +1 -1
  244. package/dist/tsconfig.tsbuildinfo +1 -0
  245. package/dist/types/DataTable/DataTable.d.ts +2 -2
  246. package/dist/types/DataTable/DataTable.d.ts.map +1 -1
  247. package/dist/types/Drawer.d.ts +24 -6
  248. package/dist/types/Drawer.d.ts.map +1 -1
  249. package/dist/types/OdysseyTranslationProvider.d.ts +1 -1
  250. package/dist/types/OdysseyTranslationProvider.d.ts.map +1 -1
  251. package/dist/types/PasswordField.d.ts.map +1 -1
  252. package/dist/types/Select.d.ts.map +1 -1
  253. package/dist/types/Status.d.ts +2 -2
  254. package/dist/types/Status.d.ts.map +1 -1
  255. package/dist/types/Typography.d.ts +16 -12
  256. package/dist/types/Typography.d.ts.map +1 -1
  257. package/dist/types/createContrastColors.d.ts +5 -1
  258. package/dist/types/createContrastColors.d.ts.map +1 -1
  259. package/dist/types/getLogicalBoundaries.d.ts +24 -0
  260. package/dist/types/getLogicalBoundaries.d.ts.map +1 -0
  261. package/dist/types/i18n.d.ts +6 -29
  262. package/dist/types/i18n.d.ts.map +1 -1
  263. package/dist/types/labs/DataFilters.d.ts.map +1 -1
  264. package/dist/types/labs/DataView/BulkActionsMenu.d.ts +1 -1
  265. package/dist/types/labs/DataView/BulkActionsMenu.d.ts.map +1 -1
  266. package/dist/types/labs/DataView/CardLayoutContent.d.ts.map +1 -1
  267. package/dist/types/labs/DataView/DataView.d.ts.map +1 -1
  268. package/dist/types/labs/DataView/RowActions.d.ts +5 -4
  269. package/dist/types/labs/DataView/RowActions.d.ts.map +1 -1
  270. package/dist/types/labs/DataView/TableLayoutContent.d.ts +1 -1
  271. package/dist/types/labs/DataView/TableLayoutContent.d.ts.map +1 -1
  272. package/dist/types/labs/OdysseyPickers/ComposablePicker.d.ts +4 -1
  273. package/dist/types/labs/OdysseyPickers/ComposablePicker.d.ts.map +1 -1
  274. package/dist/types/labs/OdysseyPickers/Picker.d.ts +7 -7
  275. package/dist/types/labs/OdysseyPickers/Picker.d.ts.map +1 -1
  276. package/dist/types/labs/OdysseyPickers/PickerWithOptionAdornment.d.ts.map +1 -1
  277. package/dist/types/labs/OdysseyPickers/SearchDropdown.d.ts.map +1 -1
  278. package/dist/types/labs/PageTemplate/PageTemplate.d.ts.map +1 -1
  279. package/dist/types/properties/ts/odyssey-react-mui.d.ts +0 -1
  280. package/dist/types/properties/ts/odyssey-react-mui.d.ts.map +1 -1
  281. package/dist/types/properties/ts/odyssey-react-mui_cs.d.ts +0 -1
  282. package/dist/types/properties/ts/odyssey-react-mui_cs.d.ts.map +1 -1
  283. package/dist/types/properties/ts/odyssey-react-mui_da.d.ts +0 -1
  284. package/dist/types/properties/ts/odyssey-react-mui_da.d.ts.map +1 -1
  285. package/dist/types/properties/ts/odyssey-react-mui_de.d.ts +0 -1
  286. package/dist/types/properties/ts/odyssey-react-mui_de.d.ts.map +1 -1
  287. package/dist/types/properties/ts/odyssey-react-mui_el.d.ts +0 -1
  288. package/dist/types/properties/ts/odyssey-react-mui_el.d.ts.map +1 -1
  289. package/dist/types/properties/ts/odyssey-react-mui_es.d.ts +0 -1
  290. package/dist/types/properties/ts/odyssey-react-mui_es.d.ts.map +1 -1
  291. package/dist/types/properties/ts/odyssey-react-mui_eu.d.ts +130 -0
  292. package/dist/types/properties/ts/odyssey-react-mui_eu.d.ts.map +1 -0
  293. package/dist/types/properties/ts/odyssey-react-mui_fi.d.ts +0 -1
  294. package/dist/types/properties/ts/odyssey-react-mui_fi.d.ts.map +1 -1
  295. package/dist/types/properties/ts/odyssey-react-mui_fr.d.ts +0 -1
  296. package/dist/types/properties/ts/odyssey-react-mui_fr.d.ts.map +1 -1
  297. package/dist/types/properties/ts/odyssey-react-mui_ht.d.ts +0 -1
  298. package/dist/types/properties/ts/odyssey-react-mui_ht.d.ts.map +1 -1
  299. package/dist/types/properties/ts/odyssey-react-mui_hu.d.ts +0 -1
  300. package/dist/types/properties/ts/odyssey-react-mui_hu.d.ts.map +1 -1
  301. package/dist/types/properties/ts/odyssey-react-mui_id.d.ts +0 -1
  302. package/dist/types/properties/ts/odyssey-react-mui_id.d.ts.map +1 -1
  303. package/dist/types/properties/ts/odyssey-react-mui_it.d.ts +0 -1
  304. package/dist/types/properties/ts/odyssey-react-mui_it.d.ts.map +1 -1
  305. package/dist/types/properties/ts/odyssey-react-mui_ja.d.ts +0 -1
  306. package/dist/types/properties/ts/odyssey-react-mui_ja.d.ts.map +1 -1
  307. package/dist/types/properties/ts/odyssey-react-mui_ko.d.ts +0 -1
  308. package/dist/types/properties/ts/odyssey-react-mui_ko.d.ts.map +1 -1
  309. package/dist/types/properties/ts/odyssey-react-mui_ms.d.ts +0 -1
  310. package/dist/types/properties/ts/odyssey-react-mui_ms.d.ts.map +1 -1
  311. package/dist/types/properties/ts/odyssey-react-mui_nb.d.ts +0 -1
  312. package/dist/types/properties/ts/odyssey-react-mui_nb.d.ts.map +1 -1
  313. package/dist/types/properties/ts/odyssey-react-mui_nl_NL.d.ts +0 -1
  314. package/dist/types/properties/ts/odyssey-react-mui_nl_NL.d.ts.map +1 -1
  315. package/dist/types/properties/ts/odyssey-react-mui_ok_PL.d.ts +3 -1
  316. package/dist/types/properties/ts/odyssey-react-mui_ok_PL.d.ts.map +1 -1
  317. package/dist/types/properties/ts/odyssey-react-mui_ok_SK.d.ts +3 -0
  318. package/dist/types/properties/ts/odyssey-react-mui_ok_SK.d.ts.map +1 -1
  319. package/dist/types/properties/ts/odyssey-react-mui_pl.d.ts +0 -1
  320. package/dist/types/properties/ts/odyssey-react-mui_pl.d.ts.map +1 -1
  321. package/dist/types/properties/ts/odyssey-react-mui_pt_BR.d.ts +0 -1
  322. package/dist/types/properties/ts/odyssey-react-mui_pt_BR.d.ts.map +1 -1
  323. package/dist/types/properties/ts/odyssey-react-mui_ro.d.ts +0 -1
  324. package/dist/types/properties/ts/odyssey-react-mui_ro.d.ts.map +1 -1
  325. package/dist/types/properties/ts/odyssey-react-mui_ru.d.ts +0 -1
  326. package/dist/types/properties/ts/odyssey-react-mui_ru.d.ts.map +1 -1
  327. package/dist/types/properties/ts/odyssey-react-mui_sv.d.ts +0 -1
  328. package/dist/types/properties/ts/odyssey-react-mui_sv.d.ts.map +1 -1
  329. package/dist/types/properties/ts/odyssey-react-mui_th.d.ts +0 -1
  330. package/dist/types/properties/ts/odyssey-react-mui_th.d.ts.map +1 -1
  331. package/dist/types/properties/ts/odyssey-react-mui_tr.d.ts +0 -1
  332. package/dist/types/properties/ts/odyssey-react-mui_tr.d.ts.map +1 -1
  333. package/dist/types/properties/ts/odyssey-react-mui_uk.d.ts +0 -1
  334. package/dist/types/properties/ts/odyssey-react-mui_uk.d.ts.map +1 -1
  335. package/dist/types/properties/ts/odyssey-react-mui_vi.d.ts +0 -1
  336. package/dist/types/properties/ts/odyssey-react-mui_vi.d.ts.map +1 -1
  337. package/dist/types/properties/ts/odyssey-react-mui_zh_CN.d.ts +0 -1
  338. package/dist/types/properties/ts/odyssey-react-mui_zh_CN.d.ts.map +1 -1
  339. package/dist/types/properties/ts/odyssey-react-mui_zh_TW.d.ts +0 -1
  340. package/dist/types/properties/ts/odyssey-react-mui_zh_TW.d.ts.map +1 -1
  341. package/dist/types/theme/components.d.ts.map +1 -1
  342. package/dist/types/ui-shell/NarrowUiShellContent.d.ts.map +1 -1
  343. package/dist/types/ui-shell/SideNav/SideNav.d.ts.map +1 -1
  344. package/dist/types/ui-shell/SideNav/SideNavItemLinkContent.d.ts.map +1 -1
  345. package/dist/types/ui-shell/UiShell.d.ts +1 -1
  346. package/dist/types/ui-shell/UiShell.d.ts.map +1 -1
  347. package/dist/types/ui-shell/UiShellProvider.d.ts +10 -4
  348. package/dist/types/ui-shell/UiShellProvider.d.ts.map +1 -1
  349. package/dist/types/ui-shell/renderUiShell.d.ts +2 -2
  350. package/dist/types/ui-shell/renderUiShell.d.ts.map +1 -1
  351. package/dist/types/ui-shell/useElementAtContainerEdge.d.ts +43 -0
  352. package/dist/types/ui-shell/useElementAtContainerEdge.d.ts.map +1 -0
  353. package/dist/types/web-component/odysseyWebComponentVersion.generated.d.ts +1 -1
  354. package/package.json +9 -7
@@ -64,7 +64,6 @@ const StyledLeftSideContainer = styled("div", {
64
64
  display: isOpen ? "block" : "none",
65
65
  height: "100%",
66
66
  gridArea: "left-side",
67
- overflowY: "auto",
68
67
  position: "absolute",
69
68
  zIndex: UI_SHELL_BASE_Z_INDEX
70
69
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"NarrowUiShellContent.js","names":["styled","memo","useCallback","useEffect","useRef","useState","ErrorBoundary","Button","CloseIcon","MoreIcon","InnerAppContainer","useOdysseyDesignTokens","SideNav","SideNavLogo","HamburgerMenuIcon","useUiShellContext","emptySideNavItems","SIDE_NAV_WIDTH","TOP_NAV_HEIGHT","UI_SHELL_BASE_Z_INDEX","useScrollState","useMatchAppElementToUiShellAppArea","hexToRgb","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","StyledAppContentArea","gridArea","position","display","gridGap","gridTemplateAreas","gridTemplateColumns","gridTemplateRows","height","width","StyledAppContainer","shouldForwardProp","prop","appBackgroundColor","backgroundColor","overflow","StyledBannersContainer","zIndex","StyledLeftSideContainer","isOpen","overflowY","StyledRightSideContainer","odysseyDesignTokens","HueNeutralWhite","maxWidth","right","StyledMenuLogo","alignItems","gap","Spacing3","StyledLogoContainer","paddingBlock","Spacing4","maxHeight","StyledPageOverlay","HueNeutral900","asFormattedString","replace","left","top","StyledSideNavContainer","StyledUiShellContainer","HueNeutral50","StyledTopNav","isContentScrolled","topNavBackgroundColor","boxShadow","DepthMedium","undefined","clipPath","flexDirection","justifyContent","transition","TransitionDurationMain","TransitionTimingMain","StyledTopNavMenu","minHeight","Spacing2","paddingInline","borderBottomColor","HueNeutral100","borderBottomStyle","BorderStyleMain","borderBottomWidth","BorderWidthMain","StyledTopNavSearch","NarrowUiShellContent","appElement","appElementScrollingMode","hasStandardAppContentPadding","hasSideNavProps","initialVisibleSections","onError","console","error","optionalComponents","sideNavProps","topNavProps","uiShellContext","sideNavContainerRef","topNavContainerRef","uiShellAppAreaRef","isLeftSideMenuOpen","setIsLeftSideMenuOpen","isRightSideMenuOpen","setIsRightSideMenuOpen","closeSideMenus","unsubscribeFromCloseRightSideMenu","subscribeToCloseRightSideMenu","unsubscribeFromSideNavItemClicked","subscribeToCloseSideNavMenu","toggleLeftSideMenu","toggleRightSideMenu","parentContainerRef","paddingMode","uiShellResizableRefs","children","onClick","ref","banners","includes","fallback","sideNavBackgroundColor","isCollapsible","isCollapsed","startIcon","testId","variant","isLoading","_Skeleton","logoProps","rightSideMenu","topNavLeftSide","sideNavItems","appName","hasCustomFooter","sideNavFooter","footerComponent","footerItems","isObtrusive","onCollapse","tabIndex","MemoizedNarrowUiShellContent","displayName"],"sources":["../../../src/ui-shell/NarrowUiShellContent.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport { Skeleton } from \"@mui/material\";\nimport {\n CSSProperties,\n memo,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport { Button } from \"../Buttons/Button.js\";\nimport type { HtmlProps } from \"../HtmlProps.js\";\nimport { CloseIcon } from \"../icons.generated/Close.js\";\nimport { MoreIcon } from \"../icons.generated/More.js\";\nimport { InnerAppContainer } from \"./InnerAppContainer.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext.js\";\nimport { SideNav } from \"./SideNav/SideNav.js\";\nimport { SideNavLogo } from \"./SideNav/SideNavLogo.js\";\nimport { HamburgerMenuIcon } from \"./TopNav/HamburgerMenuIcon.js\";\nimport { UiShellColors, useUiShellContext } from \"./UiShellProvider.js\";\nimport {\n UiShellNavComponentProps,\n UiShellContentProps,\n} from \"./uiShellContentTypes.js\";\nimport {\n emptySideNavItems,\n SIDE_NAV_WIDTH,\n TOP_NAV_HEIGHT,\n UI_SHELL_BASE_Z_INDEX,\n} from \"./uiShellSharedConstants.js\";\nimport { useScrollState } from \"./useScrollState.js\";\nimport { useMatchAppElementToUiShellAppArea } from \"./useMatchAppElementToUiShellAppArea.js\";\nimport { hexToRgb } from \"../hexToRgb.js\";\n\nconst StyledAppContentArea = styled(\"div\")({\n gridArea: \"app-content\",\n position: \"relative\",\n display: \"grid\",\n gridGap: 0,\n gridTemplateAreas: `\n \"left-side app-container right-side\"\n `,\n gridTemplateColumns: \"auto 1fr auto\",\n gridTemplateRows: \"1fr\",\n height: \"100%\",\n width: \"100%\",\n});\n\nconst StyledAppContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"appBackgroundColor\" && prop !== \"odysseyDesignTokens\",\n})<{\n appBackgroundColor?: UiShellColors[\"appBackgroundColor\"];\n}>(({ appBackgroundColor }) => ({\n backgroundColor: appBackgroundColor,\n gridArea: \"app-container\",\n height: \"100%\",\n overflow: \"hidden\",\n width: \"100%\",\n}));\n\nconst StyledBannersContainer = styled(\"div\")({\n gridArea: \"banners\",\n zIndex: UI_SHELL_BASE_Z_INDEX,\n});\n\nconst StyledLeftSideContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"isOpen\",\n})<{\n isOpen: boolean;\n}>(({ isOpen }) => ({\n display: isOpen ? \"block\" : \"none\",\n height: \"100%\",\n gridArea: \"left-side\",\n overflowY: \"auto\",\n position: \"absolute\",\n zIndex: UI_SHELL_BASE_Z_INDEX,\n}));\n\nconst StyledRightSideContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"isOpen\" && prop !== \"odysseyDesignTokens\",\n})<{\n isOpen: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(({ isOpen, odysseyDesignTokens }) => ({\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n display: isOpen ? \"block\" : \"none\",\n gridArea: \"right-side\",\n height: \"100%\",\n maxWidth: SIDE_NAV_WIDTH,\n overflowY: \"auto\",\n position: \"absolute\",\n right: 0,\n width: SIDE_NAV_WIDTH,\n zIndex: UI_SHELL_BASE_Z_INDEX,\n}));\n\nconst StyledMenuLogo = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n alignItems: \"center\",\n display: \"inline-flex\",\n gap: odysseyDesignTokens.Spacing3,\n}));\n\nconst StyledLogoContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n height: TOP_NAV_HEIGHT,\n paddingBlock: odysseyDesignTokens.Spacing4,\n\n \"svg, img\": {\n maxHeight: \"100%\",\n width: \"auto\",\n maxWidth: \"100%\",\n },\n}));\n\nconst StyledPageOverlay = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n backgroundColor: hexToRgb(\n odysseyDesignTokens.HueNeutral900,\n ).asFormattedString.replace(/rgb\\((.+)\\)$/, \"rgba($1, 0.26)\"),\n gridArea: \"app-content\",\n height: \"100vh\",\n left: 0,\n position: \"absolute\",\n top: 0,\n width: \"100vw\",\n zIndex: UI_SHELL_BASE_Z_INDEX,\n}));\n\nconst StyledSideNavContainer = styled(\"div\")({\n height: \"100%\", // Without this value, side nav won't fill up the height if the content is too short.\n});\n\nconst StyledUiShellContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n backgroundColor: odysseyDesignTokens.HueNeutral50,\n display: \"grid\",\n gridGap: 0,\n gridTemplateAreas: `\n \"banners\"\n \"top-nav\"\n \"app-content\"\n `,\n gridTemplateColumns: \"1fr\",\n gridTemplateRows: \"auto auto 1fr\",\n height: \"100vh\",\n overflow: \"hidden\",\n width: \"100vw\",\n}));\n\nconst StyledTopNav = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isContentScrolled\" &&\n prop !== \"topNavBackgroundColor\",\n})<{\n isContentScrolled?: boolean;\n odysseyDesignTokens: DesignTokens;\n topNavBackgroundColor?: UiShellColors[\"topNavBackgroundColor\"];\n}>(({ odysseyDesignTokens, isContentScrolled, topNavBackgroundColor }) => ({\n alignItems: \"stretch\",\n backgroundColor: odysseyDesignTokens.HueNeutralWhite || topNavBackgroundColor, // This logic doesn't make sense, but I wanted to leave it here for when we eventually make a decision on `topNavBackgroundColor`. --Kevin Ghadyani\n boxShadow: isContentScrolled ? odysseyDesignTokens.DepthMedium : undefined,\n clipPath: \"inset(0 0 -100vh 0)\",\n display: \"flex\",\n flexDirection: \"column\",\n gridArea: \"top-nav\",\n height: \"100%\",\n justifyContent: \"center\",\n position: \"relative\",\n transition: `box-shadow ${odysseyDesignTokens.TransitionDurationMain} ${odysseyDesignTokens.TransitionTimingMain}`,\n zIndex: UI_SHELL_BASE_Z_INDEX,\n}));\n\nconst StyledTopNavMenu = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"topNavBackgroundColor\",\n})<{\n odysseyDesignTokens: DesignTokens;\n topNavBackgroundColor?: UiShellColors[\"topNavBackgroundColor\"];\n}>(({ odysseyDesignTokens, topNavBackgroundColor }) => ({\n alignItems: \"center\",\n display: \"flex\",\n gap: odysseyDesignTokens.Spacing3,\n height: \"100%\",\n justifyContent: \"space-between\",\n maxHeight: TOP_NAV_HEIGHT,\n minHeight: TOP_NAV_HEIGHT,\n paddingBlock: odysseyDesignTokens.Spacing2,\n paddingInline: odysseyDesignTokens.Spacing3,\n transition: `box-shadow ${odysseyDesignTokens.TransitionDurationMain} ${odysseyDesignTokens.TransitionTimingMain}`,\n\n ...(topNavBackgroundColor === odysseyDesignTokens.HueNeutralWhite &&\n ({\n borderBottomColor: odysseyDesignTokens.HueNeutral100,\n borderBottomStyle: odysseyDesignTokens.BorderStyleMain,\n borderBottomWidth: odysseyDesignTokens.BorderWidthMain,\n } as CSSProperties)),\n}));\n\nconst StyledTopNavSearch = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n paddingBlock: odysseyDesignTokens.Spacing2,\n paddingInline: odysseyDesignTokens.Spacing3,\n}));\n\nexport type NarrowUiShellContentProps = Pick<HtmlProps, \"testId\"> &\n Pick<UiShellNavComponentProps, \"sideNavProps\" | \"topNavProps\"> &\n UiShellContentProps;\n\nconst NarrowUiShellContent = ({\n appElement,\n appElementScrollingMode,\n hasStandardAppContentPadding = true,\n hasSideNavProps,\n initialVisibleSections = [\"TopNav\", \"SideNav\", \"AppSwitcher\"],\n onError = console.error,\n optionalComponents,\n sideNavProps,\n topNavProps,\n}: NarrowUiShellContentProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const uiShellContext = useUiShellContext();\n\n const { isContentScrolled } = useScrollState(appElement);\n\n const sideNavContainerRef = useRef<HTMLDivElement>(null);\n const topNavContainerRef = useRef<HTMLDivElement>(null);\n const uiShellAppAreaRef = useRef<HTMLDivElement>(null);\n\n const [isLeftSideMenuOpen, setIsLeftSideMenuOpen] = useState(false);\n const [isRightSideMenuOpen, setIsRightSideMenuOpen] = useState(false);\n\n const closeSideMenus = useCallback(() => {\n setIsLeftSideMenuOpen(false);\n setIsRightSideMenuOpen(false);\n }, []);\n\n useEffect(() => {\n const unsubscribeFromCloseRightSideMenu =\n uiShellContext?.subscribeToCloseRightSideMenu(() => {\n closeSideMenus();\n });\n\n const unsubscribeFromSideNavItemClicked =\n uiShellContext?.subscribeToCloseSideNavMenu(() => {\n closeSideMenus();\n });\n\n return () => {\n unsubscribeFromCloseRightSideMenu?.();\n unsubscribeFromSideNavItemClicked?.();\n };\n }, [closeSideMenus, uiShellContext]);\n\n const toggleLeftSideMenu = useCallback(() => {\n setIsRightSideMenuOpen(false);\n setIsLeftSideMenuOpen((isLeftSideMenuOpen) => !isLeftSideMenuOpen);\n }, []);\n\n const toggleRightSideMenu = useCallback(() => {\n setIsLeftSideMenuOpen(false);\n setIsRightSideMenuOpen((isRightSideMenuOpen) => !isRightSideMenuOpen);\n }, []);\n\n const { parentContainerRef } = useMatchAppElementToUiShellAppArea({\n appElement,\n appElementScrollingMode,\n paddingMode: hasStandardAppContentPadding ? \"compact\" : \"none\",\n uiShellAppAreaRef,\n uiShellResizableRefs: [\n sideNavContainerRef,\n topNavContainerRef,\n uiShellAppAreaRef,\n ],\n });\n\n return (\n <>\n {(isLeftSideMenuOpen || isRightSideMenuOpen) && (\n <StyledPageOverlay\n odysseyDesignTokens={odysseyDesignTokens}\n onClick={closeSideMenus}\n />\n )}\n\n <StyledUiShellContainer\n odysseyDesignTokens={odysseyDesignTokens}\n ref={parentContainerRef}\n >\n <StyledBannersContainer>\n {optionalComponents?.banners}\n </StyledBannersContainer>\n\n {(initialVisibleSections?.includes(\"TopNav\") || topNavProps) && (\n <ErrorBoundary fallback={null} onError={onError}>\n <StyledTopNav\n isContentScrolled={isContentScrolled}\n odysseyDesignTokens={odysseyDesignTokens}\n topNavBackgroundColor={uiShellContext?.topNavBackgroundColor}\n >\n <StyledTopNavMenu\n odysseyDesignTokens={odysseyDesignTokens}\n topNavBackgroundColor={uiShellContext?.sideNavBackgroundColor}\n >\n <StyledMenuLogo odysseyDesignTokens={odysseyDesignTokens}>\n {(sideNavProps?.isCollapsible ||\n !sideNavProps?.isCollapsed) && (\n <Button\n onClick={toggleLeftSideMenu}\n startIcon={<HamburgerMenuIcon />}\n testId=\"sidenav-menu--icon\"\n variant=\"floating\"\n />\n )}\n\n <StyledLogoContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {sideNavProps?.isLoading ? (\n // The skeleton takes the hardcoded dimensions of the Okta logo\n <Skeleton variant=\"rounded\" height={24} width={67} />\n ) : (\n <SideNavLogo {...sideNavProps?.logoProps} />\n )}\n </StyledLogoContainer>\n </StyledMenuLogo>\n\n {optionalComponents?.rightSideMenu && (\n <Button\n onClick={toggleRightSideMenu}\n startIcon={\n isRightSideMenuOpen ? <CloseIcon /> : <MoreIcon />\n }\n testId=\"userprofile-menu--icon\"\n variant=\"floating\"\n />\n )}\n </StyledTopNavMenu>\n\n {optionalComponents?.topNavLeftSide && (\n <StyledTopNavSearch odysseyDesignTokens={odysseyDesignTokens}>\n {optionalComponents?.topNavLeftSide}\n </StyledTopNavSearch>\n )}\n </StyledTopNav>\n </ErrorBoundary>\n )}\n\n <StyledAppContentArea>\n <StyledLeftSideContainer isOpen={isLeftSideMenuOpen}>\n {\n /* If SideNav should be initially visible and we have not yet received props, render SideNav with minimal inputs */\n initialVisibleSections?.includes(\"SideNav\") &&\n !hasSideNavProps && (\n <ErrorBoundary fallback={null} onError={onError}>\n <SideNav isLoading sideNavItems={emptySideNavItems} />\n </ErrorBoundary>\n )\n }\n\n {hasSideNavProps && sideNavProps && (\n <ErrorBoundary fallback={null} onError={onError}>\n <StyledSideNavContainer>\n <SideNav\n {...{\n ...{\n ...sideNavProps,\n // This hides the side nav logo or app name from showing up as we already have one in the narrow top nav.\n appName: undefined,\n logoProps: undefined,\n },\n ...(sideNavProps.hasCustomFooter &&\n optionalComponents?.sideNavFooter\n ? {\n footerComponent: optionalComponents.sideNavFooter,\n footerItems: undefined,\n hasCustomFooter: sideNavProps.hasCustomFooter,\n }\n : {\n footerItems: sideNavProps.footerItems,\n hasCustomFooter: false,\n }),\n }}\n isCollapsed={false}\n isCollapsible={false}\n isObtrusive\n onCollapse={closeSideMenus}\n />\n </StyledSideNavContainer>\n </ErrorBoundary>\n )}\n </StyledLeftSideContainer>\n\n <StyledRightSideContainer\n isOpen={isRightSideMenuOpen}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <StyledSideNavContainer>\n {optionalComponents?.rightSideMenu}\n </StyledSideNavContainer>\n </StyledRightSideContainer>\n\n <StyledAppContainer\n appBackgroundColor={uiShellContext?.appBackgroundColor}\n tabIndex={0}\n ref={uiShellAppAreaRef}\n >\n <InnerAppContainer isContentScrolled={isContentScrolled} />\n </StyledAppContainer>\n </StyledAppContentArea>\n </StyledUiShellContainer>\n </>\n );\n};\n\nconst MemoizedNarrowUiShellContent = memo(NarrowUiShellContent);\nMemoizedNarrowUiShellContent.displayName = \"NarrowUiShellContent\";\n\nexport { MemoizedNarrowUiShellContent as NarrowUiShellContent };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NarrowUiShellContent.js","names":["styled","memo","useCallback","useEffect","useRef","useState","ErrorBoundary","Button","CloseIcon","MoreIcon","InnerAppContainer","useOdysseyDesignTokens","SideNav","SideNavLogo","HamburgerMenuIcon","useUiShellContext","emptySideNavItems","SIDE_NAV_WIDTH","TOP_NAV_HEIGHT","UI_SHELL_BASE_Z_INDEX","useScrollState","useMatchAppElementToUiShellAppArea","hexToRgb","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","StyledAppContentArea","gridArea","position","display","gridGap","gridTemplateAreas","gridTemplateColumns","gridTemplateRows","height","width","StyledAppContainer","shouldForwardProp","prop","appBackgroundColor","backgroundColor","overflow","StyledBannersContainer","zIndex","StyledLeftSideContainer","isOpen","StyledRightSideContainer","odysseyDesignTokens","HueNeutralWhite","maxWidth","overflowY","right","StyledMenuLogo","alignItems","gap","Spacing3","StyledLogoContainer","paddingBlock","Spacing4","maxHeight","StyledPageOverlay","HueNeutral900","asFormattedString","replace","left","top","StyledSideNavContainer","StyledUiShellContainer","HueNeutral50","StyledTopNav","isContentScrolled","topNavBackgroundColor","boxShadow","DepthMedium","undefined","clipPath","flexDirection","justifyContent","transition","TransitionDurationMain","TransitionTimingMain","StyledTopNavMenu","minHeight","Spacing2","paddingInline","borderBottomColor","HueNeutral100","borderBottomStyle","BorderStyleMain","borderBottomWidth","BorderWidthMain","StyledTopNavSearch","NarrowUiShellContent","appElement","appElementScrollingMode","hasStandardAppContentPadding","hasSideNavProps","initialVisibleSections","onError","console","error","optionalComponents","sideNavProps","topNavProps","uiShellContext","sideNavContainerRef","topNavContainerRef","uiShellAppAreaRef","isLeftSideMenuOpen","setIsLeftSideMenuOpen","isRightSideMenuOpen","setIsRightSideMenuOpen","closeSideMenus","unsubscribeFromCloseRightSideMenu","subscribeToCloseRightSideMenu","unsubscribeFromSideNavItemClicked","subscribeToCloseSideNavMenu","toggleLeftSideMenu","toggleRightSideMenu","parentContainerRef","paddingMode","uiShellResizableRefs","children","onClick","ref","banners","includes","fallback","sideNavBackgroundColor","isCollapsible","isCollapsed","startIcon","testId","variant","isLoading","_Skeleton","logoProps","rightSideMenu","topNavLeftSide","sideNavItems","appName","hasCustomFooter","sideNavFooter","footerComponent","footerItems","isObtrusive","onCollapse","tabIndex","MemoizedNarrowUiShellContent","displayName"],"sources":["../../../src/ui-shell/NarrowUiShellContent.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport { Skeleton } from \"@mui/material\";\nimport {\n CSSProperties,\n memo,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport { Button } from \"../Buttons/Button.js\";\nimport type { HtmlProps } from \"../HtmlProps.js\";\nimport { CloseIcon } from \"../icons.generated/Close.js\";\nimport { MoreIcon } from \"../icons.generated/More.js\";\nimport { InnerAppContainer } from \"./InnerAppContainer.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext.js\";\nimport { SideNav } from \"./SideNav/SideNav.js\";\nimport { SideNavLogo } from \"./SideNav/SideNavLogo.js\";\nimport { HamburgerMenuIcon } from \"./TopNav/HamburgerMenuIcon.js\";\nimport { UiShellColors, useUiShellContext } from \"./UiShellProvider.js\";\nimport {\n UiShellNavComponentProps,\n UiShellContentProps,\n} from \"./uiShellContentTypes.js\";\nimport {\n emptySideNavItems,\n SIDE_NAV_WIDTH,\n TOP_NAV_HEIGHT,\n UI_SHELL_BASE_Z_INDEX,\n} from \"./uiShellSharedConstants.js\";\nimport { useScrollState } from \"./useScrollState.js\";\nimport { useMatchAppElementToUiShellAppArea } from \"./useMatchAppElementToUiShellAppArea.js\";\nimport { hexToRgb } from \"../hexToRgb.js\";\n\nconst StyledAppContentArea = styled(\"div\")({\n gridArea: \"app-content\",\n position: \"relative\",\n display: \"grid\",\n gridGap: 0,\n gridTemplateAreas: `\n \"left-side app-container right-side\"\n `,\n gridTemplateColumns: \"auto 1fr auto\",\n gridTemplateRows: \"1fr\",\n height: \"100%\",\n width: \"100%\",\n});\n\nconst StyledAppContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"appBackgroundColor\" && prop !== \"odysseyDesignTokens\",\n})<{\n appBackgroundColor?: UiShellColors[\"appBackgroundColor\"];\n}>(({ appBackgroundColor }) => ({\n backgroundColor: appBackgroundColor,\n gridArea: \"app-container\",\n height: \"100%\",\n overflow: \"hidden\",\n width: \"100%\",\n}));\n\nconst StyledBannersContainer = styled(\"div\")({\n gridArea: \"banners\",\n zIndex: UI_SHELL_BASE_Z_INDEX,\n});\n\nconst StyledLeftSideContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"isOpen\",\n})<{\n isOpen: boolean;\n}>(({ isOpen }) => ({\n display: isOpen ? \"block\" : \"none\",\n height: \"100%\",\n gridArea: \"left-side\",\n position: \"absolute\",\n zIndex: UI_SHELL_BASE_Z_INDEX,\n}));\n\nconst StyledRightSideContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"isOpen\" && prop !== \"odysseyDesignTokens\",\n})<{\n isOpen: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(({ isOpen, odysseyDesignTokens }) => ({\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n display: isOpen ? \"block\" : \"none\",\n gridArea: \"right-side\",\n height: \"100%\",\n maxWidth: SIDE_NAV_WIDTH,\n overflowY: \"auto\",\n position: \"absolute\",\n right: 0,\n width: SIDE_NAV_WIDTH,\n zIndex: UI_SHELL_BASE_Z_INDEX,\n}));\n\nconst StyledMenuLogo = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n alignItems: \"center\",\n display: \"inline-flex\",\n gap: odysseyDesignTokens.Spacing3,\n}));\n\nconst StyledLogoContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n height: TOP_NAV_HEIGHT,\n paddingBlock: odysseyDesignTokens.Spacing4,\n\n \"svg, img\": {\n maxHeight: \"100%\",\n width: \"auto\",\n maxWidth: \"100%\",\n },\n}));\n\nconst StyledPageOverlay = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n backgroundColor: hexToRgb(\n odysseyDesignTokens.HueNeutral900,\n ).asFormattedString.replace(/rgb\\((.+)\\)$/, \"rgba($1, 0.26)\"),\n gridArea: \"app-content\",\n height: \"100vh\",\n left: 0,\n position: \"absolute\",\n top: 0,\n width: \"100vw\",\n zIndex: UI_SHELL_BASE_Z_INDEX,\n}));\n\nconst StyledSideNavContainer = styled(\"div\")({\n height: \"100%\", // Without this value, side nav won't fill up the height if the content is too short.\n});\n\nconst StyledUiShellContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n backgroundColor: odysseyDesignTokens.HueNeutral50,\n display: \"grid\",\n gridGap: 0,\n gridTemplateAreas: `\n \"banners\"\n \"top-nav\"\n \"app-content\"\n `,\n gridTemplateColumns: \"1fr\",\n gridTemplateRows: \"auto auto 1fr\",\n height: \"100vh\",\n overflow: \"hidden\",\n width: \"100vw\",\n}));\n\nconst StyledTopNav = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isContentScrolled\" &&\n prop !== \"topNavBackgroundColor\",\n})<{\n isContentScrolled?: boolean;\n odysseyDesignTokens: DesignTokens;\n topNavBackgroundColor?: UiShellColors[\"topNavBackgroundColor\"];\n}>(({ odysseyDesignTokens, isContentScrolled, topNavBackgroundColor }) => ({\n alignItems: \"stretch\",\n backgroundColor: odysseyDesignTokens.HueNeutralWhite || topNavBackgroundColor, // This logic doesn't make sense, but I wanted to leave it here for when we eventually make a decision on `topNavBackgroundColor`. --Kevin Ghadyani\n boxShadow: isContentScrolled ? odysseyDesignTokens.DepthMedium : undefined,\n clipPath: \"inset(0 0 -100vh 0)\",\n display: \"flex\",\n flexDirection: \"column\",\n gridArea: \"top-nav\",\n height: \"100%\",\n justifyContent: \"center\",\n position: \"relative\",\n transition: `box-shadow ${odysseyDesignTokens.TransitionDurationMain} ${odysseyDesignTokens.TransitionTimingMain}`,\n zIndex: UI_SHELL_BASE_Z_INDEX,\n}));\n\nconst StyledTopNavMenu = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"topNavBackgroundColor\",\n})<{\n odysseyDesignTokens: DesignTokens;\n topNavBackgroundColor?: UiShellColors[\"topNavBackgroundColor\"];\n}>(({ odysseyDesignTokens, topNavBackgroundColor }) => ({\n alignItems: \"center\",\n display: \"flex\",\n gap: odysseyDesignTokens.Spacing3,\n height: \"100%\",\n justifyContent: \"space-between\",\n maxHeight: TOP_NAV_HEIGHT,\n minHeight: TOP_NAV_HEIGHT,\n paddingBlock: odysseyDesignTokens.Spacing2,\n paddingInline: odysseyDesignTokens.Spacing3,\n transition: `box-shadow ${odysseyDesignTokens.TransitionDurationMain} ${odysseyDesignTokens.TransitionTimingMain}`,\n\n ...(topNavBackgroundColor === odysseyDesignTokens.HueNeutralWhite &&\n ({\n borderBottomColor: odysseyDesignTokens.HueNeutral100,\n borderBottomStyle: odysseyDesignTokens.BorderStyleMain,\n borderBottomWidth: odysseyDesignTokens.BorderWidthMain,\n } as CSSProperties)),\n}));\n\nconst StyledTopNavSearch = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n paddingBlock: odysseyDesignTokens.Spacing2,\n paddingInline: odysseyDesignTokens.Spacing3,\n}));\n\nexport type NarrowUiShellContentProps = Pick<HtmlProps, \"testId\"> &\n Pick<UiShellNavComponentProps, \"sideNavProps\" | \"topNavProps\"> &\n UiShellContentProps;\n\nconst NarrowUiShellContent = ({\n appElement,\n appElementScrollingMode,\n hasStandardAppContentPadding = true,\n hasSideNavProps,\n initialVisibleSections = [\"TopNav\", \"SideNav\", \"AppSwitcher\"],\n onError = console.error,\n optionalComponents,\n sideNavProps,\n topNavProps,\n}: NarrowUiShellContentProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const uiShellContext = useUiShellContext();\n\n const { isContentScrolled } = useScrollState(appElement);\n\n const sideNavContainerRef = useRef<HTMLDivElement>(null);\n const topNavContainerRef = useRef<HTMLDivElement>(null);\n const uiShellAppAreaRef = useRef<HTMLDivElement>(null);\n\n const [isLeftSideMenuOpen, setIsLeftSideMenuOpen] = useState(false);\n const [isRightSideMenuOpen, setIsRightSideMenuOpen] = useState(false);\n\n const closeSideMenus = useCallback(() => {\n setIsLeftSideMenuOpen(false);\n setIsRightSideMenuOpen(false);\n }, []);\n\n useEffect(() => {\n const unsubscribeFromCloseRightSideMenu =\n uiShellContext?.subscribeToCloseRightSideMenu(() => {\n closeSideMenus();\n });\n\n const unsubscribeFromSideNavItemClicked =\n uiShellContext?.subscribeToCloseSideNavMenu(() => {\n closeSideMenus();\n });\n\n return () => {\n unsubscribeFromCloseRightSideMenu?.();\n unsubscribeFromSideNavItemClicked?.();\n };\n }, [closeSideMenus, uiShellContext]);\n\n const toggleLeftSideMenu = useCallback(() => {\n setIsRightSideMenuOpen(false);\n setIsLeftSideMenuOpen((isLeftSideMenuOpen) => !isLeftSideMenuOpen);\n }, []);\n\n const toggleRightSideMenu = useCallback(() => {\n setIsLeftSideMenuOpen(false);\n setIsRightSideMenuOpen((isRightSideMenuOpen) => !isRightSideMenuOpen);\n }, []);\n\n const { parentContainerRef } = useMatchAppElementToUiShellAppArea({\n appElement,\n appElementScrollingMode,\n paddingMode: hasStandardAppContentPadding ? \"compact\" : \"none\",\n uiShellAppAreaRef,\n uiShellResizableRefs: [\n sideNavContainerRef,\n topNavContainerRef,\n uiShellAppAreaRef,\n ],\n });\n\n return (\n <>\n {(isLeftSideMenuOpen || isRightSideMenuOpen) && (\n <StyledPageOverlay\n odysseyDesignTokens={odysseyDesignTokens}\n onClick={closeSideMenus}\n />\n )}\n\n <StyledUiShellContainer\n odysseyDesignTokens={odysseyDesignTokens}\n ref={parentContainerRef}\n >\n <StyledBannersContainer>\n {optionalComponents?.banners}\n </StyledBannersContainer>\n\n {(initialVisibleSections?.includes(\"TopNav\") || topNavProps) && (\n <ErrorBoundary fallback={null} onError={onError}>\n <StyledTopNav\n isContentScrolled={isContentScrolled}\n odysseyDesignTokens={odysseyDesignTokens}\n topNavBackgroundColor={uiShellContext?.topNavBackgroundColor}\n >\n <StyledTopNavMenu\n odysseyDesignTokens={odysseyDesignTokens}\n topNavBackgroundColor={uiShellContext?.sideNavBackgroundColor}\n >\n <StyledMenuLogo odysseyDesignTokens={odysseyDesignTokens}>\n {(sideNavProps?.isCollapsible ||\n !sideNavProps?.isCollapsed) && (\n <Button\n onClick={toggleLeftSideMenu}\n startIcon={<HamburgerMenuIcon />}\n testId=\"sidenav-menu--icon\"\n variant=\"floating\"\n />\n )}\n\n <StyledLogoContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {sideNavProps?.isLoading ? (\n // The skeleton takes the hardcoded dimensions of the Okta logo\n <Skeleton variant=\"rounded\" height={24} width={67} />\n ) : (\n <SideNavLogo {...sideNavProps?.logoProps} />\n )}\n </StyledLogoContainer>\n </StyledMenuLogo>\n\n {optionalComponents?.rightSideMenu && (\n <Button\n onClick={toggleRightSideMenu}\n startIcon={\n isRightSideMenuOpen ? <CloseIcon /> : <MoreIcon />\n }\n testId=\"userprofile-menu--icon\"\n variant=\"floating\"\n />\n )}\n </StyledTopNavMenu>\n\n {optionalComponents?.topNavLeftSide && (\n <StyledTopNavSearch odysseyDesignTokens={odysseyDesignTokens}>\n {optionalComponents?.topNavLeftSide}\n </StyledTopNavSearch>\n )}\n </StyledTopNav>\n </ErrorBoundary>\n )}\n\n <StyledAppContentArea>\n <StyledLeftSideContainer isOpen={isLeftSideMenuOpen}>\n {\n /* If SideNav should be initially visible and we have not yet received props, render SideNav with minimal inputs */\n initialVisibleSections?.includes(\"SideNav\") &&\n !hasSideNavProps && (\n <ErrorBoundary fallback={null} onError={onError}>\n <SideNav isLoading sideNavItems={emptySideNavItems} />\n </ErrorBoundary>\n )\n }\n\n {hasSideNavProps && sideNavProps && (\n <ErrorBoundary fallback={null} onError={onError}>\n <StyledSideNavContainer>\n <SideNav\n {...{\n ...{\n ...sideNavProps,\n // This hides the side nav logo or app name from showing up as we already have one in the narrow top nav.\n appName: undefined,\n logoProps: undefined,\n },\n ...(sideNavProps.hasCustomFooter &&\n optionalComponents?.sideNavFooter\n ? {\n footerComponent: optionalComponents.sideNavFooter,\n footerItems: undefined,\n hasCustomFooter: sideNavProps.hasCustomFooter,\n }\n : {\n footerItems: sideNavProps.footerItems,\n hasCustomFooter: false,\n }),\n }}\n isCollapsed={false}\n isCollapsible={false}\n isObtrusive\n onCollapse={closeSideMenus}\n />\n </StyledSideNavContainer>\n </ErrorBoundary>\n )}\n </StyledLeftSideContainer>\n\n <StyledRightSideContainer\n isOpen={isRightSideMenuOpen}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <StyledSideNavContainer>\n {optionalComponents?.rightSideMenu}\n </StyledSideNavContainer>\n </StyledRightSideContainer>\n\n <StyledAppContainer\n appBackgroundColor={uiShellContext?.appBackgroundColor}\n tabIndex={0}\n ref={uiShellAppAreaRef}\n >\n <InnerAppContainer isContentScrolled={isContentScrolled} />\n </StyledAppContainer>\n </StyledAppContentArea>\n </StyledUiShellContainer>\n </>\n );\n};\n\nconst MemoizedNarrowUiShellContent = memo(NarrowUiShellContent);\nMemoizedNarrowUiShellContent.displayName = \"NarrowUiShellContent\";\n\nexport { MemoizedNarrowUiShellContent as NarrowUiShellContent };\n"],"mappings":"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","ignoreList":[]}
@@ -18,6 +18,7 @@ import { arrayMove } from "@dnd-kit/sortable";
18
18
  import { ErrorBoundary } from "react-error-boundary";
19
19
  import { NavAccordion } from "./NavAccordion.js";
20
20
  import { useOdysseyDesignTokens } from "../../OdysseyDesignTokensContext.js";
21
+ import { useElementAtContainerEdge } from "../useElementAtContainerEdge.js";
21
22
  import { OdysseyThemeProvider } from "../../OdysseyThemeProvider.js";
22
23
  import { SideNavHeader } from "./SideNavHeader.js";
23
24
  import { SideNavItemContent, StyledSideNavListItem } from "./SideNavItemContent.js";
@@ -68,10 +69,10 @@ const StyledOpacityTransitionContainer = styled("div", {
68
69
  })
69
70
  }));
70
71
  const StyledSideNavContainer = styled("nav", {
71
- shouldForwardProp: prop => prop !== "backgroundColor" && prop !== "hasNeighboringContent" && prop !== "isAppContentWhiteBackground" && prop !== "isSideNavCollapsed" && prop !== "isSideNavToggleHighlighted" && prop !== "odysseyDesignTokens"
72
+ shouldForwardProp: prop => prop !== "backgroundColor" && prop !== "hasNeighbouringContentAtInlineStart" && prop !== "isAppContentWhiteBackground" && prop !== "isSideNavCollapsed" && prop !== "isSideNavToggleHighlighted" && prop !== "odysseyDesignTokens"
72
73
  })(({
73
74
  backgroundColor,
74
- hasNeighboringContent,
75
+ hasNeighbouringContentAtInlineStart,
75
76
  isAppContentWhiteBackground,
76
77
  isSideNavCollapsed,
77
78
  isSideNavToggleHighlighted,
@@ -100,8 +101,8 @@ const StyledSideNavContainer = styled("nav", {
100
101
  "&::after": {
101
102
  backgroundColor: odysseyDesignTokens.HueNeutral200,
102
103
  opacity: isSideNavCollapsed ? 1 : 0,
103
- transform: isSideNavCollapsed && !hasNeighboringContent ? isSideNavToggleHighlighted ? `translateX(calc(100% - (${odysseyDesignTokens.BorderWidthMain} * 2)))` : `translateX(calc(100% - ${SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px))` : "translateX(0)",
104
- width: hasNeighboringContent ? 0 : `calc(${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px + ${odysseyDesignTokens.BorderWidthMain} * 2)`,
104
+ transform: isSideNavCollapsed && !hasNeighbouringContentAtInlineStart ? isSideNavToggleHighlighted ? `translateX(calc(100% - (${odysseyDesignTokens.BorderWidthMain} * 2)))` : `translateX(calc(100% - ${SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px))` : "translateX(0)",
105
+ width: hasNeighbouringContentAtInlineStart ? 0 : `calc(${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px + ${odysseyDesignTokens.BorderWidthMain} * 2)`,
105
106
  ...(isSideNavCollapsed && isSideNavToggleHighlighted ? {
106
107
  borderRightColor: odysseyDesignTokens.BorderColorPrimaryControl,
107
108
  borderRightStyle: odysseyDesignTokens.BorderStyleMain,
@@ -110,9 +111,9 @@ const StyledSideNavContainer = styled("nav", {
110
111
  }
111
112
  }));
112
113
  const StyledSideNavToggleButtonContainer = styled("div", {
113
- shouldForwardProp: prop => prop !== "hasNeighboringContent" && prop !== "isSideNavCollapsed" && prop !== "isSideNavToggleHighlighted" && prop !== "odysseyDesignTokens"
114
+ shouldForwardProp: prop => prop !== "hasNeighbouringContentAtInlineStart" && prop !== "isSideNavCollapsed" && prop !== "isSideNavToggleHighlighted" && prop !== "odysseyDesignTokens"
114
115
  })(({
115
- hasNeighboringContent,
116
+ hasNeighbouringContentAtInlineStart,
116
117
  isSideNavCollapsed,
117
118
  isSideNavToggleHighlighted,
118
119
  odysseyDesignTokens
@@ -120,7 +121,8 @@ const StyledSideNavToggleButtonContainer = styled("div", {
120
121
  position: "absolute",
121
122
  right: `${SIDE_NAV_TOGGLE_ICON_HALF_SIZE}px`,
122
123
  top: SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,
123
- transform: isSideNavCollapsed && !hasNeighboringContent ? isSideNavToggleHighlighted ? `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px), 0, 0)` : `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED}px), 0, 0)` : "translate3d(100%, 0, 0)",
124
+ width: `${SIDE_NAV_TOGGLE_ICON_SIZE}px`,
125
+ transform: isSideNavCollapsed && !hasNeighbouringContentAtInlineStart ? isSideNavToggleHighlighted ? `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px), 0, 0)` : `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED}px), 0, 0)` : "translate3d(100%, 0, 0)",
124
126
  transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,
125
127
  zIndex: UI_SHELL_OVERLAY_Z_INDEX + 1
126
128
  }));
@@ -149,13 +151,15 @@ const StyledSideNavListContainer = styled("ul")(() => ({
149
151
  width: "100%"
150
152
  }));
151
153
  const StyledSideNavScrollableContainer = styled("div", {
152
- shouldForwardProp: prop => prop !== "odysseyDesignTokens"
154
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "hasBlockStartPadding"
153
155
  })(({
154
- odysseyDesignTokens
156
+ odysseyDesignTokens,
157
+ hasBlockStartPadding
155
158
  }) => ({
156
159
  display: "inline-grid",
157
160
  gridTemplateRows: "1fr max-content",
158
161
  overflowY: "auto",
162
+ paddingBlockStart: hasBlockStartPadding ? odysseyDesignTokens.Spacing2 : 0,
159
163
  paddingInline: odysseyDesignTokens.Spacing2
160
164
  }));
161
165
  const StyledSectionHeaderContainer = styled("li", {
@@ -275,7 +279,6 @@ const SideNav = ({
275
279
  sideNavItems
276
280
  }) => {
277
281
  const [hasContentScrolled, setHasContentScrolled] = useState(false);
278
- const [hasNeighboringContent, setHasNeighboringContent] = useState(false);
279
282
  const [isContentScrollable, setIsContentScrollable] = useState(false);
280
283
  const [isSideNavToggleHighlighted, setIsSideNavToggleHighlighted] = useState(false);
281
284
  const [sideNavItemsList, updateSideNavItemsList] = useState(sideNavItems || []);
@@ -295,13 +298,15 @@ const SideNav = ({
295
298
  const resizeObserverRef = useRef(null);
296
299
  const intersectionObserverRef = useRef(null);
297
300
  const sideNavRef = useRef(null);
301
+ const {
302
+ isAtContainerInlineStart
303
+ } = useElementAtContainerEdge({
304
+ element: sideNavRef.current,
305
+ monitoringElement: sideNavRef.current?.parentElement?.parentElement
306
+ });
307
+ const hasNeighbouringContentAtInlineStart = !isAtContainerInlineStart;
298
308
  const blankElement = useMemo(() => _jsx("div", {}), []);
299
309
  useEffect(() => updateSideNavItemsList(sideNavItems || []), [sideNavItems]);
300
- useEffect(() => {
301
- if (sideNavRef.current) {
302
- setHasNeighboringContent(sideNavRef.current.getBoundingClientRect().x > 0);
303
- }
304
- }, [isCollapsed]);
305
310
  const onMount = useCallback(() => {
306
311
  if (!isCollapsible) {
307
312
  setIsSideNavCollapsed(isCollapsed);
@@ -469,7 +474,7 @@ const SideNav = ({
469
474
  return _jsxs(StyledSideNavContainer, {
470
475
  "aria-label": t("navigation.label"),
471
476
  backgroundColor: uiShellContext?.sideNavBackgroundColor,
472
- hasNeighboringContent: hasNeighboringContent,
477
+ hasNeighbouringContentAtInlineStart: hasNeighbouringContentAtInlineStart,
473
478
  id: "side-nav-expandable",
474
479
  isAppContentWhiteBackground: uiShellContext?.appBackgroundColor === odysseyDesignTokens.HueNeutralWhite,
475
480
  isSideNavCollapsed: isSideNavCollapsed,
@@ -477,12 +482,12 @@ const SideNav = ({
477
482
  odysseyDesignTokens: odysseyDesignTokens,
478
483
  ref: sideNavRef,
479
484
  children: [isCollapsible && _jsx(StyledSideNavToggleButtonContainer, {
480
- hasNeighboringContent: hasNeighboringContent,
485
+ hasNeighbouringContentAtInlineStart: hasNeighbouringContentAtInlineStart,
481
486
  isSideNavCollapsed: isSideNavCollapsed,
482
487
  isSideNavToggleHighlighted: isSideNavToggleHighlighted,
483
488
  odysseyDesignTokens: odysseyDesignTokens,
484
489
  children: _jsx(SideNavToggleButton, {
485
- clickAreaPadding: isSideNavCollapsed && !hasNeighboringContent ? SIDE_NAV_TOGGLE_ICON_SIZE / 2 : 0,
490
+ clickAreaPadding: isSideNavCollapsed && !hasNeighbouringContentAtInlineStart ? SIDE_NAV_TOGGLE_ICON_SIZE / 2 : 0,
486
491
  ariaControls: "side-nav-expandable",
487
492
  isSideNavCollapsed: isSideNavCollapsed,
488
493
  onClick: sideNavExpandClickHandler,
@@ -511,6 +516,7 @@ const SideNav = ({
511
516
  }) : _jsx("div", {}), _jsxs(StyledSideNavScrollableContainer, {
512
517
  odysseyDesignTokens: odysseyDesignTokens,
513
518
  "data-se": "scrollable-region",
519
+ hasBlockStartPadding: !appName,
514
520
  children: [_jsx(StyledSideNavListContainer, {
515
521
  role: "none",
516
522
  ref: scrollableContentRef,
@@ -1 +1 @@
1
- {"version":3,"file":"SideNav.js","names":["styled","memo","useMemo","useState","useCallback","useRef","useEffect","useTranslation","arrayMove","ErrorBoundary","NavAccordion","useOdysseyDesignTokens","OdysseyThemeProvider","SideNavHeader","SideNavItemContent","StyledSideNavListItem","SideNavFooterContent","SideNavItemContentContext","SIDE_NAV_TOGGLE_ICON_HALF_SIZE","SIDE_NAV_TOGGLE_ICON_SIZE","SideNavToggleButton","SortableList","Overline","useUiShellContext","SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION","SIDE_NAV_WIDTH","UI_SHELL_BASE_Z_INDEX","UI_SHELL_OVERLAY_Z_INDEX","useIsSideNavCollapsedSessionStorage","useMountLifecycleEffect","jsx","_jsx","jsxs","_jsxs","SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED","SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED","StyledCollapsibleContent","shouldForwardProp","prop","odysseyDesignTokens","isSideNavCollapsed","position","display","gridTemplateColumns","height","transition","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","overflow","opacity","StyledOpacityTransitionContainer","gridTemplateRows","StyledSideNavContainer","backgroundColor","hasNeighboringContent","isAppContentWhiteBackground","isSideNavToggleHighlighted","HueNeutralWhite","width","content","pointerEvents","right","BorderWidthMain","top","userSelect","zIndex","BorderColorPrimaryControl","HueNeutral100","HueNeutral200","transform","borderRightColor","borderRightStyle","BorderStyleMain","borderRightWidth","StyledSideNavToggleButtonContainer","StyledSideNavHeaderContainer","borderColor","hasContentScrolled","flexShrink","borderBottomWidth","borderBottomStyle","borderBottomColor","concat","StyledSideNavListContainer","padding","listStyle","listStyleType","margin","StyledSideNavScrollableContainer","overflowY","paddingInline","Spacing2","StyledSectionHeaderContainer","contrastFontColor","color","HueNeutral600","marginBlock","Spacing3","paddingBlock","Spacing1","Spacing4","StyledSideNavFooter","sideNavBackgroundColor","StyledPersistentSideNavFooter","isContentScrollable","transitionProperty","transitionDuration","transitionTiming","boxShadow","StyledSideNavFooterItemsContainer","sideNavContrastColors","flexWrap","alignItems","fontSize","TypographySizeOverline","fontColor","textDecoration","HueNeutral900","StyledLoadingItemContainer","gap","getHasScrollableContent","scrollableContainer","scrollHeight","clientHeight","LoadingItem","children","_Skeleton","variant","SideNav","appName","footerComponent","footerItems","hasCustomFooter","hasSessionStorageState","isCollapsible","isCollapsed","isCompact","isLoading","isObtrusive","logoProps","onCollapse","onExpand","onSort","sideNavItems","setHasContentScrolled","setHasNeighboringContent","setIsContentScrollable","setIsSideNavToggleHighlighted","sideNavItemsList","updateSideNavItemsList","isSideNavCollapsedLocalState","setIsSideNavCollapsedLocalState","sessionState","isSideNavCollapsedSessionState","setSessionState","setIsSideNavCollapsedSessionState","setIsSideNavCollapsed","uiShellContext","t","scrollableContentRef","resizeObserverRef","intersectionObserverRef","sideNavRef","blankElement","current","getBoundingClientRect","x","onMount","onUpdate","updateIsContentScrollable","parentElement","resizeObserverDebounceTimer","ResizeObserver","cancelAnimationFrame","requestAnimationFrame","observe","IntersectionObserver","entries","isIntersecting","slice","sort","a","b","time","at","root","threshold","ulElement","liElement","Array","from","disconnect","scrollIntoViewRef","firstSideNavItemIdWithIsSelected","flattenedItems","flatMap","sideNavItem","nestedNavItems","firstItemWithIsSelected","find","isSelected","id","scrollIntoView","getRefIfThisIsFirstNodeWithIsSelected","itemId","undefined","sideNavItemContentProviderValue","depth","setSelectedItem","selectedItemId","updatedSideNavItems","map","item","childItem","closeSideNavMenu","processedSideNavItems","childNavItems","childProps","isDisabled","isSortable","navItem","Provider","value","onItemSelected","scrollRef","translate","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","key","code","preventDefault","unsubscribe","subscribeToCloseSideNavMenu","setSortedItems","parentId","activeId","activeIndex","overIndex","sortedSideNavItems","onSideNavToggleButtonHighlight","isHighlighted","appBackgroundColor","ref","clickAreaPadding","ariaControls","onClick","onHighlight","onKeyDown","role","fill","_","index","href","isDefaultExpanded","isExpanded","isSectionHeader","label","startIcon","fallback","component","nestedChildren","items","onChange","renderItem","sortableItem","Item","disabled","MemoizedSideNav","displayName"],"sources":["../../../../src/ui-shell/SideNav/SideNav.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n memo,\n useMemo,\n useState,\n useCallback,\n useRef,\n useEffect,\n KeyboardEventHandler,\n CSSProperties,\n} from \"react\";\nimport { Skeleton } from \"@mui/material\";\nimport { useTranslation } from \"react-i18next\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport { UniqueIdentifier } from \"@dnd-kit/core\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { Property } from \"csstype\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { NavAccordion } from \"./NavAccordion.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { OdysseyThemeProvider } from \"../../OdysseyThemeProvider.js\";\nimport type { SideNavProps } from \"./types.js\";\nimport { SideNavHeader } from \"./SideNavHeader.js\";\nimport {\n SideNavItemContent,\n StyledSideNavListItem,\n} from \"./SideNavItemContent.js\";\nimport { SideNavFooterContent } from \"./SideNavFooterContent.js\";\nimport { SideNavItemContentContext } from \"./SideNavItemContentContext.js\";\nimport {\n SIDE_NAV_TOGGLE_ICON_HALF_SIZE,\n SIDE_NAV_TOGGLE_ICON_SIZE,\n SideNavToggleButton,\n SideNavToggleButtonProps,\n} from \"./SideNavToggleButton.js\";\nimport { SortableList } from \"./SortableList/SortableList.js\";\nimport { Overline } from \"../../Typography.js\";\nimport {\n UiShellColors,\n useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\nimport {\n SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n SIDE_NAV_WIDTH,\n UI_SHELL_BASE_Z_INDEX,\n UI_SHELL_OVERLAY_Z_INDEX,\n} from \"../uiShellSharedConstants.js\";\nimport { useIsSideNavCollapsedSessionStorage } from \"./useIsSideNavCollapsedSessionStorage.js\";\nimport { useMountLifecycleEffect } from \"../../useMountLifecycleEffect.js\";\n\nexport const SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED = 12;\nexport const SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED = 2;\n\nconst StyledCollapsibleContent = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})<{\n odysseyDesignTokens: DesignTokens;\n isSideNavCollapsed: boolean;\n}>(({ odysseyDesignTokens, isSideNavCollapsed }) => ({\n position: \"relative\",\n display: \"grid\",\n gridTemplateColumns: SIDE_NAV_WIDTH,\n height: \"100%\",\n transition: `grid-template-columns ${odysseyDesignTokens.TransitionDurationMain}, opacity 300ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n\n ...(isSideNavCollapsed &&\n ({\n gridTemplateColumns: 0,\n opacity: 0,\n } satisfies CSSProperties)),\n}));\n\nconst StyledOpacityTransitionContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})(\n ({\n odysseyDesignTokens,\n isSideNavCollapsed,\n }: {\n odysseyDesignTokens: DesignTokens;\n isSideNavCollapsed: boolean;\n }) => ({\n display: \"grid\",\n gridTemplateRows: \"max-content 1fr max-content\",\n height: \"100%\",\n transition: `opacity 50ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n\n ...(isSideNavCollapsed &&\n ({\n opacity: 0,\n } satisfies CSSProperties)),\n }),\n);\n\nconst StyledSideNavContainer = styled(\"nav\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" &&\n prop !== \"hasNeighboringContent\" &&\n prop !== \"isAppContentWhiteBackground\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"isSideNavToggleHighlighted\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n hasNeighboringContent: boolean;\n isAppContentWhiteBackground: boolean;\n isSideNavCollapsed: boolean;\n isSideNavToggleHighlighted: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n backgroundColor,\n hasNeighboringContent,\n isAppContentWhiteBackground,\n isSideNavCollapsed,\n isSideNavToggleHighlighted,\n odysseyDesignTokens,\n }) => ({\n // Side nav container styles\n backgroundColor: backgroundColor || odysseyDesignTokens.HueNeutralWhite,\n height: \"100%\",\n position: \"relative\",\n width: \"fit-content\",\n\n // Right-side vertical line shared\n \"&::before, &::after\": {\n content: \"''\",\n height: \"100%\",\n pointerEvents: \"none\",\n position: \"absolute\",\n right: `-${odysseyDesignTokens.BorderWidthMain}`,\n top: 0,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain}, transform ${odysseyDesignTokens.TransitionDurationMain}, width ${odysseyDesignTokens.TransitionDurationMain}`,\n userSelect: \"none\",\n zIndex: UI_SHELL_OVERLAY_Z_INDEX,\n },\n\n // Right-side vertical line when open\n \"&::before\": {\n backgroundColor: isSideNavToggleHighlighted\n ? odysseyDesignTokens.BorderColorPrimaryControl\n : odysseyDesignTokens.HueNeutral100,\n opacity:\n isAppContentWhiteBackground ||\n (!isSideNavCollapsed && isSideNavToggleHighlighted)\n ? 1\n : 0,\n width: `calc(${odysseyDesignTokens.BorderWidthMain} * 2)`,\n },\n\n // Side nav vertical fill line when no neighboring content\n \"&::after\": {\n backgroundColor: odysseyDesignTokens.HueNeutral200,\n opacity: isSideNavCollapsed ? 1 : 0,\n transform:\n isSideNavCollapsed && !hasNeighboringContent\n ? isSideNavToggleHighlighted\n ? `translateX(calc(100% - (${odysseyDesignTokens.BorderWidthMain} * 2)))`\n : `translateX(calc(100% - ${SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px))`\n : \"translateX(0)\",\n width: hasNeighboringContent\n ? 0\n : `calc(${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px + ${odysseyDesignTokens.BorderWidthMain} * 2)`,\n\n // Right-side vertical line when collapsed\n ...((isSideNavCollapsed && isSideNavToggleHighlighted\n ? {\n borderRightColor: odysseyDesignTokens.BorderColorPrimaryControl,\n borderRightStyle:\n odysseyDesignTokens.BorderStyleMain as Property.BorderRightStyle,\n borderRightWidth: `calc(${odysseyDesignTokens.BorderWidthMain} * 2)`,\n }\n : {}) satisfies CSSProperties),\n },\n }),\n);\n\nconst StyledSideNavToggleButtonContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"hasNeighboringContent\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"isSideNavToggleHighlighted\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n hasNeighboringContent: boolean;\n isSideNavCollapsed: boolean;\n isSideNavToggleHighlighted: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n hasNeighboringContent,\n isSideNavCollapsed,\n isSideNavToggleHighlighted,\n odysseyDesignTokens,\n }) => ({\n position: \"absolute\",\n right: `${SIDE_NAV_TOGGLE_ICON_HALF_SIZE}px`,\n top: SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n transform:\n isSideNavCollapsed && !hasNeighboringContent\n ? isSideNavToggleHighlighted\n ? `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px), 0, 0)`\n : `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED}px), 0, 0)`\n : \"translate3d(100%, 0, 0)\",\n transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,\n zIndex: UI_SHELL_OVERLAY_Z_INDEX + 1,\n }),\n);\n\nconst StyledSideNavHeaderContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"borderColor\" &&\n prop !== \"hasContentScrolled\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n borderColor: ContrastColors[\"fontColor\"];\n hasContentScrolled: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(({ borderColor, hasContentScrolled, odysseyDesignTokens }) => ({\n flexShrink: 0,\n // The bottom border should appear only if the scrollable region has been scrolled\n ...(hasContentScrolled &&\n ({\n borderBottomWidth: odysseyDesignTokens.BorderWidthMain,\n borderBottomStyle: odysseyDesignTokens.BorderStyleMain,\n borderBottomColor: odysseyDesignTokens.HueNeutral100,\n\n ...(borderColor &&\n ({\n borderBottomColor: borderColor.concat(\"15\"),\n } satisfies CSSProperties)),\n } as CSSProperties)),\n}));\n\nconst StyledSideNavListContainer = styled(\"ul\")(() => ({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n margin: 0,\n width: \"100%\",\n}));\n\nconst StyledSideNavScrollableContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"inline-grid\",\n gridTemplateRows: \"1fr max-content\",\n overflowY: \"auto\",\n paddingInline: odysseyDesignTokens.Spacing2,\n}));\n\nconst StyledSectionHeaderContainer = styled(\"li\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"contrastFontColor\",\n})(\n ({\n contrastFontColor,\n odysseyDesignTokens,\n }: {\n contrastFontColor: ContrastColors[\"fontColor\"];\n odysseyDesignTokens: DesignTokens;\n }) => ({\n color: contrastFontColor || odysseyDesignTokens.HueNeutral600,\n marginBlock: `${odysseyDesignTokens.Spacing3}`,\n paddingBlock: odysseyDesignTokens.Spacing1,\n paddingInline: odysseyDesignTokens.Spacing4,\n }),\n);\n\nconst StyledSideNavFooter = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"sideNavBackgroundColor\",\n})(\n ({\n odysseyDesignTokens,\n sideNavBackgroundColor,\n }: {\n odysseyDesignTokens: DesignTokens;\n sideNavBackgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n }) => ({\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n flexShrink: 0,\n padding: odysseyDesignTokens.Spacing4,\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } satisfies CSSProperties)),\n }),\n);\n\nconst StyledPersistentSideNavFooter = styled(StyledSideNavFooter, {\n shouldForwardProp: (prop) =>\n prop !== \"isContentScrollable\" &&\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"sideNavBackgroundColor\",\n})(\n ({\n isContentScrollable,\n odysseyDesignTokens,\n sideNavBackgroundColor,\n }: {\n isContentScrollable: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavBackgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n }) => ({\n transitionProperty: \"box-shadow\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n transitionTiming: odysseyDesignTokens.TransitionTimingMain,\n zIndex: UI_SHELL_BASE_Z_INDEX,\n\n // The box shadow should appear above the footer only if the scrollable region has overflow\n ...(isContentScrollable &&\n ({\n boxShadow: \"0px -8px 8px -8px rgba(39, 39, 39, 0.08)\",\n } satisfies CSSProperties)),\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } satisfies CSSProperties)),\n }),\n);\n\nconst StyledSideNavFooterItemsContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"sideNavContrastColors\",\n})<{\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors: UiShellColors[\"sideNavContrastColors\"];\n}>(({ odysseyDesignTokens, sideNavContrastColors }) => ({\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n fontSize: odysseyDesignTokens.TypographySizeOverline,\n\n \"a, span\": {\n color: odysseyDesignTokens.HueNeutral600,\n transition: `color ${odysseyDesignTokens.TransitionDurationMain}`,\n\n \"&:visited\": {\n color: odysseyDesignTokens.HueNeutral600,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n\n \"&:hover\": {\n textDecoration: \"none\",\n color: odysseyDesignTokens.HueNeutral900,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n}));\n\nconst StyledLoadingItemContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n alignItems: \"center\",\n display: \"flex\",\n gap: odysseyDesignTokens.Spacing2,\n paddingBlock: odysseyDesignTokens.Spacing2,\n paddingInline: odysseyDesignTokens.Spacing4,\n}));\n\nconst getHasScrollableContent = (scrollableContainer: HTMLElement) =>\n scrollableContainer.scrollHeight > scrollableContainer.clientHeight;\n\nconst LoadingItem = () => {\n const odysseyDesignTokens: DesignTokens = useOdysseyDesignTokens();\n return (\n <StyledLoadingItemContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Skeleton\n variant=\"circular\"\n width={odysseyDesignTokens.Spacing4}\n height={odysseyDesignTokens.Spacing4}\n />\n <Skeleton variant=\"rounded\" width=\"100%\" />\n </StyledLoadingItemContainer>\n );\n};\n\nconst SideNav = ({\n appName,\n footerComponent,\n footerItems,\n hasCustomFooter,\n hasSessionStorageState,\n isCollapsible,\n isCollapsed = false,\n isCompact,\n isLoading,\n isObtrusive,\n logoProps,\n onCollapse,\n onExpand,\n onSort,\n sideNavItems,\n}: SideNavProps) => {\n const [hasContentScrolled, setHasContentScrolled] = useState(false);\n const [hasNeighboringContent, setHasNeighboringContent] = useState(false);\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const [isSideNavToggleHighlighted, setIsSideNavToggleHighlighted] =\n useState(false);\n const [sideNavItemsList, updateSideNavItemsList] = useState(\n sideNavItems || [],\n );\n\n const [isSideNavCollapsedLocalState, setIsSideNavCollapsedLocalState] =\n useState(isCollapsed);\n\n const {\n sessionState: isSideNavCollapsedSessionState,\n setSessionState: setIsSideNavCollapsedSessionState,\n } = useIsSideNavCollapsedSessionStorage(isCollapsed);\n\n const isSideNavCollapsed = hasSessionStorageState\n ? isSideNavCollapsedSessionState\n : isSideNavCollapsedLocalState;\n const setIsSideNavCollapsed = hasSessionStorageState\n ? setIsSideNavCollapsedSessionState\n : setIsSideNavCollapsedLocalState;\n\n const uiShellContext = useUiShellContext();\n const odysseyDesignTokens: DesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const scrollableContentRef = useRef<HTMLUListElement>(null);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null);\n const sideNavRef = useRef<HTMLDivElement>(null);\n\n const blankElement = useMemo(() => <div />, []);\n\n // The default value (sideNavItems) passed to useState is ONLY used by the useState hook for\n // the very first value. Subsequent updates to the prop (sideNavItems) need to cause the state\n // to update!\n useEffect(() => updateSideNavItemsList(sideNavItems || []), [sideNavItems]);\n\n // update sidenav collapse status\n useEffect(() => {\n if (sideNavRef.current) {\n setHasNeighboringContent(\n sideNavRef.current.getBoundingClientRect().x > 0,\n );\n }\n // We want this listening to `isCollapsed` because that changes what's next to the side nav.\n }, [isCollapsed]);\n\n // In the case that you can't control the side nav, then it should use whatever state was passed (app control) rather than what's stored in session storage (user control).\n const onMount = useCallback(() => {\n if (!isCollapsible) {\n setIsSideNavCollapsed(isCollapsed);\n }\n }, [isCollapsed, isCollapsible, setIsSideNavCollapsed]);\n\n const onUpdate = useCallback(() => {\n setIsSideNavCollapsed(isCollapsed);\n }, [isCollapsed, setIsSideNavCollapsed]);\n\n useMountLifecycleEffect({\n onMount,\n onUpdate,\n });\n\n useEffect(() => {\n // This is called directly in this effect AND perhaps as a result of the ResizeObserver\n const updateIsContentScrollable = () => {\n if (\n scrollableContentRef.current &&\n scrollableContentRef.current.parentElement\n ) {\n setIsContentScrollable(\n getHasScrollableContent(scrollableContentRef.current.parentElement),\n );\n }\n };\n\n // If the window is resized, we may need to re-determine if the scrollable container has overflow\n // Setup a ResizeObserver to know if the size of the scrollableContent changes\n let resizeObserverDebounceTimer: ReturnType<typeof requestAnimationFrame>;\n if (!resizeObserverRef.current) {\n resizeObserverRef.current = new ResizeObserver(() => {\n cancelAnimationFrame(resizeObserverDebounceTimer);\n resizeObserverDebounceTimer = requestAnimationFrame(\n updateIsContentScrollable,\n );\n });\n }\n\n if (resizeObserverRef.current && scrollableContentRef.current) {\n // Observe the <ul> itself (in case it changes size due to the content expanding)\n resizeObserverRef.current.observe(scrollableContentRef.current);\n if (scrollableContentRef.current.parentElement) {\n // ALSO observe the parent (<SideNavScrollableContainer>) in case the window resizes\n resizeObserverRef.current.observe(\n scrollableContentRef.current.parentElement,\n );\n }\n }\n\n // Determine if the scrollable container has overflow or not on load\n updateIsContentScrollable();\n\n // Finally, we only want to have the border on the bottom of the header iff the user has scrolled\n // the scrollable container\n if (!intersectionObserverRef.current && scrollableContentRef.current) {\n intersectionObserverRef.current = new IntersectionObserver(\n (entries) => {\n // If isIntersecting is true, then we're at the top of the scroll container\n // If isIntersecting is false, some scrolling has occurred.\n // The entries must be sorted by time and we only really need to look at the latest one\n const isIntersecting = entries\n .slice()\n .sort((a, b) => a.time - b.time)\n .at(0)?.isIntersecting;\n setHasContentScrolled(!isIntersecting);\n },\n {\n root: scrollableContentRef.current.parentElement,\n threshold: 1.0,\n },\n );\n }\n\n if (intersectionObserverRef.current && scrollableContentRef.current) {\n const ulElement = scrollableContentRef.current;\n const [liElement] = Array.from(ulElement?.children || []);\n\n if (liElement) {\n intersectionObserverRef.current.observe(liElement);\n }\n }\n\n // Cleanup when unmounted:\n return () => {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.disconnect();\n resizeObserverRef.current = null;\n }\n if (intersectionObserverRef.current) {\n intersectionObserverRef.current.disconnect();\n intersectionObserverRef.current = null;\n }\n cancelAnimationFrame(resizeObserverDebounceTimer); // Ensure timer is cleared on component unmount\n };\n }, [sideNavItemsList]);\n\n const scrollIntoViewRef = useRef<HTMLLIElement>(null);\n /**\n * Look through the sideNavItems and determine which is the first node\n * with isSelected. This should be the node we set a ref on in order to\n * call scrollIntoView in the effect\n */\n const firstSideNavItemIdWithIsSelected = useMemo(() => {\n const flattenedItems = sideNavItemsList.flatMap((sideNavItem) =>\n sideNavItem.nestedNavItems\n ? [sideNavItem, ...sideNavItem.nestedNavItems]\n : sideNavItem,\n );\n const firstItemWithIsSelected = flattenedItems.find(\n (sideNavItem) => sideNavItem.isSelected,\n );\n return firstItemWithIsSelected?.id;\n }, [sideNavItemsList]);\n /**\n * Once we've rendered and if we have an item to scroll to, do the scroll action.\n * This must rely on checking firstSideNavItemIdWithIsSelected or it will not run\n * once the actual ref is populated.\n */\n useEffect(() => {\n if (firstSideNavItemIdWithIsSelected && scrollIntoViewRef.current) {\n scrollIntoViewRef.current.scrollIntoView();\n }\n }, [firstSideNavItemIdWithIsSelected]);\n\n /**\n * We only want to put a ref on a node iff it is the first selected node.\n * This function returns the ref only if the ID provided matches the first\n * selected node, otherwise returns undefined (so that the node has no ref)\n */\n const getRefIfThisIsFirstNodeWithIsSelected = useCallback(\n (itemId: string) =>\n itemId === firstSideNavItemIdWithIsSelected\n ? scrollIntoViewRef\n : undefined,\n [firstSideNavItemIdWithIsSelected],\n );\n\n const sideNavItemContentProviderValue = useMemo(\n () => ({ isCompact, depth: 1 }),\n [isCompact],\n );\n\n const setSelectedItem = useCallback(\n (selectedItemId: string) => {\n const updatedSideNavItems = sideNavItemsList.map((item) => {\n if (item.id === selectedItemId) {\n item.isSelected = true;\n } else if (item.isSelected) {\n delete item.isSelected;\n }\n\n return item.nestedNavItems\n ? {\n ...item,\n nestedNavItems: item.nestedNavItems.map((childItem) => {\n if (childItem.id === selectedItemId) {\n childItem.isSelected = true;\n } else if (childItem.isSelected) {\n delete childItem.isSelected;\n }\n return childItem;\n }),\n }\n : item;\n });\n updateSideNavItemsList(updatedSideNavItems);\n\n if (isCollapsed || isObtrusive) {\n if (isCollapsible) {\n uiShellContext?.closeSideNavMenu();\n } else {\n onCollapse?.();\n }\n }\n },\n [\n isCollapsed,\n isCollapsible,\n isObtrusive,\n onCollapse,\n sideNavItemsList,\n uiShellContext,\n ],\n );\n\n const processedSideNavItems = useMemo(() => {\n return sideNavItemsList?.map((item) => ({\n ...item,\n childNavItems: item.nestedNavItems?.map((childProps) => ({\n id: childProps.id,\n isSelected: childProps.isSelected,\n isDisabled: childProps.isDisabled,\n isSortable: childProps.isSortable,\n navItem: (\n <SideNavItemContentContext.Provider\n key={childProps.id}\n value={{\n ...sideNavItemContentProviderValue,\n depth: 2,\n isSortable: item.isSortable,\n }}\n >\n <SideNavItemContent\n {...childProps}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(childProps.id)}\n translate={childProps.translate}\n />\n </SideNavItemContentContext.Provider>\n ),\n })),\n }));\n }, [\n getRefIfThisIsFirstNodeWithIsSelected,\n setSelectedItem,\n sideNavItemContentProviderValue,\n sideNavItemsList,\n ]);\n\n const sideNavExpandClickHandler = useCallback(() => {\n setIsSideNavCollapsed((isSideNavCollapsed) => {\n if (isSideNavCollapsed) {\n onExpand?.();\n } else {\n onCollapse?.();\n }\n\n return !isSideNavCollapsed;\n });\n }, [onCollapse, onExpand, setIsSideNavCollapsed]);\n\n const sideNavExpandKeyHandler = useCallback<\n KeyboardEventHandler<HTMLButtonElement>\n >(\n (event) => {\n if (event?.key === \"Enter\" || event?.code === \"Space\") {\n event.preventDefault();\n sideNavExpandClickHandler();\n }\n },\n [sideNavExpandClickHandler],\n );\n\n useEffect(() => {\n const unsubscribe = uiShellContext?.subscribeToCloseSideNavMenu(() => {\n onCollapse?.();\n setIsSideNavCollapsed(true);\n });\n\n return () => {\n unsubscribe?.();\n };\n }, [onCollapse, setIsSideNavCollapsed, uiShellContext]);\n\n const setSortedItems = useCallback(\n (\n parentId: string,\n activeId: UniqueIdentifier,\n activeIndex: number,\n overIndex: number,\n ) => {\n const sortedSideNavItems = sideNavItemsList.map((item) =>\n item.id === parentId && item.nestedNavItems\n ? {\n ...item,\n nestedNavItems: arrayMove(\n item.nestedNavItems,\n activeIndex,\n overIndex,\n ),\n }\n : item,\n );\n updateSideNavItemsList(sortedSideNavItems);\n onSort?.(sortedSideNavItems, parentId, activeId, activeIndex, overIndex);\n },\n [onSort, sideNavItemsList],\n );\n\n const onSideNavToggleButtonHighlight = useCallback<\n NonNullable<SideNavToggleButtonProps[\"onHighlight\"]>\n >((isHighlighted) => {\n setIsSideNavToggleHighlighted(isHighlighted);\n }, []);\n\n return (\n <StyledSideNavContainer\n aria-label={t(\"navigation.label\")}\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n hasNeighboringContent={hasNeighboringContent}\n id=\"side-nav-expandable\"\n isAppContentWhiteBackground={\n uiShellContext?.appBackgroundColor ===\n odysseyDesignTokens.HueNeutralWhite\n }\n isSideNavCollapsed={isSideNavCollapsed}\n isSideNavToggleHighlighted={isSideNavToggleHighlighted}\n odysseyDesignTokens={odysseyDesignTokens}\n ref={sideNavRef}\n >\n {isCollapsible && (\n <StyledSideNavToggleButtonContainer\n hasNeighboringContent={hasNeighboringContent}\n isSideNavCollapsed={isSideNavCollapsed}\n isSideNavToggleHighlighted={isSideNavToggleHighlighted}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavToggleButton\n clickAreaPadding={\n isSideNavCollapsed && !hasNeighboringContent\n ? SIDE_NAV_TOGGLE_ICON_SIZE / 2\n : 0\n }\n ariaControls=\"side-nav-expandable\"\n isSideNavCollapsed={isSideNavCollapsed}\n onClick={sideNavExpandClickHandler}\n onHighlight={onSideNavToggleButtonHighlight}\n onKeyDown={sideNavExpandKeyHandler}\n />\n </StyledSideNavToggleButtonContainer>\n )}\n\n <OdysseyThemeProvider>\n <StyledCollapsibleContent\n data-se=\"collapsible-region\"\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <StyledOpacityTransitionContainer\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {appName || isLoading || logoProps ? (\n <StyledSideNavHeaderContainer\n hasContentScrolled={hasContentScrolled}\n odysseyDesignTokens={odysseyDesignTokens}\n borderColor={uiShellContext?.sideNavContrastColors?.fontColor}\n >\n {isLoading && !appName && !logoProps ? (\n <SideNavHeader isLoading={isLoading} />\n ) : (\n <SideNavHeader\n appName={appName}\n isLoading={isLoading}\n logoProps={logoProps}\n />\n )}\n </StyledSideNavHeaderContainer>\n ) : (\n <div />\n )}\n\n <StyledSideNavScrollableContainer\n odysseyDesignTokens={odysseyDesignTokens}\n data-se=\"scrollable-region\"\n >\n <StyledSideNavListContainer\n role=\"none\"\n ref={scrollableContentRef}\n >\n {isLoading\n ? Array(6)\n .fill(null)\n .map((_, index) => <LoadingItem key={index} />)\n : processedSideNavItems?.map((item) => {\n const {\n childNavItems,\n href,\n id,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n isSectionHeader,\n isSortable,\n label,\n startIcon,\n } = item;\n\n if (isSectionHeader) {\n return (\n <ErrorBoundary fallback={blankElement} key={id}>\n <StyledSectionHeaderContainer\n contrastFontColor={\n uiShellContext?.sideNavContrastColors?.fontColor\n }\n id={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <Overline component=\"h3\">{label}</Overline>\n </StyledSectionHeaderContainer>\n </ErrorBoundary>\n );\n } else if (childNavItems) {\n const nestedChildren = (\n <StyledSideNavListContainer role=\"presentation\">\n {isSortable ? (\n <SortableList\n parentId={item.id}\n items={childNavItems}\n onChange={setSortedItems}\n renderItem={(sortableItem) => (\n <SortableList.Item\n id={sortableItem.id}\n isDisabled={sortableItem.isDisabled}\n isSelected={sortableItem.isSelected}\n isSortable={sortableItem.isSortable}\n >\n {sortableItem.navItem}\n </SortableList.Item>\n )}\n />\n ) : (\n childNavItems.map((item) => item.navItem)\n )}\n </StyledSideNavListContainer>\n );\n\n return href ? (\n <ErrorBoundary fallback={blankElement} key={id}>\n <SideNavItemContent\n {...item}\n href={href}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(\n item.id,\n )}\n startIcon={item.startIcon}\n />\n\n <StyledSideNavListItem\n id={`${id}-items`}\n odysseyDesignTokens={odysseyDesignTokens}\n disabled={isDisabled}\n aria-disabled={isDisabled}\n >\n {nestedChildren}\n </StyledSideNavListItem>\n </ErrorBoundary>\n ) : (\n <ErrorBoundary fallback={blankElement} key={id}>\n <StyledSideNavListItem\n id={id}\n odysseyDesignTokens={odysseyDesignTokens}\n disabled={isDisabled}\n aria-disabled={isDisabled}\n >\n <NavAccordion\n label={label}\n isCompact={isCompact}\n isDefaultExpanded={isDefaultExpanded}\n isExpanded={isExpanded}\n startIcon={startIcon}\n isDisabled={isDisabled}\n >\n {nestedChildren}\n </NavAccordion>\n </StyledSideNavListItem>\n </ErrorBoundary>\n );\n } else {\n return (\n <ErrorBoundary fallback={blankElement} key={item.id}>\n <SideNavItemContentContext.Provider\n value={sideNavItemContentProviderValue}\n >\n <SideNavItemContent\n {...item}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(\n item.id,\n )}\n startIcon={item.startIcon}\n />\n </SideNavItemContentContext.Provider>\n </ErrorBoundary>\n );\n }\n })}\n </StyledSideNavListContainer>\n {!isLoading && footerItems && !hasCustomFooter && (\n <StyledSideNavFooter\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavBackgroundColor={\n uiShellContext?.sideNavBackgroundColor\n }\n >\n <StyledSideNavFooterItemsContainer\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={\n uiShellContext?.sideNavContrastColors\n }\n >\n <SideNavFooterContent footerItems={footerItems} />\n </StyledSideNavFooterItemsContainer>\n </StyledSideNavFooter>\n )}\n </StyledSideNavScrollableContainer>\n {!isLoading && !footerItems && hasCustomFooter && (\n <StyledPersistentSideNavFooter\n isContentScrollable={isContentScrollable}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavBackgroundColor={uiShellContext?.sideNavBackgroundColor}\n >\n {footerComponent}\n </StyledPersistentSideNavFooter>\n )}\n </StyledOpacityTransitionContainer>\n </StyledCollapsibleContent>\n </OdysseyThemeProvider>\n </StyledSideNavContainer>\n );\n};\n\nconst MemoizedSideNav = memo(SideNav);\nMemoizedSideNav.displayName = \"SideNav\";\n\nexport { MemoizedSideNav as SideNav };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SideNav.js","names":["styled","memo","useMemo","useState","useCallback","useRef","useEffect","useTranslation","arrayMove","ErrorBoundary","NavAccordion","useOdysseyDesignTokens","useElementAtContainerEdge","OdysseyThemeProvider","SideNavHeader","SideNavItemContent","StyledSideNavListItem","SideNavFooterContent","SideNavItemContentContext","SIDE_NAV_TOGGLE_ICON_HALF_SIZE","SIDE_NAV_TOGGLE_ICON_SIZE","SideNavToggleButton","SortableList","Overline","useUiShellContext","SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION","SIDE_NAV_WIDTH","UI_SHELL_BASE_Z_INDEX","UI_SHELL_OVERLAY_Z_INDEX","useIsSideNavCollapsedSessionStorage","useMountLifecycleEffect","jsx","_jsx","jsxs","_jsxs","SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED","SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED","StyledCollapsibleContent","shouldForwardProp","prop","odysseyDesignTokens","isSideNavCollapsed","position","display","gridTemplateColumns","height","transition","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","overflow","opacity","StyledOpacityTransitionContainer","gridTemplateRows","StyledSideNavContainer","backgroundColor","hasNeighbouringContentAtInlineStart","isAppContentWhiteBackground","isSideNavToggleHighlighted","HueNeutralWhite","width","content","pointerEvents","right","BorderWidthMain","top","userSelect","zIndex","BorderColorPrimaryControl","HueNeutral100","HueNeutral200","transform","borderRightColor","borderRightStyle","BorderStyleMain","borderRightWidth","StyledSideNavToggleButtonContainer","StyledSideNavHeaderContainer","borderColor","hasContentScrolled","flexShrink","borderBottomWidth","borderBottomStyle","borderBottomColor","concat","StyledSideNavListContainer","padding","listStyle","listStyleType","margin","StyledSideNavScrollableContainer","hasBlockStartPadding","overflowY","paddingBlockStart","Spacing2","paddingInline","StyledSectionHeaderContainer","contrastFontColor","color","HueNeutral600","marginBlock","Spacing3","paddingBlock","Spacing1","Spacing4","StyledSideNavFooter","sideNavBackgroundColor","StyledPersistentSideNavFooter","isContentScrollable","transitionProperty","transitionDuration","transitionTiming","boxShadow","StyledSideNavFooterItemsContainer","sideNavContrastColors","flexWrap","alignItems","fontSize","TypographySizeOverline","fontColor","textDecoration","HueNeutral900","StyledLoadingItemContainer","gap","getHasScrollableContent","scrollableContainer","scrollHeight","clientHeight","LoadingItem","children","_Skeleton","variant","SideNav","appName","footerComponent","footerItems","hasCustomFooter","hasSessionStorageState","isCollapsible","isCollapsed","isCompact","isLoading","isObtrusive","logoProps","onCollapse","onExpand","onSort","sideNavItems","setHasContentScrolled","setIsContentScrollable","setIsSideNavToggleHighlighted","sideNavItemsList","updateSideNavItemsList","isSideNavCollapsedLocalState","setIsSideNavCollapsedLocalState","sessionState","isSideNavCollapsedSessionState","setSessionState","setIsSideNavCollapsedSessionState","setIsSideNavCollapsed","uiShellContext","t","scrollableContentRef","resizeObserverRef","intersectionObserverRef","sideNavRef","isAtContainerInlineStart","element","current","monitoringElement","parentElement","blankElement","onMount","onUpdate","updateIsContentScrollable","resizeObserverDebounceTimer","ResizeObserver","cancelAnimationFrame","requestAnimationFrame","observe","IntersectionObserver","entries","isIntersecting","slice","sort","a","b","time","at","root","threshold","ulElement","liElement","Array","from","disconnect","scrollIntoViewRef","firstSideNavItemIdWithIsSelected","flattenedItems","flatMap","sideNavItem","nestedNavItems","firstItemWithIsSelected","find","isSelected","id","scrollIntoView","getRefIfThisIsFirstNodeWithIsSelected","itemId","undefined","sideNavItemContentProviderValue","depth","setSelectedItem","selectedItemId","updatedSideNavItems","map","item","childItem","closeSideNavMenu","processedSideNavItems","childNavItems","childProps","isDisabled","isSortable","navItem","Provider","value","onItemSelected","scrollRef","translate","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","key","code","preventDefault","unsubscribe","subscribeToCloseSideNavMenu","setSortedItems","parentId","activeId","activeIndex","overIndex","sortedSideNavItems","onSideNavToggleButtonHighlight","isHighlighted","appBackgroundColor","ref","clickAreaPadding","ariaControls","onClick","onHighlight","onKeyDown","role","fill","_","index","href","isDefaultExpanded","isExpanded","isSectionHeader","label","startIcon","fallback","component","nestedChildren","items","onChange","renderItem","sortableItem","Item","disabled","MemoizedSideNav","displayName"],"sources":["../../../../src/ui-shell/SideNav/SideNav.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n memo,\n useMemo,\n useState,\n useCallback,\n useRef,\n useEffect,\n KeyboardEventHandler,\n CSSProperties,\n} from \"react\";\nimport { Skeleton } from \"@mui/material\";\nimport { useTranslation } from \"react-i18next\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport { UniqueIdentifier } from \"@dnd-kit/core\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { Property } from \"csstype\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { NavAccordion } from \"./NavAccordion.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { useElementAtContainerEdge } from \"../useElementAtContainerEdge.js\";\nimport { OdysseyThemeProvider } from \"../../OdysseyThemeProvider.js\";\nimport type { SideNavProps } from \"./types.js\";\nimport { SideNavHeader } from \"./SideNavHeader.js\";\nimport {\n SideNavItemContent,\n StyledSideNavListItem,\n} from \"./SideNavItemContent.js\";\nimport { SideNavFooterContent } from \"./SideNavFooterContent.js\";\nimport { SideNavItemContentContext } from \"./SideNavItemContentContext.js\";\nimport {\n SIDE_NAV_TOGGLE_ICON_HALF_SIZE,\n SIDE_NAV_TOGGLE_ICON_SIZE,\n SideNavToggleButton,\n SideNavToggleButtonProps,\n} from \"./SideNavToggleButton.js\";\nimport { SortableList } from \"./SortableList/SortableList.js\";\nimport { Overline } from \"../../Typography.js\";\nimport {\n UiShellColors,\n useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\nimport {\n SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n SIDE_NAV_WIDTH,\n UI_SHELL_BASE_Z_INDEX,\n UI_SHELL_OVERLAY_Z_INDEX,\n} from \"../uiShellSharedConstants.js\";\nimport { useIsSideNavCollapsedSessionStorage } from \"./useIsSideNavCollapsedSessionStorage.js\";\nimport { useMountLifecycleEffect } from \"../../useMountLifecycleEffect.js\";\n\nexport const SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED = 12;\nexport const SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED = 2;\n\nconst StyledCollapsibleContent = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})<{\n odysseyDesignTokens: DesignTokens;\n isSideNavCollapsed: boolean;\n}>(({ odysseyDesignTokens, isSideNavCollapsed }) => ({\n position: \"relative\",\n display: \"grid\",\n gridTemplateColumns: SIDE_NAV_WIDTH,\n height: \"100%\",\n transition: `grid-template-columns ${odysseyDesignTokens.TransitionDurationMain}, opacity 300ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n\n ...(isSideNavCollapsed &&\n ({\n gridTemplateColumns: 0,\n opacity: 0,\n } satisfies CSSProperties)),\n}));\n\nconst StyledOpacityTransitionContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})(\n ({\n odysseyDesignTokens,\n isSideNavCollapsed,\n }: {\n odysseyDesignTokens: DesignTokens;\n isSideNavCollapsed: boolean;\n }) => ({\n display: \"grid\",\n gridTemplateRows: \"max-content 1fr max-content\",\n height: \"100%\",\n transition: `opacity 50ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n\n ...(isSideNavCollapsed &&\n ({\n opacity: 0,\n } satisfies CSSProperties)),\n }),\n);\n\nconst StyledSideNavContainer = styled(\"nav\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" &&\n prop !== \"hasNeighbouringContentAtInlineStart\" &&\n prop !== \"isAppContentWhiteBackground\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"isSideNavToggleHighlighted\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n hasNeighbouringContentAtInlineStart: boolean;\n isAppContentWhiteBackground: boolean;\n isSideNavCollapsed: boolean;\n isSideNavToggleHighlighted: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n backgroundColor,\n hasNeighbouringContentAtInlineStart,\n isAppContentWhiteBackground,\n isSideNavCollapsed,\n isSideNavToggleHighlighted,\n odysseyDesignTokens,\n }) => ({\n // Side nav container styles\n backgroundColor: backgroundColor || odysseyDesignTokens.HueNeutralWhite,\n height: \"100%\",\n position: \"relative\",\n width: \"fit-content\",\n\n // Right-side vertical line shared\n \"&::before, &::after\": {\n content: \"''\",\n height: \"100%\",\n pointerEvents: \"none\",\n position: \"absolute\",\n right: `-${odysseyDesignTokens.BorderWidthMain}`,\n top: 0,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain}, transform ${odysseyDesignTokens.TransitionDurationMain}, width ${odysseyDesignTokens.TransitionDurationMain}`,\n userSelect: \"none\",\n zIndex: UI_SHELL_OVERLAY_Z_INDEX,\n },\n\n // Right-side vertical line when open\n \"&::before\": {\n backgroundColor: isSideNavToggleHighlighted\n ? odysseyDesignTokens.BorderColorPrimaryControl\n : odysseyDesignTokens.HueNeutral100,\n opacity:\n isAppContentWhiteBackground ||\n (!isSideNavCollapsed && isSideNavToggleHighlighted)\n ? 1\n : 0,\n width: `calc(${odysseyDesignTokens.BorderWidthMain} * 2)`,\n },\n\n // Side nav vertical fill line when no neighboring content\n \"&::after\": {\n backgroundColor: odysseyDesignTokens.HueNeutral200,\n opacity: isSideNavCollapsed ? 1 : 0,\n transform:\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? isSideNavToggleHighlighted\n ? `translateX(calc(100% - (${odysseyDesignTokens.BorderWidthMain} * 2)))`\n : `translateX(calc(100% - ${SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px))`\n : \"translateX(0)\",\n width: hasNeighbouringContentAtInlineStart\n ? 0\n : `calc(${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px + ${odysseyDesignTokens.BorderWidthMain} * 2)`,\n\n // Right-side vertical line when collapsed\n ...((isSideNavCollapsed && isSideNavToggleHighlighted\n ? {\n borderRightColor: odysseyDesignTokens.BorderColorPrimaryControl,\n borderRightStyle:\n odysseyDesignTokens.BorderStyleMain as Property.BorderRightStyle,\n borderRightWidth: `calc(${odysseyDesignTokens.BorderWidthMain} * 2)`,\n }\n : {}) satisfies CSSProperties),\n },\n }),\n);\n\nconst StyledSideNavToggleButtonContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"hasNeighbouringContentAtInlineStart\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"isSideNavToggleHighlighted\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n hasNeighbouringContentAtInlineStart: boolean;\n isSideNavCollapsed: boolean;\n isSideNavToggleHighlighted: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n hasNeighbouringContentAtInlineStart,\n isSideNavCollapsed,\n isSideNavToggleHighlighted,\n odysseyDesignTokens,\n }) => ({\n position: \"absolute\",\n right: `${SIDE_NAV_TOGGLE_ICON_HALF_SIZE}px`,\n top: SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n width: `${SIDE_NAV_TOGGLE_ICON_SIZE}px`,\n transform:\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? isSideNavToggleHighlighted\n ? `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px), 0, 0)`\n : `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED}px), 0, 0)`\n : \"translate3d(100%, 0, 0)\",\n transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,\n zIndex: UI_SHELL_OVERLAY_Z_INDEX + 1,\n }),\n);\n\nconst StyledSideNavHeaderContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"borderColor\" &&\n prop !== \"hasContentScrolled\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n borderColor: ContrastColors[\"fontColor\"];\n hasContentScrolled: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(({ borderColor, hasContentScrolled, odysseyDesignTokens }) => ({\n flexShrink: 0,\n // The bottom border should appear only if the scrollable region has been scrolled\n ...(hasContentScrolled &&\n ({\n borderBottomWidth: odysseyDesignTokens.BorderWidthMain,\n borderBottomStyle: odysseyDesignTokens.BorderStyleMain,\n borderBottomColor: odysseyDesignTokens.HueNeutral100,\n\n ...(borderColor &&\n ({\n borderBottomColor: borderColor.concat(\"15\"),\n } satisfies CSSProperties)),\n } as CSSProperties)),\n}));\n\nconst StyledSideNavListContainer = styled(\"ul\")(() => ({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n margin: 0,\n width: \"100%\",\n}));\n\nconst StyledSideNavScrollableContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"hasBlockStartPadding\",\n})<{ odysseyDesignTokens: DesignTokens; hasBlockStartPadding?: boolean }>(\n ({ odysseyDesignTokens, hasBlockStartPadding }) => ({\n display: \"inline-grid\",\n gridTemplateRows: \"1fr max-content\",\n overflowY: \"auto\",\n paddingBlockStart: hasBlockStartPadding ? odysseyDesignTokens.Spacing2 : 0,\n paddingInline: odysseyDesignTokens.Spacing2,\n }),\n);\n\nconst StyledSectionHeaderContainer = styled(\"li\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"contrastFontColor\",\n})(\n ({\n contrastFontColor,\n odysseyDesignTokens,\n }: {\n contrastFontColor: ContrastColors[\"fontColor\"];\n odysseyDesignTokens: DesignTokens;\n }) => ({\n color: contrastFontColor || odysseyDesignTokens.HueNeutral600,\n marginBlock: `${odysseyDesignTokens.Spacing3}`,\n paddingBlock: odysseyDesignTokens.Spacing1,\n paddingInline: odysseyDesignTokens.Spacing4,\n }),\n);\n\nconst StyledSideNavFooter = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"sideNavBackgroundColor\",\n})(\n ({\n odysseyDesignTokens,\n sideNavBackgroundColor,\n }: {\n odysseyDesignTokens: DesignTokens;\n sideNavBackgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n }) => ({\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n flexShrink: 0,\n padding: odysseyDesignTokens.Spacing4,\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } satisfies CSSProperties)),\n }),\n);\n\nconst StyledPersistentSideNavFooter = styled(StyledSideNavFooter, {\n shouldForwardProp: (prop) =>\n prop !== \"isContentScrollable\" &&\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"sideNavBackgroundColor\",\n})(\n ({\n isContentScrollable,\n odysseyDesignTokens,\n sideNavBackgroundColor,\n }: {\n isContentScrollable: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavBackgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n }) => ({\n transitionProperty: \"box-shadow\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n transitionTiming: odysseyDesignTokens.TransitionTimingMain,\n zIndex: UI_SHELL_BASE_Z_INDEX,\n\n // The box shadow should appear above the footer only if the scrollable region has overflow\n ...(isContentScrollable &&\n ({\n boxShadow: \"0px -8px 8px -8px rgba(39, 39, 39, 0.08)\",\n } satisfies CSSProperties)),\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } satisfies CSSProperties)),\n }),\n);\n\nconst StyledSideNavFooterItemsContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"sideNavContrastColors\",\n})<{\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors: UiShellColors[\"sideNavContrastColors\"];\n}>(({ odysseyDesignTokens, sideNavContrastColors }) => ({\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n fontSize: odysseyDesignTokens.TypographySizeOverline,\n\n \"a, span\": {\n color: odysseyDesignTokens.HueNeutral600,\n transition: `color ${odysseyDesignTokens.TransitionDurationMain}`,\n\n \"&:visited\": {\n color: odysseyDesignTokens.HueNeutral600,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n\n \"&:hover\": {\n textDecoration: \"none\",\n color: odysseyDesignTokens.HueNeutral900,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n}));\n\nconst StyledLoadingItemContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n alignItems: \"center\",\n display: \"flex\",\n gap: odysseyDesignTokens.Spacing2,\n paddingBlock: odysseyDesignTokens.Spacing2,\n paddingInline: odysseyDesignTokens.Spacing4,\n}));\n\nconst getHasScrollableContent = (scrollableContainer: HTMLElement) =>\n scrollableContainer.scrollHeight > scrollableContainer.clientHeight;\n\nconst LoadingItem = () => {\n const odysseyDesignTokens: DesignTokens = useOdysseyDesignTokens();\n return (\n <StyledLoadingItemContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Skeleton\n variant=\"circular\"\n width={odysseyDesignTokens.Spacing4}\n height={odysseyDesignTokens.Spacing4}\n />\n <Skeleton variant=\"rounded\" width=\"100%\" />\n </StyledLoadingItemContainer>\n );\n};\n\nconst SideNav = ({\n appName,\n footerComponent,\n footerItems,\n hasCustomFooter,\n hasSessionStorageState,\n isCollapsible,\n isCollapsed = false,\n isCompact,\n isLoading,\n isObtrusive,\n logoProps,\n onCollapse,\n onExpand,\n onSort,\n sideNavItems,\n}: SideNavProps) => {\n const [hasContentScrolled, setHasContentScrolled] = useState(false);\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const [isSideNavToggleHighlighted, setIsSideNavToggleHighlighted] =\n useState(false);\n const [sideNavItemsList, updateSideNavItemsList] = useState(\n sideNavItems || [],\n );\n\n const [isSideNavCollapsedLocalState, setIsSideNavCollapsedLocalState] =\n useState(isCollapsed);\n\n const {\n sessionState: isSideNavCollapsedSessionState,\n setSessionState: setIsSideNavCollapsedSessionState,\n } = useIsSideNavCollapsedSessionStorage(isCollapsed);\n\n const isSideNavCollapsed = hasSessionStorageState\n ? isSideNavCollapsedSessionState\n : isSideNavCollapsedLocalState;\n const setIsSideNavCollapsed = hasSessionStorageState\n ? setIsSideNavCollapsedSessionState\n : setIsSideNavCollapsedLocalState;\n\n const uiShellContext = useUiShellContext();\n const odysseyDesignTokens: DesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const scrollableContentRef = useRef<HTMLUListElement>(null);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null);\n const sideNavRef = useRef<HTMLDivElement>(null);\n\n const { isAtContainerInlineStart } = useElementAtContainerEdge({\n element: sideNavRef.current,\n monitoringElement: sideNavRef.current?.parentElement?.parentElement,\n });\n\n const hasNeighbouringContentAtInlineStart = !isAtContainerInlineStart;\n\n const blankElement = useMemo(() => <div />, []);\n\n // The default value (sideNavItems) passed to useState is ONLY used by the useState hook for\n // the very first value. Subsequent updates to the prop (sideNavItems) need to cause the state\n // to update!\n useEffect(() => updateSideNavItemsList(sideNavItems || []), [sideNavItems]);\n\n // In the case that you can't control the side nav, then it should use whatever state was passed (app control) rather than what's stored in session storage (user control).\n const onMount = useCallback(() => {\n if (!isCollapsible) {\n setIsSideNavCollapsed(isCollapsed);\n }\n }, [isCollapsed, isCollapsible, setIsSideNavCollapsed]);\n\n const onUpdate = useCallback(() => {\n setIsSideNavCollapsed(isCollapsed);\n }, [isCollapsed, setIsSideNavCollapsed]);\n\n useMountLifecycleEffect({\n onMount,\n onUpdate,\n });\n\n useEffect(() => {\n // This is called directly in this effect AND perhaps as a result of the ResizeObserver\n const updateIsContentScrollable = () => {\n if (\n scrollableContentRef.current &&\n scrollableContentRef.current.parentElement\n ) {\n setIsContentScrollable(\n getHasScrollableContent(scrollableContentRef.current.parentElement),\n );\n }\n };\n\n // If the window is resized, we may need to re-determine if the scrollable container has overflow\n // Setup a ResizeObserver to know if the size of the scrollableContent changes\n let resizeObserverDebounceTimer: ReturnType<typeof requestAnimationFrame>;\n if (!resizeObserverRef.current) {\n resizeObserverRef.current = new ResizeObserver(() => {\n cancelAnimationFrame(resizeObserverDebounceTimer);\n resizeObserverDebounceTimer = requestAnimationFrame(\n updateIsContentScrollable,\n );\n });\n }\n\n if (resizeObserverRef.current && scrollableContentRef.current) {\n // Observe the <ul> itself (in case it changes size due to the content expanding)\n resizeObserverRef.current.observe(scrollableContentRef.current);\n if (scrollableContentRef.current.parentElement) {\n // ALSO observe the parent (<SideNavScrollableContainer>) in case the window resizes\n resizeObserverRef.current.observe(\n scrollableContentRef.current.parentElement,\n );\n }\n }\n\n // Determine if the scrollable container has overflow or not on load\n updateIsContentScrollable();\n\n // Finally, we only want to have the border on the bottom of the header iff the user has scrolled\n // the scrollable container\n if (!intersectionObserverRef.current && scrollableContentRef.current) {\n intersectionObserverRef.current = new IntersectionObserver(\n (entries) => {\n // If isIntersecting is true, then we're at the top of the scroll container\n // If isIntersecting is false, some scrolling has occurred.\n // The entries must be sorted by time and we only really need to look at the latest one\n const isIntersecting = entries\n .slice()\n .sort((a, b) => a.time - b.time)\n .at(0)?.isIntersecting;\n setHasContentScrolled(!isIntersecting);\n },\n {\n root: scrollableContentRef.current.parentElement,\n threshold: 1.0,\n },\n );\n }\n\n if (intersectionObserverRef.current && scrollableContentRef.current) {\n const ulElement = scrollableContentRef.current;\n const [liElement] = Array.from(ulElement?.children || []);\n\n if (liElement) {\n intersectionObserverRef.current.observe(liElement);\n }\n }\n\n // Cleanup when unmounted:\n return () => {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.disconnect();\n resizeObserverRef.current = null;\n }\n if (intersectionObserverRef.current) {\n intersectionObserverRef.current.disconnect();\n intersectionObserverRef.current = null;\n }\n cancelAnimationFrame(resizeObserverDebounceTimer); // Ensure timer is cleared on component unmount\n };\n }, [sideNavItemsList]);\n\n const scrollIntoViewRef = useRef<HTMLLIElement>(null);\n /**\n * Look through the sideNavItems and determine which is the first node\n * with isSelected. This should be the node we set a ref on in order to\n * call scrollIntoView in the effect\n */\n const firstSideNavItemIdWithIsSelected = useMemo(() => {\n const flattenedItems = sideNavItemsList.flatMap((sideNavItem) =>\n sideNavItem.nestedNavItems\n ? [sideNavItem, ...sideNavItem.nestedNavItems]\n : sideNavItem,\n );\n const firstItemWithIsSelected = flattenedItems.find(\n (sideNavItem) => sideNavItem.isSelected,\n );\n return firstItemWithIsSelected?.id;\n }, [sideNavItemsList]);\n /**\n * Once we've rendered and if we have an item to scroll to, do the scroll action.\n * This must rely on checking firstSideNavItemIdWithIsSelected or it will not run\n * once the actual ref is populated.\n */\n useEffect(() => {\n if (firstSideNavItemIdWithIsSelected && scrollIntoViewRef.current) {\n scrollIntoViewRef.current.scrollIntoView();\n }\n }, [firstSideNavItemIdWithIsSelected]);\n\n /**\n * We only want to put a ref on a node iff it is the first selected node.\n * This function returns the ref only if the ID provided matches the first\n * selected node, otherwise returns undefined (so that the node has no ref)\n */\n const getRefIfThisIsFirstNodeWithIsSelected = useCallback(\n (itemId: string) =>\n itemId === firstSideNavItemIdWithIsSelected\n ? scrollIntoViewRef\n : undefined,\n [firstSideNavItemIdWithIsSelected],\n );\n\n const sideNavItemContentProviderValue = useMemo(\n () => ({ isCompact, depth: 1 }),\n [isCompact],\n );\n\n const setSelectedItem = useCallback(\n (selectedItemId: string) => {\n const updatedSideNavItems = sideNavItemsList.map((item) => {\n if (item.id === selectedItemId) {\n item.isSelected = true;\n } else if (item.isSelected) {\n delete item.isSelected;\n }\n\n return item.nestedNavItems\n ? {\n ...item,\n nestedNavItems: item.nestedNavItems.map((childItem) => {\n if (childItem.id === selectedItemId) {\n childItem.isSelected = true;\n } else if (childItem.isSelected) {\n delete childItem.isSelected;\n }\n return childItem;\n }),\n }\n : item;\n });\n updateSideNavItemsList(updatedSideNavItems);\n\n if (isCollapsed || isObtrusive) {\n if (isCollapsible) {\n uiShellContext?.closeSideNavMenu();\n } else {\n onCollapse?.();\n }\n }\n },\n [\n isCollapsed,\n isCollapsible,\n isObtrusive,\n onCollapse,\n sideNavItemsList,\n uiShellContext,\n ],\n );\n\n const processedSideNavItems = useMemo(() => {\n return sideNavItemsList?.map((item) => ({\n ...item,\n childNavItems: item.nestedNavItems?.map((childProps) => ({\n id: childProps.id,\n isSelected: childProps.isSelected,\n isDisabled: childProps.isDisabled,\n isSortable: childProps.isSortable,\n navItem: (\n <SideNavItemContentContext.Provider\n key={childProps.id}\n value={{\n ...sideNavItemContentProviderValue,\n depth: 2,\n isSortable: item.isSortable,\n }}\n >\n <SideNavItemContent\n {...childProps}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(childProps.id)}\n translate={childProps.translate}\n />\n </SideNavItemContentContext.Provider>\n ),\n })),\n }));\n }, [\n getRefIfThisIsFirstNodeWithIsSelected,\n setSelectedItem,\n sideNavItemContentProviderValue,\n sideNavItemsList,\n ]);\n\n const sideNavExpandClickHandler = useCallback(() => {\n setIsSideNavCollapsed((isSideNavCollapsed) => {\n if (isSideNavCollapsed) {\n onExpand?.();\n } else {\n onCollapse?.();\n }\n\n return !isSideNavCollapsed;\n });\n }, [onCollapse, onExpand, setIsSideNavCollapsed]);\n\n const sideNavExpandKeyHandler = useCallback<\n KeyboardEventHandler<HTMLButtonElement>\n >(\n (event) => {\n if (event?.key === \"Enter\" || event?.code === \"Space\") {\n event.preventDefault();\n sideNavExpandClickHandler();\n }\n },\n [sideNavExpandClickHandler],\n );\n\n useEffect(() => {\n const unsubscribe = uiShellContext?.subscribeToCloseSideNavMenu(() => {\n onCollapse?.();\n setIsSideNavCollapsed(true);\n });\n\n return () => {\n unsubscribe?.();\n };\n }, [onCollapse, setIsSideNavCollapsed, uiShellContext]);\n\n const setSortedItems = useCallback(\n (\n parentId: string,\n activeId: UniqueIdentifier,\n activeIndex: number,\n overIndex: number,\n ) => {\n const sortedSideNavItems = sideNavItemsList.map((item) =>\n item.id === parentId && item.nestedNavItems\n ? {\n ...item,\n nestedNavItems: arrayMove(\n item.nestedNavItems,\n activeIndex,\n overIndex,\n ),\n }\n : item,\n );\n updateSideNavItemsList(sortedSideNavItems);\n onSort?.(sortedSideNavItems, parentId, activeId, activeIndex, overIndex);\n },\n [onSort, sideNavItemsList],\n );\n\n const onSideNavToggleButtonHighlight = useCallback<\n NonNullable<SideNavToggleButtonProps[\"onHighlight\"]>\n >((isHighlighted) => {\n setIsSideNavToggleHighlighted(isHighlighted);\n }, []);\n\n return (\n <StyledSideNavContainer\n aria-label={t(\"navigation.label\")}\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n hasNeighbouringContentAtInlineStart={hasNeighbouringContentAtInlineStart}\n id=\"side-nav-expandable\"\n isAppContentWhiteBackground={\n uiShellContext?.appBackgroundColor ===\n odysseyDesignTokens.HueNeutralWhite\n }\n isSideNavCollapsed={isSideNavCollapsed}\n isSideNavToggleHighlighted={isSideNavToggleHighlighted}\n odysseyDesignTokens={odysseyDesignTokens}\n ref={sideNavRef}\n >\n {isCollapsible && (\n <StyledSideNavToggleButtonContainer\n hasNeighbouringContentAtInlineStart={\n hasNeighbouringContentAtInlineStart\n }\n isSideNavCollapsed={isSideNavCollapsed}\n isSideNavToggleHighlighted={isSideNavToggleHighlighted}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavToggleButton\n clickAreaPadding={\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? SIDE_NAV_TOGGLE_ICON_SIZE / 2\n : 0\n }\n ariaControls=\"side-nav-expandable\"\n isSideNavCollapsed={isSideNavCollapsed}\n onClick={sideNavExpandClickHandler}\n onHighlight={onSideNavToggleButtonHighlight}\n onKeyDown={sideNavExpandKeyHandler}\n />\n </StyledSideNavToggleButtonContainer>\n )}\n\n <OdysseyThemeProvider>\n <StyledCollapsibleContent\n data-se=\"collapsible-region\"\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <StyledOpacityTransitionContainer\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {appName || isLoading || logoProps ? (\n <StyledSideNavHeaderContainer\n hasContentScrolled={hasContentScrolled}\n odysseyDesignTokens={odysseyDesignTokens}\n borderColor={uiShellContext?.sideNavContrastColors?.fontColor}\n >\n {isLoading && !appName && !logoProps ? (\n <SideNavHeader isLoading={isLoading} />\n ) : (\n <SideNavHeader\n appName={appName}\n isLoading={isLoading}\n logoProps={logoProps}\n />\n )}\n </StyledSideNavHeaderContainer>\n ) : (\n <div />\n )}\n\n <StyledSideNavScrollableContainer\n odysseyDesignTokens={odysseyDesignTokens}\n data-se=\"scrollable-region\"\n hasBlockStartPadding={!appName}\n >\n <StyledSideNavListContainer\n role=\"none\"\n ref={scrollableContentRef}\n >\n {isLoading\n ? Array(6)\n .fill(null)\n .map((_, index) => <LoadingItem key={index} />)\n : processedSideNavItems?.map((item) => {\n const {\n childNavItems,\n href,\n id,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n isSectionHeader,\n isSortable,\n label,\n startIcon,\n } = item;\n\n if (isSectionHeader) {\n return (\n <ErrorBoundary fallback={blankElement} key={id}>\n <StyledSectionHeaderContainer\n contrastFontColor={\n uiShellContext?.sideNavContrastColors?.fontColor\n }\n id={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <Overline component=\"h3\">{label}</Overline>\n </StyledSectionHeaderContainer>\n </ErrorBoundary>\n );\n } else if (childNavItems) {\n const nestedChildren = (\n <StyledSideNavListContainer role=\"presentation\">\n {isSortable ? (\n <SortableList\n parentId={item.id}\n items={childNavItems}\n onChange={setSortedItems}\n renderItem={(sortableItem) => (\n <SortableList.Item\n id={sortableItem.id}\n isDisabled={sortableItem.isDisabled}\n isSelected={sortableItem.isSelected}\n isSortable={sortableItem.isSortable}\n >\n {sortableItem.navItem}\n </SortableList.Item>\n )}\n />\n ) : (\n childNavItems.map((item) => item.navItem)\n )}\n </StyledSideNavListContainer>\n );\n\n return href ? (\n <ErrorBoundary fallback={blankElement} key={id}>\n <SideNavItemContent\n {...item}\n href={href}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(\n item.id,\n )}\n startIcon={item.startIcon}\n />\n\n <StyledSideNavListItem\n id={`${id}-items`}\n odysseyDesignTokens={odysseyDesignTokens}\n disabled={isDisabled}\n aria-disabled={isDisabled}\n >\n {nestedChildren}\n </StyledSideNavListItem>\n </ErrorBoundary>\n ) : (\n <ErrorBoundary fallback={blankElement} key={id}>\n <StyledSideNavListItem\n id={id}\n odysseyDesignTokens={odysseyDesignTokens}\n disabled={isDisabled}\n aria-disabled={isDisabled}\n >\n <NavAccordion\n label={label}\n isCompact={isCompact}\n isDefaultExpanded={isDefaultExpanded}\n isExpanded={isExpanded}\n startIcon={startIcon}\n isDisabled={isDisabled}\n >\n {nestedChildren}\n </NavAccordion>\n </StyledSideNavListItem>\n </ErrorBoundary>\n );\n } else {\n return (\n <ErrorBoundary fallback={blankElement} key={item.id}>\n <SideNavItemContentContext.Provider\n value={sideNavItemContentProviderValue}\n >\n <SideNavItemContent\n {...item}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(\n item.id,\n )}\n startIcon={item.startIcon}\n />\n </SideNavItemContentContext.Provider>\n </ErrorBoundary>\n );\n }\n })}\n </StyledSideNavListContainer>\n {!isLoading && footerItems && !hasCustomFooter && (\n <StyledSideNavFooter\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavBackgroundColor={\n uiShellContext?.sideNavBackgroundColor\n }\n >\n <StyledSideNavFooterItemsContainer\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={\n uiShellContext?.sideNavContrastColors\n }\n >\n <SideNavFooterContent footerItems={footerItems} />\n </StyledSideNavFooterItemsContainer>\n </StyledSideNavFooter>\n )}\n </StyledSideNavScrollableContainer>\n {!isLoading && !footerItems && hasCustomFooter && (\n <StyledPersistentSideNavFooter\n isContentScrollable={isContentScrollable}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavBackgroundColor={uiShellContext?.sideNavBackgroundColor}\n >\n {footerComponent}\n </StyledPersistentSideNavFooter>\n )}\n </StyledOpacityTransitionContainer>\n </StyledCollapsibleContent>\n </OdysseyThemeProvider>\n </StyledSideNavContainer>\n );\n};\n\nconst MemoizedSideNav = memo(SideNav);\nMemoizedSideNav.displayName = \"SideNav\";\n\nexport { MemoizedSideNav as SideNav };\n"],"mappings":"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","ignoreList":[]}