From 8999ca2ea06a1525d6747e1bd279a6212ab8ebfe Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Fri, 18 Feb 2022 14:51:37 -0600 Subject: [PATCH] Entity Settings Page to MWC 3 (#11694) --- .../entities/entity-registry-basic-editor.ts | 19 +++--- .../entities/entity-registry-settings.ts | 39 +++++++----- .../config/helpers/dialog-helper-detail.ts | 62 +++++++++---------- .../config/helpers/forms/ha-counter-form.ts | 42 +++++++------ .../helpers/forms/ha-input_boolean-form.ts | 16 +++-- .../helpers/forms/ha-input_button-form.ts | 16 +++-- .../helpers/forms/ha-input_datetime-form.ts | 16 +++-- .../helpers/forms/ha-input_number-form.ts | 46 ++++++++------ .../helpers/forms/ha-input_select-form.ts | 59 ++++++++++-------- .../helpers/forms/ha-input_text-form.ts | 37 ++++++----- .../config/helpers/forms/ha-timer-form.ts | 21 ++++--- 11 files changed, 211 insertions(+), 162 deletions(-) diff --git a/src/panels/config/entities/entity-registry-basic-editor.ts b/src/panels/config/entities/entity-registry-basic-editor.ts index af79a115aa..52240794b3 100644 --- a/src/panels/config/entities/entity-registry-basic-editor.ts +++ b/src/panels/config/entities/entity-registry-basic-editor.ts @@ -1,10 +1,10 @@ -import "@polymer/paper-input/paper-input"; import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { css, html, LitElement, PropertyValues, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; import { computeDomain } from "../../../common/entity/compute_domain"; import "../../../components/ha-area-picker"; import "../../../components/ha-switch"; +import "../../../components/ha-textfield"; import type { HaSwitch } from "../../../components/ha-switch"; import { DeviceRegistryEntry, @@ -17,7 +17,6 @@ import { } from "../../../data/entity_registry"; import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box"; import { SubscribeMixin } from "../../../mixins/subscribe-mixin"; -import type { PolymerChangedEvent } from "../../../polymer-types"; import type { HomeAssistant } from "../../../types"; @customElement("ha-registry-basic-editor") @@ -123,16 +122,16 @@ export class HaEntityRegistryBasicEditor extends SubscribeMixin(LitElement) { computeDomain(this.entry.entity_id); return html` - + @input=${this._entityIdChanged} + > ): void { - this._entityId = ev.detail.value; + private _entityIdChanged(ev): void { + this._entityId = ev.target.value; } private _disabledByChanged(ev: Event): void { @@ -199,6 +198,10 @@ export class HaEntityRegistryBasicEditor extends SubscribeMixin(LitElement) { .secondary { color: var(--secondary-text-color); } + ha-textfield { + display: block; + margin-bottom: 8px; + } `; } } diff --git a/src/panels/config/entities/entity-registry-settings.ts b/src/panels/config/entities/entity-registry-settings.ts index f4c40e335f..4b73600b59 100644 --- a/src/panels/config/entities/entity-registry-settings.ts +++ b/src/panels/config/entities/entity-registry-settings.ts @@ -1,7 +1,7 @@ +import "../../../components/ha-alert"; import "@material/mwc-button/mwc-button"; import "@material/mwc-list/mwc-list-item"; import "@material/mwc-select/mwc-select"; -import "@polymer/paper-input/paper-input"; import { HassEntity, UnsubscribeFunc } from "home-assistant-js-websocket"; import { css, @@ -19,6 +19,7 @@ import "../../../components/ha-area-picker"; import "../../../components/ha-expansion-panel"; import "../../../components/ha-icon-picker"; import "../../../components/ha-switch"; +import "../../../components/ha-textfield"; import type { HaSwitch } from "../../../components/ha-switch"; import { DeviceRegistryEntry, @@ -36,7 +37,6 @@ import { showConfirmationDialog, } from "../../../dialogs/generic/show-dialog-box"; import { SubscribeMixin } from "../../../mixins/subscribe-mixin"; -import type { PolymerChangedEvent } from "../../../polymer-types"; import { haStyle } from "../../../resources/styles"; import type { HomeAssistant } from "../../../types"; import { showDeviceRegistryDetailDialog } from "../devices/device-registry-detail/show-dialog-device-registry-detail"; @@ -137,15 +137,18 @@ export class EntityRegistrySettings extends SubscribeMixin(LitElement) { ` : ""} - ${this._error ? html`
${this._error}
` : ""} + ${this._error + ? html`${this._error}` + : ""}
- + .placeholder=${this.entry.original_name} + @input=${this._nameChanged} + > ` : ""} - + @input=${this._entityIdChanged} + > ${!this.entry.device_id ? html`): void { + private _nameChanged(ev): void { this._error = undefined; - this._name = ev.detail.value; + this._name = ev.target.value; } - private _iconChanged(ev: PolymerChangedEvent): void { + private _iconChanged(ev: CustomEvent): void { this._error = undefined; this._icon = ev.detail.value; } - private _entityIdChanged(ev: PolymerChangedEvent): void { + private _entityIdChanged(ev): void { this._error = undefined; - this._entityId = ev.detail.value; + this._entityId = ev.target.value; } private _deviceClassChanged(ev): void { @@ -423,6 +426,10 @@ export class EntityRegistrySettings extends SubscribeMixin(LitElement) { ha-switch { margin-right: 16px; } + ha-textfield { + display: block; + margin: 8px 0; + } .row { margin: 8px 0; color: var(--primary-text-color); diff --git a/src/panels/config/helpers/dialog-helper-detail.ts b/src/panels/config/helpers/dialog-helper-detail.ts index eace117eb7..bbd0b645e1 100644 --- a/src/panels/config/helpers/dialog-helper-detail.ts +++ b/src/panels/config/helpers/dialog-helper-detail.ts @@ -116,36 +116,35 @@ export class DialogHelperDetail extends LitElement { ${Object.keys(HELPERS).map((platform: string) => { const isLoaded = isComponentLoaded(this.hass, platform); return html` -
- - - - ${this.hass.localize( - `ui.panel.config.helpers.types.${platform}` - ) || platform} - - - ${!isLoaded - ? html` - ${this.hass.localize( - "ui.dialogs.helper_settings.platform_not_loaded", - "platform", - platform - )} - ` - : ""} -
+ + + + ${this.hass.localize( + `ui.panel.config.helpers.types.${platform}` + ) || platform} + + + ${!isLoaded + ? html` + ${this.hass.localize( + "ui.dialogs.helper_settings.platform_not_loaded", + "platform", + platform + )} + ` + : ""} `; })} @@ -208,9 +207,6 @@ export class DialogHelperDetail extends LitElement { ha-dialog.button-left { --justify-action-buttons: flex-start; } - paper-icon-item { - cursor: pointer; - } `, ]; } diff --git a/src/panels/config/helpers/forms/ha-counter-form.ts b/src/panels/config/helpers/forms/ha-counter-form.ts index badebfd38c..9aa1186577 100644 --- a/src/panels/config/helpers/forms/ha-counter-form.ts +++ b/src/panels/config/helpers/forms/ha-counter-form.ts @@ -1,9 +1,9 @@ -import "@polymer/paper-input/paper-input"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/ha-icon-picker"; import "../../../../components/ha-switch"; +import "../../../../components/ha-textfield"; import type { HaSwitch } from "../../../../components/ha-switch"; import { Counter } from "../../../../data/counter"; import { haStyle } from "../../../../resources/styles"; @@ -68,10 +68,10 @@ class HaCounterForm extends LitElement { return html`
- + > - - + - + + > ${this.hass.userData?.showAdvanced ? html` - + >
- + > - + > - + > - + > - - + + > ${this.hass.userData?.showAdvanced ? html`
@@ -143,24 +143,24 @@ class HaInputNumberForm extends LitElement { >
- + > - + > ` : ""}
@@ -181,7 +181,10 @@ class HaInputNumberForm extends LitElement { const target = ev.target as any; const configValue = target.configValue; const value = - target.type === "number" ? Number(ev.detail.value) : ev.detail.value; + target.type === "number" + ? Number(target.value) + : ev.detail?.value || target.value; + if (this[`_${configValue}`] === value) { return; } @@ -189,7 +192,7 @@ class HaInputNumberForm extends LitElement { if (value === undefined || value === "") { delete newValue[configValue]; } else { - newValue[configValue] = ev.detail.value; + newValue[configValue] = value; } fireEvent(this, "value-changed", { value: newValue, @@ -203,6 +206,11 @@ class HaInputNumberForm extends LitElement { .form { color: var(--primary-text-color); } + + ha-textfield { + display: block; + margin-bottom: 8px; + } `, ]; } diff --git a/src/panels/config/helpers/forms/ha-input_select-form.ts b/src/panels/config/helpers/forms/ha-input_select-form.ts index 8c23ff0c34..cec1eb952e 100644 --- a/src/panels/config/helpers/forms/ha-input_select-form.ts +++ b/src/panels/config/helpers/forms/ha-input_select-form.ts @@ -1,14 +1,13 @@ import "@material/mwc-button/mwc-button"; +import "@material/mwc-list/mwc-list-item"; import { mdiDelete } from "@mdi/js"; -import "@polymer/paper-input/paper-input"; -import type { PaperInputElement } from "@polymer/paper-input/paper-input"; -import "@polymer/paper-item/paper-item"; -import "@polymer/paper-item/paper-item-body"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property, query, state } from "lit/decorators"; import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/ha-icon-button"; import "../../../../components/ha-icon-picker"; +import "../../../../components/ha-textfield"; +import type { HaTextField } from "../../../../components/ha-textfield"; import type { InputSelect } from "../../../../data/input_select"; import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box"; import { haStyle } from "../../../../resources/styles"; @@ -28,7 +27,7 @@ class HaInputSelectForm extends LitElement { @state() private _options: string[] = []; - @query("#option_input", true) private _optionInput?: PaperInputElement; + @query("#option_input", true) private _optionInput?: HaTextField; set item(item: InputSelect) { this._item = item; @@ -59,19 +58,19 @@ class HaInputSelectForm extends LitElement { return html`
- + .configValue=${"name"} + @input=${this._valueChanged} + > html` - - ${option} + + ${option} - + ` ) : html` - + ${this.hass!.localize( "ui.dialogs.helper_settings.input_select.no_options" )} - + `} -
- + + > ${this.hass!.localize( "ui.dialogs.helper_settings.input_select.add" @@ -135,7 +135,7 @@ class HaInputSelectForm extends LitElement { private _addOption() { const input = this._optionInput; - if (!input || !input.value) { + if (!input?.value) { return; } fireEvent(this, "value-changed", { @@ -167,7 +167,8 @@ class HaInputSelectForm extends LitElement { } ev.stopPropagation(); const configValue = (ev.target as any).configValue; - const value = ev.detail.value; + const value = ev.detail?.value || (ev.target as any).value; + if (this[`_${configValue}`] === value) { return; } @@ -175,7 +176,7 @@ class HaInputSelectForm extends LitElement { if (!value) { delete newValue[configValue]; } else { - newValue[configValue] = ev.detail.value; + newValue[configValue] = value; } fireEvent(this, "value-changed", { value: newValue, @@ -193,10 +194,18 @@ class HaInputSelectForm extends LitElement { border: 1px solid var(--divider-color); border-radius: 4px; margin-top: 4px; + --mdc-icon-button-size: 24px; } mwc-button { margin-left: 8px; } + ha-textfield { + display: block; + margin-bottom: 8px; + } + #option_input { + margin-top: 8px; + } `, ]; } diff --git a/src/panels/config/helpers/forms/ha-input_text-form.ts b/src/panels/config/helpers/forms/ha-input_text-form.ts index 7c912ca3df..f34bfa7e8c 100644 --- a/src/panels/config/helpers/forms/ha-input_text-form.ts +++ b/src/panels/config/helpers/forms/ha-input_text-form.ts @@ -1,8 +1,9 @@ -import "@polymer/paper-input/paper-input"; +import "../../../../components/ha-form/ha-form"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/ha-icon-picker"; +import "../../../../components/ha-textfield"; import type { HaRadio } from "../../../../components/ha-radio"; import { InputText } from "../../../../data/input_text"; import { haStyle } from "../../../../resources/styles"; @@ -64,10 +65,10 @@ class HaInputTextForm extends LitElement { return html`
- + > ${this.hass.userData?.showAdvanced ? html` - - + + >
${this.hass.localize( "ui.dialogs.helper_settings.input_text.mode" @@ -138,14 +139,14 @@ class HaInputTextForm extends LitElement { >
- + > ` : ""}
@@ -164,7 +165,7 @@ class HaInputTextForm extends LitElement { } ev.stopPropagation(); const configValue = (ev.target as any).configValue; - const value = ev.detail.value; + const value = ev.detail?.value || (ev.target as any).value; if (this[`_${configValue}`] === value) { return; } @@ -172,7 +173,7 @@ class HaInputTextForm extends LitElement { if (!value) { delete newValue[configValue]; } else { - newValue[configValue] = ev.detail.value; + newValue[configValue] = value; } fireEvent(this, "value-changed", { value: newValue, @@ -189,6 +190,10 @@ class HaInputTextForm extends LitElement { .row { padding: 16px 0; } + ha-textfield { + display: block; + margin: 8px 0; + } `, ]; } diff --git a/src/panels/config/helpers/forms/ha-timer-form.ts b/src/panels/config/helpers/forms/ha-timer-form.ts index 32e1f25e7a..5d7b13cfad 100644 --- a/src/panels/config/helpers/forms/ha-timer-form.ts +++ b/src/panels/config/helpers/forms/ha-timer-form.ts @@ -2,6 +2,7 @@ import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/ha-icon-picker"; +import "../../../../components/ha-textfield"; import { DurationDict, Timer } from "../../../../data/timer"; import { haStyle } from "../../../../resources/styles"; import { HomeAssistant } from "../../../../types"; @@ -49,10 +50,10 @@ class HaTimerForm extends LitElement { return html`
- + > - + >
`; } @@ -88,7 +89,7 @@ class HaTimerForm extends LitElement { } ev.stopPropagation(); const configValue = (ev.target as any).configValue; - const value = ev.detail.value; + const value = ev.detail?.value || (ev.target as any).value; if (this[`_${configValue}`] === value) { return; } @@ -96,7 +97,7 @@ class HaTimerForm extends LitElement { if (!value) { delete newValue[configValue]; } else { - newValue[configValue] = ev.detail.value; + newValue[configValue] = value; } fireEvent(this, "value-changed", { value: newValue, @@ -110,6 +111,10 @@ class HaTimerForm extends LitElement { .form { color: var(--primary-text-color); } + ha-textfield { + display: block; + margin: 8px 0; + } `, ]; }