@popmenu/table 0.92.0 → 0.94.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/index.js CHANGED
@@ -820,7 +820,7 @@ Link$1.defaultProps = {
820
820
  };
821
821
  Link$1.displayName = 'Link';
822
822
 
823
- var useStyles$8 = core.makeStyles(function (_a) {
823
+ var useStyles$4$2 = core.makeStyles(function (_a) {
824
824
  var spacing = _a.spacing;
825
825
  return ({
826
826
  root: {
@@ -834,7 +834,7 @@ var useStyles$8 = core.makeStyles(function (_a) {
834
834
  });
835
835
  var Paper$1 = React.forwardRef(function (props, ref) {
836
836
  var legacyStyles = props.legacyStyles, restProps = __rest$2(props, ["legacyStyles"]);
837
- var classes = useStyles$8(props);
837
+ var classes = useStyles$4$2(props);
838
838
  return React__default['default'].createElement(core.Paper, __assign$2({}, ref, { classes: __assign$2({}, (legacyStyles && classes)) }, restProps));
839
839
  });
840
840
  Paper$1.displayName = 'Paper';
@@ -987,6 +987,45 @@ core.makeStyles(function (theme) { return ({
987
987
  },
988
988
  }); });
989
989
 
990
+ core.makeStyles(function () { return ({
991
+ root: {
992
+ display: 'flex',
993
+ flexDirection: 'column',
994
+ alignItems: 'center',
995
+ gridGap: 16,
996
+ },
997
+ }); });
998
+
999
+ var FollowerAuthenticationDialogContext$1 = React.createContext(null);
1000
+ FollowerAuthenticationDialogContext$1.Provider;
1001
+
1002
+ core.makeStyles(function () { return ({
1003
+ form: {
1004
+ display: 'flex',
1005
+ flexDirection: 'column',
1006
+ alignItems: 'center',
1007
+ width: '100%',
1008
+ gridGap: 16,
1009
+ },
1010
+ }); });
1011
+
1012
+ core.makeStyles(function () { return ({
1013
+ main: {
1014
+ width: '100%',
1015
+ display: 'flex',
1016
+ flexDirection: 'column',
1017
+ gridGap: 16,
1018
+ },
1019
+ }); });
1020
+
1021
+ core.makeStyles(function () { return ({
1022
+ root: {
1023
+ position: 'absolute',
1024
+ top: 0,
1025
+ right: 0,
1026
+ },
1027
+ }); });
1028
+
990
1029
  var useTableRowStyles = core.makeStyles(function (theme) { return ({
991
1030
  root: function () { return ({
992
1031
  '&:nth-child(even)': {
@@ -1049,7 +1088,7 @@ var TableBody = function (props) {
1049
1088
  return React__default['default'].createElement("tbody", __assign$3({}, restProps), children);
1050
1089
  };
1051
1090
 
1052
- var useStyles$7 = core.makeStyles(function (_a) {
1091
+ var useStyles$6 = core.makeStyles(function (_a) {
1053
1092
  var typography = _a.typography;
1054
1093
  return ({
1055
1094
  root: function (_a) {
@@ -1080,7 +1119,15 @@ var TableFooter = function (props) {
1080
1119
  return (React__default['default'].createElement(core.Box, { display: "flex", justifyContent: "center", alignItems: "end", paddingTop: 3, paddingBottom: 4 }, props.children));
1081
1120
  };
1082
1121
 
1083
- var useStyles$6 = core.makeStyles(function (theme) { return ({
1122
+ var useStyles$5 = core.makeStyles(function (theme) { return ({
1123
+ buttonBox: {
1124
+ '& > :last-child': {
1125
+ marginLeft: theme.spacing(2),
1126
+ },
1127
+ display: 'flex',
1128
+ justifyContent: 'flex-end',
1129
+ padding: "0px " + theme.spacing(3) + "px " + theme.spacing(3) + "px " + theme.spacing(3) + "px",
1130
+ },
1084
1131
  buttonLabel: {
1085
1132
  fontWeight: 400,
1086
1133
  },
@@ -1126,55 +1173,55 @@ var useStyles$6 = core.makeStyles(function (theme) { return ({
1126
1173
  },
1127
1174
  }); });
1128
1175
 
1129
- var _path$2o;
1176
+ var _path$2p;
1130
1177
 
1131
- 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); }
1178
+ 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); }
1132
1179
 
1133
1180
  function SvgChevronDown(props) {
1134
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$5o({
1181
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$5p({
1135
1182
  viewBox: "0 0 16 16",
1136
1183
  fill: "none",
1137
1184
  strokeLinecap: "round",
1138
1185
  strokeLinejoin: "round",
1139
1186
  width: "1em",
1140
1187
  height: "1em"
1141
- }, props), _path$2o || (_path$2o = /*#__PURE__*/React__namespace.createElement("path", {
1188
+ }, props), _path$2p || (_path$2p = /*#__PURE__*/React__namespace.createElement("path", {
1142
1189
  d: "M4 6l4 4 4-4",
1143
1190
  stroke: "currentColor"
1144
1191
  })));
1145
1192
  }
1146
1193
 
1147
- var _path$2n;
1194
+ var _path$2o;
1148
1195
 
1149
- function _extends$5n() { _extends$5n = 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$5n.apply(this, arguments); }
1196
+ 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); }
1150
1197
 
1151
1198
  function SvgChevronUp(props) {
1152
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$5n({
1199
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$5o({
1153
1200
  viewBox: "0 0 16 16",
1154
1201
  fill: "none",
1155
1202
  strokeLinecap: "round",
1156
1203
  strokeLinejoin: "round",
1157
1204
  width: "1em",
1158
1205
  height: "1em"
1159
- }, props), _path$2n || (_path$2n = /*#__PURE__*/React__namespace.createElement("path", {
1206
+ }, props), _path$2o || (_path$2o = /*#__PURE__*/React__namespace.createElement("path", {
1160
1207
  d: "M12 10L8 6l-4 4",
1161
1208
  stroke: "currentColor"
1162
1209
  })));
1163
1210
  }
1164
1211
 
1165
- var _path$2e;
1212
+ var _path$2f;
1166
1213
 
1167
- function _extends$57() { _extends$57 = 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$57.apply(this, arguments); }
1214
+ 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); }
1168
1215
 
1169
1216
  function SvgSort(props) {
1170
- return /*#__PURE__*/React__namespace.createElement("svg", _extends$57({
1217
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$58({
1171
1218
  viewBox: "0 0 16 16",
1172
1219
  fill: "none",
1173
1220
  strokeLinecap: "round",
1174
1221
  strokeLinejoin: "round",
1175
1222
  width: "1em",
1176
1223
  height: "1em"
1177
- }, props), _path$2e || (_path$2e = /*#__PURE__*/React__namespace.createElement("path", {
1224
+ }, props), _path$2f || (_path$2f = /*#__PURE__*/React__namespace.createElement("path", {
1178
1225
  d: "M11.333 6L8 2.667 4.667 6m6.666 4L8 13.334 4.667 10",
1179
1226
  stroke: "currentColor"
1180
1227
  })));
@@ -1268,30 +1315,36 @@ var SelectFilter = function (props) {
1268
1315
  var _a, _b, _c;
1269
1316
  var options = props.options, columnId = props.columnId, multiple = props.multiple;
1270
1317
  var classes = useStyles$4();
1271
- var table = React.useContext(TableContext);
1272
- var _d = useFilterPanelContext().anchorState, setAnchorEl = _d[1];
1318
+ var _d = React.useContext(TableContext), table = _d.table, stagedColumnFilters = _d.stagedColumnFilters, stageFilterSelections = _d.stageFilterSelections;
1273
1319
  var _e = React.useState(false), open = _e[0], setOpen = _e[1];
1320
+ var _f = useFilterPanelContext().anchorState, setAnchorEl = _f[1];
1274
1321
  var column = table.getColumn(columnId);
1275
1322
  var meta = column.columnDef.meta;
1276
1323
  var filterName = (_a = meta === null || meta === void 0 ? void 0 : meta.filter) === null || _a === void 0 ? void 0 : _a.name;
1277
- var value = column.getFilterValue();
1324
+ var value = '';
1325
+ if (stageFilterSelections) {
1326
+ value = stagedColumnFilters.get(columnId);
1327
+ }
1328
+ else {
1329
+ value = column.getFilterValue();
1330
+ }
1278
1331
  var fallbackValue = multiple ? [] : '';
1279
1332
  var filteredOptions = options.map(function (option) {
1280
1333
  if (Array.isArray(value)) {
1281
1334
  if (value.includes(option.value)) {
1282
- return __assign$3(__assign$3({}, option), { hide: true });
1335
+ return __assign$3(__assign$3({}, option), { hide: !stageFilterSelections });
1283
1336
  }
1284
1337
  }
1285
1338
  if (typeof value === 'string' || typeof value === 'number') {
1286
1339
  if (value === option.value) {
1287
- return __assign$3(__assign$3({}, option), { hide: true });
1340
+ return __assign$3(__assign$3({}, option), { hide: !stageFilterSelections });
1288
1341
  }
1289
1342
  }
1290
1343
  return __assign$3(__assign$3({}, option), { hide: false });
1291
1344
  });
1292
1345
  var filteredOptionsCount = filteredOptions.filter(function (option) { return !(option === null || option === void 0 ? void 0 : option.hide); }).length;
1293
1346
  var renderedValue = '';
1294
- if (value && filteredOptions && filteredOptionsCount > 0) {
1347
+ if (!stageFilterSelections && value && filteredOptions && filteredOptionsCount > 0) {
1295
1348
  if (typeof value === 'string' || typeof value === 'number') {
1296
1349
  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;
1297
1350
  }
@@ -1304,12 +1357,20 @@ var SelectFilter = function (props) {
1304
1357
  }
1305
1358
  var handleChange = function (event) {
1306
1359
  event.stopPropagation();
1307
- column.setFilterValue(event.target.value);
1308
- setAnchorEl(null);
1360
+ if (stageFilterSelections) {
1361
+ stagedColumnFilters.update(columnId, event.target.value);
1362
+ }
1363
+ else {
1364
+ column.setFilterValue(event.target.value);
1365
+ setAnchorEl(null);
1366
+ }
1309
1367
  };
1310
1368
  var handleItemClick = function () {
1311
1369
  if (multiple) {
1312
- if (filteredOptionsCount === 1) {
1370
+ if (!stageFilterSelections && filteredOptionsCount === 1) {
1371
+ setOpen(false);
1372
+ }
1373
+ else {
1313
1374
  setOpen(false);
1314
1375
  }
1315
1376
  }
@@ -1317,7 +1378,7 @@ var SelectFilter = function (props) {
1317
1378
  return (React__default['default'].createElement(core.Box, { className: classes.selectContainer },
1318
1379
  React__default['default'].createElement(core.FormControl, { variant: "outlined", fullWidth: true },
1319
1380
  React__default['default'].createElement(core.InputLabel, { id: "select-filter-label-" + filterName }, filterName || 'filter'),
1320
- React__default['default'].createElement(core.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['default'].createElement(Typography$1, null, renderedValue); }, label: filterName || 'filter', labelId: "select-filter-label-" + filterName, disabled: !filteredOptionsCount, IconComponent: SvgChevronDown, onChange: handleChange, fullWidth: true, classes: {
1381
+ React__default['default'].createElement(core.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['default'].createElement(Typography$1, null, renderedValue); }, label: filterName || 'filter', labelId: "select-filter-label-" + filterName, disabled: !filteredOptionsCount, IconComponent: SvgChevronDown, onChange: handleChange, fullWidth: true, classes: {
1321
1382
  root: classes.selectRoot,
1322
1383
  icon: classes.icon,
1323
1384
  }, MenuProps: {
@@ -1337,7 +1398,7 @@ var SelectFilter = function (props) {
1337
1398
  };
1338
1399
 
1339
1400
  var ToggleFilter = function (props) {
1340
- var table = React.useContext(TableContext);
1401
+ var table = React.useContext(TableContext).table;
1341
1402
  var columnId = props.columnId;
1342
1403
  var column = table.getColumn(columnId);
1343
1404
  var meta = column.columnDef.meta;
@@ -1435,44 +1496,37 @@ function makeFormatSelectedFilterText(table) {
1435
1496
  };
1436
1497
  }
1437
1498
 
1438
- var Panel = function (props) {
1439
- var anchorEl = props.anchorEl, onClose = props.onClose;
1440
- var classes = useStyles$6();
1441
- var table = React.useContext(TableContext);
1442
- var paperRef = React.useRef(null);
1443
- var columnFilters = useColumnFilters(table).columnFilters;
1444
- var handleClick = function (e) {
1445
- var _a;
1446
- var rect = (_a = paperRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
1447
- if (rect) {
1448
- var buffer = 10;
1449
- var mouseX = e.nativeEvent.x;
1450
- var mouseY = e.nativeEvent.y;
1451
- var xHit = rect.x - buffer < mouseX && mouseX < rect.x + rect.width + buffer;
1452
- var yHit = rect.y - buffer < mouseY && mouseY < rect.y + rect.height + buffer;
1453
- if (!xHit || !yHit) {
1454
- onClose();
1499
+ var useStagedColumnFilters = function () {
1500
+ var _a = React.useState(new Map()), columnInputValues = _a[0], setColumnInputValues = _a[1];
1501
+ var filterState = {
1502
+ update: function (columnId, value) {
1503
+ return setColumnInputValues(columnInputValues.set(columnId, value));
1504
+ },
1505
+ get: function (columnId) { return columnInputValues.get(columnId); },
1506
+ clear: function () {
1507
+ columnInputValues.clear();
1508
+ setColumnInputValues(columnInputValues);
1509
+ },
1510
+ delete: function (columnFilter) {
1511
+ var values = columnInputValues.get(columnFilter.id);
1512
+ if (values && Array.isArray(values)) {
1513
+ var valueIndex = values.indexOf(columnFilter.value);
1514
+ values.splice(valueIndex, 1);
1515
+ if (values.length > 0) {
1516
+ columnInputValues.set(columnFilter.id, values);
1517
+ }
1518
+ else {
1519
+ columnInputValues.clear();
1520
+ }
1455
1521
  }
1456
- }
1522
+ else {
1523
+ columnInputValues.delete(columnFilter.id);
1524
+ }
1525
+ setColumnInputValues(columnInputValues);
1526
+ },
1527
+ exist: function () { return columnInputValues.size > 0; },
1457
1528
  };
1458
- var open = Boolean(anchorEl);
1459
- return (React__default['default'].createElement(core.Popover, { onClick: handleClick, anchorEl: anchorEl, anchorOrigin: {
1460
- vertical: 'bottom',
1461
- horizontal: 'right',
1462
- }, className: classes.filterPopover, onClose: onClose, open: open, PaperProps: {
1463
- style: {
1464
- backgroundColor: 'transparent',
1465
- boxShadow: 'none',
1466
- borderRadius: 0,
1467
- },
1468
- }, transformOrigin: {
1469
- vertical: 'top',
1470
- horizontal: 'right',
1471
- } },
1472
- React__default['default'].createElement(Paper$1, { className: classes.filterPopoverContents, elevation: 2 },
1473
- React__default['default'].createElement(core.Box, __assign$3({}, { ref: paperRef }, { padding: 3 }),
1474
- React__default['default'].createElement(Typography$1, { className: classes.menuTitle }, "Filter By"),
1475
- columnFilters.map(function (columnFilter, i) { return (React__default['default'].createElement(FilterControl, __assign$3({}, columnFilter, { key: i }))); })))));
1529
+ return filterState;
1476
1530
  };
1477
1531
 
1478
1532
  /*! *****************************************************************************
@@ -2067,7 +2121,7 @@ Link.defaultProps = {
2067
2121
  };
2068
2122
  Link.displayName = 'Link';
2069
2123
 
2070
- var useStyles$5 = core.makeStyles(function (_a) {
2124
+ var useStyles$4$1 = core.makeStyles(function (_a) {
2071
2125
  var spacing = _a.spacing;
2072
2126
  return ({
2073
2127
  root: {
@@ -2081,7 +2135,7 @@ var useStyles$5 = core.makeStyles(function (_a) {
2081
2135
  });
2082
2136
  var Paper = React.forwardRef(function (props, ref) {
2083
2137
  var legacyStyles = props.legacyStyles, restProps = __rest(props, ["legacyStyles"]);
2084
- var classes = useStyles$5(props);
2138
+ var classes = useStyles$4$1(props);
2085
2139
  return React__default['default'].createElement(core.Paper, __assign({}, ref, { classes: __assign({}, (legacyStyles && classes)) }, restProps));
2086
2140
  });
2087
2141
  Paper.displayName = 'Paper';
@@ -2234,6 +2288,45 @@ core.makeStyles(function (theme) { return ({
2234
2288
  },
2235
2289
  }); });
2236
2290
 
2291
+ core.makeStyles(function () { return ({
2292
+ root: {
2293
+ display: 'flex',
2294
+ flexDirection: 'column',
2295
+ alignItems: 'center',
2296
+ gridGap: 16,
2297
+ },
2298
+ }); });
2299
+
2300
+ var FollowerAuthenticationDialogContext = React.createContext(null);
2301
+ FollowerAuthenticationDialogContext.Provider;
2302
+
2303
+ core.makeStyles(function () { return ({
2304
+ form: {
2305
+ display: 'flex',
2306
+ flexDirection: 'column',
2307
+ alignItems: 'center',
2308
+ width: '100%',
2309
+ gridGap: 16,
2310
+ },
2311
+ }); });
2312
+
2313
+ core.makeStyles(function () { return ({
2314
+ main: {
2315
+ width: '100%',
2316
+ display: 'flex',
2317
+ flexDirection: 'column',
2318
+ gridGap: 16,
2319
+ },
2320
+ }); });
2321
+
2322
+ core.makeStyles(function () { return ({
2323
+ root: {
2324
+ position: 'absolute',
2325
+ top: 0,
2326
+ right: 0,
2327
+ },
2328
+ }); });
2329
+
2237
2330
  var _g$2B;
2238
2331
 
2239
2332
  function _extends$4J() { _extends$4J = 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$4J.apply(this, arguments); }
@@ -3248,6 +3341,68 @@ createTheme__default['default'](adminLightOptions);
3248
3341
  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);
3249
3342
  createTheme__default['default'](adminDarkOptions);
3250
3343
 
3344
+ var Panel = function (props) {
3345
+ var anchorEl = props.anchorEl, onClose = props.onClose;
3346
+ var classes = useStyles$5();
3347
+ var _a = React.useContext(TableContext), table = _a.table, stagedColumnFilters = _a.stagedColumnFilters, stageFilterSelections = _a.stageFilterSelections;
3348
+ var paperRef = React.useRef(null);
3349
+ var _b = useColumnFilters(table), columnFilters = _b.columnFilters, resetColumnFilters = _b.resetColumnFilters;
3350
+ var handleClick = function (e) {
3351
+ var _a;
3352
+ var rect = (_a = paperRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
3353
+ if (rect) {
3354
+ var buffer = 10;
3355
+ var mouseX = e.nativeEvent.x;
3356
+ var mouseY = e.nativeEvent.y;
3357
+ var xHit = rect.x - buffer < mouseX && mouseX < rect.x + rect.width + buffer;
3358
+ var yHit = rect.y - buffer < mouseY && mouseY < rect.y + rect.height + buffer;
3359
+ if (!xHit || !yHit) {
3360
+ onClose();
3361
+ }
3362
+ }
3363
+ };
3364
+ var handleApplyClick = function () {
3365
+ if (stagedColumnFilters.exist()) {
3366
+ columnFilters.forEach(function (columnFilter) {
3367
+ var columnInputValue = stagedColumnFilters.get(columnFilter.columnId);
3368
+ if (columnInputValue) {
3369
+ var column = table.getColumn(columnFilter.columnId);
3370
+ column.setFilterValue(columnInputValue);
3371
+ }
3372
+ });
3373
+ }
3374
+ else {
3375
+ resetColumnFilters();
3376
+ }
3377
+ onClose();
3378
+ };
3379
+ var handleCancelClick = function () {
3380
+ stagedColumnFilters.clear();
3381
+ onClose();
3382
+ };
3383
+ var open = Boolean(anchorEl);
3384
+ return (React__default['default'].createElement(core.Popover, { onClick: handleClick, anchorEl: anchorEl, anchorOrigin: {
3385
+ vertical: 'bottom',
3386
+ horizontal: 'right',
3387
+ }, className: classes.filterPopover, onClose: onClose, open: open, PaperProps: {
3388
+ style: {
3389
+ backgroundColor: 'transparent',
3390
+ boxShadow: 'none',
3391
+ borderRadius: 0,
3392
+ },
3393
+ }, transformOrigin: {
3394
+ vertical: 'top',
3395
+ horizontal: 'right',
3396
+ } },
3397
+ React__default['default'].createElement(Paper$1, { className: classes.filterPopoverContents, elevation: 2 },
3398
+ React__default['default'].createElement(core.Box, __assign$3({}, { ref: paperRef }, { padding: 3 }),
3399
+ React__default['default'].createElement(Typography$1, { className: classes.menuTitle }, "Filter By"),
3400
+ columnFilters.map(function (columnFilter, i) { return (React__default['default'].createElement(FilterControl, __assign$3({}, columnFilter, { key: i }))); })),
3401
+ stageFilterSelections && (React__default['default'].createElement(core.Box, { className: classes.buttonBox },
3402
+ React__default['default'].createElement(Button, { variant: "secondary", onClick: handleCancelClick }, "Cancel"),
3403
+ React__default['default'].createElement(Button, { onClick: handleApplyClick }, "Apply"))))));
3404
+ };
3405
+
3251
3406
  var useStyles$3 = core.makeStyles({
3252
3407
  root: {
3253
3408
  justifySelf: 'end',
@@ -4082,8 +4237,8 @@ var defaultTableProps = {
4082
4237
  searchable: false,
4083
4238
  };
4084
4239
  var Table = function (props) {
4085
- 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;
4086
- var classes = useStyles$7(props);
4240
+ 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;
4241
+ var classes = useStyles$6(props);
4087
4242
  var rootRef = React.useRef(null);
4088
4243
  // Prepare Empty State
4089
4244
  var isEmpty = data.length === 0;
@@ -4110,6 +4265,8 @@ var Table = function (props) {
4110
4265
  // Init table instance
4111
4266
  var table = reactTable.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: reactTable.getCoreRowModel(), getSortedRowModel: reactTable.getSortedRowModel(), getFilteredRowModel: reactTable.getFilteredRowModel() }, (paginated && { getPaginationRowModel: reactTable.getPaginationRowModel() })), (isControlledPagination && controlledPaginationOptions)), (isControlledGlobalFilter && controlledGlobalFilterOptions)), (isControlledColumnFilters && controlledColumnFiltersOptions)), (isControlledColumnSort && controlledColumnSortOptions)), { meta: { idBase: idBase } }));
4112
4267
  var _f = useColumnFilters(table), selectedColumnFilters = _f.selectedColumnFilters, hasColumnFilters = _f.hasColumnFilters, deselectColumnFilter = _f.deselectColumnFilter, formatSelectedFilterText = _f.formatSelectedFilterText, resetColumnFilters = _f.resetColumnFilters;
4268
+ // stagedColumnFilters is only used when stageFilterSelections is enabled
4269
+ var stagedColumnFilters = useStagedColumnFilters();
4113
4270
  var handlePagination = function (_e, pageNumber) {
4114
4271
  var pageIndex = pageNumber - 1;
4115
4272
  table.setPageIndex(pageIndex);
@@ -4118,7 +4275,7 @@ var Table = function (props) {
4118
4275
  var showGlobalSearch = Boolean(searchable || isControlledGlobalFilter);
4119
4276
  var showColumnFilter = Boolean(hasColumnFilters);
4120
4277
  var showControls = Boolean(showTitle || showGlobalSearch || showColumnFilter);
4121
- return (React__default['default'].createElement(TableContext.Provider, { value: table },
4278
+ return (React__default['default'].createElement(TableContext.Provider, { value: { table: table, stagedColumnFilters: stagedColumnFilters, stageFilterSelections: stageFilterSelections } },
4122
4279
  React__default['default'].createElement(core.Box, __assign$3({ className: classes.root }, { ref: rootRef }, { "data-table-element": "root" }, (table.getPageCount() > 1 && {
4123
4280
  minHeight: getTableMinHeight(rootRef, table.getState().pagination.pageSize),
4124
4281
  })),
@@ -4128,8 +4285,18 @@ var Table = function (props) {
4128
4285
  showGlobalSearch && (React__default['default'].createElement(GlobalFilter, __assign$3({}, GlobalFilterProps, { value: table.getState().globalFilter, setValue: table.setGlobalFilter }))),
4129
4286
  showColumnFilter && React__default['default'].createElement(FilterPanel, null)),
4130
4287
  React__default['default'].createElement(core.Box, { display: "flex", flexWrap: "wrap", gridGap: 8 },
4131
- selectedColumnFilters.map(function (selectedColumnFilter, i) { return (React__default['default'].createElement(ColumnFilterChip, { key: "selected-column-filter-chip-" + i, columnFilter: selectedColumnFilter, label: formatSelectedFilterText(selectedColumnFilter), onClick: deselectColumnFilter })); }),
4132
- selectedColumnFilters.length >= 1 && React__default['default'].createElement(ColumnFilterResetButton, { onClick: function () { return resetColumnFilters(); } })))),
4288
+ selectedColumnFilters.map(function (selectedColumnFilter, i) { return (React__default['default'].createElement(ColumnFilterChip, { key: "selected-column-filter-chip-" + i, columnFilter: selectedColumnFilter, label: formatSelectedFilterText(selectedColumnFilter), onClick: function (columnFilter) {
4289
+ if (stageFilterSelections) {
4290
+ stagedColumnFilters.delete(columnFilter);
4291
+ }
4292
+ deselectColumnFilter(columnFilter);
4293
+ } })); }),
4294
+ selectedColumnFilters.length >= 1 && (React__default['default'].createElement(ColumnFilterResetButton, { onClick: function () {
4295
+ if (stageFilterSelections) {
4296
+ stagedColumnFilters.clear();
4297
+ }
4298
+ resetColumnFilters();
4299
+ } }))))),
4133
4300
  React__default['default'].createElement(core.Box, { className: classes.tableContainer, flexGrow: loading || isEmpty ? 0 : 1 },
4134
4301
  React__default['default'].createElement("table", { className: classes.table },
4135
4302
  React__default['default'].createElement(TableHeader, null, table.getHeaderGroups().map(function (headerGroup) { return (React__default['default'].createElement(TableHeaderRow, { key: headerGroup.id }, headerGroup.headers.map(function (header) { return (React__default['default'].createElement(TableHeaderCell, { key: header.id, context: header.getContext() }, reactTable.flexRender(header.column.columnDef.header, header.getContext()))); }))); })),