UNPKG

dgz-ui-shared

Version:

Custom ui library using React.js, Shadcn/ui, TailwindCSS, Typescript, dgz-ui library

3 lines (2 loc) 7.88 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),J=require("../../chunks/index-ClQFzqcq.cjs.js"),_=require("dgz-ui/button"),z=require("dgz-ui/dropdown"),u=require("dgz-ui/utils"),y=require("../../chunks/MyInput-mL2G5h2s.cjs.js"),v=require("../../chunks/useSortable-BZKLpg8U.cjs.js"),b=require("lucide-react"),L=require("react"),Z=require("react-i18next"),S=require("../../chunks/Actions-bpMDyl5M.cjs.js"),V=require("../../chunks/ExportData-DJE0jOHc.cjs.js"),Q=require("../../chunks/Search-kbkeTeSI.cjs.js"),C=require("dgz-ui"),P=require("../../chunks/Loader-D_jX_Wgx.cjs.js"),B=require("../../chunks/MyPagination-CnF3468f.cjs.js"),U=require("dgz-ui/form"),T=require("dgz-ui/table"),Y=require("../../chunks/SortOrder-81BrXp3i.cjs.js"),ee=require("../../chunks/Empty-BYOOFAab.cjs.js"),se=L.memo(function({filters:g,params:p,onFilter:j,className:N,...A}){const{t:s}=Z.useTranslation(),n=L.useMemo(()=>Object.fromEntries((g==null?void 0:g.map(r=>{var i;return[r.name,Object.fromEntries(((i=r.options)==null?void 0:i.map(({label:E,value:c})=>[c,E]))||[])]}))||[]),[g]),D=L.useMemo(()=>Object.entries(p||{}).filter(([r,i])=>!!(n!=null&&n[r])&&!v.isEmpty(i)),[n,p]);return!v.isEmpty(D)&&e.jsx("div",{...A,className:u.cn("flex flex-wrap gap-2",N),children:D.map(([r,i])=>{var E;return Array.isArray(i)?e.jsx(C.ButtonGroup,{children:i.filter(c=>{var l;return((l=n==null?void 0:n[r])==null?void 0:l[c])&&c}).map((c,l)=>{var k;return e.jsxs(_.Button,{size:"sm",onClick:()=>{j==null||j({...p,[r]:i.filter(M=>M!==c)})},children:[s(String(((k=n==null?void 0:n[r])==null?void 0:k[c])||""))," ",e.jsx(b.XIcon,{})]},l)})},r):e.jsxs(_.Button,{size:"sm",onClick:()=>{const c={...p};delete c[r],j==null||j(c)},children:[s(String(((E=n==null?void 0:n[r])==null?void 0:E[i])||""))," ",e.jsx(b.XIcon,{})]})})})}),O=({rows:t=[],columns:g,onRowClick:p,rowKey:j,params:N={page:1,limit:B.DEFAULT_LIMIT},hasNumbers:A=!1,hasCheckbox:s=!1,selectedItems:n,onSelectedItemsChange:D,onSortOrderChange:r,isStickyHeader:i,className:E,...c})=>{const{sortObject:l,handleSort:k}=v.useSortable({sortField:N==null?void 0:N.sortField,sortOrder:N==null?void 0:N.sortOrder,onSortOrderChange:r}),{selectedRows:M,isRowSelected:o,isAllRowsSelected:$,handleSelectAllRows:h,handleSelectRow:H}=v.useDataTable({rows:t,defaultSelectedRows:n});return L.useEffect(()=>{D==null||D(M)},[M,D]),e.jsxs(T.Table,{...c,children:[e.jsx(T.TableHeader,{className:u.cn("bg-bg",i&&"sticky top-0 z-1"),children:e.jsxs(T.TableRow,{children:[s&&e.jsx(T.TableHead,{className:"w-12 p-3",children:e.jsx(U.Checkbox,{className:"mt-1",checked:$(j),onCheckedChange:d=>h(j,!!d),"aria-label":"Select all"})}),A&&e.jsx(T.TableHead,{className:"w-12 p-2",children:"#"}),g.filter(d=>!d.hidden).map(d=>e.jsx(T.TableHead,{style:d.styles,className:u.cn("p-2",d.sortable&&"cursor-pointer"),onClick:()=>d.sortable&&k(d.dataIndex),children:e.jsxs("div",{className:"flex items-center gap-2",children:[d.name," ",d.sortable&&((l==null?void 0:l.sortField)===d.key?e.jsxs(e.Fragment,{children:[(l==null?void 0:l.sortOrder)===Y.SortOrder.DESC&&e.jsx(b.ArrowDownWideNarrow,{size:15}),(l==null?void 0:l.sortOrder)===Y.SortOrder.ASC&&e.jsx(b.ArrowUpWideNarrow,{size:15})]}):e.jsx(b.ArrowUpDown,{size:15}))]})},d.key))]})}),e.jsx(T.TableBody,{className:"[&>tr:nth-child(even)]:bg-bg-secondary",children:t.length?t.map((d,f)=>e.jsxs(T.TableRow,{onClick:()=>p==null?void 0:p(d),className:u.cn(p&&"cursor-pointer"),"data-state":o(d[j])&&"selected",children:[s&&e.jsx(T.TableCell,{className:"w-12 p-3",onClick:w=>w.stopPropagation(),children:e.jsx(U.Checkbox,{className:"mt-1",checked:o(d[j]),onCheckedChange:w=>H(d[j],!!w),"aria-label":"Select row"})}),A&&e.jsx(T.TableCell,{className:"w-12 p-2",children:(N.page-1)*(N.limit||B.DEFAULT_LIMIT)+f+1}),g.filter(w=>!w.hidden).map(w=>e.jsx(T.TableCell,{className:"text-body-xs-medium max-w-xs p-2",style:w.styles,children:w.render?w.render(y.get(d,w.dataIndex),d):y.get(d,w.dataIndex,"")},`${f}-${w.key}`))]},`${d[j]}`)):e.jsx(T.TableRow,{children:e.jsx(T.TableCell,{colSpan:A?s?g.length+2:g.length+1:g.length,children:e.jsx(ee.Empty,{})})})})]})},te=({dataSource:t,columns:g,rowKey:p,hasSearch:j,exportOptions:N,hasPagination:A,onParamChange:s,dataKey:n="docs",loading:D,tableKey:r,filters:i,actions:E,handleFilterChange:c,params:l,exportLoading:k=!1,onColumnsUpdate:M,hasColumnsVisibilityDropdown:o,showAppliedFilters:$=!1,actionProps:h,filterWrapperProps:H,exportOptionsProps:d,columnsVisibilityProps:f,paginationProps:w,searchProps:q,className:a,...m})=>{var X,G;const{t:W}=Z.useTranslation(),{formattedColumns:R,handleColumnsChange:F,resetColumns:K}=v.useColumns({key:r,columns:g});return L.useEffect(()=>{M==null||M(R)},[R,M]),e.jsxs("div",{className:u.cn("border-border-alpha-light relative flex grow flex-col overflow-auto rounded-xl border shadow-xs",a),children:[e.jsxs("div",{className:"flex shrink-0 flex-col gap-4 p-4",children:[(j||o&&r||!v.isEmpty(N)||!v.isEmpty(i))&&e.jsxs("div",{className:"flex flex-col justify-between gap-3 lg:flex-row lg:items-center",children:[e.jsx("div",{className:"grow",children:j&&e.jsx(Q.Search,{...q,inputProps:{...q==null?void 0:q.inputProps,className:u.cn("h-8 grow",(X=q==null?void 0:q.inputProps)==null?void 0:X.className)},className:u.cn("max-w-full lg:max-w-80! [&_button]:-top-1",q==null?void 0:q.className),defaultValue:y.get(l,"search",""),onSearchChange:x=>s==null?void 0:s({...l,search:x,page:1})})}),e.jsxs("div",{className:"flex items-center justify-end gap-3",children:[N&&e.jsx(V.ExportData,{...d,options:N,loading:k}),o&&r&&e.jsxs(z.DropdownMenu,{modal:!1,children:[e.jsx(z.DropdownMenuTrigger,{asChild:!0,className:"grow",...f==null?void 0:f.triggerProps,children:e.jsx(_.Button,{variant:"secondary",size:"sm",className:"ml-auto rounded-lg px-3",children:(f==null?void 0:f.title)||e.jsxs(e.Fragment,{children:[e.jsx(J.yn,{})," ",e.jsx("span",{className:"hidden md:inline!",children:W("Customize columns")}),e.jsx(J.f1,{})]})})}),e.jsxs(z.DropdownMenuContent,{align:"end",...f==null?void 0:f.contentProps,children:[e.jsxs(z.DropdownMenuItem,{"data-testid":"reset-columns-button",onSelect:x=>x.preventDefault(),className:"capitalize",onClick:K,children:[e.jsx(b.RefreshCw,{})," ",(f==null?void 0:f.resetText)||W("Reset columns")]}),e.jsx(z.DropdownMenuSeparator,{}),R.map(x=>e.jsx(z.DropdownMenuCheckboxItem,{"data-testid":x.key,onSelect:I=>I.preventDefault(),className:"capitalize",checked:!x.hidden,onCheckedChange:I=>F(x,!I),children:x.name},x.key))]})]}),E&&e.jsx(S.Actions,{...h,actions:E}),i&&e.jsx(Q.FilterWrapper,{...H,filters:i,params:l,onChange:c,onFilter:x=>{s==null||s({...x,page:1}),c==null||c(x)}})]})]}),$&&!v.isEmpty(i)&&e.jsx(se,{filters:i,params:l,onFilter:x=>{s==null||s({...x,page:1}),c==null||c(x)}})]}),e.jsx("div",{className:u.cn("flex grow flex-col overflow-auto border-y"),children:D?e.jsx(P.Loader,{}):e.jsx(O,{...m,params:{page:(t==null?void 0:t.page)||1,limit:t==null?void 0:t.limit,...l},rows:y.get(t,n,[]),rowKey:p,columns:R,onSortOrderChange:({sortField:x,sortOrder:I})=>{s==null||s({...l,sortField:x,sortOrder:I})}})}),A&&e.jsxs("div",{className:"flex shrink-0 flex-wrap items-center justify-center gap-3 p-4 lg:justify-between",children:[e.jsx("div",{className:"text-sm",children:e.jsx(B.MyLimitSelect,{onLimitChange:x=>s==null?void 0:s({...l,limit:x,page:1}),defaultValue:t==null?void 0:t.limit})}),e.jsx("div",{className:"text-muted-foreground text-sm",children:W("{{selectedCount}} of {{total}} row(s) selected",{selectedCount:((G=m.selectedItems)==null?void 0:G.length)??0,total:(t==null?void 0:t.total)||0})}),e.jsx("div",{children:e.jsx(B.MyPagination,{...w,onPageChange:x=>s==null?void 0:s({...l,page:x}),currentPage:t==null?void 0:t.page,totalPages:t==null?void 0:t.totalPages})})]})]})};exports.DataTable=te;exports.MyTable=O; //# sourceMappingURL=index.cjs.js.map