@carbon/ibm-products 1.19.0 → 1.20.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. package/css/components/Datagrid/styles/datagrid.css +20 -1
  2. package/css/components/Datagrid/styles/datagrid.css.map +1 -1
  3. package/css/components/Datagrid/styles/draggableElement.css +57 -0
  4. package/css/components/Datagrid/styles/draggableElement.css.map +1 -0
  5. package/css/components/Datagrid/styles/index.css +100 -1
  6. package/css/components/Datagrid/styles/index.css.map +1 -1
  7. package/css/index-full-carbon.css +108 -2
  8. package/css/index-full-carbon.css.map +1 -1
  9. package/css/index-full-carbon.min.css +2 -2
  10. package/css/index-full-carbon.min.css.map +1 -1
  11. package/css/index-without-carbon-released-only.css +241 -0
  12. package/css/index-without-carbon-released-only.css.map +1 -1
  13. package/css/index-without-carbon-released-only.min.css +7 -1
  14. package/css/index-without-carbon-released-only.min.css.map +1 -1
  15. package/css/index-without-carbon.css +108 -2
  16. package/css/index-without-carbon.css.map +1 -1
  17. package/css/index-without-carbon.min.css +2 -2
  18. package/css/index-without-carbon.min.css.map +1 -1
  19. package/css/index.css +108 -2
  20. package/css/index.css.map +1 -1
  21. package/css/index.min.css +2 -2
  22. package/css/index.min.css.map +1 -1
  23. package/es/components/AddSelect/AddSelect.js +34 -3
  24. package/es/components/AddSelect/AddSelectList.js +33 -9
  25. package/es/components/AddSelect/AddSelectSidebar.js +16 -9
  26. package/es/components/ComboButton/ComboButton.js +3 -5
  27. package/es/components/CreateSidePanel/CreateSidePanel.js +4 -10
  28. package/es/components/Datagrid/Datagrid/DraggableElement.js +9 -12
  29. package/es/components/EditSidePanel/EditSidePanel.js +3 -9
  30. package/es/components/SidePanel/SidePanel.js +2 -2
  31. package/es/components/index.js +1 -1
  32. package/es/global/js/package-settings.js +1 -1
  33. package/lib/components/AddSelect/AddSelect.js +34 -3
  34. package/lib/components/AddSelect/AddSelectList.js +32 -9
  35. package/lib/components/AddSelect/AddSelectSidebar.js +16 -9
  36. package/lib/components/ComboButton/ComboButton.js +5 -8
  37. package/lib/components/CreateSidePanel/CreateSidePanel.js +3 -10
  38. package/lib/components/Datagrid/Datagrid/DraggableElement.js +11 -12
  39. package/lib/components/EditSidePanel/EditSidePanel.js +3 -10
  40. package/lib/components/SidePanel/SidePanel.js +2 -2
  41. package/lib/components/index.js +84 -0
  42. package/lib/global/js/package-settings.js +1 -1
  43. package/package.json +2 -2
  44. package/scss/components/ComboButton/_combo-button.scss +2 -1
  45. package/scss/components/Datagrid/_datagrid.scss +1 -10
  46. package/scss/components/Datagrid/styles/datagrid.scss +17 -1
  47. package/scss/components/Datagrid/styles/draggableElement.scss +58 -0
  48. package/scss/components/Datagrid/styles/index.scss +2 -1
  49. package/scss/components/_index-released-only.scss +1 -0
@@ -15,11 +15,15 @@ import { pkg } from '../../settings';
15
15
  import { AddSelectMetaPanel } from './AddSelectMetaPanel';
16
16
  var componentName = 'AddSelectSidebar';
17
17
  export var AddSelectSidebar = function AddSelectSidebar(_ref) {
18
- var closeIconDescription = _ref.closeIconDescription,
18
+ var _modifiers$options;
19
+
20
+ var appliedModifiers = _ref.appliedModifiers,
21
+ closeIconDescription = _ref.closeIconDescription,
19
22
  displayMetalPanel = _ref.displayMetalPanel,
20
23
  influencerTitle = _ref.influencerTitle,
21
24
  items = _ref.items,
22
25
  metaPanelTitle = _ref.metaPanelTitle,
26
+ modifiers = _ref.modifiers,
23
27
  multiSelection = _ref.multiSelection,
24
28
  noSelectionDescription = _ref.noSelectionDescription,
25
29
  noSelectionTitle = _ref.noSelectionTitle,
@@ -27,6 +31,8 @@ export var AddSelectSidebar = function AddSelectSidebar(_ref) {
27
31
  setDisplayMetaPanel = _ref.setDisplayMetaPanel,
28
32
  setMultiSelection = _ref.setMultiSelection;
29
33
  var blockClass = "".concat(pkg.prefix, "--add-select__sidebar");
34
+ var hasModifiers = (modifiers === null || modifiers === void 0 ? void 0 : (_modifiers$options = modifiers.options) === null || _modifiers$options === void 0 ? void 0 : _modifiers$options.length) > 0;
35
+ var hasSelections = multiSelection.length > 0;
30
36
 
31
37
  var handleItemRemove = function handleItemRemove(id) {
32
38
  var newSelections = multiSelection.filter(function (v) {
@@ -50,24 +56,23 @@ export var AddSelectSidebar = function AddSelectSidebar(_ref) {
50
56
  return acc;
51
57
  }, []);
52
58
 
53
- var getTitle = function getTitle(_ref2) {
54
- var title = _ref2.title,
55
- subtitle = _ref2.subtitle,
56
- id = _ref2.id;
59
+ var getTitle = function getTitle(item) {
57
60
  return /*#__PURE__*/React.createElement("div", {
58
61
  className: "".concat(blockClass, "-accordion-title")
59
62
  }, /*#__PURE__*/React.createElement("div", {
60
63
  className: "".concat(blockClass, "-selected-item")
61
64
  }, /*#__PURE__*/React.createElement("p", {
62
65
  className: "".concat(blockClass, "-selected-item-title")
63
- }, title), /*#__PURE__*/React.createElement("p", {
66
+ }, item.title), /*#__PURE__*/React.createElement("p", {
64
67
  className: "".concat(blockClass, "-selected-item-subtitle")
65
- }, subtitle)), /*#__PURE__*/React.createElement(Button, {
68
+ }, item.subtitle)), hasModifiers && /*#__PURE__*/React.createElement("div", null, appliedModifiers.find(function (modifier) {
69
+ return modifier.id === item.id;
70
+ })[modifiers.id]), /*#__PURE__*/React.createElement(Button, {
66
71
  renderIcon: SubtractAlt32,
67
72
  iconDescription: removeIconDescription,
68
73
  hasIconOnly: true,
69
74
  onClick: function onClick() {
70
- return handleItemRemove(id);
75
+ return handleItemRemove(item.id);
71
76
  },
72
77
  kind: "ghost",
73
78
  className: "".concat(blockClass, "-item-remove-button"),
@@ -93,7 +98,7 @@ export var AddSelectSidebar = function AddSelectSidebar(_ref) {
93
98
  }, influencerTitle), /*#__PURE__*/React.createElement(Tag, {
94
99
  type: "gray",
95
100
  size: "sm"
96
- }, multiSelection.length)), multiSelection.length > 0 ? /*#__PURE__*/React.createElement(Accordion, {
101
+ }, multiSelection.length)), hasSelections ? /*#__PURE__*/React.createElement(Accordion, {
97
102
  align: "start"
98
103
  }, sidebarItems.map(function (item) {
99
104
  return /*#__PURE__*/React.createElement(AccordionItem, {
@@ -118,11 +123,13 @@ export var AddSelectSidebar = function AddSelectSidebar(_ref) {
118
123
  })));
119
124
  };
120
125
  AddSelectSidebar.propTypes = {
126
+ appliedModifiers: PropTypes.array,
121
127
  closeIconDescription: PropTypes.string,
122
128
  displayMetalPanel: PropTypes.object,
123
129
  influencerTitle: PropTypes.string,
124
130
  items: PropTypes.array,
125
131
  metaPanelTitle: PropTypes.string,
132
+ modifiers: PropTypes.object,
126
133
  multiSelection: PropTypes.array,
127
134
  noSelectionDescription: PropTypes.string,
128
135
  noSelectionTitle: PropTypes.string,
@@ -18,13 +18,11 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
18
18
  * LICENSE file in the root directory of this source tree.
19
19
  */
20
20
  import { ChevronDown16, ChevronUp16 } from '@carbon/icons-react';
21
- import { Button, OverflowMenuItem } from 'carbon-components-react';
22
- import { OverflowMenu } from 'carbon-components-react/lib/components/OverflowMenu/OverflowMenu';
23
- import setupGetInstanceId from 'carbon-components-react/lib/tools/setupGetInstanceId';
21
+ import { Button, OverflowMenuItem, OverflowMenu } from 'carbon-components-react';
24
22
  import classnames from 'classnames';
25
23
  import { node, shape, string } from 'prop-types';
24
+ import uuidv4 from '../../global/js/utils/uuidv4';
26
25
  import React, { Children, createElement, useRef, useState } from 'react';
27
- var getInstanceId = setupGetInstanceId();
28
26
  var blockClass = 'security--combo-button';
29
27
  /**
30
28
  * The combo button consolidates similar actions, while exposing the most commonly used one.
@@ -36,7 +34,7 @@ var ComboButton = function ComboButton(_ref) {
36
34
  overflowMenu = _ref.overflowMenu,
37
35
  rest = _objectWithoutProperties(_ref, _excluded);
38
36
 
39
- var _useRef = useRef(getInstanceId()),
37
+ var _useRef = useRef(uuidv4()),
40
38
  instanceId = _useRef.current;
41
39
 
42
40
  var _useState = useState(false),
@@ -22,11 +22,9 @@ import { pkg } from '../../settings';
22
22
  import { getDevtoolsProps } from '../../global/js/utils/devtools'; // Carbon and package components we use.
23
23
 
24
24
  import { Form } from 'carbon-components-react';
25
- import { SidePanel } from '../SidePanel';
26
- import { ActionSet } from '../ActionSet'; // The block part of our conventional BEM class names (blockClass__E--M).
25
+ import { SidePanel } from '../SidePanel'; // The block part of our conventional BEM class names (blockClass__E--M).
27
26
 
28
27
  var blockClass = "".concat(pkg.prefix, "--create-side-panel");
29
- var sidePanelBlockClass = "".concat(pkg.prefix, "--side-panel");
30
28
  var componentName = 'CreateSidePanel'; // NOTE: the component SCSS is not imported here: it is rolled up separately.
31
29
 
32
30
  /**
@@ -64,7 +62,6 @@ export var CreateSidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref)
64
62
  onClick: onRequestClose,
65
63
  kind: 'secondary'
66
64
  }];
67
- var actionContainerClassNames = cx(["".concat(blockClass, "__actions-container"), "".concat(sidePanelBlockClass, "__actions-container")]);
68
65
  return selectorPageContent && /*#__PURE__*/React.createElement(SidePanel, _extends({}, rest, _objectSpread({
69
66
  open: open,
70
67
  ref: ref,
@@ -78,18 +75,15 @@ export var CreateSidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref)
78
75
  slideIn: true,
79
76
  animateTitle: false,
80
77
  className: cx(blockClass, className),
81
- size: "md"
78
+ size: "md",
79
+ actions: actions
82
80
  }), /*#__PURE__*/React.createElement("h3", {
83
81
  className: "".concat(blockClass, "__form-title-text ").concat(blockClass, "__content-text")
84
82
  }, formTitle), /*#__PURE__*/React.createElement("p", {
85
83
  className: "".concat(blockClass, "__form-description-text ").concat(blockClass, "__content-text")
86
84
  }, formDescription), /*#__PURE__*/React.createElement(Form, {
87
85
  className: "".concat(blockClass, "__form")
88
- }, children, /*#__PURE__*/React.createElement(ActionSet, {
89
- actions: actions,
90
- className: actionContainerClassNames,
91
- size: "md"
92
- })));
86
+ }, children));
93
87
  });
94
88
  CreateSidePanel = pkg.checkComponentEnabled(CreateSidePanel, componentName);
95
89
  CreateSidePanel.displayName = componentName;
@@ -1,3 +1,4 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
1
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  // @flow
3
4
 
@@ -13,10 +14,12 @@ import PropTypes from 'prop-types';
13
14
  import { Draggable16 } from '@carbon/icons-react';
14
15
  import { useDrag, useDrop } from 'react-dnd';
15
16
  import cx from 'classnames';
17
+ import { pkg } from '../../../settings';
16
18
  var useEffect = React.useEffect,
17
19
  useRef = React.useRef,
18
20
  useState = React.useState;
19
- var DRAG_TYPE = 'wkc-shared-ui-draggable-element';
21
+ var blockClass = "".concat(pkg.prefix, "--datagrid");
22
+ var DRAG_TYPE = "".concat(blockClass, "__shared-ui-draggable-element");
20
23
 
21
24
  var DraggableElement = function DraggableElement(_ref) {
22
25
  var id = _ref.id,
@@ -113,14 +116,10 @@ var DraggableElement = function DraggableElement(_ref) {
113
116
  var content = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
114
117
  className: cx({
115
118
  disabled: disabled
116
- }, 'wkc-draggable-handleStyle')
119
+ }, "".concat(blockClass, "__draggable-handleStyle"))
117
120
  }, /*#__PURE__*/React.createElement(Draggable16, null)), children);
118
121
  return /*#__PURE__*/React.createElement("li", {
119
- className: cx({
120
- 'wkc-draggable-handleHolder-isOver': isOver && !disabled
121
- }, {
122
- 'wkc-draggable-handleHolder--grabbed': isGrabbed
123
- }, 'wkc-draggable-handleHolder'),
122
+ className: cx(_defineProperty({}, "".concat(blockClass, "__draggable-handleHolder-isOver"), isOver && !disabled), _defineProperty({}, "".concat(blockClass, "__wkc-draggable-handleHolder--grabbed"), isGrabbed), "".concat(blockClass, "__draggable-handleHolder")),
124
123
  ref: ref,
125
124
  "aria-selected": isFocused,
126
125
  role: "option",
@@ -148,17 +147,15 @@ var DraggableElement = function DraggableElement(_ref) {
148
147
  setIsFocusedOnItem(e.currentTarget === e.target);
149
148
  }
150
149
  }, /*#__PURE__*/React.createElement("span", {
151
- className: "wkc-shared-ui--assistive-text"
150
+ className: "".concat(blockClass, "__shared-ui--assistive-text")
152
151
  }, ariaLabel), isDragging && !isOver ? /*#__PURE__*/React.createElement("div", {
153
152
  ref: preview,
154
- className: "wkc-draggable-handleHolder-droppable"
153
+ className: "${blockClass}__draggable-handleHolder-droppable"
155
154
  }, content) : /*#__PURE__*/React.createElement("div", {
156
155
  ref: drag,
157
156
  "aria-hidden": isFocused && isFocusedOnItem // if focus on li, hide the children from aria
158
157
  ,
159
- className: cx({
160
- 'wkc-draggable-handleStyle': !disabled
161
- }, 'wkc-draggable-handleHolder-droppable')
158
+ className: cx(_defineProperty({}, "".concat(blockClass, "__draggable-handleStyle"), !disabled), ["".concat(blockClass, "__draggable-handleHolder-droppable")])
162
159
  }, (!isOver || disabled) && content));
163
160
  };
164
161
 
@@ -25,11 +25,9 @@ import { pkg
25
25
 
26
26
  import { Form } from 'carbon-components-react';
27
27
  import { SidePanel } from '../SidePanel';
28
- import { ActionSet } from '../ActionSet';
29
28
  import '../../global/js/utils/props-helper'; // The block part of our conventional BEM class names (blockClass__E--M).
30
29
 
31
30
  var blockClass = "".concat(pkg.prefix, "--edit-side-panel");
32
- var sidePanelBlockClass = "".concat(pkg.prefix, "--side-panel");
33
31
  var componentName = 'EditSidePanel'; // NOTE: the component SCSS is not imported here: it is rolled up separately.
34
32
  // Default values for props
35
33
 
@@ -77,7 +75,6 @@ export var EditSidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
77
75
  onClick: onRequestClose,
78
76
  kind: 'secondary'
79
77
  }];
80
- var actionContainerClassNames = cx(["".concat(blockClass, "__actions-container"), "".concat(sidePanelBlockClass, "__actions-container")]);
81
78
  return /*#__PURE__*/React.createElement(SidePanel, _extends({}, rest, _objectSpread({
82
79
  open: open,
83
80
  ref: ref,
@@ -92,18 +89,15 @@ export var EditSidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
92
89
  animateTitle: false,
93
90
  className: cx(blockClass, className),
94
91
  size: size,
95
- preventCloseOnClickOutside: true
92
+ preventCloseOnClickOutside: true,
93
+ actions: actions
96
94
  }), formTitle && /*#__PURE__*/React.createElement("h3", {
97
95
  className: "".concat(blockClass, "__form-title-text ").concat(blockClass, "__content-text")
98
96
  }, formTitle), formDescription && /*#__PURE__*/React.createElement("p", {
99
97
  className: "".concat(blockClass, "__form-description-text ").concat(blockClass, "__content-text")
100
98
  }, formDescription), /*#__PURE__*/React.createElement(Form, {
101
99
  className: "".concat(blockClass, "__form")
102
- }, children, /*#__PURE__*/React.createElement(ActionSet, {
103
- actions: actions,
104
- className: actionContainerClassNames,
105
- size: size
106
- })));
100
+ }, children));
107
101
  }); // Return a placeholder if not released and not enabled by feature flag
108
102
 
109
103
  EditSidePanel = pkg.checkComponentEnabled(EditSidePanel, componentName); // The display name of the component, used by React. Note that displayName
@@ -49,7 +49,7 @@ var defaults = {
49
49
  */
50
50
 
51
51
  export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
52
- var _ref4, _cx4;
52
+ var _window, _ref4, _cx4;
53
53
 
54
54
  var actionToolbarButtons = _ref.actionToolbarButtons,
55
55
  actions = _ref.actions,
@@ -107,7 +107,7 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
107
107
  size: size,
108
108
  open: open
109
109
  });
110
- var reducedMotion = window && window.matchMedia ? window.matchMedia('(prefers-reduced-motion: reduce)') : {
110
+ var reducedMotion = typeof window !== 'undefined' && (_window = window) !== null && _window !== void 0 && _window.matchMedia ? window.matchMedia('(prefers-reduced-motion: reduce)') : {
111
111
  matches: true
112
112
  }; // scroll panel to top going between steps
113
113
 
@@ -37,4 +37,4 @@ export { EditSidePanel } from './EditSidePanel';
37
37
  export { OptionsTile } from './OptionsTile';
38
38
  export { InlineEdit } from './InlineEdit';
39
39
  export { DataSpreadsheet } from './DataSpreadsheet';
40
- export { Datagrid } from './Datagrid';
40
+ export { Datagrid, useDatagrid, useInfiniteScroll, useNestedRows, useSelectRows, useExpandedRow, useOnRowClick, useSortableColumns, useRowIsMouseOver, useColumnRightAlign, useDisableSelectRows, useStickyColumn, useActionsColumn, useCustomizeColumns, useSelectAllWithToggle } from './Datagrid';
@@ -35,6 +35,7 @@ var defaults = {
35
35
  HTTPError404: true,
36
36
  HTTPErrorOther: true,
37
37
  ImportModal: true,
38
+ InlineEdit: true,
38
39
  NotificationsPanel: true,
39
40
  NoDataEmptyState: true,
40
41
  NoTagsEmptyState: true,
@@ -63,7 +64,6 @@ var defaults = {
63
64
  WebTerminalContentWrapper: false,
64
65
  EditSidePanel: false,
65
66
  CancelableTextEdit: false,
66
- InlineEdit: false,
67
67
  DataSpreadsheet: false,
68
68
  Datagrid: false
69
69
  /* new component flags here - comment used by generate CLI */
@@ -149,6 +149,11 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
149
149
  sortAttribute = _useItemSort.sortAttribute,
150
150
  setSortAttribute = _useItemSort.setSortAttribute;
151
151
 
152
+ var _useState21 = (0, _react.useState)([]),
153
+ _useState22 = (0, _slicedToArray2.default)(_useState21, 2),
154
+ appliedModifiers = _useState22[0],
155
+ setAppliedModifiers = _useState22[1];
156
+
152
157
  (0, _react.useEffect)(function () {
153
158
  var entries = items.entries; // flatItems is just a single array of all entries including children
154
159
 
@@ -158,6 +163,16 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
158
163
  if (globalFilters !== null && globalFilters !== void 0 && globalFilters.length) {
159
164
  var globalFilterValues = (0, _addSelectUtils.getGlobalFilterValues)(globalFilters, flattenedItems);
160
165
  setGlobalFilterOpts(globalFilterValues);
166
+ }
167
+
168
+ if (items.modifiers) {
169
+ var modifiersToApply = flattenedItems.map(function (item) {
170
+ var modifierAttribute = items.modifiers.id;
171
+ return (0, _defineProperty2.default)({
172
+ id: item.id
173
+ }, modifierAttribute, item[modifierAttribute]);
174
+ });
175
+ setAppliedModifiers(modifiersToApply);
161
176
  } // multi select with nested data needs to be normalized
162
177
 
163
178
 
@@ -286,7 +301,18 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
286
301
  };
287
302
 
288
303
  var submitHandler = function submitHandler() {
289
- onSubmit(multi ? multiSelection : singleSelection);
304
+ if (multi && appliedModifiers.length > 0) {
305
+ var selections = multiSelection.map(function (item) {
306
+ return appliedModifiers.find(function (mod) {
307
+ return mod.id === item;
308
+ });
309
+ });
310
+ onSubmit(selections);
311
+ } else if (multi && appliedModifiers.length === 0) {
312
+ onSubmit(multiSelection);
313
+ } else {
314
+ onSubmit(singleSelection);
315
+ }
290
316
  };
291
317
 
292
318
  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));
@@ -319,7 +345,9 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
319
345
  removeIconDescription: removeIconDescription,
320
346
  setMultiSelection: setMultiSelection,
321
347
  displayMetalPanel: displayMetalPanel,
322
- setDisplayMetaPanel: setDisplayMetaPanel
348
+ setDisplayMetaPanel: setDisplayMetaPanel,
349
+ modifiers: items.modifiers,
350
+ appliedModifiers: appliedModifiers
323
351
  };
324
352
 
325
353
  var setShowBreadsCrumbs = function setShowBreadsCrumbs() {
@@ -402,7 +430,9 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
402
430
  }));
403
431
  })) : /*#__PURE__*/_react.default.createElement("div", null, hasResults ? /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, (0, _extends2.default)({}, commonListProps, {
404
432
  filteredItems: itemsToDisplay,
405
- modifiers: items === null || items === void 0 ? void 0 : items.modifiers
433
+ modifiers: items.modifiers,
434
+ appliedModifiers: appliedModifiers,
435
+ setAppliedModifiers: setAppliedModifiers
406
436
  })) : /*#__PURE__*/_react.default.createElement("div", {
407
437
  className: "".concat(blockClass, "__body")
408
438
  }, /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
@@ -438,6 +468,7 @@ AddSelect.propTypes = {
438
468
  influencerTitle: _propTypes.default.string,
439
469
  items: _propTypes.default.shape({
440
470
  modifiers: _propTypes.default.shape({
471
+ id: _propTypes.default.string,
441
472
  label: _propTypes.default.string,
442
473
  options: _propTypes.default.array
443
474
  }),
@@ -34,19 +34,24 @@ var _settings = require("../../settings");
34
34
  var componentName = 'AddSelectList';
35
35
 
36
36
  var AddSelectList = function AddSelectList(_ref) {
37
- var filteredItems = _ref.filteredItems,
37
+ var _modifiers$options;
38
+
39
+ var appliedModifiers = _ref.appliedModifiers,
40
+ filteredItems = _ref.filteredItems,
38
41
  metaIconDescription = _ref.metaIconDescription,
39
42
  modifiers = _ref.modifiers,
40
43
  multi = _ref.multi,
41
44
  multiSelection = _ref.multiSelection,
42
45
  navIconDescription = _ref.navIconDescription,
43
46
  path = _ref.path,
47
+ setAppliedModifiers = _ref.setAppliedModifiers,
44
48
  setDisplayMetaPanel = _ref.setDisplayMetaPanel,
45
49
  setMultiSelection = _ref.setMultiSelection,
46
50
  setPath = _ref.setPath,
47
51
  setSingleSelection = _ref.setSingleSelection,
48
52
  singleSelection = _ref.singleSelection;
49
53
  var blockClass = "".concat(_settings.pkg.prefix, "--add-select__selections");
54
+ var hasModifiers = (modifiers === null || modifiers === void 0 ? void 0 : (_modifiers$options = modifiers.options) === null || _modifiers$options === void 0 ? void 0 : _modifiers$options.length) > 0;
50
55
 
51
56
  var handleSingleSelection = function handleSingleSelection(value) {
52
57
  setSingleSelection(value);
@@ -147,14 +152,23 @@ var AddSelectList = function AddSelectList(_ref) {
147
152
  return /*#__PURE__*/_react.default.createElement(Icon, null);
148
153
  };
149
154
 
155
+ var modifierHandler = function modifierHandler(id, selectedItem) {
156
+ var modifiersClone = (0, _toConsumableArray2.default)(appliedModifiers);
157
+ var modifierIdx = modifiersClone.findIndex(function (item) {
158
+ return item.id === id;
159
+ });
160
+ modifiersClone[modifierIdx] = (0, _defineProperty2.default)({
161
+ id: id
162
+ }, modifiers.id, selectedItem);
163
+ setAppliedModifiers(modifiersClone);
164
+ };
165
+
150
166
  return /*#__PURE__*/_react.default.createElement("div", {
151
167
  className: "".concat(blockClass, "-wrapper")
152
168
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListWrapper, {
153
169
  selection: true,
154
170
  className: "".concat(blockClass)
155
171
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListBody, null, filteredItems.map(function (item) {
156
- var _modifiers$options;
157
-
158
172
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListRow, {
159
173
  key: item.id,
160
174
  className: (0, _classnames.default)("".concat(blockClass, "-row"), (0, _defineProperty2.default)({}, "".concat(blockClass, "-row-selected"), isSelected(item.id)))
@@ -182,22 +196,29 @@ var AddSelectList = function AddSelectList(_ref) {
182
196
  className: "".concat(blockClass, "-cell-title")
183
197
  }, item.title), item.subtitle && /*#__PURE__*/_react.default.createElement("span", {
184
198
  className: "".concat(blockClass, "-cell-subtitle")
185
- }, 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, {
199
+ }, item.subtitle)))), hasModifiers && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Dropdown, {
186
200
  id: "".concat(item.id, "-modifier"),
187
201
  type: "inline",
188
- items: modifiers === null || modifiers === void 0 ? void 0 : modifiers.options,
202
+ items: modifiers.options,
189
203
  light: true,
190
- label: modifiers === null || modifiers === void 0 ? void 0 : modifiers.label,
204
+ label: modifiers.label,
191
205
  disabled: !isSelected(item.id),
192
- className: "".concat(blockClass, "-dropdown ").concat(blockClass, "-hidden-hover")
206
+ className: "".concat(blockClass, "-dropdown ").concat(blockClass, "-hidden-hover"),
207
+ initialSelectedItem: item[modifiers.id],
208
+ onChange: function onChange(_ref5) {
209
+ var selectedItem = _ref5.selectedItem;
210
+ return modifierHandler(item.id, selectedItem);
211
+ }
193
212
  })) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, {
194
213
  className: "".concat(blockClass, "-radio"),
195
214
  name: "add-select-selections",
196
215
  id: item.id,
197
216
  value: item.value,
198
217
  labelText: item.title,
199
- onChange: handleSingleSelection,
200
- selected: item.value === singleSelection
218
+ onChange: function onChange() {
219
+ return handleSingleSelection(item.id);
220
+ },
221
+ selected: item.id === singleSelection
201
222
  }), item.children && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
202
223
  renderIcon: _iconsReact.ChevronRight16,
203
224
  iconDescription: navIconDescription,
@@ -228,6 +249,7 @@ var AddSelectList = function AddSelectList(_ref) {
228
249
 
229
250
  exports.AddSelectList = AddSelectList;
230
251
  AddSelectList.propTypes = {
252
+ appliedModifiers: _propTypes.default.array,
231
253
  filteredItems: _propTypes.default.array,
232
254
  metaIconDescription: _propTypes.default.string,
233
255
  modifiers: _propTypes.default.object,
@@ -235,6 +257,7 @@ AddSelectList.propTypes = {
235
257
  multiSelection: _propTypes.default.array,
236
258
  navIconDescription: _propTypes.default.string,
237
259
  path: _propTypes.default.array,
260
+ setAppliedModifiers: _propTypes.default.func,
238
261
  setDisplayMetaPanel: _propTypes.default.func,
239
262
  setMultiSelection: _propTypes.default.func,
240
263
  setPath: _propTypes.default.func,
@@ -27,11 +27,15 @@ var _excluded = ["meta", "icon", "avatar"];
27
27
  var componentName = 'AddSelectSidebar';
28
28
 
29
29
  var AddSelectSidebar = function AddSelectSidebar(_ref) {
30
- var closeIconDescription = _ref.closeIconDescription,
30
+ var _modifiers$options;
31
+
32
+ var appliedModifiers = _ref.appliedModifiers,
33
+ closeIconDescription = _ref.closeIconDescription,
31
34
  displayMetalPanel = _ref.displayMetalPanel,
32
35
  influencerTitle = _ref.influencerTitle,
33
36
  items = _ref.items,
34
37
  metaPanelTitle = _ref.metaPanelTitle,
38
+ modifiers = _ref.modifiers,
35
39
  multiSelection = _ref.multiSelection,
36
40
  noSelectionDescription = _ref.noSelectionDescription,
37
41
  noSelectionTitle = _ref.noSelectionTitle,
@@ -39,6 +43,8 @@ var AddSelectSidebar = function AddSelectSidebar(_ref) {
39
43
  setDisplayMetaPanel = _ref.setDisplayMetaPanel,
40
44
  setMultiSelection = _ref.setMultiSelection;
41
45
  var blockClass = "".concat(_settings.pkg.prefix, "--add-select__sidebar");
46
+ var hasModifiers = (modifiers === null || modifiers === void 0 ? void 0 : (_modifiers$options = modifiers.options) === null || _modifiers$options === void 0 ? void 0 : _modifiers$options.length) > 0;
47
+ var hasSelections = multiSelection.length > 0;
42
48
 
43
49
  var handleItemRemove = function handleItemRemove(id) {
44
50
  var newSelections = multiSelection.filter(function (v) {
@@ -61,24 +67,23 @@ var AddSelectSidebar = function AddSelectSidebar(_ref) {
61
67
  return acc;
62
68
  }, []);
63
69
 
64
- var getTitle = function getTitle(_ref2) {
65
- var title = _ref2.title,
66
- subtitle = _ref2.subtitle,
67
- id = _ref2.id;
70
+ var getTitle = function getTitle(item) {
68
71
  return /*#__PURE__*/_react.default.createElement("div", {
69
72
  className: "".concat(blockClass, "-accordion-title")
70
73
  }, /*#__PURE__*/_react.default.createElement("div", {
71
74
  className: "".concat(blockClass, "-selected-item")
72
75
  }, /*#__PURE__*/_react.default.createElement("p", {
73
76
  className: "".concat(blockClass, "-selected-item-title")
74
- }, title), /*#__PURE__*/_react.default.createElement("p", {
77
+ }, item.title), /*#__PURE__*/_react.default.createElement("p", {
75
78
  className: "".concat(blockClass, "-selected-item-subtitle")
76
- }, subtitle)), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
79
+ }, item.subtitle)), hasModifiers && /*#__PURE__*/_react.default.createElement("div", null, appliedModifiers.find(function (modifier) {
80
+ return modifier.id === item.id;
81
+ })[modifiers.id]), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
77
82
  renderIcon: _iconsReact.SubtractAlt32,
78
83
  iconDescription: removeIconDescription,
79
84
  hasIconOnly: true,
80
85
  onClick: function onClick() {
81
- return handleItemRemove(id);
86
+ return handleItemRemove(item.id);
82
87
  },
83
88
  kind: "ghost",
84
89
  className: "".concat(blockClass, "-item-remove-button"),
@@ -104,7 +109,7 @@ var AddSelectSidebar = function AddSelectSidebar(_ref) {
104
109
  }, influencerTitle), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
105
110
  type: "gray",
106
111
  size: "sm"
107
- }, multiSelection.length)), multiSelection.length > 0 ? /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Accordion, {
112
+ }, multiSelection.length)), hasSelections ? /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Accordion, {
108
113
  align: "start"
109
114
  }, sidebarItems.map(function (item) {
110
115
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.AccordionItem, {
@@ -131,11 +136,13 @@ var AddSelectSidebar = function AddSelectSidebar(_ref) {
131
136
 
132
137
  exports.AddSelectSidebar = AddSelectSidebar;
133
138
  AddSelectSidebar.propTypes = {
139
+ appliedModifiers: _propTypes.default.array,
134
140
  closeIconDescription: _propTypes.default.string,
135
141
  displayMetalPanel: _propTypes.default.object,
136
142
  influencerTitle: _propTypes.default.string,
137
143
  items: _propTypes.default.array,
138
144
  metaPanelTitle: _propTypes.default.string,
145
+ modifiers: _propTypes.default.object,
139
146
  multiSelection: _propTypes.default.array,
140
147
  noSelectionDescription: _propTypes.default.string,
141
148
  noSelectionTitle: _propTypes.default.string,
@@ -23,14 +23,12 @@ var _iconsReact = require("@carbon/icons-react");
23
23
 
24
24
  var _carbonComponentsReact = require("carbon-components-react");
25
25
 
26
- var _OverflowMenu = require("carbon-components-react/lib/components/OverflowMenu/OverflowMenu");
27
-
28
- var _setupGetInstanceId = _interopRequireDefault(require("carbon-components-react/lib/tools/setupGetInstanceId"));
29
-
30
26
  var _classnames = _interopRequireDefault(require("classnames"));
31
27
 
32
28
  var _propTypes = require("prop-types");
33
29
 
30
+ var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
31
+
34
32
  var _react = _interopRequireWildcard(require("react"));
35
33
 
36
34
  var _excluded = ["children", "className", "overflowMenu"],
@@ -45,7 +43,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
45
43
 
46
44
  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; }
47
45
 
48
- var getInstanceId = (0, _setupGetInstanceId.default)();
49
46
  var blockClass = 'security--combo-button';
50
47
  /**
51
48
  * The combo button consolidates similar actions, while exposing the most commonly used one.
@@ -57,7 +54,7 @@ var ComboButton = function ComboButton(_ref) {
57
54
  overflowMenu = _ref.overflowMenu,
58
55
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
59
56
 
60
- var _useRef = (0, _react.useRef)(getInstanceId()),
57
+ var _useRef = (0, _react.useRef)((0, _uuidv.default)()),
61
58
  instanceId = _useRef.current;
62
59
 
63
60
  var _useState = (0, _react.useState)(false),
@@ -83,7 +80,7 @@ var ComboButton = function ComboButton(_ref) {
83
80
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
84
81
  className: (0, _classnames.default)(blockClass, className),
85
82
  "data-floating-menu-container": true
86
- }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, primaryAction), restActions.length > 0 && /*#__PURE__*/_react.default.createElement(_OverflowMenu.OverflowMenu, (0, _extends2.default)({}, overflowMenu, {
83
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, primaryAction), restActions.length > 0 && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, (0, _extends2.default)({}, overflowMenu, {
87
84
  className: "".concat(blockClass, "__overflow-menu"),
88
85
  menuOptionsClass: "".concat(blockClass, "__overflow-menu__list"),
89
86
  onClick: function onClick() {
@@ -121,5 +118,5 @@ ComboButton.propTypes = {
121
118
  className: _propTypes.string,
122
119
 
123
120
  /** Provide the [props of the `OverflowMenu`](https://react.carbondesignsystem.com/?path=/docs/overflowmenu) */
124
- overflowMenu: (0, _propTypes.shape)(_OverflowMenu.OverflowMenu.propTypes)
121
+ overflowMenu: (0, _propTypes.shape)(_carbonComponentsReact.OverflowMenu.propTypes)
125
122
  };
@@ -27,8 +27,6 @@ var _carbonComponentsReact = require("carbon-components-react");
27
27
 
28
28
  var _SidePanel = require("../SidePanel");
29
29
 
30
- var _ActionSet = require("../ActionSet");
31
-
32
30
  var _excluded = ["className", "children", "disableSubmit", "formTitle", "formDescription", "onRequestClose", "onRequestSubmit", "open", "primaryButtonText", "secondaryButtonText", "selectorPageContent", "selectorPrimaryFocus", "subtitle", "title"];
33
31
 
34
32
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -37,7 +35,6 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
37
35
 
38
36
  // The block part of our conventional BEM class names (blockClass__E--M).
39
37
  var blockClass = "".concat(_settings.pkg.prefix, "--create-side-panel");
40
- var sidePanelBlockClass = "".concat(_settings.pkg.prefix, "--side-panel");
41
38
  var componentName = 'CreateSidePanel'; // NOTE: the component SCSS is not imported here: it is rolled up separately.
42
39
 
43
40
  /**
@@ -74,7 +71,6 @@ var CreateSidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
74
71
  onClick: onRequestClose,
75
72
  kind: 'secondary'
76
73
  }];
77
- var actionContainerClassNames = (0, _classnames.default)(["".concat(blockClass, "__actions-container"), "".concat(sidePanelBlockClass, "__actions-container")]);
78
74
  return selectorPageContent && /*#__PURE__*/_react.default.createElement(_SidePanel.SidePanel, (0, _extends2.default)({}, rest, _objectSpread({
79
75
  open: open,
80
76
  ref: ref,
@@ -88,18 +84,15 @@ var CreateSidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
88
84
  slideIn: true,
89
85
  animateTitle: false,
90
86
  className: (0, _classnames.default)(blockClass, className),
91
- size: "md"
87
+ size: "md",
88
+ actions: actions
92
89
  }), /*#__PURE__*/_react.default.createElement("h3", {
93
90
  className: "".concat(blockClass, "__form-title-text ").concat(blockClass, "__content-text")
94
91
  }, formTitle), /*#__PURE__*/_react.default.createElement("p", {
95
92
  className: "".concat(blockClass, "__form-description-text ").concat(blockClass, "__content-text")
96
93
  }, formDescription), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Form, {
97
94
  className: "".concat(blockClass, "__form")
98
- }, children, /*#__PURE__*/_react.default.createElement(_ActionSet.ActionSet, {
99
- actions: actions,
100
- className: actionContainerClassNames,
101
- size: "md"
102
- })));
95
+ }, children));
103
96
  });
104
97
 
105
98
  exports.CreateSidePanel = CreateSidePanel;