From 5b5963084bd2090e4cbae0f8eb7564ec05f1c2d1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 1 May 2021 21:12:19 -0700 Subject: [PATCH 1/3] Close new automatin dialog before next step --- src/components/ha-blueprint-picker.ts | 4 +--- .../automation/dialog-new-automation.ts | 23 ++++++++++++------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/components/ha-blueprint-picker.ts b/src/components/ha-blueprint-picker.ts index 716d85ba176d..954274518b59 100644 --- a/src/components/ha-blueprint-picker.ts +++ b/src/components/ha-blueprint-picker.ts @@ -108,11 +108,9 @@ class HaBluePrintPicker extends LitElement { min-width: 200px; display: block; } - paper-listbox { - min-width: 200px; - } paper-item { cursor: pointer; + min-width: 200px; } `; } diff --git a/src/panels/config/automation/dialog-new-automation.ts b/src/panels/config/automation/dialog-new-automation.ts index 3815eee8b018..a70b5372143a 100644 --- a/src/panels/config/automation/dialog-new-automation.ts +++ b/src/panels/config/automation/dialog-new-automation.ts @@ -11,6 +11,7 @@ import { } from "lit-element"; import { isComponentLoaded } from "../../../common/config/is_component_loaded"; import { fireEvent } from "../../../common/dom/fire_event"; +import { nextRender } from "../../../common/util/render-status"; import "../../../components/ha-blueprint-picker"; import "../../../components/ha-card"; import "../../../components/ha-circular-progress"; @@ -33,9 +34,13 @@ class DialogNewAutomation extends LitElement { this._opened = true; } - public closeDialog(): void { + public async closeDialog(): Promise { + if (!this._opened) { + return; + } this._opened = false; fireEvent(this, "dialog-closed", { dialog: this.localName }); + await nextRender(); } protected render(): TemplateResult { @@ -106,23 +111,25 @@ class DialogNewAutomation extends LitElement { `; } - private _thingTalk() { - this.closeDialog(); + private async _thingTalk() { + const input = this.shadowRoot!.querySelector("paper-input")! + .value as string; + await this.closeDialog(); showThingtalkDialog(this, { callback: (config: Partial | undefined) => showAutomationEditor(this, config), - input: this.shadowRoot!.querySelector("paper-input")!.value as string, + input, }); } - private _blueprintPicked(ev: CustomEvent) { + private async _blueprintPicked(ev: CustomEvent) { + await this.closeDialog(); showAutomationEditor(this, { use_blueprint: { path: ev.detail.value } }); - this.closeDialog(); } - private _blank() { + private async _blank() { + await this.closeDialog(); showAutomationEditor(this); - this.closeDialog(); } static get styles(): CSSResult[] { From 67a2f2a3570eb97fe62d6c270bf57de5e730ed8e Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Sun, 2 May 2021 12:36:20 +0200 Subject: [PATCH 2/3] Update dialog-thingtalk.ts --- .../automation/thingtalk/dialog-thingtalk.ts | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/panels/config/automation/thingtalk/dialog-thingtalk.ts b/src/panels/config/automation/thingtalk/dialog-thingtalk.ts index 5c09ed45cd66..ceaa195a7866 100644 --- a/src/panels/config/automation/thingtalk/dialog-thingtalk.ts +++ b/src/panels/config/automation/thingtalk/dialog-thingtalk.ts @@ -13,6 +13,7 @@ import { query, TemplateResult, } from "lit-element"; +import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/dialog/ha-paper-dialog"; import "../../../../components/ha-circular-progress"; import type { AutomationConfig } from "../../../../data/automation"; @@ -67,6 +68,15 @@ class DialogThingtalk extends LitElement { } } + public closeDialog() { + this._placeholders = undefined; + if (this._input) { + this._input.value = null; + } + this._opened = false; + fireEvent(this, "dialog-closed", { dialog: this.localName }); + } + protected render(): TemplateResult { if (!this._params) { return html``; @@ -225,25 +235,17 @@ class DialogThingtalk extends LitElement { private _sendConfig(input, config) { this._params!.callback({ alias: input, ...config }); - this._closeDialog(); + this.closeDialog(); } private _skip() { this._params!.callback(undefined); - this._closeDialog(); - } - - private _closeDialog() { - this._placeholders = undefined; - if (this._input) { - this._input.value = null; - } - this._opened = false; + this.closeDialog(); } private _openedChanged(ev: PolymerChangedEvent): void { if (!ev.detail.value) { - this._closeDialog(); + this.closeDialog(); } } From 28ae70e81a7840c5c8c327953c029398c0c6e91b Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Sun, 2 May 2021 12:50:06 +0200 Subject: [PATCH 3/3] Fix --- src/dialogs/make-dialog-manager.ts | 2 +- .../automation/dialog-new-automation.ts | 34 ++++++++++--------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/dialogs/make-dialog-manager.ts b/src/dialogs/make-dialog-manager.ts index bc32b080508a..eada7af6eb42 100644 --- a/src/dialogs/make-dialog-manager.ts +++ b/src/dialogs/make-dialog-manager.ts @@ -97,7 +97,7 @@ export const closeDialog = async (dialogTag: string): Promise => { if (!(dialogTag in LOADED)) { return true; } - const dialogElement = await LOADED[dialogTag]; + const dialogElement: HassDialog = await LOADED[dialogTag]; if (dialogElement.closeDialog) { return dialogElement.closeDialog() !== false; } diff --git a/src/panels/config/automation/dialog-new-automation.ts b/src/panels/config/automation/dialog-new-automation.ts index a70b5372143a..a51af8daed68 100644 --- a/src/panels/config/automation/dialog-new-automation.ts +++ b/src/panels/config/automation/dialog-new-automation.ts @@ -15,17 +15,21 @@ import { nextRender } from "../../../common/util/render-status"; import "../../../components/ha-blueprint-picker"; import "../../../components/ha-card"; import "../../../components/ha-circular-progress"; -import "../../../components/ha-dialog"; +import { createCloseHeading } from "../../../components/ha-dialog"; import { AutomationConfig, showAutomationEditor, } from "../../../data/automation"; +import { + HassDialog, + replaceDialog, +} from "../../../dialogs/make-dialog-manager"; import { haStyle, haStyleDialog } from "../../../resources/styles"; import type { HomeAssistant } from "../../../types"; import { showThingtalkDialog } from "./thingtalk/show-dialog-thingtalk"; @customElement("ha-dialog-new-automation") -class DialogNewAutomation extends LitElement { +class DialogNewAutomation extends LitElement implements HassDialog { @property({ attribute: false }) public hass!: HomeAssistant; @internalProperty() private _opened = false; @@ -34,13 +38,9 @@ class DialogNewAutomation extends LitElement { this._opened = true; } - public async closeDialog(): Promise { - if (!this._opened) { - return; - } + public closeDialog(): void { this._opened = false; fireEvent(this, "dialog-closed", { dialog: this.localName }); - await nextRender(); } protected render(): TemplateResult { @@ -51,8 +51,9 @@ class DialogNewAutomation extends LitElement {
@@ -111,24 +112,25 @@ class DialogNewAutomation extends LitElement { `; } - private async _thingTalk() { - const input = this.shadowRoot!.querySelector("paper-input")! - .value as string; - await this.closeDialog(); + private _thingTalk() { + replaceDialog(); showThingtalkDialog(this, { callback: (config: Partial | undefined) => showAutomationEditor(this, config), - input, + input: this.shadowRoot!.querySelector("paper-input")!.value as string, }); + this.closeDialog(); } private async _blueprintPicked(ev: CustomEvent) { - await this.closeDialog(); + this.closeDialog(); + await nextRender(); showAutomationEditor(this, { use_blueprint: { path: ev.detail.value } }); } private async _blank() { - await this.closeDialog(); + this.closeDialog(); + await nextRender(); showAutomationEditor(this); }