@bsol-oss/react-datatable5 1.0.13 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts
CHANGED
|
@@ -49,7 +49,9 @@ interface TableCardContainerProps {
|
|
|
49
49
|
}
|
|
50
50
|
declare const TableCardContainer: ({ children, ...props }: TableCardContainerProps) => react_jsx_runtime.JSX.Element;
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
interface TableCardsProps {
|
|
53
|
+
}
|
|
54
|
+
declare const TableCards: ({}: TableCardsProps) => react_jsx_runtime.JSX.Element;
|
|
53
55
|
|
|
54
56
|
declare const TableFilter: () => react_jsx_runtime.JSX.Element;
|
|
55
57
|
|
|
@@ -90,4 +92,4 @@ interface TextCellProps {
|
|
|
90
92
|
}
|
|
91
93
|
declare const TextCell: ({ label, children }: TextCellProps) => react_jsx_runtime.JSX.Element;
|
|
92
94
|
|
|
93
|
-
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, type TextCellProps, useDataFromUrl, type useDataFromUrlProps, type useDataFromUrlReturn, useDataTable };
|
|
95
|
+
export { type DataResponse, DataTable, type DataTableProps, 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 };
|
package/dist/index.js
CHANGED
|
@@ -95,7 +95,7 @@ const DataTable = ({ columns, url, enableRowSelection = true, enableMultiRowSele
|
|
|
95
95
|
columnOrder,
|
|
96
96
|
},
|
|
97
97
|
defaultColumn: {
|
|
98
|
-
size:
|
|
98
|
+
size: 100, //starting column size
|
|
99
99
|
minSize: 10, //enforced during column resizing
|
|
100
100
|
maxSize: 10000, //enforced during column resizing
|
|
101
101
|
},
|
|
@@ -186,18 +186,26 @@ const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
|
186
186
|
|
|
187
187
|
const Table = ({ children }) => {
|
|
188
188
|
const { table } = useDataTable();
|
|
189
|
-
return (jsxRuntime.jsx(react$1.Container, { maxW: "100%",
|
|
189
|
+
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 }) }));
|
|
190
190
|
};
|
|
191
191
|
|
|
192
192
|
const TableBody = () => {
|
|
193
193
|
const { table: table$1 } = react.useContext(TableContext);
|
|
194
|
-
console.log(table$1.getSelectedRowModel().rows, "jfaisodij");
|
|
195
194
|
return (jsxRuntime.jsx(table.Tbody, { children: table$1.getRowModel().rows.map((row) => {
|
|
196
|
-
|
|
197
|
-
|
|
195
|
+
return (jsxRuntime.jsxs(table.Tr, { display: "flex", children: [jsxRuntime.jsx(table.Td
|
|
196
|
+
// styling resize and pinning start
|
|
197
|
+
, {
|
|
198
|
+
// styling resize and pinning start
|
|
199
|
+
padding: "0.5rem", left: `0px`, backgroundColor: "gray.50", position: "sticky", zIndex: 1, children: jsxRuntime.jsx(react$1.Checkbox, { isChecked: row.getIsSelected(),
|
|
198
200
|
disabled: !row.getCanSelect(),
|
|
199
201
|
// indeterminate: row.getIsSomeSelected(),
|
|
200
|
-
onChange: row.getToggleSelectedHandler() }) }), row.getVisibleCells().map((cell) =>
|
|
202
|
+
onChange: row.getToggleSelectedHandler() }) }), row.getVisibleCells().map((cell) => {
|
|
203
|
+
return (jsxRuntime.jsx(table.Td, { padding: "0rem",
|
|
204
|
+
// styling resize and pinning start
|
|
205
|
+
maxWidth: `${cell.column.getSize()}px`, width: `${cell.column.getSize()}px`, left: cell.column.getIsPinned()
|
|
206
|
+
? `${cell.column.getStart("left") + 32}px`
|
|
207
|
+
: undefined, backgroundColor: cell.column.getIsPinned() ? "gray.50" : "whitealpha.900", position: cell.column.getIsPinned() ? "sticky" : "relative", zIndex: cell.column.getIsPinned() ? 1 : -1, children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()) }, crypto.randomUUID()));
|
|
208
|
+
})] }, crypto.randomUUID()));
|
|
201
209
|
}) }));
|
|
202
210
|
};
|
|
203
211
|
|
|
@@ -205,30 +213,44 @@ const TableCardContainer = ({ children, ...props }) => {
|
|
|
205
213
|
return (jsxRuntime.jsx(react$1.Grid, { gridTemplateColumns: ["1fr", "1fr 1fr", "1fr 1fr 1fr"], gap: "0.5rem", ...props, children: children }));
|
|
206
214
|
};
|
|
207
215
|
|
|
208
|
-
const TableCards = () => {
|
|
216
|
+
const TableCards = ({}) => {
|
|
209
217
|
const { table } = react.useContext(TableContext);
|
|
210
218
|
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: table.getRowModel().rows.map((row) => {
|
|
211
219
|
return (jsxRuntime.jsx(react$1.Card, { children: jsxRuntime.jsxs(react$1.CardBody, { display: "flex", flexFlow: "column", gap: "0.5rem", children: [jsxRuntime.jsx(react$1.Checkbox, { isChecked: row.getIsSelected(),
|
|
212
220
|
disabled: !row.getCanSelect(),
|
|
213
221
|
// indeterminate: row.getIsSomeSelected(),
|
|
214
222
|
onChange: row.getToggleSelectedHandler() }), row.getVisibleCells().map((cell) => {
|
|
215
|
-
return (jsxRuntime.
|
|
223
|
+
return (jsxRuntime.jsx(react$1.Box, { children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()) }));
|
|
216
224
|
})] }) }, crypto.randomUUID()));
|
|
217
225
|
}) }));
|
|
218
226
|
};
|
|
219
227
|
|
|
220
228
|
const TableFooter = () => {
|
|
221
229
|
const table = useDataTable().table;
|
|
222
|
-
|
|
230
|
+
const SELECTION_BOX_WIDTH = 32;
|
|
231
|
+
return (jsxRuntime.jsx(react$1.Tfoot, { children: table.getFooterGroups().map((footerGroup) => (jsxRuntime.jsxs(react$1.Tr, { display: "flex", children: [jsxRuntime.jsx(react$1.Th
|
|
232
|
+
// styling resize and pinning start
|
|
233
|
+
, {
|
|
234
|
+
// styling resize and pinning start
|
|
235
|
+
padding: "0.5rem", left: `0px`, backgroundColor: "gray.50", position: "sticky", zIndex: 1, children: jsxRuntime.jsx(react$1.Checkbox, { isChecked: table.getIsAllRowsSelected(),
|
|
223
236
|
// indeterminate: table.getIsSomeRowsSelected(),
|
|
224
|
-
onChange: table.getToggleAllRowsSelectedHandler() }) }), footerGroup.headers.map((header) => (jsxRuntime.jsx(react$1.Th, { colSpan: header.colSpan,
|
|
237
|
+
onChange: table.getToggleAllRowsSelectedHandler() }) }), footerGroup.headers.map((header) => (jsxRuntime.jsx(react$1.Th, { padding: "0rem", colSpan: header.colSpan,
|
|
238
|
+
// styling resize and pinning start
|
|
239
|
+
maxWidth: `${header.getSize()}px`, width: `${header.getSize()}px`, left: header.column.getIsPinned()
|
|
240
|
+
? `${header.getStart("left") + SELECTION_BOX_WIDTH}px`
|
|
241
|
+
: undefined, backgroundColor: header.column.getIsPinned() ? "gray.50" : undefined, position: header.column.getIsPinned() ? "sticky" : "relative", zIndex: header.column.getIsPinned() ? 1 : 0, children: header.isPlaceholder
|
|
225
242
|
? null
|
|
226
243
|
: reactTable.flexRender(header.column.columnDef.footer, header.getContext()) }, crypto.randomUUID())))] }, crypto.randomUUID()))) }));
|
|
227
244
|
};
|
|
228
245
|
|
|
229
246
|
const TableHeader = ({ canResize }) => {
|
|
230
247
|
const { table } = useDataTable();
|
|
231
|
-
|
|
248
|
+
const SELECTION_BOX_WIDTH = 32;
|
|
249
|
+
return (jsxRuntime.jsx(react$1.Thead, { children: table.getHeaderGroups().map((headerGroup) => (jsxRuntime.jsxs(react$1.Tr, { display: "flex", children: [jsxRuntime.jsx(react$1.Th
|
|
250
|
+
// styling resize and pinning start
|
|
251
|
+
, {
|
|
252
|
+
// styling resize and pinning start
|
|
253
|
+
padding: "0.5rem", left: `0px`, backgroundColor: "gray.50", position: "sticky", zIndex: 1, children: jsxRuntime.jsx(react$1.Checkbox, { isChecked: table.getIsAllRowsSelected(),
|
|
232
254
|
// indeterminate: table.getIsSomeRowsSelected(),
|
|
233
255
|
onChange: table.getToggleAllRowsSelectedHandler() }) }), headerGroup.headers.map((header) => {
|
|
234
256
|
const resizeProps = {
|
|
@@ -237,9 +259,17 @@ const TableHeader = ({ canResize }) => {
|
|
|
237
259
|
onTouchStart: header.getResizeHandler(),
|
|
238
260
|
cursor: "col-resize",
|
|
239
261
|
};
|
|
240
|
-
return (jsxRuntime.jsx(react$1.Th, { padding: "0rem", colSpan: header.colSpan,
|
|
262
|
+
return (jsxRuntime.jsx(react$1.Th, { padding: "0rem", colSpan: header.colSpan,
|
|
263
|
+
// styling resize and pinning start
|
|
264
|
+
maxWidth: `${header.getSize()}px`, width: `${header.getSize()}px`, left: header.column.getIsPinned()
|
|
265
|
+
? `${header.getStart("left") + SELECTION_BOX_WIDTH}px`
|
|
266
|
+
: undefined, backgroundColor: header.column.getIsPinned() ? "gray.50" : undefined, position: header.column.getIsPinned() ? "sticky" : "relative", zIndex: header.column.getIsPinned() ? 1 : 0, children: jsxRuntime.jsxs(react$1.Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", overflow: "scroll", children: [jsxRuntime.jsx(react$1.Box, { children: header.isPlaceholder
|
|
241
267
|
? null
|
|
242
|
-
: reactTable.flexRender(header.column.columnDef.header, header.getContext()) }),
|
|
268
|
+
: reactTable.flexRender(header.column.columnDef.header, header.getContext()) }), jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
269
|
+
header.column.pin("left");
|
|
270
|
+
}, children: "<=" }), jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
271
|
+
header.column.pin(false);
|
|
272
|
+
}, children: "X" }), header.column.getCanSort() && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(react$1.Button, { onClick: (e) => {
|
|
243
273
|
header.column.toggleSorting();
|
|
244
274
|
}, children: [header.column.getNextSortingOrder() === false && (
|
|
245
275
|
// <Text>To No sort</Text>
|
|
@@ -251,7 +281,7 @@ const TableHeader = ({ canResize }) => {
|
|
|
251
281
|
header.column.clearSorting();
|
|
252
282
|
}, children: jsxRuntime.jsx(icons.CloseIcon, {}) }))] })), header.column.getIsFiltered() && jsxRuntime.jsx(md.MdFilterListAlt, {}), canResize && (jsxRuntime.jsx(react$1.Box, { borderRight: header.column.getIsResizing()
|
|
253
283
|
? "0.25rem solid black"
|
|
254
|
-
: "0.25rem solid grey", height: "
|
|
284
|
+
: "0.25rem solid grey", position: "absolute", right: "0", top: "0", height: "100%", width: "5px", userSelect: "none", style: { touchAction: "none" }, ...resizeProps }))] }) }, crypto.randomUUID()));
|
|
255
285
|
})] }, crypto.randomUUID()))) }));
|
|
256
286
|
};
|
|
257
287
|
|
package/dist/index.mjs
CHANGED
|
@@ -93,7 +93,7 @@ const DataTable = ({ columns, url, enableRowSelection = true, enableMultiRowSele
|
|
|
93
93
|
columnOrder,
|
|
94
94
|
},
|
|
95
95
|
defaultColumn: {
|
|
96
|
-
size:
|
|
96
|
+
size: 100, //starting column size
|
|
97
97
|
minSize: 10, //enforced during column resizing
|
|
98
98
|
maxSize: 10000, //enforced during column resizing
|
|
99
99
|
},
|
|
@@ -184,18 +184,26 @@ const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
|
184
184
|
|
|
185
185
|
const Table = ({ children }) => {
|
|
186
186
|
const { table } = useDataTable();
|
|
187
|
-
return (jsx(Container, { maxW: "100%",
|
|
187
|
+
return (jsx(Container, { padding: '0rem', maxW: "100%", overflowX: "scroll", children: jsx(Table$1, { width: table.getCenterTotalSize(), variant: "simple", children: children }) }));
|
|
188
188
|
};
|
|
189
189
|
|
|
190
190
|
const TableBody = () => {
|
|
191
191
|
const { table } = useContext(TableContext);
|
|
192
|
-
console.log(table.getSelectedRowModel().rows, "jfaisodij");
|
|
193
192
|
return (jsx(Tbody, { children: table.getRowModel().rows.map((row) => {
|
|
194
|
-
|
|
195
|
-
|
|
193
|
+
return (jsxs(Tr, { display: "flex", children: [jsx(Td
|
|
194
|
+
// styling resize and pinning start
|
|
195
|
+
, {
|
|
196
|
+
// styling resize and pinning start
|
|
197
|
+
padding: "0.5rem", left: `0px`, backgroundColor: "gray.50", position: "sticky", zIndex: 1, children: jsx(Checkbox, { isChecked: row.getIsSelected(),
|
|
196
198
|
disabled: !row.getCanSelect(),
|
|
197
199
|
// indeterminate: row.getIsSomeSelected(),
|
|
198
|
-
onChange: row.getToggleSelectedHandler() }) }), row.getVisibleCells().map((cell) =>
|
|
200
|
+
onChange: row.getToggleSelectedHandler() }) }), row.getVisibleCells().map((cell) => {
|
|
201
|
+
return (jsx(Td, { padding: "0rem",
|
|
202
|
+
// styling resize and pinning start
|
|
203
|
+
maxWidth: `${cell.column.getSize()}px`, width: `${cell.column.getSize()}px`, left: cell.column.getIsPinned()
|
|
204
|
+
? `${cell.column.getStart("left") + 32}px`
|
|
205
|
+
: undefined, backgroundColor: cell.column.getIsPinned() ? "gray.50" : "whitealpha.900", position: cell.column.getIsPinned() ? "sticky" : "relative", zIndex: cell.column.getIsPinned() ? 1 : -1, children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, crypto.randomUUID()));
|
|
206
|
+
})] }, crypto.randomUUID()));
|
|
199
207
|
}) }));
|
|
200
208
|
};
|
|
201
209
|
|
|
@@ -203,30 +211,44 @@ const TableCardContainer = ({ children, ...props }) => {
|
|
|
203
211
|
return (jsx(Grid, { gridTemplateColumns: ["1fr", "1fr 1fr", "1fr 1fr 1fr"], gap: "0.5rem", ...props, children: children }));
|
|
204
212
|
};
|
|
205
213
|
|
|
206
|
-
const TableCards = () => {
|
|
214
|
+
const TableCards = ({}) => {
|
|
207
215
|
const { table } = useContext(TableContext);
|
|
208
216
|
return (jsx(Fragment, { children: table.getRowModel().rows.map((row) => {
|
|
209
217
|
return (jsx(Card, { children: jsxs(CardBody, { display: "flex", flexFlow: "column", gap: "0.5rem", children: [jsx(Checkbox, { isChecked: row.getIsSelected(),
|
|
210
218
|
disabled: !row.getCanSelect(),
|
|
211
219
|
// indeterminate: row.getIsSomeSelected(),
|
|
212
220
|
onChange: row.getToggleSelectedHandler() }), row.getVisibleCells().map((cell) => {
|
|
213
|
-
return (
|
|
221
|
+
return (jsx(Box, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }));
|
|
214
222
|
})] }) }, crypto.randomUUID()));
|
|
215
223
|
}) }));
|
|
216
224
|
};
|
|
217
225
|
|
|
218
226
|
const TableFooter = () => {
|
|
219
227
|
const table = useDataTable().table;
|
|
220
|
-
|
|
228
|
+
const SELECTION_BOX_WIDTH = 32;
|
|
229
|
+
return (jsx(Tfoot, { children: table.getFooterGroups().map((footerGroup) => (jsxs(Tr$1, { display: "flex", children: [jsx(Th
|
|
230
|
+
// styling resize and pinning start
|
|
231
|
+
, {
|
|
232
|
+
// styling resize and pinning start
|
|
233
|
+
padding: "0.5rem", left: `0px`, backgroundColor: "gray.50", position: "sticky", zIndex: 1, children: jsx(Checkbox, { isChecked: table.getIsAllRowsSelected(),
|
|
221
234
|
// indeterminate: table.getIsSomeRowsSelected(),
|
|
222
|
-
onChange: table.getToggleAllRowsSelectedHandler() }) }), footerGroup.headers.map((header) => (jsx(Th, { colSpan: header.colSpan,
|
|
235
|
+
onChange: table.getToggleAllRowsSelectedHandler() }) }), footerGroup.headers.map((header) => (jsx(Th, { padding: "0rem", colSpan: header.colSpan,
|
|
236
|
+
// styling resize and pinning start
|
|
237
|
+
maxWidth: `${header.getSize()}px`, width: `${header.getSize()}px`, left: header.column.getIsPinned()
|
|
238
|
+
? `${header.getStart("left") + SELECTION_BOX_WIDTH}px`
|
|
239
|
+
: undefined, backgroundColor: header.column.getIsPinned() ? "gray.50" : undefined, position: header.column.getIsPinned() ? "sticky" : "relative", zIndex: header.column.getIsPinned() ? 1 : 0, children: header.isPlaceholder
|
|
223
240
|
? null
|
|
224
241
|
: flexRender(header.column.columnDef.footer, header.getContext()) }, crypto.randomUUID())))] }, crypto.randomUUID()))) }));
|
|
225
242
|
};
|
|
226
243
|
|
|
227
244
|
const TableHeader = ({ canResize }) => {
|
|
228
245
|
const { table } = useDataTable();
|
|
229
|
-
|
|
246
|
+
const SELECTION_BOX_WIDTH = 32;
|
|
247
|
+
return (jsx(Thead, { children: table.getHeaderGroups().map((headerGroup) => (jsxs(Tr$1, { display: "flex", children: [jsx(Th
|
|
248
|
+
// styling resize and pinning start
|
|
249
|
+
, {
|
|
250
|
+
// styling resize and pinning start
|
|
251
|
+
padding: "0.5rem", left: `0px`, backgroundColor: "gray.50", position: "sticky", zIndex: 1, children: jsx(Checkbox, { isChecked: table.getIsAllRowsSelected(),
|
|
230
252
|
// indeterminate: table.getIsSomeRowsSelected(),
|
|
231
253
|
onChange: table.getToggleAllRowsSelectedHandler() }) }), headerGroup.headers.map((header) => {
|
|
232
254
|
const resizeProps = {
|
|
@@ -235,9 +257,17 @@ const TableHeader = ({ canResize }) => {
|
|
|
235
257
|
onTouchStart: header.getResizeHandler(),
|
|
236
258
|
cursor: "col-resize",
|
|
237
259
|
};
|
|
238
|
-
return (jsx(Th, { padding: "0rem", colSpan: header.colSpan,
|
|
260
|
+
return (jsx(Th, { padding: "0rem", colSpan: header.colSpan,
|
|
261
|
+
// styling resize and pinning start
|
|
262
|
+
maxWidth: `${header.getSize()}px`, width: `${header.getSize()}px`, left: header.column.getIsPinned()
|
|
263
|
+
? `${header.getStart("left") + SELECTION_BOX_WIDTH}px`
|
|
264
|
+
: undefined, backgroundColor: header.column.getIsPinned() ? "gray.50" : undefined, position: header.column.getIsPinned() ? "sticky" : "relative", zIndex: header.column.getIsPinned() ? 1 : 0, children: jsxs(Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", overflow: "scroll", children: [jsx(Box, { children: header.isPlaceholder
|
|
239
265
|
? null
|
|
240
|
-
: flexRender(header.column.columnDef.header, header.getContext()) }),
|
|
266
|
+
: flexRender(header.column.columnDef.header, header.getContext()) }), jsx(Button, { onClick: () => {
|
|
267
|
+
header.column.pin("left");
|
|
268
|
+
}, children: "<=" }), jsx(Button, { onClick: () => {
|
|
269
|
+
header.column.pin(false);
|
|
270
|
+
}, children: "X" }), header.column.getCanSort() && (jsxs(Fragment, { children: [jsxs(Button, { onClick: (e) => {
|
|
241
271
|
header.column.toggleSorting();
|
|
242
272
|
}, children: [header.column.getNextSortingOrder() === false && (
|
|
243
273
|
// <Text>To No sort</Text>
|
|
@@ -249,7 +279,7 @@ const TableHeader = ({ canResize }) => {
|
|
|
249
279
|
header.column.clearSorting();
|
|
250
280
|
}, children: jsx(CloseIcon, {}) }))] })), header.column.getIsFiltered() && jsx(MdFilterListAlt, {}), canResize && (jsx(Box, { borderRight: header.column.getIsResizing()
|
|
251
281
|
? "0.25rem solid black"
|
|
252
|
-
: "0.25rem solid grey", height: "
|
|
282
|
+
: "0.25rem solid grey", position: "absolute", right: "0", top: "0", height: "100%", width: "5px", userSelect: "none", style: { touchAction: "none" }, ...resizeProps }))] }) }, crypto.randomUUID()));
|
|
253
283
|
})] }, crypto.randomUUID()))) }));
|
|
254
284
|
};
|
|
255
285
|
|
|
@@ -8,6 +8,7 @@ declare const meta: {
|
|
|
8
8
|
export default meta;
|
|
9
9
|
type Story = StoryObj<typeof meta>;
|
|
10
10
|
export declare const TableView: Story;
|
|
11
|
+
export declare const TablePinningView: Story;
|
|
11
12
|
export declare const CardView: {
|
|
12
13
|
render: () => import("react/jsx-runtime").JSX.Element;
|
|
13
14
|
};
|