diff --git a/src/designer/elsa-workflows-studio/src/components.d.ts b/src/designer/elsa-workflows-studio/src/components.d.ts index 750507a55..536d2dc48 100644 --- a/src/designer/elsa-workflows-studio/src/components.d.ts +++ b/src/designer/elsa-workflows-studio/src/components.d.ts @@ -87,6 +87,7 @@ export namespace Components { } interface ElsaWorkflowPublishButton { "publishing": boolean; + "serverUrl": string; "workflowDefinition": WorkflowDefinition; } interface ElsaWorkflowSettingsModal { @@ -301,6 +302,7 @@ declare namespace LocalJSX { "onPublishClicked"?: (event: CustomEvent) => void; "onUnPublishClicked"?: (event: CustomEvent) => void; "publishing"?: boolean; + "serverUrl"?: string; "workflowDefinition"?: WorkflowDefinition; } interface ElsaWorkflowSettingsModal { diff --git a/src/designer/elsa-workflows-studio/src/components/editors/workflow-editor/elsa-workflow-publish-button/elsa-workflow-publish-button.tsx b/src/designer/elsa-workflows-studio/src/components/editors/workflow-editor/elsa-workflow-publish-button/elsa-workflow-publish-button.tsx index 4599d6f6a..7b33e60e7 100644 --- a/src/designer/elsa-workflows-studio/src/components/editors/workflow-editor/elsa-workflow-publish-button/elsa-workflow-publish-button.tsx +++ b/src/designer/elsa-workflows-studio/src/components/editors/workflow-editor/elsa-workflow-publish-button/elsa-workflow-publish-button.tsx @@ -1,7 +1,11 @@ import {Component, Host, h, Prop, State, Event, EventEmitter, Watch} from '@stencil/core'; import {enter, leave, toggle} from 'el-transition' import {registerClickOutside} from "stencil-click-outside"; -import {ActivityModel, WorkflowDefinition} from "../../../../models"; +import {ActivityModel, VersionOptions, WorkflowDefinition} from "../../../../models"; +import {createElsaClient} from "../../../../services/elsa-client"; +import Tunnel, {WorkflowEditorState} from '../../../data/workflow-editor'; +import {ElsaTextProperty} from "../../properties/elsa-text-property/elsa-text-property"; +import {downloadFromBlob, downloadFromText} from "../../../../utils/download"; @Component({ tag: 'elsa-workflow-publish-button', @@ -12,6 +16,7 @@ export class ElsaWorkflowPublishButton { @Prop() workflowDefinition: WorkflowDefinition; @Prop() publishing: boolean; + @Prop({attribute: 'server-url', reflect: true}) serverUrl: string; @Event({bubbles: true}) publishClicked: EventEmitter; @Event({bubbles: true}) unPublishClicked: EventEmitter; @@ -34,6 +39,16 @@ export class ElsaWorkflowPublishButton { this.unPublishClicked.emit(); } + async onExportClick(e: Event) { + e.preventDefault(); + + const client = createElsaClient(this.serverUrl); + const workflowDefinition = this.workflowDefinition; + const versionOptions: VersionOptions = {version: workflowDefinition.version}; + const response = await client.workflowDefinitionsApi.export(workflowDefinition.definitionId, versionOptions); + downloadFromBlob(response.data, { contentType: 'application/json', fileName: response.fileName }); + } + render() { return ( registerClickOutside(this, el, this.closeMenu)}> @@ -58,7 +73,7 @@ export class ElsaWorkflowPublishButton {