@carbon/ibm-products 1.44.1 → 1.46.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/css/index-full-carbon.css +30 -19
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +1 -1
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon.css +30 -19
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +1 -1
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +30 -19
- package/css/index.css.map +1 -1
- package/css/index.min.css +1 -1
- package/css/index.min.css.map +1 -1
- package/es/components/Datagrid/Datagrid/DatagridContent.js +2 -2
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +39 -217
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +61 -258
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +4 -4
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +10 -1
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +276 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useShouldDisableButtons.js +34 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +6 -6
- package/es/components/Datagrid/useSortableColumns.js +16 -10
- package/es/components/Datagrid/utils/DatagridActions.js +6 -38
- package/lib/components/Datagrid/Datagrid/DatagridContent.js +2 -2
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +37 -207
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +60 -255
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +4 -4
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +15 -1
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +280 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useShouldDisableButtons.js +41 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +5 -5
- package/lib/components/Datagrid/useSortableColumns.js +9 -3
- package/lib/components/Datagrid/utils/DatagridActions.js +6 -38
- package/package.json +8 -8
- package/scss/components/Datagrid/styles/_datagrid.scss +1 -1
- package/scss/components/Datagrid/styles/_useSortableColumns.scss +33 -17
- package/scss/components/Datagrid/styles/addons/_RowSizeDropdown.scss +1 -1
@@ -1,32 +1,33 @@
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
2
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
3
|
-
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
4
2
|
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
3
|
/* eslint-disable react/jsx-key */
|
4
|
+
/**
|
5
|
+
* Copyright IBM Corp. 2022, 2023
|
6
|
+
*
|
7
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
9
|
+
*/
|
8
10
|
|
9
11
|
import React, { useRef, useMemo, useContext, useState, useEffect } from 'react';
|
10
12
|
import PropTypes from 'prop-types';
|
11
|
-
import { Accordion, AccordionItem, Button, Search
|
13
|
+
import { Accordion, AccordionItem, Button, Search } from 'carbon-components-react';
|
12
14
|
import { rem } from '@carbon/layout';
|
13
15
|
import { pkg } from '../../../../../settings';
|
14
|
-
import { BATCH,
|
16
|
+
import { BATCH, CLEAR_FILTERS, INSTANT, PANEL } from './constants';
|
15
17
|
import cx from 'classnames';
|
16
18
|
import { motion } from 'framer-motion';
|
17
19
|
import { panelVariants, innerContainerVariants, actionSetVariants } from './motion/variants';
|
18
20
|
import { Close32 } from '@carbon/icons-react';
|
19
21
|
import { ActionSet } from '../../../../ActionSet';
|
20
22
|
import { FilterContext } from '.';
|
21
|
-
import {
|
22
|
-
import { getInitialStateFromFilters } from './utils';
|
23
|
-
import isEqual from 'lodash/isEqual';
|
23
|
+
import { useFilters, useSubscribeToEventEmitter, useShouldDisableButtons } from './hooks';
|
24
24
|
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
25
25
|
var componentClass = "".concat(blockClass, "-filter-panel");
|
26
26
|
var MotionActionSet = motion(ActionSet);
|
27
27
|
var FilterPanel = function FilterPanel(_ref) {
|
28
28
|
var _cx;
|
29
|
-
var title = _ref.title,
|
29
|
+
var _ref$title = _ref.title,
|
30
|
+
title = _ref$title === void 0 ? 'Filter' : _ref$title,
|
30
31
|
_ref$closeIconDescrip = _ref.closeIconDescription,
|
31
32
|
closeIconDescription = _ref$closeIconDescrip === void 0 ? 'Close filter panel' : _ref$closeIconDescrip,
|
32
33
|
_ref$updateMethod = _ref.updateMethod,
|
@@ -46,31 +47,39 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
46
47
|
_ref$filterPanelMinHe = _ref.filterPanelMinHeight,
|
47
48
|
filterPanelMinHeight = _ref$filterPanelMinHe === void 0 ? 600 : _ref$filterPanelMinHe;
|
48
49
|
/** State */
|
49
|
-
var
|
50
|
-
_useInitialStateFromF2 = _slicedToArray(_useInitialStateFromF, 2),
|
51
|
-
filtersState = _useInitialStateFromF2[0],
|
52
|
-
setFiltersState = _useInitialStateFromF2[1];
|
53
|
-
var _useState = useState([]),
|
50
|
+
var _useState = useState(false),
|
54
51
|
_useState2 = _slicedToArray(_useState, 2),
|
55
|
-
|
56
|
-
|
57
|
-
var
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
52
|
+
showDividerLine = _useState2[0],
|
53
|
+
setShowDividerLine = _useState2[1];
|
54
|
+
var _useFilters = useFilters({
|
55
|
+
updateMethod: updateMethod,
|
56
|
+
filters: filterSections,
|
57
|
+
setAllFilters: setAllFilters,
|
58
|
+
variation: PANEL
|
59
|
+
}),
|
60
|
+
filtersState = _useFilters.filtersState,
|
61
|
+
prevFiltersObjectArrayRef = _useFilters.prevFiltersObjectArrayRef,
|
62
|
+
prevFiltersRef = _useFilters.prevFiltersRef,
|
63
|
+
revertToPreviousFilters = _useFilters.revertToPreviousFilters,
|
64
|
+
reset = _useFilters.reset,
|
65
|
+
renderFilter = _useFilters.renderFilter,
|
66
|
+
filtersObjectArray = _useFilters.filtersObjectArray;
|
65
67
|
|
66
68
|
/** Refs */
|
67
69
|
var filterPanelRef = useRef();
|
68
70
|
var filterHeadingRef = useRef();
|
69
71
|
var filterSearchRef = useRef();
|
70
72
|
var actionSetRef = useRef();
|
71
|
-
|
72
|
-
|
73
|
-
var
|
73
|
+
|
74
|
+
/** State from hooks */
|
75
|
+
var _useShouldDisableButt = useShouldDisableButtons({
|
76
|
+
initialValue: true,
|
77
|
+
filtersState: filtersState,
|
78
|
+
prevFiltersRef: prevFiltersRef
|
79
|
+
}),
|
80
|
+
_useShouldDisableButt2 = _slicedToArray(_useShouldDisableButt, 2),
|
81
|
+
shouldDisableButtons = _useShouldDisableButt2[0],
|
82
|
+
setShouldDisableButtons = _useShouldDisableButt2[1];
|
74
83
|
|
75
84
|
/** Memos */
|
76
85
|
var showActionSet = useMemo(function () {
|
@@ -79,19 +88,12 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
79
88
|
|
80
89
|
/** Context */
|
81
90
|
var _useContext = useContext(FilterContext),
|
82
|
-
|
83
|
-
|
91
|
+
panelOpen = _useContext.panelOpen,
|
92
|
+
setPanelOpen = _useContext.setPanelOpen;
|
84
93
|
|
85
94
|
/** Methods */
|
86
95
|
var closePanel = function closePanel() {
|
87
|
-
return
|
88
|
-
};
|
89
|
-
|
90
|
-
// If the user decides to cancel or click outside the flyout, it reverts back to the filters that were
|
91
|
-
// there when they opened the flyout
|
92
|
-
var revertToPreviousFilters = function revertToPreviousFilters() {
|
93
|
-
setFiltersState(JSON.parse(prevFiltersRef.current));
|
94
|
-
setFiltersObjectArray(JSON.parse(prevFiltersObjectArrayRef.current));
|
96
|
+
return setPanelOpen(false);
|
95
97
|
};
|
96
98
|
var cancel = function cancel() {
|
97
99
|
// Reverting to previous filters only applies when using batch actions
|
@@ -100,215 +102,19 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
100
102
|
onCancel();
|
101
103
|
}
|
102
104
|
};
|
103
|
-
var reset = function reset() {
|
104
|
-
// Get the initial values for the filters
|
105
|
-
var initialFiltersState = getInitialStateFromFilters(filterSections, PANEL);
|
106
|
-
var initialFiltersObjectArray = [];
|
107
|
-
|
108
|
-
// Set the state to the initial values
|
109
|
-
setFiltersState(initialFiltersState);
|
110
|
-
setFiltersObjectArray(initialFiltersObjectArray);
|
111
|
-
setAllFilters([]);
|
112
|
-
|
113
|
-
// Update their respective refs so everything is in sync
|
114
|
-
prevFiltersRef.current = JSON.stringify(initialFiltersState);
|
115
|
-
prevFiltersObjectArrayRef.current = JSON.stringify(initialFiltersObjectArray);
|
116
|
-
};
|
117
105
|
var apply = function apply() {
|
118
106
|
setAllFilters(filtersObjectArray);
|
107
|
+
|
108
|
+
// From the user
|
119
109
|
onApply();
|
110
|
+
|
111
|
+
// When the user clicks apply, the action set buttons should be disabled again
|
120
112
|
setShouldDisableButtons(true);
|
121
113
|
|
122
114
|
// updates the ref so next time the flyout opens we have records of the previous filters
|
123
115
|
prevFiltersRef.current = JSON.stringify(filtersState);
|
124
116
|
prevFiltersObjectArrayRef.current = JSON.stringify(filtersObjectArray);
|
125
117
|
};
|
126
|
-
var applyFilters = function applyFilters(_ref2) {
|
127
|
-
var column = _ref2.column,
|
128
|
-
value = _ref2.value,
|
129
|
-
type = _ref2.type;
|
130
|
-
// If no end date is selected return because we need the end date to do computations
|
131
|
-
if (type === DATE && value.length > 0 && !value[1]) {
|
132
|
-
return;
|
133
|
-
}
|
134
|
-
var filtersObjectArrayCopy = _toConsumableArray(filtersObjectArray);
|
135
|
-
// // check if the filter already exists in the array
|
136
|
-
var filter = filtersObjectArrayCopy.find(function (item) {
|
137
|
-
return item.id === column;
|
138
|
-
});
|
139
|
-
|
140
|
-
// // if filter exists in array then update the filter's new value
|
141
|
-
if (filter) {
|
142
|
-
filter.value = value;
|
143
|
-
} else {
|
144
|
-
filtersObjectArrayCopy.push({
|
145
|
-
id: column,
|
146
|
-
value: value,
|
147
|
-
type: type
|
148
|
-
});
|
149
|
-
}
|
150
|
-
|
151
|
-
// ATTENTION: this is where you would reset or remove individual filters from the filters array
|
152
|
-
if (type === CHECKBOX) {
|
153
|
-
/**
|
154
|
-
When all checkboxes of a group are all unselected the value still exists in the filtersObjectArray
|
155
|
-
This checks if all the checkboxes are selected = false and removes it from the array
|
156
|
-
*/
|
157
|
-
var index = filtersObjectArrayCopy.findIndex(function (filter) {
|
158
|
-
return filter.id === column;
|
159
|
-
});
|
160
|
-
|
161
|
-
// If all the selected state is false remove from array
|
162
|
-
var shouldRemoveFromArray = filtersObjectArrayCopy[index].value.every(function (val) {
|
163
|
-
return val.selected === false;
|
164
|
-
});
|
165
|
-
if (shouldRemoveFromArray) {
|
166
|
-
filtersObjectArrayCopy.splice(index, 1);
|
167
|
-
}
|
168
|
-
} else if (type === DATE) {
|
169
|
-
if (value.length === 0) {
|
170
|
-
/**
|
171
|
-
Checks to see if the date value is an empty array, if it is that means the user wants
|
172
|
-
to reset the date filter
|
173
|
-
*/
|
174
|
-
var _index = filtersObjectArrayCopy.findIndex(function (filter) {
|
175
|
-
return filter.id === column;
|
176
|
-
});
|
177
|
-
|
178
|
-
// Remove it from the filters array since there is nothing to filter
|
179
|
-
filtersObjectArrayCopy.splice(_index, 1);
|
180
|
-
}
|
181
|
-
}
|
182
|
-
setFiltersObjectArray(filtersObjectArrayCopy);
|
183
|
-
|
184
|
-
// // Automatically apply the filters if the updateMethod is instant
|
185
|
-
if (updateMethod === INSTANT) {
|
186
|
-
setAllFilters(filtersObjectArrayCopy);
|
187
|
-
}
|
188
|
-
};
|
189
|
-
|
190
|
-
/** Render the individual filter component */
|
191
|
-
var renderFilter = function renderFilter(_ref3) {
|
192
|
-
var type = _ref3.type,
|
193
|
-
column = _ref3.column,
|
194
|
-
components = _ref3.props;
|
195
|
-
switch (type) {
|
196
|
-
case DATE:
|
197
|
-
return /*#__PURE__*/React.createElement(DatePicker, _extends({}, components.DatePicker, {
|
198
|
-
onChange: function onChange(value) {
|
199
|
-
var _components$DatePicke, _components$DatePicke2;
|
200
|
-
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
|
201
|
-
value: value,
|
202
|
-
type: type
|
203
|
-
})));
|
204
|
-
applyFilters({
|
205
|
-
column: column,
|
206
|
-
value: value,
|
207
|
-
type: type
|
208
|
-
});
|
209
|
-
(_components$DatePicke = (_components$DatePicke2 = components.DatePicker).onChange) === null || _components$DatePicke === void 0 ? void 0 : _components$DatePicke.call(_components$DatePicke2, value);
|
210
|
-
},
|
211
|
-
value: filtersState[column].value,
|
212
|
-
datePickerType: "range",
|
213
|
-
light: true
|
214
|
-
}), /*#__PURE__*/React.createElement(DatePickerInput, _extends({
|
215
|
-
placeholder: "mm/dd/yyyy",
|
216
|
-
labelText: "Start date"
|
217
|
-
}, components.DatePickerInput.start)), /*#__PURE__*/React.createElement(DatePickerInput, _extends({
|
218
|
-
placeholder: "mm/dd/yyyy",
|
219
|
-
labelText: "End date"
|
220
|
-
}, components.DatePickerInput.end)));
|
221
|
-
case NUMBER:
|
222
|
-
return /*#__PURE__*/React.createElement(NumberInput, _extends({
|
223
|
-
step: 1,
|
224
|
-
allowEmpty: true,
|
225
|
-
hideSteppers: true
|
226
|
-
}, components.NumberInput, {
|
227
|
-
onChange: function onChange(event) {
|
228
|
-
var _components$NumberInp, _components$NumberInp2;
|
229
|
-
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
|
230
|
-
value: event.target.value,
|
231
|
-
type: type
|
232
|
-
})));
|
233
|
-
applyFilters({
|
234
|
-
column: column,
|
235
|
-
value: event.target.value,
|
236
|
-
type: type
|
237
|
-
});
|
238
|
-
(_components$NumberInp = (_components$NumberInp2 = components.NumberInput).onChange) === null || _components$NumberInp === void 0 ? void 0 : _components$NumberInp.call(_components$NumberInp2, event);
|
239
|
-
},
|
240
|
-
value: filtersState[column].value,
|
241
|
-
light: true
|
242
|
-
}));
|
243
|
-
case CHECKBOX:
|
244
|
-
return /*#__PURE__*/React.createElement(FormGroup, components.FormGroup, filtersState[column].value.map(function (option) {
|
245
|
-
return /*#__PURE__*/React.createElement(Checkbox, _extends({
|
246
|
-
key: option.labelText
|
247
|
-
}, option, {
|
248
|
-
onChange: function onChange(isSelected) {
|
249
|
-
var _option$onChange;
|
250
|
-
var checkboxCopy = filtersState[column].value;
|
251
|
-
var foundCheckbox = checkboxCopy.find(function (checkbox) {
|
252
|
-
return checkbox.value === option.value;
|
253
|
-
});
|
254
|
-
foundCheckbox.selected = isSelected;
|
255
|
-
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
|
256
|
-
value: checkboxCopy,
|
257
|
-
type: type
|
258
|
-
})));
|
259
|
-
applyFilters({
|
260
|
-
column: column,
|
261
|
-
value: _toConsumableArray(filtersState[column].value),
|
262
|
-
type: type
|
263
|
-
});
|
264
|
-
(_option$onChange = option.onChange) === null || _option$onChange === void 0 ? void 0 : _option$onChange.call(option, isSelected);
|
265
|
-
},
|
266
|
-
checked: option.selected
|
267
|
-
}));
|
268
|
-
}));
|
269
|
-
case RADIO:
|
270
|
-
return /*#__PURE__*/React.createElement(FormGroup, components.FormGroup, /*#__PURE__*/React.createElement(RadioButtonGroup, _extends({}, components.RadioButtonGroup, {
|
271
|
-
valueSelected: filtersState[column].value,
|
272
|
-
onChange: function onChange(selected) {
|
273
|
-
var _components$RadioButt, _components$RadioButt2;
|
274
|
-
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
|
275
|
-
value: selected,
|
276
|
-
type: type
|
277
|
-
})));
|
278
|
-
applyFilters({
|
279
|
-
column: column,
|
280
|
-
value: selected,
|
281
|
-
type: type
|
282
|
-
});
|
283
|
-
(_components$RadioButt = (_components$RadioButt2 = components.RadioButtonGroup).onChange) === null || _components$RadioButt === void 0 ? void 0 : _components$RadioButt.call(_components$RadioButt2, selected);
|
284
|
-
}
|
285
|
-
}), components.RadioButton.map(function (radio) {
|
286
|
-
var _ref4, _radio$id;
|
287
|
-
return /*#__PURE__*/React.createElement(RadioButton, _extends({
|
288
|
-
key: (_ref4 = (_radio$id = radio.id) !== null && _radio$id !== void 0 ? _radio$id : radio.labelText) !== null && _ref4 !== void 0 ? _ref4 : radio.value
|
289
|
-
}, radio));
|
290
|
-
})));
|
291
|
-
case DROPDOWN:
|
292
|
-
return /*#__PURE__*/React.createElement(Dropdown, _extends({}, components.Dropdown, {
|
293
|
-
selectedItem: filtersState[column].value,
|
294
|
-
onChange: function onChange(_ref5) {
|
295
|
-
var _components$Dropdown$, _components$Dropdown;
|
296
|
-
var selectedItem = _ref5.selectedItem;
|
297
|
-
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
|
298
|
-
value: selectedItem,
|
299
|
-
type: type
|
300
|
-
})));
|
301
|
-
applyFilters({
|
302
|
-
column: column,
|
303
|
-
value: selectedItem,
|
304
|
-
type: type
|
305
|
-
});
|
306
|
-
(_components$Dropdown$ = (_components$Dropdown = components.Dropdown).onChange) === null || _components$Dropdown$ === void 0 ? void 0 : _components$Dropdown$.call(_components$Dropdown, selectedItem);
|
307
|
-
},
|
308
|
-
light: true
|
309
|
-
}));
|
310
|
-
}
|
311
|
-
};
|
312
118
|
var renderActionSet = function renderActionSet() {
|
313
119
|
return showActionSet && /*#__PURE__*/React.createElement(MotionActionSet, {
|
314
120
|
actions: [{
|
@@ -339,19 +145,16 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
339
145
|
|
340
146
|
/** Effects */
|
341
147
|
useEffect(function liftOpenStateToParent() {
|
342
|
-
if (
|
343
|
-
onPanelOpen(
|
148
|
+
if (panelOpen) {
|
149
|
+
onPanelOpen(panelOpen);
|
344
150
|
} else {
|
345
|
-
onPanelClose(
|
151
|
+
onPanelClose(panelOpen);
|
346
152
|
}
|
347
|
-
}, [
|
153
|
+
}, [panelOpen, onPanelClose, onPanelOpen]);
|
348
154
|
useEffect(function setPanelMinimumHeight() {
|
349
155
|
var _filterPanelRef$curre;
|
350
156
|
(_filterPanelRef$curre = filterPanelRef.current) === null || _filterPanelRef$curre === void 0 ? void 0 : _filterPanelRef$curre.style.setProperty('--filter-panel-min-height', rem(filterPanelMinHeight));
|
351
157
|
}, [filterPanelMinHeight]);
|
352
|
-
useEffect(function updateDisabledButtonsState() {
|
353
|
-
setShouldDisableButtons(isEqual(filtersState, JSON.parse(prevFiltersRef.current)));
|
354
|
-
}, [filtersState]);
|
355
158
|
useSubscribeToEventEmitter(CLEAR_FILTERS, reset);
|
356
159
|
var getScrollableContainerHeight = function getScrollableContainerHeight() {
|
357
160
|
var _filterHeadingRef$cur, _filterSearchRef$curr, _actionSetRef$current;
|
@@ -363,9 +166,9 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
363
166
|
};
|
364
167
|
return /*#__PURE__*/React.createElement(motion.div, {
|
365
168
|
ref: filterPanelRef,
|
366
|
-
className: cx(componentClass, "".concat(componentClass, "__container"), (_cx = {}, _defineProperty(_cx, "".concat(componentClass, "--open"),
|
169
|
+
className: cx(componentClass, "".concat(componentClass, "__container"), (_cx = {}, _defineProperty(_cx, "".concat(componentClass, "--open"), panelOpen), _defineProperty(_cx, "".concat(componentClass, "--batch"), showActionSet), _defineProperty(_cx, "".concat(componentClass, "--instant"), !showActionSet), _cx)),
|
367
170
|
initial: false,
|
368
|
-
animate:
|
171
|
+
animate: panelOpen ? 'visible' : 'hidden',
|
369
172
|
variants: panelVariants
|
370
173
|
}, /*#__PURE__*/React.createElement(motion.div, {
|
371
174
|
variants: innerContainerVariants
|
@@ -396,25 +199,25 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
396
199
|
height: getScrollableContainerHeight()
|
397
200
|
},
|
398
201
|
onScroll: onInnerContainerScroll
|
399
|
-
}, filterSections.map(function (
|
400
|
-
var
|
401
|
-
categoryTitle =
|
402
|
-
|
403
|
-
filters =
|
404
|
-
hasAccordion =
|
202
|
+
}, filterSections.map(function (_ref2) {
|
203
|
+
var _ref2$categoryTitle = _ref2.categoryTitle,
|
204
|
+
categoryTitle = _ref2$categoryTitle === void 0 ? null : _ref2$categoryTitle,
|
205
|
+
_ref2$filters = _ref2.filters,
|
206
|
+
filters = _ref2$filters === void 0 ? [] : _ref2$filters,
|
207
|
+
hasAccordion = _ref2.hasAccordion;
|
405
208
|
return /*#__PURE__*/React.createElement("div", {
|
406
209
|
className: "".concat(componentClass, "__category")
|
407
210
|
}, categoryTitle && /*#__PURE__*/React.createElement("div", {
|
408
211
|
className: "".concat(componentClass, "__category-title")
|
409
|
-
}, categoryTitle), hasAccordion ? /*#__PURE__*/React.createElement(Accordion, null, filters.map(function (
|
410
|
-
var filterLabel =
|
411
|
-
filter =
|
212
|
+
}, categoryTitle), hasAccordion ? /*#__PURE__*/React.createElement(Accordion, null, filters.map(function (_ref3) {
|
213
|
+
var filterLabel = _ref3.filterLabel,
|
214
|
+
filter = _ref3.filter;
|
412
215
|
return /*#__PURE__*/React.createElement(AccordionItem, {
|
413
216
|
title: filterLabel,
|
414
217
|
key: filterLabel
|
415
218
|
}, renderFilter(filter));
|
416
|
-
})) : filters.map(function (
|
417
|
-
var filter =
|
219
|
+
})) : filters.map(function (_ref4) {
|
220
|
+
var filter = _ref4.filter;
|
418
221
|
return renderFilter(filter);
|
419
222
|
}));
|
420
223
|
})), renderActionSet()));
|
@@ -65,13 +65,13 @@ export var FilterProvider = function FilterProvider(_ref2) {
|
|
65
65
|
var filterTags = prepareFiltersForTags(filters);
|
66
66
|
var _useState = useState(false),
|
67
67
|
_useState2 = _slicedToArray(_useState, 2),
|
68
|
-
|
69
|
-
|
68
|
+
panelOpen = _useState2[0],
|
69
|
+
setPanelOpen = _useState2[1];
|
70
70
|
var value = {
|
71
71
|
filterTags: filterTags,
|
72
72
|
EventEmitter: EventEmitter,
|
73
|
-
|
74
|
-
|
73
|
+
panelOpen: panelOpen,
|
74
|
+
setPanelOpen: setPanelOpen
|
75
75
|
};
|
76
76
|
return /*#__PURE__*/React.createElement(FilterContext.Provider, {
|
77
77
|
value: value
|
@@ -1,2 +1,11 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright IBM Corp. 2022, 2023
|
3
|
+
*
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
|
1
8
|
export { default as useInitialStateFromFilters } from './useInitialStateFromFilters';
|
2
|
-
export { default as useSubscribeToEventEmitter } from './useSubscribeToEventEmitter';
|
9
|
+
export { default as useSubscribeToEventEmitter } from './useSubscribeToEventEmitter';
|
10
|
+
export { default as useShouldDisableButtons } from './useShouldDisableButtons';
|
11
|
+
export { default as useFilters } from './useFilters';
|