@accounter/client
Version:
2 lines (1 loc) • 6.08 kB
JavaScript
import{g as I,h as w,r as d,t as p,i as E,u as N,k as M,j as e,c as k,l as A,B as F,m as S,n as L,P as D,I as P,F as T,o as $,L as z,p as R,R as j,q as U,s as q}from"./index-DRqooPz9.js";import{u as v}from"./use-url-query-A8PE3FMA.js";import{B as O}from"./business-header-CAJaQahQ.js";import{C as _,M as Q}from"./Checkbox-DWmOT4mx.js";import{P as V}from"./page-layout-Dp9Tr43G.js";import"./building-2-CWrl-iq9.js";const H="mergeBusinesses",K=()=>{const[{fetching:a},o]=I(w),u=d.useCallback(async c=>{const l=`Error merging into business ID [${c.targetBusinessId}]`,n=`${H}-${c.targetBusinessId}`;p.loading("Merging Businesses",{id:n});try{const r=await o(c),t=E(r,l,n);if(t)return p.success("Success",{id:n,description:"Businesses merged"}),t.mergeBusinesses.id}catch(r){console.error(`${l}: ${r}`),p.error("Error",{id:n,description:l,duration:1e5,closeButton:!0})}},[o]);return{fetching:a,mergeBusinesses:u}};function G({businessIds:a,onDone:o,resetMerge:u}){const{mergeBusinesses:c,fetching:l}=K(),n=Array.from(new Set(a)),[{data:r,fetching:t}]=N({query:M,variables:{businessIds:n}}),[x,h]=d.useState(r?.businesses[0]),s=r?.businesses.length!==n.length&&"Some businesses were not Found"||void 0,m=r?.businesses||[],b=d.useCallback(async()=>{if(!x){p.error("Error",{description:"No main business selected"});return}if(n.length<2){p.error("Error",{description:"At least 2 businesses are required to execute a merge"});return}return await c({targetBusinessId:x.id,businessIdsToMerge:n.filter(g=>g!==x.id)}),u(),o()},[x,n,c,o,u]);return e.jsxs(e.Fragment,{children:[t&&e.jsx("div",{className:"flex flex-col text-center w-full mb-1",children:e.jsx(k,{})}),!t&&s&&e.jsx("div",{className:"flex flex-col text-center w-full mb-1",children:e.jsx("h3",{className:"sm:text-2xl text-xl font-medium title-font mb-6 text-gray-900",children:s})}),!t&&!s&&e.jsxs(e.Fragment,{children:[e.jsxs("table",{children:[e.jsxs("tr",{children:[e.jsx("th",{children:"Main"}),m.map(g=>e.jsx("td",{children:e.jsx("div",{className:"flex items-center justify-center mx-2 px-2 py-2 border-2 border-b-0 rounded-t-xl",children:e.jsx(_,{checked:g.id===x?.id,size:"xl",onClick:()=>{h(g)}})})},g.id))]}),e.jsxs("tr",{children:[e.jsx("th",{children:"Name"}),m.map(g=>e.jsx("td",{children:g.name},g.id))]})]}),e.jsxs("div",{className:"flex justify-center gap-5 mt-5",children:[e.jsx("button",{type:"button",className:" text-white bg-blue-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-blue-600 rounded-sm text-lg",disabled:t||l,onClick:b,children:"Accept"}),e.jsx("button",{type:"button",className:" text-white bg-red-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-red-600 rounded-sm text-lg",onClick:o,children:"Cancel"}),e.jsx("button",{type:"button",className:" text-white bg-red-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-red-600 rounded-sm text-lg",onClick:()=>{u(),o()},children:"Reset Merge"})]})]})]})}function J(a){const[o,{close:u,open:c}]=A(!1),{selected:l,resetMerge:n}=a,r=new Set(l.map(({id:m})=>m)),t=r.size>=1,[x,h]=d.useState(t?"default":"outline");d.useEffect(()=>{h(t?"default":"outline")},[t]);const s=d.useCallback(()=>{u(),l.map(({onChange:m})=>m())},[l,u]);return e.jsxs(e.Fragment,{children:[e.jsx(F,{onClick:()=>{t&&c()},disabled:!t,variant:x,className:S("size-7.5",t?" bg-blue-500 hover:bg-blue-500/90":""),size:"icon",children:e.jsx(Q,{className:"size-5"})}),e.jsx(L,{opened:o,onClose:u,size:"auto",centered:!0,children:e.jsx(G,{businessIds:Array.from(r),onDone:s,resetMerge:n})})]})}function W({activePage:a,setPage:o,totalPages:u=1,businessName:c,setBusinessName:l}){const{get:n,set:r}=v(),[t,x]=d.useState(c);d.useEffect(()=>{const s=a>0?a.toFixed(0):void 0,m=n("page");s!==m&&s!=="0"&&r("page",s)},[a,n,r]),d.useEffect(()=>{const s=setTimeout(()=>{l(t)},600);return()=>{clearTimeout(s)}},[t,l]);const h=s=>{x(s)};return e.jsxs("div",{className:"flex flex-row gap-5 items-center",children:[e.jsx(D,{className:"flex-fit w-fit mx-0",currentPageIndex:a,onChange:o,totalPages:u}),e.jsx(P,{className:"w-72",placeholder:"Business Name",defaultValue:c??void 0,onChange:s=>h(s.target.value===""?void 0:s.target.value)})]})}const ne=()=>{const{get:a}=v(),[o,u]=d.useState(a("page")?Number(a("page")):0),[c,l]=d.useState(a("name")?a("name"):void 0),{setFiltersContext:n}=d.useContext(T),[{data:r,fetching:t},x]=N({query:q,variables:{page:o,limit:100,name:c}}),h=$(),[s,m]=d.useState([]),b=d.useCallback((i,f)=>{s.map(B=>B.id).includes(i)?m(s.filter(B=>B.id!==i)):m([...s,{id:i,onChange:f}])},[s]);function g(){m([])}d.useEffect(()=>{n(e.jsxs("div",{className:"flex flex-row gap-x-5",children:[e.jsx(W,{activePage:o,setPage:u,businessName:c,setBusinessName:l,totalPages:r?.allBusinesses?.pageInfo.totalPages}),e.jsx(J,{selected:s,resetMerge:g})]}))},[r,o,c,n,u,l,s]);const y=r?.allBusinesses?.nodes.filter(i=>i.__typename==="LtdFinancialEntity").sort((i,f)=>i.name.toLowerCase()>f.name.toLowerCase()?1:-1)??[],C=new Set(s.map(i=>i.id));return e.jsx(V,{title:`Businesses (${r?.allBusinesses?.pageInfo.totalRecords??""})`,description:"All businesses",headerActions:e.jsx("div",{className:"flex items-center py-4 gap-4",children:e.jsx(U,{description:"",onAdd:()=>x()})}),children:t?e.jsx("div",{className:"flex flex-row justify-center",children:e.jsx(z,{className:S("h-10 w-10 animate-spin mr-2")})}):e.jsx("div",{className:"space-y-2",children:y.map(i=>e.jsx("div",{className:"group relative border rounded-lg hover:shadow-md transition-shadow",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"pl-4 flex items-center",children:e.jsx(R,{checked:C.has(i.id),onCheckedChange:()=>{b(i.id,()=>{})},className:"h-4 w-4 rounded border-gray-300 cursor-pointer",onClick:f=>f.stopPropagation()})}),e.jsx("div",{role:"button",tabIndex:0,className:"flex-1 cursor-pointer",onClick:()=>{h(j.BUSINESSES.DETAIL(i.id),{state:{from:j.BUSINESSES.ALL}})},onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),h(j.BUSINESSES.DETAIL(i.id),{state:{from:j.BUSINESSES.ALL}}))},children:e.jsx(O,{data:i})})]})},i.id))})})};export{ne as Businesses};