| import '@material/mwc-dialog/mwc-dialog.js'; |
| import '@material/web/button/text-button.js'; |
| import '@material/web/button/filled-button.js'; |
| import './WorkflowEditor.js'; |
| |
| import {css, html, LitElement} from 'lit'; |
| import {createRef, ref} from 'lit/directives/ref.js'; |
| |
| import * as pb from '../../proto/main_pb.js'; |
| |
| export default class WFAddDialog extends LitElement { |
| static properties = { |
| open: {type: Boolean}, |
| }; |
| |
| static styles = css` |
| :host { |
| --mdc-dialog-content-ink-color: var(--mdc-theme-on-surface, #000); |
| } |
| `; |
| |
| workflowEditorRef = createRef(); |
| |
| constructor() { |
| super(); |
| this.open = false; |
| } |
| |
| render() { |
| return html` |
| <mwc-dialog |
| ?open=${this.open} |
| @opening=${this._openingDialog} |
| @closing=${this._closingDialog} |
| @closed=${this._closedDialog}> |
| <wf-workflow-editor ${ref(this.workflowEditorRef)}> |
| </wf-workflow-editor> |
| <md-filled-button |
| slot="primaryAction" |
| label="Add" |
| @click=${this._save}> |
| </md-filled-button> |
| <md-text-button |
| slot="secondaryAction" |
| dialogAction="cancel" |
| label="Cancel"> |
| </md-text-button> |
| </mwc-dialog> |
| `; |
| } |
| |
| firstUpdated() { |
| this._resetWorkflow(); |
| } |
| |
| _resetWorkflow() { |
| this.workflowEditorRef.value.workflow = this._defaultWorkflow(); |
| } |
| |
| _getWorkflow() { |
| return this.workflowEditorRef.value.workflow; |
| } |
| |
| _defaultWorkflow() { |
| let wf = new pb.workflows.Workflow(); |
| let action = new pb.workflows.Action(); |
| let rAction = new pb.workflows.Action.ReplyWithCRAction(); |
| action.setReplyWithCrAction(rAction); |
| wf.addActions(action); |
| return wf; |
| } |
| |
| _openingDialog() { |
| this.open = true; |
| } |
| |
| _closingDialog() { |
| this.open = false; |
| } |
| |
| _closedDialog(e) { |
| if (e.detail?.action === 'cancel') this._resetWorkflow(); |
| } |
| |
| _save() { |
| const success = this.workflowEditorRef.value.save(); |
| if (success) { |
| this.open = false; |
| this._resetWorkflow(); |
| } |
| } |
| } |
| window.customElements.define('wf-add-dialog', WFAddDialog); |