Bj12IfE6.js 10.5 KB
import{d as z,u as E,a as T,o as B,c as D,F as te,m as se,e as S,f as n,S as oe,C as H,t as G,g as e,w as b,_ as O,p as x,s as f,y as ie,k as ne,j as I,q as ae,z as le}from"./BtEn9SvP.js";import{_ as re}from"./BbvIyG5y.js";import{_ as J}from"./7yIyqIY0.js";import{_ as Q}from"./9JBjgwkJ.js";import{_ as me}from"./CGpKcNx7.js";import{u as N}from"./D34wY8wT.js";import{u as K}from"./sZhUfCvq.js";import{_ as ce}from"./3BmF-CSc.js";import{_ as ue}from"./D1XImzPn.js";import{_ as de,o as pe,s as j,a as be}from"./Bd-k_Jez.js";import{_ as fe}from"./B57PMWCO.js";import"./3laQJA1P.js";import"./BP6f2Ivu.js";import"./DYcig7R4.js";import"./CKCLIpbs.js";const _e={role:"list",class:"divide-y divide-default"},ge={class:"flex items-center gap-3 min-w-0"},ve={class:"text-sm min-w-0"},he={class:"text-highlighted font-medium truncate"},ye={class:"text-muted truncate"},Me={class:"flex items-center gap-3"},A="/settings/members",Ue=z({__name:"MembersList",props:{members:{}},emits:["updated","edit"],setup($,{emit:U}){const i=U,{t:a}=E(),t=T(),d=N(),{can:y,getDeniedReason:C}=K(),v=x(""),h=x(""),M=f(()=>y(A,"members.edit")),V=f(()=>y(A,"members.role.update")),w=f(()=>y(A,"members.remove"));function s(l){t.add({title:a("permission.toast.title"),description:a(C(A,l)),icon:"i-lucide-shield-alert",color:"warning"})}const _=f(()=>[{label:a("settings.members.role.member"),value:"member"},{label:a("settings.members.role.admin"),value:"admin"},{label:a("settings.members.role.customer"),value:"customer"}]);async function P(l,m){if(!V.value){s("members.role.update");return}if(!v.value){v.value=l.username;try{const c=await d.updateMemberRole(l.username,m);if(!c.success){t.add({title:a("common.error"),description:c.message,icon:"i-lucide-circle-alert",color:"error"});return}i("updated")}catch{t.add({title:a("common.error"),description:a("common.requestFailed"),icon:"i-lucide-circle-alert",color:"error"})}finally{v.value=""}}}async function F(l){if(!w.value){s("members.remove");return}if(!h.value){h.value=l.username;try{const m=await d.removeMember(l.username);if(!m.success){t.add({title:a("common.error"),description:m.message,icon:"i-lucide-circle-alert",color:"error"});return}i("updated")}catch{t.add({title:a("common.error"),description:a("common.requestFailed"),icon:"i-lucide-circle-alert",color:"error"})}finally{h.value=""}}}function q(l){return[{label:a("settings.members.editMember"),disabled:!M.value,onSelect:()=>{if(!M.value){s("members.edit");return}i("edit",l)}},{label:a("settings.members.removeMember"),color:"error",disabled:h.value===l.username||!w.value,onSelect:()=>{if(!w.value){s("members.remove");return}F(l)}}]}return(l,m)=>{const c=H,k=Q,R=O,u=me;return B(),D("ul",_e,[(B(!0),D(te,null,se($.members,(o,p)=>(B(),D("li",{key:p,class:"flex items-center justify-between gap-3 py-3 px-4 sm:px-6"},[S("div",ge,[n(c,oe({ref_for:!0},o.avatar,{size:"md"}),null,16),S("div",ve,[S("p",he,G(o.name),1),S("p",ye,G(o.username),1)])]),S("div",Me,[n(k,{"model-value":o.role,items:e(_),disabled:e(v)===o.username||!e(V),color:"neutral",ui:{value:"capitalize",item:"capitalize"},"onUpdate:modelValue":r=>P(o,r)},null,8,["model-value","items","disabled","onUpdate:modelValue"]),n(u,{items:q(o),content:{align:"end"}},{default:b(()=>[n(R,{icon:"i-lucide-ellipsis-vertical",color:"neutral",variant:"ghost",loading:e(h)===o.username},null,8,["loading"])]),_:2},1032,["items"])])]))),128))])}}}),Ve=Object.assign(Ue,{__name:"SettingsMembersList"}),we={class:"flex flex-wrap items-center gap-3"},Se={class:"flex justify-end gap-2"},xe=z({__name:"MemberProfileModal",props:{mode:{},modelValue:{type:Boolean},member:{default:void 0},canSubmit:{type:Boolean,default:!0},permissionKey:{default:void 0},permissionPage:{default:"/settings/members"}},emits:["update:modelValue","submitted"],setup($,{emit:U}){const i=$,a=U,{t}=E(),d=T(),y=N(),{getDeniedReason:C}=K(),v=x(!1),h=x(),M=f(()=>[{label:t("settings.members.role.member"),value:"member"},{label:t("settings.members.role.admin"),value:"admin"},{label:t("settings.members.role.customer"),value:"customer"}]),w=f(()=>pe({name:j().min(2,t("settings.profile.validation.tooShort")),email:j().email(t("settings.profile.validation.invalidEmail")),username:j().min(2,t("settings.profile.validation.tooShort")),role:be(["member","admin","customer"]),avatar:j().optional(),bio:j().optional()})),s=ae({name:"",email:"",username:"",role:"member",avatar:void 0,bio:void 0}),_=f({get:()=>i.modelValue,set:u=>a("update:modelValue",u)}),P=f(()=>i.mode==="create"?t("settings.members.inviteModal.title"):t("settings.members.editModal.title")),F=f(()=>i.mode==="create"?t("settings.members.inviteModal.description"):t("settings.members.editModal.description")),q=f(()=>i.mode==="create"?t("settings.members.inviteModal.submit"):t("settings.members.editModal.submit"));function l(){if(i.mode==="edit"&&i.member){s.name=i.member.name,s.email=i.member.email??"",s.username=i.member.username,s.role=i.member.role,s.avatar=typeof i.member.avatar.src=="string"?i.member.avatar.src:void 0,s.bio=i.member.bio;return}s.name="",s.email="",s.username="",s.role="member",s.avatar=void 0,s.bio=void 0}function m(){h.value?.click()}function c(u){const o=u.target;o.files?.length&&(s.avatar=URL.createObjectURL(o.files[0]))}function k(){_.value=!1}async function R(u){if(!i.canSubmit){d.add({title:t("permission.toast.title"),description:t(C(i.permissionPage,i.permissionKey)),icon:"i-lucide-shield-alert",color:"warning"});return}v.value=!0;try{if(i.mode==="create"){const p=await y.inviteMember(u.data);if(!p.success){d.add({title:t("common.error"),description:p.message,icon:"i-lucide-circle-alert",color:"error"});return}d.add({title:t("settings.profile.toastTitle"),description:p.message,icon:"i-lucide-check",color:"success"}),a("submitted"),k();return}if(!i.member){d.add({title:t("common.error"),description:t("common.requestFailed"),icon:"i-lucide-circle-alert",color:"error"});return}const o=await y.updateMemberProfile(i.member.username,u.data);if(!o.success){d.add({title:t("common.error"),description:o.message,icon:"i-lucide-circle-alert",color:"error"});return}d.add({title:t("settings.profile.toastTitle"),description:o.message,icon:"i-lucide-check",color:"success"}),a("submitted"),k()}catch{d.add({title:t("common.error"),description:t("common.requestFailed"),icon:"i-lucide-circle-alert",color:"error"})}finally{v.value=!1}}return ie(()=>[_.value,i.member,i.mode],([u])=>{u&&l()},{immediate:!0}),(u,o)=>{const p=J,r=ce,W=Q,X=H,L=O,Y=ue,Z=de,ee=fe;return B(),ne(ee,{open:e(_),"onUpdate:open":o[5]||(o[5]=g=>I(_)?_.value=g:null),title:e(P),description:e(F)},{body:b(()=>[n(Z,{schema:e(w),state:e(s),class:"space-y-4",onSubmit:R},{default:b(()=>[n(r,{name:"name",label:e(t)("settings.profile.name"),required:""},{default:b(()=>[n(p,{modelValue:e(s).name,"onUpdate:modelValue":o[0]||(o[0]=g=>e(s).name=g),class:"w-full"},null,8,["modelValue"])]),_:1},8,["label"]),n(r,{name:"email",label:e(t)("settings.profile.email"),required:""},{default:b(()=>[n(p,{modelValue:e(s).email,"onUpdate:modelValue":o[1]||(o[1]=g=>e(s).email=g),type:"email",class:"w-full"},null,8,["modelValue"])]),_:1},8,["label"]),n(r,{name:"username",label:e(t)("settings.profile.username"),required:""},{default:b(()=>[n(p,{modelValue:e(s).username,"onUpdate:modelValue":o[2]||(o[2]=g=>e(s).username=g),class:"w-full"},null,8,["modelValue"])]),_:1},8,["label"]),n(r,{name:"role",label:e(t)("settings.members.roleLabel"),required:""},{default:b(()=>[n(W,{modelValue:e(s).role,"onUpdate:modelValue":o[3]||(o[3]=g=>e(s).role=g),items:e(M),class:"w-full"},null,8,["modelValue","items"])]),_:1},8,["label"]),n(r,{name:"avatar",label:e(t)("settings.profile.avatar"),description:e(t)("settings.profile.avatarDesc")},{default:b(()=>[S("div",we,[n(X,{src:e(s).avatar,alt:e(s).name,size:"lg"},null,8,["src","alt"]),n(L,{label:e(t)("common.choose"),color:"neutral",type:"button",onClick:m},null,8,["label"]),S("input",{ref_key:"fileRef",ref:h,type:"file",class:"hidden",accept:".jpg, .jpeg, .png, .gif",onChange:c},null,544)])]),_:1},8,["label","description"]),n(r,{name:"bio",label:e(t)("settings.profile.bio"),description:e(t)("settings.profile.bioDesc")},{default:b(()=>[n(Y,{modelValue:e(s).bio,"onUpdate:modelValue":o[4]||(o[4]=g=>e(s).bio=g),rows:4,autoresize:"",class:"w-full"},null,8,["modelValue"])]),_:1},8,["label","description"]),S("div",Se,[n(L,{label:e(t)("common.cancel"),color:"neutral",variant:"subtle",type:"button",onClick:k},null,8,["label"]),n(L,{label:e(q),color:"primary",variant:"solid",type:"submit",disabled:!$.canSubmit,loading:e(v)},null,8,["label","disabled","loading"])])]),_:1},8,["schema","state"])]),_:1},8,["open","title","description"])}}}),ke=Object.assign(xe,{__name:"SettingsMemberProfileModal"}),Oe=z({__name:"members",async setup($){let U,i;const{t:a}=E(),t=N(),d=T(),{can:y,getDeniedReason:C}=K(),{data:v,refresh:h}=([U,i]=le(()=>t.getMembers()),U=await U,i(),U),M=x(!1),V=x(!1),w=x(),s=x(""),_=f(()=>y("/settings/members","members.invite")),P=f(()=>v.value.filter(m=>m.name.search(new RegExp(s.value,"i"))!==-1||m.username.search(new RegExp(s.value,"i"))!==-1));function F(m){w.value=m,V.value=!0}function q(){if(!_.value){d.add({title:a("permission.toast.title"),description:a(C("/settings/members","members.invite")),icon:"i-lucide-shield-alert",color:"warning"});return}M.value=!0}async function l(){await h()}return(m,c)=>{const k=O,R=re,u=J,o=Ve,p=ke;return B(),D("div",null,[n(R,{title:e(a)("settings.members.title"),description:e(a)("settings.members.description"),variant:"naked",orientation:"horizontal",class:"mb-4"},{default:b(()=>[n(k,{label:e(a)("common.invitePeople"),color:"neutral",class:"w-fit lg:ms-auto",disabled:!e(_),onClick:q},null,8,["label","disabled"])]),_:1},8,["title","description"]),n(R,{variant:"subtle",ui:{container:"p-0 sm:p-0 gap-y-0",wrapper:"items-stretch",header:"p-4 mb-0 border-b border-default"}},{header:b(()=>[n(u,{modelValue:e(s),"onUpdate:modelValue":c[0]||(c[0]=r=>I(s)?s.value=r:null),icon:"i-lucide-search",placeholder:e(a)("settings.members.searchPlaceholder"),autofocus:"",class:"w-full"},null,8,["modelValue","placeholder"])]),default:b(()=>[n(o,{members:e(P),onUpdated:l,onEdit:F},null,8,["members"])]),_:1}),n(p,{modelValue:e(M),"onUpdate:modelValue":c[1]||(c[1]=r=>I(M)?M.value=r:null),mode:"create","can-submit":e(_),"permission-key":"members.invite","permission-page":"/settings/members",onSubmitted:l},null,8,["modelValue","can-submit"]),n(p,{modelValue:e(V),"onUpdate:modelValue":c[2]||(c[2]=r=>I(V)?V.value=r:null),mode:"edit",member:e(w),"can-submit":e(y)("/settings/members","members.edit"),"permission-key":"members.edit","permission-page":"/settings/members",onSubmitted:l},null,8,["modelValue","member","can-submit"])])}}});export{Oe as default};