@okta/odyssey-react-mui 1.13.11 → 1.14.2

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 (684) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/@types/properties.d.js +2 -0
  3. package/dist/@types/properties.d.js.map +1 -0
  4. package/dist/Accordion.js.map +1 -1
  5. package/dist/Autocomplete.js.map +1 -1
  6. package/dist/Badge.js.map +1 -1
  7. package/dist/Banner.js.map +1 -1
  8. package/dist/Box.js.map +1 -1
  9. package/dist/Breadcrumbs.js.map +1 -1
  10. package/dist/Button.js +3 -3
  11. package/dist/Button.js.map +1 -1
  12. package/dist/Callout.js.map +1 -1
  13. package/dist/Checkbox.js.map +1 -1
  14. package/dist/CheckboxGroup.js.map +1 -1
  15. package/dist/CircularProgress.js.map +1 -1
  16. package/dist/Dialog.js +8 -8
  17. package/dist/Dialog.js.map +1 -1
  18. package/dist/ErrorMessageList.js.map +1 -1
  19. package/dist/Field.js +1 -0
  20. package/dist/Field.js.map +1 -1
  21. package/dist/FieldComponentProps.js.map +1 -1
  22. package/dist/FieldError.js.map +1 -1
  23. package/dist/FieldHint.js.map +1 -1
  24. package/dist/FieldLabel.js.map +1 -1
  25. package/dist/Fieldset.js.map +1 -1
  26. package/dist/Form.js.map +1 -1
  27. package/dist/FormCheckedProps.js.map +1 -1
  28. package/dist/HintLink.js.map +1 -1
  29. package/dist/HtmlProps.js.map +1 -1
  30. package/dist/Link.js.map +1 -1
  31. package/dist/MenuButton.js.map +1 -1
  32. package/dist/MenuItem.js.map +1 -1
  33. package/dist/MuiPropsChild.js.map +1 -1
  34. package/dist/NativeSelect.js.map +1 -1
  35. package/dist/OdysseyProvider.js +0 -2
  36. package/dist/OdysseyProvider.js.map +1 -1
  37. package/dist/OdysseyThemeProvider.js +1 -28
  38. package/dist/OdysseyThemeProvider.js.map +1 -1
  39. package/dist/OdysseyTranslationProvider.js.map +1 -1
  40. package/dist/PasswordField.js.map +1 -1
  41. package/dist/Radio.js.map +1 -1
  42. package/dist/RadioGroup.js.map +1 -1
  43. package/dist/ScreenReaderText.js.map +1 -1
  44. package/dist/SearchField.js +6 -2
  45. package/dist/SearchField.js.map +1 -1
  46. package/dist/Select.js +144 -44
  47. package/dist/Select.js.map +1 -1
  48. package/dist/Status.js +6 -1
  49. package/dist/Status.js.map +1 -1
  50. package/dist/Tabs.js +1 -1
  51. package/dist/Tabs.js.map +1 -1
  52. package/dist/Tag.js.map +1 -1
  53. package/dist/TagList.js.map +1 -1
  54. package/dist/TextField.js.map +1 -1
  55. package/dist/Tile.js +53 -39
  56. package/dist/Tile.js.map +1 -1
  57. package/dist/Toast.js.map +1 -1
  58. package/dist/Tooltip.js.map +1 -1
  59. package/dist/Typography.js +11 -10
  60. package/dist/Typography.js.map +1 -1
  61. package/dist/createShadowRootElement.js.map +1 -1
  62. package/dist/getTypedObjectKeys.js.map +1 -1
  63. package/dist/icons.generated/AddCircle.js.map +1 -1
  64. package/dist/icons.generated/Apps.js.map +1 -1
  65. package/dist/icons.generated/ArrowBottom.js.map +1 -1
  66. package/dist/icons.generated/ArrowDown.js.map +1 -1
  67. package/dist/icons.generated/ArrowLeft.js.map +1 -1
  68. package/dist/icons.generated/ArrowRight.js.map +1 -1
  69. package/dist/icons.generated/ArrowTop.js.map +1 -1
  70. package/dist/icons.generated/ArrowUp.js.map +1 -1
  71. package/dist/icons.generated/Calendar.js.map +1 -1
  72. package/dist/icons.generated/Call.js.map +1 -1
  73. package/dist/icons.generated/Chat.js.map +1 -1
  74. package/dist/icons.generated/Check.js.map +1 -1
  75. package/dist/icons.generated/ChevronDown.js.map +1 -1
  76. package/dist/icons.generated/ChevronLeft.js.map +1 -1
  77. package/dist/icons.generated/ChevronUp.js.map +1 -1
  78. package/dist/icons.generated/Clock.js.map +1 -1
  79. package/dist/icons.generated/Close.js.map +1 -1
  80. package/dist/icons.generated/Copy.js.map +1 -1
  81. package/dist/icons.generated/Delete.js.map +1 -1
  82. package/dist/icons.generated/Deny.js.map +1 -1
  83. package/dist/icons.generated/Devices.js.map +1 -1
  84. package/dist/icons.generated/Directory.js.map +1 -1
  85. package/dist/icons.generated/Download.js.map +1 -1
  86. package/dist/icons.generated/Edit.js.map +1 -1
  87. package/dist/icons.generated/ExpandLeft.js.map +1 -1
  88. package/dist/icons.generated/ExpandRight.js.map +1 -1
  89. package/dist/icons.generated/Filter.js.map +1 -1
  90. package/dist/icons.generated/Folder.js.map +1 -1
  91. package/dist/icons.generated/Globe.js.map +1 -1
  92. package/dist/icons.generated/Grid.js.map +1 -1
  93. package/dist/icons.generated/Group.js.map +1 -1
  94. package/dist/icons.generated/Hide.js.map +1 -1
  95. package/dist/icons.generated/Home.js.map +1 -1
  96. package/dist/icons.generated/Link.js.map +1 -1
  97. package/dist/icons.generated/List.js.map +1 -1
  98. package/dist/icons.generated/Lock.js.map +1 -1
  99. package/dist/icons.generated/More.js.map +1 -1
  100. package/dist/icons.generated/Pause.js.map +1 -1
  101. package/dist/icons.generated/Refresh.js.map +1 -1
  102. package/dist/icons.generated/Reset.js.map +1 -1
  103. package/dist/icons.generated/Resume.js.map +1 -1
  104. package/dist/icons.generated/Search.js.map +1 -1
  105. package/dist/icons.generated/Server.js.map +1 -1
  106. package/dist/icons.generated/Settings.js.map +1 -1
  107. package/dist/icons.generated/Show.js.map +1 -1
  108. package/dist/icons.generated/Subtract.js.map +1 -1
  109. package/dist/icons.generated/Sync.js.map +1 -1
  110. package/dist/icons.generated/Unlock.js.map +1 -1
  111. package/dist/icons.generated/Upload.js.map +1 -1
  112. package/dist/icons.generated/User.js.map +1 -1
  113. package/dist/icons.generated/Video.js.map +1 -1
  114. package/dist/icons.generated/Warning.js.map +1 -1
  115. package/dist/icons.generated/index.js +1 -1
  116. package/dist/icons.generated/index.js.map +1 -1
  117. package/dist/index.js.map +1 -1
  118. package/dist/labs/DataFilters.js.map +1 -1
  119. package/dist/labs/DataTable.js.map +1 -1
  120. package/dist/labs/DatePicker.js.map +1 -1
  121. package/dist/labs/Drawer.js +172 -0
  122. package/dist/labs/Drawer.js.map +1 -0
  123. package/dist/labs/GroupPicker.js.map +1 -1
  124. package/dist/labs/PaginatedTable.js.map +1 -1
  125. package/dist/labs/StaticTable.js.map +1 -1
  126. package/dist/labs/Switch.js.map +1 -1
  127. package/dist/labs/VirtualizedAutocomplete.js.map +1 -1
  128. package/dist/labs/datePickerTheme.js.map +1 -1
  129. package/dist/labs/index.js +1 -0
  130. package/dist/labs/index.js.map +1 -1
  131. package/dist/labs/materialReactTableTypes.js.map +1 -1
  132. package/dist/properties/ts/odyssey-react-mui_cs.js +4 -2
  133. package/dist/properties/ts/odyssey-react-mui_cs.js.map +1 -1
  134. package/dist/properties/ts/odyssey-react-mui_da.js +4 -2
  135. package/dist/properties/ts/odyssey-react-mui_da.js.map +1 -1
  136. package/dist/properties/ts/odyssey-react-mui_de.js +4 -2
  137. package/dist/properties/ts/odyssey-react-mui_de.js.map +1 -1
  138. package/dist/properties/ts/odyssey-react-mui_el.js +4 -2
  139. package/dist/properties/ts/odyssey-react-mui_el.js.map +1 -1
  140. package/dist/properties/ts/odyssey-react-mui_es.js +4 -2
  141. package/dist/properties/ts/odyssey-react-mui_es.js.map +1 -1
  142. package/dist/properties/ts/odyssey-react-mui_fi.js +4 -2
  143. package/dist/properties/ts/odyssey-react-mui_fi.js.map +1 -1
  144. package/dist/properties/ts/odyssey-react-mui_fr.js +4 -2
  145. package/dist/properties/ts/odyssey-react-mui_fr.js.map +1 -1
  146. package/dist/properties/ts/odyssey-react-mui_hu.js +4 -2
  147. package/dist/properties/ts/odyssey-react-mui_hu.js.map +1 -1
  148. package/dist/properties/ts/odyssey-react-mui_id.js +4 -2
  149. package/dist/properties/ts/odyssey-react-mui_id.js.map +1 -1
  150. package/dist/properties/ts/odyssey-react-mui_it.js +4 -2
  151. package/dist/properties/ts/odyssey-react-mui_it.js.map +1 -1
  152. package/dist/properties/ts/odyssey-react-mui_ja.js +4 -2
  153. package/dist/properties/ts/odyssey-react-mui_ja.js.map +1 -1
  154. package/dist/properties/ts/odyssey-react-mui_ko.js +4 -2
  155. package/dist/properties/ts/odyssey-react-mui_ko.js.map +1 -1
  156. package/dist/properties/ts/odyssey-react-mui_ms.js +4 -2
  157. package/dist/properties/ts/odyssey-react-mui_ms.js.map +1 -1
  158. package/dist/properties/ts/odyssey-react-mui_nb.js +4 -2
  159. package/dist/properties/ts/odyssey-react-mui_nb.js.map +1 -1
  160. package/dist/properties/ts/odyssey-react-mui_nl_NL.js +4 -2
  161. package/dist/properties/ts/odyssey-react-mui_nl_NL.js.map +1 -1
  162. package/dist/properties/ts/odyssey-react-mui_pl.js +4 -2
  163. package/dist/properties/ts/odyssey-react-mui_pl.js.map +1 -1
  164. package/dist/properties/ts/odyssey-react-mui_pt_BR.js +4 -2
  165. package/dist/properties/ts/odyssey-react-mui_pt_BR.js.map +1 -1
  166. package/dist/properties/ts/odyssey-react-mui_ro.js +4 -2
  167. package/dist/properties/ts/odyssey-react-mui_ro.js.map +1 -1
  168. package/dist/properties/ts/odyssey-react-mui_ru.js +4 -2
  169. package/dist/properties/ts/odyssey-react-mui_ru.js.map +1 -1
  170. package/dist/properties/ts/odyssey-react-mui_sv.js +4 -2
  171. package/dist/properties/ts/odyssey-react-mui_sv.js.map +1 -1
  172. package/dist/properties/ts/odyssey-react-mui_th.js +4 -2
  173. package/dist/properties/ts/odyssey-react-mui_th.js.map +1 -1
  174. package/dist/properties/ts/odyssey-react-mui_tr.js +4 -2
  175. package/dist/properties/ts/odyssey-react-mui_tr.js.map +1 -1
  176. package/dist/properties/ts/odyssey-react-mui_uk.js +4 -2
  177. package/dist/properties/ts/odyssey-react-mui_uk.js.map +1 -1
  178. package/dist/properties/ts/odyssey-react-mui_vi.js +4 -2
  179. package/dist/properties/ts/odyssey-react-mui_vi.js.map +1 -1
  180. package/dist/properties/ts/odyssey-react-mui_zh_CN.js +4 -2
  181. package/dist/properties/ts/odyssey-react-mui_zh_CN.js.map +1 -1
  182. package/dist/properties/ts/odyssey-react-mui_zh_TW.js +4 -2
  183. package/dist/properties/ts/odyssey-react-mui_zh_TW.js.map +1 -1
  184. package/dist/scripts/properties-to-ts.d.ts +14 -0
  185. package/dist/scripts/properties-to-ts.d.ts.map +1 -0
  186. package/dist/src/Accordion.d.ts +2 -2
  187. package/dist/src/Accordion.d.ts.map +1 -1
  188. package/dist/src/Autocomplete.d.ts +2 -2
  189. package/dist/src/Autocomplete.d.ts.map +1 -1
  190. package/dist/src/Badge.d.ts +2 -2
  191. package/dist/src/Badge.d.ts.map +1 -1
  192. package/dist/src/Banner.d.ts +2 -2
  193. package/dist/src/Banner.d.ts.map +1 -1
  194. package/dist/src/Box.d.ts +2 -2
  195. package/dist/src/Box.d.ts.map +1 -1
  196. package/dist/src/Breadcrumbs.d.ts +3 -3
  197. package/dist/src/Breadcrumbs.d.ts.map +1 -1
  198. package/dist/src/Button.d.ts +3 -30
  199. package/dist/src/Button.d.ts.map +1 -1
  200. package/dist/src/Callout.d.ts +2 -2
  201. package/dist/src/Callout.d.ts.map +1 -1
  202. package/dist/src/Checkbox.d.ts +3 -23
  203. package/dist/src/Checkbox.d.ts.map +1 -1
  204. package/dist/src/CheckboxGroup.d.ts +2 -2
  205. package/dist/src/CheckboxGroup.d.ts.map +1 -1
  206. package/dist/src/CircularProgress.d.ts +2 -6
  207. package/dist/src/CircularProgress.d.ts.map +1 -1
  208. package/dist/src/CssBaseline.d.ts +1 -1
  209. package/dist/src/CssBaseline.d.ts.map +1 -1
  210. package/dist/src/Dialog.d.ts +5 -5
  211. package/dist/src/Dialog.d.ts.map +1 -1
  212. package/dist/src/ErrorMessageList.d.ts +1 -1
  213. package/dist/src/ErrorMessageList.d.ts.map +1 -1
  214. package/dist/src/Field.d.ts +2 -5
  215. package/dist/src/Field.d.ts.map +1 -1
  216. package/dist/src/FieldComponentProps.d.ts +7 -4
  217. package/dist/src/FieldComponentProps.d.ts.map +1 -1
  218. package/dist/src/FieldError.d.ts +2 -2
  219. package/dist/src/FieldError.d.ts.map +1 -1
  220. package/dist/src/FieldHint.d.ts +2 -2
  221. package/dist/src/FieldHint.d.ts.map +1 -1
  222. package/dist/src/FieldLabel.d.ts +2 -2
  223. package/dist/src/FieldLabel.d.ts.map +1 -1
  224. package/dist/src/Fieldset.d.ts +2 -2
  225. package/dist/src/Fieldset.d.ts.map +1 -1
  226. package/dist/src/Form.d.ts +2 -2
  227. package/dist/src/Form.d.ts.map +1 -1
  228. package/dist/src/HintLink.d.ts +1 -1
  229. package/dist/src/HintLink.d.ts.map +1 -1
  230. package/dist/src/HtmlProps.d.ts +59 -0
  231. package/dist/src/HtmlProps.d.ts.map +1 -1
  232. package/dist/src/Link.d.ts +2 -6
  233. package/dist/src/Link.d.ts.map +1 -1
  234. package/dist/src/MenuButton.d.ts +5 -23
  235. package/dist/src/MenuButton.d.ts.map +1 -1
  236. package/dist/src/MenuItem.d.ts +2 -2
  237. package/dist/src/MenuItem.d.ts.map +1 -1
  238. package/dist/src/NativeSelect.d.ts +2 -2
  239. package/dist/src/NativeSelect.d.ts.map +1 -1
  240. package/dist/src/OdysseyCacheProvider.d.ts +1 -1
  241. package/dist/src/OdysseyCacheProvider.d.ts.map +1 -1
  242. package/dist/src/OdysseyProvider.d.ts +1 -1
  243. package/dist/src/OdysseyProvider.d.ts.map +1 -1
  244. package/dist/src/OdysseyThemeProvider.d.ts +1 -3
  245. package/dist/src/OdysseyThemeProvider.d.ts.map +1 -1
  246. package/dist/src/OdysseyTranslationProvider.d.ts +2 -2
  247. package/dist/src/OdysseyTranslationProvider.d.ts.map +1 -1
  248. package/dist/src/PasswordField.d.ts +2 -2
  249. package/dist/src/PasswordField.d.ts.map +1 -1
  250. package/dist/src/Radio.d.ts +2 -2
  251. package/dist/src/Radio.d.ts.map +1 -1
  252. package/dist/src/RadioGroup.d.ts +2 -2
  253. package/dist/src/RadioGroup.d.ts.map +1 -1
  254. package/dist/src/ScreenReaderText.d.ts +2 -2
  255. package/dist/src/ScreenReaderText.d.ts.map +1 -1
  256. package/dist/src/SearchField.d.ts +11 -2
  257. package/dist/src/SearchField.d.ts.map +1 -1
  258. package/dist/src/Select.d.ts +2 -2
  259. package/dist/src/Select.d.ts.map +1 -1
  260. package/dist/src/Status.d.ts +4 -2
  261. package/dist/src/Status.d.ts.map +1 -1
  262. package/dist/src/Tabs.d.ts +2 -6
  263. package/dist/src/Tabs.d.ts.map +1 -1
  264. package/dist/src/Tag.d.ts +2 -2
  265. package/dist/src/Tag.d.ts.map +1 -1
  266. package/dist/src/TagList.d.ts +2 -2
  267. package/dist/src/TagList.d.ts.map +1 -1
  268. package/dist/src/TextField.d.ts +3 -3
  269. package/dist/src/TextField.d.ts.map +1 -1
  270. package/dist/src/Tile.d.ts +32 -11
  271. package/dist/src/Tile.d.ts.map +1 -1
  272. package/dist/src/Toast.d.ts +2 -2
  273. package/dist/src/Toast.d.ts.map +1 -1
  274. package/dist/src/ToastStack.d.ts +1 -1
  275. package/dist/src/ToastStack.d.ts.map +1 -1
  276. package/dist/src/Tooltip.d.ts +2 -2
  277. package/dist/src/Tooltip.d.ts.map +1 -1
  278. package/dist/src/Typography.d.ts +13 -25
  279. package/dist/src/Typography.d.ts.map +1 -1
  280. package/dist/src/icons.generated/Add.d.ts +1 -1
  281. package/dist/src/icons.generated/Add.d.ts.map +1 -1
  282. package/dist/src/icons.generated/AddCircle.d.ts +1 -1
  283. package/dist/src/icons.generated/AddCircle.d.ts.map +1 -1
  284. package/dist/src/icons.generated/Apps.d.ts +1 -1
  285. package/dist/src/icons.generated/Apps.d.ts.map +1 -1
  286. package/dist/src/icons.generated/ArrowBottom.d.ts +1 -1
  287. package/dist/src/icons.generated/ArrowBottom.d.ts.map +1 -1
  288. package/dist/src/icons.generated/ArrowDown.d.ts +1 -1
  289. package/dist/src/icons.generated/ArrowDown.d.ts.map +1 -1
  290. package/dist/src/icons.generated/ArrowLeft.d.ts +1 -1
  291. package/dist/src/icons.generated/ArrowLeft.d.ts.map +1 -1
  292. package/dist/src/icons.generated/ArrowLowerLeft.d.ts +1 -1
  293. package/dist/src/icons.generated/ArrowLowerLeft.d.ts.map +1 -1
  294. package/dist/src/icons.generated/ArrowLowerRight.d.ts +1 -1
  295. package/dist/src/icons.generated/ArrowLowerRight.d.ts.map +1 -1
  296. package/dist/src/icons.generated/ArrowRight.d.ts +1 -1
  297. package/dist/src/icons.generated/ArrowRight.d.ts.map +1 -1
  298. package/dist/src/icons.generated/ArrowTop.d.ts +1 -1
  299. package/dist/src/icons.generated/ArrowTop.d.ts.map +1 -1
  300. package/dist/src/icons.generated/ArrowUnsorted.d.ts +1 -1
  301. package/dist/src/icons.generated/ArrowUnsorted.d.ts.map +1 -1
  302. package/dist/src/icons.generated/ArrowUp.d.ts +1 -1
  303. package/dist/src/icons.generated/ArrowUp.d.ts.map +1 -1
  304. package/dist/src/icons.generated/ArrowUpperLeft.d.ts +1 -1
  305. package/dist/src/icons.generated/ArrowUpperLeft.d.ts.map +1 -1
  306. package/dist/src/icons.generated/ArrowUpperRight.d.ts +1 -1
  307. package/dist/src/icons.generated/ArrowUpperRight.d.ts.map +1 -1
  308. package/dist/src/icons.generated/Bug.d.ts +1 -1
  309. package/dist/src/icons.generated/Bug.d.ts.map +1 -1
  310. package/dist/src/icons.generated/Calendar.d.ts +1 -1
  311. package/dist/src/icons.generated/Calendar.d.ts.map +1 -1
  312. package/dist/src/icons.generated/Call.d.ts +1 -1
  313. package/dist/src/icons.generated/Call.d.ts.map +1 -1
  314. package/dist/src/icons.generated/Chat.d.ts +1 -1
  315. package/dist/src/icons.generated/Chat.d.ts.map +1 -1
  316. package/dist/src/icons.generated/Check.d.ts +1 -1
  317. package/dist/src/icons.generated/Check.d.ts.map +1 -1
  318. package/dist/src/icons.generated/CheckCircleFilled.d.ts +1 -1
  319. package/dist/src/icons.generated/CheckCircleFilled.d.ts.map +1 -1
  320. package/dist/src/icons.generated/ChevronDown.d.ts +1 -1
  321. package/dist/src/icons.generated/ChevronDown.d.ts.map +1 -1
  322. package/dist/src/icons.generated/ChevronLeft.d.ts +1 -1
  323. package/dist/src/icons.generated/ChevronLeft.d.ts.map +1 -1
  324. package/dist/src/icons.generated/ChevronRight.d.ts +1 -1
  325. package/dist/src/icons.generated/ChevronRight.d.ts.map +1 -1
  326. package/dist/src/icons.generated/ChevronUp.d.ts +1 -1
  327. package/dist/src/icons.generated/ChevronUp.d.ts.map +1 -1
  328. package/dist/src/icons.generated/Clock.d.ts +1 -1
  329. package/dist/src/icons.generated/Clock.d.ts.map +1 -1
  330. package/dist/src/icons.generated/Close.d.ts +1 -1
  331. package/dist/src/icons.generated/Close.d.ts.map +1 -1
  332. package/dist/src/icons.generated/CloseCircleFilled.d.ts +1 -1
  333. package/dist/src/icons.generated/CloseCircleFilled.d.ts.map +1 -1
  334. package/dist/src/icons.generated/CollapseLeft.d.ts +1 -1
  335. package/dist/src/icons.generated/CollapseLeft.d.ts.map +1 -1
  336. package/dist/src/icons.generated/CollapseRight.d.ts +1 -1
  337. package/dist/src/icons.generated/CollapseRight.d.ts.map +1 -1
  338. package/dist/src/icons.generated/Copy.d.ts +1 -1
  339. package/dist/src/icons.generated/Copy.d.ts.map +1 -1
  340. package/dist/src/icons.generated/DangerDiamond.d.ts +1 -1
  341. package/dist/src/icons.generated/DangerDiamond.d.ts.map +1 -1
  342. package/dist/src/icons.generated/DangerDiamondFilled.d.ts +1 -1
  343. package/dist/src/icons.generated/DangerDiamondFilled.d.ts.map +1 -1
  344. package/dist/src/icons.generated/Delete.d.ts +1 -1
  345. package/dist/src/icons.generated/Delete.d.ts.map +1 -1
  346. package/dist/src/icons.generated/Deny.d.ts +1 -1
  347. package/dist/src/icons.generated/Deny.d.ts.map +1 -1
  348. package/dist/src/icons.generated/Devices.d.ts +1 -1
  349. package/dist/src/icons.generated/Devices.d.ts.map +1 -1
  350. package/dist/src/icons.generated/Directory.d.ts +1 -1
  351. package/dist/src/icons.generated/Directory.d.ts.map +1 -1
  352. package/dist/src/icons.generated/Documentation.d.ts +1 -1
  353. package/dist/src/icons.generated/Documentation.d.ts.map +1 -1
  354. package/dist/src/icons.generated/Download.d.ts +1 -1
  355. package/dist/src/icons.generated/Download.d.ts.map +1 -1
  356. package/dist/src/icons.generated/DragIndicator.d.ts +1 -1
  357. package/dist/src/icons.generated/DragIndicator.d.ts.map +1 -1
  358. package/dist/src/icons.generated/Edit.d.ts +1 -1
  359. package/dist/src/icons.generated/Edit.d.ts.map +1 -1
  360. package/dist/src/icons.generated/ExpandLeft.d.ts +1 -1
  361. package/dist/src/icons.generated/ExpandLeft.d.ts.map +1 -1
  362. package/dist/src/icons.generated/ExpandRight.d.ts +1 -1
  363. package/dist/src/icons.generated/ExpandRight.d.ts.map +1 -1
  364. package/dist/src/icons.generated/ExternalLink.d.ts +1 -1
  365. package/dist/src/icons.generated/ExternalLink.d.ts.map +1 -1
  366. package/dist/src/icons.generated/Filter.d.ts +1 -1
  367. package/dist/src/icons.generated/Filter.d.ts.map +1 -1
  368. package/dist/src/icons.generated/Folder.d.ts +1 -1
  369. package/dist/src/icons.generated/Folder.d.ts.map +1 -1
  370. package/dist/src/icons.generated/Globe.d.ts +1 -1
  371. package/dist/src/icons.generated/Globe.d.ts.map +1 -1
  372. package/dist/src/icons.generated/Grid.d.ts +1 -1
  373. package/dist/src/icons.generated/Grid.d.ts.map +1 -1
  374. package/dist/src/icons.generated/Group.d.ts +1 -1
  375. package/dist/src/icons.generated/Group.d.ts.map +1 -1
  376. package/dist/src/icons.generated/Hide.d.ts +1 -1
  377. package/dist/src/icons.generated/Hide.d.ts.map +1 -1
  378. package/dist/src/icons.generated/Home.d.ts +1 -1
  379. package/dist/src/icons.generated/Home.d.ts.map +1 -1
  380. package/dist/src/icons.generated/InformationCircle.d.ts +1 -1
  381. package/dist/src/icons.generated/InformationCircle.d.ts.map +1 -1
  382. package/dist/src/icons.generated/InformationCircleFilled.d.ts +1 -1
  383. package/dist/src/icons.generated/InformationCircleFilled.d.ts.map +1 -1
  384. package/dist/src/icons.generated/Link.d.ts +1 -1
  385. package/dist/src/icons.generated/Link.d.ts.map +1 -1
  386. package/dist/src/icons.generated/List.d.ts +1 -1
  387. package/dist/src/icons.generated/List.d.ts.map +1 -1
  388. package/dist/src/icons.generated/Lock.d.ts +1 -1
  389. package/dist/src/icons.generated/Lock.d.ts.map +1 -1
  390. package/dist/src/icons.generated/More.d.ts +1 -1
  391. package/dist/src/icons.generated/More.d.ts.map +1 -1
  392. package/dist/src/icons.generated/Notification.d.ts +1 -1
  393. package/dist/src/icons.generated/Notification.d.ts.map +1 -1
  394. package/dist/src/icons.generated/Pause.d.ts +1 -1
  395. package/dist/src/icons.generated/Pause.d.ts.map +1 -1
  396. package/dist/src/icons.generated/QuestionCircle.d.ts +1 -1
  397. package/dist/src/icons.generated/QuestionCircle.d.ts.map +1 -1
  398. package/dist/src/icons.generated/QuestionCircleFilled.d.ts +1 -1
  399. package/dist/src/icons.generated/QuestionCircleFilled.d.ts.map +1 -1
  400. package/dist/src/icons.generated/Refresh.d.ts +1 -1
  401. package/dist/src/icons.generated/Refresh.d.ts.map +1 -1
  402. package/dist/src/icons.generated/Reset.d.ts +1 -1
  403. package/dist/src/icons.generated/Reset.d.ts.map +1 -1
  404. package/dist/src/icons.generated/Resume.d.ts +1 -1
  405. package/dist/src/icons.generated/Resume.d.ts.map +1 -1
  406. package/dist/src/icons.generated/Search.d.ts +1 -1
  407. package/dist/src/icons.generated/Search.d.ts.map +1 -1
  408. package/dist/src/icons.generated/Server.d.ts +1 -1
  409. package/dist/src/icons.generated/Server.d.ts.map +1 -1
  410. package/dist/src/icons.generated/Settings.d.ts +1 -1
  411. package/dist/src/icons.generated/Settings.d.ts.map +1 -1
  412. package/dist/src/icons.generated/Show.d.ts +1 -1
  413. package/dist/src/icons.generated/Show.d.ts.map +1 -1
  414. package/dist/src/icons.generated/Subtract.d.ts +1 -1
  415. package/dist/src/icons.generated/Subtract.d.ts.map +1 -1
  416. package/dist/src/icons.generated/Sync.d.ts +1 -1
  417. package/dist/src/icons.generated/Sync.d.ts.map +1 -1
  418. package/dist/src/icons.generated/Unlock.d.ts +1 -1
  419. package/dist/src/icons.generated/Unlock.d.ts.map +1 -1
  420. package/dist/src/icons.generated/Upload.d.ts +1 -1
  421. package/dist/src/icons.generated/Upload.d.ts.map +1 -1
  422. package/dist/src/icons.generated/User.d.ts +1 -1
  423. package/dist/src/icons.generated/User.d.ts.map +1 -1
  424. package/dist/src/icons.generated/Video.d.ts +1 -1
  425. package/dist/src/icons.generated/Video.d.ts.map +1 -1
  426. package/dist/src/icons.generated/Warning.d.ts +1 -1
  427. package/dist/src/icons.generated/Warning.d.ts.map +1 -1
  428. package/dist/src/icons.generated/WarningFilled.d.ts +1 -1
  429. package/dist/src/icons.generated/WarningFilled.d.ts.map +1 -1
  430. package/dist/src/icons.generated/index.d.ts +1 -1
  431. package/dist/src/index.d.ts.map +1 -1
  432. package/dist/src/labs/DataFilters.d.ts +1 -1
  433. package/dist/src/labs/DataFilters.d.ts.map +1 -1
  434. package/dist/src/labs/DataTable.d.ts +1 -1
  435. package/dist/src/labs/DataTable.d.ts.map +1 -1
  436. package/dist/src/labs/DataTablePagination.d.ts +1 -1
  437. package/dist/src/labs/DataTablePagination.d.ts.map +1 -1
  438. package/dist/src/labs/DatePicker.d.ts +1 -1
  439. package/dist/src/labs/DatePicker.d.ts.map +1 -1
  440. package/dist/src/labs/Drawer.d.ts +56 -0
  441. package/dist/src/labs/Drawer.d.ts.map +1 -0
  442. package/dist/src/labs/GroupPicker.d.ts +1 -1
  443. package/dist/src/labs/GroupPicker.d.ts.map +1 -1
  444. package/dist/src/labs/PaginatedTable.d.ts +1 -1
  445. package/dist/src/labs/PaginatedTable.d.ts.map +1 -1
  446. package/dist/src/labs/StaticTable.d.ts +1 -1
  447. package/dist/src/labs/StaticTable.d.ts.map +1 -1
  448. package/dist/src/labs/Switch.d.ts +2 -2
  449. package/dist/src/labs/Switch.d.ts.map +1 -1
  450. package/dist/src/labs/VirtualizedAutocomplete.d.ts +2 -2
  451. package/dist/src/labs/VirtualizedAutocomplete.d.ts.map +1 -1
  452. package/dist/src/labs/datePickerTheme.d.ts.map +1 -1
  453. package/dist/src/labs/index.d.ts +1 -0
  454. package/dist/src/labs/index.d.ts.map +1 -1
  455. package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts +3 -1
  456. package/dist/src/properties/ts/odyssey-react-mui_cs.d.ts.map +1 -1
  457. package/dist/src/properties/ts/odyssey-react-mui_da.d.ts +3 -1
  458. package/dist/src/properties/ts/odyssey-react-mui_da.d.ts.map +1 -1
  459. package/dist/src/properties/ts/odyssey-react-mui_de.d.ts +3 -1
  460. package/dist/src/properties/ts/odyssey-react-mui_de.d.ts.map +1 -1
  461. package/dist/src/properties/ts/odyssey-react-mui_el.d.ts +3 -1
  462. package/dist/src/properties/ts/odyssey-react-mui_el.d.ts.map +1 -1
  463. package/dist/src/properties/ts/odyssey-react-mui_es.d.ts +3 -1
  464. package/dist/src/properties/ts/odyssey-react-mui_es.d.ts.map +1 -1
  465. package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts +3 -1
  466. package/dist/src/properties/ts/odyssey-react-mui_fi.d.ts.map +1 -1
  467. package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts +3 -1
  468. package/dist/src/properties/ts/odyssey-react-mui_fr.d.ts.map +1 -1
  469. package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts +3 -1
  470. package/dist/src/properties/ts/odyssey-react-mui_hu.d.ts.map +1 -1
  471. package/dist/src/properties/ts/odyssey-react-mui_id.d.ts +3 -1
  472. package/dist/src/properties/ts/odyssey-react-mui_id.d.ts.map +1 -1
  473. package/dist/src/properties/ts/odyssey-react-mui_it.d.ts +3 -1
  474. package/dist/src/properties/ts/odyssey-react-mui_it.d.ts.map +1 -1
  475. package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts +3 -1
  476. package/dist/src/properties/ts/odyssey-react-mui_ja.d.ts.map +1 -1
  477. package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts +3 -1
  478. package/dist/src/properties/ts/odyssey-react-mui_ko.d.ts.map +1 -1
  479. package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts +3 -1
  480. package/dist/src/properties/ts/odyssey-react-mui_ms.d.ts.map +1 -1
  481. package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts +3 -1
  482. package/dist/src/properties/ts/odyssey-react-mui_nb.d.ts.map +1 -1
  483. package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts +3 -1
  484. package/dist/src/properties/ts/odyssey-react-mui_nl_NL.d.ts.map +1 -1
  485. package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts +3 -1
  486. package/dist/src/properties/ts/odyssey-react-mui_pl.d.ts.map +1 -1
  487. package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts +3 -1
  488. package/dist/src/properties/ts/odyssey-react-mui_pt_BR.d.ts.map +1 -1
  489. package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts +3 -1
  490. package/dist/src/properties/ts/odyssey-react-mui_ro.d.ts.map +1 -1
  491. package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts +3 -1
  492. package/dist/src/properties/ts/odyssey-react-mui_ru.d.ts.map +1 -1
  493. package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts +3 -1
  494. package/dist/src/properties/ts/odyssey-react-mui_sv.d.ts.map +1 -1
  495. package/dist/src/properties/ts/odyssey-react-mui_th.d.ts +3 -1
  496. package/dist/src/properties/ts/odyssey-react-mui_th.d.ts.map +1 -1
  497. package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts +3 -1
  498. package/dist/src/properties/ts/odyssey-react-mui_tr.d.ts.map +1 -1
  499. package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts +3 -1
  500. package/dist/src/properties/ts/odyssey-react-mui_uk.d.ts.map +1 -1
  501. package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts +3 -1
  502. package/dist/src/properties/ts/odyssey-react-mui_vi.d.ts.map +1 -1
  503. package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts +3 -1
  504. package/dist/src/properties/ts/odyssey-react-mui_zh_CN.d.ts.map +1 -1
  505. package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts +3 -1
  506. package/dist/src/properties/ts/odyssey-react-mui_zh_TW.d.ts.map +1 -1
  507. package/dist/src/theme/components.d.ts.map +1 -1
  508. package/dist/theme/components.js +60 -8
  509. package/dist/theme/components.js.map +1 -1
  510. package/dist/tsconfig.production.tsbuildinfo +1 -1
  511. package/package.json +15 -15
  512. package/scripts/generateIconsIndex.ts +2 -2
  513. package/scripts/{properties-to-ts.js → properties-to-ts.ts} +55 -41
  514. package/src/@types/properties.d.ts +292 -0
  515. package/src/Accordion.tsx +1 -1
  516. package/src/Autocomplete.tsx +17 -9
  517. package/src/Badge.tsx +1 -1
  518. package/src/Banner.tsx +1 -1
  519. package/src/Box.tsx +2 -2
  520. package/src/Breadcrumbs.tsx +2 -2
  521. package/src/Button.tsx +26 -38
  522. package/src/Callout.tsx +1 -1
  523. package/src/Checkbox.tsx +9 -29
  524. package/src/CheckboxGroup.tsx +20 -5
  525. package/src/CircularProgress.tsx +1 -5
  526. package/src/Dialog.tsx +18 -17
  527. package/src/ErrorMessageList.tsx +1 -1
  528. package/src/Field.tsx +6 -9
  529. package/src/FieldComponentProps.ts +8 -4
  530. package/src/FieldError.tsx +2 -2
  531. package/src/FieldHint.tsx +1 -1
  532. package/src/FieldLabel.tsx +2 -2
  533. package/src/Fieldset.tsx +2 -2
  534. package/src/Form.tsx +1 -1
  535. package/src/FormCheckedProps.ts +3 -3
  536. package/src/HintLink.tsx +1 -1
  537. package/src/HtmlProps.ts +60 -0
  538. package/src/Link.tsx +2 -6
  539. package/src/MenuButton.tsx +21 -36
  540. package/src/MenuItem.tsx +2 -2
  541. package/src/MuiPropsChild.tsx +2 -2
  542. package/src/NativeSelect.tsx +24 -13
  543. package/src/OdysseyCacheProvider.test.tsx +3 -3
  544. package/src/OdysseyProvider.tsx +1 -3
  545. package/src/OdysseyThemeProvider.tsx +8 -35
  546. package/src/OdysseyTranslationProvider.test.tsx +6 -6
  547. package/src/OdysseyTranslationProvider.tsx +7 -7
  548. package/src/PasswordField.tsx +23 -10
  549. package/src/Radio.tsx +4 -4
  550. package/src/RadioGroup.tsx +22 -7
  551. package/src/ScreenReaderText.tsx +1 -1
  552. package/src/SearchField.tsx +25 -12
  553. package/src/Select.tsx +219 -77
  554. package/src/Status.tsx +8 -2
  555. package/src/Tabs.tsx +7 -11
  556. package/src/Tag.tsx +4 -4
  557. package/src/TagList.tsx +2 -2
  558. package/src/TextField.tsx +22 -9
  559. package/src/Tile.tsx +74 -43
  560. package/src/Toast.tsx +1 -1
  561. package/src/Tooltip.tsx +1 -1
  562. package/src/Typography.tsx +20 -28
  563. package/src/createShadowRootElement.ts +1 -1
  564. package/src/getTypedObjectKeys.ts +1 -1
  565. package/src/icons.generated/AddCircle.tsx +1 -1
  566. package/src/icons.generated/Apps.tsx +1 -1
  567. package/src/icons.generated/ArrowBottom.tsx +1 -1
  568. package/src/icons.generated/ArrowDown.tsx +1 -1
  569. package/src/icons.generated/ArrowLeft.tsx +1 -1
  570. package/src/icons.generated/ArrowRight.tsx +1 -1
  571. package/src/icons.generated/ArrowTop.tsx +1 -1
  572. package/src/icons.generated/ArrowUp.tsx +1 -1
  573. package/src/icons.generated/Calendar.tsx +1 -1
  574. package/src/icons.generated/Call.tsx +1 -1
  575. package/src/icons.generated/Chat.tsx +1 -1
  576. package/src/icons.generated/Check.tsx +1 -1
  577. package/src/icons.generated/ChevronDown.tsx +1 -1
  578. package/src/icons.generated/ChevronLeft.tsx +1 -1
  579. package/src/icons.generated/ChevronUp.tsx +1 -1
  580. package/src/icons.generated/Clock.tsx +1 -1
  581. package/src/icons.generated/Close.tsx +1 -1
  582. package/src/icons.generated/Copy.tsx +1 -1
  583. package/src/icons.generated/Delete.tsx +1 -1
  584. package/src/icons.generated/Deny.tsx +1 -1
  585. package/src/icons.generated/Devices.tsx +1 -1
  586. package/src/icons.generated/Directory.tsx +1 -1
  587. package/src/icons.generated/Download.tsx +1 -1
  588. package/src/icons.generated/Edit.tsx +1 -1
  589. package/src/icons.generated/ExpandLeft.tsx +1 -1
  590. package/src/icons.generated/ExpandRight.tsx +1 -1
  591. package/src/icons.generated/Filter.tsx +1 -1
  592. package/src/icons.generated/Folder.tsx +1 -1
  593. package/src/icons.generated/Globe.tsx +1 -1
  594. package/src/icons.generated/Grid.tsx +1 -1
  595. package/src/icons.generated/Group.tsx +1 -1
  596. package/src/icons.generated/Hide.tsx +1 -1
  597. package/src/icons.generated/Home.tsx +1 -1
  598. package/src/icons.generated/Link.tsx +1 -1
  599. package/src/icons.generated/List.tsx +1 -1
  600. package/src/icons.generated/Lock.tsx +1 -1
  601. package/src/icons.generated/More.tsx +1 -1
  602. package/src/icons.generated/Pause.tsx +1 -1
  603. package/src/icons.generated/Refresh.tsx +1 -1
  604. package/src/icons.generated/Reset.tsx +1 -1
  605. package/src/icons.generated/Resume.tsx +1 -1
  606. package/src/icons.generated/Search.tsx +1 -1
  607. package/src/icons.generated/Server.tsx +1 -1
  608. package/src/icons.generated/Settings.tsx +1 -1
  609. package/src/icons.generated/Show.tsx +1 -1
  610. package/src/icons.generated/Subtract.tsx +1 -1
  611. package/src/icons.generated/Sync.tsx +1 -1
  612. package/src/icons.generated/Unlock.tsx +1 -1
  613. package/src/icons.generated/Upload.tsx +1 -1
  614. package/src/icons.generated/User.tsx +1 -1
  615. package/src/icons.generated/Video.tsx +1 -1
  616. package/src/icons.generated/Warning.tsx +1 -1
  617. package/src/icons.generated/index.ts +1 -1
  618. package/src/index.ts +0 -1
  619. package/src/labs/DataFilters.tsx +36 -30
  620. package/src/labs/DataTable.tsx +20 -20
  621. package/src/labs/DatePicker.tsx +3 -1
  622. package/src/labs/Drawer.tsx +254 -0
  623. package/src/labs/GroupPicker.tsx +34 -15
  624. package/src/labs/PaginatedTable.tsx +12 -10
  625. package/src/labs/StaticTable.tsx +3 -3
  626. package/src/labs/Switch.tsx +5 -5
  627. package/src/labs/VirtualizedAutocomplete.tsx +19 -16
  628. package/src/labs/datePickerTheme.tsx +4 -2
  629. package/src/labs/index.ts +2 -0
  630. package/src/labs/materialReactTableTypes.tsx +1 -1
  631. package/src/properties/translations/odyssey-react-mui_cs.properties +3 -1
  632. package/src/properties/translations/odyssey-react-mui_da.properties +3 -1
  633. package/src/properties/translations/odyssey-react-mui_de.properties +3 -1
  634. package/src/properties/translations/odyssey-react-mui_el.properties +3 -1
  635. package/src/properties/translations/odyssey-react-mui_es.properties +3 -1
  636. package/src/properties/translations/odyssey-react-mui_fi.properties +3 -1
  637. package/src/properties/translations/odyssey-react-mui_fr.properties +3 -1
  638. package/src/properties/translations/odyssey-react-mui_hu.properties +3 -1
  639. package/src/properties/translations/odyssey-react-mui_id.properties +3 -1
  640. package/src/properties/translations/odyssey-react-mui_it.properties +3 -1
  641. package/src/properties/translations/odyssey-react-mui_ja.properties +3 -1
  642. package/src/properties/translations/odyssey-react-mui_ko.properties +3 -1
  643. package/src/properties/translations/odyssey-react-mui_ms.properties +3 -1
  644. package/src/properties/translations/odyssey-react-mui_nb.properties +3 -1
  645. package/src/properties/translations/odyssey-react-mui_nl_NL.properties +3 -1
  646. package/src/properties/translations/odyssey-react-mui_pl.properties +3 -1
  647. package/src/properties/translations/odyssey-react-mui_pt_BR.properties +3 -1
  648. package/src/properties/translations/odyssey-react-mui_ro.properties +3 -1
  649. package/src/properties/translations/odyssey-react-mui_ru.properties +3 -1
  650. package/src/properties/translations/odyssey-react-mui_sv.properties +3 -1
  651. package/src/properties/translations/odyssey-react-mui_th.properties +3 -1
  652. package/src/properties/translations/odyssey-react-mui_tr.properties +3 -1
  653. package/src/properties/translations/odyssey-react-mui_uk.properties +3 -1
  654. package/src/properties/translations/odyssey-react-mui_vi.properties +3 -1
  655. package/src/properties/translations/odyssey-react-mui_zh_CN.properties +3 -1
  656. package/src/properties/translations/odyssey-react-mui_zh_TW.properties +3 -1
  657. package/src/properties/ts/odyssey-react-mui_cs.ts +1 -1
  658. package/src/properties/ts/odyssey-react-mui_da.ts +1 -1
  659. package/src/properties/ts/odyssey-react-mui_de.ts +1 -1
  660. package/src/properties/ts/odyssey-react-mui_el.ts +1 -1
  661. package/src/properties/ts/odyssey-react-mui_es.ts +1 -1
  662. package/src/properties/ts/odyssey-react-mui_fi.ts +1 -1
  663. package/src/properties/ts/odyssey-react-mui_fr.ts +1 -1
  664. package/src/properties/ts/odyssey-react-mui_hu.ts +1 -1
  665. package/src/properties/ts/odyssey-react-mui_id.ts +1 -1
  666. package/src/properties/ts/odyssey-react-mui_it.ts +1 -1
  667. package/src/properties/ts/odyssey-react-mui_ja.ts +1 -1
  668. package/src/properties/ts/odyssey-react-mui_ko.ts +1 -1
  669. package/src/properties/ts/odyssey-react-mui_ms.ts +1 -1
  670. package/src/properties/ts/odyssey-react-mui_nb.ts +1 -1
  671. package/src/properties/ts/odyssey-react-mui_nl_NL.ts +1 -1
  672. package/src/properties/ts/odyssey-react-mui_pl.ts +1 -1
  673. package/src/properties/ts/odyssey-react-mui_pt_BR.ts +1 -1
  674. package/src/properties/ts/odyssey-react-mui_ro.ts +1 -1
  675. package/src/properties/ts/odyssey-react-mui_ru.ts +1 -1
  676. package/src/properties/ts/odyssey-react-mui_sv.ts +1 -1
  677. package/src/properties/ts/odyssey-react-mui_th.ts +1 -1
  678. package/src/properties/ts/odyssey-react-mui_tr.ts +1 -1
  679. package/src/properties/ts/odyssey-react-mui_uk.ts +1 -1
  680. package/src/properties/ts/odyssey-react-mui_vi.ts +1 -1
  681. package/src/properties/ts/odyssey-react-mui_zh_CN.ts +1 -1
  682. package/src/properties/ts/odyssey-react-mui_zh_TW.ts +1 -1
  683. package/src/theme/components.tsx +83 -16
  684. package/tsconfig.json +0 -3
@@ -0,0 +1,172 @@
1
+ import _Drawer from "@mui/material/Drawer";
2
+ /*!
3
+ * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.
4
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
5
+ *
6
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
7
+ * Unless required by applicable law or agreed to in writing, software
8
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ *
11
+ * See the License for the specific language governing permissions and limitations under the License.
12
+ */
13
+
14
+ import { memo, useState, useEffect, useMemo, useRef } from "react";
15
+ import styled from "@emotion/styled";
16
+ import { useTranslation } from "react-i18next";
17
+ import { Button } from "../Button.js";
18
+ import { CloseIcon } from "../icons.generated/index.js";
19
+ import { Heading5 } from "../Typography.js";
20
+ import { useOdysseyDesignTokens } from "../OdysseyDesignTokensContext.js";
21
+ import { jsx as _jsx } from "react/jsx-runtime";
22
+ import { jsxs as _jsxs } from "react/jsx-runtime";
23
+ export const variantValues = ["temporary", "persistent"];
24
+ const DrawerHeader = styled("div", {
25
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens"
26
+ })`
27
+ position: sticky;
28
+ top: 0;
29
+ display: flex;
30
+ justify-content: space-between;
31
+ align-items: center;
32
+ margin: 0;
33
+ padding: ${({
34
+ odysseyDesignTokens
35
+ }) => odysseyDesignTokens.Spacing4}
36
+ ${({
37
+ odysseyDesignTokens
38
+ }) => odysseyDesignTokens.Spacing5};
39
+ color: ${({
40
+ odysseyDesignTokens
41
+ }) => odysseyDesignTokens.HueNeutral900};
42
+ background-color: ${({
43
+ odysseyDesignTokens
44
+ }) => odysseyDesignTokens.HueNeutralWhite};
45
+ border-bottom: ${({
46
+ showDividers,
47
+ odysseyDesignTokens
48
+ }) => showDividers ? `1px solid ${odysseyDesignTokens.HueNeutral200}` : "none"};
49
+ `;
50
+ const DrawerContentWrapper = styled("div", {
51
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens"
52
+ })`
53
+ overflow-y: auto;
54
+ `;
55
+ const DrawerContent = styled("div", {
56
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens"
57
+ })`
58
+ padding: ${({
59
+ showDividers,
60
+ odysseyDesignTokens
61
+ }) => showDividers ? `${odysseyDesignTokens.Spacing5}` : `0 ${odysseyDesignTokens.Spacing5}`};
62
+ `;
63
+ const DrawerFooter = styled("div", {
64
+ shouldForwardProp: prop => prop !== "odysseyDesignTokens"
65
+ })`
66
+ position: sticky;
67
+ bottom: 0;
68
+ display: flex;
69
+ justify-content: flex-end;
70
+ align-items: center;
71
+ align-content: center;
72
+ padding: ${({
73
+ odysseyDesignTokens
74
+ }) => odysseyDesignTokens.Spacing4};
75
+ border-top: ${({
76
+ showDividers,
77
+ odysseyDesignTokens
78
+ }) => showDividers ? `1px solid ${odysseyDesignTokens.HueNeutral200}` : "none"};
79
+ background-color: ${({
80
+ odysseyDesignTokens
81
+ }) => odysseyDesignTokens.HueNeutralWhite};
82
+ `;
83
+ const Drawer = ({
84
+ ariaLabel,
85
+ children,
86
+ isOpen,
87
+ onClose,
88
+ primaryCallToActionComponent,
89
+ secondaryCallToActionComponent,
90
+ showDividers = false,
91
+ tertiaryCallToActionComponent,
92
+ testId,
93
+ title,
94
+ translate,
95
+ variant = "temporary"
96
+ }) => {
97
+ const [isContentScrollable, setIsContentScrollable] = useState(false);
98
+ const drawerContentRef = useRef(null);
99
+ const odysseyDesignTokens = useOdysseyDesignTokens();
100
+ const {
101
+ i18n
102
+ } = useTranslation();
103
+ const anchorDirection = i18n.dir() === "rtl" ? "left" : "right";
104
+ useEffect(() => {
105
+ let frameId;
106
+ const handleContentScroll = () => {
107
+ const drawerContentElement = drawerContentRef.current;
108
+ if (drawerContentElement) {
109
+ cancelAnimationFrame(frameId);
110
+ setIsContentScrollable(drawerContentElement.scrollHeight > drawerContentElement.clientHeight);
111
+ }
112
+ frameId = requestAnimationFrame(handleContentScroll);
113
+ };
114
+ if (isOpen) {
115
+ frameId = requestAnimationFrame(handleContentScroll);
116
+ }
117
+ return () => {
118
+ cancelAnimationFrame(frameId);
119
+ };
120
+ }, [isOpen]);
121
+ const dividersVisible = useMemo(() => {
122
+ return showDividers || isContentScrollable;
123
+ }, [showDividers, isContentScrollable]);
124
+ const hasFooter = useMemo(() => primaryCallToActionComponent || secondaryCallToActionComponent || tertiaryCallToActionComponent, [primaryCallToActionComponent, secondaryCallToActionComponent, tertiaryCallToActionComponent]);
125
+ return _jsxs(_Drawer, {
126
+ "data-se": testId,
127
+ anchor: anchorDirection,
128
+ open: isOpen,
129
+ onClose: onClose,
130
+ variant: variant,
131
+ sx: {
132
+ ...(variant === "persistent" && {
133
+ "& .MuiDrawer-paper": {
134
+ transition: "none"
135
+ }
136
+ })
137
+ },
138
+ children: [_jsxs(DrawerContentWrapper, {
139
+ ...(isContentScrollable && {
140
+ tabIndex: 0
141
+ }),
142
+ odysseyDesignTokens: odysseyDesignTokens,
143
+ ref: drawerContentRef,
144
+ children: [_jsxs(DrawerHeader, {
145
+ translate: translate,
146
+ odysseyDesignTokens: odysseyDesignTokens,
147
+ showDividers: dividersVisible,
148
+ children: [_jsx(Heading5, {
149
+ children: title
150
+ }), _jsx(Button, {
151
+ ariaLabel: ariaLabel,
152
+ onClick: onClose,
153
+ size: "small",
154
+ startIcon: _jsx(CloseIcon, {}),
155
+ variant: "floating"
156
+ })]
157
+ }), _jsx(DrawerContent, {
158
+ showDividers: dividersVisible,
159
+ odysseyDesignTokens: odysseyDesignTokens,
160
+ children: children
161
+ })]
162
+ }), hasFooter && _jsxs(DrawerFooter, {
163
+ odysseyDesignTokens: odysseyDesignTokens,
164
+ showDividers: dividersVisible,
165
+ children: [tertiaryCallToActionComponent, secondaryCallToActionComponent, primaryCallToActionComponent]
166
+ })]
167
+ });
168
+ };
169
+ const MemoizedDrawer = memo(Drawer);
170
+ MemoizedDrawer.displayName = "Drawer";
171
+ export { MemoizedDrawer as Drawer };
172
+ //# sourceMappingURL=Drawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.js","names":["memo","useState","useEffect","useMemo","useRef","styled","useTranslation","Button","CloseIcon","Heading5","useOdysseyDesignTokens","jsx","_jsx","jsxs","_jsxs","variantValues","DrawerHeader","shouldForwardProp","prop","odysseyDesignTokens","Spacing4","Spacing5","HueNeutral900","HueNeutralWhite","showDividers","HueNeutral200","DrawerContentWrapper","DrawerContent","DrawerFooter","Drawer","ariaLabel","children","isOpen","onClose","primaryCallToActionComponent","secondaryCallToActionComponent","tertiaryCallToActionComponent","testId","title","translate","variant","isContentScrollable","setIsContentScrollable","drawerContentRef","i18n","anchorDirection","dir","frameId","handleContentScroll","drawerContentElement","current","cancelAnimationFrame","scrollHeight","clientHeight","requestAnimationFrame","dividersVisible","hasFooter","_Drawer","anchor","open","sx","transition","tabIndex","ref","onClick","size","startIcon","MemoizedDrawer","displayName"],"sources":["../../src/labs/Drawer.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n memo,\n ReactNode,\n useState,\n useEffect,\n useMemo,\n useRef,\n ReactElement,\n} from \"react\";\nimport styled from \"@emotion/styled\";\nimport { useTranslation } from \"react-i18next\";\nimport { Drawer as MuiDrawer } from \"@mui/material\";\n\nimport type { HtmlProps } from \"../HtmlProps\";\nimport { Button } from \"../Button\";\nimport { CloseIcon } from \"../icons.generated\";\nimport { Heading5 } from \"../Typography\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../OdysseyDesignTokensContext\";\n\nexport const variantValues = [\"temporary\", \"persistent\"] as const;\n\nexport type DrawerProps = {\n /**\n * An optional Button object to be situated in the Drawerfooter. Should almost always be of variant `primary`.\n */\n primaryCallToActionComponent?: ReactElement<typeof Button>;\n /**\n * An optional Button object to be situated in the Drawer footer, alongside the `callToActionPrimaryComponent`.\n */\n secondaryCallToActionComponent?: ReactElement<typeof Button>;\n /**\n * An optional Button object to be situated in the Drawer footer, alongside the other two `callToAction` components.\n */\n tertiaryCallToActionComponent?: ReactElement<typeof Button>;\n /**\n * The content of the Drawer. May be a `string` or any other `ReactNode` or array of `ReactNode`s.\n */\n children?: ReactNode;\n /**\n * When set to `true`, the Drawer will be visible.\n */\n isOpen?: boolean;\n /**\n * Callback that controls what happens when the Drawer is dismissed\n */\n onClose: () => void;\n /**\n * Shows divider lines separating header, content, and footer (if using action buttons)\n */\n showDividers: boolean;\n /**\n * The title of the Drawer\n */\n title?: string;\n /**\n * Type of Drawer\n */\n variant?: (typeof variantValues)[number];\n} & Pick<HtmlProps, \"ariaLabel\" | \"testId\" | \"translate\">;\n\ninterface DrawerStyleProps {\n odysseyDesignTokens: DesignTokens;\n showDividers: boolean;\n}\nconst DrawerHeader = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<DrawerStyleProps>`\n position: sticky;\n top: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin: 0;\n padding: ${({ odysseyDesignTokens }) => odysseyDesignTokens.Spacing4}\n ${({ odysseyDesignTokens }) => odysseyDesignTokens.Spacing5};\n color: ${({ odysseyDesignTokens }) => odysseyDesignTokens.HueNeutral900};\n background-color: ${({ odysseyDesignTokens }) =>\n odysseyDesignTokens.HueNeutralWhite};\n border-bottom: ${({ showDividers, odysseyDesignTokens }) =>\n showDividers ? `1px solid ${odysseyDesignTokens.HueNeutral200}` : \"none\"};\n`;\n\nconst DrawerContentWrapper = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n}>`\n overflow-y: auto;\n`;\n\nconst DrawerContent = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<DrawerStyleProps>`\n padding: ${({ showDividers, odysseyDesignTokens }) =>\n showDividers\n ? `${odysseyDesignTokens.Spacing5}`\n : `0 ${odysseyDesignTokens.Spacing5}`};\n`;\n\nconst DrawerFooter = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<DrawerStyleProps>`\n position: sticky;\n bottom: 0;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n align-content: center;\n padding: ${({ odysseyDesignTokens }) => odysseyDesignTokens.Spacing4};\n border-top: ${({ showDividers, odysseyDesignTokens }) =>\n showDividers ? `1px solid ${odysseyDesignTokens.HueNeutral200}` : \"none\"};\n background-color: ${({ odysseyDesignTokens }) =>\n odysseyDesignTokens.HueNeutralWhite};\n`;\n\nconst Drawer = ({\n ariaLabel,\n children,\n isOpen,\n onClose,\n primaryCallToActionComponent,\n secondaryCallToActionComponent,\n showDividers = false,\n tertiaryCallToActionComponent,\n testId,\n title,\n translate,\n variant = \"temporary\",\n}: DrawerProps) => {\n const [isContentScrollable, setIsContentScrollable] = useState(false);\n const drawerContentRef = useRef<HTMLDivElement>(null);\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n //If RTL is set in the theme, align the drawer on the left side of the screen, uses right by default.\n const { i18n } = useTranslation();\n const anchorDirection = i18n.dir() === \"rtl\" ? \"left\" : \"right\";\n\n useEffect(() => {\n let frameId: number;\n\n const handleContentScroll = () => {\n const drawerContentElement = drawerContentRef.current;\n if (drawerContentElement) {\n cancelAnimationFrame(frameId);\n setIsContentScrollable(\n drawerContentElement.scrollHeight > drawerContentElement.clientHeight,\n );\n }\n frameId = requestAnimationFrame(handleContentScroll);\n };\n\n if (isOpen) {\n frameId = requestAnimationFrame(handleContentScroll);\n }\n\n return () => {\n cancelAnimationFrame(frameId);\n };\n }, [isOpen]);\n\n const dividersVisible = useMemo(() => {\n return showDividers || isContentScrollable;\n }, [showDividers, isContentScrollable]);\n\n const hasFooter = useMemo(\n () =>\n primaryCallToActionComponent ||\n secondaryCallToActionComponent ||\n tertiaryCallToActionComponent,\n [\n primaryCallToActionComponent,\n secondaryCallToActionComponent,\n tertiaryCallToActionComponent,\n ],\n );\n\n return (\n <MuiDrawer\n data-se={testId}\n anchor={anchorDirection}\n open={isOpen}\n onClose={onClose}\n variant={variant}\n sx={{\n //Overrides defualt MUI inline style\n ...(variant === \"persistent\" && {\n \"& .MuiDrawer-paper\": {\n transition: \"none\",\n },\n }),\n }}\n >\n <DrawerContentWrapper\n {...(isContentScrollable && {\n //Sets tabIndex on content element if scrollable so content is easier to navigate with the keyboard\n tabIndex: 0,\n })}\n odysseyDesignTokens={odysseyDesignTokens}\n ref={drawerContentRef}\n >\n <DrawerHeader\n translate={translate}\n odysseyDesignTokens={odysseyDesignTokens}\n showDividers={dividersVisible}\n >\n <Heading5>{title}</Heading5>\n <Button\n ariaLabel={ariaLabel}\n onClick={onClose}\n size=\"small\"\n startIcon={<CloseIcon />}\n variant=\"floating\"\n />\n </DrawerHeader>\n <DrawerContent\n showDividers={dividersVisible}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {children}\n </DrawerContent>\n </DrawerContentWrapper>\n {hasFooter && (\n <DrawerFooter\n odysseyDesignTokens={odysseyDesignTokens}\n showDividers={dividersVisible}\n >\n {tertiaryCallToActionComponent}\n {secondaryCallToActionComponent}\n {primaryCallToActionComponent}\n </DrawerFooter>\n )}\n </MuiDrawer>\n );\n};\n\nconst MemoizedDrawer = memo(Drawer);\nMemoizedDrawer.displayName = \"Drawer\";\n\nexport { MemoizedDrawer as Drawer };\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GroupPicker.js","names":["avatarClasses","memo","useCallback","Field","Subordinate","Tag","useOdysseyDesignTokens","UserIcon","GridIcon","GroupIcon","jsx","_jsx","jsxs","_jsxs","createElement","_createElement","avatarImageSizeSmall","avatarImageSizeMedium","GroupPicker","hasMultipleChoices","isCustomValueAllowed","isDisabled","isLoading","isOptional","isReadOnly","hint","label","onChange","onInputChange","options","value","testId","odysseyDesignTokens","isOptionEqualToValue","sourceValue","targetValue","id","getOptionLabel","option","name","renderOption","props","key","_Box","sx","alignItems","display","flexDirection","children","paddingRight","Spacing2","_Avatar","alt","src","logo","fallback","visibility","background","height","width","description","paddingTop","Spacing1","usersCount","Spacing4","appsCount","groupPushMappingsCount","renderTags","values","getTagProps","map","index","onDelete","margin","icon","onRemove","renderInput","InputLabelProps","InputProps","params","fieldType","hasVisibleLabel","htmlFor","renderFieldComponent","ariaDescribedBy","_InputBase","required","_Autocomplete","disabled","filterSelectedOptions","freeSolo","loading","multiple","readOnly","MemoizedGroupPicker"],"sources":["../../src/labs/GroupPicker.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport type { AutocompleteGetTagProps } from \"@mui/material/useAutocomplete\";\n\nimport {\n Autocomplete as MuiAutocomplete,\n Avatar as MuiAvatar,\n Box,\n InputBase,\n} from \"@mui/material\";\nimport { avatarClasses } from \"@mui/material/Avatar\";\nimport { memo, useCallback } from \"react\";\n\nimport { AutocompleteProps } from \"../Autocomplete\";\nimport { Field } from \"../Field\";\nimport { Subordinate } from \"../Typography\";\nimport { Tag } from \"../Tag\";\nimport { useOdysseyDesignTokens } from \"../OdysseyDesignTokensContext\";\nimport { UserIcon, GridIcon, GroupIcon } from \"../icons.generated\";\n\nexport type GroupPickerOptionType = {\n appsCount?: number;\n description: string;\n groupPushMappingsCount?: number;\n id: string;\n logo?: string;\n name: string;\n usersCount?: number;\n};\n\nexport type GroupPickerProps<\n GroupPickerOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined\n> = AutocompleteProps<\n GroupPickerOptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n>;\n\nconst avatarImageSizeSmall = 16;\nconst avatarImageSizeMedium = 24;\n\nconst GroupPicker = <\n OptionType extends GroupPickerOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined\n>({\n hasMultipleChoices,\n isCustomValueAllowed,\n isDisabled,\n isLoading,\n isOptional = false,\n isReadOnly,\n hint,\n label,\n onChange,\n onInputChange,\n options,\n value,\n testId,\n}: GroupPickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const isOptionEqualToValue = useCallback((sourceValue, targetValue) => {\n return sourceValue.id === targetValue.id;\n }, []);\n\n const getOptionLabel = useCallback((option) => {\n return option.name;\n }, []);\n\n const renderOption = useCallback(\n (props, option) => {\n return (\n <li {...props} key={option.id}>\n <Box\n sx={{\n alignItems: \"top\",\n display: \"flex\",\n flexDirection: \"row\",\n }}\n >\n <Box sx={{ paddingRight: odysseyDesignTokens.Spacing2 }}>\n <MuiAvatar\n alt={option.name}\n src={option.logo}\n sx={{\n [`.${avatarClasses.fallback}`]: {\n visibility: \"hidden\",\n },\n background: \"transparent\",\n height: avatarImageSizeMedium,\n width: avatarImageSizeMedium,\n }}\n />\n </Box>\n <Box>\n {option.name}\n <Subordinate>{option.description}</Subordinate>\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"row\",\n paddingTop: odysseyDesignTokens.Spacing1,\n }}\n >\n {typeof option.usersCount === \"number\" && (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"row\",\n paddingRight: odysseyDesignTokens.Spacing4,\n }}\n >\n <UserIcon />\n {option.usersCount}\n </Box>\n )}\n {typeof option.appsCount === \"number\" && (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"row\",\n paddingRight: odysseyDesignTokens.Spacing4,\n }}\n >\n <GridIcon />\n {option.appsCount}\n </Box>\n )}\n {typeof option.groupPushMappingsCount === \"number\" && (\n <Box sx={{ display: \"flex\", flexDirection: \"row\" }}>\n <GroupIcon />\n {option.groupPushMappingsCount}\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n </li>\n );\n },\n [odysseyDesignTokens]\n );\n\n const renderTags = useCallback(\n (values: OptionType[], getTagProps: AutocompleteGetTagProps) =>\n values.map((option, index) => {\n const { key, onDelete } = getTagProps({ index });\n return (\n <Box\n key={key}\n sx={{\n margin: odysseyDesignTokens.Spacing1,\n }}\n >\n <Tag\n icon={\n <MuiAvatar\n alt={option.name}\n src={option.logo}\n sx={{\n [`.${avatarClasses.fallback}`]: {\n visibility: \"hidden\",\n },\n background: \"transparent\",\n height: avatarImageSizeSmall,\n width: avatarImageSizeSmall,\n }}\n />\n }\n label={option.name}\n onRemove={onDelete}\n />\n </Box>\n );\n }),\n [odysseyDesignTokens]\n );\n\n const renderInput = useCallback(\n ({ InputLabelProps, InputProps, ...params }) => (\n <Field\n fieldType=\"single\"\n hasVisibleLabel\n id={InputLabelProps.htmlFor}\n hint={hint}\n label={label}\n isOptional={isOptional}\n renderFieldComponent={({ ariaDescribedBy, id }) => (\n <InputBase\n {...params}\n {...InputProps}\n aria-describedby={ariaDescribedBy}\n id={id}\n required={!isOptional}\n />\n )}\n />\n ),\n [hint, isOptional, label]\n );\n\n return (\n <MuiAutocomplete\n // AutoComplete is wrapped in a div within MUI which does not get the disabled attr. So this aria-disabled gets set in the div\n aria-disabled={isDisabled}\n data-se={testId}\n disabled={isDisabled}\n filterSelectedOptions={true}\n freeSolo={isCustomValueAllowed}\n getOptionLabel={getOptionLabel}\n isOptionEqualToValue={isOptionEqualToValue}\n loading={isLoading}\n multiple={hasMultipleChoices}\n onChange={onChange}\n onInputChange={onInputChange}\n options={options}\n readOnly={isReadOnly}\n renderInput={renderInput}\n renderOption={renderOption}\n renderTags={renderTags}\n value={value}\n />\n );\n};\n\nconst MemoizedGroupPicker = memo(GroupPicker) as typeof GroupPicker;\n\nexport { MemoizedGroupPicker as GroupPicker };\n"],"mappings":"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"}
1
+ {"version":3,"file":"GroupPicker.js","names":["avatarClasses","memo","useCallback","Field","Subordinate","Tag","useOdysseyDesignTokens","UserIcon","GridIcon","GroupIcon","jsx","_jsx","jsxs","_jsxs","createElement","_createElement","avatarImageSizeSmall","avatarImageSizeMedium","GroupPicker","hasMultipleChoices","isCustomValueAllowed","isDisabled","isLoading","isOptional","isReadOnly","hint","label","onChange","onInputChange","options","value","testId","odysseyDesignTokens","isOptionEqualToValue","sourceValue","targetValue","id","getOptionLabel","option","name","renderOption","props","key","_Box","sx","alignItems","display","flexDirection","children","paddingRight","Spacing2","_Avatar","alt","src","logo","fallback","visibility","background","height","width","description","paddingTop","Spacing1","usersCount","Spacing4","appsCount","groupPushMappingsCount","renderTags","values","getTagProps","map","index","onDelete","margin","icon","onRemove","renderInput","InputLabelProps","InputProps","params","fieldType","hasVisibleLabel","htmlFor","renderFieldComponent","ariaDescribedBy","_InputBase","required","_Autocomplete","disabled","filterSelectedOptions","freeSolo","loading","multiple","readOnly","MemoizedGroupPicker"],"sources":["../../src/labs/GroupPicker.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport type {\n AutocompleteFreeSoloValueMapping,\n AutocompleteGetTagProps,\n} from \"@mui/material/useAutocomplete\";\n\nimport {\n Autocomplete as MuiAutocomplete,\n Avatar as MuiAvatar,\n Box,\n InputBase,\n AutocompleteRenderInputParams,\n} from \"@mui/material\";\nimport { avatarClasses } from \"@mui/material/Avatar\";\nimport { HTMLAttributes, memo, useCallback } from \"react\";\n\nimport { AutocompleteProps } from \"../Autocomplete\";\nimport { Field } from \"../Field\";\nimport { Subordinate } from \"../Typography\";\nimport { Tag } from \"../Tag\";\nimport { useOdysseyDesignTokens } from \"../OdysseyDesignTokensContext\";\nimport { UserIcon, GridIcon, GroupIcon } from \"../icons.generated\";\n\nexport type GroupPickerOptionType = {\n appsCount?: number;\n description: string;\n groupPushMappingsCount?: number;\n id: string;\n logo?: string;\n name: string;\n usersCount?: number;\n};\n\nexport type GroupPickerProps<\n GroupPickerOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = AutocompleteProps<\n GroupPickerOptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n>;\n\nconst avatarImageSizeSmall = 16;\nconst avatarImageSizeMedium = 24;\n\nconst GroupPicker = <\n OptionType extends GroupPickerOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n hasMultipleChoices,\n isCustomValueAllowed,\n isDisabled,\n isLoading,\n isOptional = false,\n isReadOnly,\n hint,\n label,\n onChange,\n onInputChange,\n options,\n value,\n testId,\n}: GroupPickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const isOptionEqualToValue = useCallback(\n (sourceValue: OptionType, targetValue: OptionType) => {\n return sourceValue.id === targetValue.id;\n },\n [],\n );\n\n const getOptionLabel = useCallback(\n (\n option:\n | OptionType\n | AutocompleteFreeSoloValueMapping<IsCustomValueAllowed>,\n ) => {\n return (option as OptionType).name;\n },\n [],\n );\n\n const renderOption = useCallback(\n (props: HTMLAttributes<HTMLElement>, option: OptionType) => {\n return (\n <li {...props} key={option.id}>\n <Box\n sx={{\n alignItems: \"top\",\n display: \"flex\",\n flexDirection: \"row\",\n }}\n >\n <Box sx={{ paddingRight: odysseyDesignTokens.Spacing2 }}>\n <MuiAvatar\n alt={option.name}\n src={option.logo}\n sx={{\n [`.${avatarClasses.fallback}`]: {\n visibility: \"hidden\",\n },\n background: \"transparent\",\n height: avatarImageSizeMedium,\n width: avatarImageSizeMedium,\n }}\n />\n </Box>\n <Box>\n {option.name}\n <Subordinate>{option.description}</Subordinate>\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"row\",\n paddingTop: odysseyDesignTokens.Spacing1,\n }}\n >\n {typeof option.usersCount === \"number\" && (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"row\",\n paddingRight: odysseyDesignTokens.Spacing4,\n }}\n >\n <UserIcon />\n {option.usersCount}\n </Box>\n )}\n {typeof option.appsCount === \"number\" && (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"row\",\n paddingRight: odysseyDesignTokens.Spacing4,\n }}\n >\n <GridIcon />\n {option.appsCount}\n </Box>\n )}\n {typeof option.groupPushMappingsCount === \"number\" && (\n <Box sx={{ display: \"flex\", flexDirection: \"row\" }}>\n <GroupIcon />\n {option.groupPushMappingsCount}\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n </li>\n );\n },\n [odysseyDesignTokens],\n );\n\n const renderTags = useCallback(\n (values: OptionType[], getTagProps: AutocompleteGetTagProps) =>\n values.map((option, index) => {\n const { key, onDelete } = getTagProps({ index });\n return (\n <Box\n key={key}\n sx={{\n margin: odysseyDesignTokens.Spacing1,\n }}\n >\n <Tag\n icon={\n <MuiAvatar\n alt={option.name}\n src={option.logo}\n sx={{\n [`.${avatarClasses.fallback}`]: {\n visibility: \"hidden\",\n },\n background: \"transparent\",\n height: avatarImageSizeSmall,\n width: avatarImageSizeSmall,\n }}\n />\n }\n label={option.name}\n onRemove={onDelete}\n />\n </Box>\n );\n }),\n [odysseyDesignTokens],\n );\n\n const renderInput = useCallback(\n ({\n InputLabelProps,\n InputProps,\n ...params\n }: AutocompleteRenderInputParams) => (\n <Field\n fieldType=\"single\"\n hasVisibleLabel\n //@ts-expect-error htmlFor is not available on the currently typed params\n id={InputLabelProps.htmlFor}\n hint={hint}\n label={label}\n isOptional={isOptional}\n renderFieldComponent={({ ariaDescribedBy, id }) => (\n <InputBase\n {...params}\n {...InputProps}\n aria-describedby={ariaDescribedBy}\n id={id}\n required={!isOptional}\n />\n )}\n />\n ),\n [hint, isOptional, label],\n );\n\n return (\n <MuiAutocomplete\n // AutoComplete is wrapped in a div within MUI which does not get the disabled attr. So this aria-disabled gets set in the div\n aria-disabled={isDisabled}\n data-se={testId}\n disabled={isDisabled}\n filterSelectedOptions={true}\n freeSolo={isCustomValueAllowed}\n getOptionLabel={getOptionLabel}\n isOptionEqualToValue={isOptionEqualToValue}\n loading={isLoading}\n multiple={hasMultipleChoices}\n onChange={onChange}\n onInputChange={onInputChange}\n options={options}\n readOnly={isReadOnly}\n renderInput={renderInput}\n renderOption={renderOption}\n renderTags={renderTags}\n value={value}\n />\n );\n};\n\nconst MemoizedGroupPicker = memo(GroupPicker) as typeof GroupPicker;\n\nexport { MemoizedGroupPicker as GroupPicker };\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PaginatedTable.js","names":["Typography","useMaterialReactTable","MaterialReactTable","memo","useCallback","useEffect","useMemo","useRef","useState","Trans","useTranslation","jsx","_jsx","Fragment","_Fragment","PaginatedTable","columns","data","fetchMoreData","getRowId","hasError","hasRowSelection","initialState","isFetching","onGlobalFilterChange","onPaginationChange","onRowSelectionChange","onRowSelectionChangeProp","rowsPerPage","state","ToolbarButtons","t","rowVirtualizerInstanceRef","columnFilters","setColumnFilters","globalFilter","setGlobalFilter","undefined","current","scrollToIndex","error","console","totalFetchedRows","length","renderBottomToolbarCustomActions","children","count","i18nKey","values","totalRows","renderTopToolbarCustomActions","table","rowSelection","setRowSelection","pagination","setPagination","pageIndex","pageSize","dataLengthRef","updatePagination","paginationFunction","previousPagination","nextPagination","numberOfPages","Math","floor","modifiedInitialState","modifiedState","muiToolbarAlertBannerProps","severity","muiTablePaginationProps","rowsPerPageOptions","showFirstButton","showLastButton","muiCheckboxStyles","theme","components","MuiCheckbox","styleOverrides","root","ownerState","enableMultiRowSelection","enablePagination","enableRowSelection","enableSorting","muiSelectAllCheckboxProps","sx","muiSelectCheckboxProps","muiPaginationProps","onColumnFiltersChange","rowVirtualizerOptions","overscan","MemoizedPaginatedTable","displayName"],"sources":["../../src/labs/PaginatedTable.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { AlertProps } from \"@mui/material\";\nimport { Typography } from \"../Typography\";\nimport {\n MRT_PaginationState,\n type MRT_ColumnFiltersState,\n type MRT_RowSelectionState,\n type MRT_TableInstance,\n type MRT_Virtualizer,\n useMaterialReactTable,\n MaterialReactTable,\n} from \"material-react-table\";\nimport {\n FunctionComponent,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport type {\n DefaultMaterialReactTableData,\n MaterialReactTableProps,\n} from \"./materialReactTableTypes\";\n\nexport type PaginatedTableProps<TData extends DefaultMaterialReactTableData> = {\n columns: MaterialReactTableProps<TData>[\"columns\"];\n data: MaterialReactTableProps<TData>[\"data\"];\n fetchMoreData?: () => void;\n getRowId?: MaterialReactTableProps<TData>[\"getRowId\"];\n hasError?: boolean;\n hasRowSelection?: boolean;\n initialState?: MaterialReactTableProps<TData>[\"initialState\"];\n isFetching?: boolean;\n onGlobalFilterChange?: MaterialReactTableProps<TData>[\"onGlobalFilterChange\"];\n onPaginationChange?: MaterialReactTableProps<TData>[\"onPaginationChange\"];\n onRowSelectionChange?: MaterialReactTableProps<TData>[\"onRowSelectionChange\"];\n rowsPerPage?: number;\n state?: MaterialReactTableProps<TData>[\"state\"];\n ToolbarButtons?: FunctionComponent<\n { table: MRT_TableInstance<TData> } & unknown\n >;\n};\n\nconst PaginatedTable = <TData extends DefaultMaterialReactTableData>({\n columns = [],\n data = [],\n fetchMoreData,\n getRowId,\n hasError,\n hasRowSelection,\n initialState,\n isFetching,\n onGlobalFilterChange,\n onPaginationChange,\n onRowSelectionChange: onRowSelectionChangeProp,\n rowsPerPage = 10,\n state,\n ToolbarButtons,\n}: PaginatedTableProps<TData>) => {\n const { t } = useTranslation();\n\n const rowVirtualizerInstanceRef =\n useRef<MRT_Virtualizer<HTMLDivElement, HTMLTableRowElement>>(null);\n\n const [columnFilters, setColumnFilters] = useState<MRT_ColumnFiltersState>(\n []\n );\n\n const [globalFilter, setGlobalFilter] = useState<string>();\n\n useEffect(() => {\n if (globalFilter !== undefined) {\n onGlobalFilterChange?.(globalFilter);\n }\n }, [globalFilter, onGlobalFilterChange]);\n\n useEffect(() => {\n try {\n // Scroll to top of table when sorting or filters change.\n rowVirtualizerInstanceRef.current?.scrollToIndex?.(0);\n } catch (error) {\n console.error(error);\n }\n }, [columnFilters, globalFilter]);\n\n const totalFetchedRows = data.length ?? 0;\n\n const renderBottomToolbarCustomActions = useCallback(\n () =>\n fetchMoreData ? (\n <Typography>\n <Trans\n count={totalFetchedRows}\n i18nKey=\"table.fetchedrows.text\"\n values={{\n totalRows: totalFetchedRows,\n }}\n />\n </Typography>\n ) : (\n <Typography>\n <Trans\n count={totalFetchedRows}\n i18nKey=\"table.rows.text\"\n values={{\n totalRows: totalFetchedRows,\n }}\n />\n </Typography>\n ),\n [fetchMoreData, totalFetchedRows]\n );\n\n const renderTopToolbarCustomActions = useCallback<\n Exclude<\n MaterialReactTableProps<TData>[\"renderTopToolbarCustomActions\"],\n undefined\n >\n >(\n ({ table }: { table: MRT_TableInstance<TData> }) => (\n <>{ToolbarButtons && <ToolbarButtons table={table} />}</>\n ),\n [ToolbarButtons]\n );\n\n const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n\n useEffect(() => {\n onRowSelectionChangeProp?.(rowSelection);\n }, [onRowSelectionChangeProp, rowSelection]);\n\n const [pagination, setPagination] = useState<MRT_PaginationState>(\n initialState?.pagination || {\n pageIndex: 0,\n pageSize: rowsPerPage,\n }\n );\n\n const dataLengthRef = useRef(data.length);\n\n const updatePagination = useCallback(\n (paginationFunction) => {\n if (data.length === dataLengthRef.current) {\n setPagination((previousPagination) => {\n const nextPagination = paginationFunction(previousPagination);\n return nextPagination;\n });\n } else {\n dataLengthRef.current = data.length;\n }\n },\n [data.length]\n );\n\n useEffect(() => {\n const numberOfPages = Math.floor(data.length / pagination.pageSize);\n\n if (!isFetching && pagination.pageIndex > numberOfPages - 1) {\n fetchMoreData?.();\n }\n }, [\n data.length,\n fetchMoreData,\n isFetching,\n pagination.pageIndex,\n pagination.pageSize,\n ]);\n\n useEffect(() => {\n onPaginationChange?.({\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize,\n });\n }, [onPaginationChange, pagination.pageIndex, pagination.pageSize]);\n\n const modifiedInitialState = useMemo(\n () => ({\n pagination,\n ...initialState,\n }),\n [initialState, pagination]\n );\n\n const modifiedState = useMemo(\n () => ({\n pagination: {\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize,\n },\n rowSelection,\n globalFilter,\n columnFilters,\n ...state,\n }),\n [\n pagination.pageIndex,\n pagination.pageSize,\n rowSelection,\n globalFilter,\n columnFilters,\n state,\n ]\n );\n\n const muiToolbarAlertBannerProps: AlertProps = useMemo(\n () =>\n hasError\n ? {\n children: t(\"table.error\"),\n severity: \"error\",\n }\n : {},\n [hasError, t]\n );\n\n const muiTablePaginationProps = useMemo(\n () => ({\n rowsPerPageOptions: [],\n showFirstButton: false,\n showLastButton: false,\n }),\n []\n );\n\n const muiCheckboxStyles = useCallback(\n (theme) =>\n typeof theme.components?.MuiCheckbox?.styleOverrides?.root === \"function\"\n ? theme.components?.MuiCheckbox?.styleOverrides?.root?.({\n ownerState: {},\n theme,\n })\n : \"\",\n []\n );\n\n const table = useMaterialReactTable({\n columns: columns,\n data: data,\n enableMultiRowSelection: hasRowSelection,\n enablePagination: true,\n enableRowSelection: hasRowSelection,\n enableSorting: false,\n getRowId: getRowId,\n initialState: modifiedInitialState,\n muiSelectAllCheckboxProps: { sx: muiCheckboxStyles },\n muiSelectCheckboxProps: { sx: muiCheckboxStyles },\n muiPaginationProps: muiTablePaginationProps,\n muiToolbarAlertBannerProps: muiToolbarAlertBannerProps,\n onColumnFiltersChange: setColumnFilters,\n onGlobalFilterChange: setGlobalFilter,\n onPaginationChange: updatePagination,\n onRowSelectionChange: setRowSelection,\n renderBottomToolbarCustomActions: renderBottomToolbarCustomActions,\n renderTopToolbarCustomActions: renderTopToolbarCustomActions,\n rowVirtualizerInstanceRef: rowVirtualizerInstanceRef,\n rowVirtualizerOptions: { overscan: 4 },\n state: modifiedState,\n });\n\n return <MaterialReactTable table={table} />;\n};\n\nconst MemoizedPaginatedTable = memo(PaginatedTable) as typeof PaginatedTable;\n\n// @ts-expect-error | This is going to error because the component isn't and can't be defined as a `FunctionComponent`, and therefore, doesn't have a `displayName` prop.\nMemoizedPaginatedTable.displayName = \"PaginatedTable\";\n\nexport { MemoizedPaginatedTable as PaginatedTable };\n"],"mappings":"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"}
1
+ {"version":3,"file":"PaginatedTable.js","names":["Typography","useMaterialReactTable","MaterialReactTable","memo","useCallback","useEffect","useMemo","useRef","useState","Trans","useTranslation","jsx","_jsx","Fragment","_Fragment","PaginatedTable","columns","data","fetchMoreData","getRowId","hasError","hasRowSelection","initialState","isFetching","onGlobalFilterChange","onPaginationChange","onRowSelectionChange","onRowSelectionChangeProp","rowsPerPage","state","ToolbarButtons","t","rowVirtualizerInstanceRef","columnFilters","setColumnFilters","globalFilter","setGlobalFilter","undefined","current","scrollToIndex","error","console","totalFetchedRows","length","renderBottomToolbarCustomActions","children","count","i18nKey","values","totalRows","renderTopToolbarCustomActions","table","rowSelection","setRowSelection","pagination","setPagination","pageIndex","pageSize","dataLengthRef","updatePagination","paginationFunction","previousPagination","nextPagination","numberOfPages","Math","floor","modifiedInitialState","modifiedState","muiToolbarAlertBannerProps","severity","muiTablePaginationProps","rowsPerPageOptions","showFirstButton","showLastButton","muiCheckboxStyles","theme","components","MuiCheckbox","styleOverrides","root","ownerState","enableMultiRowSelection","enablePagination","enableRowSelection","enableSorting","muiSelectAllCheckboxProps","sx","muiSelectCheckboxProps","muiPaginationProps","onColumnFiltersChange","rowVirtualizerOptions","overscan","MemoizedPaginatedTable","displayName"],"sources":["../../src/labs/PaginatedTable.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { AlertProps } from \"@mui/material\";\nimport { Typography } from \"../Typography\";\nimport {\n MRT_PaginationState,\n type MRT_ColumnFiltersState,\n type MRT_RowSelectionState,\n type MRT_TableInstance,\n type MRT_Virtualizer,\n useMaterialReactTable,\n MaterialReactTable,\n} from \"material-react-table\";\nimport {\n FunctionComponent,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport type {\n DefaultMaterialReactTableData,\n MaterialReactTableProps,\n} from \"./materialReactTableTypes\";\n\nexport type PaginatedTableProps<TData extends DefaultMaterialReactTableData> = {\n columns: MaterialReactTableProps<TData>[\"columns\"];\n data: MaterialReactTableProps<TData>[\"data\"];\n fetchMoreData?: () => void;\n getRowId?: MaterialReactTableProps<TData>[\"getRowId\"];\n hasError?: boolean;\n hasRowSelection?: boolean;\n initialState?: MaterialReactTableProps<TData>[\"initialState\"];\n isFetching?: boolean;\n onGlobalFilterChange?: MaterialReactTableProps<TData>[\"onGlobalFilterChange\"];\n onPaginationChange?: MaterialReactTableProps<TData>[\"onPaginationChange\"];\n onRowSelectionChange?: MaterialReactTableProps<TData>[\"onRowSelectionChange\"];\n rowsPerPage?: number;\n state?: MaterialReactTableProps<TData>[\"state\"];\n ToolbarButtons?: FunctionComponent<\n { table: MRT_TableInstance<TData> } & unknown\n >;\n};\n\nconst PaginatedTable = <TData extends DefaultMaterialReactTableData>({\n columns = [],\n data = [],\n fetchMoreData,\n getRowId,\n hasError,\n hasRowSelection,\n initialState,\n isFetching,\n onGlobalFilterChange,\n onPaginationChange,\n onRowSelectionChange: onRowSelectionChangeProp,\n rowsPerPage = 10,\n state,\n ToolbarButtons,\n}: PaginatedTableProps<TData>) => {\n const { t } = useTranslation();\n\n const rowVirtualizerInstanceRef =\n useRef<MRT_Virtualizer<HTMLDivElement, HTMLTableRowElement>>(null);\n\n const [columnFilters, setColumnFilters] = useState<MRT_ColumnFiltersState>(\n [],\n );\n\n const [globalFilter, setGlobalFilter] = useState<string>();\n\n useEffect(() => {\n if (globalFilter !== undefined) {\n onGlobalFilterChange?.(globalFilter);\n }\n }, [globalFilter, onGlobalFilterChange]);\n\n useEffect(() => {\n try {\n // Scroll to top of table when sorting or filters change.\n rowVirtualizerInstanceRef.current?.scrollToIndex?.(0);\n } catch (error) {\n console.error(error);\n }\n }, [columnFilters, globalFilter]);\n\n const totalFetchedRows = data.length ?? 0;\n\n const renderBottomToolbarCustomActions = useCallback(\n () =>\n fetchMoreData ? (\n <Typography>\n <Trans\n count={totalFetchedRows}\n i18nKey=\"table.fetchedrows.text\"\n values={{\n totalRows: totalFetchedRows,\n }}\n />\n </Typography>\n ) : (\n <Typography>\n <Trans\n count={totalFetchedRows}\n i18nKey=\"table.rows.text\"\n values={{\n totalRows: totalFetchedRows,\n }}\n />\n </Typography>\n ),\n [fetchMoreData, totalFetchedRows],\n );\n\n const renderTopToolbarCustomActions = useCallback<\n Exclude<\n MaterialReactTableProps<TData>[\"renderTopToolbarCustomActions\"],\n undefined\n >\n >(\n ({ table }: { table: MRT_TableInstance<TData> }) => (\n <>{ToolbarButtons && <ToolbarButtons table={table} />}</>\n ),\n [ToolbarButtons],\n );\n\n const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n\n useEffect(() => {\n onRowSelectionChangeProp?.(rowSelection);\n }, [onRowSelectionChangeProp, rowSelection]);\n\n const [pagination, setPagination] = useState<MRT_PaginationState>(\n initialState?.pagination || {\n pageIndex: 0,\n pageSize: rowsPerPage,\n },\n );\n\n const dataLengthRef = useRef(data.length);\n\n const updatePagination = useCallback(\n // @ts-expect-error TEMP: This type aren't working after the upgrade, but they need to be fixed.\n (paginationFunction) => {\n if (data.length === dataLengthRef.current) {\n setPagination((previousPagination) => {\n const nextPagination = paginationFunction(previousPagination);\n return nextPagination;\n });\n } else {\n dataLengthRef.current = data.length;\n }\n },\n [data.length],\n );\n\n useEffect(() => {\n const numberOfPages = Math.floor(data.length / pagination.pageSize);\n\n if (!isFetching && pagination.pageIndex > numberOfPages - 1) {\n fetchMoreData?.();\n }\n }, [\n data.length,\n fetchMoreData,\n isFetching,\n pagination.pageIndex,\n pagination.pageSize,\n ]);\n\n useEffect(() => {\n onPaginationChange?.({\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize,\n });\n }, [onPaginationChange, pagination.pageIndex, pagination.pageSize]);\n\n const modifiedInitialState = useMemo(\n () => ({\n pagination,\n ...initialState,\n }),\n [initialState, pagination],\n );\n\n const modifiedState = useMemo(\n () => ({\n pagination: {\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize,\n },\n rowSelection,\n globalFilter,\n columnFilters,\n ...state,\n }),\n [\n pagination.pageIndex,\n pagination.pageSize,\n rowSelection,\n globalFilter,\n columnFilters,\n state,\n ],\n );\n\n const muiToolbarAlertBannerProps: AlertProps = useMemo(\n () =>\n hasError\n ? {\n children: t(\"table.error\"),\n severity: \"error\",\n }\n : {},\n [hasError, t],\n );\n\n const muiTablePaginationProps = useMemo(\n () => ({\n rowsPerPageOptions: [],\n showFirstButton: false,\n showLastButton: false,\n }),\n [],\n );\n\n const muiCheckboxStyles = useCallback(\n // @ts-expect-error TEMP: This type aren't working after the upgrade, but they need to be fixed.\n (theme) =>\n typeof theme.components?.MuiCheckbox?.styleOverrides?.root === \"function\"\n ? theme.components?.MuiCheckbox?.styleOverrides?.root?.({\n ownerState: {},\n theme,\n })\n : \"\",\n [],\n );\n\n const table = useMaterialReactTable({\n columns: columns,\n data: data,\n enableMultiRowSelection: hasRowSelection,\n enablePagination: true,\n enableRowSelection: hasRowSelection,\n enableSorting: false,\n getRowId: getRowId,\n initialState: modifiedInitialState,\n muiSelectAllCheckboxProps: { sx: muiCheckboxStyles },\n muiSelectCheckboxProps: { sx: muiCheckboxStyles },\n muiPaginationProps: muiTablePaginationProps,\n muiToolbarAlertBannerProps: muiToolbarAlertBannerProps,\n onColumnFiltersChange: setColumnFilters,\n onGlobalFilterChange: setGlobalFilter,\n onPaginationChange: updatePagination,\n onRowSelectionChange: setRowSelection,\n renderBottomToolbarCustomActions: renderBottomToolbarCustomActions,\n renderTopToolbarCustomActions: renderTopToolbarCustomActions,\n rowVirtualizerInstanceRef: rowVirtualizerInstanceRef,\n rowVirtualizerOptions: { overscan: 4 },\n state: modifiedState,\n });\n\n return <MaterialReactTable table={table} />;\n};\n\nconst MemoizedPaginatedTable = memo(PaginatedTable) as typeof PaginatedTable;\n\n// @ts-expect-error | This is going to error because the component isn't and can't be defined as a `FunctionComponent`, and therefore, doesn't have a `displayName` prop.\nMemoizedPaginatedTable.displayName = \"PaginatedTable\";\n\nexport { MemoizedPaginatedTable as PaginatedTable };\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StaticTable.js","names":["useMaterialReactTable","MaterialReactTable","memo","useCallback","useEffect","useMemo","useRef","useState","useTranslation","jsx","_jsx","Fragment","_Fragment","StaticTable","columns","data","getRowId","hasError","initialState","onGlobalFilterChange","state","ToolbarButtons","t","rowVirtualizerInstanceRef","columnFilters","setColumnFilters","globalFilter","setGlobalFilter","undefined","modifiedState","renderTopToolbarCustomActions","table","children","current","scrollToIndex","error","console","enableBottomToolbar","enablePagination","enableRowVirtualization","enableSorting","muiToolbarAlertBannerProps","color","onColumnFiltersChange","rowVirtualizerOptions","overscan","MemoizedStaticTable"],"sources":["../../src/labs/StaticTable.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n useMaterialReactTable,\n type MRT_ColumnFiltersState,\n type MRT_TableInstance,\n type MRT_Virtualizer,\n MaterialReactTable,\n} from \"material-react-table\";\nimport {\n FunctionComponent,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport type {\n DefaultMaterialReactTableData,\n MaterialReactTableProps,\n} from \"./materialReactTableTypes\";\n\nexport type StaticTableProps<TData extends DefaultMaterialReactTableData> = {\n columns: MaterialReactTableProps<TData>[\"columns\"];\n data: MaterialReactTableProps<TData>[\"data\"];\n getRowId?: MaterialReactTableProps<TData>[\"getRowId\"];\n hasError?: boolean;\n initialState?: MaterialReactTableProps<TData>[\"initialState\"];\n onGlobalFilterChange?: MaterialReactTableProps<TData>[\"onGlobalFilterChange\"];\n state?: MaterialReactTableProps<TData>[\"state\"];\n ToolbarButtons?: FunctionComponent<\n { table: MRT_TableInstance<TData> } & unknown\n >;\n};\n\nconst StaticTable = <TData extends DefaultMaterialReactTableData>({\n columns = [],\n data = [],\n getRowId,\n hasError,\n initialState,\n onGlobalFilterChange,\n state,\n ToolbarButtons,\n}: StaticTableProps<TData>) => {\n const { t } = useTranslation();\n\n const rowVirtualizerInstanceRef =\n useRef<MRT_Virtualizer<HTMLDivElement, HTMLTableRowElement>>(null);\n\n const [columnFilters, setColumnFilters] = useState<MRT_ColumnFiltersState>(\n []\n );\n\n const [globalFilter, setGlobalFilter] = useState<string>();\n\n useEffect(() => {\n if (globalFilter !== undefined) {\n onGlobalFilterChange?.(globalFilter);\n }\n }, [globalFilter, onGlobalFilterChange]);\n\n const modifiedState = useMemo(\n () => ({\n globalFilter,\n columnFilters,\n ...state,\n }),\n [globalFilter, columnFilters, state]\n );\n\n const renderTopToolbarCustomActions = useCallback<\n Exclude<\n MaterialReactTableProps<TData>[\"renderTopToolbarCustomActions\"],\n undefined\n >\n >(\n ({ table }) => <>{ToolbarButtons && <ToolbarButtons table={table} />}</>,\n [ToolbarButtons]\n );\n\n useEffect(() => {\n try {\n // Scroll to top of table when sorting or filters change.\n rowVirtualizerInstanceRef.current?.scrollToIndex?.(0);\n } catch (error) {\n console.error(error);\n }\n }, [columnFilters, globalFilter]);\n\n const table = useMaterialReactTable({\n columns: columns,\n data: data,\n enableBottomToolbar: false,\n enablePagination: false,\n enableRowVirtualization: true,\n enableSorting: false,\n getRowId: getRowId,\n initialState: initialState,\n muiToolbarAlertBannerProps: hasError\n ? { children: t(\"table.error\"), color: \"error\" }\n : undefined,\n onColumnFiltersChange: setColumnFilters,\n onGlobalFilterChange: setGlobalFilter,\n renderTopToolbarCustomActions: renderTopToolbarCustomActions,\n rowVirtualizerInstanceRef: rowVirtualizerInstanceRef,\n rowVirtualizerOptions: { overscan: 4 },\n state: modifiedState,\n });\n\n return <MaterialReactTable table={table} />;\n};\n\nconst MemoizedStaticTable = memo(StaticTable) as typeof StaticTable;\n\nexport { MemoizedStaticTable as StaticTable };\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SACEA,qBAAqB,EAIrBC,kBAAkB,QACb,sBAAsB;AAC7B,SAEEC,IAAI,EACJC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,cAAc,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAoB/C,MAAMC,WAAW,GAAGA,CAA8C;EAChEC,OAAO,GAAG,EAAE;EACZC,IAAI,GAAG,EAAE;EACTC,QAAQ;EACRC,QAAQ;EACRC,YAAY;EACZC,oBAAoB;EACpBC,KAAK;EACLC;AACuB,CAAC,KAAK;EAC7B,MAAM;IAAEC;EAAE,CAAC,GAAGd,cAAc,CAAC,CAAC;EAE9B,MAAMe,yBAAyB,GAC7BjB,MAAM,CAAuD,IAAI,CAAC;EAEpE,MAAM,CAACkB,aAAa,EAAEC,gBAAgB,CAAC,GAAGlB,QAAQ,CAChD,EACF,CAAC;EAED,MAAM,CAACmB,YAAY,EAAEC,eAAe,CAAC,GAAGpB,QAAQ,CAAS,CAAC;EAE1DH,SAAS,CAAC,MAAM;IACd,IAAIsB,YAAY,KAAKE,SAAS,EAAE;MAC9BT,oBAAoB,GAAGO,YAAY,CAAC;IACtC;EACF,CAAC,EAAE,CAACA,YAAY,EAAEP,oBAAoB,CAAC,CAAC;EAExC,MAAMU,aAAa,GAAGxB,OAAO,CAC3B,OAAO;IACLqB,YAAY;IACZF,aAAa;IACb,GAAGJ;EACL,CAAC,CAAC,EACF,CAACM,YAAY,EAAEF,aAAa,EAAEJ,KAAK,CACrC,CAAC;EAED,MAAMU,6BAA6B,GAAG3B,WAAW,CAM/C,CAAC;IAAE4B;EAAM,CAAC,KAAKrB,IAAA,CAAAE,SAAA;IAAAoB,QAAA,EAAGX,cAAc,IAAIX,IAAA,CAACW,cAAc;MAACU,KAAK,EAAEA;IAAM,CAAE;EAAC,CAAG,CAAC,EACxE,CAACV,cAAc,CACjB,CAAC;EAEDjB,SAAS,CAAC,MAAM;IACd,IAAI;MAEFmB,yBAAyB,CAACU,OAAO,EAAEC,aAAa,GAAG,CAAC,CAAC;IACvD,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;IACtB;EACF,CAAC,EAAE,CAACX,aAAa,EAAEE,YAAY,CAAC,CAAC;EAEjC,MAAMK,KAAK,GAAG/B,qBAAqB,CAAC;IAClCc,OAAO,EAAEA,OAAO;IAChBC,IAAI,EAAEA,IAAI;IACVsB,mBAAmB,EAAE,KAAK;IAC1BC,gBAAgB,EAAE,KAAK;IACvBC,uBAAuB,EAAE,IAAI;IAC7BC,aAAa,EAAE,KAAK;IACpBxB,QAAQ,EAAEA,QAAQ;IAClBE,YAAY,EAAEA,YAAY;IAC1BuB,0BAA0B,EAAExB,QAAQ,GAChC;MAAEe,QAAQ,EAAEV,CAAC,CAAC,aAAa,CAAC;MAAEoB,KAAK,EAAE;IAAQ,CAAC,GAC9Cd,SAAS;IACbe,qBAAqB,EAAElB,gBAAgB;IACvCN,oBAAoB,EAAEQ,eAAe;IACrCG,6BAA6B,EAAEA,6BAA6B;IAC5DP,yBAAyB,EAAEA,yBAAyB;IACpDqB,qBAAqB,EAAE;MAAEC,QAAQ,EAAE;IAAE,CAAC;IACtCzB,KAAK,EAAES;EACT,CAAC,CAAC;EAEF,OAAOnB,IAAA,CAACT,kBAAkB;IAAC8B,KAAK,EAAEA;EAAM,CAAE,CAAC;AAC7C,CAAC;AAED,MAAMe,mBAAmB,GAAG5C,IAAI,CAACW,WAAW,CAAuB;AAEnE,SAASiC,mBAAmB,IAAIjC,WAAW"}
1
+ {"version":3,"file":"StaticTable.js","names":["useMaterialReactTable","MaterialReactTable","memo","useCallback","useEffect","useMemo","useRef","useState","useTranslation","jsx","_jsx","Fragment","_Fragment","StaticTable","columns","data","getRowId","hasError","initialState","onGlobalFilterChange","state","ToolbarButtons","t","rowVirtualizerInstanceRef","columnFilters","setColumnFilters","globalFilter","setGlobalFilter","undefined","modifiedState","renderTopToolbarCustomActions","table","children","current","scrollToIndex","error","console","enableBottomToolbar","enablePagination","enableRowVirtualization","enableSorting","muiToolbarAlertBannerProps","color","onColumnFiltersChange","rowVirtualizerOptions","overscan","MemoizedStaticTable"],"sources":["../../src/labs/StaticTable.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n useMaterialReactTable,\n type MRT_ColumnFiltersState,\n type MRT_TableInstance,\n type MRT_Virtualizer,\n MaterialReactTable,\n} from \"material-react-table\";\nimport {\n FunctionComponent,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport type {\n DefaultMaterialReactTableData,\n MaterialReactTableProps,\n} from \"./materialReactTableTypes\";\n\nexport type StaticTableProps<TData extends DefaultMaterialReactTableData> = {\n columns: MaterialReactTableProps<TData>[\"columns\"];\n data: MaterialReactTableProps<TData>[\"data\"];\n getRowId?: MaterialReactTableProps<TData>[\"getRowId\"];\n hasError?: boolean;\n initialState?: MaterialReactTableProps<TData>[\"initialState\"];\n onGlobalFilterChange?: MaterialReactTableProps<TData>[\"onGlobalFilterChange\"];\n state?: MaterialReactTableProps<TData>[\"state\"];\n ToolbarButtons?: FunctionComponent<\n { table: MRT_TableInstance<TData> } & unknown\n >;\n};\n\nconst StaticTable = <TData extends DefaultMaterialReactTableData>({\n columns = [],\n data = [],\n getRowId,\n hasError,\n initialState,\n onGlobalFilterChange,\n state,\n ToolbarButtons,\n}: StaticTableProps<TData>) => {\n const { t } = useTranslation();\n\n const rowVirtualizerInstanceRef =\n useRef<MRT_Virtualizer<HTMLDivElement, HTMLTableRowElement>>(null);\n\n const [columnFilters, setColumnFilters] = useState<MRT_ColumnFiltersState>(\n [],\n );\n\n const [globalFilter, setGlobalFilter] = useState<string>();\n\n useEffect(() => {\n if (globalFilter !== undefined) {\n onGlobalFilterChange?.(globalFilter);\n }\n }, [globalFilter, onGlobalFilterChange]);\n\n const modifiedState = useMemo(\n () => ({\n globalFilter,\n columnFilters,\n ...state,\n }),\n [globalFilter, columnFilters, state],\n );\n\n const renderTopToolbarCustomActions = useCallback<\n Exclude<\n MaterialReactTableProps<TData>[\"renderTopToolbarCustomActions\"],\n undefined\n >\n >(\n ({ table }) => <>{ToolbarButtons && <ToolbarButtons table={table} />}</>,\n [ToolbarButtons],\n );\n\n useEffect(() => {\n try {\n // Scroll to top of table when sorting or filters change.\n rowVirtualizerInstanceRef.current?.scrollToIndex?.(0);\n } catch (error) {\n console.error(error);\n }\n }, [columnFilters, globalFilter]);\n\n const table = useMaterialReactTable({\n columns: columns,\n data: data,\n enableBottomToolbar: false,\n enablePagination: false,\n enableRowVirtualization: true,\n enableSorting: false,\n getRowId: getRowId,\n initialState: initialState,\n muiToolbarAlertBannerProps: hasError\n ? { children: t(\"table.error\"), color: \"error\" }\n : undefined,\n onColumnFiltersChange: setColumnFilters,\n onGlobalFilterChange: setGlobalFilter,\n renderTopToolbarCustomActions: renderTopToolbarCustomActions,\n rowVirtualizerInstanceRef: rowVirtualizerInstanceRef,\n rowVirtualizerOptions: { overscan: 4 },\n state: modifiedState,\n });\n\n return <MaterialReactTable table={table} />;\n};\n\nconst MemoizedStaticTable = memo(StaticTable) as typeof StaticTable;\n\nexport { MemoizedStaticTable as StaticTable };\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SACEA,qBAAqB,EAIrBC,kBAAkB,QACb,sBAAsB;AAC7B,SAEEC,IAAI,EACJC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,cAAc,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAoB/C,MAAMC,WAAW,GAAGA,CAA8C;EAChEC,OAAO,GAAG,EAAE;EACZC,IAAI,GAAG,EAAE;EACTC,QAAQ;EACRC,QAAQ;EACRC,YAAY;EACZC,oBAAoB;EACpBC,KAAK;EACLC;AACuB,CAAC,KAAK;EAC7B,MAAM;IAAEC;EAAE,CAAC,GAAGd,cAAc,CAAC,CAAC;EAE9B,MAAMe,yBAAyB,GAC7BjB,MAAM,CAAuD,IAAI,CAAC;EAEpE,MAAM,CAACkB,aAAa,EAAEC,gBAAgB,CAAC,GAAGlB,QAAQ,CAChD,EACF,CAAC;EAED,MAAM,CAACmB,YAAY,EAAEC,eAAe,CAAC,GAAGpB,QAAQ,CAAS,CAAC;EAE1DH,SAAS,CAAC,MAAM;IACd,IAAIsB,YAAY,KAAKE,SAAS,EAAE;MAC9BT,oBAAoB,GAAGO,YAAY,CAAC;IACtC;EACF,CAAC,EAAE,CAACA,YAAY,EAAEP,oBAAoB,CAAC,CAAC;EAExC,MAAMU,aAAa,GAAGxB,OAAO,CAC3B,OAAO;IACLqB,YAAY;IACZF,aAAa;IACb,GAAGJ;EACL,CAAC,CAAC,EACF,CAACM,YAAY,EAAEF,aAAa,EAAEJ,KAAK,CACrC,CAAC;EAED,MAAMU,6BAA6B,GAAG3B,WAAW,CAM/C,CAAC;IAAE4B;EAAM,CAAC,KAAKrB,IAAA,CAAAE,SAAA;IAAAoB,QAAA,EAAGX,cAAc,IAAIX,IAAA,CAACW,cAAc;MAACU,KAAK,EAAEA;IAAM,CAAE;EAAC,CAAG,CAAC,EACxE,CAACV,cAAc,CACjB,CAAC;EAEDjB,SAAS,CAAC,MAAM;IACd,IAAI;MAEFmB,yBAAyB,CAACU,OAAO,EAAEC,aAAa,GAAG,CAAC,CAAC;IACvD,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;IACtB;EACF,CAAC,EAAE,CAACX,aAAa,EAAEE,YAAY,CAAC,CAAC;EAEjC,MAAMK,KAAK,GAAG/B,qBAAqB,CAAC;IAClCc,OAAO,EAAEA,OAAO;IAChBC,IAAI,EAAEA,IAAI;IACVsB,mBAAmB,EAAE,KAAK;IAC1BC,gBAAgB,EAAE,KAAK;IACvBC,uBAAuB,EAAE,IAAI;IAC7BC,aAAa,EAAE,KAAK;IACpBxB,QAAQ,EAAEA,QAAQ;IAClBE,YAAY,EAAEA,YAAY;IAC1BuB,0BAA0B,EAAExB,QAAQ,GAChC;MAAEe,QAAQ,EAAEV,CAAC,CAAC,aAAa,CAAC;MAAEoB,KAAK,EAAE;IAAQ,CAAC,GAC9Cd,SAAS;IACbe,qBAAqB,EAAElB,gBAAgB;IACvCN,oBAAoB,EAAEQ,eAAe;IACrCG,6BAA6B,EAAEA,6BAA6B;IAC5DP,yBAAyB,EAAEA,yBAAyB;IACpDqB,qBAAqB,EAAE;MAAEC,QAAQ,EAAE;IAAE,CAAC;IACtCzB,KAAK,EAAES;EACT,CAAC,CAAC;EAEF,OAAOnB,IAAA,CAACT,kBAAkB;IAAC8B,KAAK,EAAEA;EAAM,CAAE,CAAC;AAC7C,CAAC;AAED,MAAMe,mBAAmB,GAAG5C,IAAI,CAACW,WAAW,CAAuB;AAEnE,SAASiC,mBAAmB,IAAIjC,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","names":["memo","useCallback","useEffect","useMemo","useRef","useState","useTranslation","useOdysseyDesignTokens","Box","FieldHint","useUniqueId","ComponentControlledState","getControlState","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","CONTROLLED","SwitchLabel","checked","hint","hintId","isFullWidth","label","odysseyDesignTokens","t","children","sx","display","alignItems","flexWrap","gap","Spacing1","margin","maxWidth","TypographyLineLengthMax","fontWeight","TypographyWeightBodyBold","padding","backgroundColor","PaletteSuccessLighter","HueNeutral100","borderRadius","BorderRadiusMain","color","PaletteSuccessText","HueNeutral700","fontSize","TypographyScale0","lineHeight","TypographyLineHeightOverline","transitionProperty","transitionDuration","TransitionDurationMain","id","text","Switch","_id","isChecked","isDefaultChecked","isDisabled","name","_name","onChange","testId","value","controlledStateRef","controlledValue","uncontrolledValue","inputValues","current","defaultChecked","internalSwitchChecked","setInternalSwitchChecked","Boolean","undefined","labelElementId","handleOnChange","_","renderSwitchComponent","_Switch","disabled","disableRipple","inputProps","marginBlockEnd","Spacing2","_FormControlLabel","control","labelPlacement","justifyContent","Spacing4","width","MemoizedSwitch","displayName"],"sources":["../../src/labs/Switch.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n memo,\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n Switch as MuiSwitch,\n SwitchProps as MuiSwitchProps,\n FormControlLabel,\n} from \"@mui/material\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useOdysseyDesignTokens } from \"../OdysseyDesignTokensContext\";\nimport { Box } from \"../Box\";\nimport { FieldComponentProps } from \"../FieldComponentProps\";\nimport { FieldHint } from \"../FieldHint\";\nimport type { HtmlProps } from \"../HtmlProps\";\nimport { useUniqueId } from \"../useUniqueId\";\nimport { ComponentControlledState, getControlState } from \"../inputUtils\";\nimport { CheckedFieldProps } from \"../FormCheckedProps\";\n\nconst { CONTROLLED } = ComponentControlledState;\n\ntype OnChangeCallbackArguments = {\n checked: boolean;\n value: string;\n};\n\nexport type SwitchProps = {\n /**\n * if `true`, the label and switch span entire containing element's width\n */\n isFullWidth?: boolean;\n /**\n * The label text for the Switch\n */\n label: string;\n /**\n * The change event handler for the Switch\n */\n onChange?: ({ checked, value }: OnChangeCallbackArguments) => void;\n /**\n * The value attribute of the Switch\n */\n value: string;\n} & Pick<\n FieldComponentProps,\n \"hint\" | \"id\" | \"isFullWidth\" | \"isDisabled\" | \"name\"\n> &\n CheckedFieldProps<MuiSwitchProps> &\n HtmlProps;\n\ntype SwitchLabelProps = {\n checked: boolean;\n hint: SwitchProps[\"hint\"];\n hintId?: string;\n isFullWidth: SwitchProps[\"isFullWidth\"];\n label: SwitchProps[\"label\"];\n};\n\nconst SwitchLabel = ({\n checked,\n hint,\n hintId,\n isFullWidth,\n label,\n}: SwitchLabelProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n return (\n <>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: odysseyDesignTokens.Spacing1,\n margin: 0,\n maxWidth: isFullWidth\n ? \"100%\"\n : odysseyDesignTokens.TypographyLineLengthMax,\n fontWeight: odysseyDesignTokens.TypographyWeightBodyBold,\n }}\n >\n {label}\n <Box\n sx={{\n padding: \"2px 4px\",\n backgroundColor: checked\n ? odysseyDesignTokens.PaletteSuccessLighter\n : odysseyDesignTokens.HueNeutral100,\n borderRadius: odysseyDesignTokens.BorderRadiusMain,\n color: checked\n ? odysseyDesignTokens.PaletteSuccessText\n : odysseyDesignTokens.HueNeutral700,\n fontWeight: odysseyDesignTokens.TypographyWeightBodyBold,\n fontSize: odysseyDesignTokens.TypographyScale0,\n lineHeight: odysseyDesignTokens.TypographyLineHeightOverline,\n transitionProperty: \"background-color, color\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n }}\n >\n {checked ? t(\"switch.active\") : t(\"switch.inactive\")}\n </Box>\n </Box>\n {hint && <FieldHint id={hintId} text={hint} />}\n </>\n );\n};\n\nconst Switch = ({\n hint,\n id: _id,\n isChecked,\n isDefaultChecked,\n isDisabled,\n isFullWidth = false,\n label,\n name: _name,\n onChange,\n testId,\n value = \"Something\",\n}: SwitchProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const controlledStateRef = useRef(\n getControlState({\n controlledValue: isChecked,\n uncontrolledValue: isDefaultChecked,\n })\n );\n const inputValues = useMemo(() => {\n if (controlledStateRef.current === CONTROLLED) {\n return { checked: isChecked };\n }\n return { defaultChecked: isDefaultChecked };\n }, [isDefaultChecked, isChecked]);\n\n const [internalSwitchChecked, setInternalSwitchChecked] = useState(\n controlledStateRef.current === CONTROLLED\n ? Boolean(isChecked)\n : Boolean(isDefaultChecked)\n );\n\n useEffect(() => {\n if (controlledStateRef.current === CONTROLLED) {\n setInternalSwitchChecked(Boolean(isChecked));\n }\n }, [isChecked]);\n\n const id = useUniqueId(_id);\n\n const hintId = hint ? `${id}-hint` : undefined;\n const labelElementId = `${id}-label`;\n\n const handleOnChange = useCallback(\n (_: SyntheticEvent<Element, Event>, checked: boolean) => {\n setInternalSwitchChecked(checked);\n onChange?.({ checked, value });\n },\n [onChange, setInternalSwitchChecked, value]\n );\n\n const renderSwitchComponent = useMemo(\n () => (\n <MuiSwitch\n {...inputValues}\n disabled={isDisabled}\n disableRipple\n inputProps={{\n \"aria-checked\": internalSwitchChecked,\n \"aria-describedby\": hintId,\n \"aria-label\": label,\n \"aria-labelledby\": labelElementId,\n \"data-se\": testId,\n }}\n name={_name ?? id}\n onChange={handleOnChange}\n />\n ),\n [\n handleOnChange,\n hintId,\n inputValues,\n internalSwitchChecked,\n id,\n isDisabled,\n label,\n labelElementId,\n _name,\n testId,\n ]\n );\n\n return (\n <Box\n sx={{\n marginBlockEnd: odysseyDesignTokens.Spacing2,\n }}\n >\n <FormControlLabel\n checked={internalSwitchChecked}\n control={renderSwitchComponent}\n disabled={isDisabled}\n id={labelElementId}\n label={\n <SwitchLabel\n checked={internalSwitchChecked}\n hint={hint}\n hintId={hintId}\n isFullWidth={isFullWidth}\n label={label}\n />\n }\n labelPlacement=\"start\"\n sx={{\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n gap: odysseyDesignTokens.Spacing4,\n width: \"100%\",\n maxWidth: isFullWidth\n ? \"100%\"\n : odysseyDesignTokens.TypographyLineLengthMax,\n }}\n value={value}\n />\n </Box>\n );\n};\n\nconst MemoizedSwitch = memo(Switch);\nMemoizedSwitch.displayName = \"Switch\";\n\nexport { MemoizedSwitch as Switch };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Switch.js","names":["memo","useCallback","useEffect","useMemo","useRef","useState","useTranslation","useOdysseyDesignTokens","Box","FieldHint","useUniqueId","ComponentControlledState","getControlState","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","CONTROLLED","SwitchLabel","checked","hint","hintId","isFullWidth","label","odysseyDesignTokens","t","children","sx","display","alignItems","flexWrap","gap","Spacing1","margin","maxWidth","TypographyLineLengthMax","fontWeight","TypographyWeightBodyBold","padding","backgroundColor","PaletteSuccessLighter","HueNeutral100","borderRadius","BorderRadiusMain","color","PaletteSuccessText","HueNeutral700","fontSize","TypographyScale0","lineHeight","TypographyLineHeightOverline","transitionProperty","transitionDuration","TransitionDurationMain","id","text","Switch","_id","isChecked","isDefaultChecked","isDisabled","name","_name","onChange","testId","value","controlledStateRef","controlledValue","uncontrolledValue","inputValues","current","defaultChecked","internalSwitchChecked","setInternalSwitchChecked","Boolean","undefined","labelElementId","handleOnChange","_","renderSwitchComponent","_Switch","disabled","disableRipple","inputProps","marginBlockEnd","Spacing2","_FormControlLabel","control","labelPlacement","justifyContent","Spacing4","width","MemoizedSwitch","displayName"],"sources":["../../src/labs/Switch.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n memo,\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n Switch as MuiSwitch,\n SwitchProps as MuiSwitchProps,\n FormControlLabel,\n} from \"@mui/material\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useOdysseyDesignTokens } from \"../OdysseyDesignTokensContext\";\nimport { Box } from \"../Box\";\nimport { FieldComponentProps } from \"../FieldComponentProps\";\nimport { FieldHint } from \"../FieldHint\";\nimport type { HtmlProps } from \"../HtmlProps\";\nimport { useUniqueId } from \"../useUniqueId\";\nimport { ComponentControlledState, getControlState } from \"../inputUtils\";\nimport { CheckedFieldProps } from \"../FormCheckedProps\";\n\nconst { CONTROLLED } = ComponentControlledState;\n\ntype OnChangeCallbackArguments = {\n checked: boolean;\n value: string;\n};\n\nexport type SwitchProps = {\n /**\n * if `true`, the label and switch span entire containing element's width\n */\n isFullWidth?: boolean;\n /**\n * The label text for the Switch\n */\n label: string;\n /**\n * The change event handler for the Switch\n */\n onChange?: ({ checked, value }: OnChangeCallbackArguments) => void;\n /**\n * The value attribute of the Switch\n */\n value: string;\n} & Pick<\n FieldComponentProps,\n \"hint\" | \"id\" | \"isFullWidth\" | \"isDisabled\" | \"name\"\n> &\n CheckedFieldProps<MuiSwitchProps> &\n Pick<HtmlProps, \"testId\">;\n\ntype SwitchLabelProps = {\n checked: boolean;\n hint: SwitchProps[\"hint\"];\n hintId?: string;\n isFullWidth: SwitchProps[\"isFullWidth\"];\n label: SwitchProps[\"label\"];\n};\n\nconst SwitchLabel = ({\n checked,\n hint,\n hintId,\n isFullWidth,\n label,\n}: SwitchLabelProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n return (\n <>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: odysseyDesignTokens.Spacing1,\n margin: 0,\n maxWidth: isFullWidth\n ? \"100%\"\n : odysseyDesignTokens.TypographyLineLengthMax,\n fontWeight: odysseyDesignTokens.TypographyWeightBodyBold,\n }}\n >\n {label}\n <Box\n sx={{\n padding: \"2px 4px\",\n backgroundColor: checked\n ? odysseyDesignTokens.PaletteSuccessLighter\n : odysseyDesignTokens.HueNeutral100,\n borderRadius: odysseyDesignTokens.BorderRadiusMain,\n color: checked\n ? odysseyDesignTokens.PaletteSuccessText\n : odysseyDesignTokens.HueNeutral700,\n fontWeight: odysseyDesignTokens.TypographyWeightBodyBold,\n fontSize: odysseyDesignTokens.TypographyScale0,\n lineHeight: odysseyDesignTokens.TypographyLineHeightOverline,\n transitionProperty: \"background-color, color\",\n transitionDuration: odysseyDesignTokens.TransitionDurationMain,\n }}\n >\n {checked ? t(\"switch.active\") : t(\"switch.inactive\")}\n </Box>\n </Box>\n {hint && <FieldHint id={hintId} text={hint} />}\n </>\n );\n};\n\nconst Switch = ({\n hint,\n id: _id,\n isChecked,\n isDefaultChecked,\n isDisabled,\n isFullWidth = false,\n label,\n name: _name,\n onChange,\n testId,\n value = \"Something\",\n}: SwitchProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const controlledStateRef = useRef(\n getControlState({\n controlledValue: isChecked,\n uncontrolledValue: isDefaultChecked,\n }),\n );\n const inputValues = useMemo(() => {\n if (controlledStateRef.current === CONTROLLED) {\n return { checked: isChecked };\n }\n return { defaultChecked: isDefaultChecked };\n }, [isDefaultChecked, isChecked]);\n\n const [internalSwitchChecked, setInternalSwitchChecked] = useState(\n controlledStateRef.current === CONTROLLED\n ? Boolean(isChecked)\n : Boolean(isDefaultChecked),\n );\n\n useEffect(() => {\n if (controlledStateRef.current === CONTROLLED) {\n setInternalSwitchChecked(Boolean(isChecked));\n }\n }, [isChecked]);\n\n const id = useUniqueId(_id);\n\n const hintId = hint ? `${id}-hint` : undefined;\n const labelElementId = `${id}-label`;\n\n const handleOnChange = useCallback(\n (_: SyntheticEvent<Element, Event>, checked: boolean) => {\n setInternalSwitchChecked(checked);\n onChange?.({ checked, value });\n },\n [onChange, setInternalSwitchChecked, value],\n );\n\n const renderSwitchComponent = useMemo(\n () => (\n <MuiSwitch\n {...inputValues}\n disabled={isDisabled}\n disableRipple\n inputProps={{\n \"aria-checked\": internalSwitchChecked,\n \"aria-describedby\": hintId,\n \"aria-label\": label,\n \"aria-labelledby\": labelElementId,\n \"data-se\": testId,\n }}\n name={_name ?? id}\n onChange={handleOnChange}\n />\n ),\n [\n handleOnChange,\n hintId,\n inputValues,\n internalSwitchChecked,\n id,\n isDisabled,\n label,\n labelElementId,\n _name,\n testId,\n ],\n );\n\n return (\n <Box\n sx={{\n marginBlockEnd: odysseyDesignTokens.Spacing2,\n }}\n >\n <FormControlLabel\n checked={internalSwitchChecked}\n control={renderSwitchComponent}\n disabled={isDisabled}\n id={labelElementId}\n label={\n <SwitchLabel\n checked={internalSwitchChecked}\n hint={hint}\n hintId={hintId}\n isFullWidth={isFullWidth}\n label={label}\n />\n }\n labelPlacement=\"start\"\n sx={{\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n gap: odysseyDesignTokens.Spacing4,\n width: \"100%\",\n maxWidth: isFullWidth\n ? \"100%\"\n : odysseyDesignTokens.TypographyLineLengthMax,\n }}\n value={value}\n />\n </Box>\n );\n};\n\nconst MemoizedSwitch = memo(Switch);\nMemoizedSwitch.displayName = \"Switch\";\n\nexport { MemoizedSwitch as Switch };\n"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SACEA,IAAI,EAEJC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AAMd,SAASC,cAAc,QAAQ,eAAe;AAAC,SAEtCC,sBAAsB;AAAA,SACtBC,GAAG;AAAA,SAEHC,SAAS;AAAA,SAETC,WAAW;AAAA,SACXC,wBAAwB,EAAEC,eAAe;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAGlD,MAAM;EAAEC;AAAW,CAAC,GAAGR,wBAAwB;AAuC/C,MAAMS,WAAW,GAAGA,CAAC;EACnBC,OAAO;EACPC,IAAI;EACJC,MAAM;EACNC,WAAW;EACXC;AACgB,CAAC,KAAK;EACtB,MAAMC,mBAAmB,GAAGnB,sBAAsB,CAAC,CAAC;EACpD,MAAM;IAAEoB;EAAE,CAAC,GAAGrB,cAAc,CAAC,CAAC;EAE9B,OACEU,KAAA,CAAAE,SAAA;IAAAU,QAAA,GACEZ,KAAA,CAACR,GAAG;MACFqB,EAAE,EAAE;QACFC,OAAO,EAAE,MAAM;QACfC,UAAU,EAAE,QAAQ;QACpBC,QAAQ,EAAE,MAAM;QAChBC,GAAG,EAAEP,mBAAmB,CAACQ,QAAQ;QACjCC,MAAM,EAAE,CAAC;QACTC,QAAQ,EAAEZ,WAAW,GACjB,MAAM,GACNE,mBAAmB,CAACW,uBAAuB;QAC/CC,UAAU,EAAEZ,mBAAmB,CAACa;MAClC,CAAE;MAAAX,QAAA,GAEDH,KAAK,EACNX,IAAA,CAACN,GAAG;QACFqB,EAAE,EAAE;UACFW,OAAO,EAAE,SAAS;UAClBC,eAAe,EAAEpB,OAAO,GACpBK,mBAAmB,CAACgB,qBAAqB,GACzChB,mBAAmB,CAACiB,aAAa;UACrCC,YAAY,EAAElB,mBAAmB,CAACmB,gBAAgB;UAClDC,KAAK,EAAEzB,OAAO,GACVK,mBAAmB,CAACqB,kBAAkB,GACtCrB,mBAAmB,CAACsB,aAAa;UACrCV,UAAU,EAAEZ,mBAAmB,CAACa,wBAAwB;UACxDU,QAAQ,EAAEvB,mBAAmB,CAACwB,gBAAgB;UAC9CC,UAAU,EAAEzB,mBAAmB,CAAC0B,4BAA4B;UAC5DC,kBAAkB,EAAE,yBAAyB;UAC7CC,kBAAkB,EAAE5B,mBAAmB,CAAC6B;QAC1C,CAAE;QAAA3B,QAAA,EAEDP,OAAO,GAAGM,CAAC,CAAC,eAAe,CAAC,GAAGA,CAAC,CAAC,iBAAiB;MAAC,CACjD,CAAC;IAAA,CACH,CAAC,EACLL,IAAI,IAAIR,IAAA,CAACL,SAAS;MAAC+C,EAAE,EAAEjC,MAAO;MAACkC,IAAI,EAAEnC;IAAK,CAAE,CAAC;EAAA,CAC9C,CAAC;AAEP,CAAC;AAED,MAAMoC,MAAM,GAAGA,CAAC;EACdpC,IAAI;EACJkC,EAAE,EAAEG,GAAG;EACPC,SAAS;EACTC,gBAAgB;EAChBC,UAAU;EACVtC,WAAW,GAAG,KAAK;EACnBC,KAAK;EACLsC,IAAI,EAAEC,KAAK;EACXC,QAAQ;EACRC,MAAM;EACNC,KAAK,GAAG;AACG,CAAC,KAAK;EACjB,MAAMzC,mBAAmB,GAAGnB,sBAAsB,CAAC,CAAC;EACpD,MAAM6D,kBAAkB,GAAGhE,MAAM,CAC/BQ,eAAe,CAAC;IACdyD,eAAe,EAAET,SAAS;IAC1BU,iBAAiB,EAAET;EACrB,CAAC,CACH,CAAC;EACD,MAAMU,WAAW,GAAGpE,OAAO,CAAC,MAAM;IAChC,IAAIiE,kBAAkB,CAACI,OAAO,KAAKrD,UAAU,EAAE;MAC7C,OAAO;QAAEE,OAAO,EAAEuC;MAAU,CAAC;IAC/B;IACA,OAAO;MAAEa,cAAc,EAAEZ;IAAiB,CAAC;EAC7C,CAAC,EAAE,CAACA,gBAAgB,EAAED,SAAS,CAAC,CAAC;EAEjC,MAAM,CAACc,qBAAqB,EAAEC,wBAAwB,CAAC,GAAGtE,QAAQ,CAChE+D,kBAAkB,CAACI,OAAO,KAAKrD,UAAU,GACrCyD,OAAO,CAAChB,SAAS,CAAC,GAClBgB,OAAO,CAACf,gBAAgB,CAC9B,CAAC;EAED3D,SAAS,CAAC,MAAM;IACd,IAAIkE,kBAAkB,CAACI,OAAO,KAAKrD,UAAU,EAAE;MAC7CwD,wBAAwB,CAACC,OAAO,CAAChB,SAAS,CAAC,CAAC;IAC9C;EACF,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAMJ,EAAE,GAAG9C,WAAW,CAACiD,GAAG,CAAC;EAE3B,MAAMpC,MAAM,GAAGD,IAAI,GAAI,GAAEkC,EAAG,OAAM,GAAGqB,SAAS;EAC9C,MAAMC,cAAc,GAAI,GAAEtB,EAAG,QAAO;EAEpC,MAAMuB,cAAc,GAAG9E,WAAW,CAChC,CAAC+E,CAAiC,EAAE3D,OAAgB,KAAK;IACvDsD,wBAAwB,CAACtD,OAAO,CAAC;IACjC4C,QAAQ,GAAG;MAAE5C,OAAO;MAAE8C;IAAM,CAAC,CAAC;EAChC,CAAC,EACD,CAACF,QAAQ,EAAEU,wBAAwB,EAAER,KAAK,CAC5C,CAAC;EAED,MAAMc,qBAAqB,GAAG9E,OAAO,CACnC,MACEW,IAAA,CAAAoE,OAAA;IAAA,GACMX,WAAW;IACfY,QAAQ,EAAErB,UAAW;IACrBsB,aAAa;IACbC,UAAU,EAAE;MACV,cAAc,EAAEX,qBAAqB;MACrC,kBAAkB,EAAEnD,MAAM;MAC1B,YAAY,EAAEE,KAAK;MACnB,iBAAiB,EAAEqD,cAAc;MACjC,SAAS,EAAEZ;IACb,CAAE;IACFH,IAAI,EAAEC,KAAK,IAAIR,EAAG;IAClBS,QAAQ,EAAEc;EAAe,CAC1B,CACF,EACD,CACEA,cAAc,EACdxD,MAAM,EACNgD,WAAW,EACXG,qBAAqB,EACrBlB,EAAE,EACFM,UAAU,EACVrC,KAAK,EACLqD,cAAc,EACdd,KAAK,EACLE,MAAM,CAEV,CAAC;EAED,OACEpD,IAAA,CAACN,GAAG;IACFqB,EAAE,EAAE;MACFyD,cAAc,EAAE5D,mBAAmB,CAAC6D;IACtC,CAAE;IAAA3D,QAAA,EAEFd,IAAA,CAAA0E,iBAAA;MACEnE,OAAO,EAAEqD,qBAAsB;MAC/Be,OAAO,EAAER,qBAAsB;MAC/BE,QAAQ,EAAErB,UAAW;MACrBN,EAAE,EAAEsB,cAAe;MACnBrD,KAAK,EACHX,IAAA,CAACM,WAAW;QACVC,OAAO,EAAEqD,qBAAsB;QAC/BpD,IAAI,EAAEA,IAAK;QACXC,MAAM,EAAEA,MAAO;QACfC,WAAW,EAAEA,WAAY;QACzBC,KAAK,EAAEA;MAAM,CACd,CACF;MACDiE,cAAc,EAAC,OAAO;MACtB7D,EAAE,EAAE;QACF8D,cAAc,EAAE,eAAe;QAC/B5D,UAAU,EAAE,YAAY;QACxBE,GAAG,EAAEP,mBAAmB,CAACkE,QAAQ;QACjCC,KAAK,EAAE,MAAM;QACbzD,QAAQ,EAAEZ,WAAW,GACjB,MAAM,GACNE,mBAAmB,CAACW;MAC1B,CAAE;MACF8B,KAAK,EAAEA;IAAM,CACd;EAAC,CACC,CAAC;AAEV,CAAC;AAED,MAAM2B,cAAc,GAAG9F,IAAI,CAAC0D,MAAM,CAAC;AACnCoC,cAAc,CAACC,WAAW,GAAG,QAAQ;AAErC,SAASD,cAAc,IAAIpC,MAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizedAutocomplete.js","names":["memo","useCallback","useMemo","useRef","Field","ComponentControlledState","getControlState","useInputValues","jsx","_jsx","VirtualizedAutocomplete","ariaDescribedBy","defaultValue","errorMessage","errorMessageList","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isLoading","isOptional","isReadOnly","hint","label","ListboxComponent","name","nameOverride","onBlur","onChange","onChangeProp","onInputChange","onInputChangeProp","onFocus","options","value","getIsOptionEqualToValue","testId","translate","controlledStateRef","controlledValue","uncontrolledValue","defaultValueProp","undefined","valueProps","controlState","current","inputValueProp","CONTROLLED","renderInput","InputLabelProps","InputProps","params","fieldType","hasVisibleLabel","htmlFor","renderFieldComponent","errorMessageElementId","labelElementId","_InputBase","inputProps","required","event","reason","details","_Autocomplete","disableCloseOnSelect","disabled","freeSolo","filterSelectedOptions","loading","multiple","readOnly","isOptionEqualToValue","MemoizedAutocomplete","displayName"],"sources":["../../src/labs/VirtualizedAutocomplete.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n Autocomplete as MuiAutocomplete,\n AutocompleteProps as MuiAutocompleteProps,\n InputBase,\n UseAutocompleteProps,\n AutocompleteValue,\n} from \"@mui/material\";\nimport { memo, useCallback, useMemo, useRef } from \"react\";\n\nimport { Field } from \"../Field\";\nimport { FieldComponentProps } from \"../FieldComponentProps\";\nimport type { HtmlProps } from \"../HtmlProps\";\nimport {\n ComponentControlledState,\n getControlState,\n useInputValues,\n} from \"../inputUtils\";\n\nexport type AutocompleteProps<\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined\n> = {\n /**\n * The default value. Use when the component is not controlled.\n * @default props.multiple ? [] : null\n */\n defaultValue?: UseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"defaultValue\"];\n /**\n * Enables multiple choice selection\n */\n hasMultipleChoices?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"multiple\"];\n /**\n * The value for the input\n */\n inputValue?: UseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"inputValue\"];\n /**\n * Allows the input of custom values\n */\n isCustomValueAllowed?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"freeSolo\"];\n /**\n * Disables the Autocomplete input\n */\n isDisabled?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"disabled\"];\n /**\n * Displays a loading indicator\n */\n isLoading?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"loading\"];\n /**\n * Makes the Autocomplete input read-only\n */\n isReadOnly?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"readOnly\"];\n /**\n * The label text for the autocomplete input\n */\n label: string;\n /**\n * The component used to render the listbox.\n */\n ListboxComponent?: React.JSXElementConstructor<\n React.HTMLAttributes<HTMLElement>\n >;\n /**\n * Callback fired when the autocomplete loses focus.\n */\n onBlur?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onBlur\"];\n /**\n * Callback fired when a selection is made.\n */\n onChange?: UseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onChange\"];\n /**\n * Callback fired when the textbox receives typed characters.\n */\n onInputChange?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onInputChange\"];\n /**\n * Callback fired when the autocomplete gains focus.\n */\n onFocus?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onFocus\"];\n /**\n * The options for the Autocomplete input\n */\n options: ReadonlyArray<OptionType>;\n /**\n * The value of the Autocomplete input\n */\n value?: UseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"value\"];\n\n /**\n * Used to determine if the option represents the given value. Uses strict equality by default if none provided.\n * Both arguments need to be handled, an option can only match with one value.\n * option: the option to test\n * value: the value to test against\n *\n * You will need to implement this function if your `option` items are objects.\n */\n getIsOptionEqualToValue?: (option: OptionType, value: OptionType) => boolean;\n} & Pick<\n FieldComponentProps,\n | \"ariaDescribedBy\"\n | \"errorMessage\"\n | \"errorMessageList\"\n | \"hint\"\n | \"id\"\n | \"isOptional\"\n | \"name\"\n> &\n HtmlProps;\n\nconst VirtualizedAutocomplete = <\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined\n>({\n ariaDescribedBy,\n defaultValue,\n errorMessage,\n errorMessageList,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isLoading,\n isOptional = false,\n isReadOnly,\n hint,\n label,\n ListboxComponent,\n name: nameOverride,\n onBlur,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n onFocus,\n options,\n value,\n getIsOptionEqualToValue,\n testId,\n translate,\n}: AutocompleteProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>) => {\n const controlledStateRef = useRef(\n getControlState({ controlledValue: value, uncontrolledValue: defaultValue })\n );\n const defaultValueProp = useMemo<\n | AutocompleteValue<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >\n | undefined\n >(() => {\n if (hasMultipleChoices) {\n return defaultValue === undefined\n ? ([] as AutocompleteValue<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >)\n : defaultValue;\n }\n return defaultValue ?? undefined;\n }, [defaultValue, hasMultipleChoices]);\n\n const valueProps = useInputValues({\n defaultValue: defaultValueProp,\n value: value,\n controlState: controlledStateRef.current,\n });\n\n const inputValueProp = useMemo(() => {\n if (controlledStateRef.current === ComponentControlledState.CONTROLLED) {\n return { inputValue };\n }\n return undefined;\n }, [inputValue]);\n\n const renderInput = useCallback(\n ({ InputLabelProps, InputProps, ...params }) => (\n <Field\n ariaDescribedBy={ariaDescribedBy}\n errorMessage={errorMessage}\n errorMessageList={errorMessageList}\n fieldType=\"single\"\n hasVisibleLabel\n id={InputLabelProps.htmlFor}\n hint={hint}\n label={label}\n isOptional={isOptional}\n renderFieldComponent={({\n ariaDescribedBy,\n id,\n errorMessageElementId,\n labelElementId,\n }) => (\n <InputBase\n {...params}\n {...InputProps}\n inputProps={{\n ...params.inputProps,\n \"aria-errormessage\": errorMessageElementId,\n \"aria-labelledby\": labelElementId,\n \"data-se\": testId,\n }}\n aria-describedby={ariaDescribedBy}\n id={id}\n name={nameOverride ?? id}\n required={!isOptional}\n />\n )}\n />\n ),\n [\n ariaDescribedBy,\n errorMessage,\n errorMessageList,\n hint,\n isOptional,\n label,\n nameOverride,\n testId,\n ]\n );\n const onChange = useCallback<\n NonNullable<\n UseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onChange\"]\n >\n >(\n (event, value, reason, details) => {\n onChangeProp?.(event, value, reason, details);\n },\n [onChangeProp]\n );\n\n const onInputChange = useCallback<\n NonNullable<\n UseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onInputChange\"]\n >\n >(\n (event, value, reason) => {\n onInputChangeProp?.(event, value, reason);\n },\n [onInputChangeProp]\n );\n\n return (\n <MuiAutocomplete\n {...valueProps}\n {...inputValueProp}\n // AutoComplete is wrapped in a div within MUI which does not get the disabled attr. So this aria-disabled gets set in the div\n aria-disabled={isDisabled}\n disableCloseOnSelect={hasMultipleChoices}\n disabled={isDisabled}\n freeSolo={isCustomValueAllowed}\n filterSelectedOptions={true}\n id={idOverride}\n ListboxComponent={ListboxComponent}\n loading={isLoading}\n multiple={hasMultipleChoices}\n onBlur={onBlur}\n onChange={onChange}\n onInputChange={onInputChange}\n onFocus={onFocus}\n options={options}\n readOnly={isReadOnly}\n renderInput={renderInput}\n isOptionEqualToValue={getIsOptionEqualToValue}\n translate={translate}\n />\n );\n};\n\n// Need the `typeof Autocomplete` because generics don't get passed through\nconst MemoizedAutocomplete = memo(\n VirtualizedAutocomplete\n) as typeof VirtualizedAutocomplete;\n// @ts-expect-error displayName is expected to not be on `typeof Autocomplete`\nMemoizedAutocomplete.displayName = \"Autocomplete\";\n\nexport { MemoizedAutocomplete as VirtualizedAutocomplete };\n"],"mappings":"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"}
1
+ {"version":3,"file":"VirtualizedAutocomplete.js","names":["memo","useCallback","useMemo","useRef","Field","ComponentControlledState","getControlState","useInputValues","jsx","_jsx","VirtualizedAutocomplete","ariaDescribedBy","defaultValue","errorMessage","errorMessageList","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isLoading","isOptional","isReadOnly","hint","label","ListboxComponent","name","nameOverride","onBlur","onChange","onChangeProp","onInputChange","onInputChangeProp","onFocus","options","value","getIsOptionEqualToValue","testId","translate","controlledStateRef","controlledValue","uncontrolledValue","defaultValueProp","undefined","valueProps","controlState","current","inputValueProp","CONTROLLED","renderInput","InputLabelProps","InputProps","params","fieldType","hasVisibleLabel","htmlFor","renderFieldComponent","errorMessageElementId","labelElementId","_InputBase","inputProps","required","event","reason","details","_Autocomplete","disableCloseOnSelect","disabled","freeSolo","filterSelectedOptions","loading","multiple","readOnly","isOptionEqualToValue","MemoizedAutocomplete","displayName"],"sources":["../../src/labs/VirtualizedAutocomplete.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n Autocomplete as MuiAutocomplete,\n AutocompleteProps as MuiAutocompleteProps,\n InputBase,\n UseAutocompleteProps,\n AutocompleteValue,\n AutocompleteRenderInputParams,\n} from \"@mui/material\";\nimport { memo, useCallback, useMemo, useRef } from \"react\";\n\nimport { Field } from \"../Field\";\nimport { FieldComponentProps } from \"../FieldComponentProps\";\nimport type { HtmlProps } from \"../HtmlProps\";\nimport {\n ComponentControlledState,\n getControlState,\n useInputValues,\n} from \"../inputUtils\";\n\nexport type AutocompleteProps<\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = {\n /**\n * The default value. Use when the component is not controlled.\n * @default props.multiple ? [] : null\n */\n defaultValue?: UseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"defaultValue\"];\n /**\n * Enables multiple choice selection\n */\n hasMultipleChoices?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"multiple\"];\n /**\n * The value for the input\n */\n inputValue?: UseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"inputValue\"];\n /**\n * Allows the input of custom values\n */\n isCustomValueAllowed?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"freeSolo\"];\n /**\n * Disables the Autocomplete input\n */\n isDisabled?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"disabled\"];\n /**\n * Displays a loading indicator\n */\n isLoading?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"loading\"];\n /**\n * Makes the Autocomplete input read-only\n */\n isReadOnly?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"readOnly\"];\n /**\n * The label text for the autocomplete input\n */\n label: string;\n /**\n * The component used to render the listbox.\n */\n ListboxComponent?: React.JSXElementConstructor<\n React.HTMLAttributes<HTMLElement>\n >;\n /**\n * Callback fired when the autocomplete loses focus.\n */\n onBlur?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onBlur\"];\n /**\n * Callback fired when a selection is made.\n */\n onChange?: UseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onChange\"];\n /**\n * Callback fired when the textbox receives typed characters.\n */\n onInputChange?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onInputChange\"];\n /**\n * Callback fired when the autocomplete gains focus.\n */\n onFocus?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onFocus\"];\n /**\n * The options for the Autocomplete input\n */\n options: ReadonlyArray<OptionType>;\n /**\n * The value of the Autocomplete input\n */\n value?: UseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"value\"];\n\n /**\n * Used to determine if the option represents the given value. Uses strict equality by default if none provided.\n * Both arguments need to be handled, an option can only match with one value.\n * option: the option to test\n * value: the value to test against\n *\n * You will need to implement this function if your `option` items are objects.\n */\n getIsOptionEqualToValue?: (option: OptionType, value: OptionType) => boolean;\n} & Pick<\n FieldComponentProps,\n \"errorMessage\" | \"errorMessageList\" | \"hint\" | \"id\" | \"isOptional\" | \"name\"\n> &\n Pick<HtmlProps, \"ariaDescribedBy\" | \"testId\" | \"translate\">;\n\nconst VirtualizedAutocomplete = <\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n ariaDescribedBy,\n defaultValue,\n errorMessage,\n errorMessageList,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isLoading,\n isOptional = false,\n isReadOnly,\n hint,\n label,\n ListboxComponent,\n name: nameOverride,\n onBlur,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n onFocus,\n options,\n value,\n getIsOptionEqualToValue,\n testId,\n translate,\n}: AutocompleteProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>) => {\n const controlledStateRef = useRef(\n getControlState({\n controlledValue: value,\n uncontrolledValue: defaultValue,\n }),\n );\n const defaultValueProp = useMemo<\n | AutocompleteValue<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >\n | undefined\n >(() => {\n if (hasMultipleChoices) {\n return defaultValue === undefined\n ? ([] as AutocompleteValue<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >)\n : defaultValue;\n }\n return defaultValue ?? undefined;\n }, [defaultValue, hasMultipleChoices]);\n\n const valueProps = useInputValues({\n defaultValue: defaultValueProp,\n value: value,\n controlState: controlledStateRef.current,\n });\n\n const inputValueProp = useMemo(() => {\n if (controlledStateRef.current === ComponentControlledState.CONTROLLED) {\n return { inputValue };\n }\n return undefined;\n }, [inputValue]);\n\n const renderInput = useCallback(\n ({\n InputLabelProps,\n InputProps,\n ...params\n }: AutocompleteRenderInputParams) => (\n <Field\n ariaDescribedBy={ariaDescribedBy}\n errorMessage={errorMessage}\n errorMessageList={errorMessageList}\n fieldType=\"single\"\n hasVisibleLabel\n //@ts-expect-error htmlFor is not available on the typed params for this callback\n id={InputLabelProps.htmlFor}\n hint={hint}\n label={label}\n isOptional={isOptional}\n renderFieldComponent={({\n ariaDescribedBy,\n id,\n errorMessageElementId,\n labelElementId,\n }) => (\n <InputBase\n {...params}\n {...InputProps}\n inputProps={{\n ...params.inputProps,\n \"aria-errormessage\": errorMessageElementId,\n \"aria-labelledby\": labelElementId,\n \"data-se\": testId,\n }}\n aria-describedby={ariaDescribedBy}\n id={id}\n name={nameOverride ?? id}\n required={!isOptional}\n />\n )}\n />\n ),\n [\n ariaDescribedBy,\n errorMessage,\n errorMessageList,\n hint,\n isOptional,\n label,\n nameOverride,\n testId,\n ],\n );\n const onChange = useCallback<\n NonNullable<\n UseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onChange\"]\n >\n >(\n (event, value, reason, details) => {\n onChangeProp?.(event, value, reason, details);\n },\n [onChangeProp],\n );\n\n const onInputChange = useCallback<\n NonNullable<\n UseAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"onInputChange\"]\n >\n >(\n (event, value, reason) => {\n onInputChangeProp?.(event, value, reason);\n },\n [onInputChangeProp],\n );\n\n return (\n <MuiAutocomplete\n {...valueProps}\n {...inputValueProp}\n // AutoComplete is wrapped in a div within MUI which does not get the disabled attr. So this aria-disabled gets set in the div\n aria-disabled={isDisabled}\n disableCloseOnSelect={hasMultipleChoices}\n disabled={isDisabled}\n freeSolo={isCustomValueAllowed}\n filterSelectedOptions={true}\n id={idOverride}\n ListboxComponent={ListboxComponent}\n loading={isLoading}\n multiple={hasMultipleChoices}\n onBlur={onBlur}\n onChange={onChange}\n onInputChange={onInputChange}\n onFocus={onFocus}\n options={options}\n readOnly={isReadOnly}\n renderInput={renderInput}\n isOptionEqualToValue={getIsOptionEqualToValue}\n translate={translate}\n />\n );\n};\n\n// Need the `typeof Autocomplete` because generics don't get passed through\nconst MemoizedAutocomplete = memo(\n VirtualizedAutocomplete,\n) as typeof VirtualizedAutocomplete;\n// @ts-expect-error displayName is expected to not be on `typeof Autocomplete`\nMemoizedAutocomplete.displayName = \"Autocomplete\";\n\nexport { MemoizedAutocomplete as VirtualizedAutocomplete };\n"],"mappings":"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"}