diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
index 961751f815..0429bbc584 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
@@ -330,7 +330,9 @@ export const WorkflowEditActionFormBuilder = ({
.placeholder}
- {field.type === 'RECORD' && (
+ {(field.type === 'RECORD' ||
+ field.type === 'SELECT' ||
+ field.type === 'MULTI_SELECT') && (
);
case FieldMetadataType.SELECT:
+ case FieldMetadataType.MULTI_SELECT:
return (
);
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx
index 0f662fddf8..ce6cf6ffcb 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsSelect.tsx
@@ -9,7 +9,6 @@ import { getDefaultFormFieldSettings } from '@/workflow/workflow-steps/workflow-
import { t } from '@lingui/core/macro';
import { styled } from '@linaria/react';
import camelCase from 'lodash.camelcase';
-import { FieldMetadataType } from 'twenty-shared/types';
import { themeCssVariables } from 'twenty-ui/theme-constants';
type WorkflowFormFieldSettingsSelectProps = {
@@ -50,14 +49,14 @@ export const WorkflowFormFieldSettingsSelect = ({
return acc.concat(
objectMetadataItem.fields
.filter(
- (field) =>
- field.isActive &&
- !isHiddenSystemField(field) &&
- field.type === FieldMetadataType.SELECT,
+ (objectField) =>
+ objectField.isActive &&
+ !isHiddenSystemField(objectField) &&
+ objectField.type === field.type,
)
- .map((field) => ({
- label: `${objectMetadataItem.labelSingular} > ${field.label}`,
- value: field.id,
+ .map((objectField) => ({
+ label: `${objectMetadataItem.labelSingular} > ${objectField.label}`,
+ value: objectField.id,
})),
);
},
@@ -78,9 +77,7 @@ export const WorkflowFormFieldSettingsSelect = ({
});
}}
defaultValue={field.label}
- placeholder={
- getDefaultFormFieldSettings(FieldMetadataType.SELECT).label
- }
+ placeholder={getDefaultFormFieldSettings(field.type).label}
/>
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/constants/FormSelectFieldTypeOptions.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/constants/FormSelectFieldTypeOptions.ts
index 6fb467d27e..7330c1f68b 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/constants/FormSelectFieldTypeOptions.ts
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/constants/FormSelectFieldTypeOptions.ts
@@ -6,6 +6,7 @@ import {
IllustrationIconNumbers,
IllustrationIconOneToMany,
IllustrationIconTag,
+ IllustrationIconTags,
IllustrationIconText,
} from 'twenty-ui/display';
import { type SelectOption } from 'twenty-ui/input';
@@ -37,4 +38,9 @@ export const FORM_SELECT_FIELD_TYPE_OPTIONS: SelectOption
value: FieldMetadataType.SELECT,
Icon: IllustrationIconTag,
},
+ {
+ label: 'Multi-Select',
+ value: FieldMetadataType.MULTI_SELECT,
+ Icon: IllustrationIconTags,
+ },
];
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/types/WorkflowFormFieldType.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/types/WorkflowFormFieldType.ts
index 0aada5a1ff..0d021f4f41 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/types/WorkflowFormFieldType.ts
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/types/WorkflowFormFieldType.ts
@@ -5,4 +5,5 @@ export type WorkflowFormFieldType =
| FieldMetadataType.NUMBER
| FieldMetadataType.DATE
| FieldMetadataType.SELECT
+ | FieldMetadataType.MULTI_SELECT
| 'RECORD';
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/utils/__tests__/getDefaultFormFieldSettings.test.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/utils/__tests__/getDefaultFormFieldSettings.test.ts
index e58f90500a..72fa2a6445 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/utils/__tests__/getDefaultFormFieldSettings.test.ts
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/utils/__tests__/getDefaultFormFieldSettings.test.ts
@@ -54,6 +54,20 @@ describe('getDefaultFormFieldSettings', () => {
});
});
+ it('should return correct default settings for MULTI_SELECT field type', () => {
+ const result = getDefaultFormFieldSettings(FieldMetadataType.MULTI_SELECT);
+ expect(result).toEqual({
+ id: 'test-uuid-123',
+ name: 'multiSelect',
+ label: 'Multi-Select',
+ placeholder: 'Choose values',
+ settings: {
+ selectType: 'EXISTING_FIELD',
+ selectedFieldId: undefined,
+ },
+ });
+ });
+
it('should generate unique UUID for each call', () => {
getDefaultFormFieldSettings(FieldMetadataType.TEXT);
getDefaultFormFieldSettings(FieldMetadataType.NUMBER);
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/utils/getDefaultFormFieldSettings.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/utils/getDefaultFormFieldSettings.ts
index b10fd51d9f..eebd4dc078 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/utils/getDefaultFormFieldSettings.ts
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/utils/getDefaultFormFieldSettings.ts
@@ -47,6 +47,17 @@ export const getDefaultFormFieldSettings = (type: WorkflowFormFieldType) => {
selectedFieldId: undefined,
},
};
+ case FieldMetadataType.MULTI_SELECT:
+ return {
+ id: v4(),
+ name: 'multiSelect',
+ label: 'Multi-Select',
+ placeholder: 'Choose values',
+ settings: {
+ selectType: 'EXISTING_FIELD',
+ selectedFieldId: undefined,
+ },
+ };
default:
assertUnreachable(type);
}
diff --git a/packages/twenty-shared/src/workflow/schemas/form-action-settings-schema.ts b/packages/twenty-shared/src/workflow/schemas/form-action-settings-schema.ts
index 149afb1b48..a529afb4e7 100644
--- a/packages/twenty-shared/src/workflow/schemas/form-action-settings-schema.ts
+++ b/packages/twenty-shared/src/workflow/schemas/form-action-settings-schema.ts
@@ -14,6 +14,7 @@ export const workflowFormActionSettingsSchema =
z.literal(FieldMetadataType.NUMBER),
z.literal(FieldMetadataType.DATE),
z.literal(FieldMetadataType.SELECT),
+ z.literal(FieldMetadataType.MULTI_SELECT),
z.literal('RECORD'),
]),
placeholder: z.string().optional(),