UNPKG

iobroker.lovelace

Version:

With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI

25 lines 17.1 kB
export const __rspack_esm_id=49575;export const __rspack_esm_ids=[49575];export const __webpack_modules__={2226(e,a,t){t(18111),t(61701);var i=t(62826),r=t(35211),s=t(5124),o=t(22441),n=t(6412),l=t(63672),c=t(89784),d=t(1087),h=t(15638),p=t(22792);t(64013),t(92677);class _ extends s.WF{render(){const e=this.maxColumns??3,a=Math.min(e,this.options.length);return s.qy` <ha-radio-group class="list" style="${(0,c.W)({"--columns":a})}" .value="${this.value}" @change="${this._radioChanged}"> ${this.options.map(e=>this._renderOption(e))} </ha-radio-group> `}_renderOption(e){const a=1===this.maxColumns&&!this.stackedImage,t=1===this.maxColumns&&this.stackedImage,i=e.disabled||this.disabled||!1,r=e.value===this.value,o=this._ui?.themes.darkMode||!1,c=!!this._i18n&&(0,h.qC)(this._i18n.language,this._i18n.translationMetadata.translations),d="object"==typeof e.image?o&&e.image.src_dark||e.image.src:e.image,p="object"==typeof e.image&&(c&&e.image.flip_rtl);return s.qy` <label class="option ${(0,n.H)({horizontal:a,stacked:t,selected:r})}" ?disabled="${i}"> <div class="content"> <ha-radio-option aria-describedby="${(0,l.J)(e.description?`desc-${e.value}`:void 0)}" aria-labelledby="${`label-${e.value}`}" .value="${e.value}" .disabled="${i}"></ha-radio-option> <div class="text"> <span id="${`label-${e.value}`}" class="label">${e.label}</span> ${e.description?s.qy`<span class="description" id="desc-${e.value}">${e.description}</span>`:s.s6} </div> </div> ${d?s.qy` <img class="${p?"flipped":""}" alt="" src="${d}"> `:s.s6} </label> `}_radioChanged(e){e.stopPropagation();const a=e.currentTarget.value;this.disabled||void 0===a||a===(this.value??"")||(0,d.r)(this,"value-changed",{value:a})}constructor(...e){super(...e),this.options=[],this.stackedImage=!1}}_.styles=s.AH`.list::part(form-control-input){display:grid;grid-template-columns:repeat(var(--columns,1),minmax(0,1fr));gap:var(--ha-space-3)}.option{position:relative;display:block;border:1px solid var(--divider-color);border-radius:var(--ha-card-border-radius,var(--ha-border-radius-lg));display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:12px;gap:var(--ha-space-2);overflow:hidden;cursor:pointer}.option .content{position:relative;display:flex;flex-direction:row;gap:var(--ha-space-2);min-width:0;width:100%}.option .content ha-radio-option{--ha-radio-option-control-margin:0;margin:0;flex:none}.option .content .text{display:flex;flex-direction:column;gap:var(--ha-space-1);min-width:0;flex:1;justify-content:center}.option .content .text .label{color:var(--primary-text-color);font-size:var(--ha-font-size-m);font-weight:var(--ha-font-weight-normal);line-height:var(--ha-line-height-condensed);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.option .content .text .description{color:var(--secondary-text-color);font-size:var(--ha-font-size-s);font-weight:var(--ha-font-weight-normal);line-height:var(--ha-line-height-condensed)}img{position:relative;max-width:var(--ha-select-box-image-size,96px);max-height:var(--ha-select-box-image-size,96px);margin:auto}.flipped{transform:scaleX(-1)}.option.horizontal{flex-direction:row;align-items:flex-start}.option.horizontal img{margin:0}.option.stacked{align-items:stretch}.option.stacked img{max-width:100%;max-height:var(--ha-select-box-image-size,96px);margin:0}.option:before{content:"";display:block;inset:0;position:absolute;background-color:transparent;pointer-events:none;opacity:.2;transition:background-color 180ms ease-in-out,opacity 180ms ease-in-out}.option:hover:before{background-color:var(--divider-color)}.option.selected:before{background-color:var(--primary-color)}.option[disabled]{cursor:not-allowed}.option[disabled] .content,.option[disabled] img{opacity:.5}.option[disabled]:before{background-color:var(--disabled-color);opacity:.05}`,(0,i.Cg)([(0,o.MZ)({attribute:!1})],_.prototype,"options",void 0),(0,i.Cg)([(0,o.MZ)({attribute:!1})],_.prototype,"value",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean})],_.prototype,"disabled",void 0),(0,i.Cg)([(0,o.MZ)({type:Number,attribute:"max_columns"})],_.prototype,"maxColumns",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean,attribute:"stacked_image"})],_.prototype,"stackedImage",void 0),(0,i.Cg)([(0,o.wk)(),(0,r.Fg)({context:p.D5,subscribe:!0})],_.prototype,"_i18n",void 0),(0,i.Cg)([(0,o.wk)(),(0,r.Fg)({context:p.EK,subscribe:!0})],_.prototype,"_ui",void 0),_=(0,i.Cg)([(0,o.EM)("ha-select-box")],_)},64013(e,a,t){var i=t(62826),r=t(97086),s=t(5124),o=t(22441);class n extends r.A{static get styles(){return[r.A.styles,s.AH`:host{--wa-form-control-required-content:var( --ha-radio-group-required-marker, var(--ha-input-required-marker, "*") );--wa-form-control-required-content-offset:var( --ha-radio-group-required-marker-offset, 0.1rem )}`]}constructor(){super(),this.radioTag="ha-radio-option"}}n=(0,i.Cg)([(0,o.EM)("ha-radio-group")],n)},92677(e,a,t){var i=t(62826),r=t(17010),s=t(5124),o=t(22441);class n extends r.A{static get styles(){return[r.A.styles,s.AH`:host{--wa-form-control-activated-color:var( --ha-radio-option-active-color, var(--ha-color-fill-primary-loud-resting) );--wa-form-control-height:var(--ha-radio-option-height, 40px);--wa-form-control-toggle-size:var( --ha-radio-option-toggle-size, 20px );--wa-form-control-border-width:var( --ha-radio-option-border-width, var(--ha-border-width-md) );--wa-form-control-border-color:var( --ha-radio-option-border-color, var(--ha-color-border-neutral-normal) );--wa-form-control-background-color:var( --ha-radio-option-background-color, var(--wa-form-control-background-color) );--checked-icon-color:var( --ha-radio-option-checked-icon-color, var(--wa-form-control-activated-color) );--checked-icon-scale:var(--ha-radio-option-checked-icon-scale, 0.7)}:host([appearance=default]) .control{margin:var(--ha-radio-option-control-margin,var(--ha-space-3) var(--ha-space-2) var(--ha-space-3) var(--ha-space-3))}:host(:not([aria-checked=true],[aria-disabled=true]):hover) .control{border-color:var(--ha-radio-option-border-color-hover,var(--ha-radio-option-border-color,var(--ha-color-border-neutral-loud)));background-color:var(--ha-radio-option-background-color-hover,var(--ha-color-fill-neutral-quiet-hover))}:host([aria-checked=true]) .control{background-color:var(--ha-radio-option-checked-background-color,var(--ha-color-fill-primary-normal-resting));color:var(--checked-icon-color);border-color:var(--checked-icon-color)}[part~=label]{display:inline-flex;align-items:center;cursor:pointer}:host([disabled]) [part~=label]{cursor:not-allowed}`]}}n=(0,i.Cg)([(0,o.EM)("ha-radio-option")],n)},54618(e,a,t){t.a(e,async function(e,i){try{t.r(a);t(74423),t(18111),t(20116),t(61701),t(13579);var r=t(62826),s=t(5124),o=t(22441),n=t(1087),l=t(38962),c=t(18350),d=t(72554),h=(t(93444),t(64013),t(92677),t(2226),t(65829)),p=t(91485),_=t(40910),u=t(14503),g=e([l,c,d,h,p]);[l,c,d,h,p]=g.then?(await g)():g;class y extends s.WF{async showDialog(e){this._params=e,this._error="",this._credentialDataDirty=!1,this._open=!0;const a=this._existingCredential(e);e.user?(this._userName=e.user.user_name||"",this._userType=e.user.user_type):(this._userName="",this._userType=(0,_.FU)(e.capabilities)[0]??""),this._credentialType=a?.type??(0,_.b7)(e.capabilities)[0]??"",this._credentialData="",this._initialUserName=this._userName,this._initialUserType=this._userType}_existingCredential(e){return e.user?.credentials.find(e=>_.zL.includes(e.type))}get _enterableTypes(){return this._params?(0,_.b7)(this._params.capabilities):[]}get _selectedTypeCapability(){return this._params?.capabilities.supported_credential_types[this._credentialType]}get _supportsUserNames(){return(this._params?.capabilities.max_user_name_length??0)>0}get _userTypeOptions(){return this._params?(0,_.FU)(this._params.capabilities).map(e=>({value:e,label:this.hass.localize(`ui.panel.config.zwave_js.credentials.users.user_types.${e}.label`)||e,description:this.hass.localize(`ui.panel.config.zwave_js.credentials.users.user_types.${e}.description`)})):[]}render(){if(!this._params)return s.s6;const e=!this._params.user,a=this._enterableTypes.length>0,t=this._enterableTypes.length>1,i=this._userTypeOptions,r=i.length>1,o=i.some(e=>e.value===this._userType),n=!e&&!a,l=!e&&!this._supportsUserNames,c=!(e||r||o||!this._userType),d=e?this.hass.localize("ui.panel.config.zwave_js.credentials.users.add"):this.hass.localize("ui.panel.config.zwave_js.credentials.users.edit"),h=this._params.capabilities.max_user_name_length??20,p=this._selectedTypeCapability?.min_length??4,_=this._selectedTypeCapability?.max_length??10,u="pin_code"===this._credentialType;return s.qy` <ha-dialog .hass="${this.hass}" .open="${this._open}" header-title="${d}" @closed="${this._dialogClosed}"> <div class="form"> ${this._error?s.qy`<ha-alert alert-type="error">${this._error}</ha-alert>`:s.s6} ${n?s.qy`<ha-alert alert-type="warning"> ${this.hass.localize("ui.panel.config.zwave_js.credentials.errors.no_compatible_credential_types")} </ha-alert>`:s.s6} ${l?s.qy`<p class="user-id-info"> ${this.hass.localize("ui.panel.config.zwave_js.credentials.users.unnamed_user",{index:this._params.user.user_id})} </p>`:s.s6} ${this._supportsUserNames?s.qy` <ha-input .label="${this.hass.localize("ui.panel.config.zwave_js.credentials.users.name")}" .value="${this._userName}" @input="${this._handleNameChange}" maxlength="${h}" autofocus></ha-input> `:s.s6} ${a?s.qy` ${t?s.qy` <ha-radio-group name="credential-type" .label="${this.hass.localize("ui.panel.config.zwave_js.credentials.credential_data.type")}" .value="${this._credentialType}" @change="${this._handleCredentialTypeChanged}"> ${this._enterableTypes.map(e=>s.qy` <ha-radio-option value="${e}"> ${this.hass.localize(`ui.panel.config.zwave_js.credentials.credential_types.${e}`)} </ha-radio-option> `)} </ha-radio-group> `:s.s6} <ha-input .label="${this.hass.localize(`ui.panel.config.zwave_js.credentials.credential_data.${this._credentialType}`)}" .value="${this._credentialData}" @input="${this._handleCredentialDataChange}" @beforeinput="${this._handleCredentialBeforeInput}" @blur="${this._handleCredentialBlur}" type="password" password-toggle autocomplete="off" inputmode="${u?"numeric":"text"}" pattern="${u?"[0-9]+":".+"}" placeholder="${this.hass.localize(u?"ui.panel.config.zwave_js.credentials.credential_data.placeholder_pin":"ui.panel.config.zwave_js.credentials.credential_data.placeholder",{min:p,max:_})}" minlength="${p}" maxlength="${_}" ?required="${e}" auto-validate ?invalid="${this._credentialDataDirty&&!!this._credentialError}" validation-message="${this._credentialError||""}"></ha-input> `:s.s6} ${r?s.qy` <div class="user-type-section"> <label for="user-type-select"> ${this.hass.localize("ui.panel.config.zwave_js.credentials.users.type")} </label> <ha-select-box id="user-type-select" .options="${i}" .value="${this._userType}" .maxColumns="${1}" @value-changed="${this._handleUserTypeChanged}"></ha-select-box> </div> `:c?s.qy` <div class="user-type-section"> <label> ${this.hass.localize("ui.panel.config.zwave_js.credentials.users.type")} </label> <p class="user-type-readonly"> ${this.hass.localize(`ui.panel.config.zwave_js.credentials.users.user_types.${this._userType}.label`)||this._userType} </p> </div> `:s.s6} </div> <ha-dialog-footer slot="footer"> <ha-button slot="secondaryAction" appearance="plain" @click="${this.closeDialog}" ?disabled="${this._saving}"> ${this.hass.localize("ui.common.cancel")} </ha-button> <ha-button slot="primaryAction" @click="${this._save}" ?disabled="${this._saving||!this._canSave}" ?loading="${this._saving}"> ${e?this.hass.localize("ui.panel.config.zwave_js.credentials.users.add"):this.hass.localize("ui.common.save")} </ha-button> </ha-dialog-footer> </ha-dialog> `}_handleNameChange(e){this._userName=e.target.value}_handleCredentialDataChange(e){let a=e.target.value;if("pin_code"===this._credentialType){const t=a.replace(/\D/g,"");t!==a&&(e.target.value=t,a=t)}this._credentialData=a}_handleCredentialBeforeInput(e){if("pin_code"!==this._credentialType)return;const a=e.data;a&&/\D/.test(a)&&e.preventDefault()}_handleCredentialBlur(){this._credentialDataDirty=!0}get _canSave(){return!!this._params&&(!!this._enterableTypes.length&&(!(this._supportsUserNames&&!this._userName.trim())&&(!!this._credentialType&&(!this._credentialError&&(this._params.user?this._credentialTypeChanged?!!this._credentialData:!!this._credentialData||this._userChanged:!!this._credentialData)))))}get _userChanged(){return this._userName!==this._initialUserName||this._userType!==this._initialUserType}get _credentialTypeChanged(){if(!this._params?.user)return!1;const e=this._existingCredential(this._params);return!!e&&this._credentialType!==e.type}get _credentialError(){if(!this._params)return"";if(this._params.user&&!this._credentialData&&!this._credentialTypeChanged)return"";switch((0,_.Yr)(this._credentialData,this._credentialType,this._selectedTypeCapability)){case"required":return this.hass.localize("ui.panel.config.zwave_js.credentials.errors.credential_required");case"length":{const e=this._selectedTypeCapability?.min_length??4,a=this._selectedTypeCapability?.max_length??10;return this.hass.localize("ui.panel.config.zwave_js.credentials.errors.credential_length",{min:e,max:a})}case"pin_digits_only":return this.hass.localize("ui.panel.config.zwave_js.credentials.errors.pin_digits_only");default:return""}}_handleCredentialTypeChanged(e){this._credentialType=e.currentTarget.value,this._credentialData="",this._credentialDataDirty=this._credentialTypeChanged}_handleUserTypeChanged(e){this._userType=e.detail.value}async _save(){if(!this._params)return;if(this._error="",this._credentialDataDirty=!0,this._supportsUserNames&&!this._userName.trim())return void(this._error=this.hass.localize("ui.panel.config.zwave_js.credentials.errors.name_required"));const e=this._credentialType;if(e&&!this._credentialError){this._saving=!0;try{this._params.user?await this._saveExistingUser(e):await this._saveNewUser(e)}catch(e){this._error=e.message||this.hass.localize("ui.panel.config.zwave_js.credentials.errors.save_failed")}finally{this._saving=!1}}}async _saveNewUser(e){const a=this._params,{user_id:t}=await(0,_.xi)(this.hass,a.entity_id,{user_name:this._supportsUserNames?this._userName.trim():void 0,user_type:this._userType,active:!0});try{await(0,_.tl)(this.hass,a.entity_id,{user_id:t,credential_type:e,credential_data:this._credentialData})}catch(e){try{await(0,_.yR)(this.hass,a.entity_id,t)}catch{}return void(this._error=this.hass.localize("ui.panel.config.zwave_js.credentials.errors.add_user_failed",{message:e.message||this.hass.localize("ui.panel.config.zwave_js.credentials.errors.save_failed")}))}a.onSaved(),this.closeDialog()}async _saveExistingUser(e){const a=this._params,t=a.user,i=this._existingCredential(a);if(this._userChanged&&await(0,_.xi)(this.hass,a.entity_id,{user_id:t.user_id,user_name:this._supportsUserNames?this._userName.trim():void 0,user_type:this._userType}),this._credentialData){const r=!!i&&i.type!==e;r&&await(0,_.QR)(this.hass,a.entity_id,{user_id:t.user_id,credential_type:i.type,credential_slot:i.slot}),await(0,_.tl)(this.hass,a.entity_id,{user_id:t.user_id,credential_type:e,credential_data:this._credentialData,credential_slot:r?void 0:i?.slot})}a.onSaved(),this.closeDialog()}closeDialog(){this._open=!1}_dialogClosed(){this._params=void 0,this._userName="",this._userType="",this._credentialType="",this._credentialData="",this._saving=!1,this._error="",this._credentialDataDirty=!1,(0,n.r)(this,"dialog-closed",{dialog:this.localName})}static get styles(){return[u.nA,s.AH`.form{display:flex;flex-direction:column;gap:var(--ha-space-4)}.user-type-section{display:flex;flex-direction:column;gap:var(--ha-space-2)}.user-type-section>label{font-weight:500;color:var(--primary-text-color)}.user-type-readonly{margin:0;color:var(--primary-text-color)}.user-id-info{margin:0;color:var(--secondary-text-color)}ha-alert{display:block}`]}constructor(...e){super(...e),this._userName="",this._userType="",this._credentialType="",this._credentialData="",this._saving=!1,this._error="",this._credentialDataDirty=!1,this._open=!1,this._initialUserName="",this._initialUserType=""}}(0,r.Cg)([(0,o.MZ)({attribute:!1})],y.prototype,"hass",void 0),(0,r.Cg)([(0,o.wk)()],y.prototype,"_params",void 0),(0,r.Cg)([(0,o.wk)()],y.prototype,"_userName",void 0),(0,r.Cg)([(0,o.wk)()],y.prototype,"_userType",void 0),(0,r.Cg)([(0,o.wk)()],y.prototype,"_credentialType",void 0),(0,r.Cg)([(0,o.wk)()],y.prototype,"_credentialData",void 0),(0,r.Cg)([(0,o.wk)()],y.prototype,"_saving",void 0),(0,r.Cg)([(0,o.wk)()],y.prototype,"_error",void 0),(0,r.Cg)([(0,o.wk)()],y.prototype,"_credentialDataDirty",void 0),(0,r.Cg)([(0,o.wk)()],y.prototype,"_open",void 0),y=(0,r.Cg)([(0,o.EM)("dialog-zwave_js-credential-user-edit")],y),i()}catch(e){i(e)}})}};