UNPKG

iobroker.lovelace

Version:

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

25 lines 12.3 kB
export const __rspack_esm_id=7241;export const __rspack_esm_ids=[7241];export const __webpack_modules__={2226(e,a,o){o(18111),o(61701);var t=o(62826),r=o(35211),i=o(5124),s=o(22441),n=o(6412),l=o(63672),c=o(89784),h=o(1087),d=o(15638),p=o(22792);o(64013),o(92677);class u extends i.WF{render(){const e=this.maxColumns??3,a=Math.min(e,this.options.length);return i.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,o=1===this.maxColumns&&this.stackedImage,t=e.disabled||this.disabled||!1,r=e.value===this.value,s=this._ui?.themes.darkMode||!1,c=!!this._i18n&&(0,d.qC)(this._i18n.language,this._i18n.translationMetadata.translations),h="object"==typeof e.image?s&&e.image.src_dark||e.image.src:e.image,p="object"==typeof e.image&&(c&&e.image.flip_rtl);return i.qy` <label class="option ${(0,n.H)({horizontal:a,stacked:o,selected:r})}" ?disabled="${t}"> <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="${t}"></ha-radio-option> <div class="text"> <span id="${`label-${e.value}`}" class="label">${e.label}</span> ${e.description?i.qy`<span class="description" id="desc-${e.value}">${e.description}</span>`:i.s6} </div> </div> ${h?i.qy` <img class="${p?"flipped":""}" alt="" src="${h}"> `:i.s6} </label> `}_radioChanged(e){e.stopPropagation();const a=e.currentTarget.value;this.disabled||void 0===a||a===(this.value??"")||(0,h.r)(this,"value-changed",{value:a})}constructor(...e){super(...e),this.options=[],this.stackedImage=!1}}u.styles=i.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,t.Cg)([(0,s.MZ)({attribute:!1})],u.prototype,"options",void 0),(0,t.Cg)([(0,s.MZ)({attribute:!1})],u.prototype,"value",void 0),(0,t.Cg)([(0,s.MZ)({type:Boolean})],u.prototype,"disabled",void 0),(0,t.Cg)([(0,s.MZ)({type:Number,attribute:"max_columns"})],u.prototype,"maxColumns",void 0),(0,t.Cg)([(0,s.MZ)({type:Boolean,attribute:"stacked_image"})],u.prototype,"stackedImage",void 0),(0,t.Cg)([(0,s.wk)(),(0,r.Fg)({context:p.D5,subscribe:!0})],u.prototype,"_i18n",void 0),(0,t.Cg)([(0,s.wk)(),(0,r.Fg)({context:p.EK,subscribe:!0})],u.prototype,"_ui",void 0),u=(0,t.Cg)([(0,s.EM)("ha-select-box")],u)},64013(e,a,o){var t=o(62826),r=o(97086),i=o(5124),s=o(22441);class n extends r.A{static get styles(){return[r.A.styles,i.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,t.Cg)([(0,s.EM)("ha-radio-group")],n)},92677(e,a,o){var t=o(62826),r=o(17010),i=o(5124),s=o(22441);class n extends r.A{static get styles(){return[r.A.styles,i.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,t.Cg)([(0,s.EM)("ha-radio-option")],n)},78896(e,a,o){o.a(e,async function(e,t){try{o.r(a);o(74423);var r=o(62826),i=o(5124),s=o(22441),n=o(1087),l=o(38962),c=o(18350),h=(o(93444),o(65829)),d=(o(2226),o(91485)),p=o(72554),u=o(49847),m=o(14503),g=e([l,c,h,d,p]);[l,c,h,d,p]=g.then?(await g)():g;const _=["unrestricted_user","disposable_user"];class v extends i.WF{async showDialog(e){this._params=e,this._error="",this._pinCode="",this._open=!0,e.user?(this._userName=e.user.user_name||"",this._userType=e.user.user_type):(this._userName="",this._userType="unrestricted_user")}render(){if(!this._params)return i.s6;const e=!this._params.user,a=this._params.lockInfo?.supported_credential_types?.includes("pin")??!1,o=e?this.hass.localize("ui.panel.config.matter.lock.users.add"):this.hass.localize("ui.panel.config.matter.lock.users.edit"),t=this._params.lockInfo?.min_pin_length||4,r=this._params.lockInfo?.max_pin_length||8;return i.qy` <ha-dialog .open="${this._open}" header-title="${o}" @closed="${this._dialogClosed}"> <div class="form"> ${this._error?i.qy`<ha-alert alert-type="error">${this._error}</ha-alert>`:i.s6} <ha-input .label="${this.hass.localize("ui.panel.config.matter.lock.users.name")}" .value="${this._userName}" @input="${this._handleNameChange}" maxlength="10"></ha-input> ${e&&a?i.qy` <ha-input .label="${this.hass.localize("ui.panel.config.matter.lock.credentials.data")}" .value="${this._pinCode}" @input="${this._handlePinChange}" type="password" inputmode="numeric" pattern="[0-9]*" placeholder="${this.hass.localize("ui.panel.config.matter.lock.errors.pin_placeholder",{min:t,max:r})}" minlength="${t}" maxlength="${r}" required></ha-input> `:i.s6} ${e&&!a?i.qy`<ha-alert alert-type="warning"> ${this.hass.localize("ui.panel.config.matter.lock.errors.no_credential_types_supported")} </ha-alert>`:i.s6} <div class="user-type-section"> <label>${this.hass.localize("ui.panel.config.matter.lock.users.type")}</label> <ha-select-box .options="${this._userTypeOptions}" .value="${this._userType}" .maxColumns="${1}" @value-changed="${this._handleUserTypeChanged}"></ha-select-box> </div> </div> <ha-dialog-footer slot="footer"> <ha-button slot="secondaryAction" appearance="plain" @click="${this.closeDialog}"> ${this.hass.localize("ui.common.cancel")} </ha-button> <ha-button slot="primaryAction" @click="${this._save}" .disabled="${this._saving||e&&!a}"> ${this._saving?i.qy`<ha-spinner size="small"></ha-spinner>`:e?this.hass.localize("ui.panel.config.matter.lock.users.add"):this.hass.localize("ui.common.save")} </ha-button> </ha-dialog-footer> </ha-dialog> `}_handleNameChange(e){this._userName=e.target.value}_handlePinChange(e){const a=e.target.value.replace(/\D/g,"");this._pinCode=a,e.target.value=a}get _userTypeOptions(){return _.map(e=>({value:e,label:this.hass.localize(`ui.panel.config.matter.lock.users.user_types.${e}.label`),description:this.hass.localize(`ui.panel.config.matter.lock.users.user_types.${e}.description`)}))}_handleUserTypeChanged(e){this._userType=e.detail.value}async _save(){if(!this._params)return;this._error="";const e=!this._params.user,a=this._params.lockInfo?.min_pin_length||4,o=this._params.lockInfo?.max_pin_length||8;if(this._userName.trim()){if(e){if(!this._pinCode)return void(this._error=this.hass.localize("ui.panel.config.matter.lock.errors.pin_required"));if(this._pinCode.length<a||this._pinCode.length>o)return void(this._error=this.hass.localize("ui.panel.config.matter.lock.errors.pin_length",{min:a,max:o}));if(!/^\d+$/.test(this._pinCode))return void(this._error=this.hass.localize("ui.panel.config.matter.lock.errors.pin_digits_only"))}this._saving=!0;try{if(e){const e=await(0,u._w)(this.hass,this._params.entity_id,{credential_type:"pin",credential_data:this._pinCode,user_type:this._userType});null!==e.user_index&&this._userName.trim()&&await(0,u.aj)(this.hass,this._params.entity_id,{user_index:e.user_index,user_name:this._userName.trim()})}else await(0,u.aj)(this.hass,this._params.entity_id,{user_index:this._params.user.user_index,user_name:this._userName.trim(),user_type:this._userType});this._params.onSaved(),this.closeDialog()}catch(e){this._error=e.message||this.hass.localize("ui.panel.config.matter.lock.errors.save_failed")}finally{this._saving=!1}}else this._error=this.hass.localize("ui.panel.config.matter.lock.errors.name_required")}closeDialog(){this._open=!1}_dialogClosed(){this._params=void 0,this._userName="",this._userType="unrestricted_user",this._pinCode="",this._saving=!1,this._error="",(0,n.r)(this,"dialog-closed",{dialog:this.localName})}static get styles(){return[m.nA,i.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)}ha-alert{display:block}`]}constructor(...e){super(...e),this._userName="",this._userType="unrestricted_user",this._pinCode="",this._saving=!1,this._error="",this._open=!1}}(0,r.Cg)([(0,s.MZ)({attribute:!1})],v.prototype,"hass",void 0),(0,r.Cg)([(0,s.wk)()],v.prototype,"_params",void 0),(0,r.Cg)([(0,s.wk)()],v.prototype,"_userName",void 0),(0,r.Cg)([(0,s.wk)()],v.prototype,"_userType",void 0),(0,r.Cg)([(0,s.wk)()],v.prototype,"_pinCode",void 0),(0,r.Cg)([(0,s.wk)()],v.prototype,"_saving",void 0),(0,r.Cg)([(0,s.wk)()],v.prototype,"_error",void 0),(0,r.Cg)([(0,s.wk)()],v.prototype,"_open",void 0),v=(0,r.Cg)([(0,s.EM)("dialog-matter-lock-user-edit")],v),t()}catch(e){t(e)}})}};