1import{A as nt,e as st,c as i,a as n,b as d,j as _,w as c,d as r,k as F,s as k,t as g,_ as ot,h as it,o as a,i as at,F as L,r as V,g as h,a4 as lt,K as rt}from"./DbfHA8MV.js";import{_ as dt}from"./B6x3R7Wg.js";import{_ as ut}from"./D5trcJRU.js";import{u as mt}from"./Dn1Q-KTv.js";import{u as ct}from"./Dwww0jp8.js";import{u as gt}from"./BhXNNl9z.js";import"./DLIKFUPq.js";import"./DzYWTBSO.js";const vt={class:"bg-gray-50"},pt={class:"max-w-5xl mx-auto pt-16 pb-20 p-4 min-h-screen"},ft={class:"flex items-center gap-2 mb-6 text-brand hover:text-primary-300"},xt={class:"mb-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},_t={key:0,class:"py-8 text-sm text-neutral-700"},zt={key:1,class:"py-8 text-sm text-red-600"},bt={key:2,class:"py-8 text-sm text-neutral-700"},yt={key:3,class:"overflow-x-auto"},kt={class:"min-w-full text-sm"},ht={class:"py-3 pr-4 text-neutral-600"},At={class:"py-3 text-neutral-900 align-top"},Ct={class:"py-3 align-top"},Ot={key:0,class:"space-y-2"},St={class:"inline-flex items-center gap-2 rounded-full bg-neutral-100 px-3 py-1"},Nt={class:"break-all"},$t={key:0,class:"relative"},Et={key:0,class:"absolute right-0 mt-2 w-80 rounded-lg border border-red-200 bg-white p-4 shadow-lg z-30"},It={class:"text-xs text-red-800"},Rt={class:"mt-3 flex items-center gap-2"},wt={key:1,class:"text-sm text-neutral-400"},Ft={class:"py-3 align-top"},Lt={class:"relative"},Vt={key:0,class:"absolute right-0 mt-2 w-80 rounded-lg border border-neutral-200 bg-white p-4 shadow-lg z-20"},Bt={class:"text-xs text-neutral-600 mb-3"},Pt={key:0,class:"text-xs text-red-600 mt-2"},Ut={class:"mt-3 flex items-center gap-2"},Kt={key:0,class:"mt-3 text-xs text-neutral-500"},Jt={__name:"index",setup(Mt){const{organizations:B,fetchOrganizations:C,loading:O,error:P}=mt(),{organizationAdmins:U,fetchOrganizationAdmins:K,createOrganizationAdmin:M,deleteOrganizationAdmin:j,error:S}=ct(),{profile:q,fetchProfile:D}=gt(),z=nt(),v=h(null),p=rt({}),A=h(""),f=h(null),x=h(null),T=k(()=>{var e;return((e=q.value)==null?void 0:e.is_admin)===!0}),b=k(()=>(B.value||[]).map((e,t)=>({index:t+1,organization:e}))),W=e=>e?`/organizations/${encodeURIComponent(String(e))}`:"/organizations",N=k(()=>P.value||null),$=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,y=e=>A.value===String(e||""),G=(e,t)=>{const o=String(e||"");p[o]=String(t||"")},E=e=>{const t=String(p[String(e||"")]||"").trim().toLowerCase();return $.test(t)},X=k(()=>{const e=new Map;for(const t of U.value||[]){const o=String((t==null?void 0:t.organization)||"").trim(),u=String((t==null?void 0:t.email)||"").trim().toLowerCase(),m=Number(t==null?void 0:t.id);!o||!u||(e.has(o)||e.set(o,[]),e.get(o).push({id:Number.isInteger(m)?m:null,email:u,organization:o}))}return e}),I=e=>{const t=String(e||"").trim();return X.value.get(t)||[]},H=e=>{const t=String(e||"");if(v.value===t){v.value=null;return}v.value=t},J=()=>{v.value=null},Q=e=>{const t=Number(e==null?void 0:e.id);if(!(!Number.isInteger(t)||t<=0)){if(f.value===t){f.value=null;return}f.value=t}},Y=async()=>{await C({refreshProjects:!0})},R=async e=>{const t=String(e||"").trim(),o=String(p[t]||"").trim().toLowerCase();if(!(!t||!$.test(o)))try{A.value=t,await M({email:o,organization:t}),z.add({title:"Organization admin added",color:"success"}),p[t]="",v.value=null}catch(u){console.error(u),z.add({title:"Failed to add organization admin",description:S.value||(u==null?void 0:u.message)||"Request failed",color:"error"})}finally{A.value=""}},Z=async e=>{const t=Number(e==null?void 0:e.id);if(!(!Number.isInteger(t)||t<=0))try{x.value=t,await j(t),z.add({title:"Organization admin removed",color:"success"}),f.value=null}catch(o){console.error(o),z.add({title:"Failed to remove organization admin",description:S.value||(o==null?void 0:o.message)||"Request failed",color:"error"})}finally{x.value=null}};return st(async()=>{await Promise.all([C(),K(),D()])}),(e,t)=>{const o=at,u=ot,m=it,tt=dt,et=ut;return a(),i("div",vt,[n("div",pt,[d(u,{to:"/admin"},{default:c(()=>[n("div",ft,[d(o,{name:"i-lucide-arrow-left",class:"size-5"}),t[1]||(t[1]=n("p",null,"Admin",-1))])]),_:1}),t[16]||(t[16]=n("h1",{class:"text-4xl md:text-5xl font-bold text-neutral-950 mb-8"}," Organizations ",-1)),n("div",xt,[n("div",null,[t[3]||(t[3]=n("p",{class:"text-sm text-neutral-700"},[r(" Values from Wrike custom field "),n("code",null,"Organizations"),r(". ")],-1)),d(u,{to:"/admin/organizations/weekly-digest",class:"mt-2 inline-flex text-sm font-medium text-brand hover:underline"},{default:c(()=>[...t[2]||(t[2]=[r(" Open weekly digest preview ",-1)])]),_:1})]),d(m,{size:"sm",loading:F(O),onClick:Y},{default:c(()=>[...t[4]||(t[4]=[r(" Refresh ",-1)])]),_:1},8,["loading"])]),d(et,null,{default:c(()=>[F(O)?(a(),i("div",_t," Loading organizations... ")):N.value?(a(),i("div",zt,g(N.value),1)):b.value.length===0?(a(),i("div",bt," No organizations foun
1d in Wrike. ")):(a(),i("div",yt,[n("table",kt,[t[15]||(t[15]=n("thead",null,[n("tr",{class:"border-b border-neutral-200"},[n("th",{class:"py-3 pr-4 text-left font-semibold text-neutral-900"},"#"),n("th",{class:"py-3 text-left font-semibold text-neutral-900"},"Organization"),n("th",{class:"py-3 text-left font-semibold text-neutral-900"},"Associated emails"),n("th",{class:"py-3 text-left font-semibold text-neutral-900"},"Actions")])],-1)),n("tbody",null,[(a(!0),i(L,null,V(b.value,s=>(a(),i("tr",{key:s.organization,class:"border-b border-neutral-100"},[n("td",ht,g(s.index),1),n("td",At,[d(u,{to:W(s.organization),class:"text-brand hover:underline"},{default:c(()=>[r(g(s.organization),1)]),_:2},1032,["to"])]),n("td",Ct,[I(s.organization).length?(a(),i("ul",Ot,[(a(!0),i(L,null,V(I(s.organization),l=>(a(),i("li",{key:l.id,class:"text-xs text-neutral-600"},[n("div",St,[n("span",Nt,g(l.email),1),T.value?(a(),i("div",$t,[d(m,{color:"error",variant:"ghost",icon:"i-lucide-trash-2",size:"xs",disabled:x.value===l.id,onClick:w=>Q(l)},null,8,["disabled","onClick"]),f.value===l.id?(a(),i("div",Et,[n("p",It,[t[5]||(t[5]=r(" Are you sure you want to remove ",-1)),n("strong",null,g(l.email),1),t[6]||(t[6]=r(" from ",-1)),n("strong",null,g(s.organization),1),t[7]||(t[7]=r("? ",-1))]),n("div",Rt,[d(m,{color:"error",size:"xs",loading:x.value===l.id,disabled:x.value===l.id,onClick:w=>Z(l)},{default:c(()=>[...t[8]||(t[8]=[r(" Remove ",-1)])]),_:1},8,["loading","disabled","onClick"]),d(m,{size:"xs",variant:"ghost",disabled:x.value===l.id,onClick:t[0]||(t[0]=w=>f.value=null)},{default:c(()=>[...t[9]||(t[9]=[r(" Cancel ",-1)])]),_:1},8,["disabled"])])])):_("",!0)])):_("",!0)])]))),128))])):(a(),i("span",wt,"â"))]),n("td",Ft,[n("div",Lt,[d(m,{size:"xs",variant:"outline",onClick:l=>H(s.organization)},{default:c(()=>[...t[10]||(t[10]=[r(" Add admin ",-1)])]),_:1},8,["onClick"]),v.value===s.organization?(a(),i("div",Vt,[n("p",Bt,[t[11]||(t[11]=r(" Add an admin email for ",-1)),n("strong",null,g(s.organization),1),t[12]||(t[12]=r(". ",-1))]),d(tt,{"model-value":p[s.organization]||"",type:"email",placeholder:"[email protected]",class:"w-full",disabled:y(s.organization),"onUpdate:modelValue":l=>G(s.organization,l),onKeyup:lt(l=>R(s.organization),["enter"])},null,8,["model-value","disabled","onUpdate:modelValue","onKeyup"]),p[s.organization]&&!E(s.organization)?(a(),i("p",Pt," Please enter a valid email address. ")):_("",!0),n("div",Ut,[d(m,{size:"xs",loading:y(s.organization),disabled:!E(s.organization)||y(s.organization),onClick:l=>R(s.organization)},{default:c(()=>[...t[13]||(t[13]=[r(" Add admin ",-1)])]),_:1},8,["loading","disabled","onClick"]),d(m,{size:"xs",variant:"ghost",disabled:y(s.organization),onClick:J},{default:c(()=>[...t[14]||(t[14]=[r(" Cancel ",-1)])]),_:1},8,["disabled"])])])):_("",!0)])])]))),128))])])]))]),_:1}),b.value.length>0?(a(),i("div",Kt,g(b.value.length)+" total ",1)):_("",!0)])])}}};export{Jt as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.