diff --git a/src/designer/elsa-workflows-studio/src/components.d.ts b/src/designer/elsa-workflows-studio/src/components.d.ts index 79f30ae4d..0cb3f892b 100644 --- a/src/designer/elsa-workflows-studio/src/components.d.ts +++ b/src/designer/elsa-workflows-studio/src/components.d.ts @@ -249,6 +249,7 @@ export namespace Components { "exportWorkflow": () => Promise; "getServerUrl": () => Promise; "getWorkflowDefinitionId": () => Promise; + "history": RouterHistory; "importWorkflow": (file: File) => Promise; "monacoLibPath": string; "serverUrl": string; @@ -906,6 +907,7 @@ declare namespace LocalJSX { } interface ElsaWorkflowDefinitionEditorScreen { "culture"?: string; + "history"?: RouterHistory; "monacoLibPath"?: string; "onWorkflowSaved"?: (event: CustomEvent) => void; "serverUrl"?: string; diff --git a/src/designer/elsa-workflows-studio/src/components/screens/workflow-definition-editor/elsa-workflow-definition-editor-screen/elsa-workflow-definition-editor-screen.tsx b/src/designer/elsa-workflows-studio/src/components/screens/workflow-definition-editor/elsa-workflow-definition-editor-screen/elsa-workflow-definition-editor-screen.tsx index d642957c6..4e3b8e64c 100644 --- a/src/designer/elsa-workflows-studio/src/components/screens/workflow-definition-editor/elsa-workflow-definition-editor-screen/elsa-workflow-definition-editor-screen.tsx +++ b/src/designer/elsa-workflows-studio/src/components/screens/workflow-definition-editor/elsa-workflow-definition-editor-screen/elsa-workflow-definition-editor-screen.tsx @@ -1,4 +1,5 @@ import {Component, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch} from '@stencil/core'; +import { RouterHistory, injectHistory } from '@stencil/router'; import { ActivityDefinition, ActivityDescriptor, @@ -33,6 +34,7 @@ export class ElsaWorkflowDefinitionEditorScreen { @Prop({attribute: 'server-url', reflect: true}) serverUrl: string; @Prop({attribute: 'monaco-lib-path', reflect: true}) monacoLibPath: string; @Prop() culture: string; + @Prop() history: RouterHistory; @State() workflowDefinition: WorkflowDefinition; @State() workflowModel: WorkflowModel; @State() publishing: boolean; @@ -56,7 +58,7 @@ export class ElsaWorkflowDefinitionEditorScreen { x: 0, y: 0, activity: null, - }; + }; i18next: i18n; el: HTMLElement; @@ -209,6 +211,7 @@ export class ElsaWorkflowDefinitionEditorScreen { const client = createElsaClient(this.serverUrl); let workflowDefinition = this.workflowDefinition; + const isNew = typeof workflowDefinition.definitionId === 'undefined' && typeof this.workflowDefinitionId === 'undefined'; const request: SaveWorkflowDefinitionRequest = { workflowDefinitionId: workflowDefinition.definitionId || this.workflowDefinitionId, @@ -257,6 +260,9 @@ export class ElsaWorkflowDefinitionEditorScreen { this.publishing = false; setTimeout(() => this.saved = false, 500); this.workflowSaved.emit(workflowDefinition); + if (isNew) { + this.history.push(`/workflow-definitions/${workflowDefinition.definitionId}`, {}); + } } catch (e) { console.error(e); this.saving = false; @@ -328,7 +334,7 @@ export class ElsaWorkflowDefinitionEditorScreen { handleConnectionContextMenuChange(state: ActivityContextMenuState) { this.connectionContextMenuState = state; - } + } onShowWorkflowSettingsClick() { eventBus.emit(EventTypes.ShowWorkflowSettings); @@ -488,7 +494,7 @@ export class ElsaWorkflowDefinitionEditorScreen { renderConnectionContextMenu() { const t = this.t; - + return
- } + } renderActivityPicker() { return ; @@ -605,4 +611,5 @@ export class ElsaWorkflowDefinitionEditorScreen { />); } } +injectHistory(ElsaWorkflowDefinitionEditorScreen); DashboardTunnel.injectProps(ElsaWorkflowDefinitionEditorScreen, ['serverUrl', 'culture', 'monacoLibPath']);