From 9448faa98f8543a720fbce24f8d01105191fe289 Mon Sep 17 00:00:00 2001 From: Sofonias Abathun Date: Mon, 16 Jun 2025 16:21:11 +0300 Subject: [PATCH 01/16] feat: implement new design patterns in the assignee, to, & from search filters --- .../SearchFiltersParticipantsSelector.tsx | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/src/components/Search/SearchFiltersParticipantsSelector.tsx b/src/components/Search/SearchFiltersParticipantsSelector.tsx index 3cffa38ca100..3d7eba3d2fde 100644 --- a/src/components/Search/SearchFiltersParticipantsSelector.tsx +++ b/src/components/Search/SearchFiltersParticipantsSelector.tsx @@ -4,10 +4,11 @@ import Button from '@components/Button'; import {usePersonalDetails} from '@components/OnyxProvider'; import {useOptionsList} from '@components/OptionListContextProvider'; import SelectionList from '@components/SelectionList'; -import InviteMemberListItem from '@components/SelectionList/InviteMemberListItem'; +import UserSelectionListItem from '@components/SelectionList/Search/UserSelectionListItem'; import useDebouncedState from '@hooks/useDebouncedState'; import useLocalize from '@hooks/useLocalize'; import useScreenWrapperTransitionStatus from '@hooks/useScreenWrapperTransitionStatus'; +import useThemeStyles from '@hooks/useThemeStyles'; import * as DeviceCapabilities from '@libs/DeviceCapabilities'; import * as OptionsListUtils from '@libs/OptionsListUtils'; import type {Option} from '@libs/OptionsListUtils'; @@ -37,6 +38,7 @@ type SearchFiltersParticipantsSelectorProps = { }; function SearchFiltersParticipantsSelector({initialAccountIDs, onFiltersUpdate}: SearchFiltersParticipantsSelectorProps) { + const styles = useThemeStyles(); const {translate} = useLocalize(); const personalDetails = usePersonalDetails(); const {didScreenTransitionEnd} = useScreenWrapperTransitionStatus(); @@ -128,6 +130,17 @@ function SearchFiltersParticipantsSelector({initialAccountIDs, onFiltersUpdate}: }; }, [areOptionsInitialized, cleanSearchTerm, selectedOptions, chatOptions, personalDetails, translate]); + const resetChanges = useCallback(() => { + setSelectedOptions([]); + }, []); + + const applyChanges = useCallback(() => { + const selectedAccountIDs = selectedOptions.map((option) => (option.accountID ? option.accountID.toString() : undefined)).filter(Boolean) as string[]; + onFiltersUpdate(selectedAccountIDs); + + Navigation.goBack(ROUTES.SEARCH_ADVANCED_FILTERS); + }, [onFiltersUpdate, selectedOptions]); + // This effect handles setting initial selectedOptions based on accountIDs saved in onyx form useEffect(() => { if (!initialAccountIDs || initialAccountIDs.length === 0 || !personalDetails) { @@ -180,18 +193,22 @@ function SearchFiltersParticipantsSelector({initialAccountIDs, onFiltersUpdate}: ); const footerContent = ( -