@popmenu/table 0.92.0 → 0.93.0
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/build/components/Table/TableProps.d.ts +2 -0
- package/build/components/TableContext/index.d.ts +15 -2
- package/build/hooks/index.d.ts +1 -0
- package/build/hooks/useStagedColumnFilters.d.ts +8 -0
- package/build/index.es.js +153 -64
- package/build/index.es.js.map +1 -1
- package/build/index.js +152 -63
- package/build/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -42,4 +42,6 @@ export interface TableProps<T = unknown> {
|
|
|
42
42
|
Empty?: () => JSX.Element;
|
|
43
43
|
/** A string used to construct ids and tags used throughout the table for tagging inner elements. ie: data-tour-id. */
|
|
44
44
|
idBase?: string;
|
|
45
|
+
/** Controls which filter should be used for the application, automatic or manual. */
|
|
46
|
+
stageFilterSelections?: boolean;
|
|
45
47
|
}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { Table } from '@tanstack/react-table';
|
|
3
|
-
export declare
|
|
2
|
+
import { ColumnFilter, Table } from '@tanstack/react-table';
|
|
3
|
+
export declare type StagedColumnFilter = {
|
|
4
|
+
update: (columnId: string, value: string | Array<string>) => void;
|
|
5
|
+
get: (columnId: string) => string | Array<string> | undefined;
|
|
6
|
+
clear: () => void;
|
|
7
|
+
delete: (columnFilter: ColumnFilter) => void;
|
|
8
|
+
exist: () => boolean;
|
|
9
|
+
};
|
|
10
|
+
declare type TabelContextValue = {
|
|
11
|
+
table: Table<any>;
|
|
12
|
+
stagedColumnFilters: StagedColumnFilter;
|
|
13
|
+
stageFilterSelections: boolean | undefined;
|
|
14
|
+
};
|
|
15
|
+
export declare const TableContext: import("react").Context<TabelContextValue>;
|
|
16
|
+
export {};
|
package/build/hooks/index.d.ts
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ColumnFilter } from '@tanstack/react-table';
|
|
2
|
+
export declare const useStagedColumnFilters: () => {
|
|
3
|
+
update: (columnId: string, value: string | Array<string>) => void;
|
|
4
|
+
get: (columnId: string) => string | string[] | undefined;
|
|
5
|
+
clear: () => void;
|
|
6
|
+
delete: (columnFilter: ColumnFilter) => void;
|
|
7
|
+
exist: () => boolean;
|
|
8
|
+
};
|
package/build/index.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import React__default, { createElement, forwardRef, createContext, useContext, useState, useRef, isValidElement } from 'react';
|
|
3
|
-
import { makeStyles, Link as Link$2, Paper as Paper$2, Typography as Typography$2, Box, FormControl, InputLabel, Select, FormControlLabel as FormControlLabel$1, Switch as Switch$2, TextField,
|
|
3
|
+
import { makeStyles, Link as Link$2, Paper as Paper$2, Typography as Typography$2, Box, FormControl, InputLabel, Select, FormControlLabel as FormControlLabel$1, Switch as Switch$2, TextField, ButtonBase, Popover, InputAdornment, useTheme as useTheme$1 } from '@material-ui/core';
|
|
4
4
|
import { Pagination } from '@material-ui/lab';
|
|
5
5
|
import { useReactTable, getCoreRowModel, getSortedRowModel, getFilteredRowModel, getPaginationRowModel, flexRender } from '@tanstack/react-table';
|
|
6
6
|
import CommonAlert from '@material-ui/lab/Alert';
|
|
@@ -1032,6 +1032,14 @@ var TableFooter = function (props) {
|
|
|
1032
1032
|
};
|
|
1033
1033
|
|
|
1034
1034
|
var useStyles$6 = makeStyles(function (theme) { return ({
|
|
1035
|
+
buttonBox: {
|
|
1036
|
+
'& > :last-child': {
|
|
1037
|
+
marginLeft: theme.spacing(2),
|
|
1038
|
+
},
|
|
1039
|
+
display: 'flex',
|
|
1040
|
+
justifyContent: 'flex-end',
|
|
1041
|
+
padding: "0px " + theme.spacing(3) + "px " + theme.spacing(3) + "px " + theme.spacing(3) + "px",
|
|
1042
|
+
},
|
|
1035
1043
|
buttonLabel: {
|
|
1036
1044
|
fontWeight: 400,
|
|
1037
1045
|
},
|
|
@@ -1077,55 +1085,55 @@ var useStyles$6 = makeStyles(function (theme) { return ({
|
|
|
1077
1085
|
},
|
|
1078
1086
|
}); });
|
|
1079
1087
|
|
|
1080
|
-
var _path$
|
|
1088
|
+
var _path$2p;
|
|
1081
1089
|
|
|
1082
|
-
function _extends$
|
|
1090
|
+
function _extends$5p() { _extends$5p = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$5p.apply(this, arguments); }
|
|
1083
1091
|
|
|
1084
1092
|
function SvgChevronDown(props) {
|
|
1085
|
-
return /*#__PURE__*/React.createElement("svg", _extends$
|
|
1093
|
+
return /*#__PURE__*/React.createElement("svg", _extends$5p({
|
|
1086
1094
|
viewBox: "0 0 16 16",
|
|
1087
1095
|
fill: "none",
|
|
1088
1096
|
strokeLinecap: "round",
|
|
1089
1097
|
strokeLinejoin: "round",
|
|
1090
1098
|
width: "1em",
|
|
1091
1099
|
height: "1em"
|
|
1092
|
-
}, props), _path$
|
|
1100
|
+
}, props), _path$2p || (_path$2p = /*#__PURE__*/React.createElement("path", {
|
|
1093
1101
|
d: "M4 6l4 4 4-4",
|
|
1094
1102
|
stroke: "currentColor"
|
|
1095
1103
|
})));
|
|
1096
1104
|
}
|
|
1097
1105
|
|
|
1098
|
-
var _path$
|
|
1106
|
+
var _path$2o;
|
|
1099
1107
|
|
|
1100
|
-
function _extends$
|
|
1108
|
+
function _extends$5o() { _extends$5o = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$5o.apply(this, arguments); }
|
|
1101
1109
|
|
|
1102
1110
|
function SvgChevronUp(props) {
|
|
1103
|
-
return /*#__PURE__*/React.createElement("svg", _extends$
|
|
1111
|
+
return /*#__PURE__*/React.createElement("svg", _extends$5o({
|
|
1104
1112
|
viewBox: "0 0 16 16",
|
|
1105
1113
|
fill: "none",
|
|
1106
1114
|
strokeLinecap: "round",
|
|
1107
1115
|
strokeLinejoin: "round",
|
|
1108
1116
|
width: "1em",
|
|
1109
1117
|
height: "1em"
|
|
1110
|
-
}, props), _path$
|
|
1118
|
+
}, props), _path$2o || (_path$2o = /*#__PURE__*/React.createElement("path", {
|
|
1111
1119
|
d: "M12 10L8 6l-4 4",
|
|
1112
1120
|
stroke: "currentColor"
|
|
1113
1121
|
})));
|
|
1114
1122
|
}
|
|
1115
1123
|
|
|
1116
|
-
var _path$
|
|
1124
|
+
var _path$2f;
|
|
1117
1125
|
|
|
1118
|
-
function _extends$
|
|
1126
|
+
function _extends$58() { _extends$58 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$58.apply(this, arguments); }
|
|
1119
1127
|
|
|
1120
1128
|
function SvgSort(props) {
|
|
1121
|
-
return /*#__PURE__*/React.createElement("svg", _extends$
|
|
1129
|
+
return /*#__PURE__*/React.createElement("svg", _extends$58({
|
|
1122
1130
|
viewBox: "0 0 16 16",
|
|
1123
1131
|
fill: "none",
|
|
1124
1132
|
strokeLinecap: "round",
|
|
1125
1133
|
strokeLinejoin: "round",
|
|
1126
1134
|
width: "1em",
|
|
1127
1135
|
height: "1em"
|
|
1128
|
-
}, props), _path$
|
|
1136
|
+
}, props), _path$2f || (_path$2f = /*#__PURE__*/React.createElement("path", {
|
|
1129
1137
|
d: "M11.333 6L8 2.667 4.667 6m6.666 4L8 13.334 4.667 10",
|
|
1130
1138
|
stroke: "currentColor"
|
|
1131
1139
|
})));
|
|
@@ -1219,30 +1227,36 @@ var SelectFilter = function (props) {
|
|
|
1219
1227
|
var _a, _b, _c;
|
|
1220
1228
|
var options = props.options, columnId = props.columnId, multiple = props.multiple;
|
|
1221
1229
|
var classes = useStyles$4();
|
|
1222
|
-
var
|
|
1223
|
-
var _d = useFilterPanelContext().anchorState, setAnchorEl = _d[1];
|
|
1230
|
+
var _d = useContext(TableContext), table = _d.table, stagedColumnFilters = _d.stagedColumnFilters, stageFilterSelections = _d.stageFilterSelections;
|
|
1224
1231
|
var _e = useState(false), open = _e[0], setOpen = _e[1];
|
|
1232
|
+
var _f = useFilterPanelContext().anchorState, setAnchorEl = _f[1];
|
|
1225
1233
|
var column = table.getColumn(columnId);
|
|
1226
1234
|
var meta = column.columnDef.meta;
|
|
1227
1235
|
var filterName = (_a = meta === null || meta === void 0 ? void 0 : meta.filter) === null || _a === void 0 ? void 0 : _a.name;
|
|
1228
|
-
var value =
|
|
1236
|
+
var value = '';
|
|
1237
|
+
if (stageFilterSelections) {
|
|
1238
|
+
value = stagedColumnFilters.get(columnId);
|
|
1239
|
+
}
|
|
1240
|
+
else {
|
|
1241
|
+
value = column.getFilterValue();
|
|
1242
|
+
}
|
|
1229
1243
|
var fallbackValue = multiple ? [] : '';
|
|
1230
1244
|
var filteredOptions = options.map(function (option) {
|
|
1231
1245
|
if (Array.isArray(value)) {
|
|
1232
1246
|
if (value.includes(option.value)) {
|
|
1233
|
-
return __assign$3(__assign$3({}, option), { hide:
|
|
1247
|
+
return __assign$3(__assign$3({}, option), { hide: !stageFilterSelections });
|
|
1234
1248
|
}
|
|
1235
1249
|
}
|
|
1236
1250
|
if (typeof value === 'string' || typeof value === 'number') {
|
|
1237
1251
|
if (value === option.value) {
|
|
1238
|
-
return __assign$3(__assign$3({}, option), { hide:
|
|
1252
|
+
return __assign$3(__assign$3({}, option), { hide: !stageFilterSelections });
|
|
1239
1253
|
}
|
|
1240
1254
|
}
|
|
1241
1255
|
return __assign$3(__assign$3({}, option), { hide: false });
|
|
1242
1256
|
});
|
|
1243
1257
|
var filteredOptionsCount = filteredOptions.filter(function (option) { return !(option === null || option === void 0 ? void 0 : option.hide); }).length;
|
|
1244
1258
|
var renderedValue = '';
|
|
1245
|
-
if (value && filteredOptions && filteredOptionsCount > 0) {
|
|
1259
|
+
if (!stageFilterSelections && value && filteredOptions && filteredOptionsCount > 0) {
|
|
1246
1260
|
if (typeof value === 'string' || typeof value === 'number') {
|
|
1247
1261
|
renderedValue = (_c = (_b = filteredOptions.find(function (option) { return option.value === value; })) === null || _b === void 0 ? void 0 : _b.label) !== null && _c !== void 0 ? _c : filterName;
|
|
1248
1262
|
}
|
|
@@ -1255,12 +1269,20 @@ var SelectFilter = function (props) {
|
|
|
1255
1269
|
}
|
|
1256
1270
|
var handleChange = function (event) {
|
|
1257
1271
|
event.stopPropagation();
|
|
1258
|
-
|
|
1259
|
-
|
|
1272
|
+
if (stageFilterSelections) {
|
|
1273
|
+
stagedColumnFilters.update(columnId, event.target.value);
|
|
1274
|
+
}
|
|
1275
|
+
else {
|
|
1276
|
+
column.setFilterValue(event.target.value);
|
|
1277
|
+
setAnchorEl(null);
|
|
1278
|
+
}
|
|
1260
1279
|
};
|
|
1261
1280
|
var handleItemClick = function () {
|
|
1262
1281
|
if (multiple) {
|
|
1263
|
-
if (filteredOptionsCount === 1) {
|
|
1282
|
+
if (!stageFilterSelections && filteredOptionsCount === 1) {
|
|
1283
|
+
setOpen(false);
|
|
1284
|
+
}
|
|
1285
|
+
else {
|
|
1264
1286
|
setOpen(false);
|
|
1265
1287
|
}
|
|
1266
1288
|
}
|
|
@@ -1268,7 +1290,7 @@ var SelectFilter = function (props) {
|
|
|
1268
1290
|
return (React__default.createElement(Box, { className: classes.selectContainer },
|
|
1269
1291
|
React__default.createElement(FormControl, { variant: "outlined", fullWidth: true },
|
|
1270
1292
|
React__default.createElement(InputLabel, { id: "select-filter-label-" + filterName }, filterName || 'filter'),
|
|
1271
|
-
React__default.createElement(Select, { variant: "outlined", open: open, onOpen: function () { return setOpen(true); }, onClose: function () { return setOpen(false); }, value: value || fallbackValue, displayEmpty: true, multiple: multiple, renderValue: function () { return React__default.createElement(Typography$1, null, renderedValue); }, label: filterName || 'filter', labelId: "select-filter-label-" + filterName, disabled: !filteredOptionsCount, IconComponent: SvgChevronDown, onChange: handleChange, fullWidth: true, classes: {
|
|
1293
|
+
React__default.createElement(Select, { variant: "outlined", open: open, onOpen: function () { return setOpen(true); }, onClose: function () { return setOpen(false); }, value: value || fallbackValue, displayEmpty: true, multiple: multiple, renderValue: stageFilterSelections ? undefined : function () { return React__default.createElement(Typography$1, null, renderedValue); }, label: filterName || 'filter', labelId: "select-filter-label-" + filterName, disabled: !filteredOptionsCount, IconComponent: SvgChevronDown, onChange: handleChange, fullWidth: true, classes: {
|
|
1272
1294
|
root: classes.selectRoot,
|
|
1273
1295
|
icon: classes.icon,
|
|
1274
1296
|
}, MenuProps: {
|
|
@@ -1288,7 +1310,7 @@ var SelectFilter = function (props) {
|
|
|
1288
1310
|
};
|
|
1289
1311
|
|
|
1290
1312
|
var ToggleFilter = function (props) {
|
|
1291
|
-
var table = useContext(TableContext);
|
|
1313
|
+
var table = useContext(TableContext).table;
|
|
1292
1314
|
var columnId = props.columnId;
|
|
1293
1315
|
var column = table.getColumn(columnId);
|
|
1294
1316
|
var meta = column.columnDef.meta;
|
|
@@ -1386,44 +1408,37 @@ function makeFormatSelectedFilterText(table) {
|
|
|
1386
1408
|
};
|
|
1387
1409
|
}
|
|
1388
1410
|
|
|
1389
|
-
var
|
|
1390
|
-
var
|
|
1391
|
-
var
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
var
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1411
|
+
var useStagedColumnFilters = function () {
|
|
1412
|
+
var _a = useState(new Map()), columnInputValues = _a[0], setColumnInputValues = _a[1];
|
|
1413
|
+
var filterState = {
|
|
1414
|
+
update: function (columnId, value) {
|
|
1415
|
+
return setColumnInputValues(columnInputValues.set(columnId, value));
|
|
1416
|
+
},
|
|
1417
|
+
get: function (columnId) { return columnInputValues.get(columnId); },
|
|
1418
|
+
clear: function () {
|
|
1419
|
+
columnInputValues.clear();
|
|
1420
|
+
setColumnInputValues(columnInputValues);
|
|
1421
|
+
},
|
|
1422
|
+
delete: function (columnFilter) {
|
|
1423
|
+
var values = columnInputValues.get(columnFilter.id);
|
|
1424
|
+
if (values && Array.isArray(values)) {
|
|
1425
|
+
var valueIndex = values.indexOf(columnFilter.value);
|
|
1426
|
+
values.splice(valueIndex, 1);
|
|
1427
|
+
if (values.length > 0) {
|
|
1428
|
+
columnInputValues.set(columnFilter.id, values);
|
|
1429
|
+
}
|
|
1430
|
+
else {
|
|
1431
|
+
columnInputValues.clear();
|
|
1432
|
+
}
|
|
1406
1433
|
}
|
|
1407
|
-
|
|
1434
|
+
else {
|
|
1435
|
+
columnInputValues.delete(columnFilter.id);
|
|
1436
|
+
}
|
|
1437
|
+
setColumnInputValues(columnInputValues);
|
|
1438
|
+
},
|
|
1439
|
+
exist: function () { return columnInputValues.size > 0; },
|
|
1408
1440
|
};
|
|
1409
|
-
|
|
1410
|
-
return (React__default.createElement(Popover, { onClick: handleClick, anchorEl: anchorEl, anchorOrigin: {
|
|
1411
|
-
vertical: 'bottom',
|
|
1412
|
-
horizontal: 'right',
|
|
1413
|
-
}, className: classes.filterPopover, onClose: onClose, open: open, PaperProps: {
|
|
1414
|
-
style: {
|
|
1415
|
-
backgroundColor: 'transparent',
|
|
1416
|
-
boxShadow: 'none',
|
|
1417
|
-
borderRadius: 0,
|
|
1418
|
-
},
|
|
1419
|
-
}, transformOrigin: {
|
|
1420
|
-
vertical: 'top',
|
|
1421
|
-
horizontal: 'right',
|
|
1422
|
-
} },
|
|
1423
|
-
React__default.createElement(Paper$1, { className: classes.filterPopoverContents, elevation: 2 },
|
|
1424
|
-
React__default.createElement(Box, __assign$3({}, { ref: paperRef }, { padding: 3 }),
|
|
1425
|
-
React__default.createElement(Typography$1, { className: classes.menuTitle }, "Filter By"),
|
|
1426
|
-
columnFilters.map(function (columnFilter, i) { return (React__default.createElement(FilterControl, __assign$3({}, columnFilter, { key: i }))); })))));
|
|
1441
|
+
return filterState;
|
|
1427
1442
|
};
|
|
1428
1443
|
|
|
1429
1444
|
/*! *****************************************************************************
|
|
@@ -3199,6 +3214,68 @@ createTheme(adminLightOptions);
|
|
|
3199
3214
|
var adminDarkOptions = __assign$1(__assign$1(__assign$1(__assign$1({ themeName: 'Admin Dark', palette: __assign$1(__assign$1(__assign$1({}, basePalette), adminDarkPalette), dataVizPalette), breakpoints: adminThemeBreakpoints, typography: adminThemeTypography, overrides: overrides }, adminDarkPlaceholder), adminThemeZIndex), adminThemeStatus), adminThemeDefaultProps);
|
|
3200
3215
|
createTheme(adminDarkOptions);
|
|
3201
3216
|
|
|
3217
|
+
var Panel = function (props) {
|
|
3218
|
+
var anchorEl = props.anchorEl, onClose = props.onClose;
|
|
3219
|
+
var classes = useStyles$6();
|
|
3220
|
+
var _a = useContext(TableContext), table = _a.table, stagedColumnFilters = _a.stagedColumnFilters, stageFilterSelections = _a.stageFilterSelections;
|
|
3221
|
+
var paperRef = useRef(null);
|
|
3222
|
+
var _b = useColumnFilters(table), columnFilters = _b.columnFilters, resetColumnFilters = _b.resetColumnFilters;
|
|
3223
|
+
var handleClick = function (e) {
|
|
3224
|
+
var _a;
|
|
3225
|
+
var rect = (_a = paperRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
3226
|
+
if (rect) {
|
|
3227
|
+
var buffer = 10;
|
|
3228
|
+
var mouseX = e.nativeEvent.x;
|
|
3229
|
+
var mouseY = e.nativeEvent.y;
|
|
3230
|
+
var xHit = rect.x - buffer < mouseX && mouseX < rect.x + rect.width + buffer;
|
|
3231
|
+
var yHit = rect.y - buffer < mouseY && mouseY < rect.y + rect.height + buffer;
|
|
3232
|
+
if (!xHit || !yHit) {
|
|
3233
|
+
onClose();
|
|
3234
|
+
}
|
|
3235
|
+
}
|
|
3236
|
+
};
|
|
3237
|
+
var handleApplyClick = function () {
|
|
3238
|
+
if (stagedColumnFilters.exist()) {
|
|
3239
|
+
columnFilters.forEach(function (columnFilter) {
|
|
3240
|
+
var columnInputValue = stagedColumnFilters.get(columnFilter.columnId);
|
|
3241
|
+
if (columnInputValue) {
|
|
3242
|
+
var column = table.getColumn(columnFilter.columnId);
|
|
3243
|
+
column.setFilterValue(columnInputValue);
|
|
3244
|
+
}
|
|
3245
|
+
});
|
|
3246
|
+
}
|
|
3247
|
+
else {
|
|
3248
|
+
resetColumnFilters();
|
|
3249
|
+
}
|
|
3250
|
+
onClose();
|
|
3251
|
+
};
|
|
3252
|
+
var handleCancelClick = function () {
|
|
3253
|
+
stagedColumnFilters.clear();
|
|
3254
|
+
onClose();
|
|
3255
|
+
};
|
|
3256
|
+
var open = Boolean(anchorEl);
|
|
3257
|
+
return (React__default.createElement(Popover, { onClick: handleClick, anchorEl: anchorEl, anchorOrigin: {
|
|
3258
|
+
vertical: 'bottom',
|
|
3259
|
+
horizontal: 'right',
|
|
3260
|
+
}, className: classes.filterPopover, onClose: onClose, open: open, PaperProps: {
|
|
3261
|
+
style: {
|
|
3262
|
+
backgroundColor: 'transparent',
|
|
3263
|
+
boxShadow: 'none',
|
|
3264
|
+
borderRadius: 0,
|
|
3265
|
+
},
|
|
3266
|
+
}, transformOrigin: {
|
|
3267
|
+
vertical: 'top',
|
|
3268
|
+
horizontal: 'right',
|
|
3269
|
+
} },
|
|
3270
|
+
React__default.createElement(Paper$1, { className: classes.filterPopoverContents, elevation: 2 },
|
|
3271
|
+
React__default.createElement(Box, __assign$3({}, { ref: paperRef }, { padding: 3 }),
|
|
3272
|
+
React__default.createElement(Typography$1, { className: classes.menuTitle }, "Filter By"),
|
|
3273
|
+
columnFilters.map(function (columnFilter, i) { return (React__default.createElement(FilterControl, __assign$3({}, columnFilter, { key: i }))); })),
|
|
3274
|
+
stageFilterSelections && (React__default.createElement(Box, { className: classes.buttonBox },
|
|
3275
|
+
React__default.createElement(Button, { variant: "secondary", onClick: handleCancelClick }, "Cancel"),
|
|
3276
|
+
React__default.createElement(Button, { onClick: handleApplyClick }, "Apply"))))));
|
|
3277
|
+
};
|
|
3278
|
+
|
|
3202
3279
|
var useStyles$3 = makeStyles({
|
|
3203
3280
|
root: {
|
|
3204
3281
|
justifySelf: 'end',
|
|
@@ -4033,7 +4110,7 @@ var defaultTableProps = {
|
|
|
4033
4110
|
searchable: false,
|
|
4034
4111
|
};
|
|
4035
4112
|
var Table = function (props) {
|
|
4036
|
-
var title = props.title, data = props.data, columns = props.columns, enableSortingRemoval = props.enableSortingRemoval, loading = props.loading, searchable = props.searchable, sortable = props.sortable, externalFilterState = props.filterState, externalGlobalFilterState = props.globalFilterState, externalPaginationState = props.paginationState, externalSortingState = props.sortingState, externalVisibilityState = props.visibilityState, paginated = props.paginated, pageCount = props.pageCount, GlobalFilterProps = props.GlobalFilterProps, Empty = props.Empty, idBase = props.idBase;
|
|
4113
|
+
var title = props.title, data = props.data, columns = props.columns, enableSortingRemoval = props.enableSortingRemoval, loading = props.loading, searchable = props.searchable, sortable = props.sortable, externalFilterState = props.filterState, externalGlobalFilterState = props.globalFilterState, externalPaginationState = props.paginationState, externalSortingState = props.sortingState, externalVisibilityState = props.visibilityState, paginated = props.paginated, pageCount = props.pageCount, GlobalFilterProps = props.GlobalFilterProps, Empty = props.Empty, idBase = props.idBase, stageFilterSelections = props.stageFilterSelections;
|
|
4037
4114
|
var classes = useStyles$7(props);
|
|
4038
4115
|
var rootRef = useRef(null);
|
|
4039
4116
|
// Prepare Empty State
|
|
@@ -4061,6 +4138,8 @@ var Table = function (props) {
|
|
|
4061
4138
|
// Init table instance
|
|
4062
4139
|
var table = useReactTable(__assign$3(__assign$3(__assign$3(__assign$3(__assign$3(__assign$3({ data: data, columns: columns, state: __assign$3(__assign$3(__assign$3(__assign$3(__assign$3({}, (isControlledPagination && { pagination: pagination })), (isControlledGlobalFilter && { globalFilter: globalFilter })), (isControlledColumnFilters && { columnFilters: columnFilters })), (isControlledColumnVisibility && { columnVisibility: columnVisibility })), (isControlledColumnSort && { sorting: sorting })), enableSorting: sortable, enableSortingRemoval: enableSortingRemoval, globalFilterFn: coercedValueIncludesString, getCoreRowModel: getCoreRowModel(), getSortedRowModel: getSortedRowModel(), getFilteredRowModel: getFilteredRowModel() }, (paginated && { getPaginationRowModel: getPaginationRowModel() })), (isControlledPagination && controlledPaginationOptions)), (isControlledGlobalFilter && controlledGlobalFilterOptions)), (isControlledColumnFilters && controlledColumnFiltersOptions)), (isControlledColumnSort && controlledColumnSortOptions)), { meta: { idBase: idBase } }));
|
|
4063
4140
|
var _f = useColumnFilters(table), selectedColumnFilters = _f.selectedColumnFilters, hasColumnFilters = _f.hasColumnFilters, deselectColumnFilter = _f.deselectColumnFilter, formatSelectedFilterText = _f.formatSelectedFilterText, resetColumnFilters = _f.resetColumnFilters;
|
|
4141
|
+
// stagedColumnFilters is only used when stageFilterSelections is enabled
|
|
4142
|
+
var stagedColumnFilters = useStagedColumnFilters();
|
|
4064
4143
|
var handlePagination = function (_e, pageNumber) {
|
|
4065
4144
|
var pageIndex = pageNumber - 1;
|
|
4066
4145
|
table.setPageIndex(pageIndex);
|
|
@@ -4069,7 +4148,7 @@ var Table = function (props) {
|
|
|
4069
4148
|
var showGlobalSearch = Boolean(searchable || isControlledGlobalFilter);
|
|
4070
4149
|
var showColumnFilter = Boolean(hasColumnFilters);
|
|
4071
4150
|
var showControls = Boolean(showTitle || showGlobalSearch || showColumnFilter);
|
|
4072
|
-
return (React__default.createElement(TableContext.Provider, { value: table },
|
|
4151
|
+
return (React__default.createElement(TableContext.Provider, { value: { table: table, stagedColumnFilters: stagedColumnFilters, stageFilterSelections: stageFilterSelections } },
|
|
4073
4152
|
React__default.createElement(Box, __assign$3({ className: classes.root }, { ref: rootRef }, { "data-table-element": "root" }, (table.getPageCount() > 1 && {
|
|
4074
4153
|
minHeight: getTableMinHeight(rootRef, table.getState().pagination.pageSize),
|
|
4075
4154
|
})),
|
|
@@ -4079,8 +4158,18 @@ var Table = function (props) {
|
|
|
4079
4158
|
showGlobalSearch && (React__default.createElement(GlobalFilter, __assign$3({}, GlobalFilterProps, { value: table.getState().globalFilter, setValue: table.setGlobalFilter }))),
|
|
4080
4159
|
showColumnFilter && React__default.createElement(FilterPanel, null)),
|
|
4081
4160
|
React__default.createElement(Box, { display: "flex", flexWrap: "wrap", gridGap: 8 },
|
|
4082
|
-
selectedColumnFilters.map(function (selectedColumnFilter, i) { return (React__default.createElement(ColumnFilterChip, { key: "selected-column-filter-chip-" + i, columnFilter: selectedColumnFilter, label: formatSelectedFilterText(selectedColumnFilter), onClick:
|
|
4083
|
-
|
|
4161
|
+
selectedColumnFilters.map(function (selectedColumnFilter, i) { return (React__default.createElement(ColumnFilterChip, { key: "selected-column-filter-chip-" + i, columnFilter: selectedColumnFilter, label: formatSelectedFilterText(selectedColumnFilter), onClick: function (columnFilter) {
|
|
4162
|
+
if (stageFilterSelections) {
|
|
4163
|
+
stagedColumnFilters.delete(columnFilter);
|
|
4164
|
+
}
|
|
4165
|
+
deselectColumnFilter(columnFilter);
|
|
4166
|
+
} })); }),
|
|
4167
|
+
selectedColumnFilters.length >= 1 && (React__default.createElement(ColumnFilterResetButton, { onClick: function () {
|
|
4168
|
+
if (stageFilterSelections) {
|
|
4169
|
+
stagedColumnFilters.clear();
|
|
4170
|
+
}
|
|
4171
|
+
resetColumnFilters();
|
|
4172
|
+
} }))))),
|
|
4084
4173
|
React__default.createElement(Box, { className: classes.tableContainer, flexGrow: loading || isEmpty ? 0 : 1 },
|
|
4085
4174
|
React__default.createElement("table", { className: classes.table },
|
|
4086
4175
|
React__default.createElement(TableHeader, null, table.getHeaderGroups().map(function (headerGroup) { return (React__default.createElement(TableHeaderRow, { key: headerGroup.id }, headerGroup.headers.map(function (header) { return (React__default.createElement(TableHeaderCell, { key: header.id, context: header.getContext() }, flexRender(header.column.columnDef.header, header.getContext()))); }))); })),
|