@okta/odyssey-react-mui 1.37.0 → 1.37.1

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 (239) hide show
  1. package/dist/cjs/Pagination/Pagination.cjs +1 -0
  2. package/dist/cjs/Pagination/Pagination.cjs.map +1 -1
  3. package/dist/cjs/labs/OdysseyPickers/ComposablePicker.cjs +2 -0
  4. package/dist/cjs/labs/OdysseyPickers/ComposablePicker.cjs.map +1 -1
  5. package/dist/cjs/labs/OdysseyPickers/Picker.cjs +21 -27
  6. package/dist/cjs/labs/OdysseyPickers/Picker.cjs.map +1 -1
  7. package/dist/cjs/labs/OdysseyPickers/PickerWithOptionAdornment.cjs +11 -10
  8. package/dist/cjs/labs/OdysseyPickers/PickerWithOptionAdornment.cjs.map +1 -1
  9. package/dist/cjs/properties/ts/odyssey-react-mui_cs.cjs +1 -0
  10. package/dist/cjs/properties/ts/odyssey-react-mui_cs.cjs.map +1 -1
  11. package/dist/cjs/properties/ts/odyssey-react-mui_da.cjs +1 -0
  12. package/dist/cjs/properties/ts/odyssey-react-mui_da.cjs.map +1 -1
  13. package/dist/cjs/properties/ts/odyssey-react-mui_de.cjs +1 -0
  14. package/dist/cjs/properties/ts/odyssey-react-mui_de.cjs.map +1 -1
  15. package/dist/cjs/properties/ts/odyssey-react-mui_el.cjs +1 -0
  16. package/dist/cjs/properties/ts/odyssey-react-mui_el.cjs.map +1 -1
  17. package/dist/cjs/properties/ts/odyssey-react-mui_es.cjs +1 -0
  18. package/dist/cjs/properties/ts/odyssey-react-mui_es.cjs.map +1 -1
  19. package/dist/cjs/properties/ts/odyssey-react-mui_fi.cjs +1 -0
  20. package/dist/cjs/properties/ts/odyssey-react-mui_fi.cjs.map +1 -1
  21. package/dist/cjs/properties/ts/odyssey-react-mui_fr.cjs +1 -0
  22. package/dist/cjs/properties/ts/odyssey-react-mui_fr.cjs.map +1 -1
  23. package/dist/cjs/properties/ts/odyssey-react-mui_ht.cjs +1 -0
  24. package/dist/cjs/properties/ts/odyssey-react-mui_ht.cjs.map +1 -1
  25. package/dist/cjs/properties/ts/odyssey-react-mui_hu.cjs +1 -0
  26. package/dist/cjs/properties/ts/odyssey-react-mui_hu.cjs.map +1 -1
  27. package/dist/cjs/properties/ts/odyssey-react-mui_id.cjs +1 -0
  28. package/dist/cjs/properties/ts/odyssey-react-mui_id.cjs.map +1 -1
  29. package/dist/cjs/properties/ts/odyssey-react-mui_it.cjs +1 -0
  30. package/dist/cjs/properties/ts/odyssey-react-mui_it.cjs.map +1 -1
  31. package/dist/cjs/properties/ts/odyssey-react-mui_ja.cjs +1 -0
  32. package/dist/cjs/properties/ts/odyssey-react-mui_ja.cjs.map +1 -1
  33. package/dist/cjs/properties/ts/odyssey-react-mui_ko.cjs +1 -0
  34. package/dist/cjs/properties/ts/odyssey-react-mui_ko.cjs.map +1 -1
  35. package/dist/cjs/properties/ts/odyssey-react-mui_ms.cjs +1 -0
  36. package/dist/cjs/properties/ts/odyssey-react-mui_ms.cjs.map +1 -1
  37. package/dist/cjs/properties/ts/odyssey-react-mui_nb.cjs +1 -0
  38. package/dist/cjs/properties/ts/odyssey-react-mui_nb.cjs.map +1 -1
  39. package/dist/cjs/properties/ts/odyssey-react-mui_nl_NL.cjs +1 -0
  40. package/dist/cjs/properties/ts/odyssey-react-mui_nl_NL.cjs.map +1 -1
  41. package/dist/cjs/properties/ts/odyssey-react-mui_pl.cjs +1 -0
  42. package/dist/cjs/properties/ts/odyssey-react-mui_pl.cjs.map +1 -1
  43. package/dist/cjs/properties/ts/odyssey-react-mui_pt_BR.cjs +1 -0
  44. package/dist/cjs/properties/ts/odyssey-react-mui_pt_BR.cjs.map +1 -1
  45. package/dist/cjs/properties/ts/odyssey-react-mui_ro.cjs +1 -0
  46. package/dist/cjs/properties/ts/odyssey-react-mui_ro.cjs.map +1 -1
  47. package/dist/cjs/properties/ts/odyssey-react-mui_ru.cjs +1 -0
  48. package/dist/cjs/properties/ts/odyssey-react-mui_ru.cjs.map +1 -1
  49. package/dist/cjs/properties/ts/odyssey-react-mui_sv.cjs +1 -0
  50. package/dist/cjs/properties/ts/odyssey-react-mui_sv.cjs.map +1 -1
  51. package/dist/cjs/properties/ts/odyssey-react-mui_th.cjs +1 -0
  52. package/dist/cjs/properties/ts/odyssey-react-mui_th.cjs.map +1 -1
  53. package/dist/cjs/properties/ts/odyssey-react-mui_tr.cjs +1 -0
  54. package/dist/cjs/properties/ts/odyssey-react-mui_tr.cjs.map +1 -1
  55. package/dist/cjs/properties/ts/odyssey-react-mui_uk.cjs +1 -0
  56. package/dist/cjs/properties/ts/odyssey-react-mui_uk.cjs.map +1 -1
  57. package/dist/cjs/properties/ts/odyssey-react-mui_vi.cjs +1 -0
  58. package/dist/cjs/properties/ts/odyssey-react-mui_vi.cjs.map +1 -1
  59. package/dist/cjs/properties/ts/odyssey-react-mui_zh_CN.cjs +1 -0
  60. package/dist/cjs/properties/ts/odyssey-react-mui_zh_CN.cjs.map +1 -1
  61. package/dist/cjs/properties/ts/odyssey-react-mui_zh_TW.cjs +1 -0
  62. package/dist/cjs/properties/ts/odyssey-react-mui_zh_TW.cjs.map +1 -1
  63. package/dist/cjs/test-selectors/getByQuerySelector.cjs +2 -2
  64. package/dist/cjs/test-selectors/getByQuerySelector.cjs.map +1 -1
  65. package/dist/cjs/test-selectors/testSelector.cjs.map +1 -1
  66. package/dist/cjs/ui-shell/NarrowUiShellContent.cjs +3 -2
  67. package/dist/cjs/ui-shell/NarrowUiShellContent.cjs.map +1 -1
  68. package/dist/cjs/ui-shell/SideNav/SideNav.cjs +8 -4
  69. package/dist/cjs/ui-shell/SideNav/SideNav.cjs.map +1 -1
  70. package/dist/cjs/ui-shell/SideNav/types.cjs.map +1 -1
  71. package/dist/cjs/ui-shell/UiShell.cjs +5 -2
  72. package/dist/cjs/ui-shell/UiShell.cjs.map +1 -1
  73. package/dist/cjs/ui-shell/WideUiShellContent.cjs +3 -2
  74. package/dist/cjs/ui-shell/WideUiShellContent.cjs.map +1 -1
  75. package/dist/cjs/ui-shell/uiShellContentTypes.cjs.map +1 -1
  76. package/dist/cjs/web-component/odysseyWebComponentVersion.generated.cjs +1 -1
  77. package/dist/cjs/web-component/odysseyWebComponentVersion.generated.cjs.map +1 -1
  78. package/dist/esm/Pagination/Pagination.js +1 -0
  79. package/dist/esm/Pagination/Pagination.js.map +1 -1
  80. package/dist/esm/labs/OdysseyPickers/ComposablePicker.js +2 -0
  81. package/dist/esm/labs/OdysseyPickers/ComposablePicker.js.map +1 -1
  82. package/dist/esm/labs/OdysseyPickers/Picker.js +23 -29
  83. package/dist/esm/labs/OdysseyPickers/Picker.js.map +1 -1
  84. package/dist/esm/labs/OdysseyPickers/PickerWithOptionAdornment.js +12 -11
  85. package/dist/esm/labs/OdysseyPickers/PickerWithOptionAdornment.js.map +1 -1
  86. package/dist/esm/properties/ts/odyssey-react-mui_cs.js +1 -0
  87. package/dist/esm/properties/ts/odyssey-react-mui_cs.js.map +1 -1
  88. package/dist/esm/properties/ts/odyssey-react-mui_da.js +1 -0
  89. package/dist/esm/properties/ts/odyssey-react-mui_da.js.map +1 -1
  90. package/dist/esm/properties/ts/odyssey-react-mui_de.js +1 -0
  91. package/dist/esm/properties/ts/odyssey-react-mui_de.js.map +1 -1
  92. package/dist/esm/properties/ts/odyssey-react-mui_el.js +1 -0
  93. package/dist/esm/properties/ts/odyssey-react-mui_el.js.map +1 -1
  94. package/dist/esm/properties/ts/odyssey-react-mui_es.js +1 -0
  95. package/dist/esm/properties/ts/odyssey-react-mui_es.js.map +1 -1
  96. package/dist/esm/properties/ts/odyssey-react-mui_fi.js +1 -0
  97. package/dist/esm/properties/ts/odyssey-react-mui_fi.js.map +1 -1
  98. package/dist/esm/properties/ts/odyssey-react-mui_fr.js +1 -0
  99. package/dist/esm/properties/ts/odyssey-react-mui_fr.js.map +1 -1
  100. package/dist/esm/properties/ts/odyssey-react-mui_ht.js +1 -0
  101. package/dist/esm/properties/ts/odyssey-react-mui_ht.js.map +1 -1
  102. package/dist/esm/properties/ts/odyssey-react-mui_hu.js +1 -0
  103. package/dist/esm/properties/ts/odyssey-react-mui_hu.js.map +1 -1
  104. package/dist/esm/properties/ts/odyssey-react-mui_id.js +1 -0
  105. package/dist/esm/properties/ts/odyssey-react-mui_id.js.map +1 -1
  106. package/dist/esm/properties/ts/odyssey-react-mui_it.js +1 -0
  107. package/dist/esm/properties/ts/odyssey-react-mui_it.js.map +1 -1
  108. package/dist/esm/properties/ts/odyssey-react-mui_ja.js +1 -0
  109. package/dist/esm/properties/ts/odyssey-react-mui_ja.js.map +1 -1
  110. package/dist/esm/properties/ts/odyssey-react-mui_ko.js +1 -0
  111. package/dist/esm/properties/ts/odyssey-react-mui_ko.js.map +1 -1
  112. package/dist/esm/properties/ts/odyssey-react-mui_ms.js +1 -0
  113. package/dist/esm/properties/ts/odyssey-react-mui_ms.js.map +1 -1
  114. package/dist/esm/properties/ts/odyssey-react-mui_nb.js +1 -0
  115. package/dist/esm/properties/ts/odyssey-react-mui_nb.js.map +1 -1
  116. package/dist/esm/properties/ts/odyssey-react-mui_nl_NL.js +1 -0
  117. package/dist/esm/properties/ts/odyssey-react-mui_nl_NL.js.map +1 -1
  118. package/dist/esm/properties/ts/odyssey-react-mui_pl.js +1 -0
  119. package/dist/esm/properties/ts/odyssey-react-mui_pl.js.map +1 -1
  120. package/dist/esm/properties/ts/odyssey-react-mui_pt_BR.js +1 -0
  121. package/dist/esm/properties/ts/odyssey-react-mui_pt_BR.js.map +1 -1
  122. package/dist/esm/properties/ts/odyssey-react-mui_ro.js +1 -0
  123. package/dist/esm/properties/ts/odyssey-react-mui_ro.js.map +1 -1
  124. package/dist/esm/properties/ts/odyssey-react-mui_ru.js +1 -0
  125. package/dist/esm/properties/ts/odyssey-react-mui_ru.js.map +1 -1
  126. package/dist/esm/properties/ts/odyssey-react-mui_sv.js +1 -0
  127. package/dist/esm/properties/ts/odyssey-react-mui_sv.js.map +1 -1
  128. package/dist/esm/properties/ts/odyssey-react-mui_th.js +1 -0
  129. package/dist/esm/properties/ts/odyssey-react-mui_th.js.map +1 -1
  130. package/dist/esm/properties/ts/odyssey-react-mui_tr.js +1 -0
  131. package/dist/esm/properties/ts/odyssey-react-mui_tr.js.map +1 -1
  132. package/dist/esm/properties/ts/odyssey-react-mui_uk.js +1 -0
  133. package/dist/esm/properties/ts/odyssey-react-mui_uk.js.map +1 -1
  134. package/dist/esm/properties/ts/odyssey-react-mui_vi.js +1 -0
  135. package/dist/esm/properties/ts/odyssey-react-mui_vi.js.map +1 -1
  136. package/dist/esm/properties/ts/odyssey-react-mui_zh_CN.js +1 -0
  137. package/dist/esm/properties/ts/odyssey-react-mui_zh_CN.js.map +1 -1
  138. package/dist/esm/properties/ts/odyssey-react-mui_zh_TW.js +1 -0
  139. package/dist/esm/properties/ts/odyssey-react-mui_zh_TW.js.map +1 -1
  140. package/dist/esm/test-selectors/getByQuerySelector.js +1 -1
  141. package/dist/esm/test-selectors/getByQuerySelector.js.map +1 -1
  142. package/dist/esm/test-selectors/testSelector.js.map +1 -1
  143. package/dist/esm/ui-shell/NarrowUiShellContent.js +3 -2
  144. package/dist/esm/ui-shell/NarrowUiShellContent.js.map +1 -1
  145. package/dist/esm/ui-shell/SideNav/SideNav.js +8 -4
  146. package/dist/esm/ui-shell/SideNav/SideNav.js.map +1 -1
  147. package/dist/esm/ui-shell/SideNav/types.js.map +1 -1
  148. package/dist/esm/ui-shell/UiShell.js +5 -2
  149. package/dist/esm/ui-shell/UiShell.js.map +1 -1
  150. package/dist/esm/ui-shell/WideUiShellContent.js +3 -2
  151. package/dist/esm/ui-shell/WideUiShellContent.js.map +1 -1
  152. package/dist/esm/ui-shell/uiShellContentTypes.js.map +1 -1
  153. package/dist/esm/web-component/odysseyWebComponentVersion.generated.js +1 -1
  154. package/dist/esm/web-component/odysseyWebComponentVersion.generated.js.map +1 -1
  155. package/dist/index.cjs +1 -1
  156. package/dist/index.d.ts +232 -21
  157. package/dist/index.mjs +1 -1
  158. package/dist/index.scss +1 -1
  159. package/dist/tsconfig.production.tsbuildinfo +1 -1
  160. package/dist/types/Pagination/Pagination.d.ts +1 -0
  161. package/dist/types/Pagination/Pagination.d.ts.map +1 -1
  162. package/dist/types/i18n.d.ts +27 -0
  163. package/dist/types/i18n.d.ts.map +1 -1
  164. package/dist/types/labs/OdysseyPickers/ComposablePicker.d.ts +2 -1
  165. package/dist/types/labs/OdysseyPickers/ComposablePicker.d.ts.map +1 -1
  166. package/dist/types/labs/OdysseyPickers/Picker.d.ts +6 -7
  167. package/dist/types/labs/OdysseyPickers/Picker.d.ts.map +1 -1
  168. package/dist/types/labs/OdysseyPickers/PickerWithOptionAdornment.d.ts.map +1 -1
  169. package/dist/types/properties/ts/odyssey-react-mui_cs.d.ts +1 -0
  170. package/dist/types/properties/ts/odyssey-react-mui_cs.d.ts.map +1 -1
  171. package/dist/types/properties/ts/odyssey-react-mui_da.d.ts +1 -0
  172. package/dist/types/properties/ts/odyssey-react-mui_da.d.ts.map +1 -1
  173. package/dist/types/properties/ts/odyssey-react-mui_de.d.ts +1 -0
  174. package/dist/types/properties/ts/odyssey-react-mui_de.d.ts.map +1 -1
  175. package/dist/types/properties/ts/odyssey-react-mui_el.d.ts +1 -0
  176. package/dist/types/properties/ts/odyssey-react-mui_el.d.ts.map +1 -1
  177. package/dist/types/properties/ts/odyssey-react-mui_es.d.ts +1 -0
  178. package/dist/types/properties/ts/odyssey-react-mui_es.d.ts.map +1 -1
  179. package/dist/types/properties/ts/odyssey-react-mui_fi.d.ts +1 -0
  180. package/dist/types/properties/ts/odyssey-react-mui_fi.d.ts.map +1 -1
  181. package/dist/types/properties/ts/odyssey-react-mui_fr.d.ts +1 -0
  182. package/dist/types/properties/ts/odyssey-react-mui_fr.d.ts.map +1 -1
  183. package/dist/types/properties/ts/odyssey-react-mui_ht.d.ts +1 -0
  184. package/dist/types/properties/ts/odyssey-react-mui_ht.d.ts.map +1 -1
  185. package/dist/types/properties/ts/odyssey-react-mui_hu.d.ts +1 -0
  186. package/dist/types/properties/ts/odyssey-react-mui_hu.d.ts.map +1 -1
  187. package/dist/types/properties/ts/odyssey-react-mui_id.d.ts +1 -0
  188. package/dist/types/properties/ts/odyssey-react-mui_id.d.ts.map +1 -1
  189. package/dist/types/properties/ts/odyssey-react-mui_it.d.ts +1 -0
  190. package/dist/types/properties/ts/odyssey-react-mui_it.d.ts.map +1 -1
  191. package/dist/types/properties/ts/odyssey-react-mui_ja.d.ts +1 -0
  192. package/dist/types/properties/ts/odyssey-react-mui_ja.d.ts.map +1 -1
  193. package/dist/types/properties/ts/odyssey-react-mui_ko.d.ts +1 -0
  194. package/dist/types/properties/ts/odyssey-react-mui_ko.d.ts.map +1 -1
  195. package/dist/types/properties/ts/odyssey-react-mui_ms.d.ts +1 -0
  196. package/dist/types/properties/ts/odyssey-react-mui_ms.d.ts.map +1 -1
  197. package/dist/types/properties/ts/odyssey-react-mui_nb.d.ts +1 -0
  198. package/dist/types/properties/ts/odyssey-react-mui_nb.d.ts.map +1 -1
  199. package/dist/types/properties/ts/odyssey-react-mui_nl_NL.d.ts +1 -0
  200. package/dist/types/properties/ts/odyssey-react-mui_nl_NL.d.ts.map +1 -1
  201. package/dist/types/properties/ts/odyssey-react-mui_pl.d.ts +1 -0
  202. package/dist/types/properties/ts/odyssey-react-mui_pl.d.ts.map +1 -1
  203. package/dist/types/properties/ts/odyssey-react-mui_pt_BR.d.ts +1 -0
  204. package/dist/types/properties/ts/odyssey-react-mui_pt_BR.d.ts.map +1 -1
  205. package/dist/types/properties/ts/odyssey-react-mui_ro.d.ts +1 -0
  206. package/dist/types/properties/ts/odyssey-react-mui_ro.d.ts.map +1 -1
  207. package/dist/types/properties/ts/odyssey-react-mui_ru.d.ts +1 -0
  208. package/dist/types/properties/ts/odyssey-react-mui_ru.d.ts.map +1 -1
  209. package/dist/types/properties/ts/odyssey-react-mui_sv.d.ts +1 -0
  210. package/dist/types/properties/ts/odyssey-react-mui_sv.d.ts.map +1 -1
  211. package/dist/types/properties/ts/odyssey-react-mui_th.d.ts +1 -0
  212. package/dist/types/properties/ts/odyssey-react-mui_th.d.ts.map +1 -1
  213. package/dist/types/properties/ts/odyssey-react-mui_tr.d.ts +1 -0
  214. package/dist/types/properties/ts/odyssey-react-mui_tr.d.ts.map +1 -1
  215. package/dist/types/properties/ts/odyssey-react-mui_uk.d.ts +1 -0
  216. package/dist/types/properties/ts/odyssey-react-mui_uk.d.ts.map +1 -1
  217. package/dist/types/properties/ts/odyssey-react-mui_vi.d.ts +1 -0
  218. package/dist/types/properties/ts/odyssey-react-mui_vi.d.ts.map +1 -1
  219. package/dist/types/properties/ts/odyssey-react-mui_zh_CN.d.ts +1 -0
  220. package/dist/types/properties/ts/odyssey-react-mui_zh_CN.d.ts.map +1 -1
  221. package/dist/types/properties/ts/odyssey-react-mui_zh_TW.d.ts +1 -0
  222. package/dist/types/properties/ts/odyssey-react-mui_zh_TW.d.ts.map +1 -1
  223. package/dist/types/test-selectors/getByQuerySelector.d.ts +73 -73
  224. package/dist/types/test-selectors/getByQuerySelector.d.ts.map +1 -1
  225. package/dist/types/test-selectors/testSelector.d.ts +1 -1
  226. package/dist/types/test-selectors/testSelector.d.ts.map +1 -1
  227. package/dist/types/ui-shell/NarrowUiShellContent.d.ts +1 -1
  228. package/dist/types/ui-shell/NarrowUiShellContent.d.ts.map +1 -1
  229. package/dist/types/ui-shell/SideNav/SideNav.d.ts +1 -1
  230. package/dist/types/ui-shell/SideNav/SideNav.d.ts.map +1 -1
  231. package/dist/types/ui-shell/SideNav/types.d.ts +5 -1
  232. package/dist/types/ui-shell/SideNav/types.d.ts.map +1 -1
  233. package/dist/types/ui-shell/UiShell.d.ts.map +1 -1
  234. package/dist/types/ui-shell/WideUiShellContent.d.ts +1 -1
  235. package/dist/types/ui-shell/WideUiShellContent.d.ts.map +1 -1
  236. package/dist/types/ui-shell/uiShellContentTypes.d.ts +4 -0
  237. package/dist/types/ui-shell/uiShellContentTypes.d.ts.map +1 -1
  238. package/dist/types/web-component/odysseyWebComponentVersion.generated.d.ts +1 -1
  239. package/package.json +15 -15
@@ -14,6 +14,7 @@ var _index2 = require("../icons.generated/index.cjs");
14
14
  var _OdysseyDesignTokensContext = require("../OdysseyDesignTokensContext.cjs");
15
15
  var _usePagination = require("./usePagination.cjs");
16
16
  var _Typography = require("../Typography.cjs");
17
+ require("../i18n.cjs");
17
18
  var _jsxRuntime = require("react/jsx-runtime");
18
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
20
  /*!
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.cjs","names":["_styled","_interopRequireDefault","require","_react","_reactI18next","_Box","_index","_index2","_OdysseyDesignTokensContext","_usePagination","_Typography","_jsxRuntime","e","__esModule","default","PaginationContainer","styled","display","justifyContent","PaginationSegment","shouldForwardProp","prop","odysseyDesignTokens","alignItems","gap","Spacing4","Spacing2","PaginationInput","_InputBase2","borderColor","HueNeutral200","borderRadius","BorderRadiusTight","height","Spacing6","width","HueNeutral400","PalettePrimaryMain","PaginationButtonContainer","marginInlineStart","Pagination","currentPageLabel","currentPageLabelProp","currentRowsCount","hasPageInput","hasRowCountInput","hasRowCountLabel","isDisabled","isMoreDisabled","lastRow","loadMoreLabel","loadMoreLabelProp","maxPageIndex","maxPageSize","nextLabel","nextLabelProp","onPaginationChange","onPaginationChangeProp","pageIndex","pageSize","previousLabel","previousLabelProp","rowsPerPageLabel","rowsPerPageLabelProp","totalRows","variant","useOdysseyDesignTokens","t","useTranslation","page","setPage","useState","rowsPerPage","setRowsPerPage","initialRowsPerPage","useRef","useEffect","useCallback","totalRowsLabel","usePagination","handlePaginationChange","updatedPage","updatedRowsPerPage","Math","ceil","handlePageSubmit","event","key","parseInt","currentTarget","value","handleRowsPerPageSubmit","setPageFromEvent","min","target","setRowsPerPageFromEvent","max","handleLoadMore","current","handleNextButton","handlePreviousButton","loadMoreIsDisabled","useMemo","nextButtonDisabled","previousButtonDisabled","rowsPerPageInputProps","currentPageInputProps","jsxs","children","Box","jsx","Paragraph","component","color","type","onChange","onBlur","onKeyDown","disabled","inputProps","Button","startIcon","ArrowLeftIcon","size","ariaLabel","onClick","endIcon","ArrowRightIcon","label","MemoizedPagination","exports","memo","displayName"],"sources":["../../../src/Pagination/Pagination.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 styled from \"@emotion/styled\";\nimport { InputBase } from \"@mui/material\";\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Box } from \"../Box.js\";\nimport { Button } from \"../Buttons/index.js\";\nimport { paginationTypeValues } from \"./constants.js\";\nimport { ArrowLeftIcon, ArrowRightIcon } from \"../icons.generated/index.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext.js\";\nimport { usePagination } from \"./usePagination.js\";\nimport { Paragraph } from \"../Typography.js\";\n\nconst PaginationContainer = styled(\"nav\")({\n display: \"flex\",\n justifyContent: \"space-between\",\n});\n\nconst PaginationSegment = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n alignItems: \"center\",\n gap: odysseyDesignTokens.Spacing4,\n \"& > div\": {\n display: \"flex\",\n alignItems: \"center\",\n gap: odysseyDesignTokens.Spacing2,\n },\n}));\n\nconst PaginationInput = styled(InputBase, {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n borderColor: odysseyDesignTokens.HueNeutral200,\n borderRadius: odysseyDesignTokens.BorderRadiusTight,\n height: odysseyDesignTokens.Spacing6,\n width: \"4.5714285714rem\", // This is a hardcoded value, keep as string\n \"&:hover\": {\n borderColor: odysseyDesignTokens.HueNeutral400,\n },\n \"&.Mui-focused:hover\": {\n borderColor: odysseyDesignTokens.PalettePrimaryMain,\n },\n}));\n\nconst PaginationButtonContainer = styled(\"div\")({\n \"& > *\": {\n marginInlineStart: `0 !important`,\n },\n});\n\nexport type PaginationProps = {\n /**\n * The labeled rendered for the current page index\n */\n currentPageLabel?: string;\n /**\n * The number of items currently visible on the page\n */\n currentRowsCount?: number;\n /**\n * If true, the page input will be visible and the user can directly manipulate which page\n * is visible.\n */\n hasPageInput?: boolean;\n /**\n * If true, the row count input will be visible and the user can directly manipulate how many rows\n * are visible.\n */\n hasRowCountInput?: boolean;\n /**\n * If true, the \"X - X of total X\" label will be visible\n */\n hasRowCountLabel?: boolean;\n /**\n * If true, the pagination controls will be disabled\n */\n isDisabled?: boolean;\n /**\n * If true, the next or Show More button will be disabled\n */\n isMoreDisabled?: boolean;\n /**\n * The current page last row index\n */\n lastRow?: number;\n /**\n * If the pagination is of \"loadMore\" variant, then this is the the load more label\n */\n loadMoreLabel?: string;\n /**\n * The max page\n */\n maxPageIndex?: number;\n /**\n * The max rows per page\n */\n maxPageSize?: number;\n /**\n * The label for the next control\n */\n nextLabel?: string;\n /**\n * Page index and page size setter\n */\n onPaginationChange: ({\n pageIndex,\n pageSize,\n }: {\n pageIndex: number;\n pageSize: number;\n }) => void;\n /**\n * The current page index\n */\n pageIndex: number;\n /**\n * The current page size\n */\n pageSize: number;\n /**\n * The label for the previous control\n */\n previousLabel?: string;\n /**\n * The label that shows how many results are rendered per page\n */\n rowsPerPageLabel?: string;\n /**\n * Total rows count\n */\n totalRows?: number;\n /**\n * The type of pagination controls shown. Defaults to next/prev buttons, but can be\n * set to a simple \"Load more\" button by setting to \"loadMore\".\n */\n variant?: (typeof paginationTypeValues)[number];\n};\n\nconst Pagination = ({\n currentPageLabel: currentPageLabelProp,\n currentRowsCount,\n hasPageInput = true,\n hasRowCountInput = true,\n hasRowCountLabel = true,\n isDisabled,\n isMoreDisabled,\n lastRow,\n loadMoreLabel: loadMoreLabelProp,\n maxPageIndex,\n maxPageSize,\n nextLabel: nextLabelProp,\n onPaginationChange: onPaginationChangeProp,\n pageIndex,\n pageSize,\n previousLabel: previousLabelProp,\n rowsPerPageLabel: rowsPerPageLabelProp,\n totalRows,\n variant,\n}: PaginationProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const [page, setPage] = useState<number>(pageIndex);\n const [rowsPerPage, setRowsPerPage] = useState<number>(pageSize);\n const initialRowsPerPage = useRef<number>(pageSize);\n\n const currentPageLabel = currentPageLabelProp ?? t(\"pagination.page\");\n const loadMoreLabel = loadMoreLabelProp ?? t(\"pagination.loadmore\");\n const nextLabel = nextLabelProp ?? t(\"pagination.next\");\n const previousLabel = previousLabelProp ?? t(\"pagination.previous\");\n const rowsPerPageLabel = rowsPerPageLabelProp ?? t(\"pagination.rowsperpage\");\n\n useEffect(() => {\n setPage(pageIndex);\n setRowsPerPage(pageSize);\n }, [pageIndex, pageSize]);\n\n const onPaginationChange = useCallback(\n ({ pageIndex, pageSize }: { pageIndex: number; pageSize: number }) => {\n onPaginationChangeProp({ pageIndex, pageSize });\n },\n [onPaginationChangeProp],\n );\n\n const { totalRowsLabel } = usePagination({\n pageIndex,\n pageSize,\n currentRowsCount: currentRowsCount || 0,\n totalRows,\n });\n\n const handlePaginationChange = useCallback(() => {\n let updatedPage = page;\n let updatedRowsPerPage = rowsPerPage;\n\n if (totalRows) {\n const maxPageIndex = Math.ceil(totalRows / updatedRowsPerPage);\n\n // Ensure rowsPerPage does not exceed totalRows\n if (updatedRowsPerPage > totalRows) {\n updatedRowsPerPage = totalRows;\n }\n\n // Ensure page is within valid range\n if (updatedPage > maxPageIndex) {\n updatedPage = maxPageIndex;\n } else if (updatedPage < 1) {\n updatedPage = 1;\n }\n }\n\n onPaginationChange({\n pageIndex: updatedPage,\n pageSize: updatedRowsPerPage,\n });\n }, [page, rowsPerPage, onPaginationChange, totalRows]);\n\n // The following handlers use React.KeyboardEvent (rather than just KeyboardEvent) becuase React.KeyboardEvent\n // is generic, while plain KeyboardEvent is not. We need this generic so we can specify the HTMLInputElement,\n // which allows us to use currentTarget.value\n const handlePageSubmit = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (event.key === \"Enter\") {\n onPaginationChange({\n pageIndex: parseInt(event.currentTarget.value),\n pageSize: rowsPerPage,\n });\n }\n },\n [rowsPerPage, onPaginationChange],\n );\n\n const handleRowsPerPageSubmit = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (event.key === \"Enter\") {\n onPaginationChange({\n pageIndex: page,\n pageSize: parseInt(event.currentTarget.value),\n });\n }\n },\n [page, onPaginationChange],\n );\n\n const setPageFromEvent = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = maxPageIndex\n ? Math.min(parseInt(event.target.value), maxPageIndex)\n : parseInt(event.target.value);\n setPage(value);\n },\n [setPage, maxPageIndex],\n );\n\n const setRowsPerPageFromEvent = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = maxPageSize\n ? Math.min(parseInt(event.target.value), maxPageSize)\n : parseInt(event.target.value);\n\n // Ensure the value can't be less than 1\n setRowsPerPage(Math.max(1, value));\n },\n [setRowsPerPage, maxPageSize],\n );\n\n const handleLoadMore = useCallback(() => {\n onPaginationChange({\n pageIndex: 1,\n pageSize: rowsPerPage + initialRowsPerPage.current,\n });\n }, [rowsPerPage, onPaginationChange]);\n\n const handleNextButton = useCallback(() => {\n onPaginationChange({ pageIndex: page + 1, pageSize: rowsPerPage });\n }, [onPaginationChange, page, rowsPerPage]);\n\n const handlePreviousButton = useCallback(() => {\n onPaginationChange({ pageIndex: page - 1, pageSize: rowsPerPage });\n }, [onPaginationChange, page, rowsPerPage]);\n\n const loadMoreIsDisabled = useMemo(() => {\n return isMoreDisabled || (totalRows ? rowsPerPage >= totalRows : false);\n }, [isMoreDisabled, rowsPerPage, totalRows]);\n\n const nextButtonDisabled = useMemo(\n () =>\n isMoreDisabled ||\n (lastRow && (totalRows ? lastRow >= totalRows : false)) ||\n isDisabled,\n [isMoreDisabled, totalRows, lastRow, isDisabled],\n );\n\n const previousButtonDisabled = useMemo(\n () => pageIndex <= 1 || isDisabled,\n [pageIndex, isDisabled],\n );\n\n const rowsPerPageInputProps = useMemo(\n () => ({\n \"aria-label\": rowsPerPageLabel,\n max: maxPageSize || totalRows,\n }),\n [maxPageSize, rowsPerPageLabel, totalRows],\n );\n\n const currentPageInputProps = useMemo(\n () => ({\n \"aria-label\": currentPageLabel,\n max: maxPageIndex,\n }),\n [currentPageLabel, maxPageIndex],\n );\n\n return variant === \"paged\" ? (\n <PaginationContainer aria-label={t(\"pagination.label\")}>\n <PaginationSegment odysseyDesignTokens={odysseyDesignTokens}>\n {hasRowCountInput && (\n <Box>\n <Paragraph component=\"span\" color=\"textSecondary\">\n {rowsPerPageLabel}\n </Paragraph>\n <PaginationInput\n odysseyDesignTokens={odysseyDesignTokens}\n type=\"number\"\n value={rowsPerPage}\n onChange={setRowsPerPageFromEvent}\n onBlur={handlePaginationChange}\n onKeyDown={handleRowsPerPageSubmit}\n disabled={isDisabled}\n inputProps={rowsPerPageInputProps}\n />\n </Box>\n )}\n {hasRowCountLabel && (\n <Paragraph component=\"span\" color=\"textSecondary\">\n {totalRowsLabel}\n </Paragraph>\n )}\n </PaginationSegment>\n\n <PaginationSegment odysseyDesignTokens={odysseyDesignTokens}>\n {totalRows && hasPageInput && (\n <Box>\n <Paragraph component=\"span\" color=\"textSecondary\">\n {currentPageLabel}\n </Paragraph>\n <PaginationInput\n odysseyDesignTokens={odysseyDesignTokens}\n type=\"number\"\n value={page}\n onChange={setPageFromEvent}\n onBlur={handlePaginationChange}\n onKeyDown={handlePageSubmit}\n disabled={isDisabled}\n inputProps={currentPageInputProps}\n />\n </Box>\n )}\n <PaginationButtonContainer>\n <Button\n startIcon={<ArrowLeftIcon />}\n variant=\"floating\"\n size=\"small\"\n ariaLabel={previousLabel}\n onClick={handlePreviousButton}\n isDisabled={previousButtonDisabled}\n />\n <Button\n endIcon={<ArrowRightIcon />}\n variant=\"floating\"\n size=\"small\"\n ariaLabel={nextLabel}\n onClick={handleNextButton}\n isDisabled={nextButtonDisabled}\n />\n </PaginationButtonContainer>\n </PaginationSegment>\n </PaginationContainer>\n ) : (\n <Button\n variant=\"secondary\"\n label={loadMoreLabel}\n onClick={handleLoadMore}\n isDisabled={loadMoreIsDisabled}\n />\n );\n};\n\nconst MemoizedPagination = memo(Pagination);\nMemoizedPagination.displayName = \"Pagination\";\n\nexport { MemoizedPagination as Pagination };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Pagination.cjs","names":["_styled","_interopRequireDefault","require","_react","_reactI18next","_Box","_index","_index2","_OdysseyDesignTokensContext","_usePagination","_Typography","_jsxRuntime","e","__esModule","default","PaginationContainer","styled","display","justifyContent","PaginationSegment","shouldForwardProp","prop","odysseyDesignTokens","alignItems","gap","Spacing4","Spacing2","PaginationInput","_InputBase2","borderColor","HueNeutral200","borderRadius","BorderRadiusTight","height","Spacing6","width","HueNeutral400","PalettePrimaryMain","PaginationButtonContainer","marginInlineStart","Pagination","currentPageLabel","currentPageLabelProp","currentRowsCount","hasPageInput","hasRowCountInput","hasRowCountLabel","isDisabled","isMoreDisabled","lastRow","loadMoreLabel","loadMoreLabelProp","maxPageIndex","maxPageSize","nextLabel","nextLabelProp","onPaginationChange","onPaginationChangeProp","pageIndex","pageSize","previousLabel","previousLabelProp","rowsPerPageLabel","rowsPerPageLabelProp","totalRows","variant","useOdysseyDesignTokens","t","useTranslation","page","setPage","useState","rowsPerPage","setRowsPerPage","initialRowsPerPage","useRef","useEffect","useCallback","totalRowsLabel","usePagination","handlePaginationChange","updatedPage","updatedRowsPerPage","Math","ceil","handlePageSubmit","event","key","parseInt","currentTarget","value","handleRowsPerPageSubmit","setPageFromEvent","min","target","setRowsPerPageFromEvent","max","handleLoadMore","current","handleNextButton","handlePreviousButton","loadMoreIsDisabled","useMemo","nextButtonDisabled","previousButtonDisabled","rowsPerPageInputProps","currentPageInputProps","jsxs","children","Box","jsx","Paragraph","component","color","type","onChange","onBlur","onKeyDown","disabled","inputProps","Button","startIcon","ArrowLeftIcon","size","ariaLabel","onClick","endIcon","ArrowRightIcon","label","MemoizedPagination","exports","memo","displayName"],"sources":["../../../src/Pagination/Pagination.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 styled from \"@emotion/styled\";\nimport { InputBase } from \"@mui/material\";\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Box } from \"../Box.js\";\nimport { Button } from \"../Buttons/index.js\";\nimport { paginationTypeValues } from \"./constants.js\";\nimport { ArrowLeftIcon, ArrowRightIcon } from \"../icons.generated/index.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext.js\";\nimport { usePagination } from \"./usePagination.js\";\nimport { Paragraph } from \"../Typography.js\";\nimport \"../i18n.js\";\n\nconst PaginationContainer = styled(\"nav\")({\n display: \"flex\",\n justifyContent: \"space-between\",\n});\n\nconst PaginationSegment = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n alignItems: \"center\",\n gap: odysseyDesignTokens.Spacing4,\n \"& > div\": {\n display: \"flex\",\n alignItems: \"center\",\n gap: odysseyDesignTokens.Spacing2,\n },\n}));\n\nconst PaginationInput = styled(InputBase, {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n borderColor: odysseyDesignTokens.HueNeutral200,\n borderRadius: odysseyDesignTokens.BorderRadiusTight,\n height: odysseyDesignTokens.Spacing6,\n width: \"4.5714285714rem\", // This is a hardcoded value, keep as string\n \"&:hover\": {\n borderColor: odysseyDesignTokens.HueNeutral400,\n },\n \"&.Mui-focused:hover\": {\n borderColor: odysseyDesignTokens.PalettePrimaryMain,\n },\n}));\n\nconst PaginationButtonContainer = styled(\"div\")({\n \"& > *\": {\n marginInlineStart: `0 !important`,\n },\n});\n\nexport type PaginationProps = {\n /**\n * The labeled rendered for the current page index\n */\n currentPageLabel?: string;\n /**\n * The number of items currently visible on the page\n */\n currentRowsCount?: number;\n /**\n * If true, the page input will be visible and the user can directly manipulate which page\n * is visible.\n */\n hasPageInput?: boolean;\n /**\n * If true, the row count input will be visible and the user can directly manipulate how many rows\n * are visible.\n */\n hasRowCountInput?: boolean;\n /**\n * If true, the \"X - X of total X\" label will be visible\n */\n hasRowCountLabel?: boolean;\n /**\n * If true, the pagination controls will be disabled\n */\n isDisabled?: boolean;\n /**\n * If true, the next or Show More button will be disabled\n */\n isMoreDisabled?: boolean;\n /**\n * The current page last row index\n */\n lastRow?: number;\n /**\n * If the pagination is of \"loadMore\" variant, then this is the the load more label\n */\n loadMoreLabel?: string;\n /**\n * The max page\n */\n maxPageIndex?: number;\n /**\n * The max rows per page\n */\n maxPageSize?: number;\n /**\n * The label for the next control\n */\n nextLabel?: string;\n /**\n * Page index and page size setter\n */\n onPaginationChange: ({\n pageIndex,\n pageSize,\n }: {\n pageIndex: number;\n pageSize: number;\n }) => void;\n /**\n * The current page index\n */\n pageIndex: number;\n /**\n * The current page size\n */\n pageSize: number;\n /**\n * The label for the previous control\n */\n previousLabel?: string;\n /**\n * The label that shows how many results are rendered per page\n */\n rowsPerPageLabel?: string;\n /**\n * Total rows count\n */\n totalRows?: number;\n /**\n * The type of pagination controls shown. Defaults to next/prev buttons, but can be\n * set to a simple \"Load more\" button by setting to \"loadMore\".\n */\n variant?: (typeof paginationTypeValues)[number];\n};\n\nconst Pagination = ({\n currentPageLabel: currentPageLabelProp,\n currentRowsCount,\n hasPageInput = true,\n hasRowCountInput = true,\n hasRowCountLabel = true,\n isDisabled,\n isMoreDisabled,\n lastRow,\n loadMoreLabel: loadMoreLabelProp,\n maxPageIndex,\n maxPageSize,\n nextLabel: nextLabelProp,\n onPaginationChange: onPaginationChangeProp,\n pageIndex,\n pageSize,\n previousLabel: previousLabelProp,\n rowsPerPageLabel: rowsPerPageLabelProp,\n totalRows,\n variant,\n}: PaginationProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const [page, setPage] = useState<number>(pageIndex);\n const [rowsPerPage, setRowsPerPage] = useState<number>(pageSize);\n const initialRowsPerPage = useRef<number>(pageSize);\n\n const currentPageLabel = currentPageLabelProp ?? t(\"pagination.page\");\n const loadMoreLabel = loadMoreLabelProp ?? t(\"pagination.loadmore\");\n const nextLabel = nextLabelProp ?? t(\"pagination.next\");\n const previousLabel = previousLabelProp ?? t(\"pagination.previous\");\n const rowsPerPageLabel = rowsPerPageLabelProp ?? t(\"pagination.rowsperpage\");\n\n useEffect(() => {\n setPage(pageIndex);\n setRowsPerPage(pageSize);\n }, [pageIndex, pageSize]);\n\n const onPaginationChange = useCallback(\n ({ pageIndex, pageSize }: { pageIndex: number; pageSize: number }) => {\n onPaginationChangeProp({ pageIndex, pageSize });\n },\n [onPaginationChangeProp],\n );\n\n const { totalRowsLabel } = usePagination({\n pageIndex,\n pageSize,\n currentRowsCount: currentRowsCount || 0,\n totalRows,\n });\n\n const handlePaginationChange = useCallback(() => {\n let updatedPage = page;\n let updatedRowsPerPage = rowsPerPage;\n\n if (totalRows) {\n const maxPageIndex = Math.ceil(totalRows / updatedRowsPerPage);\n\n // Ensure rowsPerPage does not exceed totalRows\n if (updatedRowsPerPage > totalRows) {\n updatedRowsPerPage = totalRows;\n }\n\n // Ensure page is within valid range\n if (updatedPage > maxPageIndex) {\n updatedPage = maxPageIndex;\n } else if (updatedPage < 1) {\n updatedPage = 1;\n }\n }\n\n onPaginationChange({\n pageIndex: updatedPage,\n pageSize: updatedRowsPerPage,\n });\n }, [page, rowsPerPage, onPaginationChange, totalRows]);\n\n // The following handlers use React.KeyboardEvent (rather than just KeyboardEvent) becuase React.KeyboardEvent\n // is generic, while plain KeyboardEvent is not. We need this generic so we can specify the HTMLInputElement,\n // which allows us to use currentTarget.value\n const handlePageSubmit = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (event.key === \"Enter\") {\n onPaginationChange({\n pageIndex: parseInt(event.currentTarget.value),\n pageSize: rowsPerPage,\n });\n }\n },\n [rowsPerPage, onPaginationChange],\n );\n\n const handleRowsPerPageSubmit = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (event.key === \"Enter\") {\n onPaginationChange({\n pageIndex: page,\n pageSize: parseInt(event.currentTarget.value),\n });\n }\n },\n [page, onPaginationChange],\n );\n\n const setPageFromEvent = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = maxPageIndex\n ? Math.min(parseInt(event.target.value), maxPageIndex)\n : parseInt(event.target.value);\n setPage(value);\n },\n [setPage, maxPageIndex],\n );\n\n const setRowsPerPageFromEvent = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = maxPageSize\n ? Math.min(parseInt(event.target.value), maxPageSize)\n : parseInt(event.target.value);\n\n // Ensure the value can't be less than 1\n setRowsPerPage(Math.max(1, value));\n },\n [setRowsPerPage, maxPageSize],\n );\n\n const handleLoadMore = useCallback(() => {\n onPaginationChange({\n pageIndex: 1,\n pageSize: rowsPerPage + initialRowsPerPage.current,\n });\n }, [rowsPerPage, onPaginationChange]);\n\n const handleNextButton = useCallback(() => {\n onPaginationChange({ pageIndex: page + 1, pageSize: rowsPerPage });\n }, [onPaginationChange, page, rowsPerPage]);\n\n const handlePreviousButton = useCallback(() => {\n onPaginationChange({ pageIndex: page - 1, pageSize: rowsPerPage });\n }, [onPaginationChange, page, rowsPerPage]);\n\n const loadMoreIsDisabled = useMemo(() => {\n return isMoreDisabled || (totalRows ? rowsPerPage >= totalRows : false);\n }, [isMoreDisabled, rowsPerPage, totalRows]);\n\n const nextButtonDisabled = useMemo(\n () =>\n isMoreDisabled ||\n (lastRow && (totalRows ? lastRow >= totalRows : false)) ||\n isDisabled,\n [isMoreDisabled, totalRows, lastRow, isDisabled],\n );\n\n const previousButtonDisabled = useMemo(\n () => pageIndex <= 1 || isDisabled,\n [pageIndex, isDisabled],\n );\n\n const rowsPerPageInputProps = useMemo(\n () => ({\n \"aria-label\": rowsPerPageLabel,\n max: maxPageSize || totalRows,\n }),\n [maxPageSize, rowsPerPageLabel, totalRows],\n );\n\n const currentPageInputProps = useMemo(\n () => ({\n \"aria-label\": currentPageLabel,\n max: maxPageIndex,\n }),\n [currentPageLabel, maxPageIndex],\n );\n\n return variant === \"paged\" ? (\n <PaginationContainer aria-label={t(\"pagination.label\")}>\n <PaginationSegment odysseyDesignTokens={odysseyDesignTokens}>\n {hasRowCountInput && (\n <Box>\n <Paragraph component=\"span\" color=\"textSecondary\">\n {rowsPerPageLabel}\n </Paragraph>\n <PaginationInput\n odysseyDesignTokens={odysseyDesignTokens}\n type=\"number\"\n value={rowsPerPage}\n onChange={setRowsPerPageFromEvent}\n onBlur={handlePaginationChange}\n onKeyDown={handleRowsPerPageSubmit}\n disabled={isDisabled}\n inputProps={rowsPerPageInputProps}\n />\n </Box>\n )}\n {hasRowCountLabel && (\n <Paragraph component=\"span\" color=\"textSecondary\">\n {totalRowsLabel}\n </Paragraph>\n )}\n </PaginationSegment>\n\n <PaginationSegment odysseyDesignTokens={odysseyDesignTokens}>\n {totalRows && hasPageInput && (\n <Box>\n <Paragraph component=\"span\" color=\"textSecondary\">\n {currentPageLabel}\n </Paragraph>\n <PaginationInput\n odysseyDesignTokens={odysseyDesignTokens}\n type=\"number\"\n value={page}\n onChange={setPageFromEvent}\n onBlur={handlePaginationChange}\n onKeyDown={handlePageSubmit}\n disabled={isDisabled}\n inputProps={currentPageInputProps}\n />\n </Box>\n )}\n <PaginationButtonContainer>\n <Button\n startIcon={<ArrowLeftIcon />}\n variant=\"floating\"\n size=\"small\"\n ariaLabel={previousLabel}\n onClick={handlePreviousButton}\n isDisabled={previousButtonDisabled}\n />\n <Button\n endIcon={<ArrowRightIcon />}\n variant=\"floating\"\n size=\"small\"\n ariaLabel={nextLabel}\n onClick={handleNextButton}\n isDisabled={nextButtonDisabled}\n />\n </PaginationButtonContainer>\n </PaginationSegment>\n </PaginationContainer>\n ) : (\n <Button\n variant=\"secondary\"\n label={loadMoreLabel}\n onClick={handleLoadMore}\n isDisabled={loadMoreIsDisabled}\n />\n );\n};\n\nconst MemoizedPagination = memo(Pagination);\nMemoizedPagination.displayName = \"Pagination\";\n\nexport { MemoizedPagination as Pagination };\n"],"mappings":"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","ignoreList":[]}
@@ -27,6 +27,7 @@ const adornmentSizeValues = exports.adornmentSizeValues = ["small", "large"];
27
27
  const ComposablePicker = ({
28
28
  ariaDescribedBy,
29
29
  defaultValue,
30
+ emptyOptionsText,
30
31
  errorMessage,
31
32
  errorMessageList,
32
33
  getIsOptionEqualToValue,
@@ -102,6 +103,7 @@ const ComposablePicker = ({
102
103
  isOptionEqualToValue: getIsOptionEqualToValue,
103
104
  loading: isLoading,
104
105
  multiple: hasMultipleChoices,
106
+ noOptionsText: emptyOptionsText,
105
107
  onBlur: onBlur,
106
108
  onChange: onChange,
107
109
  onInputChange: onInputChange,
@@ -1 +1 @@
1
- {"version":3,"file":"ComposablePicker.cjs","names":["_react","require","_reactI18next","_PickerVirtualizationListBox","_useAutocomplete","_jsxRuntime","_interopRequireDefault","e","__esModule","default","adornmentSizeValues","exports","ComposablePicker","ariaDescribedBy","defaultValue","errorMessage","errorMessageList","getIsOptionEqualToValue","getOptionLabel","groupOptionsBy","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isFullWidth","isLoading","isOptional","isReadOnly","isVirtualized","hint","HintLinkComponent","label","name","nameOverride","onBlur","onChange","onInputChange","onFocus","options","renderOption","renderTags","value","testId","translate","t","useTranslation","inputValueProp","isVirtualizedRef","renderInput","valueProps","useAutocomplete","jsx","_Autocomplete2","current","ListboxComponent","PickerVirtualizationListBox","clearText","closeText","disableCloseOnSelect","disabled","freeSolo","filterSelectedOptions","fullWidth","groupBy","isOptionEqualToValue","loading","multiple","readOnly","MemoizedComposablePicker","memo","displayName"],"sources":["../../../../src/labs/OdysseyPickers/ComposablePicker.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 { memo, ReactNode } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n Autocomplete as MuiAutocomplete,\n AutocompleteProps as MuiAutocompleteProps,\n} from \"@mui/material\";\n\nimport { AutocompleteProps } from \"../../Autocomplete.js\";\nimport { PickerVirtualizationListBox } from \"./PickerVirtualizationListBox.js\";\nimport { useAutocomplete } from \"../../useAutocomplete.js\";\n\nexport const adornmentSizeValues = [\"small\", \"large\"] as const;\nexport type AdornmentSize = (typeof adornmentSizeValues)[number];\n\nexport type BasePickerProps<\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = AutocompleteProps<OptionType, HasMultipleChoices, IsCustomValueAllowed> & {\n adornmentSize?: AdornmentSize;\n groupOptionsBy?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"groupBy\"];\n};\n\nexport type BasePickerType = {\n displayName: string;\n <\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: BasePickerProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactNode;\n};\n\nexport type ComposablePickerProps<\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = BasePickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed> & {\n getOptionLabel?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"getOptionLabel\"];\n\n renderOption: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"renderOption\"];\n\n renderTags?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"renderTags\"];\n};\n\nconst ComposablePicker = <\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n ariaDescribedBy,\n defaultValue,\n errorMessage,\n errorMessageList,\n getIsOptionEqualToValue,\n getOptionLabel,\n groupOptionsBy,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isFullWidth = false,\n isLoading,\n isOptional = false,\n isReadOnly,\n isVirtualized = false,\n hint,\n HintLinkComponent,\n label,\n name: nameOverride,\n onBlur,\n onChange,\n onInputChange,\n onFocus,\n options,\n renderOption,\n renderTags,\n value,\n testId,\n translate,\n}: ComposablePickerProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n>) => {\n const { t } = useTranslation();\n const { inputValueProp, isVirtualizedRef, renderInput, valueProps } =\n useAutocomplete<OptionType, HasMultipleChoices, IsCustomValueAllowed>({\n ariaDescribedBy,\n defaultValue,\n errorMessage,\n errorMessageList,\n hasMultipleChoices,\n hint,\n HintLinkComponent,\n inputValue,\n isFullWidth,\n isOptional,\n isVirtualized,\n label,\n name: nameOverride,\n testId,\n value,\n });\n\n return (\n <MuiAutocomplete\n {...valueProps}\n {...inputValueProp}\n // conditionally provide the ListboxComponent if this needs to be virtualized\n {...(isVirtualizedRef.current && {\n ListboxComponent: PickerVirtualizationListBox,\n })}\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 clearText={t(\"clear.text\")}\n closeText={t(\"close.text\")}\n disableCloseOnSelect={hasMultipleChoices}\n disabled={isDisabled}\n freeSolo={isCustomValueAllowed}\n filterSelectedOptions={true}\n fullWidth={isFullWidth}\n getOptionLabel={getOptionLabel}\n groupBy={groupOptionsBy}\n id={idOverride}\n isOptionEqualToValue={getIsOptionEqualToValue}\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 renderOption={renderOption}\n renderTags={renderTags}\n translate={translate}\n />\n );\n};\n\n// Need the `typeof ComposablePicker` because generics don't get passed through\nconst MemoizedComposablePicker = memo(\n ComposablePicker,\n) as typeof ComposablePicker;\n// @ts-expect-error displayName is expected to not be on `typeof ComposablePicker`\nMemoizedComposablePicker.displayName = \"ComposablePicker\";\n\nexport { MemoizedComposablePicker as ComposablePicker };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ComposablePicker.cjs","names":["_react","require","_reactI18next","_PickerVirtualizationListBox","_useAutocomplete","_jsxRuntime","_interopRequireDefault","e","__esModule","default","adornmentSizeValues","exports","ComposablePicker","ariaDescribedBy","defaultValue","emptyOptionsText","errorMessage","errorMessageList","getIsOptionEqualToValue","getOptionLabel","groupOptionsBy","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isFullWidth","isLoading","isOptional","isReadOnly","isVirtualized","hint","HintLinkComponent","label","name","nameOverride","onBlur","onChange","onInputChange","onFocus","options","renderOption","renderTags","value","testId","translate","t","useTranslation","inputValueProp","isVirtualizedRef","renderInput","valueProps","useAutocomplete","jsx","_Autocomplete2","current","ListboxComponent","PickerVirtualizationListBox","clearText","closeText","disableCloseOnSelect","disabled","freeSolo","filterSelectedOptions","fullWidth","groupBy","isOptionEqualToValue","loading","multiple","noOptionsText","readOnly","MemoizedComposablePicker","memo","displayName"],"sources":["../../../../src/labs/OdysseyPickers/ComposablePicker.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 { memo, ReactNode } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n Autocomplete as MuiAutocomplete,\n AutocompleteProps as MuiAutocompleteProps,\n} from \"@mui/material\";\n\nimport { AutocompleteProps } from \"../../Autocomplete.js\";\nimport { PickerVirtualizationListBox } from \"./PickerVirtualizationListBox.js\";\nimport { useAutocomplete } from \"../../useAutocomplete.js\";\n\nexport const adornmentSizeValues = [\"small\", \"large\"] as const;\nexport type AdornmentSize = (typeof adornmentSizeValues)[number];\n\nexport type BasePickerProps<\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = AutocompleteProps<OptionType, HasMultipleChoices, IsCustomValueAllowed> & {\n adornmentSize?: AdornmentSize;\n emptyOptionsText?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"noOptionsText\"];\n groupOptionsBy?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"groupBy\"];\n};\n\nexport type BasePickerType = {\n displayName: string;\n <\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: BasePickerProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactNode;\n};\n\nexport type ComposablePickerProps<\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = BasePickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed> & {\n getOptionLabel?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"getOptionLabel\"];\n\n renderOption: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"renderOption\"];\n\n renderTags?: MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"renderTags\"];\n};\n\nconst ComposablePicker = <\n OptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n ariaDescribedBy,\n defaultValue,\n emptyOptionsText,\n errorMessage,\n errorMessageList,\n getIsOptionEqualToValue,\n getOptionLabel,\n groupOptionsBy,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isFullWidth = false,\n isLoading,\n isOptional = false,\n isReadOnly,\n isVirtualized = false,\n hint,\n HintLinkComponent,\n label,\n name: nameOverride,\n onBlur,\n onChange,\n onInputChange,\n onFocus,\n options,\n renderOption,\n renderTags,\n value,\n testId,\n translate,\n}: ComposablePickerProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n>) => {\n const { t } = useTranslation();\n const { inputValueProp, isVirtualizedRef, renderInput, valueProps } =\n useAutocomplete<OptionType, HasMultipleChoices, IsCustomValueAllowed>({\n ariaDescribedBy,\n defaultValue,\n errorMessage,\n errorMessageList,\n hasMultipleChoices,\n hint,\n HintLinkComponent,\n inputValue,\n isFullWidth,\n isOptional,\n isVirtualized,\n label,\n name: nameOverride,\n testId,\n value,\n });\n\n return (\n <MuiAutocomplete\n {...valueProps}\n {...inputValueProp}\n // conditionally provide the ListboxComponent if this needs to be virtualized\n {...(isVirtualizedRef.current && {\n ListboxComponent: PickerVirtualizationListBox,\n })}\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 clearText={t(\"clear.text\")}\n closeText={t(\"close.text\")}\n disableCloseOnSelect={hasMultipleChoices}\n disabled={isDisabled}\n freeSolo={isCustomValueAllowed}\n filterSelectedOptions={true}\n fullWidth={isFullWidth}\n getOptionLabel={getOptionLabel}\n groupBy={groupOptionsBy}\n id={idOverride}\n isOptionEqualToValue={getIsOptionEqualToValue}\n loading={isLoading}\n multiple={hasMultipleChoices}\n noOptionsText={emptyOptionsText}\n onBlur={onBlur}\n onChange={onChange}\n onInputChange={onInputChange}\n onFocus={onFocus}\n options={options}\n readOnly={isReadOnly}\n renderInput={renderInput}\n renderOption={renderOption}\n renderTags={renderTags}\n translate={translate}\n />\n );\n};\n\n// Need the `typeof ComposablePicker` because generics don't get passed through\nconst MemoizedComposablePicker = memo(\n ComposablePicker,\n) as typeof ComposablePicker;\n// @ts-expect-error displayName is expected to not be on `typeof ComposablePicker`\nMemoizedComposablePicker.displayName = \"ComposablePicker\";\n\nexport { MemoizedComposablePicker as ComposablePicker };\n"],"mappings":"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","ignoreList":[]}
@@ -70,13 +70,12 @@ const OptionDetail = exports.OptionDetail = (0, _styled.default)("div", {
70
70
  const Option = ({
71
71
  children,
72
72
  hasAdornment = false,
73
- key,
74
73
  muiProps
75
- }) => (0, _react.createElement)(StyledOption, {
74
+ }) => (0, _jsxRuntime.jsx)(StyledOption, {
76
75
  ...muiProps,
77
76
  hasAdornment: hasAdornment,
78
- key: key
79
- }, children);
77
+ children: children
78
+ });
80
79
  exports.Option = Option;
81
80
  const OptionMetadataComponent = ({
82
81
  metaData,
@@ -92,7 +91,7 @@ const OptionMetadataComponent = ({
92
91
  return (0, _jsxRuntime.jsxs)(OptionDetail, {
93
92
  odysseyDesignTokens: odysseyDesignTokens,
94
93
  children: [icon, detailText]
95
- }, `${index}-${detailText}`);
94
+ }, `${detailText}-${index}`);
96
95
  })
97
96
  });
98
97
  };
@@ -113,8 +112,7 @@ const OptionLabelOnlyComponent = ({
113
112
  option
114
113
  }) => {
115
114
  const {
116
- label,
117
- value
115
+ label
118
116
  } = option;
119
117
  return (0, _jsxRuntime.jsx)(Option, {
120
118
  muiProps: muiProps,
@@ -124,7 +122,7 @@ const OptionLabelOnlyComponent = ({
124
122
  children: label
125
123
  })
126
124
  })
127
- }, value);
125
+ });
128
126
  };
129
127
  exports.OptionLabelOnlyComponent = OptionLabelOnlyComponent;
130
128
  const OptionLabelDescription = ({
@@ -134,8 +132,7 @@ const OptionLabelDescription = ({
134
132
  }) => {
135
133
  const {
136
134
  description,
137
- label,
138
- value
135
+ label
139
136
  } = option;
140
137
  return (0, _jsxRuntime.jsx)(Option, {
141
138
  muiProps: muiProps,
@@ -149,7 +146,7 @@ const OptionLabelDescription = ({
149
146
  odysseyDesignTokens: odysseyDesignTokens
150
147
  })]
151
148
  })
152
- }, value);
149
+ });
153
150
  };
154
151
  const OptionLabelDescriptionMetadata = ({
155
152
  muiProps,
@@ -159,8 +156,7 @@ const OptionLabelDescriptionMetadata = ({
159
156
  const {
160
157
  description,
161
158
  label,
162
- metaData,
163
- value
159
+ metaData
164
160
  } = option;
165
161
  return (0, _jsxRuntime.jsxs)(Option, {
166
162
  muiProps: muiProps,
@@ -177,11 +173,12 @@ const OptionLabelDescriptionMetadata = ({
177
173
  metaData: metaData,
178
174
  odysseyDesignTokens: odysseyDesignTokens
179
175
  })]
180
- }, value);
176
+ });
181
177
  };
182
178
  const Picker = ({
183
179
  ariaDescribedBy,
184
180
  defaultValue,
181
+ emptyOptionsText,
185
182
  errorMessage,
186
183
  errorMessageList,
187
184
  getIsOptionEqualToValue,
@@ -213,29 +210,26 @@ const Picker = ({
213
210
  const hasDescription = "description" in option && option.description;
214
211
  const hasMetadata = "metaData" in option && option.metaData;
215
212
  const isLabelOnly = !hasMetadata && !hasDescription;
216
- if (isLabelOnly) {
217
- return (0, _jsxRuntime.jsx)(OptionLabelOnlyComponent, {
213
+ return (0, _jsxRuntime.jsx)(_react.Fragment, {
214
+ children: isLabelOnly ? (0, _jsxRuntime.jsx)(OptionLabelOnlyComponent, {
218
215
  muiProps: muiProps,
219
216
  odysseyDesignTokens: odysseyDesignTokens,
220
217
  option: option
221
- });
222
- }
223
- if (hasMetadata) {
224
- return (0, _jsxRuntime.jsx)(OptionLabelDescriptionMetadata, {
218
+ }) : hasMetadata ? (0, _jsxRuntime.jsx)(OptionLabelDescriptionMetadata, {
225
219
  muiProps: muiProps,
226
220
  odysseyDesignTokens: odysseyDesignTokens,
227
221
  option: option
228
- });
229
- }
230
- return (0, _jsxRuntime.jsx)(OptionLabelDescription, {
231
- muiProps: muiProps,
232
- odysseyDesignTokens: odysseyDesignTokens,
233
- option: option
234
- });
222
+ }) : (0, _jsxRuntime.jsx)(OptionLabelDescription, {
223
+ muiProps: muiProps,
224
+ odysseyDesignTokens: odysseyDesignTokens,
225
+ option: option
226
+ })
227
+ }, option.label);
235
228
  }, [odysseyDesignTokens]);
236
229
  return (0, _jsxRuntime.jsx)(_ComposablePicker.ComposablePicker, {
237
230
  ariaDescribedBy: ariaDescribedBy,
238
231
  defaultValue: defaultValue,
232
+ emptyOptionsText: emptyOptionsText,
239
233
  errorMessage: errorMessage,
240
234
  errorMessageList: errorMessageList,
241
235
  getIsOptionEqualToValue: getIsOptionEqualToValue,
@@ -1 +1 @@
1
- {"version":3,"file":"Picker.cjs","names":["_react","require","_styled","_interopRequireDefault","_ComposablePicker","_OdysseyDesignTokensContext","_Typography","_jsxRuntime","e","__esModule","default","StyledOption","exports","styled","li","hasAdornment","display","OptionLabelContainer","shouldForwardProp","prop","p","margin","OptionDescription","odysseyDesignTokens","Spacing1","color","TypographyColorSubordinate","OptionDetails","gap","Spacing3","marginBlockStart","Spacing2","OptionDetail","alignItems","svg","width","Spacing4","HueNeutral400","Option","children","key","muiProps","createElement","OptionMetadataComponent","metaData","jsx","map","meta","index","detailText","icon","jsxs","OptionDescriptionComponent","description","OptionLabelOnlyComponent","option","label","value","Paragraph","OptionLabelDescription","Heading6","component","OptionLabelDescriptionMetadata","Picker","ariaDescribedBy","defaultValue","errorMessage","errorMessageList","getIsOptionEqualToValue","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isFullWidth","isLoading","isOptional","isReadOnly","isVirtualized","isVirtualizedProp","hint","HintLinkComponent","name","nameOverride","onBlur","onChange","onChangeProp","onInputChange","onInputChangeProp","onFocus","options","testId","translate","useOdysseyDesignTokens","customOptionRender","useCallback","hasDescription","hasMetadata","isLabelOnly","ComposablePicker","renderOption","MemoizedPicker","memo","displayName"],"sources":["../../../../src/labs/OdysseyPickers/Picker.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 HTMLAttributes,\n memo,\n PropsWithChildren,\n ReactElement,\n ReactNode,\n useCallback,\n} from \"react\";\nimport styled from \"@emotion/styled\";\n\nimport {\n ComposablePicker,\n type BasePickerProps,\n type BasePickerType,\n} from \"./ComposablePicker.js\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { Heading6, Paragraph } from \"../../Typography.js\";\n\nexport const StyledOption = styled.li<{ hasAdornment?: boolean }>(\n ({ hasAdornment }) => ({\n ...(!hasAdornment && {\n display: \"block !important\",\n }),\n }),\n);\n\nexport const OptionLabelContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(() => ({\n p: {\n margin: 0,\n },\n}));\n\nexport const OptionDescription = styled(\"p\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n margin: `${odysseyDesignTokens.Spacing1} 0 0 !important`,\n color: odysseyDesignTokens.TypographyColorSubordinate,\n}));\n\nexport const OptionDetails = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n gap: odysseyDesignTokens.Spacing3,\n marginBlockStart: odysseyDesignTokens.Spacing2,\n}));\n\nexport const OptionDetail = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n alignItems: \"center\",\n gap: odysseyDesignTokens.Spacing1,\n\n svg: {\n width: odysseyDesignTokens.Spacing4,\n color: odysseyDesignTokens.HueNeutral400,\n },\n}));\n\nexport type BaseOptionProps = {\n muiProps: HTMLAttributes<HTMLLIElement>;\n odysseyDesignTokens: DesignTokens;\n};\n\ntype OptionComponentProps = {\n hasAdornment?: boolean;\n key: string | number;\n muiProps: BaseOptionProps[\"muiProps\"];\n};\n\nexport const Option = ({\n children,\n hasAdornment = false,\n key,\n muiProps,\n}: PropsWithChildren<OptionComponentProps>) => (\n <StyledOption {...muiProps} hasAdornment={hasAdornment} key={key}>\n {children}\n </StyledOption>\n);\n\nexport const OptionMetadataComponent = ({\n metaData,\n odysseyDesignTokens,\n}: {\n metaData: OptionMetadata[];\n odysseyDesignTokens: DesignTokens;\n}) => {\n return (\n <OptionDetails odysseyDesignTokens={odysseyDesignTokens}>\n {metaData.map((meta: OptionMetadata, index: number) => {\n const { detailText, icon } = meta;\n\n return (\n <OptionDetail\n key={`${index}-${detailText}`}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {icon}\n {detailText}\n </OptionDetail>\n );\n })}\n </OptionDetails>\n );\n};\n\nexport const OptionDescriptionComponent = ({\n description,\n odysseyDesignTokens,\n}: {\n description?: LabelDescription[\"description\"];\n odysseyDesignTokens: DesignTokens;\n}) => {\n return (\n description && (\n <OptionDescription odysseyDesignTokens={odysseyDesignTokens}>\n {description}\n </OptionDescription>\n )\n );\n};\n\nexport type OptionProps<OptionType> = {\n option: OptionType;\n};\n\nexport const OptionLabelOnlyComponent = <OptionType extends OptionLabelOnly>({\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps & OptionProps<OptionType>) => {\n const { label, value } = option;\n\n return (\n <Option muiProps={muiProps} key={value}>\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Paragraph>{label}</Paragraph>\n </OptionLabelContainer>\n </Option>\n );\n};\n\nconst OptionLabelDescription = <OptionType extends LabelDescription>({\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps & OptionProps<OptionType>) => {\n const { description, label, value } = option;\n\n return (\n <Option muiProps={muiProps} key={value}>\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n </Option>\n );\n};\n\nconst OptionLabelDescriptionMetadata = <\n OptionType extends LabelDescriptionMetadata,\n>({\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps & OptionProps<OptionType>) => {\n const { description, label, metaData, value } = option;\n\n return (\n <Option key={value} muiProps={muiProps}>\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n <OptionMetadataComponent\n metaData={metaData}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </Option>\n );\n};\n\nexport type OptionMetadata = {\n icon: ReactElement;\n detailText: string | number;\n};\n\nexport type OptionGroupType = { group?: string };\nexport type OptionValueType = { value: string | number };\nexport type OptionLabelType = { label: string };\nexport type BaseOptionType = OptionValueType &\n OptionGroupType &\n OptionLabelType;\nexport type Metadata = {\n metaData: OptionMetadata[];\n};\n\nexport type OptionLabelOnly = BaseOptionType;\nexport type LabelDescription = BaseOptionType & { description?: string };\nexport type LabelDescriptionMetadata = LabelDescription & Metadata;\n\nexport type PickerProps<\n OptionType extends LabelDescription | LabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = BasePickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>;\n\nexport type PickerComponentType = {\n <\n OptionType extends OptionLabelOnly,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,\n ): ReactElement;\n <\n OptionType extends LabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,\n ): ReactElement;\n <\n OptionType extends LabelDescription,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,\n ): ReactElement;\n <\n OptionType extends LabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,\n ): ReactElement;\n};\n\nconst Picker: PickerComponentType = <\n OptionType extends\n | OptionLabelOnly\n | LabelDescription\n | LabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n ariaDescribedBy,\n defaultValue,\n errorMessage,\n errorMessageList,\n getIsOptionEqualToValue,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isFullWidth = false,\n isLoading,\n isOptional = false,\n isReadOnly,\n isVirtualized: isVirtualizedProp = false,\n hint,\n HintLinkComponent,\n label,\n name: nameOverride,\n onBlur,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n onFocus,\n options,\n value,\n testId,\n translate,\n}: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const customOptionRender = useCallback<\n (props: HTMLAttributes<HTMLLIElement>, option: OptionType) => ReactNode\n >(\n (muiProps, option) => {\n const hasDescription = \"description\" in option && option.description;\n const hasMetadata = \"metaData\" in option && option.metaData;\n const isLabelOnly = !hasMetadata && !hasDescription;\n\n if (isLabelOnly) {\n return (\n <OptionLabelOnlyComponent\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n );\n }\n\n if (hasMetadata) {\n return (\n <OptionLabelDescriptionMetadata\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n );\n }\n\n return (\n <OptionLabelDescription\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n );\n },\n [odysseyDesignTokens],\n );\n\n return (\n <ComposablePicker<OptionType, HasMultipleChoices, IsCustomValueAllowed>\n ariaDescribedBy={ariaDescribedBy}\n defaultValue={defaultValue}\n errorMessage={errorMessage}\n errorMessageList={errorMessageList}\n getIsOptionEqualToValue={getIsOptionEqualToValue}\n // getOptionLabel={// getOptionLabel}\n hasMultipleChoices={hasMultipleChoices}\n id={idOverride}\n inputValue={inputValue}\n isCustomValueAllowed={isCustomValueAllowed}\n isDisabled={isDisabled}\n isFullWidth={isFullWidth}\n isLoading={isLoading}\n isOptional={isOptional}\n isReadOnly={isReadOnly}\n isVirtualized={isVirtualizedProp}\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n label={label}\n name={nameOverride}\n onBlur={onBlur}\n onChange={onChangeProp}\n onInputChange={onInputChangeProp}\n onFocus={onFocus}\n options={options}\n renderOption={customOptionRender}\n value={value}\n testId={testId}\n translate={translate}\n />\n );\n};\n\n// Need the `as BasePickerType` because generics don't get passed through\nconst MemoizedPicker = memo(Picker) as BasePickerType;\n\nMemoizedPicker.displayName = \"Picker\";\n\nexport { MemoizedPicker as Picker };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Picker.cjs","names":["_react","require","_styled","_interopRequireDefault","_ComposablePicker","_OdysseyDesignTokensContext","_Typography","_jsxRuntime","e","__esModule","default","StyledOption","exports","styled","li","hasAdornment","display","OptionLabelContainer","shouldForwardProp","prop","p","margin","OptionDescription","odysseyDesignTokens","Spacing1","color","TypographyColorSubordinate","OptionDetails","gap","Spacing3","marginBlockStart","Spacing2","OptionDetail","alignItems","svg","width","Spacing4","HueNeutral400","Option","children","muiProps","jsx","OptionMetadataComponent","metaData","map","meta","index","detailText","icon","jsxs","OptionDescriptionComponent","description","OptionLabelOnlyComponent","option","label","Paragraph","OptionLabelDescription","Heading6","component","OptionLabelDescriptionMetadata","Picker","ariaDescribedBy","defaultValue","emptyOptionsText","errorMessage","errorMessageList","getIsOptionEqualToValue","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isFullWidth","isLoading","isOptional","isReadOnly","isVirtualized","isVirtualizedProp","hint","HintLinkComponent","name","nameOverride","onBlur","onChange","onChangeProp","onInputChange","onInputChangeProp","onFocus","options","value","testId","translate","useOdysseyDesignTokens","customOptionRender","useCallback","hasDescription","hasMetadata","isLabelOnly","Fragment","ComposablePicker","renderOption","MemoizedPicker","memo","displayName"],"sources":["../../../../src/labs/OdysseyPickers/Picker.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 Fragment,\n HTMLAttributes,\n memo,\n PropsWithChildren,\n ReactElement,\n ReactNode,\n useCallback,\n} from \"react\";\nimport styled from \"@emotion/styled\";\nimport { AutocompleteProps as MuiAutocompleteProps } from \"@mui/material\";\n\nimport {\n ComposablePicker,\n type BasePickerProps,\n type BasePickerType,\n} from \"./ComposablePicker.js\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { Heading6, Paragraph } from \"../../Typography.js\";\n\nexport const StyledOption = styled.li<{ hasAdornment?: boolean }>(\n ({ hasAdornment }) => ({\n ...(!hasAdornment && {\n display: \"block !important\",\n }),\n }),\n);\n\nexport const OptionLabelContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(() => ({\n p: {\n margin: 0,\n },\n}));\n\nexport const OptionDescription = styled(\"p\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n margin: `${odysseyDesignTokens.Spacing1} 0 0 !important`,\n color: odysseyDesignTokens.TypographyColorSubordinate,\n}));\n\nexport const OptionDetails = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n gap: odysseyDesignTokens.Spacing3,\n marginBlockStart: odysseyDesignTokens.Spacing2,\n}));\n\nexport const OptionDetail = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n alignItems: \"center\",\n gap: odysseyDesignTokens.Spacing1,\n\n svg: {\n width: odysseyDesignTokens.Spacing4,\n color: odysseyDesignTokens.HueNeutral400,\n },\n}));\n\nexport type BaseOptionProps = {\n muiProps: HTMLAttributes<HTMLLIElement>;\n odysseyDesignTokens: DesignTokens;\n};\n\ntype OptionComponentProps = {\n hasAdornment?: boolean;\n muiProps: BaseOptionProps[\"muiProps\"];\n};\n\nexport const Option = ({\n children,\n hasAdornment = false,\n muiProps,\n}: PropsWithChildren<OptionComponentProps>) => (\n <StyledOption {...muiProps} hasAdornment={hasAdornment}>\n {children}\n </StyledOption>\n);\n\nexport const OptionMetadataComponent = ({\n metaData,\n odysseyDesignTokens,\n}: {\n metaData: OptionMetadata[];\n odysseyDesignTokens: DesignTokens;\n}) => {\n return (\n <OptionDetails odysseyDesignTokens={odysseyDesignTokens}>\n {metaData.map((meta: OptionMetadata, index: number) => {\n const { detailText, icon } = meta;\n return (\n <OptionDetail\n key={`${detailText}-${index}`}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {icon}\n {detailText}\n </OptionDetail>\n );\n })}\n </OptionDetails>\n );\n};\n\nexport const OptionDescriptionComponent = ({\n description,\n odysseyDesignTokens,\n}: {\n description?: LabelDescription[\"description\"];\n odysseyDesignTokens: DesignTokens;\n}) => {\n return (\n description && (\n <OptionDescription odysseyDesignTokens={odysseyDesignTokens}>\n {description}\n </OptionDescription>\n )\n );\n};\n\nexport type OptionProps<OptionType> = {\n option: OptionType;\n};\n\nexport const OptionLabelOnlyComponent = <OptionType extends OptionLabelOnly>({\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps & OptionProps<OptionType>) => {\n const { label } = option;\n\n return (\n <Option muiProps={muiProps}>\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Paragraph>{label}</Paragraph>\n </OptionLabelContainer>\n </Option>\n );\n};\n\nconst OptionLabelDescription = <OptionType extends LabelDescription>({\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps & OptionProps<OptionType>) => {\n const { description, label } = option;\n\n return (\n <Option muiProps={muiProps}>\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n </Option>\n );\n};\n\nconst OptionLabelDescriptionMetadata = <\n OptionType extends LabelDescriptionMetadata,\n>({\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps & OptionProps<OptionType>) => {\n const { description, label, metaData } = option;\n\n return (\n <Option muiProps={muiProps}>\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n <OptionMetadataComponent\n metaData={metaData}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </Option>\n );\n};\n\nexport type OptionMetadata = {\n icon: ReactElement;\n detailText: string | number;\n};\n\nexport type OptionGroupType = { group?: string };\nexport type OptionValueType = { value: string | number };\nexport type OptionLabelType = { label: string };\nexport type BaseOptionType = OptionValueType &\n OptionGroupType &\n OptionLabelType;\nexport type Metadata = {\n metaData: OptionMetadata[];\n};\n\nexport type OptionLabelOnly = BaseOptionType;\nexport type LabelDescription = BaseOptionType & { description?: string };\nexport type LabelDescriptionMetadata = LabelDescription & Metadata;\n\nexport type PickerProps<\n OptionType extends LabelDescription | LabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = BasePickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>;\n\nexport type PickerComponentType = {\n <\n OptionType extends OptionLabelOnly,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,\n ): ReactNode;\n <\n OptionType extends LabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,\n ): ReactNode;\n <\n OptionType extends LabelDescription,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,\n ): ReactNode;\n <\n OptionType extends LabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,\n ): ReactNode;\n};\n\nconst Picker: PickerComponentType = <\n OptionType extends\n | OptionLabelOnly\n | LabelDescription\n | LabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n ariaDescribedBy,\n defaultValue,\n emptyOptionsText,\n errorMessage,\n errorMessageList,\n getIsOptionEqualToValue,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isFullWidth = false,\n isLoading,\n isOptional = false,\n isReadOnly,\n isVirtualized: isVirtualizedProp = false,\n hint,\n HintLinkComponent,\n label,\n name: nameOverride,\n onBlur,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n onFocus,\n options,\n value,\n testId,\n translate,\n}: PickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const customOptionRender = useCallback<\n NonNullable<\n MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"renderOption\"]\n >\n >(\n (muiProps, option) => {\n const hasDescription = \"description\" in option && option.description;\n const hasMetadata = \"metaData\" in option && option.metaData;\n const isLabelOnly = !hasMetadata && !hasDescription;\n\n return (\n <Fragment key={option.label}>\n {isLabelOnly ? (\n <OptionLabelOnlyComponent\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n ) : hasMetadata ? (\n <OptionLabelDescriptionMetadata\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n ) : (\n <OptionLabelDescription\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n )}\n </Fragment>\n );\n },\n [odysseyDesignTokens],\n );\n\n return (\n <ComposablePicker<OptionType, HasMultipleChoices, IsCustomValueAllowed>\n ariaDescribedBy={ariaDescribedBy}\n defaultValue={defaultValue}\n emptyOptionsText={emptyOptionsText}\n errorMessage={errorMessage}\n errorMessageList={errorMessageList}\n getIsOptionEqualToValue={getIsOptionEqualToValue}\n // getOptionLabel={// getOptionLabel}\n hasMultipleChoices={hasMultipleChoices}\n id={idOverride}\n inputValue={inputValue}\n isCustomValueAllowed={isCustomValueAllowed}\n isDisabled={isDisabled}\n isFullWidth={isFullWidth}\n isLoading={isLoading}\n isOptional={isOptional}\n isReadOnly={isReadOnly}\n isVirtualized={isVirtualizedProp}\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n label={label}\n name={nameOverride}\n onBlur={onBlur}\n onChange={onChangeProp}\n onInputChange={onInputChangeProp}\n onFocus={onFocus}\n options={options}\n renderOption={customOptionRender}\n value={value}\n testId={testId}\n translate={translate}\n />\n );\n};\n\n// Need the `as BasePickerType` because generics don't get passed through\nconst MemoizedPicker = memo(Picker) as BasePickerType;\n\nMemoizedPicker.displayName = \"Picker\";\n\nexport { MemoizedPicker as Picker };\n"],"mappings":"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","ignoreList":[]}
@@ -188,6 +188,7 @@ const PickerWithOptionAdornment = ({
188
188
  adornmentSize = "small",
189
189
  ariaDescribedBy,
190
190
  defaultValue,
191
+ emptyOptionsText,
191
192
  errorMessage,
192
193
  errorMessageList,
193
194
  getIsOptionEqualToValue,
@@ -243,24 +244,24 @@ const PickerWithOptionAdornment = ({
243
244
  }), [odysseyDesignTokens]);
244
245
  const customOptionRender = (0, _react.useCallback)((muiProps, option) => {
245
246
  const hasMetadata = "metaData" in option && option.metaData;
246
- if (hasMetadata) {
247
- return (0, _jsxRuntime.jsx)(OptionWithLabelDescriptionMetadata, {
247
+ return (0, _jsxRuntime.jsx)(_react.Fragment, {
248
+ children: hasMetadata ? (0, _jsxRuntime.jsx)(OptionWithLabelDescriptionMetadata, {
248
249
  adornmentSize: adornmentSize,
249
250
  muiProps: muiProps,
250
251
  odysseyDesignTokens: odysseyDesignTokens,
251
252
  option: option
252
- });
253
- }
254
- return (0, _jsxRuntime.jsx)(OptionWithLabelDescriptionOnly, {
255
- adornmentSize: adornmentSize,
256
- muiProps: muiProps,
257
- odysseyDesignTokens: odysseyDesignTokens,
258
- option: option
259
- });
253
+ }) : (0, _jsxRuntime.jsx)(OptionWithLabelDescriptionOnly, {
254
+ adornmentSize: adornmentSize,
255
+ muiProps: muiProps,
256
+ odysseyDesignTokens: odysseyDesignTokens,
257
+ option: option
258
+ })
259
+ }, option.label);
260
260
  }, [adornmentSize, odysseyDesignTokens]);
261
261
  return (0, _jsxRuntime.jsx)(_ComposablePicker.ComposablePicker, {
262
262
  ariaDescribedBy: ariaDescribedBy,
263
263
  defaultValue: defaultValue,
264
+ emptyOptionsText: emptyOptionsText,
264
265
  errorMessage: errorMessage,
265
266
  errorMessageList: errorMessageList,
266
267
  getIsOptionEqualToValue: getIsOptionEqualToValue,
@@ -1 +1 @@
1
- {"version":3,"file":"PickerWithOptionAdornment.cjs","names":["_react","require","_styled","_interopRequireDefault","_Box","_ComposablePicker","_OdysseyDesignTokensContext","_Picker","_Typography","_Tag","_jsxRuntime","e","__esModule","default","OptionAdornmentContainer","styled","shouldForwardProp","prop","adornmentSize","isTagContainer","odysseyDesignTokens","position","bottom","alignSelf","width","Spacing5","height","overflow","marginInlineEnd","Spacing3","svg","img","top","left","transform","Spacing8","Spacing4","maxHeight","Spacing2","display","OptionAdornment","adornment","isImageAdornment","jsx","children","src","alt","role","OptionWithLabelDescriptionOnly","muiProps","option","description","label","value","jsxs","Option","hasAdornment","OptionLabelContainer","Heading6","component","OptionDescriptionComponent","OptionWithLabelDescriptionMetadata","metaData","OptionMetadataComponent","TagAdornment","useOdysseyDesignTokens","PickerWithOptionAdornment","ariaDescribedBy","defaultValue","errorMessage","errorMessageList","getIsOptionEqualToValue","groupOptionsBy","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isFullWidth","isLoading","isOptional","isReadOnly","isVirtualized","isVirtualizedProp","hint","HintLinkComponent","name","nameOverride","onBlur","onChange","onChangeProp","onInputChange","onInputChangeProp","onFocus","options","testId","translate","customTagRender","useCallback","values","getTagProps","map","index","key","onDelete","Box","sx","margin","Spacing1","Tag","icon","onRemove","customOptionRender","hasMetadata","ComposablePicker","renderOption","renderTags","MemoizedPickerWithOptionAdornment","exports","memo","displayName"],"sources":["../../../../src/labs/OdysseyPickers/PickerWithOptionAdornment.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 HTMLAttributes,\n memo,\n ReactElement,\n ReactNode,\n useCallback,\n} from \"react\";\nimport styled from \"@emotion/styled\";\n\nimport { Box } from \"../../Box.js\";\nimport {\n ComposablePicker,\n ComposablePickerProps,\n type AdornmentSize,\n type BasePickerProps,\n type BasePickerType,\n} from \"./ComposablePicker.js\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport {\n type BaseOptionProps,\n type LabelDescription,\n type Metadata,\n Option,\n OptionDescriptionComponent,\n OptionLabelContainer,\n OptionMetadataComponent,\n OptionProps,\n} from \"./Picker.js\";\nimport { Heading6 } from \"../../Typography.js\";\nimport { Tag } from \"../../Tag.js\";\n\ntype Adornment = ReactNode | string;\n\ntype AdornmentLabelDescription = LabelDescription & {\n adornment: Adornment;\n};\n\ntype AdornmentLabelDescriptionMetadata = AdornmentLabelDescription & Metadata;\n\nexport type AdornmentOptionType =\n | AdornmentLabelDescription\n | AdornmentLabelDescriptionMetadata;\n\nconst OptionAdornmentContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"adornmentSize\" &&\n prop !== \"isTagContainer\",\n})<{\n adornmentSize?: AdornmentSize;\n isTagContainer?: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n adornmentSize = \"small\",\n isTagContainer = false,\n odysseyDesignTokens,\n }) => ({\n position: \"relative\",\n // push icon up by one px for better visual alignment\n bottom: \"1px\",\n alignSelf: \"flex-start\",\n width: odysseyDesignTokens.Spacing5,\n height: odysseyDesignTokens.Spacing5,\n overflow: \"hidden\",\n marginInlineEnd: odysseyDesignTokens.Spacing3,\n\n svg: {\n width: \"100%\",\n height: \"auto\",\n },\n\n img: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n width: \"100%\",\n transform: \"translate(-50%, -50%)\",\n },\n\n ...(adornmentSize === \"large\" &&\n !isTagContainer && {\n bottom: 0,\n width: odysseyDesignTokens.Spacing8,\n height: odysseyDesignTokens.Spacing8,\n }),\n\n ...(isTagContainer && {\n bottom: 0,\n alignSelf: \"center\",\n width: odysseyDesignTokens.Spacing4,\n height: \"auto\",\n maxHeight: odysseyDesignTokens.Spacing4,\n marginInlineEnd: odysseyDesignTokens.Spacing2,\n\n svg: {\n display: \"flex\",\n width: \"100%\",\n height: \"auto\",\n },\n }),\n }),\n);\n\ntype OptionAdornmentProps = {\n adornment: Adornment;\n adornmentSize: AdornmentSize;\n odysseyDesignTokens: DesignTokens;\n};\n\nconst OptionAdornment = ({\n adornment,\n adornmentSize,\n odysseyDesignTokens,\n}: OptionAdornmentProps) => {\n const isImageAdornment = typeof adornment === \"string\";\n\n if (isImageAdornment) {\n return (\n <OptionAdornmentContainer\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {/* NOTE: Intentionally leaving alt as an empty string here so screen readers will ignore this image */}\n {/* Image should be sufficiently described by the adjacent title and/or description of the option */}\n <img src={adornment} alt=\"\" role=\"presentation\" />\n </OptionAdornmentContainer>\n );\n } else {\n return (\n <OptionAdornmentContainer\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {adornment}\n </OptionAdornmentContainer>\n );\n }\n};\n\nconst OptionWithLabelDescriptionOnly = <\n OptionType extends AdornmentLabelDescription,\n>({\n adornmentSize,\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps &\n OptionProps<OptionType> & { adornmentSize: AdornmentSize }) => {\n const { adornment, description, label, value } = option;\n return (\n <Option hasAdornment key={value} muiProps={muiProps}>\n <OptionAdornment\n adornment={adornment}\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n </Option>\n );\n};\n\nconst OptionWithLabelDescriptionMetadata = <\n OptionType extends AdornmentLabelDescriptionMetadata,\n>({\n adornmentSize,\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps &\n OptionProps<OptionType> & {\n adornmentSize: AdornmentSize;\n }) => {\n const { adornment, description, label, metaData, value } = option;\n\n return (\n <Option hasAdornment key={value} muiProps={muiProps}>\n <OptionAdornment\n adornment={adornment}\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n <div>\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n <OptionMetadataComponent\n metaData={metaData}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </div>\n </Option>\n );\n};\n\ntype TagAdornmentProps = {\n adornment: Adornment;\n};\n\nconst TagAdornment = ({ adornment }: TagAdornmentProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const isImageAdornment = typeof adornment === \"string\";\n\n if (isImageAdornment) {\n return (\n <OptionAdornmentContainer\n isTagContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <img src={adornment} alt=\"\" role=\"presentation\" />\n </OptionAdornmentContainer>\n );\n }\n\n return (\n <OptionAdornmentContainer\n isTagContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {adornment}\n </OptionAdornmentContainer>\n );\n};\n\nexport type PickerWithOptionAdornmentProps<\n OptionType extends AdornmentOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = BasePickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed> & {\n adornmentSize?: AdornmentSize;\n};\n\ntype PickerWithOptionAdornmentComponentType = {\n <\n OptionType extends AdornmentLabelDescription,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactElement;\n <\n OptionType extends AdornmentLabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactElement;\n};\n\nconst PickerWithOptionAdornment: PickerWithOptionAdornmentComponentType = <\n OptionType extends AdornmentOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n adornmentSize = \"small\",\n ariaDescribedBy,\n defaultValue,\n errorMessage,\n errorMessageList,\n getIsOptionEqualToValue,\n groupOptionsBy,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isFullWidth = false,\n isLoading,\n isOptional = false,\n isReadOnly,\n isVirtualized: isVirtualizedProp = false,\n hint,\n HintLinkComponent,\n label,\n name: nameOverride,\n onBlur,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n onFocus,\n options,\n value,\n testId,\n translate,\n}: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n>) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const customTagRender = useCallback<\n NonNullable<\n ComposablePickerProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >[\"renderTags\"]\n >\n >(\n (values, getTagProps) =>\n values.map((value, index) => {\n const { key, onDelete } = getTagProps({ index });\n const { adornment, label } = value;\n\n return (\n <Box\n key={key}\n sx={{\n margin: odysseyDesignTokens.Spacing1,\n marginInlineEnd: 0,\n }}\n >\n <Tag\n icon={<TagAdornment adornment={adornment} />}\n label={label}\n onRemove={onDelete}\n />\n </Box>\n );\n }),\n [odysseyDesignTokens],\n );\n\n const customOptionRender = useCallback<\n (props: HTMLAttributes<HTMLLIElement>, option: OptionType) => ReactNode\n >(\n (muiProps, option) => {\n const hasMetadata = \"metaData\" in option && option.metaData;\n\n if (hasMetadata) {\n return (\n <OptionWithLabelDescriptionMetadata\n adornmentSize={adornmentSize}\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n );\n }\n\n return (\n <OptionWithLabelDescriptionOnly\n adornmentSize={adornmentSize}\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n );\n },\n [adornmentSize, odysseyDesignTokens],\n );\n\n return (\n <ComposablePicker<OptionType, HasMultipleChoices, IsCustomValueAllowed>\n ariaDescribedBy={ariaDescribedBy}\n defaultValue={defaultValue}\n errorMessage={errorMessage}\n errorMessageList={errorMessageList}\n getIsOptionEqualToValue={getIsOptionEqualToValue}\n groupOptionsBy={groupOptionsBy}\n hasMultipleChoices={hasMultipleChoices}\n id={idOverride}\n inputValue={inputValue}\n isCustomValueAllowed={isCustomValueAllowed}\n isDisabled={isDisabled}\n isFullWidth={isFullWidth}\n isLoading={isLoading}\n isOptional={isOptional}\n isReadOnly={isReadOnly}\n isVirtualized={isVirtualizedProp}\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n label={label}\n name={nameOverride}\n onBlur={onBlur}\n onChange={onChangeProp}\n onInputChange={onInputChangeProp}\n onFocus={onFocus}\n options={options}\n renderOption={customOptionRender}\n renderTags={customTagRender}\n value={value}\n testId={testId}\n translate={translate}\n />\n );\n};\n\n// Need the `as BasePickerType` because generics don't get passed through\nconst MemoizedPickerWithOptionAdornment = memo(\n PickerWithOptionAdornment,\n) as BasePickerType;\n\nMemoizedPickerWithOptionAdornment.displayName = \"PickerWithOptionAdornment\";\n\nexport { MemoizedPickerWithOptionAdornment as PickerWithOptionAdornment };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PickerWithOptionAdornment.cjs","names":["_react","require","_styled","_interopRequireDefault","_Box","_ComposablePicker","_OdysseyDesignTokensContext","_Picker","_Typography","_Tag","_jsxRuntime","e","__esModule","default","OptionAdornmentContainer","styled","shouldForwardProp","prop","adornmentSize","isTagContainer","odysseyDesignTokens","position","bottom","alignSelf","width","Spacing5","height","overflow","marginInlineEnd","Spacing3","svg","img","top","left","transform","Spacing8","Spacing4","maxHeight","Spacing2","display","OptionAdornment","adornment","isImageAdornment","jsx","children","src","alt","role","OptionWithLabelDescriptionOnly","muiProps","option","description","label","value","jsxs","Option","hasAdornment","OptionLabelContainer","Heading6","component","OptionDescriptionComponent","OptionWithLabelDescriptionMetadata","metaData","OptionMetadataComponent","TagAdornment","useOdysseyDesignTokens","PickerWithOptionAdornment","ariaDescribedBy","defaultValue","emptyOptionsText","errorMessage","errorMessageList","getIsOptionEqualToValue","groupOptionsBy","hasMultipleChoices","id","idOverride","inputValue","isCustomValueAllowed","isDisabled","isFullWidth","isLoading","isOptional","isReadOnly","isVirtualized","isVirtualizedProp","hint","HintLinkComponent","name","nameOverride","onBlur","onChange","onChangeProp","onInputChange","onInputChangeProp","onFocus","options","testId","translate","customTagRender","useCallback","values","getTagProps","map","index","key","onDelete","Box","sx","margin","Spacing1","Tag","icon","onRemove","customOptionRender","hasMetadata","Fragment","ComposablePicker","renderOption","renderTags","MemoizedPickerWithOptionAdornment","exports","memo","displayName"],"sources":["../../../../src/labs/OdysseyPickers/PickerWithOptionAdornment.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 { Fragment, memo, ReactNode, useCallback } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { AutocompleteProps as MuiAutocompleteProps } from \"@mui/material\";\n\nimport { Box } from \"../../Box.js\";\nimport {\n ComposablePicker,\n ComposablePickerProps,\n type AdornmentSize,\n type BasePickerProps,\n type BasePickerType,\n} from \"./ComposablePicker.js\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport {\n type BaseOptionProps,\n type LabelDescription,\n type Metadata,\n Option,\n OptionDescriptionComponent,\n OptionLabelContainer,\n OptionMetadataComponent,\n OptionProps,\n} from \"./Picker.js\";\nimport { Heading6 } from \"../../Typography.js\";\nimport { Tag } from \"../../Tag.js\";\n\ntype Adornment = ReactNode | string;\n\ntype AdornmentLabelDescription = LabelDescription & {\n adornment: Adornment;\n};\n\ntype AdornmentLabelDescriptionMetadata = AdornmentLabelDescription & Metadata;\n\nexport type AdornmentOptionType =\n | AdornmentLabelDescription\n | AdornmentLabelDescriptionMetadata;\n\nconst OptionAdornmentContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"adornmentSize\" &&\n prop !== \"isTagContainer\",\n})<{\n adornmentSize?: AdornmentSize;\n isTagContainer?: boolean;\n odysseyDesignTokens: DesignTokens;\n}>(\n ({\n adornmentSize = \"small\",\n isTagContainer = false,\n odysseyDesignTokens,\n }) => ({\n position: \"relative\",\n // push icon up by one px for better visual alignment\n bottom: \"1px\",\n alignSelf: \"flex-start\",\n width: odysseyDesignTokens.Spacing5,\n height: odysseyDesignTokens.Spacing5,\n overflow: \"hidden\",\n marginInlineEnd: odysseyDesignTokens.Spacing3,\n\n svg: {\n width: \"100%\",\n height: \"auto\",\n },\n\n img: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n width: \"100%\",\n transform: \"translate(-50%, -50%)\",\n },\n\n ...(adornmentSize === \"large\" &&\n !isTagContainer && {\n bottom: 0,\n width: odysseyDesignTokens.Spacing8,\n height: odysseyDesignTokens.Spacing8,\n }),\n\n ...(isTagContainer && {\n bottom: 0,\n alignSelf: \"center\",\n width: odysseyDesignTokens.Spacing4,\n height: \"auto\",\n maxHeight: odysseyDesignTokens.Spacing4,\n marginInlineEnd: odysseyDesignTokens.Spacing2,\n\n svg: {\n display: \"flex\",\n width: \"100%\",\n height: \"auto\",\n },\n }),\n }),\n);\n\ntype OptionAdornmentProps = {\n adornment: Adornment;\n adornmentSize: AdornmentSize;\n odysseyDesignTokens: DesignTokens;\n};\n\nconst OptionAdornment = ({\n adornment,\n adornmentSize,\n odysseyDesignTokens,\n}: OptionAdornmentProps) => {\n const isImageAdornment = typeof adornment === \"string\";\n\n if (isImageAdornment) {\n return (\n <OptionAdornmentContainer\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {/* NOTE: Intentionally leaving alt as an empty string here so screen readers will ignore this image */}\n {/* Image should be sufficiently described by the adjacent title and/or description of the option */}\n <img src={adornment} alt=\"\" role=\"presentation\" />\n </OptionAdornmentContainer>\n );\n } else {\n return (\n <OptionAdornmentContainer\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {adornment}\n </OptionAdornmentContainer>\n );\n }\n};\n\nconst OptionWithLabelDescriptionOnly = <\n OptionType extends AdornmentLabelDescription,\n>({\n adornmentSize,\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps &\n OptionProps<OptionType> & { adornmentSize: AdornmentSize }) => {\n const { adornment, description, label, value } = option;\n return (\n <Option hasAdornment key={value} muiProps={muiProps}>\n <OptionAdornment\n adornment={adornment}\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n </Option>\n );\n};\n\nconst OptionWithLabelDescriptionMetadata = <\n OptionType extends AdornmentLabelDescriptionMetadata,\n>({\n adornmentSize,\n muiProps,\n odysseyDesignTokens,\n option,\n}: BaseOptionProps &\n OptionProps<OptionType> & {\n adornmentSize: AdornmentSize;\n }) => {\n const { adornment, description, label, metaData, value } = option;\n\n return (\n <Option hasAdornment key={value} muiProps={muiProps}>\n <OptionAdornment\n adornment={adornment}\n adornmentSize={adornmentSize}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n <div>\n <OptionLabelContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Heading6 component=\"p\">{label}</Heading6>\n <OptionDescriptionComponent\n description={description}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </OptionLabelContainer>\n <OptionMetadataComponent\n metaData={metaData}\n odysseyDesignTokens={odysseyDesignTokens}\n />\n </div>\n </Option>\n );\n};\n\ntype TagAdornmentProps = {\n adornment: Adornment;\n};\n\nconst TagAdornment = ({ adornment }: TagAdornmentProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const isImageAdornment = typeof adornment === \"string\";\n\n if (isImageAdornment) {\n return (\n <OptionAdornmentContainer\n isTagContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <img src={adornment} alt=\"\" role=\"presentation\" />\n </OptionAdornmentContainer>\n );\n }\n\n return (\n <OptionAdornmentContainer\n isTagContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {adornment}\n </OptionAdornmentContainer>\n );\n};\n\nexport type PickerWithOptionAdornmentProps<\n OptionType extends AdornmentOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n> = BasePickerProps<OptionType, HasMultipleChoices, IsCustomValueAllowed> & {\n adornmentSize?: AdornmentSize;\n};\n\ntype PickerWithOptionAdornmentComponentType = {\n <\n OptionType extends AdornmentLabelDescription,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactNode;\n <\n OptionType extends AdornmentLabelDescriptionMetadata,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n >(\n props: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >,\n ): ReactNode;\n};\n\nconst PickerWithOptionAdornment: PickerWithOptionAdornmentComponentType = <\n OptionType extends AdornmentOptionType,\n HasMultipleChoices extends boolean | undefined,\n IsCustomValueAllowed extends boolean | undefined,\n>({\n adornmentSize = \"small\",\n ariaDescribedBy,\n defaultValue,\n emptyOptionsText,\n errorMessage,\n errorMessageList,\n getIsOptionEqualToValue,\n groupOptionsBy,\n hasMultipleChoices,\n id: idOverride,\n inputValue,\n isCustomValueAllowed,\n isDisabled,\n isFullWidth = false,\n isLoading,\n isOptional = false,\n isReadOnly,\n isVirtualized: isVirtualizedProp = false,\n hint,\n HintLinkComponent,\n label,\n name: nameOverride,\n onBlur,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n onFocus,\n options,\n value,\n testId,\n translate,\n}: PickerWithOptionAdornmentProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n>) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const customTagRender = useCallback<\n NonNullable<\n ComposablePickerProps<\n OptionType,\n HasMultipleChoices,\n IsCustomValueAllowed\n >[\"renderTags\"]\n >\n >(\n (values, getTagProps) =>\n values.map((value, index) => {\n const { key, onDelete } = getTagProps({ index });\n const { adornment, label } = value;\n\n return (\n <Box\n key={key}\n sx={{\n margin: odysseyDesignTokens.Spacing1,\n marginInlineEnd: 0,\n }}\n >\n <Tag\n icon={<TagAdornment adornment={adornment} />}\n label={label}\n onRemove={onDelete}\n />\n </Box>\n );\n }),\n [odysseyDesignTokens],\n );\n\n const customOptionRender = useCallback<\n NonNullable<\n MuiAutocompleteProps<\n OptionType,\n HasMultipleChoices,\n undefined,\n IsCustomValueAllowed\n >[\"renderOption\"]\n >\n >(\n (muiProps, option) => {\n const hasMetadata = \"metaData\" in option && option.metaData;\n\n return (\n <Fragment key={option.label}>\n {hasMetadata ? (\n <OptionWithLabelDescriptionMetadata\n adornmentSize={adornmentSize}\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n ) : (\n <OptionWithLabelDescriptionOnly\n adornmentSize={adornmentSize}\n muiProps={muiProps}\n odysseyDesignTokens={odysseyDesignTokens}\n option={option}\n />\n )}\n </Fragment>\n );\n },\n [adornmentSize, odysseyDesignTokens],\n );\n\n return (\n <ComposablePicker<OptionType, HasMultipleChoices, IsCustomValueAllowed>\n ariaDescribedBy={ariaDescribedBy}\n defaultValue={defaultValue}\n emptyOptionsText={emptyOptionsText}\n errorMessage={errorMessage}\n errorMessageList={errorMessageList}\n getIsOptionEqualToValue={getIsOptionEqualToValue}\n groupOptionsBy={groupOptionsBy}\n hasMultipleChoices={hasMultipleChoices}\n id={idOverride}\n inputValue={inputValue}\n isCustomValueAllowed={isCustomValueAllowed}\n isDisabled={isDisabled}\n isFullWidth={isFullWidth}\n isLoading={isLoading}\n isOptional={isOptional}\n isReadOnly={isReadOnly}\n isVirtualized={isVirtualizedProp}\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n label={label}\n name={nameOverride}\n onBlur={onBlur}\n onChange={onChangeProp}\n onInputChange={onInputChangeProp}\n onFocus={onFocus}\n options={options}\n renderOption={customOptionRender}\n renderTags={customTagRender}\n value={value}\n testId={testId}\n translate={translate}\n />\n );\n};\n\n// Need the `as BasePickerType` because generics don't get passed through\nconst MemoizedPickerWithOptionAdornment = memo(\n PickerWithOptionAdornment,\n) as BasePickerType;\n\nMemoizedPickerWithOptionAdornment.displayName = \"PickerWithOptionAdornment\";\n\nexport { MemoizedPickerWithOptionAdornment as PickerWithOptionAdornment };\n"],"mappings":";;;;;;AAYA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AAGA,IAAAG,IAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AAOA,IAAAK,2BAAA,GAAAL,OAAA;AAIA,IAAAM,OAAA,GAAAN,OAAA;AAUA,IAAAO,WAAA,GAAAP,OAAA;AACA,IAAAQ,IAAA,GAAAR,OAAA;AAAmC,IAAAS,WAAA,GAAAT,OAAA;AAAA,SAAAE,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAvCnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA2CA,MAAMG,wBAAwB,GAAG,IAAAC,eAAM,EAAC,KAAK,EAAE;EAC7CC,iBAAiB,EAAGC,IAAI,IACtBA,IAAI,KAAK,qBAAqB,IAC9BA,IAAI,KAAK,eAAe,IACxBA,IAAI,KAAK;AACb,CAAC,CAAC,CAKA,CAAC;EACCC,aAAa,GAAG,OAAO;EACvBC,cAAc,GAAG,KAAK;EACtBC;AACF,CAAC,MAAM;EACLC,QAAQ,EAAE,UAAU;EAEpBC,MAAM,EAAE,KAAK;EACbC,SAAS,EAAE,YAAY;EACvBC,KAAK,EAAEJ,mBAAmB,CAACK,QAAQ;EACnCC,MAAM,EAAEN,mBAAmB,CAACK,QAAQ;EACpCE,QAAQ,EAAE,QAAQ;EAClBC,eAAe,EAAER,mBAAmB,CAACS,QAAQ;EAE7CC,GAAG,EAAE;IACHN,KAAK,EAAE,MAAM;IACbE,MAAM,EAAE;EACV,CAAC;EAEDK,GAAG,EAAE;IACHV,QAAQ,EAAE,UAAU;IACpBW,GAAG,EAAE,KAAK;IACVC,IAAI,EAAE,KAAK;IACXT,KAAK,EAAE,MAAM;IACbU,SAAS,EAAE;EACb,CAAC;EAED,IAAIhB,aAAa,KAAK,OAAO,IAC3B,CAACC,cAAc,IAAI;IACjBG,MAAM,EAAE,CAAC;IACTE,KAAK,EAAEJ,mBAAmB,CAACe,QAAQ;IACnCT,MAAM,EAAEN,mBAAmB,CAACe;EAC9B,CAAC,CAAC;EAEJ,IAAIhB,cAAc,IAAI;IACpBG,MAAM,EAAE,CAAC;IACTC,SAAS,EAAE,QAAQ;IACnBC,KAAK,EAAEJ,mBAAmB,CAACgB,QAAQ;IACnCV,MAAM,EAAE,MAAM;IACdW,SAAS,EAAEjB,mBAAmB,CAACgB,QAAQ;IACvCR,eAAe,EAAER,mBAAmB,CAACkB,QAAQ;IAE7CR,GAAG,EAAE;MACHS,OAAO,EAAE,MAAM;MACff,KAAK,EAAE,MAAM;MACbE,MAAM,EAAE;IACV;EACF,CAAC;AACH,CAAC,CACH,CAAC;AAQD,MAAMc,eAAe,GAAGA,CAAC;EACvBC,SAAS;EACTvB,aAAa;EACbE;AACoB,CAAC,KAAK;EAC1B,MAAMsB,gBAAgB,GAAG,OAAOD,SAAS,KAAK,QAAQ;EAEtD,IAAIC,gBAAgB,EAAE;IACpB,OACE,IAAAhC,WAAA,CAAAiC,GAAA,EAAC7B,wBAAwB;MACvBI,aAAa,EAAEA,aAAc;MAC7BE,mBAAmB,EAAEA,mBAAoB;MAAAwB,QAAA,EAIzC,IAAAlC,WAAA,CAAAiC,GAAA;QAAKE,GAAG,EAAEJ,SAAU;QAACK,GAAG,EAAC,EAAE;QAACC,IAAI,EAAC;MAAc,CAAE;IAAC,CAC1B,CAAC;EAE/B,CAAC,MAAM;IACL,OACE,IAAArC,WAAA,CAAAiC,GAAA,EAAC7B,wBAAwB;MACvBI,aAAa,EAAEA,aAAc;MAC7BE,mBAAmB,EAAEA,mBAAoB;MAAAwB,QAAA,EAExCH;IAAS,CACc,CAAC;EAE/B;AACF,CAAC;AAED,MAAMO,8BAA8B,GAAGA,CAErC;EACA9B,aAAa;EACb+B,QAAQ;EACR7B,mBAAmB;EACnB8B;AAEyD,CAAC,KAAK;EAC/D,MAAM;IAAET,SAAS;IAAEU,WAAW;IAAEC,KAAK;IAAEC;EAAM,CAAC,GAAGH,MAAM;EACvD,OACE,IAAAxC,WAAA,CAAA4C,IAAA,EAAC/C,OAAA,CAAAgD,MAAM;IAACC,YAAY;IAAaP,QAAQ,EAAEA,QAAS;IAAAL,QAAA,GAClD,IAAAlC,WAAA,CAAAiC,GAAA,EAACH,eAAe;MACdC,SAAS,EAAEA,SAAU;MACrBvB,aAAa,EAAEA,aAAc;MAC7BE,mBAAmB,EAAEA;IAAoB,CAC1C,CAAC,EACF,IAAAV,WAAA,CAAA4C,IAAA,EAAC/C,OAAA,CAAAkD,oBAAoB;MAACrC,mBAAmB,EAAEA,mBAAoB;MAAAwB,QAAA,GAC7D,IAAAlC,WAAA,CAAAiC,GAAA,EAACnC,WAAA,CAAAkD,QAAQ;QAACC,SAAS,EAAC,GAAG;QAAAf,QAAA,EAAEQ;MAAK,CAAW,CAAC,EAC1C,IAAA1C,WAAA,CAAAiC,GAAA,EAACpC,OAAA,CAAAqD,0BAA0B;QACzBT,WAAW,EAAEA,WAAY;QACzB/B,mBAAmB,EAAEA;MAAoB,CAC1C,CAAC;IAAA,CACkB,CAAC;EAAA,GAZCiC,KAalB,CAAC;AAEb,CAAC;AAED,MAAMQ,kCAAkC,GAAGA,CAEzC;EACA3C,aAAa;EACb+B,QAAQ;EACR7B,mBAAmB;EACnB8B;AAIA,CAAC,KAAK;EACN,MAAM;IAAET,SAAS;IAAEU,WAAW;IAAEC,KAAK;IAAEU,QAAQ;IAAET;EAAM,CAAC,GAAGH,MAAM;EAEjE,OACE,IAAAxC,WAAA,CAAA4C,IAAA,EAAC/C,OAAA,CAAAgD,MAAM;IAACC,YAAY;IAAaP,QAAQ,EAAEA,QAAS;IAAAL,QAAA,GAClD,IAAAlC,WAAA,CAAAiC,GAAA,EAACH,eAAe;MACdC,SAAS,EAAEA,SAAU;MACrBvB,aAAa,EAAEA,aAAc;MAC7BE,mBAAmB,EAAEA;IAAoB,CAC1C,CAAC,EACF,IAAAV,WAAA,CAAA4C,IAAA;MAAAV,QAAA,GACE,IAAAlC,WAAA,CAAA4C,IAAA,EAAC/C,OAAA,CAAAkD,oBAAoB;QAACrC,mBAAmB,EAAEA,mBAAoB;QAAAwB,QAAA,GAC7D,IAAAlC,WAAA,CAAAiC,GAAA,EAACnC,WAAA,CAAAkD,QAAQ;UAACC,SAAS,EAAC,GAAG;UAAAf,QAAA,EAAEQ;QAAK,CAAW,CAAC,EAC1C,IAAA1C,WAAA,CAAAiC,GAAA,EAACpC,OAAA,CAAAqD,0BAA0B;UACzBT,WAAW,EAAEA,WAAY;UACzB/B,mBAAmB,EAAEA;QAAoB,CAC1C,CAAC;MAAA,CACkB,CAAC,EACvB,IAAAV,WAAA,CAAAiC,GAAA,EAACpC,OAAA,CAAAwD,uBAAuB;QACtBD,QAAQ,EAAEA,QAAS;QACnB1C,mBAAmB,EAAEA;MAAoB,CAC1C,CAAC;IAAA,CACC,CAAC;EAAA,GAlBkBiC,KAmBlB,CAAC;AAEb,CAAC;AAMD,MAAMW,YAAY,GAAGA,CAAC;EAAEvB;AAA6B,CAAC,KAAK;EACzD,MAAMrB,mBAAmB,GAAG,IAAA6C,kDAAsB,EAAC,CAAC;EACpD,MAAMvB,gBAAgB,GAAG,OAAOD,SAAS,KAAK,QAAQ;EAEtD,IAAIC,gBAAgB,EAAE;IACpB,OACE,IAAAhC,WAAA,CAAAiC,GAAA,EAAC7B,wBAAwB;MACvBK,cAAc;MACdC,mBAAmB,EAAEA,mBAAoB;MAAAwB,QAAA,EAEzC,IAAAlC,WAAA,CAAAiC,GAAA;QAAKE,GAAG,EAAEJ,SAAU;QAACK,GAAG,EAAC,EAAE;QAACC,IAAI,EAAC;MAAc,CAAE;IAAC,CAC1B,CAAC;EAE/B;EAEA,OACE,IAAArC,WAAA,CAAAiC,GAAA,EAAC7B,wBAAwB;IACvBK,cAAc;IACdC,mBAAmB,EAAEA,mBAAoB;IAAAwB,QAAA,EAExCH;EAAS,CACc,CAAC;AAE/B,CAAC;AAmCD,MAAMyB,yBAAiE,GAAGA,CAIxE;EACAhD,aAAa,GAAG,OAAO;EACvBiD,eAAe;EACfC,YAAY;EACZC,gBAAgB;EAChBC,YAAY;EACZC,gBAAgB;EAChBC,uBAAuB;EACvBC,cAAc;EACdC,kBAAkB;EAClBC,EAAE,EAAEC,UAAU;EACdC,UAAU;EACVC,oBAAoB;EACpBC,UAAU;EACVC,WAAW,GAAG,KAAK;EACnBC,SAAS;EACTC,UAAU,GAAG,KAAK;EAClBC,UAAU;EACVC,aAAa,EAAEC,iBAAiB,GAAG,KAAK;EACxCC,IAAI;EACJC,iBAAiB;EACjBnC,KAAK;EACLoC,IAAI,EAAEC,YAAY;EAClBC,MAAM;EACNC,QAAQ,EAAEC,YAAY;EACtBC,aAAa,EAAEC,iBAAiB;EAChCC,OAAO;EACPC,OAAO;EACP3C,KAAK;EACL4C,MAAM;EACNC;AAKF,CAAC,KAAK;EACJ,MAAM9E,mBAAmB,GAAG,IAAA6C,kDAAsB,EAAC,CAAC;EAEpD,MAAMkC,eAAe,GAAG,IAAAC,kBAAW,EASjC,CAACC,MAAM,EAAEC,WAAW,KAClBD,MAAM,CAACE,GAAG,CAAC,CAAClD,KAAK,EAAEmD,KAAK,KAAK;IAC3B,MAAM;MAAEC,GAAG;MAAEC;IAAS,CAAC,GAAGJ,WAAW,CAAC;MAAEE;IAAM,CAAC,CAAC;IAChD,MAAM;MAAE/D,SAAS;MAAEW;IAAM,CAAC,GAAGC,KAAK;IAElC,OACE,IAAA3C,WAAA,CAAAiC,GAAA,EAACvC,IAAA,CAAAuG,GAAG;MAEFC,EAAE,EAAE;QACFC,MAAM,EAAEzF,mBAAmB,CAAC0F,QAAQ;QACpClF,eAAe,EAAE;MACnB,CAAE;MAAAgB,QAAA,EAEF,IAAAlC,WAAA,CAAAiC,GAAA,EAAClC,IAAA,CAAAsG,GAAG;QACFC,IAAI,EAAE,IAAAtG,WAAA,CAAAiC,GAAA,EAACqB,YAAY;UAACvB,SAAS,EAAEA;QAAU,CAAE,CAAE;QAC7CW,KAAK,EAAEA,KAAM;QACb6D,QAAQ,EAAEP;MAAS,CACpB;IAAC,GAVGD,GAWF,CAAC;EAEV,CAAC,CAAC,EACJ,CAACrF,mBAAmB,CACtB,CAAC;EAED,MAAM8F,kBAAkB,GAAG,IAAAd,kBAAW,EAUpC,CAACnD,QAAQ,EAAEC,MAAM,KAAK;IACpB,MAAMiE,WAAW,GAAG,UAAU,IAAIjE,MAAM,IAAIA,MAAM,CAACY,QAAQ;IAE3D,OACE,IAAApD,WAAA,CAAAiC,GAAA,EAAC3C,MAAA,CAAAoH,QAAQ;MAAAxE,QAAA,EACNuE,WAAW,GACV,IAAAzG,WAAA,CAAAiC,GAAA,EAACkB,kCAAkC;QACjC3C,aAAa,EAAEA,aAAc;QAC7B+B,QAAQ,EAAEA,QAAS;QACnB7B,mBAAmB,EAAEA,mBAAoB;QACzC8B,MAAM,EAAEA;MAAO,CAChB,CAAC,GAEF,IAAAxC,WAAA,CAAAiC,GAAA,EAACK,8BAA8B;QAC7B9B,aAAa,EAAEA,aAAc;QAC7B+B,QAAQ,EAAEA,QAAS;QACnB7B,mBAAmB,EAAEA,mBAAoB;QACzC8B,MAAM,EAAEA;MAAO,CAChB;IACF,GAfYA,MAAM,CAACE,KAgBZ,CAAC;EAEf,CAAC,EACD,CAAClC,aAAa,EAAEE,mBAAmB,CACrC,CAAC;EAED,OACE,IAAAV,WAAA,CAAAiC,GAAA,EAACtC,iBAAA,CAAAgH,gBAAgB;IACflD,eAAe,EAAEA,eAAgB;IACjCC,YAAY,EAAEA,YAAa;IAC3BC,gBAAgB,EAAEA,gBAAiB;IACnCC,YAAY,EAAEA,YAAa;IAC3BC,gBAAgB,EAAEA,gBAAiB;IACnCC,uBAAuB,EAAEA,uBAAwB;IACjDC,cAAc,EAAEA,cAAe;IAC/BC,kBAAkB,EAAEA,kBAAmB;IACvCC,EAAE,EAAEC,UAAW;IACfC,UAAU,EAAEA,UAAW;IACvBC,oBAAoB,EAAEA,oBAAqB;IAC3CC,UAAU,EAAEA,UAAW;IACvBC,WAAW,EAAEA,WAAY;IACzBC,SAAS,EAAEA,SAAU;IACrBC,UAAU,EAAEA,UAAW;IACvBC,UAAU,EAAEA,UAAW;IACvBC,aAAa,EAAEC,iBAAkB;IACjCC,IAAI,EAAEA,IAAK;IACXC,iBAAiB,EAAEA,iBAAkB;IACrCnC,KAAK,EAAEA,KAAM;IACboC,IAAI,EAAEC,YAAa;IACnBC,MAAM,EAAEA,MAAO;IACfC,QAAQ,EAAEC,YAAa;IACvBC,aAAa,EAAEC,iBAAkB;IACjCC,OAAO,EAAEA,OAAQ;IACjBC,OAAO,EAAEA,OAAQ;IACjBsB,YAAY,EAAEJ,kBAAmB;IACjCK,UAAU,EAAEpB,eAAgB;IAC5B9C,KAAK,EAAEA,KAAM;IACb4C,MAAM,EAAEA,MAAO;IACfC,SAAS,EAAEA;EAAU,CACtB,CAAC;AAEN,CAAC;AAGD,MAAMsB,iCAAiC,GAAAC,OAAA,CAAAvD,yBAAA,GAAG,IAAAwD,WAAI,EAC5CxD,yBACF,CAAmB;AAEnBsD,iCAAiC,CAACG,WAAW,GAAG,2BAA2B","ignoreList":[]}
@@ -120,6 +120,7 @@ const translation = exports.translation = {
120
120
  "pagination.rowsperpage": "Počet řádků na stránku",
121
121
  "pagination.rowswithtotal": "Řádky {{firstRow}}–{{lastRow}} z {{totalRows}}",
122
122
  "pagination.rowswithouttotal": "Řádky {{firstRow}}–{{lastRow}}",
123
+ "pagination.totalrows": "Počet řádků: {{totalRows}}",
123
124
  "table.actions.selectall": "Vybrat vše",
124
125
  "table.actions.selectnone": "Zrušit výběr",
125
126
  "table.actions.selectsome": "Vybráno: {{selectedRowCount}}",