UNPKG

@tourmalinecore/react-table-responsive

Version:

React Table Responsive

2 lines (1 loc) 2.99 kB
import{objectWithoutProperties as t,slicedToArray as e,objectSpread2 as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{useState as n,useEffect as a}from"react";import{useReactTable as r,getCoreRowModel as l,getSortedRowModel as s,getFilteredRowModel as c,getPaginationRowModel as d}from"@tanstack/react-table";import{ACTIONS_COLUMN_ID as u,getActionsDropdownColumn as g}from"../utils/getActionsDropdownColumn.js";import{useWindowDimensions as p}from"../hooks/useWindowDimensions.js";import{DesktopTable as m}from"../components/DesktopTable/DesktopTable.js";import{MobileTable as b}from"../components/MobileTable/MobileTable.js";import{i18n as f}from"../../i18n/i18n.js";import{getDefaultTablePageSize as S}from"../utils/pagination-utils.js";import{TablesState as v}from"../state/tables-state.js";import{START_PAGE_INDEX as I,DEFAULT_COLUMN_PARAMS as M,fuzzyFilter as j,AVAILABLE_PAGE_SIZES as F}from"../utils/constants.js";var w=["tableId","columns","tcLoading","tcIsStriped","tcOrder","data","tcMaxStillMobileBreakpoint","tcRenderMobileTitle","tcPageSizeOptions","tcActions","tcLanguage","tcOnFiltersChange","tcEnableTableStatePersistence"],z=new v;function T(v){var T=v.tableId,h=v.columns,y=v.tcLoading,O=void 0!==y&&y,P=v.tcIsStriped,C=v.tcOrder,R=v.data,x=v.tcMaxStillMobileBreakpoint,D=void 0===x?800:x,k=v.tcRenderMobileTitle,B=void 0===k?function(){return null}:k,L=v.tcPageSizeOptions,A=void 0===L?F:L,E=v.tcActions,q=void 0===E?[]:E,W=v.tcLanguage,_=void 0===W?"en":W,H=v.tcOnFiltersChange,G=void 0===H?function(){return null}:H,J=v.tcEnableTableStatePersistence,K=void 0!==J&&J,N=t(v,w);if(!T)throw new Error("non-empty and globally unique tableId is required");q.length>0&&(h.find((function(t){return t.id===u}))||h.push(g({tableId:T,actions:q})));var Q=n({pageIndex:I,pageSize:S({tableId:T,pageSizeOptions:A})}),U=e(Q,2),V=U[0],X=U[1],Y=r(o({columns:h,data:R,defaultColumn:M,getCoreRowModel:l(),initialState:{sorting:z.getDefaultSortBy({tableId:T,initialState:[C]}),columnFilters:z.getDefaultFilters({tableId:T,initialState:[]})},state:{pagination:V},filterFns:{fuzzy:j},getSortedRowModel:s(),getFilteredRowModel:c(),getPaginationRowModel:d(),onPaginationChange:X,enableMultiSort:!1,enableSortingRemoval:!1},N)),Z=Y.getState(),$=Z.columnFilters,tt=Z.sorting;K&&(a((function(){z.saveFilters({tableId:T,filters:$})}),[$]),a((function(){z.saveSortBy({tableId:T,sortBy:tt})}),[tt])),a((function(){G($)}),[$]);var et=p().width>D;a((function(){X(et?{pageIndex:I,pageSize:S({tableId:T,pageSizeOptions:A})}:{pageIndex:I,pageSize:A[0]})}),[et]);var ot=h.every((function(t){return!t.footer})),it=Y.getAllColumns().every((function(t){return!t.columnDef.enableColumnFilter}));return et?i(m,o(o({},Y),{},{tableId:T,noFooter:ot,noFilters:it,tcLoading:O,tcIsStriped:P,tcPageSizeOptions:A,languageStrings:f(_)})):i(b,o(o({},Y),{},{tcRenderMobileTitle:B,noFooter:ot,tcLoading:O,actions:q,languageStrings:f(_)}))}export{T as ClientTable};