From fbe180aa874f36b4f8c24d47c06c2b5aba435879 Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Fri, 4 Jun 2021 18:16:05 +0100 Subject: [PATCH] Add support for only filtering available options in the UserListPicker Signed-off-by: Mike Lewis Co-authored-by: Tim Hansen Co-authored-by: Himanshu Mishra --- .../UserListPicker/UserListPicker.tsx | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx index 52127a63bc..65ccb423da 100644 --- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx +++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx @@ -106,13 +106,27 @@ function getFilterGroups(orgName: string | undefined): ButtonGroup[] { type UserListPickerProps = { initialFilter?: UserListFilterKind; + availableFilters?: UserListFilterKind[]; }; -export const UserListPicker = ({ initialFilter }: UserListPickerProps) => { +export const UserListPicker = ({ + initialFilter, + availableFilters, +}: UserListPickerProps) => { const classes = useStyles(); const configApi = useApi(configApiRef); const orgName = configApi.getOptionalString('organization.name') ?? 'Company'; - const filterGroups = getFilterGroups(orgName); + + // Remove group items that aren't in availableFilters and exclude + // any now-empty groups. + const filterGroups = getFilterGroups(orgName) + .map(filterGroup => ({ + ...filterGroup, + items: filterGroup.items.filter( + ({ id }) => !availableFilters || availableFilters.includes(id), + ), + })) + .filter(({ items }) => !!items.length); const { value: user } = useOwnUser(); const { isStarredEntity } = useStarredEntities();