@okta/odyssey-contribution-tooling 1.47.1 → 1.49.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/CHANGELOG.md +5 -1
- package/dist/assets/{Accordion-BUumLSm9.js → Accordion-BNJn0pfW.js} +1 -1
- package/dist/assets/{Accordion.stories-CaMgAnYN.js → Accordion.stories-DZIjfE-o.js} +3 -3
- package/dist/assets/{AccordionSummary-0jrOTJTD.js → AccordionSummary-BjqT0nEb.js} +1 -1
- package/dist/assets/{AlertTitle-BbBpDTwd.js → AlertTitle-q6ff_Zkl.js} +1 -1
- package/dist/assets/{AppSwitcher-B7j0xavZ.js → AppSwitcher-cyyPttJv.js} +1 -1
- package/dist/assets/{AppSwitcher.stories-BqeExztr.js → AppSwitcher.stories--8DVDaS1.js} +3 -3
- package/dist/assets/AppTile _labs_.stories-D9W_XD90.js +136 -0
- package/dist/assets/{ArrowDropDown-LYMnJjPD.js → ArrowDropDown-DdemyKZU.js} +1 -1
- package/dist/assets/{ArrowRight-Bi2Pswgc.js → ArrowRight-ChWYjNny.js} +1 -1
- package/dist/assets/{Autocomplete-DD8JT6Eb.js → Autocomplete-Cpi_kUVA.js} +1 -1
- package/dist/assets/Autocomplete-CxtGbb8j.js +1 -0
- package/dist/assets/{Autocomplete.stories-DjkuAafz.js → Autocomplete.stories-CQuaZrwN.js} +3 -3
- package/dist/assets/{Badge-C6SBtLt7.js → Badge-BO7bTIEa.js} +1 -1
- package/dist/assets/{Banner-itG3HAaL.js → Banner-K7AM0SJj.js} +1 -1
- package/dist/assets/{Banner.stories-o2KYQ49p.js → Banner.stories-BRQINNIu.js} +3 -3
- package/dist/assets/{BaseButton-COF38VLB.js → BaseButton-DYZHKnV3.js} +1 -1
- package/dist/assets/{BaseMenuButton-pigMBOEp.js → BaseMenuButton-BIietjUB.js} +1 -1
- package/dist/assets/{Box-BGpAHVQV.js → Box-1mvP3NLW.js} +1 -1
- package/dist/assets/Box-BcMTQ_R2.js +1 -0
- package/dist/assets/Box-DXoV5_ch.js +11 -0
- package/dist/assets/{Box.stories-Bl1v2MtQ.js → Box.stories-C8EeKXhb.js} +1 -1
- package/dist/assets/Breadcrumbs-Bp-jt6t5.js +6 -0
- package/dist/assets/Breadcrumbs.stories-B_3snTWA.js +79 -0
- package/dist/assets/{Bug-CF8uTmAI.js → Bug-CQIUmZ-N.js} +1 -1
- package/dist/assets/{Button-DGmXZ3jw.js → Button-BEA5U6Tg.js} +1 -1
- package/dist/assets/{Button-CdPi1pZc.js → Button-BzIwUmSM.js} +1 -1
- package/dist/assets/{Button.stories-DDHyMQ1_.js → Button.stories-S7v-663i.js} +2 -2
- package/dist/assets/ButtonBase-BNqa2TMD.js +74 -0
- package/dist/assets/{Calendar-DjJqG0qe.js → Calendar-_GPHtaRa.js} +1 -1
- package/dist/assets/{Callout-DyDdgWdc.js → Callout-FZxPpigF.js} +1 -1
- package/dist/assets/Callout.stories-CODSBn6K.js +105 -0
- package/dist/assets/Card-C0RGIer3.js +1 -0
- package/dist/assets/Card-CBiqCoFv.js +8 -0
- package/dist/assets/{Card.stories-B_l3D6T0.js → Card.stories-Cp5cSsvN.js} +1 -1
- package/dist/assets/{CardActionArea-BTMPt80M.js → CardActionArea-DWrXZntI.js} +1 -1
- package/dist/assets/CardActions-BQdq7Bn0.js +1 -0
- package/dist/assets/Checkbox-DPv3Q9UW.js +1 -0
- package/dist/assets/{Checkbox-BVTNXOF7.js → Checkbox-vZwuXtzm.js} +1 -1
- package/dist/assets/Checkbox.stories-9dZS0JMC.js +96 -0
- package/dist/assets/{CheckboxGroup-D-ykWUnV.js → CheckboxGroup-Be66QML5.js} +1 -1
- package/dist/assets/CheckboxGroup.stories-Cx6CsE7C.js +92 -0
- package/dist/assets/{ChevronRight-DkL07pJu.js → ChevronRight-C12ToI7Y.js} +1 -1
- package/dist/assets/{ChevronUp-DBzjQ0Vq.js → ChevronUp-CfT7Bz8X.js} +1 -1
- package/dist/assets/Chip-CXnMieIl.js +1 -0
- package/dist/assets/{CircularProgress-Dfpt5LAz.js → CircularProgress-DPxwxglU.js} +1 -1
- package/dist/assets/{CircularProgress-B5_VbcVt.js → CircularProgress-HbIdZLBB.js} +4 -4
- package/dist/assets/{CircularProgress.stories-Daf0R9vA.js → CircularProgress.stories-BCClfpJw.js} +1 -1
- package/dist/assets/{Clock-Cs7_WjUp.js → Clock-17ua7UAW.js} +1 -1
- package/dist/assets/{Close-ATS01D1v.js → Close-OXBt1nIe.js} +1 -1
- package/dist/assets/{Code Styling Guidelines-KEouIK7B.js → Code Styling Guidelines-CVbofGQK.js } +1 -1
- package/dist/assets/{Collapse-COoe3Qtd.js → Collapse-DfdoVIdP.js} +1 -1
- package/dist/assets/{Color-YHDXOIA2-DQdRRXzu.js → Color-YHDXOIA2-DT4T6TnK.js} +1 -1
- package/dist/assets/{CssBaseline-D-vAj66q.js → CssBaseline-DpDXOHEK.js} +1 -1
- package/dist/assets/{CssBaseline.stories-BOhXBF5h.js → CssBaseline.stories-DeSEyTd-.js} +1 -1
- package/dist/assets/{Custom Theming-DmPtfg8b.js → Custom Theming-CmbOHtP1.js } +5 -6
- package/dist/assets/Custom Theming.stories-CxVTbjdx.js +95 -0
- package/dist/assets/{DataFilters _labs_-blW_3eFm.js → DataFilters _labs_-DvUVhC-g.js } +2 -2
- package/dist/assets/{DataFilters _labs_.stories-D2qt9BDz.js → DataFilters _labs_.stories-Ca9tvzkv.js } +1 -1
- package/dist/assets/{DataFilters-49CUFFBF.js → DataFilters-BnT_U3-o.js} +1 -1
- package/dist/assets/DataTable _labs_-DL8Jc4Hl.js +41 -0
- package/dist/assets/{DataTable _labs_.stories-DrwT0H9g.js → DataTable _labs_.stories-C9Tljg4U.js } +2 -2
- package/dist/assets/{DataTable-Ka-SCcOh.js → DataTable-S0xhd1LQ.js} +2 -2
- package/dist/assets/{DataTable-DeujVhYp.js → DataTable-XayRBHyP.js} +3 -3
- package/dist/assets/{DataTable.stories-CaSfkouk.js → DataTable.stories-tcZyd507.js} +1 -1
- package/dist/assets/{DataView _labs_-CqZlEyu1.js → DataView _labs_-oQPoSKgb.js } +2 -2
- package/dist/assets/{DataView _labs_.stories-CXjSXDeF.js → DataView _labs_.stories-C_xQt04_.js } +1 -1
- package/dist/assets/{DataView-CYkwjPzk.js → DataView-C5rMFmwA.js} +7 -7
- package/dist/assets/{DataView.stories-DT0ROHOs.js → DataView.stories-oJRHGPAN.js} +148 -65
- package/dist/assets/DatePicker-BwDkz3WT.js +1 -0
- package/dist/assets/{DatePicker-C9sNy4fj.js → DatePicker-CaivHe9y.js} +2 -2
- package/dist/assets/DatePicker.stories-DbwO66Pf.js +133 -0
- package/dist/assets/DateTimePicker-B7a9bgL6.js +1 -0
- package/dist/assets/{DateTimePicker.stories-B2SaI9OL.js → DateTimePicker.stories-DL2oaP7L.js} +9 -9
- package/dist/assets/Design Tokens-CLnoritM.js +4 -0
- package/dist/assets/Dialog-CR4TUjlJ.js +1 -0
- package/dist/assets/Dialog.stories-2q37jV4r.js +201 -0
- package/dist/assets/{DialogContent-_oGbCJT8.js → DialogContent-Cwn-I-C_.js} +1 -1
- package/dist/assets/DialogTitle-C-K7jEio.js +1 -0
- package/dist/assets/{Divider-DsFAYUeD.js → Divider-Ln3VaO81.js} +1 -1
- package/dist/assets/{DocsRenderer-CFRXHY34-IKzmQUB4.js → DocsRenderer-CFRXHY34-CCeAz_jE.js} +1 -1
- package/dist/assets/{Documentation-BrTRsPbe.js → Documentation-DF3oo39e.js} +1 -1
- package/dist/assets/{Download-CnpAgqy2.js → Download-Zlhupksh.js} +1 -1
- package/dist/assets/Drawer-CXQ3piJR.js +33 -0
- package/dist/assets/Drawer.stories-Dlkg74m1.js +95 -0
- package/dist/assets/{EmptyState-9pxLjmqH.js → EmptyState-CpBEzmap.js} +2 -2
- package/dist/assets/EmptyState.stories-Dl57LvdY.js +11 -0
- package/dist/assets/ExampleButton.stories-Bbj5W6A-.js +320 -0
- package/dist/assets/{Extending Translations-DW0F3Xxk.js → Extending Translations-D38KR8Kn.js } +1 -1
- package/dist/assets/{ExternalLink-BZ-Yczsk.js → ExternalLink-D0l1c5Cz.js} +1 -1
- package/dist/assets/Fade-dUgBN8rJ.js +1 -0
- package/dist/assets/{Field-lyECanzU.js → Field-DH3L8v09.js} +2 -2
- package/dist/assets/{FieldHint-C3tXb7u4.js → FieldHint-B3Jif_Up.js} +1 -1
- package/dist/assets/{Fieldset-C2nSfkpl.js → Fieldset-D7_59eeI.js} +2 -2
- package/dist/assets/Fieldset.stories-B-NXKKP-.js +15 -0
- package/dist/assets/{FileUploader.stories-C8jSeElw.js → FileUploader.stories-C9ua336t.js} +8 -8
- package/dist/assets/{Filter-Dx8z3DNi.js → Filter-DsDJ7si-.js} +1 -1
- package/dist/assets/{Folder-BfxqGqvt.js → Folder-e-po0U54.js} +1 -1
- package/dist/assets/{Form Field Accessibility-Bk715sxq.js → Form Field Accessibility-D5GmQTjo.js } +1 -1
- package/dist/assets/{Form-BFqw21k4.js → Form-iTx8DKdm.js} +1 -1
- package/dist/assets/Form.stories-CKX8F-HV.js +69 -0
- package/dist/assets/{FormControlLabel-BKhSSavj.js → FormControlLabel-0BBemR80.js} +1 -1
- package/dist/assets/{FormGroup-Cuk9jkbL.js → FormGroup-HFkGZ983.js} +1 -1
- package/dist/assets/{FormHelperText-qF3DX-zz.js → FormHelperText-CsNAE1E3.js} +1 -1
- package/dist/assets/{FormLabel-BLj3hKkg.js → FormLabel-CiGre9wK.js} +1 -1
- package/dist/assets/{FullScreenOverlay-D_QtB3Yt.js → FullScreenOverlay-BTMDlJhE.js} +1 -1
- package/dist/assets/{Generating Icons-DU5C85Nu.js → Generating Icons-B_lqn7WI.js } +1 -1
- package/dist/assets/{Globe-Brrqdlv8.js → Globe-B83Xmd05.js} +1 -1
- package/dist/assets/{Grid-CZMVE6qU.js → Grid-EpV3TL4a.js} +1 -1
- package/dist/assets/{Group-B6q-i_C2.js → Group-mTVRC79V.js} +1 -1
- package/dist/assets/GroupPicker _labs_.stories-rRod3ZIj.js +33 -0
- package/dist/assets/Grow-C8kUeGCY.js +1 -0
- package/dist/assets/{Hide-DlEWsxsn.js → Hide-TKfOHglI.js} +1 -1
- package/dist/assets/Hint-DoJneNg9.js +11 -0
- package/dist/assets/{Home-BiP4Mg1h.js → Home-la7Lmt_L.js} +1 -1
- package/dist/assets/Icon _icons_.stories-BmisOf4s.js +16 -0
- package/dist/assets/{IconButton-OY9nJWpv.js → IconButton-5qShmnSr.js} +1 -1
- package/dist/assets/IconWithTooltip _icons_.stories-C86MVO5n.js +19 -0
- package/dist/assets/{InformationCircle-CE8ruoYu.js → InformationCircle-a2jMUKfL.js} +1 -1
- package/dist/assets/{InputAdornment-D4SsBOPe.js → InputAdornment-CdR3XT6f.js} +1 -1
- package/dist/assets/{InputBase-DSZ9ZgyW.js → InputBase-DeB4_faH.js} +2 -2
- package/dist/assets/{Installing odyssey-react-mui-XtugTFlz.js → Installing odyssey-react-mui-BlZZYALn.js } +24 -3
- package/dist/assets/{Introduction-Bt8Bd0mz.js → Introduction-D6814AO1.js} +6 -6
- package/dist/assets/{Layout-BduWITqf.js → Layout-DGOs1275.js} +1 -1
- package/dist/assets/{Layout.stories-BaeIV62G.js → Layout.stories-DE3l510g.js} +2 -2
- package/dist/assets/{Legacy Migrations-DZ-fx_Jl.js → Legacy Migrations-B9gOEz-l.js } +1 -1
- package/dist/assets/{Link-DI6v1ROk.js → Link-BDoLypER.js} +1 -1
- package/dist/assets/{Link-BnBknBcu.js → Link-DNIf0luC.js} +1 -1
- package/dist/assets/Link-dX7EI1Ct.js +11 -0
- package/dist/assets/{Link.stories-BY0xRfX5.js → Link.stories-DnkjU-5y.js} +1 -1
- package/dist/assets/{List-Be7fhh4_.js → List-CmjR1pNu.js} +1 -1
- package/dist/assets/{List-DsAZFSEg.js → List-UlX1tusJ.js} +1 -1
- package/dist/assets/{ListItem-C8ebNPnP.js → ListItem-C0ExFtXb.js} +1 -1
- package/dist/assets/{ListSubheader-Bwc0JItn.js → ListSubheader-CQJAAOsd.js} +1 -1
- package/dist/assets/Menu-K9lpVvDG.js +1 -0
- package/dist/assets/{MenuButton-Dr4RJoKG.js → MenuButton-B3T7c15t.js} +1 -1
- package/dist/assets/MenuButton-hdFGv_9Z.js +9 -0
- package/dist/assets/{MenuButton.stories-B5Ron3HG.js → MenuButton.stories-BRHUGqba.js} +1 -1
- package/dist/assets/{MenuItem-n-UKDxiu.js → MenuItem-CmSG6PNu.js} +1 -1
- package/dist/assets/{MenuItem-B0_vCuIq.js → MenuItem-vhp8G-Nb.js} +1 -1
- package/dist/assets/MenuItem.stories-dOOOz3KO.js +29 -0
- package/dist/assets/{MenuList-CW8ri5AI.js → MenuList-BMOesnfs.js} +1 -1
- package/dist/assets/Modal-CSDyCVCf.js +1 -0
- package/dist/assets/{More-D1qrtSvt.js → More-DLQ2RjWn.js} +1 -1
- package/dist/assets/NativeSelect.stories-DHgms1GM.js +173 -0
- package/dist/assets/{OdysseyProvider-2xjMTEu6.js → OdysseyProvider-qIn9QVYS.js} +5 -5
- package/dist/assets/{OdysseyStorybookThemeDecorator-BRjYVaUu.js → OdysseyStorybookThemeDecorator-BuDiOG2V.js} +1 -1
- package/dist/assets/{OdysseyThemeProvider-BBwjgzn2.js → OdysseyThemeProvider-Bh0Bu-2o.js} +1 -1
- package/dist/assets/{PageHeader.stories-q0-kxFNT.js → PageHeader.stories-MDEEjM1g.js} +2 -2
- package/dist/assets/PageHeader.stories-eACdVWYK.js +57 -0
- package/dist/assets/PageTemplate _labs_-BuvgCua7.js +8 -0
- package/dist/assets/{PageTemplate _labs_.stories-DtJtMC5B.js → PageTemplate _labs_.stories-C8RdfTqi.js } +1 -1
- package/dist/assets/{PageTemplate-mNUP99LO.js → PageTemplate-D-EQlTUx.js} +2 -2
- package/dist/assets/PageTemplate.stories-BzgC-WCT.js +197 -0
- package/dist/assets/{PaginatedTable _labs_.stories--9YveFu7.js → PaginatedTable _labs_.stories-CvpuSFlt.js } +3 -3
- package/dist/assets/{Pagination-D6myvUfo.js → Pagination-CB1wBW8Q.js} +2 -2
- package/dist/assets/Pagination.stories-RoH8O-RA.js +17 -0
- package/dist/assets/{Paper-XsV8SWR9.js → Paper-D-_O-EjU.js} +1 -1
- package/dist/assets/PasswordField.stories-BUOy4gYe.js +129 -0
- package/dist/assets/Picker _labs_.stories-BIZmrH82.js +18 -0
- package/dist/assets/{PickerWithOptionAdornment _labs_.stories-DZ_mcN9y.js → PickerWithOptionAdornment _labs_.stories-CQYX6Af7.js } +3 -3
- package/dist/assets/Popper-BARIxJrI.js +1 -0
- package/dist/assets/Portal-C6D59xAE.js +1 -0
- package/dist/assets/ProgressBar.stories-Dyp9UXSp.js +311 -0
- package/dist/assets/{Radio-BimAm2in.js → Radio-B4gVvwps.js} +1 -1
- package/dist/assets/Radio-BdNnpooK.js +1 -0
- package/dist/assets/{Radio.stories-BIH7UBMO.js → Radio.stories-BtiaRnXY.js} +3 -3
- package/dist/assets/{RadioGroup-DhVJQTpS.js → RadioGroup-BYJZ378_.js} +1 -1
- package/dist/assets/RadioGroup-CtUWSbQc.js +1 -0
- package/dist/assets/RadioGroup-D1k5iqEQ.js +10 -0
- package/dist/assets/RadioGroup.stories-kfMrpCQ4.js +138 -0
- package/dist/assets/{Refresh-GVzSl4pN.js → Refresh-DexPEklu.js} +1 -1
- package/dist/assets/ResourceAccessPolicyComponentsStorybookThemeDecorator-Bo_QNpfC.js +212 -0
- package/dist/assets/{Right-to-Left (RTL)-DyJ58shp.js → Right-to-Left (RTL)-BHFSR1q8.js } +1 -1
- package/dist/assets/{ScreenReaderText-CM78bF1y.js → ScreenReaderText-CebALBsG.js} +1 -1
- package/dist/assets/{ScreenReaderText-CqMaDm6f.js → ScreenReaderText-DkVEZTIb.js} +2 -2
- package/dist/assets/ScreenReaderText.stories-BuS5WxvE.js +8 -0
- package/dist/assets/{Search-CkfJXFe5.js → Search-C5TVrLyE.js} +1 -1
- package/dist/assets/{SearchDropdown _labs_.stories-BQPhsSku.js → SearchDropdown _labs_.stories-Bq7Qapoa.js } +3 -3
- package/dist/assets/{SearchField-CYM6nbh5.js → SearchField-BdnOrhVM.js} +1 -1
- package/dist/assets/SearchField.stories-IB3f7QOK.js +37 -0
- package/dist/assets/Select-DZTigpTO.js +1 -0
- package/dist/assets/{Select-DJ071lNE.js → Select-KZvejALm.js} +2 -2
- package/dist/assets/{Select.stories-Dv7mWYvh.js → Select.stories-5trfU4Ma.js} +2 -2
- package/dist/assets/{Server-DjXPiVgb.js → Server-Ch5aeRtt.js} +1 -1
- package/dist/assets/{Settings-CjXK8-N1.js → Settings-2rTKyez8.js} +1 -1
- package/dist/assets/{Setup-C5eWg4Hp.js → Setup-BDM9nDVO.js} +1 -1
- package/dist/assets/{Shadow DOM-CwtnF89G.js → Shadow DOM-DHECKIzr.js } +1 -1
- package/dist/assets/{Show-BmUFIvXd.js → Show-BnmQFsN6.js} +1 -1
- package/dist/assets/{SideNav-CJ4qafJJ.js → SideNav-5pMdKSEl.js} +13 -13
- package/dist/assets/{SideNav-Bks9RS2j.js → SideNav-bhdOFKbL.js} +3 -3
- package/dist/assets/{SideNav.stories-C1fpy9wN.js → SideNav.stories-ciX1pArE.js} +1 -1
- package/dist/assets/{Skeleton-dfR0DjWP.js → Skeleton-BPjIT6NG.js} +5 -5
- package/dist/assets/Snackbar-BM0ZOC4Y.js +1 -0
- package/dist/assets/{Stack-DKhviX3e.js → Stack-B7OGvu7C.js} +1 -1
- package/dist/assets/{Stack.stories-BDHo9eFa.js → Stack.stories-CYylNLHT.js} +1 -1
- package/dist/assets/{StaticTable _labs_.stories-Dxpy5sLd.js → StaticTable _labs_.stories-ChL0Cwn4.js } +3 -3
- package/dist/assets/{Status-BpzpxYZ-.js → Status-BlOUycBm.js} +1 -1
- package/dist/assets/{Status.stories-DLINjRQE.js → Status.stories-Dv4b1Z5X.js} +2 -2
- package/dist/assets/{Surface-3Y97A1O8.js → Surface-DTngmQRF.js} +1 -1
- package/dist/assets/{Switch.stories-pYIYfkr3.js → Switch.stories-hjVvL7UR.js} +5 -5
- package/dist/assets/{SwitchBase-D-uzeIbM.js → SwitchBase-CefEM0OA.js} +1 -1
- package/dist/assets/{Sync-DFFNrTTV.js → Sync-BbqTDeWk.js} +1 -1
- package/dist/assets/Tabs-CQz87GHd.js +1 -0
- package/dist/assets/{Tabs-SRLNy8_X.js → Tabs-gXh7YFSu.js} +6 -6
- package/dist/assets/Tabs.stories-CRJgQA20.js +100 -0
- package/dist/assets/{Tag-BgjQI7VM.js → Tag-DwH0t814.js} +1 -1
- package/dist/assets/Tag.stories-CoLnXBke.js +96 -0
- package/dist/assets/{TagList-DGN86KvF.js → TagList-BZGEhGXn.js} +1 -1
- package/dist/assets/{TextField-BuwBI2RX.js → TextField-BhK0y2Zt.js} +1 -1
- package/dist/assets/{TextField.stories-DL7enA3k.js → TextField.stories-DYOK0z5b.js} +2 -2
- package/dist/assets/Toast.stories-BipAY3GN.js +134 -0
- package/dist/assets/ToastManager.stories-BWZvSWGT.js +196 -0
- package/dist/assets/Tooltip-Cq2rQGbD.js +1 -0
- package/dist/assets/{Tooltip-XQJL1Byd.js → Tooltip-CsVWtVfL.js} +1 -1
- package/dist/assets/Tooltip.stories-B6wyATg5.js +68 -0
- package/dist/assets/{TopNav-dZWiR_bv.js → TopNav-DEIYDz6v.js} +1 -1
- package/dist/assets/TopNav.stories-DJNZEi08.js +13 -0
- package/dist/assets/TransitionGroupContext-DAL84N7p.js +1 -0
- package/dist/assets/{Typography-CORddEdk.js → Typography-CkeEfKaM.js} +1 -1
- package/dist/assets/{Typography-Yf1Zkad_.js → Typography-ClQ35Rr-.js} +1 -1
- package/dist/assets/{Typography-DfSdXC7o.js → Typography-Cz6D417Y.js} +1 -1
- package/dist/assets/Typography-r6MlG5YM.js +1 -0
- package/dist/assets/Typography.stories-93RlEwpU.js +73 -0
- package/dist/assets/{Typography.stories-D-TscJaP.js → Typography.stories-DRUYEGzH.js} +1 -1
- package/dist/assets/{UiShell.stories-BRpnZ7zi.js → UiShell.stories-HV8yGvd3.js} +3 -3
- package/dist/assets/{UiShellProvider-BOM87LOZ.js → UiShellProvider-BEcD16AU.js} +1 -1
- package/dist/assets/{Upload-CXJBKzcC.js → Upload-CfzP_Muq.js} +1 -1
- package/dist/assets/{User-D6db-Gy0.js → User-CyxEAfVT.js} +1 -1
- package/dist/assets/{UserProfile-DqokqHU1.js → UserProfile-B6GSEZPs.js} +1 -1
- package/dist/assets/UserProfile.stories-Cx9GmLsV.js +14 -0
- package/dist/assets/{UserProfileMenuButton.stories-CKErfTVM.js → UserProfileMenuButton.stories-BjxJHNWm.js} +3 -3
- package/dist/assets/{Video-B1Csvrbu.js → Video-DWT3WylB.js} +1 -1
- package/dist/assets/WorkflowsComponentsStorybookThemeDecorator-CxOFxh0W.js +197 -0
- package/dist/assets/assertThisInitialized-B9jnkVVz.js +1 -0
- package/dist/assets/{colorManipulator-CjGkpVfF.js → colorManipulator-DKifQsuo.js} +1 -1
- package/dist/assets/createBox-Dxawkfow.js +1 -0
- package/dist/assets/{createStyled-D0LG5-qz.js → createStyled-D6bTcpHC.js} +1 -1
- package/dist/assets/{createSvgIcon-DsUj6UQo.js → createSvgIcon-ClUWwDzL.js} +1 -1
- package/dist/assets/{dialogActionsClasses-BWrWITLY.js → dialogActionsClasses-ZEPlxVw-.js} +1 -1
- package/dist/assets/emotion-react-jsx-runtime.browser.esm-DL0BDwaj.js +1 -0
- package/dist/assets/{entry-preview-CklzQ6bB.js → entry-preview-BxxndF3a.js} +1 -1
- package/dist/assets/getReactElementRef-DsIevm5t.js +1 -0
- package/dist/assets/i18next-7SyOfhCu.js +1 -0
- package/dist/assets/{iconUtils-B6sV00nC.js → iconUtils-BII10A1q.js} +1 -1
- package/dist/assets/{iframe-CXLAql3E.js → iframe-Cf-Lpz6Y.js} +2 -2
- package/dist/assets/{index-Dj8r1U9U.js → index-DB8HwIVZ.js} +1 -1
- package/dist/assets/{index-BqmbiZ7T.js → index-DLgQDw3r.js} +3 -3
- package/dist/assets/{index-DRboDwvZ.js → index-Ml2UeFXJ.js} +1 -1
- package/dist/assets/index-_dyfSX8u.js +1 -0
- package/dist/assets/index.esm-CBOWgn41.js +1 -0
- package/dist/assets/{index.esm-CaIA2ztV.js → index.esm-DTxqsiYY.js} +1 -1
- package/dist/assets/inheritsLoose-CJ6Ie9dp.js +1 -0
- package/dist/assets/{personData-zrA1iJih.js → personData-BYPP3apv.js} +1 -1
- package/dist/assets/{personData-vW3mumD1.js → personData-CRkmqebZ.js} +1 -1
- package/dist/assets/{pickerComponentPropsMetadata-P9x80E4R.js → pickerComponentPropsMetadata-D10GkMIO.js} +3 -3
- package/dist/assets/popper-BVOCD5jc.js +1 -0
- package/dist/assets/{preview-BprB3Yzd.js → preview-D06dtFvI.js} +2 -2
- package/dist/assets/{preview-_inBJXZG.js → preview-Dk8DzNBz.js} +1 -1
- package/dist/assets/renderUiShell.stories-CAw-IOS4.js +866 -0
- package/dist/assets/{resolveComponentProps-BzfJewMt.js → resolveComponentProps-DXQ8X87i.js} +1 -1
- package/dist/assets/{tableSortLabelClasses-DtOYtU1J.js → tableSortLabelClasses-CkKrbp1R.js} +1 -1
- package/dist/assets/{useAutocomplete-DwWveFvJ.js → useAutocomplete-BRetTkpF.js} +1 -1
- package/dist/assets/{useMobilePicker-5I3ooa1D.js → useMobilePicker-DZhX9dEQ.js} +1 -1
- package/dist/assets/useOdysseyDateFields-DPSkeXJj.js +61 -0
- package/dist/assets/{useScrollIndication-C4t86M0g.js → useScrollIndication-mYI-g6xa.js} +3 -3
- package/dist/assets/{useSlot-CaOQD_17.js → useSlot-CvpE2t6D.js} +1 -1
- package/dist/assets/useThemeProps-BPvYx-mf.js +1 -0
- package/dist/assets/useThemeProps-DwvbKxez.js +1 -0
- package/dist/assets/utils-kUZVaD1e.js +1 -0
- package/dist/cjs/DataTable/DataTable.cjs +18 -16
- package/dist/cjs/DataTable/DataTable.cjs.map +1 -1
- package/dist/cjs/DataTable/DataTableRowActions.cjs +13 -12
- package/dist/cjs/DataTable/DataTableRowActions.cjs.map +1 -1
- package/dist/cjs/DataTable/DataTableSettings.cjs +9 -8
- package/dist/cjs/DataTable/DataTableSettings.cjs.map +1 -1
- package/dist/cjs/DatePickers/DateFieldActionBar.cjs +3 -3
- package/dist/cjs/DatePickers/DateFieldActionBar.cjs.map +1 -1
- package/dist/cjs/DatePickers/DatePicker.cjs +2 -2
- package/dist/cjs/DatePickers/DatePicker.cjs.map +1 -1
- package/dist/cjs/DatePickers/datePickerTheme.cjs +2 -2
- package/dist/cjs/DatePickers/datePickerTheme.cjs.map +1 -1
- package/dist/cjs/Dialog.cjs +4 -4
- package/dist/cjs/Dialog.cjs.map +1 -1
- package/dist/cjs/Drawer.cjs +29 -18
- package/dist/cjs/Drawer.cjs.map +1 -1
- package/dist/cjs/{Checkbox.cjs → Fields/Checkbox.cjs} +7 -16
- package/dist/cjs/Fields/Checkbox.cjs.map +1 -0
- package/dist/cjs/{CheckboxGroup.cjs → Fields/CheckboxGroup.cjs} +1 -1
- package/dist/cjs/Fields/CheckboxGroup.cjs.map +1 -0
- package/dist/cjs/Fields/Hint.cjs +31 -0
- package/dist/cjs/Fields/Hint.cjs.map +1 -0
- package/dist/cjs/{Radio.cjs → Fields/Radio.cjs} +5 -14
- package/dist/cjs/Fields/Radio.cjs.map +1 -0
- package/dist/cjs/{RadioGroup.cjs → Fields/RadioGroup.cjs} +2 -2
- package/dist/cjs/Fields/RadioGroup.cjs.map +1 -0
- package/dist/cjs/FileUploader/FileUploader.cjs +6 -6
- package/dist/cjs/FileUploader/FileUploader.cjs.map +1 -1
- package/dist/cjs/Form.cjs.map +1 -1
- package/dist/cjs/OdysseyThemeProvider.cjs +2 -2
- package/dist/cjs/OdysseyThemeProvider.cjs.map +1 -1
- package/dist/cjs/OdysseyThemeProviderPropsContext.cjs.map +1 -1
- package/dist/cjs/Pagination/Pagination.cjs +7 -7
- package/dist/cjs/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/Toast.cjs +4 -4
- package/dist/cjs/Toast.cjs.map +1 -1
- package/dist/cjs/__internal.cjs +143 -0
- package/dist/cjs/__internal.cjs.map +1 -1
- package/dist/cjs/index.cjs +685 -613
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/labs/AppTile.cjs +2 -2
- package/dist/cjs/labs/AppTile.cjs.map +1 -1
- package/dist/cjs/labs/DataFilters.cjs +16 -16
- package/dist/cjs/labs/DataFilters.cjs.map +1 -1
- package/dist/cjs/labs/DataTablePagination.cjs +7 -7
- package/dist/cjs/labs/DataTablePagination.cjs.map +1 -1
- package/dist/cjs/labs/DataView/BulkActionsMenu.cjs +7 -6
- package/dist/cjs/labs/DataView/BulkActionsMenu.cjs.map +1 -1
- package/dist/cjs/labs/DataView/DataView.cjs +8 -7
- package/dist/cjs/labs/DataView/DataView.cjs.map +1 -1
- package/dist/cjs/labs/DataView/LayoutSwitcher.cjs +4 -3
- package/dist/cjs/labs/DataView/LayoutSwitcher.cjs.map +1 -1
- package/dist/cjs/labs/DataView/RowActions.cjs +10 -10
- package/dist/cjs/labs/DataView/RowActions.cjs.map +1 -1
- package/dist/cjs/labs/DataView/TableLayoutContent.cjs +11 -10
- package/dist/cjs/labs/DataView/TableLayoutContent.cjs.map +1 -1
- package/dist/cjs/labs/DataView/TableSettings.cjs +9 -8
- package/dist/cjs/labs/DataView/TableSettings.cjs.map +1 -1
- package/dist/cjs/labs/DataView/componentTypes.cjs.map +1 -1
- package/dist/cjs/labs/DataView/useFilterConversion.cjs.map +1 -1
- package/dist/cjs/labs/DatePickers/DateTimePicker.cjs +7 -7
- package/dist/cjs/labs/DatePickers/DateTimePicker.cjs.map +1 -1
- package/dist/cjs/labs/DatePickers/dateTimePickerTheme.cjs +3 -3
- package/dist/cjs/labs/DatePickers/dateTimePickerTheme.cjs.map +1 -1
- package/dist/cjs/labs/OdysseyPickers/PickerWithOptionAdornment.cjs +2 -2
- package/dist/cjs/labs/OdysseyPickers/PickerWithOptionAdornment.cjs.map +1 -1
- package/dist/cjs/labs/index.cjs +156 -28
- package/dist/cjs/labs/index.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/NavAccordion.cjs +2 -0
- package/dist/cjs/ui-shell/SideNav/NavAccordion.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNav.cjs +5 -3
- package/dist/cjs/ui-shell/SideNav/SideNav.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/types.cjs.map +1 -1
- package/dist/cjs/ui-shell/WideUiShellContent.cjs +9 -9
- package/dist/cjs/ui-shell/WideUiShellContent.cjs.map +1 -1
- package/dist/cjs/ui-shell/index.cjs +24 -12
- package/dist/cjs/ui-shell/index.cjs.map +1 -1
- package/dist/cjs/ui-shell/renderUiShell.cjs +4 -2
- package/dist/cjs/ui-shell/renderUiShell.cjs.map +1 -1
- package/dist/cjs/web-component/createShadowDomElements.cjs +2 -2
- package/dist/cjs/web-component/createShadowDomElements.cjs.map +1 -1
- package/dist/cjs/web-component/{removeGlobalStylesFromShadowDom.cjs → encapsulateShadowDomFromGlobalStyles.cjs} +4 -4
- package/dist/cjs/web-component/encapsulateShadowDomFromGlobalStyles.cjs.map +1 -0
- package/dist/cjs/web-component/index.cjs +4 -4
- package/dist/cjs/web-component/index.cjs.map +1 -1
- package/dist/cjs/web-component/odysseyWebComponentVersion.generated.cjs +1 -1
- package/dist/cjs/web-component/odysseyWebComponentVersion.generated.cjs.map +1 -1
- package/dist/cjs/web-component/renderReactInWebComponent.cjs +12 -8
- package/dist/cjs/web-component/renderReactInWebComponent.cjs.map +1 -1
- package/dist/esm/DataTable/DataTable.js +4 -2
- package/dist/esm/DataTable/DataTable.js.map +1 -1
- package/dist/esm/DataTable/DataTableRowActions.js +2 -1
- package/dist/esm/DataTable/DataTableRowActions.js.map +1 -1
- package/dist/esm/DataTable/DataTableSettings.js +2 -1
- package/dist/esm/DataTable/DataTableSettings.js.map +1 -1
- package/dist/esm/DatePickers/DateFieldActionBar.js +1 -1
- package/dist/esm/DatePickers/DateFieldActionBar.js.map +1 -1
- package/dist/esm/DatePickers/DatePicker.js +1 -1
- package/dist/esm/DatePickers/DatePicker.js.map +1 -1
- package/dist/esm/DatePickers/datePickerTheme.js +1 -1
- package/dist/esm/DatePickers/datePickerTheme.js.map +1 -1
- package/dist/esm/Dialog.js +1 -1
- package/dist/esm/Dialog.js.map +1 -1
- package/dist/esm/Drawer.js +26 -15
- package/dist/esm/Drawer.js.map +1 -1
- package/dist/esm/{Checkbox.js → Fields/Checkbox.js} +6 -16
- package/dist/esm/Fields/Checkbox.js.map +1 -0
- package/dist/esm/{CheckboxGroup.js → Fields/CheckboxGroup.js} +1 -1
- package/dist/esm/Fields/CheckboxGroup.js.map +1 -0
- package/dist/esm/Fields/Hint.js +24 -0
- package/dist/esm/Fields/Hint.js.map +1 -0
- package/dist/esm/{Radio.js → Fields/Radio.js} +4 -14
- package/dist/esm/Fields/Radio.js.map +1 -0
- package/dist/esm/{RadioGroup.js → Fields/RadioGroup.js} +2 -2
- package/dist/esm/Fields/RadioGroup.js.map +1 -0
- package/dist/esm/FileUploader/FileUploader.js +2 -3
- package/dist/esm/FileUploader/FileUploader.js.map +1 -1
- package/dist/esm/Form.js.map +1 -1
- package/dist/esm/OdysseyThemeProvider.js +1 -1
- package/dist/esm/OdysseyThemeProvider.js.map +1 -1
- package/dist/esm/OdysseyThemeProviderPropsContext.js.map +1 -1
- package/dist/esm/Pagination/Pagination.js +1 -1
- package/dist/esm/Pagination/Pagination.js.map +1 -1
- package/dist/esm/Toast.js +1 -1
- package/dist/esm/Toast.js.map +1 -1
- package/dist/esm/__internal.js +13 -0
- package/dist/esm/__internal.js.map +1 -1
- package/dist/esm/index.js +62 -54
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/labs/AppTile.js +1 -1
- package/dist/esm/labs/AppTile.js.map +1 -1
- package/dist/esm/labs/DataFilters.js +5 -5
- package/dist/esm/labs/DataFilters.js.map +1 -1
- package/dist/esm/labs/DataTablePagination.js +1 -1
- package/dist/esm/labs/DataTablePagination.js.map +1 -1
- package/dist/esm/labs/DataView/BulkActionsMenu.js +2 -1
- package/dist/esm/labs/DataView/BulkActionsMenu.js.map +1 -1
- package/dist/esm/labs/DataView/DataView.js +3 -2
- package/dist/esm/labs/DataView/DataView.js.map +1 -1
- package/dist/esm/labs/DataView/LayoutSwitcher.js +2 -1
- package/dist/esm/labs/DataView/LayoutSwitcher.js.map +1 -1
- package/dist/esm/labs/DataView/RowActions.js +1 -1
- package/dist/esm/labs/DataView/RowActions.js.map +1 -1
- package/dist/esm/labs/DataView/TableLayoutContent.js +2 -1
- package/dist/esm/labs/DataView/TableLayoutContent.js.map +1 -1
- package/dist/esm/labs/DataView/TableSettings.js +2 -1
- package/dist/esm/labs/DataView/TableSettings.js.map +1 -1
- package/dist/esm/labs/DataView/componentTypes.js.map +1 -1
- package/dist/esm/labs/DataView/useFilterConversion.js.map +1 -1
- package/dist/esm/labs/DatePickers/DateTimePicker.js +2 -2
- package/dist/esm/labs/DatePickers/DateTimePicker.js.map +1 -1
- package/dist/esm/labs/DatePickers/dateTimePickerTheme.js +1 -1
- package/dist/esm/labs/DatePickers/dateTimePickerTheme.js.map +1 -1
- package/dist/esm/labs/OdysseyPickers/PickerWithOptionAdornment.js +1 -1
- package/dist/esm/labs/OdysseyPickers/PickerWithOptionAdornment.js.map +1 -1
- package/dist/esm/labs/index.js +18 -7
- package/dist/esm/labs/index.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/NavAccordion.js +2 -0
- package/dist/esm/ui-shell/SideNav/NavAccordion.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNav.js +4 -2
- package/dist/esm/ui-shell/SideNav/SideNav.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/types.js.map +1 -1
- package/dist/esm/ui-shell/WideUiShellContent.js +3 -3
- package/dist/esm/ui-shell/WideUiShellContent.js.map +1 -1
- package/dist/esm/ui-shell/index.js +4 -3
- package/dist/esm/ui-shell/index.js.map +1 -1
- package/dist/esm/ui-shell/renderUiShell.js +4 -2
- package/dist/esm/ui-shell/renderUiShell.js.map +1 -1
- package/dist/esm/web-component/createShadowDomElements.js +2 -2
- package/dist/esm/web-component/createShadowDomElements.js.map +1 -1
- package/dist/esm/web-component/{removeGlobalStylesFromShadowDom.js → encapsulateShadowDomFromGlobalStyles.js} +2 -2
- package/dist/esm/web-component/encapsulateShadowDomFromGlobalStyles.js.map +1 -0
- package/dist/esm/web-component/index.js +1 -1
- package/dist/esm/web-component/index.js.map +1 -1
- package/dist/esm/web-component/odysseyWebComponentVersion.generated.js +1 -1
- package/dist/esm/web-component/odysseyWebComponentVersion.generated.js.map +1 -1
- package/dist/esm/web-component/renderReactInWebComponent.js +12 -8
- package/dist/esm/web-component/renderReactInWebComponent.js.map +1 -1
- package/dist/iframe.html +1 -1
- package/dist/index.d.ts +21 -232
- package/dist/index.json +1 -1
- package/dist/project.json +1 -1
- package/dist/sb-addons/storybook-13/manager-bundle.js +1 -1
- package/dist/tsconfig.production.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/DataTable/DataTable.d.ts +3 -3
- package/dist/types/DataTable/DataTable.d.ts.map +1 -1
- package/dist/types/DataTable/DataTableRowActions.d.ts +2 -1
- package/dist/types/DataTable/DataTableRowActions.d.ts.map +1 -1
- package/dist/types/DataTable/DataTableSettings.d.ts.map +1 -1
- package/dist/types/Dialog.d.ts +1 -1
- package/dist/types/Dialog.d.ts.map +1 -1
- package/dist/types/Drawer.d.ts +1 -1
- package/dist/types/Drawer.d.ts.map +1 -1
- package/dist/types/{Checkbox.d.ts → Fields/Checkbox.d.ts} +4 -4
- package/dist/types/Fields/Checkbox.d.ts.map +1 -0
- package/dist/types/{CheckboxGroup.d.ts → Fields/CheckboxGroup.d.ts} +2 -2
- package/dist/types/Fields/CheckboxGroup.d.ts.map +1 -0
- package/dist/{esm/DatePickers/index.js → types/Fields/Hint.d.ts} +9 -6
- package/dist/types/Fields/Hint.d.ts.map +1 -0
- package/dist/types/{Radio.d.ts → Fields/Radio.d.ts} +3 -3
- package/dist/types/Fields/Radio.d.ts.map +1 -0
- package/dist/types/{RadioGroup.d.ts → Fields/RadioGroup.d.ts} +2 -2
- package/dist/types/Fields/RadioGroup.d.ts.map +1 -0
- package/dist/types/FileUploader/FileUploader.d.ts +1 -2
- package/dist/types/FileUploader/FileUploader.d.ts.map +1 -1
- package/dist/types/Form.d.ts +1 -1
- package/dist/types/Form.d.ts.map +1 -1
- package/dist/types/OdysseyThemeProviderPropsContext.d.ts +1 -1
- package/dist/types/__internal.d.ts +13 -0
- package/dist/types/__internal.d.ts.map +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/labs/DataView/BulkActionsMenu.d.ts.map +1 -1
- package/dist/types/labs/DataView/DataView.d.ts.map +1 -1
- package/dist/types/labs/DataView/LayoutSwitcher.d.ts.map +1 -1
- package/dist/types/labs/DataView/RowActions.d.ts +2 -1
- package/dist/types/labs/DataView/RowActions.d.ts.map +1 -1
- package/dist/types/labs/DataView/TableLayoutContent.d.ts.map +1 -1
- package/dist/types/labs/DataView/TableSettings.d.ts.map +1 -1
- package/dist/types/labs/DataView/componentTypes.d.ts +1 -1
- package/dist/types/labs/DataView/componentTypes.d.ts.map +1 -1
- package/dist/types/labs/index.d.ts +19 -7
- package/dist/types/labs/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/ui-shell/SideNav/NavAccordion.d.ts +1 -1
- package/dist/types/ui-shell/SideNav/NavAccordion.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNav.d.ts +0 -2
- package/dist/types/ui-shell/SideNav/SideNav.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/types.d.ts +4 -0
- package/dist/types/ui-shell/SideNav/types.d.ts.map +1 -1
- package/dist/types/ui-shell/index.d.ts +4 -3
- package/dist/types/ui-shell/index.d.ts.map +1 -1
- package/dist/types/ui-shell/renderUiShell.d.ts +5 -1
- package/dist/types/ui-shell/renderUiShell.d.ts.map +1 -1
- package/dist/types/web-component/{removeGlobalStylesFromShadowDom.d.ts → encapsulateShadowDomFromGlobalStyles.d.ts} +2 -2
- package/dist/types/web-component/encapsulateShadowDomFromGlobalStyles.d.ts.map +1 -0
- package/dist/types/web-component/index.d.ts +1 -1
- package/dist/types/web-component/index.d.ts.map +1 -1
- package/dist/types/web-component/odysseyWebComponentVersion.generated.d.ts +1 -1
- package/dist/types/web-component/renderReactInWebComponent.d.ts +8 -2
- package/dist/types/web-component/renderReactInWebComponent.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/assets/AdapterLuxon-0NB_ajTr.js +0 -1
- package/dist/assets/AppTile _labs_.stories-uDhyBCfD.js +0 -136
- package/dist/assets/Autocomplete-CXy6JKKy.js +0 -1
- package/dist/assets/Box-CWTB5xfE.js +0 -1
- package/dist/assets/Box-D2NdOYc2.js +0 -11
- package/dist/assets/Breadcrumbs-6BEAV_iX.js +0 -1
- package/dist/assets/Breadcrumbs-C2ZpdmyC.js +0 -6
- package/dist/assets/Breadcrumbs.stories-WwSpw0c-.js +0 -79
- package/dist/assets/Button-B6KDXfay.js +0 -41
- package/dist/assets/ButtonBase-BAQsCgRq.js +0 -74
- package/dist/assets/Callout.stories-nPexHuaO.js +0 -105
- package/dist/assets/Card-2fiTHibU.js +0 -8
- package/dist/assets/Card-CaY-V3Lt.js +0 -1
- package/dist/assets/CardActions-X5bUcMdJ.js +0 -1
- package/dist/assets/Checkbox-BCh8HZ37.js +0 -1
- package/dist/assets/Checkbox.stories-CQ5I8O9l.js +0 -96
- package/dist/assets/CheckboxGroup.stories-B4ljyQRV.js +0 -81
- package/dist/assets/Chip-DXaMeATb.js +0 -1
- package/dist/assets/Custom Theming.stories-t0y6qbUN.js +0 -95
- package/dist/assets/DataTable _labs_-CJnucUaL.js +0 -41
- package/dist/assets/DatePicker-txjKmLSi.js +0 -1
- package/dist/assets/DatePicker.stories-VLeccVga.js +0 -133
- package/dist/assets/DateTimePicker-LSjVE-IM.js +0 -1
- package/dist/assets/Design Tokens-DrLUPXCc.js +0 -4
- package/dist/assets/Dialog-CRuld07G.js +0 -1
- package/dist/assets/Dialog.stories-Bm_j9j63.js +0 -201
- package/dist/assets/DialogContentText-DU3-VV7L.js +0 -1
- package/dist/assets/DialogTitle-DyO9kr6R.js +0 -1
- package/dist/assets/Drawer-CwxKxBTE.js +0 -27
- package/dist/assets/Drawer-DEqB4KYp.js +0 -1
- package/dist/assets/Drawer.stories-Dvgnp9yd.js +0 -95
- package/dist/assets/EmptyState.stories-DK1ZE36w.js +0 -11
- package/dist/assets/ExampleButton.stories-C51QbMy5.js +0 -11
- package/dist/assets/Fade-CVbWKXvx.js +0 -1
- package/dist/assets/Fieldset.stories-BU8d3fia.js +0 -15
- package/dist/assets/Form.stories-Clfikd2x.js +0 -69
- package/dist/assets/GroupPicker _labs_.stories-CFJvoMQP.js +0 -33
- package/dist/assets/Grow-DacPmog-.js +0 -1
- package/dist/assets/Icon _icons_.stories-BQr18gG9.js +0 -16
- package/dist/assets/IconWithTooltip _icons_.stories-Ct7hQD2g.js +0 -19
- package/dist/assets/IgaComponentsLegacyOdysseyDecorator-28myx5I9.js +0 -175
- package/dist/assets/Link-BH0CiguI.js +0 -11
- package/dist/assets/Menu-CHod3UUY.js +0 -1
- package/dist/assets/MenuButton-CMGgaZPh.js +0 -9
- package/dist/assets/MenuItem.stories-YEtPNOwc.js +0 -29
- package/dist/assets/Modal-B1-40kNg.js +0 -1
- package/dist/assets/NativeSelect.stories-BIRwQlHa.js +0 -173
- package/dist/assets/OdysseyProvider-CLb8psrs.js +0 -197
- package/dist/assets/PageHeader.stories-fXDR4T37.js +0 -17
- package/dist/assets/PageTemplate _labs_-D3SkGEbG.js +0 -8
- package/dist/assets/PageTemplate.stories-H4WnNBj4.js +0 -487
- package/dist/assets/Pagination.stories-CB4pOr9i.js +0 -17
- package/dist/assets/PasswordField.stories-D5ZRplSl.js +0 -129
- package/dist/assets/Picker _labs_.stories-CyZs7sOo.js +0 -18
- package/dist/assets/Popper-DjhYeJJy.js +0 -1
- package/dist/assets/Portal-GAJY6Au9.js +0 -1
- package/dist/assets/Radio-tkNaA8vy.js +0 -1
- package/dist/assets/RadioGroup-DP-BtKDw.js +0 -10
- package/dist/assets/RadioGroup-DRNCKA-f.js +0 -1
- package/dist/assets/RadioGroup.stories-DRXPUU0H.js +0 -127
- package/dist/assets/ResourceAccessPolicyComponentsStorybookThemeDecorator-IgdZHick.js +0 -1
- package/dist/assets/ScreenReaderText.stories-CpsTRHeF.js +0 -8
- package/dist/assets/SearchField.stories-C95LqZ5d.js +0 -37
- package/dist/assets/Select-9yKLDVKS.js +0 -1
- package/dist/assets/Snackbar-Cn_gMSEK.js +0 -1
- package/dist/assets/TabPanel-XF64c5rR.js +0 -1
- package/dist/assets/Tabs-DzeBYjfY.js +0 -1
- package/dist/assets/Tabs.stories-Dtlm8Y9N.js +0 -100
- package/dist/assets/Tag.stories-DIlHCDGk.js +0 -96
- package/dist/assets/Toast.stories-DO1V8pyh.js +0 -134
- package/dist/assets/ToastManager.stories-CmZGqHye.js +0 -22
- package/dist/assets/Tooltip-D4AWrTBw.js +0 -1
- package/dist/assets/Tooltip.stories-s36iDmFy.js +0 -68
- package/dist/assets/TopNav.stories-Dg27-0zA.js +0 -13
- package/dist/assets/TransitionGroupContext-DLI0IzWy.js +0 -1
- package/dist/assets/Typography-D01yctPx.js +0 -607
- package/dist/assets/Typography.stories-Cr7YbFxb.js +0 -73
- package/dist/assets/UserProfile.stories-BbvzhbPD.js +0 -14
- package/dist/assets/WorkflowsComponentsStorybookThemeDecorator-COYvO4K8.js +0 -1
- package/dist/assets/emotion-react-jsx-runtime.browser.esm-DcYOMKFp.js +0 -1
- package/dist/assets/index-BsDcV5Kh.js +0 -1
- package/dist/assets/index.esm-HelN6IAt.js +0 -1
- package/dist/assets/renderUiShell.stories-ILWjsAQY.js +0 -854
- package/dist/assets/useOdysseyDateFields-Cq2BZNiB.js +0 -61
- package/dist/assets/useThemeProps-Bfa1XAV-.js +0 -1
- package/dist/assets/useThemeProps-D4857Xca.js +0 -1
- package/dist/assets/utils-DkZjDCLm.js +0 -1
- package/dist/cjs/Buttons/index.cjs +0 -93
- package/dist/cjs/Buttons/index.cjs.map +0 -1
- package/dist/cjs/Checkbox.cjs.map +0 -1
- package/dist/cjs/CheckboxGroup.cjs.map +0 -1
- package/dist/cjs/DataTable/index.cjs +0 -20
- package/dist/cjs/DataTable/index.cjs.map +0 -1
- package/dist/cjs/DatePickers/index.cjs +0 -39
- package/dist/cjs/DatePickers/index.cjs.map +0 -1
- package/dist/cjs/FileUploader/index.cjs +0 -17
- package/dist/cjs/FileUploader/index.cjs.map +0 -1
- package/dist/cjs/Pagination/index.cjs +0 -36
- package/dist/cjs/Pagination/index.cjs.map +0 -1
- package/dist/cjs/Radio.cjs.map +0 -1
- package/dist/cjs/RadioGroup.cjs.map +0 -1
- package/dist/cjs/labs/DataView/index.cjs +0 -60
- package/dist/cjs/labs/DataView/index.cjs.map +0 -1
- package/dist/cjs/labs/DatePickers/index.cjs +0 -17
- package/dist/cjs/labs/DatePickers/index.cjs.map +0 -1
- package/dist/cjs/labs/OdysseyPickers/index.cjs +0 -48
- package/dist/cjs/labs/OdysseyPickers/index.cjs.map +0 -1
- package/dist/cjs/labs/PageTemplate/index.cjs +0 -28
- package/dist/cjs/labs/PageTemplate/index.cjs.map +0 -1
- package/dist/cjs/theme/index.cjs +0 -17
- package/dist/cjs/theme/index.cjs.map +0 -1
- package/dist/cjs/ui-shell/AppSwitcher/index.cjs +0 -17
- package/dist/cjs/ui-shell/AppSwitcher/index.cjs.map +0 -1
- package/dist/cjs/ui-shell/SideNav/index.cjs +0 -40
- package/dist/cjs/ui-shell/SideNav/index.cjs.map +0 -1
- package/dist/cjs/ui-shell/TopNav/index.cjs +0 -17
- package/dist/cjs/ui-shell/TopNav/index.cjs.map +0 -1
- package/dist/cjs/web-component/removeGlobalStylesFromShadowDom.cjs.map +0 -1
- package/dist/esm/Buttons/index.js +0 -19
- package/dist/esm/Buttons/index.js.map +0 -1
- package/dist/esm/Checkbox.js.map +0 -1
- package/dist/esm/CheckboxGroup.js.map +0 -1
- package/dist/esm/DataTable/index.js +0 -15
- package/dist/esm/DataTable/index.js.map +0 -1
- package/dist/esm/DatePickers/index.js.map +0 -1
- package/dist/esm/FileUploader/index.js +0 -14
- package/dist/esm/FileUploader/index.js.map +0 -1
- package/dist/esm/Pagination/index.js +0 -16
- package/dist/esm/Pagination/index.js.map +0 -1
- package/dist/esm/Radio.js.map +0 -1
- package/dist/esm/RadioGroup.js.map +0 -1
- package/dist/esm/labs/DataView/index.js +0 -18
- package/dist/esm/labs/DataView/index.js.map +0 -1
- package/dist/esm/labs/DatePickers/index.js +0 -14
- package/dist/esm/labs/DatePickers/index.js.map +0 -1
- package/dist/esm/labs/OdysseyPickers/index.js +0 -17
- package/dist/esm/labs/OdysseyPickers/index.js.map +0 -1
- package/dist/esm/labs/PageTemplate/index.js +0 -15
- package/dist/esm/labs/PageTemplate/index.js.map +0 -1
- package/dist/esm/theme/index.js +0 -14
- package/dist/esm/theme/index.js.map +0 -1
- package/dist/esm/ui-shell/AppSwitcher/index.js +0 -14
- package/dist/esm/ui-shell/AppSwitcher/index.js.map +0 -1
- package/dist/esm/ui-shell/SideNav/index.js +0 -16
- package/dist/esm/ui-shell/SideNav/index.js.map +0 -1
- package/dist/esm/ui-shell/TopNav/index.js +0 -14
- package/dist/esm/ui-shell/TopNav/index.js.map +0 -1
- package/dist/esm/web-component/removeGlobalStylesFromShadowDom.js.map +0 -1
- package/dist/index.cjs +0 -231
- package/dist/index.mjs +0 -229
- package/dist/index.scss +0 -549
- package/dist/types/Buttons/index.d.ts +0 -18
- package/dist/types/Buttons/index.d.ts.map +0 -1
- package/dist/types/Checkbox.d.ts.map +0 -1
- package/dist/types/CheckboxGroup.d.ts.map +0 -1
- package/dist/types/DataTable/index.d.ts +0 -15
- package/dist/types/DataTable/index.d.ts.map +0 -1
- package/dist/types/DatePickers/index.d.ts +0 -15
- package/dist/types/DatePickers/index.d.ts.map +0 -1
- package/dist/types/FileUploader/index.d.ts +0 -13
- package/dist/types/FileUploader/index.d.ts.map +0 -1
- package/dist/types/Pagination/index.d.ts +0 -15
- package/dist/types/Pagination/index.d.ts.map +0 -1
- package/dist/types/Radio.d.ts.map +0 -1
- package/dist/types/RadioGroup.d.ts.map +0 -1
- package/dist/types/labs/DataView/index.d.ts +0 -18
- package/dist/types/labs/DataView/index.d.ts.map +0 -1
- package/dist/types/labs/DatePickers/index.d.ts +0 -13
- package/dist/types/labs/DatePickers/index.d.ts.map +0 -1
- package/dist/types/labs/OdysseyPickers/index.d.ts +0 -16
- package/dist/types/labs/OdysseyPickers/index.d.ts.map +0 -1
- package/dist/types/labs/PageTemplate/index.d.ts +0 -14
- package/dist/types/labs/PageTemplate/index.d.ts.map +0 -1
- package/dist/types/theme/index.d.ts +0 -13
- package/dist/types/theme/index.d.ts.map +0 -1
- package/dist/types/ui-shell/AppSwitcher/index.d.ts +0 -13
- package/dist/types/ui-shell/AppSwitcher/index.d.ts.map +0 -1
- package/dist/types/ui-shell/SideNav/index.d.ts +0 -15
- package/dist/types/ui-shell/SideNav/index.d.ts.map +0 -1
- package/dist/types/ui-shell/TopNav/index.d.ts +0 -13
- package/dist/types/ui-shell/TopNav/index.d.ts.map +0 -1
- package/dist/types/web-component/removeGlobalStylesFromShadowDom.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickerWithOptionAdornment.js","names":["styled","Fragment","memo","useCallback","Box","useOdysseyDesignTokens","Tag","pxToRem","Heading6","ComposablePicker","Option","OptionDescriptionComponent","OptionLabelContainer","OptionMetadataComponent","jsx","_jsx","jsxs","_jsxs","OptionAdornmentContainer","shouldForwardProp","prop","adornmentSize","isTagContainer","odysseyDesignTokens","position","bottom","alignSelf","width","Spacing5","height","overflow","marginInlineEnd","Spacing3","flexShrink","svg","img","top","left","transform","Spacing8","Spacing4","maxHeight","Spacing2","display","OptionAdornment","adornment","isImageAdornment","children","alt","role","src","OptionWithLabelDescriptionOnly","muiProps","option","description","label","value","hasAdornment","component","OptionWithLabelDescriptionMetadata","metaData","TagAdornment","PickerWithOptionAdornment","ariaDescribedBy","defaultValue","emptyOptionsText","errorMessage","errorMessageList","getIsOptionEqualToValue","groupOptionsBy","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isFullWidth","isLoading","isOptional","isReadOnly","isVirtualized","isVirtualizedProp","hint","HintLinkComponent","name","nameOverride","onBlur","onChange","onChangeProp","onInputChange","onInputChangeProp","onFocus","options","testId","translate","customTagRender","values","getTagProps","map","index","key","onDelete","sx","margin","Spacing1","icon","onRemove","customOptionRender","hasMetadata","renderOption","renderTags","MemoizedPickerWithOptionAdornment","displayName"],"sources":["../../../../src/labs/OdysseyPickers/PickerWithOptionAdornment.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-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 { AutocompleteProps as MuiAutocompleteProps } from \"@mui/material\";\nimport { Fragment, memo, ReactNode, useCallback } from \"react\";\n\nimport { Box } from \"../../Box.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { Tag } from \"../../Tag.js\";\nimport { pxToRem } from \"../../theme/index.js\";\nimport { Heading6 } from \"../../Typography.js\";\nimport {\n type AdornmentSize,\n type BasePickerProps,\n type BasePickerType,\n ComposablePicker,\n ComposablePickerProps,\n} from \"./ComposablePicker.js\";\nimport {\n type BaseOptionProps,\n type LabelDescription,\n type Metadata,\n Option,\n OptionDescriptionComponent,\n OptionLabelContainer,\n OptionMetadataComponent,\n OptionProps,\n} from \"./Picker.js\";\n\ntype Adornment = ReactNode | string;\n\ntype AdornmentLabelDescription = LabelDescription & {\n adornment: Adornment;\n};\n\ntype AdornmentLabelDescriptionMetadata = AdornmentLabelDescription & Metadata;\n\nexport type AdornmentOptionType =\n | AdornmentLabelDescription\n | AdornmentLabelDescriptionMetadata;\n\nconst OptionAdornmentContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"adornmentSize\" &&\n prop !== \"isTagContainer\",\n})<{\n adornmentSize?: AdornmentSize;\n isTagContainer?: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n adornmentSize = \"small\",\n isTagContainer = false,\n odysseyDesignTokens,\n }) => ({\n position: \"relative\",\n // push icon up by one px for better visual alignment\n bottom: \"1px\",\n alignSelf: \"flex-start\",\n width: odysseyDesignTokens.Spacing5,\n height: odysseyDesignTokens.Spacing5,\n overflow: \"hidden\",\n marginInlineEnd: odysseyDesignTokens.Spacing3,\n flexShrink: 0,\n\n svg: {\n width: \"100%\",\n height: \"auto\",\n },\n\n img: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n width: \"100%\",\n transform: \"translate(-50%, -50%)\",\n },\n\n ...(adornmentSize === \"large\" &&\n !isTagContainer && {\n bottom: 0,\n width: odysseyDesignTokens.Spacing8,\n height: odysseyDesignTokens.Spacing8,\n }),\n\n ...(isTagContainer && {\n bottom: 0,\n alignSelf: \"center\",\n width: odysseyDesignTokens.Spacing4,\n height: \"auto\",\n maxHeight: odysseyDesignTokens.Spacing4,\n marginInlineEnd: odysseyDesignTokens.Spacing2,\n\n \"&:has(> img)\": {\n height: `${pxToRem(16)}rem`,\n },\n\n svg: {\n display: \"flex\",\n width: \"100%\",\n height: \"auto\",\n },\n }),\n }),\n);\n\ntype OptionAdornmentProps = {\n adornment: Adornment;\n adornmentSize: AdornmentSize;\n odysseyDesignTokens: DesignTokens;\n};\n\nconst OptionAdornment = ({\n adornment,\n adornmentSize,\n odysseyDesignTokens,\n}: OptionAdornmentProps) => {\n const isImageAdornment = typeof adornment === \"string\";\n\n if (isImageAdornment) {\n return (\n <OptionAdornmentContainer\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {/* NOTE: Intentionally leaving alt as an empty string here so screen readers will ignore this image */}\n {/* Image should be sufficiently described by the adjacent title and/or description of the option */}\n <img alt=\"\" role=\"presentation\" src={adornment} />\n </OptionAdornmentContainer>\n );\n } else {\n return (\n <OptionAdornmentContainer\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {adornment}\n </OptionAdornmentContainer>\n );\n }\n};\n\nconst OptionWithLabelDescriptionOnly = <\n OptionType extends AdornmentLabelDescription,\n>({\n adornmentSize,\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps &\n OptionProps<OptionType> & { adornmentSize: AdornmentSize }) => {\n const { adornment, description, label, value } = option;\n return (\n <Option hasAdornment key={value} muiProps={muiProps}>\n <OptionAdornment\n adornment={adornment}\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n </Option>\n );\n};\n\nconst OptionWithLabelDescriptionMetadata = <\n OptionType extends AdornmentLabelDescriptionMetadata,\n>({\n adornmentSize,\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps &\n OptionProps<OptionType> & {\n adornmentSize: AdornmentSize;\n }) => {\n const { adornment, description, label, metaData, value } = option;\n\n return (\n <Option hasAdornment key={value} muiProps={muiProps}>\n <OptionAdornment\n adornment={adornment}\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n <div>\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n <OptionMetadataComponent\n metaData={metaData}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </div>\n </Option>\n );\n};\n\ntype TagAdornmentProps = {\n adornment: Adornment;\n};\n\nconst TagAdornment = ({ adornment }: TagAdornmentProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const isImageAdornment = typeof adornment === \"string\";\n\n if (isImageAdornment) {\n return (\n <OptionAdornmentContainer\n isTagContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <img alt=\"\" role=\"presentation\" src={adornment} />\n </OptionAdornmentContainer>\n );\n }\n\n return (\n <OptionAdornmentContainer\n isTagContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {adornment}\n </OptionAdornmentContainer>\n );\n};\n\nexport type PickerWithOptionAdornmentProps<\n OptionType extends AdornmentOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = BasePickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed> & {\n adornmentSize?: AdornmentSize;\n};\n\ntype PickerWithOptionAdornmentComponentType = {\n <\n OptionType extends AdornmentLabelDescription,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactNode;\n <\n OptionType extends AdornmentLabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactNode;\n};\n\nconst PickerWithOptionAdornment: PickerWithOptionAdornmentComponentType = <\n OptionType extends AdornmentOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n adornmentSize = \"small\",\n ariaDescribedBy,\n defaultValue,\n emptyOptionsText,\n errorMessage,\n errorMessageList,\n getIsOptionEqualToValue,\n groupOptionsBy,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isFullWidth = false,\n isLoading,\n isOptional = false,\n isReadOnly,\n isVirtualized: isVirtualizedProp = false,\n hint,\n HintLinkComponent,\n label,\n name: nameOverride,\n onBlur,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n onFocus,\n options,\n value,\n testId,\n translate,\n}: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n>) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const customTagRender = useCallback<\n NonNullable<\n ComposablePickerProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >[\"renderTags\"]\n >\n >(\n (values, getTagProps) =>\n values.map((value, index) => {\n const { key, onDelete } = getTagProps({ index });\n const { adornment, label } = value;\n\n return (\n <Box\n key={key}\n sx={{\n margin: odysseyDesignTokens.Spacing1,\n marginInlineEnd: 0,\n }}\n >\n <Tag\n icon={<TagAdornment adornment={adornment} />}\n label={label}\n onRemove={onDelete}\n />\n </Box>\n );\n }),\n [odysseyDesignTokens],\n );\n\n const customOptionRender = useCallback<\n NonNullable<\n MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"renderOption\"]\n >\n >(\n (muiProps, option) => {\n const hasMetadata = \"metaData\" in option && option.metaData;\n\n return (\n <Fragment key={option.value}>\n {hasMetadata ? (\n <OptionWithLabelDescriptionMetadata\n adornmentSize={adornmentSize}\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n ) : (\n <OptionWithLabelDescriptionOnly\n adornmentSize={adornmentSize}\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n )}\n </Fragment>\n );\n },\n [adornmentSize, odysseyDesignTokens],\n );\n\n return (\n <ComposablePicker<OptionType, HasMultipleChoices, IsCustomValueAllowed>\n ariaDescribedBy={ariaDescribedBy}\n defaultValue={defaultValue}\n emptyOptionsText={emptyOptionsText}\n errorMessage={errorMessage}\n errorMessageList={errorMessageList}\n getIsOptionEqualToValue={getIsOptionEqualToValue}\n groupOptionsBy={groupOptionsBy}\n hasMultipleChoices={hasMultipleChoices}\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n id={idOverride}\n inputValue={inputValue}\n isCustomValueAllowed={isCustomValueAllowed}\n isDisabled={isDisabled}\n isFullWidth={isFullWidth}\n isLoading={isLoading}\n isOptional={isOptional}\n isReadOnly={isReadOnly}\n isVirtualized={isVirtualizedProp}\n label={label}\n name={nameOverride}\n onBlur={onBlur}\n onChange={onChangeProp}\n onFocus={onFocus}\n onInputChange={onInputChangeProp}\n options={options}\n renderOption={customOptionRender}\n renderTags={customTagRender}\n testId={testId}\n translate={translate}\n value={value}\n />\n );\n};\n\n// Need the `as BasePickerType` because generics don't get passed through\nconst MemoizedPickerWithOptionAdornment = memo(\n PickerWithOptionAdornment,\n) as BasePickerType;\n\nMemoizedPickerWithOptionAdornment.displayName = \"PickerWithOptionAdornment\";\n\nexport { MemoizedPickerWithOptionAdornment as PickerWithOptionAdornment };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PickerWithOptionAdornment.js","names":["styled","Fragment","memo","useCallback","Box","useOdysseyDesignTokens","Tag","pxToRem","Heading6","ComposablePicker","Option","OptionDescriptionComponent","OptionLabelContainer","OptionMetadataComponent","jsx","_jsx","jsxs","_jsxs","OptionAdornmentContainer","shouldForwardProp","prop","adornmentSize","isTagContainer","odysseyDesignTokens","position","bottom","alignSelf","width","Spacing5","height","overflow","marginInlineEnd","Spacing3","flexShrink","svg","img","top","left","transform","Spacing8","Spacing4","maxHeight","Spacing2","display","OptionAdornment","adornment","isImageAdornment","children","alt","role","src","OptionWithLabelDescriptionOnly","muiProps","option","description","label","value","hasAdornment","component","OptionWithLabelDescriptionMetadata","metaData","TagAdornment","PickerWithOptionAdornment","ariaDescribedBy","defaultValue","emptyOptionsText","errorMessage","errorMessageList","getIsOptionEqualToValue","groupOptionsBy","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isFullWidth","isLoading","isOptional","isReadOnly","isVirtualized","isVirtualizedProp","hint","HintLinkComponent","name","nameOverride","onBlur","onChange","onChangeProp","onInputChange","onInputChangeProp","onFocus","options","testId","translate","customTagRender","values","getTagProps","map","index","key","onDelete","sx","margin","Spacing1","icon","onRemove","customOptionRender","hasMetadata","renderOption","renderTags","MemoizedPickerWithOptionAdornment","displayName"],"sources":["../../../../src/labs/OdysseyPickers/PickerWithOptionAdornment.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-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 { AutocompleteProps as MuiAutocompleteProps } from \"@mui/material\";\nimport { Fragment, memo, ReactNode, useCallback } from \"react\";\n\nimport { Box } from \"../../Box.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { Tag } from \"../../Tag.js\";\nimport { pxToRem } from \"../../theme/pxToRem.js\";\nimport { Heading6 } from \"../../Typography.js\";\nimport {\n type AdornmentSize,\n type BasePickerProps,\n type BasePickerType,\n ComposablePicker,\n ComposablePickerProps,\n} from \"./ComposablePicker.js\";\nimport {\n type BaseOptionProps,\n type LabelDescription,\n type Metadata,\n Option,\n OptionDescriptionComponent,\n OptionLabelContainer,\n OptionMetadataComponent,\n OptionProps,\n} from \"./Picker.js\";\n\ntype Adornment = ReactNode | string;\n\ntype AdornmentLabelDescription = LabelDescription & {\n adornment: Adornment;\n};\n\ntype AdornmentLabelDescriptionMetadata = AdornmentLabelDescription & Metadata;\n\nexport type AdornmentOptionType =\n | AdornmentLabelDescription\n | AdornmentLabelDescriptionMetadata;\n\nconst OptionAdornmentContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"adornmentSize\" &&\n prop !== \"isTagContainer\",\n})<{\n adornmentSize?: AdornmentSize;\n isTagContainer?: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n adornmentSize = \"small\",\n isTagContainer = false,\n odysseyDesignTokens,\n }) => ({\n position: \"relative\",\n // push icon up by one px for better visual alignment\n bottom: \"1px\",\n alignSelf: \"flex-start\",\n width: odysseyDesignTokens.Spacing5,\n height: odysseyDesignTokens.Spacing5,\n overflow: \"hidden\",\n marginInlineEnd: odysseyDesignTokens.Spacing3,\n flexShrink: 0,\n\n svg: {\n width: \"100%\",\n height: \"auto\",\n },\n\n img: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n width: \"100%\",\n transform: \"translate(-50%, -50%)\",\n },\n\n ...(adornmentSize === \"large\" &&\n !isTagContainer && {\n bottom: 0,\n width: odysseyDesignTokens.Spacing8,\n height: odysseyDesignTokens.Spacing8,\n }),\n\n ...(isTagContainer && {\n bottom: 0,\n alignSelf: \"center\",\n width: odysseyDesignTokens.Spacing4,\n height: \"auto\",\n maxHeight: odysseyDesignTokens.Spacing4,\n marginInlineEnd: odysseyDesignTokens.Spacing2,\n\n \"&:has(> img)\": {\n height: `${pxToRem(16)}rem`,\n },\n\n svg: {\n display: \"flex\",\n width: \"100%\",\n height: \"auto\",\n },\n }),\n }),\n);\n\ntype OptionAdornmentProps = {\n adornment: Adornment;\n adornmentSize: AdornmentSize;\n odysseyDesignTokens: DesignTokens;\n};\n\nconst OptionAdornment = ({\n adornment,\n adornmentSize,\n odysseyDesignTokens,\n}: OptionAdornmentProps) => {\n const isImageAdornment = typeof adornment === \"string\";\n\n if (isImageAdornment) {\n return (\n <OptionAdornmentContainer\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {/* NOTE: Intentionally leaving alt as an empty string here so screen readers will ignore this image */}\n {/* Image should be sufficiently described by the adjacent title and/or description of the option */}\n <img alt=\"\" role=\"presentation\" src={adornment} />\n </OptionAdornmentContainer>\n );\n } else {\n return (\n <OptionAdornmentContainer\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {adornment}\n </OptionAdornmentContainer>\n );\n }\n};\n\nconst OptionWithLabelDescriptionOnly = <\n OptionType extends AdornmentLabelDescription,\n>({\n adornmentSize,\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps &\n OptionProps<OptionType> & { adornmentSize: AdornmentSize }) => {\n const { adornment, description, label, value } = option;\n return (\n <Option hasAdornment key={value} muiProps={muiProps}>\n <OptionAdornment\n adornment={adornment}\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n </Option>\n );\n};\n\nconst OptionWithLabelDescriptionMetadata = <\n OptionType extends AdornmentLabelDescriptionMetadata,\n>({\n adornmentSize,\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps &\n OptionProps<OptionType> & {\n adornmentSize: AdornmentSize;\n }) => {\n const { adornment, description, label, metaData, value } = option;\n\n return (\n <Option hasAdornment key={value} muiProps={muiProps}>\n <OptionAdornment\n adornment={adornment}\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n <div>\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n <OptionMetadataComponent\n metaData={metaData}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </div>\n </Option>\n );\n};\n\ntype TagAdornmentProps = {\n adornment: Adornment;\n};\n\nconst TagAdornment = ({ adornment }: TagAdornmentProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const isImageAdornment = typeof adornment === \"string\";\n\n if (isImageAdornment) {\n return (\n <OptionAdornmentContainer\n isTagContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <img alt=\"\" role=\"presentation\" src={adornment} />\n </OptionAdornmentContainer>\n );\n }\n\n return (\n <OptionAdornmentContainer\n isTagContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {adornment}\n </OptionAdornmentContainer>\n );\n};\n\nexport type PickerWithOptionAdornmentProps<\n OptionType extends AdornmentOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = BasePickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed> & {\n adornmentSize?: AdornmentSize;\n};\n\ntype PickerWithOptionAdornmentComponentType = {\n <\n OptionType extends AdornmentLabelDescription,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactNode;\n <\n OptionType extends AdornmentLabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactNode;\n};\n\nconst PickerWithOptionAdornment: PickerWithOptionAdornmentComponentType = <\n OptionType extends AdornmentOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n adornmentSize = \"small\",\n ariaDescribedBy,\n defaultValue,\n emptyOptionsText,\n errorMessage,\n errorMessageList,\n getIsOptionEqualToValue,\n groupOptionsBy,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isFullWidth = false,\n isLoading,\n isOptional = false,\n isReadOnly,\n isVirtualized: isVirtualizedProp = false,\n hint,\n HintLinkComponent,\n label,\n name: nameOverride,\n onBlur,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n onFocus,\n options,\n value,\n testId,\n translate,\n}: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n>) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const customTagRender = useCallback<\n NonNullable<\n ComposablePickerProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >[\"renderTags\"]\n >\n >(\n (values, getTagProps) =>\n values.map((value, index) => {\n const { key, onDelete } = getTagProps({ index });\n const { adornment, label } = value;\n\n return (\n <Box\n key={key}\n sx={{\n margin: odysseyDesignTokens.Spacing1,\n marginInlineEnd: 0,\n }}\n >\n <Tag\n icon={<TagAdornment adornment={adornment} />}\n label={label}\n onRemove={onDelete}\n />\n </Box>\n );\n }),\n [odysseyDesignTokens],\n );\n\n const customOptionRender = useCallback<\n NonNullable<\n MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"renderOption\"]\n >\n >(\n (muiProps, option) => {\n const hasMetadata = \"metaData\" in option && option.metaData;\n\n return (\n <Fragment key={option.value}>\n {hasMetadata ? (\n <OptionWithLabelDescriptionMetadata\n adornmentSize={adornmentSize}\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n ) : (\n <OptionWithLabelDescriptionOnly\n adornmentSize={adornmentSize}\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n )}\n </Fragment>\n );\n },\n [adornmentSize, odysseyDesignTokens],\n );\n\n return (\n <ComposablePicker<OptionType, HasMultipleChoices, IsCustomValueAllowed>\n ariaDescribedBy={ariaDescribedBy}\n defaultValue={defaultValue}\n emptyOptionsText={emptyOptionsText}\n errorMessage={errorMessage}\n errorMessageList={errorMessageList}\n getIsOptionEqualToValue={getIsOptionEqualToValue}\n groupOptionsBy={groupOptionsBy}\n hasMultipleChoices={hasMultipleChoices}\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n id={idOverride}\n inputValue={inputValue}\n isCustomValueAllowed={isCustomValueAllowed}\n isDisabled={isDisabled}\n isFullWidth={isFullWidth}\n isLoading={isLoading}\n isOptional={isOptional}\n isReadOnly={isReadOnly}\n isVirtualized={isVirtualizedProp}\n label={label}\n name={nameOverride}\n onBlur={onBlur}\n onChange={onChangeProp}\n onFocus={onFocus}\n onInputChange={onInputChangeProp}\n options={options}\n renderOption={customOptionRender}\n renderTags={customTagRender}\n testId={testId}\n translate={translate}\n value={value}\n />\n );\n};\n\n// Need the `as BasePickerType` because generics don't get passed through\nconst MemoizedPickerWithOptionAdornment = memo(\n PickerWithOptionAdornment,\n) as BasePickerType;\n\nMemoizedPickerWithOptionAdornment.displayName = \"PickerWithOptionAdornment\";\n\nexport { MemoizedPickerWithOptionAdornment as PickerWithOptionAdornment };\n"],"mappings":"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","ignoreList":[]}
|
package/dist/esm/labs/index.js
CHANGED
|
@@ -12,18 +12,29 @@
|
|
|
12
12
|
|
|
13
13
|
export { LocalizationProvider } from "@mui/x-date-pickers";
|
|
14
14
|
export { AdapterDateFns } from "@mui/x-date-pickers/AdapterDateFns";
|
|
15
|
-
export * from "../ui-shell/AppSwitcher/
|
|
16
|
-
export * from "../ui-shell/SideNav/
|
|
17
|
-
export * from "../ui-shell/
|
|
15
|
+
export * from "../ui-shell/AppSwitcher/AppSwitcher.js";
|
|
16
|
+
export * from "../ui-shell/SideNav/NavAccordion.js";
|
|
17
|
+
export * from "../ui-shell/SideNav/SideNav.js";
|
|
18
|
+
export * from "../ui-shell/SideNav/types.js";
|
|
19
|
+
export * from "../ui-shell/TopNav/TopNav.js";
|
|
18
20
|
export * from "../ui-shell/UiShell.js";
|
|
19
21
|
export * from "./AppTile.js";
|
|
20
22
|
export * from "./DataFilters.js";
|
|
21
23
|
export * from "./DataTablePagination.js";
|
|
22
|
-
export * from "./DataView/
|
|
23
|
-
export * from "./
|
|
24
|
+
export * from "./DataView/componentTypes.js";
|
|
25
|
+
export * from "./DataView/constants.js";
|
|
26
|
+
export * from "./DataView/DataTable.js";
|
|
27
|
+
export * from "./DataView/dataTypes.js";
|
|
28
|
+
export * from "./DataView/DataView.js";
|
|
29
|
+
export * from "./DatePickers/DateTimeField.js";
|
|
30
|
+
export * from "./DatePickers/DateTimePicker.js";
|
|
24
31
|
export * from "./materialReactTableTypes.js";
|
|
25
|
-
export
|
|
26
|
-
export * from "./
|
|
32
|
+
export { adornmentSizeValues } from "./OdysseyPickers/ComposablePicker.js";
|
|
33
|
+
export * from "./OdysseyPickers/Picker.js";
|
|
34
|
+
export * from "./OdysseyPickers/PickerWithOptionAdornment.js";
|
|
35
|
+
export * from "./OdysseyPickers/SearchDropdown.js";
|
|
36
|
+
export * from "./PageTemplate/Layout.js";
|
|
37
|
+
export * from "./PageTemplate/PageTemplate.js";
|
|
27
38
|
export * from "./PaginatedTable.js";
|
|
28
39
|
export * from "./StaticTable.js";
|
|
29
40
|
export * from "./UserProfile.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["LocalizationProvider","AdapterDateFns","GroupPicker"],"sources":["../../../src/labs/index.ts"],"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\nexport { LocalizationProvider } from \"@mui/x-date-pickers\";\nexport type { LocalizationProviderProps } from \"@mui/x-date-pickers\";\nexport { AdapterDateFns } from \"@mui/x-date-pickers/AdapterDateFns\";\n\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/AppSwitcher/
|
|
1
|
+
{"version":3,"file":"index.js","names":["LocalizationProvider","AdapterDateFns","adornmentSizeValues","GroupPicker"],"sources":["../../../src/labs/index.ts"],"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\nexport { LocalizationProvider } from \"@mui/x-date-pickers\";\nexport type { LocalizationProviderProps } from \"@mui/x-date-pickers\";\nexport { AdapterDateFns } from \"@mui/x-date-pickers/AdapterDateFns\";\n\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/AppSwitcher/AppSwitcher.js\";\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/SideNav/NavAccordion.js\";\nexport * from \"../ui-shell/SideNav/SideNav.js\";\nexport * from \"../ui-shell/SideNav/types.js\";\n\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/TopNav/TopNav.js\";\n/** @deprecated Will be removed in a future Odyssey version. Use the `/ui-shell` export unless your app is running React v17. */\nexport * from \"../ui-shell/UiShell.js\";\n// export * from \"./AdaptablePicker\";\nexport * from \"./AppTile.js\";\nexport * from \"./DataFilters.js\";\n/** @deprecated Will be removed in a future Odyssey version in lieu of the one shipping with DataTable */\nexport * from \"./DataTablePagination.js\";\nexport * from \"./DataView/componentTypes.js\";\nexport * from \"./DataView/constants.js\";\nexport { type DataCardProps } from \"./DataView/DataCard.js\";\nexport * from \"./DataView/DataTable.js\";\nexport * from \"./DataView/dataTypes.js\";\nexport * from \"./DataView/DataView.js\";\n\nexport * from \"./DatePickers/DateTimeField.js\";\nexport * from \"./DatePickers/DateTimePicker.js\";\nexport * from \"./materialReactTableTypes.js\";\nexport { adornmentSizeValues } from \"./OdysseyPickers/ComposablePicker.js\";\nexport * from \"./OdysseyPickers/Picker.js\";\nexport * from \"./OdysseyPickers/PickerWithOptionAdornment.js\";\nexport * from \"./OdysseyPickers/SearchDropdown.js\";\nexport * from \"./PageTemplate/Layout.js\";\nexport * from \"./PageTemplate/PageTemplate.js\";\n/** @deprecated Will be removed in a future Odyssey version in lieu of DataTable */\nexport * from \"./PaginatedTable.js\";\n/** @deprecated Will be removed in a future Odyssey version in lieu of DataTable */\nexport * from \"./StaticTable.js\";\nexport * from \"./UserProfile.js\";\nexport * from \"./UserProfileMenuButton.js\";\n\nexport {\n /** @deprecated Will be removed in a future Odyssey version. Use `PickerWithOptionAdornment` */\n GroupPicker,\n type GroupPickerOptionType,\n type GroupPickerProps,\n} from \"./GroupPicker.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,oBAAoB,QAAQ,qBAAqB;AAE1D,SAASC,cAAc,QAAQ,oCAAoC;AAGnE,cAAc,wCAAwC;AAEtD,cAAc,qCAAqC;AACnD,cAAc,gCAAgC;AAC9C,cAAc,8BAA8B;AAG5C,cAAc,8BAA8B;AAE5C,cAAc,wBAAwB;AAEtC,cAAc,cAAc;AAC5B,cAAc,kBAAkB;AAEhC,cAAc,0BAA0B;AACxC,cAAc,8BAA8B;AAC5C,cAAc,yBAAyB;AAEvC,cAAc,yBAAyB;AACvC,cAAc,yBAAyB;AACvC,cAAc,wBAAwB;AAEtC,cAAc,gCAAgC;AAC9C,cAAc,iCAAiC;AAC/C,cAAc,8BAA8B;AAC5C,SAASC,mBAAmB,QAAQ,sCAAsC;AAC1E,cAAc,4BAA4B;AAC1C,cAAc,+CAA+C;AAC7D,cAAc,oCAAoC;AAClD,cAAc,0BAA0B;AACxC,cAAc,gCAAgC;AAE9C,cAAc,qBAAqB;AAEnC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,4BAA4B;AAE1C,SAEEC,WAAW,QAGN,kBAAkB","ignoreList":[]}
|
|
@@ -118,6 +118,7 @@ const NavAccordion = ({
|
|
|
118
118
|
isDefaultExpanded,
|
|
119
119
|
isDisabled,
|
|
120
120
|
isExpanded,
|
|
121
|
+
onChange,
|
|
121
122
|
translate,
|
|
122
123
|
startIcon
|
|
123
124
|
}) => {
|
|
@@ -135,6 +136,7 @@ const NavAccordion = ({
|
|
|
135
136
|
disabled: isDisabled,
|
|
136
137
|
disableGutters: true,
|
|
137
138
|
expanded: isExpanded,
|
|
139
|
+
onChange: onChange,
|
|
138
140
|
children: [_jsxs(AccordionSummaryContainer, {
|
|
139
141
|
"aria-controls": contentId,
|
|
140
142
|
className: "nav-accordion-summary",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavAccordion.js","names":["styled","memo","ChevronDownIcon","useOdysseyDesignTokens","useUiShellContext","useUniqueId","useSideNavItemContent","jsx","_jsx","jsxs","_jsxs","SideNavAccordionContainer","shouldForwardProp","prop","backgroundColor","fontColor","width","color","AccordionLabelContainer","sideNavContrastColors","odysseyDesignTokens","isIconVisible","marginInlineStart","Spacing3","fontWeight","TypographyWeightBody","TypographyColorHeading","TypographyColorDisabled","itemDisabledFontColor","AccordionSummaryContainer","_AccordionSummary","isCompact","isDisabled","depth","borderRadius","BorderRadiusMain","paddingBlock","paddingInlineStart","Spacing4","paddingInlineEnd","alignItems","opacity","svg","path","fill","HueNeutral50","itemHoverBackgroundColor","outline","boxShadow","PalettePrimaryMain","focusRingColor","Spacing2","minHeight","NavAccordion","children","label","id","idOverride","isDefaultExpanded","isExpanded","translate","startIcon","headerId","contentId","uiShellContext","sideNavItemContentContext","sideNavBackgroundColor","_Accordion","className","defaultExpanded","disabled","disableGutters","expanded","expandIcon","Boolean","_AccordionDetails","MemoizedNavAccordion","displayName"],"sources":["../../../../src/ui-shell/SideNav/NavAccordion.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-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 Accordion as MuiAccordion,\n AccordionDetails as MuiAccordionDetails,\n AccordionProps as MuiAccordionProps,\n AccordionSummary as MuiAccordionSummary,\n} from \"@mui/material\";\nimport { memo, PropsWithChildren, ReactNode } from \"react\";\n\nimport type { HtmlProps } from \"../../HtmlProps.js\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { ChevronDownIcon } from \"../../icons.generated/index.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport {\n UiShellColors,\n useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\nimport { useUniqueId } from \"../../useUniqueId.js\";\nimport { useSideNavItemContent } from \"./SideNavItemContentContext.js\";\n\nconst SideNavAccordionContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" && prop !== \"fontColor\",\n})<{\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n fontColor?: ContrastColors[\"fontColor\"];\n}>(({ backgroundColor, fontColor }) => ({\n width: \"100%\",\n\n \".MuiAccordion-root\": {\n backgroundColor: backgroundColor,\n color: fontColor || \"inherit\",\n },\n}));\n\nexport type NavAccordionProps = {\n /**\n * Defines IDs for the header and the content of the Accordion\n */\n id?: string;\n /**\n * Determines if the Accordion component use compact layout\n */\n isCompact?: boolean;\n /**\n * Whether the item is expanded by default\n */\n isDefaultExpanded?: boolean;\n /**\n * Whether the item is disabled\n */\n isDisabled?: boolean;\n /**\n * If true, expands the accordion, otherwise collapse it.\n * Setting this prop enables control over the accordion.\n */\n isExpanded?: boolean;\n /**\n * The label text for the AccordionSummary\n */\n label: string;\n /**\n * Event fired when the expansion state of the accordion is changed\n */\n onChange?: MuiAccordionProps[\"onChange\"];\n /**\n * The icon element to display at the start of the Nav Item\n */\n startIcon?: ReactNode;\n} & Pick<HtmlProps, \"testId\" | \"translate\">;\n\nconst AccordionLabelContainer = styled(\"span\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isIconVisible\" &&\n prop !== \"sideNavContrastColors\",\n})<{\n isIconVisible: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors?: UiShellColors[\"sideNavContrastColors\"];\n}>(({ sideNavContrastColors, odysseyDesignTokens, isIconVisible }) => ({\n width: \"100%\",\n marginInlineStart: isIconVisible ? odysseyDesignTokens.Spacing3 : 0,\n fontWeight: odysseyDesignTokens.TypographyWeightBody,\n color:\n sideNavContrastColors?.fontColor ||\n odysseyDesignTokens.TypographyColorHeading,\n\n \".Mui-disabled &\": {\n color: odysseyDesignTokens.TypographyColorDisabled,\n\n ...(sideNavContrastColors?.itemDisabledFontColor && {\n color: sideNavContrastColors?.itemDisabledFontColor,\n }),\n },\n}));\n\nconst AccordionSummaryContainer = styled(MuiAccordionSummary, {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isCompact\" &&\n prop !== \"isDisabled\" &&\n prop !== \"sideNavContrastColors\" &&\n prop !== \"depth\",\n})<{\n depth?: number;\n isCompact?: boolean;\n isDisabled?: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors?: UiShellColors[\"sideNavContrastColors\"];\n}>(\n ({\n odysseyDesignTokens,\n sideNavContrastColors,\n isCompact,\n isDisabled,\n depth = 1,\n }) => ({\n borderRadius: odysseyDesignTokens.BorderRadiusMain,\n paddingBlock: odysseyDesignTokens.Spacing3,\n paddingInlineStart: `calc(${odysseyDesignTokens.Spacing4} * ${depth})`,\n paddingInlineEnd: odysseyDesignTokens.Spacing4,\n alignItems: \"center\",\n\n \".MuiAccordionSummary-content\": {\n alignItems: \"center\",\n },\n\n ...(isDisabled && {\n opacity: \"1 !important\",\n\n ...(sideNavContrastColors?.itemDisabledFontColor && {\n svg: {\n path: {\n fill: `${sideNavContrastColors.itemDisabledFontColor} !important`,\n },\n },\n }),\n }),\n\n ...(!isDisabled && {\n \"&:hover\": {\n backgroundColor: odysseyDesignTokens.HueNeutral50,\n },\n }),\n\n ...(!isDisabled &&\n sideNavContrastColors?.fontColor && {\n svg: {\n path: {\n fill: `${sideNavContrastColors.fontColor} !important`,\n },\n },\n }),\n\n ...(sideNavContrastColors?.itemHoverBackgroundColor && {\n ...(!isDisabled && {\n \"&:hover\": {\n backgroundColor: sideNavContrastColors.itemHoverBackgroundColor,\n },\n }),\n }),\n\n \"&:focus-visible\": {\n backgroundColor: \"unset\",\n outline: \"none\",\n boxShadow: `inset 0 0 0 2px ${odysseyDesignTokens.PalettePrimaryMain}`,\n\n ...(sideNavContrastColors?.focusRingColor && {\n boxShadow: `inset 0 0 0 2px ${sideNavContrastColors.focusRingColor}`,\n }),\n },\n\n ...(isCompact && {\n paddingBlock: odysseyDesignTokens.Spacing2,\n minHeight: \"unset\",\n }),\n }),\n);\n\nconst NavAccordion = ({\n children,\n label,\n id: idOverride,\n isCompact,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n translate,\n startIcon,\n}: PropsWithChildren<NavAccordionProps>) => {\n const id = useUniqueId(idOverride);\n const headerId = `${id}-header`;\n const contentId = `${id}-content`;\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const uiShellContext = useUiShellContext();\n const sideNavItemContentContext = useSideNavItemContent();\n\n return (\n <SideNavAccordionContainer\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n >\n <MuiAccordion\n className=\"nav-accordion\"\n defaultExpanded={isDefaultExpanded}\n disabled={isDisabled}\n disableGutters\n expanded={isExpanded}\n >\n <AccordionSummaryContainer\n aria-controls={contentId}\n className=\"nav-accordion-summary\"\n depth={sideNavItemContentContext.depth}\n expandIcon={<ChevronDownIcon />}\n id={headerId}\n isCompact={isCompact}\n isDisabled={isDisabled}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={uiShellContext?.sideNavContrastColors}\n >\n {startIcon && startIcon}\n <AccordionLabelContainer\n isIconVisible={Boolean(startIcon)}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={uiShellContext?.sideNavContrastColors}\n translate={translate}\n >\n {label}\n </AccordionLabelContainer>\n </AccordionSummaryContainer>\n <MuiAccordionDetails\n aria-labelledby={headerId}\n className=\"nav-accordion-details\"\n >\n {children}\n </MuiAccordionDetails>\n </MuiAccordion>\n </SideNavAccordionContainer>\n );\n};\n\nconst MemoizedNavAccordion = memo(NavAccordion);\nMemoizedNavAccordion.displayName = \"NavAccordion\";\n\nexport { MemoizedNavAccordion as NavAccordion };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"NavAccordion.js","names":["styled","memo","ChevronDownIcon","useOdysseyDesignTokens","useUiShellContext","useUniqueId","useSideNavItemContent","jsx","_jsx","jsxs","_jsxs","SideNavAccordionContainer","shouldForwardProp","prop","backgroundColor","fontColor","width","color","AccordionLabelContainer","sideNavContrastColors","odysseyDesignTokens","isIconVisible","marginInlineStart","Spacing3","fontWeight","TypographyWeightBody","TypographyColorHeading","TypographyColorDisabled","itemDisabledFontColor","AccordionSummaryContainer","_AccordionSummary","isCompact","isDisabled","depth","borderRadius","BorderRadiusMain","paddingBlock","paddingInlineStart","Spacing4","paddingInlineEnd","alignItems","opacity","svg","path","fill","HueNeutral50","itemHoverBackgroundColor","outline","boxShadow","PalettePrimaryMain","focusRingColor","Spacing2","minHeight","NavAccordion","children","label","id","idOverride","isDefaultExpanded","isExpanded","onChange","translate","startIcon","headerId","contentId","uiShellContext","sideNavItemContentContext","sideNavBackgroundColor","_Accordion","className","defaultExpanded","disabled","disableGutters","expanded","expandIcon","Boolean","_AccordionDetails","MemoizedNavAccordion","displayName"],"sources":["../../../../src/ui-shell/SideNav/NavAccordion.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-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 Accordion as MuiAccordion,\n AccordionDetails as MuiAccordionDetails,\n AccordionProps as MuiAccordionProps,\n AccordionSummary as MuiAccordionSummary,\n} from \"@mui/material\";\nimport { memo, PropsWithChildren, ReactNode } from \"react\";\n\nimport type { HtmlProps } from \"../../HtmlProps.js\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { ChevronDownIcon } from \"../../icons.generated/index.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport {\n UiShellColors,\n useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\nimport { useUniqueId } from \"../../useUniqueId.js\";\nimport { useSideNavItemContent } from \"./SideNavItemContentContext.js\";\n\nconst SideNavAccordionContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" && prop !== \"fontColor\",\n})<{\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n fontColor?: ContrastColors[\"fontColor\"];\n}>(({ backgroundColor, fontColor }) => ({\n width: \"100%\",\n\n \".MuiAccordion-root\": {\n backgroundColor: backgroundColor,\n color: fontColor || \"inherit\",\n },\n}));\n\nexport type NavAccordionProps = {\n /**\n * Defines IDs for the header and the content of the Accordion\n */\n id?: string;\n /**\n * Determines if the Accordion component use compact layout\n */\n isCompact?: boolean;\n /**\n * Whether the item is expanded by default\n */\n isDefaultExpanded?: boolean;\n /**\n * Whether the item is disabled\n */\n isDisabled?: boolean;\n /**\n * If true, expands the accordion, otherwise collapse it.\n * Setting this prop enables control over the accordion.\n */\n isExpanded?: boolean;\n /**\n * The label text for the AccordionSummary\n */\n label: string;\n /**\n * Event fired when the expansion state of the accordion is changed\n */\n onChange?: MuiAccordionProps[\"onChange\"];\n /**\n * The icon element to display at the start of the Nav Item\n */\n startIcon?: ReactNode;\n} & Pick<HtmlProps, \"testId\" | \"translate\">;\n\nconst AccordionLabelContainer = styled(\"span\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isIconVisible\" &&\n prop !== \"sideNavContrastColors\",\n})<{\n isIconVisible: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors?: UiShellColors[\"sideNavContrastColors\"];\n}>(({ sideNavContrastColors, odysseyDesignTokens, isIconVisible }) => ({\n width: \"100%\",\n marginInlineStart: isIconVisible ? odysseyDesignTokens.Spacing3 : 0,\n fontWeight: odysseyDesignTokens.TypographyWeightBody,\n color:\n sideNavContrastColors?.fontColor ||\n odysseyDesignTokens.TypographyColorHeading,\n\n \".Mui-disabled &\": {\n color: odysseyDesignTokens.TypographyColorDisabled,\n\n ...(sideNavContrastColors?.itemDisabledFontColor && {\n color: sideNavContrastColors?.itemDisabledFontColor,\n }),\n },\n}));\n\nconst AccordionSummaryContainer = styled(MuiAccordionSummary, {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"isCompact\" &&\n prop !== \"isDisabled\" &&\n prop !== \"sideNavContrastColors\" &&\n prop !== \"depth\",\n})<{\n depth?: number;\n isCompact?: boolean;\n isDisabled?: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors?: UiShellColors[\"sideNavContrastColors\"];\n}>(\n ({\n odysseyDesignTokens,\n sideNavContrastColors,\n isCompact,\n isDisabled,\n depth = 1,\n }) => ({\n borderRadius: odysseyDesignTokens.BorderRadiusMain,\n paddingBlock: odysseyDesignTokens.Spacing3,\n paddingInlineStart: `calc(${odysseyDesignTokens.Spacing4} * ${depth})`,\n paddingInlineEnd: odysseyDesignTokens.Spacing4,\n alignItems: \"center\",\n\n \".MuiAccordionSummary-content\": {\n alignItems: \"center\",\n },\n\n ...(isDisabled && {\n opacity: \"1 !important\",\n\n ...(sideNavContrastColors?.itemDisabledFontColor && {\n svg: {\n path: {\n fill: `${sideNavContrastColors.itemDisabledFontColor} !important`,\n },\n },\n }),\n }),\n\n ...(!isDisabled && {\n \"&:hover\": {\n backgroundColor: odysseyDesignTokens.HueNeutral50,\n },\n }),\n\n ...(!isDisabled &&\n sideNavContrastColors?.fontColor && {\n svg: {\n path: {\n fill: `${sideNavContrastColors.fontColor} !important`,\n },\n },\n }),\n\n ...(sideNavContrastColors?.itemHoverBackgroundColor && {\n ...(!isDisabled && {\n \"&:hover\": {\n backgroundColor: sideNavContrastColors.itemHoverBackgroundColor,\n },\n }),\n }),\n\n \"&:focus-visible\": {\n backgroundColor: \"unset\",\n outline: \"none\",\n boxShadow: `inset 0 0 0 2px ${odysseyDesignTokens.PalettePrimaryMain}`,\n\n ...(sideNavContrastColors?.focusRingColor && {\n boxShadow: `inset 0 0 0 2px ${sideNavContrastColors.focusRingColor}`,\n }),\n },\n\n ...(isCompact && {\n paddingBlock: odysseyDesignTokens.Spacing2,\n minHeight: \"unset\",\n }),\n }),\n);\n\nconst NavAccordion = ({\n children,\n label,\n id: idOverride,\n isCompact,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n onChange,\n translate,\n startIcon,\n}: PropsWithChildren<NavAccordionProps>) => {\n const id = useUniqueId(idOverride);\n const headerId = `${id}-header`;\n const contentId = `${id}-content`;\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const uiShellContext = useUiShellContext();\n const sideNavItemContentContext = useSideNavItemContent();\n\n return (\n <SideNavAccordionContainer\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n >\n <MuiAccordion\n className=\"nav-accordion\"\n defaultExpanded={isDefaultExpanded}\n disabled={isDisabled}\n disableGutters\n expanded={isExpanded}\n onChange={onChange}\n >\n <AccordionSummaryContainer\n aria-controls={contentId}\n className=\"nav-accordion-summary\"\n depth={sideNavItemContentContext.depth}\n expandIcon={<ChevronDownIcon />}\n id={headerId}\n isCompact={isCompact}\n isDisabled={isDisabled}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={uiShellContext?.sideNavContrastColors}\n >\n {startIcon && startIcon}\n <AccordionLabelContainer\n isIconVisible={Boolean(startIcon)}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={uiShellContext?.sideNavContrastColors}\n translate={translate}\n >\n {label}\n </AccordionLabelContainer>\n </AccordionSummaryContainer>\n <MuiAccordionDetails\n aria-labelledby={headerId}\n className=\"nav-accordion-details\"\n >\n {children}\n </MuiAccordionDetails>\n </MuiAccordion>\n </SideNavAccordionContainer>\n );\n};\n\nconst MemoizedNavAccordion = memo(NavAccordion);\nMemoizedNavAccordion.displayName = \"NavAccordion\";\n\nexport { MemoizedNavAccordion as NavAccordion };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -32,8 +32,8 @@ import { SideNavSortableList } from "./SideNavSortableList.js";
|
|
|
32
32
|
import { SIDE_NAV_TOGGLE_ICON_HALF_SIZE, SIDE_NAV_TOGGLE_ICON_SIZE, SideNavToggleButton } from "./SideNavToggleButton.js";
|
|
33
33
|
import { useIsSideNavCollapsedSessionStorage } from "./useIsSideNavCollapsedSessionStorage.js";
|
|
34
34
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
const SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED = 12;
|
|
36
|
+
const SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED = 2;
|
|
37
37
|
const flattenNestedItems = items => {
|
|
38
38
|
return items.flatMap(item => {
|
|
39
39
|
if (item.nestedNavItems) {
|
|
@@ -434,6 +434,7 @@ const SideNav = ({
|
|
|
434
434
|
label,
|
|
435
435
|
startIcon,
|
|
436
436
|
nestedNavItems,
|
|
437
|
+
onChange,
|
|
437
438
|
isSortable,
|
|
438
439
|
translate
|
|
439
440
|
} = item;
|
|
@@ -491,6 +492,7 @@ const SideNav = ({
|
|
|
491
492
|
isDisabled: isDisabled,
|
|
492
493
|
isExpanded: isExpanded,
|
|
493
494
|
label: label,
|
|
495
|
+
onChange: onChange,
|
|
494
496
|
startIcon: startIcon,
|
|
495
497
|
children: nestedChildren
|
|
496
498
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNav.js","names":["arrayMove","styled","memo","useCallback","useEffect","useMemo","useRef","useState","ErrorBoundary","useTranslation","useOdysseyDesignTokens","OdysseyThemeProvider","Overline","useUiShellContext","useMountLifecycleEffect","SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION","SIDE_NAV_WIDTH","UI_SHELL_BASE_Z_INDEX","UI_SHELL_OVERLAY_Z_INDEX","useElementAtContainerEdge","NavAccordion","SideNavFooterContent","SideNavHeader","SideNavItemContent","StyledSideNavListItem","SideNavItemContentContext","SideNavSortableList","SIDE_NAV_TOGGLE_ICON_HALF_SIZE","SIDE_NAV_TOGGLE_ICON_SIZE","SideNavToggleButton","useIsSideNavCollapsedSessionStorage","jsx","_jsx","jsxs","_jsxs","SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED","SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED","flattenNestedItems","items","flatMap","item","nestedNavItems","StyledCollapsibleContent","shouldForwardProp","prop","odysseyDesignTokens","isSideNavCollapsed","position","display","gridTemplateColumns","height","transition","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","overflow","opacity","StyledOpacityTransitionContainer","gridTemplateRows","StyledSideNavContainer","backgroundColor","hasNeighbouringContentAtInlineStart","isAppContentWhiteBackground","isSideNavToggleHighlighted","HueNeutralWhite","width","content","pointerEvents","right","BorderWidthMain","top","userSelect","zIndex","BorderColorPrimaryControl","HueNeutral100","HueNeutral200","transform","borderRightColor","borderRightStyle","BorderStyleMain","borderRightWidth","StyledSideNavToggleButtonContainer","StyledSideNavHeaderContainer","borderColor","hasContentScrolled","flexShrink","borderBottomWidth","borderBottomStyle","borderBottomColor","concat","StyledSideNavListContainer","padding","listStyle","listStyleType","margin","StyledSideNavScrollableContainer","hasBlockStartPadding","overflowY","paddingBlockStart","Spacing2","paddingInline","StyledSectionHeaderContainer","contrastFontColor","color","HueNeutral600","marginBlock","Spacing3","paddingBlock","Spacing1","Spacing4","StyledSideNavFooter","sideNavBackgroundColor","StyledPersistentSideNavFooter","isContentScrollable","transitionProperty","transitionDuration","transitionTiming","boxShadow","StyledSideNavFooterItemsContainer","sideNavContrastColors","flexWrap","alignItems","fontSize","TypographySizeOverline","fontColor","textDecoration","HueNeutral900","StyledLoadingItemContainer","gap","getHasScrollableContent","scrollableContainer","scrollHeight","clientHeight","LoadingItem","children","_Skeleton","variant","SideNav","appName","footerComponent","footerItems","hasCustomFooter","hasSessionStorageState","isCollapsible","isCollapsed","isCompact","isLoading","isObtrusive","logoProps","leavesPaddingStart","onCollapse","onExpand","onSort","sideNavItems","setHasContentScrolled","setIsContentScrollable","setIsSideNavToggleHighlighted","sideNavItemsList","updateSideNavItemsList","isSideNavCollapsedLocalState","setIsSideNavCollapsedLocalState","sessionState","isSideNavCollapsedSessionState","setSessionState","setIsSideNavCollapsedSessionState","setIsSideNavCollapsed","uiShellContext","t","scrollableContentRef","resizeObserverRef","intersectionObserverRef","sideNavRef","isAtContainerInlineStart","element","current","monitoringElement","parentElement","blankElement","onMount","onUpdate","updateIsContentScrollable","resizeObserverDebounceTimer","ResizeObserver","cancelAnimationFrame","requestAnimationFrame","observe","IntersectionObserver","entries","isIntersecting","slice","sort","a","b","time","at","root","threshold","ulElement","liElement","Array","from","disconnect","scrollIntoViewRef","firstSideNavItemIdWithIsSelected","flattenedItems","firstItemWithIsSelected","find","sideNavItem","isSelected","id","scrollIntoView","getRefIfThisIsFirstNodeWithIsSelected","itemId","undefined","setSelectedItem","selectedItemId","updateNestedSelection","map","updatedSideNavItems","closeSideNavMenu","createAccordionContextValue","depth","createLeafItemContextValue","isSortable","absolutePaddingStart","renderSideNavItem","href","isDefaultExpanded","isDisabled","isExpanded","isSectionHeader","label","startIcon","translate","fallback","component","length","nestedChildren","role","onChange","setSortedItems","parentId","processSideNavItems","sortableItem","navItem","onItemSelected","scrollRef","disabled","Provider","value","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","key","code","preventDefault","unsubscribe","subscribeToCloseSideNavMenu","activeId","activeIndex","overIndex","sortedSideNavItems","onSideNavToggleButtonHighlight","isHighlighted","appBackgroundColor","ref","ariaControls","clickAreaPadding","onClick","onHighlight","onKeyDown","fill","_","index","MemoizedSideNav","displayName"],"sources":["../../../../src/ui-shell/SideNav/SideNav.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { UniqueIdentifier } from \"@dnd-kit/core\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport styled from \"@emotion/styled\";\nimport { Skeleton } from \"@mui/material\";\nimport { Property } from \"csstype\";\nimport {\n CSSProperties,\n KeyboardEventHandler,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport type { SideNavItem, SideNavProps } from \"./types.js\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { useTranslation } from \"../../i18n.generated/i18n.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { OdysseyThemeProvider } from \"../../OdysseyThemeProvider.js\";\nimport { Overline } from \"../../Typography.js\";\nimport {\n UiShellColors,\n useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\nimport { useMountLifecycleEffect } from \"../../useMountLifecycleEffect.js\";\nimport {\n SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n SIDE_NAV_WIDTH,\n UI_SHELL_BASE_Z_INDEX,\n UI_SHELL_OVERLAY_Z_INDEX,\n} from \"../uiShellSharedConstants.js\";\nimport { useElementAtContainerEdge } from \"../useElementAtContainerEdge.js\";\nimport { NavAccordion } from \"./NavAccordion.js\";\nimport { SideNavFooterContent } from \"./SideNavFooterContent.js\";\nimport { SideNavHeader } from \"./SideNavHeader.js\";\nimport {\n SideNavItemContent,\n StyledSideNavListItem,\n} from \"./SideNavItemContent.js\";\nimport { SideNavItemContentContext } from \"./SideNavItemContentContext.js\";\nimport { SideNavSortableList } from \"./SideNavSortableList.js\";\nimport {\n SIDE_NAV_TOGGLE_ICON_HALF_SIZE,\n SIDE_NAV_TOGGLE_ICON_SIZE,\n SideNavToggleButton,\n SideNavToggleButtonProps,\n} from \"./SideNavToggleButton.js\";\nimport { BaseItem } from \"./SortableList/SortableList.js\";\nimport { useIsSideNavCollapsedSessionStorage } from \"./useIsSideNavCollapsedSessionStorage.js\";\n\nexport const SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED = 12;\nexport const SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED = 2;\n\nconst flattenNestedItems = (items: SideNavItem[]): SideNavItem[] => {\n return items.flatMap((item) => {\n if (item.nestedNavItems) {\n return [item, ...flattenNestedItems(item.nestedNavItems)];\n }\n return item;\n });\n};\n\nconst StyledCollapsibleContent = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})<{\n isSideNavCollapsed: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens, isSideNavCollapsed }) => ({\n position: \"relative\",\n display: \"grid\",\n gridTemplateColumns: SIDE_NAV_WIDTH,\n height: \"100%\",\n transition: `grid-template-columns ${odysseyDesignTokens.TransitionDurationMain}, opacity 300ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n\n ...(isSideNavCollapsed &&\n ({\n gridTemplateColumns: 0,\n opacity: 0,\n } satisfies CSSProperties)),\n}));\n\nconst StyledOpacityTransitionContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})(\n ({\n odysseyDesignTokens,\n isSideNavCollapsed,\n }: {\n isSideNavCollapsed: boolean;\n odysseyDesignTokens: DesignTokens;\n }) => ({\n display: \"grid\",\n gridTemplateRows: \"max-content 1fr max-content\",\n height: \"100%\",\n transition: `opacity 50ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n\n ...(isSideNavCollapsed &&\n ({\n opacity: 0,\n } satisfies CSSProperties)),\n }),\n);\n\nconst StyledSideNavContainer = styled(\"nav\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" &&\n prop !== \"hasNeighbouringContentAtInlineStart\" &&\n prop !== \"isAppContentWhiteBackground\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"isSideNavToggleHighlighted\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n hasNeighbouringContentAtInlineStart: boolean;\n isAppContentWhiteBackground: boolean;\n isSideNavCollapsed: boolean;\n isSideNavToggleHighlighted: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n backgroundColor,\n hasNeighbouringContentAtInlineStart,\n isAppContentWhiteBackground,\n isSideNavCollapsed,\n isSideNavToggleHighlighted,\n odysseyDesignTokens,\n }) => ({\n // Side nav container styles\n backgroundColor: backgroundColor || odysseyDesignTokens.HueNeutralWhite,\n height: \"100%\",\n position: \"relative\",\n width: \"fit-content\",\n\n // Right-side vertical line shared\n \"&::before, &::after\": {\n content: \"''\",\n height: \"100%\",\n pointerEvents: \"none\",\n position: \"absolute\",\n right: `-${odysseyDesignTokens.BorderWidthMain}`,\n top: 0,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain}, transform ${odysseyDesignTokens.TransitionDurationMain}, width ${odysseyDesignTokens.TransitionDurationMain}`,\n userSelect: \"none\",\n zIndex: UI_SHELL_OVERLAY_Z_INDEX,\n },\n\n // Right-side vertical line when open\n \"&::before\": {\n backgroundColor: isSideNavToggleHighlighted\n ? odysseyDesignTokens.BorderColorPrimaryControl\n : odysseyDesignTokens.HueNeutral100,\n opacity:\n isAppContentWhiteBackground ||\n (!isSideNavCollapsed && isSideNavToggleHighlighted)\n ? 1\n : 0,\n width: `calc(${odysseyDesignTokens.BorderWidthMain} * 2)`,\n },\n\n // Side nav vertical fill line when no neighboring content\n \"&::after\": {\n backgroundColor: odysseyDesignTokens.HueNeutral200,\n opacity: isSideNavCollapsed ? 1 : 0,\n transform:\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? isSideNavToggleHighlighted\n ? `translateX(calc(100% - (${odysseyDesignTokens.BorderWidthMain} * 2)))`\n : `translateX(calc(100% - ${SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px))`\n : \"translateX(0)\",\n width: hasNeighbouringContentAtInlineStart\n ? 0\n : `calc(${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px + ${odysseyDesignTokens.BorderWidthMain} * 2)`,\n\n // Right-side vertical line when collapsed\n ...((isSideNavCollapsed && isSideNavToggleHighlighted\n ? {\n borderRightColor: odysseyDesignTokens.BorderColorPrimaryControl,\n borderRightStyle:\n odysseyDesignTokens.BorderStyleMain as Property.BorderRightStyle,\n borderRightWidth: `calc(${odysseyDesignTokens.BorderWidthMain} * 2)`,\n }\n : {}) satisfies CSSProperties),\n },\n }),\n);\n\nconst StyledSideNavToggleButtonContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"hasNeighbouringContentAtInlineStart\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"isSideNavToggleHighlighted\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n hasNeighbouringContentAtInlineStart: boolean;\n isSideNavCollapsed: boolean;\n isSideNavToggleHighlighted: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n hasNeighbouringContentAtInlineStart,\n isSideNavCollapsed,\n isSideNavToggleHighlighted,\n odysseyDesignTokens,\n }) => ({\n position: \"absolute\",\n right: `${SIDE_NAV_TOGGLE_ICON_HALF_SIZE}px`,\n top: SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n width: `${SIDE_NAV_TOGGLE_ICON_SIZE}px`,\n transform:\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? isSideNavToggleHighlighted\n ? `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px), 0, 0)`\n : `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED}px), 0, 0)`\n : \"translate3d(100%, 0, 0)\",\n transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,\n zIndex: UI_SHELL_OVERLAY_Z_INDEX + 1,\n }),\n);\n\nconst StyledSideNavHeaderContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"borderColor\" &&\n prop !== \"hasContentScrolled\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n borderColor: ContrastColors[\"fontColor\"];\n hasContentScrolled: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(({ borderColor, hasContentScrolled, odysseyDesignTokens }) => ({\n flexShrink: 0,\n // The bottom border should appear only if the scrollable region has been scrolled\n ...(hasContentScrolled &&\n ({\n borderBottomWidth: odysseyDesignTokens.BorderWidthMain,\n borderBottomStyle: odysseyDesignTokens.BorderStyleMain,\n borderBottomColor: odysseyDesignTokens.HueNeutral100,\n\n ...(borderColor &&\n ({\n borderBottomColor: borderColor.concat(\"15\"),\n } satisfies CSSProperties)),\n } as CSSProperties)),\n}));\n\nconst StyledSideNavListContainer = styled(\"ul\")(() => ({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n margin: 0,\n width: \"100%\",\n}));\n\nconst StyledSideNavScrollableContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"hasBlockStartPadding\",\n})<{ hasBlockStartPadding?: boolean; odysseyDesignTokens: DesignTokens }>(\n ({ odysseyDesignTokens, hasBlockStartPadding }) => ({\n display: \"inline-grid\",\n gridTemplateRows: \"1fr max-content\",\n overflowY: \"auto\",\n paddingBlockStart: hasBlockStartPadding ? odysseyDesignTokens.Spacing2 : 0,\n paddingInline: odysseyDesignTokens.Spacing2,\n }),\n);\n\nconst StyledSectionHeaderContainer = styled(\"li\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"contrastFontColor\",\n})(\n ({\n contrastFontColor,\n odysseyDesignTokens,\n }: {\n contrastFontColor: ContrastColors[\"fontColor\"];\n odysseyDesignTokens: DesignTokens;\n }) => ({\n color: contrastFontColor || odysseyDesignTokens.HueNeutral600,\n marginBlock: `${odysseyDesignTokens.Spacing3}`,\n paddingBlock: odysseyDesignTokens.Spacing1,\n paddingInline: odysseyDesignTokens.Spacing4,\n }),\n);\n\nconst StyledSideNavFooter = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"sideNavBackgroundColor\",\n})(\n ({\n odysseyDesignTokens,\n sideNavBackgroundColor,\n }: {\n odysseyDesignTokens: DesignTokens;\n sideNavBackgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n }) => ({\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n flexShrink: 0,\n padding: odysseyDesignTokens.Spacing4,\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } satisfies CSSProperties)),\n }),\n);\n\nconst StyledPersistentSideNavFooter = styled(StyledSideNavFooter, {\n shouldForwardProp: (prop) =>\n prop !== \"isContentScrollable\" &&\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"sideNavBackgroundColor\",\n})(\n ({\n isContentScrollable,\n odysseyDesignTokens,\n sideNavBackgroundColor,\n }: {\n isContentScrollable: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavBackgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n }) => ({\n transitionProperty: \"box-shadow\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n transitionTiming: odysseyDesignTokens.TransitionTimingMain,\n zIndex: UI_SHELL_BASE_Z_INDEX,\n\n // The box shadow should appear above the footer only if the scrollable region has overflow\n ...(isContentScrollable &&\n ({\n boxShadow: \"0px -8px 8px -8px rgba(39, 39, 39, 0.08)\",\n } satisfies CSSProperties)),\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } satisfies CSSProperties)),\n }),\n);\n\nconst StyledSideNavFooterItemsContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"sideNavContrastColors\",\n})<{\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors: UiShellColors[\"sideNavContrastColors\"];\n}>(({ odysseyDesignTokens, sideNavContrastColors }) => ({\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n fontSize: odysseyDesignTokens.TypographySizeOverline,\n\n \"a, span\": {\n color: odysseyDesignTokens.HueNeutral600,\n transition: `color ${odysseyDesignTokens.TransitionDurationMain}`,\n\n \"&:visited\": {\n color: odysseyDesignTokens.HueNeutral600,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n\n \"&:hover\": {\n textDecoration: \"none\",\n color: odysseyDesignTokens.HueNeutral900,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n}));\n\nconst StyledLoadingItemContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n alignItems: \"center\",\n display: \"flex\",\n gap: odysseyDesignTokens.Spacing2,\n paddingBlock: odysseyDesignTokens.Spacing2,\n paddingInline: odysseyDesignTokens.Spacing4,\n}));\n\nconst getHasScrollableContent = (scrollableContainer: HTMLElement) =>\n scrollableContainer.scrollHeight > scrollableContainer.clientHeight;\n\nconst LoadingItem = () => {\n const odysseyDesignTokens: DesignTokens = useOdysseyDesignTokens();\n return (\n <StyledLoadingItemContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Skeleton\n height={odysseyDesignTokens.Spacing4}\n variant=\"circular\"\n width={odysseyDesignTokens.Spacing4}\n />\n <Skeleton variant=\"rounded\" width=\"100%\" />\n </StyledLoadingItemContainer>\n );\n};\n\nconst SideNav = ({\n appName,\n footerComponent,\n footerItems,\n hasCustomFooter,\n hasSessionStorageState,\n isCollapsible,\n isCollapsed = false,\n isCompact,\n isLoading,\n isObtrusive,\n logoProps,\n leavesPaddingStart,\n onCollapse,\n onExpand,\n onSort,\n sideNavItems,\n}: SideNavProps) => {\n const [hasContentScrolled, setHasContentScrolled] = useState(false);\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const [isSideNavToggleHighlighted, setIsSideNavToggleHighlighted] =\n useState(false);\n const [sideNavItemsList, updateSideNavItemsList] = useState(\n sideNavItems || [],\n );\n\n const [isSideNavCollapsedLocalState, setIsSideNavCollapsedLocalState] =\n useState(isCollapsed);\n\n const {\n sessionState: isSideNavCollapsedSessionState,\n setSessionState: setIsSideNavCollapsedSessionState,\n } = useIsSideNavCollapsedSessionStorage(isCollapsed);\n\n const isSideNavCollapsed = hasSessionStorageState\n ? isSideNavCollapsedSessionState\n : isSideNavCollapsedLocalState;\n const setIsSideNavCollapsed = hasSessionStorageState\n ? setIsSideNavCollapsedSessionState\n : setIsSideNavCollapsedLocalState;\n\n const uiShellContext = useUiShellContext();\n const odysseyDesignTokens: DesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const scrollableContentRef = useRef<HTMLUListElement>(null);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null);\n const sideNavRef = useRef<HTMLDivElement>(null);\n\n const { isAtContainerInlineStart } = useElementAtContainerEdge({\n element: sideNavRef.current,\n monitoringElement: sideNavRef.current?.parentElement?.parentElement,\n });\n\n const hasNeighbouringContentAtInlineStart = !isAtContainerInlineStart;\n\n const blankElement = useMemo(() => <div />, []);\n\n // The default value (sideNavItems) passed to useState is ONLY used by the useState hook for\n // the very first value. Subsequent updates to the prop (sideNavItems) need to cause the state\n // to update!\n useEffect(() => updateSideNavItemsList(sideNavItems || []), [sideNavItems]);\n\n // In the case that you can't control the side nav, then it should use whatever state was passed (app control) rather than what's stored in session storage (user control).\n const onMount = useCallback(() => {\n if (!isCollapsible) {\n setIsSideNavCollapsed(isCollapsed);\n }\n }, [isCollapsed, isCollapsible, setIsSideNavCollapsed]);\n\n const onUpdate = useCallback(() => {\n setIsSideNavCollapsed(isCollapsed);\n }, [isCollapsed, setIsSideNavCollapsed]);\n\n useMountLifecycleEffect({\n onMount,\n onUpdate,\n });\n\n useEffect(() => {\n // This is called directly in this effect AND perhaps as a result of the ResizeObserver\n const updateIsContentScrollable = () => {\n if (\n scrollableContentRef.current &&\n scrollableContentRef.current.parentElement\n ) {\n setIsContentScrollable(\n getHasScrollableContent(scrollableContentRef.current.parentElement),\n );\n }\n };\n\n // If the window is resized, we may need to re-determine if the scrollable container has overflow\n // Setup a ResizeObserver to know if the size of the scrollableContent changes\n let resizeObserverDebounceTimer: ReturnType<typeof requestAnimationFrame>;\n if (!resizeObserverRef.current) {\n resizeObserverRef.current = new ResizeObserver(() => {\n cancelAnimationFrame(resizeObserverDebounceTimer);\n resizeObserverDebounceTimer = requestAnimationFrame(\n updateIsContentScrollable,\n );\n });\n }\n\n if (resizeObserverRef.current && scrollableContentRef.current) {\n // Observe the <ul> itself (in case it changes size due to the content expanding)\n resizeObserverRef.current.observe(scrollableContentRef.current);\n if (scrollableContentRef.current.parentElement) {\n // ALSO observe the parent (<SideNavScrollableContainer>) in case the window resizes\n resizeObserverRef.current.observe(\n scrollableContentRef.current.parentElement,\n );\n }\n }\n\n // Determine if the scrollable container has overflow or not on load\n updateIsContentScrollable();\n\n // Finally, we only want to have the border on the bottom of the header iff the user has scrolled\n // the scrollable container\n if (!intersectionObserverRef.current && scrollableContentRef.current) {\n intersectionObserverRef.current = new IntersectionObserver(\n (entries) => {\n // If isIntersecting is true, then we're at the top of the scroll container\n // If isIntersecting is false, some scrolling has occurred.\n // The entries must be sorted by time and we only really need to look at the latest one\n const isIntersecting = entries\n .slice()\n .sort((a, b) => a.time - b.time)\n .at(0)?.isIntersecting;\n setHasContentScrolled(!isIntersecting);\n },\n {\n root: scrollableContentRef.current.parentElement,\n threshold: 1.0,\n },\n );\n }\n\n if (intersectionObserverRef.current && scrollableContentRef.current) {\n const ulElement = scrollableContentRef.current;\n const [liElement] = Array.from(ulElement?.children || []);\n\n if (liElement) {\n intersectionObserverRef.current.observe(liElement);\n }\n }\n\n // Cleanup when unmounted:\n return () => {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.disconnect();\n resizeObserverRef.current = null;\n }\n if (intersectionObserverRef.current) {\n intersectionObserverRef.current.disconnect();\n intersectionObserverRef.current = null;\n }\n cancelAnimationFrame(resizeObserverDebounceTimer); // Ensure timer is cleared on component unmount\n };\n }, [sideNavItemsList]);\n\n const scrollIntoViewRef = useRef<HTMLLIElement>(null);\n /**\n * Look through the sideNavItems and determine which is the first node\n * with isSelected. This should be the node we set a ref on in order to\n * call scrollIntoView in the effect\n */\n const firstSideNavItemIdWithIsSelected = useMemo(() => {\n const flattenedItems = flattenNestedItems(sideNavItemsList);\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 setSelectedItem = useCallback(\n (selectedItemId: string) => {\n // Recursive function to update nested items\n const updateNestedSelection = (items: SideNavItem[]): SideNavItem[] => {\n return items.map((item) => {\n if (item.nestedNavItems) {\n return {\n ...item,\n isSelected: item.id === selectedItemId,\n nestedNavItems: updateNestedSelection(item.nestedNavItems),\n };\n }\n\n return {\n ...item,\n isSelected: item.id === selectedItemId,\n };\n });\n };\n\n const updatedSideNavItems = updateNestedSelection(sideNavItemsList);\n updateSideNavItemsList(updatedSideNavItems);\n\n if (isCollapsed || isObtrusive) {\n if (isCollapsible) {\n uiShellContext?.closeSideNavMenu();\n } else {\n onCollapse?.();\n }\n }\n },\n [\n isCollapsed,\n isCollapsible,\n isObtrusive,\n onCollapse,\n sideNavItemsList,\n uiShellContext,\n ],\n );\n\n const createAccordionContextValue = useCallback(\n (depth: number) => ({\n depth,\n }),\n [],\n );\n\n const createLeafItemContextValue = useCallback(\n (depth: number, isSortable?: boolean) => ({\n isCompact,\n depth,\n isSortable,\n absolutePaddingStart: leavesPaddingStart,\n }),\n [isCompact, leavesPaddingStart],\n );\n\n const renderSideNavItem = (item: SideNavItem, depth: number = 1) => {\n const {\n href,\n id,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n isSectionHeader,\n label,\n startIcon,\n nestedNavItems,\n isSortable,\n translate,\n } = item;\n\n if (isSectionHeader) {\n return (\n <ErrorBoundary fallback={blankElement} key={id}>\n <StyledSectionHeaderContainer\n contrastFontColor={uiShellContext?.sideNavContrastColors?.fontColor}\n id={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <Overline component=\"h3\">{label}</Overline>\n </StyledSectionHeaderContainer>\n </ErrorBoundary>\n );\n } else if (nestedNavItems && nestedNavItems.length > 0) {\n // Recursive case: item has nested children - ALWAYS render as accordion\n const nestedChildren = (\n <StyledSideNavListContainer role=\"presentation\">\n {isSortable ? (\n <SideNavSortableList\n depth={depth + 1}\n items={nestedNavItems}\n onChange={setSortedItems}\n parentId={item.id}\n processSideNavItems={processSideNavItems}\n />\n ) : (\n processSideNavItems(nestedNavItems, depth + 1).map(\n (item) => item.sortableItem.navItem,\n )\n )}\n </StyledSideNavListContainer>\n );\n\n return href ? (\n <ErrorBoundary fallback={blankElement} key={id}>\n <SideNavItemContent\n {...item}\n href={href}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(item.id)}\n startIcon={item.startIcon}\n />\n\n <StyledSideNavListItem\n aria-disabled={isDisabled}\n disabled={isDisabled}\n id={`${id}-items`}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {nestedChildren}\n </StyledSideNavListItem>\n </ErrorBoundary>\n ) : (\n <ErrorBoundary fallback={blankElement} key={id}>\n <StyledSideNavListItem\n aria-disabled={isDisabled}\n disabled={isDisabled}\n id={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavItemContentContext.Provider\n key={id}\n value={createAccordionContextValue(depth)}\n >\n <NavAccordion\n isCompact={isCompact}\n isDefaultExpanded={isDefaultExpanded}\n isDisabled={isDisabled}\n isExpanded={isExpanded}\n label={label}\n startIcon={startIcon}\n >\n {nestedChildren}\n </NavAccordion>\n </SideNavItemContentContext.Provider>\n </StyledSideNavListItem>\n </ErrorBoundary>\n );\n } else {\n // Base case: leaf item with no children\n return (\n <ErrorBoundary fallback={blankElement} key={id}>\n <SideNavItemContentContext.Provider\n key={id}\n value={createLeafItemContextValue(depth, isSortable)}\n >\n <SideNavItemContent\n {...item}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(id)}\n startIcon={startIcon}\n translate={translate}\n />\n </SideNavItemContentContext.Provider>\n </ErrorBoundary>\n );\n }\n };\n\n const processSideNavItems = (\n items: SideNavItem[],\n depth: number = 1,\n ): (SideNavItem & { sortableItem: BaseItem })[] => {\n return items?.map((item) => ({\n ...item,\n sortableItem: {\n id: item.id,\n isSelected: item.isSelected,\n isDisabled: item.isDisabled,\n isSortable: item.isSortable,\n navItem: renderSideNavItem(item, depth),\n },\n }));\n };\n\n const sideNavExpandClickHandler = useCallback(() => {\n setIsSideNavCollapsed((isSideNavCollapsed) => {\n if (isSideNavCollapsed) {\n onExpand?.();\n } else {\n onCollapse?.();\n }\n\n return !isSideNavCollapsed;\n });\n }, [onCollapse, onExpand, setIsSideNavCollapsed]);\n\n const sideNavExpandKeyHandler = useCallback<\n KeyboardEventHandler<HTMLButtonElement>\n >(\n (event) => {\n if (event?.key === \"Enter\" || event?.code === \"Space\") {\n event.preventDefault();\n sideNavExpandClickHandler();\n }\n },\n [sideNavExpandClickHandler],\n );\n\n useEffect(() => {\n const unsubscribe = uiShellContext?.subscribeToCloseSideNavMenu(() => {\n onCollapse?.();\n setIsSideNavCollapsed(true);\n });\n\n return () => {\n unsubscribe?.();\n };\n }, [onCollapse, setIsSideNavCollapsed, uiShellContext]);\n\n const setSortedItems = useCallback(\n (\n parentId: string,\n activeId: UniqueIdentifier,\n activeIndex: number,\n overIndex: number,\n ) => {\n const sortedSideNavItems = sideNavItemsList.map((item) =>\n item.id === parentId && item.nestedNavItems\n ? {\n ...item,\n nestedNavItems: arrayMove(\n item.nestedNavItems,\n activeIndex,\n overIndex,\n ),\n }\n : item,\n );\n updateSideNavItemsList(sortedSideNavItems);\n onSort?.(sortedSideNavItems, parentId, activeId, activeIndex, overIndex);\n },\n [onSort, sideNavItemsList],\n );\n\n const onSideNavToggleButtonHighlight = useCallback<\n NonNullable<SideNavToggleButtonProps[\"onHighlight\"]>\n >((isHighlighted) => {\n setIsSideNavToggleHighlighted(isHighlighted);\n }, []);\n\n return (\n <StyledSideNavContainer\n aria-label={t(\"navigation.label\")}\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n hasNeighbouringContentAtInlineStart={hasNeighbouringContentAtInlineStart}\n id=\"side-nav-expandable\"\n isAppContentWhiteBackground={\n uiShellContext?.appBackgroundColor ===\n odysseyDesignTokens.HueNeutralWhite\n }\n isSideNavCollapsed={isSideNavCollapsed}\n isSideNavToggleHighlighted={isSideNavToggleHighlighted}\n odysseyDesignTokens={odysseyDesignTokens}\n ref={sideNavRef}\n >\n {isCollapsible && (\n <StyledSideNavToggleButtonContainer\n hasNeighbouringContentAtInlineStart={\n hasNeighbouringContentAtInlineStart\n }\n isSideNavCollapsed={isSideNavCollapsed}\n isSideNavToggleHighlighted={isSideNavToggleHighlighted}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavToggleButton\n ariaControls=\"side-nav-expandable\"\n clickAreaPadding={\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? SIDE_NAV_TOGGLE_ICON_SIZE / 2\n : 0\n }\n isSideNavCollapsed={isSideNavCollapsed}\n onClick={sideNavExpandClickHandler}\n onHighlight={onSideNavToggleButtonHighlight}\n onKeyDown={sideNavExpandKeyHandler}\n />\n </StyledSideNavToggleButtonContainer>\n )}\n\n <OdysseyThemeProvider>\n <StyledCollapsibleContent\n data-se=\"collapsible-region\"\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <StyledOpacityTransitionContainer\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {appName || isLoading || logoProps ? (\n <StyledSideNavHeaderContainer\n borderColor={uiShellContext?.sideNavContrastColors?.fontColor}\n hasContentScrolled={hasContentScrolled}\n odysseyDesignTokens={odysseyDesignTokens}\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 data-se=\"scrollable-region\"\n hasBlockStartPadding={!appName}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <StyledSideNavListContainer\n ref={scrollableContentRef}\n role=\"none\"\n >\n {isLoading\n ? Array(6)\n .fill(null)\n .map((_, index) => <LoadingItem key={index} />)\n : processSideNavItems(sideNavItemsList).map(\n (item) => item.sortableItem.navItem,\n )}\n </StyledSideNavListContainer>\n {!isLoading && footerItems && !hasCustomFooter && (\n <StyledSideNavFooter\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavBackgroundColor={\n uiShellContext?.sideNavBackgroundColor\n }\n >\n <StyledSideNavFooterItemsContainer\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavContrastColors={\n uiShellContext?.sideNavContrastColors\n }\n >\n <SideNavFooterContent footerItems={footerItems} />\n </StyledSideNavFooterItemsContainer>\n </StyledSideNavFooter>\n )}\n </StyledSideNavScrollableContainer>\n {!isLoading && !footerItems && hasCustomFooter && (\n <StyledPersistentSideNavFooter\n isContentScrollable={isContentScrollable}\n odysseyDesignTokens={odysseyDesignTokens}\n sideNavBackgroundColor={uiShellContext?.sideNavBackgroundColor}\n >\n {footerComponent}\n </StyledPersistentSideNavFooter>\n )}\n </StyledOpacityTransitionContainer>\n </StyledCollapsibleContent>\n </OdysseyThemeProvider>\n </StyledSideNavContainer>\n );\n};\n\nconst MemoizedSideNav = memo(SideNav);\nMemoizedSideNav.displayName = \"SideNav\";\n\nexport { MemoizedSideNav as SideNav };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SideNav.js","names":["arrayMove","styled","memo","useCallback","useEffect","useMemo","useRef","useState","ErrorBoundary","useTranslation","useOdysseyDesignTokens","OdysseyThemeProvider","Overline","useUiShellContext","useMountLifecycleEffect","SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION","SIDE_NAV_WIDTH","UI_SHELL_BASE_Z_INDEX","UI_SHELL_OVERLAY_Z_INDEX","useElementAtContainerEdge","NavAccordion","SideNavFooterContent","SideNavHeader","SideNavItemContent","StyledSideNavListItem","SideNavItemContentContext","SideNavSortableList","SIDE_NAV_TOGGLE_ICON_HALF_SIZE","SIDE_NAV_TOGGLE_ICON_SIZE","SideNavToggleButton","useIsSideNavCollapsedSessionStorage","jsx","_jsx","jsxs","_jsxs","SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED","SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED","flattenNestedItems","items","flatMap","item","nestedNavItems","StyledCollapsibleContent","shouldForwardProp","prop","odysseyDesignTokens","isSideNavCollapsed","position","display","gridTemplateColumns","height","transition","TransitionDurationMain","transitionTimingFunction","TransitionTimingMain","overflow","opacity","StyledOpacityTransitionContainer","gridTemplateRows","StyledSideNavContainer","backgroundColor","hasNeighbouringContentAtInlineStart","isAppContentWhiteBackground","isSideNavToggleHighlighted","HueNeutralWhite","width","content","pointerEvents","right","BorderWidthMain","top","userSelect","zIndex","BorderColorPrimaryControl","HueNeutral100","HueNeutral200","transform","borderRightColor","borderRightStyle","BorderStyleMain","borderRightWidth","StyledSideNavToggleButtonContainer","StyledSideNavHeaderContainer","borderColor","hasContentScrolled","flexShrink","borderBottomWidth","borderBottomStyle","borderBottomColor","concat","StyledSideNavListContainer","padding","listStyle","listStyleType","margin","StyledSideNavScrollableContainer","hasBlockStartPadding","overflowY","paddingBlockStart","Spacing2","paddingInline","StyledSectionHeaderContainer","contrastFontColor","color","HueNeutral600","marginBlock","Spacing3","paddingBlock","Spacing1","Spacing4","StyledSideNavFooter","sideNavBackgroundColor","StyledPersistentSideNavFooter","isContentScrollable","transitionProperty","transitionDuration","transitionTiming","boxShadow","StyledSideNavFooterItemsContainer","sideNavContrastColors","flexWrap","alignItems","fontSize","TypographySizeOverline","fontColor","textDecoration","HueNeutral900","StyledLoadingItemContainer","gap","getHasScrollableContent","scrollableContainer","scrollHeight","clientHeight","LoadingItem","children","_Skeleton","variant","SideNav","appName","footerComponent","footerItems","hasCustomFooter","hasSessionStorageState","isCollapsible","isCollapsed","isCompact","isLoading","isObtrusive","logoProps","leavesPaddingStart","onCollapse","onExpand","onSort","sideNavItems","setHasContentScrolled","setIsContentScrollable","setIsSideNavToggleHighlighted","sideNavItemsList","updateSideNavItemsList","isSideNavCollapsedLocalState","setIsSideNavCollapsedLocalState","sessionState","isSideNavCollapsedSessionState","setSessionState","setIsSideNavCollapsedSessionState","setIsSideNavCollapsed","uiShellContext","t","scrollableContentRef","resizeObserverRef","intersectionObserverRef","sideNavRef","isAtContainerInlineStart","element","current","monitoringElement","parentElement","blankElement","onMount","onUpdate","updateIsContentScrollable","resizeObserverDebounceTimer","ResizeObserver","cancelAnimationFrame","requestAnimationFrame","observe","IntersectionObserver","entries","isIntersecting","slice","sort","a","b","time","at","root","threshold","ulElement","liElement","Array","from","disconnect","scrollIntoViewRef","firstSideNavItemIdWithIsSelected","flattenedItems","firstItemWithIsSelected","find","sideNavItem","isSelected","id","scrollIntoView","getRefIfThisIsFirstNodeWithIsSelected","itemId","undefined","setSelectedItem","selectedItemId","updateNestedSelection","map","updatedSideNavItems","closeSideNavMenu","createAccordionContextValue","depth","createLeafItemContextValue","isSortable","absolutePaddingStart","renderSideNavItem","href","isDefaultExpanded","isDisabled","isExpanded","isSectionHeader","label","startIcon","onChange","translate","fallback","component","length","nestedChildren","role","setSortedItems","parentId","processSideNavItems","sortableItem","navItem","onItemSelected","scrollRef","disabled","Provider","value","sideNavExpandClickHandler","sideNavExpandKeyHandler","event","key","code","preventDefault","unsubscribe","subscribeToCloseSideNavMenu","activeId","activeIndex","overIndex","sortedSideNavItems","onSideNavToggleButtonHighlight","isHighlighted","appBackgroundColor","ref","ariaControls","clickAreaPadding","onClick","onHighlight","onKeyDown","fill","_","index","MemoizedSideNav","displayName"],"sources":["../../../../src/ui-shell/SideNav/SideNav.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { UniqueIdentifier } from \"@dnd-kit/core\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport styled from \"@emotion/styled\";\nimport { Skeleton } from \"@mui/material\";\nimport { Property } from \"csstype\";\nimport {\n CSSProperties,\n KeyboardEventHandler,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport type { SideNavItem, SideNavProps } from \"./types.js\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { useTranslation } from \"../../i18n.generated/i18n.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { OdysseyThemeProvider } from \"../../OdysseyThemeProvider.js\";\nimport { Overline } from \"../../Typography.js\";\nimport {\n UiShellColors,\n useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\nimport { useMountLifecycleEffect } from \"../../useMountLifecycleEffect.js\";\nimport {\n SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n SIDE_NAV_WIDTH,\n UI_SHELL_BASE_Z_INDEX,\n UI_SHELL_OVERLAY_Z_INDEX,\n} from \"../uiShellSharedConstants.js\";\nimport { useElementAtContainerEdge } from \"../useElementAtContainerEdge.js\";\nimport { NavAccordion } from \"./NavAccordion.js\";\nimport { SideNavFooterContent } from \"./SideNavFooterContent.js\";\nimport { SideNavHeader } from \"./SideNavHeader.js\";\nimport {\n SideNavItemContent,\n StyledSideNavListItem,\n} from \"./SideNavItemContent.js\";\nimport { SideNavItemContentContext } from \"./SideNavItemContentContext.js\";\nimport { SideNavSortableList } from \"./SideNavSortableList.js\";\nimport {\n SIDE_NAV_TOGGLE_ICON_HALF_SIZE,\n SIDE_NAV_TOGGLE_ICON_SIZE,\n SideNavToggleButton,\n SideNavToggleButtonProps,\n} from \"./SideNavToggleButton.js\";\nimport { BaseItem } from \"./SortableList/SortableList.js\";\nimport { useIsSideNavCollapsedSessionStorage } from \"./useIsSideNavCollapsedSessionStorage.js\";\n\nconst SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED = 12;\nconst SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED = 2;\n\nconst flattenNestedItems = (items: SideNavItem[]): SideNavItem[] => {\n return items.flatMap((item) => {\n if (item.nestedNavItems) {\n return [item, ...flattenNestedItems(item.nestedNavItems)];\n }\n return item;\n });\n};\n\nconst StyledCollapsibleContent = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})<{\n isSideNavCollapsed: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens, isSideNavCollapsed }) => ({\n position: \"relative\",\n display: \"grid\",\n gridTemplateColumns: SIDE_NAV_WIDTH,\n height: \"100%\",\n transition: `grid-template-columns ${odysseyDesignTokens.TransitionDurationMain}, opacity 300ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n\n ...(isSideNavCollapsed &&\n ({\n gridTemplateColumns: 0,\n opacity: 0,\n } satisfies CSSProperties)),\n}));\n\nconst StyledOpacityTransitionContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"isSideNavCollapsed\",\n})(\n ({\n odysseyDesignTokens,\n isSideNavCollapsed,\n }: {\n isSideNavCollapsed: boolean;\n odysseyDesignTokens: DesignTokens;\n }) => ({\n display: \"grid\",\n gridTemplateRows: \"max-content 1fr max-content\",\n height: \"100%\",\n transition: `opacity 50ms`,\n transitionTimingFunction: odysseyDesignTokens.TransitionTimingMain,\n overflow: \"hidden\",\n\n ...(isSideNavCollapsed &&\n ({\n opacity: 0,\n } satisfies CSSProperties)),\n }),\n);\n\nconst StyledSideNavContainer = styled(\"nav\", {\n shouldForwardProp: (prop) =>\n prop !== \"backgroundColor\" &&\n prop !== \"hasNeighbouringContentAtInlineStart\" &&\n prop !== \"isAppContentWhiteBackground\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"isSideNavToggleHighlighted\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n hasNeighbouringContentAtInlineStart: boolean;\n isAppContentWhiteBackground: boolean;\n isSideNavCollapsed: boolean;\n isSideNavToggleHighlighted: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n backgroundColor,\n hasNeighbouringContentAtInlineStart,\n isAppContentWhiteBackground,\n isSideNavCollapsed,\n isSideNavToggleHighlighted,\n odysseyDesignTokens,\n }) => ({\n // Side nav container styles\n backgroundColor: backgroundColor || odysseyDesignTokens.HueNeutralWhite,\n height: \"100%\",\n position: \"relative\",\n width: \"fit-content\",\n\n // Right-side vertical line shared\n \"&::before, &::after\": {\n content: \"''\",\n height: \"100%\",\n pointerEvents: \"none\",\n position: \"absolute\",\n right: `-${odysseyDesignTokens.BorderWidthMain}`,\n top: 0,\n transition: `opacity ${odysseyDesignTokens.TransitionDurationMain}, transform ${odysseyDesignTokens.TransitionDurationMain}, width ${odysseyDesignTokens.TransitionDurationMain}`,\n userSelect: \"none\",\n zIndex: UI_SHELL_OVERLAY_Z_INDEX,\n },\n\n // Right-side vertical line when open\n \"&::before\": {\n backgroundColor: isSideNavToggleHighlighted\n ? odysseyDesignTokens.BorderColorPrimaryControl\n : odysseyDesignTokens.HueNeutral100,\n opacity:\n isAppContentWhiteBackground ||\n (!isSideNavCollapsed && isSideNavToggleHighlighted)\n ? 1\n : 0,\n width: `calc(${odysseyDesignTokens.BorderWidthMain} * 2)`,\n },\n\n // Side nav vertical fill line when no neighboring content\n \"&::after\": {\n backgroundColor: odysseyDesignTokens.HueNeutral200,\n opacity: isSideNavCollapsed ? 1 : 0,\n transform:\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? isSideNavToggleHighlighted\n ? `translateX(calc(100% - (${odysseyDesignTokens.BorderWidthMain} * 2)))`\n : `translateX(calc(100% - ${SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px))`\n : \"translateX(0)\",\n width: hasNeighbouringContentAtInlineStart\n ? 0\n : `calc(${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px + ${odysseyDesignTokens.BorderWidthMain} * 2)`,\n\n // Right-side vertical line when collapsed\n ...((isSideNavCollapsed && isSideNavToggleHighlighted\n ? {\n borderRightColor: odysseyDesignTokens.BorderColorPrimaryControl,\n borderRightStyle:\n odysseyDesignTokens.BorderStyleMain as Property.BorderRightStyle,\n borderRightWidth: `calc(${odysseyDesignTokens.BorderWidthMain} * 2)`,\n }\n : {}) satisfies CSSProperties),\n },\n }),\n);\n\nconst StyledSideNavToggleButtonContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"hasNeighbouringContentAtInlineStart\" &&\n prop !== \"isSideNavCollapsed\" &&\n prop !== \"isSideNavToggleHighlighted\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n hasNeighbouringContentAtInlineStart: boolean;\n isSideNavCollapsed: boolean;\n isSideNavToggleHighlighted: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n hasNeighbouringContentAtInlineStart,\n isSideNavCollapsed,\n isSideNavToggleHighlighted,\n odysseyDesignTokens,\n }) => ({\n position: \"absolute\",\n right: `${SIDE_NAV_TOGGLE_ICON_HALF_SIZE}px`,\n top: SIDE_NAV_VISIBILITY_TOGGLE_ICON_POSITION,\n width: `${SIDE_NAV_TOGGLE_ICON_SIZE}px`,\n transform:\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? isSideNavToggleHighlighted\n ? `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_HIGHLIGHTED}px), 0, 0)`\n : `translate3d(calc(100% + ${SIDE_NAV_TOGGLE_ICON_HALF_SIZE + SIDE_NAV_COLLAPSED_PADDING_UNHIGHLIGHTED}px), 0, 0)`\n : \"translate3d(100%, 0, 0)\",\n transition: `transform ${odysseyDesignTokens.TransitionDurationMain}`,\n zIndex: UI_SHELL_OVERLAY_Z_INDEX + 1,\n }),\n);\n\nconst StyledSideNavHeaderContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"borderColor\" &&\n prop !== \"hasContentScrolled\" &&\n prop !== \"odysseyDesignTokens\",\n})<{\n borderColor: ContrastColors[\"fontColor\"];\n hasContentScrolled: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(({ borderColor, hasContentScrolled, odysseyDesignTokens }) => ({\n flexShrink: 0,\n // The bottom border should appear only if the scrollable region has been scrolled\n ...(hasContentScrolled &&\n ({\n borderBottomWidth: odysseyDesignTokens.BorderWidthMain,\n borderBottomStyle: odysseyDesignTokens.BorderStyleMain,\n borderBottomColor: odysseyDesignTokens.HueNeutral100,\n\n ...(borderColor &&\n ({\n borderBottomColor: borderColor.concat(\"15\"),\n } satisfies CSSProperties)),\n } as CSSProperties)),\n}));\n\nconst StyledSideNavListContainer = styled(\"ul\")(() => ({\n padding: 0,\n listStyle: \"none\",\n listStyleType: \"none\",\n margin: 0,\n width: \"100%\",\n}));\n\nconst StyledSideNavScrollableContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"hasBlockStartPadding\",\n})<{ hasBlockStartPadding?: boolean; odysseyDesignTokens: DesignTokens }>(\n ({ odysseyDesignTokens, hasBlockStartPadding }) => ({\n display: \"inline-grid\",\n gridTemplateRows: \"1fr max-content\",\n overflowY: \"auto\",\n paddingBlockStart: hasBlockStartPadding ? odysseyDesignTokens.Spacing2 : 0,\n paddingInline: odysseyDesignTokens.Spacing2,\n }),\n);\n\nconst StyledSectionHeaderContainer = styled(\"li\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"contrastFontColor\",\n})(\n ({\n contrastFontColor,\n odysseyDesignTokens,\n }: {\n contrastFontColor: ContrastColors[\"fontColor\"];\n odysseyDesignTokens: DesignTokens;\n }) => ({\n color: contrastFontColor || odysseyDesignTokens.HueNeutral600,\n marginBlock: `${odysseyDesignTokens.Spacing3}`,\n paddingBlock: odysseyDesignTokens.Spacing1,\n paddingInline: odysseyDesignTokens.Spacing4,\n }),\n);\n\nconst StyledSideNavFooter = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"sideNavBackgroundColor\",\n})(\n ({\n odysseyDesignTokens,\n sideNavBackgroundColor,\n }: {\n odysseyDesignTokens: DesignTokens;\n sideNavBackgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n }) => ({\n backgroundColor: odysseyDesignTokens.HueNeutralWhite,\n flexShrink: 0,\n padding: odysseyDesignTokens.Spacing4,\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } satisfies CSSProperties)),\n }),\n);\n\nconst StyledPersistentSideNavFooter = styled(StyledSideNavFooter, {\n shouldForwardProp: (prop) =>\n prop !== \"isContentScrollable\" &&\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"sideNavBackgroundColor\",\n})(\n ({\n isContentScrollable,\n odysseyDesignTokens,\n sideNavBackgroundColor,\n }: {\n isContentScrollable: boolean;\n odysseyDesignTokens: DesignTokens;\n sideNavBackgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n }) => ({\n transitionProperty: \"box-shadow\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n transitionTiming: odysseyDesignTokens.TransitionTimingMain,\n zIndex: UI_SHELL_BASE_Z_INDEX,\n\n // The box shadow should appear above the footer only if the scrollable region has overflow\n ...(isContentScrollable &&\n ({\n boxShadow: \"0px -8px 8px -8px rgba(39, 39, 39, 0.08)\",\n } satisfies CSSProperties)),\n\n ...(sideNavBackgroundColor &&\n ({\n backgroundColor: sideNavBackgroundColor,\n } satisfies CSSProperties)),\n }),\n);\n\nconst StyledSideNavFooterItemsContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"sideNavContrastColors\",\n})<{\n odysseyDesignTokens: DesignTokens;\n sideNavContrastColors: UiShellColors[\"sideNavContrastColors\"];\n}>(({ odysseyDesignTokens, sideNavContrastColors }) => ({\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n fontSize: odysseyDesignTokens.TypographySizeOverline,\n\n \"a, span\": {\n color: odysseyDesignTokens.HueNeutral600,\n transition: `color ${odysseyDesignTokens.TransitionDurationMain}`,\n\n \"&:visited\": {\n color: odysseyDesignTokens.HueNeutral600,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n\n \"&:hover\": {\n textDecoration: \"none\",\n color: odysseyDesignTokens.HueNeutral900,\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n\n ...(sideNavContrastColors?.fontColor &&\n ({\n color: sideNavContrastColors?.fontColor,\n } satisfies CSSProperties)),\n },\n}));\n\nconst StyledLoadingItemContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n alignItems: \"center\",\n display: \"flex\",\n gap: odysseyDesignTokens.Spacing2,\n paddingBlock: odysseyDesignTokens.Spacing2,\n paddingInline: odysseyDesignTokens.Spacing4,\n}));\n\nconst getHasScrollableContent = (scrollableContainer: HTMLElement) =>\n scrollableContainer.scrollHeight > scrollableContainer.clientHeight;\n\nconst LoadingItem = () => {\n const odysseyDesignTokens: DesignTokens = useOdysseyDesignTokens();\n return (\n <StyledLoadingItemContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Skeleton\n height={odysseyDesignTokens.Spacing4}\n variant=\"circular\"\n width={odysseyDesignTokens.Spacing4}\n />\n <Skeleton variant=\"rounded\" width=\"100%\" />\n </StyledLoadingItemContainer>\n );\n};\n\nconst SideNav = ({\n appName,\n footerComponent,\n footerItems,\n hasCustomFooter,\n hasSessionStorageState,\n isCollapsible,\n isCollapsed = false,\n isCompact,\n isLoading,\n isObtrusive,\n logoProps,\n leavesPaddingStart,\n onCollapse,\n onExpand,\n onSort,\n sideNavItems,\n}: SideNavProps) => {\n const [hasContentScrolled, setHasContentScrolled] = useState(false);\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const [isSideNavToggleHighlighted, setIsSideNavToggleHighlighted] =\n useState(false);\n const [sideNavItemsList, updateSideNavItemsList] = useState(\n sideNavItems || [],\n );\n\n const [isSideNavCollapsedLocalState, setIsSideNavCollapsedLocalState] =\n useState(isCollapsed);\n\n const {\n sessionState: isSideNavCollapsedSessionState,\n setSessionState: setIsSideNavCollapsedSessionState,\n } = useIsSideNavCollapsedSessionStorage(isCollapsed);\n\n const isSideNavCollapsed = hasSessionStorageState\n ? isSideNavCollapsedSessionState\n : isSideNavCollapsedLocalState;\n const setIsSideNavCollapsed = hasSessionStorageState\n ? setIsSideNavCollapsedSessionState\n : setIsSideNavCollapsedLocalState;\n\n const uiShellContext = useUiShellContext();\n const odysseyDesignTokens: DesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const scrollableContentRef = useRef<HTMLUListElement>(null);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null);\n const sideNavRef = useRef<HTMLDivElement>(null);\n\n const { isAtContainerInlineStart } = useElementAtContainerEdge({\n element: sideNavRef.current,\n monitoringElement: sideNavRef.current?.parentElement?.parentElement,\n });\n\n const hasNeighbouringContentAtInlineStart = !isAtContainerInlineStart;\n\n const blankElement = useMemo(() => <div />, []);\n\n // The default value (sideNavItems) passed to useState is ONLY used by the useState hook for\n // the very first value. Subsequent updates to the prop (sideNavItems) need to cause the state\n // to update!\n useEffect(() => updateSideNavItemsList(sideNavItems || []), [sideNavItems]);\n\n // In the case that you can't control the side nav, then it should use whatever state was passed (app control) rather than what's stored in session storage (user control).\n const onMount = useCallback(() => {\n if (!isCollapsible) {\n setIsSideNavCollapsed(isCollapsed);\n }\n }, [isCollapsed, isCollapsible, setIsSideNavCollapsed]);\n\n const onUpdate = useCallback(() => {\n setIsSideNavCollapsed(isCollapsed);\n }, [isCollapsed, setIsSideNavCollapsed]);\n\n useMountLifecycleEffect({\n onMount,\n onUpdate,\n });\n\n useEffect(() => {\n // This is called directly in this effect AND perhaps as a result of the ResizeObserver\n const updateIsContentScrollable = () => {\n if (\n scrollableContentRef.current &&\n scrollableContentRef.current.parentElement\n ) {\n setIsContentScrollable(\n getHasScrollableContent(scrollableContentRef.current.parentElement),\n );\n }\n };\n\n // If the window is resized, we may need to re-determine if the scrollable container has overflow\n // Setup a ResizeObserver to know if the size of the scrollableContent changes\n let resizeObserverDebounceTimer: ReturnType<typeof requestAnimationFrame>;\n if (!resizeObserverRef.current) {\n resizeObserverRef.current = new ResizeObserver(() => {\n cancelAnimationFrame(resizeObserverDebounceTimer);\n resizeObserverDebounceTimer = requestAnimationFrame(\n updateIsContentScrollable,\n );\n });\n }\n\n if (resizeObserverRef.current && scrollableContentRef.current) {\n // Observe the <ul> itself (in case it changes size due to the content expanding)\n resizeObserverRef.current.observe(scrollableContentRef.current);\n if (scrollableContentRef.current.parentElement) {\n // ALSO observe the parent (<SideNavScrollableContainer>) in case the window resizes\n resizeObserverRef.current.observe(\n scrollableContentRef.current.parentElement,\n );\n }\n }\n\n // Determine if the scrollable container has overflow or not on load\n updateIsContentScrollable();\n\n // Finally, we only want to have the border on the bottom of the header iff the user has scrolled\n // the scrollable container\n if (!intersectionObserverRef.current && scrollableContentRef.current) {\n intersectionObserverRef.current = new IntersectionObserver(\n (entries) => {\n // If isIntersecting is true, then we're at the top of the scroll container\n // If isIntersecting is false, some scrolling has occurred.\n // The entries must be sorted by time and we only really need to look at the latest one\n const isIntersecting = entries\n .slice()\n .sort((a, b) => a.time - b.time)\n .at(0)?.isIntersecting;\n setHasContentScrolled(!isIntersecting);\n },\n {\n root: scrollableContentRef.current.parentElement,\n threshold: 1.0,\n },\n );\n }\n\n if (intersectionObserverRef.current && scrollableContentRef.current) {\n const ulElement = scrollableContentRef.current;\n const [liElement] = Array.from(ulElement?.children || []);\n\n if (liElement) {\n intersectionObserverRef.current.observe(liElement);\n }\n }\n\n // Cleanup when unmounted:\n return () => {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.disconnect();\n resizeObserverRef.current = null;\n }\n if (intersectionObserverRef.current) {\n intersectionObserverRef.current.disconnect();\n intersectionObserverRef.current = null;\n }\n cancelAnimationFrame(resizeObserverDebounceTimer); // Ensure timer is cleared on component unmount\n };\n }, [sideNavItemsList]);\n\n const scrollIntoViewRef = useRef<HTMLLIElement>(null);\n /**\n * Look through the sideNavItems and determine which is the first node\n * with isSelected. This should be the node we set a ref on in order to\n * call scrollIntoView in the effect\n */\n const firstSideNavItemIdWithIsSelected = useMemo(() => {\n const flattenedItems = flattenNestedItems(sideNavItemsList);\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 setSelectedItem = useCallback(\n (selectedItemId: string) => {\n // Recursive function to update nested items\n const updateNestedSelection = (items: SideNavItem[]): SideNavItem[] => {\n return items.map((item) => {\n if (item.nestedNavItems) {\n return {\n ...item,\n isSelected: item.id === selectedItemId,\n nestedNavItems: updateNestedSelection(item.nestedNavItems),\n };\n }\n\n return {\n ...item,\n isSelected: item.id === selectedItemId,\n };\n });\n };\n\n const updatedSideNavItems = updateNestedSelection(sideNavItemsList);\n updateSideNavItemsList(updatedSideNavItems);\n\n if (isCollapsed || isObtrusive) {\n if (isCollapsible) {\n uiShellContext?.closeSideNavMenu();\n } else {\n onCollapse?.();\n }\n }\n },\n [\n isCollapsed,\n isCollapsible,\n isObtrusive,\n onCollapse,\n sideNavItemsList,\n uiShellContext,\n ],\n );\n\n const createAccordionContextValue = useCallback(\n (depth: number) => ({\n depth,\n }),\n [],\n );\n\n const createLeafItemContextValue = useCallback(\n (depth: number, isSortable?: boolean) => ({\n isCompact,\n depth,\n isSortable,\n absolutePaddingStart: leavesPaddingStart,\n }),\n [isCompact, leavesPaddingStart],\n );\n\n const renderSideNavItem = (item: SideNavItem, depth: number = 1) => {\n const {\n href,\n id,\n isDefaultExpanded,\n isDisabled,\n isExpanded,\n isSectionHeader,\n label,\n startIcon,\n nestedNavItems,\n onChange,\n isSortable,\n translate,\n } = item;\n\n if (isSectionHeader) {\n return (\n <ErrorBoundary fallback={blankElement} key={id}>\n <StyledSectionHeaderContainer\n contrastFontColor={uiShellContext?.sideNavContrastColors?.fontColor}\n id={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <Overline component=\"h3\">{label}</Overline>\n </StyledSectionHeaderContainer>\n </ErrorBoundary>\n );\n } else if (nestedNavItems && nestedNavItems.length > 0) {\n // Recursive case: item has nested children - ALWAYS render as accordion\n const nestedChildren = (\n <StyledSideNavListContainer role=\"presentation\">\n {isSortable ? (\n <SideNavSortableList\n depth={depth + 1}\n items={nestedNavItems}\n onChange={setSortedItems}\n parentId={item.id}\n processSideNavItems={processSideNavItems}\n />\n ) : (\n processSideNavItems(nestedNavItems, depth + 1).map(\n (item) => item.sortableItem.navItem,\n )\n )}\n </StyledSideNavListContainer>\n );\n\n return href ? (\n <ErrorBoundary fallback={blankElement} key={id}>\n <SideNavItemContent\n {...item}\n href={href}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(item.id)}\n startIcon={item.startIcon}\n />\n\n <StyledSideNavListItem\n aria-disabled={isDisabled}\n disabled={isDisabled}\n id={`${id}-items`}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {nestedChildren}\n </StyledSideNavListItem>\n </ErrorBoundary>\n ) : (\n <ErrorBoundary fallback={blankElement} key={id}>\n <StyledSideNavListItem\n aria-disabled={isDisabled}\n disabled={isDisabled}\n id={id}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavItemContentContext.Provider\n key={id}\n value={createAccordionContextValue(depth)}\n >\n <NavAccordion\n isCompact={isCompact}\n isDefaultExpanded={isDefaultExpanded}\n isDisabled={isDisabled}\n isExpanded={isExpanded}\n label={label}\n onChange={onChange}\n startIcon={startIcon}\n >\n {nestedChildren}\n </NavAccordion>\n </SideNavItemContentContext.Provider>\n </StyledSideNavListItem>\n </ErrorBoundary>\n );\n } else {\n // Base case: leaf item with no children\n return (\n <ErrorBoundary fallback={blankElement} key={id}>\n <SideNavItemContentContext.Provider\n key={id}\n value={createLeafItemContextValue(depth, isSortable)}\n >\n <SideNavItemContent\n {...item}\n onItemSelected={setSelectedItem}\n scrollRef={getRefIfThisIsFirstNodeWithIsSelected(id)}\n startIcon={startIcon}\n translate={translate}\n />\n </SideNavItemContentContext.Provider>\n </ErrorBoundary>\n );\n }\n };\n\n const processSideNavItems = (\n items: SideNavItem[],\n depth: number = 1,\n ): (SideNavItem & { sortableItem: BaseItem })[] => {\n return items?.map((item) => ({\n ...item,\n sortableItem: {\n id: item.id,\n isSelected: item.isSelected,\n isDisabled: item.isDisabled,\n isSortable: item.isSortable,\n navItem: renderSideNavItem(item, depth),\n },\n }));\n };\n\n const sideNavExpandClickHandler = useCallback(() => {\n setIsSideNavCollapsed((isSideNavCollapsed) => {\n if (isSideNavCollapsed) {\n onExpand?.();\n } else {\n onCollapse?.();\n }\n\n return !isSideNavCollapsed;\n });\n }, [onCollapse, onExpand, setIsSideNavCollapsed]);\n\n const sideNavExpandKeyHandler = useCallback<\n KeyboardEventHandler<HTMLButtonElement>\n >(\n (event) => {\n if (event?.key === \"Enter\" || event?.code === \"Space\") {\n event.preventDefault();\n sideNavExpandClickHandler();\n }\n },\n [sideNavExpandClickHandler],\n );\n\n useEffect(() => {\n const unsubscribe = uiShellContext?.subscribeToCloseSideNavMenu(() => {\n onCollapse?.();\n setIsSideNavCollapsed(true);\n });\n\n return () => {\n unsubscribe?.();\n };\n }, [onCollapse, setIsSideNavCollapsed, uiShellContext]);\n\n const setSortedItems = useCallback(\n (\n parentId: string,\n activeId: UniqueIdentifier,\n activeIndex: number,\n overIndex: number,\n ) => {\n const sortedSideNavItems = sideNavItemsList.map((item) =>\n item.id === parentId && item.nestedNavItems\n ? {\n ...item,\n nestedNavItems: arrayMove(\n item.nestedNavItems,\n activeIndex,\n overIndex,\n ),\n }\n : item,\n );\n updateSideNavItemsList(sortedSideNavItems);\n onSort?.(sortedSideNavItems, parentId, activeId, activeIndex, overIndex);\n },\n [onSort, sideNavItemsList],\n );\n\n const onSideNavToggleButtonHighlight = useCallback<\n NonNullable<SideNavToggleButtonProps[\"onHighlight\"]>\n >((isHighlighted) => {\n setIsSideNavToggleHighlighted(isHighlighted);\n }, []);\n\n return (\n <StyledSideNavContainer\n aria-label={t(\"navigation.label\")}\n backgroundColor={uiShellContext?.sideNavBackgroundColor}\n hasNeighbouringContentAtInlineStart={hasNeighbouringContentAtInlineStart}\n id=\"side-nav-expandable\"\n isAppContentWhiteBackground={\n uiShellContext?.appBackgroundColor ===\n odysseyDesignTokens.HueNeutralWhite\n }\n isSideNavCollapsed={isSideNavCollapsed}\n isSideNavToggleHighlighted={isSideNavToggleHighlighted}\n odysseyDesignTokens={odysseyDesignTokens}\n ref={sideNavRef}\n >\n {isCollapsible && (\n <StyledSideNavToggleButtonContainer\n hasNeighbouringContentAtInlineStart={\n hasNeighbouringContentAtInlineStart\n }\n isSideNavCollapsed={isSideNavCollapsed}\n isSideNavToggleHighlighted={isSideNavToggleHighlighted}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <SideNavToggleButton\n ariaControls=\"side-nav-expandable\"\n clickAreaPadding={\n isSideNavCollapsed && !hasNeighbouringContentAtInlineStart\n ? SIDE_NAV_TOGGLE_ICON_SIZE / 2\n : 0\n }\n isSideNavCollapsed={isSideNavCollapsed}\n onClick={sideNavExpandClickHandler}\n onHighlight={onSideNavToggleButtonHighlight}\n onKeyDown={sideNavExpandKeyHandler}\n />\n </StyledSideNavToggleButtonContainer>\n )}\n\n <OdysseyThemeProvider>\n <StyledCollapsibleContent\n data-se=\"collapsible-region\"\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <StyledOpacityTransitionContainer\n isSideNavCollapsed={isSideNavCollapsed}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {appName || isLoading || logoProps ? (\n <StyledSideNavHeaderContainer\n borderColor={uiShellContext?.sideNavContrastColors?.fontColor}\n hasContentScrolled={hasContentScrolled}\n odysseyDesignTokens={odysseyDesignTokens}\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 data-se=\"scrollable-region\"\n hasBlockStartPadding={!appName}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <StyledSideNavListContainer\n ref={scrollableContentRef}\n role=\"none\"\n >\n {isLoading\n ? Array(6)\n .fill(null)\n .map((_, index) => <LoadingItem key={index} />)\n : processSideNavItems(sideNavItemsList).map(\n (item) => item.sortableItem.navItem,\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":[]}
|