@okta/odyssey-react-mui 1.28.1 → 1.29.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.
Files changed (326) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/Breadcrumbs.js +1 -0
  3. package/dist/Breadcrumbs.js.map +1 -1
  4. package/dist/Buttons/MenuItem.js +1 -0
  5. package/dist/Buttons/MenuItem.js.map +1 -1
  6. package/dist/Checkbox.js +62 -35
  7. package/dist/Checkbox.js.map +1 -1
  8. package/dist/DataTable/reorderDataRowsLocally.js.map +1 -1
  9. package/dist/DataTable/useRowReordering.js.map +1 -1
  10. package/dist/HtmlProps.js.map +1 -1
  11. package/dist/Pagination/Pagination.js +2 -1
  12. package/dist/Pagination/Pagination.js.map +1 -1
  13. package/dist/Radio.js +65 -38
  14. package/dist/Radio.js.map +1 -1
  15. package/dist/Typography.js +20 -0
  16. package/dist/Typography.js.map +1 -1
  17. package/dist/index.scss +1 -1
  18. package/dist/labs/DataFilters.js +9 -5
  19. package/dist/labs/DataFilters.js.map +1 -1
  20. package/dist/labs/DataTable.js +7 -7
  21. package/dist/labs/DataTable.js.map +1 -1
  22. package/dist/labs/DataView/BulkActionsMenu.js.map +1 -1
  23. package/dist/labs/DataView/CardLayoutContent.js +6 -5
  24. package/dist/labs/DataView/CardLayoutContent.js.map +1 -1
  25. package/dist/labs/DataView/DataCard.js +1 -0
  26. package/dist/labs/DataView/DataCard.js.map +1 -1
  27. package/dist/labs/DataView/DataTable.js.map +1 -1
  28. package/dist/labs/DataView/DataView.js +2 -2
  29. package/dist/labs/DataView/DataView.js.map +1 -1
  30. package/dist/labs/DataView/DetailPanel.js.map +1 -1
  31. package/dist/labs/DataView/RowActions.js.map +1 -1
  32. package/dist/labs/DataView/TableLayoutContent.js +1 -1
  33. package/dist/labs/DataView/TableLayoutContent.js.map +1 -1
  34. package/dist/labs/DataView/TableSettings.js.map +1 -1
  35. package/dist/labs/DataView/componentTypes.js.map +1 -1
  36. package/dist/labs/DataView/dataTypes.js.map +1 -1
  37. package/dist/labs/DataView/fetchData.js.map +1 -1
  38. package/dist/labs/DataView/testSupportData.js +201 -0
  39. package/dist/labs/DataView/testSupportData.js.map +1 -0
  40. package/dist/labs/DataView/useFilterConversion.js.map +1 -1
  41. package/dist/labs/{DateField.js → DatePickers/DateField.js} +1 -1
  42. package/dist/labs/DatePickers/DateField.js.map +1 -0
  43. package/dist/labs/DatePickers/DateFieldActionBar.js +56 -0
  44. package/dist/labs/DatePickers/DateFieldActionBar.js.map +1 -0
  45. package/dist/labs/DatePickers/DateFieldLocalizationProvider.js +32 -0
  46. package/dist/labs/DatePickers/DateFieldLocalizationProvider.js.map +1 -0
  47. package/dist/labs/{DatePicker.js → DatePickers/DatePicker.js} +30 -73
  48. package/dist/labs/DatePickers/DatePicker.js.map +1 -0
  49. package/dist/labs/DatePickers/DatePicker.types.d.js.map +1 -0
  50. package/dist/labs/DatePickers/DateTimeField.js +166 -0
  51. package/dist/labs/DatePickers/DateTimeField.js.map +1 -0
  52. package/dist/labs/DatePickers/DateTimePicker.js +233 -0
  53. package/dist/labs/DatePickers/DateTimePicker.js.map +1 -0
  54. package/dist/labs/{datePickerTheme.js → DatePickers/datePickerTheme.js} +2 -2
  55. package/dist/labs/DatePickers/datePickerTheme.js.map +1 -0
  56. package/dist/labs/DatePickers/dateTimePickerTheme.js +230 -0
  57. package/dist/labs/DatePickers/dateTimePickerTheme.js.map +1 -0
  58. package/dist/labs/DatePickers/index.js +15 -0
  59. package/dist/labs/DatePickers/index.js.map +1 -0
  60. package/dist/labs/DatePickers/useDateFieldsTranslations.js.map +1 -0
  61. package/dist/labs/{useOdysseyDateFields.js → DatePickers/useOdysseyDateFields.js} +36 -3
  62. package/dist/labs/DatePickers/useOdysseyDateFields.js.map +1 -0
  63. package/dist/labs/PageTemplate.js +1 -1
  64. package/dist/labs/PageTemplate.js.map +1 -1
  65. package/dist/labs/SideNav/SideNav.js +40 -34
  66. package/dist/labs/SideNav/SideNav.js.map +1 -1
  67. package/dist/labs/SideNav/SideNavHeader.js +6 -4
  68. package/dist/labs/SideNav/SideNavHeader.js.map +1 -1
  69. package/dist/labs/SideNav/SideNavItemContent.js +11 -11
  70. package/dist/labs/SideNav/SideNavItemContent.js.map +1 -1
  71. package/dist/labs/SideNav/SideNavToggleButton.js +1 -1
  72. package/dist/labs/SideNav/SideNavToggleButton.js.map +1 -1
  73. package/dist/labs/SideNav/types.js.map +1 -1
  74. package/dist/labs/TimeZonePicker.js.map +1 -1
  75. package/dist/labs/index.js +1 -3
  76. package/dist/labs/index.js.map +1 -1
  77. package/dist/properties/ts/odyssey-react-mui.js +2 -0
  78. package/dist/properties/ts/odyssey-react-mui.js.map +1 -1
  79. package/dist/src/Breadcrumbs.d.ts.map +1 -1
  80. package/dist/src/Buttons/MenuItem.d.ts.map +1 -1
  81. package/dist/src/Checkbox.d.ts.map +1 -1
  82. package/dist/src/DataTable/reorderDataRowsLocally.d.ts +3 -3
  83. package/dist/src/DataTable/reorderDataRowsLocally.d.ts.map +1 -1
  84. package/dist/src/DataTable/useRowReordering.d.ts +10 -10
  85. package/dist/src/DataTable/useRowReordering.d.ts.map +1 -1
  86. package/dist/src/HtmlProps.d.ts +27 -0
  87. package/dist/src/HtmlProps.d.ts.map +1 -1
  88. package/dist/src/OdysseyTranslationProvider.d.ts +1 -1
  89. package/dist/src/OdysseyTranslationProvider.d.ts.map +1 -1
  90. package/dist/src/Radio.d.ts +1 -1
  91. package/dist/src/Radio.d.ts.map +1 -1
  92. package/dist/src/Typography.d.ts +11 -11
  93. package/dist/src/Typography.d.ts.map +1 -1
  94. package/dist/src/labs/DataFilters.d.ts.map +1 -1
  95. package/dist/src/labs/DataTable.d.ts +11 -11
  96. package/dist/src/labs/DataTable.d.ts.map +1 -1
  97. package/dist/src/labs/DataView/BulkActionsMenu.d.ts +3 -3
  98. package/dist/src/labs/DataView/BulkActionsMenu.d.ts.map +1 -1
  99. package/dist/src/labs/DataView/CardLayoutContent.d.ts +18 -15
  100. package/dist/src/labs/DataView/CardLayoutContent.d.ts.map +1 -1
  101. package/dist/src/labs/DataView/DataCard.d.ts +7 -4
  102. package/dist/src/labs/DataView/DataCard.d.ts.map +1 -1
  103. package/dist/src/labs/DataView/DataTable.d.ts +6 -2
  104. package/dist/src/labs/DataView/DataTable.d.ts.map +1 -1
  105. package/dist/src/labs/DataView/DataView.d.ts +6 -2
  106. package/dist/src/labs/DataView/DataView.d.ts.map +1 -1
  107. package/dist/src/labs/DataView/DetailPanel.d.ts +5 -5
  108. package/dist/src/labs/DataView/DetailPanel.d.ts.map +1 -1
  109. package/dist/src/labs/DataView/RowActions.d.ts +3 -3
  110. package/dist/src/labs/DataView/RowActions.d.ts.map +1 -1
  111. package/dist/src/labs/DataView/TableLayoutContent.d.ts +18 -15
  112. package/dist/src/labs/DataView/TableLayoutContent.d.ts.map +1 -1
  113. package/dist/src/labs/DataView/TableSettings.d.ts +7 -3
  114. package/dist/src/labs/DataView/TableSettings.d.ts.map +1 -1
  115. package/dist/src/labs/DataView/componentTypes.d.ts +17 -17
  116. package/dist/src/labs/DataView/componentTypes.d.ts.map +1 -1
  117. package/dist/src/labs/DataView/dataTypes.d.ts +6 -6
  118. package/dist/src/labs/DataView/dataTypes.d.ts.map +1 -1
  119. package/dist/src/labs/DataView/fetchData.d.ts +6 -6
  120. package/dist/src/labs/DataView/fetchData.d.ts.map +1 -1
  121. package/dist/src/labs/DataView/testSupportData.d.ts +33 -0
  122. package/dist/src/labs/DataView/testSupportData.d.ts.map +1 -0
  123. package/dist/src/labs/DataView/useFilterConversion.d.ts +5 -4
  124. package/dist/src/labs/DataView/useFilterConversion.d.ts.map +1 -1
  125. package/dist/src/labs/{DateField.d.ts → DatePickers/DateField.d.ts} +1 -1
  126. package/dist/src/labs/DatePickers/DateField.d.ts.map +1 -0
  127. package/dist/src/labs/DatePickers/DateFieldActionBar.d.ts +15 -0
  128. package/dist/src/labs/DatePickers/DateFieldActionBar.d.ts.map +1 -0
  129. package/dist/src/labs/DatePickers/DateFieldLocalizationProvider.d.ts +20 -0
  130. package/dist/src/labs/DatePickers/DateFieldLocalizationProvider.d.ts.map +1 -0
  131. package/dist/src/labs/DatePickers/DatePicker.d.ts +17 -0
  132. package/dist/src/labs/DatePickers/DatePicker.d.ts.map +1 -0
  133. package/dist/src/labs/DatePickers/DateTimeField.d.ts +20 -0
  134. package/dist/src/labs/DatePickers/DateTimeField.d.ts.map +1 -0
  135. package/dist/src/labs/DatePickers/DateTimePicker.d.ts +17 -0
  136. package/dist/src/labs/DatePickers/DateTimePicker.d.ts.map +1 -0
  137. package/dist/src/labs/DatePickers/datePickerTheme.d.ts +22 -0
  138. package/dist/src/labs/DatePickers/datePickerTheme.d.ts.map +1 -0
  139. package/dist/src/labs/{datePickerTheme.d.ts → DatePickers/dateTimePickerTheme.d.ts} +2 -2
  140. package/dist/src/labs/DatePickers/dateTimePickerTheme.d.ts.map +1 -0
  141. package/dist/src/labs/DatePickers/index.d.ts +15 -0
  142. package/dist/src/labs/DatePickers/index.d.ts.map +1 -0
  143. package/dist/src/labs/DatePickers/useDateFieldsTranslations.d.ts.map +1 -0
  144. package/dist/src/labs/{useOdysseyDateFields.d.ts → DatePickers/useOdysseyDateFields.d.ts} +49 -6
  145. package/dist/src/labs/DatePickers/useOdysseyDateFields.d.ts.map +1 -0
  146. package/dist/src/labs/SideNav/SideNav.d.ts.map +1 -1
  147. package/dist/src/labs/SideNav/SideNavHeader.d.ts.map +1 -1
  148. package/dist/src/labs/SideNav/SideNavItemContent.d.ts +1 -1
  149. package/dist/src/labs/SideNav/SideNavItemContent.d.ts.map +1 -1
  150. package/dist/src/labs/SideNav/types.d.ts +2 -2
  151. package/dist/src/labs/SideNav/types.d.ts.map +1 -1
  152. package/dist/src/labs/TimeZonePicker.d.ts +4 -1
  153. package/dist/src/labs/TimeZonePicker.d.ts.map +1 -1
  154. package/dist/src/labs/index.d.ts +1 -3
  155. package/dist/src/labs/index.d.ts.map +1 -1
  156. package/dist/src/properties/ts/odyssey-react-mui.d.ts +2 -0
  157. package/dist/src/properties/ts/odyssey-react-mui.d.ts.map +1 -1
  158. package/dist/src/theme/components.d.ts.map +1 -1
  159. package/dist/src/theme/mixins.d.ts.map +1 -1
  160. package/dist/src/theme/mixins.types.d.ts +2 -0
  161. package/dist/src/theme/mixins.types.d.ts.map +1 -1
  162. package/dist/src/{labs → ui-shell}/UiShell/UiShell.d.ts +2 -2
  163. package/dist/src/ui-shell/UiShell/UiShell.d.ts.map +1 -0
  164. package/dist/src/{labs → ui-shell}/UiShell/UiShellContent.d.ts +12 -8
  165. package/dist/src/ui-shell/UiShell/UiShellContent.d.ts.map +1 -0
  166. package/dist/src/ui-shell/UiShell/bufferLatest.d.ts.map +1 -0
  167. package/dist/src/ui-shell/UiShell/createMessageBus.d.ts.map +1 -0
  168. package/dist/src/ui-shell/UiShell/createStore.d.ts.map +1 -0
  169. package/dist/src/ui-shell/UiShell/index.d.ts.map +1 -0
  170. package/dist/src/{labs → ui-shell}/UiShell/renderUiShell.d.ts +3 -4
  171. package/dist/src/ui-shell/UiShell/renderUiShell.d.ts.map +1 -0
  172. package/dist/src/{labs → ui-shell}/UiShell/useHasUiShell.d.ts +1 -0
  173. package/dist/src/ui-shell/UiShell/useHasUiShell.d.ts.map +1 -0
  174. package/dist/src/ui-shell/UiShell/useScrollState.d.ts.map +1 -0
  175. package/dist/src/ui-shell/index.d.ts +14 -0
  176. package/dist/src/ui-shell/index.d.ts.map +1 -0
  177. package/dist/src/{web-component → ui-shell}/renderReactInWebComponent.d.ts +3 -23
  178. package/dist/src/ui-shell/renderReactInWebComponent.d.ts.map +1 -0
  179. package/dist/src/web-component/index.d.ts +0 -1
  180. package/dist/src/web-component/index.d.ts.map +1 -1
  181. package/dist/src/web-component/shadow-dom.d.ts +23 -2
  182. package/dist/src/web-component/shadow-dom.d.ts.map +1 -1
  183. package/dist/theme/components.js +38 -4
  184. package/dist/theme/components.js.map +1 -1
  185. package/dist/theme/mixins.js +2 -1
  186. package/dist/theme/mixins.js.map +1 -1
  187. package/dist/theme/mixins.types.js.map +1 -1
  188. package/dist/tsconfig.production.tsbuildinfo +1 -1
  189. package/dist/{labs → ui-shell}/UiShell/UiShell.js +2 -0
  190. package/dist/ui-shell/UiShell/UiShell.js.map +1 -0
  191. package/dist/{labs → ui-shell}/UiShell/UiShellContent.js +19 -11
  192. package/dist/ui-shell/UiShell/UiShellContent.js.map +1 -0
  193. package/dist/ui-shell/UiShell/bufferLatest.js.map +1 -0
  194. package/dist/ui-shell/UiShell/createMessageBus.js.map +1 -0
  195. package/dist/ui-shell/UiShell/createStore.js.map +1 -0
  196. package/dist/ui-shell/UiShell/index.js.map +1 -0
  197. package/dist/{labs → ui-shell}/UiShell/renderUiShell.js +4 -2
  198. package/dist/ui-shell/UiShell/renderUiShell.js.map +1 -0
  199. package/dist/{labs → ui-shell}/UiShell/useHasUiShell.js +1 -1
  200. package/dist/ui-shell/UiShell/useHasUiShell.js.map +1 -0
  201. package/dist/ui-shell/UiShell/useScrollState.js.map +1 -0
  202. package/dist/ui-shell/index.js +14 -0
  203. package/dist/ui-shell/index.js.map +1 -0
  204. package/dist/{web-component → ui-shell}/renderReactInWebComponent.js +7 -17
  205. package/dist/ui-shell/renderReactInWebComponent.js.map +1 -0
  206. package/dist/web-component/index.js +0 -1
  207. package/dist/web-component/index.js.map +1 -1
  208. package/dist/web-component/shadow-dom.js +12 -2
  209. package/dist/web-component/shadow-dom.js.map +1 -1
  210. package/package.json +10 -3
  211. package/src/Breadcrumbs.tsx +5 -1
  212. package/src/Buttons/MenuItem.tsx +1 -0
  213. package/src/Checkbox.tsx +86 -44
  214. package/src/DataTable/reorderDataRowsLocally.tsx +3 -3
  215. package/src/DataTable/useRowReordering.tsx +16 -23
  216. package/src/HtmlProps.ts +27 -0
  217. package/src/Pagination/Pagination.tsx +2 -2
  218. package/src/Radio.tsx +78 -39
  219. package/src/Typography.tsx +26 -1
  220. package/src/labs/DataFilters.tsx +7 -3
  221. package/src/labs/DataTable.tsx +41 -33
  222. package/src/labs/DataView/BulkActionsMenu.tsx +4 -4
  223. package/src/labs/DataView/CardLayoutContent.tsx +34 -28
  224. package/src/labs/DataView/DataCard.tsx +13 -6
  225. package/src/labs/DataView/DataTable.tsx +11 -4
  226. package/src/labs/DataView/DataView.test.tsx +1012 -87
  227. package/src/labs/DataView/DataView.tsx +18 -11
  228. package/src/labs/DataView/DetailPanel.tsx +4 -4
  229. package/src/labs/DataView/RowActions.tsx +4 -4
  230. package/src/labs/DataView/TableLayoutContent.tsx +30 -24
  231. package/src/labs/DataView/TableSettings.tsx +12 -6
  232. package/src/labs/DataView/componentTypes.ts +17 -17
  233. package/src/labs/DataView/dataTypes.ts +14 -8
  234. package/src/labs/DataView/fetchData.ts +9 -7
  235. package/src/labs/DataView/testSupportData.tsx +301 -0
  236. package/src/labs/DataView/useFilterConversion.ts +8 -8
  237. package/src/labs/{DateField.tsx → DatePickers/DateField.tsx} +2 -2
  238. package/src/labs/DatePickers/DateFieldActionBar.tsx +65 -0
  239. package/src/labs/DatePickers/DateFieldLocalizationProvider.tsx +46 -0
  240. package/src/labs/{DatePicker.tsx → DatePickers/DatePicker.tsx} +31 -136
  241. package/src/labs/DatePickers/DateTimeField.tsx +271 -0
  242. package/src/labs/DatePickers/DateTimePicker.test.tsx +66 -0
  243. package/src/labs/DatePickers/DateTimePicker.tsx +303 -0
  244. package/src/labs/{datePickerTheme.tsx → DatePickers/datePickerTheme.tsx} +2 -2
  245. package/src/labs/DatePickers/dateTimePickerTheme.ts +213 -0
  246. package/src/labs/DatePickers/index.ts +15 -0
  247. package/src/labs/{useOdysseyDateFields.ts → DatePickers/useOdysseyDateFields.ts} +112 -10
  248. package/src/labs/PageTemplate.tsx +1 -1
  249. package/src/labs/SideNav/SideNav.tsx +38 -39
  250. package/src/labs/SideNav/SideNavHeader.tsx +6 -4
  251. package/src/labs/SideNav/SideNavItemContent.tsx +21 -18
  252. package/src/labs/SideNav/SideNavToggleButton.tsx +1 -1
  253. package/src/labs/SideNav/types.ts +2 -2
  254. package/src/labs/TimeZonePicker.tsx +5 -1
  255. package/src/labs/index.ts +2 -3
  256. package/src/properties/odyssey-react-mui.properties +2 -0
  257. package/src/properties/ts/odyssey-react-mui.ts +1 -1
  258. package/src/theme/components.tsx +45 -4
  259. package/src/theme/mixins.ts +1 -0
  260. package/src/theme/mixins.types.ts +2 -0
  261. package/src/{labs → ui-shell}/UiShell/UiShell.tsx +3 -0
  262. package/src/{labs → ui-shell}/UiShell/UiShellContent.tsx +60 -31
  263. package/src/{labs → ui-shell}/UiShell/renderUiShell.test.tsx +16 -22
  264. package/src/{labs → ui-shell}/UiShell/renderUiShell.tsx +7 -4
  265. package/src/{labs → ui-shell}/UiShell/useHasUiShell.ts +1 -1
  266. package/src/ui-shell/index.ts +14 -0
  267. package/src/{web-component → ui-shell}/renderReactInWebComponent.test.tsx +1 -1
  268. package/src/{web-component → ui-shell}/renderReactInWebComponent.ts +9 -45
  269. package/src/web-component/index.ts +0 -1
  270. package/src/web-component/shadow-dom.ts +36 -3
  271. package/dist/labs/DateField.js.map +0 -1
  272. package/dist/labs/DatePicker.js.map +0 -1
  273. package/dist/labs/DatePicker.types.d.js.map +0 -1
  274. package/dist/labs/UiShell/UiShell.js.map +0 -1
  275. package/dist/labs/UiShell/UiShellContent.js.map +0 -1
  276. package/dist/labs/UiShell/bufferLatest.js.map +0 -1
  277. package/dist/labs/UiShell/createMessageBus.js.map +0 -1
  278. package/dist/labs/UiShell/createStore.js.map +0 -1
  279. package/dist/labs/UiShell/index.js.map +0 -1
  280. package/dist/labs/UiShell/renderUiShell.js.map +0 -1
  281. package/dist/labs/UiShell/useHasUiShell.js.map +0 -1
  282. package/dist/labs/UiShell/useScrollState.js.map +0 -1
  283. package/dist/labs/datePickerTheme.js.map +0 -1
  284. package/dist/labs/useDateFieldsTranslations.js.map +0 -1
  285. package/dist/labs/useOdysseyDateFields.js.map +0 -1
  286. package/dist/src/labs/DateField.d.ts.map +0 -1
  287. package/dist/src/labs/DatePicker.d.ts +0 -47
  288. package/dist/src/labs/DatePicker.d.ts.map +0 -1
  289. package/dist/src/labs/UiShell/UiShell.d.ts.map +0 -1
  290. package/dist/src/labs/UiShell/UiShellContent.d.ts.map +0 -1
  291. package/dist/src/labs/UiShell/bufferLatest.d.ts.map +0 -1
  292. package/dist/src/labs/UiShell/createMessageBus.d.ts.map +0 -1
  293. package/dist/src/labs/UiShell/createStore.d.ts.map +0 -1
  294. package/dist/src/labs/UiShell/index.d.ts.map +0 -1
  295. package/dist/src/labs/UiShell/renderUiShell.d.ts.map +0 -1
  296. package/dist/src/labs/UiShell/useHasUiShell.d.ts.map +0 -1
  297. package/dist/src/labs/UiShell/useScrollState.d.ts.map +0 -1
  298. package/dist/src/labs/datePickerTheme.d.ts.map +0 -1
  299. package/dist/src/labs/useDateFieldsTranslations.d.ts.map +0 -1
  300. package/dist/src/labs/useOdysseyDateFields.d.ts.map +0 -1
  301. package/dist/src/web-component/renderReactInWebComponent.d.ts.map +0 -1
  302. package/dist/web-component/renderReactInWebComponent.js.map +0 -1
  303. /package/dist/labs/{DatePicker.types.d.js → DatePickers/DatePicker.types.d.js} +0 -0
  304. /package/dist/labs/{useDateFieldsTranslations.js → DatePickers/useDateFieldsTranslations.js} +0 -0
  305. /package/dist/src/labs/{useDateFieldsTranslations.d.ts → DatePickers/useDateFieldsTranslations.d.ts} +0 -0
  306. /package/dist/src/{labs → ui-shell}/UiShell/bufferLatest.d.ts +0 -0
  307. /package/dist/src/{labs → ui-shell}/UiShell/createMessageBus.d.ts +0 -0
  308. /package/dist/src/{labs → ui-shell}/UiShell/createStore.d.ts +0 -0
  309. /package/dist/src/{labs → ui-shell}/UiShell/index.d.ts +0 -0
  310. /package/dist/src/{labs → ui-shell}/UiShell/useScrollState.d.ts +0 -0
  311. /package/dist/{labs → ui-shell}/UiShell/bufferLatest.js +0 -0
  312. /package/dist/{labs → ui-shell}/UiShell/createMessageBus.js +0 -0
  313. /package/dist/{labs → ui-shell}/UiShell/createStore.js +0 -0
  314. /package/dist/{labs → ui-shell}/UiShell/index.js +0 -0
  315. /package/dist/{labs → ui-shell}/UiShell/useScrollState.js +0 -0
  316. /package/src/labs/{DatePicker.types.d.ts → DatePickers/DatePicker.types.d.ts} +0 -0
  317. /package/src/labs/{useDateFieldsTranslations.ts → DatePickers/useDateFieldsTranslations.ts} +0 -0
  318. /package/src/{labs → ui-shell}/UiShell/UiShell.test.tsx +0 -0
  319. /package/src/{labs → ui-shell}/UiShell/bufferLatest.test.ts +0 -0
  320. /package/src/{labs → ui-shell}/UiShell/bufferLatest.ts +0 -0
  321. /package/src/{labs → ui-shell}/UiShell/createMessageBus.test.ts +0 -0
  322. /package/src/{labs → ui-shell}/UiShell/createMessageBus.ts +0 -0
  323. /package/src/{labs → ui-shell}/UiShell/createStore.test.ts +0 -0
  324. /package/src/{labs → ui-shell}/UiShell/createStore.ts +0 -0
  325. /package/src/{labs → ui-shell}/UiShell/index.ts +0 -0
  326. /package/src/{labs → ui-shell}/UiShell/useScrollState.ts +0 -0
@@ -0,0 +1,303 @@
1
+ /*!
2
+ * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.
3
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
4
+ *
5
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
6
+ * Unless required by applicable law or agreed to in writing, software
7
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
8
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ *
10
+ * See the License for the specific language governing permissions and limitations under the License.
11
+ */
12
+
13
+ import { memo, useCallback, useEffect, useMemo, useRef } from "react";
14
+ import { useTranslation } from "react-i18next";
15
+ import {
16
+ type DateTimePickerSlots,
17
+ DateTimePicker as MuiDateTimePicker,
18
+ DateTimePickerProps as MuiDateTimePickerProps,
19
+ DateTimePickerSlotProps,
20
+ } from "@mui/x-date-pickers";
21
+ import { DateTime } from "luxon";
22
+ import styled from "@emotion/styled";
23
+
24
+ import { Button } from "../../Buttons";
25
+ import { DateFieldActionBar } from "./DateFieldActionBar";
26
+ import { DateFieldLocalizationProvider } from "./DateFieldLocalizationProvider";
27
+ import { DateTimeField, DateTimeFieldProps } from "./DateTimeField";
28
+ import { dateTimePickerTheme } from "./dateTimePickerTheme";
29
+ import { FieldComponentProps } from "../../FieldComponentProps";
30
+ import { CalendarIcon, ClockIcon } from "../../icons.generated";
31
+ import {
32
+ useOdysseyDesignTokens,
33
+ DesignTokens,
34
+ } from "../../OdysseyDesignTokensContext";
35
+ import { OdysseyThemeProvider } from "../../OdysseyThemeProvider";
36
+ import { TimeZonePicker } from "../TimeZonePicker";
37
+
38
+ import {
39
+ useOdysseyDateFields,
40
+ OdysseyDateFieldProps,
41
+ } from "./useOdysseyDateFields";
42
+
43
+ const DatePickerContainer = styled.div({
44
+ ".MuiFormControl-root": {
45
+ marginBlockEnd: 0,
46
+ },
47
+ });
48
+
49
+ const DatePickerWidthContainer = styled.div<{
50
+ odysseyDesignTokens: DesignTokens;
51
+ }>(({ odysseyDesignTokens }) => ({
52
+ ".MuiInput-root": {
53
+ width: "100%",
54
+ maxWidth: odysseyDesignTokens.TypographyLineLengthMax,
55
+ },
56
+ }));
57
+
58
+ const TimeZonePickerContainer = styled("div", {
59
+ shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
60
+ })(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({
61
+ marginBlockStart: odysseyDesignTokens.Spacing3,
62
+ }));
63
+
64
+ type RenderDateTimeFieldProps = {
65
+ defaultValue: DateTimeFieldProps["defaultValue"];
66
+ value: DateTimeFieldProps["value"];
67
+ } & MuiDateTimePickerProps<DateTime>;
68
+
69
+ export type DateTimePickerProps = OdysseyDateFieldProps &
70
+ Pick<
71
+ FieldComponentProps,
72
+ | "errorMessage"
73
+ | "hint"
74
+ | "HintLinkComponent"
75
+ | "isDisabled"
76
+ | "isReadOnly"
77
+ | "isOptional"
78
+ >;
79
+
80
+ const DateTimePicker = ({
81
+ defaultValue: defaultValueProp,
82
+ errorMessage,
83
+ hint,
84
+ HintLinkComponent,
85
+ isDateEnabled = () => true,
86
+ isDisabled,
87
+ isOptional,
88
+ isReadOnly,
89
+ isMonthEnabled = () => true,
90
+ isYearEnabled = () => true,
91
+ label,
92
+ minDate: minDateProp,
93
+ maxDate: maxDateProp,
94
+ onBlur,
95
+ onCalendarDateChange,
96
+ onInputChange: onInputChangeProp,
97
+ timeZone,
98
+ timeZonePickerLabel,
99
+ timeZoneOptions,
100
+ value: valueProp,
101
+ }: DateTimePickerProps) => {
102
+ const { i18n, t } = useTranslation();
103
+ const inputRef = useRef<HTMLInputElement>(null);
104
+ const odysseyDesignTokens = useOdysseyDesignTokens();
105
+
106
+ const {
107
+ closeCalendar,
108
+ commonIcons,
109
+ defaultedLanguageCode,
110
+ formatDateTimeToUtcIsoDateString,
111
+ formatDayOfWeek,
112
+ inputValues,
113
+ internalTimeZone,
114
+ isOpen,
115
+ localeText,
116
+ minDate,
117
+ maxDate,
118
+ onInputChange,
119
+ onTimeZoneChange,
120
+ popperElement,
121
+ setPopperElement,
122
+ shouldDisableDate,
123
+ shouldDisableMonth,
124
+ shouldDisableYear,
125
+ toggleCalendarVisibility,
126
+ } = useOdysseyDateFields({
127
+ defaultValue: defaultValueProp,
128
+ errorMessage,
129
+ isDateEnabled,
130
+ isMonthEnabled,
131
+ isYearEnabled,
132
+ minDate: minDateProp,
133
+ maxDate: maxDateProp,
134
+ onInputChange: onInputChangeProp,
135
+ timeZone,
136
+ value: valueProp,
137
+ });
138
+
139
+ const { language } = i18n;
140
+ const containerRef = useRef<HTMLInputElement>(null);
141
+
142
+ useEffect(() => {
143
+ setPopperElement(containerRef.current);
144
+ }, [setPopperElement]);
145
+
146
+ const formatDateTimeToJsDateStringOnCalendarSelection = useCallback<
147
+ NonNullable<MuiDateTimePickerProps<DateTime>["onChange"]>
148
+ >(
149
+ (value) => {
150
+ if (value) {
151
+ const dateStringFromDateTime = formatDateTimeToUtcIsoDateString(value);
152
+
153
+ if (dateStringFromDateTime) {
154
+ onCalendarDateChange?.({
155
+ value: dateStringFromDateTime,
156
+ timeZone: internalTimeZone,
157
+ });
158
+ }
159
+ }
160
+ },
161
+ [formatDateTimeToUtcIsoDateString, internalTimeZone, onCalendarDateChange],
162
+ );
163
+
164
+ const renderDateTimeField = useCallback(
165
+ ({ defaultValue, inputRef, value }: RenderDateTimeFieldProps) => {
166
+ return (
167
+ <DateTimeField
168
+ defaultValue={defaultValue}
169
+ endAdornment={
170
+ <Button
171
+ ariaLabel={t("picker.labels.date.choose")}
172
+ label=""
173
+ onClick={toggleCalendarVisibility}
174
+ size="small"
175
+ startIcon={<commonIcons.CalendarIcon />}
176
+ variant="floating"
177
+ />
178
+ }
179
+ errorMessage={errorMessage}
180
+ hint={hint}
181
+ HintLinkComponent={HintLinkComponent}
182
+ inputRef={inputRef}
183
+ isDisabled={isDisabled}
184
+ isOptional={isOptional}
185
+ isReadOnly={isReadOnly}
186
+ label={label}
187
+ onBlur={onBlur}
188
+ minDate={minDate}
189
+ maxDate={maxDate}
190
+ onChange={onInputChange}
191
+ timezone={internalTimeZone}
192
+ value={value}
193
+ />
194
+ );
195
+ },
196
+ [
197
+ commonIcons,
198
+ errorMessage,
199
+ hint,
200
+ HintLinkComponent,
201
+ internalTimeZone,
202
+ isDisabled,
203
+ isOptional,
204
+ isReadOnly,
205
+ label,
206
+ onBlur,
207
+ onInputChange,
208
+ minDate,
209
+ maxDate,
210
+ t,
211
+ toggleCalendarVisibility,
212
+ ],
213
+ );
214
+
215
+ const slots = useMemo<DateTimePickerSlots<DateTime>>(
216
+ () => ({
217
+ actionBar: DateFieldActionBar,
218
+ field: (muiProps) => renderDateTimeField(muiProps),
219
+ leftArrowIcon: () => <commonIcons.ArrowLeftIcon />,
220
+ rightArrowIcon: () => <commonIcons.ArrowRightIcon />,
221
+ switchViewIcon: () => <commonIcons.ChevronDownIcon />,
222
+ }),
223
+ [commonIcons, renderDateTimeField],
224
+ );
225
+
226
+ const slotProps = useMemo<DateTimePickerSlotProps<DateTime, false>>(
227
+ () => ({
228
+ actionBar: ({ wrapperVariant, onAccept, onCancel }) => ({
229
+ actions:
230
+ // This is the default behavior but felt more clear to pass them in explicitly
231
+ wrapperVariant === "desktop" ? [] : ["accept", "cancel"],
232
+ onAccept,
233
+ onCancel,
234
+ }),
235
+ popper: {
236
+ anchorEl: popperElement,
237
+ },
238
+ tabs: {
239
+ dateIcon: <CalendarIcon />,
240
+ timeIcon: <ClockIcon />,
241
+ },
242
+ toolbar: {
243
+ toolbarPlaceholder: "",
244
+ },
245
+ }),
246
+ [popperElement],
247
+ );
248
+
249
+ return (
250
+ <OdysseyThemeProvider themeOverride={dateTimePickerTheme}>
251
+ <DateFieldLocalizationProvider
252
+ defaultedLanguageCode={defaultedLanguageCode}
253
+ localeText={localeText}
254
+ >
255
+ <DatePickerContainer>
256
+ <DatePickerWidthContainer
257
+ odysseyDesignTokens={odysseyDesignTokens}
258
+ ref={containerRef}
259
+ >
260
+ <MuiDateTimePicker
261
+ dayOfWeekFormatter={formatDayOfWeek}
262
+ defaultValue={inputValues?.defaultValue}
263
+ disabled={isDisabled}
264
+ fixedWeekNumber={6}
265
+ inputRef={inputRef}
266
+ key={language}
267
+ label={label}
268
+ minDate={minDate}
269
+ maxDate={maxDate}
270
+ onChange={formatDateTimeToJsDateStringOnCalendarSelection}
271
+ onClose={closeCalendar}
272
+ open={isOpen}
273
+ readOnly={isReadOnly}
274
+ shouldDisableDate={shouldDisableDate}
275
+ shouldDisableMonth={shouldDisableMonth}
276
+ shouldDisableYear={shouldDisableYear}
277
+ slots={slots}
278
+ slotProps={slotProps}
279
+ timezone={internalTimeZone}
280
+ value={inputValues?.value}
281
+ />
282
+ </DatePickerWidthContainer>
283
+ </DatePickerContainer>
284
+ {timeZoneOptions && timeZonePickerLabel && (
285
+ <TimeZonePickerContainer odysseyDesignTokens={odysseyDesignTokens}>
286
+ <TimeZonePicker
287
+ label={timeZonePickerLabel}
288
+ onTimeZoneChange={onTimeZoneChange}
289
+ isReadOnly={isReadOnly}
290
+ timeZoneOptions={timeZoneOptions}
291
+ value={internalTimeZone}
292
+ />
293
+ </TimeZonePickerContainer>
294
+ )}
295
+ </DateFieldLocalizationProvider>
296
+ </OdysseyThemeProvider>
297
+ );
298
+ };
299
+
300
+ const MemoizedDateTimePicker = memo(DateTimePicker);
301
+ MemoizedDateTimePicker.displayName = "DateTimePicker";
302
+
303
+ export { MemoizedDateTimePicker as DateTimePicker };
@@ -11,7 +11,7 @@
11
11
  */
12
12
 
13
13
  import { CSSInterpolation } from "@mui/material/styles";
14
- import { createOdysseyMuiTheme } from "../theme";
14
+ import { createOdysseyMuiTheme } from "../../theme";
15
15
  import { ThemeOptions } from "@mui/material";
16
16
  import * as odysseyTokens from "@okta/odyssey-design-tokens";
17
17
 
@@ -27,7 +27,7 @@ type ThemeStyles = ({
27
27
 
28
28
  type StateStyles = Record<string, ThemeStyles>;
29
29
 
30
- const dateStyles: StateStyles = {
30
+ export const dateStyles: StateStyles = {
31
31
  default: ({ theme }) => ({
32
32
  color: theme.palette.text.primary,
33
33
  }),
@@ -0,0 +1,213 @@
1
+ /*!
2
+ * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.
3
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
4
+ *
5
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
6
+ * Unless required by applicable law or agreed to in writing, software
7
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
8
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ *
10
+ * See the License for the specific language governing permissions and limitations under the License.
11
+ */
12
+
13
+ // import { CSSInterpolation } from "@mui/material/styles";
14
+ import { deepmerge } from "@mui/utils";
15
+ import { ThemeOptions } from "@mui/material";
16
+
17
+ import { datePickerTheme, dateStyles } from "./datePickerTheme";
18
+
19
+ const theme: ThemeOptions = {
20
+ components: {
21
+ MuiClock: {
22
+ styleOverrides: {
23
+ clock: ({ theme }) => ({
24
+ width: `calc(${theme.spacing(9)} * 4)`,
25
+ height: `calc(${theme.spacing(9)} * 4)`,
26
+ backgroundColor: theme.palette.grey[50],
27
+ }),
28
+ pin: ({ theme }) => ({
29
+ backgroundColor: theme.palette.primary.light,
30
+ }),
31
+ },
32
+ },
33
+ MuiClockPointer: {
34
+ styleOverrides: {
35
+ root: ({ theme }) => ({
36
+ backgroundColor: theme.palette.primary.light,
37
+ }),
38
+ thumb: ({ theme }) => ({
39
+ borderColor: theme.palette.primary.light,
40
+ backgroundColor: theme.palette.primary.main,
41
+ }),
42
+ },
43
+ },
44
+ MuiDateCalendar: {
45
+ styleOverrides: {
46
+ root: {
47
+ display: "block",
48
+ width: "100%",
49
+ },
50
+ },
51
+ },
52
+ MuiPickersArrowSwitcher: {
53
+ styleOverrides: {
54
+ button: ({ theme }) => ({
55
+ display: "flex",
56
+ margin: 0,
57
+ padding: theme.spacing(2),
58
+ color: theme.typography.body1.color,
59
+
60
+ "& + &": {
61
+ marginInlineStart: theme.spacing(2),
62
+ },
63
+
64
+ svg: {
65
+ display: "flex",
66
+ },
67
+ }),
68
+ spacer: ({ theme }) => ({
69
+ width: theme.spacing(1),
70
+ }),
71
+ },
72
+ },
73
+ MuiPickersLayout: {
74
+ styleOverrides: {
75
+ contentWrapper: ({ theme }) => ({
76
+ padding: theme.spacing(3),
77
+ gridTemplateColumns: "1fr 16px auto",
78
+ }),
79
+ },
80
+ },
81
+ MuiMultiSectionDigitalClockSection: {
82
+ styleOverrides: {
83
+ root: {
84
+ width: "auto",
85
+ },
86
+ item: ({ theme }) => [
87
+ dateStyles.default({ theme }),
88
+ {
89
+ margin: 0,
90
+ marginInline: theme.spacing(1),
91
+ "& + &": {
92
+ marginBlockStart: theme.spacing(1),
93
+ },
94
+ "&:hover": dateStyles.hover({ theme }),
95
+ "&:focus": dateStyles.focus({ theme }),
96
+
97
+ "&.Mui-selected, &.Mui-selected:focus": dateStyles.selected({
98
+ theme,
99
+ }),
100
+ "&.Mui-selected:hover": dateStyles.hoverSelected({ theme }),
101
+
102
+ "&.Mui-disabled": dateStyles.disabled({ theme }),
103
+ },
104
+ ],
105
+ },
106
+ },
107
+ MuiDateTimePickerToolbar: {
108
+ styleOverrides: {
109
+ root: ({ theme }) => ({
110
+ padding: theme.spacing(3),
111
+ }),
112
+ dateContainer: ({ theme }) => ({
113
+ flexDirection: "row-reverse",
114
+
115
+ button: {
116
+ "+ button": {
117
+ marginInlineEnd: theme.spacing(2),
118
+ },
119
+ },
120
+ }),
121
+ timeDigitsContainer: {
122
+ alignItems: "center",
123
+ },
124
+ ampmSelection: ({ theme }) => ({
125
+ margin: 0,
126
+ marginInlineStart: theme.spacing(3),
127
+
128
+ button: {
129
+ padding: theme.spacing(2),
130
+
131
+ "&:has(.Mui-selected)": {
132
+ backgroundColor: theme.palette.primary.main,
133
+
134
+ ".Mui-selected": {
135
+ color: theme.palette.common.white,
136
+ "&::after": {
137
+ display: "none",
138
+ },
139
+ },
140
+ },
141
+ },
142
+ }),
143
+ separator: ({ theme }) => ({
144
+ ...theme.typography.h5,
145
+ marginBlock: 0,
146
+ marginInline: theme.spacing(1),
147
+ }),
148
+ },
149
+ },
150
+ MuiPickersToolbarButton: {
151
+ styleOverrides: {
152
+ root: ({ theme }) => ({
153
+ height: "auto",
154
+ padding: 0,
155
+ margin: 0,
156
+ border: 0,
157
+ borderRadius: theme.mixins.borderRadius,
158
+ backgroundColor: "transparent",
159
+ color: theme.typography.subtitle1.color,
160
+
161
+ "&:hover": {
162
+ backgroundColor: "transparent",
163
+ },
164
+
165
+ "& + &": {
166
+ marginInlineStart: 0,
167
+ },
168
+ }),
169
+ },
170
+ },
171
+ MuiPickersToolbarText: {
172
+ styleOverrides: {
173
+ root: ({ theme }) => ({
174
+ ...theme.typography.h5,
175
+ position: "relative",
176
+ margin: 0,
177
+ lineHeight: 1,
178
+ color: "inherit",
179
+
180
+ "&::after": {
181
+ position: "absolute",
182
+ left: 0,
183
+ bottom: 0,
184
+ width: "100%",
185
+ height: 2,
186
+ backgroundColor: "currentColor",
187
+ opacity: 0,
188
+ content: "''",
189
+ transition: "opacity 100ms, transform 200ms",
190
+ },
191
+
192
+ "&.Mui-selected": {
193
+ color: theme.typography.body1.color,
194
+
195
+ "&::after": {
196
+ transform: "translateY(2px)",
197
+ opacity: 1,
198
+ },
199
+ },
200
+ }),
201
+ },
202
+ },
203
+ MuiTimeClock: {
204
+ styleOverrides: {
205
+ arrowSwitcher: {
206
+ top: 0,
207
+ right: 0,
208
+ },
209
+ },
210
+ },
211
+ },
212
+ };
213
+ export const dateTimePickerTheme = deepmerge(datePickerTheme, theme);
@@ -0,0 +1,15 @@
1
+ /*!
2
+ * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.
3
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
4
+ *
5
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
6
+ * Unless required by applicable law or agreed to in writing, software
7
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
8
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ *
10
+ * See the License for the specific language governing permissions and limitations under the License.
11
+ */
12
+
13
+ export * from "./DatePicker";
14
+ export * from "./DateTimePicker";
15
+ export * from "./datePickerTheme";