@okta/odyssey-react-mui 1.24.1 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/dist/Autocomplete.js +30 -191
- package/dist/Autocomplete.js.map +1 -1
- package/dist/Box.js +2 -0
- package/dist/Box.js.map +1 -1
- package/dist/Card.js +1 -0
- package/dist/Card.js.map +1 -1
- package/dist/OdysseyDesignTokensContext.js +3 -2
- package/dist/OdysseyDesignTokensContext.js.map +1 -1
- package/dist/OdysseyProvider.js +22 -40
- package/dist/OdysseyProvider.js.map +1 -1
- package/dist/OdysseyThemeProvider.js +33 -12
- package/dist/OdysseyThemeProvider.js.map +1 -1
- package/dist/OdysseyTranslationProvider.types.js +1 -1
- package/dist/OdysseyTranslationProvider.types.js.map +1 -1
- package/dist/Pagination/Pagination.js +46 -14
- package/dist/Pagination/Pagination.js.map +1 -1
- package/dist/Select.js +10 -2
- package/dist/Select.js.map +1 -1
- package/dist/Surface.js +4 -1
- package/dist/Surface.js.map +1 -1
- package/dist/Tag.js +97 -47
- package/dist/Tag.js.map +1 -1
- package/dist/i18n.js +2 -0
- package/dist/i18n.js.map +1 -1
- package/dist/index.js +6 -7
- package/dist/index.js.map +1 -1
- package/dist/index.scss +1 -1
- package/dist/labs/AppTile.js +137 -39
- package/dist/labs/AppTile.js.map +1 -1
- package/dist/labs/DataView/CardLayoutContent.js +7 -8
- package/dist/labs/DataView/CardLayoutContent.js.map +1 -1
- package/dist/labs/DataView/DataCard.js +96 -43
- package/dist/labs/DataView/DataCard.js.map +1 -1
- package/dist/labs/DataView/TableLayoutContent.js +3 -2
- package/dist/labs/DataView/TableLayoutContent.js.map +1 -1
- package/dist/labs/DataView/componentTypes.js.map +1 -1
- package/dist/labs/DataView/index.js.map +1 -1
- package/dist/labs/OdysseyPickers/ComposablePicker.js +113 -0
- package/dist/labs/OdysseyPickers/ComposablePicker.js.map +1 -0
- package/dist/labs/OdysseyPickers/Picker.js +261 -0
- package/dist/labs/OdysseyPickers/Picker.js.map +1 -0
- package/dist/labs/OdysseyPickers/PickerVirtualizationListBox.js +132 -0
- package/dist/labs/OdysseyPickers/PickerVirtualizationListBox.js.map +1 -0
- package/dist/labs/OdysseyPickers/PickerWithOptionAdornment.js +291 -0
- package/dist/labs/OdysseyPickers/PickerWithOptionAdornment.js.map +1 -0
- package/dist/{src/createShadowDomElements.d.ts → labs/OdysseyPickers/index.js} +4 -7
- package/dist/labs/OdysseyPickers/index.js.map +1 -0
- package/dist/labs/PageTemplate.js +14 -10
- package/dist/labs/PageTemplate.js.map +1 -1
- package/dist/labs/SideNav/CollapseIcon.js +11 -25
- package/dist/labs/SideNav/CollapseIcon.js.map +1 -1
- package/dist/labs/SideNav/HandleIcon.js +32 -0
- package/dist/labs/SideNav/HandleIcon.js.map +1 -0
- package/dist/labs/{NavAccordion.js → SideNav/NavAccordion.js} +35 -6
- package/dist/labs/SideNav/NavAccordion.js.map +1 -0
- package/dist/labs/SideNav/OktaAura.js +32 -0
- package/dist/labs/SideNav/OktaAura.js.map +1 -0
- package/dist/labs/SideNav/OktaLogo.js +6 -9
- package/dist/labs/SideNav/OktaLogo.js.map +1 -1
- package/dist/labs/SideNav/SideNav.js +239 -169
- package/dist/labs/SideNav/SideNav.js.map +1 -1
- package/dist/labs/SideNav/SideNavFooterContent.js +32 -18
- package/dist/labs/SideNav/SideNavFooterContent.js.map +1 -1
- package/dist/labs/SideNav/SideNavHeader.js +48 -37
- package/dist/labs/SideNav/SideNavHeader.js.map +1 -1
- package/dist/labs/SideNav/SideNavItemContent.js +100 -58
- package/dist/labs/SideNav/SideNavItemContent.js.map +1 -1
- package/dist/labs/SideNav/SideNavItemContentContext.js +19 -0
- package/dist/labs/SideNav/SideNavItemContentContext.js.map +1 -0
- package/dist/labs/SideNav/SideNavItemLinkContent.js +14 -13
- package/dist/labs/SideNav/SideNavItemLinkContent.js.map +1 -1
- package/dist/labs/SideNav/SideNavLogo.js +42 -0
- package/dist/labs/SideNav/SideNavLogo.js.map +1 -0
- package/dist/labs/SideNav/SideNavToggleButton.js +170 -0
- package/dist/labs/SideNav/SideNavToggleButton.js.map +1 -0
- package/dist/labs/SideNav/types.js.map +1 -1
- package/dist/labs/TopNav/TopNav.js +65 -0
- package/dist/labs/TopNav/TopNav.js.map +1 -0
- package/dist/labs/TopNav/TopNavLinksList.js +38 -0
- package/dist/labs/TopNav/TopNavLinksList.js.map +1 -0
- package/dist/labs/TopNav/TopNavListItem.js +132 -0
- package/dist/labs/TopNav/TopNavListItem.js.map +1 -0
- package/dist/labs/TopNav/UserProfile.js +65 -0
- package/dist/labs/TopNav/UserProfile.js.map +1 -0
- package/dist/labs/TopNav/index.js +14 -0
- package/dist/labs/TopNav/index.js.map +1 -0
- package/dist/labs/UiShell/UiShell.js +68 -0
- package/dist/labs/UiShell/UiShell.js.map +1 -0
- package/dist/labs/UiShell/UiShellContent.js +114 -0
- package/dist/labs/UiShell/UiShellContent.js.map +1 -0
- package/dist/labs/UiShell/bufferLatest.js +37 -0
- package/dist/labs/UiShell/bufferLatest.js.map +1 -0
- package/dist/labs/UiShell/createMessageBus.js +30 -0
- package/dist/labs/UiShell/createMessageBus.js.map +1 -0
- package/dist/labs/UiShell/createStore.js +24 -0
- package/dist/labs/UiShell/createStore.js.map +1 -0
- package/dist/labs/UiShell/index.js +15 -0
- package/dist/labs/UiShell/index.js.map +1 -0
- package/dist/labs/UiShell/renderUiShell.js +78 -0
- package/dist/labs/UiShell/renderUiShell.js.map +1 -0
- package/dist/labs/UiShell/useHasUiShell.js +22 -0
- package/dist/labs/UiShell/useHasUiShell.js.map +1 -0
- package/dist/labs/UiShell/useScrollState.js +41 -0
- package/dist/labs/UiShell/useScrollState.js.map +1 -0
- package/dist/labs/index.js +5 -3
- package/dist/labs/index.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui.js +7 -1
- package/dist/properties/ts/odyssey-react-mui.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_cs.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_cs.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_da.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_da.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_de.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_de.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_el.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_el.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_es.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_es.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_fi.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_fi.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_fr.js +5 -3
- package/dist/properties/ts/odyssey-react-mui_fr.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ht.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_ht.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_hu.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_hu.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_id.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_id.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_it.js +4 -2
- package/dist/properties/ts/odyssey-react-mui_it.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ja.js +9 -7
- package/dist/properties/ts/odyssey-react-mui_ja.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ko.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_ko.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ms.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_ms.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_nb.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_nb.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_nl_NL.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_nl_NL.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_pl.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_pl.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_pt_BR.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_pt_BR.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ro.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_ro.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_ru.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_ru.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_sv.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_sv.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_th.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_th.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_tr.js +4 -2
- package/dist/properties/ts/odyssey-react-mui_tr.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_uk.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_uk.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_vi.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_vi.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_zh_CN.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_zh_CN.js.map +1 -1
- package/dist/properties/ts/odyssey-react-mui_zh_TW.js +3 -1
- package/dist/properties/ts/odyssey-react-mui_zh_TW.js.map +1 -1
- package/dist/src/Autocomplete.d.ts +21 -22
- package/dist/src/Autocomplete.d.ts.map +1 -1
- package/dist/src/Box.d.ts +3 -1
- package/dist/src/Box.d.ts.map +1 -1
- package/dist/src/Card.d.ts.map +1 -1
- package/dist/src/OdysseyDesignTokensContext.d.ts +5 -4
- package/dist/src/OdysseyDesignTokensContext.d.ts.map +1 -1
- package/dist/src/OdysseyProvider.d.ts +1 -3
- package/dist/src/OdysseyProvider.d.ts.map +1 -1
- package/dist/src/OdysseyThemeProvider.d.ts +10 -4
- package/dist/src/OdysseyThemeProvider.d.ts.map +1 -1
- package/dist/src/OdysseyTranslationProvider.d.ts +1 -1
- package/dist/src/OdysseyTranslationProvider.d.ts.map +1 -1
- package/dist/src/OdysseyTranslationProvider.types.d.ts +1 -1
- package/dist/src/OdysseyTranslationProvider.types.d.ts.map +1 -1
- package/dist/src/Pagination/Pagination.d.ts +21 -7
- package/dist/src/Pagination/Pagination.d.ts.map +1 -1
- package/dist/src/Select.d.ts.map +1 -1
- package/dist/src/Surface.d.ts.map +1 -1
- package/dist/src/Tag.d.ts +5 -2
- package/dist/src/Tag.d.ts.map +1 -1
- package/dist/src/i18n.d.ts.map +1 -1
- package/dist/src/index.d.ts +6 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/labs/AppTile.d.ts +3 -1
- package/dist/src/labs/AppTile.d.ts.map +1 -1
- package/dist/src/labs/DataView/CardLayoutContent.d.ts.map +1 -1
- package/dist/src/labs/DataView/DataCard.d.ts +9 -3
- package/dist/src/labs/DataView/DataCard.d.ts.map +1 -1
- package/dist/src/labs/DataView/TableLayoutContent.d.ts.map +1 -1
- package/dist/src/labs/DataView/componentTypes.d.ts +1 -1
- package/dist/src/labs/DataView/componentTypes.d.ts.map +1 -1
- package/dist/src/labs/DataView/index.d.ts +1 -0
- package/dist/src/labs/DataView/index.d.ts.map +1 -1
- package/dist/src/labs/OdysseyPickers/ComposablePicker.d.ts +33 -0
- package/dist/src/labs/OdysseyPickers/ComposablePicker.d.ts.map +1 -0
- package/dist/src/labs/OdysseyPickers/Picker.d.ts +98 -0
- package/dist/src/labs/OdysseyPickers/Picker.d.ts.map +1 -0
- package/dist/src/labs/OdysseyPickers/PickerVirtualizationListBox.d.ts +17 -0
- package/dist/src/labs/OdysseyPickers/PickerVirtualizationListBox.d.ts.map +1 -0
- package/dist/src/labs/OdysseyPickers/PickerWithOptionAdornment.d.ts +26 -0
- package/dist/src/labs/OdysseyPickers/PickerWithOptionAdornment.d.ts.map +1 -0
- package/dist/src/labs/OdysseyPickers/index.d.ts +15 -0
- package/dist/src/labs/OdysseyPickers/index.d.ts.map +1 -0
- package/dist/src/labs/PageTemplate.d.ts +1 -1
- package/dist/src/labs/PageTemplate.d.ts.map +1 -1
- package/dist/src/labs/SideNav/CollapseIcon.d.ts +1 -4
- package/dist/src/labs/SideNav/CollapseIcon.d.ts.map +1 -1
- package/dist/src/labs/SideNav/HandleIcon.d.ts +14 -0
- package/dist/src/labs/SideNav/HandleIcon.d.ts.map +1 -0
- package/dist/src/labs/{NavAccordion.d.ts → SideNav/NavAccordion.d.ts} +6 -2
- package/dist/src/labs/SideNav/NavAccordion.d.ts.map +1 -0
- package/dist/src/labs/SideNav/OktaAura.d.ts +14 -0
- package/dist/src/labs/SideNav/OktaAura.d.ts.map +1 -0
- package/dist/src/labs/SideNav/OktaLogo.d.ts.map +1 -1
- package/dist/src/labs/SideNav/SideNav.d.ts +2 -1
- package/dist/src/labs/SideNav/SideNav.d.ts.map +1 -1
- package/dist/src/labs/SideNav/SideNavFooterContent.d.ts +1 -1
- package/dist/src/labs/SideNav/SideNavFooterContent.d.ts.map +1 -1
- package/dist/src/labs/SideNav/SideNavHeader.d.ts +12 -3
- package/dist/src/labs/SideNav/SideNavHeader.d.ts.map +1 -1
- package/dist/src/labs/SideNav/SideNavItemContent.d.ts +2 -3
- package/dist/src/labs/SideNav/SideNavItemContent.d.ts.map +1 -1
- package/dist/src/labs/SideNav/SideNavItemContentContext.d.ts +18 -0
- package/dist/src/labs/SideNav/SideNavItemContentContext.d.ts.map +1 -0
- package/dist/src/labs/SideNav/SideNavItemLinkContent.d.ts +1 -1
- package/dist/src/labs/SideNav/SideNavItemLinkContent.d.ts.map +1 -1
- package/dist/src/labs/SideNav/SideNavLogo.d.ts +15 -0
- package/dist/src/labs/SideNav/SideNavLogo.d.ts.map +1 -0
- package/dist/src/labs/SideNav/SideNavToggleButton.d.ts +38 -0
- package/dist/src/labs/SideNav/SideNavToggleButton.d.ts.map +1 -0
- package/dist/src/labs/SideNav/types.d.ts +67 -33
- package/dist/src/labs/SideNav/types.d.ts.map +1 -1
- package/dist/src/labs/TopNav/TopNav.d.ts +31 -0
- package/dist/src/labs/TopNav/TopNav.d.ts.map +1 -0
- package/dist/src/labs/TopNav/TopNavLinksList.d.ts +44 -0
- package/dist/src/labs/TopNav/TopNavLinksList.d.ts.map +1 -0
- package/dist/src/labs/TopNav/TopNavListItem.d.ts +42 -0
- package/dist/src/labs/TopNav/TopNavListItem.d.ts.map +1 -0
- package/dist/src/labs/TopNav/UserProfile.d.ts +29 -0
- package/dist/src/labs/TopNav/UserProfile.d.ts.map +1 -0
- package/dist/src/labs/TopNav/index.d.ts +14 -0
- package/dist/src/labs/TopNav/index.d.ts.map +1 -0
- package/dist/src/labs/UiShell/UiShell.d.ts +33 -0
- package/dist/src/labs/UiShell/UiShell.d.ts.map +1 -0
- package/dist/src/labs/UiShell/UiShellContent.d.ts +47 -0
- package/dist/src/labs/UiShell/UiShellContent.d.ts.map +1 -0
- package/dist/src/labs/UiShell/bufferLatest.d.ts +31 -0
- package/dist/src/labs/UiShell/bufferLatest.d.ts.map +1 -0
- package/dist/src/labs/UiShell/createMessageBus.d.ts +24 -0
- package/dist/src/labs/UiShell/createMessageBus.d.ts.map +1 -0
- package/dist/src/labs/UiShell/createStore.d.ts +22 -0
- package/dist/src/labs/UiShell/createStore.d.ts.map +1 -0
- package/dist/src/labs/UiShell/index.d.ts +16 -0
- package/dist/src/labs/UiShell/index.d.ts.map +1 -0
- package/dist/src/labs/UiShell/renderUiShell.d.ts +45 -0
- package/dist/src/labs/UiShell/renderUiShell.d.ts.map +1 -0
- package/dist/src/labs/UiShell/useHasUiShell.d.ts +13 -0
- package/dist/src/labs/UiShell/useHasUiShell.d.ts.map +1 -0
- package/dist/src/labs/UiShell/useScrollState.d.ts +16 -0
- package/dist/src/labs/UiShell/useScrollState.d.ts.map +1 -0
- package/dist/src/labs/index.d.ts +6 -2
- package/dist/src/labs/index.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui.d.ts +6 -0
- package/dist/src/properties/ts/odyssey-react-mui.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_da.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_da.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_de.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_de.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_el.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_el.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_es.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_es.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ht.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_ht.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_id.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_id.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_it.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_it.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_th.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_th.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts.map +1 -1
- package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts +2 -0
- package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts.map +1 -1
- package/dist/src/test-selectors/querySelector.d.ts +2 -2
- package/dist/src/theme/components.d.ts +3 -1
- package/dist/src/theme/components.d.ts.map +1 -1
- package/dist/src/theme/createOdysseyMuiTheme.d.ts +3 -1
- package/dist/src/theme/createOdysseyMuiTheme.d.ts.map +1 -1
- package/dist/src/useAutocomplete.d.ts +29 -0
- package/dist/src/useAutocomplete.d.ts.map +1 -0
- package/dist/src/useContrastMode.d.ts +46 -0
- package/dist/src/useContrastMode.d.ts.map +1 -0
- package/dist/src/web-component/index.d.ts +14 -0
- package/dist/src/web-component/index.d.ts.map +1 -0
- package/dist/src/web-component/renderReactInWebComponent.d.ts +76 -0
- package/dist/src/web-component/renderReactInWebComponent.d.ts.map +1 -0
- package/dist/src/web-component/shadow-dom.d.ts +23 -0
- package/dist/src/web-component/shadow-dom.d.ts.map +1 -0
- package/dist/test-selectors/querySelector.js.map +1 -1
- package/dist/theme/components.js +41 -32
- package/dist/theme/components.js.map +1 -1
- package/dist/theme/createOdysseyMuiTheme.js +3 -0
- package/dist/theme/createOdysseyMuiTheme.js.map +1 -1
- package/dist/tsconfig.production.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/useAutocomplete.js +105 -0
- package/dist/useAutocomplete.js.map +1 -0
- package/dist/useContrastMode.js +93 -0
- package/dist/useContrastMode.js.map +1 -0
- package/dist/web-component/index.js +14 -0
- package/dist/web-component/index.js.map +1 -0
- package/dist/web-component/renderReactInWebComponent.js +72 -0
- package/dist/web-component/renderReactInWebComponent.js.map +1 -0
- package/dist/{createShadowDomElements.js → web-component/shadow-dom.js} +10 -12
- package/dist/web-component/shadow-dom.js.map +1 -0
- package/jest.config.cjs +21 -2
- package/jest.setup.js +0 -3
- package/package.json +4 -3
- package/src/Autocomplete.tsx +40 -330
- package/src/Box.tsx +4 -2
- package/src/Card.tsx +1 -0
- package/src/OdysseyDesignTokensContext.tsx +6 -3
- package/src/OdysseyProvider.tsx +29 -56
- package/src/OdysseyThemeProvider.test.tsx +209 -0
- package/src/OdysseyThemeProvider.tsx +43 -17
- package/src/OdysseyTranslationProvider.types.ts +1 -0
- package/src/Pagination/Pagination.test.tsx +305 -0
- package/src/Pagination/Pagination.tsx +86 -38
- package/src/Select.tsx +12 -3
- package/src/Surface.tsx +2 -1
- package/src/Tag.tsx +102 -41
- package/src/createUniqueAlphabeticalId.test.ts +1 -1
- package/src/createUniqueId.test.ts +1 -1
- package/src/i18n.ts +2 -0
- package/src/index.ts +6 -7
- package/src/labs/AppTile.tsx +169 -40
- package/src/labs/DataView/CardLayoutContent.tsx +12 -14
- package/src/labs/DataView/DataCard.tsx +137 -69
- package/src/labs/DataView/DataView.test.tsx +6 -4
- package/src/labs/DataView/TableLayoutContent.tsx +6 -2
- package/src/labs/DataView/componentTypes.ts +1 -1
- package/src/labs/DataView/index.tsx +1 -0
- package/src/labs/OdysseyPickers/ComposablePicker.test.tsx +29 -0
- package/src/labs/OdysseyPickers/ComposablePicker.tsx +188 -0
- package/src/labs/OdysseyPickers/Picker.tsx +381 -0
- package/src/labs/OdysseyPickers/PickerVirtualizationListBox.tsx +191 -0
- package/src/labs/OdysseyPickers/PickerWithOptionAdornment.tsx +429 -0
- package/src/labs/OdysseyPickers/index.ts +15 -0
- package/src/labs/PageTemplate.tsx +18 -10
- package/src/labs/SideNav/CollapseIcon.tsx +14 -28
- package/src/labs/SideNav/HandleIcon.tsx +35 -0
- package/src/labs/{NavAccordion.tsx → SideNav/NavAccordion.tsx} +48 -8
- package/src/labs/SideNav/OktaAura.tsx +35 -0
- package/src/labs/SideNav/OktaLogo.tsx +5 -10
- package/src/labs/SideNav/SideNav.test.tsx +323 -0
- package/src/labs/SideNav/SideNav.tsx +291 -204
- package/src/labs/SideNav/SideNavFooterContent.tsx +36 -28
- package/src/labs/SideNav/SideNavHeader.tsx +62 -45
- package/src/labs/SideNav/SideNavItemContent.tsx +142 -62
- package/src/labs/SideNav/SideNavItemContentContext.tsx +27 -0
- package/src/labs/SideNav/SideNavItemLinkContent.tsx +17 -14
- package/src/labs/SideNav/SideNavLogo.tsx +41 -0
- package/src/labs/SideNav/SideNavToggleButton.tsx +249 -0
- package/src/labs/SideNav/types.ts +72 -33
- package/src/labs/TopNav/TopNav.tsx +95 -0
- package/src/labs/TopNav/TopNavLinksList.tsx +68 -0
- package/src/labs/TopNav/TopNavListItem.tsx +209 -0
- package/src/labs/TopNav/UserProfile.tsx +79 -0
- package/src/labs/TopNav/index.ts +14 -0
- package/src/labs/UiShell/UiShell.test.tsx +284 -0
- package/src/labs/UiShell/UiShell.tsx +109 -0
- package/src/labs/UiShell/UiShellContent.tsx +170 -0
- package/src/labs/UiShell/bufferLatest.test.ts +79 -0
- package/src/labs/UiShell/bufferLatest.ts +64 -0
- package/src/labs/UiShell/createMessageBus.test.ts +115 -0
- package/src/labs/UiShell/createMessageBus.ts +53 -0
- package/src/labs/UiShell/createStore.test.ts +103 -0
- package/src/labs/UiShell/createStore.ts +37 -0
- package/src/labs/UiShell/index.ts +17 -0
- package/src/labs/UiShell/renderUiShell.test.tsx +197 -0
- package/src/labs/UiShell/renderUiShell.tsx +132 -0
- package/src/labs/UiShell/useHasUiShell.ts +25 -0
- package/src/labs/UiShell/useScrollState.ts +56 -0
- package/src/labs/index.ts +10 -3
- package/src/properties/odyssey-react-mui.properties +7 -0
- package/src/properties/translations/odyssey-react-mui_cs.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_da.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_de.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_el.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_es.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_fi.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_fr.properties +4 -3
- package/src/properties/translations/odyssey-react-mui_ht.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_hu.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_id.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_it.properties +3 -2
- package/src/properties/translations/odyssey-react-mui_ja.properties +8 -7
- package/src/properties/translations/odyssey-react-mui_ko.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_ms.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_nb.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_nl_NL.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_pl.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_pt_BR.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_ro.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_ru.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_sv.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_th.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_tr.properties +3 -2
- package/src/properties/translations/odyssey-react-mui_uk.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_vi.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_zh_CN.properties +2 -1
- package/src/properties/translations/odyssey-react-mui_zh_TW.properties +2 -1
- package/src/properties/ts/odyssey-react-mui.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_cs.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_da.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_de.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_el.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_es.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_fi.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_fr.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ht.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_hu.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_id.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_it.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ja.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ko.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ms.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_nb.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_nl_NL.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_pl.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_pt_BR.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ro.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_ru.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_sv.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_th.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_tr.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_uk.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_vi.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_zh_CN.ts +1 -1
- package/src/properties/ts/odyssey-react-mui_zh_TW.ts +1 -1
- package/src/test-selectors/querySelector.ts +1 -1
- package/src/theme/components.tsx +55 -31
- package/src/theme/createOdysseyMuiTheme.ts +4 -0
- package/src/theme/useContrastMode.test.tsx +503 -0
- package/src/useAutocomplete.tsx +183 -0
- package/src/useContrastMode.tsx +149 -0
- package/src/web-component/index.ts +14 -0
- package/src/web-component/renderReactInWebComponent.test.tsx +156 -0
- package/src/web-component/renderReactInWebComponent.ts +153 -0
- package/src/web-component/shadow-dom.test.ts +24 -0
- package/src/{createShadowDomElements.ts → web-component/shadow-dom.ts} +15 -14
- package/dist/ContrastModeProvider.js +0 -86
- package/dist/ContrastModeProvider.js.map +0 -1
- package/dist/createShadowDomElements.js.map +0 -1
- package/dist/labs/NavAccordion.js.map +0 -1
- package/dist/labs/TopNav.js +0 -281
- package/dist/labs/TopNav.js.map +0 -1
- package/dist/src/ContrastModeProvider.d.ts +0 -34
- package/dist/src/ContrastModeProvider.d.ts.map +0 -1
- package/dist/src/createShadowDomElements.d.ts.map +0 -1
- package/dist/src/labs/NavAccordion.d.ts.map +0 -1
- package/dist/src/labs/TopNav.d.ts +0 -78
- package/dist/src/labs/TopNav.d.ts.map +0 -1
- package/src/ContrastModeProvider.tsx +0 -131
- package/src/labs/TopNav.tsx +0 -396
|
@@ -0,0 +1,197 @@
|
|
|
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 { act } from "@testing-library/react";
|
|
14
|
+
|
|
15
|
+
import { renderUiShell } from "./renderUiShell";
|
|
16
|
+
import {
|
|
17
|
+
ReactInWebComponentElement,
|
|
18
|
+
reactWebComponentElementName,
|
|
19
|
+
} from "../../web-component/renderReactInWebComponent";
|
|
20
|
+
|
|
21
|
+
describe("renderUiShell", () => {
|
|
22
|
+
afterEach(() => {
|
|
23
|
+
// This needs to be wrapped in `act` because the web component unmounts the React app, and React events have to be wrapped in `act`.
|
|
24
|
+
act(() => {
|
|
25
|
+
// Remove any appended elements because of this hacky process of rendering to the global DOM.
|
|
26
|
+
document.body.innerHTML = "";
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test("returns app root element", async () => {
|
|
31
|
+
const rootElement = document.createElement("div");
|
|
32
|
+
|
|
33
|
+
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
34
|
+
document.body.append(rootElement);
|
|
35
|
+
|
|
36
|
+
act(() => {
|
|
37
|
+
const { appRootElement } = renderUiShell({
|
|
38
|
+
uiShellRootElement: rootElement,
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
expect(appRootElement).toBeInstanceOf(HTMLDivElement);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
test("returns slotted elements", async () => {
|
|
46
|
+
const rootElement = document.createElement("div");
|
|
47
|
+
|
|
48
|
+
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
49
|
+
document.body.append(rootElement);
|
|
50
|
+
|
|
51
|
+
act(() => {
|
|
52
|
+
const { slottedElements } = renderUiShell({
|
|
53
|
+
uiShellRootElement: rootElement,
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
expect(slottedElements.banners).toBeInstanceOf(HTMLDivElement);
|
|
57
|
+
expect(slottedElements.sideNavFooter).toBeInstanceOf(HTMLDivElement);
|
|
58
|
+
expect(slottedElements.topNavLeftSide).toBeInstanceOf(HTMLDivElement);
|
|
59
|
+
expect(slottedElements.topNavRightSide).toBeInstanceOf(HTMLDivElement);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
test("returns ui shell root element", async () => {
|
|
64
|
+
const rootElement = document.createElement("div");
|
|
65
|
+
|
|
66
|
+
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
67
|
+
document.body.append(rootElement);
|
|
68
|
+
|
|
69
|
+
act(() => {
|
|
70
|
+
const { uiShellElement } = renderUiShell({
|
|
71
|
+
uiShellRootElement: rootElement,
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
expect(uiShellElement).toBeInstanceOf(ReactInWebComponentElement);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test("renders `UiShell` component in a web component", async () => {
|
|
79
|
+
const rootElement = document.createElement("div");
|
|
80
|
+
|
|
81
|
+
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
82
|
+
document.body.append(rootElement);
|
|
83
|
+
|
|
84
|
+
// This needs to be wrapped in `act` because the web component mounts the React app, and React events have to be wrapped in `act`.
|
|
85
|
+
act(() => {
|
|
86
|
+
renderUiShell({
|
|
87
|
+
uiShellRootElement: rootElement,
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
expect(
|
|
92
|
+
Array.from(
|
|
93
|
+
rootElement.querySelector(reactWebComponentElementName)!.shadowRoot!
|
|
94
|
+
.children,
|
|
95
|
+
).length,
|
|
96
|
+
).toBeGreaterThan(0);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
test("renders `UiShell` with updated props", async () => {
|
|
100
|
+
const rootElement = document.createElement("div");
|
|
101
|
+
const appName = "Hello World!";
|
|
102
|
+
|
|
103
|
+
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
104
|
+
document.body.append(rootElement);
|
|
105
|
+
|
|
106
|
+
let setComponentProps: ReturnType<
|
|
107
|
+
typeof renderUiShell
|
|
108
|
+
>["setComponentProps"];
|
|
109
|
+
|
|
110
|
+
// This needs to be wrapped in `act` because the web component mounts the React app, and React events have to be wrapped in `act`.
|
|
111
|
+
act(() => {
|
|
112
|
+
const renderUiShellReturnValue = renderUiShell({
|
|
113
|
+
uiShellRootElement: rootElement,
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
setComponentProps = renderUiShellReturnValue.setComponentProps;
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
act(() => {
|
|
120
|
+
setComponentProps({
|
|
121
|
+
sideNavProps: {
|
|
122
|
+
appName,
|
|
123
|
+
sideNavItems: [],
|
|
124
|
+
},
|
|
125
|
+
topNavProps: {},
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
expect(
|
|
130
|
+
rootElement.querySelector(reactWebComponentElementName)!.shadowRoot,
|
|
131
|
+
).toHaveTextContent(appName);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
test("renders `UiShell` with immediately updated props", async () => {
|
|
135
|
+
const rootElement = document.createElement("div");
|
|
136
|
+
const appName = "Hello World!";
|
|
137
|
+
|
|
138
|
+
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
139
|
+
document.body.append(rootElement);
|
|
140
|
+
|
|
141
|
+
// This needs to be wrapped in `act` because the web component mounts the React app, and React events have to be wrapped in `act`.
|
|
142
|
+
act(() => {
|
|
143
|
+
const { setComponentProps } = renderUiShell({
|
|
144
|
+
uiShellRootElement: rootElement,
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
setComponentProps({
|
|
148
|
+
sideNavProps: {
|
|
149
|
+
appName,
|
|
150
|
+
sideNavItems: [],
|
|
151
|
+
},
|
|
152
|
+
topNavProps: {},
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
expect(
|
|
157
|
+
rootElement.querySelector(reactWebComponentElementName)!.shadowRoot,
|
|
158
|
+
).toHaveTextContent(appName);
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
test("renders `<slot>` in the event of an error", async () => {
|
|
162
|
+
const rootElement = document.createElement("div");
|
|
163
|
+
const consoleError = jest.fn();
|
|
164
|
+
const onError = jest.fn();
|
|
165
|
+
|
|
166
|
+
// If this isn't appended to the DOM, the React app won't exist because of how Web Components run.
|
|
167
|
+
document.body.append(rootElement);
|
|
168
|
+
|
|
169
|
+
const consoleErrorSpy = jest
|
|
170
|
+
.spyOn(console, "error")
|
|
171
|
+
.mockImplementation(consoleError);
|
|
172
|
+
|
|
173
|
+
await act(() => {
|
|
174
|
+
const { setComponentProps } = renderUiShell({
|
|
175
|
+
onError,
|
|
176
|
+
uiShellRootElement: rootElement,
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
setComponentProps(
|
|
180
|
+
// We're purposefully testing an error state, so we need to send something that will cause an error.
|
|
181
|
+
() => {
|
|
182
|
+
throw new Error("TEST BREAK!");
|
|
183
|
+
},
|
|
184
|
+
);
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
consoleErrorSpy.mockRestore();
|
|
188
|
+
|
|
189
|
+
expect(onError).toHaveBeenCalledTimes(1);
|
|
190
|
+
expect(consoleError).toHaveBeenCalledTimes(1);
|
|
191
|
+
expect(
|
|
192
|
+
rootElement
|
|
193
|
+
.querySelector(reactWebComponentElementName)!
|
|
194
|
+
.shadowRoot?.querySelector("slot"),
|
|
195
|
+
).toBeInstanceOf(HTMLSlotElement);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
@@ -0,0 +1,132 @@
|
|
|
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 { type SetStateAction } from "react";
|
|
14
|
+
import { ErrorBoundary } from "react-error-boundary";
|
|
15
|
+
|
|
16
|
+
import { bufferLatest } from "./bufferLatest";
|
|
17
|
+
import { createMessageBus } from "./createMessageBus";
|
|
18
|
+
import { UiShell, UiShellProps } from "./UiShell";
|
|
19
|
+
import { renderReactInWebComponent } from "../../web-component/renderReactInWebComponent";
|
|
20
|
+
import { type UiShellNavComponentProps } from "./UiShellContent";
|
|
21
|
+
|
|
22
|
+
export const uiShellDataAttribute = "data-unified-ui-shell";
|
|
23
|
+
|
|
24
|
+
export const optionalComponentSlotNames: Record<
|
|
25
|
+
keyof Required<UiShellProps>["optionalComponents"],
|
|
26
|
+
string
|
|
27
|
+
> = {
|
|
28
|
+
banners: "banners",
|
|
29
|
+
sideNavFooter: "side-nav-footer",
|
|
30
|
+
topNavLeftSide: "top-nav-left-side",
|
|
31
|
+
topNavRightSide: "top-nav-right-side",
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* This function renders UI Shell in a web component.
|
|
36
|
+
* This function is agnostic to the UI framework for your app is using. Your application can be another web component, a React app, or even vanilla HTML.
|
|
37
|
+
*
|
|
38
|
+
* **All styles are self-contained.** Even though your application visually renders as children of the web component, its within the global `document` scope, not the web component's `ShadowRoot`. That means any global styles will not affect UI Shell but will affect your application.
|
|
39
|
+
*
|
|
40
|
+
* It places your app's root element in a web component <slot> and ensures it remains rendered in the event of a UI Shell error.
|
|
41
|
+
* It also provides you with other elements fitted to slots in the web component. **In React, you can portal to these components.**
|
|
42
|
+
*/
|
|
43
|
+
export const renderUiShell = ({
|
|
44
|
+
appRootElement: explicitAppRootElement,
|
|
45
|
+
onError = console.error,
|
|
46
|
+
uiShellRootElement,
|
|
47
|
+
}: {
|
|
48
|
+
/**
|
|
49
|
+
* HTML element used as the root for a React app.
|
|
50
|
+
*/
|
|
51
|
+
appRootElement?: HTMLDivElement;
|
|
52
|
+
/**
|
|
53
|
+
* Notifies when a React rendering error occurs. This could be useful for logging, reporting priority 0 issues, and recovering UI Shell when errors occur.
|
|
54
|
+
*/
|
|
55
|
+
onError?: () => void;
|
|
56
|
+
/**
|
|
57
|
+
* HTML element used as the root for UI Shell.
|
|
58
|
+
*/
|
|
59
|
+
uiShellRootElement: HTMLElement;
|
|
60
|
+
}) => {
|
|
61
|
+
const appRootElement =
|
|
62
|
+
explicitAppRootElement || document.createElement("div");
|
|
63
|
+
|
|
64
|
+
// Add this attribute so `PageTemplate` and potentially other components will know if they're in UI Shell with special padding already available.
|
|
65
|
+
uiShellRootElement.setAttribute(uiShellDataAttribute, "");
|
|
66
|
+
|
|
67
|
+
const { publish: publishPropChanges, subscribe: subscribeToPropChanges } =
|
|
68
|
+
createMessageBus<SetStateAction<UiShellNavComponentProps>>();
|
|
69
|
+
|
|
70
|
+
const {
|
|
71
|
+
publish: publishSubscriptionCreated,
|
|
72
|
+
subscribe: subscribeToReactAppSubscribed,
|
|
73
|
+
} = createMessageBus();
|
|
74
|
+
|
|
75
|
+
const publishAfterReactAppReadyForProps = bufferLatest({
|
|
76
|
+
publish: publishPropChanges,
|
|
77
|
+
subscribe: subscribeToReactAppSubscribed,
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
const slottedElements = Object.fromEntries(
|
|
81
|
+
Object.entries(optionalComponentSlotNames).map(
|
|
82
|
+
([optionalComponentKey, slotName]) => {
|
|
83
|
+
const element = document.createElement("div");
|
|
84
|
+
|
|
85
|
+
element.setAttribute("slot", slotName);
|
|
86
|
+
|
|
87
|
+
return [optionalComponentKey, element];
|
|
88
|
+
},
|
|
89
|
+
),
|
|
90
|
+
) as Record<
|
|
91
|
+
keyof Required<UiShellProps>["optionalComponents"],
|
|
92
|
+
HTMLDivElement
|
|
93
|
+
>;
|
|
94
|
+
|
|
95
|
+
const webComponentChildren =
|
|
96
|
+
Object.values(slottedElements).concat(appRootElement);
|
|
97
|
+
|
|
98
|
+
const appComponent = <slot />;
|
|
99
|
+
|
|
100
|
+
const uiShellElement = renderReactInWebComponent({
|
|
101
|
+
getReactComponent: (reactRootElements) => (
|
|
102
|
+
<ErrorBoundary fallback={appComponent} onError={onError}>
|
|
103
|
+
<UiShell
|
|
104
|
+
appComponent={appComponent}
|
|
105
|
+
appRootElement={reactRootElements.appRootElement}
|
|
106
|
+
onError={onError}
|
|
107
|
+
onSubscriptionCreated={publishSubscriptionCreated}
|
|
108
|
+
// `optionalComponents` doesn't need to be memoized because gets passed in once.
|
|
109
|
+
optionalComponents={Object.fromEntries(
|
|
110
|
+
Object.entries(optionalComponentSlotNames).map(
|
|
111
|
+
([optionalComponentKey, slotName]) => [
|
|
112
|
+
optionalComponentKey,
|
|
113
|
+
<slot name={slotName} />,
|
|
114
|
+
],
|
|
115
|
+
),
|
|
116
|
+
)}
|
|
117
|
+
stylesRootElement={reactRootElements.stylesRootElement}
|
|
118
|
+
subscribeToPropChanges={subscribeToPropChanges}
|
|
119
|
+
/>
|
|
120
|
+
</ErrorBoundary>
|
|
121
|
+
),
|
|
122
|
+
webComponentRootElement: uiShellRootElement,
|
|
123
|
+
webComponentChildren,
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
return {
|
|
127
|
+
appRootElement,
|
|
128
|
+
setComponentProps: publishAfterReactAppReadyForProps,
|
|
129
|
+
slottedElements,
|
|
130
|
+
uiShellElement,
|
|
131
|
+
};
|
|
132
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
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 { useEffect, useState } from "react";
|
|
14
|
+
|
|
15
|
+
import { uiShellDataAttribute } from "./renderUiShell";
|
|
16
|
+
|
|
17
|
+
export const useHasUiShell = () => {
|
|
18
|
+
const [hasUiShell, setHasUiShell] = useState(false);
|
|
19
|
+
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
setHasUiShell(Boolean(document.querySelector(`[${uiShellDataAttribute}]`)));
|
|
22
|
+
}, []);
|
|
23
|
+
|
|
24
|
+
return hasUiShell;
|
|
25
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
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 { useEffect, useRef, useState } from "react";
|
|
14
|
+
|
|
15
|
+
export const useScrollState = <
|
|
16
|
+
ScrollableContentElement extends HTMLElement = HTMLDivElement,
|
|
17
|
+
>() => {
|
|
18
|
+
const [isContentScrolled, setIsContentScrolled] = useState(false);
|
|
19
|
+
|
|
20
|
+
const scrollableContentRef = useRef<ScrollableContentElement>(null);
|
|
21
|
+
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (scrollableContentRef.current) {
|
|
24
|
+
let requestedAnimationFrameId: number;
|
|
25
|
+
const scrollableContentElement = scrollableContentRef.current;
|
|
26
|
+
|
|
27
|
+
const updateScrollState = () => {
|
|
28
|
+
cancelAnimationFrame(requestedAnimationFrameId);
|
|
29
|
+
|
|
30
|
+
requestedAnimationFrameId = requestAnimationFrame(() => {
|
|
31
|
+
setIsContentScrolled(scrollableContentElement.scrollTop > 0);
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
scrollableContentElement.addEventListener("scroll", updateScrollState);
|
|
36
|
+
|
|
37
|
+
updateScrollState();
|
|
38
|
+
|
|
39
|
+
return () => {
|
|
40
|
+
scrollableContentElement.removeEventListener(
|
|
41
|
+
"scroll",
|
|
42
|
+
updateScrollState,
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
cancelAnimationFrame(requestedAnimationFrameId);
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return () => {};
|
|
50
|
+
}, []);
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
isContentScrolled,
|
|
54
|
+
scrollableContentRef,
|
|
55
|
+
};
|
|
56
|
+
};
|
package/src/labs/index.ts
CHANGED
|
@@ -14,8 +14,8 @@ export { AdapterDateFns } from "@mui/x-date-pickers/AdapterDateFns";
|
|
|
14
14
|
export { LocalizationProvider } from "@mui/x-date-pickers";
|
|
15
15
|
export type { LocalizationProviderProps } from "@mui/x-date-pickers";
|
|
16
16
|
|
|
17
|
+
// export * from "./AdaptablePicker";
|
|
17
18
|
export * from "./AppTile";
|
|
18
|
-
|
|
19
19
|
export * from "./DatePicker";
|
|
20
20
|
export * from "./datePickerTheme";
|
|
21
21
|
|
|
@@ -28,12 +28,19 @@ export * from "./Layout";
|
|
|
28
28
|
export * from "./materialReactTableTypes";
|
|
29
29
|
/** @deprecated Will be removed in a future Odyssey version in lieu of DataTable */
|
|
30
30
|
export * from "./StaticTable";
|
|
31
|
+
export * from "./OdysseyPickers";
|
|
31
32
|
export * from "./PageTemplate";
|
|
32
33
|
/** @deprecated Will be removed in a future Odyssey version in lieu of DataTable */
|
|
33
34
|
export * from "./PaginatedTable";
|
|
34
35
|
|
|
35
|
-
export
|
|
36
|
+
export {
|
|
37
|
+
/** @deprecated Will be removed in a future Odyssey version. Use `PickerWithOptionAdornment` */
|
|
38
|
+
GroupPicker,
|
|
39
|
+
type GroupPickerOptionType,
|
|
40
|
+
type GroupPickerProps,
|
|
41
|
+
} from "./GroupPicker";
|
|
36
42
|
|
|
37
|
-
export * from "./NavAccordion";
|
|
43
|
+
export * from "./SideNav/NavAccordion";
|
|
38
44
|
export * from "./SideNav";
|
|
39
45
|
export * from "./TopNav";
|
|
46
|
+
export * from "./UiShell";
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
navigation.label = Main navigation
|
|
2
|
+
navigation.footer = Navigation secondary links
|
|
3
|
+
|
|
1
4
|
breadcrumbs.home.text = Home
|
|
2
5
|
breadcrumbs.label.text = Breadcrumbs
|
|
3
6
|
close.text = Close
|
|
@@ -82,6 +85,8 @@ severity.error = error
|
|
|
82
85
|
severity.info = info
|
|
83
86
|
severity.success = success
|
|
84
87
|
severity.warning = warning
|
|
88
|
+
sidenav.toggle.expand = Open navigation
|
|
89
|
+
sidenav.toggle.collapse = Close navigation
|
|
85
90
|
switch.active = Active
|
|
86
91
|
switch.inactive = Inactive
|
|
87
92
|
table.columnvisibility.arialabel = Show/hide columns
|
|
@@ -122,3 +127,5 @@ table.rowexpansion.collapseall = Collapse all
|
|
|
122
127
|
dataview.layout.table = Table
|
|
123
128
|
dataview.layout.grid = Grid
|
|
124
129
|
dataview.layout.list = List
|
|
130
|
+
topnav.helpicon = help page
|
|
131
|
+
topnav.settingsicon = settings page
|
|
@@ -31,7 +31,7 @@ picker.labels.action.today = Dnes
|
|
|
31
31
|
picker.labels.clock.empty = Nen\u00ED vybran\u00FD \u010Das
|
|
32
32
|
picker.labels.clock.hours = hod
|
|
33
33
|
picker.labels.clock.minutes = min
|
|
34
|
-
picker.labels.clock.
|
|
34
|
+
picker.labels.clock.seconds = s
|
|
35
35
|
picker.labels.clock.selected = Vybran\u00FD \u010Das je
|
|
36
36
|
picker.labels.date.choose = Zvolit datum
|
|
37
37
|
picker.labels.date.selected = Vybran\u00E9 datum je
|
|
@@ -47,6 +47,7 @@ picker.labels.select = Vybrat
|
|
|
47
47
|
picker.labels.table.date = vybrat datum
|
|
48
48
|
picker.labels.table.time = vybrat \u010Das
|
|
49
49
|
picker.labels.time.choose = Zvolit \u010Das
|
|
50
|
+
picker.labels.time.selected = vybran\u00FD \u010Das je
|
|
50
51
|
picker.time.toolbar.title = Vybrat \u010Das
|
|
51
52
|
picker.view.name.day = Den
|
|
52
53
|
picker.view.name.hours = Hodiny
|
|
@@ -31,7 +31,7 @@ picker.labels.action.today = I dag
|
|
|
31
31
|
picker.labels.clock.empty = Intet tidspunkt valgt
|
|
32
32
|
picker.labels.clock.hours = timer
|
|
33
33
|
picker.labels.clock.minutes = minutter
|
|
34
|
-
picker.labels.clock.
|
|
34
|
+
picker.labels.clock.seconds = sekunder
|
|
35
35
|
picker.labels.clock.selected = Det valgte tidspunkt er
|
|
36
36
|
picker.labels.date.choose = V\u00E6lg dato
|
|
37
37
|
picker.labels.date.selected = Den valgte dato er
|
|
@@ -47,6 +47,7 @@ picker.labels.select = V\u00E6lg
|
|
|
47
47
|
picker.labels.table.date = v\u00E6lg dato
|
|
48
48
|
picker.labels.table.time = v\u00E6lg tidspunkt
|
|
49
49
|
picker.labels.time.choose = V\u00E6lg tidspunkt
|
|
50
|
+
picker.labels.time.selected = valgte tidspunkt er
|
|
50
51
|
picker.time.toolbar.title = V\u00E6lg tidspunkt
|
|
51
52
|
picker.view.name.day = Dag
|
|
52
53
|
picker.view.name.hours = Timer
|
|
@@ -31,7 +31,7 @@ picker.labels.action.today = Heute
|
|
|
31
31
|
picker.labels.clock.empty = Keine Uhrzeit ausgew\u00E4hlt
|
|
32
32
|
picker.labels.clock.hours = Stunden
|
|
33
33
|
picker.labels.clock.minutes = Minuten
|
|
34
|
-
picker.labels.clock.
|
|
34
|
+
picker.labels.clock.seconds = Sekunden
|
|
35
35
|
picker.labels.clock.selected = Ausgew\u00E4hlte Uhrzeit
|
|
36
36
|
picker.labels.date.choose = Datum w\u00E4hlen
|
|
37
37
|
picker.labels.date.selected = Gew\u00E4hltes Datum
|
|
@@ -47,6 +47,7 @@ picker.labels.select = Ausw\u00E4hlen
|
|
|
47
47
|
picker.labels.table.date = Datum w\u00E4hlen
|
|
48
48
|
picker.labels.table.time = Uhrzeit w\u00E4hlen
|
|
49
49
|
picker.labels.time.choose = Uhrzeit w\u00E4hlen
|
|
50
|
+
picker.labels.time.selected = ausgew\u00E4hlte Uhrzeit ist
|
|
50
51
|
picker.time.toolbar.title = Uhrzeit ausw\u00E4hlen
|
|
51
52
|
picker.view.name.day = Tag
|
|
52
53
|
picker.view.name.hours = Stunden
|
|
@@ -31,7 +31,7 @@ picker.labels.action.today = \u03A3\u03AE\u03BC\u03B5\u03C1\u03B1
|
|
|
31
31
|
picker.labels.clock.empty = \u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03B5\u03AF \u03CE\u03C1\u03B1
|
|
32
32
|
picker.labels.clock.hours = \u03CE\u03C1\u03B5\u03C2
|
|
33
33
|
picker.labels.clock.minutes = \u03BB\u03B5\u03C0\u03C4\u03AC
|
|
34
|
-
picker.labels.clock.
|
|
34
|
+
picker.labels.clock.seconds = \u03B4\u03B5\u03C5\u03C4\u03B5\u03C1\u03CC\u03BB\u03B5\u03C0\u03C4\u03B1
|
|
35
35
|
picker.labels.clock.selected = \u0397 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B7 \u03CE\u03C1\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9
|
|
36
36
|
picker.labels.date.choose = \u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1
|
|
37
37
|
picker.labels.date.selected = \u0397 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B7 \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9
|
|
@@ -47,6 +47,7 @@ picker.labels.select = \u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE
|
|
|
47
47
|
picker.labels.table.date = \u03B5\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1
|
|
48
48
|
picker.labels.table.time = \u03B5\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03CE\u03C1\u03B1
|
|
49
49
|
picker.labels.time.choose = \u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03CE\u03C1\u03B1
|
|
50
|
+
picker.labels.time.selected = \u03B7 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B7 \u03CE\u03C1\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9
|
|
50
51
|
picker.time.toolbar.title = \u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03CE\u03C1\u03B1
|
|
51
52
|
picker.view.name.day = \u0397\u03BC\u03AD\u03C1\u03B1
|
|
52
53
|
picker.view.name.hours = \u038F\u03C1\u03B5\u03C2
|
|
@@ -31,7 +31,7 @@ picker.labels.action.today = Hoy
|
|
|
31
31
|
picker.labels.clock.empty = No se ha seleccionado ninguna hora
|
|
32
32
|
picker.labels.clock.hours = horas
|
|
33
33
|
picker.labels.clock.minutes = minutos
|
|
34
|
-
picker.labels.clock.
|
|
34
|
+
picker.labels.clock.seconds = segundos
|
|
35
35
|
picker.labels.clock.selected = La hora seleccionada es
|
|
36
36
|
picker.labels.date.choose = Elegir fecha
|
|
37
37
|
picker.labels.date.selected = La fecha seleccionada es
|
|
@@ -47,6 +47,7 @@ picker.labels.select = Seleccionar
|
|
|
47
47
|
picker.labels.table.date = elegir fecha
|
|
48
48
|
picker.labels.table.time = elegir hora
|
|
49
49
|
picker.labels.time.choose = Elegir hora
|
|
50
|
+
picker.labels.time.selected = la hora seleccionada es
|
|
50
51
|
picker.time.toolbar.title = Seleccionar hora
|
|
51
52
|
picker.view.name.day = D\u00EDa
|
|
52
53
|
picker.view.name.hours = Horas
|
|
@@ -31,7 +31,7 @@ picker.labels.action.today = T\u00E4n\u00E4\u00E4n
|
|
|
31
31
|
picker.labels.clock.empty = Aikaa ei ole valittu
|
|
32
32
|
picker.labels.clock.hours = tuntia
|
|
33
33
|
picker.labels.clock.minutes = minuuttia
|
|
34
|
-
picker.labels.clock.
|
|
34
|
+
picker.labels.clock.seconds = sekuntia
|
|
35
35
|
picker.labels.clock.selected = Valittu aika on
|
|
36
36
|
picker.labels.date.choose = Valitse p\u00E4iv\u00E4m\u00E4\u00E4r\u00E4
|
|
37
37
|
picker.labels.date.selected = Valittu p\u00E4iv\u00E4m\u00E4\u00E4r\u00E4 on
|
|
@@ -47,6 +47,7 @@ picker.labels.select = Valitse
|
|
|
47
47
|
picker.labels.table.date = valitse p\u00E4iv\u00E4m\u00E4\u00E4r\u00E4
|
|
48
48
|
picker.labels.table.time = valitse aika
|
|
49
49
|
picker.labels.time.choose = Valitse aika
|
|
50
|
+
picker.labels.time.selected = valittu aika on
|
|
50
51
|
picker.time.toolbar.title = Valitse aika
|
|
51
52
|
picker.view.name.day = P\u00E4iv\u00E4
|
|
52
53
|
picker.view.name.hours = Tuntia
|
|
@@ -8,8 +8,8 @@ picker.calendar.navigation.previousmonth = Mois pr\u00E9c\u00E8dent
|
|
|
8
8
|
picker.date.toolbar.title = Date s\u00E9lectionn\u00E9e
|
|
9
9
|
picker.daterange.toolbar.title = S\u00E9lectionner une plage de dates
|
|
10
10
|
picker.datetime.toolbar.title = S\u00E9lectionner une date et une heure
|
|
11
|
-
picker.error.invalid = Corrigez le format de la date ou s\u00E9lectionnez la date dans le calendrier.
|
|
12
|
-
picker.error.mindate = La date saisie est ant\u00E9rieure aux dates autoris\u00E9es.
|
|
11
|
+
picker.error.invalid = Corrigez le format de la date ou s\u00E9lectionnez la date dans le calendrier.
|
|
12
|
+
picker.error.mindate = La date saisie est ant\u00E9rieure aux dates autoris\u00E9es. S\u00E9lectionnez une date dans la plage du calendrier.
|
|
13
13
|
picker.error.maxdate = La date saisie est post\u00E9rieure aux dates autoris\u00E9es. S\u00E9lectionnez une date dans la plage du calendrier.
|
|
14
14
|
# placeholder text in date field
|
|
15
15
|
picker.field.placeholder.day = DD
|
|
@@ -31,7 +31,7 @@ picker.labels.action.today = Aujourd'hui
|
|
|
31
31
|
picker.labels.clock.empty = Aucune heure s\u00E9lectionn\u00E9e
|
|
32
32
|
picker.labels.clock.hours = heures
|
|
33
33
|
picker.labels.clock.minutes = minutes
|
|
34
|
-
picker.labels.clock.
|
|
34
|
+
picker.labels.clock.seconds = secondes
|
|
35
35
|
picker.labels.clock.selected = L'heure s\u00E9lectionn\u00E9e est
|
|
36
36
|
picker.labels.date.choose = Choisir la date
|
|
37
37
|
picker.labels.date.selected = La date s\u00E9lectionn\u00E9e est
|
|
@@ -47,6 +47,7 @@ picker.labels.select = S\u00E9lectionner
|
|
|
47
47
|
picker.labels.table.date = choisir une date
|
|
48
48
|
picker.labels.table.time = choisir une heure
|
|
49
49
|
picker.labels.time.choose = Choisir une heure
|
|
50
|
+
picker.labels.time.selected = l'heure s\u00E9lectionn\u00E9e est
|
|
50
51
|
picker.time.toolbar.title = Choisir une date
|
|
51
52
|
picker.view.name.day = Jour
|
|
52
53
|
picker.view.name.hours = Heures
|
|
@@ -31,7 +31,7 @@ picker.labels.action.today = Jodia
|
|
|
31
31
|
picker.labels.clock.empty = Pa gen l\u00E8 ki seleksyone
|
|
32
32
|
picker.labels.clock.hours = \u00E8dtan
|
|
33
33
|
picker.labels.clock.minutes = minit
|
|
34
|
-
picker.labels.clock.
|
|
34
|
+
picker.labels.clock.seconds = segonn
|
|
35
35
|
picker.labels.clock.selected = L\u00E8 ki seleksyone a se
|
|
36
36
|
picker.labels.date.choose = Chwazi dat
|
|
37
37
|
picker.labels.date.selected = Dat ki seleksyone a se
|
|
@@ -47,6 +47,7 @@ picker.labels.select = Seleksyone
|
|
|
47
47
|
picker.labels.table.date = pran dat
|
|
48
48
|
picker.labels.table.time = pran l\u00E8
|
|
49
49
|
picker.labels.time.choose = Chwazi l\u00E8
|
|
50
|
+
picker.labels.time.selected = l\u00E8 ki seleksyone a se
|
|
50
51
|
picker.time.toolbar.title = Seleksyone l\u00E8
|
|
51
52
|
picker.view.name.day = Jou
|
|
52
53
|
picker.view.name.hours = \u00C8dtan
|
|
@@ -31,7 +31,7 @@ picker.labels.action.today = Ma
|
|
|
31
31
|
picker.labels.clock.empty = Nincs kiv\u00E1lasztva id\u0151pont
|
|
32
32
|
picker.labels.clock.hours = \u00F3ra
|
|
33
33
|
picker.labels.clock.minutes = perc
|
|
34
|
-
picker.labels.clock.
|
|
34
|
+
picker.labels.clock.seconds = m\u00E1sodperc
|
|
35
35
|
picker.labels.clock.selected = A kiv\u00E1lasztott id\u0151pont
|
|
36
36
|
picker.labels.date.choose = V\u00E1lasszon d\u00E1tumot
|
|
37
37
|
picker.labels.date.selected = A kiv\u00E1lasztott d\u00E1tum
|
|
@@ -47,6 +47,7 @@ picker.labels.select = Kiv\u00E1laszt\u00E1s
|
|
|
47
47
|
picker.labels.table.date = v\u00E1lasszon d\u00E1tumot
|
|
48
48
|
picker.labels.table.time = v\u00E1lasszon id\u0151pontot
|
|
49
49
|
picker.labels.time.choose = Id\u0151pont kiv\u00E1laszt\u00E1sa
|
|
50
|
+
picker.labels.time.selected = a kiv\u00E1lasztott id\u0151pont:
|
|
50
51
|
picker.time.toolbar.title = Id\u0151pont kiv\u00E1laszt\u00E1sa
|
|
51
52
|
picker.view.name.day = Nap
|
|
52
53
|
picker.view.name.hours = \u00D3ra
|
|
@@ -31,7 +31,7 @@ picker.labels.action.today = Hari ini
|
|
|
31
31
|
picker.labels.clock.empty = Tidak ada waktu yang dipilih
|
|
32
32
|
picker.labels.clock.hours = jam
|
|
33
33
|
picker.labels.clock.minutes = menit
|
|
34
|
-
picker.labels.clock.
|
|
34
|
+
picker.labels.clock.seconds = detik
|
|
35
35
|
picker.labels.clock.selected = Waktu yang dipilih
|
|
36
36
|
picker.labels.date.choose = Pilih tanggal
|
|
37
37
|
picker.labels.date.selected = Tanggal yang dipilih
|
|
@@ -47,6 +47,7 @@ picker.labels.select = Pilih
|
|
|
47
47
|
picker.labels.table.date = pilih tanggal
|
|
48
48
|
picker.labels.table.time = pilih waktu
|
|
49
49
|
picker.labels.time.choose = Pilih waktu
|
|
50
|
+
picker.labels.time.selected = waktu yang dipilih adalah
|
|
50
51
|
picker.time.toolbar.title = Pilih waktu
|
|
51
52
|
picker.view.name.day = Hari
|
|
52
53
|
picker.view.name.hours = Jam
|