@okta/odyssey-react-mui 1.32.0 → 1.32.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/theme/components.cjs +6 -0
- package/dist/cjs/theme/components.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNav.cjs +2 -1
- package/dist/cjs/ui-shell/SideNav/SideNav.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavItemContent.cjs +36 -11
- package/dist/cjs/ui-shell/SideNav/SideNavItemContent.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavItemLinkContent.cjs +3 -1
- package/dist/cjs/ui-shell/SideNav/SideNavItemLinkContent.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavLogo.cjs +14 -2
- package/dist/cjs/ui-shell/SideNav/SideNavLogo.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavToggleButton.cjs +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavToggleButton.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/types.cjs.map +1 -1
- package/dist/cjs/ui-shell/UiShellContent.cjs +48 -32
- package/dist/cjs/ui-shell/UiShellContent.cjs.map +1 -1
- package/dist/cjs/ui-shell/index.cjs +9 -1
- package/dist/cjs/ui-shell/index.cjs.map +1 -1
- package/dist/cjs/useContrastMode.cjs +1 -1
- package/dist/cjs/useContrastMode.cjs.map +1 -1
- package/dist/esm/theme/components.js +6 -0
- package/dist/esm/theme/components.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNav.js +2 -1
- package/dist/esm/ui-shell/SideNav/SideNav.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavItemContent.js +37 -12
- package/dist/esm/ui-shell/SideNav/SideNavItemContent.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavItemLinkContent.js +3 -1
- package/dist/esm/ui-shell/SideNav/SideNavItemLinkContent.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavLogo.js +14 -2
- package/dist/esm/ui-shell/SideNav/SideNavLogo.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavToggleButton.js +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavToggleButton.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/types.js.map +1 -1
- package/dist/esm/ui-shell/UiShellContent.js +45 -31
- package/dist/esm/ui-shell/UiShellContent.js.map +1 -1
- package/dist/esm/ui-shell/index.js +1 -0
- package/dist/esm/ui-shell/index.js.map +1 -1
- package/dist/esm/useContrastMode.js +2 -2
- package/dist/esm/useContrastMode.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.scss +1 -1
- package/dist/tsconfig.production.tsbuildinfo +1 -1
- package/dist/types/theme/components.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNav.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavItemContent.d.ts +9 -7
- package/dist/types/ui-shell/SideNav/SideNavItemContent.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavItemLinkContent.d.ts +1 -1
- package/dist/types/ui-shell/SideNav/SideNavItemLinkContent.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavLogo.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/types.d.ts +5 -1
- package/dist/types/ui-shell/SideNav/types.d.ts.map +1 -1
- package/dist/types/ui-shell/UiShellContent.d.ts +8 -2
- package/dist/types/ui-shell/UiShellContent.d.ts.map +1 -1
- package/dist/types/ui-shell/index.d.ts +1 -1
- package/dist/types/ui-shell/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/.browserslistrc +0 -1
- package/.svgrrc.cjs +0 -13
- package/CHANGELOG.md +0 -1490
- package/babel.config.cjs +0 -112
- package/i18n.config.json +0 -10
- package/scripts/generateIconsIndex.ts +0 -49
- package/scripts/generateTestSelectorsJson.ts +0 -33
- package/scripts/properties-to-ts.ts +0 -111
- package/src/@types/i18next.d.ts +0 -24
- package/src/@types/properties.d.ts +0 -292
- package/src/@types/react-augment.d.ts +0 -22
- package/src/Accordion.tsx +0 -117
- package/src/Autocomplete.tsx +0 -321
- package/src/Badge.tsx +0 -112
- package/src/Banner.tsx +0 -112
- package/src/Box.tsx +0 -44
- package/src/Breadcrumbs.tsx +0 -221
- package/src/Buttons/BaseButton.tsx +0 -250
- package/src/Buttons/BaseMenuButton.tsx +0 -342
- package/src/Buttons/Button.tsx +0 -30
- package/src/Buttons/ButtonContext.tsx +0 -23
- package/src/Buttons/MenuButton.tsx +0 -33
- package/src/Buttons/MenuContext.ts +0 -25
- package/src/Buttons/MenuItem.tsx +0 -103
- package/src/Buttons/index.ts +0 -25
- package/src/Callout.tsx +0 -176
- package/src/Card.tsx +0 -186
- package/src/Checkbox.tsx +0 -261
- package/src/CheckboxGroup.tsx +0 -127
- package/src/CircularProgress.tsx +0 -42
- package/src/CssBaseline.tsx +0 -20
- package/src/DataTable/DataTable.tsx +0 -968
- package/src/DataTable/DataTableRowActions.tsx +0 -132
- package/src/DataTable/DataTableSettings.tsx +0 -136
- package/src/DataTable/constants.ts +0 -13
- package/src/DataTable/index.tsx +0 -28
- package/src/DataTable/reorderDataRowsLocally.tsx +0 -48
- package/src/DataTable/useRowReordering.tsx +0 -232
- package/src/DataTable/useScrollIndication.tsx +0 -125
- package/src/DatePickers/DateField.tsx +0 -267
- package/src/DatePickers/DateFieldActionBar.tsx +0 -65
- package/src/DatePickers/DateFieldLocalizationProvider.tsx +0 -46
- package/src/DatePickers/DatePicker.test.tsx +0 -66
- package/src/DatePickers/DatePicker.tsx +0 -299
- package/src/DatePickers/DatePicker.types.d.ts +0 -14
- package/src/DatePickers/TimeZonePicker.tsx +0 -59
- package/src/DatePickers/datePickerTheme.tsx +0 -377
- package/src/DatePickers/index.ts +0 -15
- package/src/DatePickers/useDateFieldsTranslations.ts +0 -94
- package/src/DatePickers/useOdysseyDateFields.ts +0 -303
- package/src/Dialog.tsx +0 -178
- package/src/Drawer.tsx +0 -255
- package/src/EmptyState.tsx +0 -79
- package/src/ErrorMessageList.tsx +0 -56
- package/src/Field.tsx +0 -189
- package/src/FieldComponentProps.ts +0 -66
- package/src/FieldError.tsx +0 -59
- package/src/FieldHint.tsx +0 -72
- package/src/FieldLabel.tsx +0 -67
- package/src/Fieldset.tsx +0 -116
- package/src/FieldsetContext.tsx +0 -23
- package/src/FileUploader/FileUploadIllustration.tsx +0 -66
- package/src/FileUploader/FileUploadPreview.tsx +0 -151
- package/src/FileUploader/FileUploader.tsx +0 -311
- package/src/FileUploader/index.ts +0 -13
- package/src/Form.tsx +0 -185
- package/src/FormCheckedProps.ts +0 -59
- package/src/HintLink.tsx +0 -28
- package/src/HtmlProps.ts +0 -112
- package/src/IconWithTooltip.tsx +0 -90
- package/src/Link.tsx +0 -115
- package/src/MuiPropsChild.tsx +0 -42
- package/src/MuiPropsContext.ts +0 -18
- package/src/NativeSelect.tsx +0 -249
- package/src/NullElement.tsx +0 -13
- package/src/OdysseyCacheProvider.test.tsx +0 -39
- package/src/OdysseyCacheProvider.tsx +0 -86
- package/src/OdysseyDesignTokensContext.tsx +0 -23
- package/src/OdysseyProvider.tsx +0 -92
- package/src/OdysseyThemeProvider.test.tsx +0 -211
- package/src/OdysseyThemeProvider.tsx +0 -109
- package/src/OdysseyTranslationProvider.test.tsx +0 -95
- package/src/OdysseyTranslationProvider.tsx +0 -77
- package/src/OdysseyTranslationProvider.types.ts +0 -47
- package/src/Pagination/Pagination.test.tsx +0 -327
- package/src/Pagination/Pagination.tsx +0 -417
- package/src/Pagination/constants.ts +0 -13
- package/src/Pagination/index.ts +0 -15
- package/src/Pagination/usePagination.ts +0 -45
- package/src/PasswordField.tsx +0 -253
- package/src/Radio.tsx +0 -199
- package/src/RadioGroup.tsx +0 -164
- package/src/ScreenReaderText.tsx +0 -53
- package/src/SearchField.tsx +0 -240
- package/src/Select.tsx +0 -576
- package/src/Stack.tsx +0 -56
- package/src/Status.tsx +0 -67
- package/src/Surface.tsx +0 -61
- package/src/SvgIcon.ts +0 -22
- package/src/Switch.tsx +0 -425
- package/src/Tabs.tsx +0 -259
- package/src/Tag.tsx +0 -317
- package/src/TagList.tsx +0 -55
- package/src/TagListContext.tsx +0 -23
- package/src/TextField.tsx +0 -298
- package/src/Toast.tsx +0 -151
- package/src/ToastStack.tsx +0 -43
- package/src/Tooltip.tsx +0 -61
- package/src/Typography.test.tsx +0 -26
- package/src/Typography.tsx +0 -474
- package/src/createContrastColors.ts +0 -112
- package/src/createUniqueAlphabeticalId.test.ts +0 -22
- package/src/createUniqueAlphabeticalId.ts +0 -17
- package/src/createUniqueId.test.ts +0 -22
- package/src/createUniqueId.ts +0 -17
- package/src/getTypedObjectKeys.ts +0 -15
- package/src/hexToRgb.ts +0 -40
- package/src/i18n.ts +0 -110
- package/src/icons.generated/Add.tsx +0 -44
- package/src/icons.generated/AddCircle.tsx +0 -46
- package/src/icons.generated/Apps.tsx +0 -44
- package/src/icons.generated/ArrowBottom.tsx +0 -46
- package/src/icons.generated/ArrowDown.tsx +0 -46
- package/src/icons.generated/ArrowLeft.tsx +0 -46
- package/src/icons.generated/ArrowLowerLeft.tsx +0 -46
- package/src/icons.generated/ArrowLowerRight.tsx +0 -46
- package/src/icons.generated/ArrowRight.tsx +0 -46
- package/src/icons.generated/ArrowTop.tsx +0 -46
- package/src/icons.generated/ArrowUnsorted.tsx +0 -46
- package/src/icons.generated/ArrowUp.tsx +0 -46
- package/src/icons.generated/ArrowUpperLeft.tsx +0 -46
- package/src/icons.generated/ArrowUpperRight.tsx +0 -46
- package/src/icons.generated/Bug.tsx +0 -44
- package/src/icons.generated/Calendar.tsx +0 -46
- package/src/icons.generated/Call.tsx +0 -44
- package/src/icons.generated/Chat.tsx +0 -44
- package/src/icons.generated/Check.tsx +0 -44
- package/src/icons.generated/CheckCircleFilled.tsx +0 -47
- package/src/icons.generated/ChevronDown.tsx +0 -46
- package/src/icons.generated/ChevronLeft.tsx +0 -46
- package/src/icons.generated/ChevronRight.tsx +0 -46
- package/src/icons.generated/ChevronUp.tsx +0 -46
- package/src/icons.generated/Clock.tsx +0 -44
- package/src/icons.generated/Close.tsx +0 -44
- package/src/icons.generated/CloseCircleFilled.tsx +0 -47
- package/src/icons.generated/CollapseLeft.tsx +0 -46
- package/src/icons.generated/CollapseRight.tsx +0 -46
- package/src/icons.generated/Copy.tsx +0 -44
- package/src/icons.generated/Custom.tsx +0 -50
- package/src/icons.generated/DangerDiamond.tsx +0 -46
- package/src/icons.generated/DangerDiamondFilled.tsx +0 -47
- package/src/icons.generated/Delete.tsx +0 -44
- package/src/icons.generated/Deny.tsx +0 -44
- package/src/icons.generated/Devices.tsx +0 -46
- package/src/icons.generated/Directory.tsx +0 -46
- package/src/icons.generated/Documentation.tsx +0 -46
- package/src/icons.generated/Download.tsx +0 -46
- package/src/icons.generated/DragIndicator.tsx +0 -46
- package/src/icons.generated/Duo.tsx +0 -62
- package/src/icons.generated/Edit.tsx +0 -44
- package/src/icons.generated/Email.tsx +0 -49
- package/src/icons.generated/ExpandLeft.tsx +0 -46
- package/src/icons.generated/ExpandRight.tsx +0 -46
- package/src/icons.generated/ExternalLink.tsx +0 -44
- package/src/icons.generated/Fido2.tsx +0 -72
- package/src/icons.generated/Filter.tsx +0 -44
- package/src/icons.generated/Folder.tsx +0 -44
- package/src/icons.generated/Globe.tsx +0 -44
- package/src/icons.generated/GoogleAuth.tsx +0 -70
- package/src/icons.generated/Grid.tsx +0 -47
- package/src/icons.generated/Group.tsx +0 -44
- package/src/icons.generated/Hide.tsx +0 -44
- package/src/icons.generated/Home.tsx +0 -44
- package/src/icons.generated/Idp.tsx +0 -54
- package/src/icons.generated/InformationCircle.tsx +0 -47
- package/src/icons.generated/InformationCircleFilled.tsx +0 -47
- package/src/icons.generated/Link.tsx +0 -44
- package/src/icons.generated/List.tsx +0 -44
- package/src/icons.generated/Lock.tsx +0 -44
- package/src/icons.generated/More.tsx +0 -44
- package/src/icons.generated/Notification.tsx +0 -46
- package/src/icons.generated/OktaVerify.tsx +0 -46
- package/src/icons.generated/OnPremMfa.tsx +0 -52
- package/src/icons.generated/OneTimePassword.tsx +0 -65
- package/src/icons.generated/Password.tsx +0 -80
- package/src/icons.generated/Pause.tsx +0 -44
- package/src/icons.generated/QuestionCircle.tsx +0 -46
- package/src/icons.generated/QuestionCircleFilled.tsx +0 -47
- package/src/icons.generated/Refresh.tsx +0 -46
- package/src/icons.generated/Reset.tsx +0 -44
- package/src/icons.generated/Resume.tsx +0 -44
- package/src/icons.generated/Search.tsx +0 -44
- package/src/icons.generated/SecurityQuestion.tsx +0 -51
- package/src/icons.generated/Server.tsx +0 -44
- package/src/icons.generated/Settings.tsx +0 -46
- package/src/icons.generated/Show.tsx +0 -44
- package/src/icons.generated/SmartCard.tsx +0 -65
- package/src/icons.generated/Sms.tsx +0 -55
- package/src/icons.generated/Subtract.tsx +0 -46
- package/src/icons.generated/SymantecVip.tsx +0 -52
- package/src/icons.generated/Sync.tsx +0 -44
- package/src/icons.generated/ThumbsDown.tsx +0 -46
- package/src/icons.generated/ThumbsUp.tsx +0 -46
- package/src/icons.generated/Unlock.tsx +0 -44
- package/src/icons.generated/Upload.tsx +0 -44
- package/src/icons.generated/User.tsx +0 -44
- package/src/icons.generated/Video.tsx +0 -44
- package/src/icons.generated/VoiceCall.tsx +0 -62
- package/src/icons.generated/Warning.tsx +0 -46
- package/src/icons.generated/WarningFilled.tsx +0 -46
- package/src/icons.generated/Yubikey.tsx +0 -44
- package/src/icons.generated/index.ts +0 -107
- package/src/index.ts +0 -118
- package/src/inputUtils.ts +0 -80
- package/src/labs/AppTile.tsx +0 -421
- package/src/labs/DataFilters.tsx +0 -871
- package/src/labs/DataTable.tsx +0 -877
- package/src/labs/DataTablePagination.tsx +0 -88
- package/src/labs/DataView/BulkActionsMenu.tsx +0 -98
- package/src/labs/DataView/CardLayoutContent.tsx +0 -272
- package/src/labs/DataView/DataCard.tsx +0 -357
- package/src/labs/DataView/DataTable.tsx +0 -128
- package/src/labs/DataView/DataView.test.tsx +0 -1168
- package/src/labs/DataView/DataView.tsx +0 -504
- package/src/labs/DataView/DetailPanel.tsx +0 -31
- package/src/labs/DataView/LayoutSwitcher.tsx +0 -72
- package/src/labs/DataView/RowActions.tsx +0 -125
- package/src/labs/DataView/TableLayoutContent.tsx +0 -500
- package/src/labs/DataView/TableSettings.tsx +0 -144
- package/src/labs/DataView/componentTypes.ts +0 -129
- package/src/labs/DataView/constants.tsx +0 -28
- package/src/labs/DataView/dataTypes.ts +0 -83
- package/src/labs/DataView/fetchData.ts +0 -49
- package/src/labs/DataView/index.ts +0 -19
- package/src/labs/DataView/tableConstants.tsx +0 -137
- package/src/labs/DataView/testSupportData.tsx +0 -301
- package/src/labs/DataView/useFilterConversion.ts +0 -88
- package/src/labs/DatePickers/DateTimeField.tsx +0 -267
- package/src/labs/DatePickers/DateTimePicker.test.tsx +0 -70
- package/src/labs/DatePickers/DateTimePicker.tsx +0 -303
- package/src/labs/DatePickers/dateTimePickerTheme.ts +0 -216
- package/src/labs/DatePickers/index.ts +0 -13
- package/src/labs/GroupPicker.tsx +0 -261
- package/src/labs/OdysseyPickers/ComposablePicker.test.tsx +0 -32
- package/src/labs/OdysseyPickers/ComposablePicker.tsx +0 -188
- package/src/labs/OdysseyPickers/Picker.tsx +0 -381
- package/src/labs/OdysseyPickers/PickerVirtualizationListBox.tsx +0 -192
- package/src/labs/OdysseyPickers/PickerWithOptionAdornment.tsx +0 -429
- package/src/labs/OdysseyPickers/index.ts +0 -15
- package/src/labs/PageTemplate/Layout.tsx +0 -85
- package/src/labs/PageTemplate/PageTemplate.tsx +0 -234
- package/src/labs/PageTemplate/index.ts +0 -14
- package/src/labs/PaginatedTable.tsx +0 -290
- package/src/labs/README.md +0 -46
- package/src/labs/StaticTable.tsx +0 -131
- package/src/labs/UserProfile.tsx +0 -104
- package/src/labs/UserProfileMenuButton.tsx +0 -86
- package/src/labs/index.ts +0 -47
- package/src/labs/materialReactTableTypes.tsx +0 -19
- package/src/properties/odyssey-react-mui.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_cs.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_da.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_de.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_el.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_es.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_fi.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_fr.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ht.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_hu.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_id.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_it.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ja.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ko.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ms.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_nb.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_nl_NL.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ok_PL.properties +0 -126
- package/src/properties/translations/odyssey-react-mui_ok_SK.properties +0 -126
- package/src/properties/translations/odyssey-react-mui_pl.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_pt_BR.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ro.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ru.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_sv.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_th.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_tr.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_uk.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_vi.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_zh_CN.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_zh_TW.properties +0 -140
- package/src/properties/ts/odyssey-react-mui.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_cs.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_da.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_de.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_el.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_es.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_fi.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_fr.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ht.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_hu.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_id.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_it.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ja.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ko.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ms.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_nb.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_nl_NL.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ok_PL.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ok_SK.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_pl.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_pt_BR.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ro.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ru.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_sv.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_th.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_tr.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_uk.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_vi.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_zh_CN.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_zh_TW.ts +0 -1
- package/src/remUtils.ts +0 -27
- package/src/shadow-dom/index.ts +0 -13
- package/src/shadow-dom/shadow-dom.test.ts +0 -24
- package/src/shadow-dom/shadow-dom.ts +0 -54
- package/src/test-selectors/getByQuerySelector.ts +0 -176
- package/src/test-selectors/getComputedAccessibleErrorMessageText.ts +0 -52
- package/src/test-selectors/getComputedAccessibleText.ts +0 -36
- package/src/test-selectors/index.ts +0 -15
- package/src/test-selectors/interpolateString.ts +0 -41
- package/src/test-selectors/linkedHtmlSelectors.ts +0 -73
- package/src/test-selectors/queryOdysseySelector.ts +0 -36
- package/src/test-selectors/querySelector.ts +0 -249
- package/src/test-selectors/sanityChecks.ts +0 -53
- package/src/test-selectors/testSelector.ts +0 -143
- package/src/theme/components.tsx +0 -3275
- package/src/theme/components.types.ts +0 -111
- package/src/theme/createOdysseyMuiTheme.ts +0 -54
- package/src/theme/index.ts +0 -13
- package/src/theme/mixins.ts +0 -29
- package/src/theme/mixins.types.ts +0 -31
- package/src/theme/palette.ts +0 -112
- package/src/theme/palette.types.ts +0 -24
- package/src/theme/shape.ts +0 -31
- package/src/theme/spacing.ts +0 -34
- package/src/theme/theme.ts +0 -13
- package/src/theme/typography.ts +0 -137
- package/src/theme/typography.types.ts +0 -41
- package/src/theme/useContrastMode.test.tsx +0 -504
- package/src/ui-shell/AppSwitcher/AppSwitcher.tsx +0 -94
- package/src/ui-shell/AppSwitcher/AppSwitcherApp.tsx +0 -146
- package/src/ui-shell/AppSwitcher/OktaAura.tsx +0 -50
- package/src/ui-shell/AppSwitcher/index.ts +0 -13
- package/src/ui-shell/SideNav/CollapseIcon.tsx +0 -34
- package/src/ui-shell/SideNav/HandleIcon.tsx +0 -35
- package/src/ui-shell/SideNav/NavAccordion.tsx +0 -243
- package/src/ui-shell/SideNav/OktaLogo.tsx +0 -34
- package/src/ui-shell/SideNav/SideNav.test.tsx +0 -326
- package/src/ui-shell/SideNav/SideNav.tsx +0 -810
- package/src/ui-shell/SideNav/SideNavFooterContent.tsx +0 -85
- package/src/ui-shell/SideNav/SideNavHeader.tsx +0 -134
- package/src/ui-shell/SideNav/SideNavItemContent.tsx +0 -402
- package/src/ui-shell/SideNav/SideNavItemContentContext.tsx +0 -29
- package/src/ui-shell/SideNav/SideNavItemLinkContent.tsx +0 -90
- package/src/ui-shell/SideNav/SideNavLogo.tsx +0 -65
- package/src/ui-shell/SideNav/SideNavToggleButton.tsx +0 -272
- package/src/ui-shell/SideNav/SortableList/SortableItem.tsx +0 -237
- package/src/ui-shell/SideNav/SortableList/SortableList.tsx +0 -132
- package/src/ui-shell/SideNav/SortableList/SortableOverlay.tsx +0 -34
- package/src/ui-shell/SideNav/index.ts +0 -16
- package/src/ui-shell/SideNav/types.ts +0 -224
- package/src/ui-shell/TopNav/TopNav.tsx +0 -109
- package/src/ui-shell/TopNav/TopNavLinksList.tsx +0 -68
- package/src/ui-shell/TopNav/TopNavListItem.tsx +0 -209
- package/src/ui-shell/TopNav/index.ts +0 -13
- package/src/ui-shell/UiShell.test.tsx +0 -366
- package/src/ui-shell/UiShell.tsx +0 -153
- package/src/ui-shell/UiShellContent.tsx +0 -350
- package/src/ui-shell/UiShellProvider.tsx +0 -103
- package/src/ui-shell/bufferLatest.test.ts +0 -79
- package/src/ui-shell/bufferLatest.ts +0 -64
- package/src/ui-shell/createMessageBus.test.ts +0 -115
- package/src/ui-shell/createMessageBus.ts +0 -53
- package/src/ui-shell/createStore.test.ts +0 -103
- package/src/ui-shell/createStore.ts +0 -37
- package/src/ui-shell/index.ts +0 -21
- package/src/ui-shell/renderUiShell.test.tsx +0 -203
- package/src/ui-shell/renderUiShell.tsx +0 -158
- package/src/ui-shell/useHasUiShell.ts +0 -25
- package/src/ui-shell/useScrollState.ts +0 -59
- package/src/useAutocomplete.tsx +0 -184
- package/src/useContrastMode.tsx +0 -143
- package/src/useNormalizedKey.ts +0 -17
- package/src/useUniqueAlphabeticalId.ts +0 -21
- package/src/useUniqueId.ts +0 -21
- package/src/web-component/createReactRootElements.test.ts +0 -40
- package/src/web-component/createReactRootElements.ts +0 -39
- package/src/web-component/index.ts +0 -13
- package/src/web-component/renderReactInWebComponent.test.tsx +0 -128
- package/src/web-component/renderReactInWebComponent.ts +0 -135
- package/tsconfig.json +0 -16
- package/tsconfig.production.json +0 -13
- package/vitest.config.ts +0 -36
- package/vitest.setup.ts +0 -32
package/src/ui-shell/UiShell.tsx
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
3
|
-
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
4
|
-
*
|
|
5
|
-
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7
|
-
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
8
|
-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
-
*
|
|
10
|
-
* See the License for the specific language governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
memo,
|
|
15
|
-
ReactNode,
|
|
16
|
-
useEffect,
|
|
17
|
-
useState,
|
|
18
|
-
type SetStateAction,
|
|
19
|
-
} from "react";
|
|
20
|
-
import { ErrorBoundary } from "react-error-boundary";
|
|
21
|
-
|
|
22
|
-
import { CssBaseline } from "../CssBaseline.js";
|
|
23
|
-
import { OdysseyProvider } from "../OdysseyProvider.js";
|
|
24
|
-
import {
|
|
25
|
-
UiShellContent,
|
|
26
|
-
type UiShellContentProps,
|
|
27
|
-
type UiShellNavComponentProps,
|
|
28
|
-
} from "./UiShellContent.js";
|
|
29
|
-
import { type ReactRootElements } from "../web-component/renderReactInWebComponent.js";
|
|
30
|
-
import { UiShellProvider } from "./UiShellProvider.js";
|
|
31
|
-
|
|
32
|
-
export const defaultComponentProps: UiShellNavComponentProps = {
|
|
33
|
-
sideNavProps: undefined,
|
|
34
|
-
topNavProps: undefined,
|
|
35
|
-
} as const;
|
|
36
|
-
|
|
37
|
-
export type UiShellProps = {
|
|
38
|
-
/**
|
|
39
|
-
* Notifies when subscribed to prop changes.
|
|
40
|
-
*
|
|
41
|
-
* UI Shell listens to prop updates, and it won't subscribe synchronously. Because of that, this callback notifies when that subscription is ready.
|
|
42
|
-
*/
|
|
43
|
-
onSubscriptionCreated: () => void;
|
|
44
|
-
/**
|
|
45
|
-
* This is a callback that provides a subscriber callback to listen for changes to state.
|
|
46
|
-
* It allows UI Shell to listen for state changes.
|
|
47
|
-
*
|
|
48
|
-
* The props coming in this callback go directly to a React state; therefore, it shares the same signature and provides a previous state.
|
|
49
|
-
*/
|
|
50
|
-
subscribeToPropChanges: (
|
|
51
|
-
subscriber: (
|
|
52
|
-
componentProps: SetStateAction<UiShellNavComponentProps>,
|
|
53
|
-
) => void,
|
|
54
|
-
) => () => void;
|
|
55
|
-
/**
|
|
56
|
-
* Sets a custom background color for the side nav area.
|
|
57
|
-
*/
|
|
58
|
-
sideNavBackgroundColor?: string;
|
|
59
|
-
/**
|
|
60
|
-
* Sets a custom background color for the top nav area.
|
|
61
|
-
*/
|
|
62
|
-
topNavBackgroundColor?: string;
|
|
63
|
-
/**
|
|
64
|
-
* React app component that renders as children in the correct location of the shell. Only used as fallback for ErrorBoundary.
|
|
65
|
-
*/
|
|
66
|
-
appComponent?: ReactNode;
|
|
67
|
-
} & Pick<ReactRootElements, "appRootElement" | "stylesRootElement"> &
|
|
68
|
-
Pick<
|
|
69
|
-
UiShellContentProps,
|
|
70
|
-
| "appBackgroundColor"
|
|
71
|
-
| "appBackgroundContrastMode"
|
|
72
|
-
| "appContainerElement"
|
|
73
|
-
| "appContainerScrollingMode"
|
|
74
|
-
| "hasStandardAppContentPadding"
|
|
75
|
-
| "initialVisibleSections"
|
|
76
|
-
| "onError"
|
|
77
|
-
| "optionalComponents"
|
|
78
|
-
>;
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Our new Unified Platform UI Shell.
|
|
82
|
-
*
|
|
83
|
-
* This includes the top and side navigation as well as the footer and provides a spot for your app to render into.
|
|
84
|
-
*
|
|
85
|
-
* If an error occurs, this will revert to only showing the app.
|
|
86
|
-
*/
|
|
87
|
-
const UiShell = ({
|
|
88
|
-
appBackgroundColor,
|
|
89
|
-
appBackgroundContrastMode,
|
|
90
|
-
appComponent,
|
|
91
|
-
appRootElement,
|
|
92
|
-
appContainerElement,
|
|
93
|
-
appContainerScrollingMode,
|
|
94
|
-
hasStandardAppContentPadding,
|
|
95
|
-
initialVisibleSections,
|
|
96
|
-
onError = console.error,
|
|
97
|
-
onSubscriptionCreated,
|
|
98
|
-
optionalComponents,
|
|
99
|
-
sideNavBackgroundColor,
|
|
100
|
-
stylesRootElement,
|
|
101
|
-
topNavBackgroundColor,
|
|
102
|
-
subscribeToPropChanges,
|
|
103
|
-
}: UiShellProps) => {
|
|
104
|
-
const [componentProps, setComponentProps] = useState(defaultComponentProps);
|
|
105
|
-
|
|
106
|
-
useEffect(() => {
|
|
107
|
-
const unsubscribe = subscribeToPropChanges((componentProps) => {
|
|
108
|
-
// If for some reason nothing is passed as `componentProps`, we fallback on `defaultComponentProps` as a safety mechanism to ensure nothing breaks.
|
|
109
|
-
setComponentProps(componentProps || defaultComponentProps);
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
onSubscriptionCreated();
|
|
113
|
-
|
|
114
|
-
return () => {
|
|
115
|
-
unsubscribe();
|
|
116
|
-
};
|
|
117
|
-
}, [onSubscriptionCreated, subscribeToPropChanges]);
|
|
118
|
-
|
|
119
|
-
return (
|
|
120
|
-
<ErrorBoundary fallback={appComponent} onError={onError}>
|
|
121
|
-
<OdysseyProvider
|
|
122
|
-
emotionRootElement={stylesRootElement}
|
|
123
|
-
shadowRootElement={appRootElement}
|
|
124
|
-
hasScopedCssBaseline={false}
|
|
125
|
-
>
|
|
126
|
-
<ErrorBoundary fallback={appComponent} onError={onError}>
|
|
127
|
-
<CssBaseline />
|
|
128
|
-
<UiShellProvider
|
|
129
|
-
appBackgroundColor={appBackgroundColor}
|
|
130
|
-
appBackgroundContrastMode={appBackgroundContrastMode}
|
|
131
|
-
sideNavBackgroundColor={sideNavBackgroundColor}
|
|
132
|
-
topNavBackgroundColor={topNavBackgroundColor}
|
|
133
|
-
>
|
|
134
|
-
<UiShellContent
|
|
135
|
-
{...componentProps}
|
|
136
|
-
appContainerElement={appContainerElement}
|
|
137
|
-
appContainerScrollingMode={appContainerScrollingMode}
|
|
138
|
-
hasStandardAppContentPadding={hasStandardAppContentPadding}
|
|
139
|
-
initialVisibleSections={initialVisibleSections}
|
|
140
|
-
onError={onError}
|
|
141
|
-
optionalComponents={optionalComponents}
|
|
142
|
-
/>
|
|
143
|
-
</UiShellProvider>
|
|
144
|
-
</ErrorBoundary>
|
|
145
|
-
</OdysseyProvider>
|
|
146
|
-
</ErrorBoundary>
|
|
147
|
-
);
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
const MemoizedUiShell = memo(UiShell);
|
|
151
|
-
MemoizedUiShell.displayName = "UiShell";
|
|
152
|
-
|
|
153
|
-
export { MemoizedUiShell as UiShell };
|
|
@@ -1,350 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
3
|
-
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
4
|
-
*
|
|
5
|
-
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7
|
-
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
8
|
-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
-
*
|
|
10
|
-
* See the License for the specific language governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import styled from "@emotion/styled";
|
|
14
|
-
import { memo, useEffect, useMemo, useRef, type ReactElement } from "react";
|
|
15
|
-
import { ErrorBoundary, ErrorBoundaryProps } from "react-error-boundary";
|
|
16
|
-
|
|
17
|
-
import { AppSwitcher, type AppSwitcherProps } from "./AppSwitcher/index.js";
|
|
18
|
-
import { SideNav, type SideNavProps } from "./SideNav/index.js";
|
|
19
|
-
import { TopNav, type TopNavProps } from "./TopNav/index.js";
|
|
20
|
-
import {
|
|
21
|
-
useOdysseyDesignTokens,
|
|
22
|
-
type DesignTokens,
|
|
23
|
-
} from "../OdysseyDesignTokensContext.js";
|
|
24
|
-
import { useScrollState } from "./useScrollState.js";
|
|
25
|
-
import { ContrastMode } from "../useContrastMode.js";
|
|
26
|
-
import { UiShellColors, useUiShellContext } from "./UiShellProvider.js";
|
|
27
|
-
import { ScopedCssBaseline } from "@mui/material";
|
|
28
|
-
|
|
29
|
-
const fullHeightStyles = { height: "100%" };
|
|
30
|
-
|
|
31
|
-
const emptySideNavItems = [] satisfies SideNavProps["sideNavItems"];
|
|
32
|
-
|
|
33
|
-
const StyledAppContainer = styled("div", {
|
|
34
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
35
|
-
})<{
|
|
36
|
-
appBackgroundColor?: UiShellColors["appBackgroundColor"];
|
|
37
|
-
}>(({ appBackgroundColor }) => ({
|
|
38
|
-
gridArea: "app-content",
|
|
39
|
-
backgroundColor: appBackgroundColor,
|
|
40
|
-
}));
|
|
41
|
-
|
|
42
|
-
const StyledBannersContainer = styled("div")(() => ({
|
|
43
|
-
gridArea: "banners",
|
|
44
|
-
}));
|
|
45
|
-
|
|
46
|
-
const StyledAppSwitcherContainer = styled("div")(() => ({
|
|
47
|
-
gridArea: "app-switcher",
|
|
48
|
-
}));
|
|
49
|
-
|
|
50
|
-
const StyledSideNavContainer = styled("div")(() => ({
|
|
51
|
-
gridArea: "side-nav",
|
|
52
|
-
}));
|
|
53
|
-
|
|
54
|
-
const StyledShellContainer = styled("div", {
|
|
55
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
56
|
-
})<{
|
|
57
|
-
odysseyDesignTokens: DesignTokens;
|
|
58
|
-
}>(({ odysseyDesignTokens }) => ({
|
|
59
|
-
backgroundColor: odysseyDesignTokens.HueNeutral50,
|
|
60
|
-
display: "grid",
|
|
61
|
-
gridGap: 0,
|
|
62
|
-
gridTemplateAreas: `
|
|
63
|
-
"banners banners banners"
|
|
64
|
-
"app-switcher side-nav top-nav"
|
|
65
|
-
"app-switcher side-nav app-content"
|
|
66
|
-
`,
|
|
67
|
-
gridTemplateColumns: "auto auto 1fr",
|
|
68
|
-
gridTemplateRows: "auto auto 1fr",
|
|
69
|
-
height: "100vh",
|
|
70
|
-
width: "100vw",
|
|
71
|
-
}));
|
|
72
|
-
|
|
73
|
-
const StyledTopNavContainer = styled("div")(() => ({
|
|
74
|
-
gridArea: "top-nav",
|
|
75
|
-
}));
|
|
76
|
-
|
|
77
|
-
export const subComponentNames = ["TopNav", "SideNav", "AppSwitcher"] as const;
|
|
78
|
-
export type SubComponentName = (typeof subComponentNames)[number];
|
|
79
|
-
|
|
80
|
-
export type UiShellNavComponentProps = {
|
|
81
|
-
/**
|
|
82
|
-
* Object that gets pass directly to the app switcher component.
|
|
83
|
-
*/
|
|
84
|
-
appSwitcherProps?: AppSwitcherProps;
|
|
85
|
-
/**
|
|
86
|
-
* Object that gets pass directly to the side nav component. If `undefined` and in `initialVisibleSections`, SideNav will be initially rendered. Pass `null` to hide a previously-visible SideNav.
|
|
87
|
-
*/
|
|
88
|
-
sideNavProps?: Omit<SideNavProps, "footerComponent"> | null;
|
|
89
|
-
/**
|
|
90
|
-
* Object that gets pass directly to the top nav component. If `undefined` and in `initialVisibleSections`, TopNav will be initially rendered. Pass `null` to hide a previously-visible TopNav.
|
|
91
|
-
*/
|
|
92
|
-
topNavProps?: Omit<
|
|
93
|
-
TopNavProps,
|
|
94
|
-
"leftSideComponent" | "rightSideComponent"
|
|
95
|
-
> | null;
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
export type UiShellContentProps = {
|
|
99
|
-
/**
|
|
100
|
-
* Sets a custom background color for the app content area.
|
|
101
|
-
*/
|
|
102
|
-
appBackgroundColor?: string;
|
|
103
|
-
/**
|
|
104
|
-
* Sets either a gray or white background color for the app content area.
|
|
105
|
-
*/
|
|
106
|
-
appBackgroundContrastMode?: ContrastMode;
|
|
107
|
-
/**
|
|
108
|
-
* The element within which the app will be rendered. This will be positioned appropriately while being kept out of the shadow DOM.
|
|
109
|
-
*/
|
|
110
|
-
appContainerElement: HTMLDivElement;
|
|
111
|
-
/**
|
|
112
|
-
* Controls the scrolling behavior of the app content area. Defaults to "vertical".
|
|
113
|
-
*/
|
|
114
|
-
appContainerScrollingMode?: "none" | "horizontal" | "vertical" | "both";
|
|
115
|
-
/**
|
|
116
|
-
* defaults to `true`. If `false`, the content area will have no padding provided
|
|
117
|
-
*/
|
|
118
|
-
hasStandardAppContentPadding?: boolean;
|
|
119
|
-
/**
|
|
120
|
-
* Which parts of the UI Shell should be visible initially? For example,
|
|
121
|
-
* if sideNavProps is undefined, should the space for the sidenav be initially visible?
|
|
122
|
-
*/
|
|
123
|
-
initialVisibleSections?: SubComponentName[];
|
|
124
|
-
/**
|
|
125
|
-
* Notifies when a React rendering error occurs. This could be useful for logging, flagging "p0"s, and recovering UI Shell when errors occur.
|
|
126
|
-
*/
|
|
127
|
-
onError?: ErrorBoundaryProps["onError"];
|
|
128
|
-
/**
|
|
129
|
-
* Components that will render as children of various other components such as the top nav or side nav.
|
|
130
|
-
*/
|
|
131
|
-
optionalComponents?: {
|
|
132
|
-
banners?: ReactElement;
|
|
133
|
-
sideNavFooter?: SideNavProps["footerComponent"];
|
|
134
|
-
topNavLeftSide?: TopNavProps["leftSideComponent"];
|
|
135
|
-
topNavRightSide?: TopNavProps["rightSideComponent"];
|
|
136
|
-
};
|
|
137
|
-
} & UiShellNavComponentProps;
|
|
138
|
-
|
|
139
|
-
const setStylesToMatchElement = (
|
|
140
|
-
elementToStyle: HTMLElement,
|
|
141
|
-
elementToReference: HTMLElement,
|
|
142
|
-
additionalStyles: Record<string, string | null>,
|
|
143
|
-
) => {
|
|
144
|
-
const boundingRect = elementToReference.getBoundingClientRect();
|
|
145
|
-
elementToStyle.style.setProperty("position", "absolute");
|
|
146
|
-
elementToStyle.style.setProperty("top", `${boundingRect.y}px`);
|
|
147
|
-
elementToStyle.style.setProperty("left", `${boundingRect.x}px`);
|
|
148
|
-
elementToStyle.style.setProperty("width", `${boundingRect.width}px`);
|
|
149
|
-
elementToStyle.style.setProperty("height", `${boundingRect.height}px`);
|
|
150
|
-
for (const key in additionalStyles) {
|
|
151
|
-
elementToStyle.style.setProperty(key, additionalStyles[key]);
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Our new Unified Platform UI Shell.
|
|
157
|
-
*
|
|
158
|
-
* This includes the top and side navigation as well as the footer and provides a spot for your app to render into.
|
|
159
|
-
*
|
|
160
|
-
* If an error occurs, this will revert to only showing the app.
|
|
161
|
-
*/
|
|
162
|
-
const UiShellContent = ({
|
|
163
|
-
appContainerElement,
|
|
164
|
-
hasStandardAppContentPadding = true,
|
|
165
|
-
appContainerScrollingMode = "vertical",
|
|
166
|
-
initialVisibleSections = ["TopNav", "SideNav", "AppSwitcher"],
|
|
167
|
-
onError = console.error,
|
|
168
|
-
optionalComponents,
|
|
169
|
-
appSwitcherProps,
|
|
170
|
-
sideNavProps,
|
|
171
|
-
topNavProps,
|
|
172
|
-
}: UiShellContentProps) => {
|
|
173
|
-
const odysseyDesignTokens = useOdysseyDesignTokens();
|
|
174
|
-
const { isContentScrolled, scrollableContentRef: appContainerRef } =
|
|
175
|
-
useScrollState(appContainerElement);
|
|
176
|
-
const sideNavContainerRef = useRef<HTMLDivElement>(null);
|
|
177
|
-
const topNavContainerRef = useRef<HTMLDivElement>(null);
|
|
178
|
-
const uiShellContext = useUiShellContext();
|
|
179
|
-
|
|
180
|
-
const paddingStyles = useMemo<Record<string, string | null>>(
|
|
181
|
-
() => ({
|
|
182
|
-
...(hasStandardAppContentPadding
|
|
183
|
-
? {
|
|
184
|
-
"padding-block": odysseyDesignTokens.Spacing5 ?? null,
|
|
185
|
-
"padding-inline": odysseyDesignTokens.Spacing8 ?? null,
|
|
186
|
-
}
|
|
187
|
-
: {}),
|
|
188
|
-
...(appContainerScrollingMode === "horizontal" ||
|
|
189
|
-
appContainerScrollingMode === "both"
|
|
190
|
-
? {
|
|
191
|
-
"overflow-x": "auto",
|
|
192
|
-
}
|
|
193
|
-
: {
|
|
194
|
-
"overflow-x": "hidden",
|
|
195
|
-
}),
|
|
196
|
-
...(appContainerScrollingMode === "vertical" ||
|
|
197
|
-
appContainerScrollingMode === "both"
|
|
198
|
-
? {
|
|
199
|
-
"overflow-y": "auto",
|
|
200
|
-
}
|
|
201
|
-
: {
|
|
202
|
-
"overflow-y": "hidden",
|
|
203
|
-
}),
|
|
204
|
-
}),
|
|
205
|
-
[
|
|
206
|
-
hasStandardAppContentPadding,
|
|
207
|
-
appContainerScrollingMode,
|
|
208
|
-
odysseyDesignTokens,
|
|
209
|
-
],
|
|
210
|
-
);
|
|
211
|
-
|
|
212
|
-
useEffect(() => {
|
|
213
|
-
// Once appContainerRef is rendered, we can position appContainerElement on top
|
|
214
|
-
if (appContainerRef.current && appContainerElement) {
|
|
215
|
-
let animationFrameId: number;
|
|
216
|
-
|
|
217
|
-
const updateStyles = () => {
|
|
218
|
-
cancelAnimationFrame(animationFrameId);
|
|
219
|
-
animationFrameId = requestAnimationFrame(() => {
|
|
220
|
-
if (appContainerRef.current) {
|
|
221
|
-
setStylesToMatchElement(
|
|
222
|
-
appContainerElement,
|
|
223
|
-
appContainerRef.current,
|
|
224
|
-
paddingStyles,
|
|
225
|
-
);
|
|
226
|
-
}
|
|
227
|
-
});
|
|
228
|
-
};
|
|
229
|
-
|
|
230
|
-
// Setup a mutation observer to sync later updates
|
|
231
|
-
const observer = new ResizeObserver(updateStyles);
|
|
232
|
-
observer.observe(appContainerRef.current);
|
|
233
|
-
|
|
234
|
-
if (sideNavContainerRef.current) {
|
|
235
|
-
observer.observe(sideNavContainerRef.current);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
if (topNavContainerRef.current) {
|
|
239
|
-
observer.observe(topNavContainerRef.current);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
// Set the initial style
|
|
243
|
-
updateStyles();
|
|
244
|
-
return () => observer.disconnect();
|
|
245
|
-
}
|
|
246
|
-
return () => {};
|
|
247
|
-
}, [appContainerRef, appContainerElement, paddingStyles]);
|
|
248
|
-
|
|
249
|
-
return (
|
|
250
|
-
<StyledShellContainer odysseyDesignTokens={odysseyDesignTokens}>
|
|
251
|
-
<StyledBannersContainer>
|
|
252
|
-
{optionalComponents?.banners}
|
|
253
|
-
</StyledBannersContainer>
|
|
254
|
-
|
|
255
|
-
<StyledAppSwitcherContainer>
|
|
256
|
-
<ScopedCssBaseline sx={fullHeightStyles}>
|
|
257
|
-
{
|
|
258
|
-
/* If AppSwitcher should be initially visible and we have not yet received props, render AppSwitcher in the loading state */
|
|
259
|
-
initialVisibleSections?.includes("AppSwitcher") &&
|
|
260
|
-
!appSwitcherProps && (
|
|
261
|
-
<ErrorBoundary fallback={null} onError={onError}>
|
|
262
|
-
<AppSwitcher isLoading appIcons={[]} selectedAppName="" />
|
|
263
|
-
</ErrorBoundary>
|
|
264
|
-
)
|
|
265
|
-
}
|
|
266
|
-
{appSwitcherProps && (
|
|
267
|
-
<ErrorBoundary fallback={null} onError={onError}>
|
|
268
|
-
<AppSwitcher {...appSwitcherProps} />
|
|
269
|
-
</ErrorBoundary>
|
|
270
|
-
)}
|
|
271
|
-
</ScopedCssBaseline>
|
|
272
|
-
</StyledAppSwitcherContainer>
|
|
273
|
-
|
|
274
|
-
<StyledSideNavContainer ref={sideNavContainerRef}>
|
|
275
|
-
<ScopedCssBaseline sx={fullHeightStyles}>
|
|
276
|
-
{
|
|
277
|
-
/* If SideNav should be initially visible and we have not yet received props, render SideNav with minimal inputs */
|
|
278
|
-
initialVisibleSections?.includes("SideNav") &&
|
|
279
|
-
sideNavProps === undefined && (
|
|
280
|
-
<ErrorBoundary fallback={null} onError={onError}>
|
|
281
|
-
<SideNav
|
|
282
|
-
isLoading
|
|
283
|
-
appName=""
|
|
284
|
-
sideNavItems={emptySideNavItems}
|
|
285
|
-
/>
|
|
286
|
-
</ErrorBoundary>
|
|
287
|
-
)
|
|
288
|
-
}
|
|
289
|
-
{sideNavProps && (
|
|
290
|
-
<ErrorBoundary fallback={null} onError={onError}>
|
|
291
|
-
<SideNav
|
|
292
|
-
{...{
|
|
293
|
-
...sideNavProps,
|
|
294
|
-
...(sideNavProps.hasCustomFooter &&
|
|
295
|
-
optionalComponents?.sideNavFooter
|
|
296
|
-
? {
|
|
297
|
-
footerComponent: optionalComponents.sideNavFooter,
|
|
298
|
-
footerItems: undefined,
|
|
299
|
-
hasCustomFooter: sideNavProps.hasCustomFooter,
|
|
300
|
-
}
|
|
301
|
-
: {
|
|
302
|
-
footerItems: sideNavProps.footerItems,
|
|
303
|
-
hasCustomFooter: false,
|
|
304
|
-
}),
|
|
305
|
-
}}
|
|
306
|
-
/>
|
|
307
|
-
</ErrorBoundary>
|
|
308
|
-
)}
|
|
309
|
-
</ScopedCssBaseline>
|
|
310
|
-
</StyledSideNavContainer>
|
|
311
|
-
<StyledTopNavContainer ref={topNavContainerRef}>
|
|
312
|
-
<ScopedCssBaseline sx={fullHeightStyles}>
|
|
313
|
-
{
|
|
314
|
-
/* If TopNav should be initially visible and we have not yet received props, render Topnav with minimal inputs */
|
|
315
|
-
initialVisibleSections?.includes("TopNav") &&
|
|
316
|
-
topNavProps === undefined && (
|
|
317
|
-
<ErrorBoundary fallback={null} onError={onError}>
|
|
318
|
-
<TopNav
|
|
319
|
-
leftSideComponent={optionalComponents?.topNavLeftSide}
|
|
320
|
-
rightSideComponent={optionalComponents?.topNavRightSide}
|
|
321
|
-
/>
|
|
322
|
-
</ErrorBoundary>
|
|
323
|
-
)
|
|
324
|
-
}
|
|
325
|
-
{topNavProps && (
|
|
326
|
-
<ErrorBoundary fallback={null} onError={onError}>
|
|
327
|
-
<TopNav
|
|
328
|
-
{...topNavProps}
|
|
329
|
-
isScrolled={isContentScrolled}
|
|
330
|
-
leftSideComponent={optionalComponents?.topNavLeftSide}
|
|
331
|
-
rightSideComponent={optionalComponents?.topNavRightSide}
|
|
332
|
-
/>
|
|
333
|
-
</ErrorBoundary>
|
|
334
|
-
)}
|
|
335
|
-
</ScopedCssBaseline>
|
|
336
|
-
</StyledTopNavContainer>
|
|
337
|
-
|
|
338
|
-
<StyledAppContainer
|
|
339
|
-
appBackgroundColor={uiShellContext?.appBackgroundColor}
|
|
340
|
-
tabIndex={0}
|
|
341
|
-
ref={appContainerRef}
|
|
342
|
-
/>
|
|
343
|
-
</StyledShellContainer>
|
|
344
|
-
);
|
|
345
|
-
};
|
|
346
|
-
|
|
347
|
-
const MemoizedUiShellContent = memo(UiShellContent);
|
|
348
|
-
MemoizedUiShellContent.displayName = "UiShellContent";
|
|
349
|
-
|
|
350
|
-
export { MemoizedUiShellContent as UiShellContent };
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
3
|
-
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
4
|
-
*
|
|
5
|
-
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7
|
-
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
8
|
-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
-
*
|
|
10
|
-
* See the License for the specific language governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
createContext,
|
|
15
|
-
memo,
|
|
16
|
-
PropsWithChildren,
|
|
17
|
-
useContext,
|
|
18
|
-
useMemo,
|
|
19
|
-
} from "react";
|
|
20
|
-
import {
|
|
21
|
-
generateContrastColors,
|
|
22
|
-
ContrastColors,
|
|
23
|
-
} from "../createContrastColors.js";
|
|
24
|
-
import { useOdysseyDesignTokens } from "../OdysseyDesignTokensContext.js";
|
|
25
|
-
|
|
26
|
-
export type UiShellColors = {
|
|
27
|
-
appBackgroundColor: string;
|
|
28
|
-
sideNavBackgroundColor: string;
|
|
29
|
-
sideNavContrastColors?: ContrastColors | undefined;
|
|
30
|
-
topNavBackgroundColor: string;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const UiShellContext = createContext<UiShellColors | undefined>(undefined);
|
|
34
|
-
|
|
35
|
-
export const useUiShellContext = () => {
|
|
36
|
-
return useContext(UiShellContext);
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export type UiShellProviderProps = {
|
|
40
|
-
appBackgroundColor?: string;
|
|
41
|
-
sideNavBackgroundColor?: string;
|
|
42
|
-
topNavBackgroundColor?: string;
|
|
43
|
-
appBackgroundContrastMode?: string;
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const UiShellProvider = ({
|
|
47
|
-
appBackgroundColor,
|
|
48
|
-
appBackgroundContrastMode = "lowContrast",
|
|
49
|
-
sideNavBackgroundColor,
|
|
50
|
-
topNavBackgroundColor,
|
|
51
|
-
children,
|
|
52
|
-
}: PropsWithChildren<UiShellProviderProps>) => {
|
|
53
|
-
const odysseyDesignTokens = useOdysseyDesignTokens();
|
|
54
|
-
const defaultedSideNavBackgroundColor =
|
|
55
|
-
sideNavBackgroundColor || odysseyDesignTokens.HueNeutralWhite;
|
|
56
|
-
|
|
57
|
-
const sideNavContrastColors =
|
|
58
|
-
defaultedSideNavBackgroundColor !== odysseyDesignTokens.HueNeutralWhite
|
|
59
|
-
? generateContrastColors(
|
|
60
|
-
defaultedSideNavBackgroundColor,
|
|
61
|
-
odysseyDesignTokens,
|
|
62
|
-
)
|
|
63
|
-
: undefined;
|
|
64
|
-
|
|
65
|
-
const isAppBackgroundHightContrast =
|
|
66
|
-
appBackgroundContrastMode === "highContrast";
|
|
67
|
-
|
|
68
|
-
const defaultTopAndAppBackgroundColor = isAppBackgroundHightContrast
|
|
69
|
-
? odysseyDesignTokens.HueNeutralWhite
|
|
70
|
-
: odysseyDesignTokens.HueNeutral50;
|
|
71
|
-
|
|
72
|
-
const topNavColor = topNavBackgroundColor || defaultTopAndAppBackgroundColor;
|
|
73
|
-
|
|
74
|
-
const appContentBackgroundColor =
|
|
75
|
-
appBackgroundColor || defaultTopAndAppBackgroundColor;
|
|
76
|
-
|
|
77
|
-
const memoizedContextValue = useMemo(
|
|
78
|
-
() => ({
|
|
79
|
-
appBackgroundColor: appContentBackgroundColor,
|
|
80
|
-
sideNavBackgroundColor:
|
|
81
|
-
sideNavBackgroundColor || odysseyDesignTokens.HueNeutralWhite,
|
|
82
|
-
sideNavContrastColors,
|
|
83
|
-
topNavBackgroundColor: topNavColor,
|
|
84
|
-
}),
|
|
85
|
-
[
|
|
86
|
-
appContentBackgroundColor,
|
|
87
|
-
odysseyDesignTokens,
|
|
88
|
-
sideNavBackgroundColor,
|
|
89
|
-
sideNavContrastColors,
|
|
90
|
-
topNavColor,
|
|
91
|
-
],
|
|
92
|
-
);
|
|
93
|
-
|
|
94
|
-
return (
|
|
95
|
-
<UiShellContext.Provider value={memoizedContextValue}>
|
|
96
|
-
{children}
|
|
97
|
-
</UiShellContext.Provider>
|
|
98
|
-
);
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
const MemoizedUiShellProvider = memo(UiShellProvider);
|
|
102
|
-
|
|
103
|
-
export { MemoizedUiShellProvider as UiShellProvider };
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
3
|
-
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
4
|
-
*
|
|
5
|
-
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7
|
-
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
8
|
-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
-
*
|
|
10
|
-
* See the License for the specific language governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { bufferLatest } from "./bufferLatest.js";
|
|
14
|
-
import { createMessageBus } from "./createMessageBus.js";
|
|
15
|
-
|
|
16
|
-
describe("bufferLatest", () => {
|
|
17
|
-
test("calls subscriber after ready", () => {
|
|
18
|
-
const { publish: publish1, subscribe: subscribe1 } = createMessageBus();
|
|
19
|
-
|
|
20
|
-
const { publish: publish2, subscribe: subscribe2 } = createMessageBus();
|
|
21
|
-
|
|
22
|
-
const subscriber = vi.fn();
|
|
23
|
-
|
|
24
|
-
subscribe1(subscriber);
|
|
25
|
-
|
|
26
|
-
const bufferedPublish1 = bufferLatest({
|
|
27
|
-
publish: publish1,
|
|
28
|
-
subscribe: subscribe2,
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
publish2();
|
|
32
|
-
bufferedPublish1();
|
|
33
|
-
|
|
34
|
-
expect(subscriber).toHaveBeenCalledTimes(1);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
test("calls subscriber before ready", () => {
|
|
38
|
-
const { publish: publish1, subscribe: subscribe1 } = createMessageBus();
|
|
39
|
-
|
|
40
|
-
const { publish: publish2, subscribe: subscribe2 } = createMessageBus();
|
|
41
|
-
|
|
42
|
-
const subscriber = vi.fn();
|
|
43
|
-
|
|
44
|
-
subscribe1(subscriber);
|
|
45
|
-
|
|
46
|
-
const bufferedPublish1 = bufferLatest({
|
|
47
|
-
publish: publish1,
|
|
48
|
-
subscribe: subscribe2,
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
bufferedPublish1();
|
|
52
|
-
publish2();
|
|
53
|
-
|
|
54
|
-
expect(subscriber).toHaveBeenCalledTimes(1);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
test("keeps only the last value passed when ready", () => {
|
|
58
|
-
const { publish: publish1, subscribe: subscribe1 } =
|
|
59
|
-
createMessageBus<string>();
|
|
60
|
-
|
|
61
|
-
const { publish: publish2, subscribe: subscribe2 } = createMessageBus();
|
|
62
|
-
|
|
63
|
-
const subscriber = vi.fn();
|
|
64
|
-
|
|
65
|
-
subscribe1(subscriber);
|
|
66
|
-
|
|
67
|
-
const bufferedPublish1 = bufferLatest({
|
|
68
|
-
publish: publish1,
|
|
69
|
-
subscribe: subscribe2,
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
bufferedPublish1("a");
|
|
73
|
-
bufferedPublish1("b");
|
|
74
|
-
publish2();
|
|
75
|
-
|
|
76
|
-
expect(subscriber).toHaveBeenCalledWith("b");
|
|
77
|
-
expect(subscriber).toHaveBeenCalledTimes(1);
|
|
78
|
-
});
|
|
79
|
-
});
|