@bsol-oss/react-datatable5 1.0.19 → 1.0.20
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/README.md +6 -0
- package/dist/index.d.ts +19 -13
- package/dist/index.js +65 -8
- package/dist/index.mjs +66 -12
- package/dist/types/components/ResetSelectionButton.d.ts +1 -1
- package/dist/types/index.d.ts +6 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -64,3 +64,9 @@ npm install @tanstack/react-table @chakra-ui/react @bsol-oss/react-datatable5
|
|
|
64
64
|
<TablePagination />
|
|
65
65
|
</DataTableServer>
|
|
66
66
|
```
|
|
67
|
+
|
|
68
|
+
Example Url generated by the DataTableServer
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
GET http://localhost:8333/api/v1/gpt/chat/history/all?pagination={"offset":0,"rows":10}&sorting={"field":"session_id","sort":"asc"}&where={"last_user_message":"vdsdf"}
|
|
72
|
+
```
|
package/dist/index.d.ts
CHANGED
|
@@ -32,12 +32,14 @@ interface DataResponse<T> extends Result<T> {
|
|
|
32
32
|
}
|
|
33
33
|
declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, children, }: DataTableServerProps<TData>) => react_jsx_runtime.JSX.Element;
|
|
34
34
|
|
|
35
|
-
declare const EditViewButton: () => react_jsx_runtime.JSX.Element;
|
|
36
|
-
|
|
37
35
|
declare const EditFilterButton: () => react_jsx_runtime.JSX.Element;
|
|
38
36
|
|
|
37
|
+
declare const EditOrderButton: () => react_jsx_runtime.JSX.Element;
|
|
38
|
+
|
|
39
39
|
declare const EditSortingButton: () => react_jsx_runtime.JSX.Element;
|
|
40
40
|
|
|
41
|
+
declare const EditViewButton: () => react_jsx_runtime.JSX.Element;
|
|
42
|
+
|
|
41
43
|
interface PageSizeControlProps {
|
|
42
44
|
pageSizes?: number[];
|
|
43
45
|
}
|
|
@@ -45,6 +47,8 @@ declare const PageSizeControl: ({ pageSizes, }: PageSizeControlProps) => react_j
|
|
|
45
47
|
|
|
46
48
|
declare const ResetFilteringButton: () => react_jsx_runtime.JSX.Element;
|
|
47
49
|
|
|
50
|
+
declare const ResetSelectionButton: () => react_jsx_runtime.JSX.Element;
|
|
51
|
+
|
|
48
52
|
declare const ResetSortingButton: () => react_jsx_runtime.JSX.Element;
|
|
49
53
|
|
|
50
54
|
interface TableProps {
|
|
@@ -72,8 +76,20 @@ interface TableHeaderProps {
|
|
|
72
76
|
}
|
|
73
77
|
declare const TableHeader: ({ canResize }: TableHeaderProps) => react_jsx_runtime.JSX.Element;
|
|
74
78
|
|
|
79
|
+
declare const TableOrderer: () => react_jsx_runtime.JSX.Element;
|
|
80
|
+
|
|
81
|
+
interface PaginationProps {
|
|
82
|
+
}
|
|
83
|
+
declare const TablePagination: ({}: PaginationProps) => react_jsx_runtime.JSX.Element;
|
|
84
|
+
|
|
75
85
|
declare const TableSorter: () => react_jsx_runtime.JSX.Element;
|
|
76
86
|
|
|
87
|
+
interface TextCellProps {
|
|
88
|
+
label?: string;
|
|
89
|
+
children: string | number | JSX.Element | JSX.Element[];
|
|
90
|
+
}
|
|
91
|
+
declare const TextCell: ({ label, children }: TextCellProps) => react_jsx_runtime.JSX.Element;
|
|
92
|
+
|
|
77
93
|
interface useDataFromUrlReturn<T> {
|
|
78
94
|
data: T;
|
|
79
95
|
loading: boolean;
|
|
@@ -92,14 +108,4 @@ declare const useDataTable: () => {
|
|
|
92
108
|
refreshData: () => void;
|
|
93
109
|
};
|
|
94
110
|
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
declare const TablePagination: ({}: PaginationProps) => react_jsx_runtime.JSX.Element;
|
|
98
|
-
|
|
99
|
-
interface TextCellProps {
|
|
100
|
-
label?: string;
|
|
101
|
-
children: string | number | JSX.Element | JSX.Element[];
|
|
102
|
-
}
|
|
103
|
-
declare const TextCell: ({ label, children }: TextCellProps) => react_jsx_runtime.JSX.Element;
|
|
104
|
-
|
|
105
|
-
export { type DataResponse, DataTable, type DataTableProps, DataTableServer, type DataTableServerProps, EditFilterButton, EditSortingButton, EditViewButton, PageSizeControl, type PageSizeControlProps, type PaginationProps, ResetFilteringButton, ResetSortingButton, type Result, Table, TableBody, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableFilter, TableFooter, TableHeader, type TableHeaderProps, TablePagination, type TableProps, TableSorter, TextCell, type TextCellProps, useDataFromUrl, type useDataFromUrlProps, type useDataFromUrlReturn, useDataTable };
|
|
111
|
+
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, TableSorter, TextCell, type TextCellProps, useDataFromUrl, type useDataFromUrlProps, type useDataFromUrlReturn, useDataTable };
|
package/dist/index.js
CHANGED
|
@@ -5,9 +5,9 @@ var reactTable = require('@tanstack/react-table');
|
|
|
5
5
|
var react = require('react');
|
|
6
6
|
var axios = require('axios');
|
|
7
7
|
var react$1 = require('@chakra-ui/react');
|
|
8
|
-
var io = require('react-icons/io');
|
|
9
8
|
var md = require('react-icons/md');
|
|
10
9
|
var icons = require('@chakra-ui/icons');
|
|
10
|
+
var io = require('react-icons/io');
|
|
11
11
|
var table = require('@chakra-ui/table');
|
|
12
12
|
|
|
13
13
|
const TableContext = react.createContext({
|
|
@@ -142,13 +142,6 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
142
142
|
return (jsxRuntime.jsx(TableContext.Provider, { value: { table: { ...table }, refreshData: refreshData }, children: children }));
|
|
143
143
|
};
|
|
144
144
|
|
|
145
|
-
const EditViewButton = () => {
|
|
146
|
-
const { table } = react.useContext(TableContext);
|
|
147
|
-
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "view", icon: jsxRuntime.jsx(io.IoMdEye, {}) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsx(react$1.Flex, { flexFlow: "column", gap: "1rem", children: table.getAllLeafColumns().map((column) => {
|
|
148
|
-
return (jsxRuntime.jsx(react$1.FormControl, { width: "auto", children: jsxRuntime.jsx(react$1.Checkbox, { isChecked: column.getIsVisible(), onChange: column.getToggleVisibilityHandler(), children: column.id }) }, crypto.randomUUID()));
|
|
149
|
-
}) }) })] })] }));
|
|
150
|
-
};
|
|
151
|
-
|
|
152
145
|
const ResetFilteringButton = () => {
|
|
153
146
|
const { table } = react.useContext(TableContext);
|
|
154
147
|
return (jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
@@ -176,6 +169,53 @@ const EditFilterButton = () => {
|
|
|
176
169
|
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.Tooltip, { label: "Filter", children: jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "filter", icon: jsxRuntime.jsx(md.MdFilterAlt, {}) }) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsxs(react$1.Flex, { flexFlow: "column", gap: "1rem", children: [jsxRuntime.jsx(TableFilter, {}), jsxRuntime.jsx(ResetFilteringButton, {})] }) })] })] }));
|
|
177
170
|
};
|
|
178
171
|
|
|
172
|
+
const ColumnOrderChanger = ({ columns }) => {
|
|
173
|
+
const [order, setOrder] = react.useState([]);
|
|
174
|
+
const [originalOrder, setOriginalOrder] = react.useState([]);
|
|
175
|
+
const { table } = useDataTable();
|
|
176
|
+
const handleChangeOrder = (startIndex, endIndex) => {
|
|
177
|
+
const newOrder = Array.from(order);
|
|
178
|
+
const [removed] = newOrder.splice(startIndex, 1);
|
|
179
|
+
newOrder.splice(endIndex, 0, removed);
|
|
180
|
+
setOrder(newOrder);
|
|
181
|
+
};
|
|
182
|
+
react.useEffect(() => {
|
|
183
|
+
setOrder(columns);
|
|
184
|
+
}, [columns]);
|
|
185
|
+
react.useEffect(() => {
|
|
186
|
+
if (originalOrder.length > 0) {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
if (columns.length <= 0) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
setOriginalOrder(columns);
|
|
193
|
+
}, [columns]);
|
|
194
|
+
return (jsxRuntime.jsxs(react$1.Flex, { gap: "0.5rem", flexFlow: "column", children: [jsxRuntime.jsx(react$1.Flex, { gap: "0.5rem", flexFlow: "column", children: order.map((column, index) => (jsxRuntime.jsxs(react$1.Flex, { gap: "0.25rem", alignItems: "center", justifyContent: "center", children: [jsxRuntime.jsx(react$1.IconButton, { onClick: () => {
|
|
195
|
+
const prevIndex = index - 1;
|
|
196
|
+
if (prevIndex >= 0) {
|
|
197
|
+
handleChangeOrder(index, prevIndex);
|
|
198
|
+
}
|
|
199
|
+
}, disabled: index === 0, "aria-label": "", children: jsxRuntime.jsx(md.MdArrowUpward, {}) }), column, jsxRuntime.jsx(react$1.IconButton, { onClick: () => {
|
|
200
|
+
const nextIndex = index + 1;
|
|
201
|
+
if (nextIndex < order.length) {
|
|
202
|
+
handleChangeOrder(index, nextIndex);
|
|
203
|
+
}
|
|
204
|
+
}, disabled: index === order.length - 1, "aria-label": "", children: jsxRuntime.jsx(md.MdArrowDownward, {}) })] }, column))) }), jsxRuntime.jsxs(react$1.Box, { children: [jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
205
|
+
table.setColumnOrder(order);
|
|
206
|
+
}, children: "Apply" }), jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
207
|
+
table.setColumnOrder(originalOrder);
|
|
208
|
+
}, children: "Reset" })] })] }));
|
|
209
|
+
};
|
|
210
|
+
const TableOrderer = () => {
|
|
211
|
+
const { table } = useDataTable();
|
|
212
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(ColumnOrderChanger, { columns: table.getState().columnOrder }) }));
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
const EditOrderButton = () => {
|
|
216
|
+
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.Tooltip, { label: "Change Order", children: jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "filter", icon: jsxRuntime.jsx(md.MdOutlineMoveDown, {}) }) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsx(react$1.Flex, { flexFlow: "column", gap: "0.25rem", children: jsxRuntime.jsx(TableOrderer, {}) }) })] })] }));
|
|
217
|
+
};
|
|
218
|
+
|
|
179
219
|
const ResetSortingButton = () => {
|
|
180
220
|
const { table } = react.useContext(TableContext);
|
|
181
221
|
return (jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
@@ -204,11 +244,25 @@ const EditSortingButton = () => {
|
|
|
204
244
|
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.Tooltip, { label: "Filter", children: jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "filter", icon: jsxRuntime.jsx(md.MdOutlineSort, {}) }) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsxs(react$1.Flex, { flexFlow: "column", gap: "0.25rem", children: [jsxRuntime.jsx(TableSorter, {}), jsxRuntime.jsx(ResetSortingButton, {})] }) })] })] }));
|
|
205
245
|
};
|
|
206
246
|
|
|
247
|
+
const EditViewButton = () => {
|
|
248
|
+
const { table } = react.useContext(TableContext);
|
|
249
|
+
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "view", icon: jsxRuntime.jsx(io.IoMdEye, {}) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsx(react$1.Flex, { flexFlow: "column", gap: "1rem", children: table.getAllLeafColumns().map((column) => {
|
|
250
|
+
return (jsxRuntime.jsx(react$1.FormControl, { width: "auto", children: jsxRuntime.jsx(react$1.Checkbox, { isChecked: column.getIsVisible(), onChange: column.getToggleVisibilityHandler(), children: column.id }) }, crypto.randomUUID()));
|
|
251
|
+
}) }) })] })] }));
|
|
252
|
+
};
|
|
253
|
+
|
|
207
254
|
const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
208
255
|
const { table } = react.useContext(TableContext);
|
|
209
256
|
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(react$1.Menu, { children: [jsxRuntime.jsx(react$1.MenuButton, { as: react$1.Button, 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: () => { table.setPageSize(Number(pageSize)); }, children: pageSize }))) })] }) }));
|
|
210
257
|
};
|
|
211
258
|
|
|
259
|
+
const ResetSelectionButton = () => {
|
|
260
|
+
const { table } = react.useContext(TableContext);
|
|
261
|
+
return (jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
262
|
+
table.resetRowSelection();
|
|
263
|
+
}, children: "Reset Selection" }));
|
|
264
|
+
};
|
|
265
|
+
|
|
212
266
|
const Table = ({ children }) => {
|
|
213
267
|
const { table } = useDataTable();
|
|
214
268
|
return (jsxRuntime.jsx(react$1.Container, { padding: '0rem', maxW: "100%", overflowX: "scroll", children: jsxRuntime.jsx(react$1.Table, { width: table.getCenterTotalSize(), variant: "simple", children: children }) }));
|
|
@@ -361,10 +415,12 @@ const TextCell = ({ label, children }) => {
|
|
|
361
415
|
exports.DataTable = DataTable;
|
|
362
416
|
exports.DataTableServer = DataTableServer;
|
|
363
417
|
exports.EditFilterButton = EditFilterButton;
|
|
418
|
+
exports.EditOrderButton = EditOrderButton;
|
|
364
419
|
exports.EditSortingButton = EditSortingButton;
|
|
365
420
|
exports.EditViewButton = EditViewButton;
|
|
366
421
|
exports.PageSizeControl = PageSizeControl;
|
|
367
422
|
exports.ResetFilteringButton = ResetFilteringButton;
|
|
423
|
+
exports.ResetSelectionButton = ResetSelectionButton;
|
|
368
424
|
exports.ResetSortingButton = ResetSortingButton;
|
|
369
425
|
exports.Table = Table;
|
|
370
426
|
exports.TableBody = TableBody;
|
|
@@ -373,6 +429,7 @@ exports.TableCards = TableCards;
|
|
|
373
429
|
exports.TableFilter = TableFilter;
|
|
374
430
|
exports.TableFooter = TableFooter;
|
|
375
431
|
exports.TableHeader = TableHeader;
|
|
432
|
+
exports.TableOrderer = TableOrderer;
|
|
376
433
|
exports.TablePagination = TablePagination;
|
|
377
434
|
exports.TableSorter = TableSorter;
|
|
378
435
|
exports.TextCell = TextCell;
|
package/dist/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { jsx,
|
|
1
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { useReactTable, getCoreRowModel, getFilteredRowModel, getSortedRowModel, getPaginationRowModel, flexRender } from '@tanstack/react-table';
|
|
3
3
|
import { createContext, useState, useEffect, useContext } from 'react';
|
|
4
4
|
import axios from 'axios';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { MdFilterAlt, MdOutlineSort, MdPushPin, MdCancel, MdSort, MdFilterListAlt, MdFirstPage, MdArrowBack, MdArrowForward, MdLastPage } from 'react-icons/md';
|
|
5
|
+
import { Button, Box, Text, Input, Popover, Tooltip, PopoverTrigger, IconButton, PopoverContent, PopoverArrow, PopoverBody, Flex, FormControl, Checkbox, Menu, MenuButton, MenuList, MenuItem, Container, Table as Table$1, Grid, Card, CardBody, Tfoot, Tr as Tr$1, Th, Thead, Portal, ButtonGroup } from '@chakra-ui/react';
|
|
6
|
+
import { MdFilterAlt, MdArrowUpward, MdArrowDownward, MdOutlineMoveDown, MdOutlineSort, MdPushPin, MdCancel, MdSort, MdFilterListAlt, MdFirstPage, MdArrowBack, MdArrowForward, MdLastPage } from 'react-icons/md';
|
|
8
7
|
import { ChevronUpIcon, UpDownIcon, ChevronDownIcon, CloseIcon } from '@chakra-ui/icons';
|
|
8
|
+
import { IoMdEye, IoMdClose } from 'react-icons/io';
|
|
9
9
|
import { Tbody, Tr, Td } from '@chakra-ui/table';
|
|
10
10
|
|
|
11
11
|
const TableContext = createContext({
|
|
@@ -140,13 +140,6 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
140
140
|
return (jsx(TableContext.Provider, { value: { table: { ...table }, refreshData: refreshData }, children: children }));
|
|
141
141
|
};
|
|
142
142
|
|
|
143
|
-
const EditViewButton = () => {
|
|
144
|
-
const { table } = useContext(TableContext);
|
|
145
|
-
return (jsxs(Popover, { placement: "auto", children: [jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "view", icon: jsx(IoMdEye, {}) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsx(Flex, { flexFlow: "column", gap: "1rem", children: table.getAllLeafColumns().map((column) => {
|
|
146
|
-
return (jsx(FormControl, { width: "auto", children: jsx(Checkbox, { isChecked: column.getIsVisible(), onChange: column.getToggleVisibilityHandler(), children: column.id }) }, crypto.randomUUID()));
|
|
147
|
-
}) }) })] })] }));
|
|
148
|
-
};
|
|
149
|
-
|
|
150
143
|
const ResetFilteringButton = () => {
|
|
151
144
|
const { table } = useContext(TableContext);
|
|
152
145
|
return (jsx(Button, { onClick: () => {
|
|
@@ -174,6 +167,53 @@ const EditFilterButton = () => {
|
|
|
174
167
|
return (jsxs(Popover, { placement: "auto", children: [jsx(Tooltip, { label: "Filter", children: jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "filter", icon: jsx(MdFilterAlt, {}) }) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsxs(Flex, { flexFlow: "column", gap: "1rem", children: [jsx(TableFilter, {}), jsx(ResetFilteringButton, {})] }) })] })] }));
|
|
175
168
|
};
|
|
176
169
|
|
|
170
|
+
const ColumnOrderChanger = ({ columns }) => {
|
|
171
|
+
const [order, setOrder] = useState([]);
|
|
172
|
+
const [originalOrder, setOriginalOrder] = useState([]);
|
|
173
|
+
const { table } = useDataTable();
|
|
174
|
+
const handleChangeOrder = (startIndex, endIndex) => {
|
|
175
|
+
const newOrder = Array.from(order);
|
|
176
|
+
const [removed] = newOrder.splice(startIndex, 1);
|
|
177
|
+
newOrder.splice(endIndex, 0, removed);
|
|
178
|
+
setOrder(newOrder);
|
|
179
|
+
};
|
|
180
|
+
useEffect(() => {
|
|
181
|
+
setOrder(columns);
|
|
182
|
+
}, [columns]);
|
|
183
|
+
useEffect(() => {
|
|
184
|
+
if (originalOrder.length > 0) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (columns.length <= 0) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
setOriginalOrder(columns);
|
|
191
|
+
}, [columns]);
|
|
192
|
+
return (jsxs(Flex, { gap: "0.5rem", flexFlow: "column", children: [jsx(Flex, { gap: "0.5rem", flexFlow: "column", children: order.map((column, index) => (jsxs(Flex, { gap: "0.25rem", alignItems: "center", justifyContent: "center", children: [jsx(IconButton, { onClick: () => {
|
|
193
|
+
const prevIndex = index - 1;
|
|
194
|
+
if (prevIndex >= 0) {
|
|
195
|
+
handleChangeOrder(index, prevIndex);
|
|
196
|
+
}
|
|
197
|
+
}, disabled: index === 0, "aria-label": "", children: jsx(MdArrowUpward, {}) }), column, jsx(IconButton, { onClick: () => {
|
|
198
|
+
const nextIndex = index + 1;
|
|
199
|
+
if (nextIndex < order.length) {
|
|
200
|
+
handleChangeOrder(index, nextIndex);
|
|
201
|
+
}
|
|
202
|
+
}, disabled: index === order.length - 1, "aria-label": "", children: jsx(MdArrowDownward, {}) })] }, column))) }), jsxs(Box, { children: [jsx(Button, { onClick: () => {
|
|
203
|
+
table.setColumnOrder(order);
|
|
204
|
+
}, children: "Apply" }), jsx(Button, { onClick: () => {
|
|
205
|
+
table.setColumnOrder(originalOrder);
|
|
206
|
+
}, children: "Reset" })] })] }));
|
|
207
|
+
};
|
|
208
|
+
const TableOrderer = () => {
|
|
209
|
+
const { table } = useDataTable();
|
|
210
|
+
return (jsx(Fragment, { children: jsx(ColumnOrderChanger, { columns: table.getState().columnOrder }) }));
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
const EditOrderButton = () => {
|
|
214
|
+
return (jsxs(Popover, { placement: "auto", children: [jsx(Tooltip, { label: "Change Order", children: jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "filter", icon: jsx(MdOutlineMoveDown, {}) }) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsx(Flex, { flexFlow: "column", gap: "0.25rem", children: jsx(TableOrderer, {}) }) })] })] }));
|
|
215
|
+
};
|
|
216
|
+
|
|
177
217
|
const ResetSortingButton = () => {
|
|
178
218
|
const { table } = useContext(TableContext);
|
|
179
219
|
return (jsx(Button, { onClick: () => {
|
|
@@ -202,11 +242,25 @@ const EditSortingButton = () => {
|
|
|
202
242
|
return (jsxs(Popover, { placement: "auto", children: [jsx(Tooltip, { label: "Filter", children: jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "filter", icon: jsx(MdOutlineSort, {}) }) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsxs(Flex, { flexFlow: "column", gap: "0.25rem", children: [jsx(TableSorter, {}), jsx(ResetSortingButton, {})] }) })] })] }));
|
|
203
243
|
};
|
|
204
244
|
|
|
245
|
+
const EditViewButton = () => {
|
|
246
|
+
const { table } = useContext(TableContext);
|
|
247
|
+
return (jsxs(Popover, { placement: "auto", children: [jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "view", icon: jsx(IoMdEye, {}) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsx(Flex, { flexFlow: "column", gap: "1rem", children: table.getAllLeafColumns().map((column) => {
|
|
248
|
+
return (jsx(FormControl, { width: "auto", children: jsx(Checkbox, { isChecked: column.getIsVisible(), onChange: column.getToggleVisibilityHandler(), children: column.id }) }, crypto.randomUUID()));
|
|
249
|
+
}) }) })] })] }));
|
|
250
|
+
};
|
|
251
|
+
|
|
205
252
|
const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
206
253
|
const { table } = useContext(TableContext);
|
|
207
254
|
return (jsx(Fragment, { children: jsxs(Menu, { children: [jsx(MenuButton, { as: Button, rightIcon: jsx(ChevronDownIcon, {}), children: table.getState().pagination.pageSize }), jsx(MenuList, { children: pageSizes.map((pageSize) => (jsx(MenuItem, { onClick: () => { table.setPageSize(Number(pageSize)); }, children: pageSize }))) })] }) }));
|
|
208
255
|
};
|
|
209
256
|
|
|
257
|
+
const ResetSelectionButton = () => {
|
|
258
|
+
const { table } = useContext(TableContext);
|
|
259
|
+
return (jsx(Button, { onClick: () => {
|
|
260
|
+
table.resetRowSelection();
|
|
261
|
+
}, children: "Reset Selection" }));
|
|
262
|
+
};
|
|
263
|
+
|
|
210
264
|
const Table = ({ children }) => {
|
|
211
265
|
const { table } = useDataTable();
|
|
212
266
|
return (jsx(Container, { padding: '0rem', maxW: "100%", overflowX: "scroll", children: jsx(Table$1, { width: table.getCenterTotalSize(), variant: "simple", children: children }) }));
|
|
@@ -356,4 +410,4 @@ const TextCell = ({ label, children }) => {
|
|
|
356
410
|
return (jsx(Text, { as: "span", overflow: "hidden", textOverflow: "ellipsis", noOfLines: [1, 2, 3], children: children }));
|
|
357
411
|
};
|
|
358
412
|
|
|
359
|
-
export { DataTable, DataTableServer, EditFilterButton, EditSortingButton, EditViewButton, PageSizeControl, ResetFilteringButton, ResetSortingButton, Table, TableBody, TableCardContainer, TableCards, TableFilter, TableFooter, TableHeader, TablePagination, TableSorter, TextCell, useDataFromUrl, useDataTable };
|
|
413
|
+
export { DataTable, DataTableServer, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, PageSizeControl, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, Table, TableBody, TableCardContainer, TableCards, TableFilter, TableFooter, TableHeader, TableOrderer, TablePagination, TableSorter, TextCell, useDataFromUrl, useDataTable };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const ResetSelectionButton: () => import("react/jsx-runtime").JSX.Element;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export * from "./components/DataTable";
|
|
2
2
|
export * from "./components/DataTableServer";
|
|
3
|
-
export * from "./components/EditViewButton";
|
|
4
3
|
export * from "./components/EditFilterButton";
|
|
4
|
+
export * from "./components/EditOrderButton";
|
|
5
5
|
export * from "./components/EditSortingButton";
|
|
6
|
+
export * from "./components/EditViewButton";
|
|
6
7
|
export * from "./components/PageSizeControl";
|
|
7
8
|
export * from "./components/ResetFilteringButton";
|
|
9
|
+
export * from "./components/ResetSelectionButton";
|
|
8
10
|
export * from "./components/ResetSortingButton";
|
|
9
11
|
export * from "./components/Table";
|
|
10
12
|
export * from "./components/TableBody";
|
|
@@ -13,8 +15,9 @@ export * from "./components/TableCards";
|
|
|
13
15
|
export * from "./components/TableFilter";
|
|
14
16
|
export * from "./components/TableFooter";
|
|
15
17
|
export * from "./components/TableHeader";
|
|
18
|
+
export * from "./components/TableOrderer";
|
|
19
|
+
export * from "./components/TablePagination";
|
|
16
20
|
export * from "./components/TableSorter";
|
|
21
|
+
export * from "./components/TextCell";
|
|
17
22
|
export * from "./components/useDataFromUrl";
|
|
18
23
|
export * from "./components/useDataTable";
|
|
19
|
-
export * from "./components/TablePagination";
|
|
20
|
-
export * from "./components/TextCell";
|