Add any field filter requests (#13336)
This PR adds any field filter request generation utils with its unit test. It also calls this new util in the relevant requests for table and board. This PR also adds a new corresponding state in context store so that the filter is handled in command menu and actions. We also add this new filter to the aggregate queries. The RecordShowPage story was also fixed.
This commit is contained in:
@@ -1,26 +1,29 @@
|
||||
import { anyFieldFilterValueComponentState } from '@/object-record/record-filter/states/anyFieldFilterValueComponentState';
|
||||
import { useCloseDropdown } from '@/ui/layout/dropdown/hooks/useCloseDropdown';
|
||||
import { useRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentStateV2';
|
||||
import { SortOrFilterChip } from '@/views/components/SortOrFilterChip';
|
||||
import { ADVANCED_FILTER_DROPDOWN_ID } from '@/views/constants/AdvancedFilterDropdownId';
|
||||
import { viewAnyFieldSearchValueComponentState } from '@/views/states/viewAnyFieldSearchValueComponentState';
|
||||
import { useLingui } from '@lingui/react/macro';
|
||||
import { IconFilter } from 'twenty-ui/display';
|
||||
|
||||
export const AnyFieldSearchChip = () => {
|
||||
const { t } = useLingui();
|
||||
|
||||
const { closeDropdown } = useCloseDropdown();
|
||||
|
||||
const [viewAnyFieldSearchValue, setViewAnyFieldSearchValue] =
|
||||
useRecoilComponentStateV2(viewAnyFieldSearchValueComponentState);
|
||||
const [anyFieldFilterValue, setAnyFieldFilterValue] =
|
||||
useRecoilComponentStateV2(anyFieldFilterValueComponentState);
|
||||
|
||||
const handleRemoveClick = () => {
|
||||
closeDropdown();
|
||||
setViewAnyFieldSearchValue('');
|
||||
setAnyFieldFilterValue('');
|
||||
};
|
||||
|
||||
return (
|
||||
<SortOrFilterChip
|
||||
testId={ADVANCED_FILTER_DROPDOWN_ID}
|
||||
labelKey={'Any field :'}
|
||||
labelValue={viewAnyFieldSearchValue}
|
||||
labelKey={t`Any field :`}
|
||||
labelValue={anyFieldFilterValue}
|
||||
Icon={IconFilter}
|
||||
onRemove={handleRemoveClick}
|
||||
type="filter"
|
||||
|
||||
@@ -22,6 +22,7 @@ import { useAreViewFiltersDifferentFromRecordFilters } from '@/views/hooks/useAr
|
||||
import { useAreViewSortsDifferentFromRecordSorts } from '@/views/hooks/useAreViewSortsDifferentFromRecordSorts';
|
||||
|
||||
import { currentRecordFilterGroupsComponentState } from '@/object-record/record-filter-group/states/currentRecordFilterGroupsComponentState';
|
||||
import { anyFieldFilterValueComponentState } from '@/object-record/record-filter/states/anyFieldFilterValueComponentState';
|
||||
import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState';
|
||||
import { ScrollWrapper } from '@/ui/utilities/scroll/components/ScrollWrapper';
|
||||
import { AnyFieldSearchDropdownButton } from '@/views/components/AnyFieldSearchDropdownButton';
|
||||
@@ -29,7 +30,6 @@ import { ANY_FIELD_SEARCH_DROPDOWN_ID } from '@/views/constants/AnyFieldSearchDr
|
||||
import { useApplyCurrentViewFilterGroupsToCurrentRecordFilterGroups } from '@/views/hooks/useApplyCurrentViewFilterGroupsToCurrentRecordFilterGroups';
|
||||
import { useAreViewFilterGroupsDifferentFromRecordFilterGroups } from '@/views/hooks/useAreViewFilterGroupsDifferentFromRecordFilterGroups';
|
||||
import { isViewBarExpandedComponentState } from '@/views/states/isViewBarExpandedComponentState';
|
||||
import { viewAnyFieldSearchValueComponentState } from '@/views/states/viewAnyFieldSearchValueComponentState';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { isNonEmptyArray, isNonEmptyString } from '@sniptt/guards';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
@@ -123,8 +123,8 @@ export const ViewBarDetails = ({
|
||||
currentRecordSortsComponentState,
|
||||
);
|
||||
|
||||
const viewAnyFieldSearchValue = useRecoilComponentValueV2(
|
||||
viewAnyFieldSearchValueComponentState,
|
||||
const anyFieldFilterValue = useRecoilComponentValueV2(
|
||||
anyFieldFilterValueComponentState,
|
||||
);
|
||||
|
||||
const { objectNameSingular } = useObjectNameSingularFromPlural({
|
||||
@@ -189,7 +189,7 @@ export const ViewBarDetails = ({
|
||||
);
|
||||
|
||||
const shouldShowAnyFieldSearchChip =
|
||||
isNonEmptyString(viewAnyFieldSearchValue) || isAnyFieldSearchDropdownOpen;
|
||||
isNonEmptyString(anyFieldFilterValue) || isAnyFieldSearchDropdownOpen;
|
||||
|
||||
const shouldExpandViewBar =
|
||||
shouldShowAnyFieldSearchChip ||
|
||||
|
||||
Reference in New Issue
Block a user