@bsol-oss/react-datatable5 1.0.49 → 1.0.50
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 +9 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +33 -6
- package/dist/index.mjs +34 -8
- package/dist/types/components/TableFilterTags.d.ts +1 -0
- package/dist/types/index.d.ts +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -70,9 +70,17 @@ Example Url generated by the DataTableServer
|
|
|
70
70
|
GET http://localhost:8333/api/v1/gpt/chat/history/all?pagination={"offset":0,"rows":10}&sorting={}&where={}&searching=hello
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
+
### DefaultTable
|
|
74
|
+
|
|
75
|
+
```tsx
|
|
76
|
+
<DataTable columns={columns} data={data}>
|
|
77
|
+
<DefaultTable />
|
|
78
|
+
</DataTable>
|
|
79
|
+
```
|
|
80
|
+
|
|
73
81
|
## Development
|
|
74
82
|
|
|
75
83
|
```
|
|
76
84
|
npm install
|
|
77
85
|
npm run storybook
|
|
78
|
-
```
|
|
86
|
+
```
|
package/dist/index.d.ts
CHANGED
|
@@ -205,6 +205,8 @@ declare const TableComponent: <TData>({ render, }: TableRendererProps<TData>) =>
|
|
|
205
205
|
|
|
206
206
|
declare const TableFilter: () => react_jsx_runtime.JSX.Element;
|
|
207
207
|
|
|
208
|
+
declare const TableFilterTags: () => react_jsx_runtime.JSX.Element;
|
|
209
|
+
|
|
208
210
|
interface TableFooterProps {
|
|
209
211
|
pinnedBgColor?: {
|
|
210
212
|
light: string;
|
|
@@ -264,4 +266,4 @@ declare const useDataTable: () => {
|
|
|
264
266
|
loading: boolean;
|
|
265
267
|
};
|
|
266
268
|
|
|
267
|
-
export { type DataResponse, DataTable, type DataTableProps, DataTableServer, type DataTableServerProps, DefaultTable, type DefaultTableProps, DensityToggleButton, type DensityToggleButtonProps, EditFilterButton, type EditFilterButtonProps, EditOrderButton, type EditOrderButtonProps, EditSortingButton, type EditSortingButtonProps, EditViewButton, type EditViewButtonProps, GlobalFilter, PageSizeControl, type PageSizeControlProps, type PaginationProps, ResetFilteringButton, type ResetFilteringButtonProps, ResetSelectionButton, type ResetSelectionButtonProps, ResetSortingButton, type ResetSortingButtonProps, type Result, RowCountText, Table, TableBody, type TableBodyProps, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableComponent, TableFilter, TableFooter, type TableFooterProps, TableHeader, type TableHeaderProps, TableOrderer, TablePagination, type TableProps, type TableRendererProps, type TableRowSelectorProps, TableSelector, TableSorter, TableViewer, TextCell, type TextCellProps, useDataFromUrl, type useDataFromUrlProps, type useDataFromUrlReturn, useDataTable };
|
|
269
|
+
export { type DataResponse, DataTable, type DataTableProps, DataTableServer, type DataTableServerProps, DefaultTable, type DefaultTableProps, DensityToggleButton, type DensityToggleButtonProps, EditFilterButton, type EditFilterButtonProps, EditOrderButton, type EditOrderButtonProps, EditSortingButton, type EditSortingButtonProps, EditViewButton, type EditViewButtonProps, GlobalFilter, PageSizeControl, type PageSizeControlProps, type PaginationProps, ResetFilteringButton, type ResetFilteringButtonProps, ResetSelectionButton, type ResetSelectionButtonProps, ResetSortingButton, type ResetSortingButtonProps, type Result, RowCountText, Table, TableBody, type TableBodyProps, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableComponent, TableFilter, TableFilterTags, TableFooter, type TableFooterProps, TableHeader, type TableHeaderProps, TableOrderer, TablePagination, type TableProps, type TableRendererProps, type TableRowSelectorProps, TableSelector, TableSorter, TableViewer, TextCell, type TextCellProps, useDataFromUrl, type useDataFromUrlProps, type useDataFromUrlReturn, useDataTable };
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,8 @@ var axios = require('axios');
|
|
|
8
8
|
var react$1 = require('@chakra-ui/react');
|
|
9
9
|
var md = require('react-icons/md');
|
|
10
10
|
var io = require('react-icons/io');
|
|
11
|
+
var reactBeautifulDnd = require('react-beautiful-dnd');
|
|
12
|
+
var fa = require('react-icons/fa');
|
|
11
13
|
var icons = require('@chakra-ui/icons');
|
|
12
14
|
var table = require('@chakra-ui/table');
|
|
13
15
|
var ai = require('react-icons/ai');
|
|
@@ -330,12 +332,25 @@ const EditFilterButton = ({ text, title = "Edit Filter", closeText = "Close", re
|
|
|
330
332
|
|
|
331
333
|
const TableViewer = () => {
|
|
332
334
|
const { table } = useDataTable();
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
335
|
+
const columns = table.getAllLeafColumns();
|
|
336
|
+
const [columnOrder, setColumnOrder] = react.useState(columns.map((column, index) => {
|
|
337
|
+
return column.id;
|
|
338
|
+
}));
|
|
339
|
+
const handleDragEnd = (result) => {
|
|
340
|
+
if (!result.destination)
|
|
341
|
+
return;
|
|
342
|
+
const newColumnOrder = Array.from(columnOrder);
|
|
343
|
+
const [removed] = newColumnOrder.splice(result.source.index, 1);
|
|
344
|
+
newColumnOrder.splice(result.destination.index, 0, removed);
|
|
345
|
+
setColumnOrder(newColumnOrder);
|
|
346
|
+
table.setColumnOrder(newColumnOrder);
|
|
347
|
+
};
|
|
348
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(reactBeautifulDnd.DragDropContext, { onDragEnd: handleDragEnd, children: jsxRuntime.jsx(reactBeautifulDnd.Droppable, { droppableId: "columns", children: (provided) => (jsxRuntime.jsxs(react$1.Flex, { flexFlow: "column", gap: "0.5rem", ref: provided.innerRef, ...provided.droppableProps, children: [columns.map((column, i) => {
|
|
349
|
+
const displayName = column.columnDef.meta === undefined
|
|
350
|
+
? column.id
|
|
351
|
+
: column.columnDef.meta.displayName;
|
|
352
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(reactBeautifulDnd.Draggable, { draggableId: column.id, index: i, children: (provided) => (jsxRuntime.jsxs(react$1.Grid, { ref: provided.innerRef, ...provided.draggableProps, templateColumns: "auto 1fr", gap: "0.5rem", alignItems: "center", children: [jsxRuntime.jsx(react$1.Flex, { ...provided.dragHandleProps, alignItems: "center", padding: "auto 0 auto 0", children: jsxRuntime.jsx(react$1.Icon, { as: fa.FaGripLinesVertical, color: "gray.400" }) }), jsxRuntime.jsxs(react$1.Flex, { justifyContent: "space-between", alignItems: "center", children: [jsxRuntime.jsxs(react$1.Box, { children: [" ", displayName] }), jsxRuntime.jsx(react$1.Switch, { isChecked: column.getIsVisible(), onChange: column.getToggleVisibilityHandler() })] })] })) }, column.id) }));
|
|
353
|
+
}), provided.placeholder] })) }) }) }));
|
|
339
354
|
};
|
|
340
355
|
|
|
341
356
|
const EditViewButton = ({ text, icon = jsxRuntime.jsx(io.IoMdEye, {}), title = "Edit View", }) => {
|
|
@@ -671,6 +686,17 @@ const TableComponent = ({ render = () => {
|
|
|
671
686
|
return render(table);
|
|
672
687
|
};
|
|
673
688
|
|
|
689
|
+
const TableFilterTags = () => {
|
|
690
|
+
const { table } = useDataTable();
|
|
691
|
+
return (jsxRuntime.jsx(react$1.Flex, { gap: "0.5rem", flexFlow: 'wrap', children: table.getState().columnFilters.map(({ id, value }, index) => {
|
|
692
|
+
return (jsxRuntime.jsxs(react$1.Tag, { children: [`${id}: ${value}`, jsxRuntime.jsx(react$1.IconButton, { size: "xs", icon: jsxRuntime.jsx(icons.CloseIcon, {}), onClick: () => {
|
|
693
|
+
table.setColumnFilters(table.getState().columnFilters.filter((value, curIndex) => {
|
|
694
|
+
return curIndex != index;
|
|
695
|
+
}));
|
|
696
|
+
}, "aria-label": "" })] }));
|
|
697
|
+
}) }));
|
|
698
|
+
};
|
|
699
|
+
|
|
674
700
|
const SelectAllRowsToggle = ({ selectAllIcon = jsxRuntime.jsx(md.MdOutlineChecklist, {}), clearAllIcon = jsxRuntime.jsx(md.MdClear, {}), selectAllText, clearAllText, }) => {
|
|
675
701
|
const { table } = react.useContext(TableContext);
|
|
676
702
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!!selectAllText === false && (jsxRuntime.jsx(react$1.IconButton, { icon: table.getIsAllRowsSelected() ? clearAllIcon : selectAllIcon, variant: "ghost", "aria-label": table.getIsAllRowsSelected() ? clearAllText : selectAllText, onClick: (event) => {
|
|
@@ -714,6 +740,7 @@ exports.TableCardContainer = TableCardContainer;
|
|
|
714
740
|
exports.TableCards = TableCards;
|
|
715
741
|
exports.TableComponent = TableComponent;
|
|
716
742
|
exports.TableFilter = TableFilter;
|
|
743
|
+
exports.TableFilterTags = TableFilterTags;
|
|
717
744
|
exports.TableFooter = TableFooter;
|
|
718
745
|
exports.TableHeader = TableHeader;
|
|
719
746
|
exports.TableOrderer = TableOrderer;
|
package/dist/index.mjs
CHANGED
|
@@ -3,9 +3,11 @@ import { makeStateUpdater, functionalUpdate, useReactTable, getCoreRowModel, get
|
|
|
3
3
|
import { createContext, useState, useEffect, useContext } from 'react';
|
|
4
4
|
import { rankItem } from '@tanstack/match-sorter-utils';
|
|
5
5
|
import axios from 'axios';
|
|
6
|
-
import { Button, Box, Text, Input, useDisclosure, IconButton, Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, Flex, ModalFooter, Switch, InputGroup, InputLeftElement,
|
|
6
|
+
import { Button, Box, Text, Input, useDisclosure, IconButton, Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, Flex, ModalFooter, Grid, Icon, Switch, InputGroup, InputLeftElement, Menu, MenuButton, MenuList, MenuItem, Table as Table$1, FormLabel, Checkbox, Tfoot, Tr as Tr$1, Th, Thead, Portal, ButtonGroup, Card, CardBody, Tag, Tooltip } from '@chakra-ui/react';
|
|
7
7
|
import { MdFilterAlt, MdSearch, MdFilterListAlt, MdPushPin, MdCancel, MdSort, MdFirstPage, MdArrowBack, MdArrowForward, MdLastPage, MdOutlineViewColumn, MdArrowUpward, MdArrowDownward, MdOutlineMoveDown, MdOutlineSort, MdOutlineChecklist, MdClear } from 'react-icons/md';
|
|
8
8
|
import { IoMdEye, IoMdClose, IoMdCheckbox } from 'react-icons/io';
|
|
9
|
+
import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
|
|
10
|
+
import { FaGripLinesVertical } from 'react-icons/fa';
|
|
9
11
|
import { ChevronDownIcon, ChevronUpIcon, UpDownIcon, CloseIcon } from '@chakra-ui/icons';
|
|
10
12
|
import { Tbody, Tr, Td } from '@chakra-ui/table';
|
|
11
13
|
import { AiOutlineColumnWidth } from 'react-icons/ai';
|
|
@@ -328,12 +330,25 @@ const EditFilterButton = ({ text, title = "Edit Filter", closeText = "Close", re
|
|
|
328
330
|
|
|
329
331
|
const TableViewer = () => {
|
|
330
332
|
const { table } = useDataTable();
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
333
|
+
const columns = table.getAllLeafColumns();
|
|
334
|
+
const [columnOrder, setColumnOrder] = useState(columns.map((column, index) => {
|
|
335
|
+
return column.id;
|
|
336
|
+
}));
|
|
337
|
+
const handleDragEnd = (result) => {
|
|
338
|
+
if (!result.destination)
|
|
339
|
+
return;
|
|
340
|
+
const newColumnOrder = Array.from(columnOrder);
|
|
341
|
+
const [removed] = newColumnOrder.splice(result.source.index, 1);
|
|
342
|
+
newColumnOrder.splice(result.destination.index, 0, removed);
|
|
343
|
+
setColumnOrder(newColumnOrder);
|
|
344
|
+
table.setColumnOrder(newColumnOrder);
|
|
345
|
+
};
|
|
346
|
+
return (jsx(Fragment, { children: jsx(DragDropContext, { onDragEnd: handleDragEnd, children: jsx(Droppable, { droppableId: "columns", children: (provided) => (jsxs(Flex, { flexFlow: "column", gap: "0.5rem", ref: provided.innerRef, ...provided.droppableProps, children: [columns.map((column, i) => {
|
|
347
|
+
const displayName = column.columnDef.meta === undefined
|
|
348
|
+
? column.id
|
|
349
|
+
: column.columnDef.meta.displayName;
|
|
350
|
+
return (jsx(Fragment, { children: jsx(Draggable, { draggableId: column.id, index: i, children: (provided) => (jsxs(Grid, { ref: provided.innerRef, ...provided.draggableProps, templateColumns: "auto 1fr", gap: "0.5rem", alignItems: "center", children: [jsx(Flex, { ...provided.dragHandleProps, alignItems: "center", padding: "auto 0 auto 0", children: jsx(Icon, { as: FaGripLinesVertical, color: "gray.400" }) }), jsxs(Flex, { justifyContent: "space-between", alignItems: "center", children: [jsxs(Box, { children: [" ", displayName] }), jsx(Switch, { isChecked: column.getIsVisible(), onChange: column.getToggleVisibilityHandler() })] })] })) }, column.id) }));
|
|
351
|
+
}), provided.placeholder] })) }) }) }));
|
|
337
352
|
};
|
|
338
353
|
|
|
339
354
|
const EditViewButton = ({ text, icon = jsx(IoMdEye, {}), title = "Edit View", }) => {
|
|
@@ -669,6 +684,17 @@ const TableComponent = ({ render = () => {
|
|
|
669
684
|
return render(table);
|
|
670
685
|
};
|
|
671
686
|
|
|
687
|
+
const TableFilterTags = () => {
|
|
688
|
+
const { table } = useDataTable();
|
|
689
|
+
return (jsx(Flex, { gap: "0.5rem", flexFlow: 'wrap', children: table.getState().columnFilters.map(({ id, value }, index) => {
|
|
690
|
+
return (jsxs(Tag, { children: [`${id}: ${value}`, jsx(IconButton, { size: "xs", icon: jsx(CloseIcon, {}), onClick: () => {
|
|
691
|
+
table.setColumnFilters(table.getState().columnFilters.filter((value, curIndex) => {
|
|
692
|
+
return curIndex != index;
|
|
693
|
+
}));
|
|
694
|
+
}, "aria-label": "" })] }));
|
|
695
|
+
}) }));
|
|
696
|
+
};
|
|
697
|
+
|
|
672
698
|
const SelectAllRowsToggle = ({ selectAllIcon = jsx(MdOutlineChecklist, {}), clearAllIcon = jsx(MdClear, {}), selectAllText, clearAllText, }) => {
|
|
673
699
|
const { table } = useContext(TableContext);
|
|
674
700
|
return (jsxs(Fragment, { children: [!!selectAllText === false && (jsx(IconButton, { icon: table.getIsAllRowsSelected() ? clearAllIcon : selectAllIcon, variant: "ghost", "aria-label": table.getIsAllRowsSelected() ? clearAllText : selectAllText, onClick: (event) => {
|
|
@@ -692,4 +718,4 @@ const TextCell = ({ label, noOfLines = [1], padding = "0rem", children, tooltipP
|
|
|
692
718
|
return (jsx(Box, { padding: padding, children: jsx(Text, { as: "span", overflow: "hidden", textOverflow: "ellipsis", wordBreak: "break-all", noOfLines: noOfLines, ...props, children: children }) }));
|
|
693
719
|
};
|
|
694
720
|
|
|
695
|
-
export { DataTable, DataTableServer, DefaultTable, DensityToggleButton, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, GlobalFilter, PageSizeControl, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, RowCountText, Table, TableBody, TableCardContainer, TableCards, TableComponent, TableFilter, TableFooter, TableHeader, TableOrderer, TablePagination, TableSelector, TableSorter, TableViewer, TextCell, useDataFromUrl, useDataTable };
|
|
721
|
+
export { DataTable, DataTableServer, DefaultTable, DensityToggleButton, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, GlobalFilter, PageSizeControl, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, RowCountText, Table, TableBody, TableCardContainer, TableCards, TableComponent, TableFilter, TableFilterTags, TableFooter, TableHeader, TableOrderer, TablePagination, TableSelector, TableSorter, TableViewer, TextCell, useDataFromUrl, useDataTable };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TableFilterTags: () => import("react/jsx-runtime").JSX.Element;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export * from "./components/TableCardContainer";
|
|
|
18
18
|
export * from "./components/TableCards";
|
|
19
19
|
export * from "./components/TableComponent";
|
|
20
20
|
export * from "./components/TableFilter";
|
|
21
|
+
export * from "./components/TableFilterTags";
|
|
21
22
|
export * from "./components/TableFooter";
|
|
22
23
|
export * from "./components/TableHeader";
|
|
23
24
|
export * from "./components/TableOrderer";
|
|
@@ -25,7 +26,6 @@ export * from "./components/TablePagination";
|
|
|
25
26
|
export * from "./components/TableSelector";
|
|
26
27
|
export * from "./components/TableSorter";
|
|
27
28
|
export * from "./components/TableViewer";
|
|
28
|
-
export * from "./components/TableComponent";
|
|
29
29
|
export * from "./components/TextCell";
|
|
30
30
|
export * from "./components/useDataFromUrl";
|
|
31
31
|
export * from "./components/useDataTable";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bsol-oss/react-datatable5",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.50",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"axios": "^1.6.8",
|
|
45
45
|
"framer-motion": "^11.0.22",
|
|
46
46
|
"react": "^18.2.0",
|
|
47
|
+
"react-beautiful-dnd": "^13.1.1",
|
|
47
48
|
"react-dom": "^18.2.0",
|
|
48
49
|
"react-icons": "^5.2.0"
|
|
49
50
|
},
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
"@storybook/react-vite": "^8.0.4",
|
|
60
61
|
"@storybook/test": "^8.0.4",
|
|
61
62
|
"@types/react": "^18.2.66",
|
|
63
|
+
"@types/react-beautiful-dnd": "^13.1.8",
|
|
62
64
|
"@types/react-dom": "^18.2.22",
|
|
63
65
|
"@typescript-eslint/eslint-plugin": "^7.2.0",
|
|
64
66
|
"@typescript-eslint/parser": "^7.2.0",
|