@okta/odyssey-react-mui 1.32.0 → 1.32.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/theme/components.cjs +6 -0
- package/dist/cjs/theme/components.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNav.cjs +2 -1
- package/dist/cjs/ui-shell/SideNav/SideNav.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavItemContent.cjs +36 -11
- package/dist/cjs/ui-shell/SideNav/SideNavItemContent.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavItemLinkContent.cjs +3 -1
- package/dist/cjs/ui-shell/SideNav/SideNavItemLinkContent.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavLogo.cjs +14 -2
- package/dist/cjs/ui-shell/SideNav/SideNavLogo.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavToggleButton.cjs +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavToggleButton.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/types.cjs.map +1 -1
- package/dist/cjs/ui-shell/UiShellContent.cjs +48 -32
- package/dist/cjs/ui-shell/UiShellContent.cjs.map +1 -1
- package/dist/cjs/ui-shell/index.cjs +9 -1
- package/dist/cjs/ui-shell/index.cjs.map +1 -1
- package/dist/cjs/useContrastMode.cjs +1 -1
- package/dist/cjs/useContrastMode.cjs.map +1 -1
- package/dist/esm/theme/components.js +6 -0
- package/dist/esm/theme/components.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNav.js +2 -1
- package/dist/esm/ui-shell/SideNav/SideNav.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavItemContent.js +37 -12
- package/dist/esm/ui-shell/SideNav/SideNavItemContent.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavItemLinkContent.js +3 -1
- package/dist/esm/ui-shell/SideNav/SideNavItemLinkContent.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavLogo.js +14 -2
- package/dist/esm/ui-shell/SideNav/SideNavLogo.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavToggleButton.js +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavToggleButton.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/types.js.map +1 -1
- package/dist/esm/ui-shell/UiShellContent.js +45 -31
- package/dist/esm/ui-shell/UiShellContent.js.map +1 -1
- package/dist/esm/ui-shell/index.js +1 -0
- package/dist/esm/ui-shell/index.js.map +1 -1
- package/dist/esm/useContrastMode.js +2 -2
- package/dist/esm/useContrastMode.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.scss +1 -1
- package/dist/tsconfig.production.tsbuildinfo +1 -1
- package/dist/types/theme/components.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNav.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavItemContent.d.ts +9 -7
- package/dist/types/ui-shell/SideNav/SideNavItemContent.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavItemLinkContent.d.ts +1 -1
- package/dist/types/ui-shell/SideNav/SideNavItemLinkContent.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavLogo.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/types.d.ts +5 -1
- package/dist/types/ui-shell/SideNav/types.d.ts.map +1 -1
- package/dist/types/ui-shell/UiShellContent.d.ts +8 -2
- package/dist/types/ui-shell/UiShellContent.d.ts.map +1 -1
- package/dist/types/ui-shell/index.d.ts +1 -1
- package/dist/types/ui-shell/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/.browserslistrc +0 -1
- package/.svgrrc.cjs +0 -13
- package/CHANGELOG.md +0 -1490
- package/babel.config.cjs +0 -112
- package/i18n.config.json +0 -10
- package/scripts/generateIconsIndex.ts +0 -49
- package/scripts/generateTestSelectorsJson.ts +0 -33
- package/scripts/properties-to-ts.ts +0 -111
- package/src/@types/i18next.d.ts +0 -24
- package/src/@types/properties.d.ts +0 -292
- package/src/@types/react-augment.d.ts +0 -22
- package/src/Accordion.tsx +0 -117
- package/src/Autocomplete.tsx +0 -321
- package/src/Badge.tsx +0 -112
- package/src/Banner.tsx +0 -112
- package/src/Box.tsx +0 -44
- package/src/Breadcrumbs.tsx +0 -221
- package/src/Buttons/BaseButton.tsx +0 -250
- package/src/Buttons/BaseMenuButton.tsx +0 -342
- package/src/Buttons/Button.tsx +0 -30
- package/src/Buttons/ButtonContext.tsx +0 -23
- package/src/Buttons/MenuButton.tsx +0 -33
- package/src/Buttons/MenuContext.ts +0 -25
- package/src/Buttons/MenuItem.tsx +0 -103
- package/src/Buttons/index.ts +0 -25
- package/src/Callout.tsx +0 -176
- package/src/Card.tsx +0 -186
- package/src/Checkbox.tsx +0 -261
- package/src/CheckboxGroup.tsx +0 -127
- package/src/CircularProgress.tsx +0 -42
- package/src/CssBaseline.tsx +0 -20
- package/src/DataTable/DataTable.tsx +0 -968
- package/src/DataTable/DataTableRowActions.tsx +0 -132
- package/src/DataTable/DataTableSettings.tsx +0 -136
- package/src/DataTable/constants.ts +0 -13
- package/src/DataTable/index.tsx +0 -28
- package/src/DataTable/reorderDataRowsLocally.tsx +0 -48
- package/src/DataTable/useRowReordering.tsx +0 -232
- package/src/DataTable/useScrollIndication.tsx +0 -125
- package/src/DatePickers/DateField.tsx +0 -267
- package/src/DatePickers/DateFieldActionBar.tsx +0 -65
- package/src/DatePickers/DateFieldLocalizationProvider.tsx +0 -46
- package/src/DatePickers/DatePicker.test.tsx +0 -66
- package/src/DatePickers/DatePicker.tsx +0 -299
- package/src/DatePickers/DatePicker.types.d.ts +0 -14
- package/src/DatePickers/TimeZonePicker.tsx +0 -59
- package/src/DatePickers/datePickerTheme.tsx +0 -377
- package/src/DatePickers/index.ts +0 -15
- package/src/DatePickers/useDateFieldsTranslations.ts +0 -94
- package/src/DatePickers/useOdysseyDateFields.ts +0 -303
- package/src/Dialog.tsx +0 -178
- package/src/Drawer.tsx +0 -255
- package/src/EmptyState.tsx +0 -79
- package/src/ErrorMessageList.tsx +0 -56
- package/src/Field.tsx +0 -189
- package/src/FieldComponentProps.ts +0 -66
- package/src/FieldError.tsx +0 -59
- package/src/FieldHint.tsx +0 -72
- package/src/FieldLabel.tsx +0 -67
- package/src/Fieldset.tsx +0 -116
- package/src/FieldsetContext.tsx +0 -23
- package/src/FileUploader/FileUploadIllustration.tsx +0 -66
- package/src/FileUploader/FileUploadPreview.tsx +0 -151
- package/src/FileUploader/FileUploader.tsx +0 -311
- package/src/FileUploader/index.ts +0 -13
- package/src/Form.tsx +0 -185
- package/src/FormCheckedProps.ts +0 -59
- package/src/HintLink.tsx +0 -28
- package/src/HtmlProps.ts +0 -112
- package/src/IconWithTooltip.tsx +0 -90
- package/src/Link.tsx +0 -115
- package/src/MuiPropsChild.tsx +0 -42
- package/src/MuiPropsContext.ts +0 -18
- package/src/NativeSelect.tsx +0 -249
- package/src/NullElement.tsx +0 -13
- package/src/OdysseyCacheProvider.test.tsx +0 -39
- package/src/OdysseyCacheProvider.tsx +0 -86
- package/src/OdysseyDesignTokensContext.tsx +0 -23
- package/src/OdysseyProvider.tsx +0 -92
- package/src/OdysseyThemeProvider.test.tsx +0 -211
- package/src/OdysseyThemeProvider.tsx +0 -109
- package/src/OdysseyTranslationProvider.test.tsx +0 -95
- package/src/OdysseyTranslationProvider.tsx +0 -77
- package/src/OdysseyTranslationProvider.types.ts +0 -47
- package/src/Pagination/Pagination.test.tsx +0 -327
- package/src/Pagination/Pagination.tsx +0 -417
- package/src/Pagination/constants.ts +0 -13
- package/src/Pagination/index.ts +0 -15
- package/src/Pagination/usePagination.ts +0 -45
- package/src/PasswordField.tsx +0 -253
- package/src/Radio.tsx +0 -199
- package/src/RadioGroup.tsx +0 -164
- package/src/ScreenReaderText.tsx +0 -53
- package/src/SearchField.tsx +0 -240
- package/src/Select.tsx +0 -576
- package/src/Stack.tsx +0 -56
- package/src/Status.tsx +0 -67
- package/src/Surface.tsx +0 -61
- package/src/SvgIcon.ts +0 -22
- package/src/Switch.tsx +0 -425
- package/src/Tabs.tsx +0 -259
- package/src/Tag.tsx +0 -317
- package/src/TagList.tsx +0 -55
- package/src/TagListContext.tsx +0 -23
- package/src/TextField.tsx +0 -298
- package/src/Toast.tsx +0 -151
- package/src/ToastStack.tsx +0 -43
- package/src/Tooltip.tsx +0 -61
- package/src/Typography.test.tsx +0 -26
- package/src/Typography.tsx +0 -474
- package/src/createContrastColors.ts +0 -112
- package/src/createUniqueAlphabeticalId.test.ts +0 -22
- package/src/createUniqueAlphabeticalId.ts +0 -17
- package/src/createUniqueId.test.ts +0 -22
- package/src/createUniqueId.ts +0 -17
- package/src/getTypedObjectKeys.ts +0 -15
- package/src/hexToRgb.ts +0 -40
- package/src/i18n.ts +0 -110
- package/src/icons.generated/Add.tsx +0 -44
- package/src/icons.generated/AddCircle.tsx +0 -46
- package/src/icons.generated/Apps.tsx +0 -44
- package/src/icons.generated/ArrowBottom.tsx +0 -46
- package/src/icons.generated/ArrowDown.tsx +0 -46
- package/src/icons.generated/ArrowLeft.tsx +0 -46
- package/src/icons.generated/ArrowLowerLeft.tsx +0 -46
- package/src/icons.generated/ArrowLowerRight.tsx +0 -46
- package/src/icons.generated/ArrowRight.tsx +0 -46
- package/src/icons.generated/ArrowTop.tsx +0 -46
- package/src/icons.generated/ArrowUnsorted.tsx +0 -46
- package/src/icons.generated/ArrowUp.tsx +0 -46
- package/src/icons.generated/ArrowUpperLeft.tsx +0 -46
- package/src/icons.generated/ArrowUpperRight.tsx +0 -46
- package/src/icons.generated/Bug.tsx +0 -44
- package/src/icons.generated/Calendar.tsx +0 -46
- package/src/icons.generated/Call.tsx +0 -44
- package/src/icons.generated/Chat.tsx +0 -44
- package/src/icons.generated/Check.tsx +0 -44
- package/src/icons.generated/CheckCircleFilled.tsx +0 -47
- package/src/icons.generated/ChevronDown.tsx +0 -46
- package/src/icons.generated/ChevronLeft.tsx +0 -46
- package/src/icons.generated/ChevronRight.tsx +0 -46
- package/src/icons.generated/ChevronUp.tsx +0 -46
- package/src/icons.generated/Clock.tsx +0 -44
- package/src/icons.generated/Close.tsx +0 -44
- package/src/icons.generated/CloseCircleFilled.tsx +0 -47
- package/src/icons.generated/CollapseLeft.tsx +0 -46
- package/src/icons.generated/CollapseRight.tsx +0 -46
- package/src/icons.generated/Copy.tsx +0 -44
- package/src/icons.generated/Custom.tsx +0 -50
- package/src/icons.generated/DangerDiamond.tsx +0 -46
- package/src/icons.generated/DangerDiamondFilled.tsx +0 -47
- package/src/icons.generated/Delete.tsx +0 -44
- package/src/icons.generated/Deny.tsx +0 -44
- package/src/icons.generated/Devices.tsx +0 -46
- package/src/icons.generated/Directory.tsx +0 -46
- package/src/icons.generated/Documentation.tsx +0 -46
- package/src/icons.generated/Download.tsx +0 -46
- package/src/icons.generated/DragIndicator.tsx +0 -46
- package/src/icons.generated/Duo.tsx +0 -62
- package/src/icons.generated/Edit.tsx +0 -44
- package/src/icons.generated/Email.tsx +0 -49
- package/src/icons.generated/ExpandLeft.tsx +0 -46
- package/src/icons.generated/ExpandRight.tsx +0 -46
- package/src/icons.generated/ExternalLink.tsx +0 -44
- package/src/icons.generated/Fido2.tsx +0 -72
- package/src/icons.generated/Filter.tsx +0 -44
- package/src/icons.generated/Folder.tsx +0 -44
- package/src/icons.generated/Globe.tsx +0 -44
- package/src/icons.generated/GoogleAuth.tsx +0 -70
- package/src/icons.generated/Grid.tsx +0 -47
- package/src/icons.generated/Group.tsx +0 -44
- package/src/icons.generated/Hide.tsx +0 -44
- package/src/icons.generated/Home.tsx +0 -44
- package/src/icons.generated/Idp.tsx +0 -54
- package/src/icons.generated/InformationCircle.tsx +0 -47
- package/src/icons.generated/InformationCircleFilled.tsx +0 -47
- package/src/icons.generated/Link.tsx +0 -44
- package/src/icons.generated/List.tsx +0 -44
- package/src/icons.generated/Lock.tsx +0 -44
- package/src/icons.generated/More.tsx +0 -44
- package/src/icons.generated/Notification.tsx +0 -46
- package/src/icons.generated/OktaVerify.tsx +0 -46
- package/src/icons.generated/OnPremMfa.tsx +0 -52
- package/src/icons.generated/OneTimePassword.tsx +0 -65
- package/src/icons.generated/Password.tsx +0 -80
- package/src/icons.generated/Pause.tsx +0 -44
- package/src/icons.generated/QuestionCircle.tsx +0 -46
- package/src/icons.generated/QuestionCircleFilled.tsx +0 -47
- package/src/icons.generated/Refresh.tsx +0 -46
- package/src/icons.generated/Reset.tsx +0 -44
- package/src/icons.generated/Resume.tsx +0 -44
- package/src/icons.generated/Search.tsx +0 -44
- package/src/icons.generated/SecurityQuestion.tsx +0 -51
- package/src/icons.generated/Server.tsx +0 -44
- package/src/icons.generated/Settings.tsx +0 -46
- package/src/icons.generated/Show.tsx +0 -44
- package/src/icons.generated/SmartCard.tsx +0 -65
- package/src/icons.generated/Sms.tsx +0 -55
- package/src/icons.generated/Subtract.tsx +0 -46
- package/src/icons.generated/SymantecVip.tsx +0 -52
- package/src/icons.generated/Sync.tsx +0 -44
- package/src/icons.generated/ThumbsDown.tsx +0 -46
- package/src/icons.generated/ThumbsUp.tsx +0 -46
- package/src/icons.generated/Unlock.tsx +0 -44
- package/src/icons.generated/Upload.tsx +0 -44
- package/src/icons.generated/User.tsx +0 -44
- package/src/icons.generated/Video.tsx +0 -44
- package/src/icons.generated/VoiceCall.tsx +0 -62
- package/src/icons.generated/Warning.tsx +0 -46
- package/src/icons.generated/WarningFilled.tsx +0 -46
- package/src/icons.generated/Yubikey.tsx +0 -44
- package/src/icons.generated/index.ts +0 -107
- package/src/index.ts +0 -118
- package/src/inputUtils.ts +0 -80
- package/src/labs/AppTile.tsx +0 -421
- package/src/labs/DataFilters.tsx +0 -871
- package/src/labs/DataTable.tsx +0 -877
- package/src/labs/DataTablePagination.tsx +0 -88
- package/src/labs/DataView/BulkActionsMenu.tsx +0 -98
- package/src/labs/DataView/CardLayoutContent.tsx +0 -272
- package/src/labs/DataView/DataCard.tsx +0 -357
- package/src/labs/DataView/DataTable.tsx +0 -128
- package/src/labs/DataView/DataView.test.tsx +0 -1168
- package/src/labs/DataView/DataView.tsx +0 -504
- package/src/labs/DataView/DetailPanel.tsx +0 -31
- package/src/labs/DataView/LayoutSwitcher.tsx +0 -72
- package/src/labs/DataView/RowActions.tsx +0 -125
- package/src/labs/DataView/TableLayoutContent.tsx +0 -500
- package/src/labs/DataView/TableSettings.tsx +0 -144
- package/src/labs/DataView/componentTypes.ts +0 -129
- package/src/labs/DataView/constants.tsx +0 -28
- package/src/labs/DataView/dataTypes.ts +0 -83
- package/src/labs/DataView/fetchData.ts +0 -49
- package/src/labs/DataView/index.ts +0 -19
- package/src/labs/DataView/tableConstants.tsx +0 -137
- package/src/labs/DataView/testSupportData.tsx +0 -301
- package/src/labs/DataView/useFilterConversion.ts +0 -88
- package/src/labs/DatePickers/DateTimeField.tsx +0 -267
- package/src/labs/DatePickers/DateTimePicker.test.tsx +0 -70
- package/src/labs/DatePickers/DateTimePicker.tsx +0 -303
- package/src/labs/DatePickers/dateTimePickerTheme.ts +0 -216
- package/src/labs/DatePickers/index.ts +0 -13
- package/src/labs/GroupPicker.tsx +0 -261
- package/src/labs/OdysseyPickers/ComposablePicker.test.tsx +0 -32
- package/src/labs/OdysseyPickers/ComposablePicker.tsx +0 -188
- package/src/labs/OdysseyPickers/Picker.tsx +0 -381
- package/src/labs/OdysseyPickers/PickerVirtualizationListBox.tsx +0 -192
- package/src/labs/OdysseyPickers/PickerWithOptionAdornment.tsx +0 -429
- package/src/labs/OdysseyPickers/index.ts +0 -15
- package/src/labs/PageTemplate/Layout.tsx +0 -85
- package/src/labs/PageTemplate/PageTemplate.tsx +0 -234
- package/src/labs/PageTemplate/index.ts +0 -14
- package/src/labs/PaginatedTable.tsx +0 -290
- package/src/labs/README.md +0 -46
- package/src/labs/StaticTable.tsx +0 -131
- package/src/labs/UserProfile.tsx +0 -104
- package/src/labs/UserProfileMenuButton.tsx +0 -86
- package/src/labs/index.ts +0 -47
- package/src/labs/materialReactTableTypes.tsx +0 -19
- package/src/properties/odyssey-react-mui.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_cs.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_da.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_de.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_el.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_es.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_fi.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_fr.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ht.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_hu.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_id.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_it.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ja.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ko.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ms.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_nb.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_nl_NL.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ok_PL.properties +0 -126
- package/src/properties/translations/odyssey-react-mui_ok_SK.properties +0 -126
- package/src/properties/translations/odyssey-react-mui_pl.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_pt_BR.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ro.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_ru.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_sv.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_th.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_tr.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_uk.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_vi.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_zh_CN.properties +0 -140
- package/src/properties/translations/odyssey-react-mui_zh_TW.properties +0 -140
- package/src/properties/ts/odyssey-react-mui.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_cs.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_da.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_de.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_el.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_es.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_fi.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_fr.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ht.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_hu.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_id.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_it.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ja.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ko.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ms.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_nb.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_nl_NL.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ok_PL.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ok_SK.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_pl.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_pt_BR.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ro.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_ru.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_sv.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_th.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_tr.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_uk.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_vi.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_zh_CN.ts +0 -1
- package/src/properties/ts/odyssey-react-mui_zh_TW.ts +0 -1
- package/src/remUtils.ts +0 -27
- package/src/shadow-dom/index.ts +0 -13
- package/src/shadow-dom/shadow-dom.test.ts +0 -24
- package/src/shadow-dom/shadow-dom.ts +0 -54
- package/src/test-selectors/getByQuerySelector.ts +0 -176
- package/src/test-selectors/getComputedAccessibleErrorMessageText.ts +0 -52
- package/src/test-selectors/getComputedAccessibleText.ts +0 -36
- package/src/test-selectors/index.ts +0 -15
- package/src/test-selectors/interpolateString.ts +0 -41
- package/src/test-selectors/linkedHtmlSelectors.ts +0 -73
- package/src/test-selectors/queryOdysseySelector.ts +0 -36
- package/src/test-selectors/querySelector.ts +0 -249
- package/src/test-selectors/sanityChecks.ts +0 -53
- package/src/test-selectors/testSelector.ts +0 -143
- package/src/theme/components.tsx +0 -3275
- package/src/theme/components.types.ts +0 -111
- package/src/theme/createOdysseyMuiTheme.ts +0 -54
- package/src/theme/index.ts +0 -13
- package/src/theme/mixins.ts +0 -29
- package/src/theme/mixins.types.ts +0 -31
- package/src/theme/palette.ts +0 -112
- package/src/theme/palette.types.ts +0 -24
- package/src/theme/shape.ts +0 -31
- package/src/theme/spacing.ts +0 -34
- package/src/theme/theme.ts +0 -13
- package/src/theme/typography.ts +0 -137
- package/src/theme/typography.types.ts +0 -41
- package/src/theme/useContrastMode.test.tsx +0 -504
- package/src/ui-shell/AppSwitcher/AppSwitcher.tsx +0 -94
- package/src/ui-shell/AppSwitcher/AppSwitcherApp.tsx +0 -146
- package/src/ui-shell/AppSwitcher/OktaAura.tsx +0 -50
- package/src/ui-shell/AppSwitcher/index.ts +0 -13
- package/src/ui-shell/SideNav/CollapseIcon.tsx +0 -34
- package/src/ui-shell/SideNav/HandleIcon.tsx +0 -35
- package/src/ui-shell/SideNav/NavAccordion.tsx +0 -243
- package/src/ui-shell/SideNav/OktaLogo.tsx +0 -34
- package/src/ui-shell/SideNav/SideNav.test.tsx +0 -326
- package/src/ui-shell/SideNav/SideNav.tsx +0 -810
- package/src/ui-shell/SideNav/SideNavFooterContent.tsx +0 -85
- package/src/ui-shell/SideNav/SideNavHeader.tsx +0 -134
- package/src/ui-shell/SideNav/SideNavItemContent.tsx +0 -402
- package/src/ui-shell/SideNav/SideNavItemContentContext.tsx +0 -29
- package/src/ui-shell/SideNav/SideNavItemLinkContent.tsx +0 -90
- package/src/ui-shell/SideNav/SideNavLogo.tsx +0 -65
- package/src/ui-shell/SideNav/SideNavToggleButton.tsx +0 -272
- package/src/ui-shell/SideNav/SortableList/SortableItem.tsx +0 -237
- package/src/ui-shell/SideNav/SortableList/SortableList.tsx +0 -132
- package/src/ui-shell/SideNav/SortableList/SortableOverlay.tsx +0 -34
- package/src/ui-shell/SideNav/index.ts +0 -16
- package/src/ui-shell/SideNav/types.ts +0 -224
- package/src/ui-shell/TopNav/TopNav.tsx +0 -109
- package/src/ui-shell/TopNav/TopNavLinksList.tsx +0 -68
- package/src/ui-shell/TopNav/TopNavListItem.tsx +0 -209
- package/src/ui-shell/TopNav/index.ts +0 -13
- package/src/ui-shell/UiShell.test.tsx +0 -366
- package/src/ui-shell/UiShell.tsx +0 -153
- package/src/ui-shell/UiShellContent.tsx +0 -350
- package/src/ui-shell/UiShellProvider.tsx +0 -103
- package/src/ui-shell/bufferLatest.test.ts +0 -79
- package/src/ui-shell/bufferLatest.ts +0 -64
- package/src/ui-shell/createMessageBus.test.ts +0 -115
- package/src/ui-shell/createMessageBus.ts +0 -53
- package/src/ui-shell/createStore.test.ts +0 -103
- package/src/ui-shell/createStore.ts +0 -37
- package/src/ui-shell/index.ts +0 -21
- package/src/ui-shell/renderUiShell.test.tsx +0 -203
- package/src/ui-shell/renderUiShell.tsx +0 -158
- package/src/ui-shell/useHasUiShell.ts +0 -25
- package/src/ui-shell/useScrollState.ts +0 -59
- package/src/useAutocomplete.tsx +0 -184
- package/src/useContrastMode.tsx +0 -143
- package/src/useNormalizedKey.ts +0 -17
- package/src/useUniqueAlphabeticalId.ts +0 -21
- package/src/useUniqueId.ts +0 -21
- package/src/web-component/createReactRootElements.test.ts +0 -40
- package/src/web-component/createReactRootElements.ts +0 -39
- package/src/web-component/index.ts +0 -13
- package/src/web-component/renderReactInWebComponent.test.tsx +0 -128
- package/src/web-component/renderReactInWebComponent.ts +0 -135
- package/tsconfig.json +0 -16
- package/tsconfig.production.json +0 -13
- package/vitest.config.ts +0 -36
- package/vitest.setup.ts +0 -32
|
@@ -1,381 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
3
|
-
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
4
|
-
*
|
|
5
|
-
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7
|
-
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
8
|
-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
-
*
|
|
10
|
-
* See the License for the specific language governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
HTMLAttributes,
|
|
15
|
-
memo,
|
|
16
|
-
PropsWithChildren,
|
|
17
|
-
ReactElement,
|
|
18
|
-
ReactNode,
|
|
19
|
-
useCallback,
|
|
20
|
-
} from "react";
|
|
21
|
-
import styled from "@emotion/styled";
|
|
22
|
-
|
|
23
|
-
import {
|
|
24
|
-
ComposablePicker,
|
|
25
|
-
type BasePickerProps,
|
|
26
|
-
type BasePickerType,
|
|
27
|
-
} from "./ComposablePicker.js";
|
|
28
|
-
import {
|
|
29
|
-
useOdysseyDesignTokens,
|
|
30
|
-
DesignTokens,
|
|
31
|
-
} from "../../OdysseyDesignTokensContext.js";
|
|
32
|
-
import { Heading6, Paragraph } from "../../Typography.js";
|
|
33
|
-
|
|
34
|
-
export const StyledOption = styled.li<{ hasAdornment?: boolean }>(
|
|
35
|
-
({ hasAdornment }) => ({
|
|
36
|
-
...(!hasAdornment && {
|
|
37
|
-
display: "block !important",
|
|
38
|
-
}),
|
|
39
|
-
}),
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
export const OptionLabelContainer = styled("div", {
|
|
43
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
44
|
-
})<{ odysseyDesignTokens: DesignTokens }>(() => ({
|
|
45
|
-
p: {
|
|
46
|
-
margin: 0,
|
|
47
|
-
},
|
|
48
|
-
}));
|
|
49
|
-
|
|
50
|
-
export const OptionDescription = styled("p", {
|
|
51
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
52
|
-
})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({
|
|
53
|
-
margin: `${odysseyDesignTokens.Spacing1} 0 0 !important`,
|
|
54
|
-
color: odysseyDesignTokens.TypographyColorSubordinate,
|
|
55
|
-
}));
|
|
56
|
-
|
|
57
|
-
export const OptionDetails = styled("div", {
|
|
58
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
59
|
-
})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({
|
|
60
|
-
display: "flex",
|
|
61
|
-
gap: odysseyDesignTokens.Spacing3,
|
|
62
|
-
marginBlockStart: odysseyDesignTokens.Spacing2,
|
|
63
|
-
}));
|
|
64
|
-
|
|
65
|
-
export const OptionDetail = styled("div", {
|
|
66
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
67
|
-
})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({
|
|
68
|
-
display: "flex",
|
|
69
|
-
alignItems: "center",
|
|
70
|
-
gap: odysseyDesignTokens.Spacing1,
|
|
71
|
-
|
|
72
|
-
svg: {
|
|
73
|
-
width: odysseyDesignTokens.Spacing4,
|
|
74
|
-
color: odysseyDesignTokens.HueNeutral400,
|
|
75
|
-
},
|
|
76
|
-
}));
|
|
77
|
-
|
|
78
|
-
export type BaseOptionProps = {
|
|
79
|
-
muiProps: HTMLAttributes<HTMLLIElement>;
|
|
80
|
-
odysseyDesignTokens: DesignTokens;
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
type OptionComponentProps = {
|
|
84
|
-
hasAdornment?: boolean;
|
|
85
|
-
key: string | number;
|
|
86
|
-
muiProps: BaseOptionProps["muiProps"];
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
export const Option = ({
|
|
90
|
-
children,
|
|
91
|
-
hasAdornment = false,
|
|
92
|
-
key,
|
|
93
|
-
muiProps,
|
|
94
|
-
}: PropsWithChildren<OptionComponentProps>) => (
|
|
95
|
-
<StyledOption {...muiProps} hasAdornment={hasAdornment} key={key}>
|
|
96
|
-
{children}
|
|
97
|
-
</StyledOption>
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
export const OptionMetadataComponent = ({
|
|
101
|
-
metaData,
|
|
102
|
-
odysseyDesignTokens,
|
|
103
|
-
}: {
|
|
104
|
-
metaData: OptionMetadata[];
|
|
105
|
-
odysseyDesignTokens: DesignTokens;
|
|
106
|
-
}) => {
|
|
107
|
-
return (
|
|
108
|
-
<OptionDetails odysseyDesignTokens={odysseyDesignTokens}>
|
|
109
|
-
{metaData.map((meta: OptionMetadata, index: number) => {
|
|
110
|
-
const { detailText, icon } = meta;
|
|
111
|
-
|
|
112
|
-
return (
|
|
113
|
-
<OptionDetail
|
|
114
|
-
key={`${index}-${detailText}`}
|
|
115
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
116
|
-
>
|
|
117
|
-
{icon}
|
|
118
|
-
{detailText}
|
|
119
|
-
</OptionDetail>
|
|
120
|
-
);
|
|
121
|
-
})}
|
|
122
|
-
</OptionDetails>
|
|
123
|
-
);
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
export const OptionDescriptionComponent = ({
|
|
127
|
-
description,
|
|
128
|
-
odysseyDesignTokens,
|
|
129
|
-
}: {
|
|
130
|
-
description?: LabelDescription["description"];
|
|
131
|
-
odysseyDesignTokens: DesignTokens;
|
|
132
|
-
}) => {
|
|
133
|
-
return (
|
|
134
|
-
description && (
|
|
135
|
-
<OptionDescription odysseyDesignTokens={odysseyDesignTokens}>
|
|
136
|
-
{description}
|
|
137
|
-
</OptionDescription>
|
|
138
|
-
)
|
|
139
|
-
);
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
export type OptionProps<OptionType> = {
|
|
143
|
-
option: OptionType;
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
export const OptionLabelOnlyComponent = <OptionType extends OptionLabelOnly>({
|
|
147
|
-
muiProps,
|
|
148
|
-
odysseyDesignTokens,
|
|
149
|
-
option,
|
|
150
|
-
}: BaseOptionProps & OptionProps<OptionType>) => {
|
|
151
|
-
const { label, value } = option;
|
|
152
|
-
|
|
153
|
-
return (
|
|
154
|
-
<Option muiProps={muiProps} key={value}>
|
|
155
|
-
<OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>
|
|
156
|
-
<Paragraph>{label}</Paragraph>
|
|
157
|
-
</OptionLabelContainer>
|
|
158
|
-
</Option>
|
|
159
|
-
);
|
|
160
|
-
};
|
|
161
|
-
|
|
162
|
-
const OptionLabelDescription = <OptionType extends LabelDescription>({
|
|
163
|
-
muiProps,
|
|
164
|
-
odysseyDesignTokens,
|
|
165
|
-
option,
|
|
166
|
-
}: BaseOptionProps & OptionProps<OptionType>) => {
|
|
167
|
-
const { description, label, value } = option;
|
|
168
|
-
|
|
169
|
-
return (
|
|
170
|
-
<Option muiProps={muiProps} key={value}>
|
|
171
|
-
<OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>
|
|
172
|
-
<Heading6 component="p">{label}</Heading6>
|
|
173
|
-
<OptionDescriptionComponent
|
|
174
|
-
description={description}
|
|
175
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
176
|
-
/>
|
|
177
|
-
</OptionLabelContainer>
|
|
178
|
-
</Option>
|
|
179
|
-
);
|
|
180
|
-
};
|
|
181
|
-
|
|
182
|
-
const OptionLabelDescriptionMetadata = <
|
|
183
|
-
OptionType extends LabelDescriptionMetadata,
|
|
184
|
-
>({
|
|
185
|
-
muiProps,
|
|
186
|
-
odysseyDesignTokens,
|
|
187
|
-
option,
|
|
188
|
-
}: BaseOptionProps & OptionProps<OptionType>) => {
|
|
189
|
-
const { description, label, metaData, value } = option;
|
|
190
|
-
|
|
191
|
-
return (
|
|
192
|
-
<Option key={value} muiProps={muiProps}>
|
|
193
|
-
<OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>
|
|
194
|
-
<Heading6 component="p">{label}</Heading6>
|
|
195
|
-
<OptionDescriptionComponent
|
|
196
|
-
description={description}
|
|
197
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
198
|
-
/>
|
|
199
|
-
</OptionLabelContainer>
|
|
200
|
-
<OptionMetadataComponent
|
|
201
|
-
metaData={metaData}
|
|
202
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
203
|
-
/>
|
|
204
|
-
</Option>
|
|
205
|
-
);
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
export type OptionMetadata = {
|
|
209
|
-
icon: ReactElement;
|
|
210
|
-
detailText: string | number;
|
|
211
|
-
};
|
|
212
|
-
|
|
213
|
-
export type OptionGroupType = { group?: string };
|
|
214
|
-
export type OptionValueType = { value: string | number };
|
|
215
|
-
export type OptionLabelType = { label: string };
|
|
216
|
-
export type BaseOptionType = OptionValueType &
|
|
217
|
-
OptionGroupType &
|
|
218
|
-
OptionLabelType;
|
|
219
|
-
export type Metadata = {
|
|
220
|
-
metaData: OptionMetadata[];
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
export type OptionLabelOnly = BaseOptionType;
|
|
224
|
-
export type LabelDescription = BaseOptionType & { description?: string };
|
|
225
|
-
export type LabelDescriptionMetadata = LabelDescription & Metadata;
|
|
226
|
-
|
|
227
|
-
export type PickerProps<
|
|
228
|
-
OptionType extends LabelDescription | LabelDescriptionMetadata,
|
|
229
|
-
HasMultipleChoices extends boolean | undefined,
|
|
230
|
-
IsCustomValueAllowed extends boolean | undefined,
|
|
231
|
-
> = BasePickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>;
|
|
232
|
-
|
|
233
|
-
export type PickerComponentType = {
|
|
234
|
-
<
|
|
235
|
-
OptionType extends OptionLabelOnly,
|
|
236
|
-
HasMultipleChoices extends boolean | undefined,
|
|
237
|
-
IsCustomValueAllowed extends boolean | undefined,
|
|
238
|
-
>(
|
|
239
|
-
props: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,
|
|
240
|
-
): ReactElement;
|
|
241
|
-
<
|
|
242
|
-
OptionType extends LabelDescriptionMetadata,
|
|
243
|
-
HasMultipleChoices extends boolean | undefined,
|
|
244
|
-
IsCustomValueAllowed extends boolean | undefined,
|
|
245
|
-
>(
|
|
246
|
-
props: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,
|
|
247
|
-
): ReactElement;
|
|
248
|
-
<
|
|
249
|
-
OptionType extends LabelDescription,
|
|
250
|
-
HasMultipleChoices extends boolean | undefined,
|
|
251
|
-
IsCustomValueAllowed extends boolean | undefined,
|
|
252
|
-
>(
|
|
253
|
-
props: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,
|
|
254
|
-
): ReactElement;
|
|
255
|
-
<
|
|
256
|
-
OptionType extends LabelDescriptionMetadata,
|
|
257
|
-
HasMultipleChoices extends boolean | undefined,
|
|
258
|
-
IsCustomValueAllowed extends boolean | undefined,
|
|
259
|
-
>(
|
|
260
|
-
props: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,
|
|
261
|
-
): ReactElement;
|
|
262
|
-
};
|
|
263
|
-
|
|
264
|
-
const Picker: PickerComponentType = <
|
|
265
|
-
OptionType extends
|
|
266
|
-
| OptionLabelOnly
|
|
267
|
-
| LabelDescription
|
|
268
|
-
| LabelDescriptionMetadata,
|
|
269
|
-
HasMultipleChoices extends boolean | undefined,
|
|
270
|
-
IsCustomValueAllowed extends boolean | undefined,
|
|
271
|
-
>({
|
|
272
|
-
ariaDescribedBy,
|
|
273
|
-
defaultValue,
|
|
274
|
-
errorMessage,
|
|
275
|
-
errorMessageList,
|
|
276
|
-
getIsOptionEqualToValue,
|
|
277
|
-
hasMultipleChoices,
|
|
278
|
-
id: idOverride,
|
|
279
|
-
inputValue,
|
|
280
|
-
isCustomValueAllowed,
|
|
281
|
-
isDisabled,
|
|
282
|
-
isFullWidth = false,
|
|
283
|
-
isLoading,
|
|
284
|
-
isOptional = false,
|
|
285
|
-
isReadOnly,
|
|
286
|
-
isVirtualized: isVirtualizedProp = false,
|
|
287
|
-
hint,
|
|
288
|
-
HintLinkComponent,
|
|
289
|
-
label,
|
|
290
|
-
name: nameOverride,
|
|
291
|
-
onBlur,
|
|
292
|
-
onChange: onChangeProp,
|
|
293
|
-
onInputChange: onInputChangeProp,
|
|
294
|
-
onFocus,
|
|
295
|
-
options,
|
|
296
|
-
value,
|
|
297
|
-
testId,
|
|
298
|
-
translate,
|
|
299
|
-
}: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>) => {
|
|
300
|
-
const odysseyDesignTokens = useOdysseyDesignTokens();
|
|
301
|
-
|
|
302
|
-
const customOptionRender = useCallback<
|
|
303
|
-
(props: HTMLAttributes<HTMLLIElement>, option: OptionType) => ReactNode
|
|
304
|
-
>(
|
|
305
|
-
(muiProps, option) => {
|
|
306
|
-
const hasDescription = "description" in option && option.description;
|
|
307
|
-
const hasMetadata = "metaData" in option && option.metaData;
|
|
308
|
-
const isLabelOnly = !hasMetadata && !hasDescription;
|
|
309
|
-
|
|
310
|
-
if (isLabelOnly) {
|
|
311
|
-
return (
|
|
312
|
-
<OptionLabelOnlyComponent
|
|
313
|
-
muiProps={muiProps}
|
|
314
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
315
|
-
option={option}
|
|
316
|
-
/>
|
|
317
|
-
);
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
if (hasMetadata) {
|
|
321
|
-
return (
|
|
322
|
-
<OptionLabelDescriptionMetadata
|
|
323
|
-
muiProps={muiProps}
|
|
324
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
325
|
-
option={option}
|
|
326
|
-
/>
|
|
327
|
-
);
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
return (
|
|
331
|
-
<OptionLabelDescription
|
|
332
|
-
muiProps={muiProps}
|
|
333
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
334
|
-
option={option}
|
|
335
|
-
/>
|
|
336
|
-
);
|
|
337
|
-
},
|
|
338
|
-
[odysseyDesignTokens],
|
|
339
|
-
);
|
|
340
|
-
|
|
341
|
-
return (
|
|
342
|
-
<ComposablePicker<OptionType, HasMultipleChoices, IsCustomValueAllowed>
|
|
343
|
-
ariaDescribedBy={ariaDescribedBy}
|
|
344
|
-
defaultValue={defaultValue}
|
|
345
|
-
errorMessage={errorMessage}
|
|
346
|
-
errorMessageList={errorMessageList}
|
|
347
|
-
getIsOptionEqualToValue={getIsOptionEqualToValue}
|
|
348
|
-
// getOptionLabel={// getOptionLabel}
|
|
349
|
-
hasMultipleChoices={hasMultipleChoices}
|
|
350
|
-
id={idOverride}
|
|
351
|
-
inputValue={inputValue}
|
|
352
|
-
isCustomValueAllowed={isCustomValueAllowed}
|
|
353
|
-
isDisabled={isDisabled}
|
|
354
|
-
isFullWidth={isFullWidth}
|
|
355
|
-
isLoading={isLoading}
|
|
356
|
-
isOptional={isOptional}
|
|
357
|
-
isReadOnly={isReadOnly}
|
|
358
|
-
isVirtualized={isVirtualizedProp}
|
|
359
|
-
hint={hint}
|
|
360
|
-
HintLinkComponent={HintLinkComponent}
|
|
361
|
-
label={label}
|
|
362
|
-
name={nameOverride}
|
|
363
|
-
onBlur={onBlur}
|
|
364
|
-
onChange={onChangeProp}
|
|
365
|
-
onInputChange={onInputChangeProp}
|
|
366
|
-
onFocus={onFocus}
|
|
367
|
-
options={options}
|
|
368
|
-
renderOption={customOptionRender}
|
|
369
|
-
value={value}
|
|
370
|
-
testId={testId}
|
|
371
|
-
translate={translate}
|
|
372
|
-
/>
|
|
373
|
-
);
|
|
374
|
-
};
|
|
375
|
-
|
|
376
|
-
// Need the `as BasePickerType` because generics don't get passed through
|
|
377
|
-
const MemoizedPicker = memo(Picker) as BasePickerType;
|
|
378
|
-
|
|
379
|
-
MemoizedPicker.displayName = "Picker";
|
|
380
|
-
|
|
381
|
-
export { MemoizedPicker as Picker };
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
3
|
-
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
4
|
-
*
|
|
5
|
-
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7
|
-
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
8
|
-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
-
*
|
|
10
|
-
* See the License for the specific language governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
Children,
|
|
15
|
-
createContext,
|
|
16
|
-
forwardRef,
|
|
17
|
-
memo,
|
|
18
|
-
useCallback,
|
|
19
|
-
useContext,
|
|
20
|
-
useEffect,
|
|
21
|
-
useMemo,
|
|
22
|
-
useRef,
|
|
23
|
-
useState,
|
|
24
|
-
} from "react";
|
|
25
|
-
import { VariableSizeList, ListChildComponentProps } from "react-window";
|
|
26
|
-
import styled from "@emotion/styled";
|
|
27
|
-
import { AutocompleteProps } from "@mui/material";
|
|
28
|
-
|
|
29
|
-
type SetItemSize = (size: number) => void;
|
|
30
|
-
|
|
31
|
-
const ListboxContainer = styled.div({
|
|
32
|
-
width: "100%",
|
|
33
|
-
height: "100%",
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
const Row = <Data extends { key: string; props: Record<string, unknown> }[]>({
|
|
37
|
-
data,
|
|
38
|
-
index,
|
|
39
|
-
setItemSize,
|
|
40
|
-
style,
|
|
41
|
-
}: ListChildComponentProps<Data> & { setItemSize: SetItemSize }) => {
|
|
42
|
-
const rowRef = useRef<HTMLDivElement>(null);
|
|
43
|
-
|
|
44
|
-
useEffect(() => {
|
|
45
|
-
if (rowRef.current) {
|
|
46
|
-
/**
|
|
47
|
-
* Checking for child height to workaround a bug where the clientHeight of the row isn't updated correctly
|
|
48
|
-
* @see here if you need to know more: https://github.com/bvaughn/react-window/issues/582#issuecomment-1883074908
|
|
49
|
-
*/
|
|
50
|
-
const firstChild = rowRef.current.firstElementChild;
|
|
51
|
-
const height = firstChild
|
|
52
|
-
? firstChild.clientHeight
|
|
53
|
-
: rowRef.current.clientHeight;
|
|
54
|
-
|
|
55
|
-
setItemSize(height);
|
|
56
|
-
}
|
|
57
|
-
}, [index, rowRef, setItemSize]);
|
|
58
|
-
|
|
59
|
-
const baseOption = data[index];
|
|
60
|
-
const { props } = baseOption;
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* react-window calculates the absolute positions of the list items, via an inline style, so
|
|
64
|
-
* we need to add it to each list item that is being rendered in the viewable list window.
|
|
65
|
-
* @see here if you need to know more: https://github.com/bvaughn/react-window?tab=readme-ov-file#why-is-my-list-blank-when-i-scroll
|
|
66
|
-
*/
|
|
67
|
-
const styles = useMemo(
|
|
68
|
-
() => ({
|
|
69
|
-
...style,
|
|
70
|
-
height: "auto",
|
|
71
|
-
}),
|
|
72
|
-
[style],
|
|
73
|
-
);
|
|
74
|
-
|
|
75
|
-
return (
|
|
76
|
-
<div ref={rowRef}>
|
|
77
|
-
<li {...props} style={styles} />
|
|
78
|
-
</div>
|
|
79
|
-
);
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
const OuterListboxContext = createContext({});
|
|
83
|
-
|
|
84
|
-
const OuterListboxElementType = forwardRef<HTMLDivElement>((props, ref) => {
|
|
85
|
-
const outerProps = useContext(OuterListboxContext);
|
|
86
|
-
return <div ref={ref} {...props} {...outerProps} />;
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
const useResetCache = (length: number) => {
|
|
90
|
-
const resetCacheRef = useRef<VariableSizeList>(null);
|
|
91
|
-
useEffect(() => {
|
|
92
|
-
if (resetCacheRef.current) {
|
|
93
|
-
resetCacheRef.current.resetAfterIndex(0, true);
|
|
94
|
-
}
|
|
95
|
-
}, [length]);
|
|
96
|
-
return resetCacheRef;
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
const PickerVirtualizationListBox = forwardRef<
|
|
100
|
-
HTMLDivElement,
|
|
101
|
-
AutocompleteProps<undefined, undefined, undefined, undefined>["ListboxProps"]
|
|
102
|
-
>((props = {}, ref) => {
|
|
103
|
-
const [listHeight, setListHeight] = useState(0);
|
|
104
|
-
|
|
105
|
-
const { children, ...other } = props;
|
|
106
|
-
|
|
107
|
-
const itemData = Children.toArray(children).flatMap<typeof children>(
|
|
108
|
-
(child) =>
|
|
109
|
-
typeof child === "number" || typeof child === "string"
|
|
110
|
-
? [child]
|
|
111
|
-
: [child].concat("children" in child ? Children.toArray(children) : []),
|
|
112
|
-
);
|
|
113
|
-
|
|
114
|
-
const sizeMapRef = useRef<number[]>([]);
|
|
115
|
-
|
|
116
|
-
const getListBoxHeight = useCallback(() => {
|
|
117
|
-
// 8px of padding top/bottom applied by MUI
|
|
118
|
-
const COMBINED_LISTBOX_PADDING = 16;
|
|
119
|
-
|
|
120
|
-
if (itemData.length > OVERSCAN_ROW_COUNT) {
|
|
121
|
-
// has a max-height of 40vh set in CSS. This is only set because height needs to be a number
|
|
122
|
-
return 9999;
|
|
123
|
-
} else {
|
|
124
|
-
const itemsHeightCalculated = sizeMapRef.current
|
|
125
|
-
.slice(0, itemData.length)
|
|
126
|
-
.map((_, index) => sizeMapRef.current[index] || 0)
|
|
127
|
-
.reduce(
|
|
128
|
-
(prevItemHeight, nextItemHeight) => prevItemHeight + nextItemHeight,
|
|
129
|
-
0,
|
|
130
|
-
);
|
|
131
|
-
return COMBINED_LISTBOX_PADDING + itemsHeightCalculated;
|
|
132
|
-
}
|
|
133
|
-
}, [itemData, sizeMapRef]);
|
|
134
|
-
|
|
135
|
-
useEffect(() => {
|
|
136
|
-
if (sizeMapRef.current.length && itemData.length) {
|
|
137
|
-
setListHeight(getListBoxHeight());
|
|
138
|
-
}
|
|
139
|
-
}, [getListBoxHeight, itemData, sizeMapRef]);
|
|
140
|
-
|
|
141
|
-
// The number of items (rows or columns) to render outside of the visible area for performance and scrolling reasons
|
|
142
|
-
const OVERSCAN_ROW_COUNT = 8;
|
|
143
|
-
|
|
144
|
-
const gridRef = useResetCache(itemData.length);
|
|
145
|
-
|
|
146
|
-
const setItemSize = useCallback<SetItemSize>(
|
|
147
|
-
(size) => {
|
|
148
|
-
gridRef?.current?.resetAfterIndex(0, true);
|
|
149
|
-
sizeMapRef.current = sizeMapRef.current.concat(size);
|
|
150
|
-
},
|
|
151
|
-
[gridRef, sizeMapRef],
|
|
152
|
-
);
|
|
153
|
-
const getItemSize = useCallback(
|
|
154
|
-
// using 45px as a sane default here to avoid a lot of content shift on repaint
|
|
155
|
-
(index: number) => sizeMapRef.current[index] || 45,
|
|
156
|
-
[sizeMapRef],
|
|
157
|
-
);
|
|
158
|
-
|
|
159
|
-
return (
|
|
160
|
-
<ListboxContainer ref={ref}>
|
|
161
|
-
<OuterListboxContext.Provider value={other}>
|
|
162
|
-
<VariableSizeList
|
|
163
|
-
innerElementType="ul"
|
|
164
|
-
itemData={itemData}
|
|
165
|
-
itemCount={itemData.length}
|
|
166
|
-
itemSize={getItemSize}
|
|
167
|
-
height={listHeight}
|
|
168
|
-
width="100%"
|
|
169
|
-
ref={gridRef}
|
|
170
|
-
outerElementType={OuterListboxElementType}
|
|
171
|
-
overscanCount={OVERSCAN_ROW_COUNT}
|
|
172
|
-
>
|
|
173
|
-
{({ data, index, style }) => (
|
|
174
|
-
<Row
|
|
175
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
176
|
-
data={data}
|
|
177
|
-
index={index}
|
|
178
|
-
style={style}
|
|
179
|
-
setItemSize={setItemSize}
|
|
180
|
-
/>
|
|
181
|
-
)}
|
|
182
|
-
</VariableSizeList>
|
|
183
|
-
</OuterListboxContext.Provider>
|
|
184
|
-
</ListboxContainer>
|
|
185
|
-
);
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
const MemoizedPickerVirtualizationListBox = memo(PickerVirtualizationListBox);
|
|
189
|
-
|
|
190
|
-
MemoizedPickerVirtualizationListBox.displayName = "PickerVirtualizationListBox";
|
|
191
|
-
|
|
192
|
-
export { MemoizedPickerVirtualizationListBox as PickerVirtualizationListBox };
|