@accounter/client
Version:
Accounter client application
1 lines • 9.82 kB
JavaScript
import{s as e}from"./dist-BbgEzppd.js";import{i as t,o as n}from"./utils-BUNz070n.js";import{Ut as r,Yt as i}from"./error-handling-AQOG1RNy.js";import{r as a,s as o}from"./routes-BXbESQBe.js";import{o as s}from"./select-6mBYg_R6.js";import{At as c,Ft as l,It as u,Nt as d,Ot as f,Pt as p,Vt as m,ar as h,cn as g,cr as _,dt as v,gn as y,jt as b,kt as x,lt as S,n as C,or as w,p as T,un as E,ut as D,wt as O,zt as k}from"./common-Cy-x5Vhe.js";import{p as A}from"./separator-EFzchRgs.js";import{t as j}from"./funnel-BvwoBZ0O.js";import{t as M}from"./button-CBTN3XMQ.js";import{X as N,at as P,v as F}from"./table-tK8pMUMS.js";import{t as I}from"./sub-CoUILHWZ.js";import{t as L}from"./MultiSelect-CaeZsH-J.js";import{t as R}from"./use-url-query-BZOFfgST.js";var z=e(n(),1),B=e(N(),1),V=t();function H(e){return!e||a(e)?null:encodeURIComponent(JSON.stringify(e))}var U=[{value:i.AbsAmount,label:`Abs Amount`},{value:i.Amount,label:`Amount`},{value:i.Date,label:`Date`}],W=[{label:`All`,value:r.All},{label:`Income`,value:r.Income},{label:`Expense`,value:r.Expense}];function G({filter:e,setFilter:t,closeModal:n}){let{userContext:a}=(0,z.useContext)(F),y=m({defaultValues:{byOwners:a?.context.adminBusinessId?[a.context.adminBusinessId]:void 0,sortBy:{field:i.Date,asc:!1},toAnyDate:P(new Date,`yyyy-MM-dd`),fromAnyDate:P(I(new Date,{years:1}),`yyyy-MM-dd`),...e}}),{control:C,handleSubmit:T,watch:j}=y,[M,N]=(0,z.useState)(e.sortBy?.asc??!1),[R,B]=(0,z.useState)(!!e.sortBy?.field),{selectableFinancialEntities:H,fetching:G}=O(),{selectableTags:K,fetching:J}=v(),Y=j(`sortBy.field`);(0,z.useEffect)(()=>{Y&&!R?B(!0):!Y&&R&&B(!1)},[Y,R]);let X=e=>{M!=null&&e.sortBy?.field&&(e.sortBy.asc=M),t(e),n()};function Z(){t({}),N(!1),n()}return(0,V.jsxs)(V.Fragment,{children:[G?(0,V.jsx)(`div`,{children:`Loading...`}):(0,V.jsx)(`div`,{}),(0,V.jsx)(c,{...y,children:(0,V.jsxs)(`form`,{onSubmit:T(X),children:[(0,V.jsxs)(g,{cols:2,children:[(0,V.jsx)(k,{name:`byOwners`,control:C,defaultValue:e.byOwners,render:({field:e,fieldState:t})=>(0,V.jsx)(L,{...e,data:H,value:e.value??[],disabled:G,label:`Owners`,placeholder:`Scroll to see all options`,maxDropdownHeight:160,searchable:!0,error:t.error?.message,withinPortal:!0})}),(0,V.jsx)(k,{name:`byBusinesses`,control:C,defaultValue:e.byBusinesses,render:({field:e,fieldState:t})=>(0,V.jsx)(L,{...e,data:H,value:e.value??[],disabled:G,label:`Financial Entities`,placeholder:`Scroll to see all options`,maxDropdownHeight:160,searchable:!0,error:t.error?.message,withinPortal:!0})}),(0,V.jsx)(k,{name:`byTags`,control:C,defaultValue:e.byTags,render:({field:e,fieldState:t})=>(0,V.jsx)(L,{...e,data:K,itemComponent:D,value:e.value??[],disabled:J,label:`Tags`,placeholder:`Scroll to see all options`,maxDropdownHeight:160,searchable:!0,error:t.error?.message,withinPortal:!0,filter:(e,t,n)=>n.label?.toLowerCase().includes(e.toLowerCase().trim())||n.description?.toLowerCase().includes(e.toLowerCase().trim())})}),(0,V.jsx)(k,{name:`fromAnyDate`,control:C,defaultValue:e.fromAnyDate,rules:{pattern:{value:o,message:`Date must be im format yyyy-mm-dd`}},render:({field:e,fieldState:t})=>(0,V.jsx)(f,{...e,onChange:t=>{let n=t?typeof t==`string`?t:P(t,`yyyy-MM-dd`):void 0;n!==e.value&&e.onChange(n)},value:e.value?new Date(e.value):void 0,error:t.error?.message,label:`From Date`,popoverProps:{withinPortal:!0}})}),(0,V.jsx)(k,{name:`toAnyDate`,control:C,defaultValue:e.toAnyDate,rules:{pattern:{value:o,message:`Date must be im format yyyy-mm-dd`}},render:({field:e,fieldState:t})=>(0,V.jsx)(f,{...e,onChange:t=>{let n=t?typeof t==`string`?t:P(t,`yyyy-MM-dd`):void 0;n!==e.value&&e.onChange(n)},value:e.value?new Date(e.value):void 0,error:t.error?.message,label:`To Date`,popoverProps:{withinPortal:!0}})}),(0,V.jsx)(k,{name:`chargesType`,control:C,defaultValue:e.chargesType,render:({field:e,fieldState:t})=>(0,V.jsx)(E,{...e,data:W,value:e.value??r.All,disabled:G,label:`Charge Type`,placeholder:`Filter income/expense`,maxDropdownHeight:160,error:t.error?.message,withinPortal:!0})}),(0,V.jsx)(k,{name:`sortBy.field`,control:C,defaultValue:e.sortBy?.field??i.Date,render:({field:t,fieldState:n})=>(0,V.jsx)(E,{...t,data:U,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:(0,V.jsxs)(`div`,{className:`flex flex-row items-center gap-1`,children:[(0,V.jsx)(x,{defaultChecked:e.sortBy?.asc??!1,checked:M??!1,disabled:!R,onCheckedChange:N}),(0,V.jsx)(`span`,{className:`text-xs`,children:M?`ASC`:`DESC`})]})})}),(0,V.jsx)(k,{name:`accountantStatus`,control:C,defaultValue:e.accountantStatus,render:({field:e,fieldState:t})=>(0,V.jsx)(L,{...e,value:e.value??[],itemComponent:q,data:Object.values(S),disabled:G,label:`Accountant Status`,placeholder:`All`,maxDropdownHeight:160,error:t.error?.message,withinPortal:!0})}),(0,V.jsx)(d,{name:`freeText`,control:C,rules:{minLength:{value:2,message:`Must be at least 2 characters`}},render:({field:e})=>(0,V.jsxs)(p,{className:`h-min`,children:[(0,V.jsx)(l,{children:`Free Text`}),(0,V.jsx)(b,{children:(0,V.jsx)(A,{...e,value:e.value??``})}),(0,V.jsx)(u,{})]})}),(0,V.jsxs)(`div`,{className:`flex flex-col gap-2 mt-4 rounded-lg border p-3 shadow-sm space-y-2`,children:[(0,V.jsx)(s,{children:`Missing Information:`}),(0,V.jsx)(d,{control:y.control,name:`withoutInvoice`,render:({field:t})=>(0,V.jsxs)(p,{className:`flex flex-row items-center justify-between`,children:[(0,V.jsx)(`div`,{className:`space-y-0.5`,children:(0,V.jsx)(l,{children:`Without Invoice`})}),(0,V.jsx)(b,{children:(0,V.jsx)(x,{defaultChecked:e.withoutInvoice??!1,onCheckedChange:t.onChange})})]})}),(0,V.jsx)(d,{control:y.control,name:`withoutReceipt`,render:({field:t})=>(0,V.jsxs)(p,{className:`flex flex-row items-center justify-between`,children:[(0,V.jsx)(`div`,{className:`space-y-0.5`,children:(0,V.jsx)(l,{children:`Without Receipts`})}),(0,V.jsx)(b,{children:(0,V.jsx)(x,{defaultChecked:e.withoutReceipt??!1,onCheckedChange:t.onChange})})]})}),(0,V.jsx)(d,{control:y.control,name:`withoutDocuments`,render:({field:t})=>(0,V.jsxs)(p,{className:`flex flex-row items-center justify-between`,children:[(0,V.jsx)(`div`,{className:`space-y-0.5`,children:(0,V.jsx)(l,{children:`Without Documents`})}),(0,V.jsx)(b,{children:(0,V.jsx)(x,{defaultChecked:e.withoutDocuments??!1,onCheckedChange:t.onChange})})]})}),(0,V.jsx)(d,{control:y.control,name:`withOpenDocuments`,render:({field:t})=>(0,V.jsxs)(p,{className:`flex flex-row items-center justify-between`,children:[(0,V.jsx)(`div`,{className:`space-y-0.5`,children:(0,V.jsx)(l,{children:`With Open Documents`})}),(0,V.jsx)(b,{children:(0,V.jsxs)(h,{children:[(0,V.jsx)(_,{children:(0,V.jsx)(x,{defaultChecked:e.withOpenDocuments??!1,onCheckedChange:t.onChange})}),(0,V.jsx)(w,{children:(0,V.jsx)(`p`,{children:`Show only charges with documents that are currently open`})})]})})]})}),(0,V.jsx)(d,{control:y.control,name:`withoutTransactions`,render:({field:t})=>(0,V.jsxs)(p,{className:`flex flex-row items-center justify-between`,children:[(0,V.jsx)(`div`,{className:`space-y-0.5`,children:(0,V.jsx)(l,{children:`Without Transactions`})}),(0,V.jsx)(b,{children:(0,V.jsx)(x,{defaultChecked:e.withoutTransactions??!1,onCheckedChange:t.onChange})})]})}),(0,V.jsx)(d,{control:y.control,name:`unbalanced`,render:({field:t})=>(0,V.jsxs)(p,{className:`flex flex-row items-center justify-between`,children:[(0,V.jsx)(`div`,{className:`space-y-0.5`,children:(0,V.jsx)(l,{children:`Unbalanced businesses`})}),(0,V.jsx)(b,{children:(0,V.jsx)(x,{defaultChecked:e.unbalanced??!1,onCheckedChange:t.onChange})})]})}),(0,V.jsx)(d,{control:y.control,name:`withoutLedger`,render:({field:t})=>(0,V.jsxs)(p,{className:`flex flex-row items-center justify-between`,children:[(0,V.jsx)(`div`,{className:`space-y-0.5`,children:(0,V.jsx)(l,{children:`Without ledger`})}),(0,V.jsx)(b,{children:(0,V.jsx)(x,{defaultChecked:e.withoutLedger??!1,onCheckedChange:t.onChange})})]})})]})]}),(0,V.jsxs)(`div`,{className:`flex justify-center mt-5 gap-3`,children:[(0,V.jsx)(`button`,{type:`submit`,disabled:G||J,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`}),(0,V.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:Z,children:`Clear`}),(0,V.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:n,children:`Cancel`})]})]})})]})}function K({filter:e={},setFilter:t,activePage:n,setPage:r,totalPages:i=1,initiallyOpened:o=!1}){let[s,c]=(0,z.useState)(o),[l,u]=(0,z.useState)(!a(e)),{get:d,set:f}=R();return(0,z.useEffect)(()=>{let e=n>0?n.toFixed(0):null;e!==d(`page`)&&f(`page`,e)},[n,d,f]),(0,z.useEffect)(()=>{let t=H(e);t!==d(`chargesFilters`)&&(f(`chargesFilters`,t),f(`page`),r(0))},[e,d,f,r]),(0,V.jsxs)(`div`,{className:`flex flex-row gap-5 items-center`,children:[(0,V.jsx)(T,{opened:s,onClose:()=>c(!1),content:(0,V.jsx)(G,{filter:e,setFilter:(0,z.useCallback)(n=>{(0,B.default)(n,e)||(t(n),u(!a(n)))},[e,t]),closeModal:()=>c(!1)}),modalSize:`xl`}),i>1&&(0,V.jsx)(C,{className:`flex-fit w-fit mx-0`,currentPageIndex:n,onChange:r,totalPages:i}),(0,V.jsx)(y,{inline:!0,size:16,disabled:!l,children:(0,V.jsx)(M,{variant:`outline`,size:`icon`,className:`size-7.5`,onClick:()=>c(!0),children:(0,V.jsx)(j,{className:`size-5`})})})]})}var q=(0,z.forwardRef)(({bgColor:e,label:t,color:n,icon:r,...i},a)=>(0,V.jsxs)(M,{ref:a,...i,variant:`ghost`,size:`sm`,className:`h-7 p-0 ${e}`,title:t,children:[(0,V.jsx)(r,{className:`h-3.5 w-3.5 ${n}`}),t]}));q.displayName=`AccountantStatusMultiSelectItem`;export{W as n,H as r,K as t};