@bsol-oss/react-datatable5 1.0.22 → 1.0.23

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
@@ -40,6 +40,8 @@ declare const EditSortingButton: () => react_jsx_runtime.JSX.Element;
40
40
 
41
41
  declare const EditViewButton: () => react_jsx_runtime.JSX.Element;
42
42
 
43
+ declare const GlobalFilter: () => react_jsx_runtime.JSX.Element;
44
+
43
45
  interface PageSizeControlProps {
44
46
  pageSizes?: number[];
45
47
  }
@@ -108,6 +110,8 @@ declare const useDataFromUrl: <T>({ url, params, defaultData, }: useDataFromUrlP
108
110
  declare const useDataTable: () => {
109
111
  table: _tanstack_table_core.Table<any>;
110
112
  refreshData: () => void;
113
+ globalFilter: string;
114
+ setGlobalFilter: (filter: string) => void;
111
115
  };
112
116
 
113
- export { type DataResponse, DataTable, type DataTableProps, DataTableServer, type DataTableServerProps, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, PageSizeControl, type PageSizeControlProps, type PaginationProps, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, type Result, Table, TableBody, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableFilter, TableFooter, TableHeader, type TableHeaderProps, TableOrderer, TablePagination, type TableProps, TableSelector, TableSorter, TextCell, type TextCellProps, useDataFromUrl, type useDataFromUrlProps, type useDataFromUrlReturn, useDataTable };
117
+ export { type DataResponse, DataTable, type DataTableProps, DataTableServer, type DataTableServerProps, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, GlobalFilter, PageSizeControl, type PageSizeControlProps, type PaginationProps, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, type Result, Table, TableBody, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableFilter, TableFooter, TableHeader, type TableHeaderProps, TableOrderer, TablePagination, type TableProps, TableSelector, TableSorter, TextCell, type TextCellProps, useDataFromUrl, type useDataFromUrlProps, type useDataFromUrlReturn, useDataTable };
package/dist/index.js CHANGED
@@ -13,6 +13,8 @@ var table = require('@chakra-ui/table');
13
13
  const TableContext = react.createContext({
14
14
  table: {},
15
15
  refreshData: () => { },
16
+ globalFilter: "",
17
+ setGlobalFilter: () => { },
16
18
  });
17
19
 
18
20
  const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, children, }) => {
@@ -89,6 +91,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
89
91
  });
90
92
  const [rowSelection, setRowSelection] = react.useState({});
91
93
  const [columnOrder, setColumnOrder] = react.useState([]);
94
+ const [globalFilter, setGlobalFilter] = react.useState("");
92
95
  const { data, loading, hasError, refreshData } = useDataFromUrl({
93
96
  url: url,
94
97
  defaultData: {
@@ -110,6 +113,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
110
113
  obj[filter.id] = filter.value;
111
114
  return { ...accumulator, ...obj };
112
115
  }, {})),
116
+ searching: globalFilter,
113
117
  },
114
118
  });
115
119
  const table = reactTable.useReactTable({
@@ -129,6 +133,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
129
133
  columnFilters,
130
134
  rowSelection,
131
135
  columnOrder,
136
+ globalFilter,
132
137
  },
133
138
  defaultColumn: {
134
139
  size: 150, //starting column size
@@ -141,15 +146,23 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
141
146
  onColumnOrderChange: (state) => {
142
147
  setColumnOrder(state);
143
148
  },
149
+ onGlobalFilterChange: (state) => {
150
+ setGlobalFilter(state);
151
+ },
144
152
  rowCount: data.filterCount,
145
153
  });
146
154
  react.useEffect(() => {
147
155
  refreshData();
148
- }, [pagination, sorting, columnFilters]);
156
+ }, [pagination, sorting, columnFilters, globalFilter]);
149
157
  react.useEffect(() => {
150
158
  setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
151
159
  }, []);
152
- return (jsxRuntime.jsx(TableContext.Provider, { value: { table: { ...table }, refreshData: refreshData }, children: children }));
160
+ return (jsxRuntime.jsx(TableContext.Provider, { value: {
161
+ table: { ...table },
162
+ refreshData: refreshData,
163
+ globalFilter,
164
+ setGlobalFilter,
165
+ }, children: children }));
153
166
  };
154
167
 
155
168
  const ResetFilteringButton = () => {
@@ -160,8 +173,8 @@ const ResetFilteringButton = () => {
160
173
  };
161
174
 
162
175
  const useDataTable = () => {
163
- const { table, refreshData } = react.useContext(TableContext);
164
- return { table, refreshData };
176
+ const { table, refreshData, globalFilter, setGlobalFilter } = react.useContext(TableContext);
177
+ return { table, refreshData, globalFilter, setGlobalFilter };
165
178
  };
166
179
 
167
180
  const TableFilter = () => {
@@ -261,9 +274,16 @@ const EditViewButton = () => {
261
274
  }) }) })] })] }));
262
275
  };
263
276
 
277
+ const GlobalFilter = () => {
278
+ const { globalFilter, setGlobalFilter } = useDataTable();
279
+ return (jsxRuntime.jsx(react$1.Input, { value: globalFilter, onChange: (e) => {
280
+ setGlobalFilter(e.target.value);
281
+ } }));
282
+ };
283
+
264
284
  const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
265
285
  const { table } = react.useContext(TableContext);
266
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(react$1.Menu, { children: [jsxRuntime.jsx(react$1.MenuButton, { as: react$1.Button, variant: "ghost", rightIcon: jsxRuntime.jsx(icons.ChevronDownIcon, {}), children: table.getState().pagination.pageSize }), jsxRuntime.jsx(react$1.MenuList, { children: pageSizes.map((pageSize) => (jsxRuntime.jsx(react$1.MenuItem, { onClick: () => {
286
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(react$1.Menu, { children: [jsxRuntime.jsx(react$1.MenuButton, { as: react$1.Button, variant: "ghost", rightIcon: jsxRuntime.jsx(icons.ChevronDownIcon, {}), gap: "0.5rem", children: table.getState().pagination.pageSize }), jsxRuntime.jsx(react$1.MenuList, { children: pageSizes.map((pageSize) => (jsxRuntime.jsx(react$1.MenuItem, { onClick: () => {
267
287
  table.setPageSize(Number(pageSize));
268
288
  }, children: pageSize }))) })] }) }));
269
289
  };
@@ -444,6 +464,7 @@ exports.EditFilterButton = EditFilterButton;
444
464
  exports.EditOrderButton = EditOrderButton;
445
465
  exports.EditSortingButton = EditSortingButton;
446
466
  exports.EditViewButton = EditViewButton;
467
+ exports.GlobalFilter = GlobalFilter;
447
468
  exports.PageSizeControl = PageSizeControl;
448
469
  exports.ResetFilteringButton = ResetFilteringButton;
449
470
  exports.ResetSelectionButton = ResetSelectionButton;
package/dist/index.mjs CHANGED
@@ -11,6 +11,8 @@ import { Tbody, Tr, Td } from '@chakra-ui/table';
11
11
  const TableContext = createContext({
12
12
  table: {},
13
13
  refreshData: () => { },
14
+ globalFilter: "",
15
+ setGlobalFilter: () => { },
14
16
  });
15
17
 
16
18
  const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, children, }) => {
@@ -87,6 +89,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
87
89
  });
88
90
  const [rowSelection, setRowSelection] = useState({});
89
91
  const [columnOrder, setColumnOrder] = useState([]);
92
+ const [globalFilter, setGlobalFilter] = useState("");
90
93
  const { data, loading, hasError, refreshData } = useDataFromUrl({
91
94
  url: url,
92
95
  defaultData: {
@@ -108,6 +111,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
108
111
  obj[filter.id] = filter.value;
109
112
  return { ...accumulator, ...obj };
110
113
  }, {})),
114
+ searching: globalFilter,
111
115
  },
112
116
  });
113
117
  const table = useReactTable({
@@ -127,6 +131,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
127
131
  columnFilters,
128
132
  rowSelection,
129
133
  columnOrder,
134
+ globalFilter,
130
135
  },
131
136
  defaultColumn: {
132
137
  size: 150, //starting column size
@@ -139,15 +144,23 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
139
144
  onColumnOrderChange: (state) => {
140
145
  setColumnOrder(state);
141
146
  },
147
+ onGlobalFilterChange: (state) => {
148
+ setGlobalFilter(state);
149
+ },
142
150
  rowCount: data.filterCount,
143
151
  });
144
152
  useEffect(() => {
145
153
  refreshData();
146
- }, [pagination, sorting, columnFilters]);
154
+ }, [pagination, sorting, columnFilters, globalFilter]);
147
155
  useEffect(() => {
148
156
  setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
149
157
  }, []);
150
- return (jsx(TableContext.Provider, { value: { table: { ...table }, refreshData: refreshData }, children: children }));
158
+ return (jsx(TableContext.Provider, { value: {
159
+ table: { ...table },
160
+ refreshData: refreshData,
161
+ globalFilter,
162
+ setGlobalFilter,
163
+ }, children: children }));
151
164
  };
152
165
 
153
166
  const ResetFilteringButton = () => {
@@ -158,8 +171,8 @@ const ResetFilteringButton = () => {
158
171
  };
159
172
 
160
173
  const useDataTable = () => {
161
- const { table, refreshData } = useContext(TableContext);
162
- return { table, refreshData };
174
+ const { table, refreshData, globalFilter, setGlobalFilter } = useContext(TableContext);
175
+ return { table, refreshData, globalFilter, setGlobalFilter };
163
176
  };
164
177
 
165
178
  const TableFilter = () => {
@@ -259,9 +272,16 @@ const EditViewButton = () => {
259
272
  }) }) })] })] }));
260
273
  };
261
274
 
275
+ const GlobalFilter = () => {
276
+ const { globalFilter, setGlobalFilter } = useDataTable();
277
+ return (jsx(Input, { value: globalFilter, onChange: (e) => {
278
+ setGlobalFilter(e.target.value);
279
+ } }));
280
+ };
281
+
262
282
  const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
263
283
  const { table } = useContext(TableContext);
264
- return (jsx(Fragment, { children: jsxs(Menu, { children: [jsx(MenuButton, { as: Button, variant: "ghost", rightIcon: jsx(ChevronDownIcon, {}), children: table.getState().pagination.pageSize }), jsx(MenuList, { children: pageSizes.map((pageSize) => (jsx(MenuItem, { onClick: () => {
284
+ return (jsx(Fragment, { children: jsxs(Menu, { children: [jsx(MenuButton, { as: Button, variant: "ghost", rightIcon: jsx(ChevronDownIcon, {}), gap: "0.5rem", children: table.getState().pagination.pageSize }), jsx(MenuList, { children: pageSizes.map((pageSize) => (jsx(MenuItem, { onClick: () => {
265
285
  table.setPageSize(Number(pageSize));
266
286
  }, children: pageSize }))) })] }) }));
267
287
  };
@@ -436,4 +456,4 @@ const TextCell = ({ label, children }) => {
436
456
  return (jsx(Text, { as: "span", overflow: "hidden", textOverflow: "ellipsis", noOfLines: [1, 2, 3], children: children }));
437
457
  };
438
458
 
439
- export { DataTable, DataTableServer, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, PageSizeControl, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, Table, TableBody, TableCardContainer, TableCards, TableFilter, TableFooter, TableHeader, TableOrderer, TablePagination, TableSelector, TableSorter, TextCell, useDataFromUrl, useDataTable };
459
+ export { DataTable, DataTableServer, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, GlobalFilter, PageSizeControl, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, Table, TableBody, TableCardContainer, TableCards, TableFilter, TableFooter, TableHeader, TableOrderer, TablePagination, TableSelector, TableSorter, TextCell, useDataFromUrl, useDataTable };
@@ -3,5 +3,7 @@ import { Table } from "@tanstack/react-table";
3
3
  export interface DataTableContext<T> {
4
4
  table: Table<T>;
5
5
  refreshData: () => void;
6
+ globalFilter: string;
7
+ setGlobalFilter: (filter: string) => void;
6
8
  }
7
9
  export declare const TableContext: import("react").Context<DataTableContext<any>>;
@@ -0,0 +1 @@
1
+ export declare const GlobalFilter: () => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,6 @@
1
1
  export declare const useDataTable: () => {
2
2
  table: import("@tanstack/table-core").Table<any>;
3
3
  refreshData: () => void;
4
+ globalFilter: string;
5
+ setGlobalFilter: (filter: string) => void;
4
6
  };
@@ -4,6 +4,7 @@ export * from "./components/EditFilterButton";
4
4
  export * from "./components/EditOrderButton";
5
5
  export * from "./components/EditSortingButton";
6
6
  export * from "./components/EditViewButton";
7
+ export * from "./components/GlobalFilter";
7
8
  export * from "./components/PageSizeControl";
8
9
  export * from "./components/ResetFilteringButton";
9
10
  export * from "./components/ResetSelectionButton";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsol-oss/react-datatable5",
3
- "version": "1.0.22",
3
+ "version": "1.0.23",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",