@carbon/ibm-products 1.5.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. package/css/index-full-carbon.css +389 -139
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +9 -3
  4. package/css/index-full-carbon.min.css.map +1 -0
  5. package/css/index-without-carbon-released-only.css +33 -27
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +3 -3
  8. package/css/index-without-carbon-released-only.min.css.map +1 -0
  9. package/css/index-without-carbon.css +330 -133
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +9 -3
  12. package/css/index-without-carbon.min.css.map +1 -0
  13. package/css/index.css +332 -135
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +9 -3
  16. package/css/index.min.css.map +1 -0
  17. package/es/components/APIKeyModal/APIKeyModal.js +10 -13
  18. package/es/components/ActionBar/ActionBar.js +0 -3
  19. package/es/components/ActionBar/ActionBarItem.js +2 -6
  20. package/es/components/ActionSet/ActionSet.js +11 -13
  21. package/es/components/AddSelect/AddSelect.js +122 -72
  22. package/es/components/AddSelect/AddSelectBreadcrumbs.js +56 -0
  23. package/es/components/AddSelect/AddSelectList.js +94 -0
  24. package/es/components/AddSelect/AddSelectSidebar.js +110 -0
  25. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +5 -5
  26. package/es/components/ButtonMenu/ButtonMenu.js +6 -4
  27. package/es/components/ButtonMenu/ButtonMenuItem.js +1 -2
  28. package/es/components/Card/Card.js +37 -25
  29. package/es/components/Card/CardFooter.js +14 -10
  30. package/es/components/Card/CardHeader.js +8 -6
  31. package/es/components/Cascade/Cascade.js +5 -4
  32. package/es/components/ComboButton/ComboButton.js +0 -4
  33. package/es/components/ComboButton/ComboButtonItem/index.js +0 -5
  34. package/es/components/CreateFullPage/CreateFullPageStep.js +15 -8
  35. package/es/components/CreateModal/CreateModal.js +1 -4
  36. package/es/components/CreateTearsheet/CreateTearsheet.js +10 -11
  37. package/es/components/CreateTearsheet/CreateTearsheetStep.js +18 -14
  38. package/es/components/DataSpreadsheet/DataSpreadsheet.js +414 -0
  39. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +138 -0
  40. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +64 -0
  41. package/es/components/DataSpreadsheet/createActiveCellFn.js +45 -0
  42. package/es/components/DataSpreadsheet/generateData.js +47 -0
  43. package/es/components/DataSpreadsheet/getCellSize.js +30 -0
  44. package/es/components/{CancelableTextEdit → DataSpreadsheet}/index.js +2 -2
  45. package/es/components/EditSidePanel/EditSidePanel.js +9 -10
  46. package/es/components/EmptyStates/EmptyState.js +8 -7
  47. package/es/components/EmptyStates/EmptyStateContent.js +2 -2
  48. package/es/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +5 -9
  49. package/es/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +5 -9
  50. package/es/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +5 -9
  51. package/es/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +5 -9
  52. package/es/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +5 -9
  53. package/es/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +5 -9
  54. package/es/components/ExampleComponent/ExampleComponent.js +12 -13
  55. package/es/components/ExportModal/ExportModal.js +13 -9
  56. package/es/components/ExpressiveCard/ExpressiveCard.js +0 -8
  57. package/es/components/ImportModal/ImportModal.js +7 -5
  58. package/es/components/InlineEdit/InlineEdit.js +256 -88
  59. package/es/components/LoadingBar/LoadingBar.js +13 -17
  60. package/es/components/ModifiedTabs/ModifiedTabLabelNew.js +0 -4
  61. package/es/components/ModifiedTabs/ModifiedTabLabelWithClose.js +0 -5
  62. package/es/components/ModifiedTabs/ModifiedTabs.js +24 -18
  63. package/es/components/NotificationsPanel/NotificationsPanel.js +125 -89
  64. package/es/components/OptionsTile/OptionsTile.js +6 -9
  65. package/es/components/PageHeader/PageHeader.js +19 -13
  66. package/es/components/PageHeader/PageHeaderTitle.js +10 -6
  67. package/es/components/ProductiveCard/ProductiveCard.js +23 -12
  68. package/es/components/RemoveModal/RemoveModal.js +0 -3
  69. package/es/components/SidePanel/SidePanel.js +54 -32
  70. package/es/components/TagSet/TagSet.js +13 -9
  71. package/es/components/TagSet/TagSetModal.js +16 -12
  72. package/es/components/TagSet/TagSetOverflow.js +21 -13
  73. package/es/components/Tearsheet/Tearsheet.js +27 -18
  74. package/es/components/Tearsheet/TearsheetNarrow.js +18 -15
  75. package/es/components/Tearsheet/TearsheetShell.js +3 -4
  76. package/es/components/Toolbar/ToolbarButton.js +0 -3
  77. package/es/components/WebTerminal/WebTerminal.js +18 -19
  78. package/es/components/index.js +2 -2
  79. package/es/global/js/hooks/index.js +1 -0
  80. package/es/global/js/hooks/useActiveElement.js +27 -0
  81. package/es/global/js/package-settings.js +2 -1
  82. package/es/global/js/utils/Wrap.js +7 -5
  83. package/es/global/js/utils/getScrollbarWidth.js +14 -0
  84. package/es/settings.js +0 -5
  85. package/lib/components/APIKeyModal/APIKeyModal.js +10 -13
  86. package/lib/components/ActionBar/ActionBar.js +0 -3
  87. package/lib/components/ActionBar/ActionBarItem.js +2 -6
  88. package/lib/components/ActionSet/ActionSet.js +11 -13
  89. package/lib/components/AddSelect/AddSelect.js +126 -72
  90. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +71 -0
  91. package/lib/components/AddSelect/AddSelectList.js +112 -0
  92. package/lib/components/AddSelect/AddSelectSidebar.js +122 -0
  93. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +5 -5
  94. package/lib/components/ButtonMenu/ButtonMenu.js +6 -4
  95. package/lib/components/ButtonMenu/ButtonMenuItem.js +1 -2
  96. package/lib/components/Card/Card.js +37 -25
  97. package/lib/components/Card/CardFooter.js +14 -10
  98. package/lib/components/Card/CardHeader.js +8 -6
  99. package/lib/components/Cascade/Cascade.js +5 -4
  100. package/lib/components/ComboButton/ComboButton.js +0 -4
  101. package/lib/components/ComboButton/ComboButtonItem/index.js +0 -5
  102. package/lib/components/CreateFullPage/CreateFullPageStep.js +17 -14
  103. package/lib/components/CreateModal/CreateModal.js +1 -4
  104. package/lib/components/CreateTearsheet/CreateTearsheet.js +10 -11
  105. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +20 -20
  106. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +438 -0
  107. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +161 -0
  108. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +80 -0
  109. package/lib/components/DataSpreadsheet/createActiveCellFn.js +56 -0
  110. package/lib/components/DataSpreadsheet/generateData.js +58 -0
  111. package/lib/components/DataSpreadsheet/getCellSize.js +39 -0
  112. package/lib/components/DataSpreadsheet/index.js +13 -0
  113. package/lib/components/EditSidePanel/EditSidePanel.js +9 -10
  114. package/lib/components/EmptyStates/EmptyState.js +10 -9
  115. package/lib/components/EmptyStates/EmptyStateContent.js +2 -2
  116. package/lib/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +4 -8
  117. package/lib/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +4 -8
  118. package/lib/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +4 -8
  119. package/lib/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +4 -8
  120. package/lib/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +4 -8
  121. package/lib/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +4 -8
  122. package/lib/components/ExampleComponent/ExampleComponent.js +12 -13
  123. package/lib/components/ExportModal/ExportModal.js +13 -9
  124. package/lib/components/ExpressiveCard/ExpressiveCard.js +0 -8
  125. package/lib/components/ImportModal/ImportModal.js +7 -5
  126. package/lib/components/InlineEdit/InlineEdit.js +253 -87
  127. package/lib/components/LoadingBar/LoadingBar.js +13 -17
  128. package/lib/components/ModifiedTabs/ModifiedTabLabelNew.js +0 -4
  129. package/lib/components/ModifiedTabs/ModifiedTabLabelWithClose.js +0 -5
  130. package/lib/components/ModifiedTabs/ModifiedTabs.js +24 -18
  131. package/lib/components/NotificationsPanel/NotificationsPanel.js +122 -87
  132. package/lib/components/OptionsTile/OptionsTile.js +6 -9
  133. package/lib/components/PageHeader/PageHeader.js +18 -12
  134. package/lib/components/PageHeader/PageHeaderTitle.js +10 -6
  135. package/lib/components/ProductiveCard/ProductiveCard.js +24 -18
  136. package/lib/components/RemoveModal/RemoveModal.js +0 -3
  137. package/lib/components/SidePanel/SidePanel.js +54 -32
  138. package/lib/components/TagSet/TagSet.js +13 -9
  139. package/lib/components/TagSet/TagSetModal.js +17 -13
  140. package/lib/components/TagSet/TagSetOverflow.js +24 -19
  141. package/lib/components/Tearsheet/Tearsheet.js +26 -17
  142. package/lib/components/Tearsheet/TearsheetNarrow.js +18 -15
  143. package/lib/components/Tearsheet/TearsheetShell.js +2 -3
  144. package/lib/components/Toolbar/ToolbarButton.js +0 -3
  145. package/lib/components/WebTerminal/WebTerminal.js +18 -19
  146. package/lib/components/index.js +8 -8
  147. package/lib/global/js/hooks/index.js +8 -0
  148. package/lib/global/js/hooks/useActiveElement.js +39 -0
  149. package/lib/global/js/package-settings.js +2 -1
  150. package/lib/global/js/utils/Wrap.js +7 -5
  151. package/lib/global/js/utils/getScrollbarWidth.js +23 -0
  152. package/lib/settings.js +0 -6
  153. package/package.json +25 -23
  154. package/scss/components/AddSelect/_add-select.scss +59 -5
  155. package/scss/components/BreadcrumbWithOverflow/_index.scss +1 -1
  156. package/scss/components/CreateInfluencer/_create-influencer.scss +4 -4
  157. package/scss/components/CreateTearsheet/_create-tearsheet.scss +2 -2
  158. package/scss/components/CreateTearsheetNarrow/_storybook-styles.scss +0 -6
  159. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +102 -0
  160. package/scss/components/{CancelableTextEdit → DataSpreadsheet}/_index.scss +2 -2
  161. package/scss/components/DataSpreadsheet/_storybook-styles.scss +6 -0
  162. package/scss/components/EditSidePanel/_storybook-styles.scss +0 -8
  163. package/scss/components/InlineEdit/_inline-edit.scss +293 -10
  164. package/scss/components/InlineEdit/_storybook-styles.scss +12 -6
  165. package/scss/components/LoadingBar/_storybook-styles.scss +0 -5
  166. package/scss/components/NotificationsPanel/_notifications-panel.scss +2 -2
  167. package/scss/components/OptionsTile/_storybook-styles.scss +0 -7
  168. package/scss/components/PageHeader/_index.scss +1 -1
  169. package/scss/components/PageHeader/_page-header.scss +4 -1
  170. package/scss/components/ProductiveCard/_productive-card.scss +0 -4
  171. package/scss/components/SidePanel/_side-panel.scss +15 -6
  172. package/scss/components/StatusIcon/_index.scss +1 -1
  173. package/scss/components/StatusIcon/_status-icon.scss +4 -4
  174. package/scss/components/TagSet/_index.scss +1 -1
  175. package/scss/components/UserProfileImage/_index.scss +1 -1
  176. package/scss/components/UserProfileImage/_user-profile-image.scss +2 -2
  177. package/scss/components/WebTerminal/_web-terminal.scss +2 -2
  178. package/scss/components/_index.scss +1 -1
  179. package/scss/global/styles/_project-settings.scss +5 -1
  180. package/es/components/CancelableTextEdit/CancelableTextEdit.js +0 -245
  181. package/es/generated/feature-flags/feature-flags.js +0 -15
  182. package/lib/components/CancelableTextEdit/CancelableTextEdit.js +0 -265
  183. package/lib/components/CancelableTextEdit/index.js +0 -13
  184. package/lib/generated/feature-flags/feature-flags.js +0 -22
  185. package/scss/components/CancelableTextEdit/_cancelable-text-edit.scss +0 -211
  186. package/scss/components/CancelableTextEdit/_storybook-styles.scss +0 -15
  187. package/scss/generated/feature-flags/_feature-flags.scss +0 -19
@@ -4,6 +4,7 @@
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
+ export { useActiveElement } from './useActiveElement';
7
8
  export { useNearestScroll, useWindowScroll } from './useWindowScroll';
8
9
  export { useWindowResize } from './useWindowResize';
9
10
  export { useClickOutside } from './useClickOutside';
@@ -0,0 +1,27 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+
3
+ /**
4
+ * Copyright IBM Corp. 2022, 2022
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ import { useState, useEffect } from 'react';
10
+ export var useActiveElement = function useActiveElement() {
11
+ var _useState = useState(document.activeElement),
12
+ _useState2 = _slicedToArray(_useState, 2),
13
+ active = _useState2[0],
14
+ setActive = _useState2[1];
15
+
16
+ var handleFocusIn = function handleFocusIn() {
17
+ setActive(document.activeElement);
18
+ };
19
+
20
+ useEffect(function () {
21
+ document.addEventListener('focusin', handleFocusIn);
22
+ return function () {
23
+ document.removeEventListener('focusin', handleFocusIn);
24
+ };
25
+ }, []);
26
+ return active;
27
+ };
@@ -63,7 +63,8 @@ var defaults = {
63
63
  EditSidePanel: false,
64
64
  OptionsTile: false,
65
65
  CancelableTextEdit: false,
66
- InlineEdit: false
66
+ InlineEdit: false,
67
+ DataSpreadsheet: false
67
68
  /* new component flags here - comment used by generate CLI */
68
69
 
69
70
  },
@@ -25,6 +25,11 @@ var isEmpty = function isEmpty(children) {
25
25
  }
26
26
  });
27
27
  return result;
28
+ }; // Default values for props
29
+
30
+
31
+ var defaults = {
32
+ element: 'div'
28
33
  };
29
34
  /**
30
35
  * A simple conditional wrapper that encloses its children in a <div> (or other
@@ -37,11 +42,11 @@ var isEmpty = function isEmpty(children) {
37
42
  * remain undefined if it does not render.
38
43
  */
39
44
 
40
-
41
45
  export var Wrap = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
42
46
  var alwaysRender = _ref.alwaysRender,
43
47
  children = _ref.children,
44
- Wrapper = _ref.element,
48
+ _ref$element = _ref.element,
49
+ Wrapper = _ref$element === void 0 ? defaults.element : _ref$element,
45
50
  neverRender = _ref.neverRender,
46
51
  rest = _objectWithoutProperties(_ref, _excluded);
47
52
 
@@ -79,7 +84,4 @@ Wrap.propTypes = {
79
84
  * content will be rendered.
80
85
  */
81
86
  neverRender: PropTypes.bool
82
- };
83
- Wrap.defaultProps = {
84
- element: 'div'
85
87
  };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Copyright IBM Corp. 2022, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ export var getScrollbarWidth = function getScrollbarWidth() {
8
+ var scrollDiv = document.createElement('div');
9
+ scrollDiv.setAttribute('style', 'width: 100px; height: 100px; overflow: scroll; position:absolute; top:-9999px;');
10
+ document.body.appendChild(scrollDiv);
11
+ var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
12
+ document.body.removeChild(scrollDiv);
13
+ return scrollbarWidth;
14
+ };
package/es/settings.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { Canary } from './components/_Canary';
2
- import featureFlags from './generated/feature-flags/feature-flags';
3
2
  import pkgSettings from './global/js/package-settings';
4
3
  import { settings as carbonSettings } from 'carbon-components';
5
4
  import React from 'react';
@@ -13,10 +12,6 @@ export var carbon = {
13
12
  carbonSettings.prefix = val;
14
13
  },
15
14
 
16
- get flags() {
17
- return featureFlags;
18
- },
19
-
20
15
  get themes() {
21
16
  return themes;
22
17
  }
@@ -51,18 +51,25 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
51
51
 
52
52
  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; }
53
53
 
54
- var componentName = 'APIKeyModal';
54
+ var componentName = 'APIKeyModal'; // Default values for props
55
+
56
+ var defaults = {
57
+ apiKeyName: '',
58
+ customSteps: Object.freeze([])
59
+ };
55
60
  var APIKeyModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
56
61
  var apiKey = _ref.apiKey,
57
62
  apiKeyLabel = _ref.apiKeyLabel,
58
- apiKeyName = _ref.apiKeyName,
63
+ _ref$apiKeyName = _ref.apiKeyName,
64
+ apiKeyName = _ref$apiKeyName === void 0 ? defaults.apiKeyName : _ref$apiKeyName,
59
65
  body = _ref.body,
60
66
  className = _ref.className,
61
67
  closeButtonText = _ref.closeButtonText,
62
68
  copyButtonText = _ref.copyButtonText,
63
69
  copyErrorText = _ref.copyErrorText,
64
70
  copyIconDescription = _ref.copyIconDescription,
65
- customSteps = _ref.customSteps,
71
+ _ref$customSteps = _ref.customSteps,
72
+ customSteps = _ref$customSteps === void 0 ? defaults.customSteps : _ref$customSteps,
66
73
  downloadBodyText = _ref.downloadBodyText,
67
74
  downloadFileName = _ref.downloadFileName,
68
75
  downloadFileType = _ref.downloadFileType,
@@ -602,14 +609,4 @@ APIKeyModal.propTypes = {
602
609
  */
603
610
  showAPIKeyLabel: _propTypes.default.string
604
611
  };
605
- APIKeyModal.defaultProps = {
606
- apiKeyName: '',
607
- customSteps: [],
608
- error: false,
609
- hasAPIKeyVisibilityToggle: false,
610
- hasDownloadLink: false,
611
- loading: false,
612
- nameRequired: false,
613
- open: false
614
- };
615
612
  APIKeyModal.displayName = componentName;
@@ -291,7 +291,4 @@ ActionBar.propTypes = {
291
291
  * align tags to right of available space
292
292
  */
293
293
  rightAlign: _propTypes.default.bool
294
- };
295
- ActionBar.defaultProps = {
296
- rightAlign: false
297
294
  };
@@ -56,14 +56,11 @@ exports.ActionBarItem = ActionBarItem = _settings.pkg.checkComponentEnabled(Acti
56
56
 
57
57
  var reservedProps = ['hasIconOnly', 'kind', 'size', 'tooltipPosition', 'tooltipAlignment', 'type']; // Base props on Carbon Button
58
58
 
59
- var propTypes = _objectSpread({}, _carbonComponentsReact.Button.propTypes);
60
-
61
- var defaultProps = _objectSpread({}, _carbonComponentsReact.Button.defaultProps); // Remove reserved props
59
+ var propTypes = _objectSpread({}, _carbonComponentsReact.Button.propTypes); // Remove reserved props
62
60
 
63
61
 
64
62
  reservedProps.forEach(function (prop) {
65
63
  delete propTypes[prop];
66
- delete defaultProps[prop];
67
64
  });
68
65
  ActionBarItem.displayName = componentName;
69
66
  ActionBarItem.propTypes = _objectSpread(_objectSpread({}, propTypes), {}, {
@@ -103,5 +100,4 @@ ActionBarItem.propTypes = _objectSpread(_objectSpread({}, propTypes), {}, {
103
100
  * (inherited from Carbon Button)
104
101
  */
105
102
  renderIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])
106
- });
107
- ActionBarItem.defaultProps = _objectSpread({}, defaultProps);
103
+ });
@@ -25,7 +25,7 @@ var _propsHelper = require("../../global/js/utils/props-helper");
25
25
 
26
26
  var _carbonComponentsReact = require("carbon-components-react");
27
27
 
28
- var _excluded = ["className", "disabled", "kind", "label", "loading", "onClick", "size"],
28
+ var _excluded = ["className", "disabled", "kind", "label", "loading"],
29
29
  _excluded2 = ["actions", "buttonSize", "className", "size"];
30
30
 
31
31
  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; }
@@ -41,17 +41,13 @@ var ActionSetButton = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
41
41
  kind = _ref.kind,
42
42
  label = _ref.label,
43
43
  loading = _ref.loading,
44
- onClick = _ref.onClick,
45
- size = _ref.size,
46
44
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
47
45
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, (0, _extends2.default)({}, rest, {
48
46
  isExpressive: true,
49
47
  className: (0, _classnames.default)(className, ["".concat(blockClass, "__action-button"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__action-button--ghost"), kind === 'ghost' || kind === 'danger--ghost')]),
50
48
  disabled: disabled || loading || false,
51
49
  kind: kind,
52
- onClick: onClick,
53
- ref: ref,
54
- size: size
50
+ ref: ref
55
51
  }), label, loading && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.InlineLoading, null));
56
52
  });
57
53
 
@@ -61,10 +57,15 @@ ActionSetButton.propTypes = _objectSpread(_objectSpread({}, _carbonComponentsRea
61
57
  label: _propTypes.default.string,
62
58
  loading: _propTypes.default.bool
63
59
  });
64
- var defaultKind = _carbonComponentsReact.Button.defaultProps.kind;
60
+ var defaultKind = 'primary';
65
61
 
66
62
  var willStack = function willStack(size, numberOfActions) {
67
63
  return size === 'xs' || size === 'sm' || size === 'md' && numberOfActions > 2;
64
+ }; // Default values for props
65
+
66
+
67
+ var defaults = {
68
+ size: 'md'
68
69
  };
69
70
  /**
70
71
  * An ActionSet presents a set of action buttons, constructed from bundles
@@ -79,14 +80,14 @@ var willStack = function willStack(size, numberOfActions) {
79
80
  * right.
80
81
  */
81
82
 
82
-
83
83
  var ActionSet = /*#__PURE__*/_react.default.forwardRef(function (_ref3, ref) {
84
84
  var _actions$slice, _cx;
85
85
 
86
86
  var actions = _ref3.actions,
87
87
  buttonSize = _ref3.buttonSize,
88
88
  className = _ref3.className,
89
- size = _ref3.size,
89
+ _ref3$size = _ref3.size,
90
+ size = _ref3$size === void 0 ? defaults.size : _ref3$size,
90
91
  rest = (0, _objectWithoutProperties2.default)(_ref3, _excluded2);
91
92
  var buttons = actions && ((_actions$slice = actions.slice) === null || _actions$slice === void 0 ? void 0 : _actions$slice.call(actions, 0)) || []; // We stack the buttons in a xs/sm set, or if there are three or more in a md set.
92
93
 
@@ -147,7 +148,7 @@ ActionSet.validateActions = function (sizeFn) {
147
148
  var problems = [];
148
149
 
149
150
  if (actions > 0) {
150
- var size = sizeFn ? sizeFn(props) : props.size;
151
+ var size = sizeFn ? sizeFn(props) : props.size || defaults.size;
151
152
  var stacking = willStack(size, actions);
152
153
 
153
154
  var countActions = function countActions(kind) {
@@ -211,7 +212,4 @@ ActionSet.propTypes = {
211
212
  * different sizes, to make best use of the available space.
212
213
  */
213
214
  size: _propTypes.default.oneOf(['xs', 'sm', 'md', 'lg', 'xlg', 'max'])
214
- };
215
- ActionSet.defaultProps = {
216
- size: 'md'
217
215
  };
@@ -11,6 +11,8 @@ exports.AddSelect = void 0;
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
14
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
17
 
16
18
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
@@ -29,138 +31,187 @@ var _NoDataEmptyState = require("../../components/EmptyStates/NoDataEmptyState")
29
31
 
30
32
  var _settings = require("../../settings");
31
33
 
32
- var _excluded = ["actions", "className", "description", "influencerTitle", "inputPlaceholder", "items", "itemsLabel", "multi", "noResultsDescription", "noResultsTitle", "noSelectionDescription", "noSelectionTitle", "onSearchFilter", "open", "title"];
34
+ var _AddSelectSidebar = require("./AddSelectSidebar");
35
+
36
+ var _AddSelectBreadcrumbs = require("./AddSelectBreadcrumbs");
37
+
38
+ var _AddSelectList = require("./AddSelectList");
39
+
40
+ var _excluded = ["className", "description", "influencerTitle", "inputPlaceholder", "items", "itemsLabel", "multi", "noResultsDescription", "noResultsTitle", "noSelectionDescription", "noSelectionTitle", "onClose", "onCloseButtonText", "onSearchFilter", "onSubmit", "onSubmitButtonText", "open", "removeIconDescription", "textInputLabel", "title"];
33
41
 
34
42
  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); }
35
43
 
36
44
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
45
 
38
- var componentName = 'AddSelect';
46
+ var componentName = 'AddSelect'; // Default values for props
47
+
48
+ var defaults = {
49
+ items: Object.freeze([])
50
+ };
39
51
  var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
40
- var actions = _ref.actions,
41
- className = _ref.className,
52
+ var _cx;
53
+
54
+ var className = _ref.className,
42
55
  description = _ref.description,
43
56
  influencerTitle = _ref.influencerTitle,
44
57
  inputPlaceholder = _ref.inputPlaceholder,
45
- items = _ref.items,
58
+ _ref$items = _ref.items,
59
+ items = _ref$items === void 0 ? defaults.items : _ref$items,
46
60
  itemsLabel = _ref.itemsLabel,
47
61
  multi = _ref.multi,
48
62
  noResultsDescription = _ref.noResultsDescription,
49
63
  noResultsTitle = _ref.noResultsTitle,
50
64
  noSelectionDescription = _ref.noSelectionDescription,
51
65
  noSelectionTitle = _ref.noSelectionTitle,
66
+ onClose = _ref.onClose,
67
+ onCloseButtonText = _ref.onCloseButtonText,
52
68
  onSearchFilter = _ref.onSearchFilter,
69
+ onSubmit = _ref.onSubmit,
70
+ onSubmitButtonText = _ref.onSubmitButtonText,
53
71
  open = _ref.open,
72
+ removeIconDescription = _ref.removeIconDescription,
73
+ textInputLabel = _ref.textInputLabel,
54
74
  title = _ref.title,
55
75
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
56
- var blockClass = "".concat(_settings.pkg.prefix, "--add-select");
57
- var commonTearsheetProps = {
58
- open: open,
59
- title: title,
60
- actions: actions,
61
- description: description,
62
- closeIconDescription: 'temp description'
63
- }; // hooks
76
+ var blockClass = "".concat(_settings.pkg.prefix, "--add-select"); // hooks
64
77
 
65
- var _useState = (0, _react.useState)(0),
66
- _useState2 = (0, _slicedToArray2.default)(_useState, 1),
67
- selected = _useState2[0];
78
+ var _useState = (0, _react.useState)([]),
79
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
80
+ path = _useState2[0],
81
+ setPath = _useState2[1];
68
82
 
69
83
  var _useState3 = (0, _react.useState)(''),
70
84
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
71
- searchTerm = _useState4[0],
72
- setSearchTerm = _useState4[1]; // handlers
73
-
85
+ singleSelection = _useState4[0],
86
+ setSingleSelection = _useState4[1];
74
87
 
75
- var onSearchHandler = function onSearchHandler(e) {
76
- var value = e.target.value;
77
- setSearchTerm(value);
88
+ var _useState5 = (0, _react.useState)([]),
89
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
90
+ multiSelection = _useState6[0],
91
+ setMultiSelection = _useState6[1];
78
92
 
79
- if (onSearchFilter) {
80
- onSearchFilter(value);
81
- }
82
- }; // data manipulation
93
+ var _useState7 = (0, _react.useState)(''),
94
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
95
+ searchTerm = _useState8[0],
96
+ setSearchTerm = _useState8[1]; // handlers
83
97
 
84
98
 
85
- var getFilteredItems = function getFilteredItems() {
86
- // if the user uses their own filter then they provide the filtered items
87
- if (onSearchFilter) {
88
- return items;
89
- } // by default, just filter results by their label from a single search term
99
+ var handleSearch = function handleSearch(e) {
100
+ setSearchTerm(e.target.value);
101
+ }; // item filtering
90
102
 
91
103
 
92
- return items.filter(function (i) {
93
- return i.label.includes(searchTerm);
104
+ var getFilteredItems = function getFilteredItems() {
105
+ var hasPath = path.length > 0;
106
+ /**
107
+ * how to traverse the levels of items-
108
+ * the path represents the ids of each level / item / breadcrumb
109
+ * using this path we can drill down into the items until we get to the last one the user selected
110
+ */
111
+
112
+ var itemsToFilter = hasPath ? path.reduce(function (prev, cur) {
113
+ return prev.find(function (item) {
114
+ return item.id === cur.id;
115
+ }).children;
116
+ }, items) : items;
117
+ var results = itemsToFilter.filter(function (item) {
118
+ if (!searchTerm) {
119
+ return item;
120
+ } // if user provides their own filter function use that
121
+
122
+
123
+ if (onSearchFilter) {
124
+ return onSearchFilter(item, searchTerm);
125
+ } // otherwise use the default label filter
126
+
127
+
128
+ return item.title.toLowerCase().includes(searchTerm);
94
129
  });
130
+ return results;
95
131
  };
96
132
 
97
- var filteredResults = getFilteredItems(); // sidebar
98
-
99
- var influencer = /*#__PURE__*/_react.default.createElement("div", {
100
- className: "".concat(blockClass, "__influencer")
101
- }, /*#__PURE__*/_react.default.createElement("div", {
102
- className: "".concat(blockClass, "__influencer-header")
103
- }, /*#__PURE__*/_react.default.createElement("p", {
104
- className: "".concat(blockClass, "__influencer-title")
105
- }, influencerTitle), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
106
- type: "gray",
107
- size: "sm"
108
- }, selected)), /*#__PURE__*/_react.default.createElement("div", {
109
- className: "".concat(blockClass, "__influencer-body")
110
- }, selected > 0 ? /*#__PURE__*/_react.default.createElement("p", null, "content") : /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
111
- subtitle: noSelectionDescription,
112
- title: noSelectionTitle,
113
- size: "sm"
114
- }))); // main content
115
-
133
+ var filteredItems = getFilteredItems(); // main content
116
134
 
117
135
  var body = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
118
136
  className: "".concat(blockClass, "__header")
119
137
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TextInput, {
120
138
  id: "temp-id",
121
- labelText: "temp label",
139
+ labelText: textInputLabel,
122
140
  placeholder: inputPlaceholder,
123
141
  value: searchTerm,
124
- onChange: onSearchHandler
142
+ onChange: handleSearch
125
143
  }), /*#__PURE__*/_react.default.createElement("div", {
126
144
  className: "".concat(blockClass, "__items-label-container")
127
- }, /*#__PURE__*/_react.default.createElement("p", {
145
+ }, path.length ? /*#__PURE__*/_react.default.createElement(_AddSelectBreadcrumbs.AddSelectBreadcrumbs, {
146
+ itemsLabel: itemsLabel,
147
+ path: path,
148
+ setPath: setPath
149
+ }) : /*#__PURE__*/_react.default.createElement("p", {
128
150
  className: "".concat(blockClass, "__items-label")
129
151
  }, itemsLabel), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
130
152
  type: "gray",
131
- size: "sm"
132
- }, filteredResults.length))), filteredResults.length > 0 ? /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListWrapper, {
133
- selection: true,
134
- className: "".concat(blockClass, "__selections")
135
- }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListBody, null, filteredResults.map(function (item) {
136
- return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListRow, {
137
- key: item.id
138
- }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListCell, null, /*#__PURE__*/_react.default.createElement("p", null, item.label)));
139
- }))) : /*#__PURE__*/_react.default.createElement("div", {
153
+ size: "sm",
154
+ className: "".concat(blockClass, "__items-label-tag")
155
+ }, filteredItems.length))), filteredItems.length > 0 ? /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, {
156
+ filteredItems: filteredItems,
157
+ multi: multi,
158
+ multiSelection: multiSelection,
159
+ path: path,
160
+ setMultiSelection: setMultiSelection,
161
+ setPath: setPath,
162
+ setSingleSelection: setSingleSelection,
163
+ singleSelection: singleSelection
164
+ }) : /*#__PURE__*/_react.default.createElement("div", {
140
165
  className: "".concat(blockClass, "__body")
141
166
  }, /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
142
167
  subtitle: noResultsDescription,
143
168
  title: noResultsTitle
144
169
  })));
145
170
 
171
+ var commonTearsheetProps = {
172
+ open: open,
173
+ title: title,
174
+ description: description,
175
+ closeIconDescription: 'temp description',
176
+ actions: [{
177
+ label: onCloseButtonText,
178
+ kind: 'secondary',
179
+ onClick: onClose
180
+ }, {
181
+ label: onSubmitButtonText,
182
+ kind: 'primary',
183
+ onClick: onSubmit,
184
+ disabled: multi ? multiSelection.length === 0 : !singleSelection
185
+ }]
186
+ };
187
+ var sidebarProps = {
188
+ influencerTitle: influencerTitle,
189
+ items: items,
190
+ multiSelection: multiSelection,
191
+ noSelectionDescription: noSelectionDescription,
192
+ noSelectionTitle: noSelectionTitle,
193
+ removeIconDescription: removeIconDescription,
194
+ setMultiSelection: setMultiSelection
195
+ };
196
+ 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));
146
197
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
147
198
  ref: ref,
148
- className: (0, _classnames.default)(className, blockClass)
199
+ className: classNames
149
200
  }, rest), multi ? /*#__PURE__*/_react.default.createElement(_Tearsheet.Tearsheet, (0, _extends2.default)({}, commonTearsheetProps, {
150
- influencer: multi && influencer,
201
+ influencer: multi && /*#__PURE__*/_react.default.createElement(_AddSelectSidebar.AddSelectSidebar, sidebarProps),
151
202
  influencerPosition: "right"
152
203
  }), body) : /*#__PURE__*/_react.default.createElement(_Tearsheet.TearsheetNarrow, commonTearsheetProps, body));
153
204
  });
154
205
  exports.AddSelect = AddSelect;
155
206
  AddSelect.propTypes = {
156
- actions: _propTypes.default.array,
157
207
  className: _propTypes.default.string,
158
208
  description: _propTypes.default.string,
159
209
  influencerTitle: _propTypes.default.string,
160
210
  inputPlaceholder: _propTypes.default.string,
161
211
  items: _propTypes.default.arrayOf(_propTypes.default.shape({
162
- label: _propTypes.default.string,
163
- id: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])
212
+ id: _propTypes.default.string.isRequired,
213
+ title: _propTypes.default.string.isRequired,
214
+ value: _propTypes.default.string.isRequired
164
215
  })),
165
216
  itemsLabel: _propTypes.default.string,
166
217
  multi: _propTypes.default.bool,
@@ -168,11 +219,14 @@ AddSelect.propTypes = {
168
219
  noResultsTitle: _propTypes.default.string,
169
220
  noSelectionDescription: _propTypes.default.string,
170
221
  noSelectionTitle: _propTypes.default.string,
222
+ onClose: _propTypes.default.func,
223
+ onCloseButtonText: _propTypes.default.string,
171
224
  onSearchFilter: _propTypes.default.func,
225
+ onSubmit: _propTypes.default.func,
226
+ onSubmitButtonText: _propTypes.default.string,
172
227
  open: _propTypes.default.bool,
228
+ removeIconDescription: _propTypes.default.string,
229
+ textInputLabel: _propTypes.default.string,
173
230
  title: _propTypes.default.string
174
231
  };
175
- AddSelect.defaultProps = {
176
- items: []
177
- };
178
232
  AddSelect.displayName = componentName;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.AddSelectBreadcrumbs = void 0;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _carbonComponentsReact = require("carbon-components-react");
15
+
16
+ var _propTypes = _interopRequireDefault(require("prop-types"));
17
+
18
+ //
19
+ // Copyright IBM Corp. 2022
20
+ //
21
+ // This source code is licensed under the Apache-2.0 license found in the
22
+ // LICENSE file in the root directory of this source tree.
23
+ //
24
+ var componentName = 'AddSelectBreadcrumbs';
25
+
26
+ var AddSelectBreadcrumbs = function AddSelectBreadcrumbs(_ref) {
27
+ var itemsLabel = _ref.itemsLabel,
28
+ path = _ref.path,
29
+ setPath = _ref.setPath;
30
+
31
+ var clickHandler = function clickHandler(id) {
32
+ var newPath = (0, _toConsumableArray2.default)(path);
33
+ var pathIdx = newPath.findIndex(function (entry) {
34
+ return entry.id === id;
35
+ });
36
+ var finalPath = newPath.splice(0, pathIdx + 1);
37
+ setPath(finalPath);
38
+ };
39
+
40
+ var resetPath = function resetPath() {
41
+ setPath([]);
42
+ };
43
+
44
+ return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Breadcrumb, {
45
+ noTrailingSlash: true
46
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.BreadcrumbItem, {
47
+ onClick: resetPath
48
+ }, itemsLabel), path.map(function (entry, idx, arr) {
49
+ var isCurrentPage = idx === arr.length - 1;
50
+
51
+ var crumbHandler = function crumbHandler() {
52
+ if (!isCurrentPage) {
53
+ clickHandler(entry.id);
54
+ }
55
+ };
56
+
57
+ return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.BreadcrumbItem, {
58
+ key: entry.id,
59
+ isCurrentPage: isCurrentPage,
60
+ onClick: crumbHandler
61
+ }, entry.title);
62
+ }));
63
+ };
64
+
65
+ exports.AddSelectBreadcrumbs = AddSelectBreadcrumbs;
66
+ AddSelectBreadcrumbs.propTypes = {
67
+ itemsLabel: _propTypes.default.string,
68
+ path: _propTypes.default.array,
69
+ setPath: _propTypes.default.func
70
+ };
71
+ AddSelectBreadcrumbs.displayName = componentName;