@bsol-oss/react-datatable5 1.0.7 → 1.0.9
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 +34 -1
- package/dist/index.js +64 -19
- package/dist/index.mjs +60 -22
- package/dist/types/index.d.ts +7 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
3
|
import { ReactNode } from 'react';
|
|
3
4
|
import { Column } from '@tanstack/react-table';
|
|
5
|
+
import * as _tanstack_table_core from '@tanstack/table-core';
|
|
4
6
|
|
|
5
7
|
interface DataTableProps<T> {
|
|
6
8
|
children: ReactNode;
|
|
@@ -19,6 +21,10 @@ declare const DataTable: <TData>({ columns, url, children, }: DataTableProps<TDa
|
|
|
19
21
|
|
|
20
22
|
declare const EditViewButton: () => react_jsx_runtime.JSX.Element;
|
|
21
23
|
|
|
24
|
+
declare const EditFilterButton: () => react_jsx_runtime.JSX.Element;
|
|
25
|
+
|
|
26
|
+
declare const EditSortingButton: () => react_jsx_runtime.JSX.Element;
|
|
27
|
+
|
|
22
28
|
interface PageSizeControlProps {
|
|
23
29
|
pageSizes?: number[];
|
|
24
30
|
}
|
|
@@ -35,6 +41,13 @@ declare const Table: ({ children }: TableProps) => react_jsx_runtime.JSX.Element
|
|
|
35
41
|
|
|
36
42
|
declare const TableBody: () => react_jsx_runtime.JSX.Element;
|
|
37
43
|
|
|
44
|
+
interface TableCardContainerProps {
|
|
45
|
+
children: JSX.Element;
|
|
46
|
+
}
|
|
47
|
+
declare const TableCardContainer: ({ children, ...props }: TableCardContainerProps) => react_jsx_runtime.JSX.Element;
|
|
48
|
+
|
|
49
|
+
declare const TableCards: () => react_jsx_runtime.JSX.Element;
|
|
50
|
+
|
|
38
51
|
declare const TableFilter: () => react_jsx_runtime.JSX.Element;
|
|
39
52
|
|
|
40
53
|
declare const TableFooter: () => react_jsx_runtime.JSX.Element;
|
|
@@ -44,10 +57,30 @@ interface TableHeaderProps {
|
|
|
44
57
|
}
|
|
45
58
|
declare const TableHeader: ({ canResize }: TableHeaderProps) => react_jsx_runtime.JSX.Element;
|
|
46
59
|
|
|
60
|
+
declare const TableSorter: () => react_jsx_runtime.JSX.Element;
|
|
61
|
+
|
|
62
|
+
interface useDataFromUrlReturn<T> {
|
|
63
|
+
data: T;
|
|
64
|
+
loading: boolean;
|
|
65
|
+
hasError: boolean;
|
|
66
|
+
refreshData: () => void;
|
|
67
|
+
}
|
|
68
|
+
interface useDataFromUrlProps<T> {
|
|
69
|
+
url: string;
|
|
70
|
+
params?: object;
|
|
71
|
+
defaultData: T;
|
|
72
|
+
}
|
|
73
|
+
declare const useDataFromUrl: <T>({ url, params, defaultData, }: useDataFromUrlProps<T>) => useDataFromUrlReturn<T>;
|
|
74
|
+
|
|
75
|
+
declare const useDataTable: () => {
|
|
76
|
+
table: _tanstack_table_core.Table<any>;
|
|
77
|
+
refreshData: () => void;
|
|
78
|
+
};
|
|
79
|
+
|
|
47
80
|
interface PaginationProps {
|
|
48
81
|
}
|
|
49
82
|
declare const TablePagination: ({}: PaginationProps) => react_jsx_runtime.JSX.Element;
|
|
50
83
|
|
|
51
84
|
declare const TextCell: ({ label, children }: any) => react_jsx_runtime.JSX.Element;
|
|
52
85
|
|
|
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 };
|
|
86
|
+
export { type DataResponse, DataTable, type DataTableProps, EditFilterButton, EditSortingButton, EditViewButton, PageSizeControl, type PageSizeControlProps, type PaginationProps, ResetFilteringButton, ResetSortingButton, type Result, Table, TableBody, TableCardContainer, type TableCardContainerProps, TableCards, TableFilter, TableFooter, TableHeader, type TableHeaderProps, TablePagination, type TableProps, TableSorter, TextCell, useDataFromUrl, type useDataFromUrlProps, type useDataFromUrlReturn, useDataTable };
|
package/dist/index.js
CHANGED
|
@@ -6,9 +6,9 @@ var reactTable = require('@tanstack/react-table');
|
|
|
6
6
|
var axios = require('axios');
|
|
7
7
|
var react$1 = require('@chakra-ui/react');
|
|
8
8
|
var io = require('react-icons/io');
|
|
9
|
-
var table = require('@chakra-ui/table');
|
|
10
9
|
var md = require('react-icons/md');
|
|
11
10
|
var icons = require('@chakra-ui/icons');
|
|
11
|
+
var table = require('@chakra-ui/table');
|
|
12
12
|
|
|
13
13
|
const TableContext = react.createContext({
|
|
14
14
|
table: {},
|
|
@@ -109,13 +109,6 @@ const EditViewButton = () => {
|
|
|
109
109
|
}) }) })] })] }));
|
|
110
110
|
};
|
|
111
111
|
|
|
112
|
-
const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
113
|
-
const { table } = react.useContext(TableContext);
|
|
114
|
-
return (jsxRuntime.jsx("select", { value: table.getState().pagination.pageSize, onChange: (e) => {
|
|
115
|
-
table.setPageSize(Number(e.target.value));
|
|
116
|
-
}, children: pageSizes.map((pageSize) => (jsxRuntime.jsx("option", { value: pageSize, children: pageSize }, pageSize))) }));
|
|
117
|
-
};
|
|
118
|
-
|
|
119
112
|
const ResetFilteringButton = () => {
|
|
120
113
|
const { table } = react.useContext(TableContext);
|
|
121
114
|
return (jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
@@ -123,6 +116,26 @@ const ResetFilteringButton = () => {
|
|
|
123
116
|
}, children: "Reset Filtering" }));
|
|
124
117
|
};
|
|
125
118
|
|
|
119
|
+
const useDataTable = () => {
|
|
120
|
+
const { table, refreshData } = react.useContext(TableContext);
|
|
121
|
+
return { table, refreshData };
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
const TableFilter = () => {
|
|
125
|
+
const { table } = useDataTable();
|
|
126
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: table.getLeafHeaders().map((header) => {
|
|
127
|
+
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()
|
|
128
|
+
? String(header.column.getFilterValue())
|
|
129
|
+
: "", onChange: (e) => {
|
|
130
|
+
header.column.setFilterValue(e.target.value);
|
|
131
|
+
} })] })) }));
|
|
132
|
+
}) }));
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
const EditFilterButton = () => {
|
|
136
|
+
return (jsxRuntime.jsxs(react$1.Popover, { placement: "bottom-end", 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, {})] }) })] })] }));
|
|
137
|
+
};
|
|
138
|
+
|
|
126
139
|
const ResetSortingButton = () => {
|
|
127
140
|
const { table } = react.useContext(TableContext);
|
|
128
141
|
return (jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
@@ -130,9 +143,32 @@ const ResetSortingButton = () => {
|
|
|
130
143
|
}, children: "Reset Sorting" }));
|
|
131
144
|
};
|
|
132
145
|
|
|
133
|
-
const
|
|
134
|
-
const { table
|
|
135
|
-
return { table,
|
|
146
|
+
const TableSorter = () => {
|
|
147
|
+
const { table } = useDataTable();
|
|
148
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: table.getHeaderGroups().map((headerGroup) => (jsxRuntime.jsx(jsxRuntime.Fragment, { children: headerGroup.headers.map((header) => {
|
|
149
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: header.column.getCanSort() && (jsxRuntime.jsxs(react$1.Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", children: [jsxRuntime.jsx(react$1.Text, { children: header.column.id }), jsxRuntime.jsxs(react$1.Button, { onClick: (e) => {
|
|
150
|
+
header.column.toggleSorting();
|
|
151
|
+
}, children: [header.column.getNextSortingOrder() === false && (
|
|
152
|
+
// <Text>To No sort</Text>
|
|
153
|
+
jsxRuntime.jsx(icons.ChevronUpIcon, {})), header.column.getNextSortingOrder() === "asc" && (
|
|
154
|
+
// <Text>To asc</Text>
|
|
155
|
+
jsxRuntime.jsx(icons.UpDownIcon, {})), header.column.getNextSortingOrder() === "desc" && (
|
|
156
|
+
// <Text>To desc</Text>
|
|
157
|
+
jsxRuntime.jsx(icons.ChevronDownIcon, {}))] }), header.column.getIsSorted() && (jsxRuntime.jsx(react$1.Button, { onClick: (e) => {
|
|
158
|
+
header.column.clearSorting();
|
|
159
|
+
}, children: jsxRuntime.jsx(icons.CloseIcon, {}) }))] })) }));
|
|
160
|
+
}) }))) }));
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
const EditSortingButton = () => {
|
|
164
|
+
return (jsxRuntime.jsxs(react$1.Popover, { placement: "bottom-end", 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, {})] }) })] })] }));
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
168
|
+
const { table } = react.useContext(TableContext);
|
|
169
|
+
return (jsxRuntime.jsx("select", { value: table.getState().pagination.pageSize, onChange: (e) => {
|
|
170
|
+
table.setPageSize(Number(e.target.value));
|
|
171
|
+
}, children: pageSizes.map((pageSize) => (jsxRuntime.jsx("option", { value: pageSize, children: pageSize }, pageSize))) }));
|
|
136
172
|
};
|
|
137
173
|
|
|
138
174
|
const Table = ({ children }) => {
|
|
@@ -145,14 +181,16 @@ const TableBody = () => {
|
|
|
145
181
|
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()))) }));
|
|
146
182
|
};
|
|
147
183
|
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
184
|
+
const TableCardContainer = ({ children, ...props }) => {
|
|
185
|
+
return (jsxRuntime.jsx(react$1.Grid, { gridTemplateColumns: ["1fr", "1fr 1fr", "1fr 1fr 1fr"], gap: "0.5rem", ...props, children: children }));
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
const TableCards = () => {
|
|
189
|
+
const { table } = react.useContext(TableContext);
|
|
190
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: table.getRowModel().rows.map((row) => {
|
|
191
|
+
return (jsxRuntime.jsx(react$1.Card, { children: jsxRuntime.jsx(react$1.CardBody, { display: "flex", flexFlow: "column", gap: "0.5rem", children: row.getVisibleCells().map((cell) => {
|
|
192
|
+
return (jsxRuntime.jsxs(react$1.Box, { children: [jsxRuntime.jsx(react$1.Text, { children: `${cell.column.id}: ` }), jsxRuntime.jsx(react$1.Box, { children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()) })] }));
|
|
193
|
+
}) }) }, crypto.randomUUID()));
|
|
156
194
|
}) }));
|
|
157
195
|
};
|
|
158
196
|
|
|
@@ -200,14 +238,21 @@ const TextCell = ({ label, children }) => {
|
|
|
200
238
|
};
|
|
201
239
|
|
|
202
240
|
exports.DataTable = DataTable;
|
|
241
|
+
exports.EditFilterButton = EditFilterButton;
|
|
242
|
+
exports.EditSortingButton = EditSortingButton;
|
|
203
243
|
exports.EditViewButton = EditViewButton;
|
|
204
244
|
exports.PageSizeControl = PageSizeControl;
|
|
205
245
|
exports.ResetFilteringButton = ResetFilteringButton;
|
|
206
246
|
exports.ResetSortingButton = ResetSortingButton;
|
|
207
247
|
exports.Table = Table;
|
|
208
248
|
exports.TableBody = TableBody;
|
|
249
|
+
exports.TableCardContainer = TableCardContainer;
|
|
250
|
+
exports.TableCards = TableCards;
|
|
209
251
|
exports.TableFilter = TableFilter;
|
|
210
252
|
exports.TableFooter = TableFooter;
|
|
211
253
|
exports.TableHeader = TableHeader;
|
|
212
254
|
exports.TablePagination = TablePagination;
|
|
255
|
+
exports.TableSorter = TableSorter;
|
|
213
256
|
exports.TextCell = TextCell;
|
|
257
|
+
exports.useDataFromUrl = useDataFromUrl;
|
|
258
|
+
exports.useDataTable = useDataTable;
|
package/dist/index.mjs
CHANGED
|
@@ -2,11 +2,11 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
2
2
|
import { createContext, useState, useEffect, useContext } from 'react';
|
|
3
3
|
import { useReactTable, getCoreRowModel, flexRender } from '@tanstack/react-table';
|
|
4
4
|
import axios from 'axios';
|
|
5
|
-
import { Popover, PopoverTrigger, IconButton, PopoverContent, PopoverArrow, PopoverBody, Flex, FormControl, Checkbox, Button, Container, Table as Table$1,
|
|
5
|
+
import { Popover, PopoverTrigger, IconButton, PopoverContent, PopoverArrow, PopoverBody, Flex, FormControl, Checkbox, Button, Box, Text, Input, Tooltip, Container, Table as Table$1, Grid, Card, CardBody, Tfoot, Tr as Tr$1, Th, Thead, ButtonGroup } from '@chakra-ui/react';
|
|
6
6
|
import { IoMdEye } from 'react-icons/io';
|
|
7
|
-
import {
|
|
8
|
-
import { MdFilterListAlt, MdFirstPage, MdArrowBack, MdArrowForward, MdLastPage } from 'react-icons/md';
|
|
7
|
+
import { MdFilterAlt, MdOutlineSort, MdFilterListAlt, MdFirstPage, MdArrowBack, MdArrowForward, MdLastPage } from 'react-icons/md';
|
|
9
8
|
import { ChevronUpIcon, UpDownIcon, ChevronDownIcon, CloseIcon } from '@chakra-ui/icons';
|
|
9
|
+
import { Tbody, Tr, Td } from '@chakra-ui/table';
|
|
10
10
|
|
|
11
11
|
const TableContext = createContext({
|
|
12
12
|
table: {},
|
|
@@ -107,13 +107,6 @@ const EditViewButton = () => {
|
|
|
107
107
|
}) }) })] })] }));
|
|
108
108
|
};
|
|
109
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
110
|
const ResetFilteringButton = () => {
|
|
118
111
|
const { table } = useContext(TableContext);
|
|
119
112
|
return (jsx(Button, { onClick: () => {
|
|
@@ -121,6 +114,26 @@ const ResetFilteringButton = () => {
|
|
|
121
114
|
}, children: "Reset Filtering" }));
|
|
122
115
|
};
|
|
123
116
|
|
|
117
|
+
const useDataTable = () => {
|
|
118
|
+
const { table, refreshData } = useContext(TableContext);
|
|
119
|
+
return { table, refreshData };
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const TableFilter = () => {
|
|
123
|
+
const { table } = useDataTable();
|
|
124
|
+
return (jsx(Fragment, { children: table.getLeafHeaders().map((header) => {
|
|
125
|
+
return (jsx(Fragment, { children: header.column.getCanFilter() && (jsxs(Box, { children: [jsx(Text, { children: header.column.id }), jsx(Input, { value: header.column.getFilterValue()
|
|
126
|
+
? String(header.column.getFilterValue())
|
|
127
|
+
: "", onChange: (e) => {
|
|
128
|
+
header.column.setFilterValue(e.target.value);
|
|
129
|
+
} })] })) }));
|
|
130
|
+
}) }));
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
const EditFilterButton = () => {
|
|
134
|
+
return (jsxs(Popover, { placement: "bottom-end", 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, {})] }) })] })] }));
|
|
135
|
+
};
|
|
136
|
+
|
|
124
137
|
const ResetSortingButton = () => {
|
|
125
138
|
const { table } = useContext(TableContext);
|
|
126
139
|
return (jsx(Button, { onClick: () => {
|
|
@@ -128,9 +141,32 @@ const ResetSortingButton = () => {
|
|
|
128
141
|
}, children: "Reset Sorting" }));
|
|
129
142
|
};
|
|
130
143
|
|
|
131
|
-
const
|
|
132
|
-
const { table
|
|
133
|
-
return { table,
|
|
144
|
+
const TableSorter = () => {
|
|
145
|
+
const { table } = useDataTable();
|
|
146
|
+
return (jsx(Fragment, { children: table.getHeaderGroups().map((headerGroup) => (jsx(Fragment, { children: headerGroup.headers.map((header) => {
|
|
147
|
+
return (jsx(Fragment, { children: header.column.getCanSort() && (jsxs(Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", children: [jsx(Text, { children: header.column.id }), jsxs(Button, { onClick: (e) => {
|
|
148
|
+
header.column.toggleSorting();
|
|
149
|
+
}, children: [header.column.getNextSortingOrder() === false && (
|
|
150
|
+
// <Text>To No sort</Text>
|
|
151
|
+
jsx(ChevronUpIcon, {})), header.column.getNextSortingOrder() === "asc" && (
|
|
152
|
+
// <Text>To asc</Text>
|
|
153
|
+
jsx(UpDownIcon, {})), header.column.getNextSortingOrder() === "desc" && (
|
|
154
|
+
// <Text>To desc</Text>
|
|
155
|
+
jsx(ChevronDownIcon, {}))] }), header.column.getIsSorted() && (jsx(Button, { onClick: (e) => {
|
|
156
|
+
header.column.clearSorting();
|
|
157
|
+
}, children: jsx(CloseIcon, {}) }))] })) }));
|
|
158
|
+
}) }))) }));
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
const EditSortingButton = () => {
|
|
162
|
+
return (jsxs(Popover, { placement: "bottom-end", 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, {})] }) })] })] }));
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
166
|
+
const { table } = useContext(TableContext);
|
|
167
|
+
return (jsx("select", { value: table.getState().pagination.pageSize, onChange: (e) => {
|
|
168
|
+
table.setPageSize(Number(e.target.value));
|
|
169
|
+
}, children: pageSizes.map((pageSize) => (jsx("option", { value: pageSize, children: pageSize }, pageSize))) }));
|
|
134
170
|
};
|
|
135
171
|
|
|
136
172
|
const Table = ({ children }) => {
|
|
@@ -143,14 +179,16 @@ const TableBody = () => {
|
|
|
143
179
|
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
180
|
};
|
|
145
181
|
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
182
|
+
const TableCardContainer = ({ children, ...props }) => {
|
|
183
|
+
return (jsx(Grid, { gridTemplateColumns: ["1fr", "1fr 1fr", "1fr 1fr 1fr"], gap: "0.5rem", ...props, children: children }));
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
const TableCards = () => {
|
|
187
|
+
const { table } = useContext(TableContext);
|
|
188
|
+
return (jsx(Fragment, { children: table.getRowModel().rows.map((row) => {
|
|
189
|
+
return (jsx(Card, { children: jsx(CardBody, { display: "flex", flexFlow: "column", gap: "0.5rem", children: row.getVisibleCells().map((cell) => {
|
|
190
|
+
return (jsxs(Box, { children: [jsx(Text, { children: `${cell.column.id}: ` }), jsx(Box, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) })] }));
|
|
191
|
+
}) }) }, crypto.randomUUID()));
|
|
154
192
|
}) }));
|
|
155
193
|
};
|
|
156
194
|
|
|
@@ -197,4 +235,4 @@ const TextCell = ({ label, children }) => {
|
|
|
197
235
|
return (jsx(Tooltip, { label: label, children: jsx(Text, { as: "span", overflow: "hidden", textOverflow: "ellipsis", noOfLines: [1, 2, 3], children: children }) }));
|
|
198
236
|
};
|
|
199
237
|
|
|
200
|
-
export { DataTable, EditViewButton, PageSizeControl, ResetFilteringButton, ResetSortingButton, Table, TableBody, TableFilter, TableFooter, TableHeader, TablePagination, TextCell };
|
|
238
|
+
export { DataTable, EditFilterButton, EditSortingButton, EditViewButton, PageSizeControl, ResetFilteringButton, ResetSortingButton, Table, TableBody, TableCardContainer, TableCards, TableFilter, TableFooter, TableHeader, TablePagination, TableSorter, TextCell, useDataFromUrl, useDataTable };
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
export * from "./components/DataTable";
|
|
2
2
|
export * from "./components/EditViewButton";
|
|
3
|
+
export * from "./components/EditFilterButton";
|
|
4
|
+
export * from "./components/EditSortingButton";
|
|
3
5
|
export * from "./components/PageSizeControl";
|
|
4
6
|
export * from "./components/ResetFilteringButton";
|
|
5
7
|
export * from "./components/ResetSortingButton";
|
|
6
8
|
export * from "./components/Table";
|
|
7
9
|
export * from "./components/TableBody";
|
|
10
|
+
export * from "./components/TableCardContainer";
|
|
11
|
+
export * from "./components/TableCards";
|
|
8
12
|
export * from "./components/TableFilter";
|
|
9
13
|
export * from "./components/TableFooter";
|
|
10
14
|
export * from "./components/TableHeader";
|
|
15
|
+
export * from "./components/TableSorter";
|
|
16
|
+
export * from "./components/useDataFromUrl";
|
|
17
|
+
export * from "./components/useDataTable";
|
|
11
18
|
export * from "./components/TablePagination";
|
|
12
19
|
export * from "./components/TextCell";
|