1import{r as j,c as se,z as ne,o,f as l,b as n,t as C,h as _,g as d,F as ae,j as ie,n as f,a as U,w as z,d as G,D as J}from"./LoginModal-v__rASBc.js";import{_ as B}from"./GradientBadge-DMfdzqWq.js";import"./_commonjsHelpers-D6-XlEtG.js";const re={class:"p-6"},oe={class:"mb-6 flex items-center gap-3"},le={class:"flex size-11 items-center justify-center rounded-full bg-gradient-to-br from-pink-100 to-rose-200 text-sm font-semibold text-pink-700 shadow-sm"},de={class:"font-semibold text-gray-900"},ce={key:0,class:"mb-4"},ue={key:1,class:"space-y-3"},me={class:"flex items-center gap-3 p-4"},ge={class:"flex flex-1 cursor-pointer items-center gap-3"},pe={class:"relative flex items-center"},_e=["checked","onChange"],fe={key:0,class:"flex items-center gap-1.5"},ye={key:0,class:"border-t border-pink-100 bg-white px-4 py-3"},he={class:"flex flex-wrap gap-6"},ve={key:0,class:"flex items-center gap-3"},xe={class:"flex cursor-pointer items-center gap-2"},ke=["onClick"],be=["onClick","title"],we={key:1,class:"flex items-center gap-3"},Ce={class:"flex cursor-pointer items-center gap-2"},ze=["onClick"],Be=["onClick","title"],Ae={key:0,class:"mt-2 text-xs text-amber-600"},$e={key:2,class:"rounded-xl border border-dashed border-gray-300 bg-gray-50 p-8 text-center"},je={key:3,class:"mt-4 flex items-center gap-2 rounded-lg bg-red-50 p-3 text-sm text-red-600"},Se={class:"mt-6 flex items-center justify-end gap-3 border-t border-gray-100 pt-4"},Me=["disabled"],Ne={key:0,class:"size-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},Ve={__name:"BranchAssignmentsForm",props:{contact:{type:Object,required:!0},branches:{type:Array,default:()=>[]}},emits:["saved","cancel"],setup(y,{emit:K}){const u=y,Q=K,i=j({}),v=j(!1),x=j(""),R=se(()=>Object.keys(i.value).length>0),W=()=>{var a,t,m,g;const s=((t=(a=u.contact)==null?void 0:a.first_name)==null?void 0:t.charAt(0))||"",e=((g=(m=u.contact)==null?void 0:m.last_name)==null?void 0:g.charAt(0))||"";return(s+e).toUpperCase()||"?"},X=s=>{const e=s.agent_name||s.brand_name||s.name||"",a=s.branch_name||s.branch_location||"";return e&&a?`${e} - ${a}`:e||a||`Branch #${s.id}`},A=s=>s.offers_sales||!1,$=s=>s.offers_lettings||!1,h=s=>!!i.value[s],r=s=>i.value[s]||null,Y=()=>{const s={};u.branches.forEach(e=>{s[e.id]={handles_sales:A(e),handles_lettings:$(e),is_primary_sales:!1,is_primary_lettings:!1}}),i.value=s},Z=s=>{if(i.value[s])delete i.value[s],i.value={...i.value};else{const e=u.branches.find(a=>a.id===s);i.value[s]={handles_sales:A(e),handles_lettings:$(e),is_primary_sales:!1,is_primary_lettings:!1},i.value={...i.value}}},S=(s,e)=>{const a=i.value[s];a&&(e==="sales"?(a.handles_sales=!a.handles_sales,a.handles_sales||(a.is_primary_sales=!1)):(a.handles_lettings=!a.handles_lettings,a.handles_lettings||(a.is_primary_lettings=!1)),i.value={...i.value})},M=(s,e)=>{const a=i.value[s];a&&(e==="sales"?a.is_primary_sales=!a.is_primary_sales:a.is_primary_lettings=!a.is_primary_lettings,i.value={...i.value})},ee=()=>{var s;i.value={},(s=u.contact)!=null&&s.branch_assignments&&u.contact.branch_assignments.forEach(e=>{i.value[e.branch_id]={handles_sales:e.handles_sales??e.is_primary_sales,handles_lettings:e.handles_lettings??e.is_primary_lettings,is_primary_sales:e.is_primary_sales||!1,is_primary_lettings:e.is_primary_lettings||!1}})},te=async()=>{var s,e,a;v.value=!0,x.value="";try{const t=u.contact.id,m=((s=u.contact)==null?void 0:s.branch_assignments)||[],g=new Set(m.map(c=>c.branch_id)),k=new Set(Object.keys(i.value).map(c=>parseInt(c)));for(const[c,p]of Object.entries(i.value)){const b=parseInt(c);await J.post(`/admin/crm/contacts/${t}/assign-branch`,{branch_id:b,handles_sales:p.handles_sales,handles_lettings:p.handles_lettings,is_primary_sales:p.is_primary_sales,is_primary_lettings:p.is_primary_lettings})}for(const c of g)k.has(c)||await J.delete(`/admin/crm/contacts/${t}/remove-branch`,{data:{branch_id:c}});Q("saved")}catch(t){x.value=((a=(e=t.response)==null?void 0:e.data)==null?void 0:a.message)||"Failed to save. Please try again."}finally{v.value=!1}};return ne(()=>u.contact,()=>{ee()},{immediate:!0}),(s,e)=>{var a;return o(),l("div",re,[n("div",oe,[n("div",le,C(W()),1),n("div",null,[n("h3",de,C((a=y.contact)==null?void 0:a.full_name),1),e[1]||(e[1]=n("p",{class:"text-sm text-gray-500"},"Select branches and departments",-1))])]),y.branches.length>0&&!R.value?(o(),l("div",ce,[n("button",{type:"button",onClick:Y,class:"flex w-full items-center justify-center gap-2 rounded-xl border-2 border-dashed border-pink-300 bg-gradient-to-r from-pink-50 to-rose-50 p-4 text-sm font-medium text-pink-700 transition-all hover:border-pink-400 hover:from-pink-100 hover:to-rose-100"},[...e[2]||(e[2]=[n("svg",{class:"size-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),_(" Assign to All Branches ",-1)])])])):d("",!0),y.branches.length>0?(o(),l("div",ue,[(o(!0),l(ae,null,ie(y.branches,t=>{var m,g,k,c,p,b,N,I,O,P,V,F,L,D,E,H,T,q;return o(),l("div",{key:t.id,class:f(["overflow-hidden rounded-xl border transition-all",h(t.id)?"border-pink-200 bg-gradient-to-r from-pink-50/80 to-rose-50/50 shadow-sm":"border-gray-200 bg-white hover:border-gray-300"])},[n("div",me,[n("label",ge,[n("div",pe,[n("input",{type:"checkbox",checked:h(t.id),onChange:w=>Z(t.id),class:"peer size-5 cursor-pointer appearance-none rounded-md border-2 border-gray-300 bg-white transition-all checked:border-pink-500 checked:bg-pink-500 hover:border-gray-400 focus:outline-none focus:ring-2 focus:ring-pink-500/20"},null,40,_e),e[3]||(e[3]=n("svg",{class:"pointer-events-none absolute left-1/2 top-1/2 size-3 -translate-x-1/2 -translate-y-1/2 text-white opacity-0 transition-opacity peer-checked:opacity-100",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"})],-1))]),n("span",{class:f(["text-sm font-medium",h(t.id)?"text-gray-900":"text-gray-600"])},C(X(t)),3)]),h(t.id)?(o(),l("div",fe,[(m=r(t.id))!=null&&m.handles_sales?(o(),U(B,{key:0,color:"green",size:"xs",dot:(g=r(t.id))==null?void 0:g.is_primary_sales},{default:z(()=>[...e[4]||(e[4]=[_(" Sales ",-1)])]),_:1},8,["dot"])):d("",!0),(k=r(t.id))!=null&&k.handles_lettings?(o(),U(B,{key:1,color:"blue",size:"xs",dot:(c=r(t.id))==null?void 0:c.is_primary_lettings},{default:z(()=>[...e[5]||(e[5]=[_(" Lettings ",-1)])]),_:1},8,["dot"])):d("",!0)])):d("",!0)]),h(t.id)?(o(),l("div",ye,[n("div",he,[A(t)?(o(),l("div",ve,[n("label",xe,[n("button",{type:"button",onClick:w=>S(t.id,"sales"),class:f(["relative h-5 w-9 rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-green-500/20",(p=r(t.id))!=null&&p.handles_sales?"bg-green-500":"bg-gray-200"])},[n("span",{class:f(["absolute left-0.5 top-0.5 size-4 rounded-full bg-white shadow transition-transform",(b=r(t.id))!=null&&b.handles_sales?"translate-x-4":"translate-x-0"])},null,2)],10,ke),e[6]||(e[6]=n("span",{class:"text-sm text-gray-700"},"Sales",-1))]),(N=r(t.id))!=null&&N.handles_sales?(o(),l("button",{key:0,t
1ype:"button",onClick:w=>M(t.id,"sales"),class:"transition-all hover:scale-105",title:(I=r(t.id))!=null&&I.is_primary_sales?"Primary sales contact":"Set as primary sales contact"},[G(B,{color:(O=r(t.id))!=null&&O.is_primary_sales?"green":"gray",size:"xs",dot:(P=r(t.id))==null?void 0:P.is_primary_sales},{default:z(()=>[...e[7]||(e[7]=[_(" Primary ",-1)])]),_:1},8,["color","dot"])],8,be)):d("",!0)])):d("",!0),$(t)?(o(),l("div",we,[n("label",Ce,[n("button",{type:"button",onClick:w=>S(t.id,"lettings"),class:f(["relative h-5 w-9 rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500/20",(V=r(t.id))!=null&&V.handles_lettings?"bg-blue-500":"bg-gray-200"])},[n("span",{class:f(["absolute left-0.5 top-0.5 size-4 rounded-full bg-white shadow transition-transform",(F=r(t.id))!=null&&F.handles_lettings?"translate-x-4":"translate-x-0"])},null,2)],10,ze),e[8]||(e[8]=n("span",{class:"text-sm text-gray-700"},"Lettings",-1))]),(L=r(t.id))!=null&&L.handles_lettings?(o(),l("button",{key:0,type:"button",onClick:w=>M(t.id,"lettings"),class:"transition-all hover:scale-105",title:(D=r(t.id))!=null&&D.is_primary_lettings?"Primary lettings contact":"Set as primary lettings contact"},[G(B,{color:(E=r(t.id))!=null&&E.is_primary_lettings?"blue":"gray",size:"xs",dot:(H=r(t.id))==null?void 0:H.is_primary_lettings},{default:z(()=>[...e[9]||(e[9]=[_(" Primary ",-1)])]),_:1},8,["color","dot"])],8,Be)):d("",!0)])):d("",!0)]),!((T=r(t.id))!=null&&T.handles_sales)&&!((q=r(t.id))!=null&&q.handles_lettings)?(o(),l("p",Ae," Enable at least one department ")):d("",!0)])):d("",!0)],2)}),128))])):(o(),l("div",$e,[...e[10]||(e[10]=[n("svg",{class:"mx-auto size-10 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"})],-1),n("p",{class:"mt-2 text-sm text-gray-500"},"No branches available",-1)])])),x.value?(o(),l("div",je,[e[11]||(e[11]=n("svg",{class:"size-5 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),_(" "+C(x.value),1)])):d("",!0),n("div",Se,[n("button",{type:"button",onClick:e[0]||(e[0]=t=>s.$emit("cancel")),class:"rounded-lg px-4 py-2 text-sm font-medium text-gray-600 transition-colors hover:bg-gray-100"}," Cancel "),n("button",{type:"button",onClick:te,disabled:v.value,class:"flex items-center gap-2 rounded-lg bg-gradient-to-r from-rose-500 to-pink-500 px-5 py-2 text-sm font-medium text-white shadow-sm transition-all hover:from-rose-600 hover:to-pink-600 hover:shadow disabled:cursor-not-allowed disabled:opacity-50"},[v.value?(o(),l("svg",Ne,[...e[12]||(e[12]=[n("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),n("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1)])])):d("",!0),e[13]||(e[13]=_(" Save ",-1))],8,Me)])])}}};export{Ve 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.