From 430b47fc4abc5c17d46ca1472e090f1942e2de59 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 23 Feb 2022 17:27:03 +0100 Subject: [PATCH] Migrate single textfields (#11799) * Migrate single textfields * Update ha-config-name-form.ts * Update dialog-area-registry-detail.ts * Update manual-automation-editor.ts * Update manual-automation-editor.ts * required to number selector fix script * review --- .../ha-selector/ha-selector-number.ts | 12 +++++-- .../areas/dialog-area-registry-detail.ts | 25 ++++++-------- .../automation/manual-automation-editor.ts | 11 +++--- .../blueprint/dialog-import-blueprint.ts | 34 +++++++++++-------- src/panels/config/core/ha-config-name-form.ts | 21 ++++++------ .../dialog-device-registry-detail.ts | 22 ++++++------ .../config/person/dialog-person-detail.ts | 15 ++++---- src/panels/config/script/ha-script-editor.ts | 7 ++-- src/panels/config/tags/dialog-tag-detail.ts | 26 ++++++++------ src/panels/config/users/dialog-user-detail.ts | 13 +++---- 10 files changed, 103 insertions(+), 83 deletions(-) diff --git a/src/components/ha-selector/ha-selector-number.ts b/src/components/ha-selector/ha-selector-number.ts index 4d15be84d2..0094192f1b 100644 --- a/src/components/ha-selector/ha-selector-number.ts +++ b/src/components/ha-selector/ha-selector-number.ts @@ -19,6 +19,8 @@ export class HaNumberSelector extends LitElement { @property() public label?: string; + @property({ type: Boolean }) public required = true; + @property({ type: Boolean }) public disabled = false; protected render() { @@ -29,6 +31,7 @@ export class HaNumberSelector extends LitElement { .value=${this._value} .step=${this.selector.number.step ?? 1} .disabled=${this.disabled} + .required=${this.required} pin ignore-bar-touch @change=${this._handleSliderChange} @@ -43,9 +46,10 @@ export class HaNumberSelector extends LitElement { class=${classMap({ single: this.selector.number.mode === "box" })} .min=${this.selector.number.min} .max=${this.selector.number.max} - .value=${this.value} + .value=${this.value || ""} .step=${this.selector.number.step ?? 1} .disabled=${this.disabled} + .required=${this.required} .suffix=${this.selector.number.unit_of_measurement} type="number" autoValidate @@ -56,14 +60,16 @@ export class HaNumberSelector extends LitElement { } private get _value() { - return this.value ?? 0; + return this.value ?? (this.selector.number.min || 0); } private _handleInputChange(ev) { ev.stopPropagation(); const value = ev.target.value === "" || isNaN(ev.target.value) - ? undefined + ? this.required + ? this.selector.number.min || 0 + : undefined : Number(ev.target.value); if (this.value === value) { return; diff --git a/src/panels/config/areas/dialog-area-registry-detail.ts b/src/panels/config/areas/dialog-area-registry-detail.ts index 3fadb0ea58..fcf95fc6c1 100644 --- a/src/panels/config/areas/dialog-area-registry-detail.ts +++ b/src/panels/config/areas/dialog-area-registry-detail.ts @@ -1,10 +1,10 @@ import "@material/mwc-button"; -import "@polymer/paper-input/paper-input"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { property, state } from "lit/decorators"; import { fireEvent } from "../../../common/dom/fire_event"; import { createCloseHeading } from "../../../components/ha-dialog"; import "../../../components/ha-alert"; +import "../../../components/ha-textfield"; import "../../../components/ha-picture-upload"; import type { HaPictureUpload } from "../../../components/ha-picture-upload"; import { AreaRegistryEntryMutableParams } from "../../../data/area_registry"; @@ -69,7 +69,7 @@ class DialogAreaDetail extends LitElement { >
${this._error - ? html` ${this._error} ` + ? html`${this._error}` : ""}
${entry @@ -83,17 +83,16 @@ class DialogAreaDetail extends LitElement { ` : ""} - + > ) { + private _nameChanged(ev) { this._error = undefined; - this._name = ev.detail.value; + this._name = ev.target.value; } private _pictureChanged(ev: PolymerChangedEvent) { @@ -188,6 +181,10 @@ class DialogAreaDetail extends LitElement { .form { padding-bottom: 24px; } + ha-textfield { + display: block; + margin-bottom: 16px; + } `, ]; } diff --git a/src/panels/config/automation/manual-automation-editor.ts b/src/panels/config/automation/manual-automation-editor.ts index b0df97fbfc..19a82decb9 100644 --- a/src/panels/config/automation/manual-automation-editor.ts +++ b/src/panels/config/automation/manual-automation-editor.ts @@ -99,7 +99,7 @@ export class HaManualAutomationEditor extends LitElement { .label=${this.hass.localize( "ui.panel.config.automation.editor.modes.label" )} - .value=${this.config.mode ? MODES.indexOf(this.config.mode) : 0} + .value=${this.config.mode} @selected=${this._modeChanged} fixedMenuPosition > @@ -115,7 +115,7 @@ export class HaManualAutomationEditor extends LitElement { ${this.config.mode && MODES_MAX.includes(this.config.mode) ? html` - ` @@ -357,8 +358,10 @@ export class HaManualAutomationEditor extends LitElement { ha-entity-toggle { margin-right: 8px; } - mwc-select { - margin-top: 8px; + mwc-select, + .max { + margin-top: 16px; + width: 200px; } `, ]; diff --git a/src/panels/config/blueprint/dialog-import-blueprint.ts b/src/panels/config/blueprint/dialog-import-blueprint.ts index ad2cb1eb6c..ef43378c16 100644 --- a/src/panels/config/blueprint/dialog-import-blueprint.ts +++ b/src/panels/config/blueprint/dialog-import-blueprint.ts @@ -1,13 +1,13 @@ import "@material/mwc-button"; -import "@polymer/paper-input/paper-input"; -import type { PaperInputElement } from "@polymer/paper-input/paper-input"; -import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; -import { customElement, property, state, query } from "lit/decorators"; +import { css, html, LitElement, TemplateResult } from "lit"; +import { customElement, property, query, state } from "lit/decorators"; import { fireEvent } from "../../../common/dom/fire_event"; import "../../../components/ha-circular-progress"; import { createCloseHeading } from "../../../components/ha-dialog"; import "../../../components/ha-expansion-panel"; import "../../../components/ha-markdown"; +import "../../../components/ha-textfield"; +import type { HaTextField } from "../../../components/ha-textfield"; import { BlueprintImportResult, importBlueprint, @@ -32,7 +32,7 @@ class DialogImportBlueprint extends LitElement { @state() private _url?: string; - @query("#input") private _input?: PaperInputElement; + @query("#input") private _input?: HaTextField; public showDialog(params): void { this._params = params; @@ -90,13 +90,13 @@ class DialogImportBlueprint extends LitElement { ` : html` - + > `} ` - )}`} + >`}
${!this._result ? html` ` : ""} - + @changed=${this._handleChange} + >
@@ -62,9 +60,9 @@ class ConfigNameForm extends LitElement { : this.hass.config.location_name; } - private _handleChange(ev: PolymerChangedEvent) { - const target = ev.currentTarget as PaperInputElement; - this[`_${target.name}`] = target.value; + private _handleChange(ev) { + const target = ev.currentTarget as HaTextField; + this._name = target.value; } private async _save() { @@ -85,6 +83,9 @@ class ConfigNameForm extends LitElement { .card-actions { text-align: right; } + ha-textfield { + display: block; + } `; } } diff --git a/src/panels/config/devices/device-registry-detail/dialog-device-registry-detail.ts b/src/panels/config/devices/device-registry-detail/dialog-device-registry-detail.ts index 7a68ba8786..cb287db2a1 100644 --- a/src/panels/config/devices/device-registry-detail/dialog-device-registry-detail.ts +++ b/src/panels/config/devices/device-registry-detail/dialog-device-registry-detail.ts @@ -1,13 +1,12 @@ import "@material/mwc-button/mwc-button"; -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-area-picker"; import "../../../../components/ha-dialog"; import type { HaSwitch } from "../../../../components/ha-switch"; +import "../../../../components/ha-textfield"; import { computeDeviceName } from "../../../../data/device_registry"; -import { PolymerChangedEvent } from "../../../../polymer-types"; import { haStyle, haStyleDialog } from "../../../../resources/styles"; import { HomeAssistant } from "../../../../types"; import { DeviceRegistryDetailDialogParams } from "./show-dialog-device-registry-detail"; @@ -57,16 +56,18 @@ class DialogDeviceRegistryDetail extends LitElement { .heading=${computeDeviceName(device, this.hass)} >
- ${this._error ? html`
${this._error}
` : ""} + ${this._error + ? html`${this._error} ` + : ""}
- + > ): void { + private _nameChanged(ev): void { this._error = undefined; - this._nameByUser = ev.detail.value; + this._nameByUser = ev.target.value; } private _areaPicked(event: CustomEvent): void { @@ -174,8 +175,9 @@ class DialogDeviceRegistryDetail extends LitElement { mwc-button.warning { margin-right: auto; } - .error { - color: var(--error-color); + ha-textfield { + display: block; + margin-bottom: 16px; } ha-switch { margin-right: 16px; diff --git a/src/panels/config/person/dialog-person-detail.ts b/src/panels/config/person/dialog-person-detail.ts index 2724d8ef2e..185056404f 100644 --- a/src/panels/config/person/dialog-person-detail.ts +++ b/src/panels/config/person/dialog-person-detail.ts @@ -1,5 +1,4 @@ import "@material/mwc-button"; -import "@polymer/paper-input/paper-input"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { property, state } from "lit/decorators"; import memoizeOne from "memoize-one"; @@ -7,6 +6,7 @@ import { computeRTLDirection } from "../../../common/util/compute_rtl"; import "../../../components/entity/ha-entities-picker"; import { createCloseHeading } from "../../../components/ha-dialog"; import "../../../components/ha-formfield"; +import "../../../components/ha-textfield"; import "../../../components/ha-picture-upload"; import type { HaPictureUpload } from "../../../components/ha-picture-upload"; import { adminChangePassword } from "../../../data/auth"; @@ -120,17 +120,17 @@ class DialogPersonDetail extends LitElement {
${this._error ? html`
${this._error}
` : ""}
- + > ) { + private _nameChanged(ev) { this._error = undefined; - this._name = ev.detail.value; + this._name = ev.target.value; } private _adminChanged(ev): void { @@ -460,7 +460,8 @@ class DialogPersonDetail extends LitElement { .form { padding-bottom: 24px; } - ha-picture-upload { + ha-picture-upload, + ha-textfield { display: block; } ha-formfield { diff --git a/src/panels/config/script/ha-script-editor.ts b/src/panels/config/script/ha-script-editor.ts index c4ce09a6b0..2aeb262d47 100644 --- a/src/panels/config/script/ha-script-editor.ts +++ b/src/panels/config/script/ha-script-editor.ts @@ -136,10 +136,9 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) { if (currentMode && MODES_MAX.includes(currentMode)) { schema.push({ name: "max", + required: true, selector: { - text: { - type: "number", - }, + number: { mode: "box", min: 1, max: Infinity }, }, }); } @@ -161,11 +160,11 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) { const data = { mode: MODES[0], + icon: undefined, max: this._config.mode && MODES_MAX.includes(this._config.mode) ? 10 : undefined, - icon: undefined, ...this._config, id: this._entityId, }; diff --git a/src/panels/config/tags/dialog-tag-detail.ts b/src/panels/config/tags/dialog-tag-detail.ts index 02a6aa03fa..a084f22e77 100644 --- a/src/panels/config/tags/dialog-tag-detail.ts +++ b/src/panels/config/tags/dialog-tag-detail.ts @@ -1,11 +1,12 @@ import "@material/mwc-button"; -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-alert"; import { createCloseHeading } from "../../../components/ha-dialog"; import "../../../components/ha-formfield"; import "../../../components/ha-switch"; +import "../../../components/ha-textfield"; import { Tag, UpdateTagParams } from "../../../data/tag"; import { HassDialog } from "../../../dialogs/make-dialog-manager"; import { haStyleDialog } from "../../../resources/styles"; @@ -71,7 +72,9 @@ class DialogTagDetail )} >
- ${this._error ? html`
${this._error}
` : ""} + ${this._error + ? html`${this._error}` + : ""}
${this._params.entry ? html`${this.hass!.localize( @@ -79,30 +82,30 @@ class DialogTagDetail )}: ${this._params.entry.id}` : ""} - + > ${!this._params.entry - ? html` ` + >` : ""}
${this._params.entry @@ -165,11 +168,12 @@ class DialogTagDetail `; } - private _valueChanged(ev: CustomEvent) { - const configValue = (ev.target as any).configValue; + private _valueChanged(ev: Event) { + const target = ev.target as any; + const configValue = target.configValue; this._error = undefined; - this[`_${configValue}`] = ev.detail.value; + this[`_${configValue}`] = target.value; } private async _updateEntry() { diff --git a/src/panels/config/users/dialog-user-detail.ts b/src/panels/config/users/dialog-user-detail.ts index 731de2e065..9729262167 100644 --- a/src/panels/config/users/dialog-user-detail.ts +++ b/src/panels/config/users/dialog-user-detail.ts @@ -1,5 +1,4 @@ import "@material/mwc-button"; -import "@polymer/paper-input/paper-input"; import "@polymer/paper-tooltip/paper-tooltip"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators"; @@ -11,6 +10,7 @@ import "../../../components/ha-help-tooltip"; import "../../../components/ha-chip-set"; import "../../../components/ha-chip"; import "../../../components/ha-svg-icon"; +import "../../../components/ha-textfield"; import "../../../components/ha-switch"; import { adminChangePassword } from "../../../data/auth"; import { @@ -92,13 +92,13 @@ class DialogUserDetail extends LitElement { `}
- + @input=${this._nameChanged} + .label=${this.hass!.localize("ui.panel.config.users.editor.name")} + >