dgz-ui-shared 1.2.31 → 1.2.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),O=require("../../chunks/index-ClQFzqcq.cjs.js"),J=require("dgz-ui/button"),b=require("dgz-ui/dropdown"),h=require("dgz-ui/utils"),D=require("../../chunks/lodash-BjH0kD7j.cjs.js"),L=require("lucide-react"),k=require("react"),Z=require("react-i18next"),X=require("../../chunks/useSortable-B3LF1tg8.cjs.js"),se=require("../../chunks/Actions-bpMDyl5M.cjs.js"),te=require("../../chunks/ExportData-DJE0jOHc.cjs.js"),Q=require("../../chunks/Search-DfRA43qp.cjs.js"),le=require("dgz-ui"),xe=require("../../chunks/Loader-D_jX_Wgx.cjs.js"),H=require("../../chunks/MyPagination-CnF3468f.cjs.js"),U=require("dgz-ui/form"),j=require("dgz-ui/table"),Y=require("../../chunks/SortOrder-81BrXp3i.cjs.js"),de=require("../../chunks/Empty-BYOOFAab.cjs.js"),ce=k.memo(function({filters:f,params:w,onFilter:i,className:N,...u}){const{t:T}=Z.useTranslation(),x=k.useMemo(()=>Object.fromEntries((f==null?void 0:f.map(n=>{var s;return[n.name,Object.fromEntries(((s=n.options)==null?void 0:s.map(({label:z,value:E})=>[E,z]))||[])]}))||[]),[f]),A=k.useMemo(()=>Object.entries(w||{}).filter(([n,s])=>!!(x!=null&&x[n])&&!D.lodashExports.isEmpty(s)),[x,w]);return!D.lodashExports.isEmpty(A)&&e.jsx("div",{...u,className:h.cn("flex flex-wrap gap-2",N),children:A.map(([n,s])=>{var z;return Array.isArray(s)?e.jsx(le.ButtonGroup,{children:s.filter(E=>{var d;return((d=x==null?void 0:x[n])==null?void 0:d[E])&&E}).map((E,d)=>{var o;return e.jsxs(J.Button,{size:"sm",onClick:()=>{i==null||i({...w,[n]:s.filter(v=>v!==E)})},children:[T(String(((o=x==null?void 0:x[n])==null?void 0:o[E])||""))," ",e.jsx(L.XIcon,{})]},d)})},n):e.jsxs(J.Button,{size:"sm",onClick:()=>{i==null||i(D.lodashExports.omit(w,n))},children:[T(String(((z=x==null?void 0:x[n])==null?void 0:z[s])||""))," ",e.jsx(L.XIcon,{})]})})})}),m=({rows:t=[],columns:f,onRowClick:w,rowKey:i,params:N={page:1,limit:H.DEFAULT_LIMIT},hasNumbers:u=!1,hasCheckbox:T=!1,selectedItems:x,onSelectedItemsChange:A,onSortOrderChange:n,isStickyHeader:s,className:z,...E})=>{const{sortObject:d,handleSort:o}=X.useSortable({sortField:N==null?void 0:N.sortField,sortOrder:N==null?void 0:N.sortOrder,onSortOrderChange:n}),{selectedRows:v,isRowSelected:g,isAllRowsSelected:q,handleSelectAllRows:W,handleSelectRow:R}=X.useDataTable({rows:t,defaultSelectedRows:x});return k.useEffect(()=>{JSON.stringify(x)!==JSON.stringify(v)&&v&&(A==null||A(v))},[v,x,A]),e.jsxs(j.Table,{...E,className:h.cn("relative",z),children:[e.jsx(j.TableHeader,{className:h.cn("bg-bg",s&&"sticky top-0 z-1"),children:e.jsxs(j.TableRow,{children:[T&&e.jsx(j.TableHead,{className:"w-12 p-3",children:e.jsx(U.Checkbox,{className:"mt-1",checked:q(i),onCheckedChange:l=>W(i,!!l),"aria-label":"Select all"})}),u&&e.jsx(j.TableHead,{className:"w-12 p-2",children:"#"}),f.filter(l=>!l.hidden).map(l=>e.jsx(j.TableHead,{style:l.styles,className:h.cn("p-2",l.sortable&&"cursor-pointer"),onClick:()=>l.sortable&&o(l.dataIndex),children:e.jsxs("div",{className:"flex items-center gap-2",children:[l.name," ",l.sortable&&((d==null?void 0:d.sortField)===l.key?e.jsxs(e.Fragment,{children:[(d==null?void 0:d.sortOrder)===Y.SortOrder.DESC&&e.jsx(L.ArrowDownWideNarrow,{size:15}),(d==null?void 0:d.sortOrder)===Y.SortOrder.ASC&&e.jsx(L.ArrowUpWideNarrow,{size:15})]}):e.jsx(L.ArrowUpDown,{size:15}))]})},l.key))]})}),e.jsx(j.TableBody,{className:"[&>tr:nth-child(even)]:bg-bg-secondary",children:t.length?t.map((l,y)=>e.jsxs(j.TableRow,{onClick:()=>w==null?void 0:w(l),className:h.cn(w&&"cursor-pointer"),"data-state":g(l[i])&&"selected",children:[T&&e.jsx(j.TableCell,{className:"w-12 p-3",onClick:r=>r.stopPropagation(),children:e.jsx(U.Checkbox,{className:"mt-1",checked:g(l[i]),onCheckedChange:r=>R(l[i],!!r),"aria-label":"Select row"})}),u&&e.jsx(j.TableCell,{className:"w-12 p-2",children:(N.page-1)*(N.limit||H.DEFAULT_LIMIT)+y+1}),f.filter(r=>!r.hidden).map(r=>e.jsx(j.TableCell,{className:"text-body-xs-medium max-w-xs p-2",style:r.styles,children:r.render?r.render(D.lodashExports.get(l,r.dataIndex),l):D.lodashExports.get(l,r.dataIndex,"")},`${y}-${r.key}`))]},`${l[i]}`)):e.jsx(j.TableRow,{children:e.jsx(j.TableCell,{colSpan:u?T?f.length+2:f.length+1:f.length,children:e.jsx(de.Empty,{})})})})]})},re=({dataSource:t,columns:f,onRowClick:w,rowKey:i,hasNumbers:N,hasSearch:u,exportOptions:T,hasCheckbox:x,hasPagination:A,isStickyHeader:n,onParamChange:s,dataKey:z="docs",loading:E,tableKey:d,filters:o,actions:v,handleFilterChange:g,params:q,exportLoading:W=!1,onColumnsUpdate:R,hasColumnsVisibilityDropdown:l,showAppliedFilters:y=!1,onSelectedItemsChange:r,actionProps:a,filterWrapperProps:F,exportOptionsProps:K,columnsVisibilityProps:p,paginationProps:S,searchProps:M,...V})=>{var G;const{t:_}=Z.useTranslation(),[B,C]=k.useState([]),{formattedColumns:$,handleColumnsChange:P,resetColumns:ee}=X.useColumns({key:d,columns:f});return k.useEffect(()=>{R==null||R($)},[$,R]),k.useEffect(()=>{r==null||r(B)},[B,r]),e.jsxs("div",{className:"border-border-alpha-light flex grow flex-col overflow-auto rounded-xl border shadow-xs",children:[e.jsxs("div",{className:"flex flex-col gap-4 p-4",children:[(u||l&&d||!D.lodashExports.isEmpty(T)||!D.lodashExports.isEmpty(o))&&e.jsxs("div",{className:"flex flex-col justify-between gap-3 lg:flex-row lg:items-center",children:[e.jsx("div",{className:"grow",children:u&&e.jsx(Q.Search,{...M,inputProps:{...M==null?void 0:M.inputProps,className:h.cn("h-8 grow",(G=M==null?void 0:M.inputProps)==null?void 0:G.className)},className:h.cn("max-w-full lg:max-w-80! [&_button]:-top-1",M==null?void 0:M.className),defaultValue:D.lodashExports.get(q,"search",""),onSearchChange:c=>s==null?void 0:s({...q,search:c,page:1})})}),e.jsxs("div",{className:"flex items-center justify-end gap-3",children:[T&&e.jsx(te.ExportData,{...K,options:T,loading:W}),l&&d&&e.jsxs(b.DropdownMenu,{children:[e.jsx(b.DropdownMenuTrigger,{asChild:!0,className:"grow",...p==null?void 0:p.triggerProps,children:e.jsx(J.Button,{variant:"secondary",size:"sm",className:"ml-auto rounded-lg px-3",children:(p==null?void 0:p.title)||e.jsxs(e.Fragment,{children:[e.jsx(O.yn,{})," ",e.jsx("span",{className:"hidden md:inline!",children:_("Customize columns")}),e.jsx(O.f1,{})]})})}),e.jsxs(b.DropdownMenuContent,{align:"end",...p==null?void 0:p.contentProps,children:[e.jsxs(b.DropdownMenuItem,{className:"capitalize",onClick:ee,children:[e.jsx(L.RefreshCw,{})," ",(p==null?void 0:p.resetText)||_("Reset columns")]}),e.jsx(b.DropdownMenuSeparator,{}),$.map(c=>e.jsx(b.DropdownMenuCheckboxItem,{className:"capitalize",checked:!c.hidden,onCheckedChange:I=>P(c,!I),children:c.name},c.key))]})]}),v&&e.jsx(se.Actions,{...a,actions:v}),o&&e.jsx(Q.FilterWrapper,{...F,filters:o,params:q,onChange:g,onFilter:c=>{s==null||s({...c,page:1}),g==null||g(c)}})]})]}),y&&!D.lodashExports.isEmpty(o)&&e.jsx(ce,{filters:o,params:q,onFilter:c=>{s==null||s({...c,page:1}),g==null||g(c)}})]}),e.jsx("div",{className:"flex flex-col overflow-auto border-y",children:E?e.jsx(xe.Loader,{}):e.jsx(m,{...V,params:{page:(t==null?void 0:t.page)||1,limit:t==null?void 0:t.limit,...q},rows:D.lodashExports.get(t,z,[]),rowKey:i,selectedItems:B,isStickyHeader:n,columns:$,hasCheckbox:x,hasNumbers:N,onRowClick:w,onSelectedItemsChange:C,onSortOrderChange:({sortField:c,sortOrder:I})=>{s==null||s({...q,sortField:c,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(H.MyLimitSelect,{onLimitChange:c=>s==null?void 0:s({...q,limit:c,page:1}),defaultValue:t==null?void 0:t.limit})}),e.jsx("div",{className:"text-muted-foreground text-sm",children:_("{{selectedCount}} of {{total}} row(s) selected",{selectedCount:B.length,total:(t==null?void 0:t.total)||0})}),e.jsx("div",{children:e.jsx(H.MyPagination,{...S,onPageChange:c=>s==null?void 0:s({...q,page:c}),currentPage:t==null?void 0:t.page,totalPages:t==null?void 0:t.totalPages})})]})]})};exports.DataTable=re;exports.MyTable=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),G=require("../../chunks/index-ClQFzqcq.cjs.js"),I=require("dgz-ui/button"),k=require("dgz-ui/dropdown"),D=require("dgz-ui/utils"),g=require("../../chunks/lodash-BjH0kD7j.cjs.js"),z=require("lucide-react"),v=require("react"),Y=require("react-i18next"),J=require("../../chunks/useSortable-B3LF1tg8.cjs.js"),C=require("../../chunks/Actions-bpMDyl5M.cjs.js"),P=require("../../chunks/ExportData-DJE0jOHc.cjs.js"),O=require("../../chunks/Search-DfRA43qp.cjs.js"),ee=require("dgz-ui"),se=require("../../chunks/Loader-D_jX_Wgx.cjs.js"),B=require("../../chunks/MyPagination-CnF3468f.cjs.js"),Q=require("dgz-ui/form"),p=require("dgz-ui/table"),U=require("../../chunks/SortOrder-81BrXp3i.cjs.js"),te=require("../../chunks/Empty-BYOOFAab.cjs.js"),le=v.memo(function({filters:w,params:o,onFilter:f,className:N,...A}){const{t:s}=Y.useTranslation(),r=v.useMemo(()=>Object.fromEntries((w==null?void 0:w.map(i=>{var n;return[i.name,Object.fromEntries(((n=i.options)==null?void 0:n.map(({label:M,value:j})=>[j,M]))||[])]}))||[]),[w]),q=v.useMemo(()=>Object.entries(o||{}).filter(([i,n])=>!!(r!=null&&r[i])&&!g.lodashExports.isEmpty(n)),[r,o]);return!g.lodashExports.isEmpty(q)&&e.jsx("div",{...A,className:D.cn("flex flex-wrap gap-2",N),children:q.map(([i,n])=>{var M;return Array.isArray(n)?e.jsx(ee.ButtonGroup,{children:n.filter(j=>{var x;return((x=r==null?void 0:r[i])==null?void 0:x[j])&&j}).map((j,x)=>{var u;return e.jsxs(I.Button,{size:"sm",onClick:()=>{f==null||f({...o,[i]:n.filter(E=>E!==j)})},children:[s(String(((u=r==null?void 0:r[i])==null?void 0:u[j])||""))," ",e.jsx(z.XIcon,{})]},x)})},i):e.jsxs(I.Button,{size:"sm",onClick:()=>{f==null||f(g.lodashExports.omit(o,i))},children:[s(String(((M=r==null?void 0:r[i])==null?void 0:M[n])||""))," ",e.jsx(z.XIcon,{})]})})})}),Z=({rows:l=[],columns:w,onRowClick:o,rowKey:f,params:N={page:1,limit:B.DEFAULT_LIMIT},hasNumbers:A=!1,hasCheckbox:s=!1,selectedItems:r,onSelectedItemsChange:q,onSortOrderChange:i,isStickyHeader:n,className:M,...j})=>{const{sortObject:x,handleSort:u}=J.useSortable({sortField:N==null?void 0:N.sortField,sortOrder:N==null?void 0:N.sortOrder,onSortOrderChange:i}),{selectedRows:E,isRowSelected:R,isAllRowsSelected:$,handleSelectAllRows:h,handleSelectRow:H}=J.useDataTable({rows:l,defaultSelectedRows:r});return v.useEffect(()=>{JSON.stringify(r)!==JSON.stringify(E)&&E&&(q==null||q(E))},[E,r,q]),e.jsxs(p.Table,{...j,children:[e.jsx(p.TableHeader,{className:D.cn("bg-bg",n&&"sticky top-0 z-1"),children:e.jsxs(p.TableRow,{children:[s&&e.jsx(p.TableHead,{className:"w-12 p-3",children:e.jsx(Q.Checkbox,{className:"mt-1",checked:$(f),onCheckedChange:d=>h(f,!!d),"aria-label":"Select all"})}),A&&e.jsx(p.TableHead,{className:"w-12 p-2",children:"#"}),w.filter(d=>!d.hidden).map(d=>e.jsx(p.TableHead,{style:d.styles,className:D.cn("p-2",d.sortable&&"cursor-pointer"),onClick:()=>d.sortable&&u(d.dataIndex),children:e.jsxs("div",{className:"flex items-center gap-2",children:[d.name," ",d.sortable&&((x==null?void 0:x.sortField)===d.key?e.jsxs(e.Fragment,{children:[(x==null?void 0:x.sortOrder)===U.SortOrder.DESC&&e.jsx(z.ArrowDownWideNarrow,{size:15}),(x==null?void 0:x.sortOrder)===U.SortOrder.ASC&&e.jsx(z.ArrowUpWideNarrow,{size:15})]}):e.jsx(z.ArrowUpDown,{size:15}))]})},d.key))]})}),e.jsx(p.TableBody,{className:"[&>tr:nth-child(even)]:bg-bg-secondary",children:l.length?l.map((d,b)=>e.jsxs(p.TableRow,{onClick:()=>o==null?void 0:o(d),className:D.cn(o&&"cursor-pointer"),"data-state":R(d[f])&&"selected",children:[s&&e.jsx(p.TableCell,{className:"w-12 p-3",onClick:t=>t.stopPropagation(),children:e.jsx(Q.Checkbox,{className:"mt-1",checked:R(d[f]),onCheckedChange:t=>H(d[f],!!t),"aria-label":"Select row"})}),A&&e.jsx(p.TableCell,{className:"w-12 p-2",children:(N.page-1)*(N.limit||B.DEFAULT_LIMIT)+b+1}),w.filter(t=>!t.hidden).map(t=>e.jsx(p.TableCell,{className:"text-body-xs-medium max-w-xs p-2",style:t.styles,children:t.render?t.render(g.lodashExports.get(d,t.dataIndex),d):g.lodashExports.get(d,t.dataIndex,"")},`${b}-${t.key}`))]},`${d[f]}`)):e.jsx(p.TableRow,{children:e.jsx(p.TableCell,{colSpan:A?s?w.length+2:w.length+1:w.length,children:e.jsx(te.Empty,{})})})})]})},xe=({dataSource:l,columns:w,rowKey:o,hasSearch:f,exportOptions:N,hasPagination:A,onParamChange:s,dataKey:r="docs",loading:q,tableKey:i,filters:n,actions:M,handleFilterChange:j,params:x,exportLoading:u=!1,onColumnsUpdate:E,hasColumnsVisibilityDropdown:R,showAppliedFilters:$=!1,onSelectedItemsChange:h,actionProps:H,filterWrapperProps:d,exportOptionsProps:b,columnsVisibilityProps:t,paginationProps:m,searchProps:T,className:a,...F})=>{var X;const{t:W}=Y.useTranslation(),[L,K]=v.useState([]),{formattedColumns:y,handleColumnsChange:S,resetColumns:V}=J.useColumns({key:i,columns:w});return v.useEffect(()=>{E==null||E(y)},[y,E]),v.useEffect(()=>{h==null||h(L)},[L,h]),e.jsxs("div",{className:D.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:[(f||R&&i||!g.lodashExports.isEmpty(N)||!g.lodashExports.isEmpty(n))&&e.jsxs("div",{className:"flex flex-col justify-between gap-3 lg:flex-row lg:items-center",children:[e.jsx("div",{className:"grow",children:f&&e.jsx(O.Search,{...T,inputProps:{...T==null?void 0:T.inputProps,className:D.cn("h-8 grow",(X=T==null?void 0:T.inputProps)==null?void 0:X.className)},className:D.cn("max-w-full lg:max-w-80! [&_button]:-top-1",T==null?void 0:T.className),defaultValue:g.lodashExports.get(x,"search",""),onSearchChange:c=>s==null?void 0:s({...x,search:c,page:1})})}),e.jsxs("div",{className:"flex items-center justify-end gap-3",children:[N&&e.jsx(P.ExportData,{...b,options:N,loading:u}),R&&i&&e.jsxs(k.DropdownMenu,{children:[e.jsx(k.DropdownMenuTrigger,{asChild:!0,className:"grow",...t==null?void 0:t.triggerProps,children:e.jsx(I.Button,{variant:"secondary",size:"sm",className:"ml-auto rounded-lg px-3",children:(t==null?void 0:t.title)||e.jsxs(e.Fragment,{children:[e.jsx(G.yn,{})," ",e.jsx("span",{className:"hidden md:inline!",children:W("Customize columns")}),e.jsx(G.f1,{})]})})}),e.jsxs(k.DropdownMenuContent,{align:"end",...t==null?void 0:t.contentProps,children:[e.jsxs(k.DropdownMenuItem,{className:"capitalize",onClick:V,children:[e.jsx(z.RefreshCw,{})," ",(t==null?void 0:t.resetText)||W("Reset columns")]}),e.jsx(k.DropdownMenuSeparator,{}),y.map(c=>e.jsx(k.DropdownMenuCheckboxItem,{className:"capitalize",checked:!c.hidden,onCheckedChange:_=>S(c,!_),children:c.name},c.key))]})]}),M&&e.jsx(C.Actions,{...H,actions:M}),n&&e.jsx(O.FilterWrapper,{...d,filters:n,params:x,onChange:j,onFilter:c=>{s==null||s({...c,page:1}),j==null||j(c)}})]})]}),$&&!g.lodashExports.isEmpty(n)&&e.jsx(le,{filters:n,params:x,onFilter:c=>{s==null||s({...c,page:1}),j==null||j(c)}})]}),e.jsx("div",{className:D.cn("flex grow flex-col overflow-auto border-y"),children:q?e.jsx(se.Loader,{}):e.jsx(Z,{...F,params:{page:(l==null?void 0:l.page)||1,limit:l==null?void 0:l.limit,...x},rows:g.lodashExports.get(l,r,[]),rowKey:o,selectedItems:L,columns:y,onSelectedItemsChange:K,onSortOrderChange:({sortField:c,sortOrder:_})=>{s==null||s({...x,sortField:c,sortOrder:_})}})}),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:c=>s==null?void 0:s({...x,limit:c,page:1}),defaultValue:l==null?void 0:l.limit})}),e.jsx("div",{className:"text-muted-foreground text-sm",children:W("{{selectedCount}} of {{total}} row(s) selected",{selectedCount:L.length,total:(l==null?void 0:l.total)||0})}),e.jsx("div",{children:e.jsx(B.MyPagination,{...m,onPageChange:c=>s==null?void 0:s({...x,page:c}),currentPage:l==null?void 0:l.page,totalPages:l==null?void 0:l.totalPages})})]})]})};exports.DataTable=xe;exports.MyTable=Z;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../src/components/filters/AppliedFilters.tsx","../../../src/components/datatable/MyTable.tsx","../../../src/components/datatable/DataTable.tsx"],"sourcesContent":["import { ButtonGroup } from 'dgz-ui';\nimport { Button } from 'dgz-ui/button';\nimport type { CardProps } from 'dgz-ui/card';\nimport { cn } from 'dgz-ui/utils';\nimport { isEmpty, omit } from 'lodash';\nimport { XIcon } from 'lucide-react';\nimport { memo, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type { FilterInterface } from './FilterWrapper.tsx';\n\n/**\n * Props for the FilterWrapper component.\n */\nexport interface AppliedFiltersProps extends CardProps {\n /** Array of filter definitions to render. */\n filters?: FilterInterface[];\n /** Current active parameters/filters. */\n params?: Record<string, unknown>;\n /** Callback fired when filters are applied. */\n onFilter?: (filters: Record<string, unknown>) => void;\n}\n\n/**\n * FilterWrapper shows a popover with a dynamic list of field filters and emits selected filter values.\n *\n * @param props.filters - Array of filter definitions to render.\n * @param props.params - Current params used to detect active filters.\n * @param props.onFilter - Callback fired when user applies filters.\n * @param props.onCancel - Callback fired on cancel.\n * @param props.onChange - Callback fired whenever filter form values change.\n */\nexport const AppliedFilters = memo(function FilterWrapper({\n filters,\n params,\n onFilter,\n className,\n ...props\n}: AppliedFiltersProps) {\n const { t } = useTranslation();\n\n const filterObject = useMemo(\n () =>\n Object.fromEntries(\n filters?.map((filter) => [\n filter.name,\n Object.fromEntries(\n filter.options?.map(({ label, value }) => [value, label]) || []\n ),\n ]) || []\n ),\n [filters]\n );\n\n const paramsArr = useMemo(\n () =>\n Object.entries(params || {}).filter(\n ([key, value]) => !!filterObject?.[key] && !isEmpty(value)\n ),\n [filterObject, params]\n );\n\n return (\n !isEmpty(paramsArr) && (\n <div {...props} className={cn('flex flex-wrap gap-2', className)}>\n {paramsArr.map(([key, value]) =>\n Array.isArray(value) ? (\n <ButtonGroup key={key}>\n {value\n .filter((val) => filterObject?.[key]?.[val] && val)\n .map((val, index) => (\n <Button\n size={'sm'}\n key={index}\n onClick={() => {\n onFilter?.({\n ...params,\n [key]: value.filter((v) => v !== val),\n });\n }}\n >\n {t(String(filterObject?.[key]?.[val] || ''))} <XIcon />\n </Button>\n ))}\n </ButtonGroup>\n ) : (\n <Button\n size={'sm'}\n onClick={() => {\n onFilter?.(omit(params, key));\n }}\n >\n {t(String(filterObject?.[key]?.[value as string] || ''))}{' '}\n <XIcon />\n </Button>\n )\n )}\n </div>\n )\n );\n});\n","import { Checkbox } from 'dgz-ui/form';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from 'dgz-ui/table';\nimport { cn } from 'dgz-ui/utils';\nimport { get } from 'lodash';\nimport {\n ArrowDownWideNarrow,\n ArrowUpDown,\n ArrowUpWideNarrow,\n} from 'lucide-react';\nimport { type ComponentProps, useEffect } from 'react';\nimport { SortOrder } from '../../enums';\nimport { useDataTable, useSortable, type UseSortableProps } from '../../hooks';\nimport type { ColumnType } from '../../types';\nimport { Empty } from '../empty';\nimport { DEFAULT_LIMIT } from '../pagination/MyLimitSelect';\n\n/**\n * Props for the MyTable component.\n * @template TData - The type of data in the table.\n */\nexport interface MyTableProps<TData> extends ComponentProps<'table'> {\n /** Array of data rows to display. */\n rows?: TData[];\n /** Column definitions. */\n columns: ColumnType<TData>[];\n /** Callback when a row is clicked. */\n onRowClick?: (row: TData) => void;\n /** Whether to show row numbers. */\n hasNumbers?: boolean;\n /** Whether to show selection checkboxes. */\n hasCheckbox?: boolean;\n /** Unique key for each row. */\n rowKey: keyof TData;\n /** Current table parameters (page, limit, sort). */\n params?: Record<string, unknown>;\n /** Total number of items (optional, often used with pagination context). */\n total?: number;\n /** Array of currently selected item keys. */\n selectedItems?: TData[keyof TData][];\n /** Callback when selected items change. */\n onSelectedItemsChange?: (selectedItems: TData[keyof TData][]) => void;\n /** Callback when sort order changes. */\n onSortOrderChange?: (\n params: Omit<UseSortableProps<TData>, 'onSortOrderChange'>\n ) => void;\n /** Whether the header should stick to the top. */\n isStickyHeader?: true;\n}\n\n/**\n * MyTable renders a generic data table with optional numbering, selection checkboxes,\n * sortable columns and sticky header. It is a presentational component and delegates\n * sorting/selection state via hooks and callbacks.\n *\n * @template TData - The row data type.\n * @param props - Component props.\n * @returns React element containing the table.\n */\nexport const MyTable = <TData,>({\n rows = [],\n columns,\n onRowClick,\n rowKey,\n params = {\n page: 1,\n limit: DEFAULT_LIMIT,\n },\n hasNumbers = false,\n hasCheckbox = false,\n selectedItems,\n onSelectedItemsChange,\n onSortOrderChange,\n isStickyHeader,\n className,\n ...props\n}: MyTableProps<TData>) => {\n const { sortObject, handleSort } = useSortable<TData>({\n sortField: params?.sortField as keyof TData | undefined,\n sortOrder: params?.sortOrder as SortOrder | undefined,\n onSortOrderChange,\n });\n const {\n selectedRows,\n isRowSelected,\n isAllRowsSelected,\n handleSelectAllRows,\n handleSelectRow,\n } = useDataTable<TData>({ rows, defaultSelectedRows: selectedItems });\n\n useEffect(() => {\n if (\n JSON.stringify(selectedItems) !== JSON.stringify(selectedRows) &&\n selectedRows\n ) {\n onSelectedItemsChange?.(selectedRows);\n }\n }, [selectedRows, selectedItems, onSelectedItemsChange]);\n\n return (\n <Table {...props} className={cn('relative', className)}>\n <TableHeader\n className={cn('bg-bg', isStickyHeader && 'sticky top-0 z-1')}\n >\n <TableRow>\n {hasCheckbox && (\n <TableHead className={'w-12 p-3'}>\n <Checkbox\n className={'mt-1'}\n checked={isAllRowsSelected(rowKey)}\n onCheckedChange={(value) =>\n handleSelectAllRows(rowKey, !!value)\n }\n aria-label=\"Select all\"\n />\n </TableHead>\n )}\n {hasNumbers && <TableHead className={'w-12 p-2'}>#</TableHead>}\n {columns\n .filter((column) => !column.hidden)\n .map((column) => (\n <TableHead\n key={column.key}\n style={column.styles}\n className={cn('p-2', column.sortable && 'cursor-pointer')}\n onClick={() => column.sortable && handleSort(column.dataIndex)}\n >\n <div className={'flex items-center gap-2'}>\n {column.name}{' '}\n {column.sortable &&\n (sortObject?.sortField === column.key ? (\n <>\n {sortObject?.sortOrder === SortOrder.DESC && (\n <ArrowDownWideNarrow size={15} />\n )}\n {sortObject?.sortOrder === SortOrder.ASC && (\n <ArrowUpWideNarrow size={15} />\n )}\n </>\n ) : (\n <ArrowUpDown size={15} />\n ))}\n </div>\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody className={'[&>tr:nth-child(even)]:bg-bg-secondary'}>\n {rows.length ? (\n rows.map((row, index) => (\n <TableRow\n key={`${row[rowKey]}`}\n onClick={() => onRowClick?.(row)}\n className={cn(onRowClick && 'cursor-pointer')}\n data-state={isRowSelected(row[rowKey]) && 'selected'}\n >\n {hasCheckbox && (\n <TableCell\n className={'w-12 p-3'}\n onClick={(evt) => evt.stopPropagation()}\n >\n <Checkbox\n className={'mt-1'}\n checked={isRowSelected(row[rowKey])}\n onCheckedChange={(value) =>\n handleSelectRow(row[rowKey], !!value)\n }\n aria-label=\"Select row\"\n />\n </TableCell>\n )}\n {hasNumbers && (\n <TableCell className={'w-12 p-2'}>\n {((params.page as number) - 1) *\n ((params.limit || DEFAULT_LIMIT) as number) +\n index +\n 1}\n </TableCell>\n )}\n {columns\n .filter((column) => !column.hidden)\n .map((column) => (\n <TableCell\n className={'text-body-xs-medium max-w-xs p-2'}\n style={column.styles}\n key={`${index}-${column.key}`}\n >\n {column.render\n ? column.render(get(row, column.dataIndex), row)\n : get(row, column.dataIndex, '')}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={\n hasNumbers\n ? hasCheckbox\n ? columns.length + 2\n : columns.length + 1\n : columns.length\n }\n >\n <Empty />\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n );\n};\n","import { RiArrowDownSLine, RiLayoutColumnLine } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport { cn } from 'dgz-ui/utils';\nimport { get, isEmpty } from 'lodash';\nimport { RefreshCw } from 'lucide-react';\nimport { type ReactNode, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useColumns } from '../../hooks';\nimport type { ColumnType } from '../../types';\nimport { type ActionInterface, Actions, type ActionsProps } from '../actions';\nimport {\n ExportData,\n type ExportDataInterface,\n type ExportDataProps,\n} from '../export';\nimport {\n type FilterInterface,\n FilterWrapper,\n type FilterWrapperProps,\n Search,\n type SearchProps,\n} from '../filters';\nimport { AppliedFilters } from '../filters/AppliedFilters.tsx';\nimport { Loader } from '../loader';\nimport { MyLimitSelect, MyPagination } from '../pagination';\nimport type { MyPaginationProps } from '../pagination/MyPagination.tsx';\nimport { MyTable, type MyTableProps } from './MyTable';\n\n/**\n * Minimal pagination wrapper contract used by `DataTable`.\n *\n * Notes\n * - Only `page`, `limit`, and `totalPages` are required. Other fields are optional and\n * may be provided by your API for convenience.\n * - The actual rows array can be stored in any key, controlled via `dataKey` prop\n * (defaults to `\"docs\"`).\n */\nexport interface PaginationInterface<TData> {\n /** Array of rows for the current page. Used when `dataKey` is set to `\"docs\"`. */\n docs?: TData[];\n /** Zero-based index of the first item on the current page (if provided by API). */\n offset?: number;\n /** Page size (items per page). */\n limit: number;\n /** Total number of pages available. */\n totalPages: number;\n /** Total number of items across all pages (if available). */\n total?: number;\n /** Current page number (1-based). */\n page: number;\n /** Convenience counter for the first item index on the page (if provided). */\n pagingCounter?: number;\n /** Whether a previous page exists. */\n hasPrevPage?: boolean;\n /** Whether a next page exists. */\n hasNextPage?: boolean;\n /** Previous page number, if available. */\n prevPage?: number;\n /** Next page number, if available. */\n nextPage?: number;\n}\n\n/**\n * Props for the DataTable component.\n *\n * @template TData - Row data type.\n * @template TPaginationData - Pagination wrapper type.\n */\nexport interface DataTableProps<\n TData,\n TPaginationData extends PaginationInterface<TData>,\n> extends Omit<MyTableProps<TData>, 'rows'> {\n /** Pagination data source. */\n dataSource?: TPaginationData;\n /** Callback for parameter changes (pagination, sorting, filtering). */\n onParamChange?: (param: Record<string, unknown>) => void;\n /** Whether to enable pagination. */\n hasPagination?: true;\n /** Options for the export data dropdown. */\n exportOptions?: ExportDataInterface[];\n /** Whether to enable search functionality. */\n hasSearch?: true;\n /** Whether the table data is loading. */\n loading?: boolean;\n /** Array of filters to display. */\n filters?: FilterInterface[];\n /** Array of actions to display. */\n actions?: ActionInterface[];\n /** Callback for filter changes. */\n handleFilterChange?: (filters: Record<string, unknown>) => void;\n /** Unique key for the table, used for column persistence. */\n tableKey: string;\n /** The key in dataSource where the data array is located. Defaults to \"docs\". */\n dataKey?: keyof TPaginationData;\n /** Whether to show the columns visibility dropdown. */\n hasColumnsVisibilityDropdown?: true;\n /** Whether to show the columns visibility dropdown. */\n showAppliedFilters?: boolean;\n /** Callback when columns are updated (e.g., visibility toggled). */\n onColumnsUpdate?: (columns: ColumnType<TData>[]) => void;\n /** Whether the export action is loading. */\n exportLoading?: boolean;\n /** Props for the Actions component. */\n actionProps?: Partial<ActionsProps>;\n /** Props for the FilterWrapper component. */\n filterWrapperProps?: Partial<FilterWrapperProps>;\n /** Props for the ExportData component. */\n exportOptionsProps?: Partial<ExportDataProps>;\n searchProps?: Partial<SearchProps>;\n paginationProps?: Partial<MyPaginationProps>;\n /** Props for the columns visibility dropdown. */\n columnsVisibilityProps?: DropdownContainerProps & {\n title?: ReactNode;\n resetText?: ReactNode;\n };\n}\n\n/**\n * DataTable is a composable, high-level table that brings together search, filters,\n * column visibility management, header actions, exporting, and pagination.\n * It renders `MyTable` for rows and, when enabled, shows header controls and a footer with pagination.\n *\n * Generic Types\n * - `TData` — Row data shape (type of each item in the rows array).\n * - `TPaginationData` — Pagination wrapper type containing rows and pagination meta; defaults to\n * `PaginationInterface<TData>`.\n *\n * Key Behaviors\n * - Emits `onParamChange` when search text, filters, page, limit, or sort order change.\n * - Persists column visibility per `tableKey` via `useColumns` and informs parent with `onColumnsUpdate`.\n * - Renders header controls only when the related feature is enabled/has content.\n *\n * Props Overview\n * - `dataSource` — Paginated data source object that contains rows (see `dataKey`) and pagination metadata.\n * - `columns` — Column definitions passed to `MyTable`.\n * - `onRowClick` — Callback when a row is clicked.\n * - `rowKey` — Property name used as a unique row key.\n * - `hasNumbers` — Whether to show the row numbers column.\n * - `hasSearch` — Set to `true` to display the search input in the header.\n * - `exportOptions` — Export menu options shown by `ExportData` (see `ExportDataInterface[]`).\n * - `exportLoading` — When `true`, shows a spinner in the Export button to indicate an export action is in progress.\n * - `hasCheckbox` — Whether to show the selection checkbox column.\n * - `hasPagination` — Set to `true` to render the pagination footer.\n * - `isStickyHeader` — Whether to keep the table header sticky.\n * - `onParamChange` — Emits parameter changes for pagination/sorting/search/filters.\n * - `dataKey` — Key within `dataSource` that contains the row array. Defaults to `\"docs\"`.\n * - `loading` — If `true`, shows a loading state instead of the table rows.\n * - `tableKey` — Unique key for persisting column visibility state.\n * - `filters` — Filter configurations to render in the header.\n * - `actions` — Header actions independent of selected rows.\n * - `handleFilterChange` — Callback executed when filter values change.\n * - `params` — Current list parameters (pagination, sort, search, filters).\n * - `hasColumnsVisibilityDropdown` — Set to `true` to show the columns customize dropdown.\n * - `onColumnsUpdate` — Notifies parent whenever the internal columns state changes (after formatting/visibility).\n * - `actionProps` — Props passed to the `Actions` component.\n * - `filterWrapperProps` — Props passed to the `FilterWrapper` component.\n * - `exportOptionsProps` — Props passed to the `ExportData` component.\n * - `columnsVisibilityProps` — Props passed to the columns visibility dropdown.\n * - `onSelectedItemsChange` — Callback when selected rows change (requires `hasCheckbox`).\n *\n * Accessibility\n * - Header controls and dropdowns reuse shared primitives that include keyboard and ARIA support.\n *\n * Internationalization\n * - Text such as \"Export\", \"Customize columns\", and \"Reset columns\" are resolved via `react-i18next`.\n *\n * Usage Examples\n * 1) Minimal paginated table (uses default `dataKey = \"docs\"`)\n * ```tsx\n * type User = { id: string; name: string };\n * const data = { docs: [{ id: '1', name: 'Ada' }], page: 1, limit: 10, totalPages: 1 };\n *\n * <DataTable<User>\n * tableKey=\"users-table\"\n * columns={[{ key: 'name', name: 'Name' }]}\n * rowKey=\"id\"\n * dataSource={data}\n * hasPagination\n * />\n * ```\n *\n * 2) Custom `dataKey` and column visibility persistence\n * ```tsx\n * type Row = { id: number; title: string };\n * const payload = { items: [{ id: 1, title: 'Hello' }], page: 1, limit: 20, totalPages: 1 };\n *\n * <DataTable<Row>\n * tableKey=\"posts\"\n * columns={[{ key: 'title', name: 'Title' }]}\n * rowKey=\"id\"\n * dataSource={payload}\n * dataKey=\"items\"\n * hasColumnsVisibilityDropdown\n * />\n * ```\n *\n * 3) Responding to user interactions via `onParamChange`\n * ```tsx\n * const [params, setParams] = useState({ page: 1, limit: 10 });\n *\n * <DataTable\n * tableKey=\"logs\"\n * columns={[{ key: 'message', name: 'Message' }]}\n * rowKey=\"id\"\n * params={params}\n * onParamChange={setParams}\n * hasSearch\n * hasPagination\n * />\n * ```\n *\n * Notes and Best Practices\n * - Ensure `rowKey` points to a stable unique field in `TData` to avoid key collisions.\n * - When arrays like `exportOptions`, `filters`, or `actions` are empty, their sections are not rendered.\n * - Sorting emits `{ sortField, sortOrder }` through `onParamChange` when the user toggles a column sort.\n *\n * Returns\n * - React element that renders a complete data table experience.\n */\nexport const DataTable = <\n TData,\n TPaginationData extends PaginationInterface<TData> =\n PaginationInterface<TData>,\n>({\n dataSource,\n columns,\n onRowClick,\n rowKey,\n hasNumbers,\n hasSearch,\n exportOptions,\n hasCheckbox,\n hasPagination,\n isStickyHeader,\n onParamChange,\n dataKey = 'docs',\n loading,\n tableKey,\n filters,\n actions,\n handleFilterChange,\n params,\n exportLoading = false,\n onColumnsUpdate,\n hasColumnsVisibilityDropdown,\n showAppliedFilters = false,\n onSelectedItemsChange,\n actionProps,\n filterWrapperProps,\n exportOptionsProps,\n columnsVisibilityProps,\n paginationProps,\n searchProps,\n ...props\n}: DataTableProps<TData, TPaginationData>) => {\n const { t } = useTranslation();\n const [selectedRows, setSelectedRows] = useState<TData[keyof TData][]>([]);\n const { formattedColumns, handleColumnsChange, resetColumns } =\n useColumns<TData>({ key: tableKey, columns });\n\n useEffect(() => {\n onColumnsUpdate?.(formattedColumns);\n }, [formattedColumns, onColumnsUpdate]);\n\n useEffect(() => {\n onSelectedItemsChange?.(selectedRows);\n }, [selectedRows, onSelectedItemsChange]);\n\n return (\n <div\n className={\n 'border-border-alpha-light flex grow flex-col overflow-auto rounded-xl border shadow-xs'\n }\n >\n <div className={'flex flex-col gap-4 p-4'}>\n {(hasSearch ||\n (hasColumnsVisibilityDropdown && tableKey) ||\n !isEmpty(exportOptions) ||\n !isEmpty(filters)) && (\n <div className=\"flex flex-col justify-between gap-3 lg:flex-row lg:items-center\">\n <div className={'grow'}>\n {hasSearch && (\n <Search\n {...searchProps}\n inputProps={{\n ...searchProps?.inputProps,\n className: cn(\n 'h-8 grow',\n searchProps?.inputProps?.className\n ),\n }}\n className={cn(\n 'max-w-full lg:max-w-80! [&_button]:-top-1',\n searchProps?.className\n )}\n defaultValue={get(params, 'search', '') as string}\n onSearchChange={(search) =>\n onParamChange?.({ ...params, search, page: 1 })\n }\n />\n )}\n </div>\n <div className={'flex items-center justify-end gap-3'}>\n {exportOptions && (\n <ExportData\n {...exportOptionsProps}\n options={exportOptions}\n loading={exportLoading}\n />\n )}\n {hasColumnsVisibilityDropdown && tableKey && (\n <DropdownMenu>\n <DropdownMenuTrigger\n asChild\n className={'grow'}\n {...columnsVisibilityProps?.triggerProps}\n >\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n {columnsVisibilityProps?.title || (\n <>\n <RiLayoutColumnLine />{' '}\n <span className={'hidden md:inline!'}>\n {t('Customize columns')}\n </span>\n <RiArrowDownSLine />\n </>\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"end\"\n {...columnsVisibilityProps?.contentProps}\n >\n <DropdownMenuItem\n className=\"capitalize\"\n onClick={resetColumns}\n >\n <RefreshCw />{' '}\n {columnsVisibilityProps?.resetText || t('Reset columns')}\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n {formattedColumns.map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.key}\n className=\"capitalize\"\n checked={!column.hidden}\n onCheckedChange={(value) =>\n handleColumnsChange(column, !value)\n }\n >\n {column.name}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n {actions && <Actions {...actionProps} actions={actions} />}\n {filters && (\n <FilterWrapper\n {...filterWrapperProps}\n filters={filters}\n params={params}\n onChange={handleFilterChange}\n onFilter={(filter) => {\n onParamChange?.({ ...filter, page: 1 });\n handleFilterChange?.(filter);\n }}\n />\n )}\n </div>\n </div>\n )}\n {showAppliedFilters && !isEmpty(filters) && (\n <AppliedFilters\n filters={filters}\n params={params}\n onFilter={(filter) => {\n onParamChange?.({ ...filter, page: 1 });\n handleFilterChange?.(filter);\n }}\n />\n )}\n </div>\n\n <div className={'flex flex-col overflow-auto border-y'}>\n {!loading ? (\n <MyTable<TData>\n {...props}\n params={{\n page: dataSource?.page || 1,\n limit: dataSource?.limit,\n ...params,\n }}\n rows={get(dataSource, dataKey, []) as TData[]}\n rowKey={rowKey}\n selectedItems={selectedRows}\n isStickyHeader={isStickyHeader}\n columns={formattedColumns}\n hasCheckbox={hasCheckbox}\n hasNumbers={hasNumbers}\n onRowClick={onRowClick}\n onSelectedItemsChange={setSelectedRows}\n onSortOrderChange={({ sortField, sortOrder }) => {\n onParamChange?.({ ...params, sortField, sortOrder });\n }}\n />\n ) : (\n <Loader />\n )}\n </div>\n {hasPagination && (\n <div className=\"flex shrink-0 flex-wrap items-center justify-center gap-3 p-4 lg:justify-between\">\n <div className=\"text-sm\">\n <MyLimitSelect\n onLimitChange={(limit) =>\n onParamChange?.({ ...params, limit, page: 1 })\n }\n defaultValue={dataSource?.limit}\n />\n </div>\n <div className=\"text-muted-foreground text-sm\">\n {t('{{selectedCount}} of {{total}} row(s) selected', {\n selectedCount: selectedRows.length,\n total: dataSource?.total || 0,\n })}\n </div>\n <div>\n <MyPagination\n {...paginationProps}\n onPageChange={(page) => onParamChange?.({ ...params, page })}\n currentPage={dataSource?.page}\n totalPages={dataSource?.totalPages}\n />\n </div>\n </div>\n )}\n </div>\n );\n};\n"],"names":["AppliedFilters","memo","filters","params","onFilter","className","props","t","useTranslation","filterObject","useMemo","filter","_a","label","value","paramsArr","key","isEmpty","jsx","cn","ButtonGroup","val","index","jsxs","Button","XIcon","omit","MyTable","rows","columns","onRowClick","rowKey","DEFAULT_LIMIT","hasNumbers","hasCheckbox","selectedItems","onSelectedItemsChange","onSortOrderChange","isStickyHeader","sortObject","handleSort","useSortable","selectedRows","isRowSelected","isAllRowsSelected","handleSelectAllRows","handleSelectRow","useDataTable","useEffect","Table","TableHeader","TableRow","TableHead","Checkbox","column","Fragment","SortOrder","ArrowDownWideNarrow","ArrowUpWideNarrow","ArrowUpDown","TableBody","row","TableCell","evt","get","Empty","DataTable","dataSource","hasSearch","exportOptions","hasPagination","onParamChange","dataKey","loading","tableKey","actions","handleFilterChange","exportLoading","onColumnsUpdate","hasColumnsVisibilityDropdown","showAppliedFilters","actionProps","filterWrapperProps","exportOptionsProps","columnsVisibilityProps","paginationProps","searchProps","setSelectedRows","useState","formattedColumns","handleColumnsChange","resetColumns","useColumns","Search","search","ExportData","DropdownMenu","DropdownMenuTrigger","RiLayoutColumnLine","RiArrowDownSLine","DropdownMenuContent","DropdownMenuItem","RefreshCw","DropdownMenuSeparator","DropdownMenuCheckboxItem","Actions","FilterWrapper","Loader","sortField","sortOrder","MyLimitSelect","limit","MyPagination","page"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../src/components/filters/AppliedFilters.tsx","../../../src/components/datatable/MyTable.tsx","../../../src/components/datatable/DataTable.tsx"],"sourcesContent":["import { ButtonGroup } from 'dgz-ui';\nimport { Button } from 'dgz-ui/button';\nimport type { CardProps } from 'dgz-ui/card';\nimport { cn } from 'dgz-ui/utils';\nimport { isEmpty, omit } from 'lodash';\nimport { XIcon } from 'lucide-react';\nimport { memo, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type { FilterInterface } from './FilterWrapper.tsx';\n\n/**\n * Props for the FilterWrapper component.\n */\nexport interface AppliedFiltersProps extends CardProps {\n /** Array of filter definitions to render. */\n filters?: FilterInterface[];\n /** Current active parameters/filters. */\n params?: Record<string, unknown>;\n /** Callback fired when filters are applied. */\n onFilter?: (filters: Record<string, unknown>) => void;\n}\n\n/**\n * FilterWrapper shows a popover with a dynamic list of field filters and emits selected filter values.\n *\n * @param props.filters - Array of filter definitions to render.\n * @param props.params - Current params used to detect active filters.\n * @param props.onFilter - Callback fired when user applies filters.\n * @param props.onCancel - Callback fired on cancel.\n * @param props.onChange - Callback fired whenever filter form values change.\n */\nexport const AppliedFilters = memo(function FilterWrapper({\n filters,\n params,\n onFilter,\n className,\n ...props\n}: AppliedFiltersProps) {\n const { t } = useTranslation();\n\n const filterObject = useMemo(\n () =>\n Object.fromEntries(\n filters?.map((filter) => [\n filter.name,\n Object.fromEntries(\n filter.options?.map(({ label, value }) => [value, label]) || []\n ),\n ]) || []\n ),\n [filters]\n );\n\n const paramsArr = useMemo(\n () =>\n Object.entries(params || {}).filter(\n ([key, value]) => !!filterObject?.[key] && !isEmpty(value)\n ),\n [filterObject, params]\n );\n\n return (\n !isEmpty(paramsArr) && (\n <div {...props} className={cn('flex flex-wrap gap-2', className)}>\n {paramsArr.map(([key, value]) =>\n Array.isArray(value) ? (\n <ButtonGroup key={key}>\n {value\n .filter((val) => filterObject?.[key]?.[val] && val)\n .map((val, index) => (\n <Button\n size={'sm'}\n key={index}\n onClick={() => {\n onFilter?.({\n ...params,\n [key]: value.filter((v) => v !== val),\n });\n }}\n >\n {t(String(filterObject?.[key]?.[val] || ''))} <XIcon />\n </Button>\n ))}\n </ButtonGroup>\n ) : (\n <Button\n size={'sm'}\n onClick={() => {\n onFilter?.(omit(params, key));\n }}\n >\n {t(String(filterObject?.[key]?.[value as string] || ''))}{' '}\n <XIcon />\n </Button>\n )\n )}\n </div>\n )\n );\n});\n","import { Checkbox } from 'dgz-ui/form';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from 'dgz-ui/table';\nimport { cn } from 'dgz-ui/utils';\nimport { get } from 'lodash';\nimport {\n ArrowDownWideNarrow,\n ArrowUpDown,\n ArrowUpWideNarrow,\n} from 'lucide-react';\nimport { type ComponentProps, useEffect } from 'react';\nimport { SortOrder } from '../../enums';\nimport { useDataTable, useSortable, type UseSortableProps } from '../../hooks';\nimport type { ColumnType } from '../../types';\nimport { Empty } from '../empty';\nimport { DEFAULT_LIMIT } from '../pagination/MyLimitSelect';\n\n/**\n * Props for the MyTable component.\n * @template TData - The type of data in the table.\n */\nexport interface MyTableProps<TData> extends ComponentProps<'table'> {\n /** Array of data rows to display. */\n rows?: TData[];\n /** Column definitions. */\n columns: ColumnType<TData>[];\n /** Callback when a row is clicked. */\n onRowClick?: (row: TData) => void;\n /** Whether to show row numbers. */\n hasNumbers?: boolean;\n /** Whether to show selection checkboxes. */\n hasCheckbox?: boolean;\n /** Unique key for each row. */\n rowKey: keyof TData;\n /** Current table parameters (page, limit, sort). */\n params?: Record<string, unknown>;\n /** Total number of items (optional, often used with pagination context). */\n total?: number;\n /** Array of currently selected item keys. */\n selectedItems?: TData[keyof TData][];\n /** Callback when selected items change. */\n onSelectedItemsChange?: (selectedItems: TData[keyof TData][]) => void;\n /** Callback when sort order changes. */\n onSortOrderChange?: (\n params: Omit<UseSortableProps<TData>, 'onSortOrderChange'>\n ) => void;\n /** Whether the header should stick to the top. */\n isStickyHeader?: true;\n}\n\n/**\n * MyTable renders a generic data table with optional numbering, selection checkboxes,\n * sortable columns and sticky header. It is a presentational component and delegates\n * sorting/selection state via hooks and callbacks.\n *\n * @template TData - The row data type.\n * @param rows\n * @param columns\n * @param onRowClick\n * @param rowKey\n * @param params\n * @param hasNumbers\n * @param hasCheckbox\n * @param selectedItems\n * @param onSelectedItemsChange\n * @param onSortOrderChange\n * @param isStickyHeader\n * @param className\n * @param props - Component props.\n * @returns React element containing the table.\n */\nexport const MyTable = <TData,>({\n rows = [],\n columns,\n onRowClick,\n rowKey,\n params = {\n page: 1,\n limit: DEFAULT_LIMIT,\n },\n hasNumbers = false,\n hasCheckbox = false,\n selectedItems,\n onSelectedItemsChange,\n onSortOrderChange,\n isStickyHeader,\n className,\n ...props\n}: MyTableProps<TData>) => {\n const { sortObject, handleSort } = useSortable<TData>({\n sortField: params?.sortField as keyof TData | undefined,\n sortOrder: params?.sortOrder as SortOrder | undefined,\n onSortOrderChange,\n });\n const {\n selectedRows,\n isRowSelected,\n isAllRowsSelected,\n handleSelectAllRows,\n handleSelectRow,\n } = useDataTable<TData>({ rows, defaultSelectedRows: selectedItems });\n\n useEffect(() => {\n if (\n JSON.stringify(selectedItems) !== JSON.stringify(selectedRows) &&\n selectedRows\n ) {\n onSelectedItemsChange?.(selectedRows);\n }\n }, [selectedRows, selectedItems, onSelectedItemsChange]);\n\n return (\n <Table {...props}>\n <TableHeader\n className={cn('bg-bg', isStickyHeader && 'sticky top-0 z-1')}\n >\n <TableRow>\n {hasCheckbox && (\n <TableHead className={'w-12 p-3'}>\n <Checkbox\n className={'mt-1'}\n checked={isAllRowsSelected(rowKey)}\n onCheckedChange={(value) =>\n handleSelectAllRows(rowKey, !!value)\n }\n aria-label=\"Select all\"\n />\n </TableHead>\n )}\n {hasNumbers && <TableHead className={'w-12 p-2'}>#</TableHead>}\n {columns\n .filter((column) => !column.hidden)\n .map((column) => (\n <TableHead\n key={column.key}\n style={column.styles}\n className={cn('p-2', column.sortable && 'cursor-pointer')}\n onClick={() => column.sortable && handleSort(column.dataIndex)}\n >\n <div className={'flex items-center gap-2'}>\n {column.name}{' '}\n {column.sortable &&\n (sortObject?.sortField === column.key ? (\n <>\n {sortObject?.sortOrder === SortOrder.DESC && (\n <ArrowDownWideNarrow size={15} />\n )}\n {sortObject?.sortOrder === SortOrder.ASC && (\n <ArrowUpWideNarrow size={15} />\n )}\n </>\n ) : (\n <ArrowUpDown size={15} />\n ))}\n </div>\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody className={'[&>tr:nth-child(even)]:bg-bg-secondary'}>\n {rows.length ? (\n rows.map((row, index) => (\n <TableRow\n key={`${row[rowKey]}`}\n onClick={() => onRowClick?.(row)}\n className={cn(onRowClick && 'cursor-pointer')}\n data-state={isRowSelected(row[rowKey]) && 'selected'}\n >\n {hasCheckbox && (\n <TableCell\n className={'w-12 p-3'}\n onClick={(evt) => evt.stopPropagation()}\n >\n <Checkbox\n className={'mt-1'}\n checked={isRowSelected(row[rowKey])}\n onCheckedChange={(value) =>\n handleSelectRow(row[rowKey], !!value)\n }\n aria-label=\"Select row\"\n />\n </TableCell>\n )}\n {hasNumbers && (\n <TableCell className={'w-12 p-2'}>\n {((params.page as number) - 1) *\n ((params.limit || DEFAULT_LIMIT) as number) +\n index +\n 1}\n </TableCell>\n )}\n {columns\n .filter((column) => !column.hidden)\n .map((column) => (\n <TableCell\n className={'text-body-xs-medium max-w-xs p-2'}\n style={column.styles}\n key={`${index}-${column.key}`}\n >\n {column.render\n ? column.render(get(row, column.dataIndex), row)\n : get(row, column.dataIndex, '')}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={\n hasNumbers\n ? hasCheckbox\n ? columns.length + 2\n : columns.length + 1\n : columns.length\n }\n >\n <Empty />\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n );\n};\n","import { RiArrowDownSLine, RiLayoutColumnLine } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport { cn } from 'dgz-ui/utils';\nimport { get, isEmpty } from 'lodash';\nimport { RefreshCw } from 'lucide-react';\nimport { type ReactNode, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useColumns } from '../../hooks';\nimport type { ColumnType } from '../../types';\nimport { type ActionInterface, Actions, type ActionsProps } from '../actions';\nimport {\n ExportData,\n type ExportDataInterface,\n type ExportDataProps,\n} from '../export';\nimport {\n type FilterInterface,\n FilterWrapper,\n type FilterWrapperProps,\n Search,\n type SearchProps,\n} from '../filters';\nimport { AppliedFilters } from '../filters/AppliedFilters.tsx';\nimport { Loader } from '../loader';\nimport { MyLimitSelect, MyPagination } from '../pagination';\nimport type { MyPaginationProps } from '../pagination/MyPagination.tsx';\nimport { MyTable, type MyTableProps } from './MyTable';\n\n/**\n * Minimal pagination wrapper contract used by `DataTable`.\n *\n * Notes\n * - Only `page`, `limit`, and `totalPages` are required. Other fields are optional and\n * may be provided by your API for convenience.\n * - The actual rows array can be stored in any key, controlled via `dataKey` prop\n * (defaults to `\"docs\"`).\n */\nexport interface PaginationInterface<TData> {\n /** Array of rows for the current page. Used when `dataKey` is set to `\"docs\"`. */\n docs?: TData[];\n /** Zero-based index of the first item on the current page (if provided by API). */\n offset?: number;\n /** Page size (items per page). */\n limit: number;\n /** Total number of pages available. */\n totalPages: number;\n /** Total number of items across all pages (if available). */\n total?: number;\n /** Current page number (1-based). */\n page: number;\n /** Convenience counter for the first item index on the page (if provided). */\n pagingCounter?: number;\n /** Whether a previous page exists. */\n hasPrevPage?: boolean;\n /** Whether a next page exists. */\n hasNextPage?: boolean;\n /** Previous page number, if available. */\n prevPage?: number;\n /** Next page number, if available. */\n nextPage?: number;\n}\n\n/**\n * Props for the DataTable component.\n *\n * @template TData - Row data type.\n * @template TPaginationData - Pagination wrapper type.\n */\nexport interface DataTableProps<\n TData,\n TPaginationData extends PaginationInterface<TData>,\n> extends Omit<MyTableProps<TData>, 'rows'> {\n /** Pagination data source. */\n dataSource?: TPaginationData;\n /** Callback for parameter changes (pagination, sorting, filtering). */\n onParamChange?: (param: Record<string, unknown>) => void;\n /** Whether to enable pagination. */\n hasPagination?: true;\n /** Options for the export data dropdown. */\n exportOptions?: ExportDataInterface[];\n /** Whether to enable search functionality. */\n hasSearch?: true;\n /** Whether the table data is loading. */\n loading?: boolean;\n /** Array of filters to display. */\n filters?: FilterInterface[];\n /** Array of actions to display. */\n actions?: ActionInterface[];\n /** Callback for filter changes. */\n handleFilterChange?: (filters: Record<string, unknown>) => void;\n /** Unique key for the table, used for column persistence. */\n tableKey: string;\n /** The key in dataSource where the data array is located. Defaults to \"docs\". */\n dataKey?: keyof TPaginationData;\n /** Whether to show the columns visibility dropdown. */\n hasColumnsVisibilityDropdown?: true;\n /** Whether to show the columns visibility dropdown. */\n showAppliedFilters?: boolean;\n /** Callback when columns are updated (e.g., visibility toggled). */\n onColumnsUpdate?: (columns: ColumnType<TData>[]) => void;\n /** Whether the export action is loading. */\n exportLoading?: boolean;\n /** Props for the Actions component. */\n actionProps?: Partial<ActionsProps>;\n /** Props for the FilterWrapper component. */\n filterWrapperProps?: Partial<FilterWrapperProps>;\n /** Props for the ExportData component. */\n exportOptionsProps?: Partial<ExportDataProps>;\n searchProps?: Partial<SearchProps>;\n paginationProps?: Partial<MyPaginationProps>;\n /** Props for the columns visibility dropdown. */\n columnsVisibilityProps?: DropdownContainerProps & {\n title?: ReactNode;\n resetText?: ReactNode;\n };\n}\n\n/**\n * DataTable is a composable, high-level table that brings together search, filters,\n * column visibility management, header actions, exporting, and pagination.\n * It renders `MyTable` for rows and, when enabled, shows header controls and a footer with pagination.\n *\n * Generic Types\n * - `TData` — Row data shape (type of each item in the rows array).\n * - `TPaginationData` — Pagination wrapper type containing rows and pagination meta; defaults to\n * `PaginationInterface<TData>`.\n *\n * Key Behaviors\n * - Emits `onParamChange` when search text, filters, page, limit, or sort order change.\n * - Persists column visibility per `tableKey` via `useColumns` and informs parent with `onColumnsUpdate`.\n * - Renders header controls only when the related feature is enabled/has content.\n *\n * Props Overview\n * - `dataSource` — Paginated data source object that contains rows (see `dataKey`) and pagination metadata.\n * - `columns` — Column definitions passed to `MyTable`.\n * - `onRowClick` — Callback when a row is clicked.\n * - `rowKey` — Property name used as a unique row key.\n * - `hasNumbers` — Whether to show the row numbers column.\n * - `hasSearch` — Set to `true` to display the search input in the header.\n * - `exportOptions` — Export menu options shown by `ExportData` (see `ExportDataInterface[]`).\n * - `exportLoading` — When `true`, shows a spinner in the Export button to indicate an export action is in progress.\n * - `hasCheckbox` — Whether to show the selection checkbox column.\n * - `hasPagination` — Set to `true` to render the pagination footer.\n * - `isStickyHeader` — Whether to keep the table header sticky.\n * - `onParamChange` — Emits parameter changes for pagination/sorting/search/filters.\n * - `dataKey` — Key within `dataSource` that contains the row array. Defaults to `\"docs\"`.\n * - `loading` — If `true`, shows a loading state instead of the table rows.\n * - `tableKey` — Unique key for persisting column visibility state.\n * - `filters` — Filter configurations to render in the header.\n * - `actions` — Header actions independent of selected rows.\n * - `handleFilterChange` — Callback executed when filter values change.\n * - `params` — Current list parameters (pagination, sort, search, filters).\n * - `hasColumnsVisibilityDropdown` — Set to `true` to show the columns customize dropdown.\n * - `onColumnsUpdate` — Notifies parent whenever the internal columns state changes (after formatting/visibility).\n * - `actionProps` — Props passed to the `Actions` component.\n * - `filterWrapperProps` — Props passed to the `FilterWrapper` component.\n * - `exportOptionsProps` — Props passed to the `ExportData` component.\n * - `columnsVisibilityProps` — Props passed to the columns visibility dropdown.\n * - `onSelectedItemsChange` — Callback when selected rows change (requires `hasCheckbox`).\n *\n * Accessibility\n * - Header controls and dropdowns reuse shared primitives that include keyboard and ARIA support.\n *\n * Internationalization\n * - Text such as \"Export\", \"Customize columns\", and \"Reset columns\" are resolved via `react-i18next`.\n *\n * Usage Examples\n * 1) Minimal paginated table (uses default `dataKey = \"docs\"`)\n * ```tsx\n * type User = { id: string; name: string };\n * const data = { docs: [{ id: '1', name: 'Ada' }], page: 1, limit: 10, totalPages: 1 };\n *\n * <DataTable<User>\n * tableKey=\"users-table\"\n * columns={[{ key: 'name', name: 'Name' }]}\n * rowKey=\"id\"\n * dataSource={data}\n * hasPagination\n * />\n * ```\n *\n * 2) Custom `dataKey` and column visibility persistence\n * ```tsx\n * type Row = { id: number; title: string };\n * const payload = { items: [{ id: 1, title: 'Hello' }], page: 1, limit: 20, totalPages: 1 };\n *\n * <DataTable<Row>\n * tableKey=\"posts\"\n * columns={[{ key: 'title', name: 'Title' }]}\n * rowKey=\"id\"\n * dataSource={payload}\n * dataKey=\"items\"\n * hasColumnsVisibilityDropdown\n * />\n * ```\n *\n * 3) Responding to user interactions via `onParamChange`\n * ```tsx\n * const [params, setParams] = useState({ page: 1, limit: 10 });\n *\n * <DataTable\n * tableKey=\"logs\"\n * columns={[{ key: 'message', name: 'Message' }]}\n * rowKey=\"id\"\n * params={params}\n * onParamChange={setParams}\n * hasSearch\n * hasPagination\n * />\n * ```\n *\n * Notes and Best Practices\n * - Ensure `rowKey` points to a stable unique field in `TData` to avoid key collisions.\n * - When arrays like `exportOptions`, `filters`, or `actions` are empty, their sections are not rendered.\n * - Sorting emits `{ sortField, sortOrder }` through `onParamChange` when the user toggles a column sort.\n *\n * Returns\n * - React element that renders a complete data table experience.\n */\nexport const DataTable = <\n TData,\n TPaginationData extends PaginationInterface<TData> =\n PaginationInterface<TData>,\n>({\n dataSource,\n columns,\n rowKey,\n hasSearch,\n exportOptions,\n hasPagination,\n onParamChange,\n dataKey = 'docs',\n loading,\n tableKey,\n filters,\n actions,\n handleFilterChange,\n params,\n exportLoading = false,\n onColumnsUpdate,\n hasColumnsVisibilityDropdown,\n showAppliedFilters = false,\n onSelectedItemsChange,\n actionProps,\n filterWrapperProps,\n exportOptionsProps,\n columnsVisibilityProps,\n paginationProps,\n searchProps,\n className,\n ...props\n}: DataTableProps<TData, TPaginationData>) => {\n const { t } = useTranslation();\n const [selectedRows, setSelectedRows] = useState<TData[keyof TData][]>([]);\n const { formattedColumns, handleColumnsChange, resetColumns } =\n useColumns<TData>({ key: tableKey, columns });\n\n useEffect(() => {\n onColumnsUpdate?.(formattedColumns);\n }, [formattedColumns, onColumnsUpdate]);\n\n useEffect(() => {\n onSelectedItemsChange?.(selectedRows);\n }, [selectedRows, onSelectedItemsChange]);\n\n return (\n <div\n className={cn(\n 'border-border-alpha-light relative flex grow flex-col overflow-auto rounded-xl border shadow-xs',\n className\n )}\n >\n <div className={'flex shrink-0 flex-col gap-4 p-4'}>\n {(hasSearch ||\n (hasColumnsVisibilityDropdown && tableKey) ||\n !isEmpty(exportOptions) ||\n !isEmpty(filters)) && (\n <div className=\"flex flex-col justify-between gap-3 lg:flex-row lg:items-center\">\n <div className={'grow'}>\n {hasSearch && (\n <Search\n {...searchProps}\n inputProps={{\n ...searchProps?.inputProps,\n className: cn(\n 'h-8 grow',\n searchProps?.inputProps?.className\n ),\n }}\n className={cn(\n 'max-w-full lg:max-w-80! [&_button]:-top-1',\n searchProps?.className\n )}\n defaultValue={get(params, 'search', '') as string}\n onSearchChange={(search) =>\n onParamChange?.({ ...params, search, page: 1 })\n }\n />\n )}\n </div>\n <div className={'flex items-center justify-end gap-3'}>\n {exportOptions && (\n <ExportData\n {...exportOptionsProps}\n options={exportOptions}\n loading={exportLoading}\n />\n )}\n {hasColumnsVisibilityDropdown && tableKey && (\n <DropdownMenu>\n <DropdownMenuTrigger\n asChild\n className={'grow'}\n {...columnsVisibilityProps?.triggerProps}\n >\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n {columnsVisibilityProps?.title || (\n <>\n <RiLayoutColumnLine />{' '}\n <span className={'hidden md:inline!'}>\n {t('Customize columns')}\n </span>\n <RiArrowDownSLine />\n </>\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"end\"\n {...columnsVisibilityProps?.contentProps}\n >\n <DropdownMenuItem\n className=\"capitalize\"\n onClick={resetColumns}\n >\n <RefreshCw />{' '}\n {columnsVisibilityProps?.resetText || t('Reset columns')}\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n {formattedColumns.map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.key}\n className=\"capitalize\"\n checked={!column.hidden}\n onCheckedChange={(value) =>\n handleColumnsChange(column, !value)\n }\n >\n {column.name}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n {actions && <Actions {...actionProps} actions={actions} />}\n {filters && (\n <FilterWrapper\n {...filterWrapperProps}\n filters={filters}\n params={params}\n onChange={handleFilterChange}\n onFilter={(filter) => {\n onParamChange?.({ ...filter, page: 1 });\n handleFilterChange?.(filter);\n }}\n />\n )}\n </div>\n </div>\n )}\n {showAppliedFilters && !isEmpty(filters) && (\n <AppliedFilters\n filters={filters}\n params={params}\n onFilter={(filter) => {\n onParamChange?.({ ...filter, page: 1 });\n handleFilterChange?.(filter);\n }}\n />\n )}\n </div>\n\n <div className={cn('flex grow flex-col overflow-auto border-y')}>\n {!loading ? (\n <MyTable<TData>\n {...props}\n params={{\n page: dataSource?.page || 1,\n limit: dataSource?.limit,\n ...params,\n }}\n rows={get(dataSource, dataKey, []) as TData[]}\n rowKey={rowKey}\n selectedItems={selectedRows}\n columns={formattedColumns}\n onSelectedItemsChange={setSelectedRows}\n onSortOrderChange={({ sortField, sortOrder }) => {\n onParamChange?.({ ...params, sortField, sortOrder });\n }}\n />\n ) : (\n <Loader />\n )}\n </div>\n {hasPagination && (\n <div className=\"flex shrink-0 flex-wrap items-center justify-center gap-3 p-4 lg:justify-between\">\n <div className=\"text-sm\">\n <MyLimitSelect\n onLimitChange={(limit) =>\n onParamChange?.({ ...params, limit, page: 1 })\n }\n defaultValue={dataSource?.limit}\n />\n </div>\n <div className=\"text-muted-foreground text-sm\">\n {t('{{selectedCount}} of {{total}} row(s) selected', {\n selectedCount: selectedRows.length,\n total: dataSource?.total || 0,\n })}\n </div>\n <div>\n <MyPagination\n {...paginationProps}\n onPageChange={(page) => onParamChange?.({ ...params, page })}\n currentPage={dataSource?.page}\n totalPages={dataSource?.totalPages}\n />\n </div>\n </div>\n )}\n </div>\n );\n};\n"],"names":["AppliedFilters","memo","filters","params","onFilter","className","props","t","useTranslation","filterObject","useMemo","filter","_a","label","value","paramsArr","key","isEmpty","jsx","cn","ButtonGroup","val","index","jsxs","Button","v","XIcon","omit","MyTable","rows","columns","onRowClick","rowKey","DEFAULT_LIMIT","hasNumbers","hasCheckbox","selectedItems","onSelectedItemsChange","onSortOrderChange","isStickyHeader","sortObject","handleSort","useSortable","selectedRows","isRowSelected","isAllRowsSelected","handleSelectAllRows","handleSelectRow","useDataTable","useEffect","Table","TableHeader","TableRow","TableHead","Checkbox","column","Fragment","SortOrder","ArrowDownWideNarrow","ArrowUpWideNarrow","ArrowUpDown","TableBody","row","TableCell","evt","get","Empty","DataTable","dataSource","hasSearch","exportOptions","hasPagination","onParamChange","dataKey","loading","tableKey","actions","handleFilterChange","exportLoading","onColumnsUpdate","hasColumnsVisibilityDropdown","showAppliedFilters","actionProps","filterWrapperProps","exportOptionsProps","columnsVisibilityProps","paginationProps","searchProps","setSelectedRows","useState","formattedColumns","handleColumnsChange","resetColumns","useColumns","Search","search","ExportData","DropdownMenu","DropdownMenuTrigger","RiLayoutColumnLine","RiArrowDownSLine","DropdownMenuContent","DropdownMenuItem","RefreshCw","DropdownMenuSeparator","DropdownMenuCheckboxItem","Actions","FilterWrapper","Loader","sortField","sortOrder","MyLimitSelect","limit","MyPagination","page"],"mappings":"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"}
@@ -1,399 +1,395 @@
1
- import { jsx as e, jsxs as p, Fragment as b } from "react/jsx-runtime";
2
- import { y as te, f as le } from "../../chunks/index-E1NtSoNr.es.js";
3
- import { Button as Q } from "dgz-ui/button";
4
- import { DropdownMenu as de, DropdownMenuTrigger as se, DropdownMenuContent as ie, DropdownMenuItem as fe, DropdownMenuSeparator as re, DropdownMenuCheckboxItem as pe } from "dgz-ui/dropdown";
5
- import { cn as o } from "dgz-ui/utils";
6
- import { l as M } from "../../chunks/lodash-CRDOWzbs.es.js";
7
- import { XIcon as h, ArrowDownWideNarrow as Ne, ArrowUpWideNarrow as ce, ArrowUpDown as xe, RefreshCw as me } from "lucide-react";
8
- import { memo as we, useMemo as I, useEffect as Y, useState as ge } from "react";
9
- import { useTranslation as K } from "react-i18next";
10
- import { u as ne, a as Ee, b as Te } from "../../chunks/useSortable-BXNk8Wth.es.js";
11
- import { A as Ae } from "../../chunks/Actions-Du8iQ3WR.es.js";
12
- import { E as De } from "../../chunks/ExportData-CwotVgye.es.js";
13
- import { S as ve, F as Me } from "../../chunks/Search-BtiKC-dt.es.js";
14
- import { ButtonGroup as ze } from "dgz-ui";
15
- import { L as ke } from "../../chunks/Loader-zvzAi0F6.es.js";
16
- import { D as U, M as Le, a as Re } from "../../chunks/MyPagination-B0czoGZK.es.js";
17
- import { Checkbox as j } from "dgz-ui/form";
18
- import { Table as oe, TableHeader as We, TableRow as X, TableHead as q, TableBody as Be, TableCell as H } from "dgz-ui/table";
19
- import { S as O } from "../../chunks/SortOrder-CwuehjY1.es.js";
20
- import { E as $e } from "../../chunks/Empty-BReVQKje.es.js";
21
- const ye = we(function({
22
- filters: x,
23
- params: g,
24
- onFilter: N,
25
- className: m,
26
- ...L
1
+ import { jsx as e, jsxs as m, Fragment as O } from "react/jsx-runtime";
2
+ import { y as C, f as P } from "../../chunks/index-E1NtSoNr.es.js";
3
+ import { Button as q } from "dgz-ui/button";
4
+ import { DropdownMenu as ee, DropdownMenuTrigger as te, DropdownMenuContent as le, DropdownMenuItem as de, DropdownMenuSeparator as se, DropdownMenuCheckboxItem as ie } from "dgz-ui/dropdown";
5
+ import { cn as M } from "dgz-ui/utils";
6
+ import { l as A } from "../../chunks/lodash-CRDOWzbs.es.js";
7
+ import { XIcon as Z, ArrowDownWideNarrow as fe, ArrowUpWideNarrow as re, ArrowUpDown as pe, RefreshCw as Ne } from "lucide-react";
8
+ import { memo as ce, useMemo as h, useEffect as Q, useState as xe } from "react";
9
+ import { useTranslation as b } from "react-i18next";
10
+ import { u as me, a as we, b as ge } from "../../chunks/useSortable-BXNk8Wth.es.js";
11
+ import { A as ne } from "../../chunks/Actions-Du8iQ3WR.es.js";
12
+ import { E as Ee } from "../../chunks/ExportData-CwotVgye.es.js";
13
+ import { S as Te, F as Ae } from "../../chunks/Search-BtiKC-dt.es.js";
14
+ import { ButtonGroup as De } from "dgz-ui";
15
+ import { L as ve } from "../../chunks/Loader-zvzAi0F6.es.js";
16
+ import { D as I, M as Me, a as ke } from "../../chunks/MyPagination-B0czoGZK.es.js";
17
+ import { Checkbox as U } from "dgz-ui/form";
18
+ import { Table as ze, TableHeader as oe, TableRow as G, TableHead as X, TableBody as Le, TableCell as $ } from "dgz-ui/table";
19
+ import { S as j } from "../../chunks/SortOrder-CwuehjY1.es.js";
20
+ import { E as Re } from "../../chunks/Empty-BReVQKje.es.js";
21
+ const We = ce(function({
22
+ filters: g,
23
+ params: n,
24
+ onFilter: x,
25
+ className: w,
26
+ ...k
27
27
  }) {
28
- const { t: E } = K(), s = I(
28
+ const { t } = b(), f = h(
29
29
  () => Object.fromEntries(
30
- (x == null ? void 0 : x.map((c) => {
31
- var t;
30
+ (g == null ? void 0 : g.map((p) => {
31
+ var N;
32
32
  return [
33
- c.name,
33
+ p.name,
34
34
  Object.fromEntries(
35
- ((t = c.options) == null ? void 0 : t.map(({ label: R, value: n }) => [n, R])) || []
35
+ ((N = p.options) == null ? void 0 : N.map(({ label: v, value: c }) => [c, v])) || []
36
36
  )
37
37
  ];
38
38
  })) || []
39
39
  ),
40
- [x]
41
- ), z = I(
42
- () => Object.entries(g || {}).filter(
43
- ([c, t]) => !!(s != null && s[c]) && !M.isEmpty(t)
40
+ [g]
41
+ ), D = h(
42
+ () => Object.entries(n || {}).filter(
43
+ ([p, N]) => !!(f != null && f[p]) && !A.isEmpty(N)
44
44
  ),
45
- [s, g]
45
+ [f, n]
46
46
  );
47
- return !M.isEmpty(z) && /* @__PURE__ */ e("div", { ...L, className: o("flex flex-wrap gap-2", m), children: z.map(
48
- ([c, t]) => {
49
- var R;
50
- return Array.isArray(t) ? /* @__PURE__ */ e(ze, { children: t.filter((n) => {
51
- var i;
52
- return ((i = s == null ? void 0 : s[c]) == null ? void 0 : i[n]) && n;
53
- }).map((n, i) => {
54
- var T;
55
- return /* @__PURE__ */ p(
56
- Q,
47
+ return !A.isEmpty(D) && /* @__PURE__ */ e("div", { ...k, className: M("flex flex-wrap gap-2", w), children: D.map(
48
+ ([p, N]) => {
49
+ var v;
50
+ return Array.isArray(N) ? /* @__PURE__ */ e(De, { children: N.filter((c) => {
51
+ var s;
52
+ return ((s = f == null ? void 0 : f[p]) == null ? void 0 : s[c]) && c;
53
+ }).map((c, s) => {
54
+ var z;
55
+ return /* @__PURE__ */ m(
56
+ q,
57
57
  {
58
58
  size: "sm",
59
59
  onClick: () => {
60
- N == null || N({
61
- ...g,
62
- [c]: t.filter((k) => k !== n)
60
+ x == null || x({
61
+ ...n,
62
+ [p]: N.filter((E) => E !== c)
63
63
  });
64
64
  },
65
65
  children: [
66
- E(String(((T = s == null ? void 0 : s[c]) == null ? void 0 : T[n]) || "")),
66
+ t(String(((z = f == null ? void 0 : f[p]) == null ? void 0 : z[c]) || "")),
67
67
  " ",
68
- /* @__PURE__ */ e(h, {})
68
+ /* @__PURE__ */ e(Z, {})
69
69
  ]
70
70
  },
71
- i
71
+ s
72
72
  );
73
- }) }, c) : /* @__PURE__ */ p(
74
- Q,
73
+ }) }, p) : /* @__PURE__ */ m(
74
+ q,
75
75
  {
76
76
  size: "sm",
77
77
  onClick: () => {
78
- N == null || N(M.omit(g, c));
78
+ x == null || x(A.omit(n, p));
79
79
  },
80
80
  children: [
81
- E(String(((R = s == null ? void 0 : s[c]) == null ? void 0 : R[t]) || "")),
81
+ t(String(((v = f == null ? void 0 : f[p]) == null ? void 0 : v[N]) || "")),
82
82
  " ",
83
- /* @__PURE__ */ e(h, {})
83
+ /* @__PURE__ */ e(Z, {})
84
84
  ]
85
85
  }
86
86
  );
87
87
  }
88
88
  ) });
89
- }), He = ({
90
- rows: l = [],
91
- columns: x,
92
- onRowClick: g,
93
- rowKey: N,
94
- params: m = {
89
+ }), Be = ({
90
+ rows: d = [],
91
+ columns: g,
92
+ onRowClick: n,
93
+ rowKey: x,
94
+ params: w = {
95
95
  page: 1,
96
- limit: U
96
+ limit: I
97
97
  },
98
- hasNumbers: L = !1,
99
- hasCheckbox: E = !1,
100
- selectedItems: s,
101
- onSelectedItemsChange: z,
102
- onSortOrderChange: c,
103
- isStickyHeader: t,
104
- className: R,
105
- ...n
98
+ hasNumbers: k = !1,
99
+ hasCheckbox: t = !1,
100
+ selectedItems: f,
101
+ onSelectedItemsChange: D,
102
+ onSortOrderChange: p,
103
+ isStickyHeader: N,
104
+ className: v,
105
+ ...c
106
106
  }) => {
107
- const { sortObject: i, handleSort: T } = ne({
108
- sortField: m == null ? void 0 : m.sortField,
109
- sortOrder: m == null ? void 0 : m.sortOrder,
110
- onSortOrderChange: c
107
+ const { sortObject: s, handleSort: z } = me({
108
+ sortField: w == null ? void 0 : w.sortField,
109
+ sortOrder: w == null ? void 0 : w.sortOrder,
110
+ onSortOrderChange: p
111
111
  }), {
112
- selectedRows: k,
113
- isRowSelected: A,
114
- isAllRowsSelected: D,
115
- handleSelectAllRows: J,
116
- handleSelectRow: W
117
- } = Ee({ rows: l, defaultSelectedRows: s });
118
- return Y(() => {
119
- JSON.stringify(s) !== JSON.stringify(k) && k && (z == null || z(k));
120
- }, [k, s, z]), /* @__PURE__ */ p(oe, { ...n, className: o("relative", R), children: [
112
+ selectedRows: E,
113
+ isRowSelected: L,
114
+ isAllRowsSelected: y,
115
+ handleSelectAllRows: o,
116
+ handleSelectRow: H
117
+ } = we({ rows: d, defaultSelectedRows: f });
118
+ return Q(() => {
119
+ JSON.stringify(f) !== JSON.stringify(E) && E && (D == null || D(E));
120
+ }, [E, f, D]), /* @__PURE__ */ m(ze, { ...c, children: [
121
121
  /* @__PURE__ */ e(
122
- We,
122
+ oe,
123
123
  {
124
- className: o("bg-bg", t && "sticky top-0 z-1"),
125
- children: /* @__PURE__ */ p(X, { children: [
126
- E && /* @__PURE__ */ e(q, { className: "w-12 p-3", children: /* @__PURE__ */ e(
127
- j,
124
+ className: M("bg-bg", N && "sticky top-0 z-1"),
125
+ children: /* @__PURE__ */ m(G, { children: [
126
+ t && /* @__PURE__ */ e(X, { className: "w-12 p-3", children: /* @__PURE__ */ e(
127
+ U,
128
128
  {
129
129
  className: "mt-1",
130
- checked: D(N),
131
- onCheckedChange: (d) => J(N, !!d),
130
+ checked: y(x),
131
+ onCheckedChange: (i) => o(x, !!i),
132
132
  "aria-label": "Select all"
133
133
  }
134
134
  ) }),
135
- L && /* @__PURE__ */ e(q, { className: "w-12 p-2", children: "#" }),
136
- x.filter((d) => !d.hidden).map((d) => /* @__PURE__ */ e(
137
- q,
135
+ k && /* @__PURE__ */ e(X, { className: "w-12 p-2", children: "#" }),
136
+ g.filter((i) => !i.hidden).map((i) => /* @__PURE__ */ e(
137
+ X,
138
138
  {
139
- style: d.styles,
140
- className: o("p-2", d.sortable && "cursor-pointer"),
141
- onClick: () => d.sortable && T(d.dataIndex),
142
- children: /* @__PURE__ */ p("div", { className: "flex items-center gap-2", children: [
143
- d.name,
139
+ style: i.styles,
140
+ className: M("p-2", i.sortable && "cursor-pointer"),
141
+ onClick: () => i.sortable && z(i.dataIndex),
142
+ children: /* @__PURE__ */ m("div", { className: "flex items-center gap-2", children: [
143
+ i.name,
144
144
  " ",
145
- d.sortable && ((i == null ? void 0 : i.sortField) === d.key ? /* @__PURE__ */ p(b, { children: [
146
- (i == null ? void 0 : i.sortOrder) === O.DESC && /* @__PURE__ */ e(Ne, { size: 15 }),
147
- (i == null ? void 0 : i.sortOrder) === O.ASC && /* @__PURE__ */ e(ce, { size: 15 })
148
- ] }) : /* @__PURE__ */ e(xe, { size: 15 }))
145
+ i.sortable && ((s == null ? void 0 : s.sortField) === i.key ? /* @__PURE__ */ m(O, { children: [
146
+ (s == null ? void 0 : s.sortOrder) === j.DESC && /* @__PURE__ */ e(fe, { size: 15 }),
147
+ (s == null ? void 0 : s.sortOrder) === j.ASC && /* @__PURE__ */ e(re, { size: 15 })
148
+ ] }) : /* @__PURE__ */ e(pe, { size: 15 }))
149
149
  ] })
150
150
  },
151
- d.key
151
+ i.key
152
152
  ))
153
153
  ] })
154
154
  }
155
155
  ),
156
- /* @__PURE__ */ e(Be, { className: "[&>tr:nth-child(even)]:bg-bg-secondary", children: l.length ? l.map((d, B) => /* @__PURE__ */ p(
157
- X,
156
+ /* @__PURE__ */ e(Le, { className: "[&>tr:nth-child(even)]:bg-bg-secondary", children: d.length ? d.map((i, R) => /* @__PURE__ */ m(
157
+ G,
158
158
  {
159
- onClick: () => g == null ? void 0 : g(d),
160
- className: o(g && "cursor-pointer"),
161
- "data-state": A(d[N]) && "selected",
159
+ onClick: () => n == null ? void 0 : n(i),
160
+ className: M(n && "cursor-pointer"),
161
+ "data-state": L(i[x]) && "selected",
162
162
  children: [
163
- E && /* @__PURE__ */ e(
164
- H,
163
+ t && /* @__PURE__ */ e(
164
+ $,
165
165
  {
166
166
  className: "w-12 p-3",
167
- onClick: (r) => r.stopPropagation(),
167
+ onClick: (l) => l.stopPropagation(),
168
168
  children: /* @__PURE__ */ e(
169
- j,
169
+ U,
170
170
  {
171
171
  className: "mt-1",
172
- checked: A(d[N]),
173
- onCheckedChange: (r) => W(d[N], !!r),
172
+ checked: L(i[x]),
173
+ onCheckedChange: (l) => H(i[x], !!l),
174
174
  "aria-label": "Select row"
175
175
  }
176
176
  )
177
177
  }
178
178
  ),
179
- L && /* @__PURE__ */ e(H, { className: "w-12 p-2", children: (m.page - 1) * (m.limit || U) + B + 1 }),
180
- x.filter((r) => !r.hidden).map((r) => /* @__PURE__ */ e(
181
- H,
179
+ k && /* @__PURE__ */ e($, { className: "w-12 p-2", children: (w.page - 1) * (w.limit || I) + R + 1 }),
180
+ g.filter((l) => !l.hidden).map((l) => /* @__PURE__ */ e(
181
+ $,
182
182
  {
183
183
  className: "text-body-xs-medium max-w-xs p-2",
184
- style: r.styles,
185
- children: r.render ? r.render(M.get(d, r.dataIndex), d) : M.get(d, r.dataIndex, "")
184
+ style: l.styles,
185
+ children: l.render ? l.render(A.get(i, l.dataIndex), i) : A.get(i, l.dataIndex, "")
186
186
  },
187
- `${B}-${r.key}`
187
+ `${R}-${l.key}`
188
188
  ))
189
189
  ]
190
190
  },
191
- `${d[N]}`
192
- )) : /* @__PURE__ */ e(X, { children: /* @__PURE__ */ e(
193
- H,
191
+ `${i[x]}`
192
+ )) : /* @__PURE__ */ e(G, { children: /* @__PURE__ */ e(
193
+ $,
194
194
  {
195
- colSpan: L ? E ? x.length + 2 : x.length + 1 : x.length,
196
- children: /* @__PURE__ */ e($e, {})
195
+ colSpan: k ? t ? g.length + 2 : g.length + 1 : g.length,
196
+ children: /* @__PURE__ */ e(Re, {})
197
197
  }
198
198
  ) }) })
199
199
  ] });
200
- }, Ce = ({
201
- dataSource: l,
202
- columns: x,
203
- onRowClick: g,
204
- rowKey: N,
205
- hasNumbers: m,
206
- hasSearch: L,
207
- exportOptions: E,
208
- hasCheckbox: s,
209
- hasPagination: z,
210
- isStickyHeader: c,
200
+ }, Ve = ({
201
+ dataSource: d,
202
+ columns: g,
203
+ rowKey: n,
204
+ hasSearch: x,
205
+ exportOptions: w,
206
+ hasPagination: k,
211
207
  onParamChange: t,
212
- dataKey: R = "docs",
213
- loading: n,
214
- tableKey: i,
215
- filters: T,
216
- actions: k,
217
- handleFilterChange: A,
218
- params: D,
219
- exportLoading: J = !1,
220
- onColumnsUpdate: W,
221
- hasColumnsVisibilityDropdown: d,
222
- showAppliedFilters: B = !1,
223
- onSelectedItemsChange: r,
224
- actionProps: F,
225
- filterWrapperProps: S,
226
- exportOptionsProps: V,
227
- columnsVisibilityProps: w,
228
- paginationProps: u,
229
- searchProps: v,
230
- ...a
208
+ dataKey: f = "docs",
209
+ loading: D,
210
+ tableKey: p,
211
+ filters: N,
212
+ actions: v,
213
+ handleFilterChange: c,
214
+ params: s,
215
+ exportLoading: z = !1,
216
+ onColumnsUpdate: E,
217
+ hasColumnsVisibilityDropdown: L,
218
+ showAppliedFilters: y = !1,
219
+ onSelectedItemsChange: o,
220
+ actionProps: H,
221
+ filterWrapperProps: i,
222
+ exportOptionsProps: R,
223
+ columnsVisibilityProps: l,
224
+ paginationProps: K,
225
+ searchProps: T,
226
+ className: F,
227
+ ...S
231
228
  }) => {
232
- var Z;
233
- const { t: _ } = K(), [$, C] = ge([]), { formattedColumns: y, handleColumnsChange: P, resetColumns: ee } = Te({ key: i, columns: x });
234
- return Y(() => {
235
- W == null || W(y);
236
- }, [y, W]), Y(() => {
237
- r == null || r($);
238
- }, [$, r]), /* @__PURE__ */ p(
229
+ var Y;
230
+ const { t: J } = b(), [W, V] = xe([]), { formattedColumns: B, handleColumnsChange: u, resetColumns: a } = ge({ key: p, columns: g });
231
+ return Q(() => {
232
+ E == null || E(B);
233
+ }, [B, E]), Q(() => {
234
+ o == null || o(W);
235
+ }, [W, o]), /* @__PURE__ */ m(
239
236
  "div",
240
237
  {
241
- className: "border-border-alpha-light flex grow flex-col overflow-auto rounded-xl border shadow-xs",
238
+ className: M(
239
+ "border-border-alpha-light relative flex grow flex-col overflow-auto rounded-xl border shadow-xs",
240
+ F
241
+ ),
242
242
  children: [
243
- /* @__PURE__ */ p("div", { className: "flex flex-col gap-4 p-4", children: [
244
- (L || d && i || !M.isEmpty(E) || !M.isEmpty(T)) && /* @__PURE__ */ p("div", { className: "flex flex-col justify-between gap-3 lg:flex-row lg:items-center", children: [
245
- /* @__PURE__ */ e("div", { className: "grow", children: L && /* @__PURE__ */ e(
246
- ve,
243
+ /* @__PURE__ */ m("div", { className: "flex shrink-0 flex-col gap-4 p-4", children: [
244
+ (x || L && p || !A.isEmpty(w) || !A.isEmpty(N)) && /* @__PURE__ */ m("div", { className: "flex flex-col justify-between gap-3 lg:flex-row lg:items-center", children: [
245
+ /* @__PURE__ */ e("div", { className: "grow", children: x && /* @__PURE__ */ e(
246
+ Te,
247
247
  {
248
- ...v,
248
+ ...T,
249
249
  inputProps: {
250
- ...v == null ? void 0 : v.inputProps,
251
- className: o(
250
+ ...T == null ? void 0 : T.inputProps,
251
+ className: M(
252
252
  "h-8 grow",
253
- (Z = v == null ? void 0 : v.inputProps) == null ? void 0 : Z.className
253
+ (Y = T == null ? void 0 : T.inputProps) == null ? void 0 : Y.className
254
254
  )
255
255
  },
256
- className: o(
256
+ className: M(
257
257
  "max-w-full lg:max-w-80! [&_button]:-top-1",
258
- v == null ? void 0 : v.className
258
+ T == null ? void 0 : T.className
259
259
  ),
260
- defaultValue: M.get(D, "search", ""),
261
- onSearchChange: (f) => t == null ? void 0 : t({ ...D, search: f, page: 1 })
260
+ defaultValue: A.get(s, "search", ""),
261
+ onSearchChange: (r) => t == null ? void 0 : t({ ...s, search: r, page: 1 })
262
262
  }
263
263
  ) }),
264
- /* @__PURE__ */ p("div", { className: "flex items-center justify-end gap-3", children: [
265
- E && /* @__PURE__ */ e(
266
- De,
264
+ /* @__PURE__ */ m("div", { className: "flex items-center justify-end gap-3", children: [
265
+ w && /* @__PURE__ */ e(
266
+ Ee,
267
267
  {
268
- ...V,
269
- options: E,
270
- loading: J
268
+ ...R,
269
+ options: w,
270
+ loading: z
271
271
  }
272
272
  ),
273
- d && i && /* @__PURE__ */ p(de, { children: [
273
+ L && p && /* @__PURE__ */ m(ee, { children: [
274
274
  /* @__PURE__ */ e(
275
- se,
275
+ te,
276
276
  {
277
277
  asChild: !0,
278
278
  className: "grow",
279
- ...w == null ? void 0 : w.triggerProps,
279
+ ...l == null ? void 0 : l.triggerProps,
280
280
  children: /* @__PURE__ */ e(
281
- Q,
281
+ q,
282
282
  {
283
283
  variant: "secondary",
284
284
  size: "sm",
285
285
  className: "ml-auto rounded-lg px-3",
286
- children: (w == null ? void 0 : w.title) || /* @__PURE__ */ p(b, { children: [
287
- /* @__PURE__ */ e(te, {}),
286
+ children: (l == null ? void 0 : l.title) || /* @__PURE__ */ m(O, { children: [
287
+ /* @__PURE__ */ e(C, {}),
288
288
  " ",
289
- /* @__PURE__ */ e("span", { className: "hidden md:inline!", children: _("Customize columns") }),
290
- /* @__PURE__ */ e(le, {})
289
+ /* @__PURE__ */ e("span", { className: "hidden md:inline!", children: J("Customize columns") }),
290
+ /* @__PURE__ */ e(P, {})
291
291
  ] })
292
292
  }
293
293
  )
294
294
  }
295
295
  ),
296
- /* @__PURE__ */ p(
297
- ie,
296
+ /* @__PURE__ */ m(
297
+ le,
298
298
  {
299
299
  align: "end",
300
- ...w == null ? void 0 : w.contentProps,
300
+ ...l == null ? void 0 : l.contentProps,
301
301
  children: [
302
- /* @__PURE__ */ p(
303
- fe,
302
+ /* @__PURE__ */ m(
303
+ de,
304
304
  {
305
305
  className: "capitalize",
306
- onClick: ee,
306
+ onClick: a,
307
307
  children: [
308
- /* @__PURE__ */ e(me, {}),
308
+ /* @__PURE__ */ e(Ne, {}),
309
309
  " ",
310
- (w == null ? void 0 : w.resetText) || _("Reset columns")
310
+ (l == null ? void 0 : l.resetText) || J("Reset columns")
311
311
  ]
312
312
  }
313
313
  ),
314
- /* @__PURE__ */ e(re, {}),
315
- y.map((f) => /* @__PURE__ */ e(
316
- pe,
314
+ /* @__PURE__ */ e(se, {}),
315
+ B.map((r) => /* @__PURE__ */ e(
316
+ ie,
317
317
  {
318
318
  className: "capitalize",
319
- checked: !f.hidden,
320
- onCheckedChange: (G) => P(f, !G),
321
- children: f.name
319
+ checked: !r.hidden,
320
+ onCheckedChange: (_) => u(r, !_),
321
+ children: r.name
322
322
  },
323
- f.key
323
+ r.key
324
324
  ))
325
325
  ]
326
326
  }
327
327
  )
328
328
  ] }),
329
- k && /* @__PURE__ */ e(Ae, { ...F, actions: k }),
330
- T && /* @__PURE__ */ e(
331
- Me,
329
+ v && /* @__PURE__ */ e(ne, { ...H, actions: v }),
330
+ N && /* @__PURE__ */ e(
331
+ Ae,
332
332
  {
333
- ...S,
334
- filters: T,
335
- params: D,
336
- onChange: A,
337
- onFilter: (f) => {
338
- t == null || t({ ...f, page: 1 }), A == null || A(f);
333
+ ...i,
334
+ filters: N,
335
+ params: s,
336
+ onChange: c,
337
+ onFilter: (r) => {
338
+ t == null || t({ ...r, page: 1 }), c == null || c(r);
339
339
  }
340
340
  }
341
341
  )
342
342
  ] })
343
343
  ] }),
344
- B && !M.isEmpty(T) && /* @__PURE__ */ e(
345
- ye,
344
+ y && !A.isEmpty(N) && /* @__PURE__ */ e(
345
+ We,
346
346
  {
347
- filters: T,
348
- params: D,
349
- onFilter: (f) => {
350
- t == null || t({ ...f, page: 1 }), A == null || A(f);
347
+ filters: N,
348
+ params: s,
349
+ onFilter: (r) => {
350
+ t == null || t({ ...r, page: 1 }), c == null || c(r);
351
351
  }
352
352
  }
353
353
  )
354
354
  ] }),
355
- /* @__PURE__ */ e("div", { className: "flex flex-col overflow-auto border-y", children: n ? /* @__PURE__ */ e(ke, {}) : /* @__PURE__ */ e(
356
- He,
355
+ /* @__PURE__ */ e("div", { className: M("flex grow flex-col overflow-auto border-y"), children: D ? /* @__PURE__ */ e(ve, {}) : /* @__PURE__ */ e(
356
+ Be,
357
357
  {
358
- ...a,
358
+ ...S,
359
359
  params: {
360
- page: (l == null ? void 0 : l.page) || 1,
361
- limit: l == null ? void 0 : l.limit,
362
- ...D
360
+ page: (d == null ? void 0 : d.page) || 1,
361
+ limit: d == null ? void 0 : d.limit,
362
+ ...s
363
363
  },
364
- rows: M.get(l, R, []),
365
- rowKey: N,
366
- selectedItems: $,
367
- isStickyHeader: c,
368
- columns: y,
369
- hasCheckbox: s,
370
- hasNumbers: m,
371
- onRowClick: g,
372
- onSelectedItemsChange: C,
373
- onSortOrderChange: ({ sortField: f, sortOrder: G }) => {
374
- t == null || t({ ...D, sortField: f, sortOrder: G });
364
+ rows: A.get(d, f, []),
365
+ rowKey: n,
366
+ selectedItems: W,
367
+ columns: B,
368
+ onSelectedItemsChange: V,
369
+ onSortOrderChange: ({ sortField: r, sortOrder: _ }) => {
370
+ t == null || t({ ...s, sortField: r, sortOrder: _ });
375
371
  }
376
372
  }
377
373
  ) }),
378
- z && /* @__PURE__ */ p("div", { className: "flex shrink-0 flex-wrap items-center justify-center gap-3 p-4 lg:justify-between", children: [
374
+ k && /* @__PURE__ */ m("div", { className: "flex shrink-0 flex-wrap items-center justify-center gap-3 p-4 lg:justify-between", children: [
379
375
  /* @__PURE__ */ e("div", { className: "text-sm", children: /* @__PURE__ */ e(
380
- Le,
376
+ Me,
381
377
  {
382
- onLimitChange: (f) => t == null ? void 0 : t({ ...D, limit: f, page: 1 }),
383
- defaultValue: l == null ? void 0 : l.limit
378
+ onLimitChange: (r) => t == null ? void 0 : t({ ...s, limit: r, page: 1 }),
379
+ defaultValue: d == null ? void 0 : d.limit
384
380
  }
385
381
  ) }),
386
- /* @__PURE__ */ e("div", { className: "text-muted-foreground text-sm", children: _("{{selectedCount}} of {{total}} row(s) selected", {
387
- selectedCount: $.length,
388
- total: (l == null ? void 0 : l.total) || 0
382
+ /* @__PURE__ */ e("div", { className: "text-muted-foreground text-sm", children: J("{{selectedCount}} of {{total}} row(s) selected", {
383
+ selectedCount: W.length,
384
+ total: (d == null ? void 0 : d.total) || 0
389
385
  }) }),
390
386
  /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(
391
- Re,
387
+ ke,
392
388
  {
393
- ...u,
394
- onPageChange: (f) => t == null ? void 0 : t({ ...D, page: f }),
395
- currentPage: l == null ? void 0 : l.page,
396
- totalPages: l == null ? void 0 : l.totalPages
389
+ ...K,
390
+ onPageChange: (r) => t == null ? void 0 : t({ ...s, page: r }),
391
+ currentPage: d == null ? void 0 : d.page,
392
+ totalPages: d == null ? void 0 : d.totalPages
397
393
  }
398
394
  ) })
399
395
  ] })
@@ -402,7 +398,7 @@ const ye = we(function({
402
398
  );
403
399
  };
404
400
  export {
405
- Ce as DataTable,
406
- He as MyTable
401
+ Ve as DataTable,
402
+ Be as MyTable
407
403
  };
408
404
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../src/components/filters/AppliedFilters.tsx","../../../src/components/datatable/MyTable.tsx","../../../src/components/datatable/DataTable.tsx"],"sourcesContent":["import { ButtonGroup } from 'dgz-ui';\nimport { Button } from 'dgz-ui/button';\nimport type { CardProps } from 'dgz-ui/card';\nimport { cn } from 'dgz-ui/utils';\nimport { isEmpty, omit } from 'lodash';\nimport { XIcon } from 'lucide-react';\nimport { memo, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type { FilterInterface } from './FilterWrapper.tsx';\n\n/**\n * Props for the FilterWrapper component.\n */\nexport interface AppliedFiltersProps extends CardProps {\n /** Array of filter definitions to render. */\n filters?: FilterInterface[];\n /** Current active parameters/filters. */\n params?: Record<string, unknown>;\n /** Callback fired when filters are applied. */\n onFilter?: (filters: Record<string, unknown>) => void;\n}\n\n/**\n * FilterWrapper shows a popover with a dynamic list of field filters and emits selected filter values.\n *\n * @param props.filters - Array of filter definitions to render.\n * @param props.params - Current params used to detect active filters.\n * @param props.onFilter - Callback fired when user applies filters.\n * @param props.onCancel - Callback fired on cancel.\n * @param props.onChange - Callback fired whenever filter form values change.\n */\nexport const AppliedFilters = memo(function FilterWrapper({\n filters,\n params,\n onFilter,\n className,\n ...props\n}: AppliedFiltersProps) {\n const { t } = useTranslation();\n\n const filterObject = useMemo(\n () =>\n Object.fromEntries(\n filters?.map((filter) => [\n filter.name,\n Object.fromEntries(\n filter.options?.map(({ label, value }) => [value, label]) || []\n ),\n ]) || []\n ),\n [filters]\n );\n\n const paramsArr = useMemo(\n () =>\n Object.entries(params || {}).filter(\n ([key, value]) => !!filterObject?.[key] && !isEmpty(value)\n ),\n [filterObject, params]\n );\n\n return (\n !isEmpty(paramsArr) && (\n <div {...props} className={cn('flex flex-wrap gap-2', className)}>\n {paramsArr.map(([key, value]) =>\n Array.isArray(value) ? (\n <ButtonGroup key={key}>\n {value\n .filter((val) => filterObject?.[key]?.[val] && val)\n .map((val, index) => (\n <Button\n size={'sm'}\n key={index}\n onClick={() => {\n onFilter?.({\n ...params,\n [key]: value.filter((v) => v !== val),\n });\n }}\n >\n {t(String(filterObject?.[key]?.[val] || ''))} <XIcon />\n </Button>\n ))}\n </ButtonGroup>\n ) : (\n <Button\n size={'sm'}\n onClick={() => {\n onFilter?.(omit(params, key));\n }}\n >\n {t(String(filterObject?.[key]?.[value as string] || ''))}{' '}\n <XIcon />\n </Button>\n )\n )}\n </div>\n )\n );\n});\n","import { Checkbox } from 'dgz-ui/form';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from 'dgz-ui/table';\nimport { cn } from 'dgz-ui/utils';\nimport { get } from 'lodash';\nimport {\n ArrowDownWideNarrow,\n ArrowUpDown,\n ArrowUpWideNarrow,\n} from 'lucide-react';\nimport { type ComponentProps, useEffect } from 'react';\nimport { SortOrder } from '../../enums';\nimport { useDataTable, useSortable, type UseSortableProps } from '../../hooks';\nimport type { ColumnType } from '../../types';\nimport { Empty } from '../empty';\nimport { DEFAULT_LIMIT } from '../pagination/MyLimitSelect';\n\n/**\n * Props for the MyTable component.\n * @template TData - The type of data in the table.\n */\nexport interface MyTableProps<TData> extends ComponentProps<'table'> {\n /** Array of data rows to display. */\n rows?: TData[];\n /** Column definitions. */\n columns: ColumnType<TData>[];\n /** Callback when a row is clicked. */\n onRowClick?: (row: TData) => void;\n /** Whether to show row numbers. */\n hasNumbers?: boolean;\n /** Whether to show selection checkboxes. */\n hasCheckbox?: boolean;\n /** Unique key for each row. */\n rowKey: keyof TData;\n /** Current table parameters (page, limit, sort). */\n params?: Record<string, unknown>;\n /** Total number of items (optional, often used with pagination context). */\n total?: number;\n /** Array of currently selected item keys. */\n selectedItems?: TData[keyof TData][];\n /** Callback when selected items change. */\n onSelectedItemsChange?: (selectedItems: TData[keyof TData][]) => void;\n /** Callback when sort order changes. */\n onSortOrderChange?: (\n params: Omit<UseSortableProps<TData>, 'onSortOrderChange'>\n ) => void;\n /** Whether the header should stick to the top. */\n isStickyHeader?: true;\n}\n\n/**\n * MyTable renders a generic data table with optional numbering, selection checkboxes,\n * sortable columns and sticky header. It is a presentational component and delegates\n * sorting/selection state via hooks and callbacks.\n *\n * @template TData - The row data type.\n * @param props - Component props.\n * @returns React element containing the table.\n */\nexport const MyTable = <TData,>({\n rows = [],\n columns,\n onRowClick,\n rowKey,\n params = {\n page: 1,\n limit: DEFAULT_LIMIT,\n },\n hasNumbers = false,\n hasCheckbox = false,\n selectedItems,\n onSelectedItemsChange,\n onSortOrderChange,\n isStickyHeader,\n className,\n ...props\n}: MyTableProps<TData>) => {\n const { sortObject, handleSort } = useSortable<TData>({\n sortField: params?.sortField as keyof TData | undefined,\n sortOrder: params?.sortOrder as SortOrder | undefined,\n onSortOrderChange,\n });\n const {\n selectedRows,\n isRowSelected,\n isAllRowsSelected,\n handleSelectAllRows,\n handleSelectRow,\n } = useDataTable<TData>({ rows, defaultSelectedRows: selectedItems });\n\n useEffect(() => {\n if (\n JSON.stringify(selectedItems) !== JSON.stringify(selectedRows) &&\n selectedRows\n ) {\n onSelectedItemsChange?.(selectedRows);\n }\n }, [selectedRows, selectedItems, onSelectedItemsChange]);\n\n return (\n <Table {...props} className={cn('relative', className)}>\n <TableHeader\n className={cn('bg-bg', isStickyHeader && 'sticky top-0 z-1')}\n >\n <TableRow>\n {hasCheckbox && (\n <TableHead className={'w-12 p-3'}>\n <Checkbox\n className={'mt-1'}\n checked={isAllRowsSelected(rowKey)}\n onCheckedChange={(value) =>\n handleSelectAllRows(rowKey, !!value)\n }\n aria-label=\"Select all\"\n />\n </TableHead>\n )}\n {hasNumbers && <TableHead className={'w-12 p-2'}>#</TableHead>}\n {columns\n .filter((column) => !column.hidden)\n .map((column) => (\n <TableHead\n key={column.key}\n style={column.styles}\n className={cn('p-2', column.sortable && 'cursor-pointer')}\n onClick={() => column.sortable && handleSort(column.dataIndex)}\n >\n <div className={'flex items-center gap-2'}>\n {column.name}{' '}\n {column.sortable &&\n (sortObject?.sortField === column.key ? (\n <>\n {sortObject?.sortOrder === SortOrder.DESC && (\n <ArrowDownWideNarrow size={15} />\n )}\n {sortObject?.sortOrder === SortOrder.ASC && (\n <ArrowUpWideNarrow size={15} />\n )}\n </>\n ) : (\n <ArrowUpDown size={15} />\n ))}\n </div>\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody className={'[&>tr:nth-child(even)]:bg-bg-secondary'}>\n {rows.length ? (\n rows.map((row, index) => (\n <TableRow\n key={`${row[rowKey]}`}\n onClick={() => onRowClick?.(row)}\n className={cn(onRowClick && 'cursor-pointer')}\n data-state={isRowSelected(row[rowKey]) && 'selected'}\n >\n {hasCheckbox && (\n <TableCell\n className={'w-12 p-3'}\n onClick={(evt) => evt.stopPropagation()}\n >\n <Checkbox\n className={'mt-1'}\n checked={isRowSelected(row[rowKey])}\n onCheckedChange={(value) =>\n handleSelectRow(row[rowKey], !!value)\n }\n aria-label=\"Select row\"\n />\n </TableCell>\n )}\n {hasNumbers && (\n <TableCell className={'w-12 p-2'}>\n {((params.page as number) - 1) *\n ((params.limit || DEFAULT_LIMIT) as number) +\n index +\n 1}\n </TableCell>\n )}\n {columns\n .filter((column) => !column.hidden)\n .map((column) => (\n <TableCell\n className={'text-body-xs-medium max-w-xs p-2'}\n style={column.styles}\n key={`${index}-${column.key}`}\n >\n {column.render\n ? column.render(get(row, column.dataIndex), row)\n : get(row, column.dataIndex, '')}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={\n hasNumbers\n ? hasCheckbox\n ? columns.length + 2\n : columns.length + 1\n : columns.length\n }\n >\n <Empty />\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n );\n};\n","import { RiArrowDownSLine, RiLayoutColumnLine } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport { cn } from 'dgz-ui/utils';\nimport { get, isEmpty } from 'lodash';\nimport { RefreshCw } from 'lucide-react';\nimport { type ReactNode, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useColumns } from '../../hooks';\nimport type { ColumnType } from '../../types';\nimport { type ActionInterface, Actions, type ActionsProps } from '../actions';\nimport {\n ExportData,\n type ExportDataInterface,\n type ExportDataProps,\n} from '../export';\nimport {\n type FilterInterface,\n FilterWrapper,\n type FilterWrapperProps,\n Search,\n type SearchProps,\n} from '../filters';\nimport { AppliedFilters } from '../filters/AppliedFilters.tsx';\nimport { Loader } from '../loader';\nimport { MyLimitSelect, MyPagination } from '../pagination';\nimport type { MyPaginationProps } from '../pagination/MyPagination.tsx';\nimport { MyTable, type MyTableProps } from './MyTable';\n\n/**\n * Minimal pagination wrapper contract used by `DataTable`.\n *\n * Notes\n * - Only `page`, `limit`, and `totalPages` are required. Other fields are optional and\n * may be provided by your API for convenience.\n * - The actual rows array can be stored in any key, controlled via `dataKey` prop\n * (defaults to `\"docs\"`).\n */\nexport interface PaginationInterface<TData> {\n /** Array of rows for the current page. Used when `dataKey` is set to `\"docs\"`. */\n docs?: TData[];\n /** Zero-based index of the first item on the current page (if provided by API). */\n offset?: number;\n /** Page size (items per page). */\n limit: number;\n /** Total number of pages available. */\n totalPages: number;\n /** Total number of items across all pages (if available). */\n total?: number;\n /** Current page number (1-based). */\n page: number;\n /** Convenience counter for the first item index on the page (if provided). */\n pagingCounter?: number;\n /** Whether a previous page exists. */\n hasPrevPage?: boolean;\n /** Whether a next page exists. */\n hasNextPage?: boolean;\n /** Previous page number, if available. */\n prevPage?: number;\n /** Next page number, if available. */\n nextPage?: number;\n}\n\n/**\n * Props for the DataTable component.\n *\n * @template TData - Row data type.\n * @template TPaginationData - Pagination wrapper type.\n */\nexport interface DataTableProps<\n TData,\n TPaginationData extends PaginationInterface<TData>,\n> extends Omit<MyTableProps<TData>, 'rows'> {\n /** Pagination data source. */\n dataSource?: TPaginationData;\n /** Callback for parameter changes (pagination, sorting, filtering). */\n onParamChange?: (param: Record<string, unknown>) => void;\n /** Whether to enable pagination. */\n hasPagination?: true;\n /** Options for the export data dropdown. */\n exportOptions?: ExportDataInterface[];\n /** Whether to enable search functionality. */\n hasSearch?: true;\n /** Whether the table data is loading. */\n loading?: boolean;\n /** Array of filters to display. */\n filters?: FilterInterface[];\n /** Array of actions to display. */\n actions?: ActionInterface[];\n /** Callback for filter changes. */\n handleFilterChange?: (filters: Record<string, unknown>) => void;\n /** Unique key for the table, used for column persistence. */\n tableKey: string;\n /** The key in dataSource where the data array is located. Defaults to \"docs\". */\n dataKey?: keyof TPaginationData;\n /** Whether to show the columns visibility dropdown. */\n hasColumnsVisibilityDropdown?: true;\n /** Whether to show the columns visibility dropdown. */\n showAppliedFilters?: boolean;\n /** Callback when columns are updated (e.g., visibility toggled). */\n onColumnsUpdate?: (columns: ColumnType<TData>[]) => void;\n /** Whether the export action is loading. */\n exportLoading?: boolean;\n /** Props for the Actions component. */\n actionProps?: Partial<ActionsProps>;\n /** Props for the FilterWrapper component. */\n filterWrapperProps?: Partial<FilterWrapperProps>;\n /** Props for the ExportData component. */\n exportOptionsProps?: Partial<ExportDataProps>;\n searchProps?: Partial<SearchProps>;\n paginationProps?: Partial<MyPaginationProps>;\n /** Props for the columns visibility dropdown. */\n columnsVisibilityProps?: DropdownContainerProps & {\n title?: ReactNode;\n resetText?: ReactNode;\n };\n}\n\n/**\n * DataTable is a composable, high-level table that brings together search, filters,\n * column visibility management, header actions, exporting, and pagination.\n * It renders `MyTable` for rows and, when enabled, shows header controls and a footer with pagination.\n *\n * Generic Types\n * - `TData` — Row data shape (type of each item in the rows array).\n * - `TPaginationData` — Pagination wrapper type containing rows and pagination meta; defaults to\n * `PaginationInterface<TData>`.\n *\n * Key Behaviors\n * - Emits `onParamChange` when search text, filters, page, limit, or sort order change.\n * - Persists column visibility per `tableKey` via `useColumns` and informs parent with `onColumnsUpdate`.\n * - Renders header controls only when the related feature is enabled/has content.\n *\n * Props Overview\n * - `dataSource` — Paginated data source object that contains rows (see `dataKey`) and pagination metadata.\n * - `columns` — Column definitions passed to `MyTable`.\n * - `onRowClick` — Callback when a row is clicked.\n * - `rowKey` — Property name used as a unique row key.\n * - `hasNumbers` — Whether to show the row numbers column.\n * - `hasSearch` — Set to `true` to display the search input in the header.\n * - `exportOptions` — Export menu options shown by `ExportData` (see `ExportDataInterface[]`).\n * - `exportLoading` — When `true`, shows a spinner in the Export button to indicate an export action is in progress.\n * - `hasCheckbox` — Whether to show the selection checkbox column.\n * - `hasPagination` — Set to `true` to render the pagination footer.\n * - `isStickyHeader` — Whether to keep the table header sticky.\n * - `onParamChange` — Emits parameter changes for pagination/sorting/search/filters.\n * - `dataKey` — Key within `dataSource` that contains the row array. Defaults to `\"docs\"`.\n * - `loading` — If `true`, shows a loading state instead of the table rows.\n * - `tableKey` — Unique key for persisting column visibility state.\n * - `filters` — Filter configurations to render in the header.\n * - `actions` — Header actions independent of selected rows.\n * - `handleFilterChange` — Callback executed when filter values change.\n * - `params` — Current list parameters (pagination, sort, search, filters).\n * - `hasColumnsVisibilityDropdown` — Set to `true` to show the columns customize dropdown.\n * - `onColumnsUpdate` — Notifies parent whenever the internal columns state changes (after formatting/visibility).\n * - `actionProps` — Props passed to the `Actions` component.\n * - `filterWrapperProps` — Props passed to the `FilterWrapper` component.\n * - `exportOptionsProps` — Props passed to the `ExportData` component.\n * - `columnsVisibilityProps` — Props passed to the columns visibility dropdown.\n * - `onSelectedItemsChange` — Callback when selected rows change (requires `hasCheckbox`).\n *\n * Accessibility\n * - Header controls and dropdowns reuse shared primitives that include keyboard and ARIA support.\n *\n * Internationalization\n * - Text such as \"Export\", \"Customize columns\", and \"Reset columns\" are resolved via `react-i18next`.\n *\n * Usage Examples\n * 1) Minimal paginated table (uses default `dataKey = \"docs\"`)\n * ```tsx\n * type User = { id: string; name: string };\n * const data = { docs: [{ id: '1', name: 'Ada' }], page: 1, limit: 10, totalPages: 1 };\n *\n * <DataTable<User>\n * tableKey=\"users-table\"\n * columns={[{ key: 'name', name: 'Name' }]}\n * rowKey=\"id\"\n * dataSource={data}\n * hasPagination\n * />\n * ```\n *\n * 2) Custom `dataKey` and column visibility persistence\n * ```tsx\n * type Row = { id: number; title: string };\n * const payload = { items: [{ id: 1, title: 'Hello' }], page: 1, limit: 20, totalPages: 1 };\n *\n * <DataTable<Row>\n * tableKey=\"posts\"\n * columns={[{ key: 'title', name: 'Title' }]}\n * rowKey=\"id\"\n * dataSource={payload}\n * dataKey=\"items\"\n * hasColumnsVisibilityDropdown\n * />\n * ```\n *\n * 3) Responding to user interactions via `onParamChange`\n * ```tsx\n * const [params, setParams] = useState({ page: 1, limit: 10 });\n *\n * <DataTable\n * tableKey=\"logs\"\n * columns={[{ key: 'message', name: 'Message' }]}\n * rowKey=\"id\"\n * params={params}\n * onParamChange={setParams}\n * hasSearch\n * hasPagination\n * />\n * ```\n *\n * Notes and Best Practices\n * - Ensure `rowKey` points to a stable unique field in `TData` to avoid key collisions.\n * - When arrays like `exportOptions`, `filters`, or `actions` are empty, their sections are not rendered.\n * - Sorting emits `{ sortField, sortOrder }` through `onParamChange` when the user toggles a column sort.\n *\n * Returns\n * - React element that renders a complete data table experience.\n */\nexport const DataTable = <\n TData,\n TPaginationData extends PaginationInterface<TData> =\n PaginationInterface<TData>,\n>({\n dataSource,\n columns,\n onRowClick,\n rowKey,\n hasNumbers,\n hasSearch,\n exportOptions,\n hasCheckbox,\n hasPagination,\n isStickyHeader,\n onParamChange,\n dataKey = 'docs',\n loading,\n tableKey,\n filters,\n actions,\n handleFilterChange,\n params,\n exportLoading = false,\n onColumnsUpdate,\n hasColumnsVisibilityDropdown,\n showAppliedFilters = false,\n onSelectedItemsChange,\n actionProps,\n filterWrapperProps,\n exportOptionsProps,\n columnsVisibilityProps,\n paginationProps,\n searchProps,\n ...props\n}: DataTableProps<TData, TPaginationData>) => {\n const { t } = useTranslation();\n const [selectedRows, setSelectedRows] = useState<TData[keyof TData][]>([]);\n const { formattedColumns, handleColumnsChange, resetColumns } =\n useColumns<TData>({ key: tableKey, columns });\n\n useEffect(() => {\n onColumnsUpdate?.(formattedColumns);\n }, [formattedColumns, onColumnsUpdate]);\n\n useEffect(() => {\n onSelectedItemsChange?.(selectedRows);\n }, [selectedRows, onSelectedItemsChange]);\n\n return (\n <div\n className={\n 'border-border-alpha-light flex grow flex-col overflow-auto rounded-xl border shadow-xs'\n }\n >\n <div className={'flex flex-col gap-4 p-4'}>\n {(hasSearch ||\n (hasColumnsVisibilityDropdown && tableKey) ||\n !isEmpty(exportOptions) ||\n !isEmpty(filters)) && (\n <div className=\"flex flex-col justify-between gap-3 lg:flex-row lg:items-center\">\n <div className={'grow'}>\n {hasSearch && (\n <Search\n {...searchProps}\n inputProps={{\n ...searchProps?.inputProps,\n className: cn(\n 'h-8 grow',\n searchProps?.inputProps?.className\n ),\n }}\n className={cn(\n 'max-w-full lg:max-w-80! [&_button]:-top-1',\n searchProps?.className\n )}\n defaultValue={get(params, 'search', '') as string}\n onSearchChange={(search) =>\n onParamChange?.({ ...params, search, page: 1 })\n }\n />\n )}\n </div>\n <div className={'flex items-center justify-end gap-3'}>\n {exportOptions && (\n <ExportData\n {...exportOptionsProps}\n options={exportOptions}\n loading={exportLoading}\n />\n )}\n {hasColumnsVisibilityDropdown && tableKey && (\n <DropdownMenu>\n <DropdownMenuTrigger\n asChild\n className={'grow'}\n {...columnsVisibilityProps?.triggerProps}\n >\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n {columnsVisibilityProps?.title || (\n <>\n <RiLayoutColumnLine />{' '}\n <span className={'hidden md:inline!'}>\n {t('Customize columns')}\n </span>\n <RiArrowDownSLine />\n </>\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"end\"\n {...columnsVisibilityProps?.contentProps}\n >\n <DropdownMenuItem\n className=\"capitalize\"\n onClick={resetColumns}\n >\n <RefreshCw />{' '}\n {columnsVisibilityProps?.resetText || t('Reset columns')}\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n {formattedColumns.map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.key}\n className=\"capitalize\"\n checked={!column.hidden}\n onCheckedChange={(value) =>\n handleColumnsChange(column, !value)\n }\n >\n {column.name}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n {actions && <Actions {...actionProps} actions={actions} />}\n {filters && (\n <FilterWrapper\n {...filterWrapperProps}\n filters={filters}\n params={params}\n onChange={handleFilterChange}\n onFilter={(filter) => {\n onParamChange?.({ ...filter, page: 1 });\n handleFilterChange?.(filter);\n }}\n />\n )}\n </div>\n </div>\n )}\n {showAppliedFilters && !isEmpty(filters) && (\n <AppliedFilters\n filters={filters}\n params={params}\n onFilter={(filter) => {\n onParamChange?.({ ...filter, page: 1 });\n handleFilterChange?.(filter);\n }}\n />\n )}\n </div>\n\n <div className={'flex flex-col overflow-auto border-y'}>\n {!loading ? (\n <MyTable<TData>\n {...props}\n params={{\n page: dataSource?.page || 1,\n limit: dataSource?.limit,\n ...params,\n }}\n rows={get(dataSource, dataKey, []) as TData[]}\n rowKey={rowKey}\n selectedItems={selectedRows}\n isStickyHeader={isStickyHeader}\n columns={formattedColumns}\n hasCheckbox={hasCheckbox}\n hasNumbers={hasNumbers}\n onRowClick={onRowClick}\n onSelectedItemsChange={setSelectedRows}\n onSortOrderChange={({ sortField, sortOrder }) => {\n onParamChange?.({ ...params, sortField, sortOrder });\n }}\n />\n ) : (\n <Loader />\n )}\n </div>\n {hasPagination && (\n <div className=\"flex shrink-0 flex-wrap items-center justify-center gap-3 p-4 lg:justify-between\">\n <div className=\"text-sm\">\n <MyLimitSelect\n onLimitChange={(limit) =>\n onParamChange?.({ ...params, limit, page: 1 })\n }\n defaultValue={dataSource?.limit}\n />\n </div>\n <div className=\"text-muted-foreground text-sm\">\n {t('{{selectedCount}} of {{total}} row(s) selected', {\n selectedCount: selectedRows.length,\n total: dataSource?.total || 0,\n })}\n </div>\n <div>\n <MyPagination\n {...paginationProps}\n onPageChange={(page) => onParamChange?.({ ...params, page })}\n currentPage={dataSource?.page}\n totalPages={dataSource?.totalPages}\n />\n </div>\n </div>\n )}\n </div>\n );\n};\n"],"names":["AppliedFilters","memo","filters","params","onFilter","className","props","t","useTranslation","filterObject","useMemo","filter","_a","label","value","paramsArr","key","isEmpty","jsx","cn","ButtonGroup","val","index","jsxs","Button","v","XIcon","omit","MyTable","rows","columns","onRowClick","rowKey","DEFAULT_LIMIT","hasNumbers","hasCheckbox","selectedItems","onSelectedItemsChange","onSortOrderChange","isStickyHeader","sortObject","handleSort","useSortable","selectedRows","isRowSelected","isAllRowsSelected","handleSelectAllRows","handleSelectRow","useDataTable","useEffect","Table","TableHeader","TableRow","TableHead","Checkbox","column","Fragment","SortOrder","ArrowDownWideNarrow","ArrowUpWideNarrow","ArrowUpDown","TableBody","row","TableCell","evt","get","Empty","DataTable","dataSource","hasSearch","exportOptions","hasPagination","onParamChange","dataKey","loading","tableKey","actions","handleFilterChange","exportLoading","onColumnsUpdate","hasColumnsVisibilityDropdown","showAppliedFilters","actionProps","filterWrapperProps","exportOptionsProps","columnsVisibilityProps","paginationProps","searchProps","setSelectedRows","useState","formattedColumns","handleColumnsChange","resetColumns","useColumns","Search","search","ExportData","DropdownMenu","DropdownMenuTrigger","RiLayoutColumnLine","RiArrowDownSLine","DropdownMenuContent","DropdownMenuItem","RefreshCw","DropdownMenuSeparator","DropdownMenuCheckboxItem","Actions","FilterWrapper","Loader","sortField","sortOrder","MyLimitSelect","limit","MyPagination","page"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/components/filters/AppliedFilters.tsx","../../../src/components/datatable/MyTable.tsx","../../../src/components/datatable/DataTable.tsx"],"sourcesContent":["import { ButtonGroup } from 'dgz-ui';\nimport { Button } from 'dgz-ui/button';\nimport type { CardProps } from 'dgz-ui/card';\nimport { cn } from 'dgz-ui/utils';\nimport { isEmpty, omit } from 'lodash';\nimport { XIcon } from 'lucide-react';\nimport { memo, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type { FilterInterface } from './FilterWrapper.tsx';\n\n/**\n * Props for the FilterWrapper component.\n */\nexport interface AppliedFiltersProps extends CardProps {\n /** Array of filter definitions to render. */\n filters?: FilterInterface[];\n /** Current active parameters/filters. */\n params?: Record<string, unknown>;\n /** Callback fired when filters are applied. */\n onFilter?: (filters: Record<string, unknown>) => void;\n}\n\n/**\n * FilterWrapper shows a popover with a dynamic list of field filters and emits selected filter values.\n *\n * @param props.filters - Array of filter definitions to render.\n * @param props.params - Current params used to detect active filters.\n * @param props.onFilter - Callback fired when user applies filters.\n * @param props.onCancel - Callback fired on cancel.\n * @param props.onChange - Callback fired whenever filter form values change.\n */\nexport const AppliedFilters = memo(function FilterWrapper({\n filters,\n params,\n onFilter,\n className,\n ...props\n}: AppliedFiltersProps) {\n const { t } = useTranslation();\n\n const filterObject = useMemo(\n () =>\n Object.fromEntries(\n filters?.map((filter) => [\n filter.name,\n Object.fromEntries(\n filter.options?.map(({ label, value }) => [value, label]) || []\n ),\n ]) || []\n ),\n [filters]\n );\n\n const paramsArr = useMemo(\n () =>\n Object.entries(params || {}).filter(\n ([key, value]) => !!filterObject?.[key] && !isEmpty(value)\n ),\n [filterObject, params]\n );\n\n return (\n !isEmpty(paramsArr) && (\n <div {...props} className={cn('flex flex-wrap gap-2', className)}>\n {paramsArr.map(([key, value]) =>\n Array.isArray(value) ? (\n <ButtonGroup key={key}>\n {value\n .filter((val) => filterObject?.[key]?.[val] && val)\n .map((val, index) => (\n <Button\n size={'sm'}\n key={index}\n onClick={() => {\n onFilter?.({\n ...params,\n [key]: value.filter((v) => v !== val),\n });\n }}\n >\n {t(String(filterObject?.[key]?.[val] || ''))} <XIcon />\n </Button>\n ))}\n </ButtonGroup>\n ) : (\n <Button\n size={'sm'}\n onClick={() => {\n onFilter?.(omit(params, key));\n }}\n >\n {t(String(filterObject?.[key]?.[value as string] || ''))}{' '}\n <XIcon />\n </Button>\n )\n )}\n </div>\n )\n );\n});\n","import { Checkbox } from 'dgz-ui/form';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from 'dgz-ui/table';\nimport { cn } from 'dgz-ui/utils';\nimport { get } from 'lodash';\nimport {\n ArrowDownWideNarrow,\n ArrowUpDown,\n ArrowUpWideNarrow,\n} from 'lucide-react';\nimport { type ComponentProps, useEffect } from 'react';\nimport { SortOrder } from '../../enums';\nimport { useDataTable, useSortable, type UseSortableProps } from '../../hooks';\nimport type { ColumnType } from '../../types';\nimport { Empty } from '../empty';\nimport { DEFAULT_LIMIT } from '../pagination/MyLimitSelect';\n\n/**\n * Props for the MyTable component.\n * @template TData - The type of data in the table.\n */\nexport interface MyTableProps<TData> extends ComponentProps<'table'> {\n /** Array of data rows to display. */\n rows?: TData[];\n /** Column definitions. */\n columns: ColumnType<TData>[];\n /** Callback when a row is clicked. */\n onRowClick?: (row: TData) => void;\n /** Whether to show row numbers. */\n hasNumbers?: boolean;\n /** Whether to show selection checkboxes. */\n hasCheckbox?: boolean;\n /** Unique key for each row. */\n rowKey: keyof TData;\n /** Current table parameters (page, limit, sort). */\n params?: Record<string, unknown>;\n /** Total number of items (optional, often used with pagination context). */\n total?: number;\n /** Array of currently selected item keys. */\n selectedItems?: TData[keyof TData][];\n /** Callback when selected items change. */\n onSelectedItemsChange?: (selectedItems: TData[keyof TData][]) => void;\n /** Callback when sort order changes. */\n onSortOrderChange?: (\n params: Omit<UseSortableProps<TData>, 'onSortOrderChange'>\n ) => void;\n /** Whether the header should stick to the top. */\n isStickyHeader?: true;\n}\n\n/**\n * MyTable renders a generic data table with optional numbering, selection checkboxes,\n * sortable columns and sticky header. It is a presentational component and delegates\n * sorting/selection state via hooks and callbacks.\n *\n * @template TData - The row data type.\n * @param rows\n * @param columns\n * @param onRowClick\n * @param rowKey\n * @param params\n * @param hasNumbers\n * @param hasCheckbox\n * @param selectedItems\n * @param onSelectedItemsChange\n * @param onSortOrderChange\n * @param isStickyHeader\n * @param className\n * @param props - Component props.\n * @returns React element containing the table.\n */\nexport const MyTable = <TData,>({\n rows = [],\n columns,\n onRowClick,\n rowKey,\n params = {\n page: 1,\n limit: DEFAULT_LIMIT,\n },\n hasNumbers = false,\n hasCheckbox = false,\n selectedItems,\n onSelectedItemsChange,\n onSortOrderChange,\n isStickyHeader,\n className,\n ...props\n}: MyTableProps<TData>) => {\n const { sortObject, handleSort } = useSortable<TData>({\n sortField: params?.sortField as keyof TData | undefined,\n sortOrder: params?.sortOrder as SortOrder | undefined,\n onSortOrderChange,\n });\n const {\n selectedRows,\n isRowSelected,\n isAllRowsSelected,\n handleSelectAllRows,\n handleSelectRow,\n } = useDataTable<TData>({ rows, defaultSelectedRows: selectedItems });\n\n useEffect(() => {\n if (\n JSON.stringify(selectedItems) !== JSON.stringify(selectedRows) &&\n selectedRows\n ) {\n onSelectedItemsChange?.(selectedRows);\n }\n }, [selectedRows, selectedItems, onSelectedItemsChange]);\n\n return (\n <Table {...props}>\n <TableHeader\n className={cn('bg-bg', isStickyHeader && 'sticky top-0 z-1')}\n >\n <TableRow>\n {hasCheckbox && (\n <TableHead className={'w-12 p-3'}>\n <Checkbox\n className={'mt-1'}\n checked={isAllRowsSelected(rowKey)}\n onCheckedChange={(value) =>\n handleSelectAllRows(rowKey, !!value)\n }\n aria-label=\"Select all\"\n />\n </TableHead>\n )}\n {hasNumbers && <TableHead className={'w-12 p-2'}>#</TableHead>}\n {columns\n .filter((column) => !column.hidden)\n .map((column) => (\n <TableHead\n key={column.key}\n style={column.styles}\n className={cn('p-2', column.sortable && 'cursor-pointer')}\n onClick={() => column.sortable && handleSort(column.dataIndex)}\n >\n <div className={'flex items-center gap-2'}>\n {column.name}{' '}\n {column.sortable &&\n (sortObject?.sortField === column.key ? (\n <>\n {sortObject?.sortOrder === SortOrder.DESC && (\n <ArrowDownWideNarrow size={15} />\n )}\n {sortObject?.sortOrder === SortOrder.ASC && (\n <ArrowUpWideNarrow size={15} />\n )}\n </>\n ) : (\n <ArrowUpDown size={15} />\n ))}\n </div>\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody className={'[&>tr:nth-child(even)]:bg-bg-secondary'}>\n {rows.length ? (\n rows.map((row, index) => (\n <TableRow\n key={`${row[rowKey]}`}\n onClick={() => onRowClick?.(row)}\n className={cn(onRowClick && 'cursor-pointer')}\n data-state={isRowSelected(row[rowKey]) && 'selected'}\n >\n {hasCheckbox && (\n <TableCell\n className={'w-12 p-3'}\n onClick={(evt) => evt.stopPropagation()}\n >\n <Checkbox\n className={'mt-1'}\n checked={isRowSelected(row[rowKey])}\n onCheckedChange={(value) =>\n handleSelectRow(row[rowKey], !!value)\n }\n aria-label=\"Select row\"\n />\n </TableCell>\n )}\n {hasNumbers && (\n <TableCell className={'w-12 p-2'}>\n {((params.page as number) - 1) *\n ((params.limit || DEFAULT_LIMIT) as number) +\n index +\n 1}\n </TableCell>\n )}\n {columns\n .filter((column) => !column.hidden)\n .map((column) => (\n <TableCell\n className={'text-body-xs-medium max-w-xs p-2'}\n style={column.styles}\n key={`${index}-${column.key}`}\n >\n {column.render\n ? column.render(get(row, column.dataIndex), row)\n : get(row, column.dataIndex, '')}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={\n hasNumbers\n ? hasCheckbox\n ? columns.length + 2\n : columns.length + 1\n : columns.length\n }\n >\n <Empty />\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n );\n};\n","import { RiArrowDownSLine, RiLayoutColumnLine } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport { cn } from 'dgz-ui/utils';\nimport { get, isEmpty } from 'lodash';\nimport { RefreshCw } from 'lucide-react';\nimport { type ReactNode, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useColumns } from '../../hooks';\nimport type { ColumnType } from '../../types';\nimport { type ActionInterface, Actions, type ActionsProps } from '../actions';\nimport {\n ExportData,\n type ExportDataInterface,\n type ExportDataProps,\n} from '../export';\nimport {\n type FilterInterface,\n FilterWrapper,\n type FilterWrapperProps,\n Search,\n type SearchProps,\n} from '../filters';\nimport { AppliedFilters } from '../filters/AppliedFilters.tsx';\nimport { Loader } from '../loader';\nimport { MyLimitSelect, MyPagination } from '../pagination';\nimport type { MyPaginationProps } from '../pagination/MyPagination.tsx';\nimport { MyTable, type MyTableProps } from './MyTable';\n\n/**\n * Minimal pagination wrapper contract used by `DataTable`.\n *\n * Notes\n * - Only `page`, `limit`, and `totalPages` are required. Other fields are optional and\n * may be provided by your API for convenience.\n * - The actual rows array can be stored in any key, controlled via `dataKey` prop\n * (defaults to `\"docs\"`).\n */\nexport interface PaginationInterface<TData> {\n /** Array of rows for the current page. Used when `dataKey` is set to `\"docs\"`. */\n docs?: TData[];\n /** Zero-based index of the first item on the current page (if provided by API). */\n offset?: number;\n /** Page size (items per page). */\n limit: number;\n /** Total number of pages available. */\n totalPages: number;\n /** Total number of items across all pages (if available). */\n total?: number;\n /** Current page number (1-based). */\n page: number;\n /** Convenience counter for the first item index on the page (if provided). */\n pagingCounter?: number;\n /** Whether a previous page exists. */\n hasPrevPage?: boolean;\n /** Whether a next page exists. */\n hasNextPage?: boolean;\n /** Previous page number, if available. */\n prevPage?: number;\n /** Next page number, if available. */\n nextPage?: number;\n}\n\n/**\n * Props for the DataTable component.\n *\n * @template TData - Row data type.\n * @template TPaginationData - Pagination wrapper type.\n */\nexport interface DataTableProps<\n TData,\n TPaginationData extends PaginationInterface<TData>,\n> extends Omit<MyTableProps<TData>, 'rows'> {\n /** Pagination data source. */\n dataSource?: TPaginationData;\n /** Callback for parameter changes (pagination, sorting, filtering). */\n onParamChange?: (param: Record<string, unknown>) => void;\n /** Whether to enable pagination. */\n hasPagination?: true;\n /** Options for the export data dropdown. */\n exportOptions?: ExportDataInterface[];\n /** Whether to enable search functionality. */\n hasSearch?: true;\n /** Whether the table data is loading. */\n loading?: boolean;\n /** Array of filters to display. */\n filters?: FilterInterface[];\n /** Array of actions to display. */\n actions?: ActionInterface[];\n /** Callback for filter changes. */\n handleFilterChange?: (filters: Record<string, unknown>) => void;\n /** Unique key for the table, used for column persistence. */\n tableKey: string;\n /** The key in dataSource where the data array is located. Defaults to \"docs\". */\n dataKey?: keyof TPaginationData;\n /** Whether to show the columns visibility dropdown. */\n hasColumnsVisibilityDropdown?: true;\n /** Whether to show the columns visibility dropdown. */\n showAppliedFilters?: boolean;\n /** Callback when columns are updated (e.g., visibility toggled). */\n onColumnsUpdate?: (columns: ColumnType<TData>[]) => void;\n /** Whether the export action is loading. */\n exportLoading?: boolean;\n /** Props for the Actions component. */\n actionProps?: Partial<ActionsProps>;\n /** Props for the FilterWrapper component. */\n filterWrapperProps?: Partial<FilterWrapperProps>;\n /** Props for the ExportData component. */\n exportOptionsProps?: Partial<ExportDataProps>;\n searchProps?: Partial<SearchProps>;\n paginationProps?: Partial<MyPaginationProps>;\n /** Props for the columns visibility dropdown. */\n columnsVisibilityProps?: DropdownContainerProps & {\n title?: ReactNode;\n resetText?: ReactNode;\n };\n}\n\n/**\n * DataTable is a composable, high-level table that brings together search, filters,\n * column visibility management, header actions, exporting, and pagination.\n * It renders `MyTable` for rows and, when enabled, shows header controls and a footer with pagination.\n *\n * Generic Types\n * - `TData` — Row data shape (type of each item in the rows array).\n * - `TPaginationData` — Pagination wrapper type containing rows and pagination meta; defaults to\n * `PaginationInterface<TData>`.\n *\n * Key Behaviors\n * - Emits `onParamChange` when search text, filters, page, limit, or sort order change.\n * - Persists column visibility per `tableKey` via `useColumns` and informs parent with `onColumnsUpdate`.\n * - Renders header controls only when the related feature is enabled/has content.\n *\n * Props Overview\n * - `dataSource` — Paginated data source object that contains rows (see `dataKey`) and pagination metadata.\n * - `columns` — Column definitions passed to `MyTable`.\n * - `onRowClick` — Callback when a row is clicked.\n * - `rowKey` — Property name used as a unique row key.\n * - `hasNumbers` — Whether to show the row numbers column.\n * - `hasSearch` — Set to `true` to display the search input in the header.\n * - `exportOptions` — Export menu options shown by `ExportData` (see `ExportDataInterface[]`).\n * - `exportLoading` — When `true`, shows a spinner in the Export button to indicate an export action is in progress.\n * - `hasCheckbox` — Whether to show the selection checkbox column.\n * - `hasPagination` — Set to `true` to render the pagination footer.\n * - `isStickyHeader` — Whether to keep the table header sticky.\n * - `onParamChange` — Emits parameter changes for pagination/sorting/search/filters.\n * - `dataKey` — Key within `dataSource` that contains the row array. Defaults to `\"docs\"`.\n * - `loading` — If `true`, shows a loading state instead of the table rows.\n * - `tableKey` — Unique key for persisting column visibility state.\n * - `filters` — Filter configurations to render in the header.\n * - `actions` — Header actions independent of selected rows.\n * - `handleFilterChange` — Callback executed when filter values change.\n * - `params` — Current list parameters (pagination, sort, search, filters).\n * - `hasColumnsVisibilityDropdown` — Set to `true` to show the columns customize dropdown.\n * - `onColumnsUpdate` — Notifies parent whenever the internal columns state changes (after formatting/visibility).\n * - `actionProps` — Props passed to the `Actions` component.\n * - `filterWrapperProps` — Props passed to the `FilterWrapper` component.\n * - `exportOptionsProps` — Props passed to the `ExportData` component.\n * - `columnsVisibilityProps` — Props passed to the columns visibility dropdown.\n * - `onSelectedItemsChange` — Callback when selected rows change (requires `hasCheckbox`).\n *\n * Accessibility\n * - Header controls and dropdowns reuse shared primitives that include keyboard and ARIA support.\n *\n * Internationalization\n * - Text such as \"Export\", \"Customize columns\", and \"Reset columns\" are resolved via `react-i18next`.\n *\n * Usage Examples\n * 1) Minimal paginated table (uses default `dataKey = \"docs\"`)\n * ```tsx\n * type User = { id: string; name: string };\n * const data = { docs: [{ id: '1', name: 'Ada' }], page: 1, limit: 10, totalPages: 1 };\n *\n * <DataTable<User>\n * tableKey=\"users-table\"\n * columns={[{ key: 'name', name: 'Name' }]}\n * rowKey=\"id\"\n * dataSource={data}\n * hasPagination\n * />\n * ```\n *\n * 2) Custom `dataKey` and column visibility persistence\n * ```tsx\n * type Row = { id: number; title: string };\n * const payload = { items: [{ id: 1, title: 'Hello' }], page: 1, limit: 20, totalPages: 1 };\n *\n * <DataTable<Row>\n * tableKey=\"posts\"\n * columns={[{ key: 'title', name: 'Title' }]}\n * rowKey=\"id\"\n * dataSource={payload}\n * dataKey=\"items\"\n * hasColumnsVisibilityDropdown\n * />\n * ```\n *\n * 3) Responding to user interactions via `onParamChange`\n * ```tsx\n * const [params, setParams] = useState({ page: 1, limit: 10 });\n *\n * <DataTable\n * tableKey=\"logs\"\n * columns={[{ key: 'message', name: 'Message' }]}\n * rowKey=\"id\"\n * params={params}\n * onParamChange={setParams}\n * hasSearch\n * hasPagination\n * />\n * ```\n *\n * Notes and Best Practices\n * - Ensure `rowKey` points to a stable unique field in `TData` to avoid key collisions.\n * - When arrays like `exportOptions`, `filters`, or `actions` are empty, their sections are not rendered.\n * - Sorting emits `{ sortField, sortOrder }` through `onParamChange` when the user toggles a column sort.\n *\n * Returns\n * - React element that renders a complete data table experience.\n */\nexport const DataTable = <\n TData,\n TPaginationData extends PaginationInterface<TData> =\n PaginationInterface<TData>,\n>({\n dataSource,\n columns,\n rowKey,\n hasSearch,\n exportOptions,\n hasPagination,\n onParamChange,\n dataKey = 'docs',\n loading,\n tableKey,\n filters,\n actions,\n handleFilterChange,\n params,\n exportLoading = false,\n onColumnsUpdate,\n hasColumnsVisibilityDropdown,\n showAppliedFilters = false,\n onSelectedItemsChange,\n actionProps,\n filterWrapperProps,\n exportOptionsProps,\n columnsVisibilityProps,\n paginationProps,\n searchProps,\n className,\n ...props\n}: DataTableProps<TData, TPaginationData>) => {\n const { t } = useTranslation();\n const [selectedRows, setSelectedRows] = useState<TData[keyof TData][]>([]);\n const { formattedColumns, handleColumnsChange, resetColumns } =\n useColumns<TData>({ key: tableKey, columns });\n\n useEffect(() => {\n onColumnsUpdate?.(formattedColumns);\n }, [formattedColumns, onColumnsUpdate]);\n\n useEffect(() => {\n onSelectedItemsChange?.(selectedRows);\n }, [selectedRows, onSelectedItemsChange]);\n\n return (\n <div\n className={cn(\n 'border-border-alpha-light relative flex grow flex-col overflow-auto rounded-xl border shadow-xs',\n className\n )}\n >\n <div className={'flex shrink-0 flex-col gap-4 p-4'}>\n {(hasSearch ||\n (hasColumnsVisibilityDropdown && tableKey) ||\n !isEmpty(exportOptions) ||\n !isEmpty(filters)) && (\n <div className=\"flex flex-col justify-between gap-3 lg:flex-row lg:items-center\">\n <div className={'grow'}>\n {hasSearch && (\n <Search\n {...searchProps}\n inputProps={{\n ...searchProps?.inputProps,\n className: cn(\n 'h-8 grow',\n searchProps?.inputProps?.className\n ),\n }}\n className={cn(\n 'max-w-full lg:max-w-80! [&_button]:-top-1',\n searchProps?.className\n )}\n defaultValue={get(params, 'search', '') as string}\n onSearchChange={(search) =>\n onParamChange?.({ ...params, search, page: 1 })\n }\n />\n )}\n </div>\n <div className={'flex items-center justify-end gap-3'}>\n {exportOptions && (\n <ExportData\n {...exportOptionsProps}\n options={exportOptions}\n loading={exportLoading}\n />\n )}\n {hasColumnsVisibilityDropdown && tableKey && (\n <DropdownMenu>\n <DropdownMenuTrigger\n asChild\n className={'grow'}\n {...columnsVisibilityProps?.triggerProps}\n >\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n {columnsVisibilityProps?.title || (\n <>\n <RiLayoutColumnLine />{' '}\n <span className={'hidden md:inline!'}>\n {t('Customize columns')}\n </span>\n <RiArrowDownSLine />\n </>\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"end\"\n {...columnsVisibilityProps?.contentProps}\n >\n <DropdownMenuItem\n className=\"capitalize\"\n onClick={resetColumns}\n >\n <RefreshCw />{' '}\n {columnsVisibilityProps?.resetText || t('Reset columns')}\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n {formattedColumns.map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.key}\n className=\"capitalize\"\n checked={!column.hidden}\n onCheckedChange={(value) =>\n handleColumnsChange(column, !value)\n }\n >\n {column.name}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n {actions && <Actions {...actionProps} actions={actions} />}\n {filters && (\n <FilterWrapper\n {...filterWrapperProps}\n filters={filters}\n params={params}\n onChange={handleFilterChange}\n onFilter={(filter) => {\n onParamChange?.({ ...filter, page: 1 });\n handleFilterChange?.(filter);\n }}\n />\n )}\n </div>\n </div>\n )}\n {showAppliedFilters && !isEmpty(filters) && (\n <AppliedFilters\n filters={filters}\n params={params}\n onFilter={(filter) => {\n onParamChange?.({ ...filter, page: 1 });\n handleFilterChange?.(filter);\n }}\n />\n )}\n </div>\n\n <div className={cn('flex grow flex-col overflow-auto border-y')}>\n {!loading ? (\n <MyTable<TData>\n {...props}\n params={{\n page: dataSource?.page || 1,\n limit: dataSource?.limit,\n ...params,\n }}\n rows={get(dataSource, dataKey, []) as TData[]}\n rowKey={rowKey}\n selectedItems={selectedRows}\n columns={formattedColumns}\n onSelectedItemsChange={setSelectedRows}\n onSortOrderChange={({ sortField, sortOrder }) => {\n onParamChange?.({ ...params, sortField, sortOrder });\n }}\n />\n ) : (\n <Loader />\n )}\n </div>\n {hasPagination && (\n <div className=\"flex shrink-0 flex-wrap items-center justify-center gap-3 p-4 lg:justify-between\">\n <div className=\"text-sm\">\n <MyLimitSelect\n onLimitChange={(limit) =>\n onParamChange?.({ ...params, limit, page: 1 })\n }\n defaultValue={dataSource?.limit}\n />\n </div>\n <div className=\"text-muted-foreground text-sm\">\n {t('{{selectedCount}} of {{total}} row(s) selected', {\n selectedCount: selectedRows.length,\n total: dataSource?.total || 0,\n })}\n </div>\n <div>\n <MyPagination\n {...paginationProps}\n onPageChange={(page) => onParamChange?.({ ...params, page })}\n currentPage={dataSource?.page}\n totalPages={dataSource?.totalPages}\n />\n </div>\n </div>\n )}\n </div>\n );\n};\n"],"names":["AppliedFilters","memo","filters","params","onFilter","className","props","useTranslation","filterObject","useMemo","filter","_a","label","value","paramsArr","key","isEmpty","jsx","cn","ButtonGroup","val","index","jsxs","Button","v","XIcon","omit","MyTable","rows","columns","onRowClick","rowKey","DEFAULT_LIMIT","hasNumbers","hasCheckbox","selectedItems","onSelectedItemsChange","onSortOrderChange","isStickyHeader","sortObject","handleSort","useSortable","selectedRows","isRowSelected","isAllRowsSelected","handleSelectAllRows","handleSelectRow","useDataTable","useEffect","Table","TableHeader","TableRow","TableHead","Checkbox","column","Fragment","SortOrder","ArrowDownWideNarrow","ArrowUpWideNarrow","ArrowUpDown","TableBody","row","TableCell","evt","get","Empty","DataTable","dataSource","hasSearch","exportOptions","hasPagination","onParamChange","dataKey","loading","tableKey","actions","handleFilterChange","exportLoading","onColumnsUpdate","hasColumnsVisibilityDropdown","showAppliedFilters","actionProps","filterWrapperProps","exportOptionsProps","columnsVisibilityProps","paginationProps","searchProps","t","setSelectedRows","useState","formattedColumns","handleColumnsChange","resetColumns","useColumns","Search","search","ExportData","DropdownMenu","DropdownMenuTrigger","RiLayoutColumnLine","RiArrowDownSLine","DropdownMenuContent","DropdownMenuItem","RefreshCw","DropdownMenuSeparator","DropdownMenuCheckboxItem","Actions","FilterWrapper","Loader","sortField","sortOrder","MyLimitSelect","limit","MyPagination","page"],"mappings":"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"}
@@ -192,5 +192,5 @@ export interface DataTableProps<TData, TPaginationData extends PaginationInterfa
192
192
  * Returns
193
193
  * - React element that renders a complete data table experience.
194
194
  */
195
- export declare const DataTable: <TData, TPaginationData extends PaginationInterface<TData> = PaginationInterface<TData>>({ dataSource, columns, onRowClick, rowKey, hasNumbers, hasSearch, exportOptions, hasCheckbox, hasPagination, isStickyHeader, onParamChange, dataKey, loading, tableKey, filters, actions, handleFilterChange, params, exportLoading, onColumnsUpdate, hasColumnsVisibilityDropdown, showAppliedFilters, onSelectedItemsChange, actionProps, filterWrapperProps, exportOptionsProps, columnsVisibilityProps, paginationProps, searchProps, ...props }: DataTableProps<TData, TPaginationData>) => import("react/jsx-runtime").JSX.Element;
195
+ export declare const DataTable: <TData, TPaginationData extends PaginationInterface<TData> = PaginationInterface<TData>>({ dataSource, columns, rowKey, hasSearch, exportOptions, hasPagination, onParamChange, dataKey, loading, tableKey, filters, actions, handleFilterChange, params, exportLoading, onColumnsUpdate, hasColumnsVisibilityDropdown, showAppliedFilters, onSelectedItemsChange, actionProps, filterWrapperProps, exportOptionsProps, columnsVisibilityProps, paginationProps, searchProps, className, ...props }: DataTableProps<TData, TPaginationData>) => import("react/jsx-runtime").JSX.Element;
196
196
  //# sourceMappingURL=DataTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../src/components/datatable/DataTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../src/components/datatable/DataTable.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,sBAAsB,EAO5B,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EAEvB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAIpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB,CAAC,KAAK;IACxC,kFAAkF;IAClF,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACf,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAC7B,KAAK,EACL,eAAe,SAAS,mBAAmB,CAAC,KAAK,CAAC,CAClD,SAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACzC,8BAA8B;IAC9B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,uEAAuE;IACvE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACzD,oCAAoC;IACpC,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACtC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,mCAAmC;IACnC,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,mCAAmC;IACnC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAChE,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,eAAe,CAAC;IAChC,uDAAuD;IACvD,4BAA4B,CAAC,EAAE,IAAI,CAAC;IACpC,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oEAAoE;IACpE,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC;IACzD,4CAA4C;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACpC,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjD,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC7C,iDAAiD;IACjD,sBAAsB,CAAC,EAAE,sBAAsB,GAAG;QAChD,KAAK,CAAC,EAAE,SAAS,CAAC;QAClB,SAAS,CAAC,EAAE,SAAS,CAAC;KACvB,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AACH,eAAO,MAAM,SAAS,GACpB,KAAK,EACL,eAAe,SAAS,mBAAmB,CAAC,KAAK,CAAC,GAChD,mBAAmB,CAAC,KAAK,CAAC,EAC5B,4YA4BC,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,4CA2LxC,CAAC"}
@@ -37,6 +37,18 @@ export interface MyTableProps<TData> extends ComponentProps<'table'> {
37
37
  * sorting/selection state via hooks and callbacks.
38
38
  *
39
39
  * @template TData - The row data type.
40
+ * @param rows
41
+ * @param columns
42
+ * @param onRowClick
43
+ * @param rowKey
44
+ * @param params
45
+ * @param hasNumbers
46
+ * @param hasCheckbox
47
+ * @param selectedItems
48
+ * @param onSelectedItemsChange
49
+ * @param onSortOrderChange
50
+ * @param isStickyHeader
51
+ * @param className
40
52
  * @param props - Component props.
41
53
  * @returns React element containing the table.
42
54
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MyTable.d.ts","sourceRoot":"","sources":["../../../../src/components/datatable/MyTable.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,cAAc,EAAa,MAAM,OAAO,CAAC;AAEvD,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,KAAK,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IAClE,qCAAqC;IACrC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACf,0BAA0B;IAC1B,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7B,sCAAsC;IACtC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,KAAK,CAAC;IACpB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACrC,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC;IACtE,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,CAClB,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,KACvD,IAAI,CAAC;IACV,kDAAkD;IAClD,cAAc,CAAC,EAAE,IAAI,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,EAAG,sKAiB7B,YAAY,CAAC,KAAK,CAAC,4CAwIrB,CAAC"}
1
+ {"version":3,"file":"MyTable.d.ts","sourceRoot":"","sources":["../../../../src/components/datatable/MyTable.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,cAAc,EAAa,MAAM,OAAO,CAAC;AAEvD,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,KAAK,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IAClE,qCAAqC;IACrC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACf,0BAA0B;IAC1B,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7B,sCAAsC;IACtC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,KAAK,CAAC;IACpB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACrC,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC;IACtE,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,CAClB,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,KACvD,IAAI,CAAC;IACV,kDAAkD;IAClD,cAAc,CAAC,EAAE,IAAI,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,EAAG,sKAiB7B,YAAY,CAAC,KAAK,CAAC,4CAwIrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dgz-ui-shared",
3
- "version": "1.2.31",
3
+ "version": "1.2.33",
4
4
  "description": "Custom ui library using React.js, Shadcn/ui, TailwindCSS, Typescript, dgz-ui library",
5
5
  "keywords": [
6
6
  "dgz-ui",