@okta/odyssey-react-mui 1.32.4 → 1.34.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.
- package/dist/cjs/Autocomplete.cjs +1 -1
- package/dist/cjs/Autocomplete.cjs.map +1 -1
- package/dist/cjs/Breadcrumbs.cjs +23 -7
- package/dist/cjs/Breadcrumbs.cjs.map +1 -1
- package/dist/cjs/Buttons/BaseButton.cjs +1 -1
- package/dist/cjs/Buttons/BaseButton.cjs.map +1 -1
- package/dist/cjs/DatePickers/datePickerTheme.cjs +1 -1
- package/dist/cjs/DatePickers/datePickerTheme.cjs.map +1 -1
- package/dist/cjs/OdysseyProvider.cjs +2 -2
- package/dist/cjs/OdysseyProvider.cjs.map +1 -1
- package/dist/cjs/OdysseyThemeProvider.cjs +2 -2
- package/dist/cjs/OdysseyThemeProvider.cjs.map +1 -1
- package/dist/cjs/hexToRgb.cjs.map +1 -1
- package/dist/cjs/labs/DatePickers/DateTimePicker.cjs.map +1 -1
- package/dist/cjs/labs/OdysseyPickers/PickerWithOptionAdornment.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_cs.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_cs.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_da.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_da.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_de.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_de.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_el.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_el.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_es.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_es.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_fi.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_fi.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_fr.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_fr.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_ht.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_ht.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_hu.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_hu.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_id.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_id.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_it.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_it.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_ja.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_ja.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_ko.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_ko.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_ms.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_ms.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_nb.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_nb.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_nl_NL.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_nl_NL.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_pl.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_pl.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_pt_BR.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_pt_BR.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_ro.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_ro.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_ru.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_ru.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_sv.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_sv.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_th.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_th.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_tr.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_tr.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_uk.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_uk.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_vi.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_vi.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_zh_CN.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_zh_CN.cjs.map +1 -1
- package/dist/cjs/properties/ts/odyssey-react-mui_zh_TW.cjs +1 -0
- package/dist/cjs/properties/ts/odyssey-react-mui_zh_TW.cjs.map +1 -1
- package/dist/cjs/theme/pxToRem.cjs +21 -0
- package/dist/cjs/theme/pxToRem.cjs.map +1 -0
- package/dist/cjs/theme/theme.cjs +22 -0
- package/dist/cjs/theme/theme.cjs.map +1 -1
- package/dist/cjs/theme/useMediaQuery.cjs +34 -0
- package/dist/cjs/theme/useMediaQuery.cjs.map +1 -0
- package/dist/cjs/ui-shell/AppSwitcher/AppSwitcher.cjs +3 -3
- package/dist/cjs/ui-shell/AppSwitcher/AppSwitcher.cjs.map +1 -1
- package/dist/cjs/ui-shell/NarrowUiShellContent.cjs +353 -0
- package/dist/cjs/ui-shell/NarrowUiShellContent.cjs.map +1 -0
- package/dist/cjs/ui-shell/SideNav/SideNav.cjs +62 -44
- package/dist/cjs/ui-shell/SideNav/SideNav.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavHeader.cjs +8 -5
- package/dist/cjs/ui-shell/SideNav/SideNavHeader.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavItemContent.cjs +3 -0
- package/dist/cjs/ui-shell/SideNav/SideNavItemContent.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavLogo.cjs +5 -5
- package/dist/cjs/ui-shell/SideNav/SideNavLogo.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavToggleButton.cjs +2 -1
- package/dist/cjs/ui-shell/SideNav/SideNavToggleButton.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/types.cjs.map +1 -1
- package/dist/cjs/ui-shell/TopNav/HamburgerMenuIcon.cjs +37 -0
- package/dist/cjs/ui-shell/TopNav/HamburgerMenuIcon.cjs.map +1 -0
- package/dist/cjs/ui-shell/TopNav/TopNav.cjs +5 -5
- package/dist/cjs/ui-shell/TopNav/TopNav.cjs.map +1 -1
- package/dist/cjs/ui-shell/UiShell.cjs +43 -18
- package/dist/cjs/ui-shell/UiShell.cjs.map +1 -1
- package/dist/cjs/ui-shell/UiShellProvider.cjs +14 -4
- package/dist/cjs/ui-shell/UiShellProvider.cjs.map +1 -1
- package/dist/cjs/ui-shell/WideUiShellContent.cjs +171 -0
- package/dist/cjs/ui-shell/WideUiShellContent.cjs.map +1 -0
- package/dist/cjs/ui-shell/index.cjs +37 -9
- package/dist/cjs/ui-shell/index.cjs.map +1 -1
- package/dist/cjs/ui-shell/renderUiShell.cjs +32 -20
- package/dist/cjs/ui-shell/renderUiShell.cjs.map +1 -1
- package/dist/cjs/ui-shell/uiShellContentTypes.cjs +20 -0
- package/dist/cjs/ui-shell/uiShellContentTypes.cjs.map +1 -0
- package/dist/cjs/ui-shell/uiShellSharedConstants.cjs +23 -0
- package/dist/cjs/ui-shell/uiShellSharedConstants.cjs.map +1 -0
- package/dist/cjs/ui-shell/useMatchAppElementToUiShellAppArea.cjs +108 -0
- package/dist/cjs/ui-shell/useMatchAppElementToUiShellAppArea.cjs.map +1 -0
- package/dist/cjs/ui-shell/useScrollState.cjs +2 -4
- package/dist/cjs/ui-shell/useScrollState.cjs.map +1 -1
- package/dist/cjs/ui-shell/useUiShellBreakpoints.cjs +41 -0
- package/dist/cjs/ui-shell/useUiShellBreakpoints.cjs.map +1 -0
- package/dist/cjs/web-component/createReactRootElements.cjs.map +1 -1
- package/dist/cjs/web-component/renderReactInWebComponent.cjs +6 -1
- package/dist/cjs/web-component/renderReactInWebComponent.cjs.map +1 -1
- package/dist/esm/Autocomplete.js +1 -1
- package/dist/esm/Autocomplete.js.map +1 -1
- package/dist/esm/Breadcrumbs.js +23 -7
- package/dist/esm/Breadcrumbs.js.map +1 -1
- package/dist/esm/Buttons/BaseButton.js +1 -1
- package/dist/esm/Buttons/BaseButton.js.map +1 -1
- package/dist/esm/DatePickers/datePickerTheme.js +1 -1
- package/dist/esm/DatePickers/datePickerTheme.js.map +1 -1
- package/dist/esm/OdysseyProvider.js +2 -2
- package/dist/esm/OdysseyProvider.js.map +1 -1
- package/dist/esm/OdysseyThemeProvider.js +2 -2
- package/dist/esm/OdysseyThemeProvider.js.map +1 -1
- package/dist/esm/hexToRgb.js.map +1 -1
- package/dist/esm/labs/DatePickers/DateTimePicker.js.map +1 -1
- package/dist/esm/labs/OdysseyPickers/PickerWithOptionAdornment.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_cs.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_cs.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_da.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_da.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_de.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_de.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_el.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_el.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_es.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_es.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_fi.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_fi.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_fr.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_fr.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_ht.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_ht.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_hu.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_hu.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_id.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_id.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_it.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_it.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_ja.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_ja.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_ko.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_ko.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_ms.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_ms.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_nb.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_nb.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_nl_NL.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_nl_NL.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_pl.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_pl.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_pt_BR.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_pt_BR.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_ro.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_ro.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_ru.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_ru.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_sv.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_sv.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_th.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_th.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_tr.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_tr.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_uk.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_uk.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_vi.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_vi.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_zh_CN.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_zh_CN.js.map +1 -1
- package/dist/esm/properties/ts/odyssey-react-mui_zh_TW.js +1 -0
- package/dist/esm/properties/ts/odyssey-react-mui_zh_TW.js.map +1 -1
- package/dist/esm/theme/pxToRem.js +14 -0
- package/dist/esm/theme/pxToRem.js.map +1 -0
- package/dist/esm/theme/theme.js +2 -0
- package/dist/esm/theme/theme.js.map +1 -1
- package/dist/esm/theme/useMediaQuery.js +27 -0
- package/dist/esm/theme/useMediaQuery.js.map +1 -0
- package/dist/esm/ui-shell/AppSwitcher/AppSwitcher.js +2 -2
- package/dist/esm/ui-shell/AppSwitcher/AppSwitcher.js.map +1 -1
- package/dist/esm/ui-shell/NarrowUiShellContent.js +347 -0
- package/dist/esm/ui-shell/NarrowUiShellContent.js.map +1 -0
- package/dist/esm/ui-shell/SideNav/SideNav.js +61 -43
- package/dist/esm/ui-shell/SideNav/SideNav.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavHeader.js +7 -4
- package/dist/esm/ui-shell/SideNav/SideNavHeader.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavItemContent.js +3 -0
- package/dist/esm/ui-shell/SideNav/SideNavItemContent.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavLogo.js +5 -5
- package/dist/esm/ui-shell/SideNav/SideNavLogo.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavToggleButton.js +2 -1
- package/dist/esm/ui-shell/SideNav/SideNavToggleButton.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/types.js.map +1 -1
- package/dist/esm/ui-shell/TopNav/HamburgerMenuIcon.js +32 -0
- package/dist/esm/ui-shell/TopNav/HamburgerMenuIcon.js.map +1 -0
- package/dist/esm/ui-shell/TopNav/TopNav.js +2 -2
- package/dist/esm/ui-shell/TopNav/TopNav.js.map +1 -1
- package/dist/esm/ui-shell/UiShell.js +43 -18
- package/dist/esm/ui-shell/UiShell.js.map +1 -1
- package/dist/esm/ui-shell/UiShellProvider.js +12 -3
- package/dist/esm/ui-shell/UiShellProvider.js.map +1 -1
- package/dist/esm/ui-shell/WideUiShellContent.js +165 -0
- package/dist/esm/ui-shell/WideUiShellContent.js.map +1 -0
- package/dist/esm/ui-shell/index.js +3 -1
- package/dist/esm/ui-shell/index.js.map +1 -1
- package/dist/esm/ui-shell/renderUiShell.js +32 -20
- package/dist/esm/ui-shell/renderUiShell.js.map +1 -1
- package/dist/esm/ui-shell/uiShellContentTypes.js +14 -0
- package/dist/esm/ui-shell/uiShellContentTypes.js.map +1 -0
- package/dist/esm/ui-shell/uiShellSharedConstants.js +17 -0
- package/dist/esm/ui-shell/uiShellSharedConstants.js.map +1 -0
- package/dist/esm/ui-shell/useMatchAppElementToUiShellAppArea.js +99 -0
- package/dist/esm/ui-shell/useMatchAppElementToUiShellAppArea.js.map +1 -0
- package/dist/esm/ui-shell/useScrollState.js +3 -5
- package/dist/esm/ui-shell/useScrollState.js.map +1 -1
- package/dist/esm/ui-shell/useUiShellBreakpoints.js +34 -0
- package/dist/esm/ui-shell/useUiShellBreakpoints.js.map +1 -0
- package/dist/esm/web-component/createReactRootElements.js.map +1 -1
- package/dist/esm/web-component/renderReactInWebComponent.js +6 -1
- package/dist/esm/web-component/renderReactInWebComponent.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.scss +1 -1
- package/dist/tsconfig.production.tsbuildinfo +1 -1
- package/dist/types/Autocomplete.d.ts +1 -1
- package/dist/types/Breadcrumbs.d.ts +4 -3
- package/dist/types/Breadcrumbs.d.ts.map +1 -1
- package/dist/types/Buttons/BaseButton.d.ts +1 -1
- package/dist/types/OdysseyProvider.d.ts +1 -1
- package/dist/types/OdysseyProvider.d.ts.map +1 -1
- package/dist/types/OdysseyThemeProvider.d.ts.map +1 -1
- package/dist/types/OdysseyTranslationProvider.d.ts +1 -1
- package/dist/types/OdysseyTranslationProvider.d.ts.map +1 -1
- package/dist/types/hexToRgb.d.ts.map +1 -1
- package/dist/types/i18n.d.ts +28 -0
- package/dist/types/i18n.d.ts.map +1 -1
- package/dist/types/labs/DatePickers/DateTimePicker.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_cs.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_cs.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_da.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_da.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_de.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_de.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_el.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_el.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_es.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_es.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_fi.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_fi.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_fr.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_fr.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_ht.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_ht.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_hu.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_hu.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_id.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_id.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_it.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_it.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_ja.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_ja.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_ko.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_ko.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_ms.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_ms.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_nb.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_nb.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_nl_NL.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_nl_NL.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_pl.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_pl.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_pt_BR.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_pt_BR.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_ro.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_ro.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_ru.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_ru.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_sv.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_sv.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_th.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_th.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_tr.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_tr.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_uk.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_uk.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_vi.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_vi.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_zh_CN.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_zh_CN.d.ts.map +1 -1
- package/dist/types/properties/ts/odyssey-react-mui_zh_TW.d.ts +1 -0
- package/dist/types/properties/ts/odyssey-react-mui_zh_TW.d.ts.map +1 -1
- package/dist/types/theme/pxToRem.d.ts +13 -0
- package/dist/types/theme/pxToRem.d.ts.map +1 -0
- package/dist/types/theme/theme.d.ts +2 -0
- package/dist/types/theme/theme.d.ts.map +1 -1
- package/dist/types/theme/useMediaQuery.d.ts +13 -0
- package/dist/types/theme/useMediaQuery.d.ts.map +1 -0
- package/dist/types/ui-shell/AppSwitcher/AppSwitcher.d.ts.map +1 -1
- package/dist/types/ui-shell/NarrowUiShellContent.d.ts +17 -0
- package/dist/types/ui-shell/NarrowUiShellContent.d.ts.map +1 -0
- package/dist/types/ui-shell/SideNav/SideNav.d.ts +1 -3
- package/dist/types/ui-shell/SideNav/SideNav.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavHeader.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavItemContent.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavLogo.d.ts +1 -1
- package/dist/types/ui-shell/SideNav/SideNavLogo.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavToggleButton.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/types.d.ts +7 -1
- package/dist/types/ui-shell/SideNav/types.d.ts.map +1 -1
- package/dist/types/ui-shell/TopNav/HamburgerMenuIcon.d.ts +16 -0
- package/dist/types/ui-shell/TopNav/HamburgerMenuIcon.d.ts.map +1 -0
- package/dist/types/ui-shell/TopNav/TopNav.d.ts +0 -1
- package/dist/types/ui-shell/TopNav/TopNav.d.ts.map +1 -1
- package/dist/types/ui-shell/UiShell.d.ts +12 -14
- package/dist/types/ui-shell/UiShell.d.ts.map +1 -1
- package/dist/types/ui-shell/UiShellProvider.d.ts +37 -8
- package/dist/types/ui-shell/UiShellProvider.d.ts.map +1 -1
- package/dist/types/ui-shell/WideUiShellContent.d.ts +16 -0
- package/dist/types/ui-shell/WideUiShellContent.d.ts.map +1 -0
- package/dist/types/ui-shell/index.d.ts +3 -1
- package/dist/types/ui-shell/index.d.ts.map +1 -1
- package/dist/types/ui-shell/renderUiShell.d.ts +9 -11
- package/dist/types/ui-shell/renderUiShell.d.ts.map +1 -1
- package/dist/types/ui-shell/{UiShellContent.d.ts → uiShellContentTypes.d.ts} +45 -31
- package/dist/types/ui-shell/uiShellContentTypes.d.ts.map +1 -0
- package/dist/types/ui-shell/uiShellSharedConstants.d.ts +18 -0
- package/dist/types/ui-shell/uiShellSharedConstants.d.ts.map +1 -0
- package/dist/types/ui-shell/useMatchAppElementToUiShellAppArea.d.ts +38 -0
- package/dist/types/ui-shell/useMatchAppElementToUiShellAppArea.d.ts.map +1 -0
- package/dist/types/ui-shell/useScrollState.d.ts +0 -1
- package/dist/types/ui-shell/useScrollState.d.ts.map +1 -1
- package/dist/types/ui-shell/useUiShellBreakpoints.d.ts +18 -0
- package/dist/types/ui-shell/useUiShellBreakpoints.d.ts.map +1 -0
- package/dist/types/web-component/createReactRootElements.d.ts +6 -4
- package/dist/types/web-component/createReactRootElements.d.ts.map +1 -1
- package/dist/types/web-component/renderReactInWebComponent.d.ts +12 -5
- package/dist/types/web-component/renderReactInWebComponent.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/cjs/ui-shell/UiShellContent.cjs +0 -242
- package/dist/cjs/ui-shell/UiShellContent.cjs.map +0 -1
- package/dist/esm/ui-shell/UiShellContent.js +0 -234
- package/dist/esm/ui-shell/UiShellContent.js.map +0 -1
- package/dist/types/ui-shell/UiShellContent.d.ts.map +0 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.SideNav =
|
|
6
|
+
exports.SideNav = void 0;
|
|
7
7
|
var _Skeleton2 = _interopRequireDefault(require("@mui/material/Skeleton"));
|
|
8
8
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
9
9
|
var _react = require("react");
|
|
@@ -21,6 +21,7 @@ var _SideNavToggleButton = require("./SideNavToggleButton.cjs");
|
|
|
21
21
|
var _SortableList = require("./SortableList/SortableList.cjs");
|
|
22
22
|
var _Typography = require("../../Typography.cjs");
|
|
23
23
|
var _UiShellProvider = require("../../ui-shell/UiShellProvider.cjs");
|
|
24
|
+
var _uiShellSharedConstants = require("../uiShellSharedConstants.cjs");
|
|
24
25
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
25
26
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
26
27
|
/*!
|
|
@@ -35,8 +36,6 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
35
36
|
* See the License for the specific language governing permissions and limitations under the License.
|
|
36
37
|
*/
|
|
37
38
|
|
|
38
|
-
const DEFAULT_SIDE_NAV_WIDTH = exports.DEFAULT_SIDE_NAV_WIDTH = "300px";
|
|
39
|
-
const SIDENAV_COLLAPSE_ICON_POSITION = exports.SIDENAV_COLLAPSE_ICON_POSITION = "77px";
|
|
40
39
|
const StyledCollapsibleContent = (0, _styled.default)("div", {
|
|
41
40
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "isSideNavCollapsed"
|
|
42
41
|
})(({
|
|
@@ -44,8 +43,8 @@ const StyledCollapsibleContent = (0, _styled.default)("div", {
|
|
|
44
43
|
isSideNavCollapsed
|
|
45
44
|
}) => ({
|
|
46
45
|
position: "relative",
|
|
47
|
-
display: "
|
|
48
|
-
gridTemplateColumns:
|
|
46
|
+
display: "grid",
|
|
47
|
+
gridTemplateColumns: _uiShellSharedConstants.SIDE_NAV_WIDTH,
|
|
49
48
|
height: "100%",
|
|
50
49
|
transition: `grid-template-columns ${odysseyDesignTokens.TransitionDurationMain}, opacity 300ms`,
|
|
51
50
|
transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,
|
|
@@ -61,7 +60,7 @@ const StyledOpacityTransitionContainer = (0, _styled.default)("div", {
|
|
|
61
60
|
odysseyDesignTokens,
|
|
62
61
|
isSideNavCollapsed
|
|
63
62
|
}) => ({
|
|
64
|
-
display: "
|
|
63
|
+
display: "grid",
|
|
65
64
|
gridTemplateRows: "max-content 1fr max-content",
|
|
66
65
|
height: "100%",
|
|
67
66
|
transition: `opacity 50ms`,
|
|
@@ -71,7 +70,7 @@ const StyledOpacityTransitionContainer = (0, _styled.default)("div", {
|
|
|
71
70
|
opacity: 0
|
|
72
71
|
})
|
|
73
72
|
}));
|
|
74
|
-
const
|
|
73
|
+
const StyledSideNavContainer = (0, _styled.default)("nav", {
|
|
75
74
|
shouldForwardProp: prop => prop !== "backgroundColor" && prop !== "odysseyDesignTokens" && prop !== "isAppContentWhiteBackground" && prop !== "isSideNavCollapsed"
|
|
76
75
|
})(({
|
|
77
76
|
backgroundColor,
|
|
@@ -79,10 +78,10 @@ const StyledSideNav = (0, _styled.default)("nav", {
|
|
|
79
78
|
isSideNavCollapsed,
|
|
80
79
|
odysseyDesignTokens
|
|
81
80
|
}) => ({
|
|
82
|
-
position: "relative",
|
|
83
|
-
display: "inline-block",
|
|
84
|
-
height: "100%",
|
|
85
81
|
backgroundColor: backgroundColor || odysseyDesignTokens.HueNeutralWhite,
|
|
82
|
+
height: "100%",
|
|
83
|
+
position: "relative",
|
|
84
|
+
width: "fit-content",
|
|
86
85
|
...(isAppContentWhiteBackground && {
|
|
87
86
|
borderRightWidth: odysseyDesignTokens.BorderWidthMain,
|
|
88
87
|
borderRightStyle: odysseyDesignTokens.BorderStyleMain,
|
|
@@ -99,7 +98,7 @@ const StyledSideNav = (0, _styled.default)("nav", {
|
|
|
99
98
|
transform: `translateX(0)`,
|
|
100
99
|
transition: `opacity ${odysseyDesignTokens.TransitionDurationMain}, transform ${odysseyDesignTokens.TransitionDurationMain}`,
|
|
101
100
|
width: odysseyDesignTokens.Spacing2,
|
|
102
|
-
zIndex:
|
|
101
|
+
zIndex: _uiShellSharedConstants.UI_SHELL_OVERLAY_Z_INDEX
|
|
103
102
|
},
|
|
104
103
|
"&:has([data-sidenav-toggle='true']:hover), &:has([data-sidenav-toggle='true']:focus-visible)": {
|
|
105
104
|
...(isSideNavCollapsed && {
|
|
@@ -114,13 +113,13 @@ const StyledSideNav = (0, _styled.default)("nav", {
|
|
|
114
113
|
},
|
|
115
114
|
"[data-sidenav-toggle='true']": {
|
|
116
115
|
position: "absolute",
|
|
117
|
-
top:
|
|
116
|
+
top: _uiShellSharedConstants.SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,
|
|
118
117
|
right: 0,
|
|
119
118
|
transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,
|
|
120
119
|
transform: `translate3d(100%, 0, 0)`
|
|
121
120
|
}
|
|
122
121
|
}));
|
|
123
|
-
const
|
|
122
|
+
const StyledSideNavHeaderContainer = (0, _styled.default)("div", {
|
|
124
123
|
shouldForwardProp: prop => prop !== "borderColor" && prop !== "hasContentScrolled" && prop !== "odysseyDesignTokens"
|
|
125
124
|
})(({
|
|
126
125
|
borderColor,
|
|
@@ -137,24 +136,23 @@ const SideNavHeaderContainer = (0, _styled.default)("div", {
|
|
|
137
136
|
})
|
|
138
137
|
})
|
|
139
138
|
}));
|
|
140
|
-
const
|
|
139
|
+
const StyledSideNavListContainer = (0, _styled.default)("ul")(() => ({
|
|
141
140
|
padding: 0,
|
|
142
141
|
listStyle: "none",
|
|
143
142
|
listStyleType: "none",
|
|
144
143
|
margin: 0
|
|
145
144
|
}));
|
|
146
|
-
const
|
|
145
|
+
const StyledSideNavScrollableContainer = (0, _styled.default)("div", {
|
|
147
146
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
148
147
|
})(({
|
|
149
148
|
odysseyDesignTokens
|
|
150
149
|
}) => ({
|
|
151
|
-
display: "grid",
|
|
150
|
+
display: "inline-grid",
|
|
152
151
|
gridTemplateRows: "1fr max-content",
|
|
153
|
-
flex: "1 1 100%",
|
|
154
152
|
overflowY: "auto",
|
|
155
153
|
paddingInline: odysseyDesignTokens.Spacing2
|
|
156
154
|
}));
|
|
157
|
-
const
|
|
155
|
+
const StyledSectionHeaderContainer = (0, _styled.default)("li", {
|
|
158
156
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "contrastFontColor"
|
|
159
157
|
})(({
|
|
160
158
|
contrastFontColor,
|
|
@@ -165,7 +163,7 @@ const SectionHeaderContainer = (0, _styled.default)("li", {
|
|
|
165
163
|
marginBlock: `${odysseyDesignTokens.Spacing3}`,
|
|
166
164
|
color: contrastFontColor || odysseyDesignTokens.HueNeutral600
|
|
167
165
|
}));
|
|
168
|
-
const
|
|
166
|
+
const StyledSideNavFooter = (0, _styled.default)("div", {
|
|
169
167
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "sideNavBackgroundColor"
|
|
170
168
|
})(({
|
|
171
169
|
odysseyDesignTokens,
|
|
@@ -178,7 +176,7 @@ const SideNavFooter = (0, _styled.default)("div", {
|
|
|
178
176
|
backgroundColor: sideNavBackgroundColor
|
|
179
177
|
})
|
|
180
178
|
}));
|
|
181
|
-
const
|
|
179
|
+
const StyledPersistentSideNavFooter = (0, _styled.default)(StyledSideNavFooter, {
|
|
182
180
|
shouldForwardProp: prop => prop !== "isContentScrollable" && prop !== "odysseyDesignTokens" && prop !== "sideNavBackgroundColor"
|
|
183
181
|
})(({
|
|
184
182
|
isContentScrollable,
|
|
@@ -188,7 +186,7 @@ const PersistentSideNavFooter = (0, _styled.default)(SideNavFooter, {
|
|
|
188
186
|
transitionProperty: "box-shadow",
|
|
189
187
|
transitionDuration: odysseyDesignTokens.TransitionDurationMain,
|
|
190
188
|
transitionTiming: odysseyDesignTokens.TransitionTimingMain,
|
|
191
|
-
zIndex:
|
|
189
|
+
zIndex: _uiShellSharedConstants.UI_SHELL_BASE_Z_INDEX,
|
|
192
190
|
...(isContentScrollable && {
|
|
193
191
|
boxShadow: "0px -8px 8px -8px rgba(39, 39, 39, 0.08)"
|
|
194
192
|
}),
|
|
@@ -196,7 +194,7 @@ const PersistentSideNavFooter = (0, _styled.default)(SideNavFooter, {
|
|
|
196
194
|
backgroundColor: sideNavBackgroundColor
|
|
197
195
|
})
|
|
198
196
|
}));
|
|
199
|
-
const
|
|
197
|
+
const StyledSideNavFooterItemsContainer = (0, _styled.default)("div", {
|
|
200
198
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "sideNavContrastColors"
|
|
201
199
|
})(({
|
|
202
200
|
odysseyDesignTokens,
|
|
@@ -227,7 +225,7 @@ const SideNavFooterItemsContainer = (0, _styled.default)("div", {
|
|
|
227
225
|
})
|
|
228
226
|
}
|
|
229
227
|
}));
|
|
230
|
-
const
|
|
228
|
+
const StyledLoadingItemContainer = (0, _styled.default)("div", {
|
|
231
229
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
232
230
|
})(({
|
|
233
231
|
odysseyDesignTokens
|
|
@@ -241,7 +239,7 @@ const LoadingItemContainer = (0, _styled.default)("div", {
|
|
|
241
239
|
const getHasScrollableContent = scrollableContainer => scrollableContainer.scrollHeight > scrollableContainer.clientHeight;
|
|
242
240
|
const LoadingItem = () => {
|
|
243
241
|
const odysseyDesignTokens = (0, _OdysseyDesignTokensContext.useOdysseyDesignTokens)();
|
|
244
|
-
return (0, _jsxRuntime.jsxs)(
|
|
242
|
+
return (0, _jsxRuntime.jsxs)(StyledLoadingItemContainer, {
|
|
245
243
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
246
244
|
children: [(0, _jsxRuntime.jsx)(_Skeleton2.default, {
|
|
247
245
|
variant: "circular",
|
|
@@ -262,13 +260,14 @@ const SideNav = ({
|
|
|
262
260
|
isCollapsed = false,
|
|
263
261
|
isCompact,
|
|
264
262
|
isLoading,
|
|
263
|
+
isObtrusive,
|
|
265
264
|
logoProps,
|
|
266
265
|
onCollapse,
|
|
267
266
|
onExpand,
|
|
268
267
|
onSort,
|
|
269
268
|
sideNavItems
|
|
270
269
|
}) => {
|
|
271
|
-
const [isSideNavCollapsed,
|
|
270
|
+
const [isSideNavCollapsed, setIsSideNavCollapsed] = (0, _react.useState)(isCollapsed);
|
|
272
271
|
const [hasContentScrolled, setHasContentScrolled] = (0, _react.useState)(false);
|
|
273
272
|
const [isContentScrollable, setIsContentScrollable] = (0, _react.useState)(false);
|
|
274
273
|
const [sideNavItemsList, updateSideNavItemsList] = (0, _react.useState)(sideNavItems);
|
|
@@ -282,7 +281,7 @@ const SideNav = ({
|
|
|
282
281
|
const intersectionObserverRef = (0, _react.useRef)(null);
|
|
283
282
|
const blankElement = (0, _react.useMemo)(() => (0, _jsxRuntime.jsx)("div", {}), []);
|
|
284
283
|
(0, _react.useEffect)(() => updateSideNavItemsList(sideNavItems), [sideNavItems]);
|
|
285
|
-
(0, _react.useEffect)(() =>
|
|
284
|
+
(0, _react.useEffect)(() => setIsSideNavCollapsed(isCollapsed), [isCollapsed]);
|
|
286
285
|
(0, _react.useEffect)(() => {
|
|
287
286
|
const updateIsContentScrollable = () => {
|
|
288
287
|
if (scrollableContentRef.current && scrollableContentRef.current.parentElement) {
|
|
@@ -367,7 +366,10 @@ const SideNav = ({
|
|
|
367
366
|
} : item;
|
|
368
367
|
});
|
|
369
368
|
updateSideNavItemsList(updatedSideNavItems);
|
|
370
|
-
|
|
369
|
+
if (isCollapsed || isObtrusive) {
|
|
370
|
+
uiShellContext?.closeSideNavMenu();
|
|
371
|
+
}
|
|
372
|
+
}, [isCollapsed, isObtrusive, sideNavItemsList, uiShellContext]);
|
|
371
373
|
const processedSideNavItems = (0, _react.useMemo)(() => {
|
|
372
374
|
return sideNavItemsList?.map(item => ({
|
|
373
375
|
...item,
|
|
@@ -395,19 +397,33 @@ const SideNav = ({
|
|
|
395
397
|
}));
|
|
396
398
|
}, [getRefIfThisIsFirstNodeWithIsSelected, sideNavItemsList, sideNavItemContentProviderValue, setSelectedItem]);
|
|
397
399
|
const sideNavExpandClickHandler = (0, _react.useCallback)(() => {
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
400
|
+
setIsSideNavCollapsed(isSideNavCollapsed => {
|
|
401
|
+
if (isSideNavCollapsed) {
|
|
402
|
+
onExpand?.();
|
|
403
|
+
} else {
|
|
404
|
+
onCollapse?.();
|
|
405
|
+
}
|
|
406
|
+
return !isSideNavCollapsed;
|
|
407
|
+
});
|
|
408
|
+
}, [onExpand, onCollapse]);
|
|
405
409
|
const sideNavExpandKeyHandler = (0, _react.useCallback)(event => {
|
|
406
410
|
if (event?.key === "Enter" || event?.code === "Space") {
|
|
407
411
|
event.preventDefault();
|
|
408
412
|
sideNavExpandClickHandler();
|
|
409
413
|
}
|
|
410
414
|
}, [sideNavExpandClickHandler]);
|
|
415
|
+
(0, _react.useEffect)(() => {
|
|
416
|
+
if (isCollapsed) {
|
|
417
|
+
const unsubscribe = uiShellContext?.subscribeToCloseSideNavMenu(() => {
|
|
418
|
+
onCollapse?.();
|
|
419
|
+
setIsSideNavCollapsed(true);
|
|
420
|
+
});
|
|
421
|
+
return () => {
|
|
422
|
+
unsubscribe?.();
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
return () => {};
|
|
426
|
+
}, [isCollapsed, onCollapse, uiShellContext]);
|
|
411
427
|
const setSortedItems = (0, _react.useCallback)((parentId, activeId, activeIndex, overIndex) => {
|
|
412
428
|
const sortedSideNavItems = sideNavItemsList.map(item => item.id === parentId && item.nestedNavItems ? {
|
|
413
429
|
...item,
|
|
@@ -416,7 +432,7 @@ const SideNav = ({
|
|
|
416
432
|
updateSideNavItemsList(sortedSideNavItems);
|
|
417
433
|
onSort?.(sortedSideNavItems, parentId, activeId, activeIndex, overIndex);
|
|
418
434
|
}, [onSort, sideNavItemsList]);
|
|
419
|
-
return (0, _jsxRuntime.jsxs)(
|
|
435
|
+
return (0, _jsxRuntime.jsxs)(StyledSideNavContainer, {
|
|
420
436
|
"aria-label": t("navigation.label"),
|
|
421
437
|
backgroundColor: uiShellContext?.sideNavBackgroundColor,
|
|
422
438
|
id: "side-nav-expandable",
|
|
@@ -436,19 +452,21 @@ const SideNav = ({
|
|
|
436
452
|
children: (0, _jsxRuntime.jsxs)(StyledOpacityTransitionContainer, {
|
|
437
453
|
isSideNavCollapsed: isSideNavCollapsed,
|
|
438
454
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
439
|
-
children: [(0, _jsxRuntime.jsx)(
|
|
455
|
+
children: [appName || isLoading || logoProps ? (0, _jsxRuntime.jsx)(StyledSideNavHeaderContainer, {
|
|
440
456
|
hasContentScrolled: hasContentScrolled,
|
|
441
457
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
442
458
|
borderColor: uiShellContext?.sideNavContrastColors?.fontColor,
|
|
443
|
-
children: (0, _jsxRuntime.jsx)(_SideNavHeader.SideNavHeader, {
|
|
459
|
+
children: isLoading && !appName && !logoProps ? (0, _jsxRuntime.jsx)(_SideNavHeader.SideNavHeader, {
|
|
460
|
+
isLoading: isLoading
|
|
461
|
+
}) : (0, _jsxRuntime.jsx)(_SideNavHeader.SideNavHeader, {
|
|
444
462
|
appName: appName,
|
|
445
463
|
isLoading: isLoading,
|
|
446
464
|
logoProps: logoProps
|
|
447
465
|
})
|
|
448
|
-
}), (0, _jsxRuntime.jsxs)(
|
|
466
|
+
}) : (0, _jsxRuntime.jsx)("div", {}), (0, _jsxRuntime.jsxs)(StyledSideNavScrollableContainer, {
|
|
449
467
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
450
468
|
"data-se": "scrollable-region",
|
|
451
|
-
children: [(0, _jsxRuntime.jsx)(
|
|
469
|
+
children: [(0, _jsxRuntime.jsx)(StyledSideNavListContainer, {
|
|
452
470
|
role: "none",
|
|
453
471
|
ref: scrollableContentRef,
|
|
454
472
|
children: isLoading ? Array(6).fill(null).map((_, index) => (0, _jsxRuntime.jsx)(LoadingItem, {}, index)) : processedSideNavItems?.map(item => {
|
|
@@ -466,7 +484,7 @@ const SideNav = ({
|
|
|
466
484
|
if (isSectionHeader) {
|
|
467
485
|
return (0, _jsxRuntime.jsx)(_reactErrorBoundary.ErrorBoundary, {
|
|
468
486
|
fallback: blankElement,
|
|
469
|
-
children: (0, _jsxRuntime.jsx)(
|
|
487
|
+
children: (0, _jsxRuntime.jsx)(StyledSectionHeaderContainer, {
|
|
470
488
|
contrastFontColor: uiShellContext?.sideNavContrastColors?.fontColor,
|
|
471
489
|
id: id,
|
|
472
490
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
@@ -491,7 +509,7 @@ const SideNav = ({
|
|
|
491
509
|
isExpanded: isExpanded,
|
|
492
510
|
startIcon: startIcon,
|
|
493
511
|
isDisabled: isDisabled,
|
|
494
|
-
children: (0, _jsxRuntime.jsx)(
|
|
512
|
+
children: (0, _jsxRuntime.jsx)(StyledSideNavListContainer, {
|
|
495
513
|
role: "none",
|
|
496
514
|
children: isSortable ? (0, _jsxRuntime.jsx)(_SortableList.SortableList, {
|
|
497
515
|
parentId: item.id,
|
|
@@ -525,10 +543,10 @@ const SideNav = ({
|
|
|
525
543
|
});
|
|
526
544
|
}
|
|
527
545
|
})
|
|
528
|
-
}), !isLoading && footerItems && !hasCustomFooter && (0, _jsxRuntime.jsx)(
|
|
546
|
+
}), !isLoading && footerItems && !hasCustomFooter && (0, _jsxRuntime.jsx)(StyledSideNavFooter, {
|
|
529
547
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
530
548
|
sideNavBackgroundColor: uiShellContext?.sideNavBackgroundColor,
|
|
531
|
-
children: (0, _jsxRuntime.jsx)(
|
|
549
|
+
children: (0, _jsxRuntime.jsx)(StyledSideNavFooterItemsContainer, {
|
|
532
550
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
533
551
|
sideNavContrastColors: uiShellContext?.sideNavContrastColors,
|
|
534
552
|
children: (0, _jsxRuntime.jsx)(_SideNavFooterContent.SideNavFooterContent, {
|
|
@@ -536,7 +554,7 @@ const SideNav = ({
|
|
|
536
554
|
})
|
|
537
555
|
})
|
|
538
556
|
})]
|
|
539
|
-
}), !isLoading && !footerItems && hasCustomFooter && (0, _jsxRuntime.jsx)(
|
|
557
|
+
}), !isLoading && !footerItems && hasCustomFooter && (0, _jsxRuntime.jsx)(StyledPersistentSideNavFooter, {
|
|
540
558
|
isContentScrollable: isContentScrollable,
|
|
541
559
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
542
560
|
sideNavBackgroundColor: uiShellContext?.sideNavBackgroundColor,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNav.cjs","names":["_styled","_interopRequireDefault","require","_react","_reactI18next","_sortable","_reactErrorBoundary","_NavAccordion","_OdysseyDesignTokensContext","_OdysseyThemeProvider","_SideNavHeader","_SideNavItemContent","_SideNavFooterContent","_SideNavItemContentContext","_SideNavToggleButton","_SortableList","_Typography","_UiShellProvider","_jsxRuntime","e","__esModule","default","DEFAULT_SIDE_NAV_WIDTH","exports","SIDENAV_COLLAPSE_ICON_POSITION","StyledCollapsibleContent","styled","shouldForwardProp","prop","odysseyDesignTokens","isSideNavCollapsed","position","display","gridTemplateColumns","height","transition","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","overflow","opacity","StyledOpacityTransitionContainer","gridTemplateRows","StyledSideNav","backgroundColor","isAppContentWhiteBackground","HueNeutralWhite","borderRightWidth","BorderWidthMain","borderRightStyle","BorderStyleMain","borderRightColor","HueNeutral100","HueNeutral200","content","right","top","transform","width","Spacing2","zIndex","Spacing3","SideNavHeaderContainer","borderColor","hasContentScrolled","flexShrink","borderBottomWidth","borderBottomStyle","borderBottomColor","concat","SideNavListContainer","padding","listStyle","listStyleType","margin","SideNavScrollableContainer","flex","overflowY","paddingInline","SectionHeaderContainer","contrastFontColor","paddingBlock","Spacing1","Spacing4","marginBlock","color","HueNeutral600","SideNavFooter","sideNavBackgroundColor","PersistentSideNavFooter","isContentScrollable","transitionProperty","transitionDuration","transitionTiming","boxShadow","SideNavFooterItemsContainer","sideNavContrastColors","flexWrap","alignItems","fontSize","TypographySizeOverline","fontColor","textDecoration","HueNeutral900","LoadingItemContainer","gap","getHasScrollableContent","scrollableContainer","scrollHeight","clientHeight","LoadingItem","useOdysseyDesignTokens","jsxs","children","jsx","_Skeleton2","variant","SideNav","appName","footerComponent","footerItems","hasCustomFooter","isCollapsible","isCollapsed","isCompact","isLoading","logoProps","onCollapse","onExpand","onSort","sideNavItems","setSideNavCollapsed","useState","setHasContentScrolled","setIsContentScrollable","sideNavItemsList","updateSideNavItemsList","uiShellContext","useUiShellContext","t","useTranslation","scrollableContentRef","useRef","resizeObserverRef","intersectionObserverRef","blankElement","useMemo","useEffect","updateIsContentScrollable","current","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","useCallback","itemId","undefined","sideNavItemContentProviderValue","depth","setSelectedItem","selectedItemId","updatedSideNavItems","map","item","childItem","processedSideNavItems","childNavItems","childProps","isDisabled","isSortable","navItem","SideNavItemContentContext","Provider","value","SideNavItemContent","scrollRef","onItemSelected","translate","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","key","code","preventDefault","setSortedItems","parentId","activeId","activeIndex","overIndex","sortedSideNavItems","arrayMove","appBackgroundColor","SideNavToggleButton","ariaControls","onClick","onKeyDown","OdysseyThemeProvider","SideNavHeader","role","ref","fill","_","index","label","isSectionHeader","startIcon","isDefaultExpanded","isExpanded","ErrorBoundary","fallback","Overline","component","StyledSideNavListItem","disabled","NavAccordion","SortableList","items","onChange","renderItem","sortableItem","Item","createElement","SideNavFooterContent","MemoizedSideNav","memo","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} 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 { SideNavToggleButton } 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\";\n\nexport const DEFAULT_SIDE_NAV_WIDTH = \"300px\";\n\n// The side nav collapse icon is placed absolutely from the top (Logo container + nav header height)\n// to align it in the middle of the nav header text\nexport const SIDENAV_COLLAPSE_ICON_POSITION = \"77px\";\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: \"inline-grid\",\n gridTemplateColumns: DEFAULT_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 gridTemplateColumns: 0,\n opacity: 0,\n }),\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: \"inline-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 opacity: 0,\n }),\n }),\n);\n\nconst StyledSideNav = styled(\"nav\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" &&\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isAppContentWhiteBackground\" &&\n prop !== \"isSideNavCollapsed\",\n})<{\n isAppContentWhiteBackground: boolean;\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n isSideNavCollapsed: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n backgroundColor,\n isAppContentWhiteBackground,\n isSideNavCollapsed,\n odysseyDesignTokens,\n }) => ({\n position: \"relative\",\n display: \"inline-block\",\n height: \"100%\",\n backgroundColor: backgroundColor || odysseyDesignTokens.HueNeutralWhite,\n\n ...(isAppContentWhiteBackground && {\n borderRightWidth: odysseyDesignTokens.BorderWidthMain,\n borderRightStyle:\n odysseyDesignTokens.BorderStyleMain as Property.BorderRightStyle,\n borderRightColor: odysseyDesignTokens.HueNeutral100,\n }),\n\n \"&::after\": {\n backgroundColor: odysseyDesignTokens.HueNeutral200,\n content: \"''\",\n height: \"100%\",\n opacity: 0,\n position: \"absolute\",\n right: 0,\n top: 0,\n transform: `translateX(0)`,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain}, transform ${odysseyDesignTokens.TransitionDurationMain}`,\n width: odysseyDesignTokens.Spacing2,\n zIndex: 2,\n },\n\n \"&:has([data-sidenav-toggle='true']:hover), &:has([data-sidenav-toggle='true']:focus-visible)\":\n {\n ...(isSideNavCollapsed && {\n \"&::after\": {\n opacity: 1,\n transform: `translateX(100%)`,\n },\n\n \"[data-sidenav-toggle='true']\": {\n transform: `translate3d(calc(100% + ${odysseyDesignTokens.Spacing3}), 0, 0)`,\n },\n }),\n },\n\n \"[data-sidenav-toggle='true']\": {\n position: \"absolute\",\n top: SIDENAV_COLLAPSE_ICON_POSITION,\n right: 0,\n transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,\n transform: `translate3d(100%, 0, 0)`,\n },\n }),\n);\n\nconst SideNavHeaderContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"borderColor\" &&\n prop !== \"hasContentScrolled\" &&\n prop !== \"odysseyDesignTokens\",\n})(\n ({\n borderColor,\n hasContentScrolled,\n odysseyDesignTokens,\n }: {\n borderColor: ContrastColors[\"fontColor\"];\n hasContentScrolled: boolean;\n odysseyDesignTokens: DesignTokens;\n }) => ({\n flexShrink: 0,\n // The bottom border should appear only if the scrollable region has been scrolled\n ...(hasContentScrolled && {\n borderBottomWidth: odysseyDesignTokens.BorderWidthMain,\n borderBottomStyle:\n odysseyDesignTokens.BorderStyleMain as Property.BorderBottomStyle,\n borderBottomColor: odysseyDesignTokens.HueNeutral100,\n\n ...(borderColor && {\n borderBottomColor: borderColor.concat(\"15\"),\n }),\n }),\n }),\n);\n\nconst SideNavListContainer = styled(\"ul\")(() => ({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n margin: 0,\n}));\n\nconst SideNavScrollableContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"grid\",\n gridTemplateRows: \"1fr max-content\",\n flex: \"1 1 100%\",\n overflowY: \"auto\",\n paddingInline: odysseyDesignTokens.Spacing2,\n}));\n\nconst SectionHeaderContainer = 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 paddingBlock: odysseyDesignTokens.Spacing1,\n paddingInline: odysseyDesignTokens.Spacing4,\n marginBlock: `${odysseyDesignTokens.Spacing3}`,\n color: contrastFontColor || odysseyDesignTokens.HueNeutral600,\n }),\n);\n\nconst SideNavFooter = 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 flexShrink: 0,\n padding: odysseyDesignTokens.Spacing4,\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n\n ...(sideNavBackgroundColor && {\n backgroundColor: sideNavBackgroundColor,\n }),\n }),\n);\n\nconst PersistentSideNavFooter = styled(SideNavFooter, {\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: 2,\n // The box shadow should appear above the footer only if the scrollable region has overflow\n ...(isContentScrollable && {\n boxShadow: \"0px -8px 8px -8px rgba(39, 39, 39, 0.08)\",\n }),\n ...(sideNavBackgroundColor && {\n backgroundColor: sideNavBackgroundColor,\n }),\n }),\n);\n\nconst SideNavFooterItemsContainer = 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 color: sideNavContrastColors?.fontColor,\n }),\n },\n\n \"&:hover\": {\n textDecoration: \"none\",\n color: odysseyDesignTokens.HueNeutral900,\n\n ...(sideNavContrastColors?.fontColor && {\n color: sideNavContrastColors?.fontColor,\n }),\n },\n\n ...(sideNavContrastColors?.fontColor && {\n color: sideNavContrastColors?.fontColor,\n }),\n },\n}));\n\nconst LoadingItemContainer = 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 <LoadingItemContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Skeleton\n variant=\"circular\"\n width={odysseyDesignTokens.Spacing4}\n height={odysseyDesignTokens.Spacing4}\n />\n <Skeleton variant=\"rounded\" width=\"100%\" />\n </LoadingItemContainer>\n );\n};\n\nconst SideNav = ({\n appName,\n footerComponent,\n footerItems,\n hasCustomFooter,\n isCollapsible,\n isCollapsed = false,\n isCompact,\n isLoading,\n logoProps,\n onCollapse,\n onExpand,\n onSort,\n sideNavItems,\n}: SideNavProps) => {\n const [isSideNavCollapsed, setSideNavCollapsed] = useState(isCollapsed);\n const [hasContentScrolled, setHasContentScrolled] = useState(false);\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const [sideNavItemsList, updateSideNavItemsList] = useState(sideNavItems);\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\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(() => setSideNavCollapsed(isCollapsed), [isCollapsed]);\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 [sideNavItemsList],\n );\n\n const processedSideNavItems = useMemo(() => {\n return sideNavItemsList?.map((item) => ({\n ...item,\n childNavItems: item.nestedNavItems?.map((childProps) => {\n return {\n id: childProps.id,\n isSelected: childProps.isSelected,\n isDisabled: childProps.isDisabled,\n isSortable: childProps.isSortable,\n navItem: (\n <SideNavItemContentContext.Provider\n value={{\n ...sideNavItemContentProviderValue,\n depth: 2,\n isSortable: item.isSortable,\n }}\n key={childProps.id}\n >\n <SideNavItemContent\n {...childProps}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(childProps.id)}\n onItemSelected={setSelectedItem}\n translate={childProps.translate}\n />\n </SideNavItemContentContext.Provider>\n ),\n };\n }),\n }));\n }, [\n getRefIfThisIsFirstNodeWithIsSelected,\n sideNavItemsList,\n sideNavItemContentProviderValue,\n setSelectedItem,\n ]);\n\n const sideNavExpandClickHandler = useCallback(() => {\n if (isSideNavCollapsed) {\n onExpand?.();\n } else {\n onCollapse?.();\n }\n\n setSideNavCollapsed(!isSideNavCollapsed);\n }, [isSideNavCollapsed, setSideNavCollapsed, onExpand, onCollapse]);\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 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 return (\n <StyledSideNav\n aria-label={t(\"navigation.label\")}\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n id=\"side-nav-expandable\"\n isAppContentWhiteBackground={\n uiShellContext?.appBackgroundColor ===\n odysseyDesignTokens.HueNeutralWhite\n }\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {isCollapsible && (\n <SideNavToggleButton\n ariaControls=\"side-nav-expandable\"\n isSideNavCollapsed={isSideNavCollapsed}\n onClick={sideNavExpandClickHandler}\n onKeyDown={sideNavExpandKeyHandler}\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 <SideNavHeaderContainer\n hasContentScrolled={hasContentScrolled}\n odysseyDesignTokens={odysseyDesignTokens}\n borderColor={uiShellContext?.sideNavContrastColors?.fontColor}\n >\n <SideNavHeader\n appName={appName}\n isLoading={isLoading}\n logoProps={logoProps}\n />\n </SideNavHeaderContainer>\n <SideNavScrollableContainer\n odysseyDesignTokens={odysseyDesignTokens}\n data-se=\"scrollable-region\"\n >\n <SideNavListContainer role=\"none\" ref={scrollableContentRef}>\n {isLoading\n ? Array(6)\n .fill(null)\n .map((_, index) => <LoadingItem key={index} />)\n : processedSideNavItems?.map((item) => {\n const {\n id,\n label,\n isSectionHeader,\n startIcon,\n childNavItems,\n isSortable,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n } = item;\n\n if (isSectionHeader) {\n return (\n <ErrorBoundary fallback={blankElement}>\n <SectionHeaderContainer\n contrastFontColor={\n uiShellContext?.sideNavContrastColors?.fontColor\n }\n id={id}\n key={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <Overline component=\"h3\">{label}</Overline>\n </SectionHeaderContainer>\n </ErrorBoundary>\n );\n } else if (childNavItems) {\n return (\n <ErrorBoundary fallback={blankElement}>\n <StyledSideNavListItem\n id={id}\n key={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 <SideNavListContainer role=\"none\">\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 </SideNavListContainer>\n </NavAccordion>\n </StyledSideNavListItem>\n </ErrorBoundary>\n );\n } else {\n return (\n <ErrorBoundary fallback={blankElement}>\n <SideNavItemContentContext.Provider\n key={item.id}\n value={sideNavItemContentProviderValue}\n >\n <SideNavItemContent\n {...item}\n key={item.id}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(\n item.id,\n )}\n startIcon={item.startIcon}\n />\n </SideNavItemContentContext.Provider>\n </ErrorBoundary>\n );\n }\n })}\n </SideNavListContainer>\n {!isLoading && footerItems && !hasCustomFooter && (\n <SideNavFooter\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavBackgroundColor={\n uiShellContext?.sideNavBackgroundColor\n }\n >\n <SideNavFooterItemsContainer\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={\n uiShellContext?.sideNavContrastColors\n }\n >\n <SideNavFooterContent footerItems={footerItems} />\n </SideNavFooterItemsContainer>\n </SideNavFooter>\n )}\n </SideNavScrollableContainer>\n {!isLoading && !footerItems && hasCustomFooter && (\n <PersistentSideNavFooter\n isContentScrollable={isContentScrollable}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavBackgroundColor={uiShellContext?.sideNavBackgroundColor}\n >\n {footerComponent}\n </PersistentSideNavFooter>\n )}\n </StyledOpacityTransitionContainer>\n </StyledCollapsibleContent>\n </OdysseyThemeProvider>\n </StyledSideNav>\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.cjs","names":["_styled","_interopRequireDefault","require","_react","_reactI18next","_sortable","_reactErrorBoundary","_NavAccordion","_OdysseyDesignTokensContext","_OdysseyThemeProvider","_SideNavHeader","_SideNavItemContent","_SideNavFooterContent","_SideNavItemContentContext","_SideNavToggleButton","_SortableList","_Typography","_UiShellProvider","_uiShellSharedConstants","_jsxRuntime","e","__esModule","default","StyledCollapsibleContent","styled","shouldForwardProp","prop","odysseyDesignTokens","isSideNavCollapsed","position","display","gridTemplateColumns","SIDE_NAV_WIDTH","height","transition","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","overflow","opacity","StyledOpacityTransitionContainer","gridTemplateRows","StyledSideNavContainer","backgroundColor","isAppContentWhiteBackground","HueNeutralWhite","width","borderRightWidth","BorderWidthMain","borderRightStyle","BorderStyleMain","borderRightColor","HueNeutral100","HueNeutral200","content","right","top","transform","Spacing2","zIndex","UI_SHELL_OVERLAY_Z_INDEX","Spacing3","SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION","StyledSideNavHeaderContainer","borderColor","hasContentScrolled","flexShrink","borderBottomWidth","borderBottomStyle","borderBottomColor","concat","StyledSideNavListContainer","padding","listStyle","listStyleType","margin","StyledSideNavScrollableContainer","overflowY","paddingInline","StyledSectionHeaderContainer","contrastFontColor","paddingBlock","Spacing1","Spacing4","marginBlock","color","HueNeutral600","StyledSideNavFooter","sideNavBackgroundColor","StyledPersistentSideNavFooter","isContentScrollable","transitionProperty","transitionDuration","transitionTiming","UI_SHELL_BASE_Z_INDEX","boxShadow","StyledSideNavFooterItemsContainer","sideNavContrastColors","flexWrap","alignItems","fontSize","TypographySizeOverline","fontColor","textDecoration","HueNeutral900","StyledLoadingItemContainer","gap","getHasScrollableContent","scrollableContainer","scrollHeight","clientHeight","LoadingItem","useOdysseyDesignTokens","jsxs","children","jsx","_Skeleton2","variant","SideNav","appName","footerComponent","footerItems","hasCustomFooter","isCollapsible","isCollapsed","isCompact","isLoading","isObtrusive","logoProps","onCollapse","onExpand","onSort","sideNavItems","setIsSideNavCollapsed","useState","setHasContentScrolled","setIsContentScrollable","sideNavItemsList","updateSideNavItemsList","uiShellContext","useUiShellContext","t","useTranslation","scrollableContentRef","useRef","resizeObserverRef","intersectionObserverRef","blankElement","useMemo","useEffect","updateIsContentScrollable","current","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","useCallback","itemId","undefined","sideNavItemContentProviderValue","depth","setSelectedItem","selectedItemId","updatedSideNavItems","map","item","childItem","closeSideNavMenu","processedSideNavItems","childNavItems","childProps","isDisabled","isSortable","navItem","SideNavItemContentContext","Provider","value","SideNavItemContent","scrollRef","onItemSelected","translate","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","key","code","preventDefault","unsubscribe","subscribeToCloseSideNavMenu","setSortedItems","parentId","activeId","activeIndex","overIndex","sortedSideNavItems","arrayMove","appBackgroundColor","SideNavToggleButton","ariaControls","onClick","onKeyDown","OdysseyThemeProvider","SideNavHeader","role","ref","fill","_","index","label","isSectionHeader","startIcon","isDefaultExpanded","isExpanded","ErrorBoundary","fallback","Overline","component","StyledSideNavListItem","disabled","NavAccordion","SortableList","items","onChange","renderItem","sortableItem","Item","createElement","SideNavFooterContent","MemoizedSideNav","exports","memo","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 { SideNavToggleButton } 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\";\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 } as 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 } as CSSProperties)),\n }),\n);\n\nconst StyledSideNavContainer = styled(\"nav\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" &&\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isAppContentWhiteBackground\" &&\n prop !== \"isSideNavCollapsed\",\n})<{\n isAppContentWhiteBackground: boolean;\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n isSideNavCollapsed: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n backgroundColor,\n isAppContentWhiteBackground,\n isSideNavCollapsed,\n odysseyDesignTokens,\n }) => ({\n backgroundColor: backgroundColor || odysseyDesignTokens.HueNeutralWhite,\n height: \"100%\",\n position: \"relative\",\n width: \"fit-content\",\n\n ...(isAppContentWhiteBackground &&\n ({\n borderRightWidth: odysseyDesignTokens.BorderWidthMain,\n borderRightStyle:\n odysseyDesignTokens.BorderStyleMain as Property.BorderRightStyle,\n borderRightColor: odysseyDesignTokens.HueNeutral100,\n } as CSSProperties)),\n\n \"&::after\": {\n backgroundColor: odysseyDesignTokens.HueNeutral200,\n content: \"''\",\n height: \"100%\",\n opacity: 0,\n position: \"absolute\",\n right: 0,\n top: 0,\n transform: `translateX(0)`,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain}, transform ${odysseyDesignTokens.TransitionDurationMain}`,\n width: odysseyDesignTokens.Spacing2,\n zIndex: UI_SHELL_OVERLAY_Z_INDEX,\n },\n\n \"&:has([data-sidenav-toggle='true']:hover), &:has([data-sidenav-toggle='true']:focus-visible)\":\n {\n ...(isSideNavCollapsed &&\n ({\n \"&::after\": {\n opacity: 1,\n transform: `translateX(100%)`,\n } as CSSProperties,\n\n \"[data-sidenav-toggle='true']\": {\n transform: `translate3d(calc(100% + ${odysseyDesignTokens.Spacing3}), 0, 0)`,\n } as CSSProperties,\n } as CSSProperties)),\n },\n\n \"[data-sidenav-toggle='true']\": {\n position: \"absolute\",\n top: SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n right: 0,\n transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,\n transform: `translate3d(100%, 0, 0)`,\n },\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 } as CSSProperties)),\n } as CSSProperties)),\n}));\n\nconst StyledSideNavListContainer = styled(\"ul\")(() => ({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n margin: 0,\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 paddingBlock: odysseyDesignTokens.Spacing1,\n paddingInline: odysseyDesignTokens.Spacing4,\n marginBlock: `${odysseyDesignTokens.Spacing3}`,\n color: contrastFontColor || odysseyDesignTokens.HueNeutral600,\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 flexShrink: 0,\n padding: odysseyDesignTokens.Spacing4,\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } as 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 } as CSSProperties)),\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } as 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 } as CSSProperties)),\n },\n\n \"&:hover\": {\n textDecoration: \"none\",\n color: odysseyDesignTokens.HueNeutral900,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } as CSSProperties)),\n },\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } as 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 isCollapsible,\n isCollapsed = false,\n isCompact,\n isLoading,\n isObtrusive,\n logoProps,\n onCollapse,\n onExpand,\n onSort,\n sideNavItems,\n}: SideNavProps) => {\n const [isSideNavCollapsed, setIsSideNavCollapsed] = useState(isCollapsed);\n const [hasContentScrolled, setHasContentScrolled] = useState(false);\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const [sideNavItemsList, updateSideNavItemsList] = useState(sideNavItems);\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\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(() => setIsSideNavCollapsed(isCollapsed), [isCollapsed]);\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 uiShellContext?.closeSideNavMenu();\n }\n },\n [isCollapsed, isObtrusive, sideNavItemsList, uiShellContext],\n );\n\n const processedSideNavItems = useMemo(() => {\n return sideNavItemsList?.map((item) => ({\n ...item,\n childNavItems: item.nestedNavItems?.map((childProps) => {\n return {\n id: childProps.id,\n isSelected: childProps.isSelected,\n isDisabled: childProps.isDisabled,\n isSortable: childProps.isSortable,\n navItem: (\n <SideNavItemContentContext.Provider\n value={{\n ...sideNavItemContentProviderValue,\n depth: 2,\n isSortable: item.isSortable,\n }}\n key={childProps.id}\n >\n <SideNavItemContent\n {...childProps}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(childProps.id)}\n onItemSelected={setSelectedItem}\n translate={childProps.translate}\n />\n </SideNavItemContentContext.Provider>\n ),\n };\n }),\n }));\n }, [\n getRefIfThisIsFirstNodeWithIsSelected,\n sideNavItemsList,\n sideNavItemContentProviderValue,\n setSelectedItem,\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 }, [onExpand, onCollapse]);\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 if (isCollapsed) {\n const unsubscribe = uiShellContext?.subscribeToCloseSideNavMenu(() => {\n onCollapse?.();\n setIsSideNavCollapsed(true);\n });\n\n return () => {\n unsubscribe?.();\n };\n }\n\n return () => {};\n }, [isCollapsed, onCollapse, 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 return (\n <StyledSideNavContainer\n aria-label={t(\"navigation.label\")}\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n id=\"side-nav-expandable\"\n isAppContentWhiteBackground={\n uiShellContext?.appBackgroundColor ===\n odysseyDesignTokens.HueNeutralWhite\n }\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {isCollapsible && (\n <SideNavToggleButton\n ariaControls=\"side-nav-expandable\"\n isSideNavCollapsed={isSideNavCollapsed}\n onClick={sideNavExpandClickHandler}\n onKeyDown={sideNavExpandKeyHandler}\n />\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 id,\n label,\n isSectionHeader,\n startIcon,\n childNavItems,\n isSortable,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n } = item;\n\n if (isSectionHeader) {\n return (\n <ErrorBoundary fallback={blankElement}>\n <StyledSectionHeaderContainer\n contrastFontColor={\n uiShellContext?.sideNavContrastColors?.fontColor\n }\n id={id}\n key={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <Overline component=\"h3\">{label}</Overline>\n </StyledSectionHeaderContainer>\n </ErrorBoundary>\n );\n } else if (childNavItems) {\n return (\n <ErrorBoundary fallback={blankElement}>\n <StyledSideNavListItem\n id={id}\n key={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 <StyledSideNavListContainer role=\"none\">\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 </NavAccordion>\n </StyledSideNavListItem>\n </ErrorBoundary>\n );\n } else {\n return (\n <ErrorBoundary fallback={blankElement}>\n <SideNavItemContentContext.Provider\n key={item.id}\n value={sideNavItemContentProviderValue}\n >\n <SideNavItemContent\n {...item}\n key={item.id}\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":[]}
|
|
@@ -10,8 +10,8 @@ var _react = require("react");
|
|
|
10
10
|
var _OdysseyDesignTokensContext = require("../../OdysseyDesignTokensContext.cjs");
|
|
11
11
|
var _SideNavLogo = require("./SideNavLogo.cjs");
|
|
12
12
|
var _Typography = require("../../Typography.cjs");
|
|
13
|
-
var _index = require("../TopNav/index.cjs");
|
|
14
13
|
var _UiShellProvider = require("../../ui-shell/UiShellProvider.cjs");
|
|
14
|
+
var _uiShellSharedConstants = require("../uiShellSharedConstants.cjs");
|
|
15
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
16
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
17
|
/*!
|
|
@@ -30,20 +30,21 @@ const SideNavHeaderContainer = (0, _styled.default)("div")({
|
|
|
30
30
|
position: "relative",
|
|
31
31
|
display: "flex",
|
|
32
32
|
flexDirection: "column",
|
|
33
|
-
zIndex:
|
|
33
|
+
zIndex: _uiShellSharedConstants.UI_SHELL_BASE_Z_INDEX
|
|
34
34
|
});
|
|
35
35
|
const SideNavLogoContainer = (0, _styled.default)("div", {
|
|
36
|
-
shouldForwardProp: prop => prop !== "
|
|
36
|
+
shouldForwardProp: prop => prop !== "headerBackgroundColor" && prop !== "isSameBackgroundAsMain" && prop !== "odysseyDesignTokens"
|
|
37
37
|
})(({
|
|
38
|
+
headerBackgroundColor,
|
|
38
39
|
isSameBackgroundAsMain,
|
|
39
40
|
odysseyDesignTokens
|
|
40
41
|
}) => ({
|
|
41
42
|
display: "flex",
|
|
42
43
|
alignItems: "center",
|
|
43
|
-
height:
|
|
44
|
+
height: _uiShellSharedConstants.TOP_NAV_HEIGHT,
|
|
44
45
|
paddingBlock: odysseyDesignTokens.Spacing4,
|
|
45
46
|
paddingInline: odysseyDesignTokens.Spacing5,
|
|
46
|
-
backgroundColor: isSameBackgroundAsMain ?
|
|
47
|
+
backgroundColor: isSameBackgroundAsMain ? headerBackgroundColor : odysseyDesignTokens.HueNeutralWhite,
|
|
47
48
|
"svg, img": {
|
|
48
49
|
maxHeight: "100%",
|
|
49
50
|
width: "auto",
|
|
@@ -78,7 +79,9 @@ const SideNavHeader = ({
|
|
|
78
79
|
return (0, _jsxRuntime.jsxs)(SideNavHeaderContainer, {
|
|
79
80
|
children: [(0, _jsxRuntime.jsx)(SideNavLogoContainer, {
|
|
80
81
|
isSameBackgroundAsMain: logoProps?.isSameBackgroundAsMain,
|
|
82
|
+
headerBackgroundColor: uiShellContext?.sideNavBackgroundColor,
|
|
81
83
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
84
|
+
"data-se": "sidenav-header-logo-container",
|
|
82
85
|
children: isLoading ? (0, _jsxRuntime.jsx)(_Skeleton2.default, {
|
|
83
86
|
variant: "rounded",
|
|
84
87
|
height: 24,
|