Improve rename automation dialog (#13601)

This commit is contained in:
Bram Kragten 2022-09-05 19:38:51 +02:00 committed by GitHub
parent e510e5b371
commit 8a7f35cee6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 17 deletions

View File

@ -8,6 +8,7 @@ import { haStyle, haStyleDialog } from "../../../../resources/styles";
import type { HomeAssistant } from "../../../../types"; import type { HomeAssistant } from "../../../../types";
import type { AutomationRenameDialog } from "./show-dialog-automation-rename"; import type { AutomationRenameDialog } from "./show-dialog-automation-rename";
import "../../../../components/ha-textarea"; import "../../../../components/ha-textarea";
import "../../../../components/ha-alert";
import "../../../../components/ha-textfield"; import "../../../../components/ha-textfield";
@customElement("ha-dialog-automation-rename") @customElement("ha-dialog-automation-rename")
@ -16,6 +17,8 @@ class DialogAutomationRename extends LitElement implements HassDialog {
@state() private _opened = false; @state() private _opened = false;
@state() private _error?: string;
private _params!: AutomationRenameDialog; private _params!: AutomationRenameDialog;
private _newName?: string; private _newName?: string;
@ -25,7 +28,9 @@ class DialogAutomationRename extends LitElement implements HassDialog {
public showDialog(params: AutomationRenameDialog): void { public showDialog(params: AutomationRenameDialog): void {
this._opened = true; this._opened = true;
this._params = params; this._params = params;
this._newName = params.config.alias || ""; this._newName =
params.config.alias ||
this.hass.localize("ui.panel.config.automation.editor.default_name");
this._newDescription = params.config.description || ""; this._newDescription = params.config.description || "";
} }
@ -49,9 +54,20 @@ class DialogAutomationRename extends LitElement implements HassDialog {
@closed=${this.closeDialog} @closed=${this.closeDialog}
.heading=${createCloseHeading( .heading=${createCloseHeading(
this.hass, this.hass,
this.hass.localize("ui.panel.config.automation.editor.rename") this.hass.localize(
this._params.config.alias
? "ui.panel.config.automation.editor.rename"
: "ui.panel.config.automation.editor.save"
)
)} )}
> >
${this._error
? html`<ha-alert alert-type="error"
>${this.hass.localize(
"ui.panel.config.automation.editor.missing_name"
)}</ha-alert
>`
: ""}
<ha-textfield <ha-textfield
dialogInitialFocus dialogInitialFocus
.value=${this._newName} .value=${this._newName}
@ -61,6 +77,7 @@ class DialogAutomationRename extends LitElement implements HassDialog {
.label=${this.hass.localize( .label=${this.hass.localize(
"ui.panel.config.automation.editor.alias" "ui.panel.config.automation.editor.alias"
)} )}
required
type="string" type="string"
@change=${this._valueChanged} @change=${this._valueChanged}
></ha-textfield> ></ha-textfield>
@ -82,7 +99,11 @@ class DialogAutomationRename extends LitElement implements HassDialog {
${this.hass.localize("ui.dialogs.generic.cancel")} ${this.hass.localize("ui.dialogs.generic.cancel")}
</mwc-button> </mwc-button>
<mwc-button @click=${this._save} slot="primaryAction"> <mwc-button @click=${this._save} slot="primaryAction">
${this.hass.localize("ui.panel.config.automation.editor.rename")} ${this.hass.localize(
this._params.config.alias
? "ui.panel.config.automation.editor.rename"
: "ui.panel.config.automation.editor.save"
)}
</mwc-button> </mwc-button>
</ha-dialog> </ha-dialog>
`; `;
@ -99,6 +120,10 @@ class DialogAutomationRename extends LitElement implements HassDialog {
} }
private _save(): void { private _save(): void {
if (!this._newName) {
this._error = "Name is required";
return;
}
this._params.updateAutomation({ this._params.updateAutomation({
...this._params.config, ...this._params.config,
alias: this._newName, alias: this._newName,
@ -116,6 +141,10 @@ class DialogAutomationRename extends LitElement implements HassDialog {
ha-textarea { ha-textarea {
display: block; display: block;
} }
ha-alert {
display: block;
margin-bottom: 16px;
}
`, `,
]; ];
} }

View File

@ -298,7 +298,9 @@ export class HaAutomationEditor extends KeyboardShortcutMixin(LitElement) {
@subscribe-automation-config=${this._subscribeAutomationConfig} @subscribe-automation-config=${this._subscribeAutomationConfig}
> >
${this._errors ${this._errors
? html`<div class="errors">${this._errors}</div>` ? html`<ha-alert alert-type="error">
${this._errors}
</ha-alert>`
: ""} : ""}
${this._mode === "gui" ${this._mode === "gui"
? "use_blueprint" in this._config ? "use_blueprint" in this._config
@ -629,14 +631,6 @@ export class HaAutomationEditor extends KeyboardShortcutMixin(LitElement) {
const id = this.automationId || String(Date.now()); const id = this.automationId || String(Date.now());
if (!this.automationId) { if (!this.automationId) {
await this._promptAutomationAlias(); await this._promptAutomationAlias();
if (!this._config!.alias) {
showAlertDialog(this, {
text: this.hass.localize(
"ui.panel.config.automation.editor.missing_name"
),
});
return;
}
} }
this.hass!.callApi( this.hass!.callApi(
@ -681,11 +675,6 @@ export class HaAutomationEditor extends KeyboardShortcutMixin(LitElement) {
ha-card { ha-card {
overflow: hidden; overflow: hidden;
} }
.errors {
padding: 20px;
font-weight: bold;
color: var(--error-color);
}
.content { .content {
padding-bottom: 20px; padding-bottom: 20px;
} }