@carbon/ibm-products 1.63.0 → 1.64.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 +21 -0
- 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 +21 -0
- 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 +21 -0
- 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 -1
- package/es/components/Datagrid/Datagrid/DatagridToolbar.js +2 -2
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +6 -2
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +54 -30
- package/es/components/Datagrid/useFiltering.js +2 -1
- package/es/components/Guidebanner/Guidebanner.js +12 -3
- package/es/components/InlineTip/InlineTip.js +17 -6
- package/lib/components/Datagrid/Datagrid/DatagridContent.js +2 -1
- package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +2 -2
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +6 -2
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +54 -30
- package/lib/components/Datagrid/useFiltering.js +2 -1
- package/lib/components/Guidebanner/Guidebanner.js +12 -3
- package/lib/components/InlineTip/InlineTip.js +17 -6
- package/package.json +2 -2
- package/scss/components/Guidebanner/_guidebanner.scss +25 -0
- package/scss/components/InlineTip/_inline-tip.scss +12 -0
@@ -55,7 +55,9 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
55
55
|
_ref$searchPlaceholde = _ref.searchPlaceholder,
|
56
56
|
searchPlaceholder = _ref$searchPlaceholde === void 0 ? 'Find filters' : _ref$searchPlaceholde,
|
57
57
|
_ref$reactTableFilter = _ref.reactTableFiltersState,
|
58
|
-
reactTableFiltersState = _ref$reactTableFilter === void 0 ? [] : _ref$reactTableFilter
|
58
|
+
reactTableFiltersState = _ref$reactTableFilter === void 0 ? [] : _ref$reactTableFilter,
|
59
|
+
_ref$isFetching = _ref.isFetching,
|
60
|
+
isFetching = _ref$isFetching === void 0 ? false : _ref$isFetching;
|
59
61
|
/** State */
|
60
62
|
var _useState = useState(false),
|
61
63
|
_useState2 = _slicedToArray(_useState, 2),
|
@@ -73,7 +75,8 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
73
75
|
variation: PANEL,
|
74
76
|
reactTableFiltersState: reactTableFiltersState,
|
75
77
|
onCancel: onCancel,
|
76
|
-
panelOpen: panelOpen
|
78
|
+
panelOpen: panelOpen,
|
79
|
+
isFetching: isFetching
|
77
80
|
}),
|
78
81
|
filtersState = _useFilters.filtersState,
|
79
82
|
prevFiltersObjectArrayRef = _useFilters.prevFiltersObjectArrayRef,
|
@@ -238,6 +241,7 @@ FilterPanel.propTypes = {
|
|
238
241
|
closeIconDescription: PropTypes.string,
|
239
242
|
filterPanelMinHeight: PropTypes.number,
|
240
243
|
filterSections: PropTypes.array,
|
244
|
+
isFetching: PropTypes.bool,
|
241
245
|
onApply: PropTypes.func,
|
242
246
|
onCancel: PropTypes.func,
|
243
247
|
onPanelClose: PropTypes.func,
|
@@ -25,16 +25,21 @@ var useFilters = function useFilters(_ref) {
|
|
25
25
|
reactTableFiltersState = _ref.reactTableFiltersState,
|
26
26
|
_ref$onCancel = _ref.onCancel,
|
27
27
|
onCancel = _ref$onCancel === void 0 ? function () {} : _ref$onCancel,
|
28
|
-
panelOpen = _ref.panelOpen
|
28
|
+
panelOpen = _ref.panelOpen,
|
29
|
+
isFetching = _ref.isFetching;
|
29
30
|
/** State */
|
30
31
|
var _useState = useState(getInitialStateFromFilters(filters, variation, reactTableFiltersState)),
|
31
32
|
_useState2 = _slicedToArray(_useState, 2),
|
32
33
|
filtersState = _useState2[0],
|
33
34
|
setFiltersState = _useState2[1];
|
34
|
-
var _useState3 = useState(
|
35
|
+
var _useState3 = useState(false),
|
35
36
|
_useState4 = _slicedToArray(_useState3, 2),
|
36
|
-
|
37
|
-
|
37
|
+
fetchingReset = _useState4[0],
|
38
|
+
setFetchingReset = _useState4[1];
|
39
|
+
var _useState5 = useState(reactTableFiltersState),
|
40
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
41
|
+
filtersObjectArray = _useState6[0],
|
42
|
+
setFiltersObjectArray = _useState6[1];
|
38
43
|
var previousState = usePreviousValue({
|
39
44
|
panelOpen: panelOpen
|
40
45
|
});
|
@@ -77,6 +82,7 @@ var useFilters = function useFilters(_ref) {
|
|
77
82
|
// Update their respective refs so everything is in sync
|
78
83
|
prevFiltersRef.current = JSON.stringify(initialFiltersState);
|
79
84
|
prevFiltersObjectArrayRef.current = JSON.stringify(initialFiltersObjectArray);
|
85
|
+
lastAppliedFilters.current = JSON.stringify([]);
|
80
86
|
}, [filters, setAllFilters, variation]);
|
81
87
|
var applyFilters = function applyFilters(_ref2) {
|
82
88
|
var column = _ref2.column,
|
@@ -167,7 +173,6 @@ var useFilters = function useFilters(_ref) {
|
|
167
173
|
};
|
168
174
|
/** Render the individual filter component */
|
169
175
|
var renderFilter = function renderFilter(_ref3) {
|
170
|
-
var _filtersState$column, _filtersState$column2;
|
171
176
|
var type = _ref3.type,
|
172
177
|
column = _ref3.column,
|
173
178
|
components = _ref3.props;
|
@@ -254,31 +259,36 @@ var useFilters = function useFilters(_ref) {
|
|
254
259
|
}));
|
255
260
|
break;
|
256
261
|
case RADIO:
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
}, radio)
|
281
|
-
|
262
|
+
{
|
263
|
+
var _filtersState$column, _components$DefaultRa, _components$DefaultRa2, _filtersState$column2, _components$DefaultRa3, _components$DefaultRa4, _components$DefaultRa5, _components$DefaultRa6, _components$DefaultRa7, _components$DefaultRa8;
|
264
|
+
var _components$RadioButt = _objectSpread({}, components.RadioButtonGroup),
|
265
|
+
name = _components$RadioButt.name;
|
266
|
+
filter = /*#__PURE__*/React.createElement(FormGroup, components.FormGroup, /*#__PURE__*/React.createElement(RadioButtonGroup, _extends({}, components.RadioButtonGroup, {
|
267
|
+
valueSelected: ((_filtersState$column = filtersState[column]) === null || _filtersState$column === void 0 ? void 0 : _filtersState$column.value) === '' ? (_components$DefaultRa = (_components$DefaultRa2 = components.DefaultRadioButton) === null || _components$DefaultRa2 === void 0 ? void 0 : _components$DefaultRa2.value) !== null && _components$DefaultRa !== void 0 ? _components$DefaultRa : 'Any' : (_filtersState$column2 = filtersState[column]) === null || _filtersState$column2 === void 0 ? void 0 : _filtersState$column2.value,
|
268
|
+
onChange: function onChange(selected) {
|
269
|
+
var _components$RadioButt2, _components$RadioButt3;
|
270
|
+
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
|
271
|
+
value: selected,
|
272
|
+
type: type
|
273
|
+
})));
|
274
|
+
applyFilters({
|
275
|
+
column: column,
|
276
|
+
value: selected,
|
277
|
+
type: type
|
278
|
+
});
|
279
|
+
(_components$RadioButt2 = (_components$RadioButt3 = components.RadioButtonGroup).onChange) === null || _components$RadioButt2 === void 0 ? void 0 : _components$RadioButt2.call(_components$RadioButt3, selected);
|
280
|
+
}
|
281
|
+
}), /*#__PURE__*/React.createElement(RadioButton, _extends({
|
282
|
+
id: (_components$DefaultRa3 = components === null || components === void 0 ? void 0 : (_components$DefaultRa4 = components.DefaultRadioButton) === null || _components$DefaultRa4 === void 0 ? void 0 : _components$DefaultRa4.id) !== null && _components$DefaultRa3 !== void 0 ? _components$DefaultRa3 : "any__".concat(name),
|
283
|
+
labelText: (_components$DefaultRa5 = components === null || components === void 0 ? void 0 : (_components$DefaultRa6 = components.DefaultRadioButton) === null || _components$DefaultRa6 === void 0 ? void 0 : _components$DefaultRa6.labelText) !== null && _components$DefaultRa5 !== void 0 ? _components$DefaultRa5 : 'Any',
|
284
|
+
value: (_components$DefaultRa7 = components === null || components === void 0 ? void 0 : (_components$DefaultRa8 = components.DefaultRadioButton) === null || _components$DefaultRa8 === void 0 ? void 0 : _components$DefaultRa8.value) !== null && _components$DefaultRa7 !== void 0 ? _components$DefaultRa7 : 'Any'
|
285
|
+
}, components.DefaultRadioButton)), 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
|
+
}
|
282
292
|
break;
|
283
293
|
case DROPDOWN:
|
284
294
|
filter = /*#__PURE__*/React.createElement(Dropdown, _extends({}, components.Dropdown, {
|
@@ -325,6 +335,20 @@ var useFilters = function useFilters(_ref) {
|
|
325
335
|
}
|
326
336
|
}
|
327
337
|
}, [panelOpen, previousState, previousState === null || previousState === void 0 ? void 0 : previousState.panelOpen, reset, setAllFilters, revertToPreviousFilters]);
|
338
|
+
|
339
|
+
// Re-applies filters if the Datagrid goes into a fetching state while panel is open
|
340
|
+
// and has had filters changed without applying
|
341
|
+
useEffect(function () {
|
342
|
+
if (isFetching && !fetchingReset) {
|
343
|
+
setFiltersState(JSON.parse(prevFiltersRef.current));
|
344
|
+
setFiltersObjectArray(JSON.parse(prevFiltersRef.current));
|
345
|
+
setAllFilters(JSON.parse(prevFiltersObjectArrayRef.current));
|
346
|
+
setFetchingReset(true);
|
347
|
+
}
|
348
|
+
if (!isFetching) {
|
349
|
+
setFetchingReset(false);
|
350
|
+
}
|
351
|
+
}, [isFetching, reactTableFiltersState, setAllFilters, fetchingReset]);
|
328
352
|
var cancel = function cancel() {
|
329
353
|
// Reverting to previous filters only applies when using batch actions
|
330
354
|
if (updateMethod === BATCH) {
|
@@ -28,7 +28,8 @@ var useFiltering = function useFiltering(hooks) {
|
|
28
28
|
var rowValue = row.values[id];
|
29
29
|
var startDateObj = _typeof(startDate) === 'object' ? startDate : new Date(startDate);
|
30
30
|
var endDateObj = _typeof(endDate) === 'object' ? endDate : new Date(endDate);
|
31
|
-
|
31
|
+
var rowValueDateObj = _typeof(rowValue) === 'object' ? rowValue : new Date(rowValue);
|
32
|
+
if (rowValueDateObj.getTime() <= endDateObj.getTime() && rowValueDateObj.getTime() >= startDateObj.getTime()) {
|
32
33
|
// In date range
|
33
34
|
return true;
|
34
35
|
} else {
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
3
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
4
|
-
var _excluded = ["children", "className", "collapsible", "onClose", "closeIconDescription", "collapseButtonLabel", "expandButtonLabel", "nextIconDescription", "previousIconDescription", "title"];
|
4
|
+
var _excluded = ["children", "className", "collapsible", "onClose", "withLeftGutter", "closeIconDescription", "collapseButtonLabel", "expandButtonLabel", "nextIconDescription", "previousIconDescription", "title"];
|
5
5
|
/**
|
6
6
|
* Copyright IBM Corp. 2023, 2023
|
7
7
|
*
|
@@ -30,6 +30,7 @@ var blockClass = "".concat(pkg.prefix, "--guidebanner");
|
|
30
30
|
var componentName = 'Guidebanner';
|
31
31
|
var defaults = {
|
32
32
|
collapsible: false,
|
33
|
+
withLeftGutter: false,
|
33
34
|
// Labels
|
34
35
|
closeIconDescription: 'Close',
|
35
36
|
collapseButtonLabel: 'Read less',
|
@@ -48,6 +49,8 @@ export var Guidebanner = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
48
49
|
_ref$collapsible = _ref.collapsible,
|
49
50
|
collapsible = _ref$collapsible === void 0 ? defaults.collapsible : _ref$collapsible,
|
50
51
|
onClose = _ref.onClose,
|
52
|
+
_ref$withLeftGutter = _ref.withLeftGutter,
|
53
|
+
withLeftGutter = _ref$withLeftGutter === void 0 ? defaults.withLeftGutter : _ref$withLeftGutter,
|
51
54
|
_ref$closeIconDescrip = _ref.closeIconDescription,
|
52
55
|
closeIconDescription = _ref$closeIconDescrip === void 0 ? defaults.closeIconDescription : _ref$closeIconDescrip,
|
53
56
|
_ref$collapseButtonLa = _ref.collapseButtonLabel,
|
@@ -83,7 +86,7 @@ export var Guidebanner = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
83
86
|
};
|
84
87
|
return /*#__PURE__*/React.createElement("div", _extends({}, rest, {
|
85
88
|
"aria-expanded": !isCollapsed,
|
86
|
-
className: cx(blockClass, className,
|
89
|
+
className: cx(blockClass, className, collapsible && "".concat(blockClass, "__collapsible"), isCollapsed && "".concat(blockClass, "__collapsible-collapsed"), withLeftGutter && "".concat(blockClass, "__with-left-gutter")),
|
87
90
|
ref: ref
|
88
91
|
}, getDevtoolsProps(componentName)), /*#__PURE__*/React.createElement(Idea20, {
|
89
92
|
className: "".concat(blockClass, "__icon-idea")
|
@@ -222,5 +225,11 @@ Guidebanner.propTypes = {
|
|
222
225
|
/**
|
223
226
|
* Title text.
|
224
227
|
*/
|
225
|
-
title: PropTypes.string.isRequired
|
228
|
+
title: PropTypes.string.isRequired,
|
229
|
+
/**
|
230
|
+
* If true, insert 1 rem of "space" on the left of the component.
|
231
|
+
* This will allow the component's content to line up with other
|
232
|
+
* content on the page under special circumstances.
|
233
|
+
*/
|
234
|
+
withLeftGutter: PropTypes.bool
|
226
235
|
};
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
3
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
4
|
-
var _excluded = ["children", "className", "closeIconDescription", "collapsible", "collapseButtonLabel", "expandButtonLabel", "narrow", "onClick", "onClose", "tertiaryButtonLabel", "
|
4
|
+
var _excluded = ["action", "children", "className", "closeIconDescription", "collapsible", "collapseButtonLabel", "expandButtonLabel", "media", "narrow", "onClick", "onClose", "tertiaryButtonLabel", "title", "withLeftGutter"];
|
5
5
|
/**
|
6
6
|
* Copyright IBM Corp. 2023, 2023
|
7
7
|
*
|
@@ -48,6 +48,7 @@ var defaults = {
|
|
48
48
|
collapseButtonLabel: 'Read less',
|
49
49
|
expandButtonLabel: 'Read more',
|
50
50
|
narrow: false,
|
51
|
+
withLeftGutter: false,
|
51
52
|
onClick: function onClick() {},
|
52
53
|
onClose: function onClose() {}
|
53
54
|
};
|
@@ -56,7 +57,8 @@ var defaults = {
|
|
56
57
|
* TODO: A description of the component.
|
57
58
|
*/
|
58
59
|
export var InlineTip = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
59
|
-
var
|
60
|
+
var action = _ref.action,
|
61
|
+
children = _ref.children,
|
60
62
|
className = _ref.className,
|
61
63
|
_ref$closeIconDescrip = _ref.closeIconDescription,
|
62
64
|
closeIconDescription = _ref$closeIconDescrip === void 0 ? defaults.closeIconDescription : _ref$closeIconDescrip,
|
@@ -66,15 +68,16 @@ export var InlineTip = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
66
68
|
collapseButtonLabel = _ref$collapseButtonLa === void 0 ? defaults.collapseButtonLabel : _ref$collapseButtonLa,
|
67
69
|
_ref$expandButtonLabe = _ref.expandButtonLabel,
|
68
70
|
expandButtonLabel = _ref$expandButtonLabe === void 0 ? defaults.expandButtonLabel : _ref$expandButtonLabe,
|
71
|
+
media = _ref.media,
|
69
72
|
_ref$narrow = _ref.narrow,
|
70
73
|
narrow = _ref$narrow === void 0 ? defaults.narrow : _ref$narrow,
|
71
74
|
onClick = _ref.onClick,
|
72
75
|
onClose = _ref.onClose,
|
73
76
|
tertiaryButtonLabel = _ref.tertiaryButtonLabel,
|
74
|
-
action = _ref.action,
|
75
77
|
_ref$title = _ref.title,
|
76
78
|
title = _ref$title === void 0 ? defaults.title : _ref$title,
|
77
|
-
|
79
|
+
_ref$withLeftGutter = _ref.withLeftGutter,
|
80
|
+
withLeftGutter = _ref$withLeftGutter === void 0 ? defaults.withLeftGutter : _ref$withLeftGutter,
|
78
81
|
rest = _objectWithoutProperties(_ref, _excluded);
|
79
82
|
var _useState = useState(collapsible),
|
80
83
|
_useState2 = _slicedToArray(_useState, 2),
|
@@ -101,7 +104,7 @@ export var InlineTip = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
101
104
|
// Apply the block class to the main HTML element
|
102
105
|
className,
|
103
106
|
// Apply any supplied class names to the main HTML element.
|
104
|
-
|
107
|
+
collapsible && "".concat(blockClass, "__collapsible"), isCollapsed && "".concat(blockClass, "__collapsible-collapsed"), media && "".concat(blockClass, "__has-media"), [narrow ? "".concat(blockClass, "__narrow") : "".concat(blockClass, "__wide")], withLeftGutter && !narrow && "".concat(blockClass, "__with-left-gutter")),
|
105
108
|
ref: ref,
|
106
109
|
role: "complementary"
|
107
110
|
}, getDevtoolsProps(componentName)), /*#__PURE__*/React.createElement(Button, {
|
@@ -228,5 +231,13 @@ InlineTip.propTypes = {
|
|
228
231
|
/**
|
229
232
|
* The title of the InlineTip.
|
230
233
|
*/
|
231
|
-
title: PropTypes.string.isRequired
|
234
|
+
title: PropTypes.string.isRequired,
|
235
|
+
/**
|
236
|
+
* If true, insert 1 rem of "space" on the left of the component.
|
237
|
+
* This will allow the component's content to line up with other
|
238
|
+
* content on the page under special circumstances.
|
239
|
+
*
|
240
|
+
* This will only be applied when `narrow` is false.
|
241
|
+
*/
|
242
|
+
withLeftGutter: PropTypes.bool
|
232
243
|
};
|
@@ -168,7 +168,8 @@ var DatagridContent = function DatagridContent(_ref) {
|
|
168
168
|
updateMethod: "batch"
|
169
169
|
}, getFilterFlyoutProps(), {
|
170
170
|
title: filterProps.panelTitle,
|
171
|
-
filterSections: filterProps.sections
|
171
|
+
filterSections: filterProps.sections,
|
172
|
+
isFetching: isFetching
|
172
173
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
173
174
|
className: "".concat(blockClass, "__table-container-inner")
|
174
175
|
}, renderFilterSummary(), withInlineEdit ? /*#__PURE__*/_react.default.createElement("div", {
|
@@ -154,9 +154,9 @@ var DatagridToolbar = function DatagridToolbar(datagridState) {
|
|
154
154
|
return batchActions && DatagridActions ? /*#__PURE__*/_react.default.createElement("div", {
|
155
155
|
ref: ref,
|
156
156
|
className: (0, _classnames.default)([toolbarClass, "".concat(toolbarClass, "--").concat(getRowHeight)])
|
157
|
-
}, /*#__PURE__*/_react.default.createElement(TableToolbar, null, DatagridActions && DatagridActions
|
157
|
+
}, /*#__PURE__*/_react.default.createElement(TableToolbar, null, DatagridActions && /*#__PURE__*/_react.default.createElement(DatagridActions, datagridState), DatagridBatchActionsToolbar && DatagridBatchActionsToolbar(datagridState, width, ref))) : DatagridActions ? /*#__PURE__*/_react.default.createElement("div", {
|
158
158
|
className: toolbarClass
|
159
|
-
}, /*#__PURE__*/_react.default.createElement(TableToolbar, null, DatagridActions && DatagridActions
|
159
|
+
}, /*#__PURE__*/_react.default.createElement(TableToolbar, null, DatagridActions && /*#__PURE__*/_react.default.createElement(DatagridActions, datagridState), DatagridBatchActions && DatagridBatchActions(datagridState))) : null;
|
160
160
|
};
|
161
161
|
var _default = DatagridToolbar;
|
162
162
|
exports.default = _default;
|
@@ -65,7 +65,9 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
65
65
|
_ref$searchPlaceholde = _ref.searchPlaceholder,
|
66
66
|
searchPlaceholder = _ref$searchPlaceholde === void 0 ? 'Find filters' : _ref$searchPlaceholde,
|
67
67
|
_ref$reactTableFilter = _ref.reactTableFiltersState,
|
68
|
-
reactTableFiltersState = _ref$reactTableFilter === void 0 ? [] : _ref$reactTableFilter
|
68
|
+
reactTableFiltersState = _ref$reactTableFilter === void 0 ? [] : _ref$reactTableFilter,
|
69
|
+
_ref$isFetching = _ref.isFetching,
|
70
|
+
isFetching = _ref$isFetching === void 0 ? false : _ref$isFetching;
|
69
71
|
/** State */
|
70
72
|
var _useState = (0, _react.useState)(false),
|
71
73
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
@@ -83,7 +85,8 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
83
85
|
variation: _constants.PANEL,
|
84
86
|
reactTableFiltersState: reactTableFiltersState,
|
85
87
|
onCancel: onCancel,
|
86
|
-
panelOpen: panelOpen
|
88
|
+
panelOpen: panelOpen,
|
89
|
+
isFetching: isFetching
|
87
90
|
}),
|
88
91
|
filtersState = _useFilters.filtersState,
|
89
92
|
prevFiltersObjectArrayRef = _useFilters.prevFiltersObjectArrayRef,
|
@@ -248,6 +251,7 @@ FilterPanel.propTypes = {
|
|
248
251
|
closeIconDescription: _propTypes.default.string,
|
249
252
|
filterPanelMinHeight: _propTypes.default.number,
|
250
253
|
filterSections: _propTypes.default.array,
|
254
|
+
isFetching: _propTypes.default.bool,
|
251
255
|
onApply: _propTypes.default.func,
|
252
256
|
onCancel: _propTypes.default.func,
|
253
257
|
onPanelClose: _propTypes.default.func,
|
@@ -28,16 +28,21 @@ var useFilters = function useFilters(_ref) {
|
|
28
28
|
reactTableFiltersState = _ref.reactTableFiltersState,
|
29
29
|
_ref$onCancel = _ref.onCancel,
|
30
30
|
onCancel = _ref$onCancel === void 0 ? function () {} : _ref$onCancel,
|
31
|
-
panelOpen = _ref.panelOpen
|
31
|
+
panelOpen = _ref.panelOpen,
|
32
|
+
isFetching = _ref.isFetching;
|
32
33
|
/** State */
|
33
34
|
var _useState = (0, _react.useState)((0, _utils.getInitialStateFromFilters)(filters, variation, reactTableFiltersState)),
|
34
35
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
35
36
|
filtersState = _useState2[0],
|
36
37
|
setFiltersState = _useState2[1];
|
37
|
-
var _useState3 = (0, _react.useState)(
|
38
|
+
var _useState3 = (0, _react.useState)(false),
|
38
39
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
39
|
-
|
40
|
-
|
40
|
+
fetchingReset = _useState4[0],
|
41
|
+
setFetchingReset = _useState4[1];
|
42
|
+
var _useState5 = (0, _react.useState)(reactTableFiltersState),
|
43
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
44
|
+
filtersObjectArray = _useState6[0],
|
45
|
+
setFiltersObjectArray = _useState6[1];
|
41
46
|
var previousState = (0, _hooks.usePreviousValue)({
|
42
47
|
panelOpen: panelOpen
|
43
48
|
});
|
@@ -80,6 +85,7 @@ var useFilters = function useFilters(_ref) {
|
|
80
85
|
// Update their respective refs so everything is in sync
|
81
86
|
prevFiltersRef.current = JSON.stringify(initialFiltersState);
|
82
87
|
prevFiltersObjectArrayRef.current = JSON.stringify(initialFiltersObjectArray);
|
88
|
+
lastAppliedFilters.current = JSON.stringify([]);
|
83
89
|
}, [filters, setAllFilters, variation]);
|
84
90
|
var applyFilters = function applyFilters(_ref2) {
|
85
91
|
var column = _ref2.column,
|
@@ -170,7 +176,6 @@ var useFilters = function useFilters(_ref) {
|
|
170
176
|
};
|
171
177
|
/** Render the individual filter component */
|
172
178
|
var renderFilter = function renderFilter(_ref3) {
|
173
|
-
var _filtersState$column, _filtersState$column2;
|
174
179
|
var type = _ref3.type,
|
175
180
|
column = _ref3.column,
|
176
181
|
components = _ref3.props;
|
@@ -257,31 +262,36 @@ var useFilters = function useFilters(_ref) {
|
|
257
262
|
}));
|
258
263
|
break;
|
259
264
|
case _constants.RADIO:
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
}, radio)
|
284
|
-
|
265
|
+
{
|
266
|
+
var _filtersState$column, _components$DefaultRa, _components$DefaultRa2, _filtersState$column2, _components$DefaultRa3, _components$DefaultRa4, _components$DefaultRa5, _components$DefaultRa6, _components$DefaultRa7, _components$DefaultRa8;
|
267
|
+
var _components$RadioButt = _objectSpread({}, components.RadioButtonGroup),
|
268
|
+
name = _components$RadioButt.name;
|
269
|
+
filter = /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.FormGroup, components.FormGroup, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButtonGroup, (0, _extends2.default)({}, components.RadioButtonGroup, {
|
270
|
+
valueSelected: ((_filtersState$column = filtersState[column]) === null || _filtersState$column === void 0 ? void 0 : _filtersState$column.value) === '' ? (_components$DefaultRa = (_components$DefaultRa2 = components.DefaultRadioButton) === null || _components$DefaultRa2 === void 0 ? void 0 : _components$DefaultRa2.value) !== null && _components$DefaultRa !== void 0 ? _components$DefaultRa : 'Any' : (_filtersState$column2 = filtersState[column]) === null || _filtersState$column2 === void 0 ? void 0 : _filtersState$column2.value,
|
271
|
+
onChange: function onChange(selected) {
|
272
|
+
var _components$RadioButt2, _components$RadioButt3;
|
273
|
+
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
|
274
|
+
value: selected,
|
275
|
+
type: type
|
276
|
+
})));
|
277
|
+
applyFilters({
|
278
|
+
column: column,
|
279
|
+
value: selected,
|
280
|
+
type: type
|
281
|
+
});
|
282
|
+
(_components$RadioButt2 = (_components$RadioButt3 = components.RadioButtonGroup).onChange) === null || _components$RadioButt2 === void 0 ? void 0 : _components$RadioButt2.call(_components$RadioButt3, selected);
|
283
|
+
}
|
284
|
+
}), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, (0, _extends2.default)({
|
285
|
+
id: (_components$DefaultRa3 = components === null || components === void 0 ? void 0 : (_components$DefaultRa4 = components.DefaultRadioButton) === null || _components$DefaultRa4 === void 0 ? void 0 : _components$DefaultRa4.id) !== null && _components$DefaultRa3 !== void 0 ? _components$DefaultRa3 : "any__".concat(name),
|
286
|
+
labelText: (_components$DefaultRa5 = components === null || components === void 0 ? void 0 : (_components$DefaultRa6 = components.DefaultRadioButton) === null || _components$DefaultRa6 === void 0 ? void 0 : _components$DefaultRa6.labelText) !== null && _components$DefaultRa5 !== void 0 ? _components$DefaultRa5 : 'Any',
|
287
|
+
value: (_components$DefaultRa7 = components === null || components === void 0 ? void 0 : (_components$DefaultRa8 = components.DefaultRadioButton) === null || _components$DefaultRa8 === void 0 ? void 0 : _components$DefaultRa8.value) !== null && _components$DefaultRa7 !== void 0 ? _components$DefaultRa7 : 'Any'
|
288
|
+
}, components.DefaultRadioButton)), components.RadioButton.map(function (radio) {
|
289
|
+
var _ref4, _radio$id;
|
290
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, (0, _extends2.default)({
|
291
|
+
key: (_ref4 = (_radio$id = radio.id) !== null && _radio$id !== void 0 ? _radio$id : radio.labelText) !== null && _ref4 !== void 0 ? _ref4 : radio.value
|
292
|
+
}, radio));
|
293
|
+
})));
|
294
|
+
}
|
285
295
|
break;
|
286
296
|
case _constants.DROPDOWN:
|
287
297
|
filter = /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Dropdown, (0, _extends2.default)({}, components.Dropdown, {
|
@@ -328,6 +338,20 @@ var useFilters = function useFilters(_ref) {
|
|
328
338
|
}
|
329
339
|
}
|
330
340
|
}, [panelOpen, previousState, previousState === null || previousState === void 0 ? void 0 : previousState.panelOpen, reset, setAllFilters, revertToPreviousFilters]);
|
341
|
+
|
342
|
+
// Re-applies filters if the Datagrid goes into a fetching state while panel is open
|
343
|
+
// and has had filters changed without applying
|
344
|
+
(0, _react.useEffect)(function () {
|
345
|
+
if (isFetching && !fetchingReset) {
|
346
|
+
setFiltersState(JSON.parse(prevFiltersRef.current));
|
347
|
+
setFiltersObjectArray(JSON.parse(prevFiltersRef.current));
|
348
|
+
setAllFilters(JSON.parse(prevFiltersObjectArrayRef.current));
|
349
|
+
setFetchingReset(true);
|
350
|
+
}
|
351
|
+
if (!isFetching) {
|
352
|
+
setFetchingReset(false);
|
353
|
+
}
|
354
|
+
}, [isFetching, reactTableFiltersState, setAllFilters, fetchingReset]);
|
331
355
|
var cancel = function cancel() {
|
332
356
|
// Reverting to previous filters only applies when using batch actions
|
333
357
|
if (updateMethod === _constants.BATCH) {
|
@@ -28,7 +28,8 @@ var useFiltering = function useFiltering(hooks) {
|
|
28
28
|
var rowValue = row.values[id];
|
29
29
|
var startDateObj = (0, _typeof2.default)(startDate) === 'object' ? startDate : new Date(startDate);
|
30
30
|
var endDateObj = (0, _typeof2.default)(endDate) === 'object' ? endDate : new Date(endDate);
|
31
|
-
|
31
|
+
var rowValueDateObj = (0, _typeof2.default)(rowValue) === 'object' ? rowValue : new Date(rowValue);
|
32
|
+
if (rowValueDateObj.getTime() <= endDateObj.getTime() && rowValueDateObj.getTime() >= startDateObj.getTime()) {
|
32
33
|
// In date range
|
33
34
|
return true;
|
34
35
|
} else {
|
@@ -18,7 +18,7 @@ var _carbonComponentsReact = require("carbon-components-react");
|
|
18
18
|
var _Carousel = require("../Carousel");
|
19
19
|
var _devtools = require("../../global/js/utils/devtools");
|
20
20
|
var _settings = require("../../settings");
|
21
|
-
var _excluded = ["children", "className", "collapsible", "onClose", "closeIconDescription", "collapseButtonLabel", "expandButtonLabel", "nextIconDescription", "previousIconDescription", "title"];
|
21
|
+
var _excluded = ["children", "className", "collapsible", "onClose", "withLeftGutter", "closeIconDescription", "collapseButtonLabel", "expandButtonLabel", "nextIconDescription", "previousIconDescription", "title"];
|
22
22
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
23
23
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
24
24
|
// Carbon and package components we use.
|
@@ -29,6 +29,7 @@ var blockClass = "".concat(_settings.pkg.prefix, "--guidebanner");
|
|
29
29
|
var componentName = 'Guidebanner';
|
30
30
|
var defaults = {
|
31
31
|
collapsible: false,
|
32
|
+
withLeftGutter: false,
|
32
33
|
// Labels
|
33
34
|
closeIconDescription: 'Close',
|
34
35
|
collapseButtonLabel: 'Read less',
|
@@ -47,6 +48,8 @@ var Guidebanner = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
47
48
|
_ref$collapsible = _ref.collapsible,
|
48
49
|
collapsible = _ref$collapsible === void 0 ? defaults.collapsible : _ref$collapsible,
|
49
50
|
onClose = _ref.onClose,
|
51
|
+
_ref$withLeftGutter = _ref.withLeftGutter,
|
52
|
+
withLeftGutter = _ref$withLeftGutter === void 0 ? defaults.withLeftGutter : _ref$withLeftGutter,
|
50
53
|
_ref$closeIconDescrip = _ref.closeIconDescription,
|
51
54
|
closeIconDescription = _ref$closeIconDescrip === void 0 ? defaults.closeIconDescription : _ref$closeIconDescrip,
|
52
55
|
_ref$collapseButtonLa = _ref.collapseButtonLabel,
|
@@ -82,7 +85,7 @@ var Guidebanner = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
82
85
|
};
|
83
86
|
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
|
84
87
|
"aria-expanded": !isCollapsed,
|
85
|
-
className: (0, _classnames.default)(blockClass, className,
|
88
|
+
className: (0, _classnames.default)(blockClass, className, collapsible && "".concat(blockClass, "__collapsible"), isCollapsed && "".concat(blockClass, "__collapsible-collapsed"), withLeftGutter && "".concat(blockClass, "__with-left-gutter")),
|
86
89
|
ref: ref
|
87
90
|
}, (0, _devtools.getDevtoolsProps)(componentName)), /*#__PURE__*/_react.default.createElement(_iconsReact.Idea20, {
|
88
91
|
className: "".concat(blockClass, "__icon-idea")
|
@@ -222,5 +225,11 @@ Guidebanner.propTypes = {
|
|
222
225
|
/**
|
223
226
|
* Title text.
|
224
227
|
*/
|
225
|
-
title: _propTypes.default.string.isRequired
|
228
|
+
title: _propTypes.default.string.isRequired,
|
229
|
+
/**
|
230
|
+
* If true, insert 1 rem of "space" on the left of the component.
|
231
|
+
* This will allow the component's content to line up with other
|
232
|
+
* content on the page under special circumstances.
|
233
|
+
*/
|
234
|
+
withLeftGutter: _propTypes.default.bool
|
226
235
|
};
|
@@ -19,7 +19,7 @@ var _SteppedAnimatedMedia = require("../SteppedAnimatedMedia");
|
|
19
19
|
var _devtools = require("../../global/js/utils/devtools");
|
20
20
|
var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
|
21
21
|
var _settings = require("../../settings");
|
22
|
-
var _excluded = ["children", "className", "closeIconDescription", "collapsible", "collapseButtonLabel", "expandButtonLabel", "narrow", "onClick", "onClose", "tertiaryButtonLabel", "
|
22
|
+
var _excluded = ["action", "children", "className", "closeIconDescription", "collapsible", "collapseButtonLabel", "expandButtonLabel", "media", "narrow", "onClick", "onClose", "tertiaryButtonLabel", "title", "withLeftGutter"];
|
23
23
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
24
24
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
25
25
|
// Carbon and package components we use.
|
@@ -47,6 +47,7 @@ var defaults = {
|
|
47
47
|
collapseButtonLabel: 'Read less',
|
48
48
|
expandButtonLabel: 'Read more',
|
49
49
|
narrow: false,
|
50
|
+
withLeftGutter: false,
|
50
51
|
onClick: function onClick() {},
|
51
52
|
onClose: function onClose() {}
|
52
53
|
};
|
@@ -55,7 +56,8 @@ var defaults = {
|
|
55
56
|
* TODO: A description of the component.
|
56
57
|
*/
|
57
58
|
var InlineTip = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
58
|
-
var
|
59
|
+
var action = _ref.action,
|
60
|
+
children = _ref.children,
|
59
61
|
className = _ref.className,
|
60
62
|
_ref$closeIconDescrip = _ref.closeIconDescription,
|
61
63
|
closeIconDescription = _ref$closeIconDescrip === void 0 ? defaults.closeIconDescription : _ref$closeIconDescrip,
|
@@ -65,15 +67,16 @@ var InlineTip = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
65
67
|
collapseButtonLabel = _ref$collapseButtonLa === void 0 ? defaults.collapseButtonLabel : _ref$collapseButtonLa,
|
66
68
|
_ref$expandButtonLabe = _ref.expandButtonLabel,
|
67
69
|
expandButtonLabel = _ref$expandButtonLabe === void 0 ? defaults.expandButtonLabel : _ref$expandButtonLabe,
|
70
|
+
media = _ref.media,
|
68
71
|
_ref$narrow = _ref.narrow,
|
69
72
|
narrow = _ref$narrow === void 0 ? defaults.narrow : _ref$narrow,
|
70
73
|
onClick = _ref.onClick,
|
71
74
|
onClose = _ref.onClose,
|
72
75
|
tertiaryButtonLabel = _ref.tertiaryButtonLabel,
|
73
|
-
action = _ref.action,
|
74
76
|
_ref$title = _ref.title,
|
75
77
|
title = _ref$title === void 0 ? defaults.title : _ref$title,
|
76
|
-
|
78
|
+
_ref$withLeftGutter = _ref.withLeftGutter,
|
79
|
+
withLeftGutter = _ref$withLeftGutter === void 0 ? defaults.withLeftGutter : _ref$withLeftGutter,
|
77
80
|
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
78
81
|
var _useState = (0, _react.useState)(collapsible),
|
79
82
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
@@ -100,7 +103,7 @@ var InlineTip = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
100
103
|
// Apply the block class to the main HTML element
|
101
104
|
className,
|
102
105
|
// Apply any supplied class names to the main HTML element.
|
103
|
-
|
106
|
+
collapsible && "".concat(blockClass, "__collapsible"), isCollapsed && "".concat(blockClass, "__collapsible-collapsed"), media && "".concat(blockClass, "__has-media"), [narrow ? "".concat(blockClass, "__narrow") : "".concat(blockClass, "__wide")], withLeftGutter && !narrow && "".concat(blockClass, "__with-left-gutter")),
|
104
107
|
ref: ref,
|
105
108
|
role: "complementary"
|
106
109
|
}, (0, _devtools.getDevtoolsProps)(componentName)), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
|
@@ -228,5 +231,13 @@ InlineTip.propTypes = {
|
|
228
231
|
/**
|
229
232
|
* The title of the InlineTip.
|
230
233
|
*/
|
231
|
-
title: _propTypes.default.string.isRequired
|
234
|
+
title: _propTypes.default.string.isRequired,
|
235
|
+
/**
|
236
|
+
* If true, insert 1 rem of "space" on the left of the component.
|
237
|
+
* This will allow the component's content to line up with other
|
238
|
+
* content on the page under special circumstances.
|
239
|
+
*
|
240
|
+
* This will only be applied when `narrow` is false.
|
241
|
+
*/
|
242
|
+
withLeftGutter: _propTypes.default.bool
|
232
243
|
};
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@carbon/ibm-products",
|
3
3
|
"description": "Carbon for IBM Products",
|
4
|
-
"version": "1.
|
4
|
+
"version": "1.64.0",
|
5
5
|
"license": "Apache-2.0",
|
6
6
|
"main": "lib/index.js",
|
7
7
|
"module": "es/index.js",
|
@@ -97,5 +97,5 @@
|
|
97
97
|
"react": "^16.8.6 || ^17.0.1",
|
98
98
|
"react-dom": "^16.8.6 || ^17.0.1"
|
99
99
|
},
|
100
|
-
"gitHead": "
|
100
|
+
"gitHead": "8d199ba7fdf1afcd494af8771abd2483c197d319"
|
101
101
|
}
|