material-react-table 1.0.0-beta.11 → 1.0.0-beta.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/cjs/MaterialReactTable.d.ts +15 -4
- package/dist/cjs/index.js +51 -10
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/inputs/MRT_FilterCheckbox.d.ts +8 -0
- package/dist/cjs/table/MRT_TableRoot.d.ts +4 -0
- package/dist/esm/MaterialReactTable.d.ts +15 -4
- package/dist/esm/inputs/MRT_FilterCheckbox.d.ts +8 -0
- package/dist/esm/material-react-table.esm.js +51 -10
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/table/MRT_TableRoot.d.ts +4 -0
- package/dist/index.d.ts +16 -5
- package/{dist → locales}/en.cjs +0 -0
- package/{dist → locales}/en.cjs.d.ts +0 -0
- package/{dist → locales}/en.cjs.map +0 -0
- package/{dist → locales}/en.esm.d.ts +0 -0
- package/{dist → locales}/en.esm.js +0 -0
- package/{dist → locales}/en.esm.js.map +0 -0
- package/package.json +3 -2
- package/src/MaterialReactTable.tsx +26 -2
- package/src/body/MRT_TableBodyCell.tsx +1 -1
- package/src/column.utils.ts +5 -1
- package/src/head/MRT_TableHeadCellFilterContainer.tsx +7 -3
- package/src/inputs/MRT_FilterCheckbox.tsx +96 -0
- package/src/inputs/MRT_FilterTextField.tsx +13 -10
|
@@ -186,9 +186,10 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
|
|
|
186
186
|
row: MRT_Row<TData>;
|
|
187
187
|
table: MRT_TableInstance<TData>;
|
|
188
188
|
}) => ReactNode;
|
|
189
|
-
Filter?: ({ column, header, table, }: {
|
|
189
|
+
Filter?: ({ column, header, rangeFilterIndex, table, }: {
|
|
190
190
|
column: MRT_Column<TData>;
|
|
191
191
|
header: MRT_Header<TData>;
|
|
192
|
+
rangeFilterIndex?: number;
|
|
192
193
|
table: MRT_TableInstance<TData>;
|
|
193
194
|
}) => ReactNode;
|
|
194
195
|
Footer?: ReactNode | (({ column, footer, table, }: {
|
|
@@ -245,7 +246,7 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
|
|
|
245
246
|
text: string;
|
|
246
247
|
value: any;
|
|
247
248
|
})[];
|
|
248
|
-
filterVariant?: 'text' | 'select' | 'multi-select' | 'range';
|
|
249
|
+
filterVariant?: 'text' | 'select' | 'multi-select' | 'range' | 'checkbox';
|
|
249
250
|
/**
|
|
250
251
|
* footer must be a string. If you want custom JSX to render the footer, you can also specify a `Footer` option. (Capital F)
|
|
251
252
|
*/
|
|
@@ -276,9 +277,11 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
|
|
|
276
277
|
row: MRT_Row<TData>;
|
|
277
278
|
table: MRT_TableInstance<TData>;
|
|
278
279
|
}) => TextFieldProps);
|
|
279
|
-
muiTableBodyCellProps?: TableCellProps | (({ cell, table, }: {
|
|
280
|
-
table: MRT_TableInstance<TData>;
|
|
280
|
+
muiTableBodyCellProps?: TableCellProps | (({ cell, column, row, table, }: {
|
|
281
281
|
cell: MRT_Cell<TData>;
|
|
282
|
+
column: MRT_Column<TData>;
|
|
283
|
+
row: MRT_Row<TData>;
|
|
284
|
+
table: MRT_TableInstance<TData>;
|
|
282
285
|
}) => TableCellProps);
|
|
283
286
|
muiTableFooterCellProps?: TableCellProps | (({ table, column, }: {
|
|
284
287
|
table: MRT_TableInstance<TData>;
|
|
@@ -292,6 +295,10 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
|
|
|
292
295
|
table: MRT_TableInstance<TData>;
|
|
293
296
|
column: MRT_Column<TData>;
|
|
294
297
|
}) => IconButtonProps);
|
|
298
|
+
muiTableHeadCellFilterCheckboxProps?: CheckboxProps | (({ column, table, }: {
|
|
299
|
+
column: MRT_Column<TData>;
|
|
300
|
+
table: MRT_TableInstance<TData>;
|
|
301
|
+
}) => CheckboxProps);
|
|
295
302
|
muiTableHeadCellFilterTextFieldProps?: TextFieldProps | (({ table, column, rangeFilterIndex, }: {
|
|
296
303
|
table: MRT_TableInstance<TData>;
|
|
297
304
|
column: MRT_Column<TData>;
|
|
@@ -488,6 +495,10 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
488
495
|
table: MRT_TableInstance<TData>;
|
|
489
496
|
column: MRT_Column<TData>;
|
|
490
497
|
}) => IconButtonProps);
|
|
498
|
+
muiTableHeadCellFilterCheckboxProps?: CheckboxProps | (({ column, table, }: {
|
|
499
|
+
column: MRT_Column<TData>;
|
|
500
|
+
table: MRT_TableInstance<TData>;
|
|
501
|
+
}) => CheckboxProps);
|
|
491
502
|
muiTableHeadCellFilterTextFieldProps?: TextFieldProps | (({ table, column, rangeFilterIndex, }: {
|
|
492
503
|
table: MRT_TableInstance<TData>;
|
|
493
504
|
column: MRT_Column<TData>;
|
package/dist/cjs/index.js
CHANGED
|
@@ -599,10 +599,11 @@ const getDefaultColumnOrderIds = (props) => [
|
|
|
599
599
|
const getDefaultColumnFilterFn = (columnDef) => {
|
|
600
600
|
if (columnDef.filterVariant === 'multi-select')
|
|
601
601
|
return 'arrIncludesSome';
|
|
602
|
-
if (columnDef.filterVariant === 'select')
|
|
603
|
-
return 'equals';
|
|
604
602
|
if (columnDef.filterVariant === 'range')
|
|
605
603
|
return 'betweenInclusive';
|
|
604
|
+
if (columnDef.filterVariant === 'select' ||
|
|
605
|
+
columnDef.filterVariant === 'checkbox')
|
|
606
|
+
return 'equals';
|
|
606
607
|
return 'fuzzy';
|
|
607
608
|
};
|
|
608
609
|
const getIsLastLeftPinnedColumn = (table, column) => {
|
|
@@ -1465,8 +1466,10 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
|
|
|
1465
1466
|
});
|
|
1466
1467
|
const handleChangeDebounced = React.useCallback(material.debounce((event) => {
|
|
1467
1468
|
let value = textFieldProps.type === 'date'
|
|
1468
|
-
?
|
|
1469
|
-
:
|
|
1469
|
+
? event.target.valueAsDate
|
|
1470
|
+
: textFieldProps.type === 'number'
|
|
1471
|
+
? event.target.valueAsNumber
|
|
1472
|
+
: event.target.value;
|
|
1470
1473
|
if (isRangeFilter) {
|
|
1471
1474
|
column.setFilterValue((old) => {
|
|
1472
1475
|
const newFilterValues = old !== null && old !== void 0 ? old : ['', ''];
|
|
@@ -1514,7 +1517,7 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
|
|
|
1514
1517
|
}
|
|
1515
1518
|
}, [column.getFilterValue()]);
|
|
1516
1519
|
if (columnDef.Filter) {
|
|
1517
|
-
return React__default["default"].createElement(React__default["default"].Fragment, null, (_e = columnDef.Filter) === null || _e === void 0 ? void 0 : _e.call(columnDef, { column, header, table }));
|
|
1520
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null, (_e = columnDef.Filter) === null || _e === void 0 ? void 0 : _e.call(columnDef, { column, header, rangeFilterIndex, table })));
|
|
1518
1521
|
}
|
|
1519
1522
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
1520
1523
|
React__default["default"].createElement(material.TextField, Object.assign({ fullWidth: true, inputProps: {
|
|
@@ -1529,7 +1532,7 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
|
|
|
1529
1532
|
localization[`filter${((_f = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt(0)) === null || _f === void 0 ? void 0 : _f.toUpperCase()) +
|
|
1530
1533
|
(currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.slice(1))}`]))) : null, FormHelperTextProps: {
|
|
1531
1534
|
sx: {
|
|
1532
|
-
fontSize: '0.
|
|
1535
|
+
fontSize: '0.75rem',
|
|
1533
1536
|
lineHeight: '0.8rem',
|
|
1534
1537
|
whiteSpace: 'nowrap',
|
|
1535
1538
|
},
|
|
@@ -1570,8 +1573,8 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
|
|
|
1570
1573
|
if (textFieldProps.inputRef) {
|
|
1571
1574
|
textFieldProps.inputRef = inputRef;
|
|
1572
1575
|
}
|
|
1573
|
-
}, sx: (theme) => (Object.assign({ p: 0, minWidth:
|
|
1574
|
-
? '
|
|
1576
|
+
}, sx: (theme) => (Object.assign({ p: 0, minWidth: isRangeFilter
|
|
1577
|
+
? '100px'
|
|
1575
1578
|
: !filterChipLabel
|
|
1576
1579
|
? '120px'
|
|
1577
1580
|
: 'auto', width: '100%', '& .MuiSelect-icon': {
|
|
@@ -1611,12 +1614,50 @@ const MRT_FilterRangeFields = ({ header, table }) => {
|
|
|
1611
1614
|
React__default["default"].createElement(MRT_FilterTextField, { header: header, rangeFilterIndex: 1, table: table })));
|
|
1612
1615
|
};
|
|
1613
1616
|
|
|
1617
|
+
const MRT_FilterCheckbox = ({ column, table }) => {
|
|
1618
|
+
var _a, _b, _c;
|
|
1619
|
+
const { getState, options: { localization, muiTableHeadCellFilterCheckboxProps }, } = table;
|
|
1620
|
+
const { density } = getState();
|
|
1621
|
+
const { columnDef } = column;
|
|
1622
|
+
const mTableHeadCellFilterCheckboxProps = muiTableHeadCellFilterCheckboxProps instanceof Function
|
|
1623
|
+
? muiTableHeadCellFilterCheckboxProps({
|
|
1624
|
+
column,
|
|
1625
|
+
table,
|
|
1626
|
+
})
|
|
1627
|
+
: muiTableHeadCellFilterCheckboxProps;
|
|
1628
|
+
const mcTableHeadCellFilterCheckboxProps = columnDef.muiTableHeadCellFilterCheckboxProps instanceof Function
|
|
1629
|
+
? columnDef.muiTableHeadCellFilterCheckboxProps({
|
|
1630
|
+
column,
|
|
1631
|
+
table,
|
|
1632
|
+
})
|
|
1633
|
+
: columnDef.muiTableHeadCellFilterCheckboxProps;
|
|
1634
|
+
const checkboxProps = Object.assign(Object.assign({}, mTableHeadCellFilterCheckboxProps), mcTableHeadCellFilterCheckboxProps);
|
|
1635
|
+
const filterLabel = (_a = localization.filterByColumn) === null || _a === void 0 ? void 0 : _a.replace('{column}', columnDef.header);
|
|
1636
|
+
return (React__default["default"].createElement(material.Tooltip, { arrow: true, enterDelay: 1000, enterNextDelay: 1000, title: (_b = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.title) !== null && _b !== void 0 ? _b : filterLabel },
|
|
1637
|
+
React__default["default"].createElement(material.FormControlLabel, { control: React__default["default"].createElement(material.Checkbox, Object.assign({ checked: column.getFilterValue() === 'true', indeterminate: column.getFilterValue() === undefined, color: column.getFilterValue() === undefined ? 'default' : 'primary', size: density === 'compact' ? 'small' : 'medium' }, checkboxProps, { onClick: (e) => {
|
|
1638
|
+
var _a;
|
|
1639
|
+
e.stopPropagation();
|
|
1640
|
+
(_a = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.onClick) === null || _a === void 0 ? void 0 : _a.call(checkboxProps, e);
|
|
1641
|
+
}, onChange: (e, checked) => {
|
|
1642
|
+
var _a;
|
|
1643
|
+
column.setFilterValue(column.getFilterValue() === undefined
|
|
1644
|
+
? 'true'
|
|
1645
|
+
: column.getFilterValue() === 'true'
|
|
1646
|
+
? 'false'
|
|
1647
|
+
: undefined);
|
|
1648
|
+
(_a = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.onChange) === null || _a === void 0 ? void 0 : _a.call(checkboxProps, e, checked);
|
|
1649
|
+
}, sx: (theme) => (Object.assign({ height: '2.5rem', width: '2.5rem' }, ((checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.sx) instanceof Function
|
|
1650
|
+
? checkboxProps.sx(theme)
|
|
1651
|
+
: checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.sx))) })), disableTypography: true, label: (_c = checkboxProps.title) !== null && _c !== void 0 ? _c : filterLabel, sx: { color: 'text.secondary', mt: '-4px', fontWeight: 'normal' }, title: undefined })));
|
|
1652
|
+
};
|
|
1653
|
+
|
|
1614
1654
|
const MRT_TableHeadCellFilterContainer = ({ header, table, }) => {
|
|
1615
1655
|
const { getState } = table;
|
|
1616
1656
|
const { showColumnFilters } = getState();
|
|
1617
1657
|
const { column } = header;
|
|
1618
1658
|
const { columnDef } = column;
|
|
1619
|
-
return (React__default["default"].createElement(material.Collapse, { in: showColumnFilters, mountOnEnter: true, unmountOnExit: true },
|
|
1659
|
+
return (React__default["default"].createElement(material.Collapse, { in: showColumnFilters, mountOnEnter: true, unmountOnExit: true }, columnDef.filterVariant === 'checkbox' ? (React__default["default"].createElement(MRT_FilterCheckbox, { column: column, table: table })) : columnDef.filterVariant === 'range' ||
|
|
1660
|
+
['between', 'betweenInclusive', 'inNumberRange'].includes(columnDef._filterFn) ? (React__default["default"].createElement(MRT_FilterRangeFields, { header: header, table: table })) : (React__default["default"].createElement(MRT_FilterTextField, { header: header, table: table }))));
|
|
1620
1661
|
};
|
|
1621
1662
|
|
|
1622
1663
|
const MRT_TableHeadCellFilterLabel = ({ header, table }) => {
|
|
@@ -2020,7 +2061,7 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
|
|
|
2020
2061
|
? muiTableBodyCellProps({ cell, column, row, table })
|
|
2021
2062
|
: muiTableBodyCellProps;
|
|
2022
2063
|
const mcTableCellBodyProps = columnDef.muiTableBodyCellProps instanceof Function
|
|
2023
|
-
? columnDef.muiTableBodyCellProps({ cell, table })
|
|
2064
|
+
? columnDef.muiTableBodyCellProps({ cell, column, row, table })
|
|
2024
2065
|
: columnDef.muiTableBodyCellProps;
|
|
2025
2066
|
const tableCellProps = Object.assign(Object.assign({}, mTableCellBodyProps), mcTableCellBodyProps);
|
|
2026
2067
|
const skeletonProps = muiTableBodyCellSkeletonProps instanceof Function
|