material-react-table 0.38.1 → 0.38.4
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/cjs/MaterialReactTable.d.ts +1 -0
- package/dist/cjs/body/MRT_EditRowModal.d.ts +1 -0
- package/dist/cjs/body/MRT_TableBodyRow.d.ts +1 -0
- package/dist/cjs/buttons/MRT_ColumnPinningButtons.d.ts +1 -0
- package/dist/cjs/buttons/MRT_EditActionButtons.d.ts +1 -0
- package/dist/cjs/buttons/MRT_FullScreenToggleButton.d.ts +1 -0
- package/dist/cjs/buttons/MRT_ShowHideColumnsButton.d.ts +1 -0
- package/dist/cjs/buttons/MRT_ToggleDensePaddingButton.d.ts +1 -0
- package/dist/cjs/buttons/MRT_ToggleFiltersButton.d.ts +1 -0
- package/dist/cjs/buttons/MRT_ToggleGlobalFilterButton.d.ts +1 -0
- package/dist/cjs/index.js +55 -24
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/inputs/MRT_EditCellTextField.d.ts +1 -0
- package/dist/cjs/inputs/MRT_GlobalFilterTextField.d.ts +1 -0
- package/dist/cjs/menus/MRT_FilterOptionMenu.d.ts +1 -0
- package/dist/cjs/menus/MRT_ShowHideColumnsMenu.d.ts +1 -0
- package/dist/cjs/table/MRT_TableRoot.d.ts +1 -0
- package/dist/esm/MaterialReactTable.d.ts +1 -0
- package/dist/esm/body/MRT_EditRowModal.d.ts +1 -0
- package/dist/esm/body/MRT_TableBodyRow.d.ts +1 -0
- package/dist/esm/buttons/MRT_ColumnPinningButtons.d.ts +1 -0
- package/dist/esm/buttons/MRT_EditActionButtons.d.ts +1 -0
- package/dist/esm/buttons/MRT_FullScreenToggleButton.d.ts +1 -0
- package/dist/esm/buttons/MRT_ShowHideColumnsButton.d.ts +1 -0
- package/dist/esm/buttons/MRT_ToggleDensePaddingButton.d.ts +1 -0
- package/dist/esm/buttons/MRT_ToggleFiltersButton.d.ts +1 -0
- package/dist/esm/buttons/MRT_ToggleGlobalFilterButton.d.ts +1 -0
- package/dist/esm/inputs/MRT_EditCellTextField.d.ts +1 -0
- package/dist/esm/inputs/MRT_GlobalFilterTextField.d.ts +1 -0
- package/dist/esm/material-react-table.esm.js +55 -24
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/menus/MRT_FilterOptionMenu.d.ts +1 -0
- package/dist/esm/menus/MRT_ShowHideColumnsMenu.d.ts +1 -0
- package/dist/esm/table/MRT_TableRoot.d.ts +1 -0
- package/dist/index.d.ts +2 -0
- package/package.json +2 -2
- package/src/MaterialReactTable.tsx +1 -0
- package/src/body/MRT_TableBody.tsx +1 -0
- package/src/body/MRT_TableBodyCellValue.tsx +10 -11
- package/src/body/MRT_TableBodyRow.tsx +14 -3
- package/src/buttons/MRT_ExpandAllButton.tsx +5 -3
- package/src/buttons/MRT_GrabHandleButton.tsx +5 -3
- package/src/footer/MRT_TableFooter.tsx +22 -2
- package/src/head/MRT_TableHeadRow.tsx +3 -1
- package/src/inputs/MRT_EditCellTextField.tsx +35 -23
- package/src/table/MRT_TablePaper.tsx +5 -3
|
@@ -288,6 +288,7 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
288
288
|
enableRowSelection?: boolean | ((row: MRT_Row<TData>) => boolean);
|
|
289
289
|
enableRowVirtualization?: boolean;
|
|
290
290
|
enableSelectAll?: boolean;
|
|
291
|
+
enableStickyFooter?: boolean;
|
|
291
292
|
enableStickyHeader?: boolean;
|
|
292
293
|
enableTableFooter?: boolean;
|
|
293
294
|
enableTableHead?: boolean;
|
package/dist/cjs/index.js
CHANGED
|
@@ -263,7 +263,9 @@ const MRT_ExpandAllButton = ({ table }) => {
|
|
|
263
263
|
: muiExpandAllButtonProps;
|
|
264
264
|
return (React__default["default"].createElement(material.Tooltip, { arrow: true, enterDelay: 1000, enterNextDelay: 1000, title: localization.expandAll },
|
|
265
265
|
React__default["default"].createElement("span", null,
|
|
266
|
-
React__default["default"].createElement(material.IconButton, Object.assign({ "aria-label": localization.expandAll, disabled: !getCanSomeRowsExpand() && !renderDetailPanel, onClick: () => toggleAllRowsExpanded(!getIsAllRowsExpanded()) }, iconButtonProps, { sx: Object.assign({ height: density === 'compact' ? '1.75rem' : '2.25rem', width: density === 'compact' ? '1.75rem' : '2.25rem', mt: density !== 'compact' ? '-0.25rem' : undefined }, iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx)
|
|
266
|
+
React__default["default"].createElement(material.IconButton, Object.assign({ "aria-label": localization.expandAll, disabled: !getCanSomeRowsExpand() && !renderDetailPanel, onClick: () => toggleAllRowsExpanded(!getIsAllRowsExpanded()) }, iconButtonProps, { sx: (theme) => (Object.assign({ height: density === 'compact' ? '1.75rem' : '2.25rem', width: density === 'compact' ? '1.75rem' : '2.25rem', mt: density !== 'compact' ? '-0.25rem' : undefined }, ((iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx) instanceof Function
|
|
267
|
+
? iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx(theme)
|
|
268
|
+
: iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx))) }),
|
|
267
269
|
React__default["default"].createElement(KeyboardDoubleArrowDownIcon, { style: {
|
|
268
270
|
transform: `rotate(${getIsAllRowsExpanded()
|
|
269
271
|
? -180
|
|
@@ -453,12 +455,14 @@ const MRT_ColumnPinningButtons = ({ column, table, }) => {
|
|
|
453
455
|
const MRT_GrabHandleButton = ({ iconButtonProps, onDragEnd, onDragStart, table, }) => {
|
|
454
456
|
const { options: { icons: { DragHandleIcon }, localization, }, } = table;
|
|
455
457
|
return (React__default["default"].createElement(material.Tooltip, { arrow: true, enterDelay: 1000, enterNextDelay: 1000, placement: "top", title: localization.move },
|
|
456
|
-
React__default["default"].createElement(material.IconButton, Object.assign({ disableRipple: true, draggable: "true", onDragStart: onDragStart, onDragEnd: onDragEnd, size: "small" }, iconButtonProps, { sx: Object.assign({ cursor: 'grab', m: 0, opacity: 0.5, p: '2px', transition: 'all 0.2s ease-in-out', '&:hover': {
|
|
458
|
+
React__default["default"].createElement(material.IconButton, Object.assign({ disableRipple: true, draggable: "true", onDragStart: onDragStart, onDragEnd: onDragEnd, size: "small" }, iconButtonProps, { sx: (theme) => (Object.assign({ cursor: 'grab', m: 0, opacity: 0.5, p: '2px', transition: 'all 0.2s ease-in-out', '&:hover': {
|
|
457
459
|
backgroundColor: 'transparent',
|
|
458
460
|
opacity: 1,
|
|
459
461
|
}, '&:active': {
|
|
460
462
|
cursor: 'grabbing',
|
|
461
|
-
} }, iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx)
|
|
463
|
+
} }, ((iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx) instanceof Function
|
|
464
|
+
? iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx(theme)
|
|
465
|
+
: iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx))) }),
|
|
462
466
|
React__default["default"].createElement(DragHandleIcon, null))));
|
|
463
467
|
};
|
|
464
468
|
|
|
@@ -1751,7 +1755,9 @@ const MRT_TableHeadRow = ({ headerGroup, table }) => {
|
|
|
1751
1755
|
const tableRowProps = muiTableHeadRowProps instanceof Function
|
|
1752
1756
|
? muiTableHeadRowProps({ headerGroup, table })
|
|
1753
1757
|
: muiTableHeadRowProps;
|
|
1754
|
-
return (React__default["default"].createElement(material.TableRow, Object.assign({}, tableRowProps, { sx: (theme) => (Object.assign({ boxShadow: `4px 0 8px ${material.alpha(theme.palette.common.black, 0.1)}`, backgroundColor: material.lighten(theme.palette.background.default, 0.04) }, tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx)
|
|
1758
|
+
return (React__default["default"].createElement(material.TableRow, Object.assign({}, tableRowProps, { sx: (theme) => (Object.assign({ boxShadow: `4px 0 8px ${material.alpha(theme.palette.common.black, 0.1)}`, backgroundColor: material.lighten(theme.palette.background.default, 0.04) }, ((tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx) instanceof Function
|
|
1759
|
+
? tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx(theme)
|
|
1760
|
+
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx))) }), headerGroup.headers.map((header, index) => (React__default["default"].createElement(MRT_TableHeadCell, { header: header, key: header.id || index, table: table })))));
|
|
1755
1761
|
};
|
|
1756
1762
|
|
|
1757
1763
|
const MRT_TableHead = ({ table }) => {
|
|
@@ -1781,33 +1787,43 @@ const MRT_EditCellTextField = ({ cell, showLabel, table, }) => {
|
|
|
1781
1787
|
})
|
|
1782
1788
|
: columnDef.muiTableBodyCellEditTextFieldProps;
|
|
1783
1789
|
const textFieldProps = Object.assign(Object.assign({}, mTableBodyCellEditTextFieldProps), mcTableBodyCellEditTextFieldProps);
|
|
1790
|
+
const saveRow = (newValue) => {
|
|
1791
|
+
if (editingRow) {
|
|
1792
|
+
setEditingRow(Object.assign(Object.assign({}, editingRow), { _valuesCache: Object.assign(Object.assign({}, editingRow._valuesCache), { [column.id]: newValue }) }));
|
|
1793
|
+
}
|
|
1794
|
+
};
|
|
1784
1795
|
const handleChange = (event) => {
|
|
1785
1796
|
var _a;
|
|
1786
1797
|
(_a = textFieldProps.onChange) === null || _a === void 0 ? void 0 : _a.call(textFieldProps, event);
|
|
1787
1798
|
setValue(event.target.value);
|
|
1788
|
-
if (
|
|
1789
|
-
|
|
1799
|
+
if (textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.select) {
|
|
1800
|
+
saveRow(event.target.value);
|
|
1790
1801
|
}
|
|
1791
1802
|
};
|
|
1792
1803
|
const handleBlur = (event) => {
|
|
1793
1804
|
var _a;
|
|
1794
1805
|
(_a = textFieldProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(textFieldProps, event);
|
|
1795
|
-
|
|
1796
|
-
setEditingRow(Object.assign(Object.assign({}, editingRow), { _valuesCache: Object.assign(Object.assign({}, editingRow._valuesCache), { [column.id]: value }) }));
|
|
1797
|
-
}
|
|
1806
|
+
saveRow(value);
|
|
1798
1807
|
setEditingCell(null);
|
|
1799
1808
|
};
|
|
1809
|
+
const handleEnterKeyDown = (event) => {
|
|
1810
|
+
var _a, _b;
|
|
1811
|
+
(_a = textFieldProps.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(textFieldProps, event);
|
|
1812
|
+
if (event.key === 'Enter') {
|
|
1813
|
+
(_b = editInputRefs.current[column.id]) === null || _b === void 0 ? void 0 : _b.blur();
|
|
1814
|
+
}
|
|
1815
|
+
};
|
|
1800
1816
|
if (columnDef.Edit) {
|
|
1801
1817
|
return React__default["default"].createElement(React__default["default"].Fragment, null, (_a = columnDef.Edit) === null || _a === void 0 ? void 0 : _a.call(columnDef, { cell, column, row, table }));
|
|
1802
1818
|
}
|
|
1803
|
-
return (React__default["default"].createElement(material.TextField, Object.assign({ disabled: columnDef.enableEditing === false, fullWidth: true,
|
|
1819
|
+
return (React__default["default"].createElement(material.TextField, Object.assign({ disabled: columnDef.enableEditing === false, fullWidth: true, inputRef: (inputRef) => {
|
|
1804
1820
|
if (inputRef) {
|
|
1805
1821
|
editInputRefs.current[column.id] = inputRef;
|
|
1806
1822
|
if (textFieldProps.inputRef) {
|
|
1807
1823
|
textFieldProps.inputRef = inputRef;
|
|
1808
1824
|
}
|
|
1809
1825
|
}
|
|
1810
|
-
}, onBlur: handleBlur, onChange: handleChange })));
|
|
1826
|
+
}, label: showLabel ? column.columnDef.header : undefined, margin: "none", name: column.id, onClick: (e) => e.stopPropagation(), placeholder: columnDef.header, value: value, variant: "standard" }, textFieldProps, { onBlur: handleBlur, onChange: handleChange, onKeyDown: handleEnterKeyDown })));
|
|
1811
1827
|
};
|
|
1812
1828
|
|
|
1813
1829
|
const MRT_CopyButton = ({ cell, children, table, }) => {
|
|
@@ -1859,11 +1875,11 @@ const MRT_TableBodyRowGrabHandle = ({ cell, rowRef, table, }) => {
|
|
|
1859
1875
|
};
|
|
1860
1876
|
|
|
1861
1877
|
const MRT_TableBodyCellValue = ({ cell, table }) => {
|
|
1862
|
-
var _a, _b
|
|
1878
|
+
var _a, _b;
|
|
1863
1879
|
const { column, row } = cell;
|
|
1864
1880
|
const { columnDef } = column;
|
|
1865
|
-
return (React__default["default"].createElement(React__default["default"].Fragment, null, cell.getIsAggregated() &&
|
|
1866
|
-
?
|
|
1881
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null, cell.getIsAggregated() && columnDef.AggregatedCell
|
|
1882
|
+
? columnDef.AggregatedCell({
|
|
1867
1883
|
cell,
|
|
1868
1884
|
column,
|
|
1869
1885
|
row,
|
|
@@ -1871,14 +1887,14 @@ const MRT_TableBodyCellValue = ({ cell, table }) => {
|
|
|
1871
1887
|
})
|
|
1872
1888
|
: row.getIsGrouped() && !cell.getIsGrouped()
|
|
1873
1889
|
? null
|
|
1874
|
-
:
|
|
1875
|
-
|
|
1890
|
+
: cell.getIsGrouped() && columnDef.GroupedCell
|
|
1891
|
+
? columnDef.GroupedCell({
|
|
1876
1892
|
cell,
|
|
1877
1893
|
column,
|
|
1878
1894
|
row,
|
|
1879
1895
|
table,
|
|
1880
|
-
})
|
|
1881
|
-
(
|
|
1896
|
+
})
|
|
1897
|
+
: (_b = (_a = columnDef === null || columnDef === void 0 ? void 0 : columnDef.Cell) === null || _a === void 0 ? void 0 : _a.call(columnDef, { cell, column, row, table })) !== null && _b !== void 0 ? _b : cell.renderValue()));
|
|
1882
1898
|
};
|
|
1883
1899
|
|
|
1884
1900
|
const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
|
|
@@ -2034,7 +2050,7 @@ const MRT_TableDetailPanel = ({ row, table }) => {
|
|
|
2034
2050
|
: tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx))) }), renderDetailPanel && (React__default["default"].createElement(material.Collapse, { in: row.getIsExpanded() }, renderDetailPanel({ row, table }))))));
|
|
2035
2051
|
};
|
|
2036
2052
|
|
|
2037
|
-
const MRT_TableBodyRow = ({ row, rowIndex, table }) => {
|
|
2053
|
+
const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
|
|
2038
2054
|
var _a, _b;
|
|
2039
2055
|
const theme = material.useTheme();
|
|
2040
2056
|
const { getIsSomeColumnsPinned, getState, options: { enableRowOrdering, muiTableBodyRowProps, renderDetailPanel }, setHoveredRow, } = table;
|
|
@@ -2059,7 +2075,12 @@ const MRT_TableBodyRow = ({ row, rowIndex, table }) => {
|
|
|
2059
2075
|
}
|
|
2060
2076
|
: undefined;
|
|
2061
2077
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
2062
|
-
React__default["default"].createElement(material.TableRow, Object.assign({ onDragEnter: handleDragEnter, hover: true, selected: row.getIsSelected(), ref:
|
|
2078
|
+
React__default["default"].createElement(material.TableRow, Object.assign({ onDragEnter: handleDragEnter, hover: true, selected: row.getIsSelected(), ref: (node) => {
|
|
2079
|
+
rowRef.current = node;
|
|
2080
|
+
if (virtualRow === null || virtualRow === void 0 ? void 0 : virtualRow.measureRef) {
|
|
2081
|
+
virtualRow.measureRef = node;
|
|
2082
|
+
}
|
|
2083
|
+
} }, tableRowProps, { sx: (theme) => (Object.assign(Object.assign({ backgroundColor: material.lighten(theme.palette.background.default, 0.06), opacity: (draggingRow === null || draggingRow === void 0 ? void 0 : draggingRow.id) === row.id || (hoveredRow === null || hoveredRow === void 0 ? void 0 : hoveredRow.id) === row.id ? 0.5 : 1, transition: 'all 0.2s ease-in-out', '&:hover td': {
|
|
2063
2084
|
backgroundColor: (tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.hover) !== false && getIsSomeColumnsPinned()
|
|
2064
2085
|
? theme.palette.mode === 'dark'
|
|
2065
2086
|
? `${material.lighten(theme.palette.background.default, 0.12)}`
|
|
@@ -2139,7 +2160,7 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
|
2139
2160
|
const row = enableRowVirtualization
|
|
2140
2161
|
? rows[rowOrVirtualRow.index]
|
|
2141
2162
|
: rowOrVirtualRow;
|
|
2142
|
-
return (React__default["default"].createElement(MRT_TableBodyRow, { key: row.id, row: row, rowIndex: enableRowVirtualization ? rowOrVirtualRow.index : rowIndex, table: table }));
|
|
2163
|
+
return (React__default["default"].createElement(MRT_TableBodyRow, { key: row.id, row: row, rowIndex: enableRowVirtualization ? rowOrVirtualRow.index : rowIndex, table: table, virtualRow: enableRowVirtualization ? rowOrVirtualRow : null }));
|
|
2143
2164
|
}),
|
|
2144
2165
|
enableRowVirtualization && paddingBottom > 0 && (React__default["default"].createElement("tr", null,
|
|
2145
2166
|
React__default["default"].createElement("td", { style: { height: `${paddingBottom}px` } })))));
|
|
@@ -2192,11 +2213,19 @@ const MRT_TableFooterRow = ({ footerGroup, table }) => {
|
|
|
2192
2213
|
};
|
|
2193
2214
|
|
|
2194
2215
|
const MRT_TableFooter = ({ table }) => {
|
|
2195
|
-
const { getFooterGroups, options: { muiTableFooterProps }, } = table;
|
|
2216
|
+
const { getFooterGroups, getState, options: { enableStickyFooter, muiTableFooterProps }, } = table;
|
|
2217
|
+
const { isFullScreen } = getState();
|
|
2196
2218
|
const tableFooterProps = muiTableFooterProps instanceof Function
|
|
2197
2219
|
? muiTableFooterProps({ table })
|
|
2198
2220
|
: muiTableFooterProps;
|
|
2199
|
-
|
|
2221
|
+
const stickFooter = (isFullScreen || enableStickyFooter) && enableStickyFooter !== false;
|
|
2222
|
+
return (React__default["default"].createElement(material.TableFooter, Object.assign({}, tableFooterProps, { sx: (theme) => (Object.assign({ position: stickFooter ? 'sticky' : undefined, bottom: stickFooter ? 0 : undefined, opacity: stickFooter ? 0.95 : undefined, outline: stickFooter
|
|
2223
|
+
? theme.palette.mode === 'light'
|
|
2224
|
+
? `1px solid ${theme.palette.grey[300]}`
|
|
2225
|
+
: `1px solid ${theme.palette.grey[700]}`
|
|
2226
|
+
: undefined }, ((tableFooterProps === null || tableFooterProps === void 0 ? void 0 : tableFooterProps.sx) instanceof Function
|
|
2227
|
+
? tableFooterProps === null || tableFooterProps === void 0 ? void 0 : tableFooterProps.sx(theme)
|
|
2228
|
+
: tableFooterProps === null || tableFooterProps === void 0 ? void 0 : tableFooterProps.sx))) }), getFooterGroups().map((footerGroup) => (React__default["default"].createElement(MRT_TableFooterRow, { footerGroup: footerGroup, key: footerGroup.id, table: table })))));
|
|
2200
2229
|
};
|
|
2201
2230
|
|
|
2202
2231
|
const MRT_Table = ({ tableContainerRef, table }) => {
|
|
@@ -2263,7 +2292,9 @@ const MRT_TablePaper = ({ table }) => {
|
|
|
2263
2292
|
const tablePaperProps = muiTablePaperProps instanceof Function
|
|
2264
2293
|
? muiTablePaperProps({ table })
|
|
2265
2294
|
: muiTablePaperProps;
|
|
2266
|
-
return (React__default["default"].createElement(material.Paper, Object.assign({ elevation: 2 }, tablePaperProps, { sx: Object.assign({ transition: 'all 0.2s ease-in-out' },
|
|
2295
|
+
return (React__default["default"].createElement(material.Paper, Object.assign({ elevation: 2 }, tablePaperProps, { sx: (theme) => (Object.assign({ transition: 'all 0.2s ease-in-out' }, ((tablePaperProps === null || tablePaperProps === void 0 ? void 0 : tablePaperProps.sx) instanceof Function
|
|
2296
|
+
? tablePaperProps === null || tablePaperProps === void 0 ? void 0 : tablePaperProps.sx(theme)
|
|
2297
|
+
: tablePaperProps === null || tablePaperProps === void 0 ? void 0 : tablePaperProps.sx))), style: Object.assign(Object.assign({}, tablePaperProps === null || tablePaperProps === void 0 ? void 0 : tablePaperProps.style), { height: isFullScreen ? '100vh' : undefined, margin: isFullScreen ? '0' : undefined, maxHeight: isFullScreen ? '100vh' : undefined, maxWidth: isFullScreen ? '100vw' : undefined, padding: isFullScreen ? '0' : undefined, width: isFullScreen ? '100vw' : undefined }) }),
|
|
2267
2298
|
enableTopToolbar && React__default["default"].createElement(MRT_TopToolbar, { table: table }),
|
|
2268
2299
|
React__default["default"].createElement(MRT_TableContainer, { table: table }),
|
|
2269
2300
|
enableBottomToolbar && React__default["default"].createElement(MRT_BottomToolbar, { table: table })));
|