@carbon/ibm-products 2.0.1 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/index-full-carbon.css +192 -56
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +3 -3
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +53 -10
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +1 -1
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +68 -28
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +3 -3
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +97 -27
- package/css/index.css.map +1 -1
- package/css/index.min.css +3 -3
- package/css/index.min.css.map +1 -1
- package/es/components/AboutModal/AboutModal.js +1 -3
- package/es/components/ActionBar/ActionBar.js +2 -6
- package/es/components/AddSelect/AddSelectFormControl.js +6 -6
- package/es/components/AddSelect/AddSelectRow.js +15 -5
- package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -6
- package/es/components/ButtonMenu/ButtonMenu.js +4 -4
- 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 +34 -36
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +20 -24
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +0 -1
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +44 -15
- package/es/components/Datagrid/useFiltering.js +1 -1
- package/es/components/Datagrid/useStickyColumn.js +10 -3
- package/es/components/PageHeader/PageHeader.js +2 -6
- package/es/components/SidePanel/SidePanel.js +1 -3
- package/es/components/TagSet/TagSet.js +4 -7
- package/es/components/UserProfileImage/UserProfileImage.js +13 -2
- package/es/global/js/hooks/useResizeObserver.js +14 -28
- package/lib/components/AboutModal/AboutModal.js +1 -3
- package/lib/components/ActionBar/ActionBar.js +2 -6
- package/lib/components/AddSelect/AddSelectFormControl.js +6 -6
- package/lib/components/AddSelect/AddSelectRow.js +15 -5
- package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -6
- package/lib/components/ButtonMenu/ButtonMenu.js +4 -4
- 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 +20 -24
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +0 -7
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +42 -13
- package/lib/components/Datagrid/useFiltering.js +1 -1
- package/lib/components/Datagrid/useStickyColumn.js +10 -3
- package/lib/components/PageHeader/PageHeader.js +2 -6
- package/lib/components/SidePanel/SidePanel.js +1 -3
- package/lib/components/TagSet/TagSet.js +4 -7
- package/lib/components/UserProfileImage/UserProfileImage.js +13 -2
- package/lib/global/js/hooks/useResizeObserver.js +13 -27
- package/package.json +17 -17
- package/scss/components/AddSelect/_add-select.scss +4 -0
- package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +0 -1
- package/scss/components/ButtonMenu/_button-menu.scss +32 -1
- package/scss/components/Datagrid/_datagrid.scss +4 -2
- package/scss/components/Datagrid/_storybook-styles.scss +8 -0
- package/scss/components/Datagrid/styles/_datagrid.scss +12 -13
- package/scss/components/NotificationsPanel/_notifications-panel.scss +1 -1
- package/scss/components/PageHeader/_page-header.scss +0 -1
- package/scss/components/SidePanel/_side-panel.scss +0 -2
- package/scss/components/Tearsheet/_tearsheet.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
@@ -47,6 +47,7 @@ var AddSelectRow = function AddSelectRow(_ref) {
|
|
47
47
|
setMultiSelection = _ref.setMultiSelection,
|
48
48
|
setParentSelected = _ref.setParentSelected,
|
49
49
|
setSingleSelection = _ref.setSingleSelection,
|
50
|
+
setSize = _ref.setSize,
|
50
51
|
singleSelection = _ref.singleSelection;
|
51
52
|
var ref = (0, _react.useRef)(null);
|
52
53
|
(0, _react.useEffect)(function () {
|
@@ -129,14 +130,20 @@ var AddSelectRow = function AddSelectRow(_ref) {
|
|
129
130
|
var hasModifiers = (modifiers === null || modifiers === void 0 ? void 0 : (_modifiers$options = modifiers.options) === null || _modifiers$options === void 0 ? void 0 : _modifiers$options.length) > 0;
|
130
131
|
var tabIndex = getTabIndex();
|
131
132
|
var selected = isSelected();
|
133
|
+
var expanded = parentSelected === item.id;
|
132
134
|
return /*#__PURE__*/_react.default.createElement("div", {
|
133
|
-
className: (0, _classnames.default)("".concat(blockClass, "-row"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "-row--selected"), isSelected(
|
135
|
+
className: (0, _classnames.default)("".concat(blockClass, "-row"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "-row--selected"), isSelected()), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "-row-meta--selected"), isInMetaPanel(item.id)), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "-row--active"), expanded), _cx)),
|
134
136
|
onKeyDown: onSelectKeyDown,
|
135
137
|
tabIndex: tabIndex,
|
136
138
|
ref: ref,
|
137
|
-
role: "row"
|
139
|
+
role: "row",
|
140
|
+
"aria-selected": selected,
|
141
|
+
"aria-posinset": index,
|
142
|
+
"aria-setsize": setSize,
|
143
|
+
"aria-expanded": expanded
|
138
144
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
139
|
-
className: "".concat(blockClass, "-cell")
|
145
|
+
className: "".concat(blockClass, "-cell"),
|
146
|
+
role: "gridcell"
|
140
147
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
141
148
|
className: "".concat(blockClass, "-cell-wrapper")
|
142
149
|
}, multi ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_AddSelectFormControl.AddSelectFormControl, {
|
@@ -149,7 +156,7 @@ var AddSelectRow = function AddSelectRow(_ref) {
|
|
149
156
|
type: "inline",
|
150
157
|
items: modifiers.options,
|
151
158
|
label: modifiers.label,
|
152
|
-
disabled: !isSelected(
|
159
|
+
disabled: !isSelected(),
|
153
160
|
className: "".concat(blockClass, "-dropdown"),
|
154
161
|
initialSelectedItem: item[modifiers.id],
|
155
162
|
onChange: function onChange(_ref3) {
|
@@ -174,7 +181,9 @@ var AddSelectRow = function AddSelectRow(_ref) {
|
|
174
181
|
hasIconOnly: true,
|
175
182
|
onClick: onNavigateItem,
|
176
183
|
kind: "ghost",
|
177
|
-
size: "sm"
|
184
|
+
size: "sm",
|
185
|
+
tabIndex: -1,
|
186
|
+
"aria-hidden": true
|
178
187
|
}), item.meta && /*#__PURE__*/_react.default.createElement(_react2.Button, {
|
179
188
|
className: "".concat(blockClass, "-view-meta"),
|
180
189
|
renderIcon: function renderIcon(props) {
|
@@ -212,6 +221,7 @@ AddSelectRow.propTypes = {
|
|
212
221
|
setMultiSelection: _propTypes.default.func,
|
213
222
|
setParentSelected: _propTypes.default.func,
|
214
223
|
setSingleSelection: _propTypes.default.func,
|
224
|
+
setSize: _propTypes.default.number,
|
215
225
|
singleSelection: _propTypes.default.string
|
216
226
|
};
|
217
227
|
AddSelectRow.displayName = componentName;
|
@@ -257,13 +257,9 @@ var BreadcrumbWithOverflow = function BreadcrumbWithOverflow(_ref) {
|
|
257
257
|
}
|
258
258
|
|
259
259
|
// container resize
|
260
|
-
(0, _useResizeObserver.useResizeObserver)(sizingContainerRef,
|
261
|
-
callback: handleResize
|
262
|
-
});
|
260
|
+
(0, _useResizeObserver.useResizeObserver)(sizingContainerRef, handleResize);
|
263
261
|
// item resize
|
264
|
-
(0, _useResizeObserver.useResizeObserver)(breadcrumbItemWithOverflow,
|
265
|
-
callback: handleResize
|
266
|
-
});
|
262
|
+
(0, _useResizeObserver.useResizeObserver)(breadcrumbItemWithOverflow, handleResize);
|
267
263
|
return /*#__PURE__*/_react.default.createElement("div", {
|
268
264
|
className: (0, _classnames.default)(blockClass, className, (0, _defineProperty2.default)({}, "".concat(blockClass, "__with-items"), displayedBreadcrumbItems.length > 1)),
|
269
265
|
ref: breadcrumbItemWithOverflow
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
});
|
7
7
|
exports.ButtonMenu = void 0;
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
9
10
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
10
11
|
var _react = _interopRequireDefault(require("react"));
|
11
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
@@ -58,15 +59,14 @@ var ButtonMenu = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
58
59
|
return /*#__PURE__*/_react.default.createElement(_react2.OverflowMenu, (0, _extends2.default)({}, rest, {
|
59
60
|
className: (0, _classnames.default)(blockClass,
|
60
61
|
// Apply the block class to the main HTML element
|
61
|
-
className // Apply any supplied class names to the main HTML element.
|
62
|
-
),
|
63
|
-
|
62
|
+
className, // Apply any supplied class names to the main HTML element.
|
63
|
+
"".concat(carbonPrefix, "--btn--").concat(size), (0, _defineProperty2.default)({}, "".concat(blockClass, "__wrapper--").concat(kind), kind)),
|
64
64
|
"aria-label": menuAriaLabel,
|
65
65
|
menuOptionsClass: (0, _classnames.default)("".concat(blockClass, "__options"), menuOptionsClass),
|
66
66
|
size: size,
|
67
67
|
renderIcon: function renderIcon() {
|
68
68
|
return /*#__PURE__*/_react.default.createElement("div", {
|
69
|
-
className: (0, _classnames.default)(
|
69
|
+
className: (0, _classnames.default)("".concat(blockClass, "__trigger"))
|
70
70
|
}, label, Icon && /*#__PURE__*/_react.default.createElement(Icon, {
|
71
71
|
"aria-hidden": "true",
|
72
72
|
"aria-label": iconDescription,
|
@@ -145,15 +145,9 @@ var ButtonSetWithOverflow = function ButtonSetWithOverflow(_ref) {
|
|
145
145
|
}, (0, _propsHelper.prepareProps)(other, ['iconDescription', 'renderIcon'])));
|
146
146
|
}).reverse());
|
147
147
|
});
|
148
|
-
(0, _useResizeObserver.useResizeObserver)(sizingContainerRefSet,
|
149
|
-
|
150
|
-
|
151
|
-
(0, _useResizeObserver.useResizeObserver)(sizingContainerRefCombo, {
|
152
|
-
callback: checkFullyVisibleItems
|
153
|
-
});
|
154
|
-
(0, _useResizeObserver.useResizeObserver)(spaceAvailableRef, {
|
155
|
-
callback: checkFullyVisibleItems
|
156
|
-
});
|
148
|
+
(0, _useResizeObserver.useResizeObserver)(sizingContainerRefSet, checkFullyVisibleItems);
|
149
|
+
(0, _useResizeObserver.useResizeObserver)(sizingContainerRefCombo, checkFullyVisibleItems);
|
150
|
+
(0, _useResizeObserver.useResizeObserver)(spaceAvailableRef, checkFullyVisibleItems);
|
157
151
|
return /*#__PURE__*/_react.default.createElement("div", {
|
158
152
|
className: (0, _classnames.default)([blockClass, className, (0, _defineProperty2.default)({}, "".concat(blockClass, "--right"), rightAlign)]),
|
159
153
|
ref: spaceAvailableRef
|
@@ -59,9 +59,7 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
|
|
59
59
|
var gridRefElement = gridRef === null || gridRef === void 0 ? void 0 : gridRef.current;
|
60
60
|
gridRefElement.style.width = gridRefElement === null || gridRefElement === void 0 ? void 0 : gridRefElement.clientWidth;
|
61
61
|
};
|
62
|
-
(0, _useResizeObserver.useResizeObserver)(gridRef,
|
63
|
-
callback: handleVirtualGridResize
|
64
|
-
});
|
62
|
+
(0, _useResizeObserver.useResizeObserver)(gridRef, handleVirtualGridResize);
|
65
63
|
var syncScroll = function syncScroll(e) {
|
66
64
|
var virtualBody = e.target;
|
67
65
|
document.querySelector(".".concat(blockClass, "__head-wrap")).scrollLeft = virtualBody.scrollLeft;
|
@@ -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, _react2.useRef)(initialFilters);
|
62
|
-
|
58
|
+
_ref$reactTableFilter = _ref.reactTableFiltersState,
|
59
|
+
reactTableFiltersState = _ref$reactTableFilter === void 0 ? [] : _ref$reactTableFilter;
|
63
60
|
/** State */
|
64
61
|
var _useState = (0, _react2.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, _react2.useRef)(null);
|
@@ -117,26 +116,10 @@ var FilterFlyout = function FilterFlyout(_ref) {
|
|
117
116
|
// updates the ref so next time the flyout opens we have records of the previous filters
|
118
117
|
prevFiltersRef.current = JSON.stringify(filtersState);
|
119
118
|
prevFiltersObjectArrayRef.current = JSON.stringify(filtersObjectArray);
|
120
|
-
};
|
121
|
-
var cancel = function cancel() {
|
122
|
-
// Reverting to previous filters only applies when using batch actions
|
123
|
-
if (updateMethod === _constants.BATCH) {
|
124
|
-
revertToPreviousFilters();
|
125
|
-
onCancel();
|
126
|
-
}
|
127
|
-
closeFlyout();
|
128
|
-
};
|
129
119
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
var hasClickedOnDropdown = target.className === "".concat(carbonPrefix, "--list-box__menu-item__option");
|
134
|
-
if (!open || hasClickedOnDatePicker || hasClickedOnDropdown) {
|
135
|
-
return;
|
136
|
-
}
|
137
|
-
cancel();
|
138
|
-
});
|
139
|
-
(0, _hooks2.useSubscribeToEventEmitter)(_constants.CLEAR_FILTERS, reset);
|
120
|
+
// Update the last applied filters
|
121
|
+
lastAppliedFilters.current = JSON.stringify(filtersObjectArray);
|
122
|
+
};
|
140
123
|
|
141
124
|
/** Renders all filters */
|
142
125
|
var renderFilters = function renderFilters() {
|
@@ -163,6 +146,21 @@ var FilterFlyout = function FilterFlyout(_ref) {
|
|
163
146
|
buttonSize: "md"
|
164
147
|
});
|
165
148
|
};
|
149
|
+
|
150
|
+
/** Effects */
|
151
|
+
(0, _hooks.useClickOutside)(filterFlyoutRef, function (target) {
|
152
|
+
var hasClickedOnDatePicker = target.closest('.flatpickr-calendar');
|
153
|
+
var hasClickedOnDropdown = target.className === "".concat(carbonPrefix, "--list-box__menu-item__option");
|
154
|
+
if (!open || hasClickedOnDatePicker || hasClickedOnDropdown) {
|
155
|
+
return;
|
156
|
+
}
|
157
|
+
closeFlyout();
|
158
|
+
cancel();
|
159
|
+
});
|
160
|
+
(0, _hooks2.useSubscribeToEventEmitter)(_constants.CLEAR_FILTERS, reset);
|
161
|
+
(0, _react2.useEffect)(function reflectLastAppliedFiltersWhenReactTableUpdates() {
|
162
|
+
lastAppliedFilters.current = JSON.stringify(reactTableFiltersState);
|
163
|
+
}, [reactTableFiltersState, lastAppliedFilters]);
|
166
164
|
return /*#__PURE__*/_react2.default.createElement("div", {
|
167
165
|
className: "".concat(componentClass, "__container")
|
168
166
|
}, /*#__PURE__*/_react2.default.createElement(_react.Button, {
|
@@ -206,14 +204,6 @@ FilterFlyout.propTypes = {
|
|
206
204
|
* Icon description for the filter flyout button
|
207
205
|
*/
|
208
206
|
flyoutIconDescription: _propTypes.default.string,
|
209
|
-
/**
|
210
|
-
* Filters that should be applied on load
|
211
|
-
*/
|
212
|
-
initialFilters: _propTypes.default.arrayOf(_propTypes.default.shape({
|
213
|
-
id: _propTypes.default.string.isRequired,
|
214
|
-
type: _propTypes.default.string.isRequired,
|
215
|
-
value: _propTypes.default.any.isRequired
|
216
|
-
})),
|
217
207
|
/**
|
218
208
|
* Callback when the apply button is clicked
|
219
209
|
*/
|
@@ -234,6 +224,14 @@ FilterFlyout.propTypes = {
|
|
234
224
|
* Label text of the primary action in the flyout
|
235
225
|
*/
|
236
226
|
primaryActionLabel: _propTypes.default.string,
|
227
|
+
/**
|
228
|
+
* Filters from react table's state
|
229
|
+
*/
|
230
|
+
reactTableFiltersState: _propTypes.default.arrayOf(_propTypes.default.shape({
|
231
|
+
id: _propTypes.default.string.isRequired,
|
232
|
+
type: _propTypes.default.string.isRequired,
|
233
|
+
value: _propTypes.default.any.isRequired
|
234
|
+
})),
|
237
235
|
/**
|
238
236
|
* Label text of the secondary action in the flyout
|
239
237
|
*/
|
@@ -66,11 +66,8 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
66
66
|
searchLabelText = _ref$searchLabelText === void 0 ? 'Filter search' : _ref$searchLabelText,
|
67
67
|
_ref$searchPlaceholde = _ref.searchPlaceholder,
|
68
68
|
searchPlaceholder = _ref$searchPlaceholde === void 0 ? 'Find filters' : _ref$searchPlaceholde,
|
69
|
-
_ref$
|
70
|
-
|
71
|
-
// Save the initial filters we only need the filters once
|
72
|
-
var initialFiltersRef = (0, _react.useRef)(initialFilters);
|
73
|
-
|
69
|
+
_ref$reactTableFilter = _ref.reactTableFiltersState,
|
70
|
+
reactTableFiltersState = _ref$reactTableFilter === void 0 ? [] : _ref$reactTableFilter;
|
74
71
|
/** State */
|
75
72
|
var _useState = (0, _react.useState)(false),
|
76
73
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
@@ -81,15 +78,17 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
81
78
|
filters: filterSections,
|
82
79
|
setAllFilters: setAllFilters,
|
83
80
|
variation: _constants.PANEL,
|
84
|
-
|
81
|
+
reactTableFiltersState: reactTableFiltersState,
|
82
|
+
onCancel: onCancel
|
85
83
|
}),
|
86
84
|
filtersState = _useFilters.filtersState,
|
87
85
|
prevFiltersObjectArrayRef = _useFilters.prevFiltersObjectArrayRef,
|
88
86
|
prevFiltersRef = _useFilters.prevFiltersRef,
|
89
|
-
|
87
|
+
cancel = _useFilters.cancel,
|
90
88
|
reset = _useFilters.reset,
|
91
89
|
renderFilter = _useFilters.renderFilter,
|
92
|
-
filtersObjectArray = _useFilters.filtersObjectArray
|
90
|
+
filtersObjectArray = _useFilters.filtersObjectArray,
|
91
|
+
lastAppliedFilters = _useFilters.lastAppliedFilters;
|
93
92
|
|
94
93
|
/** Refs */
|
95
94
|
var filterPanelRef = (0, _react.useRef)();
|
@@ -119,14 +118,8 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
119
118
|
|
120
119
|
/** Methods */
|
121
120
|
var closePanel = function closePanel() {
|
122
|
-
|
123
|
-
|
124
|
-
var cancel = function cancel() {
|
125
|
-
// Reverting to previous filters only applies when using batch actions
|
126
|
-
if (updateMethod === _constants.BATCH) {
|
127
|
-
revertToPreviousFilters();
|
128
|
-
onCancel();
|
129
|
-
}
|
121
|
+
cancel();
|
122
|
+
setPanelOpen(false);
|
130
123
|
};
|
131
124
|
var apply = function apply() {
|
132
125
|
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, {
|
@@ -254,20 +250,20 @@ FilterPanel.propTypes = {
|
|
254
250
|
closeIconDescription: _propTypes.default.string,
|
255
251
|
filterPanelMinHeight: _propTypes.default.number,
|
256
252
|
filterSections: _propTypes.default.array,
|
257
|
-
/**
|
258
|
-
* Filters that should be applied on load
|
259
|
-
*/
|
260
|
-
initialFilters: _propTypes.default.arrayOf(_propTypes.default.shape({
|
261
|
-
id: _propTypes.default.string.isRequired,
|
262
|
-
type: _propTypes.default.string.isRequired,
|
263
|
-
value: _propTypes.default.any.isRequired
|
264
|
-
})),
|
265
253
|
onApply: _propTypes.default.func,
|
266
254
|
onCancel: _propTypes.default.func,
|
267
255
|
onPanelClose: _propTypes.default.func,
|
268
256
|
onPanelOpen: _propTypes.default.func,
|
269
257
|
open: _propTypes.default.bool,
|
270
258
|
primaryActionLabel: _propTypes.default.string,
|
259
|
+
/**
|
260
|
+
* Filters from react table's state
|
261
|
+
*/
|
262
|
+
reactTableFiltersState: _propTypes.default.arrayOf(_propTypes.default.shape({
|
263
|
+
id: _propTypes.default.string.isRequired,
|
264
|
+
type: _propTypes.default.string.isRequired,
|
265
|
+
value: _propTypes.default.any.isRequired
|
266
|
+
})),
|
271
267
|
searchLabelText: _propTypes.default.string,
|
272
268
|
searchPlaceholder: _propTypes.default.string,
|
273
269
|
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 _useFilters = _interopRequireDefault(require("./useFilters"));
|
34
27
|
var _useShouldDisableButtons = _interopRequireDefault(require("./useShouldDisableButtons"));
|
@@ -13,7 +13,6 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
14
14
|
var _react2 = require("@carbon/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; }
|
@@ -31,19 +30,22 @@ var useFilters = function useFilters(_ref) {
|
|
31
30
|
filters = _ref$filters === void 0 ? [] : _ref$filters,
|
32
31
|
setAllFilters = _ref.setAllFilters,
|
33
32
|
variation = _ref.variation,
|
34
|
-
|
33
|
+
reactTableFiltersState = _ref.reactTableFiltersState,
|
34
|
+
_ref$onCancel = _ref.onCancel,
|
35
|
+
onCancel = _ref$onCancel === void 0 ? function () {} : _ref$onCancel;
|
35
36
|
/** State */
|
36
|
-
var
|
37
|
-
_useInitialStateFromF2 = (0, _slicedToArray2.default)(_useInitialStateFromF, 2),
|
38
|
-
filtersState = _useInitialStateFromF2[0],
|
39
|
-
setFiltersState = _useInitialStateFromF2[1];
|
40
|
-
var _useState = (0, _react.useState)(initialFilters),
|
37
|
+
var _useState = (0, _react.useState)((0, _utils.getInitialStateFromFilters)(filters, variation, reactTableFiltersState)),
|
41
38
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
42
|
-
|
43
|
-
|
39
|
+
filtersState = _useState2[0],
|
40
|
+
setFiltersState = _useState2[1];
|
41
|
+
var _useState3 = (0, _react.useState)(reactTableFiltersState),
|
42
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
43
|
+
filtersObjectArray = _useState4[0],
|
44
|
+
setFiltersObjectArray = _useState4[1];
|
44
45
|
|
45
46
|
// When using batch actions we have to store the filters to then apply them later
|
46
47
|
var prevFiltersRef = (0, _react.useRef)(JSON.stringify(filtersState));
|
48
|
+
var lastAppliedFilters = (0, _react.useRef)(JSON.stringify(reactTableFiltersState));
|
47
49
|
var prevFiltersObjectArrayRef = (0, _react.useRef)(JSON.stringify(filtersObjectArray));
|
48
50
|
|
49
51
|
/** Methods */
|
@@ -52,6 +54,7 @@ var useFilters = function useFilters(_ref) {
|
|
52
54
|
var revertToPreviousFilters = function revertToPreviousFilters() {
|
53
55
|
setFiltersState(JSON.parse(prevFiltersRef.current));
|
54
56
|
setFiltersObjectArray(JSON.parse(prevFiltersObjectArrayRef.current));
|
57
|
+
setAllFilters(JSON.parse(lastAppliedFilters.current));
|
55
58
|
};
|
56
59
|
var reset = function reset() {
|
57
60
|
// When we reset we want the "initialFilters" to be an empty array
|
@@ -163,8 +166,11 @@ var useFilters = function useFilters(_ref) {
|
|
163
166
|
var type = _ref3.type,
|
164
167
|
column = _ref3.column,
|
165
168
|
components = _ref3.props;
|
166
|
-
var isPanel = variation === _constants.PANEL;
|
167
169
|
var filter;
|
170
|
+
var isPanel = variation === _constants.PANEL;
|
171
|
+
if (!type) {
|
172
|
+
return console.error("type: ".concat(type, "; does not exist as a type of filter."));
|
173
|
+
}
|
168
174
|
switch (type) {
|
169
175
|
case _constants.DATE:
|
170
176
|
filter = /*#__PURE__*/_react.default.createElement(_react2.DatePicker, (0, _extends2.default)({}, components.DatePicker, {
|
@@ -290,10 +296,31 @@ var useFilters = function useFilters(_ref) {
|
|
290
296
|
break;
|
291
297
|
}
|
292
298
|
if (isPanel) {
|
293
|
-
return /*#__PURE__*/_react.default.createElement(_react2.Layer,
|
299
|
+
return /*#__PURE__*/_react.default.createElement(_react2.Layer, {
|
300
|
+
key: column
|
301
|
+
}, filter);
|
294
302
|
}
|
295
|
-
return
|
303
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
|
304
|
+
key: column
|
305
|
+
}, filter);
|
296
306
|
};
|
307
|
+
var cancel = function cancel() {
|
308
|
+
// Reverting to previous filters only applies when using batch actions
|
309
|
+
if (updateMethod === _constants.BATCH) {
|
310
|
+
revertToPreviousFilters();
|
311
|
+
onCancel();
|
312
|
+
}
|
313
|
+
};
|
314
|
+
|
315
|
+
/** The purpose of this function is to sync any changes in react-tables state.filters array and reflect
|
316
|
+
those new filter changes in the panel/flyout state. The external change is triggered if setAllFilters is called outside of the Datagrid */
|
317
|
+
(0, _react.useEffect)(function updateStateAndFiltersToReflectExternalFilterChanges() {
|
318
|
+
var newFiltersState = (0, _utils.getInitialStateFromFilters)(filters, variation, reactTableFiltersState);
|
319
|
+
setFiltersState(newFiltersState);
|
320
|
+
prevFiltersRef.current = JSON.stringify(newFiltersState);
|
321
|
+
prevFiltersObjectArrayRef.current = JSON.stringify(reactTableFiltersState);
|
322
|
+
setFiltersObjectArray(reactTableFiltersState);
|
323
|
+
}, [filters, reactTableFiltersState, variation]);
|
297
324
|
return {
|
298
325
|
filtersState: filtersState,
|
299
326
|
setFiltersState: setFiltersState,
|
@@ -302,7 +329,9 @@ var useFilters = function useFilters(_ref) {
|
|
302
329
|
revertToPreviousFilters: revertToPreviousFilters,
|
303
330
|
reset: reset,
|
304
331
|
renderFilter: renderFilter,
|
305
|
-
filtersObjectArray: filtersObjectArray
|
332
|
+
filtersObjectArray: filtersObjectArray,
|
333
|
+
lastAppliedFilters: lastAppliedFilters,
|
334
|
+
cancel: cancel
|
306
335
|
};
|
307
336
|
};
|
308
337
|
var _default = useFilters;
|
@@ -79,7 +79,7 @@ var useFiltering = function useFiltering(hooks) {
|
|
79
79
|
variation: 'flyout',
|
80
80
|
updateMethod: _constants.BATCH,
|
81
81
|
panelIconDescription: 'Open filter panel',
|
82
|
-
|
82
|
+
reactTableFiltersState: state.filters
|
83
83
|
};
|
84
84
|
var getFilterFlyoutProps = function getFilterFlyoutProps() {
|
85
85
|
return _objectSpread(_objectSpread(_objectSpread({}, defaultProps), filterProps), {}, {
|
@@ -26,10 +26,13 @@ var OFFSET_SCROLL_CLASS = "".concat(styleClassPrefix, "-offset-scroll");
|
|
26
26
|
var useStickyColumn = function useStickyColumn(hooks) {
|
27
27
|
var tableBodyRef = (0, _react.useRef)();
|
28
28
|
var stickyHeaderCellRef = (0, _react.useRef)();
|
29
|
-
var _useState = (0, _react.useState)(
|
29
|
+
var _useState = (0, _react.useState)(null),
|
30
30
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
31
31
|
windowSize = _useState2[0],
|
32
32
|
setWindowSize = _useState2[1];
|
33
|
+
(0, _react.useEffect)(function () {
|
34
|
+
setWindowSize(window.innerWidth);
|
35
|
+
}, []);
|
33
36
|
(0, _react.useLayoutEffect)(function () {
|
34
37
|
function updateSize() {
|
35
38
|
setWindowSize(window.innerWidth);
|
@@ -58,9 +61,13 @@ var useStickyColumn = function useStickyColumn(hooks) {
|
|
58
61
|
headerCellElement.classList.add(OFFSET_SCROLL_CLASS);
|
59
62
|
}
|
60
63
|
var boundListener = (0, _debounce.default)(onBodyResize.bind(null, tableBodyElement, headerCellElement), 250);
|
61
|
-
window
|
64
|
+
if (typeof window !== 'undefined') {
|
65
|
+
window.addEventListener('resize', boundListener);
|
66
|
+
}
|
62
67
|
return function () {
|
63
|
-
window
|
68
|
+
if (typeof window !== 'undefined') {
|
69
|
+
window.removeEventListener('resize', boundListener);
|
70
|
+
}
|
64
71
|
};
|
65
72
|
}, [instance.rows, instance.isFetching]);
|
66
73
|
(0, _react.useEffect)(function () {
|
@@ -320,12 +320,8 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
320
320
|
(0, _PageHeaderUtils.utilSetCollapsed)(collapseHeader, metrics.headerOffset, metrics.headerTopValue);
|
321
321
|
}
|
322
322
|
}, [collapseHeader, metrics.headerOffset, metrics.headerTopValue]);
|
323
|
-
(0, _useResizeObserver.useResizeObserver)(sizingContainerRef,
|
324
|
-
|
325
|
-
});
|
326
|
-
(0, _useResizeObserver.useResizeObserver)(headerRef, {
|
327
|
-
callback: handleResize
|
328
|
-
});
|
323
|
+
(0, _useResizeObserver.useResizeObserver)(sizingContainerRef, handleResizeActionBarColumn);
|
324
|
+
(0, _useResizeObserver.useResizeObserver)(headerRef, handleResize);
|
329
325
|
|
330
326
|
// Determine what form of title to display in the breadcrumb
|
331
327
|
var breadcrumbItemForTitle = (0, _PageHeaderUtils.utilGetBreadcrumbItemForTitle)(_PageHeaderUtils.blockClass, collapseTitle, title);
|
@@ -451,9 +451,7 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
451
451
|
}, title));
|
452
452
|
};
|
453
453
|
var contentRef = ref || sidePanelRef;
|
454
|
-
(0, _useResizeObserver.useResizeObserver)(contentRef,
|
455
|
-
callback: handleResize
|
456
|
-
});
|
454
|
+
(0, _useResizeObserver.useResizeObserver)(contentRef, handleResize);
|
457
455
|
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, {
|
458
456
|
id: "".concat(blockClass, "-outer"),
|
459
457
|
className: mainPanelClassNames,
|
@@ -164,7 +164,8 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
164
164
|
if (sizingTags.length > 0) {
|
165
165
|
var spaceAvailable = tagSetRef.current.offsetWidth;
|
166
166
|
for (var i in sizingTags) {
|
167
|
-
var
|
167
|
+
var _sizingTags$i;
|
168
|
+
var tagWidth = ((_sizingTags$i = sizingTags[i]) === null || _sizingTags$i === void 0 ? void 0 : _sizingTags$i.offsetWidth) || 0;
|
168
169
|
if (spaceAvailable >= tagWidth) {
|
169
170
|
spaceAvailable -= tagWidth;
|
170
171
|
willFit += 1;
|
@@ -206,12 +207,8 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
206
207
|
var handleModalClose = function handleModalClose() {
|
207
208
|
setShowAllModalOpen(false);
|
208
209
|
};
|
209
|
-
(0, _useResizeObserver.useResizeObserver)(sizingContainerRef,
|
210
|
-
|
211
|
-
});
|
212
|
-
(0, _useResizeObserver.useResizeObserver)(tagSetRef, {
|
213
|
-
callback: handleResize
|
214
|
-
});
|
210
|
+
(0, _useResizeObserver.useResizeObserver)(sizingContainerRef, handleSizerTagsResize);
|
211
|
+
(0, _useResizeObserver.useResizeObserver)(tagSetRef, handleResize);
|
215
212
|
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
|
216
213
|
className: (0, _classnames.default)([blockClass, className]),
|
217
214
|
ref: tagSetRef
|
@@ -15,7 +15,7 @@ require("../../global/js/utils/props-helper");
|
|
15
15
|
var _settings = require("../../settings");
|
16
16
|
var _icons = require("@carbon/react/icons");
|
17
17
|
var _react2 = require("@carbon/react");
|
18
|
-
var _excluded = ["backgroundColor", "className", "kind", "icon", "initials", "image", "imageDescription", "size", "theme", "tooltipText"];
|
18
|
+
var _excluded = ["backgroundColor", "className", "kind", "icon", "initials", "image", "imageDescription", "size", "theme", "tooltipText", "tooltipAlignment"];
|
19
19
|
/**
|
20
20
|
* Copyright IBM Corp. 2021, 2021
|
21
21
|
*
|
@@ -31,6 +31,10 @@ var componentName = 'UserProfileImage';
|
|
31
31
|
|
32
32
|
// NOTE: the component SCSS is not imported here: it is rolled up separately.
|
33
33
|
|
34
|
+
// Default values for props
|
35
|
+
var defaults = {
|
36
|
+
tooltipAlignment: 'bottom'
|
37
|
+
};
|
34
38
|
/**
|
35
39
|
* This is a user profile image component which displays an image, or initials or icon for a user.
|
36
40
|
*/
|
@@ -45,6 +49,8 @@ var UserProfileImage = /*#__PURE__*/_react.default.forwardRef(function (_ref, re
|
|
45
49
|
size = _ref.size,
|
46
50
|
theme = _ref.theme,
|
47
51
|
tooltipText = _ref.tooltipText,
|
52
|
+
_ref$tooltipAlignment = _ref.tooltipAlignment,
|
53
|
+
tooltipAlignment = _ref$tooltipAlignment === void 0 ? defaults.tooltipAlignment : _ref$tooltipAlignment,
|
48
54
|
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
49
55
|
var icons = {
|
50
56
|
user: {
|
@@ -124,7 +130,8 @@ var UserProfileImage = /*#__PURE__*/_react.default.forwardRef(function (_ref, re
|
|
124
130
|
return FillItem && (tooltipText ? /*#__PURE__*/_react.default.createElement(_react2.IconButton, {
|
125
131
|
label: tooltipText,
|
126
132
|
className: "".concat(blockClass, "__tooltip"),
|
127
|
-
kind: "ghost"
|
133
|
+
kind: "ghost",
|
134
|
+
align: tooltipAlignment
|
128
135
|
}, renderUserProfileImage()) : renderUserProfileImage());
|
129
136
|
});
|
130
137
|
|
@@ -173,6 +180,10 @@ UserProfileImage.propTypes = {
|
|
173
180
|
* Set theme in which the component will be rendered
|
174
181
|
*/
|
175
182
|
theme: _propTypes.default.oneOf(['light', 'dark']).isRequired,
|
183
|
+
/**
|
184
|
+
* Specify how the trigger should align with the tooltip
|
185
|
+
*/
|
186
|
+
tooltipAlignment: _propTypes.default.oneOf(['top', 'top-left', 'top-right', 'bottom', 'bottom-left', 'bottom-right', 'left', 'right']),
|
176
187
|
/**
|
177
188
|
* Pass in the display name to have it shown on hover
|
178
189
|
*/
|