@okta/odyssey-react-mui 1.21.2 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/dist/@types/i18next.d.js.map +1 -1
- package/dist/Autocomplete.js +106 -38
- package/dist/Autocomplete.js.map +1 -1
- package/dist/Callout.js +12 -24
- package/dist/Callout.js.map +1 -1
- package/dist/Checkbox.js +26 -11
- package/dist/Checkbox.js.map +1 -1
- package/dist/CheckboxGroup.js +14 -3
- package/dist/CheckboxGroup.js.map +1 -1
- package/dist/DataTable/DataTable.js +10 -2
- package/dist/DataTable/DataTable.js.map +1 -1
- package/dist/DataTable/useScrollIndication.js +9 -5
- package/dist/DataTable/useScrollIndication.js.map +1 -1
- package/dist/Field.js +3 -1
- package/dist/Field.js.map +1 -1
- package/dist/FileUploader/FileUploadIllustration.js.map +1 -0
- package/dist/FileUploader/FileUploadPreview.js.map +1 -0
- package/dist/{labs/FileUpload.js → FileUploader/FileUploader.js} +6 -5
- package/dist/FileUploader/FileUploader.js.map +1 -0
- package/dist/FileUploader/index.js +13 -0
- package/dist/FileUploader/index.js.map +1 -0
- package/dist/OdysseyCacheProvider.js +4 -3
- package/dist/OdysseyCacheProvider.js.map +1 -1
- package/dist/OdysseyProvider.js +10 -3
- package/dist/OdysseyProvider.js.map +1 -1
- package/dist/OdysseyThemeProvider.js +3 -2
- package/dist/OdysseyThemeProvider.js.map +1 -1
- package/dist/Radio.js +33 -6
- package/dist/Radio.js.map +1 -1
- package/dist/RadioGroup.js +17 -5
- package/dist/RadioGroup.js.map +1 -1
- package/dist/Select.js +89 -31
- package/dist/Select.js.map +1 -1
- package/dist/{labs/Switch.js → Switch.js} +77 -23
- package/dist/Switch.js.map +1 -0
- package/dist/Tabs.js +7 -9
- package/dist/Tabs.js.map +1 -1
- package/dist/Tag.js +102 -4
- package/dist/Tag.js.map +1 -1
- package/dist/TextField.js +16 -39
- package/dist/TextField.js.map +1 -1
- package/dist/Toast.js +2 -2
- package/dist/Toast.js.map +1 -1
- package/dist/ToastStack.js.map +1 -1
- package/dist/createShadowDomElements.js +43 -0
- package/dist/createShadowDomElements.js.map +1 -0
- package/dist/i18n.js +1 -1
- package/dist/i18n.js.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/index.scss +96 -8
- package/dist/labs/AppTile.js +124 -0
- package/dist/labs/AppTile.js.map +1 -0
- package/dist/labs/DataView/BulkActionsMenu.js.map +1 -0
- package/dist/labs/{DataComponents/StackContent.js → DataView/CardLayoutContent.js} +14 -14
- package/dist/labs/DataView/CardLayoutContent.js.map +1 -0
- package/dist/labs/{DataComponents/StackCard.js → DataView/DataCard.js} +6 -6
- package/dist/labs/DataView/DataCard.js.map +1 -0
- package/dist/labs/{DataComponents → DataView}/DataTable.js +6 -2
- package/dist/labs/DataView/DataTable.js.map +1 -0
- package/dist/labs/{DataComponents → DataView}/DataView.js +79 -30
- package/dist/labs/DataView/DataView.js.map +1 -0
- package/dist/labs/DataView/DetailPanel.js.map +1 -0
- package/dist/labs/DataView/LayoutSwitcher.js.map +1 -0
- package/dist/labs/DataView/RowActions.js.map +1 -0
- package/dist/labs/{DataComponents/TableContent.js → DataView/TableLayoutContent.js} +34 -20
- package/dist/labs/DataView/TableLayoutContent.js.map +1 -0
- package/dist/labs/{DataComponents → DataView}/TableSettings.js +2 -2
- package/dist/labs/DataView/TableSettings.js.map +1 -0
- package/dist/labs/DataView/componentTypes.js.map +1 -0
- package/dist/labs/{DataComponents → DataView}/constants.js +2 -2
- package/dist/labs/DataView/constants.js.map +1 -0
- package/dist/labs/DataView/dataTypes.js.map +1 -0
- package/dist/labs/DataView/fetchData.js.map +1 -0
- package/dist/labs/{DataComponents → DataView}/index.js +0 -1
- package/dist/labs/DataView/index.js.map +1 -0
- package/dist/labs/DataView/tableConstants.js.map +1 -0
- package/dist/labs/DataView/useFilterConversion.js.map +1 -0
- package/dist/labs/DateField.js +2 -0
- package/dist/labs/DateField.js.map +1 -1
- package/dist/labs/DatePicker.js +5 -1
- package/dist/labs/DatePicker.js.map +1 -1
- package/dist/labs/SideNav/CollapseIcon.js +44 -0
- package/dist/labs/SideNav/CollapseIcon.js.map +1 -0
- package/dist/labs/SideNav/OktaLogo.js +36 -0
- package/dist/labs/SideNav/OktaLogo.js.map +1 -0
- package/dist/labs/SideNav/SideNav.js +335 -0
- package/dist/labs/SideNav/SideNav.js.map +1 -0
- package/dist/labs/SideNav/SideNavFooterContent.js +49 -0
- package/dist/labs/SideNav/SideNavFooterContent.js.map +1 -0
- package/dist/labs/SideNav/SideNavHeader.js +81 -0
- package/dist/labs/SideNav/SideNavHeader.js.map +1 -0
- package/dist/labs/SideNav/SideNavItemContent.js +157 -0
- package/dist/labs/SideNav/SideNavItemContent.js.map +1 -0
- package/dist/labs/SideNav/SideNavItemLinkContent.js +71 -0
- package/dist/labs/SideNav/SideNavItemLinkContent.js.map +1 -0
- package/dist/labs/SideNav/index.js +14 -0
- package/dist/labs/SideNav/index.js.map +1 -0
- package/dist/labs/SideNav/types.js +2 -0
- package/dist/labs/SideNav/types.js.map +1 -0
- package/dist/labs/TopNav.js +2 -1
- package/dist/labs/TopNav.js.map +1 -1
- package/dist/labs/index.js +3 -4
- package/dist/labs/index.js.map +1 -1
- package/dist/labs/useDateFieldsTranslations.js +1 -1
- package/dist/labs/useDateFieldsTranslations.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui.js +3 -1
- package/dist/properties/ts/odyssey-react-mui.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_cs.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_cs.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_da.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_da.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_de.js +16 -2
- package/dist/properties/ts/odyssey-react-mui_de.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_el.js +18 -4
- package/dist/properties/ts/odyssey-react-mui_el.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_es.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_es.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_fi.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_fi.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_fr.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_fr.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ht.js +18 -4
- package/dist/properties/ts/odyssey-react-mui_ht.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_hu.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_hu.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_id.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_id.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_it.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_it.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ja.js +16 -2
- package/dist/properties/ts/odyssey-react-mui_ja.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ko.js +16 -2
- package/dist/properties/ts/odyssey-react-mui_ko.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ms.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_ms.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_nb.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_nb.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_nl_NL.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_nl_NL.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_pl.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_pl.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_pt_BR.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_pt_BR.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ro.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_ro.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ru.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_ru.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_sv.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_sv.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_th.js +16 -2
- package/dist/properties/ts/odyssey-react-mui_th.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_tr.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_tr.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_uk.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_uk.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_vi.js +17 -3
- package/dist/properties/ts/odyssey-react-mui_vi.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_zh_CN.js +16 -2
- package/dist/properties/ts/odyssey-react-mui_zh_CN.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_zh_TW.js +16 -2
- package/dist/properties/ts/odyssey-react-mui_zh_TW.js.map +1 -1
- package/dist/src/Autocomplete.d.ts +30 -0
- package/dist/src/Autocomplete.d.ts.map +1 -1
- package/dist/src/Callout.d.ts +11 -23
- package/dist/src/Callout.d.ts.map +1 -1
- package/dist/src/Checkbox.d.ts +2 -2
- package/dist/src/Checkbox.d.ts.map +1 -1
- package/dist/src/CheckboxGroup.d.ts +3 -3
- package/dist/src/CheckboxGroup.d.ts.map +1 -1
- package/dist/src/DataTable/DataTable.d.ts +9 -1
- package/dist/src/DataTable/DataTable.d.ts.map +1 -1
- package/dist/src/DataTable/useScrollIndication.d.ts.map +1 -1
- package/dist/src/Field.d.ts +3 -2
- package/dist/src/Field.d.ts.map +1 -1
- package/dist/src/FileUploader/FileUploadIllustration.d.ts.map +1 -0
- package/dist/src/{labs → FileUploader}/FileUploadPreview.d.ts +2 -2
- package/dist/src/FileUploader/FileUploadPreview.d.ts.map +1 -0
- package/dist/src/{labs/FileUpload.d.ts → FileUploader/FileUploader.d.ts} +5 -4
- package/dist/src/FileUploader/FileUploader.d.ts.map +1 -0
- package/dist/src/FileUploader/index.d.ts +13 -0
- package/dist/src/FileUploader/index.d.ts.map +1 -0
- package/dist/src/NativeSelect.d.ts +1 -1
- package/dist/src/OdysseyCacheProvider.d.ts +7 -3
- package/dist/src/OdysseyCacheProvider.d.ts.map +1 -1
- package/dist/src/OdysseyProvider.d.ts +1 -1
- package/dist/src/OdysseyProvider.d.ts.map +1 -1
- package/dist/src/OdysseyThemeProvider.d.ts +3 -1
- package/dist/src/OdysseyThemeProvider.d.ts.map +1 -1
- package/dist/src/OdysseyTranslationProvider.d.ts +1 -1
- package/dist/src/OdysseyTranslationProvider.d.ts.map +1 -1
- package/dist/src/PasswordField.d.ts +1 -1
- package/dist/src/Radio.d.ts +6 -8
- package/dist/src/Radio.d.ts.map +1 -1
- package/dist/src/RadioGroup.d.ts +4 -5
- package/dist/src/RadioGroup.d.ts.map +1 -1
- package/dist/src/SearchField.d.ts +1 -1
- package/dist/src/Select.d.ts +38 -2
- package/dist/src/Select.d.ts.map +1 -1
- package/dist/src/{labs/Switch.d.ts → Switch.d.ts} +8 -4
- package/dist/src/Switch.d.ts.map +1 -0
- package/dist/src/Tabs.d.ts +6 -8
- package/dist/src/Tabs.d.ts.map +1 -1
- package/dist/src/Tag.d.ts +7 -1
- package/dist/src/Tag.d.ts.map +1 -1
- package/dist/src/TextField.d.ts +17 -40
- package/dist/src/TextField.d.ts.map +1 -1
- package/dist/src/ToastStack.d.ts +2 -2
- package/dist/src/ToastStack.d.ts.map +1 -1
- package/dist/src/{createShadowRootElement.d.ts → createShadowDomElements.d.ts} +6 -1
- package/dist/src/createShadowDomElements.d.ts.map +1 -0
- package/dist/src/i18n.d.ts +2 -2
- package/dist/src/i18n.d.ts.map +1 -1
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/labs/AppTile.d.ts +39 -0
- package/dist/src/labs/AppTile.d.ts.map +1 -0
- package/dist/src/labs/DataView/BulkActionsMenu.d.ts.map +1 -0
- package/dist/src/labs/{DataComponents/StackContent.d.ts → DataView/CardLayoutContent.d.ts} +7 -7
- package/dist/src/labs/DataView/CardLayoutContent.d.ts.map +1 -0
- package/dist/src/labs/{DataComponents/StackCard.d.ts → DataView/DataCard.d.ts} +4 -4
- package/dist/src/labs/DataView/DataCard.d.ts.map +1 -0
- package/dist/src/labs/DataView/DataTable.d.ts +16 -0
- package/dist/src/labs/DataView/DataTable.d.ts.map +1 -0
- package/dist/src/labs/{DataComponents → DataView}/DataView.d.ts +1 -1
- package/dist/src/labs/DataView/DataView.d.ts.map +1 -0
- package/dist/src/labs/{DataComponents → DataView}/DetailPanel.d.ts +2 -2
- package/dist/src/labs/DataView/DetailPanel.d.ts.map +1 -0
- package/dist/src/labs/DataView/LayoutSwitcher.d.ts.map +1 -0
- package/dist/src/labs/DataView/RowActions.d.ts.map +1 -0
- package/dist/src/labs/{DataComponents/TableContent.d.ts → DataView/TableLayoutContent.d.ts} +8 -7
- package/dist/src/labs/DataView/TableLayoutContent.d.ts.map +1 -0
- package/dist/src/labs/{DataComponents → DataView}/TableSettings.d.ts +3 -3
- package/dist/src/labs/DataView/TableSettings.d.ts.map +1 -0
- package/dist/src/labs/{DataComponents → DataView}/componentTypes.d.ts +21 -9
- package/dist/src/labs/DataView/componentTypes.d.ts.map +1 -0
- package/dist/src/labs/{DataComponents → DataView}/constants.d.ts +1 -1
- package/dist/src/labs/DataView/constants.d.ts.map +1 -0
- package/dist/src/labs/DataView/dataTypes.d.ts.map +1 -0
- package/dist/src/labs/DataView/fetchData.d.ts.map +1 -0
- package/dist/src/labs/{DataComponents → DataView}/index.d.ts +0 -1
- package/dist/src/labs/DataView/index.d.ts.map +1 -0
- package/dist/src/labs/DataView/tableConstants.d.ts.map +1 -0
- package/dist/src/labs/{DataComponents → DataView}/useFilterConversion.d.ts +2 -2
- package/dist/src/labs/DataView/useFilterConversion.d.ts.map +1 -0
- package/dist/src/labs/DateField.d.ts +2 -2
- package/dist/src/labs/DateField.d.ts.map +1 -1
- package/dist/src/labs/DatePicker.d.ts +2 -2
- package/dist/src/labs/DatePicker.d.ts.map +1 -1
- package/dist/src/labs/SideNav/CollapseIcon.d.ts +17 -0
- package/dist/src/labs/SideNav/CollapseIcon.d.ts.map +1 -0
- package/dist/src/labs/SideNav/OktaLogo.d.ts +14 -0
- package/dist/src/labs/SideNav/OktaLogo.d.ts.map +1 -0
- package/dist/src/labs/SideNav/SideNav.d.ts +16 -0
- package/dist/src/labs/SideNav/SideNav.d.ts.map +1 -0
- package/dist/{test-selectors/odysseyTestSelectors.js → src/labs/SideNav/SideNavFooterContent.d.ts} +6 -9
- package/dist/src/labs/SideNav/SideNavFooterContent.d.ts.map +1 -0
- package/dist/src/labs/SideNav/SideNavHeader.d.ts +16 -0
- package/dist/src/labs/SideNav/SideNavHeader.d.ts.map +1 -0
- package/dist/src/labs/SideNav/SideNavItemContent.d.ts +33 -0
- package/dist/src/labs/SideNav/SideNavItemContent.d.ts.map +1 -0
- package/dist/src/labs/SideNav/SideNavItemLinkContent.d.ts +16 -0
- package/dist/src/labs/SideNav/SideNavItemLinkContent.d.ts.map +1 -0
- package/dist/src/labs/SideNav/index.d.ts +14 -0
- package/dist/src/labs/SideNav/index.d.ts.map +1 -0
- package/dist/src/labs/{SideNav.d.ts → SideNav/types.d.ts} +54 -33
- package/dist/src/labs/SideNav/types.d.ts.map +1 -0
- package/dist/src/labs/TopNav.d.ts +1 -0
- package/dist/src/labs/TopNav.d.ts.map +1 -1
- package/dist/src/labs/index.d.ts +2 -3
- package/dist/src/labs/index.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_da.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_da.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_de.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_de.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_el.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_el.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_es.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_es.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ht.d.ts +16 -2
- package/dist/src/properties/ts/odyssey-react-mui_ht.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_id.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_id.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_it.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_it.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_th.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_th.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts +15 -1
- package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts.map +1 -1
- package/dist/src/test-selectors/getByQuerySelector.d.ts +148 -0
- package/dist/src/test-selectors/getByQuerySelector.d.ts.map +1 -0
- package/dist/src/test-selectors/getComputedAccessibleErrorMessageText.d.ts +14 -0
- package/dist/src/test-selectors/getComputedAccessibleErrorMessageText.d.ts.map +1 -0
- package/dist/src/test-selectors/getComputedAccessibleText.d.ts +23 -0
- package/dist/src/test-selectors/getComputedAccessibleText.d.ts.map +1 -0
- package/dist/src/test-selectors/index.d.ts +2 -2
- package/dist/src/test-selectors/index.d.ts.map +1 -1
- package/{src/test-selectors/odysseyTestSelectors.ts → dist/src/test-selectors/interpolateString.d.ts} +4 -11
- package/dist/src/test-selectors/interpolateString.d.ts.map +1 -0
- package/dist/src/test-selectors/linkedHtmlSelectors.d.ts +24 -0
- package/dist/src/test-selectors/linkedHtmlSelectors.d.ts.map +1 -0
- package/dist/src/test-selectors/queryOdysseySelector.d.ts +5755 -0
- package/dist/src/test-selectors/queryOdysseySelector.d.ts.map +1 -0
- package/dist/src/test-selectors/querySelector.d.ts +59 -3613
- package/dist/src/test-selectors/querySelector.d.ts.map +1 -1
- package/dist/src/test-selectors/sanityChecks.d.ts +18 -0
- package/dist/src/test-selectors/sanityChecks.d.ts.map +1 -0
- package/dist/src/test-selectors/testSelector.d.ts +46 -0
- package/dist/src/test-selectors/testSelector.d.ts.map +1 -0
- package/dist/src/theme/components.d.ts +3 -1
- package/dist/src/theme/components.d.ts.map +1 -1
- package/dist/src/theme/createOdysseyMuiTheme.d.ts +3 -1
- package/dist/src/theme/createOdysseyMuiTheme.d.ts.map +1 -1
- package/dist/test-selectors/getByQuerySelector.js +64 -0
- package/dist/test-selectors/getByQuerySelector.js.map +1 -0
- package/dist/test-selectors/getComputedAccessibleErrorMessageText.js +25 -0
- package/dist/test-selectors/getComputedAccessibleErrorMessageText.js.map +1 -0
- package/dist/test-selectors/getComputedAccessibleText.js +24 -0
- package/dist/test-selectors/getComputedAccessibleText.js.map +1 -0
- package/dist/test-selectors/index.js +2 -2
- package/dist/test-selectors/index.js.map +1 -1
- package/dist/test-selectors/interpolateString.js +25 -0
- package/dist/test-selectors/interpolateString.js.map +1 -0
- package/dist/test-selectors/linkedHtmlSelectors.js +34 -0
- package/dist/test-selectors/linkedHtmlSelectors.js.map +1 -0
- package/dist/test-selectors/queryOdysseySelector.js +26 -0
- package/dist/test-selectors/queryOdysseySelector.js.map +1 -0
- package/dist/test-selectors/querySelector.js +82 -58
- package/dist/test-selectors/querySelector.js.map +1 -1
- package/dist/test-selectors/sanityChecks.js +33 -0
- package/dist/test-selectors/sanityChecks.js.map +1 -0
- package/dist/test-selectors/testSelector.js +2 -0
- package/dist/test-selectors/testSelector.js.map +1 -0
- package/dist/test-selectors/testSelectors.json +1 -1
- package/dist/theme/components.js +231 -146
- package/dist/theme/components.js.map +1 -1
- package/dist/theme/createOdysseyMuiTheme.js +3 -2
- package/dist/theme/createOdysseyMuiTheme.js.map +1 -1
- package/dist/tsconfig.production.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/jest.setup.js +3 -0
- package/package.json +5 -5
- package/scripts/generateTestSelectorsJson.ts +1 -1
- package/src/@types/i18next.d.ts +1 -1
- package/src/Autocomplete.tsx +140 -45
- package/src/Callout.tsx +13 -25
- package/src/Checkbox.tsx +39 -9
- package/src/CheckboxGroup.tsx +20 -4
- package/src/DataTable/DataTable.tsx +24 -1
- package/src/DataTable/useScrollIndication.tsx +11 -4
- package/src/Field.tsx +5 -2
- package/src/{labs → FileUploader}/FileUploadPreview.tsx +3 -3
- package/src/{labs/FileUpload.tsx → FileUploader/FileUploader.tsx} +7 -6
- package/src/FileUploader/index.ts +13 -0
- package/src/OdysseyCacheProvider.test.tsx +1 -0
- package/src/OdysseyCacheProvider.tsx +18 -4
- package/src/OdysseyProvider.tsx +12 -4
- package/src/OdysseyThemeProvider.tsx +6 -2
- package/src/Radio.tsx +41 -12
- package/src/RadioGroup.tsx +26 -7
- package/src/Select.tsx +116 -45
- package/src/{labs/Switch.tsx → Switch.tsx} +95 -41
- package/src/Tabs.tsx +8 -10
- package/src/Tag.tsx +134 -3
- package/src/TextField.tsx +18 -41
- package/src/Toast.tsx +1 -1
- package/src/ToastStack.tsx +2 -2
- package/src/createShadowDomElements.ts +53 -0
- package/src/i18n.ts +3 -3
- package/src/index.ts +7 -2
- package/src/labs/AppTile.tsx +200 -0
- package/src/labs/{DataComponents/StackContent.tsx → DataView/CardLayoutContent.tsx} +24 -19
- package/src/labs/{DataComponents/StackCard.tsx → DataView/DataCard.tsx} +7 -7
- package/src/labs/{DataComponents → DataView}/DataTable.tsx +8 -4
- package/src/labs/DataView/DataView.test.tsx +158 -0
- package/src/labs/{DataComponents → DataView}/DataView.tsx +119 -42
- package/src/labs/{DataComponents → DataView}/DetailPanel.tsx +2 -2
- package/src/labs/{DataComponents/TableContent.tsx → DataView/TableLayoutContent.tsx} +59 -27
- package/src/labs/{DataComponents → DataView}/TableSettings.tsx +5 -4
- package/src/labs/{DataComponents → DataView}/componentTypes.ts +24 -9
- package/src/labs/{DataComponents → DataView}/constants.tsx +2 -2
- package/src/labs/{DataComponents → DataView}/index.tsx +0 -1
- package/src/labs/{DataComponents → DataView}/useFilterConversion.ts +2 -2
- package/src/labs/DateField.tsx +3 -0
- package/src/labs/DatePicker.tsx +12 -1
- package/src/labs/SideNav/CollapseIcon.tsx +48 -0
- package/src/labs/SideNav/OktaLogo.tsx +39 -0
- package/src/labs/SideNav/SideNav.tsx +486 -0
- package/src/labs/SideNav/SideNavFooterContent.tsx +64 -0
- package/src/labs/SideNav/SideNavHeader.tsx +88 -0
- package/src/labs/SideNav/SideNavItemContent.tsx +216 -0
- package/src/labs/SideNav/SideNavItemLinkContent.tsx +87 -0
- package/src/labs/SideNav/index.ts +15 -0
- package/src/labs/SideNav/types.ts +152 -0
- package/src/labs/TopNav.tsx +3 -1
- package/src/labs/index.ts +3 -4
- package/src/labs/useDateFieldsTranslations.ts +1 -1
- package/src/properties/odyssey-react-mui.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_cs.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_da.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_de.properties +14 -2
- package/src/properties/translations/odyssey-react-mui_el.properties +16 -4
- package/src/properties/translations/odyssey-react-mui_es.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_fi.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_fr.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_ht.properties +17 -6
- package/src/properties/translations/odyssey-react-mui_hu.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_id.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_it.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_ja.properties +14 -2
- package/src/properties/translations/odyssey-react-mui_ko.properties +14 -2
- package/src/properties/translations/odyssey-react-mui_ms.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_nb.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_nl_NL.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_pl.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_pt_BR.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_ro.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_ru.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_sv.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_th.properties +14 -2
- package/src/properties/translations/odyssey-react-mui_tr.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_uk.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_vi.properties +15 -3
- package/src/properties/translations/odyssey-react-mui_zh_CN.properties +14 -2
- package/src/properties/translations/odyssey-react-mui_zh_TW.properties +14 -2
- package/src/properties/ts/odyssey-react-mui.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_cs.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_da.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_de.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_el.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_es.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_fi.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_fr.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ht.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_hu.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_id.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_it.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ja.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ko.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ms.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_nb.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_nl_NL.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_pl.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_pt_BR.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ro.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ru.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_sv.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_th.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_tr.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_uk.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_vi.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_zh_CN.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_zh_TW.ts +1 -1
- package/src/test-selectors/getByQuerySelector.ts +176 -0
- package/src/test-selectors/getComputedAccessibleErrorMessageText.ts +52 -0
- package/src/test-selectors/getComputedAccessibleText.ts +36 -0
- package/src/test-selectors/index.ts +2 -2
- package/src/test-selectors/interpolateString.ts +41 -0
- package/src/test-selectors/linkedHtmlSelectors.ts +73 -0
- package/src/test-selectors/queryOdysseySelector.ts +36 -0
- package/src/test-selectors/querySelector.ts +221 -170
- package/src/test-selectors/sanityChecks.ts +53 -0
- package/src/test-selectors/testSelector.ts +143 -0
- package/src/theme/components.tsx +238 -150
- package/src/theme/createOdysseyMuiTheme.ts +4 -1
- package/dist/createShadowRootElement.js +0 -26
- package/dist/createShadowRootElement.js.map +0 -1
- package/dist/labs/DataComponents/BulkActionsMenu.js.map +0 -1
- package/dist/labs/DataComponents/DataStack.js +0 -85
- package/dist/labs/DataComponents/DataStack.js.map +0 -1
- package/dist/labs/DataComponents/DataTable.js.map +0 -1
- package/dist/labs/DataComponents/DataView.js.map +0 -1
- package/dist/labs/DataComponents/DetailPanel.js.map +0 -1
- package/dist/labs/DataComponents/LayoutSwitcher.js.map +0 -1
- package/dist/labs/DataComponents/RowActions.js.map +0 -1
- package/dist/labs/DataComponents/StackCard.js.map +0 -1
- package/dist/labs/DataComponents/StackContent.js.map +0 -1
- package/dist/labs/DataComponents/TableContent.js.map +0 -1
- package/dist/labs/DataComponents/TableSettings.js.map +0 -1
- package/dist/labs/DataComponents/componentTypes.js.map +0 -1
- package/dist/labs/DataComponents/constants.js.map +0 -1
- package/dist/labs/DataComponents/dataTypes.js.map +0 -1
- package/dist/labs/DataComponents/fetchData.js.map +0 -1
- package/dist/labs/DataComponents/index.js.map +0 -1
- package/dist/labs/DataComponents/tableConstants.js.map +0 -1
- package/dist/labs/DataComponents/useFilterConversion.js.map +0 -1
- package/dist/labs/FileUpload.js.map +0 -1
- package/dist/labs/FileUploadIllustration.js.map +0 -1
- package/dist/labs/FileUploadPreview.js.map +0 -1
- package/dist/labs/SideNav.js +0 -478
- package/dist/labs/SideNav.js.map +0 -1
- package/dist/labs/Switch.js.map +0 -1
- package/dist/src/createShadowRootElement.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/BulkActionsMenu.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/DataStack.d.ts +0 -20
- package/dist/src/labs/DataComponents/DataStack.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/DataTable.d.ts +0 -16
- package/dist/src/labs/DataComponents/DataTable.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/DataView.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/DetailPanel.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/LayoutSwitcher.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/RowActions.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/StackCard.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/StackContent.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/TableContent.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/TableSettings.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/componentTypes.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/constants.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/dataTypes.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/fetchData.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/index.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/tableConstants.d.ts.map +0 -1
- package/dist/src/labs/DataComponents/useFilterConversion.d.ts.map +0 -1
- package/dist/src/labs/FileUpload.d.ts.map +0 -1
- package/dist/src/labs/FileUploadIllustration.d.ts.map +0 -1
- package/dist/src/labs/FileUploadPreview.d.ts.map +0 -1
- package/dist/src/labs/SideNav.d.ts.map +0 -1
- package/dist/src/labs/Switch.d.ts.map +0 -1
- package/dist/src/test-selectors/featureTestSelector.d.ts +0 -31
- package/dist/src/test-selectors/featureTestSelector.d.ts.map +0 -1
- package/dist/src/test-selectors/odysseyTestSelectors.d.ts +0 -120
- package/dist/src/test-selectors/odysseyTestSelectors.d.ts.map +0 -1
- package/dist/test-selectors/featureTestSelector.js +0 -2
- package/dist/test-selectors/featureTestSelector.js.map +0 -1
- package/dist/test-selectors/odysseyTestSelectors.js.map +0 -1
- package/src/createShadowRootElement.ts +0 -31
- package/src/labs/DataComponents/DataStack.tsx +0 -105
- package/src/labs/SideNav.tsx +0 -745
- package/src/test-selectors/featureTestSelector.ts +0 -41
- /package/dist/{labs → FileUploader}/FileUploadIllustration.js +0 -0
- /package/dist/{labs → FileUploader}/FileUploadPreview.js +0 -0
- /package/dist/labs/{DataComponents → DataView}/BulkActionsMenu.js +0 -0
- /package/dist/labs/{DataComponents → DataView}/DetailPanel.js +0 -0
- /package/dist/labs/{DataComponents → DataView}/LayoutSwitcher.js +0 -0
- /package/dist/labs/{DataComponents → DataView}/RowActions.js +0 -0
- /package/dist/labs/{DataComponents → DataView}/componentTypes.js +0 -0
- /package/dist/labs/{DataComponents → DataView}/dataTypes.js +0 -0
- /package/dist/labs/{DataComponents → DataView}/fetchData.js +0 -0
- /package/dist/labs/{DataComponents → DataView}/tableConstants.js +0 -0
- /package/dist/labs/{DataComponents → DataView}/useFilterConversion.js +0 -0
- /package/dist/src/{labs → FileUploader}/FileUploadIllustration.d.ts +0 -0
- /package/dist/src/labs/{DataComponents → DataView}/BulkActionsMenu.d.ts +0 -0
- /package/dist/src/labs/{DataComponents → DataView}/LayoutSwitcher.d.ts +0 -0
- /package/dist/src/labs/{DataComponents → DataView}/RowActions.d.ts +0 -0
- /package/dist/src/labs/{DataComponents → DataView}/dataTypes.d.ts +0 -0
- /package/dist/src/labs/{DataComponents → DataView}/fetchData.d.ts +0 -0
- /package/dist/src/labs/{DataComponents → DataView}/tableConstants.d.ts +0 -0
- /package/src/{labs → FileUploader}/FileUploadIllustration.tsx +0 -0
- /package/src/labs/{DataComponents → DataView}/BulkActionsMenu.tsx +0 -0
- /package/src/labs/{DataComponents → DataView}/LayoutSwitcher.tsx +0 -0
- /package/src/labs/{DataComponents → DataView}/RowActions.tsx +0 -0
- /package/src/labs/{DataComponents → DataView}/dataTypes.ts +0 -0
- /package/src/labs/{DataComponents → DataView}/fetchData.ts +0 -0
- /package/src/labs/{DataComponents → DataView}/tableConstants.tsx +0 -0
package/src/Radio.tsx
CHANGED
|
@@ -17,9 +17,7 @@ import {
|
|
|
17
17
|
Radio as MuiRadio,
|
|
18
18
|
RadioProps as MuiRadioProps,
|
|
19
19
|
} from "@mui/material";
|
|
20
|
-
|
|
21
20
|
import { memo, useCallback, useMemo, useRef, useImperativeHandle } from "react";
|
|
22
|
-
|
|
23
21
|
import { FieldComponentProps } from "./FieldComponentProps";
|
|
24
22
|
import type { HtmlProps } from "./HtmlProps";
|
|
25
23
|
import { FocusHandle } from "./inputUtils";
|
|
@@ -31,11 +29,11 @@ export type RadioProps = {
|
|
|
31
29
|
*/
|
|
32
30
|
inputRef?: React.RefObject<FocusHandle>;
|
|
33
31
|
/**
|
|
34
|
-
*
|
|
32
|
+
* Determines whether the Radio button is checked
|
|
35
33
|
*/
|
|
36
34
|
isChecked?: boolean;
|
|
37
35
|
/**
|
|
38
|
-
* If `true`, the
|
|
36
|
+
* If `true`, the radio button has an invalid value
|
|
39
37
|
*/
|
|
40
38
|
isInvalid?: boolean;
|
|
41
39
|
/**
|
|
@@ -46,15 +44,16 @@ export type RadioProps = {
|
|
|
46
44
|
* The value attribute of the Radio
|
|
47
45
|
*/
|
|
48
46
|
value: string;
|
|
49
|
-
/**
|
|
50
|
-
* Callback fired when the state is changed. Provides event and checked value.
|
|
51
|
-
*/
|
|
52
|
-
onChange?: MuiRadioProps["onChange"];
|
|
53
47
|
/**
|
|
54
48
|
* Callback fired when the blur event happens. Provides event value.
|
|
55
49
|
*/
|
|
50
|
+
onChange?: MuiRadioProps["onChange"];
|
|
56
51
|
onBlur?: MuiFormControlLabelProps["onBlur"];
|
|
57
|
-
|
|
52
|
+
onClick?: React.MouseEventHandler<HTMLSpanElement>;
|
|
53
|
+
} & Pick<
|
|
54
|
+
FieldComponentProps,
|
|
55
|
+
"hint" | "id" | "isDisabled" | "isReadOnly" | "name"
|
|
56
|
+
> &
|
|
58
57
|
Pick<HtmlProps, "testId" | "translate">;
|
|
59
58
|
|
|
60
59
|
const Radio = ({
|
|
@@ -68,8 +67,10 @@ const Radio = ({
|
|
|
68
67
|
testId,
|
|
69
68
|
translate,
|
|
70
69
|
value,
|
|
70
|
+
isReadOnly,
|
|
71
71
|
onChange: onChangeProp,
|
|
72
72
|
onBlur: onBlurProp,
|
|
73
|
+
onClick,
|
|
73
74
|
}: RadioProps) => {
|
|
74
75
|
const localInputRef = useRef<HTMLInputElement>(null);
|
|
75
76
|
useImperativeHandle(
|
|
@@ -95,10 +96,25 @@ const Radio = ({
|
|
|
95
96
|
);
|
|
96
97
|
|
|
97
98
|
const onChange = useCallback<NonNullable<MuiRadioProps["onChange"]>>(
|
|
98
|
-
(event, checked) =>
|
|
99
|
-
|
|
99
|
+
(event, checked) => {
|
|
100
|
+
if (isReadOnly) {
|
|
101
|
+
event.preventDefault();
|
|
102
|
+
} else {
|
|
103
|
+
onChangeProp?.(event, checked);
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
[onChangeProp, isReadOnly],
|
|
100
107
|
);
|
|
101
108
|
|
|
109
|
+
const handleClick = useCallback<React.MouseEventHandler<HTMLSpanElement>>(
|
|
110
|
+
(event) => {
|
|
111
|
+
if (isReadOnly) {
|
|
112
|
+
event.stopPropagation();
|
|
113
|
+
event.preventDefault();
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
[isReadOnly],
|
|
117
|
+
);
|
|
102
118
|
const onBlur = useCallback<NonNullable<MuiFormControlLabelProps["onBlur"]>>(
|
|
103
119
|
(event) => {
|
|
104
120
|
onBlurProp?.(event);
|
|
@@ -114,17 +130,30 @@ const Radio = ({
|
|
|
114
130
|
<MuiRadio
|
|
115
131
|
inputProps={{
|
|
116
132
|
"data-se": testId,
|
|
133
|
+
"aria-disabled": isDisabled || isReadOnly,
|
|
134
|
+
readOnly: isReadOnly,
|
|
135
|
+
tabIndex: isReadOnly ? 0 : undefined,
|
|
117
136
|
}}
|
|
118
137
|
inputRef={localInputRef}
|
|
119
138
|
onChange={onChange}
|
|
139
|
+
onClick={onClick || handleClick}
|
|
140
|
+
disabled={isDisabled}
|
|
120
141
|
/>
|
|
121
142
|
}
|
|
122
|
-
disabled={isDisabled}
|
|
123
143
|
label={label}
|
|
124
144
|
name={name}
|
|
125
145
|
translate={translate}
|
|
126
146
|
value={value}
|
|
127
147
|
onBlur={onBlur}
|
|
148
|
+
disabled={isDisabled}
|
|
149
|
+
sx={{
|
|
150
|
+
...(isReadOnly && {
|
|
151
|
+
cursor: "default",
|
|
152
|
+
"& .MuiTypography-root": {
|
|
153
|
+
cursor: "default",
|
|
154
|
+
},
|
|
155
|
+
}),
|
|
156
|
+
}}
|
|
128
157
|
/>
|
|
129
158
|
);
|
|
130
159
|
};
|
package/src/RadioGroup.tsx
CHANGED
|
@@ -14,9 +14,8 @@ import {
|
|
|
14
14
|
RadioGroup as MuiRadioGroup,
|
|
15
15
|
type RadioGroupProps as MuiRadioGroupProps,
|
|
16
16
|
} from "@mui/material";
|
|
17
|
-
import { memo, ReactNode, useCallback, useRef } from "react";
|
|
17
|
+
import React, { memo, ReactNode, useCallback, useRef, useMemo } from "react";
|
|
18
18
|
|
|
19
|
-
import { RadioProps } from "./Radio";
|
|
20
19
|
import { Field } from "./Field";
|
|
21
20
|
import {
|
|
22
21
|
FieldComponentProps,
|
|
@@ -24,6 +23,7 @@ import {
|
|
|
24
23
|
} from "./FieldComponentProps";
|
|
25
24
|
import type { HtmlProps } from "./HtmlProps";
|
|
26
25
|
import { getControlState, useInputValues } from "./inputUtils";
|
|
26
|
+
import { Radio, RadioProps } from "./Radio";
|
|
27
27
|
|
|
28
28
|
export type RadioGroupProps = {
|
|
29
29
|
/**
|
|
@@ -45,7 +45,7 @@ export type RadioGroupProps = {
|
|
|
45
45
|
/**
|
|
46
46
|
* The `value` on the selected Radio
|
|
47
47
|
*/
|
|
48
|
-
value?:
|
|
48
|
+
value?: string;
|
|
49
49
|
} & Pick<
|
|
50
50
|
FieldComponentProps,
|
|
51
51
|
| "errorMessage"
|
|
@@ -54,6 +54,7 @@ export type RadioGroupProps = {
|
|
|
54
54
|
| "HintLinkComponent"
|
|
55
55
|
| "id"
|
|
56
56
|
| "isDisabled"
|
|
57
|
+
| "isReadOnly"
|
|
57
58
|
| "name"
|
|
58
59
|
> &
|
|
59
60
|
Pick<HtmlProps, "ariaDescribedBy" | "testId" | "translate">;
|
|
@@ -73,6 +74,7 @@ const RadioGroup = ({
|
|
|
73
74
|
HintLinkComponent,
|
|
74
75
|
id: idOverride,
|
|
75
76
|
isDisabled,
|
|
77
|
+
isReadOnly = false,
|
|
76
78
|
label,
|
|
77
79
|
name: nameOverride,
|
|
78
80
|
onChange: onChangeProp,
|
|
@@ -86,6 +88,7 @@ const RadioGroup = ({
|
|
|
86
88
|
uncontrolledValue: defaultValue,
|
|
87
89
|
}),
|
|
88
90
|
);
|
|
91
|
+
|
|
89
92
|
const inputValues = useInputValues({
|
|
90
93
|
defaultValue,
|
|
91
94
|
value,
|
|
@@ -93,11 +96,26 @@ const RadioGroup = ({
|
|
|
93
96
|
});
|
|
94
97
|
|
|
95
98
|
const onChange = useCallback<NonNullable<MuiRadioGroupProps["onChange"]>>(
|
|
96
|
-
(event,
|
|
97
|
-
onChangeProp?.(event,
|
|
99
|
+
(event, newValue) => {
|
|
100
|
+
onChangeProp?.(event, newValue);
|
|
98
101
|
},
|
|
99
102
|
[onChangeProp],
|
|
100
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
|
+
isDisabled: isDisabled,
|
|
111
|
+
isReadOnly: isReadOnly,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return child;
|
|
115
|
+
}),
|
|
116
|
+
[children, isDisabled, isReadOnly],
|
|
117
|
+
);
|
|
118
|
+
|
|
101
119
|
const renderFieldComponent = useCallback(
|
|
102
120
|
({
|
|
103
121
|
ariaDescribedBy,
|
|
@@ -116,10 +134,10 @@ const RadioGroup = ({
|
|
|
116
134
|
onChange={onChange}
|
|
117
135
|
translate={translate}
|
|
118
136
|
>
|
|
119
|
-
{
|
|
137
|
+
{memoizedChildren}
|
|
120
138
|
</MuiRadioGroup>
|
|
121
139
|
),
|
|
122
|
-
[
|
|
140
|
+
[inputValues, nameOverride, onChange, memoizedChildren, testId, translate],
|
|
123
141
|
);
|
|
124
142
|
|
|
125
143
|
return (
|
|
@@ -133,6 +151,7 @@ const RadioGroup = ({
|
|
|
133
151
|
HintLinkComponent={HintLinkComponent}
|
|
134
152
|
id={idOverride}
|
|
135
153
|
isDisabled={isDisabled}
|
|
154
|
+
isReadOnly={isReadOnly}
|
|
136
155
|
label={label}
|
|
137
156
|
renderFieldComponent={renderFieldComponent}
|
|
138
157
|
/>
|
package/src/Select.tsx
CHANGED
|
@@ -18,7 +18,6 @@ import {
|
|
|
18
18
|
useRef,
|
|
19
19
|
useState,
|
|
20
20
|
useImperativeHandle,
|
|
21
|
-
MouseEvent,
|
|
22
21
|
} from "react";
|
|
23
22
|
import {
|
|
24
23
|
Box as MuiBox,
|
|
@@ -31,7 +30,6 @@ import {
|
|
|
31
30
|
SelectChangeEvent,
|
|
32
31
|
} from "@mui/material";
|
|
33
32
|
import { SelectProps as MuiSelectProps } from "@mui/material";
|
|
34
|
-
|
|
35
33
|
import { Field } from "./Field";
|
|
36
34
|
import {
|
|
37
35
|
FieldComponentProps,
|
|
@@ -47,11 +45,48 @@ import {
|
|
|
47
45
|
} from "./inputUtils";
|
|
48
46
|
import { normalizedKey } from "./useNormalizedKey";
|
|
49
47
|
import styled from "@emotion/styled";
|
|
50
|
-
|
|
51
48
|
import {
|
|
52
49
|
useOdysseyDesignTokens,
|
|
53
50
|
DesignTokens,
|
|
54
51
|
} from "./OdysseyDesignTokensContext";
|
|
52
|
+
import { TestSelector } from "./test-selectors";
|
|
53
|
+
|
|
54
|
+
export const SelectTestSelector = {
|
|
55
|
+
accessibleText: {
|
|
56
|
+
errorMessage: "errorMessage",
|
|
57
|
+
hint: "description",
|
|
58
|
+
label: "label",
|
|
59
|
+
},
|
|
60
|
+
children: {
|
|
61
|
+
list: {
|
|
62
|
+
accessibleText: {
|
|
63
|
+
label: "label",
|
|
64
|
+
},
|
|
65
|
+
children: {
|
|
66
|
+
listItem: {
|
|
67
|
+
accessibleText: {
|
|
68
|
+
label: "label",
|
|
69
|
+
},
|
|
70
|
+
elementSelector: {
|
|
71
|
+
method: "ByRole",
|
|
72
|
+
options: {
|
|
73
|
+
label: "name",
|
|
74
|
+
},
|
|
75
|
+
role: "option",
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
isControlledElement: true,
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
elementSelector: {
|
|
83
|
+
method: "ByRole",
|
|
84
|
+
options: {
|
|
85
|
+
label: "name",
|
|
86
|
+
},
|
|
87
|
+
role: "combobox",
|
|
88
|
+
},
|
|
89
|
+
} as const satisfies TestSelector;
|
|
55
90
|
|
|
56
91
|
export type SelectOption = {
|
|
57
92
|
text: string;
|
|
@@ -97,16 +132,20 @@ const NonInteractiveIcon = styled(CloseCircleFilledIcon, {
|
|
|
97
132
|
|
|
98
133
|
const ChipsInnerContainer = styled(MuiBox, {
|
|
99
134
|
shouldForwardProp: (prop) =>
|
|
100
|
-
prop !== "odysseyDesignTokens" &&
|
|
135
|
+
prop !== "odysseyDesignTokens" &&
|
|
136
|
+
prop !== "isInteractive" &&
|
|
137
|
+
prop !== "isReadOnly",
|
|
101
138
|
})<{
|
|
102
139
|
isInteractive?: boolean;
|
|
140
|
+
isReadOnly?: boolean;
|
|
103
141
|
odysseyDesignTokens: DesignTokens;
|
|
104
142
|
}>`
|
|
105
143
|
display: flex;
|
|
106
144
|
flex-wrap: wrap;
|
|
107
145
|
gap: ${({ odysseyDesignTokens }) => odysseyDesignTokens.Spacing1};
|
|
108
146
|
pointer-events: none;
|
|
109
|
-
opacity: ${({ isInteractive }) =>
|
|
147
|
+
opacity: ${({ isInteractive, isReadOnly }) =>
|
|
148
|
+
isInteractive || isReadOnly ? 1 : 0};
|
|
110
149
|
min-height: ${({ odysseyDesignTokens }) => odysseyDesignTokens.Spacing6};
|
|
111
150
|
`;
|
|
112
151
|
|
|
@@ -168,6 +207,7 @@ export type SelectProps<
|
|
|
168
207
|
| "isDisabled"
|
|
169
208
|
| "isFullWidth"
|
|
170
209
|
| "isOptional"
|
|
210
|
+
| "isReadOnly"
|
|
171
211
|
| "name"
|
|
172
212
|
> &
|
|
173
213
|
Pick<HtmlProps, "ariaDescribedBy" | "testId" | "translate">;
|
|
@@ -210,6 +250,7 @@ const Select = <
|
|
|
210
250
|
isFullWidth = false,
|
|
211
251
|
isMultiSelect,
|
|
212
252
|
isOptional = false,
|
|
253
|
+
isReadOnly = false,
|
|
213
254
|
label,
|
|
214
255
|
name: nameOverride,
|
|
215
256
|
onBlur,
|
|
@@ -220,6 +261,8 @@ const Select = <
|
|
|
220
261
|
translate,
|
|
221
262
|
value,
|
|
222
263
|
}: SelectProps<Value, HasMultipleChoices>) => {
|
|
264
|
+
const selectRef = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null);
|
|
265
|
+
|
|
223
266
|
const hasMultipleChoices = useMemo(
|
|
224
267
|
() =>
|
|
225
268
|
hasMultipleChoicesProp === undefined
|
|
@@ -227,6 +270,7 @@ const Select = <
|
|
|
227
270
|
: hasMultipleChoicesProp,
|
|
228
271
|
[hasMultipleChoicesProp, isMultiSelect],
|
|
229
272
|
);
|
|
273
|
+
|
|
230
274
|
const controlledStateRef = useRef(
|
|
231
275
|
getControlState({
|
|
232
276
|
controlledValue: value,
|
|
@@ -266,44 +310,51 @@ const Select = <
|
|
|
266
310
|
|
|
267
311
|
const onChange = useCallback<NonNullable<MuiSelectProps<Value>["onChange"]>>(
|
|
268
312
|
(event, child) => {
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
313
|
+
if (isReadOnly) {
|
|
314
|
+
event.preventDefault();
|
|
315
|
+
} else {
|
|
316
|
+
const {
|
|
317
|
+
target: { value },
|
|
318
|
+
} = event;
|
|
319
|
+
if (controlledStateRef.current !== CONTROLLED) {
|
|
320
|
+
setInternalSelectedValues(
|
|
321
|
+
(typeof value === "string" && hasMultipleChoices
|
|
322
|
+
? value.split(",")
|
|
323
|
+
: value) as Value,
|
|
324
|
+
);
|
|
325
|
+
}
|
|
326
|
+
onChangeProp?.(event, child);
|
|
278
327
|
}
|
|
279
|
-
onChangeProp?.(event, child);
|
|
280
328
|
},
|
|
281
|
-
[hasMultipleChoices, onChangeProp],
|
|
329
|
+
[hasMultipleChoices, onChangeProp, isReadOnly],
|
|
282
330
|
);
|
|
283
|
-
|
|
284
331
|
// Normalize the options array to accommodate the various
|
|
285
332
|
// data types that might be passed
|
|
286
|
-
const normalizedOptions = useMemo(
|
|
287
|
-
() =>
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
333
|
+
const [normalizedOptions, normalizedOptionsMap] = useMemo(() => {
|
|
334
|
+
const normalizedOptions = options.map((option) => {
|
|
335
|
+
if (typeof option === "object") {
|
|
336
|
+
/**
|
|
337
|
+
* If the value of `option?.value is an empty string, we need to make sure that we
|
|
338
|
+
* set an empty string to `value` in the normalized option so that the select component
|
|
339
|
+
* can potentially set it as the selected one in the text input
|
|
340
|
+
*/
|
|
341
|
+
const value =
|
|
342
|
+
option?.value === "" ? option.value : option.value || option.text;
|
|
343
|
+
return {
|
|
344
|
+
text: option.text,
|
|
345
|
+
value,
|
|
346
|
+
type: option.type === "heading" ? "heading" : "option",
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
return { text: option, value: option, type: "option" };
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
const normalizedOptionsMap = new Map(
|
|
354
|
+
normalizedOptions.map((option) => [option.value, option]),
|
|
355
|
+
);
|
|
356
|
+
return [normalizedOptions, normalizedOptionsMap];
|
|
357
|
+
}, [options]);
|
|
307
358
|
|
|
308
359
|
const removeSelectedValue = useCallback(
|
|
309
360
|
(selectedValue: string) => {
|
|
@@ -323,19 +374,25 @@ const Select = <
|
|
|
323
374
|
);
|
|
324
375
|
|
|
325
376
|
const Chips = useCallback(
|
|
326
|
-
({
|
|
327
|
-
|
|
377
|
+
({
|
|
378
|
+
isInteractive,
|
|
379
|
+
isReadOnly,
|
|
380
|
+
}: {
|
|
381
|
+
isInteractive: boolean;
|
|
382
|
+
isReadOnly?: boolean;
|
|
383
|
+
}) => {
|
|
384
|
+
const stopPropagation = (event: React.MouseEvent<SVGSVGElement>) =>
|
|
328
385
|
event.stopPropagation();
|
|
329
386
|
|
|
330
387
|
const hasNonInteractiveIcon =
|
|
331
388
|
!isInteractive &&
|
|
332
389
|
controlledStateRef.current === CONTROLLED &&
|
|
333
390
|
hasMultipleChoices;
|
|
334
|
-
|
|
335
391
|
return (
|
|
336
392
|
Array.isArray(internalSelectedValues) && (
|
|
337
393
|
<ChipsInnerContainer
|
|
338
394
|
isInteractive={isInteractive}
|
|
395
|
+
isReadOnly={isReadOnly}
|
|
339
396
|
odysseyDesignTokens={odysseyDesignTokens}
|
|
340
397
|
>
|
|
341
398
|
{internalSelectedValues.map(
|
|
@@ -345,7 +402,7 @@ const Select = <
|
|
|
345
402
|
key={item}
|
|
346
403
|
label={
|
|
347
404
|
<>
|
|
348
|
-
{item}
|
|
405
|
+
{normalizedOptionsMap.get(item)?.text}
|
|
349
406
|
{hasNonInteractiveIcon && (
|
|
350
407
|
<NonInteractiveIcon
|
|
351
408
|
odysseyDesignTokens={odysseyDesignTokens}
|
|
@@ -381,6 +438,7 @@ const Select = <
|
|
|
381
438
|
internalSelectedValues,
|
|
382
439
|
odysseyDesignTokens,
|
|
383
440
|
removeSelectedValue,
|
|
441
|
+
normalizedOptionsMap,
|
|
384
442
|
],
|
|
385
443
|
);
|
|
386
444
|
|
|
@@ -401,6 +459,7 @@ const Select = <
|
|
|
401
459
|
|
|
402
460
|
return (
|
|
403
461
|
<MuiMenuItem
|
|
462
|
+
data-empty={!option.text}
|
|
404
463
|
key={normalizedKey(option.text, index.toString())}
|
|
405
464
|
value={option.value}
|
|
406
465
|
selected={isSelected}
|
|
@@ -417,6 +476,7 @@ const Select = <
|
|
|
417
476
|
}),
|
|
418
477
|
[hasMultipleChoices, normalizedOptions, internalSelectedValues],
|
|
419
478
|
);
|
|
479
|
+
|
|
420
480
|
const renderValue = useCallback(
|
|
421
481
|
(value: Value) => Array.isArray(value) && <Chips isInteractive={false} />,
|
|
422
482
|
[Chips],
|
|
@@ -436,8 +496,17 @@ const Select = <
|
|
|
436
496
|
aria-errormessage={errorMessageElementId}
|
|
437
497
|
displayEmpty
|
|
438
498
|
id={id}
|
|
439
|
-
inputProps={{
|
|
440
|
-
|
|
499
|
+
inputProps={{
|
|
500
|
+
"data-se": testId,
|
|
501
|
+
"aria-disabled": isDisabled || isReadOnly,
|
|
502
|
+
readOnly: isReadOnly,
|
|
503
|
+
}}
|
|
504
|
+
inputRef={(el: HTMLInputElement | HTMLTextAreaElement | null) => {
|
|
505
|
+
if (localInputRef.current !== el) {
|
|
506
|
+
(localInputRef as React.MutableRefObject<typeof el>).current = el;
|
|
507
|
+
}
|
|
508
|
+
selectRef.current = el;
|
|
509
|
+
}}
|
|
441
510
|
labelId={labelElementId}
|
|
442
511
|
multiple={hasMultipleChoices}
|
|
443
512
|
name={nameOverride ?? id}
|
|
@@ -454,7 +523,7 @@ const Select = <
|
|
|
454
523
|
<ChipsPositioningContainer
|
|
455
524
|
odysseyDesignTokens={odysseyDesignTokens}
|
|
456
525
|
>
|
|
457
|
-
<Chips isInteractive={
|
|
526
|
+
<Chips isInteractive={!isReadOnly} isReadOnly={isReadOnly} />
|
|
458
527
|
</ChipsPositioningContainer>
|
|
459
528
|
</>
|
|
460
529
|
)}
|
|
@@ -464,6 +533,8 @@ const Select = <
|
|
|
464
533
|
Chips,
|
|
465
534
|
inputValues,
|
|
466
535
|
hasMultipleChoices,
|
|
536
|
+
isDisabled,
|
|
537
|
+
isReadOnly,
|
|
467
538
|
nameOverride,
|
|
468
539
|
odysseyDesignTokens,
|
|
469
540
|
onBlur,
|