@carbon/ibm-products 1.11.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +0 -3
  2. package/css/index-full-carbon.css +1543 -529
  3. package/css/index-full-carbon.css.map +1 -1
  4. package/css/index-full-carbon.min.css +5 -5
  5. package/css/index-full-carbon.min.css.map +1 -1
  6. package/css/index-without-carbon-released-only.css +12 -0
  7. package/css/index-without-carbon-released-only.css.map +1 -1
  8. package/css/index-without-carbon-released-only.min.css +2 -2
  9. package/css/index-without-carbon-released-only.min.css.map +1 -1
  10. package/css/index-without-carbon.css +77 -187
  11. package/css/index-without-carbon.css.map +1 -1
  12. package/css/index-without-carbon.min.css +4 -4
  13. package/css/index-without-carbon.min.css.map +1 -1
  14. package/css/index.css +194 -187
  15. package/css/index.css.map +1 -1
  16. package/css/index.min.css +5 -5
  17. package/css/index.min.css.map +1 -1
  18. package/es/components/AddSelect/AddSelect.js +63 -12
  19. package/es/components/AddSelect/AddSelectColumn.js +58 -22
  20. package/es/components/AddSelect/AddSelectList.js +38 -18
  21. package/es/components/AddSelect/AddSelectSidebar.js +2 -1
  22. package/es/components/ButtonMenu/ButtonMenu.js +11 -3
  23. package/es/components/CreateFullPage/CreateFullPageStep.js +4 -4
  24. package/es/components/CreateTearsheet/CreateTearsheetStep.js +4 -4
  25. package/es/components/DataSpreadsheet/DataSpreadsheet.js +107 -89
  26. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +93 -20
  27. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +50 -2
  28. package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +3 -1
  29. package/es/components/ImportModal/ImportModal.js +2 -2
  30. package/es/components/UserProfileImage/UserProfileImage.js +1 -1
  31. package/es/components/index.js +0 -1
  32. package/es/global/js/package-settings.js +1 -2
  33. package/lib/components/AddSelect/AddSelect.js +63 -12
  34. package/lib/components/AddSelect/AddSelectColumn.js +57 -21
  35. package/lib/components/AddSelect/AddSelectList.js +39 -17
  36. package/lib/components/AddSelect/AddSelectSidebar.js +2 -1
  37. package/lib/components/ButtonMenu/ButtonMenu.js +11 -3
  38. package/lib/components/CreateFullPage/CreateFullPageStep.js +4 -4
  39. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +4 -4
  40. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +108 -91
  41. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +94 -20
  42. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +52 -7
  43. package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +3 -1
  44. package/lib/components/ImportModal/ImportModal.js +1 -1
  45. package/lib/components/UserProfileImage/UserProfileImage.js +1 -1
  46. package/lib/components/index.js +0 -8
  47. package/lib/global/js/package-settings.js +1 -2
  48. package/package.json +16 -16
  49. package/scss/components/AboutModal/_about-modal.scss +2 -2
  50. package/scss/components/ActionSet/_action-set.scss +3 -1
  51. package/scss/components/AddSelect/_add-select.scss +41 -2
  52. package/scss/components/CreateModal/_create-modal.scss +7 -5
  53. package/scss/components/CreateModal/_storybook-styles.scss +8 -7
  54. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +21 -3
  55. package/scss/components/ExportModal/_export-modal.scss +3 -3
  56. package/scss/components/InlineEdit/_inline-edit.scss +3 -0
  57. package/scss/components/ModifiedTabs/_modified-tabs.scss +4 -9
  58. package/scss/components/NotificationsPanel/_notifications-panel.scss +9 -5
  59. package/scss/components/OptionsTile/_options-tile.scss +0 -1
  60. package/scss/components/RemoveModal/_remove-modal.scss +3 -3
  61. package/scss/components/TagSet/_tag-set.scss +2 -1
  62. package/scss/components/Tearsheet/_tearsheet.scss +4 -1
  63. package/scss/components/_index.scss +0 -1
  64. package/es/components/LoadingBar/LoadingBar.js +0 -156
  65. package/es/components/LoadingBar/index.js +0 -7
  66. package/lib/components/LoadingBar/LoadingBar.js +0 -170
  67. package/lib/components/LoadingBar/index.js +0 -13
  68. package/scss/components/LoadingBar/_index.scss +0 -8
  69. package/scss/components/LoadingBar/_loading-bar.scss +0 -224
  70. package/scss/components/LoadingBar/_storybook-styles.scss +0 -14
@@ -107,7 +107,7 @@ UserProfileImage.propTypes = {
107
107
  */
108
108
  imageDescription: PropTypes.string.isRequired.if(function (_ref2) {
109
109
  var image = _ref2.image;
110
- return image;
110
+ return !!image;
111
111
  }),
112
112
 
113
113
  /**
@@ -18,7 +18,6 @@ export { ExportModal } from './ExportModal';
18
18
  export { ExpressiveCard } from './ExpressiveCard';
19
19
  export { HTTPError403, HTTPError404, HTTPErrorOther } from './HTTPErrors';
20
20
  export { ImportModal } from './ImportModal';
21
- export { LoadingBar } from './LoadingBar';
22
21
  export { ModifiedTabs } from './ModifiedTabs';
23
22
  export { MultiAddSelect } from './MultiAddSelect';
24
23
  export { NotificationsPanel } from './NotificationsPanel';
@@ -40,6 +40,7 @@ var defaults = {
40
40
  NoTagsEmptyState: true,
41
41
  NotFoundEmptyState: true,
42
42
  NotificationsEmptyState: true,
43
+ OptionsTile: true,
43
44
  PageHeader: true,
44
45
  ProductiveCard: true,
45
46
  RemoveModal: true,
@@ -54,14 +55,12 @@ var defaults = {
54
55
  // other public components not yet reviewed and released:
55
56
  MultiAddSelect: false,
56
57
  SingleAddSelect: false,
57
- LoadingBar: false,
58
58
  ModifiedTabs: false,
59
59
  Toolbar: false,
60
60
  ToolbarButton: false,
61
61
  ToolbarGroup: false,
62
62
  WebTerminal: false,
63
63
  EditSidePanel: false,
64
- OptionsTile: false,
65
64
  CancelableTextEdit: false,
66
65
  InlineEdit: false,
67
66
  DataSpreadsheet: false
@@ -41,7 +41,7 @@ var _AddSelectColumn = require("./AddSelectColumn");
41
41
 
42
42
  var _addSelectUtils = require("./add-select-utils");
43
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
+ var _excluded = ["className", "columnInputPlaceholder", "description", "influencerTitle", "inputPlaceholder", "items", "itemsLabel", "multi", "noResultsDescription", "noResultsTitle", "noSelectionDescription", "noSelectionTitle", "onClose", "onCloseButtonText", "onSearchFilter", "onSubmit", "onSubmitButtonText", "open", "removeIconDescription", "searchResultsLabel", "textInputLabel", "title"];
45
45
 
46
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); }
47
47
 
@@ -70,6 +70,7 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
70
70
  onSubmitButtonText = _ref.onSubmitButtonText,
71
71
  open = _ref.open,
72
72
  removeIconDescription = _ref.removeIconDescription,
73
+ searchResultsLabel = _ref.searchResultsLabel,
73
74
  textInputLabel = _ref.textInputLabel,
74
75
  title = _ref.title,
75
76
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
@@ -107,12 +108,13 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
107
108
 
108
109
  var _useState13 = (0, _react.useState)([]),
109
110
  _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
110
- sidebarItems = _useState14[0],
111
- setSidebarItems = _useState14[1];
111
+ flatItems = _useState14[0],
112
+ setFlatItems = _useState14[1];
112
113
 
113
114
  (0, _react.useEffect)(function () {
114
- var entries = items.entries;
115
- setSidebarItems((0, _addSelectUtils.flatten)(entries)); // multi select with nested data needs to be normalized
115
+ var entries = items.entries; // flatItems is just a single array of all entries including children
116
+
117
+ setFlatItems((0, _addSelectUtils.flatten)(entries)); // multi select with nested data needs to be normalized
116
118
 
117
119
  if (multi && entries.find(function (entry) {
118
120
  return entry.children;
@@ -191,10 +193,25 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
191
193
  return item.title.toLowerCase().includes(searchTerm);
192
194
  });
193
195
  return results;
196
+ };
197
+
198
+ var getDisplayItems = function getDisplayItems() {
199
+ if (useNormalizedItems) {
200
+ // when global search is in use the results are not in column format
201
+ if (searchTerm) {
202
+ return flatItems.filter(function (item) {
203
+ return item.title.toLowerCase().includes(searchTerm);
204
+ });
205
+ }
206
+
207
+ return getPages();
208
+ }
209
+
210
+ return getFilteredItems();
194
211
  }; // only multi select with hierarchy requires the the normalized items
195
212
 
196
213
 
197
- var itemsToDisplay = useNormalizedItems ? getPages() : getFilteredItems();
214
+ var itemsToDisplay = getDisplayItems();
198
215
  var commonListProps = {
199
216
  multi: multi,
200
217
  multiSelection: multiSelection,
@@ -231,14 +248,41 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
231
248
  };
232
249
  var sidebarProps = {
233
250
  influencerTitle: influencerTitle,
234
- items: sidebarItems,
251
+ items: flatItems,
235
252
  multiSelection: multiSelection,
236
253
  noSelectionDescription: noSelectionDescription,
237
254
  noSelectionTitle: noSelectionTitle,
238
255
  removeIconDescription: removeIconDescription,
239
256
  setMultiSelection: setMultiSelection
240
257
  };
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
258
+ 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));
259
+
260
+ var setShowBreadsCrumbs = function setShowBreadsCrumbs() {
261
+ if (searchTerm) {
262
+ return false;
263
+ }
264
+
265
+ if (path.length) {
266
+ return true;
267
+ }
268
+
269
+ return false;
270
+ };
271
+
272
+ var setShowTags = function setShowTags() {
273
+ if (searchTerm) {
274
+ return true;
275
+ }
276
+
277
+ if (useNormalizedItems) {
278
+ return false;
279
+ }
280
+
281
+ return true;
282
+ };
283
+
284
+ var showBreadsCrumbs = setShowBreadsCrumbs();
285
+ var showTags = setShowTags(); // main content
242
286
 
243
287
  var body = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
244
288
  className: "".concat(blockClass, "__header")
@@ -250,16 +294,16 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
250
294
  onChange: handleSearch
251
295
  }), /*#__PURE__*/_react.default.createElement("div", {
252
296
  className: "".concat(blockClass, "__tag-container")
253
- }, path.length ? /*#__PURE__*/_react.default.createElement(_AddSelectBreadcrumbs.AddSelectBreadcrumbs, {
297
+ }, showBreadsCrumbs ? /*#__PURE__*/_react.default.createElement(_AddSelectBreadcrumbs.AddSelectBreadcrumbs, {
254
298
  itemsLabel: itemsLabel,
255
299
  path: path,
256
300
  setPath: setPath
257
301
  }) : /*#__PURE__*/_react.default.createElement("p", {
258
302
  className: "".concat(blockClass, "__tag-container-label")
259
- }, itemsLabel), !useNormalizedItems && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
303
+ }, searchTerm ? searchResultsLabel : itemsLabel), showTags && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
260
304
  type: "gray",
261
305
  size: "sm"
262
- }, itemsToDisplay.length))), useNormalizedItems ? /*#__PURE__*/_react.default.createElement("div", {
306
+ }, itemsToDisplay.length))), useNormalizedItems && !searchTerm ? /*#__PURE__*/_react.default.createElement("div", {
263
307
  className: "".concat(blockClass, "__columns")
264
308
  }, itemsToDisplay.map(function (page, idx) {
265
309
  var _path;
@@ -271,7 +315,8 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
271
315
  columnInputPlaceholder: columnInputPlaceholder
272
316
  }));
273
317
  })) : /*#__PURE__*/_react.default.createElement("div", null, itemsToDisplay.length > 0 ? /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, (0, _extends2.default)({}, commonListProps, {
274
- filteredItems: itemsToDisplay
318
+ filteredItems: itemsToDisplay,
319
+ modifiers: items === null || items === void 0 ? void 0 : items.modifiers
275
320
  })) : /*#__PURE__*/_react.default.createElement("div", {
276
321
  className: "".concat(blockClass, "__body")
277
322
  }, /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
@@ -295,6 +340,11 @@ AddSelect.propTypes = {
295
340
  influencerTitle: _propTypes.default.string,
296
341
  inputPlaceholder: _propTypes.default.string,
297
342
  items: _propTypes.default.shape({
343
+ modifiers: _propTypes.default.shape({
344
+ label: _propTypes.default.string,
345
+ options: _propTypes.default.array,
346
+ property: _propTypes.default.string
347
+ }),
298
348
  sortBy: _propTypes.default.array,
299
349
  filterBy: _propTypes.default.array,
300
350
  entries: _propTypes.default.arrayOf(_propTypes.default.shape({
@@ -317,6 +367,7 @@ AddSelect.propTypes = {
317
367
  onSubmitButtonText: _propTypes.default.string,
318
368
  open: _propTypes.default.bool,
319
369
  removeIconDescription: _propTypes.default.string,
370
+ searchResultsLabel: _propTypes.default.string,
320
371
  textInputLabel: _propTypes.default.string,
321
372
  title: _propTypes.default.string
322
373
  };
@@ -31,7 +31,7 @@ var _AddSelectList = require("./AddSelectList");
31
31
 
32
32
  var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
33
33
 
34
- var _excluded = ["columnInputPlaceholder", "filteredItems", "header"];
34
+ var _excluded = ["columnInputPlaceholder", "filteredItems", "header", "multiSelection", "setMultiSelection"];
35
35
 
36
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); }
37
37
 
@@ -45,30 +45,43 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
45
45
  var columnInputPlaceholder = _ref.columnInputPlaceholder,
46
46
  filteredItems = _ref.filteredItems,
47
47
  header = _ref.header,
48
+ multiSelection = _ref.multiSelection,
49
+ setMultiSelection = _ref.setMultiSelection,
48
50
  props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
49
51
 
50
- var _useState = (0, _react.useState)(''),
52
+ var _useState = (0, _react.useState)(false),
51
53
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
52
- searchTerm = _useState2[0],
53
- setSearchTerm = _useState2[1];
54
+ allSelected = _useState2[0],
55
+ setAllSelected = _useState2[1];
54
56
 
55
57
  var _useState3 = (0, _react.useState)(''),
56
58
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
57
- sortDirection = _useState4[0],
58
- setSortDirection = _useState4[1];
59
+ searchTerm = _useState4[0],
60
+ setSearchTerm = _useState4[1];
59
61
 
60
62
  var _useState5 = (0, _react.useState)(''),
61
63
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
62
- sortAttribute = _useState6[0],
63
- setSortAttribute = _useState6[1];
64
+ sortDirection = _useState6[0],
65
+ setSortDirection = _useState6[1];
64
66
 
65
- var _useState7 = (0, _react.useState)([]),
67
+ var _useState7 = (0, _react.useState)(''),
66
68
  _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
67
- filters = _useState8[0],
68
- setFilters = _useState8[1];
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];
69
76
 
70
77
  var blockClass = "".concat(_settings.pkg.prefix, "--add-select");
71
- var colClass = "".concat(blockClass, "__column"); // sorting
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
72
85
 
73
86
  var colSortBy = (_filteredItems$find = filteredItems.find(function (item) {
74
87
  return item.sortBy;
@@ -102,6 +115,21 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
102
115
  setSortDirection(direction);
103
116
  };
104
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
+
105
133
  var filterHandler = function filterHandler(checked, opt) {
106
134
  if (checked) {
107
135
  var newFilters = [].concat((0, _toConsumableArray2.default)(filters), [opt]);
@@ -199,14 +227,20 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
199
227
  })));
200
228
  })))), /*#__PURE__*/_react.default.createElement("div", {
201
229
  className: "".concat(blockClass, "__tag-container")
202
- }, /*#__PURE__*/_react.default.createElement("p", {
203
- className: "".concat(blockClass, "__tag-container-label")
204
- }, header), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
205
- type: "gray",
206
- size: "sm"
207
- }, colItems.length)), /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, (0, _extends2.default)({}, props, {
208
- inColumn: true,
209
- filteredItems: colItems
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, {
241
+ filteredItems: colItems,
242
+ setMultiSelection: setMultiSelection,
243
+ multiSelection: multiSelection
210
244
  })));
211
245
  };
212
246
 
@@ -214,6 +248,8 @@ exports.AddSelectColumn = AddSelectColumn;
214
248
  AddSelectColumn.propTypes = {
215
249
  columnInputPlaceholder: _propTypes.default.string,
216
250
  filteredItems: _propTypes.default.array,
217
- header: _propTypes.default.string
251
+ header: _propTypes.default.string,
252
+ multiSelection: _propTypes.default.array,
253
+ setMultiSelection: _propTypes.default.func
218
254
  };
219
255
  AddSelectColumn.displayName = componentName;
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.AddSelectList = void 0;
9
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
10
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
13
 
12
14
  var _react = _interopRequireDefault(require("react"));
@@ -17,6 +19,8 @@ var _iconsReact = require("@carbon/icons-react");
17
19
 
18
20
  var _propTypes = _interopRequireDefault(require("prop-types"));
19
21
 
22
+ var _classnames = _interopRequireDefault(require("classnames"));
23
+
20
24
  var _settings = require("../../settings");
21
25
 
22
26
  //
@@ -29,7 +33,7 @@ var componentName = 'AddSelectList';
29
33
 
30
34
  var AddSelectList = function AddSelectList(_ref) {
31
35
  var filteredItems = _ref.filteredItems,
32
- inColumn = _ref.inColumn,
36
+ modifiers = _ref.modifiers,
33
37
  multi = _ref.multi,
34
38
  multiSelection = _ref.multiSelection,
35
39
  path = _ref.path,
@@ -43,13 +47,13 @@ var AddSelectList = function AddSelectList(_ref) {
43
47
  setSingleSelection(value);
44
48
  };
45
49
 
46
- var handleMultiSelection = function handleMultiSelection(value, checked) {
50
+ var handleMultiSelection = function handleMultiSelection(id, checked) {
47
51
  if (checked) {
48
- var newValues = [].concat((0, _toConsumableArray2.default)(multiSelection), [value]);
52
+ var newValues = [].concat((0, _toConsumableArray2.default)(multiSelection), [id]);
49
53
  setMultiSelection(newValues);
50
54
  } else {
51
55
  var _newValues = multiSelection.filter(function (v) {
52
- return v !== value;
56
+ return v !== id;
53
57
  });
54
58
 
55
59
  setMultiSelection(_newValues);
@@ -113,32 +117,50 @@ var AddSelectList = function AddSelectList(_ref) {
113
117
  }
114
118
  };
115
119
 
120
+ var isSelected = function isSelected(id) {
121
+ return multiSelection.includes(id);
122
+ };
123
+
116
124
  return /*#__PURE__*/_react.default.createElement("div", {
117
125
  className: "".concat(blockClass, "-wrapper")
118
126
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListWrapper, {
119
127
  selection: true,
120
128
  className: "".concat(blockClass)
121
129
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListBody, null, filteredItems.map(function (item) {
130
+ var _modifiers$options;
131
+
122
132
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListRow, {
123
133
  key: item.id,
124
- className: "".concat(blockClass, "-row")
134
+ className: (0, _classnames.default)("".concat(blockClass, "-row"), (0, _defineProperty2.default)({}, "".concat(blockClass, "-row-selected"), isSelected(item.id)))
125
135
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListCell, {
126
136
  className: "".concat(blockClass, "-cell")
127
137
  }, /*#__PURE__*/_react.default.createElement("div", {
128
138
  className: "".concat(blockClass, "-cell-wrapper")
129
- }, multi ? /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
130
- className: "".concat(blockClass, "-checkbox"),
131
- onChange: function onChange(value) {
132
- return handleMultiSelection(item.id, value);
139
+ }, multi ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
140
+ className: "".concat(blockClass, "-checkbox")
141
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
142
+ onChange: function onChange(checked) {
143
+ return handleMultiSelection(item.id, checked);
133
144
  },
134
- labelText: !inColumn ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
135
- className: "".concat(blockClass, "-cell-title")
136
- }, item.title), /*#__PURE__*/_react.default.createElement("span", {
137
- className: "".concat(blockClass, "-cell-subtitle")
138
- }, item.subtitle)) : item.title,
145
+ labelText: item.title,
139
146
  id: item.id,
140
- checked: multiSelection.includes(item.id)
141
- }) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, {
147
+ checked: isSelected(item.id),
148
+ className: "".concat(blockClass, "-checkbox-wrapper")
149
+ }), /*#__PURE__*/_react.default.createElement("div", {
150
+ className: "".concat(blockClass, "-checkbox-label-text")
151
+ }, /*#__PURE__*/_react.default.createElement("span", {
152
+ className: "".concat(blockClass, "-cell-title")
153
+ }, item.title), item.subtitle && /*#__PURE__*/_react.default.createElement("span", {
154
+ className: "".concat(blockClass, "-cell-subtitle")
155
+ }, item.subtitle))), (modifiers === null || modifiers === void 0 ? void 0 : (_modifiers$options = modifiers.options) === null || _modifiers$options === void 0 ? void 0 : _modifiers$options.length) && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Dropdown, {
156
+ id: "".concat(item.id, "-modifier"),
157
+ type: "inline",
158
+ items: modifiers === null || modifiers === void 0 ? void 0 : modifiers.options,
159
+ light: true,
160
+ label: modifiers === null || modifiers === void 0 ? void 0 : modifiers.label,
161
+ disabled: !isSelected(item.id),
162
+ className: "".concat(blockClass, "-dropdown")
163
+ })) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, {
142
164
  className: "".concat(blockClass, "-radio"),
143
165
  name: "add-select-selections",
144
166
  id: item.id,
@@ -157,7 +179,7 @@ var AddSelectList = function AddSelectList(_ref) {
157
179
  exports.AddSelectList = AddSelectList;
158
180
  AddSelectList.propTypes = {
159
181
  filteredItems: _propTypes.default.array,
160
- inColumn: _propTypes.default.bool,
182
+ modifiers: _propTypes.default.object,
161
183
  multi: _propTypes.default.bool,
162
184
  multiSelection: _propTypes.default.array,
163
185
  path: _propTypes.default.array,
@@ -70,7 +70,8 @@ var AddSelectSidebar = function AddSelectSidebar(_ref) {
70
70
  return handleItemRemove(id);
71
71
  },
72
72
  kind: "ghost",
73
- className: "".concat(blockClass, "-item-remove-button")
73
+ className: "".concat(blockClass, "-item-remove-button"),
74
+ size: "sm"
74
75
  }));
75
76
  };
76
77
 
@@ -21,14 +21,15 @@ var _settings = require("../../settings");
21
21
 
22
22
  var _carbonComponentsReact = require("carbon-components-react");
23
23
 
24
- var _excluded = ["children", "className", "iconDescription", "label", "menuOptionsClass", "renderIcon", "size"];
24
+ var _excluded = ["children", "className", "iconDescription", "kind", "label", "menuOptionsClass", "renderIcon", "size"];
25
25
  // The block part of our conventional BEM class names (blockClass__E--M).
26
26
  var blockClass = "".concat(_settings.pkg.prefix, "--button-menu");
27
27
  var componentName = 'ButtonMenu'; // NOTE: the component SCSS is not imported here: it is rolled up separately.
28
28
  // Default values for props
29
29
 
30
30
  var defaults = {
31
- size: 'default'
31
+ size: 'default',
32
+ kind: 'primary'
32
33
  };
33
34
  /**
34
35
  * Combining a standard button with an overflow menu, this component appears
@@ -42,6 +43,8 @@ var ButtonMenu = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
42
43
  var children = _ref.children,
43
44
  className = _ref.className,
44
45
  iconDescription = _ref.iconDescription,
46
+ _ref$kind = _ref.kind,
47
+ kind = _ref$kind === void 0 ? defaults.kind : _ref$kind,
45
48
  label = _ref.label,
46
49
  menuOptionsClass = _ref.menuOptionsClass,
47
50
  Icon = _ref.renderIcon,
@@ -55,7 +58,7 @@ var ButtonMenu = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
55
58
  menuOptionsClass: (0, _classnames.default)("".concat(blockClass, "__options"), menuOptionsClass),
56
59
  renderIcon: function renderIcon() {
57
60
  return /*#__PURE__*/_react.default.createElement("div", {
58
- className: (0, _classnames.default)(["".concat(blockClass, "__trigger"), "".concat(_settings.carbon.prefix, "--btn"), "".concat(_settings.carbon.prefix, "--btn--primary"), "".concat(_settings.carbon.prefix, "--btn--").concat(size)])
61
+ className: (0, _classnames.default)(["".concat(blockClass, "__trigger"), "".concat(_settings.carbon.prefix, "--btn"), "".concat(_settings.carbon.prefix, "--btn--").concat(kind), "".concat(_settings.carbon.prefix, "--btn--").concat(size)])
59
62
  }, label, Icon && /*#__PURE__*/_react.default.createElement(Icon, {
60
63
  "aria-hidden": "true",
61
64
  "aria-label": iconDescription,
@@ -93,6 +96,11 @@ ButtonMenu.propTypes = {
93
96
  */
94
97
  iconDescription: _carbonComponentsReact.Button.propTypes.iconDescription,
95
98
 
99
+ /**
100
+ * The three types the menu button supports: primary, tertiary and ghost.
101
+ */
102
+ kind: _propTypes.default.oneOf(['primary', 'tertiary', 'ghost']),
103
+
96
104
  /**
97
105
  * The button label for the menu trigger.
98
106
  */
@@ -81,23 +81,23 @@ var CreateFullPageStep = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref
81
81
  shouldIncludeStep: shouldIncludeStep,
82
82
  secondaryLabel: secondaryLabel,
83
83
  title: title
84
- }); // This useEffect reports back the onNext and onMount values so that they can be used
84
+ }); // This useEffect reports back the onMount value so that they can be used
85
85
  // in the appropriate custom hooks.
86
86
 
87
87
  (0, _react.useEffect)(function () {
88
88
  if (stepNumber === (stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep) && (previousState === null || previousState === void 0 ? void 0 : previousState.currentStep) !== (stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep)) {
89
- stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.setOnNext(onNext);
90
89
  stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.setOnMount(onMount);
91
90
  }
92
- }, [onMount, onNext, stepsContext, stepNumber, previousState === null || previousState === void 0 ? void 0 : previousState.currentStep]);
91
+ }, [onMount, stepsContext, stepNumber, previousState === null || previousState === void 0 ? void 0 : previousState.currentStep]);
93
92
  (0, _react.useEffect)(function () {
94
93
  setShouldIncludeStep(includeStep);
95
- }, [includeStep, stepsContext, title]); // Whenever we are the current step, supply our disableSubmit value to the
94
+ }, [includeStep, stepsContext, title]); // Whenever we are the current step, supply our disableSubmit and onNext values to the
96
95
  // steps container context so that it can manage the 'Next' button appropriately.
97
96
 
98
97
  (0, _react.useEffect)(function () {
99
98
  if (stepNumber === (stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep)) {
100
99
  stepsContext.setIsDisabled(disableSubmit);
100
+ stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.setOnNext(onNext); // needs to be updated here otherwise there could be stale state values from only initially setting onNext
101
101
  }
102
102
  }, [stepsContext, stepNumber, disableSubmit, onNext]);
103
103
  return stepsContext ? /*#__PURE__*/_react.default.createElement("section", (0, _extends2.default)({}, rest, {
@@ -83,24 +83,24 @@ var CreateTearsheetStep = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
83
83
  shouldIncludeStep: shouldIncludeStep,
84
84
  secondaryLabel: secondaryLabel,
85
85
  title: title
86
- }); // This useEffect reports back the onNext and onMount values so that they can be used
86
+ }); // This useEffect reports back the onMount value so that they can be used
87
87
  // in the appropriate custom hooks.
88
88
 
89
89
  (0, _react.useEffect)(function () {
90
90
  if (stepNumber === (stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep) && (previousState === null || previousState === void 0 ? void 0 : previousState.currentStep) !== (stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep)) {
91
- stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.setOnNext(onNext);
92
91
  stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.setOnMount(onMount);
93
92
  }
94
- }, [onMount, onNext, stepsContext, stepNumber, previousState === null || previousState === void 0 ? void 0 : previousState.currentStep]); // Used to take the `includeStep` prop and use it as a local state value
93
+ }, [onMount, stepsContext, stepNumber, previousState === null || previousState === void 0 ? void 0 : previousState.currentStep]); // Used to take the `includeStep` prop and use it as a local state value
95
94
 
96
95
  (0, _react.useEffect)(function () {
97
96
  setShouldIncludeStep(includeStep);
98
- }, [includeStep, stepsContext, title]); // Whenever we are the current step, supply our disableSubmit value to the
97
+ }, [includeStep, stepsContext, title]); // Whenever we are the current step, supply our disableSubmit and onNext values to the
99
98
  // steps container context so that it can manage the 'Next' button appropriately.
100
99
 
101
100
  (0, _react.useEffect)(function () {
102
101
  if (stepNumber === (stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep)) {
103
102
  stepsContext.setIsDisabled(disableSubmit);
103
+ stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.setOnNext(onNext); // needs to be updated here otherwise there could be stale state values from only initially setting onNext
104
104
  }
105
105
  }, [stepsContext, stepNumber, disableSubmit, onNext]);
106
106
  return stepsContext ? /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {