@bsol-oss/react-datatable5 1.0.33 → 1.0.35

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,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
- import { RowData, OnChangeFn, Updater, FilterFn, ColumnDef, Row } from '@tanstack/react-table';
3
+ import { RowData, OnChangeFn, Updater, FilterFn, ColumnDef, RowSelectionState, ColumnFiltersState, SortingState, Row } from '@tanstack/react-table';
4
4
  import { RankingInfo } from '@tanstack/match-sorter-utils';
5
5
  import { ReactNode } from 'react';
6
6
  import { TextProps, TooltipProps } from '@chakra-ui/react';
@@ -36,25 +36,45 @@ declare module "@tanstack/react-table" {
36
36
  itemRank: RankingInfo;
37
37
  }
38
38
  }
39
- interface DataTableProps<T> {
40
- children: JSX.Element | JSX.Element[];
41
- data: T[];
42
- columns: ColumnDef<T, any>[];
43
- density?: DensityState;
39
+ interface DataTableProps<TData> {
40
+ children?: JSX.Element | JSX.Element[];
41
+ data: TData[];
42
+ columns: ColumnDef<TData, any>[];
44
43
  enableRowSelection?: boolean;
45
44
  enableMultiRowSelection?: boolean;
46
45
  enableSubRowSelection?: boolean;
46
+ onRowSelect?: (rowSelection: RowSelectionState) => void;
47
+ columnOrder?: string[];
48
+ columnFilters?: ColumnFiltersState;
49
+ globalFilter?: string;
50
+ density?: DensityState;
51
+ pagination?: {
52
+ pageIndex: number;
53
+ pageSize: number;
54
+ };
55
+ sorting?: SortingState;
56
+ rowSelection?: RowSelectionState;
47
57
  }
48
- declare const DataTable: <TData>({ columns, data, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, density, children, }: DataTableProps<TData>) => react_jsx_runtime.JSX.Element;
58
+ declare const DataTable: <TData>({ columns, data, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder: defaultColumnOrder, columnFilters: defaultColumnFilter, density, globalFilter: defaultGlobalFilter, pagination: defaultPagination, sorting: defaultSorting, rowSelection: defaultRowSelection, children, }: DataTableProps<TData>) => react_jsx_runtime.JSX.Element;
49
59
 
50
- interface DataTableServerProps<T> {
60
+ interface DataTableServerProps<TData> {
51
61
  children: JSX.Element | JSX.Element[];
52
62
  url: string;
53
- columns: ColumnDef<T, any>[];
63
+ columns: ColumnDef<TData, any>[];
54
64
  enableRowSelection?: boolean;
55
65
  enableMultiRowSelection?: boolean;
56
66
  enableSubRowSelection?: boolean;
67
+ onRowSelect?: (row: RowSelectionState) => void;
68
+ columnOrder?: string[];
69
+ columnFilters?: ColumnFiltersState;
70
+ globalFilter?: string;
57
71
  density?: DensityState;
72
+ pagination?: {
73
+ pageIndex: number;
74
+ pageSize: number;
75
+ };
76
+ sorting?: SortingState;
77
+ rowSelection?: RowSelectionState;
58
78
  }
59
79
  interface Result<T> {
60
80
  results: T[];
@@ -69,7 +89,7 @@ declare module "@tanstack/react-table" {
69
89
  displayName: string;
70
90
  }
71
91
  }
72
- declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, density, children, }: DataTableServerProps<TData>) => react_jsx_runtime.JSX.Element;
92
+ declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder: defaultColumnOrder, columnFilters: defaultColumnFilter, density, globalFilter: defaultGlobalFilter, pagination: defaultPagination, sorting: defaultSorting, rowSelection: defaultRowSelection, children, }: DataTableServerProps<TData>) => react_jsx_runtime.JSX.Element;
73
93
 
74
94
  declare const DensityToggleButton: () => react_jsx_runtime.JSX.Element;
75
95
 
package/dist/index.js CHANGED
@@ -103,10 +103,14 @@ const fuzzyFilter = (row, columnId, value, addMeta) => {
103
103
  // Return if the item should be filtered in/out
104
104
  return itemRank.passed;
105
105
  };
106
- const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, density = 'sm', children, }) => {
107
- const [columnOrder, setColumnOrder] = react.useState([]);
108
- const [globalFilter, setGlobalFilter] = react.useState("");
106
+ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder: defaultColumnOrder = [], columnFilters: defaultColumnFilter = [], density = "sm", globalFilter: defaultGlobalFilter = "", pagination: defaultPagination = {
107
+ pageIndex: 0, //initial page index
108
+ pageSize: 10, //default page size
109
+ }, sorting: defaultSorting = [], rowSelection: defaultRowSelection = {}, children, }) => {
110
+ const [columnOrder, setColumnOrder] = react.useState(defaultColumnOrder);
111
+ const [globalFilter, setGlobalFilter] = react.useState(defaultGlobalFilter);
109
112
  const [densityState, setDensity] = react.useState(density);
113
+ const [rowSelection, setRowSelection] = react.useState(defaultRowSelection);
110
114
  const table = reactTable.useReactTable({
111
115
  _features: [DensityFeature],
112
116
  data: data,
@@ -124,6 +128,7 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
124
128
  columnOrder,
125
129
  globalFilter,
126
130
  density: densityState,
131
+ rowSelection
127
132
  },
128
133
  onColumnOrderChange: (state) => {
129
134
  setColumnOrder(state);
@@ -140,10 +145,19 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
140
145
  globalFilterFn: "fuzzy",
141
146
  // global filter end
142
147
  onDensityChange: setDensity,
148
+ onRowSelectionChange: setRowSelection,
149
+ initialState: {
150
+ columnFilters: defaultColumnFilter,
151
+ sorting: defaultSorting,
152
+ pagination: defaultPagination,
153
+ },
143
154
  });
144
155
  react.useEffect(() => {
145
156
  setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
146
157
  }, []);
158
+ react.useEffect(() => {
159
+ onRowSelect(table.getState().rowSelection);
160
+ }, [table.getState().rowSelection]);
147
161
  return (jsxRuntime.jsx(TableContext.Provider, { value: {
148
162
  table: { ...table },
149
163
  refreshData: () => {
@@ -183,16 +197,16 @@ const useDataFromUrl = ({ url, params = {}, defaultData, }) => {
183
197
  return { data, loading, hasError, refreshData };
184
198
  };
185
199
 
186
- const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, density = "sm", children, }) => {
187
- const [sorting, setSorting] = react.useState([]);
188
- const [columnFilters, setColumnFilters] = react.useState([]); // can set initial column filter state here
189
- const [pagination, setPagination] = react.useState({
190
- pageIndex: 0, //initial page index
191
- pageSize: 10, //default page size
192
- });
193
- const [rowSelection, setRowSelection] = react.useState({});
194
- const [columnOrder, setColumnOrder] = react.useState([]);
195
- const [globalFilter, setGlobalFilter] = react.useState("");
200
+ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder: defaultColumnOrder = [], columnFilters: defaultColumnFilter = [], density = "sm", globalFilter: defaultGlobalFilter = "", pagination: defaultPagination = {
201
+ pageIndex: 0, //initial page index
202
+ pageSize: 10, //default page size
203
+ }, sorting: defaultSorting = [], rowSelection: defaultRowSelection = {}, children, }) => {
204
+ const [sorting, setSorting] = react.useState(defaultSorting);
205
+ const [columnFilters, setColumnFilters] = react.useState(defaultColumnFilter); // can set initial column filter state here
206
+ const [pagination, setPagination] = react.useState(defaultPagination);
207
+ const [rowSelection, setRowSelection] = react.useState(defaultRowSelection);
208
+ const [columnOrder, setColumnOrder] = react.useState(defaultColumnOrder);
209
+ const [globalFilter, setGlobalFilter] = react.useState(defaultGlobalFilter);
196
210
  const [densityState, setDensity] = react.useState(density);
197
211
  const { data, loading, hasError, refreshData } = useDataFromUrl({
198
212
  url: url,
@@ -237,7 +251,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
237
251
  rowSelection,
238
252
  columnOrder,
239
253
  globalFilter,
240
- density: densityState
254
+ density: densityState,
241
255
  },
242
256
  defaultColumn: {
243
257
  size: 150, //starting column size
@@ -269,6 +283,9 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
269
283
  react.useEffect(() => {
270
284
  setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
271
285
  }, []);
286
+ react.useEffect(() => {
287
+ onRowSelect(table.getState().rowSelection);
288
+ }, [table.getState().rowSelection]);
272
289
  return (jsxRuntime.jsx(TableContext.Provider, { value: {
273
290
  table: { ...table },
274
291
  refreshData: refreshData,
@@ -405,7 +422,6 @@ const EditSortingButton = () => {
405
422
  const TableViewer = () => {
406
423
  const { table } = useDataTable();
407
424
  return (jsxRuntime.jsx(react$1.Flex, { flexFlow: "column", gap: "1rem", children: table.getAllLeafColumns().map((column) => {
408
- console.log(column.columnDef.meta, "gokspo");
409
425
  const displayName = column.columnDef.meta === undefined
410
426
  ? column.id
411
427
  : column.columnDef.meta.displayName;
package/dist/index.mjs CHANGED
@@ -101,10 +101,14 @@ const fuzzyFilter = (row, columnId, value, addMeta) => {
101
101
  // Return if the item should be filtered in/out
102
102
  return itemRank.passed;
103
103
  };
104
- const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, density = 'sm', children, }) => {
105
- const [columnOrder, setColumnOrder] = useState([]);
106
- const [globalFilter, setGlobalFilter] = useState("");
104
+ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder: defaultColumnOrder = [], columnFilters: defaultColumnFilter = [], density = "sm", globalFilter: defaultGlobalFilter = "", pagination: defaultPagination = {
105
+ pageIndex: 0, //initial page index
106
+ pageSize: 10, //default page size
107
+ }, sorting: defaultSorting = [], rowSelection: defaultRowSelection = {}, children, }) => {
108
+ const [columnOrder, setColumnOrder] = useState(defaultColumnOrder);
109
+ const [globalFilter, setGlobalFilter] = useState(defaultGlobalFilter);
107
110
  const [densityState, setDensity] = useState(density);
111
+ const [rowSelection, setRowSelection] = useState(defaultRowSelection);
108
112
  const table = useReactTable({
109
113
  _features: [DensityFeature],
110
114
  data: data,
@@ -122,6 +126,7 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
122
126
  columnOrder,
123
127
  globalFilter,
124
128
  density: densityState,
129
+ rowSelection
125
130
  },
126
131
  onColumnOrderChange: (state) => {
127
132
  setColumnOrder(state);
@@ -138,10 +143,19 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
138
143
  globalFilterFn: "fuzzy",
139
144
  // global filter end
140
145
  onDensityChange: setDensity,
146
+ onRowSelectionChange: setRowSelection,
147
+ initialState: {
148
+ columnFilters: defaultColumnFilter,
149
+ sorting: defaultSorting,
150
+ pagination: defaultPagination,
151
+ },
141
152
  });
142
153
  useEffect(() => {
143
154
  setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
144
155
  }, []);
156
+ useEffect(() => {
157
+ onRowSelect(table.getState().rowSelection);
158
+ }, [table.getState().rowSelection]);
145
159
  return (jsx(TableContext.Provider, { value: {
146
160
  table: { ...table },
147
161
  refreshData: () => {
@@ -181,16 +195,16 @@ const useDataFromUrl = ({ url, params = {}, defaultData, }) => {
181
195
  return { data, loading, hasError, refreshData };
182
196
  };
183
197
 
184
- const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, density = "sm", children, }) => {
185
- const [sorting, setSorting] = useState([]);
186
- const [columnFilters, setColumnFilters] = useState([]); // can set initial column filter state here
187
- const [pagination, setPagination] = useState({
188
- pageIndex: 0, //initial page index
189
- pageSize: 10, //default page size
190
- });
191
- const [rowSelection, setRowSelection] = useState({});
192
- const [columnOrder, setColumnOrder] = useState([]);
193
- const [globalFilter, setGlobalFilter] = useState("");
198
+ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder: defaultColumnOrder = [], columnFilters: defaultColumnFilter = [], density = "sm", globalFilter: defaultGlobalFilter = "", pagination: defaultPagination = {
199
+ pageIndex: 0, //initial page index
200
+ pageSize: 10, //default page size
201
+ }, sorting: defaultSorting = [], rowSelection: defaultRowSelection = {}, children, }) => {
202
+ const [sorting, setSorting] = useState(defaultSorting);
203
+ const [columnFilters, setColumnFilters] = useState(defaultColumnFilter); // can set initial column filter state here
204
+ const [pagination, setPagination] = useState(defaultPagination);
205
+ const [rowSelection, setRowSelection] = useState(defaultRowSelection);
206
+ const [columnOrder, setColumnOrder] = useState(defaultColumnOrder);
207
+ const [globalFilter, setGlobalFilter] = useState(defaultGlobalFilter);
194
208
  const [densityState, setDensity] = useState(density);
195
209
  const { data, loading, hasError, refreshData } = useDataFromUrl({
196
210
  url: url,
@@ -235,7 +249,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
235
249
  rowSelection,
236
250
  columnOrder,
237
251
  globalFilter,
238
- density: densityState
252
+ density: densityState,
239
253
  },
240
254
  defaultColumn: {
241
255
  size: 150, //starting column size
@@ -267,6 +281,9 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
267
281
  useEffect(() => {
268
282
  setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
269
283
  }, []);
284
+ useEffect(() => {
285
+ onRowSelect(table.getState().rowSelection);
286
+ }, [table.getState().rowSelection]);
270
287
  return (jsx(TableContext.Provider, { value: {
271
288
  table: { ...table },
272
289
  refreshData: refreshData,
@@ -403,7 +420,6 @@ const EditSortingButton = () => {
403
420
  const TableViewer = () => {
404
421
  const { table } = useDataTable();
405
422
  return (jsx(Flex, { flexFlow: "column", gap: "1rem", children: table.getAllLeafColumns().map((column) => {
406
- console.log(column.columnDef.meta, "gokspo");
407
423
  const displayName = column.columnDef.meta === undefined
408
424
  ? column.id
409
425
  : column.columnDef.meta.displayName;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { ColumnDef, FilterFn } from "@tanstack/react-table";
2
+ import { ColumnDef, ColumnFiltersState, FilterFn, RowSelectionState, SortingState } from "@tanstack/react-table";
3
3
  import { RankingInfo } from "@tanstack/match-sorter-utils";
4
4
  import { DensityState } from "./DensityFeature";
5
5
  declare module "@tanstack/react-table" {
@@ -10,13 +10,23 @@ declare module "@tanstack/react-table" {
10
10
  itemRank: RankingInfo;
11
11
  }
12
12
  }
13
- export interface DataTableProps<T> {
14
- children: JSX.Element | JSX.Element[];
15
- data: T[];
16
- columns: ColumnDef<T, any>[];
17
- density?: DensityState;
13
+ export interface DataTableProps<TData> {
14
+ children?: JSX.Element | JSX.Element[];
15
+ data: TData[];
16
+ columns: ColumnDef<TData, any>[];
18
17
  enableRowSelection?: boolean;
19
18
  enableMultiRowSelection?: boolean;
20
19
  enableSubRowSelection?: boolean;
20
+ onRowSelect?: (rowSelection: RowSelectionState) => void;
21
+ columnOrder?: string[];
22
+ columnFilters?: ColumnFiltersState;
23
+ globalFilter?: string;
24
+ density?: DensityState;
25
+ pagination?: {
26
+ pageIndex: number;
27
+ pageSize: number;
28
+ };
29
+ sorting?: SortingState;
30
+ rowSelection?: RowSelectionState;
21
31
  }
22
- export declare const DataTable: <TData>({ columns, data, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, density, children, }: DataTableProps<TData>) => import("react/jsx-runtime").JSX.Element;
32
+ export declare const DataTable: <TData>({ columns, data, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder: defaultColumnOrder, columnFilters: defaultColumnFilter, density, globalFilter: defaultGlobalFilter, pagination: defaultPagination, sorting: defaultSorting, rowSelection: defaultRowSelection, children, }: DataTableProps<TData>) => import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { Table } from "@tanstack/react-table";
3
- export interface DataTableContext<T> {
4
- table: Table<T>;
3
+ export interface DataTableContext<TData> {
4
+ table: Table<TData>;
5
5
  refreshData: () => void;
6
6
  globalFilter: string;
7
7
  setGlobalFilter: (filter: string) => void;
@@ -1,14 +1,24 @@
1
1
  /// <reference types="react" />
2
- import { ColumnDef, RowData } from "@tanstack/react-table";
2
+ import { ColumnDef, ColumnFiltersState, RowData, RowSelectionState, SortingState } from "@tanstack/react-table";
3
3
  import { DensityState } from "./DensityFeature";
4
- export interface DataTableServerProps<T> {
4
+ export interface DataTableServerProps<TData> {
5
5
  children: JSX.Element | JSX.Element[];
6
6
  url: string;
7
- columns: ColumnDef<T, any>[];
7
+ columns: ColumnDef<TData, any>[];
8
8
  enableRowSelection?: boolean;
9
9
  enableMultiRowSelection?: boolean;
10
10
  enableSubRowSelection?: boolean;
11
+ onRowSelect?: (row: RowSelectionState) => void;
12
+ columnOrder?: string[];
13
+ columnFilters?: ColumnFiltersState;
14
+ globalFilter?: string;
11
15
  density?: DensityState;
16
+ pagination?: {
17
+ pageIndex: number;
18
+ pageSize: number;
19
+ };
20
+ sorting?: SortingState;
21
+ rowSelection?: RowSelectionState;
12
22
  }
13
23
  export interface Result<T> {
14
24
  results: T[];
@@ -23,4 +33,4 @@ declare module "@tanstack/react-table" {
23
33
  displayName: string;
24
34
  }
25
35
  }
26
- export declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, density, children, }: DataTableServerProps<TData>) => import("react/jsx-runtime").JSX.Element;
36
+ export declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder: defaultColumnOrder, columnFilters: defaultColumnFilter, density, globalFilter: defaultGlobalFilter, pagination: defaultPagination, sorting: defaultSorting, rowSelection: defaultRowSelection, children, }: DataTableServerProps<TData>) => import("react/jsx-runtime").JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsol-oss/react-datatable5",
3
- "version": "1.0.33",
3
+ "version": "1.0.35",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",