diff --git a/packages/twenty-front/src/modules/workflow/components/WorkflowEditUpdateEventFieldsMultiSelect.tsx b/packages/twenty-front/src/modules/workflow/components/WorkflowEditUpdateEventFieldsMultiSelect.tsx index 2fff59971b..f610a52a87 100644 --- a/packages/twenty-front/src/modules/workflow/components/WorkflowEditUpdateEventFieldsMultiSelect.tsx +++ b/packages/twenty-front/src/modules/workflow/components/WorkflowEditUpdateEventFieldsMultiSelect.tsx @@ -24,7 +24,7 @@ export const WorkflowFieldsMultiSelect = ({ handleFieldsChange: (field: FieldMultiSelectValue | string) => void; readonly: boolean; defaultFields: string[] | undefined | null; - actionType: 'UPDATE_RECORD' | 'UPSERT_RECORD'; + actionType: 'UPDATE_RECORD' | 'UPSERT_RECORD' | 'DATABASE_EVENT'; hint?: string; }) => { const { getIcon } = useIcons(); diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/__tests__/shouldDisplayFormField.test.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/__tests__/shouldDisplayFormField.test.ts index 98a13a32c6..81f3f2165e 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/__tests__/shouldDisplayFormField.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/__tests__/shouldDisplayFormField.test.ts @@ -98,6 +98,50 @@ describe('shouldDisplayFormField', () => { expect(result).toBe(true); }); + it('returns false for UPDATE_RECORD with non UI editable field', () => { + const field = { ...baseField, isUIEditable: false } as FieldMetadataItem; + const result = shouldDisplayFormField({ + fieldMetadataItem: field, + actionType: 'UPDATE_RECORD', + }); + expect(result).toBe(false); + }); + + it('returns true for DATABASE_EVENT with non UI editable field', () => { + const field = { ...baseField, isUIEditable: false } as FieldMetadataItem; + const result = shouldDisplayFormField({ + fieldMetadataItem: field, + actionType: 'DATABASE_EVENT', + }); + expect(result).toBe(true); + }); + + it('returns false for DATABASE_EVENT with hidden system field', () => { + const field = { + ...baseField, + isSystem: true, + name: 'position', + } as FieldMetadataItem; + const result = shouldDisplayFormField({ + fieldMetadataItem: field, + actionType: 'DATABASE_EVENT', + }); + expect(result).toBe(false); + }); + + it('returns false for DATABASE_EVENT with RELATION not MANY_TO_ONE', () => { + const field = { + ...baseField, + type: FieldMetadataType.RELATION, + settings: { relationType: 'ONE_TO_MANY' }, + } as FieldMetadataItem; + const result = shouldDisplayFormField({ + fieldMetadataItem: field, + actionType: 'DATABASE_EVENT', + }); + expect(result).toBe(false); + }); + it('throws error on unsupported action', () => { expect(() => shouldDisplayFormField({ diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/shouldDisplayFormField.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/shouldDisplayFormField.ts index 3b8856e67b..648ce5b239 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/shouldDisplayFormField.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/shouldDisplayFormField.ts @@ -1,6 +1,9 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; -import { type WorkflowActionType } from '@/workflow/types/Workflow'; +import { + type WorkflowActionType, + type WorkflowTriggerType, +} from '@/workflow/types/Workflow'; import { CustomError } from 'twenty-shared/utils'; import { FieldMetadataType } from '~/generated-metadata/graphql'; @@ -31,7 +34,7 @@ export const shouldDisplayFormField = ({ actionType, }: { fieldMetadataItem: FieldMetadataItem; - actionType: WorkflowActionType; + actionType: WorkflowActionType | WorkflowTriggerType; }) => { if (!SUPPORTED_FORM_FIELD_TYPES.includes(fieldMetadataItem.type)) { return false; @@ -67,6 +70,12 @@ export const shouldDisplayFormField = ({ (!isHiddenSystemField(fieldMetadataItem) || isIdField) && fieldMetadataItem.isActive ); + case 'DATABASE_EVENT': + return ( + !isNotSupportedRelation && + !isHiddenSystemField(fieldMetadataItem) && + fieldMetadataItem.isActive + ); default: throw new CustomError( `Action "${actionType}" is not supported`, diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm.tsx b/packages/twenty-front/src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm.tsx index a0b46e883a..7a140ffca2 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm.tsx @@ -266,7 +266,7 @@ export const WorkflowEditTriggerDatabaseEventForm = ({ handleFieldsChange={handleFieldsChange} readonly={triggerOptions.readonly ?? false} defaultFields={trigger.settings.fields} - actionType="UPDATE_RECORD" + actionType="DATABASE_EVENT" /> )}