Add filter fields on update record trigger (#12354)
Fixes https://github.com/twentyhq/core-team-issues/issues/928 <img width="503" alt="Capture d’écran 2025-05-28 à 15 04 08" src="https://github.com/user-attachments/assets/b83ceced-4b3a-454c-83c1-1176f6836d96" />
This commit is contained in:
+10
-34
@@ -5,8 +5,9 @@ import { useEffect, useState } from 'react';
|
||||
|
||||
import { formatFieldMetadataItemAsFieldDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition';
|
||||
import { FormFieldInput } from '@/object-record/record-field/components/FormFieldInput';
|
||||
import { FormMultiSelectFieldInput } from '@/object-record/record-field/form-types/components/FormMultiSelectFieldInput';
|
||||
import { FormSingleRecordPicker } from '@/object-record/record-field/form-types/components/FormSingleRecordPicker';
|
||||
import { WorkflowFieldsMultiSelect } from '@/workflow/components/WorkflowEditUpdateEventFieldsMultiSelect';
|
||||
import { SUPPORTED_FIELD_METADATA_TYPES } from '@/workflow/constants/SupportedFieldMetadataTypes';
|
||||
import { WorkflowStepBody } from '@/workflow/workflow-steps/components/WorkflowStepBody';
|
||||
import { WorkflowStepHeader } from '@/workflow/workflow-steps/components/WorkflowStepHeader';
|
||||
import { useActionHeaderTypeOrThrow } from '@/workflow/workflow-steps/workflow-actions/hooks/useActionHeaderTypeOrThrow';
|
||||
@@ -18,7 +19,6 @@ import { HorizontalSeparator, useIcons } from 'twenty-ui/display';
|
||||
import { SelectOption } from 'twenty-ui/input';
|
||||
import { JsonValue } from 'type-fest';
|
||||
import { useDebouncedCallback } from 'use-debounce';
|
||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||
|
||||
type WorkflowEditActionUpdateRecordProps = {
|
||||
action: WorkflowUpdateRecordAction;
|
||||
@@ -39,24 +39,6 @@ type UpdateRecordFormData = {
|
||||
[field: string]: unknown;
|
||||
};
|
||||
|
||||
const AVAILABLE_FIELD_METADATA_TYPES = [
|
||||
FieldMetadataType.TEXT,
|
||||
FieldMetadataType.NUMBER,
|
||||
FieldMetadataType.DATE,
|
||||
FieldMetadataType.BOOLEAN,
|
||||
FieldMetadataType.SELECT,
|
||||
FieldMetadataType.MULTI_SELECT,
|
||||
FieldMetadataType.EMAILS,
|
||||
FieldMetadataType.LINKS,
|
||||
FieldMetadataType.FULL_NAME,
|
||||
FieldMetadataType.ADDRESS,
|
||||
FieldMetadataType.PHONES,
|
||||
FieldMetadataType.CURRENCY,
|
||||
FieldMetadataType.DATE_TIME,
|
||||
FieldMetadataType.RAW_JSON,
|
||||
FieldMetadataType.UUID,
|
||||
];
|
||||
|
||||
export const WorkflowEditActionUpdateRecord = ({
|
||||
action,
|
||||
actionOptions,
|
||||
@@ -106,7 +88,7 @@ export const WorkflowEditActionUpdateRecord = ({
|
||||
(fieldMetadataItem) =>
|
||||
!fieldMetadataItem.isSystem &&
|
||||
fieldMetadataItem.isActive &&
|
||||
AVAILABLE_FIELD_METADATA_TYPES.includes(fieldMetadataItem.type),
|
||||
SUPPORTED_FIELD_METADATA_TYPES.includes(fieldMetadataItem.type),
|
||||
)
|
||||
.sort((fieldMetadataItemA, fieldMetadataItemB) =>
|
||||
fieldMetadataItemA.name.localeCompare(fieldMetadataItemB.name),
|
||||
@@ -222,22 +204,16 @@ export const WorkflowEditActionUpdateRecord = ({
|
||||
/>
|
||||
)}
|
||||
|
||||
{isDefined(inlineFieldDefinitions) && (
|
||||
<FormMultiSelectFieldInput
|
||||
testId="workflow-edit-action-record-update-fields-to-update"
|
||||
{isDefined(selectedObjectMetadataItem) && (
|
||||
<WorkflowFieldsMultiSelect
|
||||
label="Fields to update"
|
||||
defaultValue={formData.fieldsToUpdate}
|
||||
options={inlineFieldDefinitions.map((field) => ({
|
||||
label: field.label,
|
||||
value: field.metadata.fieldName,
|
||||
icon: getIcon(field.iconName),
|
||||
color: 'gray',
|
||||
}))}
|
||||
onChange={(fieldsToUpdate) =>
|
||||
placeholder="Select fields to update"
|
||||
objectMetadataItem={selectedObjectMetadataItem}
|
||||
handleFieldsChange={(fieldsToUpdate) =>
|
||||
handleFieldChange('fieldsToUpdate', fieldsToUpdate)
|
||||
}
|
||||
placeholder="Select fields to update"
|
||||
readonly={isFormDisabled}
|
||||
readonly={isFormDisabled ?? false}
|
||||
defaultFields={formData.fieldsToUpdate}
|
||||
/>
|
||||
)}
|
||||
|
||||
|
||||
+3
-9
@@ -119,9 +119,7 @@ export const DisabledWithEmptyValues: Story = {
|
||||
expect(openRecordSelectButton).not.toBeInTheDocument();
|
||||
|
||||
const firstSelectedUpdatableField = await within(
|
||||
await canvas.findByTestId(
|
||||
'workflow-edit-action-record-update-fields-to-update',
|
||||
),
|
||||
await canvas.findByTestId('workflow-fields-multi-select'),
|
||||
).findByText('Creation date');
|
||||
|
||||
await userEvent.click(firstSelectedUpdatableField);
|
||||
@@ -189,9 +187,7 @@ export const DisabledWithDefaultStaticValues: Story = {
|
||||
expect(openRecordSelectButton).not.toBeInTheDocument();
|
||||
|
||||
const firstSelectedUpdatableField = await within(
|
||||
await canvas.findByTestId(
|
||||
'workflow-edit-action-record-update-fields-to-update',
|
||||
),
|
||||
await canvas.findByTestId('workflow-fields-multi-select'),
|
||||
).findByText('Creation date');
|
||||
|
||||
await userEvent.click(firstSelectedUpdatableField);
|
||||
@@ -253,9 +249,7 @@ export const DisabledWithDefaultVariableValues: Story = {
|
||||
expect(openRecordSelectButton).not.toBeInTheDocument();
|
||||
|
||||
const firstSelectedUpdatableField = await within(
|
||||
await canvas.findByTestId(
|
||||
'workflow-edit-action-record-update-fields-to-update',
|
||||
),
|
||||
await canvas.findByTestId('workflow-fields-multi-select'),
|
||||
).findByText('Creation date');
|
||||
|
||||
await userEvent.click(firstSelectedUpdatableField);
|
||||
|
||||
Reference in New Issue
Block a user