@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/PasswordField.tsx
DELETED
|
@@ -1,253 +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 { InputAdornment, InputBase, IconButton } from "@mui/material";
|
|
14
|
-
import {
|
|
15
|
-
ChangeEventHandler,
|
|
16
|
-
FocusEventHandler,
|
|
17
|
-
forwardRef,
|
|
18
|
-
memo,
|
|
19
|
-
useCallback,
|
|
20
|
-
useImperativeHandle,
|
|
21
|
-
useRef,
|
|
22
|
-
useState,
|
|
23
|
-
} from "react";
|
|
24
|
-
|
|
25
|
-
import { ShowIcon, HideIcon } from "./icons.generated/index.js";
|
|
26
|
-
import { Field } from "./Field.js";
|
|
27
|
-
import {
|
|
28
|
-
FieldComponentProps,
|
|
29
|
-
FieldComponentRenderProps,
|
|
30
|
-
} from "./FieldComponentProps.js";
|
|
31
|
-
import type { HtmlProps } from "./HtmlProps.js";
|
|
32
|
-
import { useTranslation } from "react-i18next";
|
|
33
|
-
import { FocusHandle, getControlState, useInputValues } from "./inputUtils.js";
|
|
34
|
-
|
|
35
|
-
export type PasswordFieldProps = {
|
|
36
|
-
/**
|
|
37
|
-
* This prop helps users to fill forms faster, especially on mobile devices.
|
|
38
|
-
* The name can be confusing, as it's more like an autofill.
|
|
39
|
-
* You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).
|
|
40
|
-
*/
|
|
41
|
-
autoCompleteType?: "current-password" | "new-password";
|
|
42
|
-
/**
|
|
43
|
-
* initial value for input. Use when component in uncontrolled.
|
|
44
|
-
*/
|
|
45
|
-
defaultValue?: string;
|
|
46
|
-
/**
|
|
47
|
-
* If `true`, the component will receive focus automatically.
|
|
48
|
-
*/
|
|
49
|
-
hasInitialFocus?: boolean;
|
|
50
|
-
/**
|
|
51
|
-
* If `true`, the show/hide icon is not shown to the user
|
|
52
|
-
*/
|
|
53
|
-
hasShowPassword?: boolean;
|
|
54
|
-
/**
|
|
55
|
-
* The ref forwarded to the TextField
|
|
56
|
-
*/
|
|
57
|
-
inputRef?: React.RefObject<FocusHandle>;
|
|
58
|
-
/**
|
|
59
|
-
* The label for the `input` element.
|
|
60
|
-
*/
|
|
61
|
-
label: string;
|
|
62
|
-
/**
|
|
63
|
-
* Callback fired when the `input` element loses focus.
|
|
64
|
-
*/
|
|
65
|
-
onBlur?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;
|
|
66
|
-
/**
|
|
67
|
-
* Callback fired when the value is changed.
|
|
68
|
-
*/
|
|
69
|
-
onChange?: ChangeEventHandler<HTMLTextAreaElement | HTMLInputElement>;
|
|
70
|
-
/**
|
|
71
|
-
* Callback fired when the `input` element get focus.
|
|
72
|
-
*/
|
|
73
|
-
onFocus?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;
|
|
74
|
-
/**
|
|
75
|
-
* The short hint displayed in the `input` before the user enters a value.
|
|
76
|
-
*/
|
|
77
|
-
placeholder?: string;
|
|
78
|
-
/**
|
|
79
|
-
* The value of the `input` element. Use when component is controlled.
|
|
80
|
-
*/
|
|
81
|
-
value?: string;
|
|
82
|
-
} & FieldComponentProps &
|
|
83
|
-
Pick<HtmlProps, "ariaDescribedBy" | "testId" | "translate">;
|
|
84
|
-
|
|
85
|
-
type FieldRenderProps = Partial<
|
|
86
|
-
Pick<FieldComponentRenderProps, "ariaDescribedBy" | "errorMessageElementId">
|
|
87
|
-
> &
|
|
88
|
-
Pick<FieldComponentRenderProps, "id" | "labelElementId">;
|
|
89
|
-
|
|
90
|
-
const PasswordField = forwardRef<HTMLInputElement, PasswordFieldProps>(
|
|
91
|
-
(
|
|
92
|
-
{
|
|
93
|
-
ariaDescribedBy,
|
|
94
|
-
autoCompleteType,
|
|
95
|
-
defaultValue,
|
|
96
|
-
errorMessage,
|
|
97
|
-
errorMessageList,
|
|
98
|
-
hasInitialFocus,
|
|
99
|
-
hint,
|
|
100
|
-
id: idOverride,
|
|
101
|
-
inputRef,
|
|
102
|
-
isDisabled = false,
|
|
103
|
-
isFullWidth = false,
|
|
104
|
-
isOptional = false,
|
|
105
|
-
hasShowPassword = true,
|
|
106
|
-
isReadOnly,
|
|
107
|
-
label,
|
|
108
|
-
name: nameOverride,
|
|
109
|
-
onChange: onChangeProp,
|
|
110
|
-
onFocus,
|
|
111
|
-
onBlur,
|
|
112
|
-
placeholder,
|
|
113
|
-
testId,
|
|
114
|
-
translate,
|
|
115
|
-
value,
|
|
116
|
-
},
|
|
117
|
-
ref,
|
|
118
|
-
) => {
|
|
119
|
-
const { t } = useTranslation();
|
|
120
|
-
const [inputType, setInputType] = useState("password");
|
|
121
|
-
|
|
122
|
-
const togglePasswordVisibility = useCallback(() => {
|
|
123
|
-
setInputType((inputType) =>
|
|
124
|
-
inputType === "password" ? "text" : "password",
|
|
125
|
-
);
|
|
126
|
-
}, []);
|
|
127
|
-
|
|
128
|
-
const controlledStateRef = useRef(
|
|
129
|
-
getControlState({
|
|
130
|
-
controlledValue: value,
|
|
131
|
-
uncontrolledValue: defaultValue,
|
|
132
|
-
}),
|
|
133
|
-
);
|
|
134
|
-
const inputValues = useInputValues({
|
|
135
|
-
defaultValue,
|
|
136
|
-
value,
|
|
137
|
-
controlState: controlledStateRef.current,
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
const localInputRef = useRef<HTMLInputElement>(null);
|
|
141
|
-
useImperativeHandle(inputRef, () => {
|
|
142
|
-
return {
|
|
143
|
-
focus: () => {
|
|
144
|
-
localInputRef.current?.focus();
|
|
145
|
-
},
|
|
146
|
-
};
|
|
147
|
-
}, []);
|
|
148
|
-
|
|
149
|
-
const onChange = useCallback<
|
|
150
|
-
ChangeEventHandler<HTMLTextAreaElement | HTMLInputElement>
|
|
151
|
-
>(
|
|
152
|
-
(event) => {
|
|
153
|
-
onChangeProp?.(event);
|
|
154
|
-
},
|
|
155
|
-
[onChangeProp],
|
|
156
|
-
);
|
|
157
|
-
|
|
158
|
-
const renderFieldComponent = useCallback(
|
|
159
|
-
({
|
|
160
|
-
ariaDescribedBy,
|
|
161
|
-
errorMessageElementId,
|
|
162
|
-
id,
|
|
163
|
-
labelElementId,
|
|
164
|
-
}: FieldRenderProps) => (
|
|
165
|
-
<InputBase
|
|
166
|
-
{...inputValues}
|
|
167
|
-
aria-describedby={ariaDescribedBy}
|
|
168
|
-
autoComplete={inputType === "password" ? autoCompleteType : "off"}
|
|
169
|
-
/* eslint-disable-next-line jsx-a11y/no-autofocus */
|
|
170
|
-
autoFocus={hasInitialFocus}
|
|
171
|
-
endAdornment={
|
|
172
|
-
hasShowPassword && (
|
|
173
|
-
<InputAdornment position="end">
|
|
174
|
-
<IconButton
|
|
175
|
-
aria-controls={id}
|
|
176
|
-
aria-label={
|
|
177
|
-
inputType === "password"
|
|
178
|
-
? t("passwordfield.icon.label.show")
|
|
179
|
-
: t("passwordfield.icon.label.hide")
|
|
180
|
-
}
|
|
181
|
-
aria-pressed={inputType === "text"}
|
|
182
|
-
onClick={togglePasswordVisibility}
|
|
183
|
-
>
|
|
184
|
-
{inputType === "password" ? <ShowIcon /> : <HideIcon />}
|
|
185
|
-
</IconButton>
|
|
186
|
-
</InputAdornment>
|
|
187
|
-
)
|
|
188
|
-
}
|
|
189
|
-
id={id}
|
|
190
|
-
inputProps={{
|
|
191
|
-
"aria-errormessage": errorMessageElementId,
|
|
192
|
-
"aria-labelledby": labelElementId,
|
|
193
|
-
"data-se": testId,
|
|
194
|
-
// role: "textbox" Added because password inputs don't have an implicit role assigned. This causes problems with element selection.
|
|
195
|
-
role: "textbox",
|
|
196
|
-
}}
|
|
197
|
-
inputRef={localInputRef}
|
|
198
|
-
name={nameOverride ?? id}
|
|
199
|
-
onChange={onChange}
|
|
200
|
-
onFocus={onFocus}
|
|
201
|
-
onBlur={onBlur}
|
|
202
|
-
placeholder={placeholder}
|
|
203
|
-
readOnly={isReadOnly}
|
|
204
|
-
ref={ref}
|
|
205
|
-
required={!isOptional}
|
|
206
|
-
translate={translate}
|
|
207
|
-
type={inputType}
|
|
208
|
-
/>
|
|
209
|
-
),
|
|
210
|
-
[
|
|
211
|
-
autoCompleteType,
|
|
212
|
-
hasInitialFocus,
|
|
213
|
-
inputValues,
|
|
214
|
-
t,
|
|
215
|
-
togglePasswordVisibility,
|
|
216
|
-
inputType,
|
|
217
|
-
nameOverride,
|
|
218
|
-
onChange,
|
|
219
|
-
onFocus,
|
|
220
|
-
onBlur,
|
|
221
|
-
placeholder,
|
|
222
|
-
isOptional,
|
|
223
|
-
isReadOnly,
|
|
224
|
-
hasShowPassword,
|
|
225
|
-
ref,
|
|
226
|
-
testId,
|
|
227
|
-
translate,
|
|
228
|
-
],
|
|
229
|
-
);
|
|
230
|
-
|
|
231
|
-
return (
|
|
232
|
-
<Field
|
|
233
|
-
ariaDescribedBy={ariaDescribedBy}
|
|
234
|
-
errorMessage={errorMessage}
|
|
235
|
-
errorMessageList={errorMessageList}
|
|
236
|
-
fieldType="single"
|
|
237
|
-
hasVisibleLabel
|
|
238
|
-
hint={hint}
|
|
239
|
-
id={idOverride}
|
|
240
|
-
isDisabled={isDisabled}
|
|
241
|
-
isFullWidth={isFullWidth}
|
|
242
|
-
isOptional={isOptional}
|
|
243
|
-
label={label}
|
|
244
|
-
renderFieldComponent={renderFieldComponent}
|
|
245
|
-
/>
|
|
246
|
-
);
|
|
247
|
-
},
|
|
248
|
-
);
|
|
249
|
-
|
|
250
|
-
const MemoizedPasswordField = memo(PasswordField);
|
|
251
|
-
MemoizedPasswordField.displayName = "PasswordField";
|
|
252
|
-
|
|
253
|
-
export { MemoizedPasswordField as PasswordField };
|
package/src/Radio.tsx
DELETED
|
@@ -1,199 +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, useCallback, useMemo, useRef, useImperativeHandle } from "react";
|
|
14
|
-
import {
|
|
15
|
-
FormControlLabel,
|
|
16
|
-
FormControlLabelProps as MuiFormControlLabelProps,
|
|
17
|
-
FormHelperText,
|
|
18
|
-
Radio as MuiRadio,
|
|
19
|
-
RadioProps as MuiRadioProps,
|
|
20
|
-
} from "@mui/material";
|
|
21
|
-
import styled from "@emotion/styled";
|
|
22
|
-
|
|
23
|
-
import { FieldComponentProps } from "./FieldComponentProps.js";
|
|
24
|
-
import type { HtmlProps } from "./HtmlProps.js";
|
|
25
|
-
import { FocusHandle } from "./inputUtils.js";
|
|
26
|
-
import {
|
|
27
|
-
useOdysseyDesignTokens,
|
|
28
|
-
DesignTokens,
|
|
29
|
-
} from "./OdysseyDesignTokensContext.js";
|
|
30
|
-
import { Typography } from "./Typography.js";
|
|
31
|
-
import { useUniqueId } from "./useUniqueId.js";
|
|
32
|
-
|
|
33
|
-
const HintContainerWithInlineStartSpacing = styled.div<{
|
|
34
|
-
odysseyDesignTokens: DesignTokens;
|
|
35
|
-
}>(({ odysseyDesignTokens }) => ({
|
|
36
|
-
paddingInlineStart: `calc(${odysseyDesignTokens.TypographyLineHeightUi}em + ${odysseyDesignTokens.Spacing2})`,
|
|
37
|
-
marginBlockEnd: odysseyDesignTokens.Spacing2,
|
|
38
|
-
|
|
39
|
-
// MUI applies the '.Mui-error' class to this hint text when the checkbox is invalid which turns the copy red
|
|
40
|
-
// We want to keep the hint text gray in the error state
|
|
41
|
-
".Mui-error": {
|
|
42
|
-
color: odysseyDesignTokens.TypographyColorSubordinate,
|
|
43
|
-
},
|
|
44
|
-
}));
|
|
45
|
-
|
|
46
|
-
export type RadioProps = {
|
|
47
|
-
/**
|
|
48
|
-
* The ref forwarded to the Radio
|
|
49
|
-
*/
|
|
50
|
-
inputRef?: React.RefObject<FocusHandle>;
|
|
51
|
-
/**
|
|
52
|
-
* Determines whether the Radio button is checked
|
|
53
|
-
*/
|
|
54
|
-
isChecked?: boolean;
|
|
55
|
-
/**
|
|
56
|
-
* If `true`, the radio button has an invalid value
|
|
57
|
-
*/
|
|
58
|
-
isInvalid?: boolean;
|
|
59
|
-
/**
|
|
60
|
-
* The label text for the Radio
|
|
61
|
-
*/
|
|
62
|
-
label: string;
|
|
63
|
-
/**
|
|
64
|
-
* The value attribute of the Radio
|
|
65
|
-
*/
|
|
66
|
-
value: string;
|
|
67
|
-
/**
|
|
68
|
-
* Callback fired when the blur event happens. Provides event value.
|
|
69
|
-
*/
|
|
70
|
-
onChange?: MuiRadioProps["onChange"];
|
|
71
|
-
onBlur?: MuiFormControlLabelProps["onBlur"];
|
|
72
|
-
onClick?: React.MouseEventHandler<HTMLSpanElement>;
|
|
73
|
-
} & Pick<
|
|
74
|
-
FieldComponentProps,
|
|
75
|
-
"hint" | "id" | "isDisabled" | "isReadOnly" | "name"
|
|
76
|
-
> &
|
|
77
|
-
Pick<HtmlProps, "testId" | "translate">;
|
|
78
|
-
|
|
79
|
-
const Radio = ({
|
|
80
|
-
hint,
|
|
81
|
-
id: idOverride,
|
|
82
|
-
inputRef,
|
|
83
|
-
isChecked,
|
|
84
|
-
isDisabled,
|
|
85
|
-
isInvalid,
|
|
86
|
-
label: labelProp,
|
|
87
|
-
name,
|
|
88
|
-
testId,
|
|
89
|
-
translate,
|
|
90
|
-
value,
|
|
91
|
-
isReadOnly,
|
|
92
|
-
onChange: onChangeProp,
|
|
93
|
-
onBlur: onBlurProp,
|
|
94
|
-
onClick,
|
|
95
|
-
}: RadioProps) => {
|
|
96
|
-
const localInputRef = useRef<HTMLInputElement>(null);
|
|
97
|
-
const odysseyDesignTokens = useOdysseyDesignTokens();
|
|
98
|
-
const id = useUniqueId(idOverride);
|
|
99
|
-
const hintId = hint ? `${id}-hint` : undefined;
|
|
100
|
-
|
|
101
|
-
useImperativeHandle(inputRef, () => {
|
|
102
|
-
return {
|
|
103
|
-
focus: () => {
|
|
104
|
-
localInputRef.current?.focus();
|
|
105
|
-
},
|
|
106
|
-
};
|
|
107
|
-
}, []);
|
|
108
|
-
|
|
109
|
-
const label = useMemo(
|
|
110
|
-
() => <Typography component="span">{labelProp}</Typography>,
|
|
111
|
-
[labelProp],
|
|
112
|
-
);
|
|
113
|
-
|
|
114
|
-
const onChange = useCallback<NonNullable<MuiRadioProps["onChange"]>>(
|
|
115
|
-
(event, checked) => {
|
|
116
|
-
if (isReadOnly) {
|
|
117
|
-
event.preventDefault();
|
|
118
|
-
} else {
|
|
119
|
-
onChangeProp?.(event, checked);
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
[onChangeProp, isReadOnly],
|
|
123
|
-
);
|
|
124
|
-
|
|
125
|
-
const handleClick = useCallback<React.MouseEventHandler<HTMLSpanElement>>(
|
|
126
|
-
(event) => {
|
|
127
|
-
if (isReadOnly) {
|
|
128
|
-
event.stopPropagation();
|
|
129
|
-
event.preventDefault();
|
|
130
|
-
}
|
|
131
|
-
},
|
|
132
|
-
[isReadOnly],
|
|
133
|
-
);
|
|
134
|
-
const onBlur = useCallback<NonNullable<MuiFormControlLabelProps["onBlur"]>>(
|
|
135
|
-
(event) => {
|
|
136
|
-
onBlurProp?.(event);
|
|
137
|
-
},
|
|
138
|
-
[onBlurProp],
|
|
139
|
-
);
|
|
140
|
-
|
|
141
|
-
return (
|
|
142
|
-
<>
|
|
143
|
-
<FormControlLabel
|
|
144
|
-
checked={isChecked}
|
|
145
|
-
className={isInvalid ? "Mui-error" : ""}
|
|
146
|
-
control={
|
|
147
|
-
<MuiRadio
|
|
148
|
-
inputProps={{
|
|
149
|
-
"aria-describedby": hintId,
|
|
150
|
-
"aria-disabled": isDisabled || isReadOnly,
|
|
151
|
-
"data-se": testId,
|
|
152
|
-
readOnly: isReadOnly,
|
|
153
|
-
tabIndex: isReadOnly ? 0 : undefined,
|
|
154
|
-
}}
|
|
155
|
-
inputRef={localInputRef}
|
|
156
|
-
onChange={onChange}
|
|
157
|
-
onClick={onClick || handleClick}
|
|
158
|
-
disabled={isDisabled}
|
|
159
|
-
/>
|
|
160
|
-
}
|
|
161
|
-
label={label}
|
|
162
|
-
name={name}
|
|
163
|
-
translate={translate}
|
|
164
|
-
value={value}
|
|
165
|
-
onBlur={onBlur}
|
|
166
|
-
disabled={isDisabled}
|
|
167
|
-
sx={{
|
|
168
|
-
...(isReadOnly && {
|
|
169
|
-
cursor: "default",
|
|
170
|
-
"& .MuiTypography-root": {
|
|
171
|
-
cursor: "default",
|
|
172
|
-
},
|
|
173
|
-
}),
|
|
174
|
-
|
|
175
|
-
...(hint && {
|
|
176
|
-
// needed to override specific :not(:last-child) selector
|
|
177
|
-
":not(:last-child)": {
|
|
178
|
-
marginBlockEnd: 0,
|
|
179
|
-
},
|
|
180
|
-
}),
|
|
181
|
-
}}
|
|
182
|
-
/>
|
|
183
|
-
{hint && (
|
|
184
|
-
<HintContainerWithInlineStartSpacing
|
|
185
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
186
|
-
>
|
|
187
|
-
<FormHelperText id={hintId} translate={translate}>
|
|
188
|
-
{hint}
|
|
189
|
-
</FormHelperText>
|
|
190
|
-
</HintContainerWithInlineStartSpacing>
|
|
191
|
-
)}
|
|
192
|
-
</>
|
|
193
|
-
);
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
const MemoizedRadio = memo(Radio);
|
|
197
|
-
MemoizedRadio.displayName = "Radio";
|
|
198
|
-
|
|
199
|
-
export { MemoizedRadio as Radio };
|
package/src/RadioGroup.tsx
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
3
|
-
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
4
|
-
*
|
|
5
|
-
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7
|
-
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
8
|
-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
-
*
|
|
10
|
-
* See the License for the specific language governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
RadioGroup as MuiRadioGroup,
|
|
15
|
-
type RadioGroupProps as MuiRadioGroupProps,
|
|
16
|
-
} from "@mui/material";
|
|
17
|
-
import React, { memo, ReactNode, useCallback, useRef, useMemo } from "react";
|
|
18
|
-
|
|
19
|
-
import { Field } from "./Field.js";
|
|
20
|
-
import {
|
|
21
|
-
FieldComponentProps,
|
|
22
|
-
FieldComponentRenderProps,
|
|
23
|
-
} from "./FieldComponentProps.js";
|
|
24
|
-
import type { HtmlProps } from "./HtmlProps.js";
|
|
25
|
-
import { getControlState, useInputValues } from "./inputUtils.js";
|
|
26
|
-
import { Radio, RadioProps } from "./Radio.js";
|
|
27
|
-
|
|
28
|
-
export type RadioGroupProps = {
|
|
29
|
-
/**
|
|
30
|
-
* The Radio components within the group. Must include two or more.
|
|
31
|
-
*/
|
|
32
|
-
children: ReactNode;
|
|
33
|
-
/**
|
|
34
|
-
* The text value of the Radio that should be selected by default
|
|
35
|
-
*/
|
|
36
|
-
defaultValue?: string;
|
|
37
|
-
/**
|
|
38
|
-
* The text label for the RadioGroup
|
|
39
|
-
*/
|
|
40
|
-
label: string;
|
|
41
|
-
/**
|
|
42
|
-
* Listen for changes in the browser that change `value`
|
|
43
|
-
*/
|
|
44
|
-
onChange?: MuiRadioGroupProps["onChange"];
|
|
45
|
-
/**
|
|
46
|
-
* The `value` on the selected Radio
|
|
47
|
-
*/
|
|
48
|
-
value?: string;
|
|
49
|
-
} & Pick<
|
|
50
|
-
FieldComponentProps,
|
|
51
|
-
| "errorMessage"
|
|
52
|
-
| "errorMessageList"
|
|
53
|
-
| "hint"
|
|
54
|
-
| "HintLinkComponent"
|
|
55
|
-
| "id"
|
|
56
|
-
| "isDisabled"
|
|
57
|
-
| "isReadOnly"
|
|
58
|
-
| "name"
|
|
59
|
-
> &
|
|
60
|
-
Pick<HtmlProps, "ariaDescribedBy" | "testId" | "translate">;
|
|
61
|
-
|
|
62
|
-
type FieldRenderProps = Partial<
|
|
63
|
-
Pick<FieldComponentRenderProps, "ariaDescribedBy" | "errorMessageElementId">
|
|
64
|
-
> &
|
|
65
|
-
Pick<FieldComponentRenderProps, "id" | "labelElementId">;
|
|
66
|
-
|
|
67
|
-
const RadioGroup = ({
|
|
68
|
-
ariaDescribedBy,
|
|
69
|
-
children,
|
|
70
|
-
defaultValue,
|
|
71
|
-
errorMessage,
|
|
72
|
-
errorMessageList,
|
|
73
|
-
hint,
|
|
74
|
-
HintLinkComponent,
|
|
75
|
-
id: idOverride,
|
|
76
|
-
isDisabled,
|
|
77
|
-
isReadOnly = false,
|
|
78
|
-
label,
|
|
79
|
-
name: nameOverride,
|
|
80
|
-
onChange: onChangeProp,
|
|
81
|
-
testId,
|
|
82
|
-
translate,
|
|
83
|
-
value,
|
|
84
|
-
}: RadioGroupProps) => {
|
|
85
|
-
const controlledStateRef = useRef(
|
|
86
|
-
getControlState({
|
|
87
|
-
controlledValue: value,
|
|
88
|
-
uncontrolledValue: defaultValue,
|
|
89
|
-
}),
|
|
90
|
-
);
|
|
91
|
-
|
|
92
|
-
const inputValues = useInputValues({
|
|
93
|
-
defaultValue,
|
|
94
|
-
value,
|
|
95
|
-
controlState: controlledStateRef.current,
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
const onChange = useCallback<NonNullable<MuiRadioGroupProps["onChange"]>>(
|
|
99
|
-
(event, newValue) => {
|
|
100
|
-
onChangeProp?.(event, newValue);
|
|
101
|
-
},
|
|
102
|
-
[onChangeProp],
|
|
103
|
-
);
|
|
104
|
-
|
|
105
|
-
const memoizedChildren = useMemo(
|
|
106
|
-
() =>
|
|
107
|
-
React.Children.map(children, (child) => {
|
|
108
|
-
if (React.isValidElement<RadioProps>(child) && child.type === Radio) {
|
|
109
|
-
return React.cloneElement(child, {
|
|
110
|
-
...child.props,
|
|
111
|
-
isDisabled: isDisabled || child.props.isDisabled,
|
|
112
|
-
isReadOnly: isReadOnly || child.props.isReadOnly,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
return child;
|
|
116
|
-
}),
|
|
117
|
-
[children, isDisabled, isReadOnly],
|
|
118
|
-
);
|
|
119
|
-
const renderFieldComponent = useCallback(
|
|
120
|
-
({
|
|
121
|
-
ariaDescribedBy,
|
|
122
|
-
errorMessageElementId,
|
|
123
|
-
id,
|
|
124
|
-
labelElementId,
|
|
125
|
-
}: FieldRenderProps) => (
|
|
126
|
-
<MuiRadioGroup
|
|
127
|
-
{...inputValues}
|
|
128
|
-
aria-describedby={ariaDescribedBy}
|
|
129
|
-
aria-errormessage={errorMessageElementId}
|
|
130
|
-
aria-labelledby={labelElementId}
|
|
131
|
-
data-se={testId}
|
|
132
|
-
id={id}
|
|
133
|
-
name={nameOverride ?? id}
|
|
134
|
-
onChange={onChange}
|
|
135
|
-
translate={translate}
|
|
136
|
-
>
|
|
137
|
-
{memoizedChildren}
|
|
138
|
-
</MuiRadioGroup>
|
|
139
|
-
),
|
|
140
|
-
[inputValues, nameOverride, onChange, memoizedChildren, testId, translate],
|
|
141
|
-
);
|
|
142
|
-
|
|
143
|
-
return (
|
|
144
|
-
<Field
|
|
145
|
-
ariaDescribedBy={ariaDescribedBy}
|
|
146
|
-
errorMessage={errorMessage}
|
|
147
|
-
errorMessageList={errorMessageList}
|
|
148
|
-
fieldType="group"
|
|
149
|
-
hasVisibleLabel={false}
|
|
150
|
-
hint={hint}
|
|
151
|
-
HintLinkComponent={HintLinkComponent}
|
|
152
|
-
id={idOverride}
|
|
153
|
-
isDisabled={isDisabled}
|
|
154
|
-
isReadOnly={isReadOnly}
|
|
155
|
-
label={label}
|
|
156
|
-
renderFieldComponent={renderFieldComponent}
|
|
157
|
-
/>
|
|
158
|
-
);
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
const MemoizedRadioGroup = memo(RadioGroup);
|
|
162
|
-
MemoizedRadioGroup.displayName = "RadioGroup";
|
|
163
|
-
|
|
164
|
-
export { MemoizedRadioGroup as RadioGroup };
|
package/src/ScreenReaderText.tsx
DELETED
|
@@ -1,53 +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, ReactNode } from "react";
|
|
14
|
-
import { Box } from "@mui/material";
|
|
15
|
-
import { visuallyHidden } from "@mui/utils";
|
|
16
|
-
import { HtmlProps } from "./HtmlProps.js";
|
|
17
|
-
|
|
18
|
-
export type ScreenReaderTextProps = {
|
|
19
|
-
/**
|
|
20
|
-
* The visually-hidden text.
|
|
21
|
-
*/
|
|
22
|
-
children: ReactNode;
|
|
23
|
-
id?: string;
|
|
24
|
-
} & Pick<HtmlProps, "ariaHidden" | "translate">;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* MUI sx expects you pass in a CSS object, not an object with CSS.
|
|
28
|
-
* They seem identical, but only if you create a new object like this will MUI be happy with the type of visuallyHidden.
|
|
29
|
-
* It's otherwise a regular object with CSS properties.
|
|
30
|
-
*/
|
|
31
|
-
const style = { ...visuallyHidden };
|
|
32
|
-
|
|
33
|
-
const ScreenReaderText = ({
|
|
34
|
-
ariaHidden,
|
|
35
|
-
children,
|
|
36
|
-
id,
|
|
37
|
-
translate,
|
|
38
|
-
}: ScreenReaderTextProps) => (
|
|
39
|
-
<Box
|
|
40
|
-
aria-hidden={ariaHidden}
|
|
41
|
-
sx={style}
|
|
42
|
-
component="span"
|
|
43
|
-
id={id}
|
|
44
|
-
translate={translate}
|
|
45
|
-
>
|
|
46
|
-
{children}
|
|
47
|
-
</Box>
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
const MemoizedScreenReaderText = memo(ScreenReaderText);
|
|
51
|
-
MemoizedScreenReaderText.displayName = "ScreenReaderText";
|
|
52
|
-
|
|
53
|
-
export { MemoizedScreenReaderText as ScreenReaderText };
|