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