From 3364d5fa97fd018d998717a5cb9cd40cbc3aff1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yhoan=20Alejandro=20Guzm=C3=A1n=20Garc=C3=ADa?= <41337901+yaguzmang@users.noreply.github.com> Date: Thu, 17 Oct 2024 15:01:56 -0500 Subject: [PATCH 1/2] 4002 - Tablepaginated filter by user role/admin users role - Integration (#4038) * 4002 - Add Filter multi select type * 4002 - Add draft multi select to Users table * 2661 - Display all columns --- .../TablePaginated/Filters/Filters.tsx | 4 ++- .../Filters/MultiSelect/MultiSelect.tsx | 35 +++++++++++++++++++ src/client/components/TablePaginated/types.ts | 15 +++++++- .../Admin/UserManagement/UserManagement.tsx | 3 +- .../Admin/UserManagement/hooks/useColumns.tsx | 8 +++-- .../Admin/UserManagement/hooks/useFilters.tsx | 19 ++++++++-- src/meta/tablePaginated/tablePaginated.ts | 3 +- 7 files changed, 76 insertions(+), 11 deletions(-) create mode 100644 src/client/components/TablePaginated/Filters/MultiSelect/MultiSelect.tsx diff --git a/src/client/components/TablePaginated/Filters/Filters.tsx b/src/client/components/TablePaginated/Filters/Filters.tsx index 44f7c75c21..6a6a407e18 100644 --- a/src/client/components/TablePaginated/Filters/Filters.tsx +++ b/src/client/components/TablePaginated/Filters/Filters.tsx @@ -4,6 +4,7 @@ import React from 'react' import { TablePaginatedFilterType } from 'meta/tablePaginated' import Icon from 'client/components/Icon' +import MultiSelect from 'client/components/TablePaginated/Filters/MultiSelect/MultiSelect' import Text from 'client/components/TablePaginated/Filters/Text/Text' import { TablePaginatedFilter } from 'client/components/TablePaginated/types' @@ -11,8 +12,9 @@ const componentsByFilterType: Record< TablePaginatedFilterType, React.FC & { path: string }> > = { - [TablePaginatedFilterType.TEXT]: Text, + [TablePaginatedFilterType.MULTI_SELECT]: MultiSelect, [TablePaginatedFilterType.SWITCH]: () => null, + [TablePaginatedFilterType.TEXT]: Text, } type Props = { diff --git a/src/client/components/TablePaginated/Filters/MultiSelect/MultiSelect.tsx b/src/client/components/TablePaginated/Filters/MultiSelect/MultiSelect.tsx new file mode 100644 index 0000000000..099dc44fe8 --- /dev/null +++ b/src/client/components/TablePaginated/Filters/MultiSelect/MultiSelect.tsx @@ -0,0 +1,35 @@ +import React from 'react' + +import { TablePaginatedFilterType } from 'meta/tablePaginated' + +import { useAppDispatch } from 'client/store' +import { TablePaginatedActions } from 'client/store/ui/tablePaginated' +import { useTablePaginatedFilterValue } from 'client/store/ui/tablePaginated/hooks' +import Select from 'client/components/Inputs/Select' +import { TablePaginatedFilter } from 'client/components/TablePaginated/types' + +type Props = TablePaginatedFilter & { + path: string +} + +const MultiSelect = (props: Props) => { + const { fieldName, label, path, options } = props + + const dispatch = useAppDispatch() + + const filterValue = useTablePaginatedFilterValue(path, fieldName) + + const handleChange = (value: Array) => { + dispatch( + TablePaginatedActions.setFilterValue({ + fieldName, + path, + value, + }) + ) + } + + return + return ( +
+