Fix step any in number selector (#19077)

This commit is contained in:
Bram Kragten 2023-12-18 15:24:46 +01:00 committed by GitHub
parent d762a9365f
commit 325ad6f721
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 8 deletions

View File

@ -43,6 +43,22 @@ export class HaNumberSelector extends LitElement {
this.selector.number?.min === undefined ||
this.selector.number?.max === undefined;
let sliderStep;
if (!isBox) {
sliderStep = this.selector.number!.step ?? 1;
if (sliderStep === "any") {
sliderStep = 1;
// divide the range of the slider by 100 steps
const step =
(this.selector.number!.max! - this.selector.number!.min!) / 100;
// biggest step size is 1, round the step size to a division of 1
while (sliderStep > step) {
sliderStep /= 10;
}
}
}
return html`
<div class="input">
${!isBox
@ -52,12 +68,10 @@ export class HaNumberSelector extends LitElement {
: ""}
<ha-slider
labeled
.min=${this.selector.number?.min}
.max=${this.selector.number?.max}
.min=${this.selector.number!.min}
.max=${this.selector.number!.max}
.value=${this.value ?? ""}
.step=${this.selector.number?.step === "any"
? undefined
: this.selector.number?.step ?? 1}
.step=${sliderStep}
.disabled=${this.disabled}
.required=${this.required}
@change=${this._handleSliderChange}

View File

@ -70,15 +70,15 @@ const SELECTOR_SCHEMAS = {
number: [
{
name: "min",
selector: { number: { mode: "box" } },
selector: { number: { mode: "box", step: "any" } },
},
{
name: "max",
selector: { number: { mode: "box" } },
selector: { number: { mode: "box", step: "any" } },
},
{
name: "step",
selector: { number: { mode: "box" } },
selector: { number: { mode: "box", step: "any" } },
},
] as const,
object: [] as const,