@bsol-oss/react-datatable5 2.0.2 → 2.0.4

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.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { RowData, OnChangeFn, Updater, FilterFn, ColumnDef, RowSelectionState, ColumnOrderState, ColumnFiltersState, GlobalFilterTableState, PaginationState, SortingState, VisibilityState, Row, Table as Table$1, Column } from '@tanstack/react-table';
2
+ import { RowData, OnChangeFn, Updater, FilterFn, ColumnDef, RowSelectionState, ColumnOrderState, ColumnFiltersState, PaginationState, SortingState, VisibilityState, Row, Table as Table$1, Column } from '@tanstack/react-table';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import React$1, { ReactNode } from 'react';
5
5
  import { RankingInfo } from '@tanstack/match-sorter-utils';
@@ -105,7 +105,7 @@ interface DataTableProps<TData> {
105
105
  onRowSelect?: (rowSelectionState: RowSelectionState, data: TData[]) => void;
106
106
  columnOrder: ColumnOrderState;
107
107
  columnFilters: ColumnFiltersState;
108
- globalFilter: GlobalFilterTableState;
108
+ globalFilter: string;
109
109
  density: DensityState;
110
110
  pagination: PaginationState;
111
111
  sorting: SortingState;
@@ -115,7 +115,7 @@ interface DataTableProps<TData> {
115
115
  setSorting: OnChangeFn<SortingState>;
116
116
  setColumnFilters: OnChangeFn<ColumnFiltersState>;
117
117
  setRowSelection: OnChangeFn<RowSelectionState>;
118
- setGlobalFilter: OnChangeFn<GlobalFilterTableState>;
118
+ setGlobalFilter: OnChangeFn<string>;
119
119
  setColumnOrder: OnChangeFn<ColumnOrderState>;
120
120
  setDensity: OnChangeFn<DensityState>;
121
121
  setColumnVisibility: OnChangeFn<VisibilityState>;
@@ -132,7 +132,7 @@ interface DataTableServerProps<TData> {
132
132
  onRowSelect?: (rowSelectionState: RowSelectionState, data: TData[]) => void;
133
133
  columnOrder: ColumnOrderState;
134
134
  columnFilters: ColumnFiltersState;
135
- globalFilter: GlobalFilterTableState;
135
+ globalFilter: string;
136
136
  density: DensityState;
137
137
  pagination: PaginationState;
138
138
  sorting: SortingState;
@@ -142,7 +142,7 @@ interface DataTableServerProps<TData> {
142
142
  setSorting: OnChangeFn<SortingState>;
143
143
  setColumnFilters: OnChangeFn<ColumnFiltersState>;
144
144
  setRowSelection: OnChangeFn<RowSelectionState>;
145
- setGlobalFilter: OnChangeFn<GlobalFilterTableState>;
145
+ setGlobalFilter: OnChangeFn<string>;
146
146
  setColumnOrder: OnChangeFn<ColumnOrderState>;
147
147
  setDensity: OnChangeFn<DensityState>;
148
148
  setColumnVisibility: OnChangeFn<VisibilityState>;
@@ -288,7 +288,7 @@ interface UseDataTableProps {
288
288
  pagination?: PaginationState;
289
289
  rowSelection?: RowSelectionState;
290
290
  columnOrder?: ColumnOrderState;
291
- globalFilter?: GlobalFilterTableState;
291
+ globalFilter?: string;
292
292
  columnVisibility?: VisibilityState;
293
293
  density?: DensityState;
294
294
  };
@@ -299,14 +299,14 @@ interface UseDataTableReturn {
299
299
  pagination: PaginationState;
300
300
  rowSelection: RowSelectionState;
301
301
  columnOrder: ColumnOrderState;
302
- globalFilter: GlobalFilterTableState;
302
+ globalFilter: string;
303
303
  columnVisibility: VisibilityState;
304
304
  density: DensityState;
305
305
  setPagination: OnChangeFn<PaginationState>;
306
306
  setSorting: OnChangeFn<SortingState>;
307
307
  setColumnFilters: OnChangeFn<ColumnFiltersState>;
308
308
  setRowSelection: OnChangeFn<RowSelectionState>;
309
- setGlobalFilter: OnChangeFn<GlobalFilterTableState>;
309
+ setGlobalFilter: OnChangeFn<string>;
310
310
  setColumnOrder: OnChangeFn<ColumnOrderState>;
311
311
  setDensity: OnChangeFn<DensityState>;
312
312
  setColumnVisibility: OnChangeFn<VisibilityState>;
@@ -316,8 +316,8 @@ declare const useDataTable: ({ default: { sorting: defaultSorting, pagination: d
316
316
  declare const useDataTableContext: () => {
317
317
  table: _tanstack_table_core.Table<any>;
318
318
  refreshData: () => void;
319
- globalFilter: _tanstack_table_core.GlobalFilterTableState;
320
- setGlobalFilter: _tanstack_table_core.OnChangeFn<_tanstack_table_core.GlobalFilterTableState>;
319
+ globalFilter: string;
320
+ setGlobalFilter: _tanstack_table_core.OnChangeFn<string>;
321
321
  loading: boolean;
322
322
  hasError: boolean;
323
323
  };
package/dist/index.js CHANGED
@@ -39,7 +39,7 @@ const EditOrderButton = ({ text, icon = jsxRuntime.jsx(md.MdOutlineMoveDown, {})
39
39
  const TableContext = react$1.createContext({
40
40
  table: {},
41
41
  refreshData: () => { },
42
- globalFilter: { globalFilter: "" },
42
+ globalFilter: "",
43
43
  setGlobalFilter: () => { },
44
44
  loading: false,
45
45
  hasError: false,
@@ -202,6 +202,7 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
202
202
  const table = reactTable.useReactTable({
203
203
  _features: [DensityFeature],
204
204
  data: data,
205
+ rowCount: data.length,
205
206
  columns: columns,
206
207
  getCoreRowModel: reactTable.getCoreRowModel(),
207
208
  getFilteredRowModel: reactTable.getFilteredRowModel(),
@@ -318,13 +319,14 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
318
319
  obj[filter.id] = filter.value;
319
320
  return { ...accumulator, ...obj };
320
321
  }, {})),
321
- searching: globalFilter.globalFilter,
322
+ searching: globalFilter,
322
323
  },
323
324
  disableFirstFetch: true,
324
325
  });
325
326
  const table = reactTable.useReactTable({
326
327
  _features: [DensityFeature],
327
328
  data: data.results,
329
+ rowCount: data.count ?? 0,
328
330
  columns: columns,
329
331
  getCoreRowModel: reactTable.getCoreRowModel(),
330
332
  manualPagination: true,
@@ -360,7 +362,6 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
360
362
  },
361
363
  onDensityChange: setDensity,
362
364
  onColumnVisibilityChange: setColumnVisibility,
363
- rowCount: data.count,
364
365
  // for tanstack-table ts bug start
365
366
  filterFns: {
366
367
  fuzzy: () => {
@@ -378,6 +379,9 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
378
379
  react$1.useEffect(() => {
379
380
  onRowSelect(table.getState().rowSelection, data.results);
380
381
  }, [table.getState().rowSelection]);
382
+ react$1.useEffect(() => {
383
+ table.resetPagination();
384
+ }, [sorting, columnFilters, globalFilter, url]);
381
385
  return (jsxRuntime.jsx(TableContext.Provider, { value: {
382
386
  table: { ...table },
383
387
  refreshData: refreshData,
@@ -841,7 +845,19 @@ const TextCell = ({ label, noOfLines = [1], padding = "0rem", children, tooltipP
841
845
  const useDataTable = ({ default: { sorting: defaultSorting = [], pagination: defaultPagination = {
842
846
  pageIndex: 0, //initial page index
843
847
  pageSize: 10, //default page size
844
- }, rowSelection: defaultRowSelection = {}, columnFilters: defaultColumnFilters = [], columnOrder: defaultColumnOrder = [], columnVisibility: defaultColumnVisibility = {}, globalFilter: defaultGlobalFilter = { globalFilter: "" }, density: defaultDensity = "sm", }, } = {
848
+ }, rowSelection: defaultRowSelection = {}, columnFilters: defaultColumnFilters = [], columnOrder: defaultColumnOrder = [], columnVisibility: defaultColumnVisibility = {}, globalFilter: defaultGlobalFilter = "", density: defaultDensity = "sm", } = {
849
+ sorting: [],
850
+ pagination: {
851
+ pageIndex: 0, //initial page index
852
+ pageSize: 10, //age size
853
+ },
854
+ rowSelection: {},
855
+ columnFilters: [],
856
+ columnOrder: [],
857
+ columnVisibility: {},
858
+ globalFilter: "",
859
+ density: "sm",
860
+ }, } = {
845
861
  default: {
846
862
  sorting: [],
847
863
  pagination: {
@@ -852,7 +868,7 @@ const useDataTable = ({ default: { sorting: defaultSorting = [], pagination: def
852
868
  columnFilters: [],
853
869
  columnOrder: [],
854
870
  columnVisibility: {},
855
- globalFilter: { globalFilter: "" },
871
+ globalFilter: "",
856
872
  density: "sm",
857
873
  },
858
874
  }) => {
@@ -907,7 +923,10 @@ const FilterOptions = ({ column }) => {
907
923
  const GlobalFilter = ({ icon = md.MdSearch }) => {
908
924
  const { table } = useDataTableContext();
909
925
  return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(react.Box, { children: jsxRuntime.jsxs(react.InputGroup, { children: [jsxRuntime.jsx(react.InputLeftElement, { pointerEvents: "none", children: jsxRuntime.jsx(react.Icon, { as: icon, color: "gray.300" }) }), jsxRuntime.jsx(react.Input, { value: table.getState().globalFilter.globalFilter, onChange: (e) => {
910
- table.setGlobalFilter({ "globalFilter": e.target.value });
926
+ if (!!e.target.value) {
927
+ table.setGlobalFilter(undefined);
928
+ }
929
+ table.setGlobalFilter(e.target.value);
911
930
  } })] }) }) }));
912
931
  };
913
932
 
package/dist/index.mjs CHANGED
@@ -37,7 +37,7 @@ const EditOrderButton = ({ text, icon = jsx(MdOutlineMoveDown, {}), title = "Cha
37
37
  const TableContext = createContext({
38
38
  table: {},
39
39
  refreshData: () => { },
40
- globalFilter: { globalFilter: "" },
40
+ globalFilter: "",
41
41
  setGlobalFilter: () => { },
42
42
  loading: false,
43
43
  hasError: false,
@@ -200,6 +200,7 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
200
200
  const table = useReactTable({
201
201
  _features: [DensityFeature],
202
202
  data: data,
203
+ rowCount: data.length,
203
204
  columns: columns,
204
205
  getCoreRowModel: getCoreRowModel(),
205
206
  getFilteredRowModel: getFilteredRowModel(),
@@ -316,13 +317,14 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
316
317
  obj[filter.id] = filter.value;
317
318
  return { ...accumulator, ...obj };
318
319
  }, {})),
319
- searching: globalFilter.globalFilter,
320
+ searching: globalFilter,
320
321
  },
321
322
  disableFirstFetch: true,
322
323
  });
323
324
  const table = useReactTable({
324
325
  _features: [DensityFeature],
325
326
  data: data.results,
327
+ rowCount: data.count ?? 0,
326
328
  columns: columns,
327
329
  getCoreRowModel: getCoreRowModel(),
328
330
  manualPagination: true,
@@ -358,7 +360,6 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
358
360
  },
359
361
  onDensityChange: setDensity,
360
362
  onColumnVisibilityChange: setColumnVisibility,
361
- rowCount: data.count,
362
363
  // for tanstack-table ts bug start
363
364
  filterFns: {
364
365
  fuzzy: () => {
@@ -376,6 +377,9 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
376
377
  useEffect(() => {
377
378
  onRowSelect(table.getState().rowSelection, data.results);
378
379
  }, [table.getState().rowSelection]);
380
+ useEffect(() => {
381
+ table.resetPagination();
382
+ }, [sorting, columnFilters, globalFilter, url]);
379
383
  return (jsx(TableContext.Provider, { value: {
380
384
  table: { ...table },
381
385
  refreshData: refreshData,
@@ -839,7 +843,19 @@ const TextCell = ({ label, noOfLines = [1], padding = "0rem", children, tooltipP
839
843
  const useDataTable = ({ default: { sorting: defaultSorting = [], pagination: defaultPagination = {
840
844
  pageIndex: 0, //initial page index
841
845
  pageSize: 10, //default page size
842
- }, rowSelection: defaultRowSelection = {}, columnFilters: defaultColumnFilters = [], columnOrder: defaultColumnOrder = [], columnVisibility: defaultColumnVisibility = {}, globalFilter: defaultGlobalFilter = { globalFilter: "" }, density: defaultDensity = "sm", }, } = {
846
+ }, rowSelection: defaultRowSelection = {}, columnFilters: defaultColumnFilters = [], columnOrder: defaultColumnOrder = [], columnVisibility: defaultColumnVisibility = {}, globalFilter: defaultGlobalFilter = "", density: defaultDensity = "sm", } = {
847
+ sorting: [],
848
+ pagination: {
849
+ pageIndex: 0, //initial page index
850
+ pageSize: 10, //age size
851
+ },
852
+ rowSelection: {},
853
+ columnFilters: [],
854
+ columnOrder: [],
855
+ columnVisibility: {},
856
+ globalFilter: "",
857
+ density: "sm",
858
+ }, } = {
843
859
  default: {
844
860
  sorting: [],
845
861
  pagination: {
@@ -850,7 +866,7 @@ const useDataTable = ({ default: { sorting: defaultSorting = [], pagination: def
850
866
  columnFilters: [],
851
867
  columnOrder: [],
852
868
  columnVisibility: {},
853
- globalFilter: { globalFilter: "" },
869
+ globalFilter: "",
854
870
  density: "sm",
855
871
  },
856
872
  }) => {
@@ -905,7 +921,10 @@ const FilterOptions = ({ column }) => {
905
921
  const GlobalFilter = ({ icon = MdSearch }) => {
906
922
  const { table } = useDataTableContext();
907
923
  return (jsx(Fragment, { children: jsx(Box, { children: jsxs(InputGroup, { children: [jsx(InputLeftElement, { pointerEvents: "none", children: jsx(Icon, { as: icon, color: "gray.300" }) }), jsx(Input, { value: table.getState().globalFilter.globalFilter, onChange: (e) => {
908
- table.setGlobalFilter({ "globalFilter": e.target.value });
924
+ if (!!e.target.value) {
925
+ table.setGlobalFilter(undefined);
926
+ }
927
+ table.setGlobalFilter(e.target.value);
909
928
  } })] }) }) }));
910
929
  };
911
930
 
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { ColumnDef, ColumnFiltersState, ColumnOrderState, FilterFn, GlobalFilterTableState, OnChangeFn, PaginationState, RowSelectionState, SortingState, VisibilityState } from "@tanstack/react-table";
2
+ import { ColumnDef, ColumnFiltersState, ColumnOrderState, FilterFn, OnChangeFn, PaginationState, RowSelectionState, SortingState, VisibilityState } from "@tanstack/react-table";
3
3
  import { RankingInfo } from "@tanstack/match-sorter-utils";
4
4
  import { DensityState } from "../Controls/DensityFeature";
5
5
  declare module "@tanstack/react-table" {
@@ -20,7 +20,7 @@ export interface DataTableProps<TData> {
20
20
  onRowSelect?: (rowSelectionState: RowSelectionState, data: TData[]) => void;
21
21
  columnOrder: ColumnOrderState;
22
22
  columnFilters: ColumnFiltersState;
23
- globalFilter: GlobalFilterTableState;
23
+ globalFilter: string;
24
24
  density: DensityState;
25
25
  pagination: PaginationState;
26
26
  sorting: SortingState;
@@ -30,7 +30,7 @@ export interface DataTableProps<TData> {
30
30
  setSorting: OnChangeFn<SortingState>;
31
31
  setColumnFilters: OnChangeFn<ColumnFiltersState>;
32
32
  setRowSelection: OnChangeFn<RowSelectionState>;
33
- setGlobalFilter: OnChangeFn<GlobalFilterTableState>;
33
+ setGlobalFilter: OnChangeFn<string>;
34
34
  setColumnOrder: OnChangeFn<ColumnOrderState>;
35
35
  setDensity: OnChangeFn<DensityState>;
36
36
  setColumnVisibility: OnChangeFn<VisibilityState>;
@@ -1,10 +1,10 @@
1
1
  /// <reference types="react" />
2
- import { GlobalFilterTableState, OnChangeFn, Table } from "@tanstack/react-table";
2
+ import { OnChangeFn, Table } from "@tanstack/react-table";
3
3
  export interface DataTableContext<TData> {
4
4
  table: Table<TData>;
5
5
  refreshData: () => void;
6
- globalFilter: GlobalFilterTableState;
7
- setGlobalFilter: OnChangeFn<GlobalFilterTableState>;
6
+ globalFilter: string;
7
+ setGlobalFilter: OnChangeFn<string>;
8
8
  loading: boolean;
9
9
  hasError: boolean;
10
10
  }
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { ColumnDef, ColumnFiltersState, ColumnOrderState, GlobalFilterTableState, OnChangeFn, PaginationState, RowSelectionState, SortingState, VisibilityState } from "@tanstack/react-table";
2
+ import { ColumnDef, ColumnFiltersState, ColumnOrderState, OnChangeFn, PaginationState, RowSelectionState, SortingState, VisibilityState } from "@tanstack/react-table";
3
3
  import { DensityState } from "../Controls/DensityFeature";
4
4
  export interface DataTableServerProps<TData> {
5
5
  children: JSX.Element | JSX.Element[];
@@ -11,7 +11,7 @@ export interface DataTableServerProps<TData> {
11
11
  onRowSelect?: (rowSelectionState: RowSelectionState, data: TData[]) => void;
12
12
  columnOrder: ColumnOrderState;
13
13
  columnFilters: ColumnFiltersState;
14
- globalFilter: GlobalFilterTableState;
14
+ globalFilter: string;
15
15
  density: DensityState;
16
16
  pagination: PaginationState;
17
17
  sorting: SortingState;
@@ -21,7 +21,7 @@ export interface DataTableServerProps<TData> {
21
21
  setSorting: OnChangeFn<SortingState>;
22
22
  setColumnFilters: OnChangeFn<ColumnFiltersState>;
23
23
  setRowSelection: OnChangeFn<RowSelectionState>;
24
- setGlobalFilter: OnChangeFn<GlobalFilterTableState>;
24
+ setGlobalFilter: OnChangeFn<string>;
25
25
  setColumnOrder: OnChangeFn<ColumnOrderState>;
26
26
  setDensity: OnChangeFn<DensityState>;
27
27
  setColumnVisibility: OnChangeFn<VisibilityState>;
@@ -1,4 +1,4 @@
1
- import { ColumnFiltersState, ColumnOrderState, GlobalFilterTableState, OnChangeFn, PaginationState, RowSelectionState, SortingState, VisibilityState } from "@tanstack/react-table";
1
+ import { ColumnFiltersState, ColumnOrderState, OnChangeFn, PaginationState, RowSelectionState, SortingState, VisibilityState } from "@tanstack/react-table";
2
2
  import { DensityState } from "../Controls/DensityFeature";
3
3
  export interface UseDataTableProps {
4
4
  default: {
@@ -7,7 +7,7 @@ export interface UseDataTableProps {
7
7
  pagination?: PaginationState;
8
8
  rowSelection?: RowSelectionState;
9
9
  columnOrder?: ColumnOrderState;
10
- globalFilter?: GlobalFilterTableState;
10
+ globalFilter?: string;
11
11
  columnVisibility?: VisibilityState;
12
12
  density?: DensityState;
13
13
  };
@@ -18,14 +18,14 @@ export interface UseDataTableReturn {
18
18
  pagination: PaginationState;
19
19
  rowSelection: RowSelectionState;
20
20
  columnOrder: ColumnOrderState;
21
- globalFilter: GlobalFilterTableState;
21
+ globalFilter: string;
22
22
  columnVisibility: VisibilityState;
23
23
  density: DensityState;
24
24
  setPagination: OnChangeFn<PaginationState>;
25
25
  setSorting: OnChangeFn<SortingState>;
26
26
  setColumnFilters: OnChangeFn<ColumnFiltersState>;
27
27
  setRowSelection: OnChangeFn<RowSelectionState>;
28
- setGlobalFilter: OnChangeFn<GlobalFilterTableState>;
28
+ setGlobalFilter: OnChangeFn<string>;
29
29
  setColumnOrder: OnChangeFn<ColumnOrderState>;
30
30
  setDensity: OnChangeFn<DensityState>;
31
31
  setColumnVisibility: OnChangeFn<VisibilityState>;
@@ -1,8 +1,8 @@
1
1
  export declare const useDataTableContext: () => {
2
2
  table: import("@tanstack/table-core").Table<any>;
3
3
  refreshData: () => void;
4
- globalFilter: import("@tanstack/table-core").GlobalFilterTableState;
5
- setGlobalFilter: import("@tanstack/table-core").OnChangeFn<import("@tanstack/table-core").GlobalFilterTableState>;
4
+ globalFilter: string;
5
+ setGlobalFilter: import("@tanstack/table-core").OnChangeFn<string>;
6
6
  loading: boolean;
7
7
  hasError: boolean;
8
8
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsol-oss/react-datatable5",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",