diff --git a/packages/twenty-front/src/modules/object-record/graphql/types/RecordGqlOperationFilter.ts b/packages/twenty-front/src/modules/object-record/graphql/types/RecordGqlOperationFilter.ts
index 66acadc80..fd6de3f70 100644
--- a/packages/twenty-front/src/modules/object-record/graphql/types/RecordGqlOperationFilter.ts
+++ b/packages/twenty-front/src/modules/object-record/graphql/types/RecordGqlOperationFilter.ts
@@ -9,6 +9,11 @@ export type UUIDFilter = {
is?: IsFilter;
};
+export type RelationFilter = {
+ is?: IsFilter;
+ in?: UUIDFilterValue[];
+};
+
export type BooleanFilter = {
eq?: boolean;
is?: IsFilter;
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/MultipleFiltersDropdownContent.tsx b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/MultipleFiltersDropdownContent.tsx
index 1bd909b72..cd49fd096 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/MultipleFiltersDropdownContent.tsx
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/MultipleFiltersDropdownContent.tsx
@@ -3,6 +3,7 @@ import { useRecoilValue } from 'recoil';
import { ObjectFilterDropdownSearchInput } from '@/object-record/object-filter-dropdown/components/ObjectFilterDropdownSearchInput';
import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/useFilterDropdown';
import { DropdownMenuSeparator } from '@/ui/layout/dropdown/components/DropdownMenuSeparator';
+import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
import { MultipleFiltersDropdownFilterOnFilterChangedEffect } from './MultipleFiltersDropdownFilterOnFilterChangedEffect';
import { ObjectFilterDropdownDateInput } from './ObjectFilterDropdownDateInput';
@@ -36,6 +37,11 @@ export const MultipleFiltersDropdownContent = ({
const selectedOperandInDropdown = useRecoilValue(
selectedOperandInDropdownState,
);
+ const isEmptyOperand =
+ selectedOperandInDropdown &&
+ [ViewFilterOperand.IsEmpty, ViewFilterOperand.IsNotEmpty].includes(
+ selectedOperandInDropdown,
+ );
return (
<>
@@ -43,6 +49,8 @@ export const MultipleFiltersDropdownContent = ({
) : isObjectFilterDropdownOperandSelectUnfolded ? (
+ ) : isEmptyOperand ? (
+
) : (
selectedOperandInDropdown && (
<>
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownOperandSelect.tsx b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownOperandSelect.tsx
index 46945d4d3..5f500b916 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownOperandSelect.tsx
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownOperandSelect.tsx
@@ -2,6 +2,7 @@ import { useRecoilValue } from 'recoil';
import { v4 } from 'uuid';
import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/useFilterDropdown';
+import { FilterDefinition } from '@/object-record/object-filter-dropdown/types/FilterDefinition';
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem';
import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
@@ -34,10 +35,27 @@ export const ObjectFilterDropdownOperandSelect = () => {
filterDefinitionUsedInDropdown?.type,
);
- const handleOperangeChange = (newOperand: ViewFilterOperand) => {
+ const handleOperandChange = (newOperand: ViewFilterOperand) => {
+ const isEmptyOperand = [
+ ViewFilterOperand.IsEmpty,
+ ViewFilterOperand.IsNotEmpty,
+ ].includes(newOperand);
+
setSelectedOperandInDropdown(newOperand);
setIsObjectFilterDropdownOperandSelectUnfolded(false);
+ if (isEmptyOperand) {
+ selectFilter?.({
+ id: v4(),
+ fieldMetadataId: filterDefinitionUsedInDropdown?.fieldMetadataId ?? '',
+ displayValue: '',
+ operand: newOperand,
+ value: '',
+ definition: filterDefinitionUsedInDropdown as FilterDefinition,
+ });
+ return;
+ }
+
if (
isDefined(filterDefinitionUsedInDropdown) &&
isDefined(selectedFilter)
@@ -63,7 +81,7 @@ export const ObjectFilterDropdownOperandSelect = () => {