material-react-table 1.0.0-beta.12 → 1.0.0-beta.15
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 +11 -2
- package/dist/cjs/index.js +50 -9
- 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 +11 -2
- package/dist/esm/inputs/MRT_FilterCheckbox.d.ts +8 -0
- package/dist/esm/material-react-table.esm.js +50 -9
- 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 +12 -3
- package/{dist/en.cjs.d.ts → locales/en.d.ts} +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/{dist/en.cjs → locales/en.js} +1 -1
- package/locales/en.js.map +1 -0
- package/package.json +3 -2
- package/src/MaterialReactTable.tsx +21 -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
- package/dist/en.cjs.map +0 -1
|
@@ -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
|
*/
|
|
@@ -294,6 +295,10 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
|
|
|
294
295
|
table: MRT_TableInstance<TData>;
|
|
295
296
|
column: MRT_Column<TData>;
|
|
296
297
|
}) => IconButtonProps);
|
|
298
|
+
muiTableHeadCellFilterCheckboxProps?: CheckboxProps | (({ column, table, }: {
|
|
299
|
+
column: MRT_Column<TData>;
|
|
300
|
+
table: MRT_TableInstance<TData>;
|
|
301
|
+
}) => CheckboxProps);
|
|
297
302
|
muiTableHeadCellFilterTextFieldProps?: TextFieldProps | (({ table, column, rangeFilterIndex, }: {
|
|
298
303
|
table: MRT_TableInstance<TData>;
|
|
299
304
|
column: MRT_Column<TData>;
|
|
@@ -490,6 +495,10 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
490
495
|
table: MRT_TableInstance<TData>;
|
|
491
496
|
column: MRT_Column<TData>;
|
|
492
497
|
}) => IconButtonProps);
|
|
498
|
+
muiTableHeadCellFilterCheckboxProps?: CheckboxProps | (({ column, table, }: {
|
|
499
|
+
column: MRT_Column<TData>;
|
|
500
|
+
table: MRT_TableInstance<TData>;
|
|
501
|
+
}) => CheckboxProps);
|
|
493
502
|
muiTableHeadCellFilterTextFieldProps?: TextFieldProps | (({ table, column, rangeFilterIndex, }: {
|
|
494
503
|
table: MRT_TableInstance<TData>;
|
|
495
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 }) => {
|