@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
|
@@ -1,158 +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 { type SetStateAction } from "react";
|
|
14
|
-
import { ErrorBoundary } from "react-error-boundary";
|
|
15
|
-
|
|
16
|
-
import { bufferLatest } from "./bufferLatest.js";
|
|
17
|
-
import { createMessageBus } from "./createMessageBus.js";
|
|
18
|
-
import { UiShell, UiShellProps } from "./UiShell.js";
|
|
19
|
-
import { renderReactInWebComponent } from "../web-component/renderReactInWebComponent.js";
|
|
20
|
-
import { type UiShellNavComponentProps } from "./UiShellContent.js";
|
|
21
|
-
import { uiShellDataAttribute } from "./useHasUiShell.js";
|
|
22
|
-
|
|
23
|
-
export const optionalComponentSlotNames: Record<
|
|
24
|
-
keyof Required<UiShellProps>["optionalComponents"],
|
|
25
|
-
string
|
|
26
|
-
> = {
|
|
27
|
-
banners: "banners",
|
|
28
|
-
sideNavFooter: "side-nav-footer",
|
|
29
|
-
topNavLeftSide: "top-nav-left-side",
|
|
30
|
-
topNavRightSide: "top-nav-right-side",
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* This function renders UI Shell in a web component.
|
|
35
|
-
* This function is agnostic to the UI framework for your app is using. Your application can be another web component, a React app, or even vanilla HTML.
|
|
36
|
-
*
|
|
37
|
-
* **All styles are self-contained.** Even though your application visually renders as children of the web component, its within the global `document` scope, not the web component's `ShadowRoot`. That means any global styles will not affect UI Shell but will affect your application.
|
|
38
|
-
*
|
|
39
|
-
* It places your app's root element in a web component <slot> and ensures it remains rendered in the event of a UI Shell error.
|
|
40
|
-
* It also provides you with other elements fitted to slots in the web component. **In React, you can portal to these components.**
|
|
41
|
-
*/
|
|
42
|
-
export const renderUiShell = ({
|
|
43
|
-
appBackgroundColor,
|
|
44
|
-
appBackgroundContrastMode,
|
|
45
|
-
appContainerScrollingMode,
|
|
46
|
-
appRootElement: explicitAppRootElement,
|
|
47
|
-
hasStandardAppContentPadding,
|
|
48
|
-
initialVisibleSections,
|
|
49
|
-
onError = console.error,
|
|
50
|
-
sideNavBackgroundColor,
|
|
51
|
-
topNavBackgroundColor,
|
|
52
|
-
uiShellRootElement,
|
|
53
|
-
}: {
|
|
54
|
-
/**
|
|
55
|
-
* HTML element used as the root for a React app.
|
|
56
|
-
*/
|
|
57
|
-
appRootElement?: HTMLDivElement;
|
|
58
|
-
/**
|
|
59
|
-
* Notifies when a React rendering error occurs. This could be useful for logging, reporting priority 0 issues, and recovering UI Shell when errors occur.
|
|
60
|
-
*/
|
|
61
|
-
onError?: () => void;
|
|
62
|
-
/**
|
|
63
|
-
* HTML element used as the root for UI Shell.
|
|
64
|
-
*/
|
|
65
|
-
uiShellRootElement: HTMLElement;
|
|
66
|
-
} & Pick<
|
|
67
|
-
UiShellProps,
|
|
68
|
-
| "appBackgroundColor"
|
|
69
|
-
| "appBackgroundContrastMode"
|
|
70
|
-
| "appContainerScrollingMode"
|
|
71
|
-
| "hasStandardAppContentPadding"
|
|
72
|
-
| "initialVisibleSections"
|
|
73
|
-
| "sideNavBackgroundColor"
|
|
74
|
-
| "topNavBackgroundColor"
|
|
75
|
-
>) => {
|
|
76
|
-
const appRootElement =
|
|
77
|
-
explicitAppRootElement || document.createElement("div");
|
|
78
|
-
|
|
79
|
-
// Add this attribute so `PageTemplate` and potentially other components will know if they're in UI Shell with special padding already available.
|
|
80
|
-
uiShellRootElement.setAttribute(uiShellDataAttribute, "");
|
|
81
|
-
|
|
82
|
-
const { publish: publishPropChanges, subscribe: subscribeToPropChanges } =
|
|
83
|
-
createMessageBus<SetStateAction<UiShellNavComponentProps>>();
|
|
84
|
-
|
|
85
|
-
const {
|
|
86
|
-
publish: publishSubscriptionCreated,
|
|
87
|
-
subscribe: subscribeToReactAppSubscribed,
|
|
88
|
-
} = createMessageBus();
|
|
89
|
-
|
|
90
|
-
const publishAfterReactAppReadyForProps = bufferLatest({
|
|
91
|
-
publish: publishPropChanges,
|
|
92
|
-
subscribe: subscribeToReactAppSubscribed,
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
const slottedElements = Object.fromEntries(
|
|
96
|
-
Object.entries(optionalComponentSlotNames).map(
|
|
97
|
-
([optionalComponentKey, slotName]) => {
|
|
98
|
-
const element = document.createElement("div");
|
|
99
|
-
|
|
100
|
-
element.setAttribute("slot", slotName);
|
|
101
|
-
|
|
102
|
-
return [optionalComponentKey, element];
|
|
103
|
-
},
|
|
104
|
-
),
|
|
105
|
-
) as Record<
|
|
106
|
-
keyof Required<UiShellProps>["optionalComponents"],
|
|
107
|
-
HTMLDivElement
|
|
108
|
-
>;
|
|
109
|
-
|
|
110
|
-
const appContainerElement = document.createElement("div");
|
|
111
|
-
appContainerElement.appendChild(appRootElement);
|
|
112
|
-
|
|
113
|
-
const webComponentChildren = Object.values(slottedElements);
|
|
114
|
-
|
|
115
|
-
const appComponent = <slot />;
|
|
116
|
-
|
|
117
|
-
const uiShellElement = renderReactInWebComponent({
|
|
118
|
-
getReactComponent: (reactRootElements) => (
|
|
119
|
-
<ErrorBoundary fallback={appComponent} onError={onError}>
|
|
120
|
-
<UiShell
|
|
121
|
-
appBackgroundColor={appBackgroundColor}
|
|
122
|
-
appBackgroundContrastMode={appBackgroundContrastMode}
|
|
123
|
-
appComponent={appComponent}
|
|
124
|
-
appContainerElement={appContainerElement}
|
|
125
|
-
appContainerScrollingMode={appContainerScrollingMode}
|
|
126
|
-
appRootElement={reactRootElements.appRootElement}
|
|
127
|
-
hasStandardAppContentPadding={hasStandardAppContentPadding}
|
|
128
|
-
initialVisibleSections={initialVisibleSections}
|
|
129
|
-
onError={onError}
|
|
130
|
-
onSubscriptionCreated={publishSubscriptionCreated}
|
|
131
|
-
// `optionalComponents` doesn't need to be memoized because gets passed in once.
|
|
132
|
-
optionalComponents={Object.fromEntries(
|
|
133
|
-
Object.entries(optionalComponentSlotNames).map(
|
|
134
|
-
([optionalComponentKey, slotName]) => [
|
|
135
|
-
optionalComponentKey,
|
|
136
|
-
<slot name={slotName} />,
|
|
137
|
-
],
|
|
138
|
-
),
|
|
139
|
-
)}
|
|
140
|
-
sideNavBackgroundColor={sideNavBackgroundColor}
|
|
141
|
-
stylesRootElement={reactRootElements.stylesRootElement}
|
|
142
|
-
subscribeToPropChanges={subscribeToPropChanges}
|
|
143
|
-
topNavBackgroundColor={topNavBackgroundColor}
|
|
144
|
-
/>
|
|
145
|
-
</ErrorBoundary>
|
|
146
|
-
),
|
|
147
|
-
webComponentRootElement: uiShellRootElement,
|
|
148
|
-
webComponentChildren,
|
|
149
|
-
});
|
|
150
|
-
uiShellRootElement.appendChild(appContainerElement);
|
|
151
|
-
|
|
152
|
-
return {
|
|
153
|
-
appRootElement,
|
|
154
|
-
setComponentProps: publishAfterReactAppReadyForProps,
|
|
155
|
-
slottedElements,
|
|
156
|
-
uiShellElement,
|
|
157
|
-
};
|
|
158
|
-
};
|
|
@@ -1,25 +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 { useEffect, useState } from "react";
|
|
14
|
-
|
|
15
|
-
export const uiShellDataAttribute = "data-unified-ui-shell";
|
|
16
|
-
|
|
17
|
-
export const useHasUiShell = () => {
|
|
18
|
-
const [hasUiShell, setHasUiShell] = useState(false);
|
|
19
|
-
|
|
20
|
-
useEffect(() => {
|
|
21
|
-
setHasUiShell(Boolean(document.querySelector(`[${uiShellDataAttribute}]`)));
|
|
22
|
-
}, []);
|
|
23
|
-
|
|
24
|
-
return hasUiShell;
|
|
25
|
-
};
|
|
@@ -1,59 +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 { useEffect, useMemo, useRef, useState } from "react";
|
|
14
|
-
|
|
15
|
-
export const useScrollState = <
|
|
16
|
-
ScrollableContentElement extends HTMLElement = HTMLDivElement,
|
|
17
|
-
>(
|
|
18
|
-
scrollableContentElement?: ScrollableContentElement,
|
|
19
|
-
) => {
|
|
20
|
-
const [isContentScrolled, setIsContentScrolled] = useState(false);
|
|
21
|
-
|
|
22
|
-
const scrollableContentRef = useRef<ScrollableContentElement>(null);
|
|
23
|
-
|
|
24
|
-
const scrollableElement = useMemo(
|
|
25
|
-
() => scrollableContentElement ?? scrollableContentRef.current,
|
|
26
|
-
[scrollableContentElement, scrollableContentRef.current],
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
useEffect(() => {
|
|
30
|
-
if (scrollableElement) {
|
|
31
|
-
let requestedAnimationFrameId: number;
|
|
32
|
-
|
|
33
|
-
const updateScrollState = () => {
|
|
34
|
-
cancelAnimationFrame(requestedAnimationFrameId);
|
|
35
|
-
|
|
36
|
-
requestedAnimationFrameId = requestAnimationFrame(() => {
|
|
37
|
-
setIsContentScrolled(scrollableElement.scrollTop > 0);
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
scrollableElement.addEventListener("scroll", updateScrollState);
|
|
42
|
-
|
|
43
|
-
updateScrollState();
|
|
44
|
-
|
|
45
|
-
return () => {
|
|
46
|
-
scrollableElement.removeEventListener("scroll", updateScrollState);
|
|
47
|
-
|
|
48
|
-
cancelAnimationFrame(requestedAnimationFrameId);
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return () => {};
|
|
53
|
-
}, [scrollableElement]);
|
|
54
|
-
|
|
55
|
-
return {
|
|
56
|
-
isContentScrolled,
|
|
57
|
-
scrollableContentRef,
|
|
58
|
-
};
|
|
59
|
-
};
|
package/src/useAutocomplete.tsx
DELETED
|
@@ -1,184 +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 { useCallback, useMemo, useRef } from "react";
|
|
14
|
-
import {
|
|
15
|
-
InputBase,
|
|
16
|
-
AutocompleteValue,
|
|
17
|
-
AutocompleteRenderInputParams,
|
|
18
|
-
} from "@mui/material";
|
|
19
|
-
|
|
20
|
-
import { AutocompleteProps } from "./Autocomplete.js";
|
|
21
|
-
import { Field } from "./Field.js";
|
|
22
|
-
import {
|
|
23
|
-
ComponentControlledState,
|
|
24
|
-
useInputValues,
|
|
25
|
-
getControlState,
|
|
26
|
-
} from "./inputUtils.js";
|
|
27
|
-
|
|
28
|
-
export type UseAutocompleteProps<
|
|
29
|
-
OptionType,
|
|
30
|
-
HasMultipleChoices extends boolean | undefined,
|
|
31
|
-
IsCustomValueAllowed extends boolean | undefined,
|
|
32
|
-
> = Pick<
|
|
33
|
-
AutocompleteProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,
|
|
34
|
-
| "ariaDescribedBy"
|
|
35
|
-
| "defaultValue"
|
|
36
|
-
| "errorMessage"
|
|
37
|
-
| "errorMessageList"
|
|
38
|
-
| "hasMultipleChoices"
|
|
39
|
-
| "hint"
|
|
40
|
-
| "HintLinkComponent"
|
|
41
|
-
| "inputValue"
|
|
42
|
-
| "isFullWidth"
|
|
43
|
-
| "isOptional"
|
|
44
|
-
| "isVirtualized"
|
|
45
|
-
| "label"
|
|
46
|
-
| "name"
|
|
47
|
-
| "testId"
|
|
48
|
-
| "value"
|
|
49
|
-
>;
|
|
50
|
-
|
|
51
|
-
export const useAutocomplete = <
|
|
52
|
-
OptionType,
|
|
53
|
-
HasMultipleChoices extends boolean | undefined,
|
|
54
|
-
IsCustomValueAllowed extends boolean | undefined,
|
|
55
|
-
>({
|
|
56
|
-
ariaDescribedBy,
|
|
57
|
-
defaultValue,
|
|
58
|
-
errorMessage,
|
|
59
|
-
errorMessageList,
|
|
60
|
-
hasMultipleChoices,
|
|
61
|
-
hint,
|
|
62
|
-
HintLinkComponent,
|
|
63
|
-
inputValue,
|
|
64
|
-
isFullWidth,
|
|
65
|
-
isOptional,
|
|
66
|
-
isVirtualized: isVirtualizedProp,
|
|
67
|
-
label,
|
|
68
|
-
name: nameOverride,
|
|
69
|
-
testId,
|
|
70
|
-
value,
|
|
71
|
-
}: UseAutocompleteProps<
|
|
72
|
-
OptionType,
|
|
73
|
-
HasMultipleChoices,
|
|
74
|
-
IsCustomValueAllowed
|
|
75
|
-
>) => {
|
|
76
|
-
const controlledStateRef = useRef(
|
|
77
|
-
getControlState({
|
|
78
|
-
controlledValue: value,
|
|
79
|
-
uncontrolledValue: defaultValue,
|
|
80
|
-
}),
|
|
81
|
-
);
|
|
82
|
-
|
|
83
|
-
const isVirtualizedRef = useRef(Boolean(isVirtualizedProp));
|
|
84
|
-
|
|
85
|
-
const defaultValueProp = useMemo<
|
|
86
|
-
| AutocompleteValue<
|
|
87
|
-
OptionType,
|
|
88
|
-
HasMultipleChoices,
|
|
89
|
-
undefined,
|
|
90
|
-
IsCustomValueAllowed
|
|
91
|
-
>
|
|
92
|
-
| undefined
|
|
93
|
-
>(() => {
|
|
94
|
-
if (hasMultipleChoices) {
|
|
95
|
-
if (value === undefined) {
|
|
96
|
-
return defaultValue;
|
|
97
|
-
}
|
|
98
|
-
return [] as AutocompleteValue<
|
|
99
|
-
OptionType,
|
|
100
|
-
HasMultipleChoices,
|
|
101
|
-
undefined,
|
|
102
|
-
IsCustomValueAllowed
|
|
103
|
-
>;
|
|
104
|
-
}
|
|
105
|
-
return value === undefined ? defaultValue : undefined;
|
|
106
|
-
}, [defaultValue, hasMultipleChoices, value]);
|
|
107
|
-
|
|
108
|
-
const valueProps = useInputValues({
|
|
109
|
-
defaultValue: defaultValueProp,
|
|
110
|
-
value: value,
|
|
111
|
-
controlState: controlledStateRef.current,
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
const inputValueProp = useMemo(() => {
|
|
115
|
-
if (controlledStateRef.current === ComponentControlledState.CONTROLLED) {
|
|
116
|
-
return { inputValue };
|
|
117
|
-
}
|
|
118
|
-
return undefined;
|
|
119
|
-
}, [inputValue]);
|
|
120
|
-
|
|
121
|
-
const renderInput = useCallback(
|
|
122
|
-
({
|
|
123
|
-
InputLabelProps,
|
|
124
|
-
InputProps,
|
|
125
|
-
...params
|
|
126
|
-
}: AutocompleteRenderInputParams) => (
|
|
127
|
-
<Field
|
|
128
|
-
ariaDescribedBy={ariaDescribedBy}
|
|
129
|
-
errorMessage={errorMessage}
|
|
130
|
-
errorMessageList={errorMessageList}
|
|
131
|
-
fieldType="single"
|
|
132
|
-
hasVisibleLabel
|
|
133
|
-
//@ts-expect-error htmlFor exists on `InputLabelProps`, but not the type.
|
|
134
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
135
|
-
id={InputLabelProps.htmlFor}
|
|
136
|
-
isFullWidth={isFullWidth}
|
|
137
|
-
hint={hint}
|
|
138
|
-
HintLinkComponent={HintLinkComponent}
|
|
139
|
-
label={label}
|
|
140
|
-
isOptional={isOptional}
|
|
141
|
-
renderFieldComponent={({
|
|
142
|
-
ariaDescribedBy,
|
|
143
|
-
id,
|
|
144
|
-
errorMessageElementId,
|
|
145
|
-
labelElementId,
|
|
146
|
-
}) => (
|
|
147
|
-
<InputBase
|
|
148
|
-
{...params}
|
|
149
|
-
{...InputProps}
|
|
150
|
-
inputProps={{
|
|
151
|
-
...params.inputProps,
|
|
152
|
-
"aria-errormessage": errorMessageElementId,
|
|
153
|
-
"aria-labelledby": labelElementId,
|
|
154
|
-
"data-se": testId,
|
|
155
|
-
}}
|
|
156
|
-
aria-describedby={ariaDescribedBy}
|
|
157
|
-
id={id}
|
|
158
|
-
name={nameOverride ?? id}
|
|
159
|
-
required={!isOptional}
|
|
160
|
-
/>
|
|
161
|
-
)}
|
|
162
|
-
/>
|
|
163
|
-
),
|
|
164
|
-
[
|
|
165
|
-
ariaDescribedBy,
|
|
166
|
-
errorMessage,
|
|
167
|
-
errorMessageList,
|
|
168
|
-
hint,
|
|
169
|
-
HintLinkComponent,
|
|
170
|
-
isFullWidth,
|
|
171
|
-
isOptional,
|
|
172
|
-
label,
|
|
173
|
-
nameOverride,
|
|
174
|
-
testId,
|
|
175
|
-
],
|
|
176
|
-
);
|
|
177
|
-
|
|
178
|
-
return {
|
|
179
|
-
inputValueProp,
|
|
180
|
-
isVirtualizedRef,
|
|
181
|
-
renderInput,
|
|
182
|
-
valueProps,
|
|
183
|
-
};
|
|
184
|
-
};
|
package/src/useContrastMode.tsx
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2023-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
|
-
useContext,
|
|
16
|
-
useRef,
|
|
17
|
-
useLayoutEffect,
|
|
18
|
-
useState,
|
|
19
|
-
useCallback,
|
|
20
|
-
} from "react";
|
|
21
|
-
import * as Tokens from "@okta/odyssey-design-tokens";
|
|
22
|
-
|
|
23
|
-
import { hexToRgb } from "./hexToRgb.js";
|
|
24
|
-
|
|
25
|
-
export type ContrastMode = "lowContrast" | "highContrast";
|
|
26
|
-
export type ContrastModeContextType = {
|
|
27
|
-
contrastMode: ContrastMode;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export const ContrastModeContext = createContext<ContrastModeContextType>({
|
|
31
|
-
contrastMode: "lowContrast",
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
export const defaultContrast = "lowContrast";
|
|
35
|
-
|
|
36
|
-
export const useContrastModeContext = () => useContext(ContrastModeContext);
|
|
37
|
-
|
|
38
|
-
export const hueNeutral50Rgb = hexToRgb(Tokens.HueNeutral50).asFormattedString;
|
|
39
|
-
|
|
40
|
-
export const isTransparentColor = (color: string) =>
|
|
41
|
-
color === "rgba(0, 0, 0, 0)" || color === "transparent";
|
|
42
|
-
|
|
43
|
-
export const normalizeRgbaToRgb = (rgba: string) =>
|
|
44
|
-
rgba.replace(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*[\d.]+\)/, "rgb($1, $2, $3)");
|
|
45
|
-
|
|
46
|
-
export const getElementComputedBackgroundColor = (
|
|
47
|
-
element: HTMLElement,
|
|
48
|
-
): string => window.getComputedStyle(element).backgroundColor;
|
|
49
|
-
|
|
50
|
-
export const normalizeBackgroundColor = (bgColor: string): string => {
|
|
51
|
-
if (/rgba\((\d+),\s*(\d+),\s*(\d+),\s*[\d.]+\)/.test(bgColor)) {
|
|
52
|
-
const normalizedColor = normalizeRgbaToRgb(bgColor);
|
|
53
|
-
return normalizedColor === hueNeutral50Rgb
|
|
54
|
-
? Tokens.HueNeutral50
|
|
55
|
-
: normalizedColor;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return bgColor === hueNeutral50Rgb ? Tokens.HueNeutral50 : bgColor;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
export const defaultParentBackgroundColor = "#ffffff";
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Determines the effective background color of an element.
|
|
65
|
-
*
|
|
66
|
-
* @param element - The HTML element to check.
|
|
67
|
-
* @returns The effective background color. Returns defaultParentBackgroundColor if no non-transparent background is found.
|
|
68
|
-
*
|
|
69
|
-
* Note:
|
|
70
|
-
* - Low contrast mode is used for white background (defaultParentBackgroundColor or HueNeutralWhite).
|
|
71
|
-
* - High contrast mode is used for gray background (#f4f4f4 or HueNeutral50).
|
|
72
|
-
*/
|
|
73
|
-
export const getBackgroundColor = (element: HTMLElement | null): string => {
|
|
74
|
-
while (element) {
|
|
75
|
-
const bgColor = getElementComputedBackgroundColor(element);
|
|
76
|
-
if (!isTransparentColor(bgColor)) {
|
|
77
|
-
return normalizeBackgroundColor(bgColor);
|
|
78
|
-
}
|
|
79
|
-
element = element.parentElement;
|
|
80
|
-
}
|
|
81
|
-
return defaultParentBackgroundColor; // Default to white/low contrast if no background color is found
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
type UseContrastModeProps = {
|
|
85
|
-
contrastMode?: ContrastMode;
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
export const useContrastMode = ({
|
|
89
|
-
contrastMode: explicitContrastMode,
|
|
90
|
-
}: UseContrastModeProps) => {
|
|
91
|
-
const contrastContainerRef = useRef<HTMLDivElement>(null);
|
|
92
|
-
const { contrastMode: existingContrastMode } = useContrastModeContext();
|
|
93
|
-
|
|
94
|
-
const [parentBackgroundColor, setParentBackgroundColor] = useState(
|
|
95
|
-
defaultParentBackgroundColor,
|
|
96
|
-
);
|
|
97
|
-
const [contrastMode, setContrastMode] = useState<ContrastMode>(
|
|
98
|
-
() => explicitContrastMode || existingContrastMode,
|
|
99
|
-
);
|
|
100
|
-
|
|
101
|
-
const updateBackgroundColor = useCallback(() => {
|
|
102
|
-
const newBgColor = getBackgroundColor(contrastContainerRef.current);
|
|
103
|
-
setParentBackgroundColor(newBgColor);
|
|
104
|
-
|
|
105
|
-
if (!explicitContrastMode) {
|
|
106
|
-
setContrastMode(
|
|
107
|
-
newBgColor === Tokens.HueNeutral50 ? "highContrast" : "lowContrast",
|
|
108
|
-
);
|
|
109
|
-
}
|
|
110
|
-
}, [explicitContrastMode]);
|
|
111
|
-
|
|
112
|
-
useLayoutEffect(() => {
|
|
113
|
-
const observer = new MutationObserver(updateBackgroundColor);
|
|
114
|
-
observer.observe(document.querySelector("html") as HTMLHtmlElement, {
|
|
115
|
-
attributes: true,
|
|
116
|
-
attributeFilter: ["class", "style"],
|
|
117
|
-
});
|
|
118
|
-
observer.observe(document.head, {
|
|
119
|
-
childList: true,
|
|
120
|
-
subtree: true,
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
const onTransitionEnd = (event: TransitionEvent) => {
|
|
124
|
-
if (event.propertyName === "background-color") {
|
|
125
|
-
updateBackgroundColor();
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
document.addEventListener("transitionend", onTransitionEnd);
|
|
130
|
-
updateBackgroundColor();
|
|
131
|
-
|
|
132
|
-
return () => {
|
|
133
|
-
document.removeEventListener("transitionend", onTransitionEnd);
|
|
134
|
-
observer.disconnect();
|
|
135
|
-
};
|
|
136
|
-
}, [updateBackgroundColor]);
|
|
137
|
-
|
|
138
|
-
return {
|
|
139
|
-
contrastContainerRef,
|
|
140
|
-
contrastMode,
|
|
141
|
-
parentBackgroundColor,
|
|
142
|
-
};
|
|
143
|
-
};
|
package/src/useNormalizedKey.ts
DELETED
|
@@ -1,17 +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
|
-
export const normalizedKey = (...keyParts: string[]): string => {
|
|
14
|
-
const SEPARATOR = "-";
|
|
15
|
-
// Joins all strings together with SEPARATOR, replaces any non-alphanumeric character with SEPARATOR and casts all to lowercase
|
|
16
|
-
return keyParts.join(SEPARATOR).replace(/\W+/g, SEPARATOR).toLowerCase();
|
|
17
|
-
};
|
|
@@ -1,21 +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 { useMemo } from "react";
|
|
14
|
-
|
|
15
|
-
import { createUniqueAlphabeticalId } from "./createUniqueAlphabeticalId.js";
|
|
16
|
-
|
|
17
|
-
export const useUniqueAlphabeticalId = (id?: string) => {
|
|
18
|
-
const uniqueAlphabeticalId = useMemo(() => createUniqueAlphabeticalId(), []);
|
|
19
|
-
|
|
20
|
-
return id ?? uniqueAlphabeticalId;
|
|
21
|
-
};
|
package/src/useUniqueId.ts
DELETED
|
@@ -1,21 +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 { useMemo } from "react";
|
|
14
|
-
|
|
15
|
-
import { createUniqueId } from "./createUniqueId.js";
|
|
16
|
-
|
|
17
|
-
export const useUniqueId = (id?: string) => {
|
|
18
|
-
const uniqueId = useMemo(() => createUniqueId(), []);
|
|
19
|
-
|
|
20
|
-
return id ?? uniqueId;
|
|
21
|
-
};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2025-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 { createReactRootElements } from "./createReactRootElements.js";
|
|
14
|
-
|
|
15
|
-
describe("createReactRootElements", () => {
|
|
16
|
-
test("returns two elements at attach to a Shadow DOM", () => {
|
|
17
|
-
const { appRootElement, stylesRootElement } = createReactRootElements();
|
|
18
|
-
|
|
19
|
-
expect(appRootElement).toBeInstanceOf(HTMLDivElement);
|
|
20
|
-
expect(stylesRootElement).toBeInstanceOf(HTMLDivElement);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
test("App root element has the correct attributes", () => {
|
|
24
|
-
const { appRootElement } = createReactRootElements();
|
|
25
|
-
|
|
26
|
-
expect(appRootElement).toHaveAttribute("id", "app-root");
|
|
27
|
-
expect(appRootElement).toHaveAttribute("style", "height: inherit;");
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
test("Emotion root element has the correct attributes", () => {
|
|
31
|
-
const nonce = "hello-world";
|
|
32
|
-
|
|
33
|
-
window.cspNonce = nonce;
|
|
34
|
-
|
|
35
|
-
const { stylesRootElement } = createReactRootElements();
|
|
36
|
-
|
|
37
|
-
expect(stylesRootElement).toHaveAttribute("id", "style-root");
|
|
38
|
-
expect(stylesRootElement).toHaveAttribute("nonce", nonce);
|
|
39
|
-
});
|
|
40
|
-
});
|