@carbon/ibm-products 1.10.0 → 1.11.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/css/index-full-carbon.css +249 -218
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +5 -5
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +21 -4
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +2 -2
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +102 -212
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +4 -4
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +219 -212
- package/css/index.css.map +1 -1
- package/css/index.min.css +5 -5
- package/css/index.min.css.map +1 -1
- package/es/components/AddSelect/AddSelect.js +88 -87
- package/es/components/AddSelect/AddSelectColumn.js +193 -19
- package/es/components/AddSelect/AddSelectList.js +5 -5
- package/es/components/AddSelect/AddSelectSidebar.js +3 -15
- package/es/components/AddSelect/add-select-utils.js +64 -0
- package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
- package/es/components/ButtonMenu/ButtonMenu.js +11 -3
- package/es/components/CreateFullPage/CreateFullPageStep.js +4 -4
- package/es/components/CreateTearsheet/CreateTearsheetStep.js +4 -4
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +255 -140
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +37 -38
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +55 -6
- package/es/components/DataSpreadsheet/hooks/useMoveActiveCell.js +27 -0
- package/es/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +28 -0
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +41 -0
- package/es/components/DataSpreadsheet/{checkActiveHeaderCell.js → utils/checkActiveHeaderCell.js} +1 -1
- package/es/components/DataSpreadsheet/{createActiveCellFn.js → utils/createActiveCellFn.js} +20 -9
- package/es/components/DataSpreadsheet/{createCellSelectionArea.js → utils/createCellSelectionArea.js} +8 -4
- package/es/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
- package/es/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
- package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +46 -0
- package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +82 -0
- package/es/components/DataSpreadsheet/utils/removeCellSelections.js +30 -0
- package/es/components/InlineEdit/InlineEdit.js +49 -8
- package/es/components/OptionsTile/OptionsTile.js +20 -20
- package/es/components/OptionsTile/index.js +1 -1
- package/es/components/PageHeader/PageHeader.js +35 -32
- package/es/components/PageHeader/PageHeaderTitle.js +2 -1
- package/es/components/PageHeader/PageHeaderUtils.js +21 -22
- package/es/components/index.js +0 -1
- package/es/global/js/package-settings.js +1 -2
- package/lib/components/AddSelect/AddSelect.js +91 -87
- package/lib/components/AddSelect/AddSelectColumn.js +193 -16
- package/lib/components/AddSelect/AddSelectList.js +5 -5
- package/lib/components/AddSelect/AddSelectSidebar.js +9 -15
- package/lib/components/AddSelect/add-select-utils.js +78 -0
- package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
- package/lib/components/ButtonMenu/ButtonMenu.js +11 -3
- package/lib/components/CreateFullPage/CreateFullPageStep.js +4 -4
- package/lib/components/CreateTearsheet/CreateTearsheetStep.js +4 -4
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +263 -142
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +39 -36
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +62 -8
- package/lib/components/DataSpreadsheet/hooks/useMoveActiveCell.js +37 -0
- package/lib/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +39 -0
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +52 -0
- package/lib/components/DataSpreadsheet/{checkActiveHeaderCell.js → utils/checkActiveHeaderCell.js} +1 -1
- package/lib/components/DataSpreadsheet/{createActiveCellFn.js → utils/createActiveCellFn.js} +20 -9
- package/lib/components/DataSpreadsheet/{createCellSelectionArea.js → utils/createCellSelectionArea.js} +8 -4
- package/lib/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
- package/lib/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
- package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +59 -0
- package/lib/components/DataSpreadsheet/utils/handleMultipleKeys.js +92 -0
- package/lib/components/DataSpreadsheet/utils/removeCellSelections.js +41 -0
- package/lib/components/InlineEdit/InlineEdit.js +52 -10
- package/lib/components/OptionsTile/OptionsTile.js +19 -19
- package/lib/components/PageHeader/PageHeader.js +35 -32
- package/lib/components/PageHeader/PageHeaderTitle.js +2 -1
- package/lib/components/PageHeader/PageHeaderUtils.js +21 -22
- package/lib/components/index.js +0 -8
- package/lib/global/js/package-settings.js +1 -2
- package/package.json +13 -13
- package/scss/components/AddSelect/_add-select.scss +20 -0
- package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +7 -3
- package/scss/components/CreateSidePanel/_create-side-panel.scss +1 -1
- package/scss/components/CreateSidePanel/_storybook-styles.scss +1 -1
- package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +14 -1
- package/scss/components/EditSidePanel/_edit-side-panel.scss +9 -0
- package/scss/components/EditSidePanel/_storybook-styles.scss +1 -1
- package/scss/components/InlineEdit/_inline-edit.scss +35 -37
- package/scss/components/ModifiedTabs/_modified-tabs.scss +5 -0
- package/scss/components/NotificationsPanel/_notifications-panel.scss +7 -3
- package/scss/components/OptionsTile/_index.scss +1 -1
- package/scss/components/OptionsTile/_options-tile.scss +17 -17
- package/scss/components/OptionsTile/_storybook-styles.scss +4 -4
- package/scss/components/PageHeader/_page-header.scss +3 -2
- package/scss/components/SidePanel/_side-panel.scss +8 -8
- package/scss/components/Tearsheet/_tearsheet.scss +4 -0
- package/scss/components/_index.scss +0 -1
- package/es/components/LoadingBar/LoadingBar.js +0 -156
- package/es/components/LoadingBar/index.js +0 -7
- package/lib/components/LoadingBar/LoadingBar.js +0 -170
- package/lib/components/LoadingBar/index.js +0 -13
- package/scss/components/LoadingBar/_index.scss +0 -8
- package/scss/components/LoadingBar/_loading-bar.scss +0 -224
- package/scss/components/LoadingBar/_storybook-styles.scss +0 -14
|
@@ -39,22 +39,15 @@ var _AddSelectList = require("./AddSelectList");
|
|
|
39
39
|
|
|
40
40
|
var _AddSelectColumn = require("./AddSelectColumn");
|
|
41
41
|
|
|
42
|
-
var
|
|
43
|
-
|
|
42
|
+
var _addSelectUtils = require("./add-select-utils");
|
|
43
|
+
|
|
44
|
+
var _excluded = ["className", "columnInputPlaceholder", "description", "influencerTitle", "inputPlaceholder", "items", "itemsLabel", "multi", "noResultsDescription", "noResultsTitle", "noSelectionDescription", "noSelectionTitle", "onClose", "onCloseButtonText", "onSearchFilter", "onSubmit", "onSubmitButtonText", "open", "removeIconDescription", "textInputLabel", "title"];
|
|
44
45
|
|
|
45
46
|
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); }
|
|
46
47
|
|
|
47
48
|
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; }
|
|
48
49
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
52
|
-
|
|
53
|
-
var componentName = 'AddSelect'; // Default values for props
|
|
54
|
-
|
|
55
|
-
var defaults = {
|
|
56
|
-
items: Object.freeze([])
|
|
57
|
-
};
|
|
50
|
+
var componentName = 'AddSelect';
|
|
58
51
|
var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
59
52
|
var _cx;
|
|
60
53
|
|
|
@@ -63,8 +56,7 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
63
56
|
description = _ref.description,
|
|
64
57
|
influencerTitle = _ref.influencerTitle,
|
|
65
58
|
inputPlaceholder = _ref.inputPlaceholder,
|
|
66
|
-
|
|
67
|
-
items = _ref$items === void 0 ? defaults.items : _ref$items,
|
|
59
|
+
items = _ref.items,
|
|
68
60
|
itemsLabel = _ref.itemsLabel,
|
|
69
61
|
multi = _ref.multi,
|
|
70
62
|
noResultsDescription = _ref.noResultsDescription,
|
|
@@ -113,74 +105,64 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
113
105
|
useNormalizedItems = _useState12[0],
|
|
114
106
|
setUsedNormalizedItems = _useState12[1];
|
|
115
107
|
|
|
108
|
+
var _useState13 = (0, _react.useState)([]),
|
|
109
|
+
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
110
|
+
sidebarItems = _useState14[0],
|
|
111
|
+
setSidebarItems = _useState14[1];
|
|
112
|
+
|
|
116
113
|
(0, _react.useEffect)(function () {
|
|
117
|
-
var
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (parentId) {
|
|
124
|
-
acc[cur.id].parent = parentId;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
if (children) {
|
|
128
|
-
acc[cur.id].children = children.map(function (child) {
|
|
129
|
-
return child.id;
|
|
130
|
-
});
|
|
131
|
-
var child = normalize(children, cur.id);
|
|
132
|
-
return _objectSpread(_objectSpread({}, acc), child);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
return acc;
|
|
136
|
-
}, {});
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
if (multi && items.find(function (item) {
|
|
140
|
-
return item.children;
|
|
114
|
+
var entries = items.entries;
|
|
115
|
+
setSidebarItems((0, _addSelectUtils.flatten)(entries)); // multi select with nested data needs to be normalized
|
|
116
|
+
|
|
117
|
+
if (multi && entries.find(function (entry) {
|
|
118
|
+
return entry.children;
|
|
141
119
|
})) {
|
|
142
|
-
var newItems = normalize(items);
|
|
120
|
+
var newItems = (0, _addSelectUtils.normalize)(items);
|
|
143
121
|
setNormalizedItems(newItems);
|
|
144
122
|
setUsedNormalizedItems(true);
|
|
145
123
|
}
|
|
146
|
-
}, [items, multi]);
|
|
124
|
+
}, [items, multi]); // used to generate columns of results for multi select with hierarchy
|
|
147
125
|
|
|
148
126
|
var getPages = function getPages() {
|
|
149
|
-
var
|
|
150
|
-
var itemIds = Object.keys(normalizedItems);
|
|
127
|
+
var pages = [];
|
|
128
|
+
var itemIds = Object.keys(normalizedItems); // top level items are just items with no parents so they're the top results
|
|
129
|
+
|
|
151
130
|
var topLevelItems = [];
|
|
152
131
|
itemIds.forEach(function (itemId) {
|
|
153
132
|
if (!normalizedItems[itemId].parent) {
|
|
154
133
|
topLevelItems.push(normalizedItems[itemId]);
|
|
155
134
|
}
|
|
156
135
|
});
|
|
157
|
-
|
|
136
|
+
pages.push(topLevelItems);
|
|
158
137
|
|
|
159
138
|
if (path.length) {
|
|
139
|
+
/**
|
|
140
|
+
* the path is set when you initially traverse the child entries
|
|
141
|
+
* path is an array of item id's
|
|
142
|
+
* when a path is present the normalized items are searched
|
|
143
|
+
* any item who's has a matching parent id is added to the results
|
|
144
|
+
* in the end you have an array of arrays for each column of the hierarchy
|
|
145
|
+
*/
|
|
160
146
|
var pathIds = path.map(function (p) {
|
|
161
147
|
return p.id;
|
|
162
148
|
});
|
|
163
149
|
pathIds.forEach(function (pathId) {
|
|
164
|
-
var
|
|
150
|
+
var entries = [];
|
|
165
151
|
itemIds.forEach(function (itemId) {
|
|
166
152
|
if (normalizedItems[itemId].parent === pathId) {
|
|
167
|
-
|
|
153
|
+
entries.push(normalizedItems[itemId]);
|
|
168
154
|
}
|
|
169
155
|
});
|
|
170
|
-
|
|
156
|
+
pages.push(entries);
|
|
171
157
|
});
|
|
172
158
|
}
|
|
173
159
|
|
|
174
|
-
return
|
|
175
|
-
}; // handlers
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
var handleSearch = function handleSearch(e) {
|
|
179
|
-
setSearchTerm(e.target.value);
|
|
160
|
+
return pages;
|
|
180
161
|
}; // item filtering
|
|
181
162
|
|
|
182
163
|
|
|
183
164
|
var getFilteredItems = function getFilteredItems() {
|
|
165
|
+
var entries = items.entries;
|
|
184
166
|
var hasPath = path.length > 0;
|
|
185
167
|
/**
|
|
186
168
|
* how to traverse the levels of items-
|
|
@@ -189,10 +171,12 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
189
171
|
*/
|
|
190
172
|
|
|
191
173
|
var itemsToFilter = hasPath ? path.reduce(function (prev, cur) {
|
|
192
|
-
|
|
174
|
+
var _prev$find, _prev$find$children;
|
|
175
|
+
|
|
176
|
+
return (_prev$find = prev.find(function (item) {
|
|
193
177
|
return item.id === cur.id;
|
|
194
|
-
}).children;
|
|
195
|
-
},
|
|
178
|
+
})) === null || _prev$find === void 0 ? void 0 : (_prev$find$children = _prev$find.children) === null || _prev$find$children === void 0 ? void 0 : _prev$find$children.entries;
|
|
179
|
+
}, entries) : entries;
|
|
196
180
|
var results = itemsToFilter.filter(function (item) {
|
|
197
181
|
if (!searchTerm) {
|
|
198
182
|
return item;
|
|
@@ -207,7 +191,8 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
207
191
|
return item.title.toLowerCase().includes(searchTerm);
|
|
208
192
|
});
|
|
209
193
|
return results;
|
|
210
|
-
};
|
|
194
|
+
}; // only multi select with hierarchy requires the the normalized items
|
|
195
|
+
|
|
211
196
|
|
|
212
197
|
var itemsToDisplay = useNormalizedItems ? getPages() : getFilteredItems();
|
|
213
198
|
var commonListProps = {
|
|
@@ -218,7 +203,42 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
218
203
|
setPath: setPath,
|
|
219
204
|
setSingleSelection: setSingleSelection,
|
|
220
205
|
singleSelection: singleSelection
|
|
221
|
-
}; //
|
|
206
|
+
}; // handlers
|
|
207
|
+
|
|
208
|
+
var handleSearch = function handleSearch(e) {
|
|
209
|
+
setSearchTerm(e.target.value);
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
var submitHandler = function submitHandler() {
|
|
213
|
+
onSubmit(multi ? multiSelection : singleSelection);
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
var commonTearsheetProps = {
|
|
217
|
+
open: open,
|
|
218
|
+
title: title,
|
|
219
|
+
description: description,
|
|
220
|
+
closeIconDescription: 'temp description',
|
|
221
|
+
actions: [{
|
|
222
|
+
label: onCloseButtonText,
|
|
223
|
+
kind: 'secondary',
|
|
224
|
+
onClick: onClose
|
|
225
|
+
}, {
|
|
226
|
+
label: onSubmitButtonText,
|
|
227
|
+
kind: 'primary',
|
|
228
|
+
onClick: submitHandler,
|
|
229
|
+
disabled: multi ? multiSelection.length === 0 : !singleSelection
|
|
230
|
+
}]
|
|
231
|
+
};
|
|
232
|
+
var sidebarProps = {
|
|
233
|
+
influencerTitle: influencerTitle,
|
|
234
|
+
items: sidebarItems,
|
|
235
|
+
multiSelection: multiSelection,
|
|
236
|
+
noSelectionDescription: noSelectionDescription,
|
|
237
|
+
noSelectionTitle: noSelectionTitle,
|
|
238
|
+
removeIconDescription: removeIconDescription,
|
|
239
|
+
setMultiSelection: setMultiSelection
|
|
240
|
+
};
|
|
241
|
+
var classNames = (0, _classnames.default)(className, blockClass, (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__single"), !multi), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__multi"), multi), _cx)); // main content
|
|
222
242
|
|
|
223
243
|
var body = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
224
244
|
className: "".concat(blockClass, "__header")
|
|
@@ -259,32 +279,6 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
259
279
|
title: noResultsTitle
|
|
260
280
|
}))));
|
|
261
281
|
|
|
262
|
-
var commonTearsheetProps = {
|
|
263
|
-
open: open,
|
|
264
|
-
title: title,
|
|
265
|
-
description: description,
|
|
266
|
-
closeIconDescription: 'temp description',
|
|
267
|
-
actions: [{
|
|
268
|
-
label: onCloseButtonText,
|
|
269
|
-
kind: 'secondary',
|
|
270
|
-
onClick: onClose
|
|
271
|
-
}, {
|
|
272
|
-
label: onSubmitButtonText,
|
|
273
|
-
kind: 'primary',
|
|
274
|
-
onClick: onSubmit,
|
|
275
|
-
disabled: multi ? multiSelection.length === 0 : !singleSelection
|
|
276
|
-
}]
|
|
277
|
-
};
|
|
278
|
-
var sidebarProps = {
|
|
279
|
-
influencerTitle: influencerTitle,
|
|
280
|
-
items: items,
|
|
281
|
-
multiSelection: multiSelection,
|
|
282
|
-
noSelectionDescription: noSelectionDescription,
|
|
283
|
-
noSelectionTitle: noSelectionTitle,
|
|
284
|
-
removeIconDescription: removeIconDescription,
|
|
285
|
-
setMultiSelection: setMultiSelection
|
|
286
|
-
};
|
|
287
|
-
var classNames = (0, _classnames.default)(className, blockClass, (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__single"), !multi), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__multi"), multi), _cx));
|
|
288
282
|
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
|
|
289
283
|
ref: ref,
|
|
290
284
|
className: classNames
|
|
@@ -300,11 +294,16 @@ AddSelect.propTypes = {
|
|
|
300
294
|
description: _propTypes.default.string,
|
|
301
295
|
influencerTitle: _propTypes.default.string,
|
|
302
296
|
inputPlaceholder: _propTypes.default.string,
|
|
303
|
-
items: _propTypes.default.
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
297
|
+
items: _propTypes.default.shape({
|
|
298
|
+
sortBy: _propTypes.default.array,
|
|
299
|
+
filterBy: _propTypes.default.array,
|
|
300
|
+
entries: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
301
|
+
id: _propTypes.default.string.isRequired,
|
|
302
|
+
title: _propTypes.default.string.isRequired,
|
|
303
|
+
value: _propTypes.default.string.isRequired,
|
|
304
|
+
children: _propTypes.default.object
|
|
305
|
+
}))
|
|
306
|
+
}),
|
|
308
307
|
itemsLabel: _propTypes.default.string,
|
|
309
308
|
multi: _propTypes.default.bool,
|
|
310
309
|
noResultsDescription: _propTypes.default.string,
|
|
@@ -321,4 +320,9 @@ AddSelect.propTypes = {
|
|
|
321
320
|
textInputLabel: _propTypes.default.string,
|
|
322
321
|
title: _propTypes.default.string
|
|
323
322
|
};
|
|
323
|
+
AddSelect.defaultProps = {
|
|
324
|
+
items: {
|
|
325
|
+
entries: []
|
|
326
|
+
}
|
|
327
|
+
};
|
|
324
328
|
AddSelect.displayName = componentName;
|
|
@@ -11,6 +11,8 @@ exports.AddSelectColumn = void 0;
|
|
|
11
11
|
|
|
12
12
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
13
|
|
|
14
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
15
|
+
|
|
14
16
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
17
|
|
|
16
18
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
@@ -21,11 +23,15 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
21
23
|
|
|
22
24
|
var _carbonComponentsReact = require("carbon-components-react");
|
|
23
25
|
|
|
26
|
+
var _iconsReact = require("@carbon/icons-react");
|
|
27
|
+
|
|
24
28
|
var _settings = require("../../settings");
|
|
25
29
|
|
|
26
30
|
var _AddSelectList = require("./AddSelectList");
|
|
27
31
|
|
|
28
|
-
var
|
|
32
|
+
var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
|
|
33
|
+
|
|
34
|
+
var _excluded = ["columnInputPlaceholder", "filteredItems", "header", "multiSelection", "setMultiSelection"];
|
|
29
35
|
|
|
30
36
|
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); }
|
|
31
37
|
|
|
@@ -34,39 +40,208 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
34
40
|
var componentName = 'AddSelect';
|
|
35
41
|
|
|
36
42
|
var AddSelectColumn = function AddSelectColumn(_ref) {
|
|
43
|
+
var _filteredItems$find, _filteredItems$find2;
|
|
44
|
+
|
|
37
45
|
var columnInputPlaceholder = _ref.columnInputPlaceholder,
|
|
38
46
|
filteredItems = _ref.filteredItems,
|
|
39
47
|
header = _ref.header,
|
|
48
|
+
multiSelection = _ref.multiSelection,
|
|
49
|
+
setMultiSelection = _ref.setMultiSelection,
|
|
40
50
|
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
41
51
|
|
|
42
|
-
var _useState = (0, _react.useState)(
|
|
52
|
+
var _useState = (0, _react.useState)(false),
|
|
43
53
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
44
|
-
|
|
45
|
-
|
|
54
|
+
allSelected = _useState2[0],
|
|
55
|
+
setAllSelected = _useState2[1];
|
|
56
|
+
|
|
57
|
+
var _useState3 = (0, _react.useState)(''),
|
|
58
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
59
|
+
searchTerm = _useState4[0],
|
|
60
|
+
setSearchTerm = _useState4[1];
|
|
61
|
+
|
|
62
|
+
var _useState5 = (0, _react.useState)(''),
|
|
63
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
64
|
+
sortDirection = _useState6[0],
|
|
65
|
+
setSortDirection = _useState6[1];
|
|
66
|
+
|
|
67
|
+
var _useState7 = (0, _react.useState)(''),
|
|
68
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
69
|
+
sortAttribute = _useState8[0],
|
|
70
|
+
setSortAttribute = _useState8[1];
|
|
71
|
+
|
|
72
|
+
var _useState9 = (0, _react.useState)([]),
|
|
73
|
+
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
74
|
+
filters = _useState10[0],
|
|
75
|
+
setFilters = _useState10[1];
|
|
46
76
|
|
|
47
77
|
var blockClass = "".concat(_settings.pkg.prefix, "--add-select");
|
|
48
|
-
var
|
|
78
|
+
var colClass = "".concat(blockClass, "__column");
|
|
79
|
+
(0, _react.useEffect)(function () {
|
|
80
|
+
var isAllSelected = filteredItems.every(function (item) {
|
|
81
|
+
return multiSelection.includes(item.id);
|
|
82
|
+
});
|
|
83
|
+
setAllSelected(isAllSelected);
|
|
84
|
+
}, [filteredItems, multiSelection]); // sorting
|
|
85
|
+
|
|
86
|
+
var colSortBy = (_filteredItems$find = filteredItems.find(function (item) {
|
|
87
|
+
return item.sortBy;
|
|
88
|
+
})) === null || _filteredItems$find === void 0 ? void 0 : _filteredItems$find.sortBy;
|
|
89
|
+
var sortByOpts = colSortBy ? colSortBy.reduce(function (acc, cur) {
|
|
90
|
+
var opts = [{
|
|
91
|
+
id: "".concat(cur, "-asc"),
|
|
92
|
+
itemText: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_iconsReact.ArrowUp16, null), cur),
|
|
93
|
+
direction: 'asc',
|
|
94
|
+
attribute: cur
|
|
95
|
+
}, {
|
|
96
|
+
id: "".concat(cur, "-desc"),
|
|
97
|
+
itemText: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_iconsReact.ArrowDown16, null), cur),
|
|
98
|
+
direction: 'desc',
|
|
99
|
+
attribute: cur
|
|
100
|
+
}];
|
|
101
|
+
return [].concat((0, _toConsumableArray2.default)(acc), opts);
|
|
102
|
+
}, []) : []; // filtering
|
|
103
|
+
|
|
104
|
+
var colFilterBy = (_filteredItems$find2 = filteredItems.find(function (item) {
|
|
105
|
+
return item.filterBy;
|
|
106
|
+
})) === null || _filteredItems$find2 === void 0 ? void 0 : _filteredItems$find2.filterBy;
|
|
107
|
+
var filterByOpts = colFilterBy ? filteredItems.map(function (item) {
|
|
108
|
+
return item[colFilterBy];
|
|
109
|
+
}) : []; // handlers
|
|
110
|
+
|
|
111
|
+
var sortHandler = function sortHandler(_ref2) {
|
|
112
|
+
var direction = _ref2.direction,
|
|
113
|
+
attribute = _ref2.attribute;
|
|
114
|
+
setSortAttribute(attribute);
|
|
115
|
+
setSortDirection(direction);
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
var selectAllHandler = function selectAllHandler(checked) {
|
|
119
|
+
var itemIds = filteredItems.map(function (item) {
|
|
120
|
+
return item.id;
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
if (checked) {
|
|
124
|
+
setMultiSelection([].concat((0, _toConsumableArray2.default)(multiSelection), (0, _toConsumableArray2.default)(itemIds)));
|
|
125
|
+
} else {
|
|
126
|
+
var newItems = multiSelection.filter(function (i) {
|
|
127
|
+
return !itemIds.includes(i);
|
|
128
|
+
});
|
|
129
|
+
setMultiSelection(newItems);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
var filterHandler = function filterHandler(checked, opt) {
|
|
134
|
+
if (checked) {
|
|
135
|
+
var newFilters = [].concat((0, _toConsumableArray2.default)(filters), [opt]);
|
|
136
|
+
setFilters(newFilters);
|
|
137
|
+
} else {
|
|
138
|
+
var _newFilters = filters.filter(function (o) {
|
|
139
|
+
return o !== opt;
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
setFilters(_newFilters);
|
|
143
|
+
}
|
|
144
|
+
}; // filter and sort array functions
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
var filterBySearch = function filterBySearch(item) {
|
|
49
148
|
return item.title.toLowerCase().includes(searchTerm);
|
|
50
|
-
}
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
var filterByAttribute = function filterByAttribute(item) {
|
|
152
|
+
if (filters.length === 0) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
var filterBy = item.filterBy;
|
|
157
|
+
var filterByValue = item[filterBy];
|
|
158
|
+
return filters.some(function (filter) {
|
|
159
|
+
return filter === filterByValue;
|
|
160
|
+
});
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
var sortItems = function sortItems(a, b) {
|
|
164
|
+
var _a$sortAttribute, _b$sortAttribute;
|
|
165
|
+
|
|
166
|
+
var valueA = (_a$sortAttribute = a[sortAttribute]) === null || _a$sortAttribute === void 0 ? void 0 : _a$sortAttribute.split(' ').join('');
|
|
167
|
+
var valueB = (_b$sortAttribute = b[sortAttribute]) === null || _b$sortAttribute === void 0 ? void 0 : _b$sortAttribute.split(' ').join('');
|
|
168
|
+
|
|
169
|
+
if (sortDirection === 'desc') {
|
|
170
|
+
return valueA > valueB ? -1 : 1;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return valueA < valueB ? -1 : 1;
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
var colItems = filteredItems.filter(filterBySearch) // first check if the item meets the search
|
|
177
|
+
.filter(filterByAttribute) // then check if the item is included in the filter
|
|
178
|
+
.sort(sortItems); // then sort the items by whatever criteria
|
|
179
|
+
|
|
51
180
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
52
|
-
className:
|
|
181
|
+
className: colClass
|
|
182
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
183
|
+
className: "".concat(colClass, "-search-bar")
|
|
53
184
|
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TextInput, {
|
|
54
185
|
value: searchTerm,
|
|
55
186
|
onChange: function onChange(e) {
|
|
56
187
|
return setSearchTerm(e.target.value);
|
|
57
188
|
},
|
|
58
189
|
light: true,
|
|
59
|
-
placeholder: columnInputPlaceholder
|
|
190
|
+
placeholder: columnInputPlaceholder,
|
|
191
|
+
className: "".concat(colClass, "-input"),
|
|
192
|
+
id: (0, _uuidv.default)(),
|
|
193
|
+
labelText: columnInputPlaceholder
|
|
60
194
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
195
|
+
className: "".concat(colClass, "-sort-filter")
|
|
196
|
+
}, sortByOpts.length > 0 && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, {
|
|
197
|
+
renderIcon: _iconsReact.ArrowsVertical32,
|
|
198
|
+
className: "".concat(colClass, "-overflow"),
|
|
199
|
+
flipped: true
|
|
200
|
+
}, sortByOpts.map(function (opt) {
|
|
201
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
|
|
202
|
+
key: opt.id,
|
|
203
|
+
itemText: opt.itemText,
|
|
204
|
+
onClick: function onClick() {
|
|
205
|
+
return sortHandler(opt);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
})), filterByOpts.length > 0 && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, {
|
|
209
|
+
renderIcon: _iconsReact.Filter32,
|
|
210
|
+
className: "".concat(colClass, "-overflow"),
|
|
211
|
+
flipped: true
|
|
212
|
+
}, filterByOpts.map(function (opt) {
|
|
213
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
214
|
+
key: opt,
|
|
215
|
+
className: "".concat(_settings.carbon.prefix, "--overflow-menu-options__option")
|
|
216
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
217
|
+
className: "".concat(_settings.carbon.prefix, "--overflow-menu-options__btn")
|
|
218
|
+
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
|
|
219
|
+
id: opt,
|
|
220
|
+
labelText: opt,
|
|
221
|
+
onChange: function onChange(checked) {
|
|
222
|
+
return filterHandler(checked, opt);
|
|
223
|
+
},
|
|
224
|
+
checked: filters.find(function (o) {
|
|
225
|
+
return o === opt;
|
|
226
|
+
}) ? true : false
|
|
227
|
+
})));
|
|
228
|
+
})))), /*#__PURE__*/_react.default.createElement("div", {
|
|
61
229
|
className: "".concat(blockClass, "__tag-container")
|
|
62
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
230
|
+
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
|
|
231
|
+
id: "".concat((0, _uuidv.default)(), "-select-all"),
|
|
232
|
+
checked: allSelected,
|
|
233
|
+
onChange: selectAllHandler,
|
|
234
|
+
labelText: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
235
|
+
className: "".concat(blockClass, "__tag-container-label")
|
|
236
|
+
}, header), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
|
|
237
|
+
type: "gray",
|
|
238
|
+
size: "sm"
|
|
239
|
+
}, colItems.length))
|
|
240
|
+
})), /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, (0, _extends2.default)({}, props, {
|
|
68
241
|
inColumn: true,
|
|
69
|
-
filteredItems: colItems
|
|
242
|
+
filteredItems: colItems,
|
|
243
|
+
setMultiSelection: setMultiSelection,
|
|
244
|
+
multiSelection: multiSelection
|
|
70
245
|
})));
|
|
71
246
|
};
|
|
72
247
|
|
|
@@ -74,6 +249,8 @@ exports.AddSelectColumn = AddSelectColumn;
|
|
|
74
249
|
AddSelectColumn.propTypes = {
|
|
75
250
|
columnInputPlaceholder: _propTypes.default.string,
|
|
76
251
|
filteredItems: _propTypes.default.array,
|
|
77
|
-
header: _propTypes.default.string
|
|
252
|
+
header: _propTypes.default.string,
|
|
253
|
+
multiSelection: _propTypes.default.array,
|
|
254
|
+
setMultiSelection: _propTypes.default.func
|
|
78
255
|
};
|
|
79
256
|
AddSelectColumn.displayName = componentName;
|
|
@@ -43,13 +43,13 @@ var AddSelectList = function AddSelectList(_ref) {
|
|
|
43
43
|
setSingleSelection(value);
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
var handleMultiSelection = function handleMultiSelection(
|
|
46
|
+
var handleMultiSelection = function handleMultiSelection(id, checked) {
|
|
47
47
|
if (checked) {
|
|
48
|
-
var newValues = [].concat((0, _toConsumableArray2.default)(multiSelection), [
|
|
48
|
+
var newValues = [].concat((0, _toConsumableArray2.default)(multiSelection), [id]);
|
|
49
49
|
setMultiSelection(newValues);
|
|
50
50
|
} else {
|
|
51
51
|
var _newValues = multiSelection.filter(function (v) {
|
|
52
|
-
return v !==
|
|
52
|
+
return v !== id;
|
|
53
53
|
});
|
|
54
54
|
|
|
55
55
|
setMultiSelection(_newValues);
|
|
@@ -128,8 +128,8 @@ var AddSelectList = function AddSelectList(_ref) {
|
|
|
128
128
|
className: "".concat(blockClass, "-cell-wrapper")
|
|
129
129
|
}, multi ? /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
|
|
130
130
|
className: "".concat(blockClass, "-checkbox"),
|
|
131
|
-
onChange: function onChange(
|
|
132
|
-
return handleMultiSelection(item.id,
|
|
131
|
+
onChange: function onChange(checked) {
|
|
132
|
+
return handleMultiSelection(item.id, checked);
|
|
133
133
|
},
|
|
134
134
|
labelText: !inColumn ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
135
135
|
className: "".concat(blockClass, "-cell-title")
|
|
@@ -7,8 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.AddSelectSidebar = void 0;
|
|
9
9
|
|
|
10
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
|
-
|
|
12
10
|
var _react = _interopRequireDefault(require("react"));
|
|
13
11
|
|
|
14
12
|
var _carbonComponentsReact = require("carbon-components-react");
|
|
@@ -21,7 +19,12 @@ var _NoDataEmptyState = require("../../components/EmptyStates/NoDataEmptyState")
|
|
|
21
19
|
|
|
22
20
|
var _settings = require("../../settings");
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
//
|
|
23
|
+
// Copyright IBM Corp. 2022
|
|
24
|
+
//
|
|
25
|
+
// This source code is licensed under the Apache-2.0 license found in the
|
|
26
|
+
// LICENSE file in the root directory of this source tree.
|
|
27
|
+
//
|
|
25
28
|
var componentName = 'AddSelectSidebar';
|
|
26
29
|
|
|
27
30
|
var AddSelectSidebar = function AddSelectSidebar(_ref) {
|
|
@@ -39,20 +42,10 @@ var AddSelectSidebar = function AddSelectSidebar(_ref) {
|
|
|
39
42
|
return v !== id;
|
|
40
43
|
});
|
|
41
44
|
setMultiSelection(newSelections);
|
|
42
|
-
}; // utility to flatten the list of items and their children into a single searchable array
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
var flattenItems = function flattenItems(arr) {
|
|
46
|
-
return arr.reduce(function (prev, cur) {
|
|
47
|
-
var children = cur.children,
|
|
48
|
-
item = (0, _objectWithoutProperties2.default)(cur, _excluded);
|
|
49
|
-
return prev.concat(item).concat(children ? flattenItems(children) : []);
|
|
50
|
-
}, []);
|
|
51
45
|
};
|
|
52
46
|
|
|
53
|
-
var flattenedItems = flattenItems(items);
|
|
54
47
|
var sidebarItems = multiSelection.map(function (selectedId) {
|
|
55
|
-
return
|
|
48
|
+
return items.find(function (item) {
|
|
56
49
|
return item.id === selectedId;
|
|
57
50
|
});
|
|
58
51
|
});
|
|
@@ -77,7 +70,8 @@ var AddSelectSidebar = function AddSelectSidebar(_ref) {
|
|
|
77
70
|
return handleItemRemove(id);
|
|
78
71
|
},
|
|
79
72
|
kind: "ghost",
|
|
80
|
-
className: "".concat(blockClass, "-item-remove-button")
|
|
73
|
+
className: "".concat(blockClass, "-item-remove-button"),
|
|
74
|
+
size: "sm"
|
|
81
75
|
}));
|
|
82
76
|
};
|
|
83
77
|
|