koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
3 lines (2 loc) • 8.02 kB
JavaScript
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),g=require("react"),y=require("classnames"),r=require("@tanstack/react-table"),Me=require("css-vars-hook"),Fe=require("../../internal/hooks/useResizeObserverNew.cjs"),Te=require("../../internal/hooks/useInternalRef.cjs"),Ne=require("../../internal/locale/useBrowserLocale.cjs");;/* empty css */const ve=require("../../internal/hooks/useInternalId.cjs"),He=require("../../internal/Icons/IconFilterOff.cjs"),Ae=require("./tableFeatures/useColumnFilters.cjs"),a=require("./DataTable.module.css.cjs"),i=require("./types.cjs"),Ee=require("./tableFeatures/useColumnPinning.cjs"),C=require("./TableCell.cjs"),ye=require("./tableFeatures/useVirtualRows.cjs"),Le=require("./tableFeatures/useTableData.cjs"),ze=require("./Pagination.cjs"),Oe=require("./tableFeatures/usePagination.cjs"),ke=require("./tableFeatures/useSorting.cjs"),Be=require("./dialogs/FilterDialog.cjs"),Ve=require("./tableFeatures/useRowSelection.cjs"),$e=require("./tableFeatures/useTableHeight.cjs"),We=require("./dialogs/DeleteDialog.cjs"),_e=require("./dialogs/EditDialog.cjs"),Ge=require("./SelectableActions.cjs"),Je=require("./tableFeatures/useEdit.cjs"),Ke=require("./tableFeatures/useTableColumns.cjs"),L=require("./filterFns.cjs"),Qe=require("../Text/Table.cjs"),Ue=require("../Button/Button.cjs"),Xe=require("../Text/InlineElements.cjs"),z=42,Ye=6,Ze={pageIndex:0,pageSize:10},et=[],tt=[],nt={},O=g.forwardRef(({children:lt,className:k,tableData:B=[],columnPinning:V,renderMode:u=i.RenderModes.virtual,pagination:$=Ze,onPaginationChange:W=()=>{},onSortingChange:_=()=>{},onFiltersChange:G=()=>{},onRowSelect:J=()=>{},onEdit:K=()=>{},rowSelection:Q=nt,pageCount:U,sorting:X=et,processingMode:h=i.ProcessingModes.internal,columnFilters:Y=tt,locale:Z,selectable:x=!1,tableHeight:ee="full",caption:R,columns:te=[],id:ne,...le},oe)=>{var H,A,E;const m=ve.useInternalId(ne),{tableData:p,setTableData:se}=Le.useTableData(B),w=Te.useInternalRef(oe),D=g.useRef(null),P=Fe.useResizeObserver(w),S=P==null?void 0:P.height,{LocalRoot:ie}=Me.useLocalTheme(),I=$e.useTableHeight({tableHeightProp:ee}),ae=g.useMemo(()=>({...S&&{"table-height":S},"cell-height":z,"max-height":I}),[I,S]),{columnPinning:re,setColumnPinning:ce}=Ee.useColumnPinning({columnPinningProp:V,hasSelectableColumn:x}),{pagination:M,setPagination:ue,currentPage:de,setCurrentPage:ge,setPageSize:he}=Oe.usePagination({paginationProp:$,onPaginationChange:W}),{sorting:me,setSorting:fe}=ke.useSorting({sortingProp:X,onSortingChange:_}),{columnFilters:j,setColumnFilters:xe}=Ae.useColumnFilters({columnFiltersProp:Y,onFiltersChange:G}),Re=Ne.useBrowserLocale(),{rowSelection:f,setRowSelection:be,clearSelection:F}=Ve.useRowSelection({rowSelectionProp:Q,onRowSelect:J,processingMode:h}),{columns:q,editableColumns:Ce}=Ke.useTableColumns({columnsProp:te,selectable:x}),l=r.useReactTable({meta:{locale:Z||Re,editModalId:`edit-modal-${m}`,filterModalId:`filter-modal-${m}`,deleteModalId:`delete-modal-${m}`},data:p,columns:q,getCoreRowModel:r.getCoreRowModel(),onColumnPinningChange:ce,getPaginationRowModel:u===i.RenderModes.paginated?r.getPaginationRowModel():void 0,onPaginationChange:u===i.RenderModes.paginated?ue:void 0,state:{pagination:u===i.RenderModes.paginated?M:void 0,columnPinning:re,sorting:me,columnFilters:j,rowSelection:f},manualPagination:h===i.ProcessingModes.external,pageCount:h===i.ProcessingModes.external?U:void 0,getSortedRowModel:r.getSortedRowModel(),onSortingChange:fe,enableMultiSort:!1,manualSorting:h===i.ProcessingModes.external,getFilteredRowModel:r.getFilteredRowModel(),onColumnFiltersChange:xe,manualFiltering:h===i.ProcessingModes.external,enableRowSelection:!0,onRowSelectionChange:be,filterFns:{isInDateRange:L.isInDateRange,isInPercentRange:L.isInPercentRange}}),{rows:b}=l.getRowModel(),{before:T,after:N,virtualRows:pe}=ye.useVirtualRows({rowsCount:b.length,scrollRef:D,overscan:Ye,cellHeight:z}),Pe=g.useCallback(({filter:o,column:t})=>{var n;(n=l.getColumn(t))==null||n.setFilterValue(o)},[l]),Se=g.useCallback(()=>{l.resetColumnFilters()},[l]),{handleEdit:je,handleDelete:qe,handleDeleteRequest:we,handleEditRequest:De}=Je.useEdit({rowSelection:f,onEdit:K,clearSelection:F,setTableData:se,table:l,tableData:p,processingMode:h}),v=`caption-${m}`;return e.jsxs(g.Fragment,{children:[e.jsx(Be.FilterDialog,{tableContext:l,id:(H=l.options.meta)==null?void 0:H.filterModalId,onApplyFiler:Pe,columnFilters:j}),e.jsx(_e.EditDialog,{id:(A=l.options.meta)==null?void 0:A.editModalId,selectionAmount:Object.keys(f).length,columnsConfig:Ce,onEdit:je}),e.jsx(We.DeleteDialog,{id:(E=l.options.meta)==null?void 0:E.deleteModalId,selectionAmount:Object.keys(f).length,onDeleteConfirmation:qe}),e.jsxs(ie,{theme:ae,className:a.default.heightContainer,children:[x&&e.jsx(Ge.SelectableActions,{selectedRows:Object.keys(f).length,totalRows:l.getPreFilteredRowModel().rows.length,onDeleteRequest:we,onEditRequest:De,onClear:F}),e.jsxs(Qe.Table,{"aria-describedby":R&&v,wrapperRef:D,wrapperClassName:y(a.default.tableWrapper,{[a.default.paginated]:u===i.RenderModes.paginated,[a.default.selectable]:x,[a.default.hasCaption]:!!R}),...le,id:m,className:y(a.default.dataTable,k),ref:w,children:[e.jsx("thead",{className:a.default.tableHeader,children:l.getHeaderGroups().map(o=>e.jsx("tr",{children:o.headers.map((t,n,s)=>{const c=n>0?n+1:0,d=n===s.length?0:s.length-(n+1);return e.jsx(C.TableCell,{as:"th",leftMargin:t.column.getStart("left")+c,rightMargin:t.column.getAfter("right")+d,isPinned:t.column.getIsPinned(),children:t.isPlaceholder?null:r.flexRender(t.column.columnDef.header,t.getContext())},t.id)})},o.id))}),u===i.RenderModes.virtual&&e.jsx("tbody",{children:e.jsxs(g.Fragment,{children:[T>0&&e.jsx("tr",{children:e.jsx("td",{colSpan:q.length,style:{height:T}})}),pe.map(o=>{const t=b[o.index];return e.jsx("tr",{style:{height:`${o.size}px`},children:t.getVisibleCells().map((n,s,c)=>{const d=s>0?s+1:0,Ie=s===c.length?0:c.length-(s+1);return e.jsx(C.TableCell,{isHighlighted:!!n.column.getIsSorted(),as:"td",leftMargin:n.column.getStart("left")+d,rightMargin:n.column.getAfter("right")+Ie,isPinned:n.column.getIsPinned(),children:r.flexRender(n.column.columnDef.cell,n.getContext())},n.id)})},t.id)}),N>0&&e.jsx("tr",{children:e.jsx("td",{colSpan:q.length,style:{height:N}})})]})}),u===i.RenderModes.paginated&&e.jsx("tbody",{children:b.map(o=>e.jsx("tr",{children:o.getVisibleCells().map((t,n,s)=>{const c=n>0?n+1:0,d=n===s.length?0:s.length-(n+1);return e.jsx(C.TableCell,{isHighlighted:!!t.column.getIsSorted(),as:"td",leftMargin:t.column.getStart("left")+c,rightMargin:t.column.getAfter("right")+d,isPinned:t.column.getIsPinned(),children:r.flexRender(t.column.columnDef.cell,t.getContext())},t.id)})},o.id))}),b.length===0&&e.jsx("tbody",{children:e.jsx("tr",{className:a.default.noDataRow,children:e.jsx("td",{className:a.default.noDataCell,colSpan:l.getAllColumns().length,children:e.jsxs("div",{className:a.default.noDataWarning,children:[e.jsx("span",{children:"No data to render."}),j.length>0&&e.jsx(Ue.Button,{onClick:Se,prefix:He.IconFilterOff,size:"small",variant:"link",children:"Reset all filters"})]})})})}),e.jsx("tfoot",{className:a.default.tableFooter,children:l.getFooterGroups().map(o=>e.jsx("tr",{children:o.headers.map((t,n,s)=>{const c=n>0?n+1:0,d=n===s.length?0:s.length-(n+1);return e.jsx(C.TableCell,{as:"th",leftMargin:t.column.getStart("left")+c,rightMargin:t.column.getAfter("right")+d,isPinned:t.column.getIsPinned(),children:t.isPlaceholder?null:r.flexRender(t.column.columnDef.footer,t.getContext())},t.id)})},o.id))})]}),u===i.RenderModes.paginated&&e.jsx(ze.Pagination,{rowsCount:p.length,onPageSizeChange:he,currentPage:de,pagesAmount:l.getPageCount(),pageSize:M.pageSize,setCurrentPage:ge}),R&&e.jsx("div",{id:v,className:a.default.tableCaption,children:e.jsx(Xe.I,{children:R})})]})]})});O.displayName="DataTable";exports.DataTable=O;
//# sourceMappingURL=DataTable.cjs.map