@carbon/ibm-products 1.45.0 → 1.46.1

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.
Files changed (35) hide show
  1. package/README.md +17 -0
  2. package/css/index-full-carbon.css +38 -21
  3. package/css/index-full-carbon.css.map +1 -1
  4. package/css/index-full-carbon.min.css +4 -2
  5. package/css/index-full-carbon.min.css.map +1 -1
  6. package/css/index-without-carbon.css +38 -21
  7. package/css/index-without-carbon.css.map +1 -1
  8. package/css/index-without-carbon.min.css +4 -2
  9. package/css/index-without-carbon.min.css.map +1 -1
  10. package/css/index.css +38 -21
  11. package/css/index.css.map +1 -1
  12. package/css/index.min.css +4 -2
  13. package/css/index.min.css.map +1 -1
  14. package/es/components/Datagrid/Datagrid/DatagridContent.js +2 -2
  15. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +18 -228
  16. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +39 -268
  17. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +4 -4
  18. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +2 -1
  19. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +276 -0
  20. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +6 -6
  21. package/es/components/Datagrid/useSortableColumns.js +16 -10
  22. package/es/components/Datagrid/utils/DatagridActions.js +2 -2
  23. package/lib/components/Datagrid/Datagrid/DatagridContent.js +2 -2
  24. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +22 -224
  25. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +44 -265
  26. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +4 -4
  27. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +8 -1
  28. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +280 -0
  29. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +5 -5
  30. package/lib/components/Datagrid/useSortableColumns.js +9 -3
  31. package/lib/components/Datagrid/utils/DatagridActions.js +2 -2
  32. package/package.json +8 -8
  33. package/scss/components/Datagrid/styles/_datagrid.scss +2 -4
  34. package/scss/components/Datagrid/styles/_useSortableColumns.scss +33 -17
  35. package/scss/components/OptionsTile/_options-tile.scss +8 -1
@@ -0,0 +1,276 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
+ /*
8
+ * Licensed Materials - Property of IBM
9
+ * 5724-Q36
10
+ * (c) Copyright IBM Corp. 2023
11
+ * US Government Users Restricted Rights - Use, duplication or disclosure
12
+ * restricted by GSA ADP Schedule Contract with IBM Corp.
13
+ */
14
+ import React, { useState, useRef } from 'react';
15
+ import { Checkbox, DatePicker, DatePickerInput, Dropdown, FormGroup, NumberInput, RadioButton, RadioButtonGroup } from 'carbon-components-react';
16
+ import { INSTANT, DATE, CHECKBOX, NUMBER, RADIO, DROPDOWN, PANEL } from '../constants';
17
+ import useInitialStateFromFilters from './useInitialStateFromFilters';
18
+ import { getInitialStateFromFilters } from '../utils';
19
+ var useFilters = function useFilters(_ref) {
20
+ var updateMethod = _ref.updateMethod,
21
+ _ref$filters = _ref.filters,
22
+ filters = _ref$filters === void 0 ? [] : _ref$filters,
23
+ setAllFilters = _ref.setAllFilters,
24
+ variation = _ref.variation;
25
+ /** State */
26
+ var _useInitialStateFromF = useInitialStateFromFilters(filters, variation),
27
+ _useInitialStateFromF2 = _slicedToArray(_useInitialStateFromF, 2),
28
+ filtersState = _useInitialStateFromF2[0],
29
+ setFiltersState = _useInitialStateFromF2[1];
30
+ var _useState = useState([]),
31
+ _useState2 = _slicedToArray(_useState, 2),
32
+ filtersObjectArray = _useState2[0],
33
+ setFiltersObjectArray = _useState2[1];
34
+
35
+ // When using batch actions we have to store the filters to then apply them later
36
+ var prevFiltersRef = useRef(JSON.stringify(filtersState));
37
+ var prevFiltersObjectArrayRef = useRef(JSON.stringify(filtersObjectArray));
38
+
39
+ /** Methods */
40
+ // If the user decides to cancel or click outside the flyout, it reverts back to the filters that were
41
+ // there when they opened the flyout
42
+ var revertToPreviousFilters = function revertToPreviousFilters() {
43
+ setFiltersState(JSON.parse(prevFiltersRef.current));
44
+ setFiltersObjectArray(JSON.parse(prevFiltersObjectArrayRef.current));
45
+ };
46
+ var reset = function reset() {
47
+ // Get the initial values for the filters
48
+ var initialFiltersState = getInitialStateFromFilters(filters, variation);
49
+ var initialFiltersObjectArray = [];
50
+
51
+ // Set the state to the initial values
52
+ setFiltersState(initialFiltersState);
53
+ setFiltersObjectArray(initialFiltersObjectArray);
54
+ setAllFilters([]);
55
+
56
+ // Update their respective refs so everything is in sync
57
+ prevFiltersRef.current = JSON.stringify(initialFiltersState);
58
+ prevFiltersObjectArrayRef.current = JSON.stringify(initialFiltersObjectArray);
59
+ };
60
+ var applyFilters = function applyFilters(_ref2) {
61
+ var column = _ref2.column,
62
+ value = _ref2.value,
63
+ type = _ref2.type;
64
+ // If no end date is selected return because we need the end date to do computations
65
+ if (type === DATE && value.length > 0 && !value[1]) {
66
+ return;
67
+ }
68
+ var filtersObjectArrayCopy = _toConsumableArray(filtersObjectArray);
69
+ // // check if the filter already exists in the array
70
+ var filter = filtersObjectArrayCopy.find(function (item) {
71
+ return item.id === column;
72
+ });
73
+
74
+ // // if filter exists in array then update the filter's new value
75
+ if (filter) {
76
+ filter.value = value;
77
+ } else {
78
+ filtersObjectArrayCopy.push({
79
+ id: column,
80
+ value: value,
81
+ type: type
82
+ });
83
+ }
84
+
85
+ // ATTENTION: this is where you would reset or remove individual filters from the filters array
86
+ if (type === CHECKBOX) {
87
+ /**
88
+ When all checkboxes of a group are all unselected the value still exists in the filtersObjectArray
89
+ This checks if all the checkboxes are selected = false and removes it from the array
90
+ */
91
+ var index = filtersObjectArrayCopy.findIndex(function (filter) {
92
+ return filter.id === column;
93
+ });
94
+
95
+ // If all the selected state is false remove from array
96
+ var shouldRemoveFromArray = filtersObjectArrayCopy[index].value.every(function (val) {
97
+ return val.selected === false;
98
+ });
99
+ if (shouldRemoveFromArray) {
100
+ filtersObjectArrayCopy.splice(index, 1);
101
+ }
102
+ } else if (type === DATE) {
103
+ if (value.length === 0) {
104
+ /**
105
+ Checks to see if the date value is an empty array, if it is that means the user wants
106
+ to reset the date filter
107
+ */
108
+ var _index = filtersObjectArrayCopy.findIndex(function (filter) {
109
+ return filter.id === column;
110
+ });
111
+
112
+ // Remove it from the filters array since there is nothing to filter
113
+ filtersObjectArrayCopy.splice(_index, 1);
114
+ }
115
+ } else if (type === DROPDOWN || type === RADIO) {
116
+ if (value === 'Any') {
117
+ /**
118
+ Checks to see if the selected value is 'Any', that means the user wants
119
+ to reset specific filter
120
+ */
121
+ var _index2 = filtersObjectArrayCopy.findIndex(function (filter) {
122
+ return filter.id === column;
123
+ });
124
+
125
+ // Remove it from the filters array
126
+ filtersObjectArrayCopy.splice(_index2, 1);
127
+ }
128
+ }
129
+ setFiltersObjectArray(filtersObjectArrayCopy);
130
+
131
+ // // Automatically apply the filters if the updateMethod is instant
132
+ if (updateMethod === INSTANT) {
133
+ setAllFilters(filtersObjectArrayCopy);
134
+ }
135
+ };
136
+ /** Render the individual filter component */
137
+ var renderFilter = function renderFilter(_ref3) {
138
+ var _filtersState$column, _filtersState$column2;
139
+ var type = _ref3.type,
140
+ column = _ref3.column,
141
+ components = _ref3.props;
142
+ var isPanel = variation === PANEL;
143
+ switch (type) {
144
+ case DATE:
145
+ return /*#__PURE__*/React.createElement(DatePicker, _extends({}, components.DatePicker, {
146
+ onChange: function onChange(value) {
147
+ var _components$DatePicke, _components$DatePicke2;
148
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
149
+ value: value,
150
+ type: type
151
+ })));
152
+ applyFilters({
153
+ column: column,
154
+ value: value,
155
+ type: type
156
+ });
157
+ (_components$DatePicke = (_components$DatePicke2 = components.DatePicker).onChange) === null || _components$DatePicke === void 0 ? void 0 : _components$DatePicke.call(_components$DatePicke2, value);
158
+ },
159
+ value: filtersState[column].value,
160
+ datePickerType: "range",
161
+ light: isPanel
162
+ }), /*#__PURE__*/React.createElement(DatePickerInput, _extends({
163
+ placeholder: "mm/dd/yyyy",
164
+ labelText: "Start date"
165
+ }, components.DatePickerInput.start)), /*#__PURE__*/React.createElement(DatePickerInput, _extends({
166
+ placeholder: "mm/dd/yyyy",
167
+ labelText: "End date"
168
+ }, components.DatePickerInput.end)));
169
+ case NUMBER:
170
+ return /*#__PURE__*/React.createElement(NumberInput, _extends({
171
+ step: 1,
172
+ allowEmpty: true,
173
+ hideSteppers: true
174
+ }, components.NumberInput, {
175
+ onChange: function onChange(event) {
176
+ var _components$NumberInp, _components$NumberInp2;
177
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
178
+ value: event.target.value,
179
+ type: type
180
+ })));
181
+ applyFilters({
182
+ column: column,
183
+ value: event.target.value,
184
+ type: type
185
+ });
186
+ (_components$NumberInp = (_components$NumberInp2 = components.NumberInput).onChange) === null || _components$NumberInp === void 0 ? void 0 : _components$NumberInp.call(_components$NumberInp2, event);
187
+ },
188
+ value: filtersState[column].value,
189
+ light: isPanel
190
+ }));
191
+ case CHECKBOX:
192
+ return /*#__PURE__*/React.createElement(FormGroup, components.FormGroup, filtersState[column].value.map(function (option) {
193
+ return /*#__PURE__*/React.createElement(Checkbox, _extends({
194
+ key: option.labelText
195
+ }, option, {
196
+ onChange: function onChange(isSelected) {
197
+ var _option$onChange;
198
+ var checkboxCopy = filtersState[column].value;
199
+ var foundCheckbox = checkboxCopy.find(function (checkbox) {
200
+ return checkbox.value === option.value;
201
+ });
202
+ foundCheckbox.selected = isSelected;
203
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
204
+ value: checkboxCopy,
205
+ type: type
206
+ })));
207
+ applyFilters({
208
+ column: column,
209
+ value: _toConsumableArray(filtersState[column].value),
210
+ type: type
211
+ });
212
+ (_option$onChange = option.onChange) === null || _option$onChange === void 0 ? void 0 : _option$onChange.call(option, isSelected);
213
+ },
214
+ checked: option.selected
215
+ }));
216
+ }));
217
+ case RADIO:
218
+ return /*#__PURE__*/React.createElement(FormGroup, components.FormGroup, /*#__PURE__*/React.createElement(RadioButtonGroup, _extends({}, components.RadioButtonGroup, {
219
+ valueSelected: ((_filtersState$column = filtersState[column]) === null || _filtersState$column === void 0 ? void 0 : _filtersState$column.value) === '' ? 'Any' : (_filtersState$column2 = filtersState[column]) === null || _filtersState$column2 === void 0 ? void 0 : _filtersState$column2.value,
220
+ onChange: function onChange(selected) {
221
+ var _components$RadioButt, _components$RadioButt2;
222
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
223
+ value: selected,
224
+ type: type
225
+ })));
226
+ applyFilters({
227
+ column: column,
228
+ value: selected,
229
+ type: type
230
+ });
231
+ (_components$RadioButt = (_components$RadioButt2 = components.RadioButtonGroup).onChange) === null || _components$RadioButt === void 0 ? void 0 : _components$RadioButt.call(_components$RadioButt2, selected);
232
+ }
233
+ }), /*#__PURE__*/React.createElement(RadioButton, {
234
+ id: "any",
235
+ labelText: "Any",
236
+ value: "Any"
237
+ }), components.RadioButton.map(function (radio) {
238
+ var _ref4, _radio$id;
239
+ return /*#__PURE__*/React.createElement(RadioButton, _extends({
240
+ key: (_ref4 = (_radio$id = radio.id) !== null && _radio$id !== void 0 ? _radio$id : radio.labelText) !== null && _ref4 !== void 0 ? _ref4 : radio.value
241
+ }, radio));
242
+ })));
243
+ case DROPDOWN:
244
+ return /*#__PURE__*/React.createElement(Dropdown, _extends({}, components.Dropdown, {
245
+ items: ['Any'].concat(_toConsumableArray(components.Dropdown.items)),
246
+ selectedItem: filtersState[column].value === '' ? 'Any' : filtersState[column].value,
247
+ onChange: function onChange(_ref5) {
248
+ var _components$Dropdown$, _components$Dropdown;
249
+ var selectedItem = _ref5.selectedItem;
250
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
251
+ value: selectedItem,
252
+ type: type
253
+ })));
254
+ applyFilters({
255
+ column: column,
256
+ value: selectedItem,
257
+ type: type
258
+ });
259
+ (_components$Dropdown$ = (_components$Dropdown = components.Dropdown).onChange) === null || _components$Dropdown$ === void 0 ? void 0 : _components$Dropdown$.call(_components$Dropdown, selectedItem);
260
+ },
261
+ light: isPanel
262
+ }));
263
+ }
264
+ };
265
+ return {
266
+ filtersState: filtersState,
267
+ setFiltersState: setFiltersState,
268
+ prevFiltersObjectArrayRef: prevFiltersObjectArrayRef,
269
+ prevFiltersRef: prevFiltersRef,
270
+ revertToPreviousFilters: revertToPreviousFilters,
271
+ reset: reset,
272
+ renderFilter: renderFilter,
273
+ filtersObjectArray: filtersObjectArray
274
+ };
275
+ };
276
+ export default useFilters;
@@ -5,7 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import { FLYOUT, PANEL } from './constants';
8
+ import { CHECKBOX, DATE, DROPDOWN, FLYOUT, NUMBER, PANEL, RADIO } from './constants';
9
9
 
10
10
  // This functions takes the filters passed in and makes an object to track it's state
11
11
  export var getInitialStateFromFilters = function getInitialStateFromFilters(filters) {
@@ -15,7 +15,7 @@ export var getInitialStateFromFilters = function getInitialStateFromFilters(filt
15
15
  var type = _ref.type,
16
16
  column = _ref.column,
17
17
  props = _ref.props;
18
- if (type === 'checkbox') {
18
+ if (type === CHECKBOX) {
19
19
  initialFilterState[column] = {
20
20
  value: props.Checkbox.map(function (_ref2) {
21
21
  var id = _ref2.id,
@@ -30,22 +30,22 @@ export var getInitialStateFromFilters = function getInitialStateFromFilters(filt
30
30
  }),
31
31
  type: type
32
32
  };
33
- } else if (type === 'date') {
33
+ } else if (type === DATE) {
34
34
  initialFilterState[column] = {
35
35
  value: [null, null],
36
36
  type: type
37
37
  };
38
- } else if (type === 'number') {
38
+ } else if (type === NUMBER) {
39
39
  initialFilterState[column] = {
40
40
  value: '',
41
41
  type: type
42
42
  };
43
- } else if (type === 'radio') {
43
+ } else if (type === RADIO) {
44
44
  initialFilterState[column] = {
45
45
  value: '',
46
46
  type: type
47
47
  };
48
- } else if (type === 'dropdown') {
48
+ } else if (type === DROPDOWN) {
49
49
  initialFilterState[column] = {
50
50
  value: '',
51
51
  type: type
@@ -2,16 +2,19 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
- /*
6
- * Licensed Materials - Property of IBM
7
- * 5724-Q36
8
- * (c) Copyright IBM Corp. 2020
9
- * US Government Users Restricted Rights - Use, duplication or disclosure
10
- * restricted by GSA ADP Schedule Contract with IBM Corp.
5
+ /**
6
+ * Copyright IBM Corp. 2020, 2023
7
+ *
8
+ * This source code is licensed under the Apache-2.0 license found in the
9
+ * LICENSE file in the root directory of this source tree.
11
10
  */
11
+
12
12
  import React from 'react';
13
+ import cx from 'classnames';
14
+ import { pkg, carbon } from '../../settings';
13
15
  import { Button } from 'carbon-components-react';
14
- import { ArrowUp16, ArrowDown16, Arrows16 } from '@carbon/icons-react';
16
+ import { ArrowUp16, Arrows16 } from '@carbon/icons-react';
17
+ var blockClass = "".concat(pkg.prefix, "--datagrid");
15
18
  var ordering = {
16
19
  ASC: 'ASC',
17
20
  DESC: 'DESC',
@@ -39,7 +42,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
39
42
  case false:
40
43
  return ArrowUp16;
41
44
  case true:
42
- return ArrowDown16;
45
+ return ArrowUp16;
43
46
  default:
44
47
  return Arrows16;
45
48
  }
@@ -47,16 +50,19 @@ var useSortableColumns = function useSortableColumns(hooks) {
47
50
  return Arrows16;
48
51
  };
49
52
  var Header = function Header(headerProp) {
53
+ var _cx;
50
54
  return column.disableSortBy === true ? column.Header : /*#__PURE__*/React.createElement(Button, {
51
55
  onClick: function onClick() {
52
56
  return onSortClick(headerProp.column);
53
57
  },
54
58
  kind: "ghost",
55
- renderIcon: icon(headerProp.column)
59
+ renderIcon: icon(headerProp.column),
60
+ className: cx("".concat(carbon.prefix, "--table-sort ").concat(blockClass, "--table-sort"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "--table-sort--desc"), headerProp.column.isSortedDesc), _defineProperty(_cx, "".concat(blockClass, "--table-sort--asc"), headerProp.column.isSortedDesc === false), _cx))
56
61
  }, column.Header);
57
62
  };
58
63
  return _objectSpread(_objectSpread({}, column), {}, {
59
- Header: Header
64
+ Header: Header,
65
+ minWidth: column.disableSortBy === true ? 0 : 90
60
66
  });
61
67
  });
62
68
  return _toConsumableArray(sortableColumns);
@@ -16,7 +16,7 @@ import { FilterContext } from '../Datagrid/addons/Filtering';
16
16
  var blockClass = "".concat(pkg.prefix, "--datagrid");
17
17
  export var DatagridActions = function DatagridActions(datagridState) {
18
18
  var _useContext = useContext(FilterContext),
19
- setLeftPanelOpen = _useContext.setLeftPanelOpen;
19
+ setPanelOpen = _useContext.setPanelOpen;
20
20
  var selectedFlatRows = datagridState.selectedFlatRows,
21
21
  setGlobalFilter = datagridState.setGlobalFilter,
22
22
  CustomizeColumnsButton = datagridState.CustomizeColumnsButton,
@@ -58,7 +58,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
58
58
  iconDescription: filterProps.panelIconDescription,
59
59
  className: "".concat(blockClass, "-filter-panel-open-button"),
60
60
  onClick: function onClick() {
61
- return setLeftPanelOpen(function (open) {
61
+ return setPanelOpen(function (open) {
62
62
  return !open;
63
63
  });
64
64
  },
@@ -47,7 +47,7 @@ var DatagridContent = function DatagridContent(_ref) {
47
47
  var _useContext2 = (0, _react.useContext)(_Filtering.FilterContext),
48
48
  filterTags = _useContext2.filterTags,
49
49
  EventEmitter = _useContext2.EventEmitter,
50
- leftPanelOpen = _useContext2.leftPanelOpen;
50
+ panelOpen = _useContext2.panelOpen;
51
51
  var activeCellId = inlineEditState.activeCellId,
52
52
  gridActive = inlineEditState.gridActive,
53
53
  editId = inlineEditState.editId;
@@ -147,7 +147,7 @@ var DatagridContent = function DatagridContent(_ref) {
147
147
  title: gridTitle,
148
148
  description: gridDescription
149
149
  }, /*#__PURE__*/_react.default.createElement(_DatagridToolbar.default, datagridState), /*#__PURE__*/_react.default.createElement("div", {
150
- className: (0, _classnames.default)("".concat(blockClass, "__table-container"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__table-container--filter-open"), leftPanelOpen)),
150
+ className: (0, _classnames.default)("".concat(blockClass, "__table-container"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__table-container--filter-open"), panelOpen)),
151
151
  ref: gridAreaRef
152
152
  }, (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'panel' && /*#__PURE__*/_react.default.createElement(_FilterPanel.default, (0, _extends2.default)({
153
153
  updateMethod: "batch"