UNPKG

zigbee2mqtt-windfront

Version:

[![Version](https://img.shields.io/npm/v/zigbee2mqtt-windfront.svg)](https://npmjs.org/package/zigbee2mqtt-windfront) [![CI](https://github.com/Nerivec/zigbee2mqtt-windfront/actions/workflows/ci.yml/badge.svg)](https://github.com/Nerivec/zigbee2mqtt-windf

2 lines (1 loc) 3.98 kB
import{j as e,b as g,L as f,F as b,aK as h,aL as j,T as v,G as _,r as l,aw as C,c as x,C as N,a as w,k as G}from"./index-Cg_dwqpD.js";import{u as k,b as S}from"./useColumnCount-B-PyuU0g.js";import{E as y}from"./EndpointPicker-Dnt0o2EO.js";import{S as M}from"./SelectField-dfeWrxvV.js";import"./envs-CSqIi4cL.js";const E=({sourceIdx:o,group:s,endpoint:c,removeFromGroup:d})=>{const{t:r}=g(["groups","common","zigbee"]);return e.jsxs("div",{className:"mb-3 card card-border bg-base-200 border-base-300 rounded-box shadow-md",children:[e.jsx("div",{className:"card-body p-3",children:e.jsx("div",{className:"flex flex-row items-center gap-3 w-full",children:e.jsxs("div",{className:"min-w-0",children:[e.jsxs(f,{to:`/group/${o}/${s.id}/devices`,className:"link link-hover",children:["#",s.id," - ",s.friendly_name,c?` (${r(a=>a.endpoint,{ns:"zigbee"})}: ${c})`:""]}),s.description&&e.jsx("div",{className:"text-xs opacity-50 truncate",title:s.description,children:s.description})]})})}),e.jsxs("div",{className:"flex flex-row flex-wrap gap-1 mx-2 mb-2 justify-around items-center",children:[e.jsxs("div",{className:"badge badge-soft badge-ghost cursor-default me-2 tooltip","data-tip":r(a=>a.group_members),children:[e.jsx(b,{icon:h})," ",s.members.length]}),e.jsxs("div",{className:"badge badge-soft badge-ghost cursor-default me-2 tooltip","data-tip":r(a=>a.group_scenes),children:[e.jsx(b,{icon:j}),s.scenes.length]}),e.jsx(v,{item:[s,c],onClick:d,className:"btn btn-square btn-error btn-sm",title:r(a=>a.remove_from_group),modalDescription:r(a=>a.dialog_confirmation_prompt,{ns:"common"}),modalCancelLabel:r(a=>a.cancel,{ns:"common"}),children:e.jsx(b,{icon:_})})]})]})},F=o=>o?.data?e.jsx(E,{...o.data}):null,q=l.memo(({groups:o,value:s,label:c,onChange:d,...r})=>{const{t:a}=g("common"),u=l.useCallback(t=>{const{value:i}=t.target,p=Number.parseInt(i,10);d(o.find(n=>p===n.id))},[o,d]),m=l.useMemo(()=>{const t=[];for(const i of o)t.push(e.jsx("option",{value:i.id,children:i.friendly_name},i.id));return t},[o]);return e.jsxs(M,{name:"group_picker",label:c,value:s,onChange:u,...r,children:[e.jsx("option",{value:"",disabled:!0,children:a(t=>t.select_group)}),m]})}),z=l.memo(({sourceIdx:o,device:s,nonMemberGroups:c})=>{const{t:d}=g(["groups","zigbee"]),[r,a]=l.useState(""),[u,m]=l.useState(""),t=l.useMemo(()=>C(s),[s]),i=l.useCallback(n=>{m(n.id),a(t.values().next().value)},[t]),p=l.useCallback(async()=>await x(o,"bridge/request/group/members/add",{group:u.toString(),endpoint:r,device:s.ieee_address}),[o,u,s.ieee_address,r]);return e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-lg font-semibold",children:d(n=>n.add_to_group)}),e.jsxs("div",{className:"mb-3",children:[e.jsx(q,{label:d(n=>n.group,{ns:"zigbee"}),value:u,groups:c,onChange:i,required:!0}),e.jsx(y,{label:d(n=>n.endpoint,{ns:"zigbee"}),values:t,value:r,onChange:n=>a(n),required:!0})]}),e.jsx(N,{onClick:p,className:"btn btn-primary",disabled:r==null||u==null||r===""||u==="",children:d(n=>n.add_to_group)})]})});function D({sourceIdx:o,device:s}){const c=w(G(m=>m.groups[o])),d=k(),r=l.useCallback(async([m,t])=>await x(o,"bridge/request/group/members/remove",{device:s.ieee_address,endpoint:t,group:m.id.toString()}),[o,s.ieee_address]),[a,u]=l.useMemo(()=>{const m=[],t=[];for(const i of c){const p=i.members.filter(n=>n.ieee_address===s.ieee_address);if(p.length>0)for(const n of p)m.push({sourceIdx:o,group:i,endpoint:n.endpoint,removeFromGroup:r});else t.push(i)}return[m,t]},[o,c,s.ieee_address,r]);return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex flex-row flex-wrap gap-4 mb-3 w-full",children:e.jsx("div",{className:"card card-border bg-base-200 border-base-300 rounded-box shadow-md flex-1",children:e.jsx("div",{className:"card-body p-4",children:e.jsx(z,{sourceIdx:o,device:s,nonMemberGroups:u})})})}),e.jsx("div",{children:e.jsx(S,{useWindowScroll:!0,columnCount:d,data:a,ItemContent:F,className:"gap-3"},`membergroups-${a.length}`)})]})}export{D as default};