@bsol-oss/react-datatable5 1.0.4 → 1.0.6
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 +53 -0
- package/dist/index.js +12 -16
- package/dist/index.mjs +200 -0
- package/dist/index.mts +113 -0
- package/dist/index.ts +125 -0
- package/dist/types/components/DataTable.d.ts +1 -2
- package/dist/types/components/DataTableContext.d.ts +1 -2
- package/dist/types/components/EditFilterButton.d.ts +1 -2
- package/dist/types/components/EditSortingButton.d.ts +1 -2
- package/dist/types/components/EditViewButton.d.ts +1 -2
- package/dist/types/components/PageSizeControl.d.ts +1 -2
- package/dist/types/components/ResetFilteringButton.d.ts +1 -2
- package/dist/types/components/ResetSortingButton.d.ts +1 -2
- package/dist/types/components/Table.d.ts +1 -2
- package/dist/types/components/TableBody.d.ts +1 -2
- package/dist/types/components/TableCardContainer.d.ts +2 -3
- package/dist/types/components/TableCards.d.ts +1 -2
- package/dist/types/components/TableFilter.d.ts +1 -2
- package/dist/types/components/TableFooter.d.ts +0 -1
- package/dist/types/components/TableHeader.d.ts +1 -2
- package/dist/types/components/TablePagination.d.ts +1 -2
- package/dist/types/components/TableSorter.d.ts +1 -2
- package/dist/types/components/TextCell.d.ts +1 -2
- package/dist/types/components/useDataFromUrl.d.ts +3 -4
- package/dist/types/index.d.ts +12 -15
- package/package.json +12 -4
- package/.cache/storybook/default/dev-server/a5a8bf6e622aef57065c6498611f40c911543d7d-3920d97c51b8ad2521918fb1205babd22b0ed3d7 +0 -1
- package/.cache/storybook/default/dev-server/a5a8bf6e622aef57065c6498611f40c911543d7d-43fdebe5fc35e4e9fabee9a83c7faea931b05ea0 +0 -1
- package/.cache/storybook/default/dev-server/a5a8bf6e622aef57065c6498611f40c911543d7d-f086b87885981c04ce7a583ff90a49313de83de7 +0 -1
- package/.eslintrc.cjs +0 -19
- package/.prettierignore +0 -4
- package/.storybook/main.ts +0 -20
- package/.storybook/preview.ts +0 -14
- package/prettier.json +0 -6
- package/rollup.config.js +0 -10
- package/src/assets/react.svg +0 -1
- package/src/components/DataTable.tsx +0 -112
- package/src/components/DataTableContext.tsx +0 -12
- package/src/components/EditFilterButton.tsx +0 -37
- package/src/components/EditSortingButton.tsx +0 -37
- package/src/components/EditViewButton.tsx +0 -46
- package/src/components/PageSizeControl.tsx +0 -29
- package/src/components/ResetFilteringButton.tsx +0 -18
- package/src/components/ResetSortingButton.tsx +0 -18
- package/src/components/Table.tsx +0 -20
- package/src/components/TableBody.tsx +0 -23
- package/src/components/TableCardContainer.tsx +0 -22
- package/src/components/TableCards.tsx +0 -36
- package/src/components/TableFilter.tsx +0 -34
- package/src/components/TableFooter.tsx +0 -27
- package/src/components/TableHeader.tsx +0 -106
- package/src/components/TablePagination.tsx +0 -58
- package/src/components/TableSorter.tsx +0 -62
- package/src/components/TextCell.tsx +0 -18
- package/src/components/useDataFromUrl.tsx +0 -52
- package/src/components/useDataTable.tsx +0 -7
- package/src/index.tsx +0 -27
- package/src/stories/CardViewShowcase.tsx +0 -103
- package/src/stories/DataTable.stories.tsx +0 -30
- package/src/stories/TableViewShowcase.tsx +0 -105
- package/src/vite-env.d.ts +0 -1
- package/tsconfig.json +0 -26
- package/tsconfig.node.json +0 -11
- package/vite.config.ts +0 -7
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { Column } from '@tanstack/react-table';
|
|
4
|
+
|
|
5
|
+
interface DataTableProps<T> {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
url: string;
|
|
8
|
+
columns: Column<T>[];
|
|
9
|
+
}
|
|
10
|
+
interface Result<T> {
|
|
11
|
+
results: T[];
|
|
12
|
+
}
|
|
13
|
+
interface DataResponse<T> extends Result<T> {
|
|
14
|
+
success: boolean;
|
|
15
|
+
count: number;
|
|
16
|
+
filterCount: number;
|
|
17
|
+
}
|
|
18
|
+
declare const DataTable: <TData>({ columns, url, children, }: DataTableProps<TData>) => react_jsx_runtime.JSX.Element;
|
|
19
|
+
|
|
20
|
+
declare const EditViewButton: () => react_jsx_runtime.JSX.Element;
|
|
21
|
+
|
|
22
|
+
interface PageSizeControlProps {
|
|
23
|
+
pageSizes?: number[];
|
|
24
|
+
}
|
|
25
|
+
declare const PageSizeControl: ({ pageSizes, }: PageSizeControlProps) => react_jsx_runtime.JSX.Element;
|
|
26
|
+
|
|
27
|
+
declare const ResetFilteringButton: () => react_jsx_runtime.JSX.Element;
|
|
28
|
+
|
|
29
|
+
declare const ResetSortingButton: () => react_jsx_runtime.JSX.Element;
|
|
30
|
+
|
|
31
|
+
interface TableProps {
|
|
32
|
+
children: ReactNode;
|
|
33
|
+
}
|
|
34
|
+
declare const Table: ({ children }: TableProps) => react_jsx_runtime.JSX.Element;
|
|
35
|
+
|
|
36
|
+
declare const TableBody: () => react_jsx_runtime.JSX.Element;
|
|
37
|
+
|
|
38
|
+
declare const TableFilter: () => react_jsx_runtime.JSX.Element;
|
|
39
|
+
|
|
40
|
+
declare const TableFooter: () => react_jsx_runtime.JSX.Element;
|
|
41
|
+
|
|
42
|
+
interface TableHeaderProps {
|
|
43
|
+
canResize?: boolean;
|
|
44
|
+
}
|
|
45
|
+
declare const TableHeader: ({ canResize }: TableHeaderProps) => react_jsx_runtime.JSX.Element;
|
|
46
|
+
|
|
47
|
+
interface PaginationProps {
|
|
48
|
+
}
|
|
49
|
+
declare const TablePagination: ({}: PaginationProps) => react_jsx_runtime.JSX.Element;
|
|
50
|
+
|
|
51
|
+
declare const TextCell: ({ label, children }: any) => react_jsx_runtime.JSX.Element;
|
|
52
|
+
|
|
53
|
+
export { type DataResponse, DataTable, type DataTableProps, EditViewButton, PageSizeControl, type PageSizeControlProps, type PaginationProps, ResetFilteringButton, ResetSortingButton, type Result, Table, TableBody, TableFilter, TableFooter, TableHeader, type TableHeaderProps, TablePagination, type TableProps, TextCell };
|
package/dist/index.js
CHANGED
|
@@ -199,19 +199,15 @@ const TextCell = ({ label, children }) => {
|
|
|
199
199
|
return (jsxRuntime.jsx(react$1.Tooltip, { label: label, children: jsxRuntime.jsx(react$1.Text, { as: "span", overflow: "hidden", textOverflow: "ellipsis", noOfLines: [1, 2, 3], children: children }) }));
|
|
200
200
|
};
|
|
201
201
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
TextCell,
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
module.exports = index;
|
|
202
|
+
exports.DataTable = DataTable;
|
|
203
|
+
exports.EditViewButton = EditViewButton;
|
|
204
|
+
exports.PageSizeControl = PageSizeControl;
|
|
205
|
+
exports.ResetFilteringButton = ResetFilteringButton;
|
|
206
|
+
exports.ResetSortingButton = ResetSortingButton;
|
|
207
|
+
exports.Table = Table;
|
|
208
|
+
exports.TableBody = TableBody;
|
|
209
|
+
exports.TableFilter = TableFilter;
|
|
210
|
+
exports.TableFooter = TableFooter;
|
|
211
|
+
exports.TableHeader = TableHeader;
|
|
212
|
+
exports.TablePagination = TablePagination;
|
|
213
|
+
exports.TextCell = TextCell;
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { createContext, useState, useEffect, useContext } from 'react';
|
|
3
|
+
import { useReactTable, getCoreRowModel, flexRender } from '@tanstack/react-table';
|
|
4
|
+
import axios from 'axios';
|
|
5
|
+
import { Popover, PopoverTrigger, IconButton, PopoverContent, PopoverArrow, PopoverBody, Flex, FormControl, Checkbox, Button, Container, Table as Table$1, Box, Text, Input, Tfoot, Tr as Tr$1, Th, Thead, ButtonGroup, Tooltip } from '@chakra-ui/react';
|
|
6
|
+
import { IoMdEye } from 'react-icons/io';
|
|
7
|
+
import { Tbody, Tr, Td } from '@chakra-ui/table';
|
|
8
|
+
import { MdFilterListAlt, MdFirstPage, MdArrowBack, MdArrowForward, MdLastPage } from 'react-icons/md';
|
|
9
|
+
import { ChevronUpIcon, UpDownIcon, ChevronDownIcon, CloseIcon } from '@chakra-ui/icons';
|
|
10
|
+
|
|
11
|
+
const TableContext = createContext({
|
|
12
|
+
table: {},
|
|
13
|
+
refreshData: () => { },
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const useDataFromUrl = ({ url, params = {}, defaultData, }) => {
|
|
17
|
+
const [loading, setLoading] = useState(true);
|
|
18
|
+
const [hasError, setHasError] = useState(false);
|
|
19
|
+
const [data, setData] = useState(defaultData);
|
|
20
|
+
const refreshData = async () => {
|
|
21
|
+
await getData();
|
|
22
|
+
};
|
|
23
|
+
const getData = async () => {
|
|
24
|
+
try {
|
|
25
|
+
setLoading(true);
|
|
26
|
+
const { data } = await axios.get(url, { params: params });
|
|
27
|
+
console.log("get DataFromUrl success", data);
|
|
28
|
+
setLoading(false);
|
|
29
|
+
setData(data);
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
console.log(e);
|
|
33
|
+
setLoading(false);
|
|
34
|
+
setHasError(true);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
getData().catch((e) => {
|
|
39
|
+
console.error(e);
|
|
40
|
+
});
|
|
41
|
+
}, []);
|
|
42
|
+
return { data, loading, hasError, refreshData };
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const DataTable = ({ columns, url, children, }) => {
|
|
46
|
+
const [sorting, setSorting] = useState([]);
|
|
47
|
+
const [columnFilters, setColumnFilters] = useState([]); // can set initial column filter state here
|
|
48
|
+
const [pagination, setPagination] = useState({
|
|
49
|
+
pageIndex: 0, //initial page index
|
|
50
|
+
pageSize: 10, //default page size
|
|
51
|
+
});
|
|
52
|
+
const { data, loading, hasError, refreshData } = useDataFromUrl({
|
|
53
|
+
url: url,
|
|
54
|
+
defaultData: {
|
|
55
|
+
success: false,
|
|
56
|
+
results: [],
|
|
57
|
+
count: 0,
|
|
58
|
+
filterCount: 0,
|
|
59
|
+
},
|
|
60
|
+
params: {
|
|
61
|
+
pagination: JSON.stringify({
|
|
62
|
+
offset: pagination.pageIndex * pagination.pageSize,
|
|
63
|
+
rows: pagination.pageSize,
|
|
64
|
+
}),
|
|
65
|
+
sorting: JSON.stringify(sorting.length > 0
|
|
66
|
+
? { field: sorting[0].id, sort: sorting[0].desc ? "desc" : "asc" }
|
|
67
|
+
: {}),
|
|
68
|
+
where: JSON.stringify(columnFilters.reduce((accumulator, filter) => {
|
|
69
|
+
const obj = {};
|
|
70
|
+
obj[filter.id] = filter.value;
|
|
71
|
+
return { ...accumulator, ...obj };
|
|
72
|
+
}, {})),
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
const table = useReactTable({
|
|
76
|
+
data: data.results,
|
|
77
|
+
columns: columns,
|
|
78
|
+
getCoreRowModel: getCoreRowModel(),
|
|
79
|
+
// getPaginationRowModel: getPaginationRowModel(),
|
|
80
|
+
manualPagination: true,
|
|
81
|
+
manualSorting: true,
|
|
82
|
+
onPaginationChange: setPagination,
|
|
83
|
+
onSortingChange: setSorting,
|
|
84
|
+
onColumnFiltersChange: setColumnFilters,
|
|
85
|
+
columnResizeMode: "onChange",
|
|
86
|
+
state: {
|
|
87
|
+
pagination,
|
|
88
|
+
sorting,
|
|
89
|
+
columnFilters,
|
|
90
|
+
},
|
|
91
|
+
defaultColumn: {
|
|
92
|
+
size: 10, //starting column size
|
|
93
|
+
minSize: 10, //enforced during column resizing
|
|
94
|
+
maxSize: 10000, //enforced during column resizing
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
useEffect(() => {
|
|
98
|
+
refreshData();
|
|
99
|
+
}, [pagination, sorting, columnFilters]);
|
|
100
|
+
return (jsx(TableContext.Provider, { value: { table: { ...table }, refreshData: refreshData }, children: children }));
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const EditViewButton = () => {
|
|
104
|
+
const { table } = useContext(TableContext);
|
|
105
|
+
return (jsxs(Popover, { placement: "bottom-end", 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) => {
|
|
106
|
+
return (jsx(FormControl, { width: "auto", children: jsx(Checkbox, { isChecked: column.getIsVisible(), onChange: column.getToggleVisibilityHandler(), children: column.id }) }, crypto.randomUUID()));
|
|
107
|
+
}) }) })] })] }));
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
111
|
+
const { table } = useContext(TableContext);
|
|
112
|
+
return (jsx("select", { value: table.getState().pagination.pageSize, onChange: (e) => {
|
|
113
|
+
table.setPageSize(Number(e.target.value));
|
|
114
|
+
}, children: pageSizes.map((pageSize) => (jsx("option", { value: pageSize, children: pageSize }, pageSize))) }));
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const ResetFilteringButton = () => {
|
|
118
|
+
const { table } = useContext(TableContext);
|
|
119
|
+
return (jsx(Button, { onClick: () => {
|
|
120
|
+
table.resetColumnFilters();
|
|
121
|
+
}, children: "Reset Filtering" }));
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
const ResetSortingButton = () => {
|
|
125
|
+
const { table } = useContext(TableContext);
|
|
126
|
+
return (jsx(Button, { onClick: () => {
|
|
127
|
+
table.resetSorting();
|
|
128
|
+
}, children: "Reset Sorting" }));
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
const useDataTable = () => {
|
|
132
|
+
const { table, refreshData } = useContext(TableContext);
|
|
133
|
+
return { table, refreshData };
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
const Table = ({ children }) => {
|
|
137
|
+
const { table } = useDataTable();
|
|
138
|
+
return (jsx(Container, { maxW: "100%", overflowY: "scroll", children: jsx(Table$1, { width: table.getCenterTotalSize(), variant: "simple", children: children }) }));
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
const TableBody = () => {
|
|
142
|
+
const { table } = useContext(TableContext);
|
|
143
|
+
return (jsx(Tbody, { children: table.getRowModel().rows.map((row) => (jsx(Tr, { children: row.getVisibleCells().map((cell) => (jsx(Td, { width: `${cell.column.getSize()}px`, children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, crypto.randomUUID()))) }, crypto.randomUUID()))) }));
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
const TableFilter = () => {
|
|
147
|
+
const { table } = useDataTable();
|
|
148
|
+
return (jsx(Fragment, { children: table.getLeafHeaders().map((header) => {
|
|
149
|
+
return (jsx(Fragment, { children: header.column.getCanFilter() && (jsxs(Box, { children: [jsx(Text, { children: header.column.id }), jsx(Input, { value: header.column.getFilterValue()
|
|
150
|
+
? String(header.column.getFilterValue())
|
|
151
|
+
: "", onChange: (e) => {
|
|
152
|
+
header.column.setFilterValue(e.target.value);
|
|
153
|
+
} })] })) }));
|
|
154
|
+
}) }));
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
const TableFooter = () => {
|
|
158
|
+
const table = useDataTable().table;
|
|
159
|
+
return (jsx(Tfoot, { children: table.getFooterGroups().map((footerGroup) => (jsx(Tr$1, { children: footerGroup.headers.map((header) => (jsx(Th, { colSpan: header.colSpan, children: header.isPlaceholder
|
|
160
|
+
? null
|
|
161
|
+
: flexRender(header.column.columnDef.footer, header.getContext()) }, crypto.randomUUID()))) }, crypto.randomUUID()))) }));
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
const TableHeader = ({ canResize }) => {
|
|
165
|
+
const { table } = useDataTable();
|
|
166
|
+
return (jsx(Thead, { children: table.getHeaderGroups().map((headerGroup) => (jsx(Tr$1, { style: { columnSpan: "all" }, children: headerGroup.headers.map((header) => {
|
|
167
|
+
const resizeProps = {
|
|
168
|
+
onClick: () => header.column.resetSize(),
|
|
169
|
+
onMouseDown: header.getResizeHandler(),
|
|
170
|
+
onTouchStart: header.getResizeHandler(),
|
|
171
|
+
cursor: "col-resize",
|
|
172
|
+
};
|
|
173
|
+
return (jsx(Th, { padding: "0rem", colSpan: header.colSpan, width: `${header.getSize()}px`, children: jsxs(Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", children: [jsx(Box, { children: header.isPlaceholder
|
|
174
|
+
? null
|
|
175
|
+
: flexRender(header.column.columnDef.header, header.getContext()) }), header.column.getCanSort() && (jsxs(Fragment, { children: [jsxs(Button, { onClick: (e) => {
|
|
176
|
+
header.column.toggleSorting();
|
|
177
|
+
}, children: [header.column.getNextSortingOrder() === false && (
|
|
178
|
+
// <Text>To No sort</Text>
|
|
179
|
+
jsx(ChevronUpIcon, {})), header.column.getNextSortingOrder() === "asc" && (
|
|
180
|
+
// <Text>To asc</Text>
|
|
181
|
+
jsx(UpDownIcon, {})), header.column.getNextSortingOrder() === "desc" && (
|
|
182
|
+
// <Text>To desc</Text>
|
|
183
|
+
jsx(ChevronDownIcon, {}))] }), header.column.getIsSorted() && (jsx(Button, { onClick: (e) => {
|
|
184
|
+
header.column.clearSorting();
|
|
185
|
+
}, children: jsx(CloseIcon, {}) }))] })), header.column.getIsFiltered() && jsx(MdFilterListAlt, {}), canResize && (jsx(Box, { borderRight: header.column.getIsResizing()
|
|
186
|
+
? "0.25rem solid black"
|
|
187
|
+
: "0.25rem solid grey", height: "5rem", width: "5px", userSelect: "none", style: { touchAction: "none" }, ...resizeProps }))] }) }, crypto.randomUUID()));
|
|
188
|
+
}) }, crypto.randomUUID()))) }));
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
const TablePagination = ({}) => {
|
|
192
|
+
const { firstPage, getCanPreviousPage, previousPage, getState, nextPage, getCanNextPage, lastPage, } = useDataTable().table;
|
|
193
|
+
return (jsxs(ButtonGroup, { isAttached: true, children: [jsx(IconButton, { icon: jsx(MdFirstPage, {}), onClick: () => firstPage(), disabled: !getCanPreviousPage(), "aria-label": "first-page" }), jsx(IconButton, { icon: jsx(MdArrowBack, {}), onClick: () => previousPage(), disabled: !getCanPreviousPage(), "aria-label": "previous-page" }), jsx(Button, { onClick: () => { }, disabled: !getCanPreviousPage(), children: getState().pagination.pageIndex + 1 }), jsx(IconButton, { onClick: () => nextPage(), disabled: !getCanNextPage(), "aria-label": "next-page", children: jsx(MdArrowForward, {}) }), jsx(IconButton, { onClick: () => lastPage(), disabled: !getCanNextPage(), "aria-label": "last-page", children: jsx(MdLastPage, {}) })] }));
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
const TextCell = ({ label, children }) => {
|
|
197
|
+
return (jsx(Tooltip, { label: label, children: jsx(Text, { as: "span", overflow: "hidden", textOverflow: "ellipsis", noOfLines: [1, 2, 3], children: children }) }));
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
export { DataTable, EditViewButton, PageSizeControl, ResetFilteringButton, ResetSortingButton, Table, TableBody, TableFilter, TableFooter, TableHeader, TablePagination, TextCell };
|
package/dist/index.mts
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
import { flexRender } from '@tanstack/react-table';
|
|
4
|
+
import 'axios';
|
|
5
|
+
import { Popover, PopoverTrigger, IconButton, PopoverContent, PopoverArrow, PopoverBody, Flex, FormControl, Checkbox, Button, Container, Table as Table$1, Box, Text, Input, Tfoot, Tr as Tr$1, Th, Thead, ButtonGroup, Tooltip } from '@chakra-ui/react';
|
|
6
|
+
import { IoMdEye } from 'react-icons/io';
|
|
7
|
+
import { Tbody, Tr, Td } from '@chakra-ui/table';
|
|
8
|
+
import { MdFilterListAlt, MdFirstPage, MdArrowBack, MdArrowForward, MdLastPage } from 'react-icons/md';
|
|
9
|
+
import { ChevronUpIcon, UpDownIcon, ChevronDownIcon, CloseIcon } from '@chakra-ui/icons';
|
|
10
|
+
|
|
11
|
+
const TableContext = createContext({
|
|
12
|
+
table: {},
|
|
13
|
+
refreshData: () => { },
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const EditViewButton = () => {
|
|
17
|
+
const { table } = useContext(TableContext);
|
|
18
|
+
return (jsxs(Popover, { placement: "bottom-end", 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) => {
|
|
19
|
+
return (jsx(FormControl, { width: "auto", children: jsx(Checkbox, { isChecked: column.getIsVisible(), onChange: column.getToggleVisibilityHandler(), children: column.id }) }, crypto.randomUUID()));
|
|
20
|
+
}) }) })] })] }));
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
24
|
+
const { table } = useContext(TableContext);
|
|
25
|
+
return (jsx("select", { value: table.getState().pagination.pageSize, onChange: (e) => {
|
|
26
|
+
table.setPageSize(Number(e.target.value));
|
|
27
|
+
}, children: pageSizes.map((pageSize) => (jsx("option", { value: pageSize, children: pageSize }, pageSize))) }));
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const ResetFilteringButton = () => {
|
|
31
|
+
const { table } = useContext(TableContext);
|
|
32
|
+
return (jsx(Button, { onClick: () => {
|
|
33
|
+
table.resetColumnFilters();
|
|
34
|
+
}, children: "Reset Filtering" }));
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const ResetSortingButton = () => {
|
|
38
|
+
const { table } = useContext(TableContext);
|
|
39
|
+
return (jsx(Button, { onClick: () => {
|
|
40
|
+
table.resetSorting();
|
|
41
|
+
}, children: "Reset Sorting" }));
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const useDataTable = () => {
|
|
45
|
+
const { table, refreshData } = useContext(TableContext);
|
|
46
|
+
return { table, refreshData };
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const Table = ({ children }) => {
|
|
50
|
+
const { table } = useDataTable();
|
|
51
|
+
return (jsx(Container, { maxW: "100%", overflowY: "scroll", children: jsx(Table$1, { width: table.getCenterTotalSize(), variant: "simple", children: children }) }));
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const TableBody = () => {
|
|
55
|
+
const { table } = useContext(TableContext);
|
|
56
|
+
return (jsx(Tbody, { children: table.getRowModel().rows.map((row) => (jsx(Tr, { children: row.getVisibleCells().map((cell) => (jsx(Td, { width: `${cell.column.getSize()}px`, children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, crypto.randomUUID()))) }, crypto.randomUUID()))) }));
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const TableFilter = () => {
|
|
60
|
+
const { table } = useDataTable();
|
|
61
|
+
return (jsx(Fragment, { children: table.getLeafHeaders().map((header) => {
|
|
62
|
+
return (jsx(Fragment, { children: header.column.getCanFilter() && (jsxs(Box, { children: [jsx(Text, { children: header.column.id }), jsx(Input, { value: header.column.getFilterValue()
|
|
63
|
+
? String(header.column.getFilterValue())
|
|
64
|
+
: "", onChange: (e) => {
|
|
65
|
+
header.column.setFilterValue(e.target.value);
|
|
66
|
+
} })] })) }));
|
|
67
|
+
}) }));
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const TableFooter = () => {
|
|
71
|
+
const table = useDataTable().table;
|
|
72
|
+
return (jsx(Tfoot, { children: table.getFooterGroups().map((footerGroup) => (jsx(Tr$1, { children: footerGroup.headers.map((header) => (jsx(Th, { colSpan: header.colSpan, children: header.isPlaceholder
|
|
73
|
+
? null
|
|
74
|
+
: flexRender(header.column.columnDef.footer, header.getContext()) }, crypto.randomUUID()))) }, crypto.randomUUID()))) }));
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
const TableHeader = ({ canResize }) => {
|
|
78
|
+
const { table } = useDataTable();
|
|
79
|
+
return (jsx(Thead, { children: table.getHeaderGroups().map((headerGroup) => (jsx(Tr$1, { style: { columnSpan: "all" }, children: headerGroup.headers.map((header) => {
|
|
80
|
+
const resizeProps = {
|
|
81
|
+
onClick: () => header.column.resetSize(),
|
|
82
|
+
onMouseDown: header.getResizeHandler(),
|
|
83
|
+
onTouchStart: header.getResizeHandler(),
|
|
84
|
+
cursor: "col-resize",
|
|
85
|
+
};
|
|
86
|
+
return (jsx(Th, { padding: "0rem", colSpan: header.colSpan, width: `${header.getSize()}px`, children: jsxs(Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", children: [jsx(Box, { children: header.isPlaceholder
|
|
87
|
+
? null
|
|
88
|
+
: flexRender(header.column.columnDef.header, header.getContext()) }), header.column.getCanSort() && (jsxs(Fragment, { children: [jsxs(Button, { onClick: (e) => {
|
|
89
|
+
header.column.toggleSorting();
|
|
90
|
+
}, children: [header.column.getNextSortingOrder() === false && (
|
|
91
|
+
// <Text>To No sort</Text>
|
|
92
|
+
jsx(ChevronUpIcon, {})), header.column.getNextSortingOrder() === "asc" && (
|
|
93
|
+
// <Text>To asc</Text>
|
|
94
|
+
jsx(UpDownIcon, {})), header.column.getNextSortingOrder() === "desc" && (
|
|
95
|
+
// <Text>To desc</Text>
|
|
96
|
+
jsx(ChevronDownIcon, {}))] }), header.column.getIsSorted() && (jsx(Button, { onClick: (e) => {
|
|
97
|
+
header.column.clearSorting();
|
|
98
|
+
}, children: jsx(CloseIcon, {}) }))] })), header.column.getIsFiltered() && jsx(MdFilterListAlt, {}), canResize && (jsx(Box, { borderRight: header.column.getIsResizing()
|
|
99
|
+
? "0.25rem solid black"
|
|
100
|
+
: "0.25rem solid grey", height: "5rem", width: "5px", userSelect: "none", style: { touchAction: "none" }, ...resizeProps }))] }) }, crypto.randomUUID()));
|
|
101
|
+
}) }, crypto.randomUUID()))) }));
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const TablePagination = ({}) => {
|
|
105
|
+
const { firstPage, getCanPreviousPage, previousPage, getState, nextPage, getCanNextPage, lastPage, } = useDataTable().table;
|
|
106
|
+
return (jsxs(ButtonGroup, { isAttached: true, children: [jsx(IconButton, { icon: jsx(MdFirstPage, {}), onClick: () => firstPage(), disabled: !getCanPreviousPage(), "aria-label": "first-page" }), jsx(IconButton, { icon: jsx(MdArrowBack, {}), onClick: () => previousPage(), disabled: !getCanPreviousPage(), "aria-label": "previous-page" }), jsx(Button, { onClick: () => { }, disabled: !getCanPreviousPage(), children: getState().pagination.pageIndex + 1 }), jsx(IconButton, { onClick: () => nextPage(), disabled: !getCanNextPage(), "aria-label": "next-page", children: jsx(MdArrowForward, {}) }), jsx(IconButton, { onClick: () => lastPage(), disabled: !getCanNextPage(), "aria-label": "last-page", children: jsx(MdLastPage, {}) })] }));
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const TextCell = ({ label, children }) => {
|
|
110
|
+
return (jsx(Tooltip, { label: label, children: jsx(Text, { as: "span", overflow: "hidden", textOverflow: "ellipsis", noOfLines: [1, 2, 3], children: children }) }));
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export { EditViewButton, PageSizeControl, ResetFilteringButton, ResetSortingButton, Table, TableBody, TableFilter, TableFooter, TableHeader, TablePagination, TextCell };
|
package/dist/index.ts
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var reactTable = require('@tanstack/react-table');
|
|
6
|
+
require('axios');
|
|
7
|
+
var react$1 = require('@chakra-ui/react');
|
|
8
|
+
var io = require('react-icons/io');
|
|
9
|
+
var table = require('@chakra-ui/table');
|
|
10
|
+
var md = require('react-icons/md');
|
|
11
|
+
var icons = require('@chakra-ui/icons');
|
|
12
|
+
|
|
13
|
+
const TableContext = react.createContext({
|
|
14
|
+
table: {},
|
|
15
|
+
refreshData: () => { },
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
const EditViewButton = () => {
|
|
19
|
+
const { table } = react.useContext(TableContext);
|
|
20
|
+
return (jsxRuntime.jsxs(react$1.Popover, { placement: "bottom-end", 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) => {
|
|
21
|
+
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()));
|
|
22
|
+
}) }) })] })] }));
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
26
|
+
const { table } = react.useContext(TableContext);
|
|
27
|
+
return (jsxRuntime.jsx("select", { value: table.getState().pagination.pageSize, onChange: (e) => {
|
|
28
|
+
table.setPageSize(Number(e.target.value));
|
|
29
|
+
}, children: pageSizes.map((pageSize) => (jsxRuntime.jsx("option", { value: pageSize, children: pageSize }, pageSize))) }));
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const ResetFilteringButton = () => {
|
|
33
|
+
const { table } = react.useContext(TableContext);
|
|
34
|
+
return (jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
35
|
+
table.resetColumnFilters();
|
|
36
|
+
}, children: "Reset Filtering" }));
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const ResetSortingButton = () => {
|
|
40
|
+
const { table } = react.useContext(TableContext);
|
|
41
|
+
return (jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
42
|
+
table.resetSorting();
|
|
43
|
+
}, children: "Reset Sorting" }));
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const useDataTable = () => {
|
|
47
|
+
const { table, refreshData } = react.useContext(TableContext);
|
|
48
|
+
return { table, refreshData };
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const Table = ({ children }) => {
|
|
52
|
+
const { table } = useDataTable();
|
|
53
|
+
return (jsxRuntime.jsx(react$1.Container, { maxW: "100%", overflowY: "scroll", children: jsxRuntime.jsx(react$1.Table, { width: table.getCenterTotalSize(), variant: "simple", children: children }) }));
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const TableBody = () => {
|
|
57
|
+
const { table: table$1 } = react.useContext(TableContext);
|
|
58
|
+
return (jsxRuntime.jsx(table.Tbody, { children: table$1.getRowModel().rows.map((row) => (jsxRuntime.jsx(table.Tr, { children: row.getVisibleCells().map((cell) => (jsxRuntime.jsx(table.Td, { width: `${cell.column.getSize()}px`, children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()) }, crypto.randomUUID()))) }, crypto.randomUUID()))) }));
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const TableFilter = () => {
|
|
62
|
+
const { table } = useDataTable();
|
|
63
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: table.getLeafHeaders().map((header) => {
|
|
64
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: header.column.getCanFilter() && (jsxRuntime.jsxs(react$1.Box, { children: [jsxRuntime.jsx(react$1.Text, { children: header.column.id }), jsxRuntime.jsx(react$1.Input, { value: header.column.getFilterValue()
|
|
65
|
+
? String(header.column.getFilterValue())
|
|
66
|
+
: "", onChange: (e) => {
|
|
67
|
+
header.column.setFilterValue(e.target.value);
|
|
68
|
+
} })] })) }));
|
|
69
|
+
}) }));
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const TableFooter = () => {
|
|
73
|
+
const table = useDataTable().table;
|
|
74
|
+
return (jsxRuntime.jsx(react$1.Tfoot, { children: table.getFooterGroups().map((footerGroup) => (jsxRuntime.jsx(react$1.Tr, { children: footerGroup.headers.map((header) => (jsxRuntime.jsx(react$1.Th, { colSpan: header.colSpan, children: header.isPlaceholder
|
|
75
|
+
? null
|
|
76
|
+
: reactTable.flexRender(header.column.columnDef.footer, header.getContext()) }, crypto.randomUUID()))) }, crypto.randomUUID()))) }));
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const TableHeader = ({ canResize }) => {
|
|
80
|
+
const { table } = useDataTable();
|
|
81
|
+
return (jsxRuntime.jsx(react$1.Thead, { children: table.getHeaderGroups().map((headerGroup) => (jsxRuntime.jsx(react$1.Tr, { style: { columnSpan: "all" }, children: headerGroup.headers.map((header) => {
|
|
82
|
+
const resizeProps = {
|
|
83
|
+
onClick: () => header.column.resetSize(),
|
|
84
|
+
onMouseDown: header.getResizeHandler(),
|
|
85
|
+
onTouchStart: header.getResizeHandler(),
|
|
86
|
+
cursor: "col-resize",
|
|
87
|
+
};
|
|
88
|
+
return (jsxRuntime.jsx(react$1.Th, { padding: "0rem", colSpan: header.colSpan, width: `${header.getSize()}px`, children: jsxRuntime.jsxs(react$1.Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", children: [jsxRuntime.jsx(react$1.Box, { children: header.isPlaceholder
|
|
89
|
+
? null
|
|
90
|
+
: reactTable.flexRender(header.column.columnDef.header, header.getContext()) }), header.column.getCanSort() && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(react$1.Button, { onClick: (e) => {
|
|
91
|
+
header.column.toggleSorting();
|
|
92
|
+
}, children: [header.column.getNextSortingOrder() === false && (
|
|
93
|
+
// <Text>To No sort</Text>
|
|
94
|
+
jsxRuntime.jsx(icons.ChevronUpIcon, {})), header.column.getNextSortingOrder() === "asc" && (
|
|
95
|
+
// <Text>To asc</Text>
|
|
96
|
+
jsxRuntime.jsx(icons.UpDownIcon, {})), header.column.getNextSortingOrder() === "desc" && (
|
|
97
|
+
// <Text>To desc</Text>
|
|
98
|
+
jsxRuntime.jsx(icons.ChevronDownIcon, {}))] }), header.column.getIsSorted() && (jsxRuntime.jsx(react$1.Button, { onClick: (e) => {
|
|
99
|
+
header.column.clearSorting();
|
|
100
|
+
}, children: jsxRuntime.jsx(icons.CloseIcon, {}) }))] })), header.column.getIsFiltered() && jsxRuntime.jsx(md.MdFilterListAlt, {}), canResize && (jsxRuntime.jsx(react$1.Box, { borderRight: header.column.getIsResizing()
|
|
101
|
+
? "0.25rem solid black"
|
|
102
|
+
: "0.25rem solid grey", height: "5rem", width: "5px", userSelect: "none", style: { touchAction: "none" }, ...resizeProps }))] }) }, crypto.randomUUID()));
|
|
103
|
+
}) }, crypto.randomUUID()))) }));
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const TablePagination = ({}) => {
|
|
107
|
+
const { firstPage, getCanPreviousPage, previousPage, getState, nextPage, getCanNextPage, lastPage, } = useDataTable().table;
|
|
108
|
+
return (jsxRuntime.jsxs(react$1.ButtonGroup, { isAttached: true, children: [jsxRuntime.jsx(react$1.IconButton, { icon: jsxRuntime.jsx(md.MdFirstPage, {}), onClick: () => firstPage(), disabled: !getCanPreviousPage(), "aria-label": "first-page" }), jsxRuntime.jsx(react$1.IconButton, { icon: jsxRuntime.jsx(md.MdArrowBack, {}), onClick: () => previousPage(), disabled: !getCanPreviousPage(), "aria-label": "previous-page" }), jsxRuntime.jsx(react$1.Button, { onClick: () => { }, disabled: !getCanPreviousPage(), children: getState().pagination.pageIndex + 1 }), jsxRuntime.jsx(react$1.IconButton, { onClick: () => nextPage(), disabled: !getCanNextPage(), "aria-label": "next-page", children: jsxRuntime.jsx(md.MdArrowForward, {}) }), jsxRuntime.jsx(react$1.IconButton, { onClick: () => lastPage(), disabled: !getCanNextPage(), "aria-label": "last-page", children: jsxRuntime.jsx(md.MdLastPage, {}) })] }));
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
const TextCell = ({ label, children }) => {
|
|
112
|
+
return (jsxRuntime.jsx(react$1.Tooltip, { label: label, children: jsxRuntime.jsx(react$1.Text, { as: "span", overflow: "hidden", textOverflow: "ellipsis", noOfLines: [1, 2, 3], children: children }) }));
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
exports.EditViewButton = EditViewButton;
|
|
116
|
+
exports.PageSizeControl = PageSizeControl;
|
|
117
|
+
exports.ResetFilteringButton = ResetFilteringButton;
|
|
118
|
+
exports.ResetSortingButton = ResetSortingButton;
|
|
119
|
+
exports.Table = Table;
|
|
120
|
+
exports.TableBody = TableBody;
|
|
121
|
+
exports.TableFilter = TableFilter;
|
|
122
|
+
exports.TableFooter = TableFooter;
|
|
123
|
+
exports.TableHeader = TableHeader;
|
|
124
|
+
exports.TablePagination = TablePagination;
|
|
125
|
+
exports.TextCell = TextCell;
|
|
@@ -13,5 +13,4 @@ export interface DataResponse<T> extends Result<T> {
|
|
|
13
13
|
count: number;
|
|
14
14
|
filterCount: number;
|
|
15
15
|
}
|
|
16
|
-
declare const DataTable: <TData>({ columns, url, children, }: DataTableProps<TData>) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
-
export default DataTable;
|
|
16
|
+
export declare const DataTable: <TData>({ columns, url, children, }: DataTableProps<TData>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { Table } from "@tanstack/react-table";
|
|
3
|
-
interface DataTableContext<T> {
|
|
3
|
+
export interface DataTableContext<T> {
|
|
4
4
|
table: Table<T>;
|
|
5
5
|
refreshData: () => void;
|
|
6
6
|
}
|
|
7
7
|
export declare const TableContext: import("react").Context<DataTableContext<any>>;
|
|
8
|
-
export {};
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
declare const EditFilterButton: () => import("react/jsx-runtime").JSX.Element;
|
|
2
|
-
export default EditFilterButton;
|
|
1
|
+
export declare const EditFilterButton: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
declare const EditSortingButton: () => import("react/jsx-runtime").JSX.Element;
|
|
2
|
-
export default EditSortingButton;
|
|
1
|
+
export declare const EditSortingButton: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
declare const EditViewButton: () => import("react/jsx-runtime").JSX.Element;
|
|
2
|
-
export default EditViewButton;
|
|
1
|
+
export declare const EditViewButton: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export interface PageSizeControlProps {
|
|
2
2
|
pageSizes?: number[];
|
|
3
3
|
}
|
|
4
|
-
declare const PageSizeControl: ({ pageSizes, }: PageSizeControlProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
export default PageSizeControl;
|
|
4
|
+
export declare const PageSizeControl: ({ pageSizes, }: PageSizeControlProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
declare const ResetFilteringButton: () => import("react/jsx-runtime").JSX.Element;
|
|
2
|
-
export default ResetFilteringButton;
|
|
1
|
+
export declare const ResetFilteringButton: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
declare const ResetSortingButton: () => import("react/jsx-runtime").JSX.Element;
|
|
2
|
-
export default ResetSortingButton;
|
|
1
|
+
export declare const ResetSortingButton: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -2,5 +2,4 @@ import { ReactNode } from "react";
|
|
|
2
2
|
export interface TableProps {
|
|
3
3
|
children: ReactNode;
|
|
4
4
|
}
|
|
5
|
-
declare const Table: ({ children }: TableProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
export default Table;
|
|
5
|
+
export declare const Table: ({ children }: TableProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
declare const TableBody: () => import("react/jsx-runtime").JSX.Element;
|
|
2
|
-
export default TableBody;
|
|
1
|
+
export declare const TableBody: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
interface TableCardContainerProps {
|
|
2
|
+
export interface TableCardContainerProps {
|
|
3
3
|
children: JSX.Element;
|
|
4
4
|
}
|
|
5
|
-
declare const TableCardContainer: ({ children, ...props }: TableCardContainerProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
export default TableCardContainer;
|
|
5
|
+
export declare const TableCardContainer: ({ children, ...props }: TableCardContainerProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
declare const TableCards: () => import("react/jsx-runtime").JSX.Element;
|
|
2
|
-
export default TableCards;
|
|
1
|
+
export declare const TableCards: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
declare const TableFilter: () => import("react/jsx-runtime").JSX.Element;
|
|
2
|
-
export default TableFilter;
|
|
1
|
+
export declare const TableFilter: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export interface TableHeaderProps {
|
|
2
2
|
canResize?: boolean;
|
|
3
3
|
}
|
|
4
|
-
declare const TableHeader: ({ canResize }: TableHeaderProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
export default TableHeader;
|
|
4
|
+
export declare const TableHeader: ({ canResize }: TableHeaderProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export interface PaginationProps {
|
|
2
2
|
}
|
|
3
|
-
declare const TablePagination: ({}: PaginationProps) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
-
export default TablePagination;
|
|
3
|
+
export declare const TablePagination: ({}: PaginationProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
declare const TableSorter: () => import("react/jsx-runtime").JSX.Element;
|
|
2
|
-
export default TableSorter;
|
|
1
|
+
export declare const TableSorter: () => import("react/jsx-runtime").JSX.Element;
|