UNPKG

@tourmalinecore/react-table-responsive

Version:

React Table Responsive

2 lines (1 loc) 4.98 kB
import{objectWithoutProperties as t,slicedToArray as e,objectSpread2 as a,asyncToGenerator as o,regeneratorRuntime as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{useState as r,useRef as l,useCallback as s,useEffect as c}from"react";import{useReactTable as u,getCoreRowModel as d,getSortedRowModel as p,getFilteredRowModel as g,getPaginationRowModel as m}from"@tanstack/react-table";import f from"axios";import*as b from"qs";import{debounce as S}from"lodash";import{ACTIONS_COLUMN_ID as v,getActionsDropdownColumn as h}from"../utils/getActionsDropdownColumn.js";import{useWindowDimensions as C}from"../hooks/useWindowDimensions.js";import{DesktopTable as I}from"../components/DesktopTable/DesktopTable.js";import{MobileTable as y}from"../components/MobileTable/MobileTable.js";import{i18n as D}from"../../i18n/i18n.js";import{getDefaultTablePageSize as M}from"../utils/pagination-utils.js";import{TablesState as z}from"../state/tables-state.js";import{START_PAGE_INDEX as R,DEFAULT_COLUMN_PARAMS as w,fuzzyFilter as F,AVAILABLE_PAGE_SIZES as P}from"../utils/constants.js";var T=["tableId","columns","tcLoading","tcIsStriped","tcOrder","tcRefresh","tcHttpClient","tcCustomDataLoader","tcApiHostUrl","tcDataPath","tcAuthToken","tcRequestMethod","tcRequestData","tcMaxStillMobileBreakpoint","tcRenderMobileTitle","tcPageSizeOptions","tcActions","tcLanguage","tcEnableTableStatePersistence","tcOnPageDataLoaded","tcOnFiltersChange"],x=new z;function j(z){var j=z.tableId,B=z.columns,L=z.tcLoading,O=z.tcIsStriped,A=z.tcOrder,k=z.tcRefresh,q=void 0!==k&&k,H=z.tcHttpClient,E=void 0===H?f:H,G=z.tcCustomDataLoader,U=z.tcApiHostUrl,W=z.tcDataPath,_=z.tcAuthToken,V=z.tcRequestMethod,J=void 0===V?"GET":V,K=z.tcRequestData,N=void 0===K?{}:K,Q=z.tcMaxStillMobileBreakpoint,X=void 0===Q?800:Q,Y=z.tcRenderMobileTitle,Z=void 0===Y?function(){return null}:Y,$=z.tcPageSizeOptions,tt=void 0===$?P:$,et=z.tcActions,at=void 0===et?[]:et,ot=z.tcLanguage,nt=void 0===ot?"en":ot,it=z.tcEnableTableStatePersistence,rt=void 0!==it&&it,lt=z.tcOnPageDataLoaded,st=void 0===lt?function(){return null}:lt,ct=z.tcOnFiltersChange,ut=void 0===ct?function(){return null}:ct,dt=t(z,T);if(!j)throw new Error("non-empty and globally unique tableId is required");at.length>0&&(B.find((function(t){return t.id===v}))||B.push(h({tableId:j,actions:at})));var pt=r(!1),gt=e(pt,2),mt=gt[0],ft=gt[1],bt=l(0),St=s(S((function(t){return Ht.apply(this,arguments)}),300),[]),vt=r({data:[],totalCount:0,pageCount:0}),ht=e(vt,2),Ct=ht[0],It=ht[1],yt=r({pageIndex:R,pageSize:M({tableId:j,pageSizeOptions:tt})}),Dt=e(yt,2),Mt=Dt[0],zt=Dt[1],Rt=Ct.data,wt=Ct.totalCount,Ft=Ct.pageCount,Pt=u(a({columns:B,data:Rt,defaultColumn:w,getCoreRowModel:d(),initialState:{sorting:x.getDefaultSortBy({tableId:j,initialState:[A]}),columnFilters:x.getDefaultFilters({tableId:j,initialState:[]})},state:{pagination:Mt},pageCount:Ft,filterFns:{fuzzy:F},getSortedRowModel:p(),getFilteredRowModel:g(),getPaginationRowModel:m(),onPaginationChange:zt,enableMultiSort:!1,enableSortingRemoval:!1,manualPagination:!0,manualFiltering:!0,manualSorting:!0},dt)),Tt=Pt.getState(),xt=Tt.columnFilters,jt=Tt.sorting,Bt=Tt.pagination,Lt=Bt.pageIndex,Ot=Bt.pageSize;c((function(){St({tableState:{pageIndex:Lt,pageSize:Ot,sortBy:jt[0],filters:xt},requestData:N})}),[Lt,Ot,jt,xt,q]),rt&&(c((function(){x.saveFilters({tableId:j,filters:xt})}),[xt]),c((function(){x.saveSortBy({tableId:j,sortBy:jt})}),[jt]));var At=C().width>X;c((function(){zt(At?{pageIndex:R,pageSize:M({tableId:j,pageSizeOptions:tt})}:{pageIndex:R,pageSize:tt[0]})}),[At]),c((function(){ut(xt)}),[xt]);var kt=B.every((function(t){return!t.footer})),qt=Pt.getAllColumns().every((function(t){return!t.columnDef.enableColumnFilter}));return At?i(I,a(a({},Pt),{},{tableId:j,noFooter:kt,totalCount:wt,noFilters:qt,tcLoading:L||mt,tcIsStriped:O,tcPageSizeOptions:tt,languageStrings:D(nt)})):i(y,a(a({},Pt),{},{tcRenderMobileTitle:Z,noFooter:kt,totalCount:wt,tcLoading:L||mt,actions:at,languageStrings:D(nt)}));function Ht(){return Ht=o(n().mark((function t(e){var o,i,r,l,s,c,u,d,p,g,m;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=e.tableState,i=e.requestData,r=++bt.current,l=o.pageIndex,s=o.pageSize,c=o.sortBy,u=o.filters,d={draw:r,page:l+1,pageSize:s,orderBy:c.id.toLowerCase(),orderingDirection:c.desc?"desc":"asc",filteredByColumns:u.map((function(t){return t.id})),filteredByValues:u.map((function(t){return String(t.value).replace(/,/g,"")}))},ft(!0),p=G||E,t.next=8,p({url:"".concat(U).concat(W),method:J,headers:a(a({},_&&{Authorization:"Bearer ".concat(_)}),{},{language:nt}),params:d,data:i,paramsSerializer:function(t){return b.stringify(t,{arrayFormat:"repeat"})}});case 8:g=t.sent,m=g.data,It(a(a({},Ct),{},{data:m.list,totalCount:m.totalCount,pageCount:Math.ceil(m.totalCount/s)})),st(m.list),ft(!1);case 13:case"end":return t.stop()}}),t)}))),Ht.apply(this,arguments)}}export{j as ServerTable};