@okta/odyssey-react-mui 1.14.2 → 1.14.4

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 (74) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/DataTable/DataTable.js +330 -0
  3. package/dist/DataTable/DataTable.js.map +1 -0
  4. package/dist/DataTable/DataTableRowActions.js +89 -0
  5. package/dist/DataTable/DataTableRowActions.js.map +1 -0
  6. package/dist/DataTable/DataTableSettings.js +72 -0
  7. package/dist/DataTable/DataTableSettings.js.map +1 -0
  8. package/dist/DataTable/constants.js +14 -0
  9. package/dist/DataTable/constants.js.map +1 -0
  10. package/dist/DataTable/index.js +14 -0
  11. package/dist/DataTable/index.js.map +1 -0
  12. package/dist/DataTable/reorderDataRowsLocally.js +26 -0
  13. package/dist/DataTable/reorderDataRowsLocally.js.map +1 -0
  14. package/dist/DataTable/useRowReordering.js +179 -0
  15. package/dist/DataTable/useRowReordering.js.map +1 -0
  16. package/dist/IconWithTooltip.js +63 -0
  17. package/dist/IconWithTooltip.js.map +1 -0
  18. package/dist/index.js +2 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/labs/DataFilters.js +42 -14
  21. package/dist/labs/DataFilters.js.map +1 -1
  22. package/dist/labs/DataTable.js +16 -11
  23. package/dist/labs/DataTable.js.map +1 -1
  24. package/dist/labs/index.js +0 -1
  25. package/dist/labs/index.js.map +1 -1
  26. package/dist/properties/ts/odyssey-react-mui.js +18 -1
  27. package/dist/properties/ts/odyssey-react-mui.js.map +1 -1
  28. package/dist/src/DataTable/DataTable.d.ts +133 -0
  29. package/dist/src/DataTable/DataTable.d.ts.map +1 -0
  30. package/dist/src/DataTable/DataTableRowActions.d.ts +30 -0
  31. package/dist/src/DataTable/DataTableRowActions.d.ts.map +1 -0
  32. package/dist/src/DataTable/DataTableSettings.d.ts +27 -0
  33. package/dist/src/DataTable/DataTableSettings.d.ts.map +1 -0
  34. package/dist/src/DataTable/constants.d.ts +13 -0
  35. package/dist/src/DataTable/constants.d.ts.map +1 -0
  36. package/dist/src/DataTable/index.d.ts +15 -0
  37. package/dist/src/DataTable/index.d.ts.map +1 -0
  38. package/dist/src/DataTable/reorderDataRowsLocally.d.ts +26 -0
  39. package/dist/src/DataTable/reorderDataRowsLocally.d.ts.map +1 -0
  40. package/dist/src/DataTable/useRowReordering.d.ts +56 -0
  41. package/dist/src/DataTable/useRowReordering.d.ts.map +1 -0
  42. package/dist/src/IconWithTooltip.d.ts +31 -0
  43. package/dist/src/IconWithTooltip.d.ts.map +1 -0
  44. package/dist/src/OdysseyTranslationProvider.d.ts +1 -1
  45. package/dist/src/OdysseyTranslationProvider.d.ts.map +1 -1
  46. package/dist/src/index.d.ts +2 -0
  47. package/dist/src/index.d.ts.map +1 -1
  48. package/dist/src/labs/DataFilters.d.ts.map +1 -1
  49. package/dist/src/labs/DataTable.d.ts +2 -2
  50. package/dist/src/labs/DataTable.d.ts.map +1 -1
  51. package/dist/src/labs/index.d.ts +0 -1
  52. package/dist/src/labs/index.d.ts.map +1 -1
  53. package/dist/src/properties/ts/odyssey-react-mui.d.ts +18 -1
  54. package/dist/src/properties/ts/odyssey-react-mui.d.ts.map +1 -1
  55. package/dist/src/theme/components.d.ts.map +1 -1
  56. package/dist/theme/components.js +37 -18
  57. package/dist/theme/components.js.map +1 -1
  58. package/dist/tsconfig.production.tsbuildinfo +1 -1
  59. package/package.json +3 -3
  60. package/src/DataTable/DataTable.tsx +538 -0
  61. package/src/DataTable/DataTableRowActions.tsx +124 -0
  62. package/src/DataTable/DataTableSettings.tsx +109 -0
  63. package/src/DataTable/constants.ts +13 -0
  64. package/src/DataTable/index.tsx +22 -0
  65. package/src/DataTable/reorderDataRowsLocally.tsx +48 -0
  66. package/src/DataTable/useRowReordering.tsx +233 -0
  67. package/src/IconWithTooltip.tsx +90 -0
  68. package/src/index.ts +2 -0
  69. package/src/labs/DataFilters.tsx +60 -17
  70. package/src/labs/DataTable.tsx +24 -11
  71. package/src/labs/index.ts +0 -1
  72. package/src/properties/odyssey-react-mui.properties +19 -2
  73. package/src/properties/ts/odyssey-react-mui.ts +1 -1
  74. package/src/theme/components.tsx +43 -16
@@ -1 +1 @@
1
- {"version":3,"file":"DataFilters.js","names":["memo","useCallback","useEffect","useMemo","useRef","useState","styled","Autocomplete","Box","TagList","Tag","SearchField","Button","CheckIcon","ChevronRightIcon","CloseCircleFilledIcon","FilterIcon","MenuItem","Paragraph","Subordinate","TextField","CheckboxGroup","Checkbox","RadioGroup","Radio","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DataFilters","onChangeSearch","onChangeFilters","hasSearchSubmitButton","searchDelayTime","defaultSearchTerm","additionalActions","filters","filtersProp","setFilters","initialInputValues","reduce","accumulator","filter","id","value","inputValues","setInputValues","searchValue","setSearchValue","activeFilters","isFiltersMenuOpen","setIsFiltersMenuOpen","filtersMenuAnchorElement","setFiltersMenuAnchorElement","isFilterPopoverOpen","setIsFilterPopoverOpen","filterPopoverAnchorElement","setFilterPopoverAnchorElement","filterPopoverCurrentFilter","setFilterPopoverCurrentFilter","menuRef","debouncer","undefined","current","clearTimeout","setTimeout","autocompleteOptions","variant","options","map","option","label","updateInputValue","filterId","updateFilters","updatedFilters","getAutoCompleteLabel","Array","isArray","valueElement","item","Boolean","handleMultiSelectChange","submit","startingValues","find","currentValues","updatedValues","includes","valuesToSave","sort","join","clearAllFilters","updatedInputValues","handleFilterSubmit","AutocompleteOuterContainer","div","AutocompleteInnerContainer","filterMenu","children","ariaLabel","endIcon","onClick","event","currentTarget","_Menu","anchorOrigin","horizontal","vertical","transformOrigin","anchorEl","onClose","open","PaperProps","ref","latestFilterValue","f","sx","display","alignItems","justifyContent","width","minWidth","marginRight","component","length","toLowerCase","gap","maxWidth","_Popover","ev","menuRect","getBoundingClientRect","clickInsideMenu","clientX","left","right","clientY","top","bottom","padding","onSubmit","preventDefault","onChange","_","type","hasInitialFocus","endAdornment","_IconButton","size","isRequired","isDefaultChecked","isChecked","style","onClear","target","borderTopWidth","borderTopColor","borderTopStyle","paddingTop","marginTop","onRemove","MemoizedDataFilters","displayName"],"sources":["../../src/labs/DataFilters.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 MutableRefObject,\n ReactNode,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"@emotion/styled\";\nimport { Autocomplete } from \"../Autocomplete\";\nimport { Box } from \"../Box\";\nimport { TagList } from \"../TagList\";\nimport { Tag } from \"../Tag\";\nimport { SearchField } from \"../SearchField\";\nimport { Button } from \"../Button\";\nimport {\n IconButton as MuiIconButton,\n Menu as MuiMenu,\n Popover as MuiPopover,\n} from \"@mui/material\";\nimport {\n CheckIcon,\n ChevronRightIcon,\n CloseCircleFilledIcon,\n FilterIcon,\n} from \"../icons.generated\";\nimport { MenuItem } from \"../MenuItem\";\nimport { Paragraph, Subordinate } from \"../Typography\";\nimport { TextField } from \"../TextField\";\nimport { CheckboxGroup } from \"../CheckboxGroup\";\nimport { Checkbox } from \"../Checkbox\";\nimport { RadioGroup } from \"../RadioGroup\";\nimport { Radio } from \"../Radio\";\nimport { MRT_ColumnDef, MRT_RowData } from \"material-react-table\";\n\nexport type DataFilterValue = string | string[] | undefined;\n\n// This is the shape of each individual filter\nexport type DataFilter = {\n /**\n * A unique ID for the filter, typically the same id\n * as the column it'll be applied to.\n */\n id: string;\n /**\n * The human-friendly name of the filter.\n */\n label: string;\n /**\n * The type of filter, which determines which filtering control\n * is shown.\n */\n variant?: MRT_ColumnDef<MRT_RowData>[\"filterVariant\"];\n /**\n * The current value of the filter. Typically a string, but\n * filters that allow for multiple selections (such as multi-select)\n * can accept an array.\n */\n value?: DataFilterValue;\n /**\n * If the filter control has preset options (such as a select or multi-select),\n * these are the options provided.\n */\n options?: Array<{ label: string; value: string }>;\n};\n\n// This is the type of the DataFilters component itself\nexport type DataFiltersProps = {\n /**\n * The callback that's fired when the search input changes\n * (either on change or on submit, based on the value of `hasSearchSubmitButton`).\n * If this is undefined, the search input will not be shown.\n */\n onChangeSearch?: (value: string) => void;\n /**\n * The callback that's fired when filter values change.\n */\n onChangeFilters?: (filters: Array<DataFilter>) => void;\n /**\n * If true, a Search button will be provided alongside the search input\n * and `onChangeSearch` will fire when the button is clicked, rather than\n * whenever the input value changes.\n */\n hasSearchSubmitButton?: boolean;\n /**\n * The debounce time, in milliseconds, for the search input firing\n * `onChangeSearch` when changed. If `hasSearchSubmitButton` is true,\n * this doesn't do anything.\n */\n searchDelayTime?: number;\n /**\n * The starting value of the search input\n */\n defaultSearchTerm?: string;\n /**\n * A slot for optional additional actions, like buttons, to be displayed\n * on the opposite side of the top row from the search and filter controls.\n */\n additionalActions?: ReactNode;\n /**\n * The filters available in the filter menu. If undefined,\n * the filter menu won't be shown.\n */\n filters?: Array<DataFilter>;\n};\n\nconst DataFilters = ({\n onChangeSearch,\n onChangeFilters,\n hasSearchSubmitButton = false,\n searchDelayTime = 200,\n defaultSearchTerm = \"\",\n additionalActions,\n filters: filtersProp = [],\n}: DataFiltersProps) => {\n const [filters, setFilters] = useState<DataFilter[]>(filtersProp);\n\n const initialInputValues = useMemo(() => {\n return filtersProp.reduce(\n (accumulator, filter) => {\n accumulator[filter.id] = filter.value;\n return accumulator;\n },\n {} as Record<string, DataFilterValue>,\n );\n }, [filtersProp]);\n\n const [inputValues, setInputValues] = useState(initialInputValues);\n\n const [searchValue, setSearchValue] = useState<string>(defaultSearchTerm);\n const activeFilters = useMemo(() => {\n return filters.filter(\n (filter) => typeof filter.value === \"string\" && filter.value,\n );\n }, [filters]);\n const [isFiltersMenuOpen, setIsFiltersMenuOpen] = useState<boolean>(false);\n const [filtersMenuAnchorElement, setFiltersMenuAnchorElement] = useState<\n HTMLElement | undefined\n >();\n const [isFilterPopoverOpen, setIsFilterPopoverOpen] =\n useState<boolean>(false);\n const [filterPopoverAnchorElement, setFilterPopoverAnchorElement] = useState<\n HTMLElement | undefined\n >();\n const [filterPopoverCurrentFilter, setFilterPopoverCurrentFilter] = useState<\n DataFilter | undefined\n >();\n\n const menuRef = useRef<HTMLDivElement>();\n\n useEffect(() => {\n onChangeFilters?.(filters);\n }, [filters, onChangeFilters]);\n\n const debouncer = useRef<NodeJS.Timeout | undefined>(undefined);\n useEffect(() => {\n if (!hasSearchSubmitButton) {\n if (debouncer.current) {\n clearTimeout(debouncer.current);\n }\n\n debouncer.current = setTimeout(() => {\n onChangeSearch?.(searchValue ?? \"\");\n }, searchDelayTime);\n }\n }, [onChangeSearch, searchValue, searchDelayTime, hasSearchSubmitButton]);\n\n const autocompleteOptions = useMemo(() => {\n // Check if filterPopoverCurrentFilter and filterPopoverCurrentFilter.options are defined\n if (\n filterPopoverCurrentFilter?.variant === \"autocomplete\" &&\n filterPopoverCurrentFilter?.options\n ) {\n return filterPopoverCurrentFilter.options.map((option) => ({\n label: option.label,\n }));\n }\n\n // if filterPopoverCurrentFilter or filterPopoverCurrentFilter.options is undefined\n return [];\n }, [filterPopoverCurrentFilter]);\n\n const updateInputValue = useCallback(\n ({ filterId, value }: { filterId: string; value: DataFilterValue }) => {\n setInputValues({ ...inputValues, [filterId]: value });\n },\n [inputValues],\n );\n\n const updateFilters = useCallback(\n ({ filterId, value }: { filterId: string; value: DataFilterValue }) => {\n const updatedFilters = filtersProp.map((filter) => ({\n ...filter,\n value: filter.id === filterId ? value : inputValues[filter.id],\n }));\n\n setFilters(updatedFilters);\n },\n [inputValues, filtersProp],\n );\n\n const getAutoCompleteLabel = <\n Value extends { label: string } | Array<{ label: string }>,\n >(\n value: Value,\n ) => {\n if (Array.isArray(value)) {\n // Iterating to find the label\n return value\n .map((valueElement) => {\n if (typeof valueElement === \"string\") {\n return undefined;\n }\n return valueElement.label;\n })\n .filter((item): item is string => Boolean(item));\n }\n\n return value?.label;\n };\n\n const handleMultiSelectChange = useCallback(\n (filterId: string, value: string, submit: boolean = false) => {\n const startingValues = filtersProp\n .find((filter) => filter.id === filterId)\n ?.options?.map((option) => option.value);\n const currentValues = (inputValues[filterId] ??\n startingValues) as string[];\n const updatedValues = currentValues.includes(value)\n ? currentValues.filter((item: string) => item !== value)\n : [...currentValues, value];\n const valuesToSave =\n updatedValues.sort().join() === startingValues?.sort().join()\n ? undefined\n : updatedValues;\n\n setInputValues({ ...inputValues, [filterId]: valuesToSave });\n\n if (submit) {\n const updatedFilters = filtersProp.map((filter) => ({\n ...filter,\n value: filter.id === filterId ? valuesToSave : inputValues[filter.id],\n }));\n\n setFilters(updatedFilters);\n }\n },\n [inputValues, filtersProp],\n );\n\n const clearAllFilters = useCallback(() => {\n const updatedInputValues = filtersProp.reduce(\n (accumulator, filter) => {\n accumulator[filter.id] = undefined;\n return accumulator;\n },\n {} as Record<string, DataFilterValue>,\n );\n\n setInputValues(updatedInputValues);\n\n const updatedFilters = filtersProp.map((filter) => ({\n ...filter,\n value: undefined,\n }));\n\n setFilters(updatedFilters);\n }, [filtersProp]);\n\n const handleFilterSubmit = useCallback(() => {\n const updatedFilters = filtersProp.map((filter) => ({\n ...filter,\n value: inputValues[filter.id],\n }));\n\n setFilters(updatedFilters);\n }, [inputValues, filtersProp]);\n\n const AutocompleteOuterContainer = styled.div`\n display: flex;\n gap: 2;\n align-items: center;\n alignitems: \"flex-end\";\n `;\n const AutocompleteInnerContainer = styled.div`\n width: \"100%\";\n `;\n const filterMenu = useMemo(\n () => (\n <>\n <Box>\n <Button\n aria-controls={isFiltersMenuOpen ? \"filters-menu\" : undefined}\n aria-expanded={isFiltersMenuOpen ? \"true\" : undefined}\n aria-haspopup=\"true\"\n ariaLabel=\"Filters\"\n endIcon={<FilterIcon />}\n onClick={(event) => {\n setFiltersMenuAnchorElement(event.currentTarget);\n setIsFiltersMenuOpen(true);\n }}\n variant=\"secondary\"\n />\n </Box>\n\n <MuiMenu\n anchorOrigin={{ horizontal: \"left\", vertical: \"bottom\" }}\n transformOrigin={{ horizontal: \"left\", vertical: \"top\" }}\n id=\"filters-menu\"\n anchorEl={filtersMenuAnchorElement}\n onClose={() => setIsFiltersMenuOpen(false)}\n open={isFiltersMenuOpen}\n PaperProps={{\n ref: menuRef as MutableRefObject<HTMLDivElement>,\n }}\n >\n {filtersProp.map((filter) => {\n // Unintuitively, we can't just use filter.value to grab the filter value.\n // `filter` is the initial set of filters provided to the comoponent, so its\n // value prop may not reflect the current value of the filter.\n const latestFilterValue = filters.find(\n (f) => f.id === filter.id,\n )?.value;\n\n return (\n <MenuItem\n key={filter.id}\n onClick={(event) => {\n setIsFilterPopoverOpen(true);\n setFilterPopoverAnchorElement(event.currentTarget);\n setFilterPopoverCurrentFilter(filter);\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n minWidth: 180,\n }}\n >\n <Box sx={{ marginRight: 2 }}>\n <Paragraph component=\"div\">{filter.label}</Paragraph>\n <Subordinate component=\"div\">\n {!latestFilterValue ||\n (Array.isArray(latestFilterValue) &&\n latestFilterValue.length === 0)\n ? `Any ${filter.label.toLowerCase()}`\n : Array.isArray(latestFilterValue)\n ? `${latestFilterValue.length} selected`\n : latestFilterValue}\n </Subordinate>\n </Box>\n <ChevronRightIcon />\n </Box>\n </MenuItem>\n );\n })}\n </MuiMenu>\n </>\n ),\n [isFiltersMenuOpen, filtersMenuAnchorElement, filtersProp, filters],\n );\n\n return (\n <Box>\n {/* Upper section */}\n <Box sx={{ display: \"flex\", justifyContent: \"space-between\" }}>\n {/* Upper section left (filters and search) */}\n <Box sx={{ display: \"flex\", gap: 2, width: \"50%\", maxWidth: 480 }}>\n {/* Filter menu */}\n {filters.length > 0 && (\n <>\n {filterMenu}\n {/* Filter popover */}\n <MuiPopover\n anchorEl={filterPopoverAnchorElement}\n open={isFilterPopoverOpen}\n anchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n onClose={(ev: MouseEvent) => {\n if (menuRef.current) {\n const menuRect = menuRef.current.getBoundingClientRect();\n const clickInsideMenu =\n ev.clientX >= menuRect.left &&\n ev.clientX <= menuRect.right &&\n ev.clientY >= menuRect.top &&\n ev.clientY <= menuRect.bottom;\n\n if (!clickInsideMenu) {\n setIsFiltersMenuOpen(false);\n }\n }\n\n setIsFilterPopoverOpen(false);\n }}\n >\n <Box sx={{ padding: 4, minWidth: 320 }}>\n <form\n onSubmit={(ev) => {\n ev.preventDefault();\n handleFilterSubmit();\n setIsFilterPopoverOpen(false);\n setIsFiltersMenuOpen(false);\n }}\n >\n {/* Autocomplete */}\n {filterPopoverCurrentFilter?.variant === \"autocomplete\" &&\n filterPopoverCurrentFilter?.options && (\n <AutocompleteOuterContainer>\n <AutocompleteInnerContainer>\n <Autocomplete\n label={filterPopoverCurrentFilter.label}\n value={\n inputValues[filterPopoverCurrentFilter.id] ?? \"\"\n }\n onChange={(_, value) => {\n const label =\n typeof value === \"string\"\n ? getAutoCompleteLabel({ label: value })\n : Array.isArray(value)\n ? getAutoCompleteLabel(\n value.map((item) =>\n typeof item === \"string\"\n ? { label: item }\n : item,\n ),\n )\n : value\n ? getAutoCompleteLabel(value)\n : \"\";\n\n updateInputValue({\n filterId: filterPopoverCurrentFilter.id,\n value: label,\n });\n }}\n options={autocompleteOptions}\n />\n </AutocompleteInnerContainer>\n <Button\n variant=\"primary\"\n endIcon={<CheckIcon />}\n type=\"submit\"\n />\n </AutocompleteOuterContainer>\n )}\n {/* Text or Number */}\n {(filterPopoverCurrentFilter?.variant === \"text\" ||\n filterPopoverCurrentFilter?.variant === \"range\") && (\n <Box\n sx={{\n display: \"flex\",\n gap: 2,\n alignItems: \"flex-end\",\n }}\n >\n <Box sx={{ width: \"100%\" }}>\n <TextField\n hasInitialFocus\n label={filterPopoverCurrentFilter.label}\n type={\n filterPopoverCurrentFilter.variant === \"range\"\n ? \"number\"\n : \"text\"\n }\n value={\n (inputValues[\n filterPopoverCurrentFilter.id\n ] as string) ?? \"\"\n }\n onChange={(ev) =>\n updateInputValue({\n filterId: filterPopoverCurrentFilter.id,\n value: ev.currentTarget.value,\n })\n }\n endAdornment={\n inputValues[filterPopoverCurrentFilter.id] && (\n <MuiIconButton\n size=\"small\"\n aria-label=\"Clear filter\"\n onClick={() => {\n updateInputValue({\n filterId: filterPopoverCurrentFilter.id,\n value: undefined,\n });\n\n updateFilters({\n filterId: filterPopoverCurrentFilter.id,\n value: undefined,\n });\n }}\n >\n <CloseCircleFilledIcon />\n </MuiIconButton>\n )\n }\n />\n </Box>\n <Button\n variant=\"primary\"\n endIcon={<CheckIcon />}\n type=\"submit\"\n />\n </Box>\n )}\n\n {/* Checkbox */}\n {filterPopoverCurrentFilter?.variant === \"multi-select\" &&\n filterPopoverCurrentFilter?.options && (\n <CheckboxGroup\n label={filterPopoverCurrentFilter.label}\n isRequired\n >\n {filterPopoverCurrentFilter.options.map(\n (option: { label: string; value: string }) => (\n <Checkbox\n key={option.value}\n label={option.label}\n value={option.value}\n isDefaultChecked={\n inputValues[\n filterPopoverCurrentFilter.id\n ]?.includes(option.value) ||\n inputValues[filterPopoverCurrentFilter.id] ===\n undefined\n }\n onChange={() =>\n handleMultiSelectChange(\n filterPopoverCurrentFilter.id,\n option.value,\n true,\n )\n }\n />\n ),\n )}\n </CheckboxGroup>\n )}\n\n {/* Radio */}\n {filterPopoverCurrentFilter?.variant === \"select\" &&\n filterPopoverCurrentFilter?.options && (\n <RadioGroup\n label={filterPopoverCurrentFilter.label}\n onChange={(_, value) => {\n updateInputValue({\n filterId: filterPopoverCurrentFilter.id,\n value,\n });\n\n updateFilters({\n filterId: filterPopoverCurrentFilter.id,\n value,\n });\n }}\n >\n <Radio\n label=\"Any\"\n value={\"\"}\n isChecked={\n !inputValues[filterPopoverCurrentFilter.id]\n }\n />\n <>\n {filterPopoverCurrentFilter.options.map(\n (option: { label: string; value: string }) => (\n <Radio\n key={option.value}\n label={option.label}\n value={option.value}\n isChecked={\n inputValues[\n filterPopoverCurrentFilter.id\n ] === option.value\n }\n />\n ),\n )}\n </>\n </RadioGroup>\n )}\n </form>\n </Box>\n </MuiPopover>\n </>\n )}\n\n {/* Search */}\n {onChangeSearch && (\n <form\n style={{ width: \"100%\" }}\n onSubmit={(event) => {\n event.preventDefault();\n if (hasSearchSubmitButton) {\n onChangeSearch(searchValue);\n }\n }}\n >\n <Box sx={{ display: \"flex\", gap: 2, width: \"100%\" }}>\n <SearchField\n value={searchValue}\n label=\"Search\"\n onClear={() => {\n setSearchValue(\"\");\n onChangeSearch(\"\");\n }}\n onChange={(ev) => setSearchValue(ev.target.value)}\n />\n {hasSearchSubmitButton && (\n <Box>\n <Button\n variant=\"primary\"\n label=\"Search\"\n onClick={() => onChangeSearch(searchValue)}\n />\n </Box>\n )}\n </Box>\n </form>\n )}\n </Box>\n\n {/* Upper section right (clear filters & additional actions) */}\n <Box sx={{ display: \"flex\", gap: 2 }}>\n {activeFilters.length > 0 && (\n <Box>\n <Button\n variant=\"secondary\"\n label=\"Clear filters\"\n onClick={clearAllFilters}\n />\n </Box>\n )}\n {additionalActions}\n </Box>\n </Box>\n\n {/* Lower section */}\n {activeFilters.length > 0 && (\n <Box\n sx={{\n borderTopWidth: 1,\n borderTopColor: \"#eeeeee\",\n borderTopStyle: \"solid\",\n paddingTop: 4,\n marginTop: 4,\n }}\n >\n <TagList>\n {activeFilters.map((filter) => (\n <Tag\n key={filter.label}\n label={`${filter.label}: ${filter.value}`}\n onRemove={() => {\n updateInputValue({\n filterId: filter.id,\n value: undefined,\n });\n\n updateFilters({\n filterId: filter.id,\n value: undefined,\n });\n }}\n />\n ))}\n </TagList>\n </Box>\n )}\n </Box>\n );\n};\n\nconst MemoizedDataFilters = memo(DataFilters);\nMemoizedDataFilters.displayName = \"DataFilters\";\n\nexport { MemoizedDataFilters as DataFilters };\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataFilters.js","names":["memo","useCallback","useEffect","useMemo","useRef","useState","styled","Autocomplete","Box","TagList","Tag","SearchField","Button","CheckIcon","ChevronRightIcon","CloseCircleFilledIcon","FilterIcon","Subordinate","TextField","CheckboxGroup","Checkbox","RadioGroup","Radio","Trans","useTranslation","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DataFilters","onChangeSearch","onChangeFilters","hasSearchSubmitButton","searchDelayTime","defaultSearchTerm","additionalActions","filters","filtersProp","setFilters","t","initialInputValues","reduce","accumulator","filter","id","value","inputValues","setInputValues","searchValue","setSearchValue","activeFilters","isFiltersMenuOpen","setIsFiltersMenuOpen","filtersMenuAnchorElement","setFiltersMenuAnchorElement","isFilterPopoverOpen","setIsFilterPopoverOpen","filterPopoverAnchorElement","setFilterPopoverAnchorElement","filterPopoverCurrentFilter","setFilterPopoverCurrentFilter","menuRef","debouncer","undefined","current","clearTimeout","setTimeout","autocompleteOptions","variant","options","map","option","label","updateInputValue","filterId","updateFilters","updatedFilters","getAutoCompleteLabel","Array","isArray","valueElement","item","Boolean","handleMultiSelectChange","submit","startingValues","find","currentValues","updatedValues","includes","valuesToSave","sort","join","clearAllFilters","updatedInputValues","handleFilterSubmit","AutocompleteOuterContainer","div","AutocompleteInnerContainer","filterMenu","children","ariaLabel","endIcon","onClick","event","currentTarget","_Menu","anchorOrigin","horizontal","vertical","transformOrigin","anchorEl","onClose","open","PaperProps","ref","latestFilterValue","f","_MenuItem","selected","className","sx","display","alignItems","justifyContent","width","minWidth","paddingBlock","paddingInlineStart","marginRight","_Typography","fontWeight","marginBlockEnd","component","length","i18nKey","values","toLowerCase","count","gap","maxWidth","_Popover","elevation","marginLeft","marginTop","ev","menuRect","getBoundingClientRect","clickInsideMenu","clientX","left","right","clientY","top","bottom","padding","onSubmit","preventDefault","onChange","_","type","hasInitialFocus","endAdornment","_IconButton","size","isRequired","isDefaultChecked","isChecked","style","onClear","target","borderTopWidth","borderTopColor","borderTopStyle","paddingTop","onRemove","MemoizedDataFilters","displayName"],"sources":["../../src/labs/DataFilters.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 MutableRefObject,\n ReactNode,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"@emotion/styled\";\nimport { Autocomplete } from \"../Autocomplete\";\nimport { Box } from \"../Box\";\nimport { TagList } from \"../TagList\";\nimport { Tag } from \"../Tag\";\nimport { SearchField } from \"../SearchField\";\nimport { Button } from \"../Button\";\nimport {\n IconButton as MuiIconButton,\n Menu as MuiMenu,\n MenuItem as MuiMenuItem,\n Popover as MuiPopover,\n Typography as MuiTypography,\n} from \"@mui/material\";\nimport {\n CheckIcon,\n ChevronRightIcon,\n CloseCircleFilledIcon,\n FilterIcon,\n} from \"../icons.generated\";\nimport { Subordinate } from \"../Typography\";\nimport { TextField } from \"../TextField\";\nimport { CheckboxGroup } from \"../CheckboxGroup\";\nimport { Checkbox } from \"../Checkbox\";\nimport { RadioGroup } from \"../RadioGroup\";\nimport { Radio } from \"../Radio\";\nimport { MRT_ColumnDef, MRT_RowData } from \"material-react-table\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nexport type DataFilterValue = string | string[] | undefined;\n\n// This is the shape of each individual filter\nexport type DataFilter = {\n /**\n * A unique ID for the filter, typically the same id\n * as the column it'll be applied to.\n */\n id: string;\n /**\n * The human-friendly name of the filter.\n */\n label: string;\n /**\n * The type of filter, which determines which filtering control\n * is shown.\n */\n variant?: MRT_ColumnDef<MRT_RowData>[\"filterVariant\"];\n /**\n * The current value of the filter. Typically a string, but\n * filters that allow for multiple selections (such as multi-select)\n * can accept an array.\n */\n value?: DataFilterValue;\n /**\n * If the filter control has preset options (such as a select or multi-select),\n * these are the options provided.\n */\n options?: Array<{ label: string; value: string }>;\n};\n\n// This is the type of the DataFilters component itself\nexport type DataFiltersProps = {\n /**\n * The callback that's fired when the search input changes\n * (either on change or on submit, based on the value of `hasSearchSubmitButton`).\n * If this is undefined, the search input will not be shown.\n */\n onChangeSearch?: (value: string) => void;\n /**\n * The callback that's fired when filter values change.\n */\n onChangeFilters?: (filters: Array<DataFilter>) => void;\n /**\n * If true, a Search button will be provided alongside the search input\n * and `onChangeSearch` will fire when the button is clicked, rather than\n * whenever the input value changes.\n */\n hasSearchSubmitButton?: boolean;\n /**\n * The debounce time, in milliseconds, for the search input firing\n * `onChangeSearch` when changed. If `hasSearchSubmitButton` is true,\n * this doesn't do anything.\n */\n searchDelayTime?: number;\n /**\n * The starting value of the search input\n */\n defaultSearchTerm?: string;\n /**\n * A slot for optional additional actions, like buttons, to be displayed\n * on the opposite side of the top row from the search and filter controls.\n */\n additionalActions?: ReactNode;\n /**\n * The filters available in the filter menu. If undefined,\n * the filter menu won't be shown.\n */\n filters?: Array<DataFilter>;\n};\n\nconst DataFilters = ({\n onChangeSearch,\n onChangeFilters,\n hasSearchSubmitButton = false,\n searchDelayTime = 200,\n defaultSearchTerm = \"\",\n additionalActions,\n filters: filtersProp = [],\n}: DataFiltersProps) => {\n const [filters, setFilters] = useState<DataFilter[]>(filtersProp);\n const { t } = useTranslation();\n\n const initialInputValues = useMemo(() => {\n return filtersProp.reduce(\n (accumulator, filter) => {\n accumulator[filter.id] = filter.value;\n return accumulator;\n },\n {} as Record<string, DataFilterValue>,\n );\n }, [filtersProp]);\n\n const [inputValues, setInputValues] = useState(initialInputValues);\n\n const [searchValue, setSearchValue] = useState<string>(defaultSearchTerm);\n const activeFilters = useMemo(() => {\n return filters.filter(\n (filter) => typeof filter.value === \"string\" && filter.value,\n );\n }, [filters]);\n const [isFiltersMenuOpen, setIsFiltersMenuOpen] = useState<boolean>(false);\n const [filtersMenuAnchorElement, setFiltersMenuAnchorElement] = useState<\n HTMLElement | undefined\n >();\n const [isFilterPopoverOpen, setIsFilterPopoverOpen] =\n useState<boolean>(false);\n const [filterPopoverAnchorElement, setFilterPopoverAnchorElement] = useState<\n HTMLElement | undefined\n >();\n const [filterPopoverCurrentFilter, setFilterPopoverCurrentFilter] = useState<\n DataFilter | undefined\n >();\n\n const menuRef = useRef<HTMLDivElement>();\n\n useEffect(() => {\n onChangeFilters?.(filters);\n }, [filters, onChangeFilters]);\n\n const debouncer = useRef<NodeJS.Timeout | undefined>(undefined);\n useEffect(() => {\n if (!hasSearchSubmitButton) {\n if (debouncer.current) {\n clearTimeout(debouncer.current);\n }\n\n debouncer.current = setTimeout(() => {\n onChangeSearch?.(searchValue ?? \"\");\n }, searchDelayTime);\n }\n }, [onChangeSearch, searchValue, searchDelayTime, hasSearchSubmitButton]);\n\n const autocompleteOptions = useMemo(() => {\n // Check if filterPopoverCurrentFilter and filterPopoverCurrentFilter.options are defined\n if (\n filterPopoverCurrentFilter?.variant === \"autocomplete\" &&\n filterPopoverCurrentFilter?.options\n ) {\n return filterPopoverCurrentFilter.options.map((option) => ({\n label: option.label,\n }));\n }\n\n // if filterPopoverCurrentFilter or filterPopoverCurrentFilter.options is undefined\n return [];\n }, [filterPopoverCurrentFilter]);\n\n const updateInputValue = useCallback(\n ({ filterId, value }: { filterId: string; value: DataFilterValue }) => {\n setInputValues({ ...inputValues, [filterId]: value });\n },\n [inputValues],\n );\n\n const updateFilters = useCallback(\n ({ filterId, value }: { filterId: string; value: DataFilterValue }) => {\n const updatedFilters = filtersProp.map((filter) => ({\n ...filter,\n value: filter.id === filterId ? value : inputValues[filter.id],\n }));\n\n setFilters(updatedFilters);\n },\n [inputValues, filtersProp],\n );\n\n const getAutoCompleteLabel = <\n Value extends { label: string } | Array<{ label: string }>,\n >(\n value: Value,\n ) => {\n if (Array.isArray(value)) {\n // Iterating to find the label\n return value\n .map((valueElement) => {\n if (typeof valueElement === \"string\") {\n return undefined;\n }\n return valueElement.label;\n })\n .filter((item): item is string => Boolean(item));\n }\n\n return value?.label;\n };\n\n const handleMultiSelectChange = useCallback(\n (filterId: string, value: string, submit: boolean = false) => {\n const startingValues = filtersProp\n .find((filter) => filter.id === filterId)\n ?.options?.map((option) => option.value);\n const currentValues = (inputValues[filterId] ??\n startingValues) as string[];\n const updatedValues = currentValues.includes(value)\n ? currentValues.filter((item: string) => item !== value)\n : [...currentValues, value];\n const valuesToSave =\n updatedValues.sort().join() === startingValues?.sort().join()\n ? undefined\n : updatedValues;\n\n setInputValues({ ...inputValues, [filterId]: valuesToSave });\n\n if (submit) {\n const updatedFilters = filtersProp.map((filter) => ({\n ...filter,\n value: filter.id === filterId ? valuesToSave : inputValues[filter.id],\n }));\n\n setFilters(updatedFilters);\n }\n },\n [inputValues, filtersProp],\n );\n\n const clearAllFilters = useCallback(() => {\n const updatedInputValues = filtersProp.reduce(\n (accumulator, filter) => {\n accumulator[filter.id] = undefined;\n return accumulator;\n },\n {} as Record<string, DataFilterValue>,\n );\n\n setInputValues(updatedInputValues);\n\n const updatedFilters = filtersProp.map((filter) => ({\n ...filter,\n value: undefined,\n }));\n\n setFilters(updatedFilters);\n }, [filtersProp]);\n\n const handleFilterSubmit = useCallback(() => {\n const updatedFilters = filtersProp.map((filter) => ({\n ...filter,\n value: inputValues[filter.id],\n }));\n\n setFilters(updatedFilters);\n }, [inputValues, filtersProp]);\n\n const AutocompleteOuterContainer = styled.div`\n display: flex;\n gap: 2;\n align-items: center;\n alignitems: \"flex-end\";\n `;\n const AutocompleteInnerContainer = styled.div`\n width: \"100%\";\n `;\n const filterMenu = useMemo(\n () => (\n <>\n <Box>\n <Button\n aria-controls={isFiltersMenuOpen ? \"filters-menu\" : undefined}\n aria-expanded={isFiltersMenuOpen ? \"true\" : undefined}\n aria-haspopup=\"true\"\n ariaLabel={t(\"filters.filters.arialabel\")}\n endIcon={<FilterIcon />}\n onClick={(event) => {\n setFiltersMenuAnchorElement(event.currentTarget);\n setIsFiltersMenuOpen(true);\n }}\n variant=\"secondary\"\n />\n </Box>\n\n <MuiMenu\n anchorOrigin={{ horizontal: \"left\", vertical: \"bottom\" }}\n transformOrigin={{ horizontal: \"left\", vertical: \"top\" }}\n id=\"filters-menu\"\n anchorEl={filtersMenuAnchorElement}\n onClose={() => setIsFiltersMenuOpen(false)}\n open={isFiltersMenuOpen}\n PaperProps={{\n ref: menuRef as MutableRefObject<HTMLDivElement>,\n }}\n >\n {filtersProp.map((filter) => {\n // Unintuitively, we can't just use filter.value to grab the filter value.\n // `filter` is the initial set of filters provided to the comoponent, so its\n // value prop may not reflect the current value of the filter.\n const latestFilterValue = filters.find(\n (f) => f.id === filter.id,\n )?.value;\n\n return (\n <MuiMenuItem\n key={filter.id}\n onClick={(event) => {\n setIsFilterPopoverOpen(true);\n setFilterPopoverAnchorElement(event.currentTarget);\n setFilterPopoverCurrentFilter(filter);\n }}\n selected={\n filterPopoverCurrentFilter === filter &&\n isFilterPopoverOpen === true\n }\n className={\n filterPopoverCurrentFilter === filter &&\n isFilterPopoverOpen === true\n ? \"isVisiblySelected\"\n : undefined\n }\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n minWidth: 180,\n paddingBlock: 1,\n paddingInlineStart: 2,\n }}\n >\n <Box sx={{ marginRight: 2 }}>\n <MuiTypography fontWeight=\"500\" sx={{ marginBlockEnd: 2 }}>\n {filter.label}\n </MuiTypography>\n <Subordinate component=\"div\">\n {!latestFilterValue ||\n (Array.isArray(latestFilterValue) &&\n latestFilterValue.length === 0) ? (\n <Trans\n i18nKey=\"filters.menuitem.any\"\n values={{\n label: filter.label.toLowerCase(),\n }}\n />\n ) : Array.isArray(latestFilterValue) ? (\n <Trans\n count={latestFilterValue.length}\n i18nKey=\"filters.menuitem.selected\"\n values={{\n selected: latestFilterValue.length,\n }}\n />\n ) : (\n latestFilterValue\n )}\n </Subordinate>\n </Box>\n <ChevronRightIcon />\n </Box>\n </MuiMenuItem>\n );\n })}\n </MuiMenu>\n </>\n ),\n [\n isFiltersMenuOpen,\n filterPopoverCurrentFilter,\n isFilterPopoverOpen,\n filtersMenuAnchorElement,\n filtersProp,\n filters,\n t,\n ],\n );\n\n return (\n <Box>\n {/* Upper section */}\n <Box sx={{ display: \"flex\", justifyContent: \"space-between\" }}>\n {/* Upper section left (filters and search) */}\n <Box sx={{ display: \"flex\", gap: 2, width: \"50%\", maxWidth: 480 }}>\n {/* Filter menu */}\n {filters.length > 0 && (\n <>\n {filterMenu}\n {/* Filter popover */}\n <MuiPopover\n anchorEl={filterPopoverAnchorElement}\n // Positions the popover flush with the edge of the parent menu\n // and at the right shadow elevation. These magic values are simply\n // to match the default popover offset.\n elevation={2}\n sx={{ marginLeft: 2, marginTop: -1 }}\n open={isFilterPopoverOpen}\n anchorOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n onClose={(ev: MouseEvent) => {\n if (menuRef.current) {\n const menuRect = menuRef.current.getBoundingClientRect();\n const clickInsideMenu =\n ev.clientX >= menuRect.left &&\n ev.clientX <= menuRect.right &&\n ev.clientY >= menuRect.top &&\n ev.clientY <= menuRect.bottom;\n\n if (!clickInsideMenu) {\n setIsFiltersMenuOpen(false);\n }\n }\n\n setIsFilterPopoverOpen(false);\n }}\n >\n <Box sx={{ padding: 4, minWidth: 320 }}>\n <form\n onSubmit={(ev) => {\n ev.preventDefault();\n handleFilterSubmit();\n setIsFilterPopoverOpen(false);\n setIsFiltersMenuOpen(false);\n }}\n >\n {/* Autocomplete */}\n {filterPopoverCurrentFilter?.variant === \"autocomplete\" &&\n filterPopoverCurrentFilter?.options && (\n <AutocompleteOuterContainer>\n <AutocompleteInnerContainer>\n <Autocomplete\n label={filterPopoverCurrentFilter.label}\n value={\n inputValues[filterPopoverCurrentFilter.id] ?? \"\"\n }\n onChange={(_, value) => {\n const label =\n typeof value === \"string\"\n ? getAutoCompleteLabel({ label: value })\n : Array.isArray(value)\n ? getAutoCompleteLabel(\n value.map((item) =>\n typeof item === \"string\"\n ? { label: item }\n : item,\n ),\n )\n : value\n ? getAutoCompleteLabel(value)\n : \"\";\n\n updateInputValue({\n filterId: filterPopoverCurrentFilter.id,\n value: label,\n });\n }}\n options={autocompleteOptions}\n />\n </AutocompleteInnerContainer>\n <Button\n variant=\"primary\"\n endIcon={<CheckIcon />}\n type=\"submit\"\n />\n </AutocompleteOuterContainer>\n )}\n {/* Text or Number */}\n {(filterPopoverCurrentFilter?.variant === \"text\" ||\n filterPopoverCurrentFilter?.variant === \"range\") && (\n <Box\n sx={{\n display: \"flex\",\n gap: 2,\n alignItems: \"flex-end\",\n }}\n >\n <Box sx={{ width: \"100%\" }}>\n <TextField\n hasInitialFocus\n label={filterPopoverCurrentFilter.label}\n type={\n filterPopoverCurrentFilter.variant === \"range\"\n ? \"number\"\n : \"text\"\n }\n value={\n (inputValues[\n filterPopoverCurrentFilter.id\n ] as string) ?? \"\"\n }\n onChange={(ev) =>\n updateInputValue({\n filterId: filterPopoverCurrentFilter.id,\n value: ev.currentTarget.value,\n })\n }\n endAdornment={\n inputValues[filterPopoverCurrentFilter.id] && (\n <MuiIconButton\n size=\"small\"\n aria-label={t(\"filters.filter.clear\")}\n onClick={() => {\n updateInputValue({\n filterId: filterPopoverCurrentFilter.id,\n value: undefined,\n });\n\n updateFilters({\n filterId: filterPopoverCurrentFilter.id,\n value: undefined,\n });\n }}\n >\n <CloseCircleFilledIcon />\n </MuiIconButton>\n )\n }\n />\n </Box>\n <Button\n variant=\"primary\"\n endIcon={<CheckIcon />}\n type=\"submit\"\n />\n </Box>\n )}\n\n {/* Checkbox */}\n {filterPopoverCurrentFilter?.variant === \"multi-select\" &&\n filterPopoverCurrentFilter?.options && (\n <CheckboxGroup\n label={filterPopoverCurrentFilter.label}\n isRequired\n >\n {filterPopoverCurrentFilter.options.map(\n (option: { label: string; value: string }) => (\n <Checkbox\n key={option.value}\n label={option.label}\n value={option.value}\n isDefaultChecked={\n inputValues[\n filterPopoverCurrentFilter.id\n ]?.includes(option.value) ||\n inputValues[filterPopoverCurrentFilter.id] ===\n undefined\n }\n onChange={() =>\n handleMultiSelectChange(\n filterPopoverCurrentFilter.id,\n option.value,\n true,\n )\n }\n />\n ),\n )}\n </CheckboxGroup>\n )}\n\n {/* Radio */}\n {filterPopoverCurrentFilter?.variant === \"select\" &&\n filterPopoverCurrentFilter?.options && (\n <RadioGroup\n label={filterPopoverCurrentFilter.label}\n onChange={(_, value) => {\n updateInputValue({\n filterId: filterPopoverCurrentFilter.id,\n value,\n });\n\n updateFilters({\n filterId: filterPopoverCurrentFilter.id,\n value,\n });\n }}\n >\n <Radio\n label={t(\"filters.filter.any\")}\n value={\"\"}\n isChecked={\n !inputValues[filterPopoverCurrentFilter.id]\n }\n />\n <>\n {filterPopoverCurrentFilter.options.map(\n (option: { label: string; value: string }) => (\n <Radio\n key={option.value}\n label={option.label}\n value={option.value}\n isChecked={\n inputValues[\n filterPopoverCurrentFilter.id\n ] === option.value\n }\n />\n ),\n )}\n </>\n </RadioGroup>\n )}\n </form>\n </Box>\n </MuiPopover>\n </>\n )}\n\n {/* Search */}\n {onChangeSearch && (\n <form\n style={{ width: \"100%\" }}\n onSubmit={(event) => {\n event.preventDefault();\n if (hasSearchSubmitButton) {\n onChangeSearch(searchValue);\n }\n }}\n >\n <Box sx={{ display: \"flex\", gap: 2, width: \"100%\" }}>\n <SearchField\n value={searchValue}\n label={t(\"filters.search.label\")}\n onClear={() => {\n setSearchValue(\"\");\n onChangeSearch(\"\");\n }}\n onChange={(ev) => setSearchValue(ev.target.value)}\n />\n {hasSearchSubmitButton && (\n <Box>\n <Button\n variant=\"primary\"\n label={t(\"filters.search.label\")}\n onClick={() => onChangeSearch(searchValue)}\n />\n </Box>\n )}\n </Box>\n </form>\n )}\n </Box>\n\n {/* Upper section right (clear filters & additional actions) */}\n <Box sx={{ display: \"flex\", gap: 2 }}>\n {activeFilters.length > 0 && (\n <Box>\n <Button\n variant=\"secondary\"\n label={t(\"filters.clear.label\")}\n onClick={clearAllFilters}\n />\n </Box>\n )}\n {additionalActions}\n </Box>\n </Box>\n\n {/* Lower section */}\n {activeFilters.length > 0 && (\n <Box\n sx={{\n borderTopWidth: 1,\n borderTopColor: \"#eeeeee\",\n borderTopStyle: \"solid\",\n paddingTop: 4,\n marginTop: 4,\n }}\n >\n <TagList>\n {activeFilters.map((filter) => (\n <Tag\n key={filter.label}\n label={`${filter.label}: ${filter.value}`}\n onRemove={() => {\n updateInputValue({\n filterId: filter.id,\n value: undefined,\n });\n\n updateFilters({\n filterId: filter.id,\n value: undefined,\n });\n }}\n />\n ))}\n </TagList>\n </Box>\n )}\n </Box>\n );\n};\n\nconst MemoizedDataFilters = memo(DataFilters);\nMemoizedDataFilters.displayName = \"DataFilters\";\n\nexport { MemoizedDataFilters as DataFilters };\n"],"mappings":"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"}
@@ -20,6 +20,7 @@ import { DataFilters } from "./DataFilters.js";
20
20
  import { Box } from "../Box.js";
21
21
  import { MenuButton, MenuItem } from "../index.js";
22
22
  import { ArrowUnsortedIcon } from "../icons.generated/index.js";
23
+ import { useTranslation } from "react-i18next";
23
24
  import { jsx as _jsx } from "react/jsx-runtime";
24
25
  import { Fragment as _Fragment } from "react/jsx-runtime";
25
26
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -64,6 +65,9 @@ const DataTable = ({
64
65
  hasSorting
65
66
  }) => {
66
67
  const odysseyDesignTokens = useOdysseyDesignTokens();
68
+ const {
69
+ t
70
+ } = useTranslation();
67
71
  const [draggingRow, setDraggingRow] = useState();
68
72
  const [showSkeletons, setShowSkeletons] = useState(true);
69
73
  const [data, setData] = useState(dataProp);
@@ -240,17 +244,18 @@ const DataTable = ({
240
244
  setDraggingRow(table.getState().draggingRow);
241
245
  }
242
246
  }, [draggingRow]);
247
+ const tableState = useMemo(() => ({
248
+ density,
249
+ sorting,
250
+ globalFilter,
251
+ columnVisibility,
252
+ rowSelection,
253
+ showSkeletons
254
+ }), [density, sorting, globalFilter, columnVisibility, rowSelection, showSkeletons]);
243
255
  const table = useMaterialReactTable({
244
256
  columns: columns,
245
257
  data: data,
246
- state: {
247
- density,
248
- sorting,
249
- globalFilter,
250
- columnVisibility,
251
- rowSelection,
252
- showSkeletons
253
- },
258
+ state: tableState,
254
259
  rowVirtualizerInstanceRef: rowVirtualizerInstanceRef,
255
260
  rowVirtualizerOptions: {
256
261
  overscan: 4
@@ -329,8 +334,8 @@ const DataTable = ({
329
334
  table,
330
335
  row
331
336
  }) => ({
332
- title: "Drag row or press space/enter key to start and stop reordering",
333
- "aria-label": "Drag row to reorder. Or, press space or enter to start and stop reordering and esc to cancel.",
337
+ title: t("table.draghandle.tooltip"),
338
+ "aria-label": t("table.draghandle.arialabel"),
334
339
  onKeyDown: event => handleDragHandleKeyDown({
335
340
  table,
336
341
  row,
@@ -363,7 +368,7 @@ const DataTable = ({
363
368
  endIcon: _jsx(MoreIcon, {}),
364
369
  size: "small",
365
370
  buttonVariant: "floating",
366
- ariaLabel: "More actions",
371
+ ariaLabel: t("table.moreactions.arialabel"),
367
372
  menuAlignment: "right",
368
373
  children: [rowActionMenuItems && _jsxs(_Fragment, {
369
374
  children: [rowActionMenuItems(row), _jsx("hr", {})]
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","names":["useMaterialReactTable","MRT_TableContainer","memo","useCallback","useEffect","useMemo","useRef","useState","ArrowTopIcon","ArrowBottomIcon","ArrowDownIcon","ArrowUpIcon","DragIndicatorIcon","ListIcon","ShowIcon","MoreIcon","useOdysseyDesignTokens","DataTablePagination","DataFilters","Box","MenuButton","MenuItem","ArrowUnsortedIcon","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","densityValues","reorderDataRowsLocally","currentData","rowId","newIndex","updatedData","rowIndex","findIndex","row","id","removedRow","splice","DataTable","columns","data","dataProp","getRowId","page","pageProp","initialDensity","resultsPerPage","resultsPerPageProp","fetchDataFn","reorderDataFn","totalRows","hasSearchSubmitButton","searchDelayTime","paginationType","onRowSelectionChange","rowActionButtons","rowActionMenuItems","hasChangeableDensity","hasColumnResizing","hasColumnVisibility","hasFilters","hasPagination","hasRowReordering","hasRowSelection","hasSearch","hasSorting","odysseyDesignTokens","draggingRow","setDraggingRow","showSkeletons","setShowSkeletons","setData","setPage","setResultsPerPage","rowSelection","setRowSelection","sorting","setSorting","density","setDensity","initialColumnVisibility","reduce","acc","column","accessorKey","columnVisibility","setColumnVisibility","globalFilter","setGlobalFilter","filters","setFilters","refreshData","newData","sort","search","error","handleSortingChange","updater","prevSorting","Function","handleColumnVisibility","columnId","prevVisibility","handleSearch","value","handleFilters","updatedFilters","handleRowSelectionChange","prevRowSelection","updateRowOrder","rowVirtualizerInstanceRef","getRowFromTableAndSetHovered","table","nextRow","getRow","setHoveredRow","resetDraggingAndHoveredRow","handleDragHandleKeyDown","event","hoveredRow","getState","key","isSpaceKey","isEnterKey","isEscapeKey","isArrowDown","isArrowUp","isSpaceOrEnter","zeroIndexedPageNumber","currentIndex","index","preventDefault","stopPropagation","pageRelativeIndex","setTimeout","TransitionDurationMainAsNumber","nextIndex","handleDragHandleOnDragEnd","cols","getAllColumns","toggleVisibility","handleDragHandleOnDragCapture","state","rowVirtualizerOptions","overscan","enableRowVirtualization","enableColumnResizing","enableDensityToggle","enableFullScreenToggle","enablePagination","enableRowSelection","enableFilters","enableHiding","enableRowOrdering","enableRowDragging","enableSorting","selectAllMode","enableColumnActions","layoutMode","displayColumnDefOptions","muiTableBodyCellProps","align","sx","overflow","width","muiTableHeadCellProps","header","minWidth","enableGlobalFilter","manualFiltering","manualSorting","icons","ArrowDownwardIcon","DragHandleIcon","SyncAltIcon","onSortingChange","enableRowActions","positionActionsColumn","className","find","item","muiTableBodyRowProps","undefined","muiRowDragHandleProps","title","onKeyDown","onBlur","onDragEnd","onDragCapture","padding","Spacing1","borderRadius","BorderRadiusMain","boxShadow","HueNeutralWhite","PalettePrimaryMain","outline","outlineOffset","renderRowActions","display","children","endIcon","size","buttonVariant","ariaLabel","menuAlignment","isDisabled","onClick","tableSettings","shouldCloseOnSelect","map","isSelected","charAt","toUpperCase","slice","filter","_Checkbox","checked","flexDirection","gap","onChangeSearch","onChangeFilters","additionalActions","enableColumnFilter","label","variant","filterVariant","options","filterSelectOptions","currentNumberOfResults","length","currentPage","isPreviousButtonDisabled","isNextButtonDisabled","onClickPrevious","onClickNext","MemoizedDataTable","displayName"],"sources":["../../src/labs/DataTable.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 MRT_Updater,\n MRT_Virtualizer,\n MRT_RowData,\n MRT_TableOptions,\n useMaterialReactTable,\n MRT_SortingState,\n MRT_DensityState,\n MRT_VisibilityState,\n MRT_TableContainer,\n MRT_RowSelectionState,\n MRT_Row,\n MRT_ColumnDef,\n MRT_TableInstance,\n} from \"material-react-table\";\nimport {\n Fragment,\n ReactElement,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n KeyboardEvent,\n} from \"react\";\nimport {\n ArrowTopIcon,\n ArrowBottomIcon,\n ArrowDownIcon,\n ArrowUpIcon,\n DragIndicatorIcon,\n ListIcon,\n ShowIcon,\n MoreIcon,\n} from \"../icons.generated\";\nimport { Checkbox as MuiCheckbox } from \"@mui/material\";\nimport { useOdysseyDesignTokens } from \"../OdysseyDesignTokensContext\";\nimport {\n DataTablePagination,\n paginationTypeValues,\n} from \"./DataTablePagination\";\nimport { DataFilter, DataFilters } from \"./DataFilters\";\nimport { Button } from \"../Button\";\nimport { Box } from \"../Box\";\nimport { MenuButton, MenuItem } from \"..\";\nimport { ArrowUnsortedIcon } from \"../icons.generated\";\n\nexport const densityValues = [\"comfortable\", \"spacious\", \"compact\"] as const;\n\nexport type {\n MRT_ColumnFiltersState,\n MRT_SortingState,\n MRT_ColumnDef as TableColumn,\n} from \"material-react-table\";\n\n// The shape of the table columns,\n// with props named to match their MRT_ColumnDef counterparts\nexport type DataColumn = {\n /**\n * The unique ID of the column\n */\n accessorKey: string;\n /**\n * The human-friendly title of the column\n */\n header: string;\n /**\n * Customize the way each cell in the column is\n * displayed via a custom React component.\n */\n Cell?: MRT_ColumnDef<MRT_RowData>[\"Cell\"];\n /**\n * The UI control that will be used to filter the column.\n * Defaults to a standard text input.\n */\n filterVariant?: MRT_ColumnDef<MRT_RowData>[\"filterVariant\"];\n /**\n * If the filter control has preset options (such as a select or multi-select),\n * these are the options provided.\n */\n filterSelectOptions?: Array<{ label: string; value: string }>;\n /**\n * The optional column width, in pixels\n */\n size?: number;\n /**\n * The minimum column width, in pixels\n */\n minSize?: number;\n /**\n * The maximum column width, in pixels\n */\n maxSize?: number;\n /**\n * If set to false, the column won't be filterable\n */\n enableColumnFilter?: boolean;\n /**\n * If set to false, the column won't be searchable\n */\n enableGlobalFilter?: boolean;\n /**\n * If set to false, the column won't be sortable\n */\n enableSorting?: boolean;\n /**\n * If set to false, the column won't be resizable\n */\n enableResizing?: boolean;\n /**\n * If set to false, the column won't be hideable\n */\n enableHiding?: boolean;\n};\n\nexport type DataTableProps = {\n /**\n * The columns that make up the table\n */\n columns: DataColumn[];\n /**\n * The data that goes into the table, which will be displayed\n * as the table rows\n */\n data: MRT_TableOptions<MRT_RowData>[\"data\"];\n /**\n * The total number of rows in the table. Optional, because it's sometimes impossible\n * to calculate. Used in table pagination to know when to disable the \"next\"/\"more\" button.\n */\n totalRows?: number;\n /**\n * The function to get the ID of a row\n */\n getRowId?: MRT_TableOptions<MRT_RowData>[\"getRowId\"];\n /**\n * The initial density of the table. This is available even if the table density\n * isn't changeable.\n */\n initialDensity?: (typeof densityValues)[number];\n /**\n * If true, the end user will be able to change the table density.\n */\n hasChangeableDensity?: boolean;\n /**\n * If true, the end user can resize individual columns.\n */\n hasColumnResizing?: boolean;\n /**\n * If true, the end user will be able to show/hide columns.\n */\n hasColumnVisibility?: boolean;\n /**\n * If true, the end user will be able to filter columns.\n */\n hasFilters?: boolean;\n /**\n * If true, the table will include pagination controls.\n */\n hasPagination?: boolean;\n /**\n * If true, the table will include checkboxes on each row, enabling\n * the user to select some or all rows.\n */\n hasRowSelection?: boolean;\n /**\n * If true, the global table search controls will be shown.\n */\n hasSearch?: boolean;\n /**\n * If true, the end user can sort columns (ascending, descending, or neither)\n */\n hasSorting?: boolean;\n /**\n * If true, the end user can reorder rows via a drag-and-drop interface\n */\n hasRowReordering?: boolean;\n /**\n * If true, the search field will include a Search button, rather than\n * firing on input change.\n */\n hasSearchSubmitButton?: boolean;\n /**\n * The debounce time, in milliseconds, for the search input firing\n * `onChangeSearch` when changed. If `hasSearchSubmitButton` is true,\n * this doesn't do anything.\n */\n searchDelayTime?: number;\n /**\n * Callback that fires when a row (or rows) is selected or unselected.\n */\n onRowSelectionChange?: (rowSelection: MRT_RowSelectionState) => void;\n /**\n * Callback that fires whenever the table needs to fetch new data, due to changes in\n * page, results per page, search input, filters, or sorting\n */\n fetchDataFn: ({\n page,\n resultsPerPage,\n search,\n filters,\n sort,\n }: {\n page?: number;\n resultsPerPage?: number;\n search?: string;\n filters?: DataFilter[];\n sort?: MRT_SortingState;\n }) => MRT_TableOptions<MRT_RowData>[\"data\"];\n /**\n * Callback that fires when the user reorders rows within the table. Can be used\n * to propogate order change to the backend.\n */\n reorderDataFn?: ({\n rowId,\n newIndex,\n }: {\n rowId: string;\n newIndex: number;\n }) => void;\n /**\n * The current page number.\n */\n page?: number;\n /**\n * The number of results per page.\n */\n resultsPerPage?: number;\n /**\n * The type of pagination controls shown. Defaults to next/prev buttons, but can be\n * set to a simple \"Load more\" button by setting to \"loadMore\".\n */\n paginationType?: (typeof paginationTypeValues)[number];\n /**\n * Action buttons to display in each row\n */\n rowActionButtons?: (\n row: MRT_RowData,\n ) => ReactElement<typeof Button | typeof Fragment>;\n /**\n * Menu items to include in the optional actions menu on each row.\n */\n rowActionMenuItems?: (\n row: MRT_RowData,\n ) => ReactElement<typeof MenuItem | typeof Fragment>;\n};\n\ntype TableType = MRT_TableInstance<MRT_RowData>;\n\nconst reorderDataRowsLocally = ({\n currentData,\n rowId,\n newIndex,\n}: {\n currentData: MRT_TableOptions<MRT_RowData>[\"data\"];\n rowId: string;\n newIndex: number;\n}) => {\n const updatedData = [...currentData];\n\n const rowIndex = updatedData.findIndex((row) => row.id === rowId);\n\n if (rowIndex !== -1) {\n // Remove the row from its current position\n const [removedRow] = updatedData.splice(rowIndex, 1);\n\n // Insert the row at the new index\n updatedData.splice(newIndex, 0, removedRow);\n }\n\n return updatedData;\n};\n\nconst DataTable = ({\n columns,\n data: dataProp,\n getRowId,\n page: pageProp = 1,\n initialDensity = densityValues[0],\n resultsPerPage: resultsPerPageProp = 20,\n fetchDataFn,\n reorderDataFn,\n totalRows,\n hasSearchSubmitButton,\n searchDelayTime,\n paginationType = \"paged\",\n onRowSelectionChange,\n rowActionButtons,\n rowActionMenuItems,\n hasChangeableDensity,\n hasColumnResizing,\n hasColumnVisibility,\n hasFilters,\n hasPagination,\n hasRowReordering,\n hasRowSelection,\n hasSearch,\n hasSorting,\n}: DataTableProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const [draggingRow, setDraggingRow] = useState<MRT_Row<MRT_RowData> | null>();\n const [showSkeletons, setShowSkeletons] = useState<boolean>(true);\n const [data, setData] =\n useState<MRT_TableOptions<MRT_RowData>[\"data\"]>(dataProp);\n const [page, setPage] = useState<number>(pageProp);\n const [resultsPerPage, setResultsPerPage] =\n useState<number>(resultsPerPageProp);\n const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n const [sorting, setSorting] = useState<MRT_SortingState>([]);\n const [density, setDensity] = useState<MRT_DensityState>(initialDensity);\n\n const initialColumnVisibility = useMemo(() => {\n return columns.reduce((acc, column) => {\n acc[column.accessorKey as string] = true;\n return acc;\n }, {} as MRT_VisibilityState);\n }, [columns]);\n\n const [columnVisibility, setColumnVisibility] = useState<MRT_VisibilityState>(\n initialColumnVisibility,\n );\n\n const [globalFilter, setGlobalFilter] = useState<string>(\"\");\n const [filters, setFilters] = useState<Array<DataFilter>>();\n\n useEffect(() => {\n setShowSkeletons(false);\n }, [data]);\n\n useEffect(() => {\n onRowSelectionChange?.(rowSelection);\n }, [rowSelection, onRowSelectionChange]);\n\n const refreshData = useCallback(async () => {\n setShowSkeletons(true);\n try {\n const newData = await fetchDataFn({\n page: page,\n resultsPerPage: resultsPerPage,\n sort: sorting,\n search: globalFilter,\n filters: filters,\n });\n setData(newData);\n setShowSkeletons(false);\n } catch (error) {\n setShowSkeletons(false);\n }\n }, [page, resultsPerPage, sorting, globalFilter, filters, fetchDataFn]);\n\n useEffect(() => {\n refreshData();\n }, [refreshData, page, resultsPerPage, sorting, globalFilter, filters]);\n\n const handleSortingChange = useCallback(\n (updater: MRT_Updater<MRT_SortingState>) => {\n setSorting((prevSorting) =>\n updater instanceof Function ? updater(prevSorting) : sorting,\n );\n },\n [sorting],\n );\n\n const handleColumnVisibility = useCallback(\n (columnId: string) => {\n setColumnVisibility((prevVisibility) => ({\n ...prevVisibility,\n [columnId]: !columnVisibility[columnId],\n }));\n },\n [columnVisibility],\n );\n\n const handleSearch = useCallback((value: string) => {\n setGlobalFilter(value);\n }, []);\n\n const handleFilters = useCallback((updatedFilters: Array<DataFilter>) => {\n setFilters(updatedFilters);\n }, []);\n\n const handleRowSelectionChange = useCallback(\n (updater: MRT_Updater<MRT_RowSelectionState>) => {\n setRowSelection((prevRowSelection) =>\n updater instanceof Function ? updater(prevRowSelection) : rowSelection,\n );\n },\n [rowSelection],\n );\n\n const updateRowOrder = useCallback(\n ({ rowId, newIndex }: { rowId: string; newIndex: number }) => {\n if (newIndex < 0) {\n return;\n }\n\n if (totalRows && newIndex > totalRows) {\n return;\n }\n\n const newData = reorderDataRowsLocally({\n currentData: data,\n rowId,\n newIndex,\n });\n\n setData(newData);\n reorderDataFn?.({ rowId, newIndex });\n refreshData();\n },\n [data, totalRows, reorderDataFn, refreshData],\n );\n\n const rowVirtualizerInstanceRef =\n useRef<MRT_Virtualizer<HTMLDivElement, HTMLTableRowElement>>(null);\n\n const getRowFromTableAndSetHovered = (\n table: TableType,\n id: MRT_RowData[\"id\"],\n ) => {\n if (id) {\n const nextRow: MRT_RowData = table.getRow(id);\n\n if (nextRow) {\n table.setHoveredRow(nextRow);\n }\n }\n };\n\n const resetDraggingAndHoveredRow = (table: TableType) => {\n setDraggingRow(null);\n table.setHoveredRow(null);\n };\n\n type HandleDragHandleKeyDownArgs = {\n table: TableType;\n row: MRT_Row<MRT_RowData>;\n event: KeyboardEvent<HTMLButtonElement>;\n };\n\n const handleDragHandleKeyDown = useCallback(\n ({ table, row, event }: HandleDragHandleKeyDownArgs) => {\n const { hoveredRow } = table.getState();\n\n const { key } = event;\n\n const isSpaceKey = key === \" \";\n const isEnterKey = key === \"Enter\";\n const isEscapeKey = key === \"Escape\";\n const isArrowDown = key === \"ArrowDown\";\n const isArrowUp = key === \"ArrowUp\";\n const isSpaceOrEnter = isSpaceKey || isEnterKey;\n const zeroIndexedPageNumber = page - 1;\n const currentIndex = row.index + zeroIndexedPageNumber * resultsPerPage;\n\n if (isEscapeKey) {\n resetDraggingAndHoveredRow(table);\n return;\n }\n\n if (isSpaceOrEnter) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (draggingRow) {\n if (typeof hoveredRow?.index === \"number\") {\n const { index } = hoveredRow;\n\n if (isSpaceOrEnter) {\n const pageRelativeIndex =\n index + zeroIndexedPageNumber * resultsPerPage;\n\n if (pageRelativeIndex !== currentIndex) {\n updateRowOrder({\n rowId: row.id,\n newIndex: pageRelativeIndex,\n });\n\n // Can't transition CSS hover effect. Use timeout to delay hovered row effect removal\n setTimeout(() => {\n resetDraggingAndHoveredRow(table);\n }, odysseyDesignTokens.TransitionDurationMainAsNumber);\n return;\n }\n }\n\n if (isArrowDown || isArrowUp) {\n const nextIndex = isArrowDown ? index + 1 : index - 1;\n getRowFromTableAndSetHovered(table, data[nextIndex]?.id);\n }\n } else {\n if (isArrowDown || isArrowUp) {\n const nextIndex = isArrowDown ? row.index + 1 : row.index - 1;\n getRowFromTableAndSetHovered(table, data[nextIndex]?.id);\n }\n }\n } else {\n if (isSpaceOrEnter) {\n setDraggingRow(row);\n }\n }\n },\n [\n data,\n draggingRow,\n odysseyDesignTokens,\n page,\n resultsPerPage,\n updateRowOrder,\n ],\n );\n\n const handleDragHandleOnDragEnd = useCallback(\n (table: TableType) => {\n const cols = table.getAllColumns();\n cols[0].toggleVisibility();\n\n const { draggingRow, hoveredRow } = table.getState();\n if (draggingRow) {\n updateRowOrder({\n rowId: draggingRow.id,\n newIndex: (hoveredRow as MRT_RowData).index,\n });\n }\n\n setDraggingRow(null);\n },\n [updateRowOrder],\n );\n\n const handleDragHandleOnDragCapture = useCallback(\n (table: TableType) => {\n if (!draggingRow && table.getState().draggingRow?.id) {\n setDraggingRow(table.getState().draggingRow);\n }\n },\n [draggingRow],\n );\n\n const table = useMaterialReactTable({\n columns: columns,\n data: data,\n state: {\n density,\n sorting,\n globalFilter,\n columnVisibility,\n rowSelection,\n showSkeletons,\n },\n rowVirtualizerInstanceRef: rowVirtualizerInstanceRef,\n rowVirtualizerOptions: { overscan: 4 },\n enableRowVirtualization:\n paginationType === \"loadMore\" || resultsPerPage > 50,\n enableColumnResizing: hasColumnResizing,\n enableDensityToggle: false,\n enableFullScreenToggle: false,\n enablePagination: false,\n enableRowSelection: hasRowSelection,\n enableFilters: false,\n enableHiding: false,\n enableRowOrdering: hasRowReordering,\n enableRowDragging: hasRowReordering,\n enableSorting: hasSorting,\n selectAllMode: \"all\",\n enableColumnActions: false,\n layoutMode: \"grid-no-grow\",\n displayColumnDefOptions: {\n \"mrt-row-actions\": {\n muiTableBodyCellProps: {\n align: \"right\",\n sx: {\n overflow: \"visible\",\n width: \"unset\",\n },\n },\n muiTableHeadCellProps: {\n align: \"right\",\n sx: {\n width: \"unset\",\n // TODO: Make the right padding here 16px (and possibly adapt it to the density padding)\n },\n },\n },\n \"mrt-row-drag\": {\n header: \"\",\n muiTableBodyCellProps: {\n sx: {\n minWidth: 0,\n width: \"auto\",\n },\n },\n muiTableHeadCellProps: {\n sx: {\n minWidth: 0,\n width: \"auto\",\n },\n },\n },\n },\n enableGlobalFilter: false,\n manualFiltering: true,\n manualSorting: true,\n getRowId: getRowId,\n icons: {\n ArrowDownwardIcon: ArrowDownIcon,\n DragHandleIcon: DragIndicatorIcon,\n SyncAltIcon: ArrowUnsortedIcon,\n },\n onSortingChange: handleSortingChange,\n onRowSelectionChange: handleRowSelectionChange,\n enableRowActions:\n hasRowReordering === true || rowActionButtons || rowActionMenuItems\n ? true\n : false,\n positionActionsColumn: \"last\",\n\n muiTableHeadCellProps: ({ column }) => ({\n className: sorting.find((item) => item.id === column.id)\n ? \"isSorted\"\n : \"isUnsorted\",\n }),\n\n muiTableBodyRowProps: ({ table, row }) => ({\n className:\n draggingRow?.id === row.id && table.getState().hoveredRow?.id !== row.id\n ? \"isDragging\"\n : table.getState().hoveredRow?.id === row.id &&\n draggingRow?.id !== row.id\n ? \"isDragTarget\"\n : draggingRow?.id === row.id &&\n table.getState().hoveredRow?.id === row.id\n ? \"isDragging isDragTarget\"\n : undefined,\n }),\n\n muiRowDragHandleProps: ({ table, row }) => ({\n title: \"Drag row or press space/enter key to start and stop reordering\",\n \"aria-label\":\n \"Drag row to reorder. Or, press space or enter to start and stop reordering and esc to cancel.\",\n onKeyDown: (event) => handleDragHandleKeyDown({ table, row, event }),\n onBlur: () => {\n resetDraggingAndHoveredRow(table);\n },\n onDragEnd: () => handleDragHandleOnDragEnd(table),\n onDragCapture: () => handleDragHandleOnDragCapture(table),\n sx: {\n padding: odysseyDesignTokens.Spacing1,\n borderRadius: odysseyDesignTokens.BorderRadiusMain,\n\n \"&:focus-visible\": {\n boxShadow: `0 0 0 2px ${odysseyDesignTokens.HueNeutralWhite}, 0 0 0 4px ${odysseyDesignTokens.PalettePrimaryMain}`,\n outline: \"2px solid transparent\",\n outlineOffset: \"1px\",\n },\n },\n }),\n\n renderRowActions: ({ row }) => {\n const currentIndex = row.index + (page - 1) * resultsPerPage;\n\n return (\n <Box sx={{ display: \"flex\" }}>\n {rowActionButtons?.(row)}\n {(rowActionMenuItems || hasRowReordering) && (\n <MenuButton\n endIcon={<MoreIcon />}\n size=\"small\"\n buttonVariant=\"floating\"\n ariaLabel=\"More actions\"\n menuAlignment=\"right\"\n >\n {rowActionMenuItems && (\n <>\n {rowActionMenuItems(row)}\n <hr />\n </>\n )}\n <MenuItem\n isDisabled={currentIndex <= 0}\n onClick={() => updateRowOrder({ rowId: row.id, newIndex: 0 })}\n >\n <ArrowTopIcon /> Bring to front\n </MenuItem>\n <MenuItem\n isDisabled={currentIndex <= 0}\n onClick={() =>\n updateRowOrder({\n rowId: row.id,\n newIndex: currentIndex <= 0 ? 0 : currentIndex - 1,\n })\n }\n >\n <ArrowUpIcon /> Bring forward\n </MenuItem>\n <MenuItem\n isDisabled={totalRows ? currentIndex >= totalRows - 1 : false}\n onClick={() =>\n updateRowOrder({\n rowId: row.id,\n newIndex: currentIndex + 1,\n })\n }\n >\n <ArrowDownIcon /> Send backward\n </MenuItem>\n <>\n {totalRows && (\n <MenuItem\n isDisabled={currentIndex >= totalRows - 1}\n onClick={() =>\n updateRowOrder({\n rowId: row.id,\n newIndex: totalRows,\n })\n }\n >\n <ArrowBottomIcon /> Send to back\n </MenuItem>\n )}\n </>\n </MenuButton>\n )}\n </Box>\n );\n },\n });\n\n const tableSettings = useMemo(\n () => (\n <>\n {hasChangeableDensity && (\n <MenuButton\n endIcon={<ListIcon />}\n ariaLabel=\"Table density\"\n menuAlignment=\"right\"\n shouldCloseOnSelect={false}\n >\n <>\n {densityValues.map((value: MRT_DensityState) => (\n <MenuItem\n key={value}\n isSelected={density === value}\n onClick={() => setDensity(value)}\n >\n {`${value.charAt(0).toUpperCase()}${value.slice(1)}`}\n </MenuItem>\n ))}\n </>\n </MenuButton>\n )}\n\n {hasColumnVisibility && (\n <MenuButton\n endIcon={<ShowIcon />}\n ariaLabel=\"Show/hide columns\"\n menuAlignment=\"right\"\n shouldCloseOnSelect={false}\n >\n <>\n {columns\n .filter((column) => column.enableHiding !== false)\n .map((column) => (\n <MenuItem\n key={column.accessorKey}\n onClick={() =>\n handleColumnVisibility(column.accessorKey as string)\n }\n >\n <MuiCheckbox\n checked={\n columnVisibility[column.accessorKey as string] !== false\n }\n />\n {column.header}\n </MenuItem>\n ))}\n </>\n </MenuButton>\n )}\n </>\n ),\n [\n columnVisibility,\n columns,\n density,\n hasChangeableDensity,\n handleColumnVisibility,\n hasColumnVisibility,\n ],\n );\n\n return (\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n <DataFilters\n onChangeSearch={hasSearch ? handleSearch : undefined}\n onChangeFilters={handleFilters}\n hasSearchSubmitButton={hasSearchSubmitButton}\n searchDelayTime={searchDelayTime}\n additionalActions={tableSettings}\n filters={\n hasFilters\n ? columns\n .filter((column) => column.enableColumnFilter !== false)\n .map((column) => {\n return {\n id: column.accessorKey as string,\n label: column.header,\n variant: column.filterVariant ?? \"text\",\n options: column.filterSelectOptions,\n };\n })\n : undefined\n }\n />\n\n <MRT_TableContainer table={table} />\n\n {hasPagination && (\n <DataTablePagination\n paginationType={paginationType}\n currentNumberOfResults={data.length}\n currentPage={page}\n isPreviousButtonDisabled={page <= 1}\n isNextButtonDisabled={false} // TODO: Add logic for disabling next/load more button\n onClickPrevious={() => setPage(page - 1)}\n onClickNext={() => {\n if (paginationType === \"loadMore\") {\n setResultsPerPage(resultsPerPage + resultsPerPageProp);\n } else {\n setPage(page + 1);\n }\n }}\n />\n )}\n </Box>\n );\n};\n\nconst MemoizedDataTable = memo(DataTable);\nMemoizedDataTable.displayName = \"DataTable\";\n\nexport { MemoizedDataTable as DataTable };\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.js","names":["useMaterialReactTable","MRT_TableContainer","memo","useCallback","useEffect","useMemo","useRef","useState","ArrowTopIcon","ArrowBottomIcon","ArrowDownIcon","ArrowUpIcon","DragIndicatorIcon","ListIcon","ShowIcon","MoreIcon","useOdysseyDesignTokens","DataTablePagination","DataFilters","Box","MenuButton","MenuItem","ArrowUnsortedIcon","useTranslation","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","densityValues","reorderDataRowsLocally","currentData","rowId","newIndex","updatedData","rowIndex","findIndex","row","id","removedRow","splice","DataTable","columns","data","dataProp","getRowId","page","pageProp","initialDensity","resultsPerPage","resultsPerPageProp","fetchDataFn","reorderDataFn","totalRows","hasSearchSubmitButton","searchDelayTime","paginationType","onRowSelectionChange","rowActionButtons","rowActionMenuItems","hasChangeableDensity","hasColumnResizing","hasColumnVisibility","hasFilters","hasPagination","hasRowReordering","hasRowSelection","hasSearch","hasSorting","odysseyDesignTokens","t","draggingRow","setDraggingRow","showSkeletons","setShowSkeletons","setData","setPage","setResultsPerPage","rowSelection","setRowSelection","sorting","setSorting","density","setDensity","initialColumnVisibility","reduce","acc","column","accessorKey","columnVisibility","setColumnVisibility","globalFilter","setGlobalFilter","filters","setFilters","refreshData","newData","sort","search","error","handleSortingChange","updater","prevSorting","Function","handleColumnVisibility","columnId","prevVisibility","handleSearch","value","handleFilters","updatedFilters","handleRowSelectionChange","prevRowSelection","updateRowOrder","rowVirtualizerInstanceRef","getRowFromTableAndSetHovered","table","nextRow","getRow","setHoveredRow","resetDraggingAndHoveredRow","handleDragHandleKeyDown","event","hoveredRow","getState","key","isSpaceKey","isEnterKey","isEscapeKey","isArrowDown","isArrowUp","isSpaceOrEnter","zeroIndexedPageNumber","currentIndex","index","preventDefault","stopPropagation","pageRelativeIndex","setTimeout","TransitionDurationMainAsNumber","nextIndex","handleDragHandleOnDragEnd","cols","getAllColumns","toggleVisibility","handleDragHandleOnDragCapture","tableState","state","rowVirtualizerOptions","overscan","enableRowVirtualization","enableColumnResizing","enableDensityToggle","enableFullScreenToggle","enablePagination","enableRowSelection","enableFilters","enableHiding","enableRowOrdering","enableRowDragging","enableSorting","selectAllMode","enableColumnActions","layoutMode","displayColumnDefOptions","muiTableBodyCellProps","align","sx","overflow","width","muiTableHeadCellProps","header","minWidth","enableGlobalFilter","manualFiltering","manualSorting","icons","ArrowDownwardIcon","DragHandleIcon","SyncAltIcon","onSortingChange","enableRowActions","positionActionsColumn","className","find","item","muiTableBodyRowProps","undefined","muiRowDragHandleProps","title","onKeyDown","onBlur","onDragEnd","onDragCapture","padding","Spacing1","borderRadius","BorderRadiusMain","boxShadow","HueNeutralWhite","PalettePrimaryMain","outline","outlineOffset","renderRowActions","display","children","endIcon","size","buttonVariant","ariaLabel","menuAlignment","isDisabled","onClick","tableSettings","shouldCloseOnSelect","map","isSelected","charAt","toUpperCase","slice","filter","_Checkbox","checked","flexDirection","gap","onChangeSearch","onChangeFilters","additionalActions","enableColumnFilter","label","variant","filterVariant","options","filterSelectOptions","currentNumberOfResults","length","currentPage","isPreviousButtonDisabled","isNextButtonDisabled","onClickPrevious","onClickNext","MemoizedDataTable","displayName"],"sources":["../../src/labs/DataTable.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 MRT_Updater,\n MRT_Virtualizer,\n MRT_RowData,\n MRT_TableOptions,\n useMaterialReactTable,\n MRT_SortingState,\n MRT_DensityState,\n MRT_VisibilityState,\n MRT_TableContainer,\n MRT_RowSelectionState,\n MRT_Row,\n MRT_ColumnDef,\n MRT_TableInstance,\n} from \"material-react-table\";\nimport {\n Fragment,\n ReactElement,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n KeyboardEvent,\n} from \"react\";\nimport {\n ArrowTopIcon,\n ArrowBottomIcon,\n ArrowDownIcon,\n ArrowUpIcon,\n DragIndicatorIcon,\n ListIcon,\n ShowIcon,\n MoreIcon,\n} from \"../icons.generated\";\nimport { Checkbox as MuiCheckbox } from \"@mui/material\";\nimport { useOdysseyDesignTokens } from \"../OdysseyDesignTokensContext\";\nimport {\n DataTablePagination,\n paginationTypeValues,\n} from \"./DataTablePagination\";\nimport { DataFilter, DataFilters } from \"./DataFilters\";\nimport { Button } from \"../Button\";\nimport { Box } from \"../Box\";\nimport { MenuButton, MenuItem } from \"..\";\nimport { ArrowUnsortedIcon } from \"../icons.generated\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const densityValues = [\"comfortable\", \"spacious\", \"compact\"] as const;\n\nexport type {\n MRT_ColumnFiltersState,\n MRT_SortingState,\n MRT_ColumnDef as TableColumn,\n} from \"material-react-table\";\n\n// The shape of the table columns,\n// with props named to match their MRT_ColumnDef counterparts\nexport type DataTableColumn = {\n /**\n * The unique ID of the column\n */\n accessorKey: string;\n /**\n * The human-friendly title of the column\n */\n header: string;\n /**\n * Customize the way each cell in the column is\n * displayed via a custom React component.\n */\n Cell?: MRT_ColumnDef<MRT_RowData>[\"Cell\"];\n /**\n * The UI control that will be used to filter the column.\n * Defaults to a standard text input.\n */\n filterVariant?: MRT_ColumnDef<MRT_RowData>[\"filterVariant\"];\n /**\n * If the filter control has preset options (such as a select or multi-select),\n * these are the options provided.\n */\n filterSelectOptions?: Array<{ label: string; value: string }>;\n /**\n * The optional column width, in pixels\n */\n size?: number;\n /**\n * The minimum column width, in pixels\n */\n minSize?: number;\n /**\n * The maximum column width, in pixels\n */\n maxSize?: number;\n /**\n * If set to false, the column won't be filterable\n */\n enableColumnFilter?: boolean;\n /**\n * If set to false, the column won't be searchable\n */\n enableGlobalFilter?: boolean;\n /**\n * If set to false, the column won't be sortable\n */\n enableSorting?: boolean;\n /**\n * If set to false, the column won't be resizable\n */\n enableResizing?: boolean;\n /**\n * If set to false, the column won't be hideable\n */\n enableHiding?: boolean;\n};\n\nexport type DataTableProps = {\n /**\n * The columns that make up the table\n */\n columns: DataTableColumn[];\n /**\n * The data that goes into the table, which will be displayed\n * as the table rows\n */\n data: MRT_TableOptions<MRT_RowData>[\"data\"];\n /**\n * The total number of rows in the table. Optional, because it's sometimes impossible\n * to calculate. Used in table pagination to know when to disable the \"next\"/\"more\" button.\n */\n totalRows?: number;\n /**\n * The function to get the ID of a row\n */\n getRowId?: MRT_TableOptions<MRT_RowData>[\"getRowId\"];\n /**\n * The initial density of the table. This is available even if the table density\n * isn't changeable.\n */\n initialDensity?: (typeof densityValues)[number];\n /**\n * If true, the end user will be able to change the table density.\n */\n hasChangeableDensity?: boolean;\n /**\n * If true, the end user can resize individual columns.\n */\n hasColumnResizing?: boolean;\n /**\n * If true, the end user will be able to show/hide columns.\n */\n hasColumnVisibility?: boolean;\n /**\n * If true, the end user will be able to filter columns.\n */\n hasFilters?: boolean;\n /**\n * If true, the table will include pagination controls.\n */\n hasPagination?: boolean;\n /**\n * If true, the table will include checkboxes on each row, enabling\n * the user to select some or all rows.\n */\n hasRowSelection?: boolean;\n /**\n * If true, the global table search controls will be shown.\n */\n hasSearch?: boolean;\n /**\n * If true, the end user can sort columns (ascending, descending, or neither)\n */\n hasSorting?: boolean;\n /**\n * If true, the end user can reorder rows via a drag-and-drop interface\n */\n hasRowReordering?: boolean;\n /**\n * If true, the search field will include a Search button, rather than\n * firing on input change.\n */\n hasSearchSubmitButton?: boolean;\n /**\n * The debounce time, in milliseconds, for the search input firing\n * `onChangeSearch` when changed. If `hasSearchSubmitButton` is true,\n * this doesn't do anything.\n */\n searchDelayTime?: number;\n /**\n * Callback that fires when a row (or rows) is selected or unselected.\n */\n onRowSelectionChange?: (rowSelection: MRT_RowSelectionState) => void;\n /**\n * Callback that fires whenever the table needs to fetch new data, due to changes in\n * page, results per page, search input, filters, or sorting\n */\n fetchDataFn: ({\n page,\n resultsPerPage,\n search,\n filters,\n sort,\n }: {\n page?: number;\n resultsPerPage?: number;\n search?: string;\n filters?: DataFilter[];\n sort?: MRT_SortingState;\n }) => MRT_TableOptions<MRT_RowData>[\"data\"];\n /**\n * Callback that fires when the user reorders rows within the table. Can be used\n * to propogate order change to the backend.\n */\n reorderDataFn?: ({\n rowId,\n newIndex,\n }: {\n rowId: string;\n newIndex: number;\n }) => void;\n /**\n * The current page number.\n */\n page?: number;\n /**\n * The number of results per page.\n */\n resultsPerPage?: number;\n /**\n * The type of pagination controls shown. Defaults to next/prev buttons, but can be\n * set to a simple \"Load more\" button by setting to \"loadMore\".\n */\n paginationType?: (typeof paginationTypeValues)[number];\n /**\n * Action buttons to display in each row\n */\n rowActionButtons?: (\n row: MRT_RowData,\n ) => ReactElement<typeof Button | typeof Fragment>;\n /**\n * Menu items to include in the optional actions menu on each row.\n */\n rowActionMenuItems?: (\n row: MRT_RowData,\n ) => ReactElement<typeof MenuItem | typeof Fragment>;\n};\n\ntype TableType = MRT_TableInstance<MRT_RowData>;\n\nconst reorderDataRowsLocally = ({\n currentData,\n rowId,\n newIndex,\n}: {\n currentData: MRT_TableOptions<MRT_RowData>[\"data\"];\n rowId: string;\n newIndex: number;\n}) => {\n const updatedData = [...currentData];\n\n const rowIndex = updatedData.findIndex((row) => row.id === rowId);\n\n if (rowIndex !== -1) {\n // Remove the row from its current position\n const [removedRow] = updatedData.splice(rowIndex, 1);\n\n // Insert the row at the new index\n updatedData.splice(newIndex, 0, removedRow);\n }\n\n return updatedData;\n};\n\nconst DataTable = ({\n columns,\n data: dataProp,\n getRowId,\n page: pageProp = 1,\n initialDensity = densityValues[0],\n resultsPerPage: resultsPerPageProp = 20,\n fetchDataFn,\n reorderDataFn,\n totalRows,\n hasSearchSubmitButton,\n searchDelayTime,\n paginationType = \"paged\",\n onRowSelectionChange,\n rowActionButtons,\n rowActionMenuItems,\n hasChangeableDensity,\n hasColumnResizing,\n hasColumnVisibility,\n hasFilters,\n hasPagination,\n hasRowReordering,\n hasRowSelection,\n hasSearch,\n hasSorting,\n}: DataTableProps) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n const [draggingRow, setDraggingRow] = useState<MRT_Row<MRT_RowData> | null>();\n const [showSkeletons, setShowSkeletons] = useState<boolean>(true);\n const [data, setData] =\n useState<MRT_TableOptions<MRT_RowData>[\"data\"]>(dataProp);\n const [page, setPage] = useState<number>(pageProp);\n const [resultsPerPage, setResultsPerPage] =\n useState<number>(resultsPerPageProp);\n const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n const [sorting, setSorting] = useState<MRT_SortingState>([]);\n const [density, setDensity] = useState<MRT_DensityState>(initialDensity);\n\n const initialColumnVisibility = useMemo(() => {\n return columns.reduce((acc, column) => {\n acc[column.accessorKey as string] = true;\n return acc;\n }, {} as MRT_VisibilityState);\n }, [columns]);\n\n const [columnVisibility, setColumnVisibility] = useState<MRT_VisibilityState>(\n initialColumnVisibility,\n );\n\n const [globalFilter, setGlobalFilter] = useState<string>(\"\");\n const [filters, setFilters] = useState<Array<DataFilter>>();\n\n useEffect(() => {\n setShowSkeletons(false);\n }, [data]);\n\n useEffect(() => {\n onRowSelectionChange?.(rowSelection);\n }, [rowSelection, onRowSelectionChange]);\n\n const refreshData = useCallback(async () => {\n setShowSkeletons(true);\n try {\n const newData = await fetchDataFn({\n page: page,\n resultsPerPage: resultsPerPage,\n sort: sorting,\n search: globalFilter,\n filters: filters,\n });\n setData(newData);\n setShowSkeletons(false);\n } catch (error) {\n setShowSkeletons(false);\n }\n }, [page, resultsPerPage, sorting, globalFilter, filters, fetchDataFn]);\n\n useEffect(() => {\n refreshData();\n }, [refreshData, page, resultsPerPage, sorting, globalFilter, filters]);\n\n const handleSortingChange = useCallback(\n (updater: MRT_Updater<MRT_SortingState>) => {\n setSorting((prevSorting) =>\n updater instanceof Function ? updater(prevSorting) : sorting,\n );\n },\n [sorting],\n );\n\n const handleColumnVisibility = useCallback(\n (columnId: string) => {\n setColumnVisibility((prevVisibility) => ({\n ...prevVisibility,\n [columnId]: !columnVisibility[columnId],\n }));\n },\n [columnVisibility],\n );\n\n const handleSearch = useCallback((value: string) => {\n setGlobalFilter(value);\n }, []);\n\n const handleFilters = useCallback((updatedFilters: Array<DataFilter>) => {\n setFilters(updatedFilters);\n }, []);\n\n const handleRowSelectionChange = useCallback(\n (updater: MRT_Updater<MRT_RowSelectionState>) => {\n setRowSelection((prevRowSelection) =>\n updater instanceof Function ? updater(prevRowSelection) : rowSelection,\n );\n },\n [rowSelection],\n );\n\n const updateRowOrder = useCallback(\n ({ rowId, newIndex }: { rowId: string; newIndex: number }) => {\n if (newIndex < 0) {\n return;\n }\n\n if (totalRows && newIndex > totalRows) {\n return;\n }\n\n const newData = reorderDataRowsLocally({\n currentData: data,\n rowId,\n newIndex,\n });\n\n setData(newData);\n reorderDataFn?.({ rowId, newIndex });\n refreshData();\n },\n [data, totalRows, reorderDataFn, refreshData],\n );\n\n const rowVirtualizerInstanceRef =\n useRef<MRT_Virtualizer<HTMLDivElement, HTMLTableRowElement>>(null);\n\n const getRowFromTableAndSetHovered = (\n table: TableType,\n id: MRT_RowData[\"id\"],\n ) => {\n if (id) {\n const nextRow: MRT_RowData = table.getRow(id);\n\n if (nextRow) {\n table.setHoveredRow(nextRow);\n }\n }\n };\n\n const resetDraggingAndHoveredRow = (table: TableType) => {\n setDraggingRow(null);\n table.setHoveredRow(null);\n };\n\n type HandleDragHandleKeyDownArgs = {\n table: TableType;\n row: MRT_Row<MRT_RowData>;\n event: KeyboardEvent<HTMLButtonElement>;\n };\n\n const handleDragHandleKeyDown = useCallback(\n ({ table, row, event }: HandleDragHandleKeyDownArgs) => {\n const { hoveredRow } = table.getState();\n\n const { key } = event;\n\n const isSpaceKey = key === \" \";\n const isEnterKey = key === \"Enter\";\n const isEscapeKey = key === \"Escape\";\n const isArrowDown = key === \"ArrowDown\";\n const isArrowUp = key === \"ArrowUp\";\n const isSpaceOrEnter = isSpaceKey || isEnterKey;\n const zeroIndexedPageNumber = page - 1;\n const currentIndex = row.index + zeroIndexedPageNumber * resultsPerPage;\n\n if (isEscapeKey) {\n resetDraggingAndHoveredRow(table);\n return;\n }\n\n if (isSpaceOrEnter) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (draggingRow) {\n if (typeof hoveredRow?.index === \"number\") {\n const { index } = hoveredRow;\n\n if (isSpaceOrEnter) {\n const pageRelativeIndex =\n index + zeroIndexedPageNumber * resultsPerPage;\n\n if (pageRelativeIndex !== currentIndex) {\n updateRowOrder({\n rowId: row.id,\n newIndex: pageRelativeIndex,\n });\n\n // Can't transition CSS hover effect. Use timeout to delay hovered row effect removal\n setTimeout(() => {\n resetDraggingAndHoveredRow(table);\n }, odysseyDesignTokens.TransitionDurationMainAsNumber);\n return;\n }\n }\n\n if (isArrowDown || isArrowUp) {\n const nextIndex = isArrowDown ? index + 1 : index - 1;\n getRowFromTableAndSetHovered(table, data[nextIndex]?.id);\n }\n } else {\n if (isArrowDown || isArrowUp) {\n const nextIndex = isArrowDown ? row.index + 1 : row.index - 1;\n getRowFromTableAndSetHovered(table, data[nextIndex]?.id);\n }\n }\n } else {\n if (isSpaceOrEnter) {\n setDraggingRow(row);\n }\n }\n },\n [\n data,\n draggingRow,\n odysseyDesignTokens,\n page,\n resultsPerPage,\n updateRowOrder,\n ],\n );\n\n const handleDragHandleOnDragEnd = useCallback(\n (table: TableType) => {\n const cols = table.getAllColumns();\n cols[0].toggleVisibility();\n\n const { draggingRow, hoveredRow } = table.getState();\n if (draggingRow) {\n updateRowOrder({\n rowId: draggingRow.id,\n newIndex: (hoveredRow as MRT_RowData).index,\n });\n }\n\n setDraggingRow(null);\n },\n [updateRowOrder],\n );\n\n const handleDragHandleOnDragCapture = useCallback(\n (table: TableType) => {\n if (!draggingRow && table.getState().draggingRow?.id) {\n setDraggingRow(table.getState().draggingRow);\n }\n },\n [draggingRow],\n );\n\n const tableState = useMemo(\n () => ({\n density,\n sorting,\n globalFilter,\n columnVisibility,\n rowSelection,\n showSkeletons,\n }),\n [\n density,\n sorting,\n globalFilter,\n columnVisibility,\n rowSelection,\n showSkeletons,\n ],\n );\n\n const table = useMaterialReactTable({\n columns: columns,\n data: data,\n state: tableState,\n rowVirtualizerInstanceRef: rowVirtualizerInstanceRef,\n rowVirtualizerOptions: { overscan: 4 },\n enableRowVirtualization:\n paginationType === \"loadMore\" || resultsPerPage > 50,\n enableColumnResizing: hasColumnResizing,\n enableDensityToggle: false,\n enableFullScreenToggle: false,\n enablePagination: false,\n enableRowSelection: hasRowSelection,\n enableFilters: false,\n enableHiding: false,\n enableRowOrdering: hasRowReordering,\n enableRowDragging: hasRowReordering,\n enableSorting: hasSorting,\n selectAllMode: \"all\",\n enableColumnActions: false,\n layoutMode: \"grid-no-grow\",\n displayColumnDefOptions: {\n \"mrt-row-actions\": {\n muiTableBodyCellProps: {\n align: \"right\",\n sx: {\n overflow: \"visible\",\n width: \"unset\",\n },\n },\n muiTableHeadCellProps: {\n align: \"right\",\n sx: {\n width: \"unset\",\n // TODO: Make the right padding here 16px (and possibly adapt it to the density padding)\n },\n },\n },\n \"mrt-row-drag\": {\n header: \"\",\n muiTableBodyCellProps: {\n sx: {\n minWidth: 0,\n width: \"auto\",\n },\n },\n muiTableHeadCellProps: {\n sx: {\n minWidth: 0,\n width: \"auto\",\n },\n },\n },\n },\n enableGlobalFilter: false,\n manualFiltering: true,\n manualSorting: true,\n getRowId: getRowId,\n icons: {\n ArrowDownwardIcon: ArrowDownIcon,\n DragHandleIcon: DragIndicatorIcon,\n SyncAltIcon: ArrowUnsortedIcon,\n },\n onSortingChange: handleSortingChange,\n onRowSelectionChange: handleRowSelectionChange,\n enableRowActions:\n hasRowReordering === true || rowActionButtons || rowActionMenuItems\n ? true\n : false,\n positionActionsColumn: \"last\",\n\n muiTableHeadCellProps: ({ column }) => ({\n className: sorting.find((item) => item.id === column.id)\n ? \"isSorted\"\n : \"isUnsorted\",\n }),\n\n muiTableBodyRowProps: ({ table, row }) => ({\n className:\n draggingRow?.id === row.id && table.getState().hoveredRow?.id !== row.id\n ? \"isDragging\"\n : table.getState().hoveredRow?.id === row.id &&\n draggingRow?.id !== row.id\n ? \"isDragTarget\"\n : draggingRow?.id === row.id &&\n table.getState().hoveredRow?.id === row.id\n ? \"isDragging isDragTarget\"\n : undefined,\n }),\n\n muiRowDragHandleProps: ({ table, row }) => ({\n title: t(\"table.draghandle.tooltip\"),\n \"aria-label\": t(\"table.draghandle.arialabel\"),\n onKeyDown: (event) => handleDragHandleKeyDown({ table, row, event }),\n onBlur: () => {\n resetDraggingAndHoveredRow(table);\n },\n onDragEnd: () => handleDragHandleOnDragEnd(table),\n onDragCapture: () => handleDragHandleOnDragCapture(table),\n sx: {\n padding: odysseyDesignTokens.Spacing1,\n borderRadius: odysseyDesignTokens.BorderRadiusMain,\n\n \"&:focus-visible\": {\n boxShadow: `0 0 0 2px ${odysseyDesignTokens.HueNeutralWhite}, 0 0 0 4px ${odysseyDesignTokens.PalettePrimaryMain}`,\n outline: \"2px solid transparent\",\n outlineOffset: \"1px\",\n },\n },\n }),\n\n renderRowActions: ({ row }) => {\n const currentIndex = row.index + (page - 1) * resultsPerPage;\n\n return (\n <Box sx={{ display: \"flex\" }}>\n {rowActionButtons?.(row)}\n {(rowActionMenuItems || hasRowReordering) && (\n <MenuButton\n endIcon={<MoreIcon />}\n size=\"small\"\n buttonVariant=\"floating\"\n ariaLabel={t(\"table.moreactions.arialabel\")}\n menuAlignment=\"right\"\n >\n {rowActionMenuItems && (\n <>\n {rowActionMenuItems(row)}\n <hr />\n </>\n )}\n <MenuItem\n isDisabled={currentIndex <= 0}\n onClick={() => updateRowOrder({ rowId: row.id, newIndex: 0 })}\n >\n <ArrowTopIcon /> Bring to front\n </MenuItem>\n <MenuItem\n isDisabled={currentIndex <= 0}\n onClick={() =>\n updateRowOrder({\n rowId: row.id,\n newIndex: currentIndex <= 0 ? 0 : currentIndex - 1,\n })\n }\n >\n <ArrowUpIcon /> Bring forward\n </MenuItem>\n <MenuItem\n isDisabled={totalRows ? currentIndex >= totalRows - 1 : false}\n onClick={() =>\n updateRowOrder({\n rowId: row.id,\n newIndex: currentIndex + 1,\n })\n }\n >\n <ArrowDownIcon /> Send backward\n </MenuItem>\n <>\n {totalRows && (\n <MenuItem\n isDisabled={currentIndex >= totalRows - 1}\n onClick={() =>\n updateRowOrder({\n rowId: row.id,\n newIndex: totalRows,\n })\n }\n >\n <ArrowBottomIcon /> Send to back\n </MenuItem>\n )}\n </>\n </MenuButton>\n )}\n </Box>\n );\n },\n });\n\n const tableSettings = useMemo(\n () => (\n <>\n {hasChangeableDensity && (\n <MenuButton\n endIcon={<ListIcon />}\n ariaLabel=\"Table density\"\n menuAlignment=\"right\"\n shouldCloseOnSelect={false}\n >\n <>\n {densityValues.map((value: MRT_DensityState) => (\n <MenuItem\n key={value}\n isSelected={density === value}\n onClick={() => setDensity(value)}\n >\n {`${value.charAt(0).toUpperCase()}${value.slice(1)}`}\n </MenuItem>\n ))}\n </>\n </MenuButton>\n )}\n\n {hasColumnVisibility && (\n <MenuButton\n endIcon={<ShowIcon />}\n ariaLabel=\"Show/hide columns\"\n menuAlignment=\"right\"\n shouldCloseOnSelect={false}\n >\n <>\n {columns\n .filter((column) => column.enableHiding !== false)\n .map((column) => (\n <MenuItem\n key={column.accessorKey}\n onClick={() =>\n handleColumnVisibility(column.accessorKey as string)\n }\n >\n <MuiCheckbox\n checked={\n columnVisibility[column.accessorKey as string] !== false\n }\n />\n {column.header}\n </MenuItem>\n ))}\n </>\n </MenuButton>\n )}\n </>\n ),\n [\n columnVisibility,\n columns,\n density,\n hasChangeableDensity,\n handleColumnVisibility,\n hasColumnVisibility,\n ],\n );\n\n return (\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n <DataFilters\n onChangeSearch={hasSearch ? handleSearch : undefined}\n onChangeFilters={handleFilters}\n hasSearchSubmitButton={hasSearchSubmitButton}\n searchDelayTime={searchDelayTime}\n additionalActions={tableSettings}\n filters={\n hasFilters\n ? columns\n .filter((column) => column.enableColumnFilter !== false)\n .map((column) => {\n return {\n id: column.accessorKey as string,\n label: column.header,\n variant: column.filterVariant ?? \"text\",\n options: column.filterSelectOptions,\n };\n })\n : undefined\n }\n />\n\n <MRT_TableContainer table={table} />\n\n {hasPagination && (\n <DataTablePagination\n paginationType={paginationType}\n currentNumberOfResults={data.length}\n currentPage={page}\n isPreviousButtonDisabled={page <= 1}\n isNextButtonDisabled={false} // TODO: Add logic for disabling next/load more button\n onClickPrevious={() => setPage(page - 1)}\n onClickNext={() => {\n if (paginationType === \"loadMore\") {\n setResultsPerPage(resultsPerPage + resultsPerPageProp);\n } else {\n setPage(page + 1);\n }\n }}\n />\n )}\n </Box>\n );\n};\n\nconst MemoizedDataTable = memo(DataTable);\nMemoizedDataTable.displayName = \"DataTable\";\n\nexport { MemoizedDataTable as DataTable };\n"],"mappings":"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"}
@@ -14,7 +14,6 @@ export { AdapterDateFns } from "@mui/x-date-pickers/AdapterDateFns";
14
14
  export { LocalizationProvider } from "@mui/x-date-pickers";
15
15
  export * from "./DatePicker.js";
16
16
  export * from "./datePickerTheme.js";
17
- export * from "./DataTable.js";
18
17
  export * from "./DataTablePagination.js";
19
18
  export * from "./DataFilters.js";
20
19
  export * from "./Drawer.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["AdapterDateFns","LocalizationProvider"],"sources":["../../src/labs/index.ts"],"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\nexport { AdapterDateFns } from \"@mui/x-date-pickers/AdapterDateFns\";\nexport { LocalizationProvider } from \"@mui/x-date-pickers\";\nexport type { LocalizationProviderProps } from \"@mui/x-date-pickers\";\n\nexport * from \"./DatePicker\";\nexport * from \"./datePickerTheme\";\n\nexport * from \"./DataTable\";\nexport * from \"./DataTablePagination\";\nexport * from \"./DataFilters\";\n\nexport * from \"./Drawer\";\n\nexport * from \"./materialReactTableTypes\";\nexport * from \"./StaticTable\";\nexport * from \"./PaginatedTable\";\n\nexport * from \"./GroupPicker\";\nexport * from \"./VirtualizedAutocomplete\";\n\nexport * from \"./Switch\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,oCAAoC;AACnE,SAASC,oBAAoB,QAAQ,qBAAqB;AAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA"}
1
+ {"version":3,"file":"index.js","names":["AdapterDateFns","LocalizationProvider"],"sources":["../../src/labs/index.ts"],"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\nexport { AdapterDateFns } from \"@mui/x-date-pickers/AdapterDateFns\";\nexport { LocalizationProvider } from \"@mui/x-date-pickers\";\nexport type { LocalizationProviderProps } from \"@mui/x-date-pickers\";\n\nexport * from \"./DatePicker\";\nexport * from \"./datePickerTheme\";\n\nexport * from \"./DataTablePagination\";\nexport * from \"./DataFilters\";\n\nexport * from \"./Drawer\";\n\nexport * from \"./materialReactTableTypes\";\nexport * from \"./StaticTable\";\nexport * from \"./PaginatedTable\";\n\nexport * from \"./GroupPicker\";\nexport * from \"./VirtualizedAutocomplete\";\n\nexport * from \"./Switch\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,oCAAoC;AACnE,SAASC,oBAAoB,QAAQ,qBAAqB;AAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA"}
@@ -5,17 +5,34 @@ export const translation = {
5
5
  "fielderror.screenreader.text": "Error",
6
6
  "fieldlabel.optional.text": "Optional",
7
7
  "fieldlabel.required.text": "Required",
8
- "passwordfield.icon.label.show": "Show password",
8
+ "filters.clear.label": "Clear filters",
9
+ "filters.filter.any": "Any",
10
+ "filters.filter.clear": "Clear filter",
11
+ "filters.filters.arialabel": "Filters",
12
+ "filters.menuitem.any": "Any {{label}}",
13
+ "filters.menuitem.selected": "{{selected}} selected",
14
+ "filters.search.label": "Search",
9
15
  "passwordfield.icon.label.hide": "Hide password",
16
+ "passwordfield.icon.label.show": "Show password",
10
17
  "severity.error": "error",
11
18
  "severity.info": "info",
12
19
  "severity.success": "success",
13
20
  "severity.warning": "warning",
14
21
  "switch.active": "Active",
15
22
  "switch.inactive": "Inactive",
23
+ "table.actions": "Actions",
24
+ "table.columnvisibility.arialabel": "Show/hide columns",
25
+ "table.density.arialabel": "Table density",
26
+ "table.draghandle.arialabel": "Drag row to reorder. Or, press space or enter to start and stop reordering and esc to cancel.",
27
+ "table.draghandle.tooltip": "Drag row or press space/enter key to start and stop reordering",
16
28
  "table.error": "Error loading data.",
17
29
  "table.fetchedrows.text": "Fetched {{totalRows}} row",
18
30
  "table.fetchedrows.text_plural": "Fetched {{totalRows}} total rows",
31
+ "table.moreactions.arialabel": "More actions",
32
+ "table.reorder.backward": "Send backward",
33
+ "table.reorder.forward": "Bring forward",
34
+ "table.reorder.toback": "Send to back",
35
+ "table.reorder.tofront": "Bring to front",
19
36
  "table.rows.text": "{{totalRows}} row",
20
37
  "table.rows.text_plural": "{{totalRows}} rows"
21
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"odyssey-react-mui.js","names":["translation"],"sources":["../../../src/properties/ts/odyssey-react-mui.ts"],"sourcesContent":["export const translation = {\"breadcrumbs.home.text\":\"Home\",\"breadcrumbs.label.text\":\"Breadcrumbs\",\"close.text\":\"close\",\"fielderror.screenreader.text\":\"Error\",\"fieldlabel.optional.text\":\"Optional\",\"fieldlabel.required.text\":\"Required\",\"passwordfield.icon.label.show\":\"Show password\",\"passwordfield.icon.label.hide\":\"Hide password\",\"severity.error\":\"error\",\"severity.info\":\"info\",\"severity.success\":\"success\",\"severity.warning\":\"warning\",\"switch.active\":\"Active\",\"switch.inactive\":\"Inactive\",\"table.error\":\"Error loading data.\",\"table.fetchedrows.text\":\"Fetched {{totalRows}} row\",\"table.fetchedrows.text_plural\":\"Fetched {{totalRows}} total rows\",\"table.rows.text\":\"{{totalRows}} row\",\"table.rows.text_plural\":\"{{totalRows}} rows\"};"],"mappings":"AAAA,OAAO,MAAMA,WAAW,GAAG;EAAC,uBAAuB,EAAC,MAAM;EAAC,wBAAwB,EAAC,aAAa;EAAC,YAAY,EAAC,OAAO;EAAC,8BAA8B,EAAC,OAAO;EAAC,0BAA0B,EAAC,UAAU;EAAC,0BAA0B,EAAC,UAAU;EAAC,+BAA+B,EAAC,eAAe;EAAC,+BAA+B,EAAC,eAAe;EAAC,gBAAgB,EAAC,OAAO;EAAC,eAAe,EAAC,MAAM;EAAC,kBAAkB,EAAC,SAAS;EAAC,kBAAkB,EAAC,SAAS;EAAC,eAAe,EAAC,QAAQ;EAAC,iBAAiB,EAAC,UAAU;EAAC,aAAa,EAAC,qBAAqB;EAAC,wBAAwB,EAAC,2BAA2B;EAAC,+BAA+B,EAAC,kCAAkC;EAAC,iBAAiB,EAAC,mBAAmB;EAAC,wBAAwB,EAAC;AAAoB,CAAC"}
1
+ {"version":3,"file":"odyssey-react-mui.js","names":["translation"],"sources":["../../../src/properties/ts/odyssey-react-mui.ts"],"sourcesContent":["export const translation = {\"breadcrumbs.home.text\":\"Home\",\"breadcrumbs.label.text\":\"Breadcrumbs\",\"close.text\":\"close\",\"fielderror.screenreader.text\":\"Error\",\"fieldlabel.optional.text\":\"Optional\",\"fieldlabel.required.text\":\"Required\",\"filters.clear.label\":\"Clear filters\",\"filters.filter.any\":\"Any\",\"filters.filter.clear\":\"Clear filter\",\"filters.filters.arialabel\":\"Filters\",\"filters.menuitem.any\":\"Any {{label}}\",\"filters.menuitem.selected\":\"{{selected}} selected\",\"filters.search.label\":\"Search\",\"passwordfield.icon.label.hide\":\"Hide password\",\"passwordfield.icon.label.show\":\"Show password\",\"severity.error\":\"error\",\"severity.info\":\"info\",\"severity.success\":\"success\",\"severity.warning\":\"warning\",\"switch.active\":\"Active\",\"switch.inactive\":\"Inactive\",\"table.actions\":\"Actions\",\"table.columnvisibility.arialabel\":\"Show/hide columns\",\"table.density.arialabel\":\"Table density\",\"table.draghandle.arialabel\":\"Drag row to reorder. Or, press space or enter to start and stop reordering and esc to cancel.\",\"table.draghandle.tooltip\":\"Drag row or press space/enter key to start and stop reordering\",\"table.error\":\"Error loading data.\",\"table.fetchedrows.text\":\"Fetched {{totalRows}} row\",\"table.fetchedrows.text_plural\":\"Fetched {{totalRows}} total rows\",\"table.moreactions.arialabel\":\"More actions\",\"table.reorder.backward\":\"Send backward\",\"table.reorder.forward\":\"Bring forward\",\"table.reorder.toback\":\"Send to back\",\"table.reorder.tofront\":\"Bring to front\",\"table.rows.text\":\"{{totalRows}} row\",\"table.rows.text_plural\":\"{{totalRows}} rows\"};"],"mappings":"AAAA,OAAO,MAAMA,WAAW,GAAG;EAAC,uBAAuB,EAAC,MAAM;EAAC,wBAAwB,EAAC,aAAa;EAAC,YAAY,EAAC,OAAO;EAAC,8BAA8B,EAAC,OAAO;EAAC,0BAA0B,EAAC,UAAU;EAAC,0BAA0B,EAAC,UAAU;EAAC,qBAAqB,EAAC,eAAe;EAAC,oBAAoB,EAAC,KAAK;EAAC,sBAAsB,EAAC,cAAc;EAAC,2BAA2B,EAAC,SAAS;EAAC,sBAAsB,EAAC,eAAe;EAAC,2BAA2B,EAAC,uBAAuB;EAAC,sBAAsB,EAAC,QAAQ;EAAC,+BAA+B,EAAC,eAAe;EAAC,+BAA+B,EAAC,eAAe;EAAC,gBAAgB,EAAC,OAAO;EAAC,eAAe,EAAC,MAAM;EAAC,kBAAkB,EAAC,SAAS;EAAC,kBAAkB,EAAC,SAAS;EAAC,eAAe,EAAC,QAAQ;EAAC,iBAAiB,EAAC,UAAU;EAAC,eAAe,EAAC,SAAS;EAAC,kCAAkC,EAAC,mBAAmB;EAAC,yBAAyB,EAAC,eAAe;EAAC,4BAA4B,EAAC,+FAA+F;EAAC,0BAA0B,EAAC,gEAAgE;EAAC,aAAa,EAAC,qBAAqB;EAAC,wBAAwB,EAAC,2BAA2B;EAAC,+BAA+B,EAAC,kCAAkC;EAAC,6BAA6B,EAAC,cAAc;EAAC,wBAAwB,EAAC,eAAe;EAAC,uBAAuB,EAAC,eAAe;EAAC,sBAAsB,EAAC,cAAc;EAAC,uBAAuB,EAAC,gBAAgB;EAAC,iBAAiB,EAAC,mBAAmB;EAAC,wBAAwB,EAAC;AAAoB,CAAC"}