@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/Drawer.tsx
DELETED
|
@@ -1,255 +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
|
-
ReactElement,
|
|
16
|
-
ReactNode,
|
|
17
|
-
useEffect,
|
|
18
|
-
useMemo,
|
|
19
|
-
useRef,
|
|
20
|
-
useState,
|
|
21
|
-
} from "react";
|
|
22
|
-
|
|
23
|
-
import { Drawer as MuiDrawer } from "@mui/material";
|
|
24
|
-
import styled from "@emotion/styled";
|
|
25
|
-
import { useTranslation } from "react-i18next";
|
|
26
|
-
|
|
27
|
-
import { Button } from "./Buttons/index.js";
|
|
28
|
-
import { CloseIcon } from "./icons.generated/index.js";
|
|
29
|
-
import {
|
|
30
|
-
DesignTokens,
|
|
31
|
-
useOdysseyDesignTokens,
|
|
32
|
-
} from "./OdysseyDesignTokensContext.js";
|
|
33
|
-
import { Heading5 } from "./Typography.js";
|
|
34
|
-
import type { HtmlProps } from "./HtmlProps.js";
|
|
35
|
-
|
|
36
|
-
export const variantValues = ["temporary", "persistent"] as const;
|
|
37
|
-
|
|
38
|
-
export type DrawerProps = {
|
|
39
|
-
/**
|
|
40
|
-
* An optional Button object to be situated in the Drawerfooter. Should almost always be of variant `primary`.
|
|
41
|
-
*/
|
|
42
|
-
primaryCallToActionComponent?: ReactElement<typeof Button>;
|
|
43
|
-
/**
|
|
44
|
-
* An optional Button object to be situated in the Drawer footer, alongside the `callToActionPrimaryComponent`.
|
|
45
|
-
*/
|
|
46
|
-
secondaryCallToActionComponent?: ReactElement<typeof Button>;
|
|
47
|
-
/**
|
|
48
|
-
* An optional Button object to be situated in the Drawer footer, alongside the other two `callToAction` components.
|
|
49
|
-
*/
|
|
50
|
-
tertiaryCallToActionComponent?: ReactElement<typeof Button>;
|
|
51
|
-
/**
|
|
52
|
-
* The content of the Drawer. May be a `string` or any other `ReactNode` or array of `ReactNode`s.
|
|
53
|
-
*/
|
|
54
|
-
children?: ReactNode;
|
|
55
|
-
/**
|
|
56
|
-
* When set to `true`, the Drawer will be visible.
|
|
57
|
-
*/
|
|
58
|
-
isOpen?: boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Callback that controls what happens when the Drawer is dismissed
|
|
61
|
-
*/
|
|
62
|
-
onClose: () => void;
|
|
63
|
-
/**
|
|
64
|
-
* Shows divider lines separating header, content, and footer (if using action buttons)
|
|
65
|
-
*/
|
|
66
|
-
showDividers: boolean;
|
|
67
|
-
/**
|
|
68
|
-
* The title of the Drawer
|
|
69
|
-
*/
|
|
70
|
-
title?: string;
|
|
71
|
-
/**
|
|
72
|
-
* Type of Drawer
|
|
73
|
-
*/
|
|
74
|
-
variant?: (typeof variantValues)[number];
|
|
75
|
-
} & Pick<HtmlProps, "ariaLabel" | "testId" | "translate">;
|
|
76
|
-
|
|
77
|
-
interface DrawerStyleProps {
|
|
78
|
-
odysseyDesignTokens: DesignTokens;
|
|
79
|
-
showDividers: boolean;
|
|
80
|
-
}
|
|
81
|
-
const DrawerHeader = styled("div", {
|
|
82
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
83
|
-
})<DrawerStyleProps>`
|
|
84
|
-
position: sticky;
|
|
85
|
-
top: 0;
|
|
86
|
-
display: flex;
|
|
87
|
-
justify-content: space-between;
|
|
88
|
-
align-items: center;
|
|
89
|
-
margin: 0;
|
|
90
|
-
padding: ${({ odysseyDesignTokens }) => odysseyDesignTokens.Spacing4}
|
|
91
|
-
${({ odysseyDesignTokens }) => odysseyDesignTokens.Spacing5};
|
|
92
|
-
color: ${({ odysseyDesignTokens }) => odysseyDesignTokens.HueNeutral900};
|
|
93
|
-
background-color: ${({ odysseyDesignTokens }) =>
|
|
94
|
-
odysseyDesignTokens.HueNeutralWhite};
|
|
95
|
-
border-bottom: ${({ showDividers, odysseyDesignTokens }) =>
|
|
96
|
-
showDividers ? `1px solid ${odysseyDesignTokens.HueNeutral200}` : "none"};
|
|
97
|
-
`;
|
|
98
|
-
|
|
99
|
-
const DrawerContentWrapper = styled("div", {
|
|
100
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
101
|
-
})<{
|
|
102
|
-
odysseyDesignTokens: DesignTokens;
|
|
103
|
-
}>`
|
|
104
|
-
overflow-y: auto;
|
|
105
|
-
`;
|
|
106
|
-
|
|
107
|
-
const DrawerContent = styled("div", {
|
|
108
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
109
|
-
})<DrawerStyleProps>`
|
|
110
|
-
padding: ${({ showDividers, odysseyDesignTokens }) =>
|
|
111
|
-
showDividers
|
|
112
|
-
? `${odysseyDesignTokens.Spacing5}`
|
|
113
|
-
: `0 ${odysseyDesignTokens.Spacing5}`};
|
|
114
|
-
`;
|
|
115
|
-
|
|
116
|
-
const DrawerFooter = styled("div", {
|
|
117
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
118
|
-
})<DrawerStyleProps>`
|
|
119
|
-
position: sticky;
|
|
120
|
-
bottom: 0;
|
|
121
|
-
display: flex;
|
|
122
|
-
justify-content: flex-end;
|
|
123
|
-
align-items: center;
|
|
124
|
-
align-content: center;
|
|
125
|
-
padding: ${({ odysseyDesignTokens }) => odysseyDesignTokens.Spacing4};
|
|
126
|
-
border-top: ${({ showDividers, odysseyDesignTokens }) =>
|
|
127
|
-
showDividers ? `1px solid ${odysseyDesignTokens.HueNeutral200}` : "none"};
|
|
128
|
-
background-color: ${({ odysseyDesignTokens }) =>
|
|
129
|
-
odysseyDesignTokens.HueNeutralWhite};
|
|
130
|
-
`;
|
|
131
|
-
|
|
132
|
-
const Drawer = ({
|
|
133
|
-
ariaLabel,
|
|
134
|
-
children,
|
|
135
|
-
isOpen,
|
|
136
|
-
onClose,
|
|
137
|
-
primaryCallToActionComponent,
|
|
138
|
-
secondaryCallToActionComponent,
|
|
139
|
-
showDividers = false,
|
|
140
|
-
tertiaryCallToActionComponent,
|
|
141
|
-
testId,
|
|
142
|
-
title,
|
|
143
|
-
translate,
|
|
144
|
-
variant = "temporary",
|
|
145
|
-
}: DrawerProps) => {
|
|
146
|
-
const [isContentScrollable, setIsContentScrollable] = useState(false);
|
|
147
|
-
const drawerContentRef = useRef<HTMLDivElement>(null);
|
|
148
|
-
const odysseyDesignTokens = useOdysseyDesignTokens();
|
|
149
|
-
|
|
150
|
-
//If RTL is set in the theme, align the drawer on the left side of the screen, uses right by default.
|
|
151
|
-
const { i18n } = useTranslation();
|
|
152
|
-
const anchorDirection = i18n.dir() === "rtl" ? "left" : "right";
|
|
153
|
-
|
|
154
|
-
useEffect(() => {
|
|
155
|
-
let frameId: number;
|
|
156
|
-
|
|
157
|
-
const handleContentScroll = () => {
|
|
158
|
-
const drawerContentElement = drawerContentRef.current;
|
|
159
|
-
if (drawerContentElement) {
|
|
160
|
-
cancelAnimationFrame(frameId);
|
|
161
|
-
setIsContentScrollable(
|
|
162
|
-
drawerContentElement.scrollHeight > drawerContentElement.clientHeight,
|
|
163
|
-
);
|
|
164
|
-
}
|
|
165
|
-
frameId = requestAnimationFrame(handleContentScroll);
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
if (isOpen) {
|
|
169
|
-
frameId = requestAnimationFrame(handleContentScroll);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
return () => {
|
|
173
|
-
cancelAnimationFrame(frameId);
|
|
174
|
-
};
|
|
175
|
-
}, [isOpen]);
|
|
176
|
-
|
|
177
|
-
const dividersVisible = useMemo(() => {
|
|
178
|
-
return showDividers || isContentScrollable;
|
|
179
|
-
}, [showDividers, isContentScrollable]);
|
|
180
|
-
|
|
181
|
-
const hasFooter = useMemo(
|
|
182
|
-
() =>
|
|
183
|
-
primaryCallToActionComponent ||
|
|
184
|
-
secondaryCallToActionComponent ||
|
|
185
|
-
tertiaryCallToActionComponent,
|
|
186
|
-
[
|
|
187
|
-
primaryCallToActionComponent,
|
|
188
|
-
secondaryCallToActionComponent,
|
|
189
|
-
tertiaryCallToActionComponent,
|
|
190
|
-
],
|
|
191
|
-
);
|
|
192
|
-
|
|
193
|
-
return (
|
|
194
|
-
<MuiDrawer
|
|
195
|
-
data-se={testId}
|
|
196
|
-
anchor={anchorDirection}
|
|
197
|
-
open={isOpen}
|
|
198
|
-
onClose={onClose}
|
|
199
|
-
variant={variant}
|
|
200
|
-
sx={{
|
|
201
|
-
//Overrides defualt MUI inline style
|
|
202
|
-
...(variant === "persistent" && {
|
|
203
|
-
"& .MuiDrawer-paper": {
|
|
204
|
-
transition: "none",
|
|
205
|
-
},
|
|
206
|
-
}),
|
|
207
|
-
}}
|
|
208
|
-
>
|
|
209
|
-
<DrawerContentWrapper
|
|
210
|
-
{...(isContentScrollable && {
|
|
211
|
-
//Sets tabIndex on content element if scrollable so content is easier to navigate with the keyboard
|
|
212
|
-
tabIndex: 0,
|
|
213
|
-
})}
|
|
214
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
215
|
-
ref={drawerContentRef}
|
|
216
|
-
>
|
|
217
|
-
<DrawerHeader
|
|
218
|
-
translate={translate}
|
|
219
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
220
|
-
showDividers={dividersVisible}
|
|
221
|
-
>
|
|
222
|
-
<Heading5>{title}</Heading5>
|
|
223
|
-
<Button
|
|
224
|
-
ariaLabel={ariaLabel}
|
|
225
|
-
onClick={onClose}
|
|
226
|
-
size="small"
|
|
227
|
-
startIcon={<CloseIcon />}
|
|
228
|
-
variant="floating"
|
|
229
|
-
/>
|
|
230
|
-
</DrawerHeader>
|
|
231
|
-
<DrawerContent
|
|
232
|
-
showDividers={dividersVisible}
|
|
233
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
234
|
-
>
|
|
235
|
-
{children}
|
|
236
|
-
</DrawerContent>
|
|
237
|
-
</DrawerContentWrapper>
|
|
238
|
-
{hasFooter && (
|
|
239
|
-
<DrawerFooter
|
|
240
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
241
|
-
showDividers={dividersVisible}
|
|
242
|
-
>
|
|
243
|
-
{tertiaryCallToActionComponent}
|
|
244
|
-
{secondaryCallToActionComponent}
|
|
245
|
-
{primaryCallToActionComponent}
|
|
246
|
-
</DrawerFooter>
|
|
247
|
-
)}
|
|
248
|
-
</MuiDrawer>
|
|
249
|
-
);
|
|
250
|
-
};
|
|
251
|
-
|
|
252
|
-
const MemoizedDrawer = memo(Drawer);
|
|
253
|
-
MemoizedDrawer.displayName = "Drawer";
|
|
254
|
-
|
|
255
|
-
export { MemoizedDrawer as Drawer };
|
package/src/EmptyState.tsx
DELETED
|
@@ -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 { ReactNode, memo } from "react";
|
|
14
|
-
import { Heading4, Paragraph } from "./Typography.js";
|
|
15
|
-
import { Box } from "./Box.js";
|
|
16
|
-
import styled from "@emotion/styled";
|
|
17
|
-
import {
|
|
18
|
-
useOdysseyDesignTokens,
|
|
19
|
-
DesignTokens,
|
|
20
|
-
} from "./OdysseyDesignTokensContext.js";
|
|
21
|
-
|
|
22
|
-
const EmptyContainer = styled("div", {
|
|
23
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
24
|
-
})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({
|
|
25
|
-
display: "flex",
|
|
26
|
-
flexDirection: "column",
|
|
27
|
-
marginBlock: odysseyDesignTokens.Spacing9,
|
|
28
|
-
padding: odysseyDesignTokens.Spacing5,
|
|
29
|
-
textAlign: "center",
|
|
30
|
-
width: "100%",
|
|
31
|
-
alignItems: "center",
|
|
32
|
-
}));
|
|
33
|
-
|
|
34
|
-
export type EmptyStateProps = {
|
|
35
|
-
/**
|
|
36
|
-
* Main heading of the empty state
|
|
37
|
-
*/
|
|
38
|
-
heading: string;
|
|
39
|
-
/**
|
|
40
|
-
* A descriptive text explaining more context as to why we don't have data.
|
|
41
|
-
*/
|
|
42
|
-
description: string;
|
|
43
|
-
/**
|
|
44
|
-
* Primary call to action
|
|
45
|
-
*/
|
|
46
|
-
PrimaryCallToActionComponent?: ReactNode;
|
|
47
|
-
/**
|
|
48
|
-
* Secondary call to action
|
|
49
|
-
*/
|
|
50
|
-
SecondaryCallToActionComponent?: ReactNode;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
const EmptyState = ({
|
|
54
|
-
heading,
|
|
55
|
-
description,
|
|
56
|
-
PrimaryCallToActionComponent,
|
|
57
|
-
SecondaryCallToActionComponent,
|
|
58
|
-
}: EmptyStateProps) => {
|
|
59
|
-
const odysseyDesignTokens = useOdysseyDesignTokens();
|
|
60
|
-
|
|
61
|
-
return (
|
|
62
|
-
<EmptyContainer odysseyDesignTokens={odysseyDesignTokens}>
|
|
63
|
-
<Heading4>{heading}</Heading4>
|
|
64
|
-
<Paragraph>{description}</Paragraph>
|
|
65
|
-
{(PrimaryCallToActionComponent || SecondaryCallToActionComponent) && (
|
|
66
|
-
<Box sx={{ marginBlockStart: 5 }}>
|
|
67
|
-
{SecondaryCallToActionComponent}
|
|
68
|
-
{PrimaryCallToActionComponent}
|
|
69
|
-
</Box>
|
|
70
|
-
)}
|
|
71
|
-
</EmptyContainer>
|
|
72
|
-
);
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
const MemoizedEmptyState = memo(EmptyState);
|
|
76
|
-
MemoizedEmptyState.displayName = "EmptyState";
|
|
77
|
-
|
|
78
|
-
export { MemoizedEmptyState as EmptyState };
|
|
79
|
-
export { MemoizedEmptyState as DataTableEmptyState };
|
package/src/ErrorMessageList.tsx
DELETED
|
@@ -1,56 +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 { List as MuiList, ListItem as MuiListItem } from "@mui/material";
|
|
14
|
-
import { useOdysseyDesignTokens } from "./OdysseyDesignTokensContext.js";
|
|
15
|
-
import { memo, useMemo } from "react";
|
|
16
|
-
|
|
17
|
-
export type ErrorMessageListProps = {
|
|
18
|
-
errorMessages: string[];
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
const listItemStyles = {
|
|
22
|
-
display: "list-item",
|
|
23
|
-
paddingInlineStart: 0,
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
const ErrorMessageList = ({ errorMessages }: ErrorMessageListProps) => {
|
|
27
|
-
const odysseyDesignTokens = useOdysseyDesignTokens();
|
|
28
|
-
|
|
29
|
-
const listStyles = useMemo(
|
|
30
|
-
() => ({
|
|
31
|
-
listStyle: "disc",
|
|
32
|
-
paddingInlineStart: odysseyDesignTokens.Spacing4,
|
|
33
|
-
}),
|
|
34
|
-
[odysseyDesignTokens],
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
return (
|
|
38
|
-
<MuiList disablePadding dense sx={listStyles}>
|
|
39
|
-
{errorMessages.map((errorMessage) => (
|
|
40
|
-
<MuiListItem
|
|
41
|
-
key={errorMessage}
|
|
42
|
-
disablePadding
|
|
43
|
-
dense
|
|
44
|
-
sx={listItemStyles}
|
|
45
|
-
>
|
|
46
|
-
{errorMessage}
|
|
47
|
-
</MuiListItem>
|
|
48
|
-
))}
|
|
49
|
-
</MuiList>
|
|
50
|
-
);
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
const MemoizedErrorMessageList = memo(ErrorMessageList);
|
|
54
|
-
MemoizedErrorMessageList.displayName = "ErrorMessageList";
|
|
55
|
-
|
|
56
|
-
export { MemoizedErrorMessageList as ErrorMessageList };
|
package/src/Field.tsx
DELETED
|
@@ -1,189 +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 { memo, ReactElement, useMemo } from "react";
|
|
14
|
-
import {
|
|
15
|
-
FormControl as MuiFormControl,
|
|
16
|
-
FormLabel as MuiFormLabel,
|
|
17
|
-
} from "@mui/material";
|
|
18
|
-
import { FieldComponentProps } from "./FieldComponentProps.js";
|
|
19
|
-
import { FieldError } from "./FieldError.js";
|
|
20
|
-
import { FieldHint } from "./FieldHint.js";
|
|
21
|
-
import { FieldLabel } from "./FieldLabel.js";
|
|
22
|
-
import { HtmlProps } from "./HtmlProps.js";
|
|
23
|
-
import { Typography } from "./Typography.js";
|
|
24
|
-
import { useFieldset } from "./FieldsetContext.js";
|
|
25
|
-
import { useTranslation } from "react-i18next";
|
|
26
|
-
import { useUniqueId } from "./useUniqueId.js";
|
|
27
|
-
|
|
28
|
-
export const fieldTypeValues = ["single", "group"] as const;
|
|
29
|
-
|
|
30
|
-
export type RenderFieldComponentProps = {
|
|
31
|
-
ariaDescribedBy?: string;
|
|
32
|
-
dataSe?: string;
|
|
33
|
-
errorMessageElementId?: string;
|
|
34
|
-
id: string;
|
|
35
|
-
labelElementId: string;
|
|
36
|
-
isReadOnly?: boolean;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export type FieldProps = {
|
|
40
|
-
/**
|
|
41
|
-
* If `error` is not undefined, the `input` will indicate an error.
|
|
42
|
-
*/
|
|
43
|
-
errorMessageList?: string[];
|
|
44
|
-
/**
|
|
45
|
-
* The field type determines how ARIA components are setup. It's important to use this to denote if you expect only one component (like a text field) or multiple (like a radio group).
|
|
46
|
-
*/
|
|
47
|
-
fieldType: (typeof fieldTypeValues)[number];
|
|
48
|
-
/**
|
|
49
|
-
* If `true`, the Field label will be shown
|
|
50
|
-
*/
|
|
51
|
-
hasVisibleLabel: boolean;
|
|
52
|
-
/**
|
|
53
|
-
* Important for narrowing down the `fieldset` role to "radiogroup".
|
|
54
|
-
*/
|
|
55
|
-
isRadioGroup?: boolean;
|
|
56
|
-
/**
|
|
57
|
-
* Important for determining if children inherit error state
|
|
58
|
-
*/
|
|
59
|
-
isCheckboxGroup?: boolean;
|
|
60
|
-
/**
|
|
61
|
-
* The label for the `input` element.
|
|
62
|
-
*/
|
|
63
|
-
label: string;
|
|
64
|
-
/**
|
|
65
|
-
* The short hint displayed in the `input` before the user enters a value.
|
|
66
|
-
*/
|
|
67
|
-
placeholder?: string;
|
|
68
|
-
/**
|
|
69
|
-
* Render-props function that sends back ARIA props to your field component.
|
|
70
|
-
*/
|
|
71
|
-
renderFieldComponent: ({
|
|
72
|
-
ariaDescribedBy,
|
|
73
|
-
dataSe,
|
|
74
|
-
errorMessageElementId,
|
|
75
|
-
id,
|
|
76
|
-
labelElementId,
|
|
77
|
-
isReadOnly,
|
|
78
|
-
}: RenderFieldComponentProps) => ReactElement;
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
const Field = ({
|
|
82
|
-
ariaDescribedBy,
|
|
83
|
-
errorMessage,
|
|
84
|
-
errorMessageList,
|
|
85
|
-
fieldType,
|
|
86
|
-
hasVisibleLabel,
|
|
87
|
-
hint,
|
|
88
|
-
HintLinkComponent,
|
|
89
|
-
id: idOverride,
|
|
90
|
-
isDisabled: isDisabledProp = false,
|
|
91
|
-
isFullWidth = false,
|
|
92
|
-
isRadioGroup = false,
|
|
93
|
-
isOptional = false,
|
|
94
|
-
isReadOnly = false,
|
|
95
|
-
label,
|
|
96
|
-
renderFieldComponent,
|
|
97
|
-
}: FieldProps &
|
|
98
|
-
Pick<
|
|
99
|
-
FieldComponentProps,
|
|
100
|
-
| "errorMessage"
|
|
101
|
-
| "errorMessageList"
|
|
102
|
-
| "hint"
|
|
103
|
-
| "HintLinkComponent"
|
|
104
|
-
| "id"
|
|
105
|
-
| "isDisabled"
|
|
106
|
-
| "isFullWidth"
|
|
107
|
-
| "isOptional"
|
|
108
|
-
| "isReadOnly"
|
|
109
|
-
> &
|
|
110
|
-
Pick<HtmlProps, "ariaDescribedBy">) => {
|
|
111
|
-
const { t } = useTranslation();
|
|
112
|
-
|
|
113
|
-
const id = useUniqueId(idOverride);
|
|
114
|
-
const hintId = hint ? `${id}-hint` : undefined;
|
|
115
|
-
const errorMessageElementId =
|
|
116
|
-
errorMessage || errorMessageList ? `${id}-error` : undefined;
|
|
117
|
-
const labelElementId = `${id}-label`;
|
|
118
|
-
|
|
119
|
-
const localAriaDescribedBy = useMemo(
|
|
120
|
-
() =>
|
|
121
|
-
[hintId, errorMessageElementId, ariaDescribedBy].join(" ").trim() ||
|
|
122
|
-
undefined,
|
|
123
|
-
[ariaDescribedBy, errorMessageElementId, hintId],
|
|
124
|
-
);
|
|
125
|
-
|
|
126
|
-
const { isDisabled: isFieldsetDisabled } = useFieldset();
|
|
127
|
-
|
|
128
|
-
const isDisabled = useMemo(
|
|
129
|
-
() => isDisabledProp || isFieldsetDisabled,
|
|
130
|
-
[isDisabledProp, isFieldsetDisabled],
|
|
131
|
-
);
|
|
132
|
-
|
|
133
|
-
return (
|
|
134
|
-
<MuiFormControl
|
|
135
|
-
component={fieldType === "group" ? "fieldset" : "div"}
|
|
136
|
-
disabled={isDisabled}
|
|
137
|
-
error={
|
|
138
|
-
Boolean(errorMessage) ||
|
|
139
|
-
(Array.isArray(errorMessageList) && errorMessageList.length > 0)
|
|
140
|
-
}
|
|
141
|
-
role={isRadioGroup ? "radiogroup" : undefined}
|
|
142
|
-
fullWidth={isFullWidth}
|
|
143
|
-
>
|
|
144
|
-
{fieldType === "group" ? (
|
|
145
|
-
<MuiFormLabel component="legend" id={labelElementId}>
|
|
146
|
-
{label}{" "}
|
|
147
|
-
{isOptional && label && (
|
|
148
|
-
<Typography component="span" color="textSecondary">
|
|
149
|
-
({t("fieldlabel.optional.text")})
|
|
150
|
-
</Typography>
|
|
151
|
-
)}
|
|
152
|
-
</MuiFormLabel>
|
|
153
|
-
) : (
|
|
154
|
-
<FieldLabel
|
|
155
|
-
hasVisibleLabel={hasVisibleLabel}
|
|
156
|
-
id={labelElementId}
|
|
157
|
-
inputId={id}
|
|
158
|
-
isOptional={isOptional}
|
|
159
|
-
text={label}
|
|
160
|
-
/>
|
|
161
|
-
)}
|
|
162
|
-
|
|
163
|
-
{hint && (
|
|
164
|
-
<FieldHint id={hintId} LinkComponent={HintLinkComponent} text={hint} />
|
|
165
|
-
)}
|
|
166
|
-
|
|
167
|
-
{renderFieldComponent({
|
|
168
|
-
ariaDescribedBy: localAriaDescribedBy,
|
|
169
|
-
errorMessageElementId,
|
|
170
|
-
id,
|
|
171
|
-
labelElementId,
|
|
172
|
-
isReadOnly,
|
|
173
|
-
})}
|
|
174
|
-
|
|
175
|
-
{(errorMessage || errorMessageList) && (
|
|
176
|
-
<FieldError
|
|
177
|
-
id={errorMessageElementId}
|
|
178
|
-
message={errorMessage}
|
|
179
|
-
messageList={errorMessageList}
|
|
180
|
-
/>
|
|
181
|
-
)}
|
|
182
|
-
</MuiFormControl>
|
|
183
|
-
);
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
const MemoizedField = memo(Field);
|
|
187
|
-
MemoizedField.displayName = "Field";
|
|
188
|
-
|
|
189
|
-
export { MemoizedField as Field };
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2021-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 { ReactElement } from "react";
|
|
14
|
-
|
|
15
|
-
import { HintLink } from "./HintLink.js";
|
|
16
|
-
|
|
17
|
-
export type FieldComponentProps = {
|
|
18
|
-
/**
|
|
19
|
-
* If `error` is not undefined, the `input` will indicate an error.
|
|
20
|
-
*/
|
|
21
|
-
errorMessage?: string;
|
|
22
|
-
/**
|
|
23
|
-
* If `error` is not undefined, the `input` will indicate multiple errors.
|
|
24
|
-
*/
|
|
25
|
-
errorMessageList?: string[];
|
|
26
|
-
/**
|
|
27
|
-
* The helper text content.
|
|
28
|
-
*/
|
|
29
|
-
hint?: string;
|
|
30
|
-
/**
|
|
31
|
-
* A `Link` component to provide greater context that is rendered at the end of the `hint` text
|
|
32
|
-
*/
|
|
33
|
-
HintLinkComponent?: ReactElement<typeof HintLink>;
|
|
34
|
-
/**
|
|
35
|
-
* The id of the `input` element.
|
|
36
|
-
*/
|
|
37
|
-
id?: string;
|
|
38
|
-
/**
|
|
39
|
-
* If `true`, the component is disabled.
|
|
40
|
-
*/
|
|
41
|
-
isDisabled?: boolean;
|
|
42
|
-
/**
|
|
43
|
-
* If `true`, the component can stretch to fill the width of the container.
|
|
44
|
-
*/
|
|
45
|
-
isFullWidth?: boolean;
|
|
46
|
-
/**
|
|
47
|
-
* If `true`, the `input` element is not required.
|
|
48
|
-
*/
|
|
49
|
-
isOptional?: boolean;
|
|
50
|
-
/**
|
|
51
|
-
* It prevents the user from changing the value of the field
|
|
52
|
-
*/
|
|
53
|
-
isReadOnly?: boolean;
|
|
54
|
-
/**
|
|
55
|
-
* The name of the `input` element. Defaults to the `id` if not set.
|
|
56
|
-
*/
|
|
57
|
-
name?: string;
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
export type FieldComponentRenderProps = {
|
|
61
|
-
ariaDescribedBy: string;
|
|
62
|
-
dataSe: string;
|
|
63
|
-
errorMessageElementId: string;
|
|
64
|
-
id: string;
|
|
65
|
-
labelElementId: string;
|
|
66
|
-
};
|
package/src/FieldError.tsx
DELETED
|
@@ -1,59 +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 { memo } from "react";
|
|
14
|
-
import { FormHelperText } from "@mui/material";
|
|
15
|
-
import { useTranslation } from "react-i18next";
|
|
16
|
-
|
|
17
|
-
import { Box } from "./Box.js";
|
|
18
|
-
import { ErrorMessageList } from "./ErrorMessageList.js";
|
|
19
|
-
import type { HtmlProps } from "./HtmlProps.js";
|
|
20
|
-
import { ScreenReaderText } from "./ScreenReaderText.js";
|
|
21
|
-
|
|
22
|
-
export type FieldErrorProps = {
|
|
23
|
-
id?: string;
|
|
24
|
-
message?: string;
|
|
25
|
-
messageList?: string[];
|
|
26
|
-
} & Pick<HtmlProps, "testId" | "translate">;
|
|
27
|
-
|
|
28
|
-
const FieldError = ({
|
|
29
|
-
id,
|
|
30
|
-
message,
|
|
31
|
-
messageList,
|
|
32
|
-
testId,
|
|
33
|
-
translate,
|
|
34
|
-
}: FieldErrorProps) => {
|
|
35
|
-
const { t } = useTranslation();
|
|
36
|
-
|
|
37
|
-
return (
|
|
38
|
-
<FormHelperText
|
|
39
|
-
component="div"
|
|
40
|
-
data-se={testId}
|
|
41
|
-
error
|
|
42
|
-
id={id}
|
|
43
|
-
translate={translate}
|
|
44
|
-
>
|
|
45
|
-
<ScreenReaderText translate={translate}>{`${t(
|
|
46
|
-
"fielderror.screenreader.text",
|
|
47
|
-
)}:`}</ScreenReaderText>
|
|
48
|
-
<Box>
|
|
49
|
-
{message}
|
|
50
|
-
{messageList && <ErrorMessageList errorMessages={messageList} />}
|
|
51
|
-
</Box>
|
|
52
|
-
</FormHelperText>
|
|
53
|
-
);
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
const MemoizedFieldError = memo(FieldError);
|
|
57
|
-
MemoizedFieldError.displayName = "FieldError";
|
|
58
|
-
|
|
59
|
-
export { MemoizedFieldError as FieldError };
|