@okta/odyssey-react-mui 1.35.2 → 1.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/DatePickers/useOdysseyDateFields.cjs +2 -2
- package/dist/cjs/DatePickers/useOdysseyDateFields.cjs.map +1 -1
- package/dist/cjs/Field.cjs +1 -1
- package/dist/cjs/Field.cjs.map +1 -1
- package/dist/cjs/Pagination/Pagination.cjs +0 -6
- package/dist/cjs/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/StringWithValue.cjs.map +1 -0
- package/dist/cjs/inputUtils.cjs +1 -1
- package/dist/cjs/inputUtils.cjs.map +1 -1
- package/dist/cjs/labs/DataFilters.cjs +4 -4
- package/dist/cjs/labs/DataFilters.cjs.map +1 -1
- package/dist/cjs/labs/DataView/DataCard.cjs +18 -18
- package/dist/cjs/labs/DataView/DataCard.cjs.map +1 -1
- package/dist/cjs/labs/DataView/DataView.cjs +10 -10
- package/dist/cjs/labs/DataView/DataView.cjs.map +1 -1
- package/dist/cjs/labs/DataView/useFilterConversion.cjs +1 -1
- package/dist/cjs/labs/DataView/useFilterConversion.cjs.map +1 -1
- package/dist/cjs/theme/useMediaQuery.cjs +1 -1
- package/dist/cjs/theme/useMediaQuery.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNav.cjs +108 -60
- package/dist/cjs/ui-shell/SideNav/SideNav.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/SideNavToggleButton.cjs +84 -112
- package/dist/cjs/ui-shell/SideNav/SideNavToggleButton.cjs.map +1 -1
- package/dist/cjs/ui-shell/SideNav/useIsSideNavCollapsedSessionStorage.cjs +26 -0
- package/dist/cjs/ui-shell/SideNav/useIsSideNavCollapsedSessionStorage.cjs.map +1 -0
- package/dist/cjs/ui-shell/WideUiShellContent.cjs +2 -1
- package/dist/cjs/ui-shell/WideUiShellContent.cjs.map +1 -1
- package/dist/cjs/ui-shell/index.cjs +8 -1
- package/dist/cjs/ui-shell/index.cjs.map +1 -1
- package/dist/cjs/ui-shell/useMatchAppElementToUiShellAppArea.cjs +1 -1
- package/dist/cjs/ui-shell/useMatchAppElementToUiShellAppArea.cjs.map +1 -1
- package/dist/cjs/ui-shell/useScrollState.cjs +71 -21
- package/dist/cjs/ui-shell/useScrollState.cjs.map +1 -1
- package/dist/cjs/useMountLifecycleEffect.cjs +36 -0
- package/dist/cjs/useMountLifecycleEffect.cjs.map +1 -0
- package/dist/cjs/useSessionStorageState.cjs +64 -0
- package/dist/cjs/useSessionStorageState.cjs.map +1 -0
- package/dist/cjs/web-component/createReactRootElements.cjs +5 -3
- package/dist/cjs/web-component/createReactRootElements.cjs.map +1 -1
- package/dist/esm/DatePickers/useOdysseyDateFields.js +2 -2
- package/dist/esm/DatePickers/useOdysseyDateFields.js.map +1 -1
- package/dist/esm/Field.js +1 -1
- package/dist/esm/Field.js.map +1 -1
- package/dist/esm/Pagination/Pagination.js +0 -6
- package/dist/esm/Pagination/Pagination.js.map +1 -1
- package/dist/esm/StringWithValue.js.map +1 -0
- package/dist/esm/inputUtils.js +1 -1
- package/dist/esm/inputUtils.js.map +1 -1
- package/dist/esm/labs/DataFilters.js +4 -4
- package/dist/esm/labs/DataFilters.js.map +1 -1
- package/dist/esm/labs/DataView/DataCard.js +18 -18
- package/dist/esm/labs/DataView/DataCard.js.map +1 -1
- package/dist/esm/labs/DataView/DataView.js +10 -10
- package/dist/esm/labs/DataView/DataView.js.map +1 -1
- package/dist/esm/labs/DataView/useFilterConversion.js +1 -1
- package/dist/esm/labs/DataView/useFilterConversion.js.map +1 -1
- package/dist/esm/theme/useMediaQuery.js +1 -1
- package/dist/esm/theme/useMediaQuery.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNav.js +109 -61
- package/dist/esm/ui-shell/SideNav/SideNav.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/SideNavToggleButton.js +85 -113
- package/dist/esm/ui-shell/SideNav/SideNavToggleButton.js.map +1 -1
- package/dist/esm/ui-shell/SideNav/useIsSideNavCollapsedSessionStorage.js +19 -0
- package/dist/esm/ui-shell/SideNav/useIsSideNavCollapsedSessionStorage.js.map +1 -0
- package/dist/esm/ui-shell/WideUiShellContent.js +2 -1
- package/dist/esm/ui-shell/WideUiShellContent.js.map +1 -1
- package/dist/esm/ui-shell/index.js +1 -1
- package/dist/esm/ui-shell/index.js.map +1 -1
- package/dist/esm/ui-shell/useMatchAppElementToUiShellAppArea.js +1 -1
- package/dist/esm/ui-shell/useMatchAppElementToUiShellAppArea.js.map +1 -1
- package/dist/esm/ui-shell/useScrollState.js +67 -21
- package/dist/esm/ui-shell/useScrollState.js.map +1 -1
- package/dist/esm/useMountLifecycleEffect.js +29 -0
- package/dist/esm/useMountLifecycleEffect.js.map +1 -0
- package/dist/esm/useSessionStorageState.js +56 -0
- package/dist/esm/useSessionStorageState.js.map +1 -0
- package/dist/esm/web-component/createReactRootElements.js +4 -2
- package/dist/esm/web-component/createReactRootElements.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.scss +1 -1
- package/dist/tsconfig.production.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/DatePickers/useOdysseyDateFields.d.ts.map +1 -1
- package/dist/types/Pagination/Pagination.d.ts.map +1 -1
- package/dist/types/StringWithValue.d.ts.map +1 -0
- package/dist/types/labs/DataView/DataCard.d.ts.map +1 -1
- package/dist/types/labs/DataView/DataView.d.ts.map +1 -1
- package/dist/types/theme/useMediaQuery.d.ts +1 -1
- package/dist/types/theme/useMediaQuery.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNav.d.ts +2 -0
- package/dist/types/ui-shell/SideNav/SideNav.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/SideNavToggleButton.d.ts +15 -8
- package/dist/types/ui-shell/SideNav/SideNavToggleButton.d.ts.map +1 -1
- package/dist/types/ui-shell/SideNav/useIsSideNavCollapsedSessionStorage.d.ts +17 -0
- package/dist/types/ui-shell/SideNav/useIsSideNavCollapsedSessionStorage.d.ts.map +1 -0
- package/dist/types/ui-shell/WideUiShellContent.d.ts.map +1 -1
- package/dist/types/ui-shell/index.d.ts +1 -1
- package/dist/types/ui-shell/index.d.ts.map +1 -1
- package/dist/types/ui-shell/useMatchAppElementToUiShellAppArea.d.ts.map +1 -1
- package/dist/types/ui-shell/useScrollState.d.ts +9 -1
- package/dist/types/ui-shell/useScrollState.d.ts.map +1 -1
- package/dist/types/useMountLifecycleEffect.d.ts +16 -0
- package/dist/types/useMountLifecycleEffect.d.ts.map +1 -0
- package/dist/types/useSessionStorageState.d.ts +20 -0
- package/dist/types/useSessionStorageState.d.ts.map +1 -0
- package/dist/types/web-component/createReactRootElements.d.ts +2 -0
- package/dist/types/web-component/createReactRootElements.d.ts.map +1 -1
- package/package.json +14 -11
- package/dist/cjs/theme/StringWithValue.cjs.map +0 -1
- package/dist/esm/theme/StringWithValue.js.map +0 -1
- package/dist/types/theme/StringWithValue.d.ts.map +0 -1
- /package/dist/cjs/{theme/StringWithValue.cjs → StringWithValue.cjs} +0 -0
- /package/dist/esm/{theme/StringWithValue.js → StringWithValue.js} +0 -0
- /package/dist/types/{theme/StringWithValue.d.ts → StringWithValue.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataFilters.cjs","names":["_react","require","_reactI18next","_styled","_interopRequireDefault","_Autocomplete","_Box","_index","_CheckboxGroup","_Checkbox","_index2","_OdysseyDesignTokensContext","_RadioGroup","_Radio","_SearchField","_Tag","_TagList","_TextField","_Typography3","_jsxRuntime","e","__esModule","default","AutocompleteOuterContainer","styled","shouldForwardProp","prop","odysseyDesignTokens","display","alignItems","gap","Spacing2","AutocompleteInnerContainer","width","FilterTags","activeFilters","updateFilterAndInputValues","filtersWithValues","filter","activeFilter","value","filtersToRender","forEach","Array","isArray","filterValue","formattedValue","push","id","label","getFilter","find","removeValueFromFilterAndInput","removedFilterValue","currentFilter","updatedValues","currentValue","filterId","length","undefined","jsx","TagList","children","map","Tag","onRemove","MemoizedFilterTags","memo","displayName","DataFilters","onChangeSearch","onChangeFilters","hasSearchSubmitButton","searchDelayTime","defaultSearchTerm","additionalActions","filters","filtersProp","isDisabled","setFilters","useState","t","useTranslation","useOdysseyDesignTokens","initialInputValues","useMemo","reduce","accumulator","inputValues","setInputValues","searchValue","setSearchValue","isFiltersMenuOpen","setIsFiltersMenuOpen","filtersMenuAnchorElement","setFiltersMenuAnchorElement","isFilterPopoverOpen","setIsFilterPopoverOpen","filterPopoverAnchorElement","setFilterPopoverAnchorElement","filterPopoverCurrentFilter","setFilterPopoverCurrentFilter","menuRef","useRef","useEffect","debouncer","current","clearTimeout","setTimeout","autocompleteOptions","options","updateInputValue","useCallback","updateFilters","prevInputValues","updatedFilters","handleCheckboxFilterAndInputValueChange","option","checked","currentValues","inputValue","normalizedUpdatedValues","handleAutocompleteFilterChange","clearAllFilters","updatedInputValues","handleFilterSubmit","filterMenu","jsxs","Fragment","Box","Button","ariaControls","ariaExpanded","ariaHasPopup","ariaLabel","endIcon","FilterIcon","onClick","event","currentTarget","variant","_Menu2","anchorOrigin","horizontal","vertical","transformOrigin","anchorEl","onClose","open","PaperProps","ref","latestFilterValue","f","_MenuItem2","selected","className","sx","justifyContent","minWidth","paddingBlock","paddingInlineStart","marginRight","_Typography2","fontWeight","marginBlockEnd","Subordinate","component","Trans","i18nKey","values","toLowerCase","count","ChevronRightIcon","autoCompleteValue","maxWidth","_Popover2","elevation","marginLeft","marginTop","ev","menuRect","getBoundingClientRect","clickInsideMenu","clientX","left","right","clientY","top","bottom","padding","onSubmit","preventDefault","noValidate","render","Autocomplete","hasMultipleChoices","isCustomValueAllowed","onChange","_","CheckIcon","type","TextField","hasInitialFocus","endAdornment","_IconButton2","size","CloseCircleFilledIcon","CheckboxGroup","isRequired","checkFilterInputValuesAsArray","isOptionValueInInputValues","some","Checkbox","isChecked","RadioGroup","Radio","style","SearchField","placeholder","onClear","target","borderTopWidth","borderTopColor","borderTopStyle","paddingTop","MemoizedDataFilters","exports"],"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 { Trans, useTranslation } from \"react-i18next\";\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 { MRT_ColumnDef, MRT_RowData } from \"material-react-table\";\nimport styled from \"@emotion/styled\";\n\nimport { Autocomplete } from \"../Autocomplete.js\";\nimport { Box } from \"../Box.js\";\nimport { Button } from \"../Buttons/index.js\";\nimport { CheckboxGroup } from \"../CheckboxGroup.js\";\nimport { Checkbox } from \"../Checkbox.js\";\nimport {\n CheckIcon,\n ChevronRightIcon,\n CloseCircleFilledIcon,\n FilterIcon,\n} from \"../icons.generated/index.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext.js\";\nimport { RadioGroup } from \"../RadioGroup.js\";\nimport { Radio } from \"../Radio.js\";\nimport { SearchField } from \"../SearchField.js\";\nimport { Tag } from \"../Tag.js\";\nimport { TagList } from \"../TagList.js\";\nimport { TextField } from \"../TextField.js\";\nimport { Subordinate } from \"../Typography.js\";\n\nconst AutocompleteOuterContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n alignItems: \"flex-end\",\n gap: odysseyDesignTokens.Spacing2,\n}));\n\nconst AutocompleteInnerContainer = styled(\"div\")({\n width: \"100%\",\n});\n\ntype Option = {\n label: string;\n value: string;\n};\n\nexport type DataFilterValue = string | string[] | Option[] | undefined;\n\nexport type UpdateFiltersOrValues = ({\n filterId,\n value,\n}: {\n filterId: string;\n value: DataFilterValue;\n}) => void;\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: Exclude<MRT_ColumnDef<MRT_RowData>[\"accessorKey\"], undefined>;\n /**\n * `Autocomplete` normally only allows values that exist in the list box. This feature allows you to enter in any value in the text field and have that be the stored value in `Autocomplete`\n *\n * NOTE: This only applies when `variant` is `autocomplete`\n */\n isCustomValueAllowed?: boolean;\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?: Option[];\n /**\n * A callback which renders a custom filter control\n */\n render?: (updateFilters: UpdateFiltersOrValues) => ReactNode;\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 * If true, the filter and search will be disabled\n */\n isDisabled?: boolean;\n};\n\ntype FilterTagsProps = {\n activeFilters: DataFilter[];\n updateFilterAndInputValues: UpdateFiltersOrValues;\n};\n\ntype FiltersToRender = {\n id: string;\n label: string;\n value: string;\n};\n\nconst FilterTags = ({\n activeFilters,\n updateFilterAndInputValues,\n}: FilterTagsProps) => {\n const filtersWithValues = activeFilters.filter(\n (activeFilter: DataFilter) => activeFilter.value,\n );\n const filtersToRender: FiltersToRender[] = [];\n\n filtersWithValues.forEach((filter) => {\n if (Array.isArray(filter.value)) {\n filter.value.forEach((filterValue) => {\n const formattedValue =\n typeof filterValue === \"string\" ? filterValue : filterValue.value;\n filtersToRender.push({\n id: filter.id,\n label: filter.label,\n value: formattedValue,\n });\n });\n }\n if (typeof filter.value === \"string\") {\n filtersToRender.push({\n id: filter.id,\n label: filter.label,\n value: filter.value,\n });\n }\n });\n\n const getFilter = (id: string) =>\n filtersWithValues.find((filter) => filter.id === id);\n\n const removeValueFromFilterAndInput = (\n id: string,\n removedFilterValue: string,\n ) => {\n const currentFilter = getFilter(id);\n\n if (currentFilter) {\n const { value } = currentFilter;\n\n if (Array.isArray(value)) {\n const updatedValues = value.filter((currentValue) => {\n return (currentValue as Option).value !== removedFilterValue;\n });\n updateFilterAndInputValues({\n filterId: id,\n value:\n updatedValues.length > 0 ? (updatedValues as Option[]) : undefined,\n });\n }\n\n if (typeof value === \"string\") {\n updateFilterAndInputValues({\n filterId: id,\n value: undefined,\n });\n }\n }\n };\n\n return (\n <TagList>\n {filtersToRender.map((filter) => (\n <Tag\n key={`${filter.label}: ${filter.value}`}\n label={`${filter.label}: ${filter.value}`}\n onRemove={() =>\n removeValueFromFilterAndInput(filter.id, filter.value)\n }\n />\n ))}\n </TagList>\n );\n};\n\nconst MemoizedFilterTags = memo(FilterTags);\nMemoizedFilterTags.displayName = \"FilterTags\";\n\nconst DataFilters = ({\n onChangeSearch,\n onChangeFilters,\n hasSearchSubmitButton = false,\n searchDelayTime = 200,\n defaultSearchTerm = \"\",\n additionalActions,\n filters: filtersProp = [],\n isDisabled,\n}: DataFiltersProps) => {\n const [filters, setFilters] = useState<DataFilter[]>(filtersProp);\n const { t } = useTranslation();\n const odysseyDesignTokens = useOdysseyDesignTokens();\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\n const activeFilters = useMemo(() => {\n return filters.filter((filter) => filter.value);\n }, [filters]);\n\n const [isFiltersMenuOpen, setIsFiltersMenuOpen] = useState<boolean>(false);\n\n const [filtersMenuAnchorElement, setFiltersMenuAnchorElement] = useState<\n HTMLElement | undefined\n >();\n\n const [isFilterPopoverOpen, setIsFilterPopoverOpen] =\n useState<boolean>(false);\n\n const [filterPopoverAnchorElement, setFilterPopoverAnchorElement] = useState<\n HTMLElement | undefined\n >();\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\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 return filterPopoverCurrentFilter?.options || [];\n }, [filterPopoverCurrentFilter]);\n\n const updateInputValue = useCallback<UpdateFiltersOrValues>(\n ({ filterId, value }) => {\n setInputValues({ ...inputValues, [filterId]: value });\n },\n [inputValues],\n );\n\n const updateFilters = useCallback<UpdateFiltersOrValues>(\n ({ filterId, value }) => {\n setInputValues((prevInputValues) => ({\n ...prevInputValues,\n [filterId]: value,\n }));\n const updatedFilters = filtersProp.map((filter) => ({\n ...filter,\n value: filter.id === filterId ? value : inputValues[filter.id],\n }));\n setFilters(updatedFilters);\n },\n [inputValues, filtersProp],\n );\n\n const updateFilterAndInputValues = useCallback<UpdateFiltersOrValues>(\n ({ filterId, value }) => {\n updateInputValue({ filterId, value });\n updateFilters({ filterId, value });\n },\n [updateFilters, updateInputValue],\n );\n\n const handleCheckboxFilterAndInputValueChange = useCallback<\n (filterId: string, option: Option, checked: boolean) => void\n >(\n (filterId, option, checked) => {\n const currentValues = (inputValues[filterId] as Option[]) || [];\n\n const updatedValues = checked\n ? [...currentValues, option]\n : currentValues.filter(\n (inputValue) => inputValue.value !== option.value,\n );\n\n const normalizedUpdatedValues =\n updatedValues.length > 0 ? updatedValues : undefined;\n\n setInputValues({\n ...inputValues,\n [filterId]: normalizedUpdatedValues,\n });\n\n const updatedFilters = filters.map((filter) => ({\n ...filter,\n value:\n filter.id === filterId\n ? normalizedUpdatedValues\n : inputValues[filter.id],\n }));\n\n setFilters(updatedFilters);\n },\n [filters, inputValues],\n );\n\n const handleAutocompleteFilterChange = useCallback<\n (filterId: string, option: Option[]) => void\n >(\n (filterId, option) => {\n setInputValues({ ...inputValues, [filterId]: option });\n },\n [inputValues],\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 filterMenu = useMemo(\n () => (\n <>\n <Box>\n <Button\n ariaControls={isFiltersMenuOpen ? \"filters-menu\" : undefined}\n ariaExpanded={isFiltersMenuOpen ? \"true\" : undefined}\n ariaHasPopup=\"true\"\n ariaLabel={t(\"filters.filters.arialabel\")}\n isDisabled={isDisabled}\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 aria-controls={isFilterPopoverOpen ? \"filter-form\" : undefined}\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 isDisabled,\n filterPopoverCurrentFilter,\n isFilterPopoverOpen,\n filtersMenuAnchorElement,\n filtersProp,\n filters,\n t,\n ],\n );\n\n const autoCompleteValue = useMemo(\n () =>\n filterPopoverCurrentFilter?.id\n ? (inputValues[filterPopoverCurrentFilter.id] as Option[])\n : undefined,\n [filterPopoverCurrentFilter, inputValues],\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 id=\"filter-form\"\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 handleFilterSubmit();\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 noValidate\n >\n {filterPopoverCurrentFilter?.render ? (\n filterPopoverCurrentFilter.render(updateFilters)\n ) : (\n <>\n {/* Autocomplete */}\n {filterPopoverCurrentFilter?.variant ===\n \"autocomplete\" &&\n filterPopoverCurrentFilter?.options && (\n <AutocompleteOuterContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <AutocompleteInnerContainer>\n <Autocomplete\n hasMultipleChoices\n isCustomValueAllowed={\n filterPopoverCurrentFilter?.isCustomValueAllowed\n }\n label={filterPopoverCurrentFilter.label}\n value={autoCompleteValue}\n onChange={(_, value) => {\n handleAutocompleteFilterChange(\n filterPopoverCurrentFilter.id,\n value as Option[],\n );\n }}\n options={autocompleteOptions}\n />\n </AutocompleteInnerContainer>\n <Button\n variant=\"primary\"\n endIcon={<CheckIcon />}\n type=\"submit\"\n ariaLabel={t(\"filters.submit.label\")}\n />\n </AutocompleteOuterContainer>\n )}\n {/* Text, Number, or undefined */}\n {(filterPopoverCurrentFilter?.variant === \"text\" ||\n filterPopoverCurrentFilter?.variant === \"range\" ||\n (filterPopoverCurrentFilter &&\n filterPopoverCurrentFilter?.variant ==\n undefined)) && (\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[\n filterPopoverCurrentFilter.id\n ] && (\n <MuiIconButton\n size=\"small\"\n aria-label={t(\"filters.filter.clear\")}\n onClick={() => {\n updateInputValue({\n filterId:\n filterPopoverCurrentFilter.id,\n value: undefined,\n });\n\n updateFilters({\n filterId:\n 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 ariaLabel={t(\"filters.submit.label\")}\n />\n </Box>\n )}\n\n {/* Checkbox */}\n {filterPopoverCurrentFilter?.variant ===\n \"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 const checkFilterInputValuesAsArray =\n (inputValues[\n filterPopoverCurrentFilter.id\n ] as Option[]) || [];\n const isOptionValueInInputValues =\n checkFilterInputValuesAsArray.some(\n (inputValue) =>\n inputValue.value === option.value,\n );\n return (\n <Checkbox\n key={option.value}\n label={option.label}\n value={option.value}\n isChecked={isOptionValueInInputValues}\n onChange={(_, checked) => {\n handleCheckboxFilterAndInputValueChange(\n filterPopoverCurrentFilter.id,\n option,\n checked,\n );\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 updateFilterAndInputValues({\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: {\n label: string;\n value: string;\n }) => (\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 </>\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 placeholder={t(\"filters.search.label\")}\n isDisabled={isDisabled}\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 <MemoizedFilterTags\n activeFilters={activeFilters}\n updateFilterAndInputValues={updateFilterAndInputValues}\n />\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DataFilters.cjs","names":["_react","require","_reactI18next","_styled","_interopRequireDefault","_Autocomplete","_Box","_index","_CheckboxGroup","_Checkbox","_index2","_OdysseyDesignTokensContext","_RadioGroup","_Radio","_SearchField","_Tag","_TagList","_TextField","_Typography3","_jsxRuntime","e","__esModule","default","StyledAutocompleteOuterContainer","styled","shouldForwardProp","prop","odysseyDesignTokens","display","alignItems","gap","Spacing2","StyledAutocompleteInnerContainer","width","FilterTags","activeFilters","updateFilterAndInputValues","filtersWithValues","filter","activeFilter","value","filtersToRender","forEach","Array","isArray","filterValue","formattedValue","push","id","label","getFilter","find","removeValueFromFilterAndInput","removedFilterValue","currentFilter","updatedValues","currentValue","filterId","length","undefined","jsx","TagList","children","map","Tag","onRemove","MemoizedFilterTags","memo","displayName","DataFilters","onChangeSearch","onChangeFilters","hasSearchSubmitButton","searchDelayTime","defaultSearchTerm","additionalActions","filters","filtersProp","isDisabled","setFilters","useState","t","useTranslation","useOdysseyDesignTokens","initialInputValues","useMemo","reduce","accumulator","inputValues","setInputValues","searchValue","setSearchValue","isFiltersMenuOpen","setIsFiltersMenuOpen","filtersMenuAnchorElement","setFiltersMenuAnchorElement","isFilterPopoverOpen","setIsFilterPopoverOpen","filterPopoverAnchorElement","setFilterPopoverAnchorElement","filterPopoverCurrentFilter","setFilterPopoverCurrentFilter","menuRef","useRef","useEffect","debouncer","current","clearTimeout","setTimeout","autocompleteOptions","options","updateInputValue","useCallback","updateFilters","prevInputValues","updatedFilters","handleCheckboxFilterAndInputValueChange","option","checked","currentValues","inputValue","normalizedUpdatedValues","handleAutocompleteFilterChange","clearAllFilters","updatedInputValues","handleFilterSubmit","filterMenu","jsxs","Fragment","Box","Button","ariaControls","ariaExpanded","ariaHasPopup","ariaLabel","endIcon","FilterIcon","onClick","event","currentTarget","variant","_Menu2","anchorOrigin","horizontal","vertical","transformOrigin","anchorEl","onClose","open","PaperProps","ref","latestFilterValue","f","_MenuItem2","selected","className","sx","justifyContent","minWidth","paddingBlock","paddingInlineStart","marginRight","_Typography2","fontWeight","marginBlockEnd","Subordinate","component","Trans","i18nKey","values","toLowerCase","count","ChevronRightIcon","autoCompleteValue","maxWidth","_Popover2","elevation","marginLeft","marginTop","ev","menuRect","getBoundingClientRect","clickInsideMenu","clientX","left","right","clientY","top","bottom","padding","onSubmit","preventDefault","noValidate","render","Autocomplete","hasMultipleChoices","isCustomValueAllowed","onChange","_","CheckIcon","type","TextField","hasInitialFocus","endAdornment","_IconButton2","size","CloseCircleFilledIcon","CheckboxGroup","isRequired","checkFilterInputValuesAsArray","isOptionValueInInputValues","some","Checkbox","isChecked","RadioGroup","Radio","style","SearchField","placeholder","onClear","target","borderTopWidth","borderTopColor","borderTopStyle","paddingTop","MemoizedDataFilters","exports"],"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 { Trans, useTranslation } from \"react-i18next\";\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 { MRT_ColumnDef, MRT_RowData } from \"material-react-table\";\nimport styled from \"@emotion/styled\";\n\nimport { Autocomplete } from \"../Autocomplete.js\";\nimport { Box } from \"../Box.js\";\nimport { Button } from \"../Buttons/index.js\";\nimport { CheckboxGroup } from \"../CheckboxGroup.js\";\nimport { Checkbox } from \"../Checkbox.js\";\nimport {\n CheckIcon,\n ChevronRightIcon,\n CloseCircleFilledIcon,\n FilterIcon,\n} from \"../icons.generated/index.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../OdysseyDesignTokensContext.js\";\nimport { RadioGroup } from \"../RadioGroup.js\";\nimport { Radio } from \"../Radio.js\";\nimport { SearchField } from \"../SearchField.js\";\nimport { Tag } from \"../Tag.js\";\nimport { TagList } from \"../TagList.js\";\nimport { TextField } from \"../TextField.js\";\nimport { Subordinate } from \"../Typography.js\";\n\nconst StyledAutocompleteOuterContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n alignItems: \"flex-end\",\n gap: odysseyDesignTokens.Spacing2,\n}));\n\nconst StyledAutocompleteInnerContainer = styled(\"div\")({\n width: \"100%\",\n});\n\ntype Option = {\n label: string;\n value: string;\n};\n\nexport type DataFilterValue = string | string[] | Option[] | undefined;\n\nexport type UpdateFiltersOrValues = ({\n filterId,\n value,\n}: {\n filterId: string;\n value: DataFilterValue;\n}) => void;\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: Exclude<MRT_ColumnDef<MRT_RowData>[\"accessorKey\"], undefined>;\n /**\n * `Autocomplete` normally only allows values that exist in the list box. This feature allows you to enter in any value in the text field and have that be the stored value in `Autocomplete`\n *\n * NOTE: This only applies when `variant` is `autocomplete`\n */\n isCustomValueAllowed?: boolean;\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?: Option[];\n /**\n * A callback which renders a custom filter control\n */\n render?: (updateFilters: UpdateFiltersOrValues) => ReactNode;\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 * If true, the filter and search will be disabled\n */\n isDisabled?: boolean;\n};\n\ntype FilterTagsProps = {\n activeFilters: DataFilter[];\n updateFilterAndInputValues: UpdateFiltersOrValues;\n};\n\ntype FiltersToRender = {\n id: string;\n label: string;\n value: string;\n};\n\nconst FilterTags = ({\n activeFilters,\n updateFilterAndInputValues,\n}: FilterTagsProps) => {\n const filtersWithValues = activeFilters.filter(\n (activeFilter: DataFilter) => activeFilter.value,\n );\n const filtersToRender: FiltersToRender[] = [];\n\n filtersWithValues.forEach((filter) => {\n if (Array.isArray(filter.value)) {\n filter.value.forEach((filterValue) => {\n const formattedValue =\n typeof filterValue === \"string\" ? filterValue : filterValue.value;\n filtersToRender.push({\n id: filter.id,\n label: filter.label,\n value: formattedValue,\n });\n });\n }\n if (typeof filter.value === \"string\") {\n filtersToRender.push({\n id: filter.id,\n label: filter.label,\n value: filter.value,\n });\n }\n });\n\n const getFilter = (id: string) =>\n filtersWithValues.find((filter) => filter.id === id);\n\n const removeValueFromFilterAndInput = (\n id: string,\n removedFilterValue: string,\n ) => {\n const currentFilter = getFilter(id);\n\n if (currentFilter) {\n const { value } = currentFilter;\n\n if (Array.isArray(value)) {\n const updatedValues = value.filter((currentValue) => {\n return (currentValue as Option).value !== removedFilterValue;\n });\n updateFilterAndInputValues({\n filterId: id,\n value:\n updatedValues.length > 0 ? (updatedValues as Option[]) : undefined,\n });\n }\n\n if (typeof value === \"string\") {\n updateFilterAndInputValues({\n filterId: id,\n value: undefined,\n });\n }\n }\n };\n\n return (\n <TagList>\n {filtersToRender.map((filter) => (\n <Tag\n key={`${filter.label}: ${filter.value}`}\n label={`${filter.label}: ${filter.value}`}\n onRemove={() =>\n removeValueFromFilterAndInput(filter.id, filter.value)\n }\n />\n ))}\n </TagList>\n );\n};\n\nconst MemoizedFilterTags = memo(FilterTags);\nMemoizedFilterTags.displayName = \"FilterTags\";\n\nconst DataFilters = ({\n onChangeSearch,\n onChangeFilters,\n hasSearchSubmitButton = false,\n searchDelayTime = 200,\n defaultSearchTerm = \"\",\n additionalActions,\n filters: filtersProp = [],\n isDisabled,\n}: DataFiltersProps) => {\n const [filters, setFilters] = useState<DataFilter[]>(filtersProp);\n const { t } = useTranslation();\n const odysseyDesignTokens = useOdysseyDesignTokens();\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\n const activeFilters = useMemo(() => {\n return filters.filter((filter) => filter.value);\n }, [filters]);\n\n const [isFiltersMenuOpen, setIsFiltersMenuOpen] = useState<boolean>(false);\n\n const [filtersMenuAnchorElement, setFiltersMenuAnchorElement] = useState<\n HTMLElement | undefined\n >();\n\n const [isFilterPopoverOpen, setIsFilterPopoverOpen] =\n useState<boolean>(false);\n\n const [filterPopoverAnchorElement, setFilterPopoverAnchorElement] = useState<\n HTMLElement | undefined\n >();\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\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 return filterPopoverCurrentFilter?.options || [];\n }, [filterPopoverCurrentFilter]);\n\n const updateInputValue = useCallback<UpdateFiltersOrValues>(\n ({ filterId, value }) => {\n setInputValues({ ...inputValues, [filterId]: value });\n },\n [inputValues],\n );\n\n const updateFilters = useCallback<UpdateFiltersOrValues>(\n ({ filterId, value }) => {\n setInputValues((prevInputValues) => ({\n ...prevInputValues,\n [filterId]: value,\n }));\n const updatedFilters = filtersProp.map((filter) => ({\n ...filter,\n value: filter.id === filterId ? value : inputValues[filter.id],\n }));\n setFilters(updatedFilters);\n },\n [inputValues, filtersProp],\n );\n\n const updateFilterAndInputValues = useCallback<UpdateFiltersOrValues>(\n ({ filterId, value }) => {\n updateInputValue({ filterId, value });\n updateFilters({ filterId, value });\n },\n [updateFilters, updateInputValue],\n );\n\n const handleCheckboxFilterAndInputValueChange = useCallback<\n (filterId: string, option: Option, checked: boolean) => void\n >(\n (filterId, option, checked) => {\n const currentValues = (inputValues[filterId] as Option[]) || [];\n\n const updatedValues = checked\n ? [...currentValues, option]\n : currentValues.filter(\n (inputValue) => inputValue.value !== option.value,\n );\n\n const normalizedUpdatedValues =\n updatedValues.length > 0 ? updatedValues : undefined;\n\n setInputValues({\n ...inputValues,\n [filterId]: normalizedUpdatedValues,\n });\n\n const updatedFilters = filters.map((filter) => ({\n ...filter,\n value:\n filter.id === filterId\n ? normalizedUpdatedValues\n : inputValues[filter.id],\n }));\n\n setFilters(updatedFilters);\n },\n [filters, inputValues],\n );\n\n const handleAutocompleteFilterChange = useCallback<\n (filterId: string, option: Option[]) => void\n >(\n (filterId, option) => {\n setInputValues({ ...inputValues, [filterId]: option });\n },\n [inputValues],\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 filterMenu = useMemo(\n () => (\n <>\n <Box>\n <Button\n ariaControls={isFiltersMenuOpen ? \"filters-menu\" : undefined}\n ariaExpanded={isFiltersMenuOpen ? \"true\" : undefined}\n ariaHasPopup=\"true\"\n ariaLabel={t(\"filters.filters.arialabel\")}\n isDisabled={isDisabled}\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 aria-controls={isFilterPopoverOpen ? \"filter-form\" : undefined}\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 isDisabled,\n filterPopoverCurrentFilter,\n isFilterPopoverOpen,\n filtersMenuAnchorElement,\n filtersProp,\n filters,\n t,\n ],\n );\n\n const autoCompleteValue = useMemo(\n () =>\n filterPopoverCurrentFilter?.id\n ? (inputValues[filterPopoverCurrentFilter.id] as Option[])\n : undefined,\n [filterPopoverCurrentFilter, inputValues],\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 id=\"filter-form\"\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 handleFilterSubmit();\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 noValidate\n >\n {filterPopoverCurrentFilter?.render ? (\n filterPopoverCurrentFilter.render(updateFilters)\n ) : (\n <>\n {/* Autocomplete */}\n {filterPopoverCurrentFilter?.variant ===\n \"autocomplete\" &&\n filterPopoverCurrentFilter?.options && (\n <StyledAutocompleteOuterContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n <StyledAutocompleteInnerContainer>\n <Autocomplete\n hasMultipleChoices\n isCustomValueAllowed={\n filterPopoverCurrentFilter?.isCustomValueAllowed\n }\n label={filterPopoverCurrentFilter.label}\n value={autoCompleteValue}\n onChange={(_, value) => {\n handleAutocompleteFilterChange(\n filterPopoverCurrentFilter.id,\n value as Option[],\n );\n }}\n options={autocompleteOptions}\n />\n </StyledAutocompleteInnerContainer>\n <Button\n variant=\"primary\"\n endIcon={<CheckIcon />}\n type=\"submit\"\n ariaLabel={t(\"filters.submit.label\")}\n />\n </StyledAutocompleteOuterContainer>\n )}\n {/* Text, Number, or undefined */}\n {(filterPopoverCurrentFilter?.variant === \"text\" ||\n filterPopoverCurrentFilter?.variant === \"range\" ||\n (filterPopoverCurrentFilter &&\n filterPopoverCurrentFilter?.variant ==\n undefined)) && (\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[\n filterPopoverCurrentFilter.id\n ] && (\n <MuiIconButton\n size=\"small\"\n aria-label={t(\"filters.filter.clear\")}\n onClick={() => {\n updateInputValue({\n filterId:\n filterPopoverCurrentFilter.id,\n value: undefined,\n });\n\n updateFilters({\n filterId:\n 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 ariaLabel={t(\"filters.submit.label\")}\n />\n </Box>\n )}\n\n {/* Checkbox */}\n {filterPopoverCurrentFilter?.variant ===\n \"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 const checkFilterInputValuesAsArray =\n (inputValues[\n filterPopoverCurrentFilter.id\n ] as Option[]) || [];\n const isOptionValueInInputValues =\n checkFilterInputValuesAsArray.some(\n (inputValue) =>\n inputValue.value === option.value,\n );\n return (\n <Checkbox\n key={option.value}\n label={option.label}\n value={option.value}\n isChecked={isOptionValueInInputValues}\n onChange={(_, checked) => {\n handleCheckboxFilterAndInputValueChange(\n filterPopoverCurrentFilter.id,\n option,\n checked,\n );\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 updateFilterAndInputValues({\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: {\n label: string;\n value: string;\n }) => (\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 </>\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 placeholder={t(\"filters.search.label\")}\n isDisabled={isDisabled}\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 <MemoizedFilterTags\n activeFilters={activeFilters}\n updateFilterAndInputValues={updateFilterAndInputValues}\n />\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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","ignoreList":[]}
|
|
@@ -34,7 +34,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
34
34
|
const CARD_IMAGE_SIZE = exports.CARD_IMAGE_SIZE = "64px";
|
|
35
35
|
const CARD_IMAGE_SIZE_COMPACT = exports.CARD_IMAGE_SIZE_COMPACT = "48px";
|
|
36
36
|
const cardVariantValues = exports.cardVariantValues = ["tile", "stack", "compact"];
|
|
37
|
-
const
|
|
37
|
+
const StyledAccessoryContainer = (0, _styled.default)("div", {
|
|
38
38
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "variant"
|
|
39
39
|
})(({
|
|
40
40
|
odysseyDesignTokens,
|
|
@@ -46,7 +46,7 @@ const AccessoryContainer = (0, _styled.default)("div", {
|
|
|
46
46
|
gap: odysseyDesignTokens.Spacing2,
|
|
47
47
|
height: variant === "compact" ? CARD_IMAGE_SIZE_COMPACT : "auto"
|
|
48
48
|
}));
|
|
49
|
-
const
|
|
49
|
+
const StyledImageContainer = (0, _styled.default)("div", {
|
|
50
50
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "hasMenuButtonChildren" && prop !== "variant"
|
|
51
51
|
})(({
|
|
52
52
|
odysseyDesignTokens,
|
|
@@ -60,7 +60,7 @@ const ImageContainer = (0, _styled.default)("div", {
|
|
|
60
60
|
marginBlockEnd: variant === "tile" ? odysseyDesignTokens.Spacing5 : 0,
|
|
61
61
|
paddingRight: hasMenuButtonChildren ? odysseyDesignTokens.Spacing5 : 0
|
|
62
62
|
}));
|
|
63
|
-
const
|
|
63
|
+
const StyledMenuButtonContainer = (0, _styled.default)("div", {
|
|
64
64
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
65
65
|
})(({
|
|
66
66
|
odysseyDesignTokens,
|
|
@@ -73,7 +73,7 @@ const MenuButtonContainer = (0, _styled.default)("div", {
|
|
|
73
73
|
display: "flex",
|
|
74
74
|
alignItems: "center"
|
|
75
75
|
}));
|
|
76
|
-
const
|
|
76
|
+
const StyledCardInnerContainer = (0, _styled.default)("div", {
|
|
77
77
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
78
78
|
})(({
|
|
79
79
|
odysseyDesignTokens
|
|
@@ -81,7 +81,7 @@ const CardInnerContainer = (0, _styled.default)("div", {
|
|
|
81
81
|
display: "flex",
|
|
82
82
|
gap: odysseyDesignTokens.Spacing3
|
|
83
83
|
}));
|
|
84
|
-
const
|
|
84
|
+
const StyledCardImageAndContentContainer = (0, _styled.default)("div", {
|
|
85
85
|
shouldForwardProp: prop => prop !== "variant" && prop !== "centerContent"
|
|
86
86
|
})(({
|
|
87
87
|
variant,
|
|
@@ -91,8 +91,8 @@ const CardImageAndContentContainer = (0, _styled.default)("div", {
|
|
|
91
91
|
flexDirection: variant === "tile" ? "column" : "row",
|
|
92
92
|
alignItems: centerContent ? "center" : "flex-start"
|
|
93
93
|
}));
|
|
94
|
-
const
|
|
95
|
-
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
94
|
+
const StyledCardContent = (0, _styled.default)("div", {
|
|
95
|
+
shouldForwardProp: prop => prop !== "odysseyDesignTokens" && prop !== "variant"
|
|
96
96
|
})(({
|
|
97
97
|
odysseyDesignTokens,
|
|
98
98
|
variant
|
|
@@ -104,7 +104,7 @@ const CardContent = (0, _styled.default)("div", {
|
|
|
104
104
|
marginBlockEnd: 0
|
|
105
105
|
}
|
|
106
106
|
}));
|
|
107
|
-
const
|
|
107
|
+
const StyledCardChildrenContainer = (0, _styled.default)("div", {
|
|
108
108
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
109
109
|
})(({
|
|
110
110
|
odysseyDesignTokens
|
|
@@ -113,7 +113,7 @@ const CardChildrenContainer = (0, _styled.default)("div", {
|
|
|
113
113
|
marginBlockStart: odysseyDesignTokens.Spacing3
|
|
114
114
|
}
|
|
115
115
|
}));
|
|
116
|
-
const
|
|
116
|
+
const StyledAccessoryPlaceholder = (0, _styled.default)(_IconButton2.default)({
|
|
117
117
|
visibility: "hidden"
|
|
118
118
|
});
|
|
119
119
|
const buttonProviderValue = {
|
|
@@ -148,13 +148,13 @@ const DataCard = ({
|
|
|
148
148
|
onClick: () => setIsDetailPanelOpen(!isDetailPanelOpen),
|
|
149
149
|
"aria-label": isDetailPanelOpen ? t("table.rowexpansion.collapse") : t("table.rowexpansion.expand")
|
|
150
150
|
})
|
|
151
|
-
}) : (0, _jsxRuntime.jsx)(
|
|
151
|
+
}) : (0, _jsxRuntime.jsx)(StyledAccessoryPlaceholder, {
|
|
152
152
|
disabled: true,
|
|
153
153
|
children: (0, _jsxRuntime.jsx)(_index2.ChevronDownIcon, {})
|
|
154
154
|
});
|
|
155
155
|
}, [isDetailPanelOpen, renderDetailPanel, row, t]);
|
|
156
156
|
const Accessory = (0, _react.useMemo)(() => {
|
|
157
|
-
return (0, _jsxRuntime.jsxs)(
|
|
157
|
+
return (0, _jsxRuntime.jsxs)(StyledAccessoryContainer, {
|
|
158
158
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
159
159
|
variant: variant,
|
|
160
160
|
children: [AccessoryProp, renderDetailPanel && ExpansionToggle]
|
|
@@ -165,19 +165,19 @@ const DataCard = ({
|
|
|
165
165
|
return props.filter(prop => prop !== undefined).length;
|
|
166
166
|
};
|
|
167
167
|
const shouldCenterContent = variant === "compact" && (!renderDetailPanel || !isDetailPanelOpen) && countDefinedProps([title, description, overline, button, children]) <= 2;
|
|
168
|
-
return (0, _jsxRuntime.jsxs)(
|
|
168
|
+
return (0, _jsxRuntime.jsxs)(StyledCardInnerContainer, {
|
|
169
169
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
170
170
|
children: [(AccessoryProp || renderDetailPanel) && (0, _jsxRuntime.jsx)(_Box.Box, {
|
|
171
171
|
children: Accessory
|
|
172
|
-
}), (0, _jsxRuntime.jsxs)(
|
|
172
|
+
}), (0, _jsxRuntime.jsxs)(StyledCardImageAndContentContainer, {
|
|
173
173
|
variant: variant,
|
|
174
174
|
centerContent: shouldCenterContent,
|
|
175
|
-
children: [image && (0, _jsxRuntime.jsx)(
|
|
175
|
+
children: [image && (0, _jsxRuntime.jsx)(StyledImageContainer, {
|
|
176
176
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
177
177
|
hasMenuButtonChildren: Boolean(menuButtonChildren),
|
|
178
178
|
variant: variant,
|
|
179
179
|
children: image
|
|
180
|
-
}), (0, _jsxRuntime.jsxs)(
|
|
180
|
+
}), (0, _jsxRuntime.jsxs)(StyledCardContent, {
|
|
181
181
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
182
182
|
variant: variant,
|
|
183
183
|
children: [overline && (0, _jsxRuntime.jsx)(_Typography.Support, {
|
|
@@ -194,10 +194,10 @@ const DataCard = ({
|
|
|
194
194
|
value: buttonProviderValue,
|
|
195
195
|
children: button
|
|
196
196
|
})
|
|
197
|
-
}), children && (0, _jsxRuntime.jsx)(
|
|
197
|
+
}), children && (0, _jsxRuntime.jsx)(StyledCardChildrenContainer, {
|
|
198
198
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
199
199
|
children: children
|
|
200
|
-
}), renderDetailPanel && isDetailPanelOpen && (0, _jsxRuntime.jsx)(
|
|
200
|
+
}), renderDetailPanel && isDetailPanelOpen && (0, _jsxRuntime.jsx)(StyledCardChildrenContainer, {
|
|
201
201
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
202
202
|
children: renderDetailPanel({
|
|
203
203
|
row
|
|
@@ -213,7 +213,7 @@ const DataCard = ({
|
|
|
213
213
|
children: [onClick ? (0, _jsxRuntime.jsx)(_CardActionArea2.default, {
|
|
214
214
|
onClick: onClick,
|
|
215
215
|
children: cardContent
|
|
216
|
-
}) : cardContent, menuButtonChildren && (0, _jsxRuntime.jsx)(
|
|
216
|
+
}) : cardContent, menuButtonChildren && (0, _jsxRuntime.jsx)(StyledMenuButtonContainer, {
|
|
217
217
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
218
218
|
variant: variant,
|
|
219
219
|
children: (0, _jsxRuntime.jsx)(_index.MenuButton, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCard.cjs","names":["_react","require","_styled","_interopRequireDefault","_reactI18next","_Box","_index","_OdysseyDesignTokensContext","_Typography","_index2","_jsxRuntime","e","__esModule","default","CARD_IMAGE_SIZE","exports","CARD_IMAGE_SIZE_COMPACT","cardVariantValues","AccessoryContainer","styled","shouldForwardProp","prop","odysseyDesignTokens","variant","display","flexDirection","alignItems","gap","Spacing2","height","ImageContainer","hasMenuButtonChildren","maxHeight","marginBlockEnd","Spacing5","paddingRight","MenuButtonContainer","position","right","Spacing3","top","Spacing4","CardInnerContainer","CardImageAndContentContainer","centerContent","CardContent","Spacing1","CardChildrenContainer","marginBlockStart","AccessoryPlaceholder","_IconButton2","visibility","buttonProviderValue","isFullWidth","DataCard","Accessory","AccessoryProp","button","children","description","image","menuButtonChildren","onClick","overline","renderDetailPanel","row","title","useOdysseyDesignTokens","t","useTranslation","isDetailPanelOpen","setIsDetailPanelOpen","useState","ExpansionToggle","useMemo","jsx","_Tooltip2","ChevronUpIcon","ChevronDownIcon","disabled","jsxs","cardContent","countDefinedProps","props","filter","undefined","length","shouldCenterContent","Box","Boolean","Support","component","Heading5","Paragraph","color","_CardActions2","ButtonContext","Provider","value","_Card2","className","role","_CardActionArea2","MenuButton","endIcon","MoreIcon","ariaLabel","buttonVariant","menuAlignment","size","tooltipText","MemoizedDataCard","memo","displayName"],"sources":["../../../../src/labs/DataView/DataCard.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n MouseEventHandler,\n ReactElement,\n memo,\n useMemo,\n ReactNode,\n useState,\n} from \"react\";\nimport {\n IconButton as MuiIconButton,\n Card as MuiCard,\n CardActions as MuiCardActions,\n CardActionArea as MuiCardActionArea,\n Tooltip as MuiTooltip,\n} from \"@mui/material\";\nimport styled from \"@emotion/styled\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Box } from \"../../Box.js\";\nimport {\n Button,\n ButtonContext,\n MenuButton,\n MenuButtonProps,\n} from \"../../Buttons/index.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { Heading5, Paragraph, Support } from \"../../Typography.js\";\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n MoreIcon,\n} from \"../../icons.generated/index.js\";\nimport { CardLayoutProps } from \"./componentTypes.js\";\nimport { MRT_RowData } from \"material-react-table\";\n\nexport const CARD_IMAGE_SIZE = \"64px\";\nexport const CARD_IMAGE_SIZE_COMPACT = \"48px\";\n\nexport const cardVariantValues = [\"tile\", \"stack\", \"compact\"] as const;\n\nexport type DataCardProps<TData extends MRT_RowData> = {\n children?: ReactNode;\n description?: string;\n image?: ReactElement;\n overline?: string;\n renderDetailPanel?: CardLayoutProps<TData>[\"renderDetailPanel\"];\n row: TData;\n title?: string;\n variant?: (typeof cardVariantValues)[number];\n} & (\n | {\n Accessory?: never;\n button?: never;\n menuButtonChildren?: never;\n onClick: MouseEventHandler;\n }\n | {\n Accessory?: ReactNode;\n button?: ReactElement<typeof Button>;\n menuButtonChildren?: MenuButtonProps[\"children\"];\n onClick?: never;\n }\n);\n\ntype DataCardComponent = (<TData extends MRT_RowData>(\n props: DataCardProps<TData>,\n) => JSX.Element) & {\n displayName?: string;\n};\n\nconst AccessoryContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"variant\",\n})<{\n odysseyDesignTokens: DesignTokens;\n variant: (typeof cardVariantValues)[number];\n}>(({ odysseyDesignTokens, variant }) => ({\n display: \"flex\",\n flexDirection: variant === \"compact\" ? \"row\" : \"column\",\n alignItems: \"center\",\n gap: odysseyDesignTokens.Spacing2,\n height: variant === \"compact\" ? CARD_IMAGE_SIZE_COMPACT : \"auto\",\n}));\n\nconst ImageContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"hasMenuButtonChildren\" &&\n prop !== \"variant\",\n})<{\n odysseyDesignTokens: DesignTokens;\n hasMenuButtonChildren: boolean;\n variant: (typeof cardVariantValues)[number];\n}>(({ odysseyDesignTokens, hasMenuButtonChildren, variant }) => ({\n display: \"flex\",\n alignItems: \"flex-start\",\n height: variant === \"compact\" ? CARD_IMAGE_SIZE_COMPACT : CARD_IMAGE_SIZE,\n maxHeight: variant === \"compact\" ? CARD_IMAGE_SIZE_COMPACT : CARD_IMAGE_SIZE,\n marginBlockEnd: variant === \"tile\" ? odysseyDesignTokens.Spacing5 : 0,\n paddingRight: hasMenuButtonChildren ? odysseyDesignTokens.Spacing5 : 0,\n}));\n\nconst MenuButtonContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n variant: (typeof cardVariantValues)[number];\n}>(({ odysseyDesignTokens, variant }) => ({\n position: \"absolute\",\n right: odysseyDesignTokens.Spacing3,\n top:\n variant === \"compact\"\n ? odysseyDesignTokens.Spacing4\n : odysseyDesignTokens.Spacing3,\n height: variant === \"compact\" ? CARD_IMAGE_SIZE_COMPACT : \"auto\",\n display: \"flex\",\n alignItems: \"center\",\n}));\n\nconst CardInnerContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n gap: odysseyDesignTokens.Spacing3,\n}));\n\nconst CardImageAndContentContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"variant\" && prop !== \"centerContent\",\n})<{ variant: (typeof cardVariantValues)[number]; centerContent: boolean }>(\n ({ variant, centerContent }) => ({\n display: \"flex\",\n flexDirection: variant === \"tile\" ? \"column\" : \"row\",\n alignItems: centerContent ? \"center\" : \"flex-start\",\n }),\n);\n\nconst CardContent = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n variant: (typeof cardVariantValues)[number];\n}>(({ odysseyDesignTokens, variant }) => ({\n \"& > .MuiTypography-h5:not(:last-child)\": {\n marginBlockEnd: `${variant === \"compact\" ? odysseyDesignTokens.Spacing1 : odysseyDesignTokens.Spacing3} !important`,\n },\n \"& > *:last-child\": {\n marginBlockEnd: 0,\n },\n}));\n\nconst CardChildrenContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n [\"&:not(:first-child)\"]: {\n marginBlockStart: odysseyDesignTokens.Spacing3,\n },\n}));\n\nconst AccessoryPlaceholder = styled(MuiIconButton)({\n visibility: \"hidden\",\n});\n\nconst buttonProviderValue = { isFullWidth: true };\n\nconst DataCard: DataCardComponent = <TData extends MRT_RowData>({\n Accessory: AccessoryProp,\n button,\n children,\n description,\n image,\n menuButtonChildren,\n onClick,\n overline,\n renderDetailPanel,\n row,\n title,\n variant = \"tile\",\n}: DataCardProps<TData>) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const [isDetailPanelOpen, setIsDetailPanelOpen] = useState<boolean>(false);\n\n const ExpansionToggle = useMemo(() => {\n return renderDetailPanel?.({ row }) ? (\n <MuiTooltip\n title={\n isDetailPanelOpen\n ? t(\"table.rowexpansion.collapse\")\n : t(\"table.rowexpansion.expand\")\n }\n >\n <MuiIconButton\n children={isDetailPanelOpen ? <ChevronUpIcon /> : <ChevronDownIcon />}\n onClick={() => setIsDetailPanelOpen(!isDetailPanelOpen)}\n aria-label={\n isDetailPanelOpen\n ? t(\"table.rowexpansion.collapse\")\n : t(\"table.rowexpansion.expand\")\n }\n />\n </MuiTooltip>\n ) : (\n <AccessoryPlaceholder disabled>\n <ChevronDownIcon />\n </AccessoryPlaceholder>\n );\n }, [isDetailPanelOpen, renderDetailPanel, row, t]);\n\n const Accessory = useMemo(() => {\n return (\n <AccessoryContainer\n odysseyDesignTokens={odysseyDesignTokens}\n variant={variant}\n >\n {AccessoryProp}\n {renderDetailPanel && ExpansionToggle}\n </AccessoryContainer>\n );\n }, [\n AccessoryProp,\n ExpansionToggle,\n odysseyDesignTokens,\n renderDetailPanel,\n variant,\n ]);\n\n const cardContent = useMemo(() => {\n const countDefinedProps = (\n props: Array<string | ReactNode | undefined>,\n ) => {\n return props.filter((prop) => prop !== undefined).length;\n };\n\n const shouldCenterContent =\n variant === \"compact\" &&\n (!renderDetailPanel || !isDetailPanelOpen) &&\n countDefinedProps([title, description, overline, button, children]) <= 2;\n\n return (\n <CardInnerContainer odysseyDesignTokens={odysseyDesignTokens}>\n {(AccessoryProp || renderDetailPanel) && <Box>{Accessory}</Box>}\n <CardImageAndContentContainer\n variant={variant}\n centerContent={shouldCenterContent}\n >\n {image && (\n <ImageContainer\n odysseyDesignTokens={odysseyDesignTokens}\n hasMenuButtonChildren={Boolean(menuButtonChildren)}\n variant={variant}\n >\n {image}\n </ImageContainer>\n )}\n\n <CardContent\n odysseyDesignTokens={odysseyDesignTokens}\n variant={variant}\n >\n {overline && <Support component=\"div\">{overline}</Support>}\n {title && <Heading5 component=\"div\">{title}</Heading5>}\n {description && (\n <Paragraph color=\"textSecondary\">{description}</Paragraph>\n )}\n\n {button && (\n <MuiCardActions>\n <ButtonContext.Provider value={buttonProviderValue}>\n {button}\n </ButtonContext.Provider>\n </MuiCardActions>\n )}\n\n {children && (\n <CardChildrenContainer odysseyDesignTokens={odysseyDesignTokens}>\n {children}\n </CardChildrenContainer>\n )}\n\n {renderDetailPanel && isDetailPanelOpen && (\n <CardChildrenContainer odysseyDesignTokens={odysseyDesignTokens}>\n {renderDetailPanel({ row })}\n </CardChildrenContainer>\n )}\n </CardContent>\n </CardImageAndContentContainer>\n </CardInnerContainer>\n );\n }, [\n odysseyDesignTokens,\n AccessoryProp,\n renderDetailPanel,\n Accessory,\n variant,\n image,\n menuButtonChildren,\n overline,\n title,\n description,\n button,\n children,\n isDetailPanelOpen,\n row,\n ]);\n\n return (\n <MuiCard\n className={`${onClick ? \"isClickable\" : \"\"} ${Accessory ? \"hasAccessory\" : \"\"} ods-card-${variant}`}\n role=\"listitem\"\n >\n {onClick ? (\n <MuiCardActionArea onClick={onClick}>{cardContent}</MuiCardActionArea>\n ) : (\n cardContent\n )}\n\n {menuButtonChildren && (\n <MenuButtonContainer\n odysseyDesignTokens={odysseyDesignTokens}\n variant={variant}\n >\n <MenuButton\n endIcon={<MoreIcon />}\n ariaLabel={t(\"table.moreactions.arialabel\")}\n buttonVariant=\"floating\"\n menuAlignment=\"right\"\n size=\"small\"\n tooltipText={t(\"table.actions\")}\n >\n {menuButtonChildren}\n </MenuButton>\n </MenuButtonContainer>\n )}\n </MuiCard>\n );\n};\n\nconst MemoizedDataCard = memo(DataCard) as DataCardComponent;\nMemoizedDataCard.displayName = \"DataCard\";\n\nexport { MemoizedDataCard as DataCard };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DataCard.cjs","names":["_react","require","_styled","_interopRequireDefault","_reactI18next","_Box","_index","_OdysseyDesignTokensContext","_Typography","_index2","_jsxRuntime","e","__esModule","default","CARD_IMAGE_SIZE","exports","CARD_IMAGE_SIZE_COMPACT","cardVariantValues","StyledAccessoryContainer","styled","shouldForwardProp","prop","odysseyDesignTokens","variant","display","flexDirection","alignItems","gap","Spacing2","height","StyledImageContainer","hasMenuButtonChildren","maxHeight","marginBlockEnd","Spacing5","paddingRight","StyledMenuButtonContainer","position","right","Spacing3","top","Spacing4","StyledCardInnerContainer","StyledCardImageAndContentContainer","centerContent","StyledCardContent","Spacing1","StyledCardChildrenContainer","marginBlockStart","StyledAccessoryPlaceholder","_IconButton2","visibility","buttonProviderValue","isFullWidth","DataCard","Accessory","AccessoryProp","button","children","description","image","menuButtonChildren","onClick","overline","renderDetailPanel","row","title","useOdysseyDesignTokens","t","useTranslation","isDetailPanelOpen","setIsDetailPanelOpen","useState","ExpansionToggle","useMemo","jsx","_Tooltip2","ChevronUpIcon","ChevronDownIcon","disabled","jsxs","cardContent","countDefinedProps","props","filter","undefined","length","shouldCenterContent","Box","Boolean","Support","component","Heading5","Paragraph","color","_CardActions2","ButtonContext","Provider","value","_Card2","className","role","_CardActionArea2","MenuButton","endIcon","MoreIcon","ariaLabel","buttonVariant","menuAlignment","size","tooltipText","MemoizedDataCard","memo","displayName"],"sources":["../../../../src/labs/DataView/DataCard.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n MouseEventHandler,\n ReactElement,\n memo,\n useMemo,\n ReactNode,\n useState,\n} from \"react\";\nimport {\n IconButton as MuiIconButton,\n Card as MuiCard,\n CardActions as MuiCardActions,\n CardActionArea as MuiCardActionArea,\n Tooltip as MuiTooltip,\n} from \"@mui/material\";\nimport styled from \"@emotion/styled\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Box } from \"../../Box.js\";\nimport {\n Button,\n ButtonContext,\n MenuButton,\n MenuButtonProps,\n} from \"../../Buttons/index.js\";\nimport {\n DesignTokens,\n useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport { Heading5, Paragraph, Support } from \"../../Typography.js\";\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n MoreIcon,\n} from \"../../icons.generated/index.js\";\nimport { CardLayoutProps } from \"./componentTypes.js\";\nimport { MRT_RowData } from \"material-react-table\";\n\nexport const CARD_IMAGE_SIZE = \"64px\";\nexport const CARD_IMAGE_SIZE_COMPACT = \"48px\";\n\nexport const cardVariantValues = [\"tile\", \"stack\", \"compact\"] as const;\n\nexport type DataCardProps<TData extends MRT_RowData> = {\n children?: ReactNode;\n description?: string;\n image?: ReactElement;\n overline?: string;\n renderDetailPanel?: CardLayoutProps<TData>[\"renderDetailPanel\"];\n row: TData;\n title?: string;\n variant?: (typeof cardVariantValues)[number];\n} & (\n | {\n Accessory?: never;\n button?: never;\n menuButtonChildren?: never;\n onClick: MouseEventHandler;\n }\n | {\n Accessory?: ReactNode;\n button?: ReactElement<typeof Button>;\n menuButtonChildren?: MenuButtonProps[\"children\"];\n onClick?: never;\n }\n);\n\ntype DataCardComponent = (<TData extends MRT_RowData>(\n props: DataCardProps<TData>,\n) => JSX.Element) & {\n displayName?: string;\n};\n\nconst StyledAccessoryContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"variant\",\n})<{\n odysseyDesignTokens: DesignTokens;\n variant: (typeof cardVariantValues)[number];\n}>(({ odysseyDesignTokens, variant }) => ({\n display: \"flex\",\n flexDirection: variant === \"compact\" ? \"row\" : \"column\",\n alignItems: \"center\",\n gap: odysseyDesignTokens.Spacing2,\n height: variant === \"compact\" ? CARD_IMAGE_SIZE_COMPACT : \"auto\",\n}));\n\nconst StyledImageContainer = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" &&\n prop !== \"hasMenuButtonChildren\" &&\n prop !== \"variant\",\n})<{\n odysseyDesignTokens: DesignTokens;\n hasMenuButtonChildren: boolean;\n variant: (typeof cardVariantValues)[number];\n}>(({ odysseyDesignTokens, hasMenuButtonChildren, variant }) => ({\n display: \"flex\",\n alignItems: \"flex-start\",\n height: variant === \"compact\" ? CARD_IMAGE_SIZE_COMPACT : CARD_IMAGE_SIZE,\n maxHeight: variant === \"compact\" ? CARD_IMAGE_SIZE_COMPACT : CARD_IMAGE_SIZE,\n marginBlockEnd: variant === \"tile\" ? odysseyDesignTokens.Spacing5 : 0,\n paddingRight: hasMenuButtonChildren ? odysseyDesignTokens.Spacing5 : 0,\n}));\n\nconst StyledMenuButtonContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{\n odysseyDesignTokens: DesignTokens;\n variant: (typeof cardVariantValues)[number];\n}>(({ odysseyDesignTokens, variant }) => ({\n position: \"absolute\",\n right: odysseyDesignTokens.Spacing3,\n top:\n variant === \"compact\"\n ? odysseyDesignTokens.Spacing4\n : odysseyDesignTokens.Spacing3,\n height: variant === \"compact\" ? CARD_IMAGE_SIZE_COMPACT : \"auto\",\n display: \"flex\",\n alignItems: \"center\",\n}));\n\nconst StyledCardInnerContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n display: \"flex\",\n gap: odysseyDesignTokens.Spacing3,\n}));\n\nconst StyledCardImageAndContentContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"variant\" && prop !== \"centerContent\",\n})<{ variant: (typeof cardVariantValues)[number]; centerContent: boolean }>(\n ({ variant, centerContent }) => ({\n display: \"flex\",\n flexDirection: variant === \"tile\" ? \"column\" : \"row\",\n alignItems: centerContent ? \"center\" : \"flex-start\",\n }),\n);\n\nconst StyledCardContent = styled(\"div\", {\n shouldForwardProp: (prop) =>\n prop !== \"odysseyDesignTokens\" && prop !== \"variant\",\n})<{\n odysseyDesignTokens: DesignTokens;\n variant: (typeof cardVariantValues)[number];\n}>(({ odysseyDesignTokens, variant }) => ({\n \"& > .MuiTypography-h5:not(:last-child)\": {\n marginBlockEnd: `${variant === \"compact\" ? odysseyDesignTokens.Spacing1 : odysseyDesignTokens.Spacing3} !important`,\n },\n \"& > *:last-child\": {\n marginBlockEnd: 0,\n },\n}));\n\nconst StyledCardChildrenContainer = styled(\"div\", {\n shouldForwardProp: (prop) => prop !== \"odysseyDesignTokens\",\n})<{ odysseyDesignTokens: DesignTokens }>(({ odysseyDesignTokens }) => ({\n [\"&:not(:first-child)\"]: {\n marginBlockStart: odysseyDesignTokens.Spacing3,\n },\n}));\n\nconst StyledAccessoryPlaceholder = styled(MuiIconButton)({\n visibility: \"hidden\",\n});\n\nconst buttonProviderValue = { isFullWidth: true };\n\nconst DataCard: DataCardComponent = <TData extends MRT_RowData>({\n Accessory: AccessoryProp,\n button,\n children,\n description,\n image,\n menuButtonChildren,\n onClick,\n overline,\n renderDetailPanel,\n row,\n title,\n variant = \"tile\",\n}: DataCardProps<TData>) => {\n const odysseyDesignTokens = useOdysseyDesignTokens();\n const { t } = useTranslation();\n\n const [isDetailPanelOpen, setIsDetailPanelOpen] = useState<boolean>(false);\n\n const ExpansionToggle = useMemo(() => {\n return renderDetailPanel?.({ row }) ? (\n <MuiTooltip\n title={\n isDetailPanelOpen\n ? t(\"table.rowexpansion.collapse\")\n : t(\"table.rowexpansion.expand\")\n }\n >\n <MuiIconButton\n children={isDetailPanelOpen ? <ChevronUpIcon /> : <ChevronDownIcon />}\n onClick={() => setIsDetailPanelOpen(!isDetailPanelOpen)}\n aria-label={\n isDetailPanelOpen\n ? t(\"table.rowexpansion.collapse\")\n : t(\"table.rowexpansion.expand\")\n }\n />\n </MuiTooltip>\n ) : (\n <StyledAccessoryPlaceholder disabled>\n <ChevronDownIcon />\n </StyledAccessoryPlaceholder>\n );\n }, [isDetailPanelOpen, renderDetailPanel, row, t]);\n\n const Accessory = useMemo(() => {\n return (\n <StyledAccessoryContainer\n odysseyDesignTokens={odysseyDesignTokens}\n variant={variant}\n >\n {AccessoryProp}\n {renderDetailPanel && ExpansionToggle}\n </StyledAccessoryContainer>\n );\n }, [\n AccessoryProp,\n ExpansionToggle,\n odysseyDesignTokens,\n renderDetailPanel,\n variant,\n ]);\n\n const cardContent = useMemo(() => {\n const countDefinedProps = (\n props: Array<string | ReactNode | undefined>,\n ) => {\n return props.filter((prop) => prop !== undefined).length;\n };\n\n const shouldCenterContent =\n variant === \"compact\" &&\n (!renderDetailPanel || !isDetailPanelOpen) &&\n countDefinedProps([title, description, overline, button, children]) <= 2;\n\n return (\n <StyledCardInnerContainer odysseyDesignTokens={odysseyDesignTokens}>\n {(AccessoryProp || renderDetailPanel) && <Box>{Accessory}</Box>}\n <StyledCardImageAndContentContainer\n variant={variant}\n centerContent={shouldCenterContent}\n >\n {image && (\n <StyledImageContainer\n odysseyDesignTokens={odysseyDesignTokens}\n hasMenuButtonChildren={Boolean(menuButtonChildren)}\n variant={variant}\n >\n {image}\n </StyledImageContainer>\n )}\n\n <StyledCardContent\n odysseyDesignTokens={odysseyDesignTokens}\n variant={variant}\n >\n {overline && <Support component=\"div\">{overline}</Support>}\n {title && <Heading5 component=\"div\">{title}</Heading5>}\n {description && (\n <Paragraph color=\"textSecondary\">{description}</Paragraph>\n )}\n\n {button && (\n <MuiCardActions>\n <ButtonContext.Provider value={buttonProviderValue}>\n {button}\n </ButtonContext.Provider>\n </MuiCardActions>\n )}\n\n {children && (\n <StyledCardChildrenContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {children}\n </StyledCardChildrenContainer>\n )}\n\n {renderDetailPanel && isDetailPanelOpen && (\n <StyledCardChildrenContainer\n odysseyDesignTokens={odysseyDesignTokens}\n >\n {renderDetailPanel({ row })}\n </StyledCardChildrenContainer>\n )}\n </StyledCardContent>\n </StyledCardImageAndContentContainer>\n </StyledCardInnerContainer>\n );\n }, [\n odysseyDesignTokens,\n AccessoryProp,\n renderDetailPanel,\n Accessory,\n variant,\n image,\n menuButtonChildren,\n overline,\n title,\n description,\n button,\n children,\n isDetailPanelOpen,\n row,\n ]);\n\n return (\n <MuiCard\n className={`${onClick ? \"isClickable\" : \"\"} ${Accessory ? \"hasAccessory\" : \"\"} ods-card-${variant}`}\n role=\"listitem\"\n >\n {onClick ? (\n <MuiCardActionArea onClick={onClick}>{cardContent}</MuiCardActionArea>\n ) : (\n cardContent\n )}\n\n {menuButtonChildren && (\n <StyledMenuButtonContainer\n odysseyDesignTokens={odysseyDesignTokens}\n variant={variant}\n >\n <MenuButton\n endIcon={<MoreIcon />}\n ariaLabel={t(\"table.moreactions.arialabel\")}\n buttonVariant=\"floating\"\n menuAlignment=\"right\"\n size=\"small\"\n tooltipText={t(\"table.actions\")}\n >\n {menuButtonChildren}\n </MenuButton>\n </StyledMenuButtonContainer>\n )}\n </MuiCard>\n );\n};\n\nconst MemoizedDataCard = memo(DataCard) as DataCardComponent;\nMemoizedDataCard.displayName = \"DataCard\";\n\nexport { MemoizedDataCard as DataCard };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -39,7 +39,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
39
39
|
* See the License for the specific language governing permissions and limitations under the License.
|
|
40
40
|
*/
|
|
41
41
|
|
|
42
|
-
const
|
|
42
|
+
const StyledDataViewContainer = (0, _styled.default)("div", {
|
|
43
43
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
44
44
|
})(({
|
|
45
45
|
odysseyDesignTokens
|
|
@@ -48,11 +48,11 @@ const DataViewContainer = (0, _styled.default)("div", {
|
|
|
48
48
|
flexDirection: "column",
|
|
49
49
|
gap: odysseyDesignTokens.Spacing4
|
|
50
50
|
}));
|
|
51
|
-
const
|
|
51
|
+
const StyledBulkActionsContainer = (0, _styled.default)("div")(() => ({
|
|
52
52
|
display: "flex",
|
|
53
53
|
justifyContent: "space-between"
|
|
54
54
|
}));
|
|
55
|
-
const
|
|
55
|
+
const StyledAdditionalActionsContainer = (0, _styled.default)("div", {
|
|
56
56
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
57
57
|
})(({
|
|
58
58
|
odysseyDesignTokens
|
|
@@ -61,7 +61,7 @@ const AdditionalActionsContainer = (0, _styled.default)("div", {
|
|
|
61
61
|
justifyContent: "flex-end",
|
|
62
62
|
gap: odysseyDesignTokens.Spacing2
|
|
63
63
|
}));
|
|
64
|
-
const
|
|
64
|
+
const StyledAdditionalActionsInner = (0, _styled.default)("div", {
|
|
65
65
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
66
66
|
})(({
|
|
67
67
|
odysseyDesignTokens
|
|
@@ -70,7 +70,7 @@ const AdditionalActionsInner = (0, _styled.default)("div", {
|
|
|
70
70
|
alignItems: "center",
|
|
71
71
|
gap: odysseyDesignTokens.Spacing2
|
|
72
72
|
}));
|
|
73
|
-
const
|
|
73
|
+
const StyledMetaTextContainer = (0, _styled.default)("div", {
|
|
74
74
|
shouldForwardProp: prop => prop !== "odysseyDesignTokens"
|
|
75
75
|
})(({
|
|
76
76
|
odysseyDesignTokens
|
|
@@ -214,9 +214,9 @@ const DataView = ({
|
|
|
214
214
|
return;
|
|
215
215
|
}, [noResultsPlaceholder, t, isEmpty, isNoResults, emptyPlaceholder]);
|
|
216
216
|
const additionalActions = (0, _react.useMemo)(() => {
|
|
217
|
-
return (metaText || currentLayout === "table" && tableLayoutOptions || availableLayouts.length > 1 || additionalActionButton || additionalActionMenuItems) && (0, _jsxRuntime.jsxs)(
|
|
217
|
+
return (metaText || currentLayout === "table" && tableLayoutOptions || availableLayouts.length > 1 || additionalActionButton || additionalActionMenuItems) && (0, _jsxRuntime.jsxs)(StyledAdditionalActionsInner, {
|
|
218
218
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
219
|
-
children: [metaText && (0, _jsxRuntime.jsx)(
|
|
219
|
+
children: [metaText && (0, _jsxRuntime.jsx)(StyledMetaTextContainer, {
|
|
220
220
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
221
221
|
children: (0, _jsxRuntime.jsx)(_Typography.Typography, {
|
|
222
222
|
color: "textSecondary",
|
|
@@ -258,7 +258,7 @@ const DataView = ({
|
|
|
258
258
|
resultsPerPage: pagination.pageSize,
|
|
259
259
|
page: pagination.pageIndex
|
|
260
260
|
});
|
|
261
|
-
return (0, _jsxRuntime.jsxs)(
|
|
261
|
+
return (0, _jsxRuntime.jsxs)(StyledDataViewContainer, {
|
|
262
262
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
263
263
|
children: [errorMessage && (0, _jsxRuntime.jsx)(_Box.Box, {
|
|
264
264
|
children: (0, _jsxRuntime.jsx)(_Callout.Callout, {
|
|
@@ -273,14 +273,14 @@ const DataView = ({
|
|
|
273
273
|
onChangeFilters: hasFilters ? setFilters : undefined,
|
|
274
274
|
onChangeSearch: hasSearch ? setSearch : undefined,
|
|
275
275
|
searchDelayTime: searchDelayTime
|
|
276
|
-
}), (bulkActionMenuItems || hasRowSelection) && (0, _jsxRuntime.jsxs)(
|
|
276
|
+
}), (bulkActionMenuItems || hasRowSelection) && (0, _jsxRuntime.jsxs)(StyledBulkActionsContainer, {
|
|
277
277
|
children: [(0, _jsxRuntime.jsx)(_BulkActionsMenu.BulkActionsMenu, {
|
|
278
278
|
data: data,
|
|
279
279
|
menuItems: bulkActionMenuItems,
|
|
280
280
|
rowSelection: rowSelection,
|
|
281
281
|
setRowSelection: setRowSelection
|
|
282
282
|
}), !shouldShowFilters && additionalActions]
|
|
283
|
-
}), !shouldShowFilters && !bulkActionMenuItems && !hasRowSelection && additionalActions && (0, _jsxRuntime.jsx)(
|
|
283
|
+
}), !shouldShowFilters && !bulkActionMenuItems && !hasRowSelection && additionalActions && (0, _jsxRuntime.jsx)(StyledAdditionalActionsContainer, {
|
|
284
284
|
odysseyDesignTokens: odysseyDesignTokens,
|
|
285
285
|
children: additionalActions
|
|
286
286
|
}), currentLayout === "table" && tableLayoutOptions && (0, _jsxRuntime.jsx)(_TableLayoutContent.TableLayoutContent, {
|