c.5bdef5ef.js 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import{_ as e,j as t,e as i,y as l,k as r,J as s,d as a,n}from"./main-ec7846c8.js";import"./c.541a83df.js";import"./c.0e3055bd.js";import"./c.8e28b461.js";import"./c.eea05cf6.js";import"./c.3db34379.js";let d=e([n("ha-selector-number")],(function(e,t){return{F:class extends t{constructor(...t){super(...t),e(this)}},d:[{kind:"field",decorators:[i()],key:"hass",value:void 0},{kind:"field",decorators:[i()],key:"selector",value:void 0},{kind:"field",decorators:[i()],key:"value",value:void 0},{kind:"field",decorators:[i()],key:"placeholder",value:void 0},{kind:"field",decorators:[i()],key:"label",value:void 0},{kind:"field",decorators:[i()],key:"helper",value:void 0},{kind:"field",decorators:[i({type:Boolean})],key:"required",value:()=>!0},{kind:"field",decorators:[i({type:Boolean})],key:"disabled",value:()=>!1},{kind:"method",key:"render",value:function(){var e,t,i;const s="box"===this.selector.number.mode;return l`
  2. <div class="input">
  3. ${s?"":l`
  4. ${this.label?l`${this.label}${this.required?" *":""}`:""}
  5. <ha-slider
  6. .min=${this.selector.number.min}
  7. .max=${this.selector.number.max}
  8. .value=${this._value}
  9. .step=${null!==(e=this.selector.number.step)&&void 0!==e?e:1}
  10. .disabled=${this.disabled}
  11. .required=${this.required}
  12. pin
  13. ignore-bar-touch
  14. @change=${this._handleSliderChange}
  15. >
  16. </ha-slider>
  17. `}
  18. <ha-textfield
  19. .inputMode=${(this.selector.number.step||1)%1!=0?"decimal":"numeric"}
  20. .label=${"box"!==this.selector.number.mode?void 0:this.label}
  21. .placeholder=${this.placeholder}
  22. class=${r({single:"box"===this.selector.number.mode})}
  23. .min=${this.selector.number.min}
  24. .max=${this.selector.number.max}
  25. .value=${null!==(t=this.value)&&void 0!==t?t:""}
  26. .step=${null!==(i=this.selector.number.step)&&void 0!==i?i:1}
  27. helperPersistent
  28. .helper=${s?this.helper:void 0}
  29. .disabled=${this.disabled}
  30. .required=${this.required}
  31. .suffix=${this.selector.number.unit_of_measurement}
  32. type="number"
  33. autoValidate
  34. ?no-spinner=${"box"!==this.selector.number.mode}
  35. @input=${this._handleInputChange}
  36. >
  37. </ha-textfield>
  38. </div>
  39. ${!s&&this.helper?l`<ha-input-helper-text>${this.helper}</ha-input-helper-text>`:""}
  40. `}},{kind:"get",key:"_value",value:function(){var e;return null!==(e=this.value)&&void 0!==e?e:this.selector.number.min||0}},{kind:"method",key:"_handleInputChange",value:function(e){e.stopPropagation();const t=""===e.target.value||isNaN(e.target.value)?this.required?this.selector.number.min||0:void 0:Number(e.target.value);this.value!==t&&s(this,"value-changed",{value:t})}},{kind:"method",key:"_handleSliderChange",value:function(e){e.stopPropagation();const t=Number(e.target.value);this.value!==t&&s(this,"value-changed",{value:t})}},{kind:"get",static:!0,key:"styles",value:function(){return a`
  41. .input {
  42. display: flex;
  43. justify-content: space-between;
  44. align-items: center;
  45. direction: ltr;
  46. }
  47. ha-slider {
  48. flex: 1;
  49. }
  50. ha-textfield {
  51. --ha-textfield-input-width: 40px;
  52. }
  53. .single {
  54. --ha-textfield-input-width: unset;
  55. flex: 1;
  56. }
  57. `}}]}}),t);export{d as HaNumberSelector};