Improve HA form default support (#14570)

* use default as placeholder if not required

* Do not force number selector to 0 or min when empty

* use undefined instead of empty string
This commit is contained in:
Paul Bottein 2023-01-23 20:09:13 +01:00 committed by GitHub
parent 38c1112308
commit d6e0d57744
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 8 deletions

View File

@ -86,6 +86,7 @@ export class HaForm extends LitElement implements HaFormElement {
.value=${getValue(this.data, item)} .value=${getValue(this.data, item)}
.label=${this._computeLabel(item, this.data)} .label=${this._computeLabel(item, this.data)}
.disabled=${item.disabled || this.disabled || false} .disabled=${item.disabled || this.disabled || false}
.placeholder=${item.required ? "" : item.default}
.helper=${this._computeHelper(item)} .helper=${this._computeHelper(item)}
.required=${item.required || false} .required=${item.required || false}
.context=${this._generateContext(item)} .context=${this._generateContext(item)}

View File

@ -39,7 +39,7 @@ export class HaNumberSelector extends LitElement {
<ha-slider <ha-slider
.min=${this.selector.number?.min} .min=${this.selector.number?.min}
.max=${this.selector.number?.max} .max=${this.selector.number?.max}
.value=${this._value} .value=${this.value ?? ""}
.step=${this.selector.number?.step ?? 1} .step=${this.selector.number?.step ?? 1}
.disabled=${this.disabled} .disabled=${this.disabled}
.required=${this.required} .required=${this.required}
@ -81,17 +81,11 @@ export class HaNumberSelector extends LitElement {
`; `;
} }
private get _value() {
return this.value ?? (this.selector.number?.min || 0);
}
private _handleInputChange(ev) { private _handleInputChange(ev) {
ev.stopPropagation(); ev.stopPropagation();
const value = const value =
ev.target.value === "" || isNaN(ev.target.value) ev.target.value === "" || isNaN(ev.target.value)
? this.required ? undefined
? this.selector.number?.min || 0
: undefined
: Number(ev.target.value); : Number(ev.target.value);
if (this.value === value) { if (this.value === value) {
return; return;