@carbon/ibm-products 1.11.0 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
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, {