Fix filters + add behaviour for select (#13997)
On field selection, we need to retrieve the fieldMetadata to set the filter type. Current code was using the current step filter fieldMetdataId instead of the new one. Also adding a special behaviour for Select filter: it behaves as arrays/multiselect but the opearands are not the same. --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
+4
-6
@@ -1,4 +1,3 @@
|
||||
import { useGetFieldMetadataItemById } from '@/object-metadata/hooks/useGetFieldMetadataItemById';
|
||||
import { getAdvancedFilterInputPlaceholderText } from '@/object-record/advanced-filter/utils/getAdvancedFilterInputPlacedholderText';
|
||||
import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState';
|
||||
import { SelectControl } from '@/ui/input/components/SelectControl';
|
||||
@@ -8,6 +7,7 @@ import { isNonEmptyString } from '@sniptt/guards';
|
||||
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
import { useFieldMetadataItemById } from '@/object-metadata/hooks/useFieldMetadataItemById';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
// TODO: factorize this with https://github.com/twentyhq/core-team-issues/issues/752
|
||||
@@ -48,11 +48,9 @@ export const AdvancedFilterValueInputDropdownButtonClickableSelect = ({
|
||||
|
||||
const shouldUsePlaceholder = !isNonEmptyString(recordFilter?.value);
|
||||
|
||||
const { getFieldMetadataItemById } = useGetFieldMetadataItemById();
|
||||
|
||||
const fieldMetadataItem = isNonEmptyString(recordFilter?.fieldMetadataId)
|
||||
? getFieldMetadataItemById(recordFilter?.fieldMetadataId)
|
||||
: undefined;
|
||||
const { fieldMetadataItem } = useFieldMetadataItemById(
|
||||
recordFilter?.fieldMetadataId ?? '',
|
||||
);
|
||||
|
||||
const placeholderText = isDefined(fieldMetadataItem)
|
||||
? getAdvancedFilterInputPlaceholderText(fieldMetadataItem)
|
||||
|
||||
+4
-6
@@ -1,4 +1,4 @@
|
||||
import { useGetFieldMetadataItemById } from '@/object-metadata/hooks/useGetFieldMetadataItemById';
|
||||
import { useFieldMetadataItemById } from '@/object-metadata/hooks/useFieldMetadataItemById';
|
||||
import { getCompositeSubFieldLabel } from '@/object-record/object-filter-dropdown/utils/getCompositeSubFieldLabel';
|
||||
import { isCompositeFieldType } from '@/object-record/object-filter-dropdown/utils/isCompositeFieldType';
|
||||
import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState';
|
||||
@@ -17,11 +17,9 @@ export const useRecordFilterField = (recordFilterId: string) => {
|
||||
(recordFilter) => recordFilter.id === recordFilterId,
|
||||
);
|
||||
|
||||
const { getFieldMetadataItemById } = useGetFieldMetadataItemById();
|
||||
|
||||
const fieldMetadataItem = isNonEmptyString(recordFilter?.fieldMetadataId)
|
||||
? getFieldMetadataItemById(recordFilter?.fieldMetadataId)
|
||||
: undefined;
|
||||
const { fieldMetadataItem } = useFieldMetadataItemById(
|
||||
recordFilter?.fieldMetadataId ?? '',
|
||||
);
|
||||
|
||||
const { getIcon } = useIcons();
|
||||
|
||||
|
||||
+5
-3
@@ -1,4 +1,4 @@
|
||||
import { useGetFieldMetadataItemById } from '@/object-metadata/hooks/useGetFieldMetadataItemById';
|
||||
import { useGetFieldMetadataItemByIdOrThrow } from '@/object-metadata/hooks/useGetFieldMetadataItemById';
|
||||
import { getFilterTypeFromFieldType } from '@/object-metadata/utils/formatFieldMetadataItemsAsFilterDefinitions';
|
||||
import { fieldMetadataItemIdUsedInDropdownComponentState } from '@/object-record/object-filter-dropdown/states/fieldMetadataItemIdUsedInDropdownComponentState';
|
||||
import { objectFilterDropdownCurrentRecordFilterComponentState } from '@/object-record/object-filter-dropdown/states/objectFilterDropdownCurrentRecordFilterComponentState';
|
||||
@@ -45,7 +45,8 @@ export const useSelectFieldUsedInAdvancedFilterDropdown = () => {
|
||||
|
||||
const { pushFocusItemToFocusStack } = usePushFocusItemToFocusStack();
|
||||
|
||||
const { getFieldMetadataItemById } = useGetFieldMetadataItemById();
|
||||
const { getFieldMetadataItemByIdOrThrow } =
|
||||
useGetFieldMetadataItemByIdOrThrow();
|
||||
|
||||
const setSubFieldNameUsedInDropdown = useSetRecoilComponentState(
|
||||
subFieldNameUsedInDropdownComponentState,
|
||||
@@ -64,7 +65,8 @@ export const useSelectFieldUsedInAdvancedFilterDropdown = () => {
|
||||
}: SelectFilterParams) => {
|
||||
setFieldMetadataItemIdUsedInDropdown(fieldMetadataItemId);
|
||||
|
||||
const fieldMetadataItem = getFieldMetadataItemById(fieldMetadataItemId);
|
||||
const { fieldMetadataItem } =
|
||||
getFieldMetadataItemByIdOrThrow(fieldMetadataItemId);
|
||||
|
||||
if (!isDefined(fieldMetadataItem)) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user