@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,209 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
3
|
-
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
4
|
-
*
|
|
5
|
-
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7
|
-
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
8
|
-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
-
*
|
|
10
|
-
* See the License for the specific language governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import styled from "@emotion/styled";
|
|
14
|
-
import {
|
|
15
|
-
memo,
|
|
16
|
-
useCallback,
|
|
17
|
-
KeyboardEventHandler,
|
|
18
|
-
MouseEventHandler,
|
|
19
|
-
} from "react";
|
|
20
|
-
|
|
21
|
-
import { Link } from "../../Link.js";
|
|
22
|
-
import {
|
|
23
|
-
DesignTokens,
|
|
24
|
-
useOdysseyDesignTokens,
|
|
25
|
-
} from "../../OdysseyDesignTokensContext.js";
|
|
26
|
-
|
|
27
|
-
const StyledTopNavItemLabelContainer = styled("div", {
|
|
28
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
29
|
-
})<{
|
|
30
|
-
odysseyDesignTokens: DesignTokens;
|
|
31
|
-
}>(({ odysseyDesignTokens }) => ({
|
|
32
|
-
alignItems: "center",
|
|
33
|
-
display: "flex",
|
|
34
|
-
flexWrap: "wrap",
|
|
35
|
-
fontSize: odysseyDesignTokens.TypographyScale0,
|
|
36
|
-
fontWeight: odysseyDesignTokens.TypographyWeightHeading,
|
|
37
|
-
}));
|
|
38
|
-
|
|
39
|
-
const StyledTopNavListItem = styled("li", {
|
|
40
|
-
shouldForwardProp: (prop) =>
|
|
41
|
-
prop !== "odysseyDesignTokens" && prop !== "isDisabled",
|
|
42
|
-
})<{
|
|
43
|
-
odysseyDesignTokens: DesignTokens;
|
|
44
|
-
isDisabled?: boolean;
|
|
45
|
-
}>(({ odysseyDesignTokens, isDisabled }) => ({
|
|
46
|
-
alignItems: "center",
|
|
47
|
-
color: `${isDisabled ? odysseyDesignTokens.TypographyColorDisabled : odysseyDesignTokens.TypographyColorHeading} !important`,
|
|
48
|
-
cursor: isDisabled ? "default" : "pointer",
|
|
49
|
-
display: "flex",
|
|
50
|
-
pointerEvents: isDisabled ? "none" : "auto",
|
|
51
|
-
|
|
52
|
-
a: {
|
|
53
|
-
alignItems: "center",
|
|
54
|
-
color: `${odysseyDesignTokens.TypographyColorHeading} !important`,
|
|
55
|
-
display: "flex",
|
|
56
|
-
paddingBlock: odysseyDesignTokens.Spacing2,
|
|
57
|
-
paddingInline: odysseyDesignTokens.Spacing4,
|
|
58
|
-
|
|
59
|
-
"&:hover": {
|
|
60
|
-
backgroundColor: !isDisabled
|
|
61
|
-
? odysseyDesignTokens.HueNeutral50
|
|
62
|
-
: "inherit",
|
|
63
|
-
textDecoration: "none",
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
"&:focus-visible": {
|
|
67
|
-
backgroundColor: !isDisabled
|
|
68
|
-
? odysseyDesignTokens.HueNeutral50
|
|
69
|
-
: "inherit",
|
|
70
|
-
borderRadius: 0,
|
|
71
|
-
outlineOffset: 0,
|
|
72
|
-
outlineWidth: odysseyDesignTokens.FocusOutlineWidthMain,
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
|
|
76
|
-
"div[role='button']:hover": {
|
|
77
|
-
backgroundColor: !isDisabled ? odysseyDesignTokens.HueNeutral50 : "inherit",
|
|
78
|
-
},
|
|
79
|
-
}));
|
|
80
|
-
|
|
81
|
-
const StyledNavItemContentClickContainer = styled("div", {
|
|
82
|
-
shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
|
|
83
|
-
})<{
|
|
84
|
-
odysseyDesignTokens: DesignTokens;
|
|
85
|
-
}>(({ odysseyDesignTokens }) => ({
|
|
86
|
-
alignItems: "center",
|
|
87
|
-
display: "flex",
|
|
88
|
-
paddingBlock: odysseyDesignTokens.Spacing2,
|
|
89
|
-
paddingInline: odysseyDesignTokens.Spacing4,
|
|
90
|
-
width: "100%",
|
|
91
|
-
|
|
92
|
-
"&:focus-visible": {
|
|
93
|
-
backgroundColor: odysseyDesignTokens.HueNeutral50,
|
|
94
|
-
borderRadius: 0,
|
|
95
|
-
outlineColor: odysseyDesignTokens.FocusOutlineColorPrimary,
|
|
96
|
-
outlineStyle: odysseyDesignTokens.FocusOutlineStyle,
|
|
97
|
-
outlineWidth: odysseyDesignTokens.FocusOutlineWidthMain,
|
|
98
|
-
textDecoration: "none",
|
|
99
|
-
},
|
|
100
|
-
}));
|
|
101
|
-
|
|
102
|
-
export type TopNavListItemProps = {
|
|
103
|
-
/**
|
|
104
|
-
* Without a hyperlink reference, `onClick` functionality will not function.
|
|
105
|
-
* If `undefined`, static text will be displayed.
|
|
106
|
-
*/
|
|
107
|
-
href?: string;
|
|
108
|
-
/**
|
|
109
|
-
* HTML `id` attribute.
|
|
110
|
-
*/
|
|
111
|
-
id: string;
|
|
112
|
-
/**
|
|
113
|
-
* Determines whether the link item is disabled.
|
|
114
|
-
*/
|
|
115
|
-
isDisabled?: boolean;
|
|
116
|
-
/**
|
|
117
|
-
* Display text for the link.
|
|
118
|
-
*/
|
|
119
|
-
label: string;
|
|
120
|
-
/**
|
|
121
|
-
* Handles both mouse and keyboard interactions.
|
|
122
|
-
*/
|
|
123
|
-
onClick?: MouseEventHandler<HTMLAnchorElement> &
|
|
124
|
-
MouseEventHandler<HTMLDivElement> &
|
|
125
|
-
KeyboardEventHandler<HTMLDivElement>;
|
|
126
|
-
/**
|
|
127
|
-
* Where to display the linked URL.
|
|
128
|
-
*/
|
|
129
|
-
target?: string;
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
const TopNavListItem = ({
|
|
133
|
-
href,
|
|
134
|
-
id,
|
|
135
|
-
isDisabled,
|
|
136
|
-
label,
|
|
137
|
-
onClick,
|
|
138
|
-
target,
|
|
139
|
-
}: TopNavListItemProps) => {
|
|
140
|
-
const odysseyDesignTokens = useOdysseyDesignTokens();
|
|
141
|
-
|
|
142
|
-
const topNavItemContentKeyHandler = useCallback<
|
|
143
|
-
KeyboardEventHandler<HTMLDivElement>
|
|
144
|
-
>(
|
|
145
|
-
(event) => {
|
|
146
|
-
if (event?.key === "Enter") {
|
|
147
|
-
event.preventDefault();
|
|
148
|
-
event.stopPropagation();
|
|
149
|
-
onClick?.(event);
|
|
150
|
-
}
|
|
151
|
-
},
|
|
152
|
-
[onClick],
|
|
153
|
-
);
|
|
154
|
-
|
|
155
|
-
return (
|
|
156
|
-
<StyledTopNavListItem
|
|
157
|
-
aria-disabled={isDisabled}
|
|
158
|
-
id={id}
|
|
159
|
-
isDisabled={isDisabled}
|
|
160
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
161
|
-
>
|
|
162
|
-
{
|
|
163
|
-
// Use Link for nav items with links and div for disabled or non-link items
|
|
164
|
-
isDisabled && (
|
|
165
|
-
<StyledNavItemContentClickContainer
|
|
166
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
167
|
-
>
|
|
168
|
-
<StyledTopNavItemLabelContainer
|
|
169
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
170
|
-
>
|
|
171
|
-
{label}
|
|
172
|
-
</StyledTopNavItemLabelContainer>
|
|
173
|
-
</StyledNavItemContentClickContainer>
|
|
174
|
-
)
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
{!isDisabled && href && (
|
|
178
|
-
<Link href={href} onClick={onClick} target={target}>
|
|
179
|
-
<StyledTopNavItemLabelContainer
|
|
180
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
181
|
-
>
|
|
182
|
-
{label}
|
|
183
|
-
</StyledTopNavItemLabelContainer>
|
|
184
|
-
</Link>
|
|
185
|
-
)}
|
|
186
|
-
|
|
187
|
-
{!isDisabled && !href && (
|
|
188
|
-
<StyledNavItemContentClickContainer
|
|
189
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
190
|
-
onClick={onClick}
|
|
191
|
-
onKeyDown={topNavItemContentKeyHandler}
|
|
192
|
-
role="button"
|
|
193
|
-
tabIndex={0}
|
|
194
|
-
>
|
|
195
|
-
<StyledTopNavItemLabelContainer
|
|
196
|
-
odysseyDesignTokens={odysseyDesignTokens}
|
|
197
|
-
>
|
|
198
|
-
{label}
|
|
199
|
-
</StyledTopNavItemLabelContainer>
|
|
200
|
-
</StyledNavItemContentClickContainer>
|
|
201
|
-
)}
|
|
202
|
-
</StyledTopNavListItem>
|
|
203
|
-
);
|
|
204
|
-
};
|
|
205
|
-
|
|
206
|
-
const MemoizedTopNavListItem = memo(TopNavListItem);
|
|
207
|
-
MemoizedTopNavListItem.displayName = "TopNavListItem";
|
|
208
|
-
|
|
209
|
-
export { MemoizedTopNavListItem as TopNavListItem };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
3
|
-
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
4
|
-
*
|
|
5
|
-
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7
|
-
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
8
|
-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
-
*
|
|
10
|
-
* See the License for the specific language governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
export * from "./TopNav.js";
|
|
@@ -1,366 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
3
|
-
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
4
|
-
*
|
|
5
|
-
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7
|
-
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
8
|
-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
-
*
|
|
10
|
-
* See the License for the specific language governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { render, waitFor, within } from "@testing-library/react";
|
|
14
|
-
|
|
15
|
-
import { defaultComponentProps, UiShell, UiShellProps } from "./UiShell.js";
|
|
16
|
-
import { ReactElement } from "react";
|
|
17
|
-
|
|
18
|
-
describe("UiShell", () => {
|
|
19
|
-
test("renders `stylesRootElement`", () => {
|
|
20
|
-
const rootElement = document.createElement("div");
|
|
21
|
-
|
|
22
|
-
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
23
|
-
document.body.append(rootElement);
|
|
24
|
-
|
|
25
|
-
const appContainerElement = document.createElement("div");
|
|
26
|
-
document.body.append(appContainerElement);
|
|
27
|
-
|
|
28
|
-
const stylesRootElement = document.createElement("div");
|
|
29
|
-
|
|
30
|
-
render(
|
|
31
|
-
<UiShell
|
|
32
|
-
appComponent={<div />}
|
|
33
|
-
appContainerElement={appContainerElement}
|
|
34
|
-
appRootElement={document.createElement("div")}
|
|
35
|
-
onSubscriptionCreated={() => {}}
|
|
36
|
-
stylesRootElement={stylesRootElement}
|
|
37
|
-
subscribeToPropChanges={() => () => {}}
|
|
38
|
-
/>,
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
expect(Array.from(stylesRootElement.children).length).toBeGreaterThan(0);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
test("renders always-available `componentSlots`", async () => {
|
|
45
|
-
const appContainerElement = document.createElement("div");
|
|
46
|
-
document.body.append(appContainerElement);
|
|
47
|
-
|
|
48
|
-
const optionalComponentTestIds: Array<
|
|
49
|
-
keyof Required<UiShellProps>["optionalComponents"]
|
|
50
|
-
> = ["banners", "topNavLeftSide", "topNavRightSide"];
|
|
51
|
-
|
|
52
|
-
// This is the subscription we give the component, and then once subscribed, we're going to immediately call it with new props.
|
|
53
|
-
// TopNav won't render unless we pass something into it.
|
|
54
|
-
const subscribeToPropChanges: UiShellProps["subscribeToPropChanges"] = (
|
|
55
|
-
subscriber,
|
|
56
|
-
) => {
|
|
57
|
-
subscriber({
|
|
58
|
-
...defaultComponentProps,
|
|
59
|
-
topNavProps: {},
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
return () => {};
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
const { container } = render(
|
|
66
|
-
<UiShell
|
|
67
|
-
appComponent={<div />}
|
|
68
|
-
appContainerElement={appContainerElement}
|
|
69
|
-
appRootElement={document.createElement("div")}
|
|
70
|
-
onSubscriptionCreated={() => {}}
|
|
71
|
-
optionalComponents={
|
|
72
|
-
Object.fromEntries(
|
|
73
|
-
optionalComponentTestIds.map((testId) => [
|
|
74
|
-
testId,
|
|
75
|
-
<div data-testid={testId} />,
|
|
76
|
-
]),
|
|
77
|
-
) as Record<keyof UiShellProps["optionalComponents"], ReactElement>
|
|
78
|
-
}
|
|
79
|
-
stylesRootElement={document.createElement("div")}
|
|
80
|
-
subscribeToPropChanges={subscribeToPropChanges}
|
|
81
|
-
/>,
|
|
82
|
-
);
|
|
83
|
-
|
|
84
|
-
await waitFor(() => {
|
|
85
|
-
optionalComponentTestIds.forEach((testId) => {
|
|
86
|
-
expect(within(container).getByTestId(testId)).toBeVisible();
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
test("renders optionally-available `componentSlots`", () => {
|
|
92
|
-
const appContainerElement = document.createElement("div");
|
|
93
|
-
document.body.append(appContainerElement);
|
|
94
|
-
|
|
95
|
-
const optionalComponentTestIds: Array<
|
|
96
|
-
keyof Required<UiShellProps>["optionalComponents"]
|
|
97
|
-
> = ["sideNavFooter"];
|
|
98
|
-
|
|
99
|
-
// This is the subscription we give the component, and then once subscribed, we're going to immediately call it with new props.
|
|
100
|
-
const subscribeToPropChanges: UiShellProps["subscribeToPropChanges"] = (
|
|
101
|
-
subscriber,
|
|
102
|
-
) => {
|
|
103
|
-
subscriber({
|
|
104
|
-
...defaultComponentProps,
|
|
105
|
-
sideNavProps: {
|
|
106
|
-
appName: "",
|
|
107
|
-
hasCustomFooter: true,
|
|
108
|
-
sideNavItems: [],
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
return () => {};
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
const { container } = render(
|
|
116
|
-
<UiShell
|
|
117
|
-
appComponent={<div />}
|
|
118
|
-
appContainerElement={appContainerElement}
|
|
119
|
-
appRootElement={document.createElement("div")}
|
|
120
|
-
onSubscriptionCreated={() => {}}
|
|
121
|
-
optionalComponents={
|
|
122
|
-
Object.fromEntries(
|
|
123
|
-
optionalComponentTestIds.map((testId) => [
|
|
124
|
-
testId,
|
|
125
|
-
<div data-testid={testId} />,
|
|
126
|
-
]),
|
|
127
|
-
) as Record<keyof UiShellProps["optionalComponents"], ReactElement>
|
|
128
|
-
}
|
|
129
|
-
stylesRootElement={document.createElement("div")}
|
|
130
|
-
subscribeToPropChanges={subscribeToPropChanges}
|
|
131
|
-
/>,
|
|
132
|
-
);
|
|
133
|
-
|
|
134
|
-
optionalComponentTestIds.forEach((testId) => {
|
|
135
|
-
expect(within(container).getByTestId(testId)).toBeVisible();
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
test("unsubscribes from prop changes when unmounted", () => {
|
|
140
|
-
const rootElement = document.createElement("div");
|
|
141
|
-
|
|
142
|
-
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
143
|
-
document.body.append(rootElement);
|
|
144
|
-
|
|
145
|
-
const appContainerElement = document.createElement("div");
|
|
146
|
-
document.body.append(appContainerElement);
|
|
147
|
-
|
|
148
|
-
const unsubscribeFromPropChanges = vi.fn();
|
|
149
|
-
const subscribeToPropChanges = vi.fn(() => unsubscribeFromPropChanges);
|
|
150
|
-
|
|
151
|
-
const { unmount } = render(
|
|
152
|
-
<UiShell
|
|
153
|
-
appComponent={<div />}
|
|
154
|
-
appContainerElement={appContainerElement}
|
|
155
|
-
appRootElement={document.createElement("div")}
|
|
156
|
-
onSubscriptionCreated={() => {}}
|
|
157
|
-
stylesRootElement={document.createElement("div")}
|
|
158
|
-
subscribeToPropChanges={subscribeToPropChanges}
|
|
159
|
-
/>,
|
|
160
|
-
);
|
|
161
|
-
|
|
162
|
-
unmount();
|
|
163
|
-
|
|
164
|
-
expect(subscribeToPropChanges).toHaveBeenCalledTimes(1);
|
|
165
|
-
expect(unsubscribeFromPropChanges).toHaveBeenCalledTimes(1);
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
test("allows changing props through the subscription", () => {
|
|
169
|
-
const rootElement = document.createElement("div");
|
|
170
|
-
const sideNavItemText = "Add New Folder";
|
|
171
|
-
|
|
172
|
-
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
173
|
-
document.body.append(rootElement);
|
|
174
|
-
|
|
175
|
-
const appContainerElement = document.createElement("div");
|
|
176
|
-
document.body.append(appContainerElement);
|
|
177
|
-
|
|
178
|
-
// This is the subscription we give the component, and then once subscribed, we're going to immediately call it with new props.
|
|
179
|
-
const subscribeToPropChanges: UiShellProps["subscribeToPropChanges"] = (
|
|
180
|
-
subscriber,
|
|
181
|
-
) => {
|
|
182
|
-
subscriber({
|
|
183
|
-
...defaultComponentProps,
|
|
184
|
-
sideNavProps: {
|
|
185
|
-
appName: "",
|
|
186
|
-
sideNavItems: [
|
|
187
|
-
{
|
|
188
|
-
id: "AddNewFolder",
|
|
189
|
-
label: sideNavItemText,
|
|
190
|
-
onClick: () => {},
|
|
191
|
-
},
|
|
192
|
-
],
|
|
193
|
-
},
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
return () => {};
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
const { container } = render(
|
|
200
|
-
<UiShell
|
|
201
|
-
appComponent={<div />}
|
|
202
|
-
appContainerElement={appContainerElement}
|
|
203
|
-
appRootElement={document.createElement("div")}
|
|
204
|
-
onSubscriptionCreated={() => {}}
|
|
205
|
-
stylesRootElement={document.createElement("div")}
|
|
206
|
-
subscribeToPropChanges={subscribeToPropChanges}
|
|
207
|
-
/>,
|
|
208
|
-
);
|
|
209
|
-
|
|
210
|
-
expect(container).toHaveTextContent(sideNavItemText);
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
test("uses default props if no value passed to subscription", () => {
|
|
214
|
-
const rootElement = document.createElement("div");
|
|
215
|
-
|
|
216
|
-
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
217
|
-
document.body.append(rootElement);
|
|
218
|
-
|
|
219
|
-
const appContainerElement = document.createElement("div");
|
|
220
|
-
document.body.append(appContainerElement);
|
|
221
|
-
|
|
222
|
-
// This is the subscription we give the component, and then once subscribed, we're going to immediately call it with new props.
|
|
223
|
-
const subscribeToPropChanges: UiShellProps["subscribeToPropChanges"] = (
|
|
224
|
-
subscriber,
|
|
225
|
-
) => {
|
|
226
|
-
// @ts-expect-error This unit test is checking what happens when we don't pass a value.
|
|
227
|
-
subscriber();
|
|
228
|
-
|
|
229
|
-
return () => {};
|
|
230
|
-
};
|
|
231
|
-
|
|
232
|
-
const { container } = render(
|
|
233
|
-
<UiShell
|
|
234
|
-
appComponent={<div />}
|
|
235
|
-
appContainerElement={appContainerElement}
|
|
236
|
-
appRootElement={document.createElement("div")}
|
|
237
|
-
onSubscriptionCreated={() => {}}
|
|
238
|
-
stylesRootElement={document.createElement("div")}
|
|
239
|
-
subscribeToPropChanges={subscribeToPropChanges}
|
|
240
|
-
/>,
|
|
241
|
-
);
|
|
242
|
-
|
|
243
|
-
expect(container).toBeVisible();
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
test("has previous state in prop change subscription", () => {
|
|
247
|
-
const rootElement = document.createElement("div");
|
|
248
|
-
|
|
249
|
-
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
250
|
-
document.body.append(rootElement);
|
|
251
|
-
|
|
252
|
-
const appContainerElement = document.createElement("div");
|
|
253
|
-
document.body.append(appContainerElement);
|
|
254
|
-
|
|
255
|
-
// This passed to React's state setter. The return value here prevents a test error. It wouldn't be required otherwise as this test could care less what's returned.
|
|
256
|
-
const stateUpdater = vi.fn(() => defaultComponentProps);
|
|
257
|
-
|
|
258
|
-
// This is the subscription we give the component, and then once subscribed, we're going to immediately call it to see if it passes us the previous state.
|
|
259
|
-
const subscribeToPropChanges: UiShellProps["subscribeToPropChanges"] = (
|
|
260
|
-
subscriber,
|
|
261
|
-
) => {
|
|
262
|
-
subscriber(stateUpdater);
|
|
263
|
-
|
|
264
|
-
return () => {};
|
|
265
|
-
};
|
|
266
|
-
|
|
267
|
-
render(
|
|
268
|
-
<UiShell
|
|
269
|
-
appComponent={<div />}
|
|
270
|
-
appContainerElement={appContainerElement}
|
|
271
|
-
appRootElement={document.createElement("div")}
|
|
272
|
-
onSubscriptionCreated={() => {}}
|
|
273
|
-
stylesRootElement={document.createElement("div")}
|
|
274
|
-
subscribeToPropChanges={subscribeToPropChanges}
|
|
275
|
-
/>,
|
|
276
|
-
);
|
|
277
|
-
|
|
278
|
-
expect(stateUpdater).toHaveBeenCalledWith(defaultComponentProps);
|
|
279
|
-
expect(stateUpdater).toHaveBeenCalledTimes(1);
|
|
280
|
-
});
|
|
281
|
-
|
|
282
|
-
test("places expected padding on appContainerElement", async () => {
|
|
283
|
-
const rootElement = document.createElement("div");
|
|
284
|
-
|
|
285
|
-
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
286
|
-
document.body.append(rootElement);
|
|
287
|
-
|
|
288
|
-
const appContainerElement = document.createElement("div");
|
|
289
|
-
document.body.append(appContainerElement);
|
|
290
|
-
|
|
291
|
-
const stylesRootElement = document.createElement("div");
|
|
292
|
-
|
|
293
|
-
render(
|
|
294
|
-
<UiShell
|
|
295
|
-
appComponent={<div />}
|
|
296
|
-
appContainerElement={appContainerElement}
|
|
297
|
-
appContainerScrollingMode="both"
|
|
298
|
-
appRootElement={document.createElement("div")}
|
|
299
|
-
onSubscriptionCreated={() => {}}
|
|
300
|
-
stylesRootElement={stylesRootElement}
|
|
301
|
-
subscribeToPropChanges={() => () => {}}
|
|
302
|
-
/>,
|
|
303
|
-
);
|
|
304
|
-
|
|
305
|
-
await waitFor(() => {
|
|
306
|
-
expect(appContainerElement.style.getPropertyValue("position")).toEqual(
|
|
307
|
-
"absolute",
|
|
308
|
-
);
|
|
309
|
-
expect(appContainerElement.style.getPropertyValue("overflow-x")).toEqual(
|
|
310
|
-
"auto",
|
|
311
|
-
);
|
|
312
|
-
expect(appContainerElement.style.getPropertyValue("overflow-y")).toEqual(
|
|
313
|
-
"auto",
|
|
314
|
-
);
|
|
315
|
-
expect(
|
|
316
|
-
appContainerElement.style.getPropertyValue("padding-inline"),
|
|
317
|
-
).toEqual("3.42857143rem");
|
|
318
|
-
expect(
|
|
319
|
-
appContainerElement.style.getPropertyValue("padding-block"),
|
|
320
|
-
).toEqual("1.71428571rem");
|
|
321
|
-
});
|
|
322
|
-
});
|
|
323
|
-
|
|
324
|
-
test("places expected padding on appContainerElement", async () => {
|
|
325
|
-
const rootElement = document.createElement("div");
|
|
326
|
-
|
|
327
|
-
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
328
|
-
document.body.append(rootElement);
|
|
329
|
-
|
|
330
|
-
const appContainerElement = document.createElement("div");
|
|
331
|
-
document.body.append(appContainerElement);
|
|
332
|
-
|
|
333
|
-
const stylesRootElement = document.createElement("div");
|
|
334
|
-
|
|
335
|
-
render(
|
|
336
|
-
<UiShell
|
|
337
|
-
appComponent={<div />}
|
|
338
|
-
appContainerElement={appContainerElement}
|
|
339
|
-
appContainerScrollingMode="none"
|
|
340
|
-
appRootElement={document.createElement("div")}
|
|
341
|
-
hasStandardAppContentPadding={false}
|
|
342
|
-
onSubscriptionCreated={() => {}}
|
|
343
|
-
stylesRootElement={stylesRootElement}
|
|
344
|
-
subscribeToPropChanges={() => () => {}}
|
|
345
|
-
/>,
|
|
346
|
-
);
|
|
347
|
-
|
|
348
|
-
await waitFor(() => {
|
|
349
|
-
expect(appContainerElement.style.getPropertyValue("position")).toEqual(
|
|
350
|
-
"absolute",
|
|
351
|
-
);
|
|
352
|
-
expect(appContainerElement.style.getPropertyValue("overflow-x")).toEqual(
|
|
353
|
-
"hidden",
|
|
354
|
-
);
|
|
355
|
-
expect(appContainerElement.style.getPropertyValue("overflow-y")).toEqual(
|
|
356
|
-
"hidden",
|
|
357
|
-
);
|
|
358
|
-
expect(
|
|
359
|
-
appContainerElement.style.getPropertyValue("padding-inline"),
|
|
360
|
-
).toEqual("");
|
|
361
|
-
expect(
|
|
362
|
-
appContainerElement.style.getPropertyValue("padding-block"),
|
|
363
|
-
).toEqual("");
|
|
364
|
-
});
|
|
365
|
-
});
|
|
366
|
-
});
|