@accounter/client
Version:
Accounter client application
2 lines (1 loc) • 9.22 kB
JavaScript
import{r as i,bB as I,bI as W,j as e,P as G,bC as U,B as V,aE as _,z as Q,aG as F,a8 as N,dr as X,b5 as $,Q as q,ds as J,bE as x,hF as Y,bF as O,bG as P,bH as L,en as T,au as j,X as p,Y as g,Z as b,_ as y,I as Z,a0 as K,a1 as ee,bU as se,bV as ae,bW as te}from"./index-CDv8MTrU.js";import{u as ne}from"./use-url-query-Cv95DWiZ.js";import{a as re}from"./update-accountant-status-BkPOJv2s.js";import{P as oe}from"./modal-hw2uDJ0Z.js";import{F as le}from"./funnel-2GvmLyCV.js";import{s as ce}from"./sub-B39VwNW-.js";import{M as A}from"./MultiSelect-CtLQeRg8.js";function ie(a){return!a||I(a)?null:encodeURIComponent(JSON.stringify(a))}const de=[{value:F.AbsAmount,label:"Abs Amount"},{value:F.Amount,label:"Amount"},{value:F.Date,label:"Date"}],ue=[{label:"All",value:T.All},{label:"Income",value:T.Income},{label:"Expense",value:T.Expense}];function he({filter:a,setFilter:u,closeModal:c}){const{userContext:h}=i.useContext(_),r=Q({defaultValues:{byOwners:h?.context.adminBusinessId?[h.context.adminBusinessId]:void 0,sortBy:{field:F.Date,asc:!1},toAnyDate:N(new Date,"yyyy-MM-dd"),fromAnyDate:N(ce(new Date,{years:1}),"yyyy-MM-dd"),...a}}),{control:o,handleSubmit:k,watch:C}=r,[f,D]=i.useState(a.sortBy?.asc??!1),[d,m]=i.useState(!!a.sortBy?.field),{selectableFinancialEntities:S,fetching:t}=X(),{selectableTags:v,fetching:B}=$(),E=C("sortBy.field");i.useEffect(()=>{E&&!d?m(!0):!E&&d&&m(!1)},[E,d]);const H=s=>{f!=null&&s.sortBy?.field&&(s.sortBy.asc=f),u(s),c()};function R(){u({}),D(!1),c()}return e.jsxs(e.Fragment,{children:[t?e.jsx("div",{children:"Loading..."}):e.jsx("div",{}),e.jsx(q,{...r,children:e.jsxs("form",{onSubmit:k(H),children:[e.jsxs(J,{cols:2,children:[e.jsx(x,{name:"byOwners",control:o,defaultValue:a.byOwners,render:({field:s,fieldState:n})=>e.jsx(A,{...s,data:S,value:s.value??[],disabled:t,label:"Owners",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:n.error?.message,withinPortal:!0})}),e.jsx(x,{name:"byBusinesses",control:o,defaultValue:a.byBusinesses,render:({field:s,fieldState:n})=>e.jsx(A,{...s,data:S,value:s.value??[],disabled:t,label:"Financial Entities",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:n.error?.message,withinPortal:!0})}),e.jsx(x,{name:"byTags",control:o,defaultValue:a.byTags,render:({field:s,fieldState:n})=>e.jsx(A,{...s,data:v,itemComponent:Y,value:s.value??[],disabled:B,label:"Tags",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:n.error?.message,withinPortal:!0,filter:(l,w,M)=>M.label?.toLowerCase().includes(l.toLowerCase().trim())||M.description?.toLowerCase().includes(l.toLowerCase().trim())})}),e.jsx(x,{name:"fromAnyDate",control:o,defaultValue:a.fromAnyDate,rules:{pattern:{value:O,message:"Date must be im format yyyy-mm-dd"}},render:({field:s,fieldState:n})=>e.jsx(P,{...s,onChange:l=>{const w=l?typeof l=="string"?l:N(l,"yyyy-MM-dd"):void 0;w!==s.value&&s.onChange(w)},value:s.value?new Date(s.value):void 0,error:n.error?.message,label:"From Date",popoverProps:{withinPortal:!0}})}),e.jsx(x,{name:"toAnyDate",control:o,defaultValue:a.toAnyDate,rules:{pattern:{value:O,message:"Date must be im format yyyy-mm-dd"}},render:({field:s,fieldState:n})=>e.jsx(P,{...s,onChange:l=>{const w=l?typeof l=="string"?l:N(l,"yyyy-MM-dd"):void 0;w!==s.value&&s.onChange(w)},value:s.value?new Date(s.value):void 0,error:n.error?.message,label:"To Date",popoverProps:{withinPortal:!0}})}),e.jsx(x,{name:"chargesType",control:o,defaultValue:a.chargesType,render:({field:s,fieldState:n})=>e.jsx(L,{...s,data:ue,value:s.value??T.All,disabled:t,label:"Charge Type",placeholder:"Filter income/expense",maxDropdownHeight:160,error:n.error?.message,withinPortal:!0})}),e.jsx(x,{name:"sortBy.field",control:o,defaultValue:a.sortBy?.field??F.Date,render:({field:s,fieldState:n})=>e.jsx(L,{...s,data:de,label:"Field to sort by",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:n.error?.message,rightSectionProps:{style:{width:"5rem"}},withinPortal:!0,rightSection:e.jsxs("div",{className:"flex flex-row items-center gap-1",children:[e.jsx(j,{defaultChecked:a.sortBy?.asc??!1,checked:f??!1,disabled:!d,onCheckedChange:D}),e.jsx("span",{className:"text-xs",children:f?"ASC":"DESC"})]})})}),e.jsx(x,{name:"accountantStatus",control:o,defaultValue:a.accountantStatus,render:({field:s,fieldState:n})=>e.jsx(A,{...s,value:s.value??[],itemComponent:z,data:Object.values(re),disabled:t,label:"Accountant Status",placeholder:"All",maxDropdownHeight:160,error:n.error?.message,withinPortal:!0})}),e.jsx(p,{name:"freeText",control:o,rules:{minLength:{value:2,message:"Must be at least 2 characters"}},render:({field:s})=>e.jsxs(g,{className:"h-min",children:[e.jsx(b,{children:"Free Text"}),e.jsx(y,{children:e.jsx(Z,{...s,value:s.value??""})}),e.jsx(K,{})]})}),e.jsxs("div",{className:"flex flex-col gap-2 mt-4 rounded-lg border p-3 shadow-sm space-y-2",children:[e.jsx(ee,{children:"Missing Information:"}),e.jsx(p,{control:r.control,name:"withoutInvoice",render:({field:s})=>e.jsxs(g,{className:"flex flex-row items-center justify-between",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(b,{children:"Without Invoice"})}),e.jsx(y,{children:e.jsx(j,{defaultChecked:a.withoutInvoice??!1,onCheckedChange:s.onChange})})]})}),e.jsx(p,{control:r.control,name:"withoutReceipt",render:({field:s})=>e.jsxs(g,{className:"flex flex-row items-center justify-between",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(b,{children:"Without Receipts"})}),e.jsx(y,{children:e.jsx(j,{defaultChecked:a.withoutReceipt??!1,onCheckedChange:s.onChange})})]})}),e.jsx(p,{control:r.control,name:"withoutDocuments",render:({field:s})=>e.jsxs(g,{className:"flex flex-row items-center justify-between",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(b,{children:"Without Documents"})}),e.jsx(y,{children:e.jsx(j,{defaultChecked:a.withoutDocuments??!1,onCheckedChange:s.onChange})})]})}),e.jsx(p,{control:r.control,name:"withOpenDocuments",render:({field:s})=>e.jsxs(g,{className:"flex flex-row items-center justify-between",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(b,{children:"With Open Documents"})}),e.jsx(y,{children:e.jsxs(se,{children:[e.jsx(ae,{children:e.jsx(j,{defaultChecked:a.withOpenDocuments??!1,onCheckedChange:s.onChange})}),e.jsx(te,{children:e.jsx("p",{children:"Show only charges with documents that are currently open"})})]})})]})}),e.jsx(p,{control:r.control,name:"withoutTransactions",render:({field:s})=>e.jsxs(g,{className:"flex flex-row items-center justify-between",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(b,{children:"Without Transactions"})}),e.jsx(y,{children:e.jsx(j,{defaultChecked:a.withoutTransactions??!1,onCheckedChange:s.onChange})})]})}),e.jsx(p,{control:r.control,name:"unbalanced",render:({field:s})=>e.jsxs(g,{className:"flex flex-row items-center justify-between",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(b,{children:"Unbalanced businesses"})}),e.jsx(y,{children:e.jsx(j,{defaultChecked:a.unbalanced??!1,onCheckedChange:s.onChange})})]})}),e.jsx(p,{control:r.control,name:"withoutLedger",render:({field:s})=>e.jsxs(g,{className:"flex flex-row items-center justify-between",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(b,{children:"Without ledger"})}),e.jsx(y,{children:e.jsx(j,{defaultChecked:a.withoutLedger??!1,onCheckedChange:s.onChange})})]})})]})]}),e.jsxs("div",{className:"flex justify-center mt-5 gap-3",children:[e.jsx("button",{type:"submit",disabled:t||B,className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Filter"}),e.jsx("button",{type:"button",className:"text-white bg-orange-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-orange-600 rounded-sm text-lg",onClick:R,children:"Clear"}),e.jsx("button",{type:"button",className:"text-white bg-rose-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-rose-600 rounded-sm text-lg",onClick:c,children:"Cancel"})]})]})})]})}function fe({filter:a={},setFilter:u,activePage:c,setPage:h,totalPages:r=1,initiallyOpened:o=!1}){const[k,C]=i.useState(o),[f,D]=i.useState(!I(a)),{get:d,set:m}=ne();i.useEffect(()=>{const t=c>0?c.toFixed(0):null,v=d("page");t!==v&&m("page",t)},[c,d,m]),i.useEffect(()=>{const t=ie(a),v=d("chargesFilters");t!==v&&(m("chargesFilters",t),m("page"),h(0))},[a,d,m,h]);const S=i.useCallback(t=>{W(t,a)||(u(t),D(!I(t)))},[a,u]);return e.jsxs("div",{className:"flex flex-row gap-5 items-center",children:[e.jsx(oe,{opened:k,onClose:()=>C(!1),content:e.jsx(he,{filter:a,setFilter:S,closeModal:()=>C(!1)}),modalSize:"xl"}),r>1&&e.jsx(G,{className:"flex-fit w-fit mx-0",currentPageIndex:c,onChange:h,totalPages:r}),e.jsx(U,{inline:!0,size:16,disabled:!f,children:e.jsx(V,{variant:"outline",size:"icon",className:"size-7.5",onClick:()=>C(!0),children:e.jsx(le,{className:"size-5"})})})]})}const z=i.forwardRef(({bgColor:a,label:u,color:c,icon:h,...r},o)=>e.jsxs(V,{ref:o,...r,variant:"ghost",size:"sm",className:`h-7 p-0 ${a}`,title:u,children:[e.jsx(h,{className:`h-3.5 w-3.5 ${c}`}),u]}));z.displayName="AccountantStatusMultiSelectItem";export{fe as C,ue as c};