@okta/odyssey-react-mui 1.20.0 → 1.21.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 (371) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/DataTable/DataTable.js +101 -63
  3. package/dist/DataTable/DataTable.js.map +1 -1
  4. package/dist/Pagination/Pagination.js +29 -20
  5. package/dist/Pagination/Pagination.js.map +1 -1
  6. package/dist/Pagination/usePagination.js +13 -22
  7. package/dist/Pagination/usePagination.js.map +1 -1
  8. package/dist/assertEnv.js +1 -1
  9. package/dist/index.scss +1 -1
  10. package/dist/labs/DataComponents/DataStack.js +6 -0
  11. package/dist/labs/DataComponents/DataStack.js.map +1 -1
  12. package/dist/labs/DataComponents/DataTable.js +6 -0
  13. package/dist/labs/DataComponents/DataTable.js.map +1 -1
  14. package/dist/labs/DataComponents/DataView.js +15 -1
  15. package/dist/labs/DataComponents/DataView.js.map +1 -1
  16. package/dist/labs/DataComponents/TableContent.js +49 -3
  17. package/dist/labs/DataComponents/TableContent.js.map +1 -1
  18. package/dist/labs/DataComponents/TableSettings.js +28 -38
  19. package/dist/labs/DataComponents/TableSettings.js.map +1 -1
  20. package/dist/labs/DataComponents/componentTypes.js.map +1 -1
  21. package/dist/labs/DataComponents/constants.js.map +1 -1
  22. package/dist/labs/DataComponents/tableConstants.js +0 -19
  23. package/dist/labs/DataComponents/tableConstants.js.map +1 -1
  24. package/dist/labs/DataComponents/useFilterConversion.js +8 -15
  25. package/dist/labs/DataComponents/useFilterConversion.js.map +1 -1
  26. package/dist/labs/DateField.js +97 -10
  27. package/dist/labs/DateField.js.map +1 -1
  28. package/dist/labs/DatePicker.js +113 -51
  29. package/dist/labs/DatePicker.js.map +1 -1
  30. package/dist/labs/TimeZonePicker.js +37 -0
  31. package/dist/labs/TimeZonePicker.js.map +1 -0
  32. package/dist/labs/TopNav.js +280 -0
  33. package/dist/labs/TopNav.js.map +1 -0
  34. package/dist/labs/datePickerTheme.js +8 -5
  35. package/dist/labs/datePickerTheme.js.map +1 -1
  36. package/dist/labs/index.js +1 -0
  37. package/dist/labs/index.js.map +1 -1
  38. package/dist/labs/{useDatePickerTranslations.js → useDateFieldsTranslations.js} +2 -2
  39. package/dist/labs/{useDatePickerTranslations.js.map → useDateFieldsTranslations.js.map} +1 -1
  40. package/dist/labs/useOdysseyDateFields.js +101 -0
  41. package/dist/labs/useOdysseyDateFields.js.map +1 -0
  42. package/dist/properties/ts/odyssey-react-mui.js +3 -0
  43. package/dist/properties/ts/odyssey-react-mui.js.map +1 -1
  44. package/dist/src/Autocomplete.d.ts +2 -1
  45. package/dist/src/Autocomplete.d.ts.map +1 -1
  46. package/dist/src/Badge.d.ts +0 -1
  47. package/dist/src/Badge.d.ts.map +1 -1
  48. package/dist/src/Banner.d.ts +0 -1
  49. package/dist/src/Banner.d.ts.map +1 -1
  50. package/dist/src/ButtonContext.d.ts +0 -1
  51. package/dist/src/ButtonContext.d.ts.map +1 -1
  52. package/dist/src/Checkbox.d.ts +0 -1
  53. package/dist/src/Checkbox.d.ts.map +1 -1
  54. package/dist/src/CircularProgress.d.ts +0 -1
  55. package/dist/src/CircularProgress.d.ts.map +1 -1
  56. package/dist/src/DataTable/DataTable.d.ts +14 -1
  57. package/dist/src/DataTable/DataTable.d.ts.map +1 -1
  58. package/dist/src/DataTable/useRowReordering.d.ts.map +1 -1
  59. package/dist/src/ErrorMessageList.d.ts +0 -1
  60. package/dist/src/ErrorMessageList.d.ts.map +1 -1
  61. package/dist/src/Field.d.ts.map +1 -1
  62. package/dist/src/FieldError.d.ts +0 -1
  63. package/dist/src/FieldError.d.ts.map +1 -1
  64. package/dist/src/FieldHint.d.ts +0 -1
  65. package/dist/src/FieldHint.d.ts.map +1 -1
  66. package/dist/src/FieldLabel.d.ts +0 -1
  67. package/dist/src/FieldLabel.d.ts.map +1 -1
  68. package/dist/src/FieldsetContext.d.ts +0 -1
  69. package/dist/src/FieldsetContext.d.ts.map +1 -1
  70. package/dist/src/HintLink.d.ts +0 -1
  71. package/dist/src/HintLink.d.ts.map +1 -1
  72. package/dist/src/MuiPropsContext.d.ts +0 -1
  73. package/dist/src/MuiPropsContext.d.ts.map +1 -1
  74. package/dist/src/NativeSelect.d.ts +4 -4
  75. package/dist/src/NativeSelect.d.ts.map +1 -1
  76. package/dist/src/OdysseyDesignTokensContext.d.ts +0 -1
  77. package/dist/src/OdysseyDesignTokensContext.d.ts.map +1 -1
  78. package/dist/src/OdysseyProvider.d.ts +2 -1
  79. package/dist/src/OdysseyProvider.d.ts.map +1 -1
  80. package/dist/src/OdysseyTranslationProvider.d.ts +1 -1
  81. package/dist/src/OdysseyTranslationProvider.d.ts.map +1 -1
  82. package/dist/src/Pagination/Pagination.d.ts +41 -26
  83. package/dist/src/Pagination/Pagination.d.ts.map +1 -1
  84. package/dist/src/Pagination/usePagination.d.ts +2 -1
  85. package/dist/src/Pagination/usePagination.d.ts.map +1 -1
  86. package/dist/src/PasswordField.d.ts +10 -10
  87. package/dist/src/PasswordField.d.ts.map +1 -1
  88. package/dist/src/Radio.d.ts +0 -1
  89. package/dist/src/Radio.d.ts.map +1 -1
  90. package/dist/src/SearchField.d.ts +11 -11
  91. package/dist/src/SearchField.d.ts.map +1 -1
  92. package/dist/src/Select.d.ts +0 -1
  93. package/dist/src/Select.d.ts.map +1 -1
  94. package/dist/src/Status.d.ts +0 -1
  95. package/dist/src/Status.d.ts.map +1 -1
  96. package/dist/src/Tabs.d.ts.map +1 -1
  97. package/dist/src/TagListContext.d.ts +0 -1
  98. package/dist/src/TagListContext.d.ts.map +1 -1
  99. package/dist/src/TextField.d.ts +12 -12
  100. package/dist/src/TextField.d.ts.map +1 -1
  101. package/dist/src/Toast.d.ts +0 -1
  102. package/dist/src/Toast.d.ts.map +1 -1
  103. package/dist/src/icons.generated/Add.d.ts +0 -1
  104. package/dist/src/icons.generated/Add.d.ts.map +1 -1
  105. package/dist/src/icons.generated/AddCircle.d.ts +0 -1
  106. package/dist/src/icons.generated/AddCircle.d.ts.map +1 -1
  107. package/dist/src/icons.generated/Apps.d.ts +0 -1
  108. package/dist/src/icons.generated/Apps.d.ts.map +1 -1
  109. package/dist/src/icons.generated/ArrowBottom.d.ts +0 -1
  110. package/dist/src/icons.generated/ArrowBottom.d.ts.map +1 -1
  111. package/dist/src/icons.generated/ArrowDown.d.ts +0 -1
  112. package/dist/src/icons.generated/ArrowDown.d.ts.map +1 -1
  113. package/dist/src/icons.generated/ArrowLeft.d.ts +0 -1
  114. package/dist/src/icons.generated/ArrowLeft.d.ts.map +1 -1
  115. package/dist/src/icons.generated/ArrowLowerLeft.d.ts +0 -1
  116. package/dist/src/icons.generated/ArrowLowerLeft.d.ts.map +1 -1
  117. package/dist/src/icons.generated/ArrowLowerRight.d.ts +0 -1
  118. package/dist/src/icons.generated/ArrowLowerRight.d.ts.map +1 -1
  119. package/dist/src/icons.generated/ArrowRight.d.ts +0 -1
  120. package/dist/src/icons.generated/ArrowRight.d.ts.map +1 -1
  121. package/dist/src/icons.generated/ArrowTop.d.ts +0 -1
  122. package/dist/src/icons.generated/ArrowTop.d.ts.map +1 -1
  123. package/dist/src/icons.generated/ArrowUnsorted.d.ts +0 -1
  124. package/dist/src/icons.generated/ArrowUnsorted.d.ts.map +1 -1
  125. package/dist/src/icons.generated/ArrowUp.d.ts +0 -1
  126. package/dist/src/icons.generated/ArrowUp.d.ts.map +1 -1
  127. package/dist/src/icons.generated/ArrowUpperLeft.d.ts +0 -1
  128. package/dist/src/icons.generated/ArrowUpperLeft.d.ts.map +1 -1
  129. package/dist/src/icons.generated/ArrowUpperRight.d.ts +0 -1
  130. package/dist/src/icons.generated/ArrowUpperRight.d.ts.map +1 -1
  131. package/dist/src/icons.generated/Bug.d.ts +0 -1
  132. package/dist/src/icons.generated/Bug.d.ts.map +1 -1
  133. package/dist/src/icons.generated/Calendar.d.ts +0 -1
  134. package/dist/src/icons.generated/Calendar.d.ts.map +1 -1
  135. package/dist/src/icons.generated/Call.d.ts +0 -1
  136. package/dist/src/icons.generated/Call.d.ts.map +1 -1
  137. package/dist/src/icons.generated/Chat.d.ts +0 -1
  138. package/dist/src/icons.generated/Chat.d.ts.map +1 -1
  139. package/dist/src/icons.generated/Check.d.ts +0 -1
  140. package/dist/src/icons.generated/Check.d.ts.map +1 -1
  141. package/dist/src/icons.generated/CheckCircleFilled.d.ts +0 -1
  142. package/dist/src/icons.generated/CheckCircleFilled.d.ts.map +1 -1
  143. package/dist/src/icons.generated/ChevronDown.d.ts +0 -1
  144. package/dist/src/icons.generated/ChevronDown.d.ts.map +1 -1
  145. package/dist/src/icons.generated/ChevronLeft.d.ts +0 -1
  146. package/dist/src/icons.generated/ChevronLeft.d.ts.map +1 -1
  147. package/dist/src/icons.generated/ChevronRight.d.ts +0 -1
  148. package/dist/src/icons.generated/ChevronRight.d.ts.map +1 -1
  149. package/dist/src/icons.generated/ChevronUp.d.ts +0 -1
  150. package/dist/src/icons.generated/ChevronUp.d.ts.map +1 -1
  151. package/dist/src/icons.generated/Clock.d.ts +0 -1
  152. package/dist/src/icons.generated/Clock.d.ts.map +1 -1
  153. package/dist/src/icons.generated/Close.d.ts +0 -1
  154. package/dist/src/icons.generated/Close.d.ts.map +1 -1
  155. package/dist/src/icons.generated/CloseCircleFilled.d.ts +0 -1
  156. package/dist/src/icons.generated/CloseCircleFilled.d.ts.map +1 -1
  157. package/dist/src/icons.generated/CollapseLeft.d.ts +0 -1
  158. package/dist/src/icons.generated/CollapseLeft.d.ts.map +1 -1
  159. package/dist/src/icons.generated/CollapseRight.d.ts +0 -1
  160. package/dist/src/icons.generated/CollapseRight.d.ts.map +1 -1
  161. package/dist/src/icons.generated/Copy.d.ts +0 -1
  162. package/dist/src/icons.generated/Copy.d.ts.map +1 -1
  163. package/dist/src/icons.generated/Custom.d.ts +0 -1
  164. package/dist/src/icons.generated/Custom.d.ts.map +1 -1
  165. package/dist/src/icons.generated/DangerDiamond.d.ts +0 -1
  166. package/dist/src/icons.generated/DangerDiamond.d.ts.map +1 -1
  167. package/dist/src/icons.generated/DangerDiamondFilled.d.ts +0 -1
  168. package/dist/src/icons.generated/DangerDiamondFilled.d.ts.map +1 -1
  169. package/dist/src/icons.generated/Delete.d.ts +0 -1
  170. package/dist/src/icons.generated/Delete.d.ts.map +1 -1
  171. package/dist/src/icons.generated/Deny.d.ts +0 -1
  172. package/dist/src/icons.generated/Deny.d.ts.map +1 -1
  173. package/dist/src/icons.generated/Devices.d.ts +0 -1
  174. package/dist/src/icons.generated/Devices.d.ts.map +1 -1
  175. package/dist/src/icons.generated/Directory.d.ts +0 -1
  176. package/dist/src/icons.generated/Directory.d.ts.map +1 -1
  177. package/dist/src/icons.generated/Documentation.d.ts +0 -1
  178. package/dist/src/icons.generated/Documentation.d.ts.map +1 -1
  179. package/dist/src/icons.generated/Download.d.ts +0 -1
  180. package/dist/src/icons.generated/Download.d.ts.map +1 -1
  181. package/dist/src/icons.generated/DragIndicator.d.ts +0 -1
  182. package/dist/src/icons.generated/DragIndicator.d.ts.map +1 -1
  183. package/dist/src/icons.generated/Duo.d.ts +0 -1
  184. package/dist/src/icons.generated/Duo.d.ts.map +1 -1
  185. package/dist/src/icons.generated/Edit.d.ts +0 -1
  186. package/dist/src/icons.generated/Edit.d.ts.map +1 -1
  187. package/dist/src/icons.generated/Email.d.ts +0 -1
  188. package/dist/src/icons.generated/Email.d.ts.map +1 -1
  189. package/dist/src/icons.generated/ExpandLeft.d.ts +0 -1
  190. package/dist/src/icons.generated/ExpandLeft.d.ts.map +1 -1
  191. package/dist/src/icons.generated/ExpandRight.d.ts +0 -1
  192. package/dist/src/icons.generated/ExpandRight.d.ts.map +1 -1
  193. package/dist/src/icons.generated/ExternalLink.d.ts +0 -1
  194. package/dist/src/icons.generated/ExternalLink.d.ts.map +1 -1
  195. package/dist/src/icons.generated/Fido2.d.ts +0 -1
  196. package/dist/src/icons.generated/Fido2.d.ts.map +1 -1
  197. package/dist/src/icons.generated/Filter.d.ts +0 -1
  198. package/dist/src/icons.generated/Filter.d.ts.map +1 -1
  199. package/dist/src/icons.generated/Folder.d.ts +0 -1
  200. package/dist/src/icons.generated/Folder.d.ts.map +1 -1
  201. package/dist/src/icons.generated/Globe.d.ts +0 -1
  202. package/dist/src/icons.generated/Globe.d.ts.map +1 -1
  203. package/dist/src/icons.generated/GoogleAuth.d.ts +0 -1
  204. package/dist/src/icons.generated/GoogleAuth.d.ts.map +1 -1
  205. package/dist/src/icons.generated/Grid.d.ts +0 -1
  206. package/dist/src/icons.generated/Grid.d.ts.map +1 -1
  207. package/dist/src/icons.generated/Group.d.ts +0 -1
  208. package/dist/src/icons.generated/Group.d.ts.map +1 -1
  209. package/dist/src/icons.generated/Hide.d.ts +0 -1
  210. package/dist/src/icons.generated/Hide.d.ts.map +1 -1
  211. package/dist/src/icons.generated/Home.d.ts +0 -1
  212. package/dist/src/icons.generated/Home.d.ts.map +1 -1
  213. package/dist/src/icons.generated/Idp.d.ts +0 -1
  214. package/dist/src/icons.generated/Idp.d.ts.map +1 -1
  215. package/dist/src/icons.generated/InformationCircle.d.ts +0 -1
  216. package/dist/src/icons.generated/InformationCircle.d.ts.map +1 -1
  217. package/dist/src/icons.generated/InformationCircleFilled.d.ts +0 -1
  218. package/dist/src/icons.generated/InformationCircleFilled.d.ts.map +1 -1
  219. package/dist/src/icons.generated/Link.d.ts +0 -1
  220. package/dist/src/icons.generated/Link.d.ts.map +1 -1
  221. package/dist/src/icons.generated/List.d.ts +0 -1
  222. package/dist/src/icons.generated/List.d.ts.map +1 -1
  223. package/dist/src/icons.generated/Lock.d.ts +0 -1
  224. package/dist/src/icons.generated/Lock.d.ts.map +1 -1
  225. package/dist/src/icons.generated/More.d.ts +0 -1
  226. package/dist/src/icons.generated/More.d.ts.map +1 -1
  227. package/dist/src/icons.generated/Notification.d.ts +0 -1
  228. package/dist/src/icons.generated/Notification.d.ts.map +1 -1
  229. package/dist/src/icons.generated/OktaVerify.d.ts +0 -1
  230. package/dist/src/icons.generated/OktaVerify.d.ts.map +1 -1
  231. package/dist/src/icons.generated/OnPremMfa.d.ts +0 -1
  232. package/dist/src/icons.generated/OnPremMfa.d.ts.map +1 -1
  233. package/dist/src/icons.generated/OneTimePassword.d.ts +0 -1
  234. package/dist/src/icons.generated/OneTimePassword.d.ts.map +1 -1
  235. package/dist/src/icons.generated/Password.d.ts +0 -1
  236. package/dist/src/icons.generated/Password.d.ts.map +1 -1
  237. package/dist/src/icons.generated/Pause.d.ts +0 -1
  238. package/dist/src/icons.generated/Pause.d.ts.map +1 -1
  239. package/dist/src/icons.generated/QuestionCircle.d.ts +0 -1
  240. package/dist/src/icons.generated/QuestionCircle.d.ts.map +1 -1
  241. package/dist/src/icons.generated/QuestionCircleFilled.d.ts +0 -1
  242. package/dist/src/icons.generated/QuestionCircleFilled.d.ts.map +1 -1
  243. package/dist/src/icons.generated/Refresh.d.ts +0 -1
  244. package/dist/src/icons.generated/Refresh.d.ts.map +1 -1
  245. package/dist/src/icons.generated/Reset.d.ts +0 -1
  246. package/dist/src/icons.generated/Reset.d.ts.map +1 -1
  247. package/dist/src/icons.generated/Resume.d.ts +0 -1
  248. package/dist/src/icons.generated/Resume.d.ts.map +1 -1
  249. package/dist/src/icons.generated/Search.d.ts +0 -1
  250. package/dist/src/icons.generated/Search.d.ts.map +1 -1
  251. package/dist/src/icons.generated/SecurityQuestion.d.ts +0 -1
  252. package/dist/src/icons.generated/SecurityQuestion.d.ts.map +1 -1
  253. package/dist/src/icons.generated/Server.d.ts +0 -1
  254. package/dist/src/icons.generated/Server.d.ts.map +1 -1
  255. package/dist/src/icons.generated/Settings.d.ts +0 -1
  256. package/dist/src/icons.generated/Settings.d.ts.map +1 -1
  257. package/dist/src/icons.generated/Show.d.ts +0 -1
  258. package/dist/src/icons.generated/Show.d.ts.map +1 -1
  259. package/dist/src/icons.generated/SmartCard.d.ts +0 -1
  260. package/dist/src/icons.generated/SmartCard.d.ts.map +1 -1
  261. package/dist/src/icons.generated/Sms.d.ts +0 -1
  262. package/dist/src/icons.generated/Sms.d.ts.map +1 -1
  263. package/dist/src/icons.generated/Subtract.d.ts +0 -1
  264. package/dist/src/icons.generated/Subtract.d.ts.map +1 -1
  265. package/dist/src/icons.generated/SymantecVip.d.ts +0 -1
  266. package/dist/src/icons.generated/SymantecVip.d.ts.map +1 -1
  267. package/dist/src/icons.generated/Sync.d.ts +0 -1
  268. package/dist/src/icons.generated/Sync.d.ts.map +1 -1
  269. package/dist/src/icons.generated/ThumbsDown.d.ts +0 -1
  270. package/dist/src/icons.generated/ThumbsDown.d.ts.map +1 -1
  271. package/dist/src/icons.generated/ThumbsUp.d.ts +0 -1
  272. package/dist/src/icons.generated/ThumbsUp.d.ts.map +1 -1
  273. package/dist/src/icons.generated/Unlock.d.ts +0 -1
  274. package/dist/src/icons.generated/Unlock.d.ts.map +1 -1
  275. package/dist/src/icons.generated/Upload.d.ts +0 -1
  276. package/dist/src/icons.generated/Upload.d.ts.map +1 -1
  277. package/dist/src/icons.generated/User.d.ts +0 -1
  278. package/dist/src/icons.generated/User.d.ts.map +1 -1
  279. package/dist/src/icons.generated/Video.d.ts +0 -1
  280. package/dist/src/icons.generated/Video.d.ts.map +1 -1
  281. package/dist/src/icons.generated/VoiceCall.d.ts +0 -1
  282. package/dist/src/icons.generated/VoiceCall.d.ts.map +1 -1
  283. package/dist/src/icons.generated/Warning.d.ts +0 -1
  284. package/dist/src/icons.generated/Warning.d.ts.map +1 -1
  285. package/dist/src/icons.generated/WarningFilled.d.ts +0 -1
  286. package/dist/src/icons.generated/WarningFilled.d.ts.map +1 -1
  287. package/dist/src/icons.generated/Yubikey.d.ts +0 -1
  288. package/dist/src/icons.generated/Yubikey.d.ts.map +1 -1
  289. package/dist/src/inputUtils.d.ts.map +1 -1
  290. package/dist/src/labs/DataComponents/DataStack.d.ts +1 -2
  291. package/dist/src/labs/DataComponents/DataStack.d.ts.map +1 -1
  292. package/dist/src/labs/DataComponents/DataTable.d.ts +1 -2
  293. package/dist/src/labs/DataComponents/DataTable.d.ts.map +1 -1
  294. package/dist/src/labs/DataComponents/DataView.d.ts +1 -2
  295. package/dist/src/labs/DataComponents/DataView.d.ts.map +1 -1
  296. package/dist/src/labs/DataComponents/DetailPanel.d.ts +0 -1
  297. package/dist/src/labs/DataComponents/DetailPanel.d.ts.map +1 -1
  298. package/dist/src/labs/DataComponents/TableContent.d.ts.map +1 -1
  299. package/dist/src/labs/DataComponents/TableSettings.d.ts.map +1 -1
  300. package/dist/src/labs/DataComponents/componentTypes.d.ts +5 -2
  301. package/dist/src/labs/DataComponents/componentTypes.d.ts.map +1 -1
  302. package/dist/src/labs/DataComponents/constants.d.ts +6 -4
  303. package/dist/src/labs/DataComponents/constants.d.ts.map +1 -1
  304. package/dist/src/labs/DataComponents/tableConstants.d.ts +6 -25
  305. package/dist/src/labs/DataComponents/tableConstants.d.ts.map +1 -1
  306. package/dist/src/labs/DataComponents/useFilterConversion.d.ts.map +1 -1
  307. package/dist/src/labs/DataTablePagination.d.ts +0 -1
  308. package/dist/src/labs/DataTablePagination.d.ts.map +1 -1
  309. package/dist/src/labs/DateField.d.ts +3 -6
  310. package/dist/src/labs/DateField.d.ts.map +1 -1
  311. package/dist/src/labs/DatePicker.d.ts +20 -19
  312. package/dist/src/labs/DatePicker.d.ts.map +1 -1
  313. package/dist/src/labs/FileUpload.d.ts +0 -1
  314. package/dist/src/labs/FileUpload.d.ts.map +1 -1
  315. package/dist/src/labs/FileUploadIllustration.d.ts +0 -1
  316. package/dist/src/labs/FileUploadIllustration.d.ts.map +1 -1
  317. package/dist/src/labs/FileUploadPreview.d.ts +0 -1
  318. package/dist/src/labs/FileUploadPreview.d.ts.map +1 -1
  319. package/dist/src/labs/GroupPicker.d.ts +2 -1
  320. package/dist/src/labs/GroupPicker.d.ts.map +1 -1
  321. package/dist/src/labs/PaginatedTable.d.ts +2 -1
  322. package/dist/src/labs/PaginatedTable.d.ts.map +1 -1
  323. package/dist/src/labs/StaticTable.d.ts +2 -1
  324. package/dist/src/labs/StaticTable.d.ts.map +1 -1
  325. package/dist/src/labs/Switch.d.ts +0 -1
  326. package/dist/src/labs/Switch.d.ts.map +1 -1
  327. package/dist/src/labs/TimeZonePicker.d.ts +22 -0
  328. package/dist/src/labs/TimeZonePicker.d.ts.map +1 -0
  329. package/dist/src/labs/TopNav.d.ts +77 -0
  330. package/dist/src/labs/TopNav.d.ts.map +1 -0
  331. package/dist/src/labs/datePickerTheme.d.ts.map +1 -1
  332. package/dist/src/labs/index.d.ts +1 -0
  333. package/dist/src/labs/index.d.ts.map +1 -1
  334. package/dist/src/labs/{useDatePickerTranslations.d.ts → useDateFieldsTranslations.d.ts} +3 -2
  335. package/dist/src/labs/useDateFieldsTranslations.d.ts.map +1 -0
  336. package/dist/src/labs/useOdysseyDateFields.d.ts +82 -0
  337. package/dist/src/labs/useOdysseyDateFields.d.ts.map +1 -0
  338. package/dist/src/properties/ts/odyssey-react-mui.d.ts +3 -0
  339. package/dist/src/properties/ts/odyssey-react-mui.d.ts.map +1 -1
  340. package/dist/src/test-selectors/querySelector.d.ts +2 -2
  341. package/dist/src/test-selectors/querySelector.d.ts.map +1 -1
  342. package/dist/src/theme/components.d.ts.map +1 -1
  343. package/dist/theme/components.js +44 -9
  344. package/dist/theme/components.js.map +1 -1
  345. package/dist/tsconfig.production.tsbuildinfo +1 -1
  346. package/dist/tsconfig.tsbuildinfo +1 -1
  347. package/package.json +3 -3
  348. package/src/DataTable/DataTable.tsx +118 -64
  349. package/src/Pagination/Pagination.tsx +82 -46
  350. package/src/Pagination/usePagination.ts +14 -18
  351. package/src/labs/DataComponents/DataStack.tsx +6 -0
  352. package/src/labs/DataComponents/DataTable.tsx +6 -0
  353. package/src/labs/DataComponents/DataView.tsx +16 -0
  354. package/src/labs/DataComponents/TableContent.tsx +66 -9
  355. package/src/labs/DataComponents/TableSettings.tsx +60 -60
  356. package/src/labs/DataComponents/componentTypes.ts +5 -6
  357. package/src/labs/DataComponents/constants.tsx +12 -4
  358. package/src/labs/DataComponents/tableConstants.tsx +0 -19
  359. package/src/labs/DataComponents/useFilterConversion.ts +14 -18
  360. package/src/labs/DateField.tsx +175 -26
  361. package/src/labs/DatePicker.tsx +155 -93
  362. package/src/labs/TimeZonePicker.tsx +55 -0
  363. package/src/labs/TopNav.tsx +394 -0
  364. package/src/labs/datePickerTheme.tsx +6 -4
  365. package/src/labs/index.ts +1 -0
  366. package/src/labs/{useDatePickerTranslations.ts → useDateFieldsTranslations.ts} +3 -1
  367. package/src/labs/useOdysseyDateFields.ts +201 -0
  368. package/src/properties/odyssey-react-mui.properties +3 -0
  369. package/src/properties/ts/odyssey-react-mui.ts +1 -1
  370. package/src/theme/components.tsx +50 -7
  371. package/dist/src/labs/useDatePickerTranslations.d.ts.map +0 -1
@@ -11,8 +11,7 @@
11
11
  */
12
12
 
13
13
  import {
14
- ChangeEvent,
15
- ChangeEventHandler,
14
+ FocusEventHandler,
16
15
  memo,
17
16
  useCallback,
18
17
  useEffect,
@@ -31,7 +30,6 @@ import {
31
30
  } from "@mui/x-date-pickers";
32
31
  import { DateTime } from "luxon";
33
32
  import { AdapterLuxon } from "@mui/x-date-pickers/AdapterLuxon";
34
- import { InputAdornment } from "@mui/material";
35
33
  import styled from "@emotion/styled";
36
34
 
37
35
  import { Button } from "../Button";
@@ -49,21 +47,34 @@ import {
49
47
  DesignTokens,
50
48
  } from "../OdysseyDesignTokensContext";
51
49
  import { OdysseyThemeProvider } from "../OdysseyThemeProvider";
52
- import { useDatePickerTranslations } from "./useDatePickerTranslations";
50
+ import { TimeZonePicker, TimeZonePickerProps } from "./TimeZonePicker";
53
51
 
54
- const DatePickerContainer = styled.div({
55
- display: "flex",
52
+ import {
53
+ useOdysseyDateFields,
54
+ OdysseyDateFieldProps,
55
+ TimeZoneOption,
56
+ } from "./useOdysseyDateFields";
56
57
 
58
+ const DatePickerContainer = styled.div({
57
59
  ".MuiFormControl-root": {
58
60
  marginBlockEnd: 0,
59
61
  },
60
62
  });
61
63
 
62
- const DatePickerWidthContainer = styled.div({
64
+ const DatePickerWidthContainer = styled.div<{
65
+ odysseyDesignTokens: DesignTokens;
66
+ }>(({ odysseyDesignTokens }) => ({
63
67
  ".MuiInput-root": {
64
- width: `${176 / 14}rem`,
68
+ width: "100%",
69
+ maxWidth: odysseyDesignTokens.TypographyLineLengthMax,
65
70
  },
66
- });
71
+ }));
72
+
73
+ const TimeZonePickerContainer = styled("div", {
74
+ shouldForwardProp: (prop) => prop !== "odysseyDesignTokens",
75
+ })(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({
76
+ marginBlockStart: odysseyDesignTokens.Spacing3,
77
+ }));
67
78
 
68
79
  const ActionContainer = styled.div<{ odysseyDesignTokens: DesignTokens }>(
69
80
  ({ odysseyDesignTokens }) => ({
@@ -102,8 +113,6 @@ const ActionBar = ({ actions, onAccept, onCancel }: PickersActionBarProps) => {
102
113
  const MemoizedActionBar = memo(ActionBar);
103
114
  MemoizedActionBar.displayName = "ActionBar";
104
115
 
105
- const formatDateToDateTime = (date: Date) => DateTime.fromJSDate(date);
106
-
107
116
  const formatDayOfWeek = (date: DateTime) => date.toFormat("EEE");
108
117
 
109
118
  type RenderDateFieldProps = {
@@ -113,34 +122,40 @@ type RenderDateFieldProps = {
113
122
 
114
123
  export type DatePickerProps = {
115
124
  /**
116
- * Disable specific date(s).
117
- *
118
- * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.
125
+ * The label for the `input` element.
119
126
  */
120
- isDateEnabled?: (date: Date) => boolean;
127
+ label: string;
121
128
  /**
122
- * Disable specific month(s).
129
+ * Callback fired when the a date field loses focus
123
130
  */
124
- isMonthEnabled?: (date: Date) => boolean;
131
+ onBlur?: FocusEventHandler<HTMLInputElement>;
125
132
  /**
126
- * Disable specific year(s).
133
+ * Callback fired when the a date is selected with the calendar.
127
134
  */
128
- isYearEnabled?: (date: Date) => boolean;
135
+ onCalendarDateChange?: ({
136
+ value,
137
+ timeZone,
138
+ }: {
139
+ value: string | undefined;
140
+ timeZone: string;
141
+ }) => void;
129
142
  /**
130
- * The label for the `input` element.
143
+ * Callback fired when the date/text input changes.
131
144
  */
132
- label: string;
145
+ onInputChange?: (value: string) => void;
133
146
  /**
134
- * Callback fired when the a date is selected with the calendar.
147
+ * If provided, a `TimeZonePicker` will be rendered below the DatePicker. These options will populate as the Autocomplete options
135
148
  */
136
- onCalendarDateChange?: (value: Date) => void;
149
+ timeZoneOptions?: TimeZoneOption[];
137
150
  /**
138
- * Callback fired when the date/text input changes.
151
+ * label for `TimeZonePicker`
139
152
  */
140
- onInputChange?: ChangeEventHandler<HTMLInputElement>;
141
- value?: Date;
142
- } & Pick<FieldComponentProps, "errorMessage" | "hint" | "isDisabled"> &
143
- Pick<MuiDatePickerProps<Date>, "defaultValue" | "minDate" | "maxDate">;
153
+ timeZonePickerLabel?: TimeZonePickerProps["label"];
154
+ } & OdysseyDateFieldProps &
155
+ Pick<
156
+ FieldComponentProps,
157
+ "errorMessage" | "hint" | "isDisabled" | "isReadOnly"
158
+ >;
144
159
 
145
160
  const DatePicker = ({
146
161
  defaultValue: defaultValueProp,
@@ -148,109 +163,138 @@ const DatePicker = ({
148
163
  hint,
149
164
  isDateEnabled = () => true,
150
165
  isDisabled,
166
+ isReadOnly,
151
167
  isMonthEnabled = () => true,
152
168
  isYearEnabled = () => true,
153
169
  label,
154
- minDate,
155
- maxDate,
170
+ minDate: minDateProp,
171
+ maxDate: maxDateProp,
172
+ onBlur,
156
173
  onCalendarDateChange,
157
174
  onInputChange: onInputChangeProp,
175
+ timeZone,
176
+ timeZonePickerLabel,
177
+ timeZoneOptions,
158
178
  value: valueProp,
159
179
  }: DatePickerProps) => {
180
+ const { i18n, t } = useTranslation();
181
+ const inputRef = useRef<HTMLInputElement>(null);
182
+ const odysseyDesignTokens = useOdysseyDesignTokens();
183
+
184
+ const {
185
+ defaultedLanguageCode,
186
+ formatDateTimeToUtcIsoDateString,
187
+ inputValues,
188
+ internalTimeZone,
189
+ isValidTimeZone,
190
+ localeText,
191
+ minDate,
192
+ maxDate,
193
+ setInternalTimeZone,
194
+ shouldDisableDate,
195
+ shouldDisableMonth,
196
+ shouldDisableYear,
197
+ } = useOdysseyDateFields({
198
+ defaultValue: defaultValueProp,
199
+ errorMessage,
200
+ isDateEnabled,
201
+ isMonthEnabled,
202
+ isYearEnabled,
203
+ minDate: minDateProp,
204
+ maxDate: maxDateProp,
205
+ timeZone,
206
+ value: valueProp,
207
+ });
160
208
  const [isOpen, setIsOpen] = useState(false);
161
209
  const [popperElement, setPopperElement] = useState<HTMLInputElement | null>();
162
210
 
163
- const { i18n, t } = useTranslation();
164
211
  const { language } = i18n;
165
-
166
- const invalidLocales = ["ok_PL", "ok_SK"];
167
- // In the Applitools env the language code is `en-us@posix`. Need to check for that
168
- const isInvalidLocale =
169
- invalidLocales.includes(language) || language.includes("@");
170
-
171
212
  const containerRef = useRef<HTMLInputElement>(null);
172
213
 
173
- const localeText = useDatePickerTranslations();
174
-
175
214
  useEffect(() => {
176
215
  setPopperElement(containerRef.current);
177
216
  }, []);
178
217
 
179
- const formatDateTimeToJsDateOnCalendarSelection = useCallback<
218
+ const formatDateTimeToJsDateStringOnCalendarSelection = useCallback<
180
219
  NonNullable<MuiDatePickerProps<DateTime>["onChange"]>
181
220
  >(
182
221
  (value) => {
183
222
  if (value) {
184
- const jsDateFromDateTime = new Date(value?.toJSDate());
185
- onCalendarDateChange?.(jsDateFromDateTime);
223
+ const dateStringFromDateTime = formatDateTimeToUtcIsoDateString(value);
224
+
225
+ if (dateStringFromDateTime) {
226
+ onCalendarDateChange?.({
227
+ value: dateStringFromDateTime,
228
+ timeZone: internalTimeZone,
229
+ });
230
+ }
186
231
  }
187
232
  },
188
- [onCalendarDateChange],
233
+ [formatDateTimeToUtcIsoDateString, internalTimeZone, onCalendarDateChange],
189
234
  );
190
235
 
191
- const onInputChange = useCallback<
192
- (event: ChangeEvent<HTMLInputElement>) => void
193
- >((event) => onInputChangeProp?.(event), [onInputChangeProp]);
236
+ const onInputChange = useCallback<(value: string) => void>(
237
+ (value) => {
238
+ onInputChangeProp?.(value);
239
+ },
240
+ [onInputChangeProp],
241
+ );
194
242
 
195
243
  const toggleCalendarVisibility = useCallback(
196
244
  () => setIsOpen(!isOpen),
197
245
  [isOpen],
198
246
  );
199
247
 
200
- const shouldDisableDate = useCallback(
201
- (date: DateTime) => !isDateEnabled(new Date(date?.toJSDate())) || false,
202
- [isDateEnabled],
203
- );
204
-
205
- const shouldDisableMonth = useCallback(
206
- (date: DateTime) => !isMonthEnabled(new Date(date?.toJSDate())) || false,
207
- [isMonthEnabled],
208
- );
209
-
210
- const shouldDisableYear = useCallback(
211
- (date: DateTime) => !isYearEnabled(new Date(date?.toJSDate())) || false,
212
- [isYearEnabled],
213
- );
248
+ const resetIsOpen = useCallback(() => {
249
+ setIsOpen(false);
250
+ }, []);
214
251
 
215
252
  const renderDateField = useCallback(
216
- ({ defaultValue, value }: RenderDateFieldProps) => (
217
- <DateField
218
- defaultValue={defaultValue}
219
- endAdornment={
220
- <InputAdornment position="end">
253
+ ({ defaultValue, inputRef, value }: RenderDateFieldProps) => {
254
+ return (
255
+ <DateField
256
+ defaultValue={defaultValue}
257
+ endAdornment={
221
258
  <Button
222
259
  ariaLabel={t("picker.labels.date.choose")}
223
260
  label=""
261
+ onClick={toggleCalendarVisibility}
224
262
  size="small"
225
263
  startIcon={<CalendarIcon />}
226
264
  variant="floating"
227
- onClick={toggleCalendarVisibility}
228
265
  />
229
- </InputAdornment>
230
- }
231
- errorMessage={errorMessage}
232
- hint={hint}
233
- isDisabled={isDisabled}
234
- label={label}
235
- onChange={onInputChange}
236
- value={value}
237
- />
238
- ),
266
+ }
267
+ errorMessage={errorMessage}
268
+ hint={hint}
269
+ inputRef={inputRef}
270
+ isDisabled={isDisabled}
271
+ isReadOnly={isReadOnly}
272
+ label={label}
273
+ onBlur={onBlur}
274
+ minDate={minDate}
275
+ maxDate={maxDate}
276
+ onChange={onInputChange}
277
+ timezone={internalTimeZone}
278
+ value={value}
279
+ />
280
+ );
281
+ },
239
282
  [
240
283
  errorMessage,
241
284
  hint,
285
+ internalTimeZone,
242
286
  isDisabled,
287
+ isReadOnly,
243
288
  label,
289
+ onBlur,
244
290
  onInputChange,
291
+ minDate,
292
+ maxDate,
245
293
  t,
246
294
  toggleCalendarVisibility,
247
295
  ],
248
296
  );
249
297
 
250
- const resetIsOpen = useCallback(() => {
251
- setIsOpen(false);
252
- }, []);
253
-
254
298
  const slots = useMemo<DatePickerSlots<DateTime>>(
255
299
  () => ({
256
300
  actionBar: MemoizedActionBar,
@@ -282,9 +326,14 @@ const DatePicker = ({
282
326
  [popperElement],
283
327
  );
284
328
 
285
- const defaultedLanguageCode = isInvalidLocale
286
- ? "en-US"
287
- : language.replaceAll("_", "-");
329
+ const onTimeZoneChange = useCallback(
330
+ (timeZone: string | undefined) => {
331
+ if (timeZone && isValidTimeZone(timeZone)) {
332
+ setInternalTimeZone(timeZone);
333
+ }
334
+ },
335
+ [isValidTimeZone, setInternalTimeZone],
336
+ );
288
337
 
289
338
  return (
290
339
  <OdysseyThemeProvider themeOverride={datePickerTheme}>
@@ -294,32 +343,45 @@ const DatePicker = ({
294
343
  localeText={localeText}
295
344
  >
296
345
  <DatePickerContainer>
297
- <DatePickerWidthContainer ref={containerRef}>
346
+ <DatePickerWidthContainer
347
+ odysseyDesignTokens={odysseyDesignTokens}
348
+ ref={containerRef}
349
+ >
298
350
  <MuiDatePicker
299
351
  dayOfWeekFormatter={formatDayOfWeek}
300
- defaultValue={
301
- defaultValueProp
302
- ? formatDateToDateTime(defaultValueProp)
303
- : undefined
304
- }
352
+ defaultValue={inputValues?.defaultValue}
305
353
  disabled={isDisabled}
306
354
  fixedWeekNumber={6}
355
+ inputRef={inputRef}
307
356
  key={language}
308
357
  label={label}
309
- minDate={minDate ? formatDateToDateTime(minDate) : undefined}
310
- maxDate={maxDate ? formatDateToDateTime(maxDate) : undefined}
311
- onChange={formatDateTimeToJsDateOnCalendarSelection}
358
+ minDate={minDate}
359
+ maxDate={maxDate}
360
+ onChange={formatDateTimeToJsDateStringOnCalendarSelection}
312
361
  onClose={resetIsOpen}
313
362
  open={isOpen}
363
+ readOnly={isReadOnly}
314
364
  shouldDisableDate={shouldDisableDate}
315
365
  shouldDisableMonth={shouldDisableMonth}
316
366
  shouldDisableYear={shouldDisableYear}
317
367
  slots={slots}
318
368
  slotProps={slotProps}
319
- value={valueProp ? formatDateToDateTime(valueProp) : undefined}
369
+ timezone={internalTimeZone}
370
+ value={inputValues?.value}
320
371
  />
321
372
  </DatePickerWidthContainer>
322
373
  </DatePickerContainer>
374
+ {timeZoneOptions && timeZonePickerLabel && (
375
+ <TimeZonePickerContainer odysseyDesignTokens={odysseyDesignTokens}>
376
+ <TimeZonePicker
377
+ label={timeZonePickerLabel}
378
+ onTimeZoneChange={onTimeZoneChange}
379
+ isReadOnly={isReadOnly}
380
+ timeZoneOptions={timeZoneOptions}
381
+ value={internalTimeZone}
382
+ />
383
+ </TimeZonePickerContainer>
384
+ )}
323
385
  </LocalizationProvider>
324
386
  </OdysseyThemeProvider>
325
387
  );
@@ -0,0 +1,55 @@
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 } from "react";
14
+
15
+ import { Autocomplete, AutocompleteProps } from "../Autocomplete";
16
+ import { TimeZoneOption } from "./useOdysseyDateFields";
17
+
18
+ export type TimeZonePickerProps = {
19
+ label: string;
20
+ onTimeZoneChange?: (timeZone: string | undefined) => void;
21
+ timeZoneOptions: TimeZoneOption[];
22
+ value?: string;
23
+ } & Pick<AutocompleteProps<TimeZoneOption, false, false>, "isReadOnly">;
24
+
25
+ const TimeZonePicker = ({
26
+ label,
27
+ isReadOnly,
28
+ onTimeZoneChange,
29
+ timeZoneOptions,
30
+ value,
31
+ }: TimeZonePickerProps) => {
32
+ const onChange = useCallback<
33
+ NonNullable<AutocompleteProps<TimeZoneOption, false, false>["onChange"]>
34
+ >(
35
+ (_, option) => {
36
+ onTimeZoneChange?.(option?.value);
37
+ },
38
+ [onTimeZoneChange],
39
+ );
40
+
41
+ return (
42
+ <Autocomplete<TimeZoneOption, false, false>
43
+ isReadOnly={isReadOnly}
44
+ label={label}
45
+ onChange={onChange}
46
+ options={timeZoneOptions}
47
+ value={timeZoneOptions.find((option) => option.value === value)}
48
+ />
49
+ );
50
+ };
51
+
52
+ const MemoizedTimeZonePicker = memo(TimeZonePicker);
53
+ MemoizedTimeZonePicker.displayName = "TimeZonePicker";
54
+
55
+ export { MemoizedTimeZonePicker as TimeZonePicker };