@carbon/ibm-products 1.53.1 → 1.54.2
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/README.md +15 -15
- package/css/index-full-carbon.css +0 -5
- 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 +0 -5
- 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 +0 -5
- 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/AboutModal/AboutModal.js +1 -3
- package/es/components/ActionBar/ActionBar.js +4 -6
- package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -6
- package/es/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +3 -9
- package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +1 -3
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +35 -36
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +22 -26
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +0 -1
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +50 -17
- package/es/components/Datagrid/useFiltering.js +1 -1
- package/es/components/Datagrid/useStickyColumn.js +10 -3
- package/es/components/Datagrid/utils/makeData.js +1 -1
- package/es/components/PageHeader/PageHeader.js +2 -6
- package/es/components/SidePanel/SidePanel.js +1 -3
- package/es/components/TagSet/TagSet.js +2 -6
- package/es/global/js/hooks/useResizeObserver.js +14 -28
- package/es/global/js/utils/story-helper.js +1 -1
- package/lib/components/AboutModal/AboutModal.js +1 -3
- package/lib/components/ActionBar/ActionBar.js +4 -6
- package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -6
- package/lib/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +3 -9
- package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +1 -3
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +33 -35
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +22 -26
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +0 -7
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +48 -15
- package/lib/components/Datagrid/useFiltering.js +1 -1
- package/lib/components/Datagrid/useStickyColumn.js +10 -3
- package/lib/components/Datagrid/utils/makeData.js +1 -1
- package/lib/components/PageHeader/PageHeader.js +2 -6
- package/lib/components/SidePanel/SidePanel.js +1 -3
- package/lib/components/TagSet/TagSet.js +2 -6
- package/lib/global/js/hooks/useResizeObserver.js +13 -27
- package/lib/global/js/utils/story-helper.js +1 -1
- package/package.json +7 -7
- package/scss/components/Datagrid/_storybook-styles.scss +8 -0
- package/scss/components/Datagrid/styles/_datagrid.scss +0 -5
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +0 -21
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +0 -30
|
@@ -55,11 +55,8 @@ var FilterFlyout = function FilterFlyout(_ref) {
|
|
|
55
55
|
setAllFilters = _ref.setAllFilters,
|
|
56
56
|
_ref$data = _ref.data,
|
|
57
57
|
data = _ref$data === void 0 ? [] : _ref$data,
|
|
58
|
-
_ref$
|
|
59
|
-
|
|
60
|
-
// Save the initial filters we only need the filters once when it loads
|
|
61
|
-
var initialFiltersRef = (0, _react.useRef)(initialFilters);
|
|
62
|
-
|
|
58
|
+
_ref$reactTableFilter = _ref.reactTableFiltersState,
|
|
59
|
+
reactTableFiltersState = _ref$reactTableFilter === void 0 ? [] : _ref$reactTableFilter;
|
|
63
60
|
/** State */
|
|
64
61
|
var _useState = (0, _react.useState)(false),
|
|
65
62
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
@@ -70,15 +67,17 @@ var FilterFlyout = function FilterFlyout(_ref) {
|
|
|
70
67
|
filters: filters,
|
|
71
68
|
setAllFilters: setAllFilters,
|
|
72
69
|
variation: _constants.FLYOUT,
|
|
73
|
-
|
|
70
|
+
reactTableFiltersState: reactTableFiltersState,
|
|
71
|
+
onCancel: onCancel
|
|
74
72
|
}),
|
|
75
73
|
filtersState = _useFilters.filtersState,
|
|
76
74
|
prevFiltersObjectArrayRef = _useFilters.prevFiltersObjectArrayRef,
|
|
77
75
|
prevFiltersRef = _useFilters.prevFiltersRef,
|
|
78
|
-
|
|
76
|
+
cancel = _useFilters.cancel,
|
|
79
77
|
reset = _useFilters.reset,
|
|
80
78
|
renderFilter = _useFilters.renderFilter,
|
|
81
|
-
filtersObjectArray = _useFilters.filtersObjectArray
|
|
79
|
+
filtersObjectArray = _useFilters.filtersObjectArray,
|
|
80
|
+
lastAppliedFilters = _useFilters.lastAppliedFilters;
|
|
82
81
|
|
|
83
82
|
/** Refs */
|
|
84
83
|
var filterFlyoutRef = (0, _react.useRef)(null);
|
|
@@ -115,26 +114,10 @@ var FilterFlyout = function FilterFlyout(_ref) {
|
|
|
115
114
|
// updates the ref so next time the flyout opens we have records of the previous filters
|
|
116
115
|
prevFiltersRef.current = JSON.stringify(filtersState);
|
|
117
116
|
prevFiltersObjectArrayRef.current = JSON.stringify(filtersObjectArray);
|
|
118
|
-
};
|
|
119
|
-
var cancel = function cancel() {
|
|
120
|
-
// Reverting to previous filters only applies when using batch actions
|
|
121
|
-
if (updateMethod === _constants.BATCH) {
|
|
122
|
-
revertToPreviousFilters();
|
|
123
|
-
onCancel();
|
|
124
|
-
}
|
|
125
|
-
closeFlyout();
|
|
126
|
-
};
|
|
127
117
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
var hasClickedOnDropdown = target.className === 'bx--list-box__menu-item__option';
|
|
132
|
-
if (!open || hasClickedOnDatePicker || hasClickedOnDropdown) {
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
cancel();
|
|
136
|
-
});
|
|
137
|
-
(0, _hooks2.useSubscribeToEventEmitter)(_constants.CLEAR_FILTERS, reset);
|
|
118
|
+
// Update the last applied filters
|
|
119
|
+
lastAppliedFilters.current = JSON.stringify(filtersObjectArray);
|
|
120
|
+
};
|
|
138
121
|
|
|
139
122
|
/** Renders all filters */
|
|
140
123
|
var renderFilters = function renderFilters() {
|
|
@@ -161,6 +144,21 @@ var FilterFlyout = function FilterFlyout(_ref) {
|
|
|
161
144
|
buttonSize: "md"
|
|
162
145
|
});
|
|
163
146
|
};
|
|
147
|
+
|
|
148
|
+
/** Effects */
|
|
149
|
+
(0, _hooks.useClickOutside)(filterFlyoutRef, function (target) {
|
|
150
|
+
var hasClickedOnDatePicker = target.closest('.flatpickr-calendar');
|
|
151
|
+
var hasClickedOnDropdown = target.className === "".concat(_settings.carbon.prefix, "--list-box__menu-item__option");
|
|
152
|
+
if (!open || hasClickedOnDatePicker || hasClickedOnDropdown) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
closeFlyout();
|
|
156
|
+
cancel();
|
|
157
|
+
});
|
|
158
|
+
(0, _hooks2.useSubscribeToEventEmitter)(_constants.CLEAR_FILTERS, reset);
|
|
159
|
+
(0, _react.useEffect)(function reflectLastAppliedFiltersWhenReactTableUpdates() {
|
|
160
|
+
lastAppliedFilters.current = JSON.stringify(reactTableFiltersState);
|
|
161
|
+
}, [reactTableFiltersState, lastAppliedFilters]);
|
|
164
162
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
165
163
|
className: "".concat(componentClass, "__container")
|
|
166
164
|
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
|
|
@@ -200,14 +198,6 @@ FilterFlyout.propTypes = {
|
|
|
200
198
|
* Icon description for the filter flyout button
|
|
201
199
|
*/
|
|
202
200
|
flyoutIconDescription: _propTypes.default.string,
|
|
203
|
-
/**
|
|
204
|
-
* Filters that should be applied on load
|
|
205
|
-
*/
|
|
206
|
-
initialFilters: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
207
|
-
id: _propTypes.default.string.isRequired,
|
|
208
|
-
type: _propTypes.default.string.isRequired,
|
|
209
|
-
value: _propTypes.default.any.isRequired
|
|
210
|
-
})),
|
|
211
201
|
/**
|
|
212
202
|
* Callback when the apply button is clicked
|
|
213
203
|
*/
|
|
@@ -228,6 +218,14 @@ FilterFlyout.propTypes = {
|
|
|
228
218
|
* Label text of the primary action in the flyout
|
|
229
219
|
*/
|
|
230
220
|
primaryActionLabel: _propTypes.default.string,
|
|
221
|
+
/**
|
|
222
|
+
* Filters from react table's state
|
|
223
|
+
*/
|
|
224
|
+
reactTableFiltersState: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
225
|
+
id: _propTypes.default.string.isRequired,
|
|
226
|
+
type: _propTypes.default.string.isRequired,
|
|
227
|
+
value: _propTypes.default.any.isRequired
|
|
228
|
+
})),
|
|
231
229
|
/**
|
|
232
230
|
* Label text of the secondary action in the flyout
|
|
233
231
|
*/
|
|
@@ -64,11 +64,8 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
|
64
64
|
searchLabelText = _ref$searchLabelText === void 0 ? 'Filter search' : _ref$searchLabelText,
|
|
65
65
|
_ref$searchPlaceholde = _ref.searchPlaceholder,
|
|
66
66
|
searchPlaceholder = _ref$searchPlaceholde === void 0 ? 'Find filters' : _ref$searchPlaceholde,
|
|
67
|
-
_ref$
|
|
68
|
-
|
|
69
|
-
// Save the initial filters we only need the filters once
|
|
70
|
-
var initialFiltersRef = (0, _react.useRef)(initialFilters);
|
|
71
|
-
|
|
67
|
+
_ref$reactTableFilter = _ref.reactTableFiltersState,
|
|
68
|
+
reactTableFiltersState = _ref$reactTableFilter === void 0 ? [] : _ref$reactTableFilter;
|
|
72
69
|
/** State */
|
|
73
70
|
var _useState = (0, _react.useState)(false),
|
|
74
71
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
@@ -79,15 +76,17 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
|
79
76
|
filters: filterSections,
|
|
80
77
|
setAllFilters: setAllFilters,
|
|
81
78
|
variation: _constants.PANEL,
|
|
82
|
-
|
|
79
|
+
reactTableFiltersState: reactTableFiltersState,
|
|
80
|
+
onCancel: onCancel
|
|
83
81
|
}),
|
|
84
82
|
filtersState = _useFilters.filtersState,
|
|
85
83
|
prevFiltersObjectArrayRef = _useFilters.prevFiltersObjectArrayRef,
|
|
86
84
|
prevFiltersRef = _useFilters.prevFiltersRef,
|
|
87
|
-
|
|
85
|
+
cancel = _useFilters.cancel,
|
|
88
86
|
reset = _useFilters.reset,
|
|
89
87
|
renderFilter = _useFilters.renderFilter,
|
|
90
|
-
filtersObjectArray = _useFilters.filtersObjectArray
|
|
88
|
+
filtersObjectArray = _useFilters.filtersObjectArray,
|
|
89
|
+
lastAppliedFilters = _useFilters.lastAppliedFilters;
|
|
91
90
|
|
|
92
91
|
/** Refs */
|
|
93
92
|
var filterPanelRef = (0, _react.useRef)();
|
|
@@ -117,14 +116,8 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
|
117
116
|
|
|
118
117
|
/** Methods */
|
|
119
118
|
var closePanel = function closePanel() {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
var cancel = function cancel() {
|
|
123
|
-
// Reverting to previous filters only applies when using batch actions
|
|
124
|
-
if (updateMethod === _constants.BATCH) {
|
|
125
|
-
revertToPreviousFilters();
|
|
126
|
-
onCancel();
|
|
127
|
-
}
|
|
119
|
+
cancel();
|
|
120
|
+
setPanelOpen(false);
|
|
128
121
|
};
|
|
129
122
|
var apply = function apply() {
|
|
130
123
|
setAllFilters(filtersObjectArray);
|
|
@@ -138,6 +131,9 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
|
138
131
|
// updates the ref so next time the flyout opens we have records of the previous filters
|
|
139
132
|
prevFiltersRef.current = JSON.stringify(filtersState);
|
|
140
133
|
prevFiltersObjectArrayRef.current = JSON.stringify(filtersObjectArray);
|
|
134
|
+
|
|
135
|
+
// Update the last applied filters
|
|
136
|
+
lastAppliedFilters.current = JSON.stringify(filtersObjectArray);
|
|
141
137
|
};
|
|
142
138
|
var renderActionSet = function renderActionSet() {
|
|
143
139
|
return showActionSet && /*#__PURE__*/_react.default.createElement(MotionActionSet, {
|
|
@@ -223,14 +219,14 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
|
223
219
|
height: getScrollableContainerHeight()
|
|
224
220
|
},
|
|
225
221
|
onScroll: onInnerContainerScroll
|
|
226
|
-
}, filterSections.map(function (_ref2) {
|
|
222
|
+
}, filterSections.map(function (_ref2, index) {
|
|
227
223
|
var _ref2$categoryTitle = _ref2.categoryTitle,
|
|
228
224
|
categoryTitle = _ref2$categoryTitle === void 0 ? null : _ref2$categoryTitle,
|
|
229
225
|
_ref2$filters = _ref2.filters,
|
|
230
226
|
filters = _ref2$filters === void 0 ? [] : _ref2$filters,
|
|
231
227
|
hasAccordion = _ref2.hasAccordion;
|
|
232
228
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
233
|
-
key:
|
|
229
|
+
key: index,
|
|
234
230
|
className: "".concat(componentClass, "__category")
|
|
235
231
|
}, categoryTitle && /*#__PURE__*/_react.default.createElement("div", {
|
|
236
232
|
className: "".concat(componentClass, "__category-title")
|
|
@@ -251,20 +247,20 @@ FilterPanel.propTypes = {
|
|
|
251
247
|
closeIconDescription: _propTypes.default.string,
|
|
252
248
|
filterPanelMinHeight: _propTypes.default.number,
|
|
253
249
|
filterSections: _propTypes.default.array,
|
|
254
|
-
/**
|
|
255
|
-
* Filters that should be applied on load
|
|
256
|
-
*/
|
|
257
|
-
initialFilters: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
258
|
-
id: _propTypes.default.string.isRequired,
|
|
259
|
-
type: _propTypes.default.string.isRequired,
|
|
260
|
-
value: _propTypes.default.any.isRequired
|
|
261
|
-
})),
|
|
262
250
|
onApply: _propTypes.default.func,
|
|
263
251
|
onCancel: _propTypes.default.func,
|
|
264
252
|
onPanelClose: _propTypes.default.func,
|
|
265
253
|
onPanelOpen: _propTypes.default.func,
|
|
266
254
|
open: _propTypes.default.bool,
|
|
267
255
|
primaryActionLabel: _propTypes.default.string,
|
|
256
|
+
/**
|
|
257
|
+
* Filters from react table's state
|
|
258
|
+
*/
|
|
259
|
+
reactTableFiltersState: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
260
|
+
id: _propTypes.default.string.isRequired,
|
|
261
|
+
type: _propTypes.default.string.isRequired,
|
|
262
|
+
value: _propTypes.default.any.isRequired
|
|
263
|
+
})),
|
|
268
264
|
searchLabelText: _propTypes.default.string,
|
|
269
265
|
searchPlaceholder: _propTypes.default.string,
|
|
270
266
|
secondaryActionLabel: _propTypes.default.string,
|
|
@@ -10,12 +10,6 @@ Object.defineProperty(exports, "useFilters", {
|
|
|
10
10
|
return _useFilters.default;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
-
Object.defineProperty(exports, "useInitialStateFromFilters", {
|
|
14
|
-
enumerable: true,
|
|
15
|
-
get: function get() {
|
|
16
|
-
return _useInitialStateFromFilters.default;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
13
|
Object.defineProperty(exports, "useShouldDisableButtons", {
|
|
20
14
|
enumerable: true,
|
|
21
15
|
get: function get() {
|
|
@@ -28,7 +22,6 @@ Object.defineProperty(exports, "useSubscribeToEventEmitter", {
|
|
|
28
22
|
return _useSubscribeToEventEmitter.default;
|
|
29
23
|
}
|
|
30
24
|
});
|
|
31
|
-
var _useInitialStateFromFilters = _interopRequireDefault(require("./useInitialStateFromFilters"));
|
|
32
25
|
var _useSubscribeToEventEmitter = _interopRequireDefault(require("./useSubscribeToEventEmitter"));
|
|
33
26
|
var _useShouldDisableButtons = _interopRequireDefault(require("./useShouldDisableButtons"));
|
|
34
27
|
var _useFilters = _interopRequireDefault(require("./useFilters"));
|
|
@@ -13,7 +13,6 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
14
|
var _carbonComponentsReact = require("carbon-components-react");
|
|
15
15
|
var _constants = require("../constants");
|
|
16
|
-
var _useInitialStateFromFilters = _interopRequireDefault(require("./useInitialStateFromFilters"));
|
|
17
16
|
var _utils = require("../utils");
|
|
18
17
|
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); }
|
|
19
18
|
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,19 +24,22 @@ var useFilters = function useFilters(_ref) {
|
|
|
25
24
|
filters = _ref$filters === void 0 ? [] : _ref$filters,
|
|
26
25
|
setAllFilters = _ref.setAllFilters,
|
|
27
26
|
variation = _ref.variation,
|
|
28
|
-
|
|
27
|
+
reactTableFiltersState = _ref.reactTableFiltersState,
|
|
28
|
+
_ref$onCancel = _ref.onCancel,
|
|
29
|
+
onCancel = _ref$onCancel === void 0 ? function () {} : _ref$onCancel;
|
|
29
30
|
/** State */
|
|
30
|
-
var
|
|
31
|
-
_useInitialStateFromF2 = (0, _slicedToArray2.default)(_useInitialStateFromF, 2),
|
|
32
|
-
filtersState = _useInitialStateFromF2[0],
|
|
33
|
-
setFiltersState = _useInitialStateFromF2[1];
|
|
34
|
-
var _useState = (0, _react.useState)(initialFilters),
|
|
31
|
+
var _useState = (0, _react.useState)((0, _utils.getInitialStateFromFilters)(filters, variation, reactTableFiltersState)),
|
|
35
32
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
filtersState = _useState2[0],
|
|
34
|
+
setFiltersState = _useState2[1];
|
|
35
|
+
var _useState3 = (0, _react.useState)(reactTableFiltersState),
|
|
36
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
37
|
+
filtersObjectArray = _useState4[0],
|
|
38
|
+
setFiltersObjectArray = _useState4[1];
|
|
38
39
|
|
|
39
40
|
// When using batch actions we have to store the filters to then apply them later
|
|
40
41
|
var prevFiltersRef = (0, _react.useRef)(JSON.stringify(filtersState));
|
|
42
|
+
var lastAppliedFilters = (0, _react.useRef)(JSON.stringify(reactTableFiltersState));
|
|
41
43
|
var prevFiltersObjectArrayRef = (0, _react.useRef)(JSON.stringify(filtersObjectArray));
|
|
42
44
|
|
|
43
45
|
/** Methods */
|
|
@@ -46,6 +48,7 @@ var useFilters = function useFilters(_ref) {
|
|
|
46
48
|
var revertToPreviousFilters = function revertToPreviousFilters() {
|
|
47
49
|
setFiltersState(JSON.parse(prevFiltersRef.current));
|
|
48
50
|
setFiltersObjectArray(JSON.parse(prevFiltersObjectArrayRef.current));
|
|
51
|
+
setAllFilters(JSON.parse(lastAppliedFilters.current));
|
|
49
52
|
};
|
|
50
53
|
var reset = function reset() {
|
|
51
54
|
// When we reset we want the "initialFilters" to be an empty array
|
|
@@ -157,10 +160,14 @@ var useFilters = function useFilters(_ref) {
|
|
|
157
160
|
var type = _ref3.type,
|
|
158
161
|
column = _ref3.column,
|
|
159
162
|
components = _ref3.props;
|
|
163
|
+
var filter;
|
|
160
164
|
var isPanel = variation === _constants.PANEL;
|
|
165
|
+
if (!type) {
|
|
166
|
+
return console.error("type: ".concat(type, "; does not exist as a type of filter."));
|
|
167
|
+
}
|
|
161
168
|
switch (type) {
|
|
162
169
|
case _constants.DATE:
|
|
163
|
-
|
|
170
|
+
filter = /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.DatePicker, (0, _extends2.default)({}, components.DatePicker, {
|
|
164
171
|
onChange: function onChange(value) {
|
|
165
172
|
var _components$DatePicke, _components$DatePicke2;
|
|
166
173
|
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
|
|
@@ -184,8 +191,9 @@ var useFilters = function useFilters(_ref) {
|
|
|
184
191
|
placeholder: "mm/dd/yyyy",
|
|
185
192
|
labelText: "End date"
|
|
186
193
|
}, components.DatePickerInput.end)));
|
|
194
|
+
break;
|
|
187
195
|
case _constants.NUMBER:
|
|
188
|
-
|
|
196
|
+
filter = /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.NumberInput, (0, _extends2.default)({
|
|
189
197
|
step: 1,
|
|
190
198
|
allowEmpty: true,
|
|
191
199
|
hideSteppers: true
|
|
@@ -206,8 +214,9 @@ var useFilters = function useFilters(_ref) {
|
|
|
206
214
|
value: filtersState[column].value,
|
|
207
215
|
light: isPanel
|
|
208
216
|
}));
|
|
217
|
+
break;
|
|
209
218
|
case _constants.CHECKBOX:
|
|
210
|
-
|
|
219
|
+
filter = /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.FormGroup, components.FormGroup, filtersState[column].value.map(function (option) {
|
|
211
220
|
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, (0, _extends2.default)({
|
|
212
221
|
key: option.labelText
|
|
213
222
|
}, option, {
|
|
@@ -232,8 +241,9 @@ var useFilters = function useFilters(_ref) {
|
|
|
232
241
|
checked: option.selected
|
|
233
242
|
}));
|
|
234
243
|
}));
|
|
244
|
+
break;
|
|
235
245
|
case _constants.RADIO:
|
|
236
|
-
|
|
246
|
+
filter = /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.FormGroup, components.FormGroup, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButtonGroup, (0, _extends2.default)({}, components.RadioButtonGroup, {
|
|
237
247
|
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,
|
|
238
248
|
onChange: function onChange(selected) {
|
|
239
249
|
var _components$RadioButt, _components$RadioButt2;
|
|
@@ -258,8 +268,9 @@ var useFilters = function useFilters(_ref) {
|
|
|
258
268
|
key: (_ref4 = (_radio$id = radio.id) !== null && _radio$id !== void 0 ? _radio$id : radio.labelText) !== null && _ref4 !== void 0 ? _ref4 : radio.value
|
|
259
269
|
}, radio));
|
|
260
270
|
})));
|
|
271
|
+
break;
|
|
261
272
|
case _constants.DROPDOWN:
|
|
262
|
-
|
|
273
|
+
filter = /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Dropdown, (0, _extends2.default)({}, components.Dropdown, {
|
|
263
274
|
items: ['Any'].concat((0, _toConsumableArray2.default)(components.Dropdown.items)),
|
|
264
275
|
selectedItem: filtersState[column].value === '' ? 'Any' : filtersState[column].value,
|
|
265
276
|
onChange: function onChange(_ref5) {
|
|
@@ -279,7 +290,27 @@ var useFilters = function useFilters(_ref) {
|
|
|
279
290
|
light: isPanel
|
|
280
291
|
}));
|
|
281
292
|
}
|
|
293
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
|
|
294
|
+
key: column
|
|
295
|
+
}, filter);
|
|
296
|
+
};
|
|
297
|
+
var cancel = function cancel() {
|
|
298
|
+
// Reverting to previous filters only applies when using batch actions
|
|
299
|
+
if (updateMethod === _constants.BATCH) {
|
|
300
|
+
revertToPreviousFilters();
|
|
301
|
+
onCancel();
|
|
302
|
+
}
|
|
282
303
|
};
|
|
304
|
+
|
|
305
|
+
/** The purpose of this function is to sync any changes in react-tables state.filters array and reflect
|
|
306
|
+
those new filter changes in the panel/flyout state. The external change is triggered if setAllFilters is called outside of the Datagrid */
|
|
307
|
+
(0, _react.useEffect)(function updateStateAndFiltersToReflectExternalFilterChanges() {
|
|
308
|
+
var newFiltersState = (0, _utils.getInitialStateFromFilters)(filters, variation, reactTableFiltersState);
|
|
309
|
+
setFiltersState(newFiltersState);
|
|
310
|
+
prevFiltersRef.current = JSON.stringify(newFiltersState);
|
|
311
|
+
prevFiltersObjectArrayRef.current = JSON.stringify(reactTableFiltersState);
|
|
312
|
+
setFiltersObjectArray(reactTableFiltersState);
|
|
313
|
+
}, [filters, reactTableFiltersState, variation]);
|
|
283
314
|
return {
|
|
284
315
|
filtersState: filtersState,
|
|
285
316
|
setFiltersState: setFiltersState,
|
|
@@ -288,7 +319,9 @@ var useFilters = function useFilters(_ref) {
|
|
|
288
319
|
revertToPreviousFilters: revertToPreviousFilters,
|
|
289
320
|
reset: reset,
|
|
290
321
|
renderFilter: renderFilter,
|
|
291
|
-
filtersObjectArray: filtersObjectArray
|
|
322
|
+
filtersObjectArray: filtersObjectArray,
|
|
323
|
+
lastAppliedFilters: lastAppliedFilters,
|
|
324
|
+
cancel: cancel
|
|
292
325
|
};
|
|
293
326
|
};
|
|
294
327
|
var _default = useFilters;
|
|
@@ -74,7 +74,7 @@ var useFiltering = function useFiltering(hooks) {
|
|
|
74
74
|
variation: 'flyout',
|
|
75
75
|
updateMethod: _constants.BATCH,
|
|
76
76
|
panelIconDescription: 'Open filter panel',
|
|
77
|
-
|
|
77
|
+
reactTableFiltersState: state.filters
|
|
78
78
|
};
|
|
79
79
|
var getFilterFlyoutProps = function getFilterFlyoutProps() {
|
|
80
80
|
return _objectSpread(_objectSpread(_objectSpread({}, defaultProps), filterProps), {}, {
|
|
@@ -20,10 +20,13 @@ var OFFSET_SCROLL_CLASS = "".concat(styleClassPrefix, "-offset-scroll");
|
|
|
20
20
|
var useStickyColumn = function useStickyColumn(hooks) {
|
|
21
21
|
var tableBodyRef = (0, _react.useRef)();
|
|
22
22
|
var stickyHeaderCellRef = (0, _react.useRef)();
|
|
23
|
-
var _useState = (0, _react.useState)(
|
|
23
|
+
var _useState = (0, _react.useState)(null),
|
|
24
24
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
25
25
|
windowSize = _useState2[0],
|
|
26
26
|
setWindowSize = _useState2[1];
|
|
27
|
+
(0, _react.useEffect)(function () {
|
|
28
|
+
setWindowSize(window.innerWidth);
|
|
29
|
+
}, []);
|
|
27
30
|
(0, _react.useLayoutEffect)(function () {
|
|
28
31
|
function updateSize() {
|
|
29
32
|
setWindowSize(window.innerWidth);
|
|
@@ -52,9 +55,13 @@ var useStickyColumn = function useStickyColumn(hooks) {
|
|
|
52
55
|
headerCellElement.classList.add(OFFSET_SCROLL_CLASS);
|
|
53
56
|
}
|
|
54
57
|
var boundListener = (0, _debounce.default)(onBodyResize.bind(null, tableBodyElement, headerCellElement), 250);
|
|
55
|
-
window
|
|
58
|
+
if (typeof window !== 'undefined') {
|
|
59
|
+
window.addEventListener('resize', boundListener);
|
|
60
|
+
}
|
|
56
61
|
return function () {
|
|
57
|
-
window
|
|
62
|
+
if (typeof window !== 'undefined') {
|
|
63
|
+
window.removeEventListener('resize', boundListener);
|
|
64
|
+
}
|
|
58
65
|
};
|
|
59
66
|
}, [instance.rows, instance.isFetching]);
|
|
60
67
|
(0, _react.useEffect)(function () {
|
|
@@ -57,7 +57,7 @@ var getPasswordStrength = function getPasswordStrength() {
|
|
|
57
57
|
var renderDocLink = function renderDocLink() {
|
|
58
58
|
var chance = Math.random();
|
|
59
59
|
var docLinkObj = {
|
|
60
|
-
href: chance > 0.66 ? '
|
|
60
|
+
href: chance > 0.66 ? 'https://carbondesignsystem.com/' : chance > 0.33 ? 'https://pages.github.ibm.com/cdai-design/pal/' : 'https://ibm-products.carbondesignsystem.com/',
|
|
61
61
|
text: chance > 0.66 ? 'Carbon Design System' : chance > 0.33 ? 'Carbon for IBM Products PAL' : 'Carbon for IBM Products storybook'
|
|
62
62
|
};
|
|
63
63
|
return docLinkObj;
|
|
@@ -315,12 +315,8 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
|
315
315
|
(0, _PageHeaderUtils.utilSetCollapsed)(collapseHeader, metrics.headerOffset, metrics.headerTopValue);
|
|
316
316
|
}
|
|
317
317
|
}, [collapseHeader, metrics.headerOffset, metrics.headerTopValue]);
|
|
318
|
-
(0, _useResizeObserver.useResizeObserver)(sizingContainerRef,
|
|
319
|
-
|
|
320
|
-
});
|
|
321
|
-
(0, _useResizeObserver.useResizeObserver)(headerRef, {
|
|
322
|
-
callback: handleResize
|
|
323
|
-
});
|
|
318
|
+
(0, _useResizeObserver.useResizeObserver)(sizingContainerRef, handleResizeActionBarColumn);
|
|
319
|
+
(0, _useResizeObserver.useResizeObserver)(headerRef, handleResize);
|
|
324
320
|
|
|
325
321
|
// Determine what form of title to display in the breadcrumb
|
|
326
322
|
var breadcrumbItemForTitle = (0, _PageHeaderUtils.utilGetBreadcrumbItemForTitle)(_PageHeaderUtils.blockClass, collapseTitle, title);
|
|
@@ -434,9 +434,7 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
|
434
434
|
}, title));
|
|
435
435
|
};
|
|
436
436
|
var contentRef = ref || sidePanelRef;
|
|
437
|
-
(0, _useResizeObserver.useResizeObserver)(contentRef,
|
|
438
|
-
callback: handleResize
|
|
439
|
-
});
|
|
437
|
+
(0, _useResizeObserver.useResizeObserver)(contentRef, handleResize);
|
|
440
438
|
return /*#__PURE__*/_react.default.createElement(_framerMotion.AnimatePresence, null, open && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_framerMotion.motion.div, (0, _extends2.default)({}, (0, _devtools.getDevtoolsProps)(componentName), rest, {
|
|
441
439
|
id: "".concat(blockClass, "-outer"),
|
|
442
440
|
className: mainPanelClassNames,
|
|
@@ -205,12 +205,8 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
|
205
205
|
var handleModalClose = function handleModalClose() {
|
|
206
206
|
setShowAllModalOpen(false);
|
|
207
207
|
};
|
|
208
|
-
(0, _useResizeObserver.useResizeObserver)(sizingContainerRef,
|
|
209
|
-
|
|
210
|
-
});
|
|
211
|
-
(0, _useResizeObserver.useResizeObserver)(tagSetRef, {
|
|
212
|
-
callback: handleResize
|
|
213
|
-
});
|
|
208
|
+
(0, _useResizeObserver.useResizeObserver)(sizingContainerRef, handleSizerTagsResize);
|
|
209
|
+
(0, _useResizeObserver.useResizeObserver)(tagSetRef, handleResize);
|
|
214
210
|
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
|
|
215
211
|
className: (0, _classnames.default)([blockClass, className]),
|
|
216
212
|
ref: tagSetRef
|
|
@@ -14,13 +14,7 @@ var _react = require("react");
|
|
|
14
14
|
* LICENSE file in the root directory of this source tree.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
var useResizeObserver = function useResizeObserver(ref) {
|
|
18
|
-
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
19
|
-
callback: null,
|
|
20
|
-
throttleInterval: 0
|
|
21
|
-
};
|
|
22
|
-
var callback = options.callback,
|
|
23
|
-
throttleInterval = options.throttleInterval;
|
|
17
|
+
var useResizeObserver = function useResizeObserver(ref, callback) {
|
|
24
18
|
var _useState = (0, _react.useState)(0),
|
|
25
19
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
26
20
|
width = _useState2[0],
|
|
@@ -29,8 +23,14 @@ var useResizeObserver = function useResizeObserver(ref) {
|
|
|
29
23
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
30
24
|
height = _useState4[0],
|
|
31
25
|
setHeight = _useState4[1];
|
|
32
|
-
var throttleTimeout = (0, _react.useRef)(null);
|
|
33
26
|
var entriesToHandle = (0, _react.useRef)(null);
|
|
27
|
+
var cb = (0, _react.useRef)(callback);
|
|
28
|
+
(0, _react.useEffect)(function () {
|
|
29
|
+
// ref for callback removes it as dependency fro useLayoutEffect
|
|
30
|
+
// This significantly reduces repeated calls if a function is redefined on every
|
|
31
|
+
// render
|
|
32
|
+
cb.current = callback;
|
|
33
|
+
}, [callback]);
|
|
34
34
|
(0, _react.useLayoutEffect)(function () {
|
|
35
35
|
if (!(ref !== null && ref !== void 0 && ref.current)) {
|
|
36
36
|
return;
|
|
@@ -42,29 +42,15 @@ var useResizeObserver = function useResizeObserver(ref) {
|
|
|
42
42
|
var entry = entriesToHandle.current[0];
|
|
43
43
|
setWidth(entry.contentRect.width);
|
|
44
44
|
setHeight(entry.contentRect.height);
|
|
45
|
-
|
|
46
|
-
callback && callback(entry.contentRect);
|
|
45
|
+
cb.current && cb.current(entry.contentRect);
|
|
47
46
|
};
|
|
48
47
|
var observer = new ResizeObserver(function (entries) {
|
|
49
48
|
// always update entriesToHandle
|
|
50
49
|
entriesToHandle.current = entries;
|
|
51
|
-
|
|
52
|
-
//
|
|
53
|
-
if (throttleTimeout.current === null) {
|
|
54
|
-
// no live timeout set entries to handle and move on
|
|
55
|
-
|
|
56
|
-
// set up throttle
|
|
57
|
-
throttleTimeout.current = setTimeout(function () {
|
|
58
|
-
// do callbacks
|
|
59
|
-
doCallbacks();
|
|
60
|
-
// reset throttle
|
|
61
|
-
throttleTimeout.current = null;
|
|
62
|
-
}, throttleInterval);
|
|
63
|
-
}
|
|
64
|
-
} else {
|
|
65
|
-
// no throttle do callbacks every time
|
|
50
|
+
window.requestAnimationFrame(function () {
|
|
51
|
+
// do callbacks
|
|
66
52
|
doCallbacks();
|
|
67
|
-
}
|
|
53
|
+
});
|
|
68
54
|
});
|
|
69
55
|
|
|
70
56
|
// observe all refs passed
|
|
@@ -74,7 +60,7 @@ var useResizeObserver = function useResizeObserver(ref) {
|
|
|
74
60
|
observer = null;
|
|
75
61
|
};
|
|
76
62
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
77
|
-
}, [ref
|
|
63
|
+
}, [ref]);
|
|
78
64
|
return {
|
|
79
65
|
width: width,
|
|
80
66
|
height: height
|
|
@@ -75,7 +75,7 @@ exports.prepareStory = prepareStory;
|
|
|
75
75
|
var CodesandboxLink = function CodesandboxLink(_ref) {
|
|
76
76
|
var exampleDirectory = _ref.exampleDirectory;
|
|
77
77
|
return /*#__PURE__*/_react.default.createElement("a", {
|
|
78
|
-
href: "https://codesandbox.io/s/github/carbon-design-system/ibm-
|
|
78
|
+
href: "https://codesandbox.io/s/github/carbon-design-system/ibm-products/tree/main_v1/examples/carbon-for-ibm-products/".concat(exampleDirectory)
|
|
79
79
|
}, /*#__PURE__*/_react.default.createElement("img", {
|
|
80
80
|
alt: "Edit on CodeSandbox",
|
|
81
81
|
src: "https://codesandbox.io/static/img/play-codesandbox.svg"
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carbon/ibm-products",
|
|
3
3
|
"description": "Carbon for IBM Products",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.54.2",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "es/index.js",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
|
-
"url": "https://github.com/carbon-design-system/ibm-
|
|
11
|
-
"directory": "packages/
|
|
10
|
+
"url": "https://github.com/carbon-design-system/ibm-products.git",
|
|
11
|
+
"directory": "packages/ibm-products"
|
|
12
12
|
},
|
|
13
|
-
"bugs": "https://github.com/carbon-design-system/ibm-
|
|
13
|
+
"bugs": "https://github.com/carbon-design-system/ibm-products/issues",
|
|
14
14
|
"sideEffects": [
|
|
15
15
|
"**/global/js/utils/props-helper.js",
|
|
16
16
|
"**/*.css",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@babel/cli": "^7.20.7",
|
|
55
55
|
"@babel/core": "^7.20.12",
|
|
56
|
-
"babel-preset-ibm-cloud-cognitive": "^0.14.
|
|
56
|
+
"babel-preset-ibm-cloud-cognitive": "^0.14.28",
|
|
57
57
|
"chalk": "^4.1.2",
|
|
58
58
|
"change-case": "^4.1.2",
|
|
59
59
|
"copyfiles": "^2.4.1",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"fs-extra": "^11.1.0",
|
|
62
62
|
"glob": "^8.1.0",
|
|
63
63
|
"jest": "^29.4.2",
|
|
64
|
-
"jest-config-ibm-cloud-cognitive": "^0.24.
|
|
64
|
+
"jest-config-ibm-cloud-cognitive": "^0.24.15",
|
|
65
65
|
"jest-environment-jsdom": "^29.4.2",
|
|
66
66
|
"namor": "^1.1.2",
|
|
67
67
|
"npm-check-updates": "^16.7.4",
|
|
@@ -95,5 +95,5 @@
|
|
|
95
95
|
"react": "^16.8.6 || ^17.0.1",
|
|
96
96
|
"react-dom": "^16.8.6 || ^17.0.1"
|
|
97
97
|
},
|
|
98
|
-
"gitHead": "
|
|
98
|
+
"gitHead": "0fe7fda6dc556512459ea77c378f6eab333419f6"
|
|
99
99
|
}
|
|
@@ -134,3 +134,11 @@ $block-class: #{$pkg-prefix}--datagrid;
|
|
|
134
134
|
flex: 0 1 calc($spacing-05 * 30);
|
|
135
135
|
margin-right: $spacing-07;
|
|
136
136
|
}
|
|
137
|
+
|
|
138
|
+
.#{$carbon-prefix}--body--with-modal-open {
|
|
139
|
+
.#{$block-class}__mobile-toolbar-modal.#{$carbon-prefix}--modal {
|
|
140
|
+
top: calc($spacing-07 * -1);
|
|
141
|
+
left: calc($spacing-07 * -1);
|
|
142
|
+
width: 100vw;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -575,11 +575,6 @@
|
|
|
575
575
|
width: 100%;
|
|
576
576
|
}
|
|
577
577
|
|
|
578
|
-
.#{$carbon-prefix}--body--with-modal-open .#{$block-class}__grid-container {
|
|
579
|
-
overflow: hidden;
|
|
580
|
-
height: 100vh;
|
|
581
|
-
}
|
|
582
|
-
|
|
583
578
|
.#{$carbon-prefix}--overflow-menu.#{$block-class}__toolbar-menu__trigger {
|
|
584
579
|
flex-shrink: 0;
|
|
585
580
|
background-color: $interactive-01;
|