From 3876cb8250ca34dcd2e67865d4287cc4650c4a81 Mon Sep 17 00:00:00 2001 From: Thomas Trompette Date: Thu, 20 Mar 2025 17:22:55 +0100 Subject: [PATCH] Separate workflow step details and run step details (#11069) Workflows step details in workflows and versions should be different from the node tab in run. For most cases, it was using the same component. But for forms, it will be a different one. This PR: - renames form action into formBuilder. formFiller is coming - put code into a separated folder - creates a new component for node details --- ...ommandMenuCloseAnimationCompleteCleanup.ts | 4 +- .../CommandMenuWorkflowRunViewStep.tsx | 5 +- .../getDefaultFunctionInputFromInputSchema.ts | 2 +- .../utils/getFunctionInputFromSourceCode.ts | 2 +- ...rgeDefaultFunctionInputAndFunctionInput.ts | 2 +- .../RightDrawerWorkflowViewStep.tsx | 22 --- .../components/WorkflowRunStepNodeDetail.tsx | 175 ++++++++++++++++++ .../components/WorkflowStepDetail.tsx | 44 +---- .../WorkflowActionServerlessFunction.tsx | 49 +++++ .../WorkflowEditActionServerlessFunction.tsx | 10 +- ...flowEditActionServerlessFunctionFields.tsx | 2 +- ...rkflowReadonlyActionServerlessFunction.tsx | 4 +- ...lowServerlessFunctionTabListComponentId.ts | 0 .../{ => code-action}/types/FunctionInput.ts | 0 .../types/WorkflowServerlessFunctionTabId.ts | 0 .../getWrongExportedFunctionMarkers.test.ts | 2 +- .../utils/__tests__/setNestedValue.test.ts | 2 +- .../utils/getWrongExportedFunctionMarkers.ts | 0 .../{ => code-action}/utils/setNestedValue.ts | 0 ....tsx => WorkflowEditActionFormBuilder.tsx} | 6 +- .../WorkflowEditActionFormFieldSettings.tsx | 2 +- .../WorkflowFormFieldSettingsByType.tsx | 2 +- ...WorkflowEditActionFormBuilder.stories.tsx} | 10 +- 23 files changed, 260 insertions(+), 85 deletions(-) delete mode 100644 packages/twenty-front/src/modules/workflow/workflow-steps/components/RightDrawerWorkflowViewStep.tsx create mode 100644 packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowRunStepNodeDetail.tsx create mode 100644 packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowActionServerlessFunction.tsx rename packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/{ => code-action}/components/WorkflowEditActionServerlessFunction.tsx (96%) rename packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/{ => code-action}/components/WorkflowEditActionServerlessFunctionFields.tsx (98%) rename packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/{ => code-action}/components/WorkflowReadonlyActionServerlessFunction.tsx (94%) rename packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/{ => code-action}/constants/WorkflowServerlessFunctionTabListComponentId.ts (100%) rename packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/{ => code-action}/types/FunctionInput.ts (100%) rename packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/{ => code-action}/types/WorkflowServerlessFunctionTabId.ts (100%) rename packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/{ => code-action}/utils/__tests__/getWrongExportedFunctionMarkers.test.ts (93%) rename packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/{ => code-action}/utils/__tests__/setNestedValue.test.ts (94%) rename packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/{ => code-action}/utils/getWrongExportedFunctionMarkers.ts (100%) rename packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/{ => code-action}/utils/setNestedValue.ts (100%) rename packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/{WorkflowEditActionForm.tsx => WorkflowEditActionFormBuilder.tsx} (98%) rename packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/__stories__/{WorkflowEditActionForm.stories.tsx => WorkflowEditActionFormBuilder.stories.tsx} (85%) diff --git a/packages/twenty-front/src/modules/command-menu/hooks/useCommandMenuCloseAnimationCompleteCleanup.ts b/packages/twenty-front/src/modules/command-menu/hooks/useCommandMenuCloseAnimationCompleteCleanup.ts index c8ec230ba44..66fe24d2093 100644 --- a/packages/twenty-front/src/modules/command-menu/hooks/useCommandMenuCloseAnimationCompleteCleanup.ts +++ b/packages/twenty-front/src/modules/command-menu/hooks/useCommandMenuCloseAnimationCompleteCleanup.ts @@ -21,8 +21,8 @@ import { activeTabIdComponentState } from '@/ui/layout/tab/states/activeTabIdCom import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope'; import { WORKFLOW_RUN_STEP_SIDE_PANEL_TAB_LIST_COMPONENT_ID } from '@/workflow/workflow-steps/constants/WorkflowRunStepSidePanelTabListComponentId'; import { WorkflowRunTabId } from '@/workflow/workflow-steps/types/WorkflowRunTabId'; -import { WORKFLOW_SERVERLESS_FUNCTION_TAB_LIST_COMPONENT_ID } from '@/workflow/workflow-steps/workflow-actions/constants/WorkflowServerlessFunctionTabListComponentId'; -import { WorkflowServerlessFunctionTabId } from '@/workflow/workflow-steps/workflow-actions/types/WorkflowServerlessFunctionTabId'; +import { WORKFLOW_SERVERLESS_FUNCTION_TAB_LIST_COMPONENT_ID } from '@/workflow/workflow-steps/workflow-actions/code-action/constants/WorkflowServerlessFunctionTabListComponentId'; +import { WorkflowServerlessFunctionTabId } from '@/workflow/workflow-steps/workflow-actions/code-action/types/WorkflowServerlessFunctionTabId'; import { useRecoilCallback } from 'recoil'; export const useCommandMenuCloseAnimationCompleteCleanup = () => { diff --git a/packages/twenty-front/src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStep.tsx b/packages/twenty-front/src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStep.tsx index e0139ef120d..3d914064cfd 100644 --- a/packages/twenty-front/src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStep.tsx +++ b/packages/twenty-front/src/modules/command-menu/pages/workflow/step/view-run/components/CommandMenuWorkflowRunViewStep.tsx @@ -7,8 +7,8 @@ import { useWorkflowRunIdOrThrow } from '@/workflow/hooks/useWorkflowRunIdOrThro import { WorkflowStepContextProvider } from '@/workflow/states/context/WorkflowStepContext'; import { useWorkflowSelectedNodeOrThrow } from '@/workflow/workflow-diagram/hooks/useWorkflowSelectedNodeOrThrow'; import { WorkflowRunStepInputDetail } from '@/workflow/workflow-steps/components/WorkflowRunStepInputDetail'; +import { WorkflowRunStepNodeDetail } from '@/workflow/workflow-steps/components/WorkflowRunStepNodeDetail'; import { WorkflowRunStepOutputDetail } from '@/workflow/workflow-steps/components/WorkflowRunStepOutputDetail'; -import { WorkflowStepDetail } from '@/workflow/workflow-steps/components/WorkflowStepDetail'; import { WORKFLOW_RUN_STEP_SIDE_PANEL_TAB_LIST_COMPONENT_ID } from '@/workflow/workflow-steps/constants/WorkflowRunStepSidePanelTabListComponentId'; import { WorkflowRunTabId, @@ -82,8 +82,7 @@ export const CommandMenuWorkflowRunViewStep = () => { /> {activeTabId === WorkflowRunTabId.NODE ? ( - { - const flow = useFlowOrThrow(); - const workflowSelectedNode = useWorkflowSelectedNodeOrThrow(); - - return ( - - - - ); -}; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowRunStepNodeDetail.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowRunStepNodeDetail.tsx new file mode 100644 index 00000000000..0648eccf4de --- /dev/null +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowRunStepNodeDetail.tsx @@ -0,0 +1,175 @@ +import { WorkflowAction, WorkflowTrigger } from '@/workflow/types/Workflow'; +import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; +import { getStepDefinitionOrThrow } from '@/workflow/utils/getStepDefinitionOrThrow'; +import { WorkflowActionServerlessFunction } from '@/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowActionServerlessFunction'; +import { WorkflowEditActionCreateRecord } from '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionCreateRecord'; +import { WorkflowEditActionDeleteRecord } from '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionDeleteRecord'; +import { WorkflowEditActionFindRecords } from '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionFindRecords'; +import { WorkflowEditActionSendEmail } from '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionSendEmail'; +import { WorkflowEditActionUpdateRecord } from '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionUpdateRecord'; +import { WorkflowEditTriggerCronForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerCronForm'; +import { WorkflowEditTriggerDatabaseEventForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm'; +import { WorkflowEditTriggerManualForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerManualForm'; +import { WorkflowEditTriggerWebhookForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm'; +import { isDefined } from 'twenty-shared'; + +type WorkflowRunStepNodeDetailProps = { + stepId: string; + trigger: WorkflowTrigger | null; + steps: Array | null; +}; + +export const WorkflowRunStepNodeDetail = ({ + stepId, + trigger, + steps, +}: WorkflowRunStepNodeDetailProps) => { + const stepDefinition = getStepDefinitionOrThrow({ + stepId, + trigger, + steps, + }); + + if (!isDefined(stepDefinition) || !isDefined(stepDefinition.definition)) { + return null; + } + + switch (stepDefinition.type) { + case 'trigger': { + switch (stepDefinition.definition.type) { + case 'DATABASE_EVENT': { + return ( + + ); + } + case 'MANUAL': { + return ( + + ); + } + case 'WEBHOOK': { + return ( + + ); + } + case 'CRON': { + return ( + + ); + } + } + + return assertUnreachable( + stepDefinition.definition, + `Expected the step to have an handler; ${JSON.stringify(stepDefinition)}`, + ); + } + case 'action': { + switch (stepDefinition.definition.type) { + case 'CODE': { + return ( + + ); + } + case 'SEND_EMAIL': { + return ( + + ); + } + case 'CREATE_RECORD': { + return ( + + ); + } + + case 'UPDATE_RECORD': { + return ( + + ); + } + + case 'DELETE_RECORD': { + return ( + + ); + } + + case 'FIND_RECORDS': { + return ( + + ); + } + + case 'FORM': { + // TODO: Implement form filler + return null; + } + } + } + } + + return assertUnreachable( + stepDefinition, + `Expected the step to have an handler; ${JSON.stringify(stepDefinition)}`, + ); +}; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepDetail.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepDetail.tsx index 3ff8fc3f8c8..3d7ad7be873 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepDetail.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepDetail.tsx @@ -1,35 +1,18 @@ import { WorkflowAction, WorkflowTrigger } from '@/workflow/types/Workflow'; import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; import { getStepDefinitionOrThrow } from '@/workflow/utils/getStepDefinitionOrThrow'; +import { WorkflowActionServerlessFunction } from '@/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowActionServerlessFunction'; import { WorkflowEditActionCreateRecord } from '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionCreateRecord'; import { WorkflowEditActionDeleteRecord } from '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionDeleteRecord'; import { WorkflowEditActionFindRecords } from '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionFindRecords'; import { WorkflowEditActionSendEmail } from '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionSendEmail'; import { WorkflowEditActionUpdateRecord } from '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionUpdateRecord'; -import { WorkflowEditActionForm } from '@/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionForm'; +import { WorkflowEditActionFormBuilder } from '@/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder'; import { WorkflowEditTriggerCronForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerCronForm'; import { WorkflowEditTriggerDatabaseEventForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm'; import { WorkflowEditTriggerManualForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerManualForm'; -import { Suspense, lazy } from 'react'; -import { isDefined } from 'twenty-shared'; -import { RightDrawerSkeletonLoader } from '~/loading/components/RightDrawerSkeletonLoader'; import { WorkflowEditTriggerWebhookForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm'; - -const WorkflowEditActionServerlessFunction = lazy(() => - import( - '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunction' - ).then((module) => ({ - default: module.WorkflowEditActionServerlessFunction, - })), -); - -const WorkflowReadonlyActionServerlessFunction = lazy(() => - import( - '@/workflow/workflow-steps/workflow-actions/components/WorkflowReadonlyActionServerlessFunction' - ).then((module) => ({ - default: module.WorkflowReadonlyActionServerlessFunction, - })), -); +import { isDefined } from 'twenty-shared'; type WorkflowStepDetailProps = { stepId: string; @@ -115,20 +98,11 @@ export const WorkflowStepDetail = ({ switch (stepDefinition.definition.type) { case 'CODE': { return ( - }> - {props.readonly ? ( - - ) : ( - - )} - + ); } case 'SEND_EMAIL': { @@ -182,7 +156,7 @@ export const WorkflowStepDetail = ({ case 'FORM': { return ( - void; + }; +}; + +const WorkflowEditActionServerlessFunction = lazy(() => + import( + '@/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowEditActionServerlessFunction' + ).then((module) => ({ + default: module.WorkflowEditActionServerlessFunction, + })), +); + +const WorkflowReadonlyActionServerlessFunction = lazy(() => + import( + '@/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowReadonlyActionServerlessFunction' + ).then((module) => ({ + default: module.WorkflowReadonlyActionServerlessFunction, + })), +); + +export const WorkflowActionServerlessFunction = ({ + action, + actionOptions, +}: WorkflowActionServerlessFunctionProps) => { + return ( + }> + {actionOptions.readonly ? ( + + ) : ( + + )} + + ); +}; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunction.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowEditActionServerlessFunction.tsx similarity index 96% rename from packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunction.tsx rename to packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowEditActionServerlessFunction.tsx index e011b37f95f..d48eb8afc34 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunction.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowEditActionServerlessFunction.tsx @@ -6,7 +6,7 @@ import { useWorkflowWithCurrentVersion } from '@/workflow/hooks/useWorkflowWithC import { workflowIdState } from '@/workflow/states/workflowIdState'; import { WorkflowCodeAction } from '@/workflow/types/Workflow'; import { WorkflowStepHeader } from '@/workflow/workflow-steps/components/WorkflowStepHeader'; -import { setNestedValue } from '@/workflow/workflow-steps/workflow-actions/utils/setNestedValue'; +import { setNestedValue } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/setNestedValue'; import { CmdEnterActionButton } from '@/action-menu/components/CmdEnterActionButton'; import { ServerlessFunctionExecutionResult } from '@/serverless-functions/components/ServerlessFunctionExecutionResult'; @@ -23,11 +23,11 @@ import { activeTabIdComponentState } from '@/ui/layout/tab/states/activeTabIdCom import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; import { serverlessFunctionTestDataFamilyState } from '@/workflow/states/serverlessFunctionTestDataFamilyState'; import { WorkflowStepBody } from '@/workflow/workflow-steps/components/WorkflowStepBody'; -import { WorkflowEditActionServerlessFunctionFields } from '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunctionFields'; -import { WORKFLOW_SERVERLESS_FUNCTION_TAB_LIST_COMPONENT_ID } from '@/workflow/workflow-steps/workflow-actions/constants/WorkflowServerlessFunctionTabListComponentId'; -import { WorkflowServerlessFunctionTabId } from '@/workflow/workflow-steps/workflow-actions/types/WorkflowServerlessFunctionTabId'; +import { WorkflowEditActionServerlessFunctionFields } from '@/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowEditActionServerlessFunctionFields'; +import { WORKFLOW_SERVERLESS_FUNCTION_TAB_LIST_COMPONENT_ID } from '@/workflow/workflow-steps/workflow-actions/code-action/constants/WorkflowServerlessFunctionTabListComponentId'; +import { WorkflowServerlessFunctionTabId } from '@/workflow/workflow-steps/workflow-actions/code-action/types/WorkflowServerlessFunctionTabId'; +import { getWrongExportedFunctionMarkers } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/getWrongExportedFunctionMarkers'; import { getActionIcon } from '@/workflow/workflow-steps/workflow-actions/utils/getActionIcon'; -import { getWrongExportedFunctionMarkers } from '@/workflow/workflow-steps/workflow-actions/utils/getWrongExportedFunctionMarkers'; import { WorkflowVariablePicker } from '@/workflow/workflow-variables/components/WorkflowVariablePicker'; import { useTheme } from '@emotion/react'; import styled from '@emotion/styled'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunctionFields.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowEditActionServerlessFunctionFields.tsx similarity index 98% rename from packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunctionFields.tsx rename to packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowEditActionServerlessFunctionFields.tsx index f357e13afeb..dfee3b3d8d6 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunctionFields.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowEditActionServerlessFunctionFields.tsx @@ -2,7 +2,7 @@ import { FormNestedFieldInputContainer } from '@/object-record/record-field/form import { FormTextFieldInput } from '@/object-record/record-field/form-types/components/FormTextFieldInput'; import { VariablePickerComponent } from '@/object-record/record-field/form-types/types/VariablePickerComponent'; import { InputLabel } from '@/ui/input/components/InputLabel'; -import { FunctionInput } from '@/workflow/workflow-steps/workflow-actions/types/FunctionInput'; +import { FunctionInput } from '@/workflow/workflow-steps/workflow-actions/code-action/types/FunctionInput'; import styled from '@emotion/styled'; import { isObject } from '@sniptt/guards'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowReadonlyActionServerlessFunction.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowReadonlyActionServerlessFunction.tsx similarity index 94% rename from packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowReadonlyActionServerlessFunction.tsx rename to packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowReadonlyActionServerlessFunction.tsx index d4257e146d0..a908c9625f1 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowReadonlyActionServerlessFunction.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowReadonlyActionServerlessFunction.tsx @@ -5,9 +5,9 @@ import { WorkflowStepHeader } from '@/workflow/workflow-steps/components/Workflo import { INDEX_FILE_PATH } from '@/serverless-functions/constants/IndexFilePath'; import { WorkflowStepBody } from '@/workflow/workflow-steps/components/WorkflowStepBody'; -import { WorkflowEditActionServerlessFunctionFields } from '@/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunctionFields'; +import { WorkflowEditActionServerlessFunctionFields } from '@/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowEditActionServerlessFunctionFields'; +import { getWrongExportedFunctionMarkers } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/getWrongExportedFunctionMarkers'; import { getActionIcon } from '@/workflow/workflow-steps/workflow-actions/utils/getActionIcon'; -import { getWrongExportedFunctionMarkers } from '@/workflow/workflow-steps/workflow-actions/utils/getWrongExportedFunctionMarkers'; import { useTheme } from '@emotion/react'; import styled from '@emotion/styled'; import { Monaco } from '@monaco-editor/react'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/constants/WorkflowServerlessFunctionTabListComponentId.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/constants/WorkflowServerlessFunctionTabListComponentId.ts similarity index 100% rename from packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/constants/WorkflowServerlessFunctionTabListComponentId.ts rename to packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/constants/WorkflowServerlessFunctionTabListComponentId.ts diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/types/FunctionInput.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/types/FunctionInput.ts similarity index 100% rename from packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/types/FunctionInput.ts rename to packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/types/FunctionInput.ts diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/types/WorkflowServerlessFunctionTabId.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/types/WorkflowServerlessFunctionTabId.ts similarity index 100% rename from packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/types/WorkflowServerlessFunctionTabId.ts rename to packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/types/WorkflowServerlessFunctionTabId.ts diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/__tests__/getWrongExportedFunctionMarkers.test.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/utils/__tests__/getWrongExportedFunctionMarkers.test.ts similarity index 93% rename from packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/__tests__/getWrongExportedFunctionMarkers.test.ts rename to packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/utils/__tests__/getWrongExportedFunctionMarkers.test.ts index a93a4b72543..4d566ec5319 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/__tests__/getWrongExportedFunctionMarkers.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/utils/__tests__/getWrongExportedFunctionMarkers.test.ts @@ -1,4 +1,4 @@ -import { getWrongExportedFunctionMarkers } from '@/workflow/workflow-steps/workflow-actions/utils/getWrongExportedFunctionMarkers'; +import { getWrongExportedFunctionMarkers } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/getWrongExportedFunctionMarkers'; describe('getWrongExportedFunctionMarkers', () => { it('should return marker when no exported function', () => { diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/__tests__/setNestedValue.test.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/utils/__tests__/setNestedValue.test.ts similarity index 94% rename from packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/__tests__/setNestedValue.test.ts rename to packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/utils/__tests__/setNestedValue.test.ts index 7fe11463e13..1c7084a5ac8 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/__tests__/setNestedValue.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/utils/__tests__/setNestedValue.test.ts @@ -1,4 +1,4 @@ -import { setNestedValue } from '@/workflow/workflow-steps/workflow-actions/utils/setNestedValue'; +import { setNestedValue } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/setNestedValue'; describe('setNestedValue', () => { it('should set nested value properly', () => { diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/getWrongExportedFunctionMarkers.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/utils/getWrongExportedFunctionMarkers.ts similarity index 100% rename from packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/getWrongExportedFunctionMarkers.ts rename to packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/utils/getWrongExportedFunctionMarkers.ts diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/setNestedValue.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/utils/setNestedValue.ts similarity index 100% rename from packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/utils/setNestedValue.ts rename to packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/code-action/utils/setNestedValue.ts diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionForm.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx similarity index 98% rename from packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionForm.tsx rename to packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx index 17fd6a606e0..9dde8a0574f 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionForm.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx @@ -24,7 +24,7 @@ import { useDebouncedCallback } from 'use-debounce'; import { v4 } from 'uuid'; -export type WorkflowEditActionFormProps = { +export type WorkflowEditActionFormBuilderProps = { action: WorkflowFormAction; actionOptions: | { @@ -99,10 +99,10 @@ const StyledAddFieldContainer = styled.div` gap: ${({ theme }) => theme.spacing(0.5)}; `; -export const WorkflowEditActionForm = ({ +export const WorkflowEditActionFormBuilder = ({ action, actionOptions, -}: WorkflowEditActionFormProps) => { +}: WorkflowEditActionFormBuilderProps) => { const theme = useTheme(); const { getIcon } = useIcons(); const { t } = useLingui(); diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormFieldSettings.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormFieldSettings.tsx index af2ccba480a..e7a474c8b1c 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormFieldSettings.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormFieldSettings.tsx @@ -1,7 +1,7 @@ import { FormFieldInputContainer } from '@/object-record/record-field/form-types/components/FormFieldInputContainer'; import { FormSelectFieldInput } from '@/object-record/record-field/form-types/components/FormSelectFieldInput'; import { InputLabel } from '@/ui/input/components/InputLabel'; -import { WorkflowFormActionField } from '@/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionForm'; +import { WorkflowFormActionField } from '@/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder'; import { WorkflowFormFieldSettingsByType } from '@/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsByType'; import { getDefaultFormFieldSettings } from '@/workflow/workflow-steps/workflow-actions/form-action/utils/getDefaultFormFieldSettings'; import { useTheme } from '@emotion/react'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsByType.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsByType.tsx index 795116a96ec..a1a10388226 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsByType.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowFormFieldSettingsByType.tsx @@ -1,4 +1,4 @@ -import { WorkflowFormActionField } from '@/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionForm'; +import { WorkflowFormActionField } from '@/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder'; import { assertUnreachable, FieldMetadataType } from 'twenty-shared'; import { WorkflowFormFieldSettingsNumber } from './WorkflowFormFieldSettingsNumber'; import { WorkflowFormFieldSettingsText } from './WorkflowFormFieldSettingsText'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/__stories__/WorkflowEditActionForm.stories.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/__stories__/WorkflowEditActionFormBuilder.stories.tsx similarity index 85% rename from packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/__stories__/WorkflowEditActionForm.stories.tsx rename to packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/__stories__/WorkflowEditActionFormBuilder.stories.tsx index df17867861b..f67b52d552b 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/__stories__/WorkflowEditActionForm.stories.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/__stories__/WorkflowEditActionFormBuilder.stories.tsx @@ -1,5 +1,5 @@ import { WorkflowFormAction } from '@/workflow/types/Workflow'; -import { WorkflowEditActionForm } from '@/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionForm'; +import { WorkflowEditActionFormBuilder } from '@/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder'; import { Meta, StoryObj } from '@storybook/react'; import { expect, fn, within } from '@storybook/test'; import { FieldMetadataType } from 'twenty-shared'; @@ -43,9 +43,9 @@ const DEFAULT_ACTION = { }, } satisfies WorkflowFormAction; -const meta: Meta = { - title: 'Modules/Workflow/Actions/Form/WorkflowEditActionForm', - component: WorkflowEditActionForm, +const meta: Meta = { + title: 'Modules/Workflow/Actions/Form/WorkflowEditActionFormBuilder', + component: WorkflowEditActionFormBuilder, parameters: { msw: graphqlMocks, }, @@ -62,7 +62,7 @@ const meta: Meta = { export default meta; -type Story = StoryObj; +type Story = StoryObj; export const Default: Story = { args: {