- ${this.config.show_name?Rt`
-
${this.ctrl.name}
- `:""}
- ${this.config.show_state?Rt`
-
- ${this.ctrl.isUnavailable?Rt`
- ${this.hass.localize("state.default.unavailable")}
- `:Rt`
- ${this.ctrl.label}
- `}
-
- `:""}
-
- `:Rt``}renderIcon(){var t;if(!1===(null===(t=this.config.icon)||void 0===t?void 0:t.show))return Rt``;let e=!1,i="";return this.ctrl.stateObj.attributes.entity_picture&&(i=`url(${this.ctrl.stateObj.attributes.entity_picture})`,e=!0),Rt`
- this._handleAction(t,this.config.icon)}
- .actionHandler=${me({hasHold:!1,hasDoubleClick:!1})}
- style=${pe({"background-image":""+i})}
- >
-
-
- `}renderAction(){var t,e,i,o,r;return!1===(null===(t=this.config.action_button)||void 0===t?void 0:t.show)?Rt``:(null===(e=this.config.action_button)||void 0===e?void 0:e.mode)===_e.TOGGLE?Rt`
- this._handleAction(t,this.config.action_button)}
- .actionHandler=${me({hasHold:!1,hasDoubleClick:!1})}
- >
-
- ${void 0===(null===(o=this.config.action_button)||void 0===o?void 0:o.show_spinner)||(null===(r=this.config.action_button)||void 0===r?void 0:r.show_spinner)?Rt`
-
- `:""}
-
- `}_handleAction(t,e){var i;this.hass&&this.config&&t.detail.action&&("toggle"!==(null===(i=e.tap_action)||void 0===i?void 0:i.action)||this.ctrl.isUnavailable||this.animateActionStart(),E(this,this.hass,Object.assign(Object.assign({},e),{entity:this.config.entity}),t.detail.action))}async handleClick(t){this.ctrl.hasToggle&&!this.ctrl.isUnavailable&&(t.preventDefault(),this.animateActionStart(),this.ctrl.log("Toggle"),await A(this.hass,this.config.entity))}_toggle(){this.hass&&this.config&&E(this,this.hass,{tap_action:{action:"toggle"},entity:this.config.entity},"tap")}setStateValue(t){this.ctrl.log("setStateValue",t),this.updateValue(t,!1),this.ctrl.value=t,this.animateActionStart()}animateActionStart(){this.animateActionEnd(),this.action&&this.action.classList.add("loading")}animateActionEnd(){this.action&&(clearTimeout(this.actionTimeout),this.actionTimeout=setTimeout(()=>{this.action.classList.remove("loading")},750))}updateValue(t,e=!0){this.changing=e,this.changed=!e,this.ctrl.log("updateValue",t),this.ctrl.targetValue=t,this.button&&(this.button.classList.remove("off"),e?this.button.classList.add("changing"):(this.button.classList.remove("changing"),this.ctrl.isOff&&this.button.classList.add("off")),this.stateText&&(this.stateText.innerHTML=this.ctrl.isUnavailable?""+this.hass.localize("state.default.unavailable"):this.ctrl.label),this.button.style.setProperty("--slider-value",this.ctrl.percentage+"%"),this.button.style.setProperty("--slider-bg-filter",this.ctrl.style.slider.filter),this.button.style.setProperty("--slider-color",this.ctrl.style.slider.color),this.button.style.setProperty("--icon-filter",this.ctrl.style.icon.filter),this.button.style.setProperty("--icon-color",this.ctrl.style.icon.color),this.button.style.setProperty("--icon-rotate-speed",this.ctrl.style.icon.rotateSpeed||"0s"))}_showError(t){const e=document.createElement("hui-error-card");return e.setConfig({type:"error",error:t,origConfig:this.config}),Rt`
- ${e}
- `}getColorFromVariable(t){if(void 0!==t&&"var"===t.substring(0,3)){let e=window.getComputedStyle(this).getPropertyValue(t.substring(4).slice(0,-1)).trim();return e.length||(e=window.getComputedStyle(document.documentElement).getPropertyValue(t.substring(4).slice(0,-1)).trim()),e}return t}onPointerDown(t){t.stopPropagation(),this.ctrl.isSliderDisabled||this.slider.setPointerCapture(t.pointerId)}onPointerUp(t){this.ctrl.isSliderDisabled||this.slider.hasPointerCapture(t.pointerId)&&(this.setStateValue(this.ctrl.targetValue),this.slider.releasePointerCapture(t.pointerId))}onPointerCancel(t){this.updateValue(this.ctrl.value,!1),this.slider.releasePointerCapture(t.pointerId)}onPointerMove(t){if(this.ctrl.isSliderDisabled)return;if(!this.slider.hasPointerCapture(t.pointerId))return;const{left:e,top:i,width:o,height:r}=this.slider.getBoundingClientRect(),s=this.ctrl.moveSlider(t,{left:e,top:i,width:o,height:r});this.ctrl.log("onPointerMove",s),this.updateValue(s)}connectedCallback(){super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback()}static get styles(){return re`
- ha-card {
- box-sizing: border-box;
- height: 100%;
- width: 100%;
- min-height: 7rem;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- touch-action: pan-y;
- overflow: hidden;
- --mdc-icon-size: 2.2em;
- }
- ha-card.square {
- aspect-ratio: 1 / 1;
- }
- ha-card.compact {
- min-height: 3rem !important;
- }
- :host {
- --slider-bg-default-color: var(--primary-color, rgb(95, 124, 171));
- --slider-bg: var(--slider-color);
- --slider-bg-filter: brightness(100%);
- --slider-bg-direction: to right;
- --slider-track-color: #2b374e;
- --slider-tracker-color: transparent;
- --slider-value: 0%;
- --slider-transition-duration: 0.2s;
- /*--label-text-shadow: rgb(255 255 255 / 10%) -1px -1px 1px, rgb(0 0 0 / 50%) 1px 1px 1px;*/
- /*--label-color-on: var(--primary-text-color, white);*/
- /*--label-color-off: var(--primary-text-color, white);*/
- --icon-filter: brightness(100%);
- --icon-color: var(--paper-item-icon-color);
- --icon-rotate-speed: 0s;
- /*--state-color-on: #BAC0C6; */
- /*--state-color-off: var(--disabled-text-color);*/
- /*--state-text-shadow: rgb(255 255 255 / 10%) -1px -1px 1px, rgb(0 0 0 / 50%) 1px 1px 1px;*/
- --btn-bg-color-off: rgba(43,55,78,1);
- --btn-bg-color-on: #20293c;
- /*--action-icon-color-on: var(--paper-item-icon-color, black);*/
- /*--action-icon-color-off: var(--paper-item-icon-color, black);*/
- /*--action-spinner-color: var(--label-badge-text-color, white);*/
- }
- /* --- BUTTON --- */
-
- .button {
- position: relative;
- padding: 0.8rem;
- box-sizing: border-box;
- height: 100%;
- min-height: 7rem;
- width: 100%;
- display: block;
- overflow: hidden;
- transition: all 0.2s ease-in-out;
- touch-action: pan-y;
- }
- ha-card.compact .button {
- min-height: 3rem !important;
- }
- .button.off {
- background-color: var(--btn-bg-color-off);
- }
-
- /* --- ICON --- */
-
- .icon {
- position: relative;
- cursor: pointer;
- width: var(--mdc-icon-size, 24px);
- height: var(--mdc-icon-size, 24px);
- box-sizing: border-box;
- padding: 0;
- outline: none;
- animation: var(--icon-rotate-speed, 0s) linear 0s infinite normal both running rotate;
- -webkit-tap-highlight-color: transparent;
- }
- .icon ha-icon {
- filter: var(--icon-filter, brightness(100%));
- color: var(--icon-color);
- transition: color 0.4s ease-in-out 0s, filter 0.2s linear 0s;
- }
- .icon.has-picture {
- background-size: cover;
- border-radius: 50%;
- }
- .icon.has-picture ha-icon{
- display: none;
- }
- .unavailable .icon ha-icon {
- color: var(--disabled-text-color);
- }
- .compact .icon {
- float: left;
- }
-
- /* --- TEXT --- */
-
- .text {
- position: absolute;
- bottom: 0;
- left: 0;
- padding: 0.8rem;
- pointer-events: none;
- user-select: none;
- font-size: 1.1rem;
- line-height: 1.3rem;
- max-width: calc(100% - 2em);
- /*text-shadow: rgb(255 255 255 / 10%) -1px -1px 1px, rgb(0 0 0 / 50%) 1px 1px 1px;*/
- }
- .compact .text {
- position: relative;
- top: 0.5rem;
- left: 0.5rem;
- display: inline-block;
- padding: 0;
- height: 1.3rem;
- width: 100%;
- overflow: hidden;
- max-width: calc(100% - 4em);
- }
- .compact.hide-action .text {
- max-width: calc(100% - 2em);
- }
-
- /* --- LABEL --- */
-
- .name {
- color: var(--label-color-on, var(--primary-text-color, white));
- text-overflow: ellipsis;
- overflow: hidden;
- white-space: nowrap;
- text-shadow: var(--label-text-shadow, none);
- }
- .off .name {
- color: var(--label-color-off, var(--primary-text-color, white));
- }
- .unavailable.off .name,
- .unavailable .name {
- color: var(--disabled-text-color);
- }
- .compact .name {
- display: inline-block;
- max-width: calc(100% - 3.5em);
- }
-
- /* --- STATE --- */
-
- .state {
- color: var(--state-color-on, var(--label-badge-text-color, white));
- text-overflow: ellipsis;
- white-space: nowrap;
- text-shadow: var(--state-text-shadow);
- transition: font-size 0.1s ease-in-out;
- }
- .changing .state {
- font-size: 150%;
- }
- .off .state {
- color: var(--state-color-off, var(--disabled-text-color));
- }
- .unavailable .state {
- color: var(--disabled-text-color);
- }
- .compact .state {
- display: inline-block;
- max-width: calc(100% - 0em);
- overflow: hidden;
- }
-
-
- /* --- SLIDER --- */
-
- .slider {
- position: absolute;
- top: 0px;
- left: 0px;
- height: 100%;
- width: 100%;
- background-color: var( --ha-card-background, var(--card-background-color, var(--btn-bg-color-on, black)) );
- cursor: ew-resize;
- z-index: 0;
- }
- .slider[data-mode="bottom-top"] {
- cursor: ns-resize;
- }
- .slider[data-mode="top-bottom"] {
- cursor: ns-resize;
- }
- .slider:active {
- cursor: grabbing;
- }
-
- /* --- SLIDER OVERLAY --- */
-
- .slider .toggle-overlay {
- position: absolute;
- top: 0px;
- left: 0px;
- height: 100%;
- width: 100%;
- cursor: pointer;
- opacity: 0;
- z-index: 999;
- }
-
- /* --- SLIDER BACKGROUND --- */
-
- .slider-bg {
- position: absolute;
- top: 0;
- left: 0px;
- height: 100%;
- width: 100%;
- background: var(--slider-bg);
- background-size: var(--slider-bg-size, 100% 100%);
- background-color: var(--slider-bg-color, transparent);
- background-position: var(--slider-bg-position, 0 0);
- filter: var(--slider-bg-filter, brightness(100%));
- }
- .off .slider .slider-bg {
- background-color: var( --ha-card-background, var(--card-background-color, var(--btn-bg-color-off, black)) );
- }
- .slider[data-background="solid"] .slider-bg {
- --slider-bg-color: var(--slider-color);
- }
- .slider[data-background="triangle"] .slider-bg {
- --slider-bg-direction: to bottom right;
- --slider-bg: linear-gradient(var(--slider-bg-direction), transparent 0%, transparent 50%, var(--slider-color) 50%, var(--slider-color) 100%);
- border-right: 0px solid;
- }
- .slider[data-background="triangle"][data-mode="bottom-top"] .slider-bg {
- --slider-bg-direction: to top left;
- }
- .slider[data-background="triangle"][data-mode="top-bottom"] .slider-bg {
- --slider-bg-direction: to bottom left;
- }
- .slider[data-background="custom"] .slider-bg {
- --slider-bg: repeating-linear-gradient(-45deg, var(--slider-color) 0, var(--slider-color) 1px, var(--slider-color) 0, transparent 10%);
- --slider-bg-size: 30px 30px;
- }
- .slider[data-background="gradient"] .slider-bg {
- --slider-bg: linear-gradient(var(--slider-bg-direction), rgba(0, 0, 0, 0) -10%, var(--slider-color) 100%);
- }
- .slider[data-background="striped"] .slider-bg {
- --slider-bg: linear-gradient(var(--slider-bg-direction), var(--slider-color), var(--slider-color) 50%, transparent 50%, transparent);
- --slider-bg-size: 4px 100%;
- }
- .slider[data-background="striped"][data-mode="bottom-top"] .slider-bg,
- .slider[data-background="striped"][data-mode="top-bottom"] .slider-bg {
- --slider-bg-size: 100% 4px;
- }
- .slider[data-mode="bottom-top"] .slider-bg {
- --slider-bg-direction: to top;
- }
- .slider[data-mode="top-bottom"] .slider-bg {
- --slider-bg-direction: to bottom;
- }
-
- /* --- SLIDER THUMB --- */
-
- .slider-thumb {
- position: relative;
- width: 100%;
- height: 100%;
- transform: translateX(var(--slider-value));
- background: transparent;
- transition: transform var(--slider-transition-duration) ease-in;
- }
- .changing .slider .slider-thumb {
- transition: none;
- }
- .slider[data-mode="top-bottom"] .slider-thumb {
- transform: translateY(var(--slider-value)) !important;
- }
- .slider[data-mode="bottom-top"] .slider-thumb {
- transform: translateY(calc(var(--slider-value) * -1)) !important;
- }
-
- .slider-thumb:before {
- content: '';
- position: absolute;
- top: 0;
- left: -2px;
- height: 100%;
- width: 2px;
- background: var(--slider-color);
- opacity: 0;
- transition: opacity 0.2s ease-in-out 0s;
- box-shadow: var(--slider-color) 0px 1px 5px 1px;
- z-index: 999;
- }
- .slider[data-mode="top-bottom"] .slider-thumb:before {
- top: -2px;
- left: 0px;
- height: 2px;
- width: 100%;
- }
- .changing .slider-thumb:before {
- opacity: 0.5;
- }
- .off.changing .slider-thumb:before {
- opacity: 0;
- }
-
- .slider-thumb:after {
- content: '';
- position: absolute;
- top: 0;
- left: 0px;
- height: 100%;
- width: 100%;
- background: var( --ha-card-background, var(--card-background-color, var(--btn-bg-color-on, black)) );
- opacity: 1;
- }
- .slider[data-show-track="true"] .slider-thumb:after {
- opacity: 0.9;
- }
- .off .slider[data-show-track="true"] .slider-thumb:after {
- opacity: 1;
- }
-
- /* --- ACTION BUTTON --- */
-
- .action {
- position: relative;
- float: right;
- width: var(--mdc-icon-size, 24px);
- height: var(--mdc-icon-size, 24px);
- color: var(--action-icon-color-on, var(--paper-item-icon-color, black));
- cursor: pointer;
- outline: none;
- -webkit-tap-highlight-color: transparent;
- }
- .action ha-switch {
- position: absolute;
- right: 0;
- top: 5px;
- }
- .off .action {
- color: var(--action-icon-color-off, var(--paper-item-icon-color, black));
- }
- .unavailable .action {
- color: var(--disabled-text-color);
- }
-
-
- .circular-loader {
- position: absolute;
- left: -8px;
- top: -8px;
- width: calc(var(--mdc-icon-size, 24px) + 16px);
- height: calc(var(--mdc-icon-size, 24px) + 16px);
- opacity: 0;
- transition: opacity 0.2s ease-in-out;
- animation: rotate 2s linear infinite;
- }
- .action.loading .circular-loader {
- opacity: 1;
- }
-
- .loader-path {
- fill: none;
- stroke-width: 2px;
- stroke: var(--action-spinner-color, var(--label-badge-text-color, white));
- animation: animate-stroke 1.5s ease-in-out infinite both;
- stroke-linecap: round;
- }
-
- /* --- MISC --- */
-
- .unavailable .slider .toggle-overlay,
- .unavailable .action,
- .unavailable .action ha-switch,
- .unavailable .slider {
- cursor: not-allowed !important;
- }
-
-
- @keyframes rotate {
- 100% {
- transform: rotate(360deg);
- }
- }
-
- @keyframes animate-stroke {
- 0% {
- stroke-dasharray: 1, 200;
- stroke-dashoffset: 0;
- }
- 50% {
- stroke-dasharray: 89, 200;
- stroke-dashoffset: -35;
- }
- 100% {
- stroke-dasharray: 89, 200;
- stroke-dashoffset: -124;
- }
- }
- `}};t([Zt({attribute:!1})],xo.prototype,"hass",void 0),t([Kt()],xo.prototype,"config",void 0),t([Jt(".state")],xo.prototype,"stateText",void 0),t([Jt(".button")],xo.prototype,"button",void 0),t([Jt(".action")],xo.prototype,"action",void 0),t([Jt(".slider")],xo.prototype,"slider",void 0),t([te({passive:!0})],xo.prototype,"onPointerDown",null),t([te({passive:!0})],xo.prototype,"onPointerUp",null),t([te({passive:!0})],xo.prototype,"onPointerCancel",null),t([te({passive:!0})],xo.prototype,"onPointerMove",null),xo=t([Yt("slider-button-card")],xo);export{xo as SliderButtonCard};
diff --git a/hacs.json b/hacs.json
index afe12cd..3f8fd45 100644
--- a/hacs.json
+++ b/hacs.json
@@ -1,6 +1,5 @@
{
"name": "Slider Button Card",
"render_readme": true,
- "filename": "slider-button-card.js",
- "domains": ["light", "fan", "cover", "switch", "input_boolean", "media_player"]
+ "filename": "slider-button-card.js"
}
diff --git a/package-lock.json b/package-lock.json
index 3619e25..87c2053 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "slider-button-card",
- "version": "1.10.3",
+ "version": "1.10.9",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "slider-button-card",
- "version": "1.10.3",
+ "version": "1.10.9",
"license": "MIT",
"dependencies": {
"@ctrl/tinycolor": "^3.4.0",
@@ -36,7 +36,6 @@
"rollup-plugin-serve": "^1.1.0",
"rollup-plugin-terser": "^5.3.1",
"rollup-plugin-typescript2": "^0.24.3",
- "rollup-plugin-uglify": "^6.0.4",
"typescript": "^3.9.7"
}
},
@@ -3094,27 +3093,6 @@
"integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
"dev": true
},
- "node_modules/rollup-plugin-uglify": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-6.0.4.tgz",
- "integrity": "sha512-ddgqkH02klveu34TF0JqygPwZnsbhHVI6t8+hGTcYHngPkQb5MIHI0XiztXIN/d6V9j+efwHAqEL7LspSxQXGw==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "jest-worker": "^24.0.0",
- "serialize-javascript": "^2.1.2",
- "uglify-js": "^3.4.9"
- },
- "peerDependencies": {
- "rollup": ">=0.66.0 <2"
- }
- },
- "node_modules/rollup-plugin-uglify/node_modules/serialize-javascript": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
- "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
- "dev": true
- },
"node_modules/rollup-pluginutils": {
"version": "2.8.2",
"resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
@@ -3615,18 +3593,6 @@
"node": ">=4.2.0"
}
},
- "node_modules/uglify-js": {
- "version": "3.13.6",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.6.tgz",
- "integrity": "sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA==",
- "dev": true,
- "bin": {
- "uglifyjs": "bin/uglifyjs"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/unbox-primitive": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
@@ -6101,26 +6067,6 @@
}
}
},
- "rollup-plugin-uglify": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-6.0.4.tgz",
- "integrity": "sha512-ddgqkH02klveu34TF0JqygPwZnsbhHVI6t8+hGTcYHngPkQb5MIHI0XiztXIN/d6V9j+efwHAqEL7LspSxQXGw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "jest-worker": "^24.0.0",
- "serialize-javascript": "^2.1.2",
- "uglify-js": "^3.4.9"
- },
- "dependencies": {
- "serialize-javascript": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
- "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
- "dev": true
- }
- }
- },
"rollup-pluginutils": {
"version": "2.8.2",
"resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
@@ -6538,12 +6484,6 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz",
"integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w=="
},
- "uglify-js": {
- "version": "3.13.6",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.6.tgz",
- "integrity": "sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA==",
- "dev": true
- },
"unbox-primitive": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
diff --git a/package.json b/package.json
index 6fc27f5..337040b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "slider-button-card",
- "version": "1.10.3",
+ "version": "1.10.9",
"description": "Lovelace slider-button-card",
"keywords": [
"home-assistant",
@@ -12,7 +12,7 @@
],
"module": "slider-button-card.js",
"repository": {
- "url": "https://github.com/mattieha/slider-button-card"
+ "url": "https://github.com/custom-cards/slider-button-card"
},
"author": "M Hoog Antink",
"license": "MIT",
@@ -44,7 +44,6 @@
"rollup-plugin-serve": "^1.1.0",
"rollup-plugin-terser": "^5.3.1",
"rollup-plugin-typescript2": "^0.24.3",
- "rollup-plugin-uglify": "^6.0.4",
"typescript": "^3.9.7"
},
"scripts": {
diff --git a/src/controllers/fan-controller.ts b/src/controllers/fan-controller.ts
index 71a4189..15d43e3 100644
--- a/src/controllers/fan-controller.ts
+++ b/src/controllers/fan-controller.ts
@@ -29,7 +29,7 @@ export class FanController extends Controller {
}
get _step(): number {
- return this.stateObj.attributes.percentage_step;
+ return this.hasSlider ? this.stateObj.attributes.percentage_step : 1;
}
get label(): string {
@@ -44,7 +44,7 @@ export class FanController extends Controller {
}
get hasSlider(): boolean {
- return 'speed' in this.stateObj.attributes;
+ return 'percentage' in this.stateObj.attributes;
}
get _max(): number {
@@ -53,9 +53,14 @@ export class FanController extends Controller {
get iconRotateSpeed(): string {
let speed = 0;
- if (this.percentage > 0) {
- speed = 3 - ((this.percentage / 100) * 2);
+ if (this.hasSlider) {
+ if (this.percentage > 0) {
+ speed = 3 - ((this.percentage / 100) * 2);
+ }
+ } else {
+ speed = this._value
}
+
return `${speed}s`
}