@okta/odyssey-react-mui 1.22.0 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/@types/i18next.d.js.map +1 -1
  3. package/dist/Autocomplete.js +30 -0
  4. package/dist/Autocomplete.js.map +1 -1
  5. package/dist/Callout.js +12 -24
  6. package/dist/Callout.js.map +1 -1
  7. package/dist/DataTable/useScrollIndication.js +7 -3
  8. package/dist/DataTable/useScrollIndication.js.map +1 -1
  9. package/dist/FileUploader/FileUploadIllustration.js.map +1 -0
  10. package/dist/FileUploader/FileUploadPreview.js.map +1 -0
  11. package/dist/{labs/FileUpload.js → FileUploader/FileUploader.js} +6 -5
  12. package/dist/FileUploader/FileUploader.js.map +1 -0
  13. package/dist/FileUploader/index.js +13 -0
  14. package/dist/FileUploader/index.js.map +1 -0
  15. package/dist/OdysseyProvider.js +4 -0
  16. package/dist/OdysseyProvider.js.map +1 -1
  17. package/dist/Radio.js +2 -2
  18. package/dist/Radio.js.map +1 -1
  19. package/dist/Select.js +36 -0
  20. package/dist/Select.js.map +1 -1
  21. package/dist/{labs/Switch.js → Switch.js} +7 -7
  22. package/dist/Switch.js.map +1 -0
  23. package/dist/Tabs.js +7 -9
  24. package/dist/Tabs.js.map +1 -1
  25. package/dist/Tag.js +102 -4
  26. package/dist/Tag.js.map +1 -1
  27. package/dist/TextField.js +16 -39
  28. package/dist/TextField.js.map +1 -1
  29. package/dist/Toast.js +2 -2
  30. package/dist/Toast.js.map +1 -1
  31. package/dist/createShadowDomElements.js +1 -0
  32. package/dist/createShadowDomElements.js.map +1 -1
  33. package/dist/i18n.js +1 -1
  34. package/dist/i18n.js.map +1 -1
  35. package/dist/index.js +2 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/index.scss +92 -4
  38. package/dist/labs/DataView/DataView.js +64 -25
  39. package/dist/labs/DataView/DataView.js.map +1 -1
  40. package/dist/labs/DataView/TableLayoutContent.js +17 -3
  41. package/dist/labs/DataView/TableLayoutContent.js.map +1 -1
  42. package/dist/labs/DataView/componentTypes.js.map +1 -1
  43. package/dist/labs/DateField.js +2 -0
  44. package/dist/labs/DateField.js.map +1 -1
  45. package/dist/labs/DatePicker.js +5 -1
  46. package/dist/labs/DatePicker.js.map +1 -1
  47. package/dist/labs/SideNav/OktaLogo.js +36 -0
  48. package/dist/labs/SideNav/OktaLogo.js.map +1 -0
  49. package/dist/labs/SideNav/SideNav.js +125 -36
  50. package/dist/labs/SideNav/SideNav.js.map +1 -1
  51. package/dist/labs/SideNav/SideNavHeader.js +33 -10
  52. package/dist/labs/SideNav/SideNavHeader.js.map +1 -1
  53. package/dist/labs/SideNav/types.js.map +1 -1
  54. package/dist/labs/TopNav.js +2 -1
  55. package/dist/labs/TopNav.js.map +1 -1
  56. package/dist/labs/index.js +0 -2
  57. package/dist/labs/index.js.map +1 -1
  58. package/dist/labs/useDateFieldsTranslations.js +1 -1
  59. package/dist/labs/useDateFieldsTranslations.js.map +1 -1
  60. package/dist/properties/ts/odyssey-react-mui.js +3 -1
  61. package/dist/properties/ts/odyssey-react-mui.js.map +1 -1
  62. package/dist/src/Autocomplete.d.ts +30 -0
  63. package/dist/src/Autocomplete.d.ts.map +1 -1
  64. package/dist/src/Callout.d.ts +11 -23
  65. package/dist/src/Callout.d.ts.map +1 -1
  66. package/dist/src/DataTable/useScrollIndication.d.ts.map +1 -1
  67. package/dist/src/FileUploader/FileUploadIllustration.d.ts.map +1 -0
  68. package/dist/src/{labs → FileUploader}/FileUploadPreview.d.ts +2 -2
  69. package/dist/src/FileUploader/FileUploadPreview.d.ts.map +1 -0
  70. package/dist/src/{labs/FileUpload.d.ts → FileUploader/FileUploader.d.ts} +5 -4
  71. package/dist/src/FileUploader/FileUploader.d.ts.map +1 -0
  72. package/dist/src/FileUploader/index.d.ts +13 -0
  73. package/dist/src/FileUploader/index.d.ts.map +1 -0
  74. package/dist/src/NativeSelect.d.ts +1 -1
  75. package/dist/src/OdysseyProvider.d.ts.map +1 -1
  76. package/dist/src/OdysseyTranslationProvider.d.ts +1 -1
  77. package/dist/src/OdysseyTranslationProvider.d.ts.map +1 -1
  78. package/dist/src/PasswordField.d.ts +1 -1
  79. package/dist/src/SearchField.d.ts +1 -1
  80. package/dist/src/Select.d.ts +36 -0
  81. package/dist/src/Select.d.ts.map +1 -1
  82. package/dist/src/{labs/Switch.d.ts → Switch.d.ts} +3 -3
  83. package/dist/src/Switch.d.ts.map +1 -0
  84. package/dist/src/Tabs.d.ts +6 -8
  85. package/dist/src/Tabs.d.ts.map +1 -1
  86. package/dist/src/Tag.d.ts +7 -1
  87. package/dist/src/Tag.d.ts.map +1 -1
  88. package/dist/src/TextField.d.ts +17 -40
  89. package/dist/src/TextField.d.ts.map +1 -1
  90. package/dist/src/createShadowDomElements.d.ts.map +1 -1
  91. package/dist/src/i18n.d.ts +2 -2
  92. package/dist/src/i18n.d.ts.map +1 -1
  93. package/dist/src/index.d.ts +2 -1
  94. package/dist/src/index.d.ts.map +1 -1
  95. package/dist/src/labs/DataView/DataView.d.ts +1 -1
  96. package/dist/src/labs/DataView/DataView.d.ts.map +1 -1
  97. package/dist/src/labs/DataView/TableLayoutContent.d.ts +2 -1
  98. package/dist/src/labs/DataView/TableLayoutContent.d.ts.map +1 -1
  99. package/dist/src/labs/DataView/componentTypes.d.ts +10 -0
  100. package/dist/src/labs/DataView/componentTypes.d.ts.map +1 -1
  101. package/dist/src/labs/DateField.d.ts +2 -2
  102. package/dist/src/labs/DateField.d.ts.map +1 -1
  103. package/dist/src/labs/DatePicker.d.ts +2 -2
  104. package/dist/src/labs/DatePicker.d.ts.map +1 -1
  105. package/dist/{test-selectors/odysseyTestSelectors.js → src/labs/SideNav/OktaLogo.d.ts} +3 -9
  106. package/dist/src/labs/SideNav/OktaLogo.d.ts.map +1 -0
  107. package/dist/src/labs/SideNav/SideNav.d.ts +2 -1
  108. package/dist/src/labs/SideNav/SideNav.d.ts.map +1 -1
  109. package/dist/src/labs/SideNav/SideNavHeader.d.ts +1 -1
  110. package/dist/src/labs/SideNav/SideNavHeader.d.ts.map +1 -1
  111. package/dist/src/labs/SideNav/types.d.ts +28 -5
  112. package/dist/src/labs/SideNav/types.d.ts.map +1 -1
  113. package/dist/src/labs/TopNav.d.ts +1 -0
  114. package/dist/src/labs/TopNav.d.ts.map +1 -1
  115. package/dist/src/labs/index.d.ts +0 -2
  116. package/dist/src/labs/index.d.ts.map +1 -1
  117. package/dist/src/properties/ts/odyssey-react-mui.d.ts +2 -0
  118. package/dist/src/properties/ts/odyssey-react-mui.d.ts.map +1 -1
  119. package/dist/src/test-selectors/getByQuerySelector.d.ts +148 -0
  120. package/dist/src/test-selectors/getByQuerySelector.d.ts.map +1 -0
  121. package/{src/test-selectors/odysseyTestSelectors.ts → dist/src/test-selectors/getComputedAccessibleErrorMessageText.d.ts} +3 -11
  122. package/dist/src/test-selectors/getComputedAccessibleErrorMessageText.d.ts.map +1 -0
  123. package/dist/src/test-selectors/{featureTestSelector.d.ts → getComputedAccessibleText.d.ts} +11 -19
  124. package/dist/src/test-selectors/getComputedAccessibleText.d.ts.map +1 -0
  125. package/dist/src/test-selectors/index.d.ts +2 -2
  126. package/dist/src/test-selectors/index.d.ts.map +1 -1
  127. package/dist/src/test-selectors/interpolateString.d.ts +15 -0
  128. package/dist/src/test-selectors/interpolateString.d.ts.map +1 -0
  129. package/dist/src/test-selectors/linkedHtmlSelectors.d.ts +24 -0
  130. package/dist/src/test-selectors/linkedHtmlSelectors.d.ts.map +1 -0
  131. package/dist/src/test-selectors/queryOdysseySelector.d.ts +5755 -0
  132. package/dist/src/test-selectors/queryOdysseySelector.d.ts.map +1 -0
  133. package/dist/src/test-selectors/querySelector.d.ts +59 -3613
  134. package/dist/src/test-selectors/querySelector.d.ts.map +1 -1
  135. package/dist/src/test-selectors/sanityChecks.d.ts +18 -0
  136. package/dist/src/test-selectors/sanityChecks.d.ts.map +1 -0
  137. package/dist/src/test-selectors/testSelector.d.ts +46 -0
  138. package/dist/src/test-selectors/testSelector.d.ts.map +1 -0
  139. package/dist/src/theme/components.d.ts.map +1 -1
  140. package/dist/test-selectors/getByQuerySelector.js +64 -0
  141. package/dist/test-selectors/getByQuerySelector.js.map +1 -0
  142. package/dist/test-selectors/getComputedAccessibleErrorMessageText.js +25 -0
  143. package/dist/test-selectors/getComputedAccessibleErrorMessageText.js.map +1 -0
  144. package/dist/test-selectors/getComputedAccessibleText.js +24 -0
  145. package/dist/test-selectors/getComputedAccessibleText.js.map +1 -0
  146. package/dist/test-selectors/index.js +2 -2
  147. package/dist/test-selectors/index.js.map +1 -1
  148. package/{src/test-selectors/featureTestSelector.ts → dist/test-selectors/interpolateString.js} +11 -27
  149. package/dist/test-selectors/interpolateString.js.map +1 -0
  150. package/dist/test-selectors/linkedHtmlSelectors.js +34 -0
  151. package/dist/test-selectors/linkedHtmlSelectors.js.map +1 -0
  152. package/dist/test-selectors/queryOdysseySelector.js +26 -0
  153. package/dist/test-selectors/queryOdysseySelector.js.map +1 -0
  154. package/dist/test-selectors/querySelector.js +82 -58
  155. package/dist/test-selectors/querySelector.js.map +1 -1
  156. package/dist/test-selectors/sanityChecks.js +33 -0
  157. package/dist/test-selectors/sanityChecks.js.map +1 -0
  158. package/dist/test-selectors/testSelector.js +2 -0
  159. package/dist/test-selectors/testSelector.js.map +1 -0
  160. package/dist/test-selectors/testSelectors.json +1 -1
  161. package/dist/theme/components.js +0 -1
  162. package/dist/theme/components.js.map +1 -1
  163. package/dist/tsconfig.production.tsbuildinfo +1 -1
  164. package/dist/tsconfig.tsbuildinfo +1 -1
  165. package/jest.setup.js +3 -0
  166. package/package.json +5 -4
  167. package/scripts/generateTestSelectorsJson.ts +1 -1
  168. package/src/@types/i18next.d.ts +1 -1
  169. package/src/Autocomplete.tsx +32 -0
  170. package/src/Callout.tsx +13 -25
  171. package/src/DataTable/useScrollIndication.tsx +9 -2
  172. package/src/{labs → FileUploader}/FileUploadPreview.tsx +3 -3
  173. package/src/{labs/FileUpload.tsx → FileUploader/FileUploader.tsx} +7 -6
  174. package/src/FileUploader/index.ts +13 -0
  175. package/src/OdysseyCacheProvider.test.tsx +1 -0
  176. package/src/OdysseyProvider.tsx +6 -1
  177. package/src/Radio.tsx +2 -2
  178. package/src/Select.tsx +38 -0
  179. package/src/{labs/Switch.tsx → Switch.tsx} +10 -10
  180. package/src/Tabs.tsx +8 -10
  181. package/src/Tag.tsx +134 -3
  182. package/src/TextField.tsx +18 -41
  183. package/src/Toast.tsx +1 -1
  184. package/src/createShadowDomElements.ts +3 -0
  185. package/src/i18n.ts +3 -3
  186. package/src/index.ts +6 -1
  187. package/src/labs/DataView/DataView.test.tsx +158 -0
  188. package/src/labs/DataView/DataView.tsx +98 -50
  189. package/src/labs/DataView/TableLayoutContent.tsx +28 -1
  190. package/src/labs/DataView/componentTypes.ts +13 -0
  191. package/src/labs/DateField.tsx +3 -0
  192. package/src/labs/DatePicker.tsx +12 -1
  193. package/src/labs/SideNav/OktaLogo.tsx +39 -0
  194. package/src/labs/SideNav/SideNav.tsx +187 -51
  195. package/src/labs/SideNav/SideNavHeader.tsx +30 -7
  196. package/src/labs/SideNav/types.ts +32 -5
  197. package/src/labs/TopNav.tsx +3 -1
  198. package/src/labs/index.ts +0 -3
  199. package/src/labs/useDateFieldsTranslations.ts +1 -1
  200. package/src/properties/odyssey-react-mui.properties +2 -1
  201. package/src/properties/ts/odyssey-react-mui.ts +1 -1
  202. package/src/test-selectors/getByQuerySelector.ts +176 -0
  203. package/src/test-selectors/getComputedAccessibleErrorMessageText.ts +52 -0
  204. package/src/test-selectors/getComputedAccessibleText.ts +36 -0
  205. package/src/test-selectors/index.ts +2 -2
  206. package/src/test-selectors/interpolateString.ts +41 -0
  207. package/src/test-selectors/linkedHtmlSelectors.ts +73 -0
  208. package/src/test-selectors/queryOdysseySelector.ts +36 -0
  209. package/src/test-selectors/querySelector.ts +221 -170
  210. package/src/test-selectors/sanityChecks.ts +53 -0
  211. package/src/test-selectors/testSelector.ts +143 -0
  212. package/src/theme/components.tsx +0 -2
  213. package/dist/labs/FileUpload.js.map +0 -1
  214. package/dist/labs/FileUploadIllustration.js.map +0 -1
  215. package/dist/labs/FileUploadPreview.js.map +0 -1
  216. package/dist/labs/Switch.js.map +0 -1
  217. package/dist/src/labs/FileUpload.d.ts.map +0 -1
  218. package/dist/src/labs/FileUploadIllustration.d.ts.map +0 -1
  219. package/dist/src/labs/FileUploadPreview.d.ts.map +0 -1
  220. package/dist/src/labs/Switch.d.ts.map +0 -1
  221. package/dist/src/test-selectors/featureTestSelector.d.ts.map +0 -1
  222. package/dist/src/test-selectors/odysseyTestSelectors.d.ts +0 -120
  223. package/dist/src/test-selectors/odysseyTestSelectors.d.ts.map +0 -1
  224. package/dist/test-selectors/featureTestSelector.js +0 -2
  225. package/dist/test-selectors/featureTestSelector.js.map +0 -1
  226. package/dist/test-selectors/odysseyTestSelectors.js.map +0 -1
  227. /package/dist/{labs → FileUploader}/FileUploadIllustration.js +0 -0
  228. /package/dist/{labs → FileUploader}/FileUploadPreview.js +0 -0
  229. /package/dist/src/{labs → FileUploader}/FileUploadIllustration.d.ts +0 -0
  230. /package/src/{labs → FileUploader}/FileUploadIllustration.tsx +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"DataView.js","names":["memo","useEffect","useMemo","useState","useTranslation","availableLayouts","allAvailableLayouts","densityValues","Box","BulkActionsMenu","Callout","DataFilters","EmptyState","fetchData","LayoutSwitcher","MenuButton","MoreIcon","TableSettings","Pagination","usePagination","TableLayoutContent","CardLayoutContent","useFilterConversion","useRowReordering","useOdysseyDesignTokens","styled","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DataViewContainer","shouldForwardProp","prop","odysseyDesignTokens","display","flexDirection","gap","Spacing4","BulkActionsContainer","justifyContent","AdditionalActionsContainer","DataView","additionalActionButton","additionalActionMenuItems","bulkActionMenuItems","currentPage","emptyPlaceholder","errorMessage","errorMessageProp","filters","filtersProp","getData","getRowId","getRowIdProp","hasFilters","hasPagination","hasSearch","hasSearchSubmitButton","hasRowReordering","hasRowSelection","initialLayout","isEmpty","isEmptyProp","isLoading","isLoadingProp","isNoResults","isNoResultsProp","isPaginationMoreDisabled","isRowReorderingDisabled","noResultsPlaceholder","onChangeRowSelection","onReorderRows","paginationType","resultsPerPage","searchDelayTime","cardLayoutOptions","tableLayoutOptions","totalRows","maxPages","maxResultsPerPage","t","currentLayout","setCurrentLayout","data","setData","setIsLoading","setIsEmpty","setIsNoResults","setErrorMessage","search","setSearch","initialFilters","setInitialFilters","setFilters","draggingRow","setDraggingRow","rowSelection","setRowSelection","pagination","setPagination","pageIndex","pageSize","tableState","setTableState","columnSorting","columnVisibility","rowDensity","initialDensity","shouldShowFilters","availableFilters","columns","dataQueryParams","page","sort","row","id","prev","undefined","length","prevValue","emptyState","noResultsInnerContent","description","heading","additionalActions","children","endIcon","ariaLabel","buttonVariant","menuAlignment","lastRow","lastRowOnPage","currentRowsCount","rowReorderingUtilities","severity","text","isDisabled","onChangeFilters","onChangeSearch","menuItems","currentPageLabel","isMoreDisabled","loadMoreLabel","maxPageIndex","maxPageSize","nextLabel","onPaginationChange","previousLabel","rowsPerPageLabel","variant","MemoizedDataView","displayName"],"sources":["../../../src/labs/DataView/DataView.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { memo, useEffect, useMemo, useState } from \"react\";\nimport {\n MRT_Row,\n MRT_RowData,\n MRT_RowSelectionState,\n} from \"material-react-table\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n availableLayouts as allAvailableLayouts,\n densityValues,\n} from \"./constants\";\nimport {\n DataLayout,\n UniversalProps,\n ViewProps,\n TableState,\n} from \"./componentTypes\";\nimport { Box } from \"../../Box\";\nimport { BulkActionsMenu } from \"./BulkActionsMenu\";\nimport { Callout } from \"../../Callout\";\nimport { DataFilters } from \"../DataFilters\";\nimport { EmptyState } from \"../../EmptyState\";\nimport { fetchData } from \"./fetchData\";\nimport { LayoutSwitcher } from \"./LayoutSwitcher\";\nimport { MenuButton } from \"../..\";\nimport { MoreIcon } from \"../../icons.generated\";\nimport { TableSettings } from \"./TableSettings\";\nimport { Pagination, usePagination } from \"../../Pagination\";\nimport { TableLayoutContent } from \"./TableLayoutContent\";\nimport { CardLayoutContent } from \"./CardLayoutContent\";\nimport { useFilterConversion } from \"./useFilterConversion\";\nimport { useRowReordering } from \"../../DataTable/useRowReordering\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext\";\nimport styled from \"@emotion/styled\";\n\nexport type DataViewProps = UniversalProps & ViewProps<DataLayout>;\n\nconst DataViewContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n flexDirection: \"column\",\n gap: odysseyDesignTokens.Spacing4,\n}));\n\nconst BulkActionsContainer = styled(\"div\")(() => ({\n display: \"flex\",\n justifyContent: \"space-between\",\n}));\n\nconst AdditionalActionsContainer = styled(\"div\")(() => ({\n display: \"flex\",\n justifyContent: \"flex-end\",\n}));\n\nconst DataView = ({\n additionalActionButton,\n additionalActionMenuItems,\n availableLayouts = allAvailableLayouts,\n bulkActionMenuItems,\n currentPage = 1,\n emptyPlaceholder,\n errorMessage: errorMessageProp,\n filters: filtersProp,\n getData,\n getRowId: getRowIdProp,\n hasFilters,\n hasPagination,\n hasSearch,\n hasSearchSubmitButton,\n hasRowReordering,\n hasRowSelection,\n initialLayout,\n isEmpty: isEmptyProp,\n isLoading: isLoadingProp,\n isNoResults: isNoResultsProp,\n isPaginationMoreDisabled,\n isRowReorderingDisabled,\n noResultsPlaceholder,\n onChangeRowSelection,\n onReorderRows,\n paginationType = \"paged\",\n resultsPerPage = 20,\n searchDelayTime,\n cardLayoutOptions,\n tableLayoutOptions,\n totalRows,\n maxPages,\n maxResultsPerPage,\n}: DataViewProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const [currentLayout, setCurrentLayout] = useState<DataLayout>(\n initialLayout ?? availableLayouts[0],\n );\n\n const [data, setData] = useState<MRT_RowData[]>([]);\n const [isLoading, setIsLoading] = useState<boolean>(isLoadingProp ?? true);\n const [isEmpty, setIsEmpty] = useState<boolean>(isEmptyProp ?? true);\n const [isNoResults, setIsNoResults] = useState<boolean>(\n isNoResultsProp ?? false,\n );\n const [errorMessage, setErrorMessage] =\n useState<UniversalProps[\"errorMessage\"]>(errorMessageProp);\n\n const [search, setSearch] = useState<string>(\"\");\n\n const [initialFilters, setInitialFilters] =\n useState<UniversalProps[\"filters\"]>(filtersProp);\n const [filters, setFilters] =\n useState<UniversalProps[\"filters\"]>(filtersProp);\n\n const [draggingRow, setDraggingRow] = useState<MRT_Row<MRT_RowData> | null>();\n\n const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n\n useEffect(() => {\n onChangeRowSelection?.(rowSelection);\n }, [rowSelection, onChangeRowSelection]);\n\n const [pagination, setPagination] = useState({\n pageIndex: currentPage,\n pageSize: resultsPerPage,\n });\n\n const [tableState, setTableState] = useState<TableState>({\n columnSorting: [],\n columnVisibility: {},\n rowDensity: tableLayoutOptions?.initialDensity ?? densityValues[0],\n });\n\n const shouldShowFilters =\n hasSearch ||\n hasFilters ||\n additionalActionButton ||\n additionalActionMenuItems;\n\n const availableFilters = useFilterConversion({\n filters: filters,\n columns: tableLayoutOptions?.columns,\n });\n\n useEffect(() => {\n if (!initialFilters && availableFilters) {\n setInitialFilters(availableFilters);\n }\n }, [availableFilters, initialFilters]);\n\n const dataQueryParams = useMemo(\n () => ({\n page: pagination.pageIndex,\n resultsPerPage: pagination.pageSize,\n search,\n filters: availableFilters,\n sort: tableState?.columnSorting,\n }),\n [\n pagination.pageIndex,\n pagination.pageSize,\n search,\n availableFilters,\n tableState?.columnSorting,\n ],\n );\n\n const getRowId = getRowIdProp ? getRowIdProp : (row: MRT_RowData) => row.id;\n\n // Update pagination state if props change\n useEffect(() => {\n setPagination({\n pageIndex: currentPage,\n pageSize: resultsPerPage,\n });\n }, [currentPage, resultsPerPage]);\n\n // Reset pagination if search or filters change\n useEffect(() => {\n setPagination((prev) => ({\n pageIndex: 1,\n pageSize: prev.pageSize,\n }));\n }, [filters, search]);\n\n // Retrieve the data\n useEffect(() => {\n fetchData({\n dataQueryParams,\n errorMessageProp,\n getData,\n setData,\n setErrorMessage,\n // Only include setIsLoading if that's not being controlled manually\n setIsLoading: isLoadingProp ? undefined : setIsLoading,\n });\n }, [dataQueryParams, errorMessageProp, getData, isLoadingProp]);\n\n // When data is updated\n useEffect(() => {\n setIsEmpty(\n pagination.pageIndex === currentPage &&\n pagination.pageSize === resultsPerPage &&\n search === \"\" &&\n filters === initialFilters &&\n data.length === 0,\n );\n }, [\n currentPage,\n data,\n filters,\n initialFilters,\n pagination,\n resultsPerPage,\n search,\n ]);\n\n // Change loading, empty and noResults state on prop change\n useEffect(() => {\n setIsLoading((prevValue) => isLoadingProp ?? prevValue);\n }, [isLoadingProp]);\n\n useEffect(() => {\n setIsEmpty((prevValue) => isEmptyProp ?? prevValue);\n }, [isEmptyProp]);\n\n useEffect(() => {\n setIsNoResults((prevValue) => isNoResultsProp ?? prevValue);\n }, [isNoResultsProp]);\n\n const emptyState = useMemo(() => {\n const noResultsInnerContent = noResultsPlaceholder || (\n <EmptyState\n description={t(\"table.noresults.text\")}\n heading={t(\"table.noresults.heading\")}\n />\n );\n\n if (isEmpty) {\n return emptyPlaceholder || noResultsInnerContent;\n }\n\n if (isNoResults) {\n return noResultsInnerContent;\n }\n\n return;\n }, [noResultsPlaceholder, t, isEmpty, isNoResults, emptyPlaceholder]);\n\n const additionalActions = useMemo(\n () => (\n <>\n {currentLayout === \"table\" && tableLayoutOptions && (\n <TableSettings\n setTableState={setTableState}\n tableLayoutOptions={tableLayoutOptions}\n tableState={tableState}\n />\n )}\n\n {availableLayouts.length > 1 && (\n <LayoutSwitcher\n availableLayouts={availableLayouts}\n currentLayout={currentLayout}\n setCurrentLayout={setCurrentLayout}\n />\n )}\n\n {additionalActionButton}\n\n {additionalActionMenuItems && (\n <MenuButton\n endIcon={<MoreIcon />}\n ariaLabel={t(\"table.moreactions.arialabel\")}\n buttonVariant=\"secondary\"\n menuAlignment=\"right\"\n >\n {additionalActionMenuItems}\n </MenuButton>\n )}\n </>\n ),\n [\n currentLayout,\n tableLayoutOptions,\n tableState,\n availableLayouts,\n additionalActionButton,\n additionalActionMenuItems,\n t,\n ],\n );\n\n const { lastRow: lastRowOnPage } = usePagination({\n currentRowsCount: data.length,\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize,\n totalRows,\n });\n\n const rowReorderingUtilities = useRowReordering({\n totalRows,\n onReorderRows,\n data,\n setData,\n draggingRow,\n setDraggingRow,\n resultsPerPage: pagination.pageSize,\n page: pagination.pageIndex,\n });\n\n return (\n <DataViewContainer odysseyDesignTokens={odysseyDesignTokens}>\n {errorMessage && (\n <Box>\n <Callout severity=\"error\" text={errorMessage} />\n </Box>\n )}\n\n {shouldShowFilters && (\n <DataFilters\n additionalActions={additionalActions}\n filters={hasFilters ? availableFilters : undefined}\n hasSearchSubmitButton={hasSearchSubmitButton}\n isDisabled={isEmpty}\n onChangeFilters={hasFilters ? setFilters : undefined}\n onChangeSearch={hasSearch ? setSearch : undefined}\n searchDelayTime={searchDelayTime}\n />\n )}\n\n {(bulkActionMenuItems || hasRowSelection) && (\n <BulkActionsContainer>\n <BulkActionsMenu\n data={data}\n menuItems={bulkActionMenuItems}\n rowSelection={rowSelection}\n setRowSelection={setRowSelection}\n />\n {!shouldShowFilters && additionalActions}\n </BulkActionsContainer>\n )}\n\n {!shouldShowFilters && !bulkActionMenuItems && !hasRowSelection && (\n <AdditionalActionsContainer>\n {additionalActions}\n </AdditionalActionsContainer>\n )}\n\n {currentLayout === \"table\" && tableLayoutOptions && (\n <TableLayoutContent\n columns={tableLayoutOptions.columns}\n data={data}\n draggingRow={draggingRow}\n emptyState={emptyState}\n getRowId={getRowId}\n hasRowReordering={hasRowReordering}\n hasRowSelection={hasRowSelection}\n isEmpty={isEmpty}\n isLoading={isLoading}\n isNoResults={isNoResults}\n isRowReorderingDisabled={isRowReorderingDisabled}\n onReorderRows={onReorderRows}\n pagination={pagination}\n rowReorderingUtilities={rowReorderingUtilities}\n rowSelection={rowSelection}\n setRowSelection={setRowSelection}\n setTableState={setTableState}\n tableLayoutOptions={tableLayoutOptions}\n tableState={tableState}\n totalRows={totalRows}\n />\n )}\n {(currentLayout === \"list\" || currentLayout === \"grid\") &&\n cardLayoutOptions && (\n <CardLayoutContent\n currentLayout={currentLayout}\n data={data}\n draggingRow={draggingRow}\n emptyState={emptyState}\n getRowId={getRowId}\n hasRowReordering={hasRowReordering}\n hasRowSelection={hasRowSelection}\n isEmpty={isEmpty}\n isLoading={isLoading}\n isNoResults={isNoResults}\n isRowReorderingDisabled={isRowReorderingDisabled}\n onReorderRows={onReorderRows}\n pagination={pagination}\n rowReorderingUtilities={rowReorderingUtilities}\n rowSelection={rowSelection}\n setRowSelection={setRowSelection}\n cardLayoutOptions={cardLayoutOptions}\n totalRows={totalRows}\n />\n )}\n\n {hasPagination && (\n <Pagination\n currentPageLabel={t(\"pagination.page\")}\n isDisabled={isEmpty}\n isMoreDisabled={isPaginationMoreDisabled}\n lastRow={lastRowOnPage}\n loadMoreLabel={t(\"pagination.loadmore\")}\n maxPageIndex={maxPages}\n maxPageSize={maxResultsPerPage}\n nextLabel={t(\"pagination.next\")}\n onPaginationChange={setPagination}\n pageIndex={pagination.pageIndex}\n pageSize={pagination.pageSize}\n previousLabel={t(\"pagination.previous\")}\n rowsPerPageLabel={t(\"pagination.rowsperpage\")}\n totalRows={totalRows}\n currentRowsCount={data.length}\n variant={paginationType}\n />\n )}\n </DataViewContainer>\n );\n};\n\nconst MemoizedDataView = memo(DataView);\nMemoizedDataView.displayName = \"DataView\";\n\nexport { MemoizedDataView as DataView };\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataView.js","names":["memo","useEffect","useMemo","useState","useTranslation","availableLayouts","allAvailableLayouts","densityValues","Box","BulkActionsMenu","Callout","DataFilters","EmptyState","fetchData","LayoutSwitcher","MenuButton","MoreIcon","TableSettings","Pagination","usePagination","TableLayoutContent","CardLayoutContent","useFilterConversion","useRowReordering","Typography","useOdysseyDesignTokens","styled","jsx","_jsx","jsxs","_jsxs","DataViewContainer","shouldForwardProp","prop","odysseyDesignTokens","display","flexDirection","gap","Spacing4","BulkActionsContainer","justifyContent","AdditionalActionsContainer","Spacing2","AdditionalActionsInner","alignItems","MetaTextContainer","marginInlineEnd","DataView","additionalActionButton","additionalActionMenuItems","bulkActionMenuItems","currentPage","emptyPlaceholder","enableVirtualization","enableVirtualizationProp","errorMessage","errorMessageProp","filters","filtersProp","getData","getRowId","getRowIdProp","hasFilters","hasPagination","hasSearch","hasSearchSubmitButton","hasRowReordering","hasRowSelection","initialLayout","isEmpty","isEmptyProp","isLoading","isLoadingProp","isNoResults","isNoResultsProp","isPaginationMoreDisabled","isRowReorderingDisabled","metaText","noResultsPlaceholder","onChangeRowSelection","onReorderRows","paginationType","resultsPerPage","searchDelayTime","cardLayoutOptions","tableLayoutOptions","totalRows","maxPages","maxResultsPerPage","onPaginationChange","t","currentLayout","setCurrentLayout","data","setData","setIsLoading","setIsEmpty","setIsNoResults","setErrorMessage","search","setSearch","initialFilters","setInitialFilters","setFilters","draggingRow","setDraggingRow","rowSelection","setRowSelection","pagination","setPagination","pageIndex","pageSize","tableState","setTableState","columnSorting","columnVisibility","rowDensity","initialDensity","shouldShowFilters","availableFilters","columns","dataQueryParams","page","sort","row","id","prev","undefined","length","prevValue","emptyState","noResultsInnerContent","description","heading","additionalActions","children","color","endIcon","ariaLabel","buttonVariant","menuAlignment","lastRow","lastRowOnPage","currentRowsCount","rowReorderingUtilities","severity","text","isDisabled","onChangeFilters","onChangeSearch","menuItems","currentPageLabel","isMoreDisabled","loadMoreLabel","maxPageIndex","maxPageSize","nextLabel","previousLabel","rowsPerPageLabel","variant","MemoizedDataView","displayName"],"sources":["../../../src/labs/DataView/DataView.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { memo, useEffect, useMemo, useState } from \"react\";\nimport {\n MRT_Row,\n MRT_RowData,\n MRT_RowSelectionState,\n} from \"material-react-table\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n availableLayouts as allAvailableLayouts,\n densityValues,\n} from \"./constants\";\nimport {\n DataLayout,\n UniversalProps,\n ViewProps,\n TableState,\n} from \"./componentTypes\";\nimport { Box } from \"../../Box\";\nimport { BulkActionsMenu } from \"./BulkActionsMenu\";\nimport { Callout } from \"../../Callout\";\nimport { DataFilters } from \"../DataFilters\";\nimport { EmptyState } from \"../../EmptyState\";\nimport { fetchData } from \"./fetchData\";\nimport { LayoutSwitcher } from \"./LayoutSwitcher\";\nimport { MenuButton } from \"../../MenuButton\";\nimport { MoreIcon } from \"../../icons.generated\";\nimport { TableSettings } from \"./TableSettings\";\nimport { Pagination, usePagination } from \"../../Pagination\";\nimport { TableLayoutContent } from \"./TableLayoutContent\";\nimport { CardLayoutContent } from \"./CardLayoutContent\";\nimport { useFilterConversion } from \"./useFilterConversion\";\nimport { useRowReordering } from \"../../DataTable/useRowReordering\";\nimport { Typography } from \"../../Typography\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext\";\nimport styled from \"@emotion/styled\";\n\nexport type DataViewProps = UniversalProps & ViewProps<DataLayout>;\n\nconst DataViewContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n flexDirection: \"column\",\n gap: odysseyDesignTokens.Spacing4,\n}));\n\nconst BulkActionsContainer = styled(\"div\")(() => ({\n display: \"flex\",\n justifyContent: \"space-between\",\n}));\n\nconst AdditionalActionsContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n justifyContent: \"flex-end\",\n gap: odysseyDesignTokens.Spacing2,\n}));\n\nconst AdditionalActionsInner = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n alignItems: \"center\",\n gap: odysseyDesignTokens.Spacing2,\n}));\n\nconst MetaTextContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n marginInlineEnd: odysseyDesignTokens.Spacing2,\n}));\n\nconst DataView = ({\n additionalActionButton,\n additionalActionMenuItems,\n availableLayouts = allAvailableLayouts,\n bulkActionMenuItems,\n currentPage = 1,\n emptyPlaceholder,\n enableVirtualization: enableVirtualizationProp,\n errorMessage: errorMessageProp,\n filters: filtersProp,\n getData,\n getRowId: getRowIdProp,\n hasFilters,\n hasPagination,\n hasSearch,\n hasSearchSubmitButton,\n hasRowReordering,\n hasRowSelection,\n initialLayout,\n isEmpty: isEmptyProp,\n isLoading: isLoadingProp,\n isNoResults: isNoResultsProp,\n isPaginationMoreDisabled,\n isRowReorderingDisabled,\n metaText,\n noResultsPlaceholder,\n onChangeRowSelection,\n onReorderRows,\n paginationType = \"paged\",\n resultsPerPage = 20,\n searchDelayTime,\n cardLayoutOptions,\n tableLayoutOptions,\n totalRows,\n maxPages,\n maxResultsPerPage,\n onPaginationChange,\n}: DataViewProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const [currentLayout, setCurrentLayout] = useState<DataLayout>(\n initialLayout ?? availableLayouts[0],\n );\n\n const [data, setData] = useState<MRT_RowData[]>([]);\n const [isLoading, setIsLoading] = useState<boolean>(isLoadingProp ?? true);\n const [isEmpty, setIsEmpty] = useState<boolean>(isEmptyProp ?? true);\n const [isNoResults, setIsNoResults] = useState<boolean>(\n isNoResultsProp ?? false,\n );\n const [errorMessage, setErrorMessage] =\n useState<UniversalProps[\"errorMessage\"]>(errorMessageProp);\n\n const [search, setSearch] = useState<string>(\"\");\n\n const [initialFilters, setInitialFilters] =\n useState<UniversalProps[\"filters\"]>(filtersProp);\n const [filters, setFilters] =\n useState<UniversalProps[\"filters\"]>(filtersProp);\n\n const [draggingRow, setDraggingRow] = useState<MRT_Row<MRT_RowData> | null>();\n\n const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n\n useEffect(() => {\n onChangeRowSelection?.(rowSelection);\n }, [rowSelection, onChangeRowSelection]);\n\n const [pagination, setPagination] = useState({\n pageIndex: currentPage,\n pageSize: resultsPerPage,\n });\n\n const [tableState, setTableState] = useState<TableState>({\n columnSorting: [],\n columnVisibility: {},\n rowDensity: tableLayoutOptions?.initialDensity ?? densityValues[0],\n });\n\n const shouldShowFilters =\n hasSearch ||\n hasFilters ||\n additionalActionButton ||\n additionalActionMenuItems;\n\n const availableFilters = useFilterConversion({\n filters: filters,\n columns: tableLayoutOptions?.columns,\n });\n\n useEffect(() => {\n if (!initialFilters && availableFilters) {\n setInitialFilters(availableFilters);\n }\n }, [availableFilters, initialFilters]);\n\n const dataQueryParams = useMemo(\n () => ({\n page: pagination.pageIndex,\n resultsPerPage: pagination.pageSize,\n search,\n filters: availableFilters,\n sort: tableState?.columnSorting,\n }),\n [\n pagination.pageIndex,\n pagination.pageSize,\n search,\n availableFilters,\n tableState?.columnSorting,\n ],\n );\n\n const getRowId = getRowIdProp ? getRowIdProp : (row: MRT_RowData) => row.id;\n\n // Update pagination state if props change\n useEffect(() => {\n setPagination({\n pageIndex: currentPage,\n pageSize: resultsPerPage,\n });\n }, [currentPage, resultsPerPage]);\n\n // Reset pagination if search or filters change\n useEffect(() => {\n setPagination((prev) => ({\n pageIndex: 1,\n pageSize: paginationType == \"loadMore\" ? resultsPerPage : prev.pageSize,\n }));\n }, [filters, paginationType, resultsPerPage, search]);\n\n // Fire onPaginationChange if pagination changes\n useEffect(() => {\n onPaginationChange?.(pagination);\n }, [onPaginationChange, pagination]);\n\n // Retrieve the data\n useEffect(() => {\n fetchData({\n dataQueryParams,\n errorMessageProp,\n getData,\n setData,\n setErrorMessage,\n // Only include setIsLoading if that's not being controlled manually\n setIsLoading: isLoadingProp ? undefined : setIsLoading,\n });\n }, [dataQueryParams, errorMessageProp, getData, isLoadingProp]);\n\n // When data is updated\n useEffect(() => {\n setIsEmpty(\n pagination.pageIndex === currentPage &&\n pagination.pageSize === resultsPerPage &&\n search === \"\" &&\n filters === initialFilters &&\n data.length === 0,\n );\n }, [\n currentPage,\n data,\n filters,\n initialFilters,\n pagination,\n resultsPerPage,\n search,\n ]);\n\n // Change loading, empty and noResults state on prop change\n useEffect(() => {\n setIsLoading((prevValue) => isLoadingProp ?? prevValue);\n }, [isLoadingProp]);\n\n useEffect(() => {\n setIsEmpty((prevValue) => isEmptyProp ?? prevValue);\n }, [isEmptyProp]);\n\n useEffect(() => {\n setIsNoResults((prevValue) => isNoResultsProp ?? prevValue);\n }, [isNoResultsProp]);\n\n const emptyState = useMemo(() => {\n const noResultsInnerContent = noResultsPlaceholder || (\n <EmptyState\n description={t(\"table.noresults.text\")}\n heading={t(\"table.noresults.heading\")}\n />\n );\n\n if (isEmpty) {\n return emptyPlaceholder || noResultsInnerContent;\n }\n\n if (isNoResults) {\n return noResultsInnerContent;\n }\n\n return;\n }, [noResultsPlaceholder, t, isEmpty, isNoResults, emptyPlaceholder]);\n\n const additionalActions = useMemo(() => {\n return (\n (metaText ||\n (currentLayout === \"table\" && tableLayoutOptions) ||\n availableLayouts.length > 1 ||\n additionalActionButton ||\n additionalActionMenuItems) && (\n <AdditionalActionsInner odysseyDesignTokens={odysseyDesignTokens}>\n {metaText && (\n <MetaTextContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Typography color=\"textSecondary\">{metaText}</Typography>\n </MetaTextContainer>\n )}\n\n {currentLayout === \"table\" && tableLayoutOptions && (\n <TableSettings\n setTableState={setTableState}\n tableLayoutOptions={tableLayoutOptions}\n tableState={tableState}\n />\n )}\n\n {availableLayouts.length > 1 && (\n <LayoutSwitcher\n availableLayouts={availableLayouts}\n currentLayout={currentLayout}\n setCurrentLayout={setCurrentLayout}\n />\n )}\n\n {additionalActionButton}\n\n {additionalActionMenuItems && (\n <MenuButton\n endIcon={<MoreIcon />}\n ariaLabel={t(\"table.moreactions.arialabel\")}\n buttonVariant=\"secondary\"\n menuAlignment=\"right\"\n >\n {additionalActionMenuItems}\n </MenuButton>\n )}\n </AdditionalActionsInner>\n )\n );\n }, [\n additionalActionButton,\n additionalActionMenuItems,\n availableLayouts,\n currentLayout,\n metaText,\n odysseyDesignTokens,\n tableLayoutOptions,\n tableState,\n t,\n ]);\n\n const enableVirtualization = useMemo(\n () => enableVirtualizationProp ?? paginationType === \"loadMore\",\n [enableVirtualizationProp, paginationType],\n );\n\n const { lastRow: lastRowOnPage } = usePagination({\n currentRowsCount: data.length,\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize,\n totalRows,\n });\n\n const rowReorderingUtilities = useRowReordering({\n totalRows,\n onReorderRows,\n data,\n setData,\n draggingRow,\n setDraggingRow,\n resultsPerPage: pagination.pageSize,\n page: pagination.pageIndex,\n });\n\n return (\n <DataViewContainer odysseyDesignTokens={odysseyDesignTokens}>\n {errorMessage && (\n <Box>\n <Callout severity=\"error\" text={errorMessage} />\n </Box>\n )}\n\n {shouldShowFilters && (\n <DataFilters\n additionalActions={additionalActions}\n filters={hasFilters ? availableFilters : undefined}\n hasSearchSubmitButton={hasSearchSubmitButton}\n isDisabled={isEmpty}\n onChangeFilters={hasFilters ? setFilters : undefined}\n onChangeSearch={hasSearch ? setSearch : undefined}\n searchDelayTime={searchDelayTime}\n />\n )}\n\n {(bulkActionMenuItems || hasRowSelection) && (\n <BulkActionsContainer>\n <BulkActionsMenu\n data={data}\n menuItems={bulkActionMenuItems}\n rowSelection={rowSelection}\n setRowSelection={setRowSelection}\n />\n {!shouldShowFilters && additionalActions}\n </BulkActionsContainer>\n )}\n\n {!shouldShowFilters &&\n !bulkActionMenuItems &&\n !hasRowSelection &&\n additionalActions && (\n <AdditionalActionsContainer odysseyDesignTokens={odysseyDesignTokens}>\n {additionalActions}\n </AdditionalActionsContainer>\n )}\n\n {currentLayout === \"table\" && tableLayoutOptions && (\n <TableLayoutContent\n columns={tableLayoutOptions.columns}\n data={data}\n draggingRow={draggingRow}\n emptyState={emptyState}\n enableVirtualization={enableVirtualization}\n getRowId={getRowId}\n hasRowReordering={hasRowReordering}\n hasRowSelection={hasRowSelection}\n isEmpty={isEmpty}\n isLoading={isLoading}\n isNoResults={isNoResults}\n isRowReorderingDisabled={isRowReorderingDisabled}\n onReorderRows={onReorderRows}\n pagination={pagination}\n rowReorderingUtilities={rowReorderingUtilities}\n rowSelection={rowSelection}\n setRowSelection={setRowSelection}\n setTableState={setTableState}\n tableLayoutOptions={tableLayoutOptions}\n tableState={tableState}\n totalRows={totalRows}\n />\n )}\n {(currentLayout === \"list\" || currentLayout === \"grid\") &&\n cardLayoutOptions && (\n <CardLayoutContent\n currentLayout={currentLayout}\n data={data}\n draggingRow={draggingRow}\n emptyState={emptyState}\n getRowId={getRowId}\n hasRowReordering={hasRowReordering}\n hasRowSelection={hasRowSelection}\n isEmpty={isEmpty}\n isLoading={isLoading}\n isNoResults={isNoResults}\n isRowReorderingDisabled={isRowReorderingDisabled}\n onReorderRows={onReorderRows}\n pagination={pagination}\n rowReorderingUtilities={rowReorderingUtilities}\n rowSelection={rowSelection}\n setRowSelection={setRowSelection}\n cardLayoutOptions={cardLayoutOptions}\n totalRows={totalRows}\n />\n )}\n\n {hasPagination && (\n <Pagination\n currentPageLabel={t(\"pagination.page\")}\n isDisabled={isEmpty}\n isMoreDisabled={isPaginationMoreDisabled}\n lastRow={lastRowOnPage}\n loadMoreLabel={t(\"pagination.loadmore\")}\n maxPageIndex={maxPages}\n maxPageSize={maxResultsPerPage}\n nextLabel={t(\"pagination.next\")}\n onPaginationChange={setPagination}\n pageIndex={pagination.pageIndex}\n pageSize={pagination.pageSize}\n previousLabel={t(\"pagination.previous\")}\n rowsPerPageLabel={t(\"pagination.rowsperpage\")}\n totalRows={totalRows}\n currentRowsCount={data.length}\n variant={paginationType}\n />\n )}\n </DataViewContainer>\n );\n};\n\nconst MemoizedDataView = memo(DataView);\nMemoizedDataView.displayName = \"DataView\";\n\nexport { MemoizedDataView as DataView };\n"],"mappings":"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"}
@@ -10,7 +10,7 @@
10
10
  * See the License for the specific language governing permissions and limitations under the License.
11
11
  */
12
12
 
13
- import { memo, useCallback, useMemo, useRef, useState } from "react";
13
+ import { memo, useCallback, useMemo, useRef, useState, useEffect } from "react";
14
14
  import styled from "@emotion/styled";
15
15
  import { MRT_TableContainer, useMaterialReactTable } from "material-react-table";
16
16
  import { useTranslation } from "react-i18next";
@@ -38,6 +38,7 @@ const TableLayoutContent = ({
38
38
  data,
39
39
  draggingRow,
40
40
  emptyState,
41
+ enableVirtualization,
41
42
  getRowId,
42
43
  hasRowReordering,
43
44
  hasRowSelection,
@@ -58,6 +59,7 @@ const TableLayoutContent = ({
58
59
  const [isTableContainerScrolledToStart, setIsTableContainerScrolledToStart] = useState(true);
59
60
  const [isTableContainerScrolledToEnd, setIsTableContainerScrolledToEnd] = useState(true);
60
61
  const [tableInnerContainerWidth, setTableInnerContainerWidth] = useState("100%");
62
+ const shouldUpdateScroll = useRef(false);
61
63
  const tableOuterContainerRef = useRef(null);
62
64
  const tableInnerContainerRef = useRef(null);
63
65
  const tableContentRef = useRef(null);
@@ -127,6 +129,17 @@ const TableLayoutContent = ({
127
129
  sx: innerWidthStyle,
128
130
  children: emptyState
129
131
  }), [innerWidthStyle, emptyState]);
132
+ useEffect(() => {
133
+ if (enableVirtualization) {
134
+ shouldUpdateScroll.current = true;
135
+ }
136
+ }, [enableVirtualization, pagination]);
137
+ useEffect(() => {
138
+ if (shouldUpdateScroll.current && tableContentRef.current && typeof tableInnerContainerRef.current?.scrollTo !== "undefined") {
139
+ tableInnerContainerRef.current?.scrollTo(0, tableContentRef.current.clientHeight);
140
+ shouldUpdateScroll.current = false;
141
+ }
142
+ }, [data]);
130
143
  const shouldDisplayRowActions = useMemo(() => hasRowReordering === true && onReorderRows || tableLayoutOptions.rowActionButtons || tableLayoutOptions.rowActionMenuItems ? true : false, [hasRowReordering, onReorderRows, tableLayoutOptions.rowActionButtons, tableLayoutOptions.rowActionMenuItems]);
131
144
  const dataTable = useMaterialReactTable({
132
145
  data: !isEmpty && !isNoResults ? data : [],
@@ -193,7 +206,8 @@ const TableLayoutContent = ({
193
206
  ref: tableInnerContainerRef
194
207
  },
195
208
  muiTableBodyProps: () => ({
196
- className: rowDensityClassName
209
+ className: rowDensityClassName,
210
+ tabIndex: enableVirtualization ? 0 : undefined
197
211
  }),
198
212
  enableColumnResizing: tableLayoutOptions.hasColumnResizing,
199
213
  defaultColumn: {
@@ -249,7 +263,7 @@ const TableLayoutContent = ({
249
263
  ...dragHandleText
250
264
  }),
251
265
  renderDetailPanel: tableLayoutOptions.renderDetailPanel,
252
- enableRowVirtualization: data.length >= 50,
266
+ enableRowVirtualization: enableVirtualization,
253
267
  muiTableHeadCellProps: ({
254
268
  column: currentColumn
255
269
  }) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"TableLayoutContent.js","names":["memo","useCallback","useMemo","useRef","useState","styled","MRT_TableContainer","useMaterialReactTable","useTranslation","ArrowDownIcon","ArrowUnsortedIcon","ChevronDownIcon","DragIndicatorIcon","Box","Button","dataTableImmutableSettings","displayColumnDefOptions","ScrollableTableContainer","MenuButton","MoreIcon","RowActions","useOdysseyDesignTokens","useScrollIndication","jsx","_jsx","jsxs","_jsxs","TextWrapper","whiteSpace","textOverflow","overflow","RowActionsContainer","display","TableLayoutContent","columns","data","draggingRow","emptyState","getRowId","hasRowReordering","hasRowSelection","isEmpty","isLoading","isNoResults","isRowReorderingDisabled","onReorderRows","pagination","rowReorderingUtilities","rowSelection","setRowSelection","setTableState","tableLayoutOptions","tableState","totalRows","isTableContainerScrolledToStart","setIsTableContainerScrolledToStart","isTableContainerScrolledToEnd","setIsTableContainerScrolledToEnd","tableInnerContainerWidth","setTableInnerContainerWidth","tableOuterContainerRef","tableInnerContainerRef","tableContentRef","tableInnerContainer","current","tableOuterContainer","odysseyDesignTokens","t","columnIds","map","column","accessorKey","columnOrder","filter","id","rowDensityClassName","rowDensity","defaultCell","cell","value","getValue","hasTextWrapping","columnDef","enableWrapping","children","draggableTableBodyRowClassName","dragHandleStyles","dragHandleText","handleDragHandleKeyDown","handleDragHandleOnDragCapture","handleDragHandleOnDragEnd","resetDraggingAndHoveredRow","updateRowOrder","renderRowActions","row","currentIndex","index","pageIndex","pageSize","rowActionButtons","rowActionMenuItems","ariaLabel","buttonVariant","endIcon","menuAlignment","size","rowIndex","undefined","innerWidthStyle","width","emptyStateContainer","sx","shouldDisplayRowActions","dataTable","state","sorting","columnSorting","columnVisibility","icons","ArrowDownwardIcon","DragHandleIcon","SyncAltIcon","ExpandMoreIcon","header","grow","muiTableBodyCellProps","align","className","muiTableHeadCellProps","visibility","variant","isDisabled","muiTableProps","ref","hasColumnResizing","muiTableContainerProps","muiTableBodyProps","enableColumnResizing","defaultColumn","Cell","enableRowActions","enableRowOrdering","Boolean","enableRowDragging","muiDetailPanelProps","paddingBlock","getIsExpanded","Spacing3","muiTableBodyRowProps","table","isDetailPanel","currentRowId","draggingRowId","hoveredRowId","getState","hoveredRow","border","backgroundColor","HueNeutralWhite","muiRowDragHandleProps","onKeyDown","event","onBlur","onDragEnd","onDragCapture","disabled","renderDetailPanel","enableRowVirtualization","length","currentColumn","find","sortedColumn","getIsResizing","enableSorting","hasSorting","onSortingChange","sortingUpdater","newSortVal","prevState","enableRowSelection","onRowSelectionChange","renderEmptyRowsFallback","localization","collapse","collapseAll","expand","expandAll","isScrollableEnd","isScrollableStart","MemoizedTableLayoutContent","displayName"],"sources":["../../../src/labs/DataView/TableLayoutContent.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n SetStateAction,\n memo,\n useCallback,\n useMemo,\n useRef,\n useState,\n ReactNode,\n Dispatch,\n ReactElement,\n} from \"react\";\nimport styled, { CSSObject } from \"@emotion/styled\";\nimport {\n MRT_Row,\n MRT_RowData,\n MRT_RowSelectionState,\n MRT_TableContainer,\n MRT_TableInstance,\n MRT_TableOptions,\n useMaterialReactTable,\n} from \"material-react-table\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n ArrowDownIcon,\n ArrowUnsortedIcon,\n ChevronDownIcon,\n DragIndicatorIcon,\n} from \"../../icons.generated\";\nimport { Box } from \"../../Box\";\nimport { Button } from \"../../Button\";\nimport { TableLayoutProps, TableState, UniversalProps } from \"./componentTypes\";\nimport { DataTableCell } from \"./dataTypes\";\nimport {\n dataTableImmutableSettings,\n displayColumnDefOptions,\n ScrollableTableContainer,\n} from \"./tableConstants\";\nimport { MenuButton } from \"../../MenuButton\";\nimport { MoreIcon } from \"../../icons.generated\";\nimport { RowActions } from \"./RowActions\";\nimport { useOdysseyDesignTokens } from \"../../OdysseyDesignTokensContext\";\nimport { useScrollIndication } from \"../../DataTable/useScrollIndication\";\n\nconst TextWrapper = styled(\"div\")(() => ({\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n}));\n\nconst RowActionsContainer = styled(\"div\")(() => ({\n display: \"flex\",\n}));\n\nexport type TableLayoutContentProps = {\n columns: TableLayoutProps[\"columns\"];\n data: MRT_RowData[];\n draggingRow?: MRT_Row<MRT_RowData> | null;\n emptyState: ReactNode;\n getRowId: UniversalProps[\"getRowId\"];\n hasRowReordering: UniversalProps[\"hasRowReordering\"];\n hasRowSelection: UniversalProps[\"hasRowSelection\"];\n isEmpty?: boolean;\n isLoading: boolean;\n isNoResults?: boolean;\n isRowReorderingDisabled?: boolean;\n onReorderRows: UniversalProps[\"onReorderRows\"];\n pagination: {\n pageIndex: number;\n pageSize: number;\n };\n rowReorderingUtilities: {\n dragHandleStyles: CSSObject;\n dragHandleText: {\n title: string;\n \"aria-label\": string;\n };\n draggableTableBodyRowClassName: ({\n currentRowId,\n draggingRowId,\n hoveredRowId,\n }: {\n currentRowId: string;\n draggingRowId?: string;\n hoveredRowId?: string;\n }) => string | undefined;\n handleDragHandleKeyDown: ({\n table,\n row,\n event,\n }: {\n table: MRT_TableInstance<MRT_RowData>;\n row: MRT_Row<MRT_RowData>;\n event: React.KeyboardEvent<HTMLButtonElement>;\n }) => void;\n handleDragHandleOnDragCapture: (\n table: MRT_TableInstance<MRT_RowData>,\n ) => void;\n handleDragHandleOnDragEnd: (table: MRT_TableInstance<MRT_RowData>) => void;\n resetDraggingAndHoveredRow: (table: MRT_TableInstance<MRT_RowData>) => void;\n updateRowOrder: ({\n rowId,\n newRowIndex,\n }: {\n rowId: string;\n newRowIndex: number;\n }) => void;\n };\n rowSelection: MRT_RowSelectionState;\n setRowSelection: Dispatch<SetStateAction<MRT_RowSelectionState>>;\n setTableState: Dispatch<SetStateAction<TableState>>;\n tableLayoutOptions: TableLayoutProps;\n tableState: TableState;\n totalRows: UniversalProps[\"totalRows\"];\n};\n\nconst TableLayoutContent = ({\n columns,\n data,\n draggingRow,\n emptyState,\n getRowId,\n hasRowReordering,\n hasRowSelection,\n isEmpty,\n isLoading,\n isNoResults,\n isRowReorderingDisabled,\n onReorderRows,\n pagination,\n rowReorderingUtilities,\n rowSelection,\n setRowSelection,\n setTableState,\n tableLayoutOptions,\n tableState,\n totalRows,\n}: TableLayoutContentProps) => {\n const [isTableContainerScrolledToStart, setIsTableContainerScrolledToStart] =\n useState(true);\n const [isTableContainerScrolledToEnd, setIsTableContainerScrolledToEnd] =\n useState(true);\n const [tableInnerContainerWidth, setTableInnerContainerWidth] =\n useState<string>(\"100%\");\n const tableOuterContainerRef = useRef<HTMLDivElement>(null);\n const tableInnerContainerRef = useRef<HTMLDivElement>(null);\n const tableContentRef = useRef<HTMLTableElement>(null);\n\n useScrollIndication({\n setIsTableContainerScrolledToEnd: setIsTableContainerScrolledToEnd,\n setIsTableContainerScrolledToStart: setIsTableContainerScrolledToStart,\n setTableInnerContainerWidth: setTableInnerContainerWidth,\n tableInnerContainer: tableInnerContainerRef.current,\n tableOuterContainer: tableOuterContainerRef.current,\n });\n\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const columnIds = useMemo(() => {\n return columns.map((column) => column.accessorKey) ?? [];\n }, [columns]);\n\n const columnOrder = useMemo(\n () => [\n \"mrt-row-drag\",\n \"mrt-row-select\",\n \"mrt-row-expand\",\n ...(columnIds?.filter((id): id is string => typeof id === \"string\") ||\n []),\n \"mrt-row-actions\",\n ],\n [columnIds],\n );\n\n const rowDensityClassName = useMemo(() => {\n return tableState.rowDensity === \"spacious\"\n ? \"MuiTableBody-spacious\"\n : tableState.rowDensity === \"compact\"\n ? \"MuiTableBody-compact\"\n : \"MuiTableBody-default\";\n }, [tableState]);\n\n const defaultCell = useCallback<\n ({ cell }: { cell: DataTableCell<MRT_RowData> }) => ReactElement | string\n >(({ cell }) => {\n const value = cell.getValue<string>();\n const hasTextWrapping =\n cell.column.columnDef.hasTextWrapping ||\n cell.column.columnDef.enableWrapping;\n return hasTextWrapping ? value : <TextWrapper>{value}</TextWrapper>;\n }, []);\n\n const {\n draggableTableBodyRowClassName,\n dragHandleStyles,\n dragHandleText,\n handleDragHandleKeyDown,\n handleDragHandleOnDragCapture,\n handleDragHandleOnDragEnd,\n resetDraggingAndHoveredRow,\n updateRowOrder,\n } = rowReorderingUtilities;\n\n const renderRowActions = useCallback(\n ({ row }: { row: MRT_Row<MRT_RowData> }) => {\n const currentIndex =\n row.index + (pagination.pageIndex - 1) * pagination.pageSize;\n return (\n <RowActionsContainer>\n {tableLayoutOptions.rowActionButtons?.(row)}\n {(tableLayoutOptions.rowActionMenuItems || hasRowReordering) && (\n <MenuButton\n ariaLabel={t(\"table.moreactions.arialabel\")}\n buttonVariant=\"floating\"\n endIcon={<MoreIcon />}\n menuAlignment=\"right\"\n size=\"small\"\n >\n <RowActions\n isRowReorderingDisabled={isRowReorderingDisabled}\n row={row}\n rowActionMenuItems={tableLayoutOptions.rowActionMenuItems}\n rowIndex={currentIndex}\n totalRows={totalRows}\n updateRowOrder={\n hasRowReordering && onReorderRows ? updateRowOrder : undefined\n }\n />\n </MenuButton>\n )}\n </RowActionsContainer>\n );\n },\n [\n hasRowReordering,\n isRowReorderingDisabled,\n onReorderRows,\n pagination.pageIndex,\n pagination.pageSize,\n t,\n tableLayoutOptions,\n totalRows,\n updateRowOrder,\n ],\n );\n\n const innerWidthStyle = useMemo(\n () => ({ width: tableInnerContainerWidth }),\n [tableInnerContainerWidth],\n );\n\n const emptyStateContainer = useCallback(\n () => <Box sx={innerWidthStyle}>{emptyState}</Box>,\n [innerWidthStyle, emptyState],\n );\n\n const shouldDisplayRowActions = useMemo(\n () =>\n (hasRowReordering === true && onReorderRows) ||\n tableLayoutOptions.rowActionButtons ||\n tableLayoutOptions.rowActionMenuItems\n ? true\n : false,\n [\n hasRowReordering,\n onReorderRows,\n tableLayoutOptions.rowActionButtons,\n tableLayoutOptions.rowActionMenuItems,\n ],\n );\n\n const dataTable = useMaterialReactTable({\n data: !isEmpty && !isNoResults ? data : [],\n columns,\n getRowId,\n state: {\n sorting: tableState.columnSorting,\n columnVisibility: tableState.columnVisibility,\n isLoading: isLoading,\n rowSelection: rowSelection,\n columnOrder: columnOrder,\n },\n icons: {\n ArrowDownwardIcon: ArrowDownIcon,\n DragHandleIcon: DragIndicatorIcon,\n SyncAltIcon: ArrowUnsortedIcon,\n ExpandMoreIcon: ChevronDownIcon,\n },\n ...dataTableImmutableSettings,\n displayColumnDefOptions: {\n ...(displayColumnDefOptions satisfies Partial<\n MRT_TableOptions<MRT_RowData>[\"displayColumnDefOptions\"]\n >),\n \"mrt-row-actions\": {\n header: \"\",\n grow: true,\n muiTableBodyCellProps: {\n align: \"right\" as const,\n sx: {\n overflow: \"visible\",\n width: \"unset\",\n },\n className: \"ods-actions-cell\",\n },\n muiTableHeadCellProps: {\n align: \"right\" as const,\n sx: {\n width: \"unset\",\n },\n className: \"ods-actions-cell\",\n children: (\n <Box sx={{ display: \"flex\", visibility: \"hidden\" }}>\n {tableLayoutOptions.rowActionButtons &&\n tableLayoutOptions.rowActionButtons({ id: null })}\n {((hasRowReordering === true && onReorderRows) ||\n tableLayoutOptions.rowActionMenuItems) && (\n <Box>\n <Button\n endIcon={<MoreIcon />}\n size=\"small\"\n variant=\"floating\"\n ariaLabel={t(\"table.moreactions.arialabel\")}\n isDisabled\n />\n </Box>\n )}\n </Box>\n ),\n },\n },\n },\n muiTableProps: {\n ref: tableContentRef,\n className:\n !shouldDisplayRowActions && tableLayoutOptions.hasColumnResizing\n ? \"ods-hide-spacer-column\"\n : \"\",\n },\n muiTableContainerProps: {\n ref: tableInnerContainerRef,\n },\n muiTableBodyProps: () => ({\n className: rowDensityClassName,\n }),\n enableColumnResizing: tableLayoutOptions.hasColumnResizing,\n defaultColumn: {\n Cell: defaultCell,\n },\n enableRowActions:\n (hasRowReordering === true && onReorderRows) ||\n tableLayoutOptions.rowActionButtons ||\n tableLayoutOptions.rowActionMenuItems\n ? true\n : false,\n renderRowActions: ({ row }) => renderRowActions({ row }),\n enableRowOrdering: hasRowReordering && Boolean(onReorderRows),\n enableRowDragging: hasRowReordering && Boolean(onReorderRows),\n muiDetailPanelProps: ({ row }) => ({\n sx: {\n paddingBlock: row.getIsExpanded()\n ? `${odysseyDesignTokens.Spacing3} !important`\n : undefined,\n },\n }),\n muiTableBodyRowProps: ({ table, row, isDetailPanel }) => ({\n className: draggableTableBodyRowClassName({\n currentRowId: row.id,\n draggingRowId: draggingRow?.id,\n hoveredRowId: table.getState().hoveredRow?.id,\n }),\n sx: isDetailPanel\n ? {\n paddingBlock: \"0 !important\",\n border: 0,\n [\"&:hover\"]: {\n backgroundColor: `${odysseyDesignTokens.HueNeutralWhite} !important`,\n },\n }\n : {},\n }),\n muiRowDragHandleProps: ({ table, row }) => ({\n onKeyDown: (event) => handleDragHandleKeyDown({ table, row, event }),\n onBlur: () => resetDraggingAndHoveredRow(table),\n onDragEnd: () => handleDragHandleOnDragEnd(table),\n onDragCapture: () => handleDragHandleOnDragCapture(table),\n disabled: isRowReorderingDisabled,\n sx: dragHandleStyles,\n ...dragHandleText,\n }),\n renderDetailPanel: tableLayoutOptions.renderDetailPanel,\n enableRowVirtualization: data.length >= 50,\n muiTableHeadCellProps: ({ column: currentColumn }) => ({\n className: tableState.columnSorting.find(\n (sortedColumn) => sortedColumn.id === currentColumn.id,\n )\n ? \"isSorted\"\n : \"isUnsorted\",\n }),\n muiTableBodyCellProps: ({ column }) => ({\n className: column.getIsResizing() ? \"isResizing\" : \"\",\n }),\n enableSorting: tableLayoutOptions.hasSorting === true, // I don't know why this needs to be true, but it still works if undefined otherwise\n onSortingChange: (sortingUpdater) => {\n const newSortVal =\n typeof sortingUpdater === \"function\"\n ? sortingUpdater(tableState.columnSorting)\n : tableState.columnSorting;\n setTableState((prevState) => ({\n ...prevState,\n columnSorting: newSortVal,\n }));\n },\n enableRowSelection: hasRowSelection,\n onRowSelectionChange: setRowSelection,\n renderEmptyRowsFallback: emptyStateContainer,\n localization: {\n collapse: t(\"table.rowexpansion.collapse\"),\n collapseAll: t(\"table.rowexpansion.collapseall\"),\n expand: t(\"table.rowexpansion.expand\"),\n expandAll: t(\"table.rowexpansion.expandall\"),\n },\n });\n\n return (\n <ScrollableTableContainer\n isScrollableEnd={!isTableContainerScrolledToEnd}\n isScrollableStart={!isTableContainerScrolledToStart}\n odysseyDesignTokens={odysseyDesignTokens}\n ref={tableOuterContainerRef}\n >\n <MRT_TableContainer table={dataTable} />\n </ScrollableTableContainer>\n );\n};\n\nconst MemoizedTableLayoutContent = memo(TableLayoutContent);\nMemoizedTableLayoutContent.displayName = \"TableLayoutContent\";\n\nexport { MemoizedTableLayoutContent as TableLayoutContent };\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableLayoutContent.js","names":["memo","useCallback","useMemo","useRef","useState","useEffect","styled","MRT_TableContainer","useMaterialReactTable","useTranslation","ArrowDownIcon","ArrowUnsortedIcon","ChevronDownIcon","DragIndicatorIcon","Box","Button","dataTableImmutableSettings","displayColumnDefOptions","ScrollableTableContainer","MenuButton","MoreIcon","RowActions","useOdysseyDesignTokens","useScrollIndication","jsx","_jsx","jsxs","_jsxs","TextWrapper","whiteSpace","textOverflow","overflow","RowActionsContainer","display","TableLayoutContent","columns","data","draggingRow","emptyState","enableVirtualization","getRowId","hasRowReordering","hasRowSelection","isEmpty","isLoading","isNoResults","isRowReorderingDisabled","onReorderRows","pagination","rowReorderingUtilities","rowSelection","setRowSelection","setTableState","tableLayoutOptions","tableState","totalRows","isTableContainerScrolledToStart","setIsTableContainerScrolledToStart","isTableContainerScrolledToEnd","setIsTableContainerScrolledToEnd","tableInnerContainerWidth","setTableInnerContainerWidth","shouldUpdateScroll","tableOuterContainerRef","tableInnerContainerRef","tableContentRef","tableInnerContainer","current","tableOuterContainer","odysseyDesignTokens","t","columnIds","map","column","accessorKey","columnOrder","filter","id","rowDensityClassName","rowDensity","defaultCell","cell","value","getValue","hasTextWrapping","columnDef","enableWrapping","children","draggableTableBodyRowClassName","dragHandleStyles","dragHandleText","handleDragHandleKeyDown","handleDragHandleOnDragCapture","handleDragHandleOnDragEnd","resetDraggingAndHoveredRow","updateRowOrder","renderRowActions","row","currentIndex","index","pageIndex","pageSize","rowActionButtons","rowActionMenuItems","ariaLabel","buttonVariant","endIcon","menuAlignment","size","rowIndex","undefined","innerWidthStyle","width","emptyStateContainer","sx","scrollTo","clientHeight","shouldDisplayRowActions","dataTable","state","sorting","columnSorting","columnVisibility","icons","ArrowDownwardIcon","DragHandleIcon","SyncAltIcon","ExpandMoreIcon","header","grow","muiTableBodyCellProps","align","className","muiTableHeadCellProps","visibility","variant","isDisabled","muiTableProps","ref","hasColumnResizing","muiTableContainerProps","muiTableBodyProps","tabIndex","enableColumnResizing","defaultColumn","Cell","enableRowActions","enableRowOrdering","Boolean","enableRowDragging","muiDetailPanelProps","paddingBlock","getIsExpanded","Spacing3","muiTableBodyRowProps","table","isDetailPanel","currentRowId","draggingRowId","hoveredRowId","getState","hoveredRow","border","backgroundColor","HueNeutralWhite","muiRowDragHandleProps","onKeyDown","event","onBlur","onDragEnd","onDragCapture","disabled","renderDetailPanel","enableRowVirtualization","currentColumn","find","sortedColumn","getIsResizing","enableSorting","hasSorting","onSortingChange","sortingUpdater","newSortVal","prevState","enableRowSelection","onRowSelectionChange","renderEmptyRowsFallback","localization","collapse","collapseAll","expand","expandAll","isScrollableEnd","isScrollableStart","MemoizedTableLayoutContent","displayName"],"sources":["../../../src/labs/DataView/TableLayoutContent.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n SetStateAction,\n memo,\n useCallback,\n useMemo,\n useRef,\n useState,\n ReactNode,\n Dispatch,\n ReactElement,\n useEffect,\n} from \"react\";\nimport styled, { CSSObject } from \"@emotion/styled\";\nimport {\n MRT_Row,\n MRT_RowData,\n MRT_RowSelectionState,\n MRT_TableContainer,\n MRT_TableInstance,\n MRT_TableOptions,\n useMaterialReactTable,\n} from \"material-react-table\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n ArrowDownIcon,\n ArrowUnsortedIcon,\n ChevronDownIcon,\n DragIndicatorIcon,\n} from \"../../icons.generated\";\nimport { Box } from \"../../Box\";\nimport { Button } from \"../../Button\";\nimport { TableLayoutProps, TableState, UniversalProps } from \"./componentTypes\";\nimport { DataTableCell } from \"./dataTypes\";\nimport {\n dataTableImmutableSettings,\n displayColumnDefOptions,\n ScrollableTableContainer,\n} from \"./tableConstants\";\nimport { MenuButton } from \"../../MenuButton\";\nimport { MoreIcon } from \"../../icons.generated\";\nimport { RowActions } from \"./RowActions\";\nimport { useOdysseyDesignTokens } from \"../../OdysseyDesignTokensContext\";\nimport { useScrollIndication } from \"../../DataTable/useScrollIndication\";\n\nconst TextWrapper = styled(\"div\")(() => ({\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n}));\n\nconst RowActionsContainer = styled(\"div\")(() => ({\n display: \"flex\",\n}));\n\nexport type TableLayoutContentProps = {\n columns: TableLayoutProps[\"columns\"];\n data: MRT_RowData[];\n draggingRow?: MRT_Row<MRT_RowData> | null;\n emptyState: ReactNode;\n enableVirtualization?: boolean;\n getRowId: UniversalProps[\"getRowId\"];\n hasRowReordering: UniversalProps[\"hasRowReordering\"];\n hasRowSelection: UniversalProps[\"hasRowSelection\"];\n isEmpty?: boolean;\n isLoading: boolean;\n isNoResults?: boolean;\n isRowReorderingDisabled?: boolean;\n onReorderRows: UniversalProps[\"onReorderRows\"];\n pagination: {\n pageIndex: number;\n pageSize: number;\n };\n rowReorderingUtilities: {\n dragHandleStyles: CSSObject;\n dragHandleText: {\n title: string;\n \"aria-label\": string;\n };\n draggableTableBodyRowClassName: ({\n currentRowId,\n draggingRowId,\n hoveredRowId,\n }: {\n currentRowId: string;\n draggingRowId?: string;\n hoveredRowId?: string;\n }) => string | undefined;\n handleDragHandleKeyDown: ({\n table,\n row,\n event,\n }: {\n table: MRT_TableInstance<MRT_RowData>;\n row: MRT_Row<MRT_RowData>;\n event: React.KeyboardEvent<HTMLButtonElement>;\n }) => void;\n handleDragHandleOnDragCapture: (\n table: MRT_TableInstance<MRT_RowData>,\n ) => void;\n handleDragHandleOnDragEnd: (table: MRT_TableInstance<MRT_RowData>) => void;\n resetDraggingAndHoveredRow: (table: MRT_TableInstance<MRT_RowData>) => void;\n updateRowOrder: ({\n rowId,\n newRowIndex,\n }: {\n rowId: string;\n newRowIndex: number;\n }) => void;\n };\n rowSelection: MRT_RowSelectionState;\n setRowSelection: Dispatch<SetStateAction<MRT_RowSelectionState>>;\n setTableState: Dispatch<SetStateAction<TableState>>;\n tableLayoutOptions: TableLayoutProps;\n tableState: TableState;\n totalRows: UniversalProps[\"totalRows\"];\n};\n\nconst TableLayoutContent = ({\n columns,\n data,\n draggingRow,\n emptyState,\n enableVirtualization,\n getRowId,\n hasRowReordering,\n hasRowSelection,\n isEmpty,\n isLoading,\n isNoResults,\n isRowReorderingDisabled,\n onReorderRows,\n pagination,\n rowReorderingUtilities,\n rowSelection,\n setRowSelection,\n setTableState,\n tableLayoutOptions,\n tableState,\n totalRows,\n}: TableLayoutContentProps) => {\n const [isTableContainerScrolledToStart, setIsTableContainerScrolledToStart] =\n useState(true);\n const [isTableContainerScrolledToEnd, setIsTableContainerScrolledToEnd] =\n useState(true);\n const [tableInnerContainerWidth, setTableInnerContainerWidth] =\n useState<string>(\"100%\");\n const shouldUpdateScroll = useRef<boolean>(false);\n const tableOuterContainerRef = useRef<HTMLDivElement>(null);\n const tableInnerContainerRef = useRef<HTMLDivElement>(null);\n const tableContentRef = useRef<HTMLTableElement>(null);\n\n useScrollIndication({\n setIsTableContainerScrolledToEnd: setIsTableContainerScrolledToEnd,\n setIsTableContainerScrolledToStart: setIsTableContainerScrolledToStart,\n setTableInnerContainerWidth: setTableInnerContainerWidth,\n tableInnerContainer: tableInnerContainerRef.current,\n tableOuterContainer: tableOuterContainerRef.current,\n });\n\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const columnIds = useMemo(() => {\n return columns.map((column) => column.accessorKey) ?? [];\n }, [columns]);\n\n const columnOrder = useMemo(\n () => [\n \"mrt-row-drag\",\n \"mrt-row-select\",\n \"mrt-row-expand\",\n ...(columnIds?.filter((id): id is string => typeof id === \"string\") ||\n []),\n \"mrt-row-actions\",\n ],\n [columnIds],\n );\n\n const rowDensityClassName = useMemo(() => {\n return tableState.rowDensity === \"spacious\"\n ? \"MuiTableBody-spacious\"\n : tableState.rowDensity === \"compact\"\n ? \"MuiTableBody-compact\"\n : \"MuiTableBody-default\";\n }, [tableState]);\n\n const defaultCell = useCallback<\n ({ cell }: { cell: DataTableCell<MRT_RowData> }) => ReactElement | string\n >(({ cell }) => {\n const value = cell.getValue<string>();\n const hasTextWrapping =\n cell.column.columnDef.hasTextWrapping ||\n cell.column.columnDef.enableWrapping;\n return hasTextWrapping ? value : <TextWrapper>{value}</TextWrapper>;\n }, []);\n\n const {\n draggableTableBodyRowClassName,\n dragHandleStyles,\n dragHandleText,\n handleDragHandleKeyDown,\n handleDragHandleOnDragCapture,\n handleDragHandleOnDragEnd,\n resetDraggingAndHoveredRow,\n updateRowOrder,\n } = rowReorderingUtilities;\n\n const renderRowActions = useCallback(\n ({ row }: { row: MRT_Row<MRT_RowData> }) => {\n const currentIndex =\n row.index + (pagination.pageIndex - 1) * pagination.pageSize;\n return (\n <RowActionsContainer>\n {tableLayoutOptions.rowActionButtons?.(row)}\n {(tableLayoutOptions.rowActionMenuItems || hasRowReordering) && (\n <MenuButton\n ariaLabel={t(\"table.moreactions.arialabel\")}\n buttonVariant=\"floating\"\n endIcon={<MoreIcon />}\n menuAlignment=\"right\"\n size=\"small\"\n >\n <RowActions\n isRowReorderingDisabled={isRowReorderingDisabled}\n row={row}\n rowActionMenuItems={tableLayoutOptions.rowActionMenuItems}\n rowIndex={currentIndex}\n totalRows={totalRows}\n updateRowOrder={\n hasRowReordering && onReorderRows ? updateRowOrder : undefined\n }\n />\n </MenuButton>\n )}\n </RowActionsContainer>\n );\n },\n [\n hasRowReordering,\n isRowReorderingDisabled,\n onReorderRows,\n pagination.pageIndex,\n pagination.pageSize,\n t,\n tableLayoutOptions,\n totalRows,\n updateRowOrder,\n ],\n );\n\n const innerWidthStyle = useMemo(\n () => ({ width: tableInnerContainerWidth }),\n [tableInnerContainerWidth],\n );\n\n const emptyStateContainer = useCallback(\n () => <Box sx={innerWidthStyle}>{emptyState}</Box>,\n [innerWidthStyle, emptyState],\n );\n\n // Scroll to the bottom as soon as data loads after clicking the\n // loadMore pagination button\n useEffect(() => {\n if (enableVirtualization) {\n shouldUpdateScroll.current = true;\n }\n }, [enableVirtualization, pagination]);\n\n useEffect(() => {\n if (\n shouldUpdateScroll.current &&\n tableContentRef.current &&\n typeof tableInnerContainerRef.current?.scrollTo !== \"undefined\"\n ) {\n tableInnerContainerRef.current?.scrollTo(\n 0,\n tableContentRef.current.clientHeight,\n );\n shouldUpdateScroll.current = false;\n }\n }, [data]);\n\n const shouldDisplayRowActions = useMemo(\n () =>\n (hasRowReordering === true && onReorderRows) ||\n tableLayoutOptions.rowActionButtons ||\n tableLayoutOptions.rowActionMenuItems\n ? true\n : false,\n [\n hasRowReordering,\n onReorderRows,\n tableLayoutOptions.rowActionButtons,\n tableLayoutOptions.rowActionMenuItems,\n ],\n );\n\n const dataTable = useMaterialReactTable({\n data: !isEmpty && !isNoResults ? data : [],\n columns,\n getRowId,\n state: {\n sorting: tableState.columnSorting,\n columnVisibility: tableState.columnVisibility,\n isLoading: isLoading,\n rowSelection: rowSelection,\n columnOrder: columnOrder,\n },\n icons: {\n ArrowDownwardIcon: ArrowDownIcon,\n DragHandleIcon: DragIndicatorIcon,\n SyncAltIcon: ArrowUnsortedIcon,\n ExpandMoreIcon: ChevronDownIcon,\n },\n ...dataTableImmutableSettings,\n displayColumnDefOptions: {\n ...(displayColumnDefOptions satisfies Partial<\n MRT_TableOptions<MRT_RowData>[\"displayColumnDefOptions\"]\n >),\n \"mrt-row-actions\": {\n header: \"\",\n grow: true,\n muiTableBodyCellProps: {\n align: \"right\" as const,\n sx: {\n overflow: \"visible\",\n width: \"unset\",\n },\n className: \"ods-actions-cell\",\n },\n muiTableHeadCellProps: {\n align: \"right\" as const,\n sx: {\n width: \"unset\",\n },\n className: \"ods-actions-cell\",\n children: (\n <Box sx={{ display: \"flex\", visibility: \"hidden\" }}>\n {tableLayoutOptions.rowActionButtons &&\n tableLayoutOptions.rowActionButtons({ id: null })}\n {((hasRowReordering === true && onReorderRows) ||\n tableLayoutOptions.rowActionMenuItems) && (\n <Box>\n <Button\n endIcon={<MoreIcon />}\n size=\"small\"\n variant=\"floating\"\n ariaLabel={t(\"table.moreactions.arialabel\")}\n isDisabled\n />\n </Box>\n )}\n </Box>\n ),\n },\n },\n },\n muiTableProps: {\n ref: tableContentRef,\n className:\n !shouldDisplayRowActions && tableLayoutOptions.hasColumnResizing\n ? \"ods-hide-spacer-column\"\n : \"\",\n },\n muiTableContainerProps: {\n ref: tableInnerContainerRef,\n },\n muiTableBodyProps: () => ({\n className: rowDensityClassName,\n tabIndex: enableVirtualization ? 0 : undefined,\n }),\n enableColumnResizing: tableLayoutOptions.hasColumnResizing,\n defaultColumn: {\n Cell: defaultCell,\n },\n enableRowActions:\n (hasRowReordering === true && onReorderRows) ||\n tableLayoutOptions.rowActionButtons ||\n tableLayoutOptions.rowActionMenuItems\n ? true\n : false,\n renderRowActions: ({ row }) => renderRowActions({ row }),\n enableRowOrdering: hasRowReordering && Boolean(onReorderRows),\n enableRowDragging: hasRowReordering && Boolean(onReorderRows),\n muiDetailPanelProps: ({ row }) => ({\n sx: {\n paddingBlock: row.getIsExpanded()\n ? `${odysseyDesignTokens.Spacing3} !important`\n : undefined,\n },\n }),\n muiTableBodyRowProps: ({ table, row, isDetailPanel }) => ({\n className: draggableTableBodyRowClassName({\n currentRowId: row.id,\n draggingRowId: draggingRow?.id,\n hoveredRowId: table.getState().hoveredRow?.id,\n }),\n sx: isDetailPanel\n ? {\n paddingBlock: \"0 !important\",\n border: 0,\n [\"&:hover\"]: {\n backgroundColor: `${odysseyDesignTokens.HueNeutralWhite} !important`,\n },\n }\n : {},\n }),\n muiRowDragHandleProps: ({ table, row }) => ({\n onKeyDown: (event) => handleDragHandleKeyDown({ table, row, event }),\n onBlur: () => resetDraggingAndHoveredRow(table),\n onDragEnd: () => handleDragHandleOnDragEnd(table),\n onDragCapture: () => handleDragHandleOnDragCapture(table),\n disabled: isRowReorderingDisabled,\n sx: dragHandleStyles,\n ...dragHandleText,\n }),\n renderDetailPanel: tableLayoutOptions.renderDetailPanel,\n enableRowVirtualization: enableVirtualization,\n muiTableHeadCellProps: ({ column: currentColumn }) => ({\n className: tableState.columnSorting.find(\n (sortedColumn) => sortedColumn.id === currentColumn.id,\n )\n ? \"isSorted\"\n : \"isUnsorted\",\n }),\n muiTableBodyCellProps: ({ column }) => ({\n className: column.getIsResizing() ? \"isResizing\" : \"\",\n }),\n enableSorting: tableLayoutOptions.hasSorting === true, // I don't know why this needs to be true, but it still works if undefined otherwise\n onSortingChange: (sortingUpdater) => {\n const newSortVal =\n typeof sortingUpdater === \"function\"\n ? sortingUpdater(tableState.columnSorting)\n : tableState.columnSorting;\n setTableState((prevState) => ({\n ...prevState,\n columnSorting: newSortVal,\n }));\n },\n enableRowSelection: hasRowSelection,\n onRowSelectionChange: setRowSelection,\n renderEmptyRowsFallback: emptyStateContainer,\n localization: {\n collapse: t(\"table.rowexpansion.collapse\"),\n collapseAll: t(\"table.rowexpansion.collapseall\"),\n expand: t(\"table.rowexpansion.expand\"),\n expandAll: t(\"table.rowexpansion.expandall\"),\n },\n });\n\n return (\n <ScrollableTableContainer\n isScrollableEnd={!isTableContainerScrolledToEnd}\n isScrollableStart={!isTableContainerScrolledToStart}\n odysseyDesignTokens={odysseyDesignTokens}\n ref={tableOuterContainerRef}\n >\n <MRT_TableContainer table={dataTable} />\n </ScrollableTableContainer>\n );\n};\n\nconst MemoizedTableLayoutContent = memo(TableLayoutContent);\nMemoizedTableLayoutContent.displayName = \"TableLayoutContent\";\n\nexport { MemoizedTableLayoutContent as TableLayoutContent };\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"componentTypes.js","names":[],"sources":["../../../src/labs/DataView/componentTypes.ts"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n MRT_DensityState,\n MRT_RowData,\n MRT_RowSelectionState,\n MRT_SortingState,\n MRT_TableOptions,\n MRT_VisibilityState,\n} from \"material-react-table\";\n\nimport { availableLayouts, availableCardLayouts } from \"./constants\";\nimport { DataFilter } from \"../DataFilters\";\nimport {\n DataGetDataType,\n DataOnReorderRowsType,\n DataRowSelectionState,\n DataTableColumn,\n} from \"./dataTypes\";\nimport { DataTableRowActionsProps } from \"../../DataTable/DataTableRowActions\";\nimport { MenuButtonProps } from \"../..\";\nimport { paginationTypeValues } from \"../DataTablePagination\";\nimport { ReactNode } from \"react\";\nimport { DataCardProps } from \"./DataCard\";\n\nexport type DataLayout = (typeof availableLayouts)[number];\nexport type CardLayout = (typeof availableCardLayouts)[number];\n\nexport type AvailableLayouts = DataLayout[];\nexport type AvailableCardLayouts = CardLayout[];\n\nexport type UniversalProps = {\n additionalActionButton?: ReactNode;\n additionalActionMenuItems?: ReactNode;\n bulkActionMenuItems?: (\n selectedRows: MRT_RowSelectionState,\n ) => MenuButtonProps[\"children\"];\n currentPage?: number;\n emptyPlaceholder?: ReactNode;\n errorMessage?: string;\n filters?: Array<DataFilter | DataTableColumn<MRT_RowData> | string>;\n getData: ({\n page,\n resultsPerPage,\n search,\n filters,\n sort,\n }: DataGetDataType) => MRT_RowData[] | Promise<MRT_RowData[]>;\n getRowId?: MRT_TableOptions<MRT_RowData>[\"getRowId\"];\n hasFilters?: boolean;\n hasPagination?: boolean;\n hasRowReordering?: boolean;\n hasRowSelection?: boolean;\n hasSearch?: boolean;\n hasSearchSubmitButton?: boolean;\n isEmpty?: boolean;\n isLoading?: boolean;\n isNoResults?: boolean;\n isPaginationMoreDisabled?: boolean;\n isRowReorderingDisabled?: boolean;\n maxPages?: number;\n maxResultsPerPage?: number;\n noResultsPlaceholder?: ReactNode;\n onChangeRowSelection?: (rowSelection: DataRowSelectionState) => void;\n onReorderRows?: ({ rowId, newRowIndex }: DataOnReorderRowsType) => void;\n paginationType?: (typeof paginationTypeValues)[number];\n resultsPerPage?: number;\n searchDelayTime?: number;\n totalRows?: number;\n};\n\nexport type TableLayoutProps = {\n columns: DataTableColumn<MRT_RowData>[];\n hasChangeableDensity?: boolean;\n hasColumnResizing?: boolean;\n hasColumnVisibility?: boolean;\n hasSorting?: boolean;\n initialDensity?: MRT_DensityState;\n renderDetailPanel?: MRT_TableOptions<MRT_RowData>[\"renderDetailPanel\"];\n rowActionButtons?: DataTableRowActionsProps[\"rowActionButtons\"];\n rowActionMenuItems?: DataTableRowActionsProps[\"rowActionMenuItems\"];\n};\n\nexport type CardLayoutProps = {\n itemProps: (row: MRT_RowData) => DataCardProps;\n maxGridColumns?: number;\n renderDetailPanel?: (props: { row: MRT_RowData }) => ReactNode;\n rowActionMenuItems?: DataTableRowActionsProps[\"rowActionMenuItems\"];\n};\n\nexport type ViewProps<L extends DataLayout> = {\n availableLayouts?: L[];\n initialLayout?: L;\n cardLayoutOptions?: CardLayoutProps;\n tableLayoutOptions?: TableLayoutProps;\n};\n\nexport type TableState = {\n columnSorting: MRT_SortingState;\n columnVisibility: MRT_VisibilityState;\n rowDensity?: MRT_DensityState;\n};\n"],"mappings":""}
1
+ {"version":3,"file":"componentTypes.js","names":[],"sources":["../../../src/labs/DataView/componentTypes.ts"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n MRT_DensityState,\n MRT_RowData,\n MRT_RowSelectionState,\n MRT_SortingState,\n MRT_TableOptions,\n MRT_VisibilityState,\n} from \"material-react-table\";\n\nimport { availableLayouts, availableCardLayouts } from \"./constants\";\nimport { DataFilter } from \"../DataFilters\";\nimport {\n DataGetDataType,\n DataOnReorderRowsType,\n DataRowSelectionState,\n DataTableColumn,\n} from \"./dataTypes\";\nimport { DataTableRowActionsProps } from \"../../DataTable/DataTableRowActions\";\nimport { MenuButtonProps } from \"../..\";\nimport { paginationTypeValues } from \"../DataTablePagination\";\nimport { ReactNode } from \"react\";\nimport { DataCardProps } from \"./DataCard\";\n\nexport type DataLayout = (typeof availableLayouts)[number];\nexport type CardLayout = (typeof availableCardLayouts)[number];\n\nexport type AvailableLayouts = DataLayout[];\nexport type AvailableCardLayouts = CardLayout[];\n\nexport type UniversalProps = {\n additionalActionButton?: ReactNode;\n additionalActionMenuItems?: ReactNode;\n bulkActionMenuItems?: (\n selectedRows: MRT_RowSelectionState,\n ) => MenuButtonProps[\"children\"];\n currentPage?: number;\n emptyPlaceholder?: ReactNode;\n enableVirtualization?: boolean;\n errorMessage?: string;\n filters?: Array<DataFilter | DataTableColumn<MRT_RowData> | string>;\n getData: ({\n page,\n resultsPerPage,\n search,\n filters,\n sort,\n }: DataGetDataType) => MRT_RowData[] | Promise<MRT_RowData[]>;\n getRowId?: MRT_TableOptions<MRT_RowData>[\"getRowId\"];\n hasFilters?: boolean;\n hasPagination?: boolean;\n hasRowReordering?: boolean;\n hasRowSelection?: boolean;\n hasSearch?: boolean;\n hasSearchSubmitButton?: boolean;\n isEmpty?: boolean;\n isLoading?: boolean;\n isNoResults?: boolean;\n isPaginationMoreDisabled?: boolean;\n isRowReorderingDisabled?: boolean;\n maxPages?: number;\n maxResultsPerPage?: number;\n metaText?: string;\n noResultsPlaceholder?: ReactNode;\n /**\n * @deprecated onChangeRowSelection is now onRowSelectionChange\n */\n onChangeRowSelection?: (rowSelection: DataRowSelectionState) => void;\n onPaginationChange?: ({\n pageIndex,\n pageSize,\n }: {\n pageIndex: number;\n pageSize: number;\n }) => void;\n onReorderRows?: ({ rowId, newRowIndex }: DataOnReorderRowsType) => void;\n onRowSelectionChange?: (rowSelection: DataRowSelectionState) => void;\n paginationType?: (typeof paginationTypeValues)[number];\n resultsPerPage?: number;\n searchDelayTime?: number;\n totalRows?: number;\n};\n\nexport type TableLayoutProps = {\n columns: DataTableColumn<MRT_RowData>[];\n hasChangeableDensity?: boolean;\n hasColumnResizing?: boolean;\n hasColumnVisibility?: boolean;\n hasSorting?: boolean;\n initialDensity?: MRT_DensityState;\n renderDetailPanel?: MRT_TableOptions<MRT_RowData>[\"renderDetailPanel\"];\n rowActionButtons?: DataTableRowActionsProps[\"rowActionButtons\"];\n rowActionMenuItems?: DataTableRowActionsProps[\"rowActionMenuItems\"];\n};\n\nexport type CardLayoutProps = {\n itemProps: (row: MRT_RowData) => DataCardProps;\n maxGridColumns?: number;\n renderDetailPanel?: (props: { row: MRT_RowData }) => ReactNode;\n rowActionMenuItems?: DataTableRowActionsProps[\"rowActionMenuItems\"];\n};\n\nexport type ViewProps<L extends DataLayout> = {\n availableLayouts?: L[];\n initialLayout?: L;\n cardLayoutOptions?: CardLayoutProps;\n tableLayoutOptions?: TableLayoutProps;\n};\n\nexport type TableState = {\n columnSorting: MRT_SortingState;\n columnVisibility: MRT_VisibilityState;\n rowDensity?: MRT_DensityState;\n};\n"],"mappings":""}
@@ -30,6 +30,7 @@ const DateField = ({
30
30
  errorMessage,
31
31
  hasInitialFocus,
32
32
  hint,
33
+ HintLinkComponent,
33
34
  id: idOverride,
34
35
  inputRef,
35
36
  isDisabled = false,
@@ -151,6 +152,7 @@ const DateField = ({
151
152
  fieldType: "single",
152
153
  hasVisibleLabel: true,
153
154
  hint: hint,
155
+ HintLinkComponent: HintLinkComponent,
154
156
  id: idOverride,
155
157
  isDisabled: isDisabled,
156
158
  isOptional: isOptional,
@@ -1 +1 @@
1
- {"version":3,"file":"DateField.js","names":["memo","useCallback","useEffect","useImperativeHandle","useRef","useState","DateField","MuiDateField","useTranslation","Field","jsx","_jsx","Fragment","_Fragment","useOdysseyDateError","t","Map","formatDateTimeToUtcIsoDateString","value","toUTC","toISO","defaultValue","endAdornment","errorMessage","hasInitialFocus","hint","id","idOverride","inputRef","isDisabled","isOptional","isReadOnly","label","minDate","maxDate","onBlur","onChange","onFocus","timezone","errorMap","displayedErrorMessage","setDisplayedErrorMessage","internalValidationError","localInputRef","focus","current","checkMinMaxValidity","hasMinError","hasMaxError","get","clearErrorMessages","undefined","validateAndCallOnChange","validationContext","validationError","hasEnteredFullYear","year","toString","length","odysseyValidationError","isValid","dateStringFromDateTime","checkFieldValidityAndSetError","event","hasVisibleAdornment","renderFieldComponent","ariaDescribedBy","errorMessageElementId","labelElementId","autoFocus","disabled","inputProps","InputProps","error","Boolean","children","_InputAdornment","position","name","readOnly","variant","fieldType","hasVisibleLabel","MemoizedDateField","displayName"],"sources":["../../src/labs/DateField.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n FocusEventHandler,\n memo,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { InputAdornment } from \"@mui/material\";\nimport {\n DateField as MuiDateField,\n DateFieldProps as MuiDateFieldProps,\n DateValidationError,\n} from \"@mui/x-date-pickers\";\nimport { DateTime } from \"luxon\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Field, RenderFieldComponentProps } from \"../Field\";\nimport { TextFieldProps } from \"../TextField\";\n\nexport type DateFieldProps = {\n onChange?: (value: string) => void;\n} & Pick<\n MuiDateFieldProps<DateTime>,\n \"defaultValue\" | \"inputRef\" | \"minDate\" | \"maxDate\" | \"timezone\" | \"value\"\n> &\n Pick<\n TextFieldProps,\n | \"endAdornment\"\n | \"errorMessage\"\n | \"hasInitialFocus\"\n | \"hint\"\n | \"id\"\n | \"isDisabled\"\n | \"isOptional\"\n | \"isReadOnly\"\n | \"label\"\n | \"onBlur\"\n | \"onFocus\"\n >;\n\nconst useOdysseyDateError = () => {\n const { t } = useTranslation();\n\n return new Map<DateValidationError, string>([\n [\"invalidDate\", t(\"picker.error.invalid\")],\n [\"maxDate\", t(\"picker.error.maxdate\")],\n [\"minDate\", t(\"picker.error.mindate\")],\n ]);\n};\n\nconst formatDateTimeToUtcIsoDateString = (value: DateTime) =>\n value.toUTC().toISO();\n\nconst DateField = ({\n defaultValue,\n endAdornment,\n errorMessage,\n hasInitialFocus,\n hint,\n id: idOverride,\n inputRef,\n isDisabled = false,\n isOptional = false,\n isReadOnly,\n label,\n minDate,\n maxDate,\n onBlur,\n onChange,\n onFocus,\n timezone,\n value,\n}: DateFieldProps) => {\n const errorMap = useOdysseyDateError();\n const [displayedErrorMessage, setDisplayedErrorMessage] =\n useState(errorMessage);\n\n const internalValidationError = useRef<string | undefined>();\n const localInputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(\n inputRef,\n () => {\n return {\n focus: () => {\n localInputRef.current?.focus();\n },\n };\n },\n [],\n );\n\n const checkMinMaxValidity = useCallback(\n (value: DateTime) => {\n const hasMinError = minDate && value.toUTC() < minDate.toUTC();\n const hasMaxError = maxDate && value.toUTC() > maxDate.toUTC();\n\n if (hasMinError || hasMaxError) {\n if (hasMinError) {\n setDisplayedErrorMessage(errorMap.get(\"minDate\"));\n }\n\n if (hasMaxError) {\n setDisplayedErrorMessage(errorMap.get(\"maxDate\"));\n }\n\n return false;\n }\n\n return true;\n },\n [errorMap, minDate, maxDate],\n );\n\n useEffect(() => {\n if (value) {\n checkMinMaxValidity(value);\n }\n\n if (defaultValue) {\n checkMinMaxValidity(defaultValue);\n }\n }, [checkMinMaxValidity, defaultValue, minDate, maxDate, value]);\n\n const clearErrorMessages = useCallback(() => {\n setDisplayedErrorMessage(undefined);\n internalValidationError.current = undefined;\n }, [internalValidationError, setDisplayedErrorMessage]);\n\n const validateAndCallOnChange = useCallback<\n NonNullable<MuiDateFieldProps<DateTime>[\"onChange\"]>\n >(\n (value, validationContext) => {\n clearErrorMessages();\n const { validationError } = validationContext;\n const hasEnteredFullYear = value?.year.toString().length === 4;\n\n if (validationError) {\n const odysseyValidationError = errorMap.get(validationError);\n\n if (odysseyValidationError) {\n internalValidationError.current = odysseyValidationError;\n\n if (value?.isValid && hasEnteredFullYear) {\n setDisplayedErrorMessage(odysseyValidationError);\n }\n }\n }\n\n if (value?.isValid && !validationError) {\n const dateStringFromDateTime = formatDateTimeToUtcIsoDateString(value);\n\n if (dateStringFromDateTime && checkMinMaxValidity(value)) {\n onChange?.(dateStringFromDateTime);\n }\n }\n },\n [checkMinMaxValidity, clearErrorMessages, errorMap, onChange],\n );\n\n const checkFieldValidityAndSetError = useCallback<\n FocusEventHandler<HTMLInputElement>\n >(\n (event) => {\n if (internalValidationError?.current && !displayedErrorMessage) {\n setDisplayedErrorMessage(internalValidationError.current);\n }\n onBlur?.(event);\n },\n [displayedErrorMessage, internalValidationError, onBlur],\n );\n\n const hasVisibleAdornment = !isReadOnly && !isDisabled;\n\n const renderFieldComponent = useCallback(\n ({\n ariaDescribedBy,\n errorMessageElementId,\n id,\n labelElementId,\n }: RenderFieldComponentProps) => (\n <MuiDateField\n /* eslint-disable-next-line jsx-a11y/no-autofocus */\n autoFocus={hasInitialFocus}\n defaultValue={defaultValue}\n disabled={isDisabled}\n id={id}\n inputProps={{\n \"aria-describedby\": ariaDescribedBy,\n \"aria-errormessage\": errorMessageElementId,\n \"aria-labelledby\": labelElementId,\n }}\n InputProps={{\n error: Boolean(displayedErrorMessage || errorMessage),\n endAdornment: (\n <>\n {hasVisibleAdornment && (\n <InputAdornment position=\"end\">{endAdornment}</InputAdornment>\n )}\n </>\n ),\n }}\n inputRef={localInputRef}\n minDate={minDate}\n maxDate={maxDate}\n name={id}\n onBlur={checkFieldValidityAndSetError}\n onChange={validateAndCallOnChange}\n onFocus={onFocus}\n readOnly={isReadOnly}\n timezone={timezone}\n value={value}\n variant=\"standard\"\n />\n ),\n [\n checkFieldValidityAndSetError,\n defaultValue,\n displayedErrorMessage,\n endAdornment,\n errorMessage,\n hasInitialFocus,\n hasVisibleAdornment,\n isDisabled,\n localInputRef,\n minDate,\n maxDate,\n onFocus,\n isReadOnly,\n timezone,\n validateAndCallOnChange,\n value,\n ],\n );\n\n return (\n <Field\n errorMessage={displayedErrorMessage || errorMessage}\n fieldType=\"single\"\n hasVisibleLabel\n hint={hint}\n id={idOverride}\n isDisabled={isDisabled}\n isOptional={isOptional}\n label={label}\n renderFieldComponent={renderFieldComponent}\n />\n );\n};\n\nconst MemoizedDateField = memo(DateField);\nMemoizedDateField.displayName = \"DateField\";\n\nexport { MemoizedDateField as DateField };\n"],"mappings":"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"}
1
+ {"version":3,"file":"DateField.js","names":["memo","useCallback","useEffect","useImperativeHandle","useRef","useState","DateField","MuiDateField","useTranslation","Field","jsx","_jsx","Fragment","_Fragment","useOdysseyDateError","t","Map","formatDateTimeToUtcIsoDateString","value","toUTC","toISO","defaultValue","endAdornment","errorMessage","hasInitialFocus","hint","HintLinkComponent","id","idOverride","inputRef","isDisabled","isOptional","isReadOnly","label","minDate","maxDate","onBlur","onChange","onFocus","timezone","errorMap","displayedErrorMessage","setDisplayedErrorMessage","internalValidationError","localInputRef","focus","current","checkMinMaxValidity","hasMinError","hasMaxError","get","clearErrorMessages","undefined","validateAndCallOnChange","validationContext","validationError","hasEnteredFullYear","year","toString","length","odysseyValidationError","isValid","dateStringFromDateTime","checkFieldValidityAndSetError","event","hasVisibleAdornment","renderFieldComponent","ariaDescribedBy","errorMessageElementId","labelElementId","autoFocus","disabled","inputProps","InputProps","error","Boolean","children","_InputAdornment","position","name","readOnly","variant","fieldType","hasVisibleLabel","MemoizedDateField","displayName"],"sources":["../../src/labs/DateField.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n FocusEventHandler,\n memo,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { InputAdornment } from \"@mui/material\";\nimport {\n DateField as MuiDateField,\n DateFieldProps as MuiDateFieldProps,\n DateValidationError,\n} from \"@mui/x-date-pickers\";\nimport { DateTime } from \"luxon\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Field, RenderFieldComponentProps } from \"../Field\";\nimport { TextFieldProps } from \"../TextField\";\n\nexport type DateFieldProps = {\n onChange?: (value: string) => void;\n} & Pick<\n MuiDateFieldProps<DateTime>,\n \"defaultValue\" | \"inputRef\" | \"minDate\" | \"maxDate\" | \"timezone\" | \"value\"\n> &\n Pick<\n TextFieldProps,\n | \"endAdornment\"\n | \"errorMessage\"\n | \"hasInitialFocus\"\n | \"hint\"\n | \"HintLinkComponent\"\n | \"id\"\n | \"isDisabled\"\n | \"isOptional\"\n | \"isReadOnly\"\n | \"label\"\n | \"onBlur\"\n | \"onFocus\"\n >;\n\nconst useOdysseyDateError = () => {\n const { t } = useTranslation();\n\n return new Map<DateValidationError, string>([\n [\"invalidDate\", t(\"picker.error.invalid\")],\n [\"maxDate\", t(\"picker.error.maxdate\")],\n [\"minDate\", t(\"picker.error.mindate\")],\n ]);\n};\n\nconst formatDateTimeToUtcIsoDateString = (value: DateTime) =>\n value.toUTC().toISO();\n\nconst DateField = ({\n defaultValue,\n endAdornment,\n errorMessage,\n hasInitialFocus,\n hint,\n HintLinkComponent,\n id: idOverride,\n inputRef,\n isDisabled = false,\n isOptional = false,\n isReadOnly,\n label,\n minDate,\n maxDate,\n onBlur,\n onChange,\n onFocus,\n timezone,\n value,\n}: DateFieldProps) => {\n const errorMap = useOdysseyDateError();\n const [displayedErrorMessage, setDisplayedErrorMessage] =\n useState(errorMessage);\n\n const internalValidationError = useRef<string | undefined>();\n const localInputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(\n inputRef,\n () => {\n return {\n focus: () => {\n localInputRef.current?.focus();\n },\n };\n },\n [],\n );\n\n const checkMinMaxValidity = useCallback(\n (value: DateTime) => {\n const hasMinError = minDate && value.toUTC() < minDate.toUTC();\n const hasMaxError = maxDate && value.toUTC() > maxDate.toUTC();\n\n if (hasMinError || hasMaxError) {\n if (hasMinError) {\n setDisplayedErrorMessage(errorMap.get(\"minDate\"));\n }\n\n if (hasMaxError) {\n setDisplayedErrorMessage(errorMap.get(\"maxDate\"));\n }\n\n return false;\n }\n\n return true;\n },\n [errorMap, minDate, maxDate],\n );\n\n useEffect(() => {\n if (value) {\n checkMinMaxValidity(value);\n }\n\n if (defaultValue) {\n checkMinMaxValidity(defaultValue);\n }\n }, [checkMinMaxValidity, defaultValue, minDate, maxDate, value]);\n\n const clearErrorMessages = useCallback(() => {\n setDisplayedErrorMessage(undefined);\n internalValidationError.current = undefined;\n }, [internalValidationError, setDisplayedErrorMessage]);\n\n const validateAndCallOnChange = useCallback<\n NonNullable<MuiDateFieldProps<DateTime>[\"onChange\"]>\n >(\n (value, validationContext) => {\n clearErrorMessages();\n const { validationError } = validationContext;\n const hasEnteredFullYear = value?.year.toString().length === 4;\n\n if (validationError) {\n const odysseyValidationError = errorMap.get(validationError);\n\n if (odysseyValidationError) {\n internalValidationError.current = odysseyValidationError;\n\n if (value?.isValid && hasEnteredFullYear) {\n setDisplayedErrorMessage(odysseyValidationError);\n }\n }\n }\n\n if (value?.isValid && !validationError) {\n const dateStringFromDateTime = formatDateTimeToUtcIsoDateString(value);\n\n if (dateStringFromDateTime && checkMinMaxValidity(value)) {\n onChange?.(dateStringFromDateTime);\n }\n }\n },\n [checkMinMaxValidity, clearErrorMessages, errorMap, onChange],\n );\n\n const checkFieldValidityAndSetError = useCallback<\n FocusEventHandler<HTMLInputElement>\n >(\n (event) => {\n if (internalValidationError?.current && !displayedErrorMessage) {\n setDisplayedErrorMessage(internalValidationError.current);\n }\n onBlur?.(event);\n },\n [displayedErrorMessage, internalValidationError, onBlur],\n );\n\n const hasVisibleAdornment = !isReadOnly && !isDisabled;\n\n const renderFieldComponent = useCallback(\n ({\n ariaDescribedBy,\n errorMessageElementId,\n id,\n labelElementId,\n }: RenderFieldComponentProps) => (\n <MuiDateField\n /* eslint-disable-next-line jsx-a11y/no-autofocus */\n autoFocus={hasInitialFocus}\n defaultValue={defaultValue}\n disabled={isDisabled}\n id={id}\n inputProps={{\n \"aria-describedby\": ariaDescribedBy,\n \"aria-errormessage\": errorMessageElementId,\n \"aria-labelledby\": labelElementId,\n }}\n InputProps={{\n error: Boolean(displayedErrorMessage || errorMessage),\n endAdornment: (\n <>\n {hasVisibleAdornment && (\n <InputAdornment position=\"end\">{endAdornment}</InputAdornment>\n )}\n </>\n ),\n }}\n inputRef={localInputRef}\n minDate={minDate}\n maxDate={maxDate}\n name={id}\n onBlur={checkFieldValidityAndSetError}\n onChange={validateAndCallOnChange}\n onFocus={onFocus}\n readOnly={isReadOnly}\n timezone={timezone}\n value={value}\n variant=\"standard\"\n />\n ),\n [\n checkFieldValidityAndSetError,\n defaultValue,\n displayedErrorMessage,\n endAdornment,\n errorMessage,\n hasInitialFocus,\n hasVisibleAdornment,\n isDisabled,\n localInputRef,\n minDate,\n maxDate,\n onFocus,\n isReadOnly,\n timezone,\n validateAndCallOnChange,\n value,\n ],\n );\n\n return (\n <Field\n errorMessage={displayedErrorMessage || errorMessage}\n fieldType=\"single\"\n hasVisibleLabel\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n id={idOverride}\n isDisabled={isDisabled}\n isOptional={isOptional}\n label={label}\n renderFieldComponent={renderFieldComponent}\n />\n );\n};\n\nconst MemoizedDateField = memo(DateField);\nMemoizedDateField.displayName = \"DateField\";\n\nexport { MemoizedDateField as DateField };\n"],"mappings":"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"}
@@ -85,8 +85,10 @@ const DatePicker = ({
85
85
  defaultValue: defaultValueProp,
86
86
  errorMessage,
87
87
  hint,
88
+ HintLinkComponent,
88
89
  isDateEnabled = () => true,
89
90
  isDisabled,
91
+ isOptional,
90
92
  isReadOnly,
91
93
  isMonthEnabled = () => true,
92
94
  isYearEnabled = () => true,
@@ -175,8 +177,10 @@ const DatePicker = ({
175
177
  }),
176
178
  errorMessage: errorMessage,
177
179
  hint: hint,
180
+ HintLinkComponent: HintLinkComponent,
178
181
  inputRef: inputRef,
179
182
  isDisabled: isDisabled,
183
+ isOptional: isOptional,
180
184
  isReadOnly: isReadOnly,
181
185
  label: label,
182
186
  onBlur: onBlur,
@@ -186,7 +190,7 @@ const DatePicker = ({
186
190
  timezone: internalTimeZone,
187
191
  value: value
188
192
  });
189
- }, [errorMessage, hint, internalTimeZone, isDisabled, isReadOnly, label, onBlur, onInputChange, minDate, maxDate, t, toggleCalendarVisibility]);
193
+ }, [errorMessage, hint, HintLinkComponent, internalTimeZone, isDisabled, isOptional, isReadOnly, label, onBlur, onInputChange, minDate, maxDate, t, toggleCalendarVisibility]);
190
194
  const slots = useMemo(() => ({
191
195
  actionBar: MemoizedActionBar,
192
196
  field: muiProps => renderDateField(muiProps),
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","names":["memo","useCallback","useEffect","useMemo","useRef","useState","useTranslation","DatePicker","MuiDatePicker","LocalizationProvider","AdapterLuxon","styled","Button","ArrowLeftIcon","ArrowRightIcon","CalendarIcon","ChevronDownIcon","DateField","datePickerTheme","useOdysseyDesignTokens","OdysseyThemeProvider","TimeZonePicker","useOdysseyDateFields","jsx","_jsx","jsxs","_jsxs","DatePickerContainer","div","marginBlockEnd","DatePickerWidthContainer","odysseyDesignTokens","width","maxWidth","TypographyLineLengthMax","TimeZonePickerContainer","shouldForwardProp","prop","marginBlockStart","Spacing3","ActionContainer","display","justifyContent","paddingInline","Spacing4","paddingBlockEnd","ActionBar","actions","onAccept","onCancel","t","length","children","label","onClick","variant","MemoizedActionBar","displayName","formatDayOfWeek","date","toFormat","defaultValue","defaultValueProp","errorMessage","hint","isDateEnabled","isDisabled","isReadOnly","isMonthEnabled","isYearEnabled","minDate","minDateProp","maxDate","maxDateProp","onBlur","onCalendarDateChange","onInputChange","onInputChangeProp","timeZone","timeZonePickerLabel","timeZoneOptions","value","valueProp","i18n","inputRef","defaultedLanguageCode","formatDateTimeToUtcIsoDateString","inputValues","internalTimeZone","isValidTimeZone","localeText","setInternalTimeZone","shouldDisableDate","shouldDisableMonth","shouldDisableYear","isOpen","setIsOpen","popperElement","setPopperElement","language","containerRef","current","formatDateTimeToJsDateStringOnCalendarSelection","dateStringFromDateTime","toggleCalendarVisibility","resetIsOpen","renderDateField","endAdornment","ariaLabel","size","startIcon","onChange","timezone","slots","actionBar","field","muiProps","leftArrowIcon","rightArrowIcon","switchViewIcon","slotProps","wrapperVariant","popper","anchorEl","toolbar","toolbarPlaceholder","onTimeZoneChange","themeOverride","dateAdapter","adapterLocale","ref","dayOfWeekFormatter","disabled","fixedWeekNumber","onClose","open","readOnly","MemoizedDatePicker"],"sources":["../../src/labs/DatePicker.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 FocusEventHandler,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n type DatePickerSlots,\n DatePicker as MuiDatePicker,\n DatePickerProps as MuiDatePickerProps,\n LocalizationProvider,\n PickersActionBarProps,\n DatePickerSlotProps,\n} from \"@mui/x-date-pickers\";\nimport { DateTime } from \"luxon\";\nimport { AdapterLuxon } from \"@mui/x-date-pickers/AdapterLuxon\";\nimport styled from \"@emotion/styled\";\n\nimport { Button } from \"../Button\";\nimport {\n ArrowLeftIcon,\n ArrowRightIcon,\n CalendarIcon,\n ChevronDownIcon,\n} from \"../icons.generated\";\nimport { DateField, DateFieldProps } from \"./DateField\";\nimport { datePickerTheme } from \"./datePickerTheme\";\nimport { FieldComponentProps } from \"../FieldComponentProps\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../OdysseyDesignTokensContext\";\nimport { OdysseyThemeProvider } from \"../OdysseyThemeProvider\";\nimport { TimeZonePicker, TimeZonePickerProps } from \"./TimeZonePicker\";\n\nimport {\n useOdysseyDateFields,\n OdysseyDateFieldProps,\n TimeZoneOption,\n} from \"./useOdysseyDateFields\";\n\nconst DatePickerContainer = styled.div({\n \".MuiFormControl-root\": {\n marginBlockEnd: 0,\n },\n});\n\nconst DatePickerWidthContainer = styled.div<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n \".MuiInput-root\": {\n width: \"100%\",\n maxWidth: odysseyDesignTokens.TypographyLineLengthMax,\n },\n}));\n\nconst TimeZonePickerContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n marginBlockStart: odysseyDesignTokens.Spacing3,\n}));\n\nconst ActionContainer = styled.div<{ odysseyDesignTokens: DesignTokens }>(\n ({ odysseyDesignTokens }) => ({\n display: \"flex\",\n justifyContent: \"flex-end\",\n paddingInline: odysseyDesignTokens.Spacing4,\n paddingBlockEnd: odysseyDesignTokens.Spacing4,\n }),\n);\n\nconst ActionBar = ({ actions, onAccept, onCancel }: PickersActionBarProps) => {\n const { t } = useTranslation();\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n // actions will be [] or [\"accept\", \"cancel\"]\n if (actions && actions.length > 0) {\n return (\n <ActionContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Button\n label={t(\"picker.labels.action.cancel\")}\n onClick={onCancel}\n variant=\"floating\"\n />\n <Button\n label={t(\"picker.labels.action.apply\")}\n onClick={onAccept}\n variant=\"primary\"\n />\n </ActionContainer>\n );\n }\n\n return null;\n};\n\nconst MemoizedActionBar = memo(ActionBar);\nMemoizedActionBar.displayName = \"ActionBar\";\n\nconst formatDayOfWeek = (date: DateTime) => date.toFormat(\"EEE\");\n\ntype RenderDateFieldProps = {\n defaultValue: DateFieldProps[\"defaultValue\"];\n value: DateFieldProps[\"value\"];\n} & MuiDatePickerProps<DateTime>;\n\nexport type DatePickerProps = {\n /**\n * The label for the `input` element.\n */\n label: string;\n /**\n * Callback fired when the a date field loses focus\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Callback fired when the a date is selected with the calendar.\n */\n onCalendarDateChange?: ({\n value,\n timeZone,\n }: {\n value: string | undefined;\n timeZone: string;\n }) => void;\n /**\n * Callback fired when the date/text input changes.\n */\n onInputChange?: (value: string) => void;\n /**\n * If provided, a `TimeZonePicker` will be rendered below the DatePicker. These options will populate as the Autocomplete options\n */\n timeZoneOptions?: TimeZoneOption[];\n /**\n * label for `TimeZonePicker`\n */\n timeZonePickerLabel?: TimeZonePickerProps[\"label\"];\n} & OdysseyDateFieldProps &\n Pick<\n FieldComponentProps,\n \"errorMessage\" | \"hint\" | \"isDisabled\" | \"isReadOnly\"\n >;\n\nconst DatePicker = ({\n defaultValue: defaultValueProp,\n errorMessage,\n hint,\n isDateEnabled = () => true,\n isDisabled,\n isReadOnly,\n isMonthEnabled = () => true,\n isYearEnabled = () => true,\n label,\n minDate: minDateProp,\n maxDate: maxDateProp,\n onBlur,\n onCalendarDateChange,\n onInputChange: onInputChangeProp,\n timeZone,\n timeZonePickerLabel,\n timeZoneOptions,\n value: valueProp,\n}: DatePickerProps) => {\n const { i18n, t } = useTranslation();\n const inputRef = useRef<HTMLInputElement>(null);\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const {\n defaultedLanguageCode,\n formatDateTimeToUtcIsoDateString,\n inputValues,\n internalTimeZone,\n isValidTimeZone,\n localeText,\n minDate,\n maxDate,\n setInternalTimeZone,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n } = useOdysseyDateFields({\n defaultValue: defaultValueProp,\n errorMessage,\n isDateEnabled,\n isMonthEnabled,\n isYearEnabled,\n minDate: minDateProp,\n maxDate: maxDateProp,\n timeZone,\n value: valueProp,\n });\n const [isOpen, setIsOpen] = useState(false);\n const [popperElement, setPopperElement] = useState<HTMLInputElement | null>();\n\n const { language } = i18n;\n const containerRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setPopperElement(containerRef.current);\n }, []);\n\n const formatDateTimeToJsDateStringOnCalendarSelection = useCallback<\n NonNullable<MuiDatePickerProps<DateTime>[\"onChange\"]>\n >(\n (value) => {\n if (value) {\n const dateStringFromDateTime = formatDateTimeToUtcIsoDateString(value);\n\n if (dateStringFromDateTime) {\n onCalendarDateChange?.({\n value: dateStringFromDateTime,\n timeZone: internalTimeZone,\n });\n }\n }\n },\n [formatDateTimeToUtcIsoDateString, internalTimeZone, onCalendarDateChange],\n );\n\n const onInputChange = useCallback<(value: string) => void>(\n (value) => {\n onInputChangeProp?.(value);\n },\n [onInputChangeProp],\n );\n\n const toggleCalendarVisibility = useCallback(\n () => setIsOpen(!isOpen),\n [isOpen],\n );\n\n const resetIsOpen = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const renderDateField = useCallback(\n ({ defaultValue, inputRef, value }: RenderDateFieldProps) => {\n return (\n <DateField\n defaultValue={defaultValue}\n endAdornment={\n <Button\n ariaLabel={t(\"picker.labels.date.choose\")}\n label=\"\"\n onClick={toggleCalendarVisibility}\n size=\"small\"\n startIcon={<CalendarIcon />}\n variant=\"floating\"\n />\n }\n errorMessage={errorMessage}\n hint={hint}\n inputRef={inputRef}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n label={label}\n onBlur={onBlur}\n minDate={minDate}\n maxDate={maxDate}\n onChange={onInputChange}\n timezone={internalTimeZone}\n value={value}\n />\n );\n },\n [\n errorMessage,\n hint,\n internalTimeZone,\n isDisabled,\n isReadOnly,\n label,\n onBlur,\n onInputChange,\n minDate,\n maxDate,\n t,\n toggleCalendarVisibility,\n ],\n );\n\n const slots = useMemo<DatePickerSlots<DateTime>>(\n () => ({\n actionBar: MemoizedActionBar,\n field: (muiProps) => renderDateField(muiProps),\n leftArrowIcon: () => <ArrowLeftIcon />,\n rightArrowIcon: () => <ArrowRightIcon />,\n switchViewIcon: () => <ChevronDownIcon />,\n }),\n [renderDateField],\n );\n\n const slotProps = useMemo<DatePickerSlotProps<DateTime, false>>(\n () => ({\n actionBar: ({ wrapperVariant, onAccept, onCancel }) => ({\n actions:\n // This is the default behavior but felt more clear to pass them in explicitly\n wrapperVariant === \"desktop\" ? [] : [\"accept\", \"cancel\"],\n onAccept,\n onCancel,\n }),\n popper: {\n anchorEl: popperElement,\n },\n\n toolbar: {\n toolbarPlaceholder: \"\",\n },\n }),\n [popperElement],\n );\n\n const onTimeZoneChange = useCallback(\n (timeZone: string | undefined) => {\n if (timeZone && isValidTimeZone(timeZone)) {\n setInternalTimeZone(timeZone);\n }\n },\n [isValidTimeZone, setInternalTimeZone],\n );\n\n return (\n <OdysseyThemeProvider themeOverride={datePickerTheme}>\n <LocalizationProvider\n dateAdapter={AdapterLuxon}\n adapterLocale={defaultedLanguageCode}\n localeText={localeText}\n >\n <DatePickerContainer>\n <DatePickerWidthContainer\n odysseyDesignTokens={odysseyDesignTokens}\n ref={containerRef}\n >\n <MuiDatePicker\n dayOfWeekFormatter={formatDayOfWeek}\n defaultValue={inputValues?.defaultValue}\n disabled={isDisabled}\n fixedWeekNumber={6}\n inputRef={inputRef}\n key={language}\n label={label}\n minDate={minDate}\n maxDate={maxDate}\n onChange={formatDateTimeToJsDateStringOnCalendarSelection}\n onClose={resetIsOpen}\n open={isOpen}\n readOnly={isReadOnly}\n shouldDisableDate={shouldDisableDate}\n shouldDisableMonth={shouldDisableMonth}\n shouldDisableYear={shouldDisableYear}\n slots={slots}\n slotProps={slotProps}\n timezone={internalTimeZone}\n value={inputValues?.value}\n />\n </DatePickerWidthContainer>\n </DatePickerContainer>\n {timeZoneOptions && timeZonePickerLabel && (\n <TimeZonePickerContainer odysseyDesignTokens={odysseyDesignTokens}>\n <TimeZonePicker\n label={timeZonePickerLabel}\n onTimeZoneChange={onTimeZoneChange}\n isReadOnly={isReadOnly}\n timeZoneOptions={timeZoneOptions}\n value={internalTimeZone}\n />\n </TimeZonePickerContainer>\n )}\n </LocalizationProvider>\n </OdysseyThemeProvider>\n );\n};\n\nconst MemoizedDatePicker = memo(DatePicker);\nMemoizedDatePicker.displayName = \"DatePicker\";\n\nexport { MemoizedDatePicker as DatePicker };\n"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","names":["memo","useCallback","useEffect","useMemo","useRef","useState","useTranslation","DatePicker","MuiDatePicker","LocalizationProvider","AdapterLuxon","styled","Button","ArrowLeftIcon","ArrowRightIcon","CalendarIcon","ChevronDownIcon","DateField","datePickerTheme","useOdysseyDesignTokens","OdysseyThemeProvider","TimeZonePicker","useOdysseyDateFields","jsx","_jsx","jsxs","_jsxs","DatePickerContainer","div","marginBlockEnd","DatePickerWidthContainer","odysseyDesignTokens","width","maxWidth","TypographyLineLengthMax","TimeZonePickerContainer","shouldForwardProp","prop","marginBlockStart","Spacing3","ActionContainer","display","justifyContent","paddingInline","Spacing4","paddingBlockEnd","ActionBar","actions","onAccept","onCancel","t","length","children","label","onClick","variant","MemoizedActionBar","displayName","formatDayOfWeek","date","toFormat","defaultValue","defaultValueProp","errorMessage","hint","HintLinkComponent","isDateEnabled","isDisabled","isOptional","isReadOnly","isMonthEnabled","isYearEnabled","minDate","minDateProp","maxDate","maxDateProp","onBlur","onCalendarDateChange","onInputChange","onInputChangeProp","timeZone","timeZonePickerLabel","timeZoneOptions","value","valueProp","i18n","inputRef","defaultedLanguageCode","formatDateTimeToUtcIsoDateString","inputValues","internalTimeZone","isValidTimeZone","localeText","setInternalTimeZone","shouldDisableDate","shouldDisableMonth","shouldDisableYear","isOpen","setIsOpen","popperElement","setPopperElement","language","containerRef","current","formatDateTimeToJsDateStringOnCalendarSelection","dateStringFromDateTime","toggleCalendarVisibility","resetIsOpen","renderDateField","endAdornment","ariaLabel","size","startIcon","onChange","timezone","slots","actionBar","field","muiProps","leftArrowIcon","rightArrowIcon","switchViewIcon","slotProps","wrapperVariant","popper","anchorEl","toolbar","toolbarPlaceholder","onTimeZoneChange","themeOverride","dateAdapter","adapterLocale","ref","dayOfWeekFormatter","disabled","fixedWeekNumber","onClose","open","readOnly","MemoizedDatePicker"],"sources":["../../src/labs/DatePicker.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 FocusEventHandler,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n type DatePickerSlots,\n DatePicker as MuiDatePicker,\n DatePickerProps as MuiDatePickerProps,\n LocalizationProvider,\n PickersActionBarProps,\n DatePickerSlotProps,\n} from \"@mui/x-date-pickers\";\nimport { DateTime } from \"luxon\";\nimport { AdapterLuxon } from \"@mui/x-date-pickers/AdapterLuxon\";\nimport styled from \"@emotion/styled\";\n\nimport { Button } from \"../Button\";\nimport {\n ArrowLeftIcon,\n ArrowRightIcon,\n CalendarIcon,\n ChevronDownIcon,\n} from \"../icons.generated\";\nimport { DateField, DateFieldProps } from \"./DateField\";\nimport { datePickerTheme } from \"./datePickerTheme\";\nimport { FieldComponentProps } from \"../FieldComponentProps\";\nimport {\n useOdysseyDesignTokens,\n DesignTokens,\n} from \"../OdysseyDesignTokensContext\";\nimport { OdysseyThemeProvider } from \"../OdysseyThemeProvider\";\nimport { TimeZonePicker, TimeZonePickerProps } from \"./TimeZonePicker\";\n\nimport {\n useOdysseyDateFields,\n OdysseyDateFieldProps,\n TimeZoneOption,\n} from \"./useOdysseyDateFields\";\n\nconst DatePickerContainer = styled.div({\n \".MuiFormControl-root\": {\n marginBlockEnd: 0,\n },\n});\n\nconst DatePickerWidthContainer = styled.div<{\n odysseyDesignTokens: DesignTokens;\n}>(({ odysseyDesignTokens }) => ({\n \".MuiInput-root\": {\n width: \"100%\",\n maxWidth: odysseyDesignTokens.TypographyLineLengthMax,\n },\n}));\n\nconst TimeZonePickerContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})(({ odysseyDesignTokens }: { odysseyDesignTokens: DesignTokens }) => ({\n marginBlockStart: odysseyDesignTokens.Spacing3,\n}));\n\nconst ActionContainer = styled.div<{ odysseyDesignTokens: DesignTokens }>(\n ({ odysseyDesignTokens }) => ({\n display: \"flex\",\n justifyContent: \"flex-end\",\n paddingInline: odysseyDesignTokens.Spacing4,\n paddingBlockEnd: odysseyDesignTokens.Spacing4,\n }),\n);\n\nconst ActionBar = ({ actions, onAccept, onCancel }: PickersActionBarProps) => {\n const { t } = useTranslation();\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n // actions will be [] or [\"accept\", \"cancel\"]\n if (actions && actions.length > 0) {\n return (\n <ActionContainer odysseyDesignTokens={odysseyDesignTokens}>\n <Button\n label={t(\"picker.labels.action.cancel\")}\n onClick={onCancel}\n variant=\"floating\"\n />\n <Button\n label={t(\"picker.labels.action.apply\")}\n onClick={onAccept}\n variant=\"primary\"\n />\n </ActionContainer>\n );\n }\n\n return null;\n};\n\nconst MemoizedActionBar = memo(ActionBar);\nMemoizedActionBar.displayName = \"ActionBar\";\n\nconst formatDayOfWeek = (date: DateTime) => date.toFormat(\"EEE\");\n\ntype RenderDateFieldProps = {\n defaultValue: DateFieldProps[\"defaultValue\"];\n value: DateFieldProps[\"value\"];\n} & MuiDatePickerProps<DateTime>;\n\nexport type DatePickerProps = {\n /**\n * The label for the `input` element.\n */\n label: string;\n /**\n * Callback fired when the a date field loses focus\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Callback fired when the a date is selected with the calendar.\n */\n onCalendarDateChange?: ({\n value,\n timeZone,\n }: {\n value: string | undefined;\n timeZone: string;\n }) => void;\n /**\n * Callback fired when the date/text input changes.\n */\n onInputChange?: (value: string) => void;\n /**\n * If provided, a `TimeZonePicker` will be rendered below the DatePicker. These options will populate as the Autocomplete options\n */\n timeZoneOptions?: TimeZoneOption[];\n /**\n * label for `TimeZonePicker`\n */\n timeZonePickerLabel?: TimeZonePickerProps[\"label\"];\n} & OdysseyDateFieldProps &\n Pick<\n FieldComponentProps,\n | \"errorMessage\"\n | \"hint\"\n | \"HintLinkComponent\"\n | \"isDisabled\"\n | \"isReadOnly\"\n | \"isOptional\"\n >;\n\nconst DatePicker = ({\n defaultValue: defaultValueProp,\n errorMessage,\n hint,\n HintLinkComponent,\n isDateEnabled = () => true,\n isDisabled,\n isOptional,\n isReadOnly,\n isMonthEnabled = () => true,\n isYearEnabled = () => true,\n label,\n minDate: minDateProp,\n maxDate: maxDateProp,\n onBlur,\n onCalendarDateChange,\n onInputChange: onInputChangeProp,\n timeZone,\n timeZonePickerLabel,\n timeZoneOptions,\n value: valueProp,\n}: DatePickerProps) => {\n const { i18n, t } = useTranslation();\n const inputRef = useRef<HTMLInputElement>(null);\n const odysseyDesignTokens = useOdysseyDesignTokens();\n\n const {\n defaultedLanguageCode,\n formatDateTimeToUtcIsoDateString,\n inputValues,\n internalTimeZone,\n isValidTimeZone,\n localeText,\n minDate,\n maxDate,\n setInternalTimeZone,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n } = useOdysseyDateFields({\n defaultValue: defaultValueProp,\n errorMessage,\n isDateEnabled,\n isMonthEnabled,\n isYearEnabled,\n minDate: minDateProp,\n maxDate: maxDateProp,\n timeZone,\n value: valueProp,\n });\n const [isOpen, setIsOpen] = useState(false);\n const [popperElement, setPopperElement] = useState<HTMLInputElement | null>();\n\n const { language } = i18n;\n const containerRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setPopperElement(containerRef.current);\n }, []);\n\n const formatDateTimeToJsDateStringOnCalendarSelection = useCallback<\n NonNullable<MuiDatePickerProps<DateTime>[\"onChange\"]>\n >(\n (value) => {\n if (value) {\n const dateStringFromDateTime = formatDateTimeToUtcIsoDateString(value);\n\n if (dateStringFromDateTime) {\n onCalendarDateChange?.({\n value: dateStringFromDateTime,\n timeZone: internalTimeZone,\n });\n }\n }\n },\n [formatDateTimeToUtcIsoDateString, internalTimeZone, onCalendarDateChange],\n );\n\n const onInputChange = useCallback<(value: string) => void>(\n (value) => {\n onInputChangeProp?.(value);\n },\n [onInputChangeProp],\n );\n\n const toggleCalendarVisibility = useCallback(\n () => setIsOpen(!isOpen),\n [isOpen],\n );\n\n const resetIsOpen = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const renderDateField = useCallback(\n ({ defaultValue, inputRef, value }: RenderDateFieldProps) => {\n return (\n <DateField\n defaultValue={defaultValue}\n endAdornment={\n <Button\n ariaLabel={t(\"picker.labels.date.choose\")}\n label=\"\"\n onClick={toggleCalendarVisibility}\n size=\"small\"\n startIcon={<CalendarIcon />}\n variant=\"floating\"\n />\n }\n errorMessage={errorMessage}\n hint={hint}\n HintLinkComponent={HintLinkComponent}\n inputRef={inputRef}\n isDisabled={isDisabled}\n isOptional={isOptional}\n isReadOnly={isReadOnly}\n label={label}\n onBlur={onBlur}\n minDate={minDate}\n maxDate={maxDate}\n onChange={onInputChange}\n timezone={internalTimeZone}\n value={value}\n />\n );\n },\n [\n errorMessage,\n hint,\n HintLinkComponent,\n internalTimeZone,\n isDisabled,\n isOptional,\n isReadOnly,\n label,\n onBlur,\n onInputChange,\n minDate,\n maxDate,\n t,\n toggleCalendarVisibility,\n ],\n );\n\n const slots = useMemo<DatePickerSlots<DateTime>>(\n () => ({\n actionBar: MemoizedActionBar,\n field: (muiProps) => renderDateField(muiProps),\n leftArrowIcon: () => <ArrowLeftIcon />,\n rightArrowIcon: () => <ArrowRightIcon />,\n switchViewIcon: () => <ChevronDownIcon />,\n }),\n [renderDateField],\n );\n\n const slotProps = useMemo<DatePickerSlotProps<DateTime, false>>(\n () => ({\n actionBar: ({ wrapperVariant, onAccept, onCancel }) => ({\n actions:\n // This is the default behavior but felt more clear to pass them in explicitly\n wrapperVariant === \"desktop\" ? [] : [\"accept\", \"cancel\"],\n onAccept,\n onCancel,\n }),\n popper: {\n anchorEl: popperElement,\n },\n\n toolbar: {\n toolbarPlaceholder: \"\",\n },\n }),\n [popperElement],\n );\n\n const onTimeZoneChange = useCallback(\n (timeZone: string | undefined) => {\n if (timeZone && isValidTimeZone(timeZone)) {\n setInternalTimeZone(timeZone);\n }\n },\n [isValidTimeZone, setInternalTimeZone],\n );\n\n return (\n <OdysseyThemeProvider themeOverride={datePickerTheme}>\n <LocalizationProvider\n dateAdapter={AdapterLuxon}\n adapterLocale={defaultedLanguageCode}\n localeText={localeText}\n >\n <DatePickerContainer>\n <DatePickerWidthContainer\n odysseyDesignTokens={odysseyDesignTokens}\n ref={containerRef}\n >\n <MuiDatePicker\n dayOfWeekFormatter={formatDayOfWeek}\n defaultValue={inputValues?.defaultValue}\n disabled={isDisabled}\n fixedWeekNumber={6}\n inputRef={inputRef}\n key={language}\n label={label}\n minDate={minDate}\n maxDate={maxDate}\n onChange={formatDateTimeToJsDateStringOnCalendarSelection}\n onClose={resetIsOpen}\n open={isOpen}\n readOnly={isReadOnly}\n shouldDisableDate={shouldDisableDate}\n shouldDisableMonth={shouldDisableMonth}\n shouldDisableYear={shouldDisableYear}\n slots={slots}\n slotProps={slotProps}\n timezone={internalTimeZone}\n value={inputValues?.value}\n />\n </DatePickerWidthContainer>\n </DatePickerContainer>\n {timeZoneOptions && timeZonePickerLabel && (\n <TimeZonePickerContainer odysseyDesignTokens={odysseyDesignTokens}>\n <TimeZonePicker\n label={timeZonePickerLabel}\n onTimeZoneChange={onTimeZoneChange}\n isReadOnly={isReadOnly}\n timeZoneOptions={timeZoneOptions}\n value={internalTimeZone}\n />\n </TimeZonePickerContainer>\n )}\n </LocalizationProvider>\n </OdysseyThemeProvider>\n );\n};\n\nconst MemoizedDatePicker = memo(DatePicker);\nMemoizedDatePicker.displayName = \"DatePicker\";\n\nexport { MemoizedDatePicker as DatePicker };\n"],"mappings":"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"}