mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-23 01:06:35 +00:00
Fixed state card of number entity (#8325)
This commit is contained in:
parent
48de8b0739
commit
e275f1f4b9
@ -6,7 +6,6 @@ import { html } from "@polymer/polymer/lib/utils/html-tag";
|
|||||||
/* eslint-plugin-disable lit */
|
/* eslint-plugin-disable lit */
|
||||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||||
import "../components/entity/state-info";
|
import "../components/entity/state-info";
|
||||||
import "../components/ha-slider";
|
|
||||||
|
|
||||||
class StateCardNumber extends mixinBehaviors(
|
class StateCardNumber extends mixinBehaviors(
|
||||||
[IronResizableBehavior],
|
[IronResizableBehavior],
|
||||||
@ -16,9 +15,6 @@ class StateCardNumber extends mixinBehaviors(
|
|||||||
return html`
|
return html`
|
||||||
<style include="iron-flex iron-flex-alignment"></style>
|
<style include="iron-flex iron-flex-alignment"></style>
|
||||||
<style>
|
<style>
|
||||||
ha-slider {
|
|
||||||
margin-left: auto;
|
|
||||||
}
|
|
||||||
.state {
|
.state {
|
||||||
@apply --paper-font-body1;
|
@apply --paper-font-body1;
|
||||||
color: var(--primary-text-color);
|
color: var(--primary-text-color);
|
||||||
@ -26,12 +22,6 @@ class StateCardNumber extends mixinBehaviors(
|
|||||||
text-align: right;
|
text-align: right;
|
||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
}
|
}
|
||||||
.sliderstate {
|
|
||||||
min-width: 45px;
|
|
||||||
}
|
|
||||||
ha-slider[hidden] {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
paper-input {
|
paper-input {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
@ -40,19 +30,6 @@ class StateCardNumber extends mixinBehaviors(
|
|||||||
|
|
||||||
<div class="horizontal justified layout" id="number_card">
|
<div class="horizontal justified layout" id="number_card">
|
||||||
${this.stateInfoTemplate}
|
${this.stateInfoTemplate}
|
||||||
<ha-slider
|
|
||||||
min="[[min]]"
|
|
||||||
max="[[max]]"
|
|
||||||
value="{{value}}"
|
|
||||||
step="[[step]]"
|
|
||||||
hidden="[[hiddenslider]]"
|
|
||||||
pin
|
|
||||||
on-change="selectedValueChanged"
|
|
||||||
on-click="stopPropagation"
|
|
||||||
id="slider"
|
|
||||||
ignore-bar-touch=""
|
|
||||||
>
|
|
||||||
</ha-slider>
|
|
||||||
<paper-input
|
<paper-input
|
||||||
no-label-float=""
|
no-label-float=""
|
||||||
auto-validate=""
|
auto-validate=""
|
||||||
@ -64,19 +41,11 @@ class StateCardNumber extends mixinBehaviors(
|
|||||||
type="number"
|
type="number"
|
||||||
on-change="selectedValueChanged"
|
on-change="selectedValueChanged"
|
||||||
on-click="stopPropagation"
|
on-click="stopPropagation"
|
||||||
hidden="[[hiddenbox]]"
|
|
||||||
>
|
>
|
||||||
</paper-input>
|
</paper-input>
|
||||||
<div class="state" hidden="[[hiddenbox]]">
|
<div class="state">
|
||||||
[[stateObj.attributes.unit_of_measurement]]
|
[[stateObj.attributes.unit_of_measurement]]
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
id="sliderstate"
|
|
||||||
class="state sliderstate"
|
|
||||||
hidden="[[hiddenslider]]"
|
|
||||||
>
|
|
||||||
[[value]] [[stateObj.attributes.unit_of_measurement]]
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
@ -91,31 +60,9 @@ class StateCardNumber extends mixinBehaviors(
|
|||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
ready() {
|
|
||||||
super.ready();
|
|
||||||
if (typeof ResizeObserver === "function") {
|
|
||||||
const ro = new ResizeObserver((entries) => {
|
|
||||||
entries.forEach(() => {
|
|
||||||
this.hiddenState();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
ro.observe(this.$.number_card);
|
|
||||||
} else {
|
|
||||||
this.addEventListener("iron-resize", this.hiddenState);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static get properties() {
|
static get properties() {
|
||||||
return {
|
return {
|
||||||
hass: Object,
|
hass: Object,
|
||||||
hiddenbox: {
|
|
||||||
type: Boolean,
|
|
||||||
value: true,
|
|
||||||
},
|
|
||||||
hiddenslider: {
|
|
||||||
type: Boolean,
|
|
||||||
value: true,
|
|
||||||
},
|
|
||||||
inDialog: {
|
inDialog: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
value: false,
|
value: false,
|
||||||
@ -138,35 +85,17 @@ class StateCardNumber extends mixinBehaviors(
|
|||||||
},
|
},
|
||||||
step: Number,
|
step: Number,
|
||||||
value: Number,
|
value: Number,
|
||||||
mode: String,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
hiddenState() {
|
|
||||||
if (this.mode !== "slider") return;
|
|
||||||
const sliderwidth = this.$.slider.offsetWidth;
|
|
||||||
if (sliderwidth < 100) {
|
|
||||||
this.$.sliderstate.hidden = true;
|
|
||||||
} else if (sliderwidth >= 145) {
|
|
||||||
this.$.sliderstate.hidden = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stateObjectChanged(newVal) {
|
stateObjectChanged(newVal) {
|
||||||
const prevMode = this.mode;
|
|
||||||
this.setProperties({
|
this.setProperties({
|
||||||
min: Number(newVal.attributes.min),
|
min: Number(newVal.attributes.min),
|
||||||
max: Number(newVal.attributes.max),
|
max: Number(newVal.attributes.max),
|
||||||
step: Number(newVal.attributes.step),
|
step: Number(newVal.attributes.step),
|
||||||
value: Number(newVal.state),
|
value: Number(newVal.state),
|
||||||
mode: String(newVal.attributes.mode),
|
|
||||||
maxlength: String(newVal.attributes.max).length,
|
maxlength: String(newVal.attributes.max).length,
|
||||||
hiddenbox: newVal.attributes.mode !== "box",
|
|
||||||
hiddenslider: newVal.attributes.mode !== "slider",
|
|
||||||
});
|
});
|
||||||
if (this.mode === "slider" && prevMode !== "slider") {
|
|
||||||
this.hiddenState();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
selectedValueChanged() {
|
selectedValueChanged() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user