diff --git a/packages/twenty-front/src/modules/activities/tasks/components/ObjectTasks.tsx b/packages/twenty-front/src/modules/activities/tasks/components/ObjectTasks.tsx index 9e2dd7a4b..1aa7b3aaf 100644 --- a/packages/twenty-front/src/modules/activities/tasks/components/ObjectTasks.tsx +++ b/packages/twenty-front/src/modules/activities/tasks/components/ObjectTasks.tsx @@ -2,7 +2,7 @@ import styled from '@emotion/styled'; import { TaskGroups } from '@/activities/tasks/components/TaskGroups'; import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; -import { ObjectFilterDropdownScope } from '@/object-record/object-filter-dropdown/scopes/ObjectFilterDropdownScope'; +import { ObjectFilterDropdownComponentInstanceContext } from '@/object-record/object-filter-dropdown/states/contexts/ObjectFilterDropdownComponentInstanceContext'; const StyledContainer = styled.div` display: flex; @@ -19,9 +19,11 @@ export const ObjectTasks = ({ }) => { return ( - + - + ); }; diff --git a/packages/twenty-front/src/modules/activities/tasks/components/__stories__/TaskGroups.stories.tsx b/packages/twenty-front/src/modules/activities/tasks/components/__stories__/TaskGroups.stories.tsx index aefa6f2ed..c420ac0f3 100644 --- a/packages/twenty-front/src/modules/activities/tasks/components/__stories__/TaskGroups.stories.tsx +++ b/packages/twenty-front/src/modules/activities/tasks/components/__stories__/TaskGroups.stories.tsx @@ -2,7 +2,7 @@ import { Meta, StoryObj } from '@storybook/react'; import { TaskGroups } from '@/activities/tasks/components/TaskGroups'; import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; -import { ObjectFilterDropdownScope } from '@/object-record/object-filter-dropdown/scopes/ObjectFilterDropdownScope'; +import { ObjectFilterDropdownComponentInstanceContext } from '@/object-record/object-filter-dropdown/states/contexts/ObjectFilterDropdownComponentInstanceContext'; import { ComponentWithRecoilScopeDecorator } from '~/testing/decorators/ComponentWithRecoilScopeDecorator'; import { ComponentWithRouterDecorator } from '~/testing/decorators/ComponentWithRouterDecorator'; import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; @@ -15,9 +15,11 @@ const meta: Meta = { component: TaskGroups, decorators: [ (Story) => ( - + - + ), ComponentWithRouterDecorator, ComponentWithRecoilScopeDecorator, diff --git a/packages/twenty-front/src/modules/activities/tasks/hooks/__tests__/useTasks.test.tsx b/packages/twenty-front/src/modules/activities/tasks/hooks/__tests__/useTasks.test.tsx index d24485409..a01f814cf 100644 --- a/packages/twenty-front/src/modules/activities/tasks/hooks/__tests__/useTasks.test.tsx +++ b/packages/twenty-front/src/modules/activities/tasks/hooks/__tests__/useTasks.test.tsx @@ -4,7 +4,7 @@ import { RecoilRoot } from 'recoil'; import { useActivities } from '@/activities/hooks/useActivities'; import { useTasks } from '@/activities/tasks/hooks/useTasks'; -import { ObjectFilterDropdownScope } from '@/object-record/object-filter-dropdown/scopes/ObjectFilterDropdownScope'; +import { ObjectFilterDropdownComponentInstanceContext } from '@/object-record/object-filter-dropdown/states/contexts/ObjectFilterDropdownComponentInstanceContext'; const tasks = [ { @@ -46,9 +46,11 @@ jest.mock('@/activities/hooks/useActivities', () => ({ const Wrapper = ({ children }: { children: ReactNode }) => ( - + {children} - + ); diff --git a/packages/twenty-front/src/modules/object-record/advanced-filter/components/AdvancedFilterViewFilter.tsx b/packages/twenty-front/src/modules/object-record/advanced-filter/components/AdvancedFilterViewFilter.tsx index 481bbc8d4..1bf7e3bf8 100644 --- a/packages/twenty-front/src/modules/object-record/advanced-filter/components/AdvancedFilterViewFilter.tsx +++ b/packages/twenty-front/src/modules/object-record/advanced-filter/components/AdvancedFilterViewFilter.tsx @@ -2,7 +2,7 @@ import { AdvancedFilterViewFilterFieldSelect } from '@/object-record/advanced-fi import { AdvancedFilterViewFilterOperandSelect } from '@/object-record/advanced-filter/components/AdvancedFilterViewFilterOperandSelect'; import { AdvancedFilterViewFilterValueInput } from '@/object-record/advanced-filter/components/AdvancedFilterViewFilterValueInput'; import { useCurrentViewFilter } from '@/object-record/advanced-filter/hooks/useCurrentViewFilter'; -import { ObjectFilterDropdownScope } from '@/object-record/object-filter-dropdown/scopes/ObjectFilterDropdownScope'; +import { ObjectFilterDropdownComponentInstanceContext } from '@/object-record/object-filter-dropdown/states/contexts/ObjectFilterDropdownComponentInstanceContext'; import { configurableViewFilterOperands } from '@/object-record/object-filter-dropdown/utils/configurableViewFilterOperands'; import styled from '@emotion/styled'; @@ -32,7 +32,9 @@ export const AdvancedFilterViewFilter = ({ } return ( - + @@ -42,6 +44,6 @@ export const AdvancedFilterViewFilter = ({ )} - + ); }; diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownButton.tsx b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownButton.tsx index 895adf219..74f37a680 100644 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownButton.tsx +++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownButton.tsx @@ -1,4 +1,3 @@ -import { ObjectFilterDropdownScope } from '@/object-record/object-filter-dropdown/scopes/ObjectFilterDropdownScope'; import { HotkeyScope } from '@/ui/utilities/hotkey/types/HotkeyScope'; import { ObjectFilterDropdownComponentInstanceContext } from '@/object-record/object-filter-dropdown/states/contexts/ObjectFilterDropdownComponentInstanceContext'; @@ -33,13 +32,11 @@ export const ObjectFilterDropdownButton = ({ - - {hasOnlyOneEntityFilter ? ( - - ) : ( - - )} - + {hasOnlyOneEntityFilter ? ( + + ) : ( + + )} ); }; diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/__stories__/MultipleFiltersDropdownButton.stories.tsx b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/__stories__/MultipleFiltersDropdownButton.stories.tsx index ea06072c0..f17ee84dc 100644 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/__stories__/MultipleFiltersDropdownButton.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/__stories__/MultipleFiltersDropdownButton.stories.tsx @@ -4,7 +4,6 @@ import { TaskGroups } from '@/activities/tasks/components/TaskGroups'; import { CoreObjectNamePlural } from '@/object-metadata/types/CoreObjectNamePlural'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { MultipleFiltersDropdownButton } from '@/object-record/object-filter-dropdown/components/MultipleFiltersDropdownButton'; -import { ObjectFilterDropdownScope } from '@/object-record/object-filter-dropdown/scopes/ObjectFilterDropdownScope'; import { ObjectFilterDropdownComponentInstanceContext } from '@/object-record/object-filter-dropdown/states/contexts/ObjectFilterDropdownComponentInstanceContext'; import { RecordIndexContextProvider } from '@/object-record/record-index/contexts/RecordIndexContext'; import { RecordTableComponentInstanceContext } from '@/object-record/record-table/states/context/RecordTableComponentInstanceContext'; @@ -115,9 +114,7 @@ const meta: Meta = { value={{ instanceId: instanceId, onColumnsChange: () => {} }} > - - - + diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useFilterDropdownStates.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useFilterDropdownStates.ts deleted file mode 100644 index 4b530d43f..000000000 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useFilterDropdownStates.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { advancedFilterViewFilterGroupIdComponentState } from '@/object-record/object-filter-dropdown/states/advancedFilterViewFilterGroupIdComponentState'; -import { advancedFilterViewFilterIdComponentState } from '@/object-record/object-filter-dropdown/states/advancedFilterViewFilterIdComponentState'; -import { filterDefinitionUsedInDropdownComponentState } from '@/object-record/object-filter-dropdown/states/filterDefinitionUsedInDropdownComponentState'; -import { objectFilterDropdownSearchInputComponentState } from '@/object-record/object-filter-dropdown/states/objectFilterDropdownSearchInputComponentState'; -import { objectFilterDropdownSelectedOptionValuesComponentState } from '@/object-record/object-filter-dropdown/states/objectFilterDropdownSelectedOptionValuesComponentState'; -import { objectFilterDropdownSelectedRecordIdsComponentState } from '@/object-record/object-filter-dropdown/states/objectFilterDropdownSelectedRecordIdsComponentState'; -import { onFilterSelectComponentState } from '@/object-record/object-filter-dropdown/states/onFilterSelectComponentState'; -import { selectedFilterComponentState } from '@/object-record/object-filter-dropdown/states/selectedFilterComponentState'; -import { selectedOperandInDropdownComponentState } from '@/object-record/object-filter-dropdown/states/selectedOperandInDropdownComponentState'; - -export const useFilterDropdownStates = (componentInstanceId: string) => { - const filterDefinitionUsedInDropdownState = - filterDefinitionUsedInDropdownComponentState.atomFamily({ - instanceId: componentInstanceId, - }); - - const objectFilterDropdownSearchInputState = - objectFilterDropdownSearchInputComponentState.atomFamily({ - instanceId: componentInstanceId, - }); - - const objectFilterDropdownSelectedRecordIdsState = - objectFilterDropdownSelectedRecordIdsComponentState.atomFamily({ - instanceId: componentInstanceId, - }); - - const objectFilterDropdownSelectedOptionValuesState = - objectFilterDropdownSelectedOptionValuesComponentState.atomFamily({ - instanceId: componentInstanceId, - }); - - const selectedFilterState = selectedFilterComponentState.atomFamily({ - instanceId: componentInstanceId, - }); - - const selectedOperandInDropdownState = - selectedOperandInDropdownComponentState.atomFamily({ - instanceId: componentInstanceId, - }); - - const onFilterSelectState = onFilterSelectComponentState.atomFamily({ - instanceId: componentInstanceId, - }); - - const advancedFilterViewFilterGroupIdState = - advancedFilterViewFilterGroupIdComponentState.atomFamily({ - instanceId: componentInstanceId, - }); - - const advancedFilterViewFilterIdState = - advancedFilterViewFilterIdComponentState.atomFamily({ - instanceId: componentInstanceId, - }); - - return { - filterDefinitionUsedInDropdownState, - objectFilterDropdownSearchInputState, - objectFilterDropdownSelectedRecordIdsState, - objectFilterDropdownSelectedOptionValuesState, - selectedFilterState, - selectedOperandInDropdownState, - onFilterSelectState, - advancedFilterViewFilterGroupIdState, - advancedFilterViewFilterIdState, - }; -}; diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useSelectFilterDefinitionUsedInDropdown.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useSelectFilterDefinitionUsedInDropdown.ts index 53288a4bb..9134acfa8 100644 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useSelectFilterDefinitionUsedInDropdown.ts +++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useSelectFilterDefinitionUsedInDropdown.ts @@ -18,30 +18,37 @@ type SelectFilterParams = { filterDefinition: FilterDefinition; }; -export const useSelectFilterDefinitionUsedInDropdown = () => { +export const useSelectFilterDefinitionUsedInDropdown = ( + componentInstanceId?: string, +) => { const setFilterDefinitionUsedInDropdown = useSetRecoilComponentStateV2( filterDefinitionUsedInDropdownComponentState, + componentInstanceId, ); const setSelectedOperandInDropdown = useSetRecoilComponentStateV2( selectedOperandInDropdownComponentState, + componentInstanceId, ); const setObjectFilterDropdownSearchInput = useSetRecoilComponentStateV2( objectFilterDropdownSearchInputComponentState, + componentInstanceId, ); const advancedFilterViewFilterGroupId = useRecoilComponentValueV2( advancedFilterViewFilterGroupIdComponentState, + componentInstanceId, ); const advancedFilterViewFilterId = useRecoilComponentValueV2( advancedFilterViewFilterIdComponentState, + componentInstanceId, ); const setHotkeyScope = useSetHotkeyScope(); - const { applyRecordFilter } = useApplyRecordFilter(); + const { applyRecordFilter } = useApplyRecordFilter(componentInstanceId); const selectFilterDefinitionUsedInDropdown = ({ filterDefinition, diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useSetFilterDefinitionUsedInDropdownInScope.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useSetFilterDefinitionUsedInDropdownInScope.ts deleted file mode 100644 index 142f76a5d..000000000 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useSetFilterDefinitionUsedInDropdownInScope.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { useRecoilCallback } from 'recoil'; -import { filterDefinitionUsedInDropdownComponentState } from '../states/filterDefinitionUsedInDropdownComponentState'; -import { FilterDefinition } from '../types/FilterDefinition'; - -export const useSetFilterDefinitionUsedInDropdownInScope = () => { - const setFilterDefinitionUsedInDropdownInScope = useRecoilCallback( - ({ set }) => - ( - componentInstanceId: string, - filterDefinition: FilterDefinition | null, - ) => { - const filterDefinitionUsedInDropdownState = - filterDefinitionUsedInDropdownComponentState.atomFamily({ - instanceId: componentInstanceId, - }); - - set(filterDefinitionUsedInDropdownState, filterDefinition); - }, - [], - ); - - return { - setFilterDefinitionUsedInDropdownInScope, - }; -}; diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/scopes/ObjectFilterDropdownScope.tsx b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/scopes/ObjectFilterDropdownScope.tsx deleted file mode 100644 index 25122ffd3..000000000 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/scopes/ObjectFilterDropdownScope.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { ReactNode } from 'react'; - -import { ObjectFilterDropdownComponentInstanceContext } from '@/object-record/object-filter-dropdown/states/contexts/ObjectFilterDropdownComponentInstanceContext'; - -type ObjectFilterDropdownScopeProps = { - children: ReactNode; - filterScopeId: string; -}; - -export const ObjectFilterDropdownScope = ({ - children, - filterScopeId, -}: ObjectFilterDropdownScopeProps) => { - return ( - - {children} - - ); -}; diff --git a/packages/twenty-front/src/modules/object-record/record-index/hooks/useHandleToggleColumnFilter.ts b/packages/twenty-front/src/modules/object-record/record-index/hooks/useHandleToggleColumnFilter.ts index 1052a3852..ded8999d3 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/hooks/useHandleToggleColumnFilter.ts +++ b/packages/twenty-front/src/modules/object-record/record-index/hooks/useHandleToggleColumnFilter.ts @@ -3,7 +3,7 @@ import { v4 } from 'uuid'; import { useColumnDefinitionsFromFieldMetadata } from '@/object-metadata/hooks/useColumnDefinitionsFromFieldMetadata'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; -import { useSetFilterDefinitionUsedInDropdownInScope } from '@/object-record/object-filter-dropdown/hooks/useSetFilterDefinitionUsedInDropdownInScope'; +import { useSelectFilterDefinitionUsedInDropdown } from '@/object-record/object-filter-dropdown/hooks/useSelectFilterDefinitionUsedInDropdown'; import { Filter } from '@/object-record/object-filter-dropdown/types/Filter'; import { getOperandsForFilterDefinition } from '@/object-record/object-filter-dropdown/utils/getOperandsForFilterType'; import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState'; @@ -50,8 +50,8 @@ export const useHandleToggleColumnFilter = ({ const { currentViewWithCombinedFiltersAndSorts } = useGetCurrentView(); - const { setFilterDefinitionUsedInDropdownInScope } = - useSetFilterDefinitionUsedInDropdownInScope(); + const { selectFilterDefinitionUsedInDropdown } = + useSelectFilterDefinitionUsedInDropdown(viewBarId); const handleToggleColumnFilter = useCallback( async (fieldMetadataId: string) => { @@ -94,10 +94,7 @@ export const useHandleToggleColumnFilter = ({ await upsertCombinedViewFilter(newFilter); - setFilterDefinitionUsedInDropdownInScope( - newFilter.id, - filterDefinition, - ); + selectFilterDefinitionUsedInDropdown({ filterDefinition }); } openDropdown(existingViewFilter?.id ?? newFilterId); @@ -106,7 +103,7 @@ export const useHandleToggleColumnFilter = ({ openDropdown, columnDefinitions, upsertCombinedViewFilter, - setFilterDefinitionUsedInDropdownInScope, + selectFilterDefinitionUsedInDropdown, currentViewWithCombinedFiltersAndSorts, availableFilterDefinitions, ], diff --git a/packages/twenty-front/src/modules/views/components/ViewBarDetails.tsx b/packages/twenty-front/src/modules/views/components/ViewBarDetails.tsx index e605e3936..724ed7d6c 100644 --- a/packages/twenty-front/src/modules/views/components/ViewBarDetails.tsx +++ b/packages/twenty-front/src/modules/views/components/ViewBarDetails.tsx @@ -3,7 +3,7 @@ import { ReactNode, useMemo } from 'react'; import { useObjectNameSingularFromPlural } from '@/object-metadata/hooks/useObjectNameSingularFromPlural'; import { AddObjectFilterFromDetailsButton } from '@/object-record/object-filter-dropdown/components/AddObjectFilterFromDetailsButton'; -import { ObjectFilterDropdownScope } from '@/object-record/object-filter-dropdown/scopes/ObjectFilterDropdownScope'; +import { ObjectFilterDropdownComponentInstanceContext } from '@/object-record/object-filter-dropdown/states/contexts/ObjectFilterDropdownComponentInstanceContext'; import { Filter } from '@/object-record/object-filter-dropdown/types/Filter'; import { useHandleToggleTrashColumnFilter } from '@/object-record/record-index/hooks/useHandleToggleTrashColumnFilter'; import { DropdownScope } from '@/ui/layout/dropdown/scopes/DropdownScope'; @@ -226,9 +226,9 @@ export const ViewBarDetails = ({ defaultViewFilters, availableFilterDefinitions, ).map((viewFilter) => ( - @@ -240,7 +240,7 @@ export const ViewBarDetails = ({ viewFilterDropdownId={viewFilter.id} /> - + ))} {hasFilterButton && (