@carbon/ibm-products 1.3.0 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (184) hide show
  1. package/css/index-full-carbon.css +5102 -4711
  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 +189 -108
  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 +619 -236
  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 +950 -567
  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 +25 -29
  18. package/es/components/ActionBar/ActionBar.js +4 -1
  19. package/es/components/ActionSet/ActionSet.js +22 -10
  20. package/es/components/ActionSet/actions.js +25 -17
  21. package/es/components/AddSelect/AddSelect.js +141 -53
  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 +78 -0
  25. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +24 -17
  26. package/es/components/CancelableTextEdit/CancelableTextEdit.js +62 -24
  27. package/es/components/Card/Card.js +6 -4
  28. package/es/components/CreateFullPage/CreateFullPage.js +102 -258
  29. package/es/components/CreateFullPage/CreateFullPageStep.js +65 -13
  30. package/es/components/CreateFullPage/index.js +1 -2
  31. package/es/components/CreateInfluencer/CreateInfluencer.js +40 -220
  32. package/es/components/CreateTearsheet/CreateTearsheet.js +95 -146
  33. package/es/components/CreateTearsheet/CreateTearsheetStep.js +70 -20
  34. package/es/components/CreateTearsheet/index.js +0 -1
  35. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +87 -28
  36. package/es/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +8 -6
  37. package/es/components/EmptyStates/EmptyState.js +1 -1
  38. package/es/components/EmptyStates/EmptyStateContent.js +2 -2
  39. package/es/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +1 -1
  40. package/es/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -1
  41. package/es/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +1 -1
  42. package/es/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +1 -1
  43. package/es/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +1 -1
  44. package/es/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +1 -1
  45. package/es/components/ExportModal/ExportModal.js +41 -12
  46. package/es/components/ImportModal/ImportModal.js +2 -1
  47. package/es/components/InlineEdit/InlineEdit.js +397 -0
  48. package/es/components/InlineEdit/index.js +7 -0
  49. package/es/components/MultiAddSelect/MultiAddSelect.js +16 -0
  50. package/es/components/MultiAddSelect/index.js +1 -0
  51. package/es/components/NotificationsPanel/NotificationsPanel.js +16 -3
  52. package/es/components/OptionsTile/OptionsTile.js +36 -15
  53. package/es/components/PageHeader/PageHeader.js +59 -35
  54. package/es/components/PageHeader/PageHeaderTitle.js +82 -7
  55. package/es/components/PageHeader/PageHeaderUtils.js +21 -2
  56. package/es/components/RemoveModal/RemoveModal.js +4 -2
  57. package/es/components/SidePanel/SidePanel.js +33 -16
  58. package/es/components/SingleAddSelect/SingleAddSelect.js +15 -0
  59. package/es/components/SingleAddSelect/index.js +1 -0
  60. package/es/components/TagSet/TagSet.js +4 -1
  61. package/es/components/Tearsheet/Tearsheet.js +1 -1
  62. package/es/components/Tearsheet/TearsheetNarrow.js +1 -1
  63. package/es/components/Tearsheet/TearsheetShell.js +1 -1
  64. package/es/components/Toolbar/Toolbar.js +69 -8
  65. package/es/components/WebTerminal/WebTerminal.js +1 -1
  66. package/es/components/index.js +4 -2
  67. package/es/global/js/hooks/index.js +1 -0
  68. package/es/global/js/hooks/useCreateComponentFocus.js +15 -19
  69. package/es/global/js/hooks/useCreateComponentStepChange.js +69 -79
  70. package/es/global/js/hooks/useResetCreateComponent.js +7 -4
  71. package/es/global/js/hooks/useRetrieveStepData.js +51 -0
  72. package/es/global/js/hooks/useValidCreateStepCount.js +4 -7
  73. package/es/global/js/package-settings.js +4 -2
  74. package/es/global/js/utils/lastIndexInArray.js +26 -0
  75. package/es/settings.js +0 -5
  76. package/lib/components/APIKeyModal/APIKeyModal.js +25 -29
  77. package/lib/components/ActionBar/ActionBar.js +4 -1
  78. package/lib/components/ActionSet/ActionSet.js +22 -10
  79. package/lib/components/ActionSet/actions.js +25 -17
  80. package/lib/components/AddSelect/AddSelect.js +141 -50
  81. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +71 -0
  82. package/lib/components/AddSelect/AddSelectList.js +112 -0
  83. package/lib/components/AddSelect/AddSelectSidebar.js +89 -0
  84. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +23 -16
  85. package/lib/components/CancelableTextEdit/CancelableTextEdit.js +62 -23
  86. package/lib/components/Card/Card.js +6 -4
  87. package/lib/components/CreateFullPage/CreateFullPage.js +102 -258
  88. package/lib/components/CreateFullPage/CreateFullPageStep.js +68 -13
  89. package/lib/components/CreateFullPage/index.js +1 -9
  90. package/lib/components/CreateInfluencer/CreateInfluencer.js +38 -231
  91. package/lib/components/CreateTearsheet/CreateTearsheet.js +97 -148
  92. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +72 -19
  93. package/lib/components/CreateTearsheet/index.js +0 -8
  94. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +86 -34
  95. package/lib/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +8 -6
  96. package/lib/components/EmptyStates/EmptyState.js +1 -1
  97. package/lib/components/EmptyStates/EmptyStateContent.js +2 -2
  98. package/lib/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +1 -1
  99. package/lib/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -1
  100. package/lib/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +1 -1
  101. package/lib/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +1 -1
  102. package/lib/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +1 -1
  103. package/lib/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +1 -1
  104. package/lib/components/ExportModal/ExportModal.js +38 -11
  105. package/lib/components/ImportModal/ImportModal.js +2 -1
  106. package/lib/components/InlineEdit/InlineEdit.js +413 -0
  107. package/lib/components/InlineEdit/index.js +13 -0
  108. package/lib/components/MultiAddSelect/MultiAddSelect.js +37 -0
  109. package/lib/components/MultiAddSelect/index.js +13 -0
  110. package/lib/components/NotificationsPanel/NotificationsPanel.js +13 -1
  111. package/lib/components/OptionsTile/OptionsTile.js +36 -15
  112. package/lib/components/PageHeader/PageHeader.js +59 -35
  113. package/lib/components/PageHeader/PageHeaderTitle.js +91 -9
  114. package/lib/components/PageHeader/PageHeaderUtils.js +21 -2
  115. package/lib/components/RemoveModal/RemoveModal.js +4 -2
  116. package/lib/components/SidePanel/SidePanel.js +33 -16
  117. package/lib/components/SingleAddSelect/SingleAddSelect.js +36 -0
  118. package/lib/components/SingleAddSelect/index.js +13 -0
  119. package/lib/components/TagSet/TagSet.js +4 -1
  120. package/lib/components/Tearsheet/Tearsheet.js +1 -1
  121. package/lib/components/Tearsheet/TearsheetNarrow.js +1 -1
  122. package/lib/components/Tearsheet/TearsheetShell.js +1 -1
  123. package/lib/components/Toolbar/Toolbar.js +69 -6
  124. package/lib/components/WebTerminal/WebTerminal.js +1 -1
  125. package/lib/components/index.js +25 -9
  126. package/lib/global/js/hooks/index.js +8 -0
  127. package/lib/global/js/hooks/useCreateComponentFocus.js +15 -19
  128. package/lib/global/js/hooks/useCreateComponentStepChange.js +69 -79
  129. package/lib/global/js/hooks/useResetCreateComponent.js +7 -4
  130. package/lib/global/js/hooks/useRetrieveStepData.js +62 -0
  131. package/lib/global/js/hooks/useValidCreateStepCount.js +4 -7
  132. package/lib/global/js/package-settings.js +4 -2
  133. package/lib/global/js/utils/lastIndexInArray.js +35 -0
  134. package/lib/settings.js +0 -6
  135. package/package.json +24 -24
  136. package/scss/components/AddSelect/_add-select.scss +53 -8
  137. package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +19 -15
  138. package/scss/components/BreadcrumbWithOverflow/_index.scss +1 -1
  139. package/scss/components/CancelableTextEdit/_cancelable-text-edit.scss +142 -70
  140. package/scss/components/CancelableTextEdit/_storybook-styles.scss +0 -7
  141. package/scss/components/CreateFullPage/_create-full-page.scss +4 -11
  142. package/scss/components/CreateInfluencer/_create-influencer.scss +4 -4
  143. package/scss/components/CreateTearsheet/_create-tearsheet.scss +6 -10
  144. package/scss/components/CreateTearsheetNarrow/_storybook-styles.scss +0 -6
  145. package/scss/components/EditSidePanel/_storybook-styles.scss +0 -8
  146. package/scss/components/InlineEdit/_index.scss +8 -0
  147. package/scss/components/InlineEdit/_inline-edit.scss +320 -0
  148. package/scss/components/InlineEdit/_storybook-styles.scss +21 -0
  149. package/scss/components/LoadingBar/_storybook-styles.scss +0 -5
  150. package/scss/components/MultiAddSelect/_index.scss +1 -0
  151. package/scss/components/MultiAddSelect/_multi-add-select.scss +1 -0
  152. package/scss/components/MultiAddSelect/_storybook-styles.scss +6 -0
  153. package/scss/components/NotificationsPanel/_notifications-panel.scss +2 -2
  154. package/scss/components/OptionsTile/_storybook-styles.scss +0 -7
  155. package/scss/components/PageHeader/_index.scss +1 -1
  156. package/scss/components/PageHeader/_page-header.scss +18 -5
  157. package/scss/components/ProductiveCard/_productive-card.scss +0 -4
  158. package/scss/components/SidePanel/_side-panel.scss +15 -6
  159. package/scss/components/SingleAddSelect/_index.scss +1 -0
  160. package/scss/components/SingleAddSelect/_single-add-select.scss +1 -0
  161. package/scss/components/SingleAddSelect/_storybook-styles.scss +6 -0
  162. package/scss/components/StatusIcon/_index.scss +1 -1
  163. package/scss/components/StatusIcon/_status-icon.scss +6 -4
  164. package/scss/components/TagSet/_index.scss +1 -1
  165. package/scss/components/UserProfileImage/_index.scss +1 -1
  166. package/scss/components/UserProfileImage/_user-profile-image.scss +2 -2
  167. package/scss/components/WebTerminal/_web-terminal.scss +2 -2
  168. package/scss/components/_index.scss +3 -1
  169. package/scss/global/styles/_project-settings.scss +5 -1
  170. package/es/components/CreateFullPage/CreateFullPageSection.js +0 -53
  171. package/es/components/CreateFullPage/constants.js +0 -8
  172. package/es/components/CreateTearsheet/CreateTearsheetSection.js +0 -83
  173. package/es/components/CreateTearsheet/constants.js +0 -8
  174. package/es/components/CreateTearsheet/preview-components/MultiStepWithSectionsTearsheet.js +0 -327
  175. package/es/generated/feature-flags/feature-flags.js +0 -15
  176. package/es/global/js/utils/hasValidType.js +0 -94
  177. package/lib/components/CreateFullPage/CreateFullPageSection.js +0 -74
  178. package/lib/components/CreateFullPage/constants.js +0 -16
  179. package/lib/components/CreateTearsheet/CreateTearsheetSection.js +0 -105
  180. package/lib/components/CreateTearsheet/constants.js +0 -17
  181. package/lib/components/CreateTearsheet/preview-components/MultiStepWithSectionsTearsheet.js +0 -354
  182. package/lib/generated/feature-flags/feature-flags.js +0 -22
  183. package/lib/global/js/utils/hasValidType.js +0 -110
  184. package/scss/generated/feature-flags/_feature-flags.scss +0 -19
@@ -1,17 +1,19 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
4
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
5
  var _excluded = ["children", "className", "vertical"];
5
6
 
6
7
  /**
7
- * Copyright IBM Corp. 2021, 2021
8
+ * Copyright IBM Corp. 2021, 2022
8
9
  *
9
10
  * This source code is licensed under the Apache-2.0 license found in the
10
11
  * LICENSE file in the root directory of this source tree.
11
12
  */
12
13
  import cx from 'classnames';
13
14
  import { bool, node, string } from 'prop-types';
14
- import React, { createContext, forwardRef } from 'react';
15
+ import React, { createContext, forwardRef, useCallback, useEffect, useRef, useState } from 'react';
16
+ import { getFocusableElements as _getFocusableElements } from '../../global/js/utils/getFocusableElements';
15
17
  import { pkg } from '../../settings';
16
18
  var checkComponentEnabled = pkg.checkComponentEnabled,
17
19
  prefix = pkg.prefix;
@@ -19,15 +21,74 @@ var blockClass = "".concat(prefix, "--toolbar");
19
21
  var ToolbarContext = /*#__PURE__*/createContext();
20
22
  /** Toolbars are a collection of action items that organize a program’s interaction patterns into a series of closely related commands. */
21
23
 
22
- var Toolbar = /*#__PURE__*/forwardRef(function (_ref, ref) {
23
- var children = _ref.children,
24
- className = _ref.className,
25
- vertical = _ref.vertical,
26
- rest = _objectWithoutProperties(_ref, _excluded);
24
+ var Toolbar = /*#__PURE__*/forwardRef(function (_ref2, r) {
25
+ var children = _ref2.children,
26
+ className = _ref2.className,
27
+ vertical = _ref2.vertical,
28
+ rest = _objectWithoutProperties(_ref2, _excluded);
29
+
30
+ var focusableElements = useRef();
31
+ var getFocusableElements = useCallback(function () {
32
+ return focusableElements.current;
33
+ }, [focusableElements]);
34
+
35
+ var _ref = useRef();
36
+
37
+ var ref = r || _ref;
38
+
39
+ var _useState = useState(),
40
+ _useState2 = _slicedToArray(_useState, 2),
41
+ focus = _useState2[0],
42
+ setFocus = _useState2[1];
43
+
44
+ useEffect(function () {
45
+ focusableElements.current = _getFocusableElements(ref.current);
46
+ typeof focus !== 'undefined' && getFocusableElements().forEach(function (element, index) {
47
+ element[index !== focus ? 'setAttribute' : 'removeAttribute']('tabindex', -1);
48
+ });
49
+ });
50
+ useEffect(function () {
51
+ typeof focus !== 'undefined' && getFocusableElements()[focus].focus();
52
+ }, [focus, getFocusableElements]);
53
+
54
+ var _ref3 = !vertical ? ['ArrowRight', 'ArrowLeft'] : ['ArrowDown', 'ArrowUp'],
55
+ _ref4 = _slicedToArray(_ref3, 2),
56
+ arrowNext = _ref4[0],
57
+ arrowPrevious = _ref4[1];
58
+
59
+ function onArrowDown(increment) {
60
+ var nextFocus = focus + increment;
61
+ getFocusableElements()[nextFocus] && setFocus(nextFocus);
62
+ }
63
+
64
+ function onFocus(_ref5) {
65
+ var target = _ref5.target;
66
+ var elements = getFocusableElements();
67
+ elements.includes(target) && setFocus(elements.indexOf(target));
68
+ }
69
+
70
+ function onKeyDown(_ref6) {
71
+ var key = _ref6.key,
72
+ target = _ref6.target;
73
+
74
+ if (getFocusableElements().includes(target)) {
75
+ switch (key) {
76
+ case arrowNext:
77
+ onArrowDown(1);
78
+ break;
79
+
80
+ case arrowPrevious:
81
+ onArrowDown(-1);
82
+ break;
83
+ }
84
+ }
85
+ }
27
86
 
28
87
  return /*#__PURE__*/React.createElement("div", _extends({}, rest, {
29
88
  ref: ref,
30
- className: cx(blockClass, className, _defineProperty({}, "".concat(blockClass, "--vertical"), vertical))
89
+ className: cx(blockClass, className, _defineProperty({}, "".concat(blockClass, "--vertical"), vertical)),
90
+ onFocus: onFocus,
91
+ onKeyDown: onKeyDown
31
92
  }, vertical && {
32
93
  'aria-orientation': 'vertical'
33
94
  }, {
@@ -63,7 +63,7 @@ export var WebTerminal = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
63
63
  ref: ref,
64
64
  className: cx([blockClass, (_ref2 = {}, _defineProperty(_ref2, "".concat(blockClass, "--open"), open), _defineProperty(_ref2, "".concat(blockClass, "--closed"), !open), _defineProperty(_ref2, className, className), _ref2)]),
65
65
  style: {
66
- animation: "".concat(open ? 'webTerminalEntrance 250ms' : 'webTerminalExit 250ms')
66
+ animation: "".concat(open ? 'web-terminal-entrance 250ms' : 'web-terminal-exit 250ms')
67
67
  },
68
68
  onAnimationEnd: onAnimationEnd
69
69
  }), /*#__PURE__*/React.createElement("header", {
@@ -5,7 +5,6 @@
5
5
  // LICENSE file in the root directory of this source tree.
6
6
  //
7
7
  export { AboutModal } from './AboutModal';
8
- export { AddSelect } from './AddSelect';
9
8
  export { APIKeyModal } from './APIKeyModal';
10
9
  export { Cascade } from './Cascade';
11
10
  export { ComboButton, ComboButtonItem } from './ComboButton';
@@ -21,12 +20,14 @@ export { HTTPError403, HTTPError404, HTTPErrorOther } from './HTTPErrors';
21
20
  export { ImportModal } from './ImportModal';
22
21
  export { LoadingBar } from './LoadingBar';
23
22
  export { ModifiedTabs } from './ModifiedTabs';
23
+ export { MultiAddSelect } from './MultiAddSelect';
24
24
  export { NotificationsPanel } from './NotificationsPanel';
25
25
  export { PageHeader } from './PageHeader';
26
26
  export { ProductiveCard } from './ProductiveCard';
27
27
  export { RemoveModal } from './RemoveModal';
28
28
  export { Saving } from './Saving';
29
29
  export { SidePanel } from './SidePanel';
30
+ export { SingleAddSelect } from './SingleAddSelect';
30
31
  export { StatusIcon } from './StatusIcon';
31
32
  export { TagSet } from './TagSet';
32
33
  export { Tearsheet, TearsheetNarrow } from './Tearsheet';
@@ -35,4 +36,5 @@ export { UserProfileImage } from './UserProfileImage';
35
36
  export { WebTerminal } from './WebTerminal';
36
37
  export { EditSidePanel } from './EditSidePanel';
37
38
  export { OptionsTile } from './OptionsTile';
38
- export { CancelableTextEdit } from './CancelableTextEdit';
39
+ export { CancelableTextEdit } from './CancelableTextEdit';
40
+ export { InlineEdit } from './InlineEdit';
@@ -11,4 +11,5 @@ export { useCreateComponentFocus } from './useCreateComponentFocus';
11
11
  export { useCreateComponentStepChange } from './useCreateComponentStepChange';
12
12
  export { usePreviousValue } from './usePreviousValue';
13
13
  export { useResetCreateComponent } from './useResetCreateComponent';
14
+ export { useRetrieveStepData } from './useRetrieveStepData';
14
15
  export { useValidCreateStepCount } from './useValidCreateStepCount';
@@ -5,33 +5,29 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import { useEffect } from 'react';
8
- import { getFocusableElements } from '../utils/getFocusableElements';
9
- /**
10
- * Returns the previous state values included in the param
11
- * @param {object} previousState
12
- * @param {number} currentStep
13
- * @param {Function} getCreateComponentSteps
14
- * @param {string} componentBlockClass
15
- */
8
+ import { getFocusableElements } from '../utils/getFocusableElements'; // Focus the first focusable element and call the onMount prop for the current step if one is provided
16
9
 
17
- export var useCreateComponentFocus = function useCreateComponentFocus(previousState, currentStep, getCreateComponentSteps, componentBlockClass) {
10
+ export var useCreateComponentFocus = function useCreateComponentFocus(_ref) {
11
+ var previousState = _ref.previousState,
12
+ currentStep = _ref.currentStep,
13
+ blockClass = _ref.blockClass,
14
+ onMount = _ref.onMount;
15
+ useEffect(function () {
16
+ if (typeof onMount === 'function') {
17
+ onMount();
18
+ }
19
+ }, [onMount]);
18
20
  useEffect(function () {
19
21
  if ((previousState === null || previousState === void 0 ? void 0 : previousState.currentStep) !== currentStep && currentStep > 0) {
20
- var visibleStepInnerContent = document.querySelector(".".concat(componentBlockClass, "__step.").concat(componentBlockClass, "__step--visible-step"));
21
- var createComponentSteps = getCreateComponentSteps();
22
- var focusableStepElements = createComponentSteps && createComponentSteps.length && getFocusableElements(visibleStepInnerContent);
23
- var activeStepComponent = createComponentSteps && createComponentSteps.length && createComponentSteps[currentStep - 1];
24
-
25
- if (activeStepComponent && activeStepComponent.props.onMount) {
26
- activeStepComponent.props.onMount();
27
- }
22
+ var visibleStepInnerContent = document.querySelector(".".concat(blockClass, "__step.").concat(blockClass, "__step__step--visible-step"));
23
+ var focusableStepElements = visibleStepInnerContent ? getFocusableElements(visibleStepInnerContent) : [];
28
24
 
29
25
  if (focusableStepElements && focusableStepElements.length) {
30
26
  focusableStepElements[0].focus();
31
27
  } else {
32
- var nextButton = document.querySelector(".".concat(componentBlockClass, "__create-button"));
28
+ var nextButton = document.querySelector(".".concat(blockClass, "__create-button"));
33
29
  nextButton === null || nextButton === void 0 ? void 0 : nextButton.focus();
34
30
  }
35
31
  }
36
- }, [currentStep, getCreateComponentSteps, previousState, componentBlockClass]);
32
+ }, [currentStep, previousState, blockClass, onMount]);
37
33
  };
@@ -2,20 +2,24 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
 
4
4
  /**
5
- * Copyright IBM Corp. 2021, 2021
5
+ * Copyright IBM Corp. 2021, 2022
6
6
  *
7
7
  * This source code is licensed under the Apache-2.0 license found in the
8
8
  * LICENSE file in the root directory of this source tree.
9
9
  */
10
10
  import { useCallback, useEffect } from 'react';
11
11
  export var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
12
- var setCurrentStep = _ref.setCurrentStep,
12
+ var firstIncludedStep = _ref.firstIncludedStep,
13
+ lastIncludedStep = _ref.lastIncludedStep,
14
+ stepData = _ref.stepData,
15
+ onNext = _ref.onNext,
16
+ isSubmitDisabled = _ref.isSubmitDisabled,
17
+ setCurrentStep = _ref.setCurrentStep,
13
18
  setIsSubmitting = _ref.setIsSubmitting,
14
19
  setShouldViewAll = _ref.setShouldViewAll,
15
20
  onClose = _ref.onClose,
16
21
  onRequestSubmit = _ref.onRequestSubmit,
17
22
  componentName = _ref.componentName,
18
- getComponentSteps = _ref.getComponentSteps,
19
23
  currentStep = _ref.currentStep,
20
24
  shouldViewAll = _ref.shouldViewAll,
21
25
  backButtonText = _ref.backButtonText,
@@ -28,8 +32,6 @@ export var useCreateComponentStepChange = function useCreateComponentStepChange(
28
32
  setModalIsOpen = _ref.setModalIsOpen;
29
33
  // useEffect to handle multi step logic
30
34
  useEffect(function () {
31
- var _getComponentSteps;
32
-
33
35
  var onUnmount = function onUnmount() {
34
36
  if (componentName !== 'CreateFullPage') {
35
37
  setCurrentStep(0);
@@ -74,73 +76,47 @@ export var useCreateComponentStepChange = function useCreateComponentStepChange(
74
76
  };
75
77
  }();
76
78
 
77
- var isSubmitDisabled = function isSubmitDisabled() {
78
- var step = 0;
79
- var submitDisabled = false;
80
- var viewAllSubmitDisabled = false;
81
- var createComponentSteps = getComponentSteps();
82
- createComponentSteps.forEach(function (child) {
83
- step++;
84
-
85
- if (currentStep === step) {
86
- submitDisabled = child.props.disableSubmit;
87
- }
88
-
89
- if (shouldViewAll && child.props.disableSubmit) {
90
- viewAllSubmitDisabled = true;
91
- }
92
- });
93
-
94
- if (!shouldViewAll) {
95
- return submitDisabled;
96
- }
97
-
98
- return viewAllSubmitDisabled;
99
- };
100
-
101
79
  var handleNext = /*#__PURE__*/function () {
102
80
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
103
- var createSteps;
104
81
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
105
82
  while (1) {
106
83
  switch (_context2.prev = _context2.next) {
107
84
  case 0:
108
85
  setIsSubmitting(true);
109
- createSteps = getComponentSteps();
110
86
 
111
- if (!createSteps[currentStep - 1].props.onNext) {
112
- _context2.next = 15;
87
+ if (!(typeof onNext === 'function')) {
88
+ _context2.next = 14;
113
89
  break;
114
90
  }
115
91
 
116
- _context2.prev = 3;
117
- _context2.next = 6;
118
- return createSteps[currentStep - 1].props.onNext();
92
+ _context2.prev = 2;
93
+ _context2.next = 5;
94
+ return onNext();
119
95
 
120
- case 6:
96
+ case 5:
121
97
  continueToNextStep();
122
- _context2.next = 13;
98
+ _context2.next = 12;
123
99
  break;
124
100
 
125
- case 9:
126
- _context2.prev = 9;
127
- _context2.t0 = _context2["catch"](3);
101
+ case 8:
102
+ _context2.prev = 8;
103
+ _context2.t0 = _context2["catch"](2);
128
104
  setIsSubmitting(false);
129
105
  console.warn("".concat(componentName, " onNext error: ").concat(_context2.t0));
130
106
 
131
- case 13:
132
- _context2.next = 16;
107
+ case 12:
108
+ _context2.next = 15;
133
109
  break;
134
110
 
135
- case 15:
111
+ case 14:
136
112
  continueToNextStep();
137
113
 
138
- case 16:
114
+ case 15:
139
115
  case "end":
140
116
  return _context2.stop();
141
117
  }
142
118
  }
143
- }, _callee2, null, [[3, 9]]);
119
+ }, _callee2, null, [[2, 8]]);
144
120
  }));
145
121
 
146
122
  return function handleNext() {
@@ -150,51 +126,49 @@ export var useCreateComponentStepChange = function useCreateComponentStepChange(
150
126
 
151
127
  var handleSubmit = /*#__PURE__*/function () {
152
128
  var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
153
- var createSteps;
154
129
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
155
130
  while (1) {
156
131
  switch (_context3.prev = _context3.next) {
157
132
  case 0:
158
- setIsSubmitting(true);
159
- createSteps = getComponentSteps(); // last step should have onNext as well
133
+ setIsSubmitting(true); // last step should have onNext as well
160
134
 
161
- if (!createSteps[currentStep - 1].props.onNext) {
162
- _context3.next = 16;
135
+ if (!(typeof onNext === 'function')) {
136
+ _context3.next = 15;
163
137
  break;
164
138
  }
165
139
 
166
- _context3.prev = 3;
167
- _context3.next = 6;
168
- return createSteps[currentStep - 1].props.onNext();
140
+ _context3.prev = 2;
141
+ _context3.next = 5;
142
+ return onNext();
169
143
 
170
- case 6:
171
- _context3.next = 8;
144
+ case 5:
145
+ _context3.next = 7;
172
146
  return handleOnRequestSubmit();
173
147
 
174
- case 8:
175
- _context3.next = 14;
148
+ case 7:
149
+ _context3.next = 13;
176
150
  break;
177
151
 
178
- case 10:
179
- _context3.prev = 10;
180
- _context3.t0 = _context3["catch"](3);
152
+ case 9:
153
+ _context3.prev = 9;
154
+ _context3.t0 = _context3["catch"](2);
181
155
  setIsSubmitting(false);
182
156
  console.warn("".concat(componentName, " onNext error: ").concat(_context3.t0));
183
157
 
184
- case 14:
185
- _context3.next = 18;
158
+ case 13:
159
+ _context3.next = 17;
186
160
  break;
187
161
 
188
- case 16:
189
- _context3.next = 18;
162
+ case 15:
163
+ _context3.next = 17;
190
164
  return handleOnRequestSubmit();
191
165
 
192
- case 18:
166
+ case 17:
193
167
  case "end":
194
168
  return _context3.stop();
195
169
  }
196
170
  }
197
- }, _callee3, null, [[3, 10]]);
171
+ }, _callee3, null, [[2, 9]]);
198
172
  }));
199
173
 
200
174
  return function handleSubmit() {
@@ -202,22 +176,29 @@ export var useCreateComponentStepChange = function useCreateComponentStepChange(
202
176
  };
203
177
  }();
204
178
 
205
- if ((_getComponentSteps = getComponentSteps()) !== null && _getComponentSteps !== void 0 && _getComponentSteps.length) {
206
- var createSteps = getComponentSteps();
207
- var total = createSteps.length;
179
+ if ((stepData === null || stepData === void 0 ? void 0 : stepData.length) > 0) {
208
180
  var buttons = [];
209
181
 
210
- if (total > 1 && !shouldViewAll) {
182
+ if ((stepData === null || stepData === void 0 ? void 0 : stepData.length) > 1 && !shouldViewAll) {
211
183
  buttons.push({
212
184
  key: 'create-action-button-back',
213
185
  label: backButtonText,
214
186
  onClick: function onClick() {
215
187
  return setCurrentStep(function (prev) {
216
- return prev - 1;
188
+ // Find previous included step to render
189
+ // There will always be a previous step otherwise we will
190
+ // have disabled the back button since we have reached the first visible step
191
+ do {
192
+ var _stepData;
193
+
194
+ prev--;
195
+ } while (!((_stepData = stepData[prev - 1]) !== null && _stepData !== void 0 && _stepData.shouldIncludeStep));
196
+
197
+ return prev;
217
198
  });
218
199
  },
219
200
  kind: 'secondary',
220
- disabled: currentStep === 1
201
+ disabled: currentStep === firstIncludedStep
221
202
  });
222
203
  }
223
204
 
@@ -231,20 +212,29 @@ export var useCreateComponentStepChange = function useCreateComponentStepChange(
231
212
  });
232
213
  buttons.push({
233
214
  key: 'create-action-button-submit',
234
- label: shouldViewAll ? submitButtonText : currentStep < total ? nextButtonText : submitButtonText,
235
- onClick: shouldViewAll ? handleSubmit : currentStep < total ? handleNext : handleSubmit,
236
- disabled: isSubmitDisabled(),
215
+ label: shouldViewAll ? submitButtonText : currentStep < lastIncludedStep ? nextButtonText : submitButtonText,
216
+ onClick: shouldViewAll ? handleSubmit : currentStep < lastIncludedStep ? handleNext : handleSubmit,
217
+ disabled: isSubmitDisabled,
237
218
  kind: 'primary',
238
219
  loading: isSubmitting,
239
220
  className: "".concat(componentBlockClass, "__create-button")
240
221
  });
241
222
  setCreateComponentActions(buttons);
242
223
  }
243
- }, [getComponentSteps, backButtonText, cancelButtonText, currentStep, onClose, nextButtonText, submitButtonText, onRequestSubmit, isSubmitting, shouldViewAll, componentBlockClass, componentName, continueToNextStep, setCurrentStep, setCreateComponentActions, setIsSubmitting, setShouldViewAll, setModalIsOpen]);
224
+ }, [firstIncludedStep, lastIncludedStep, stepData, onNext, isSubmitDisabled, backButtonText, cancelButtonText, currentStep, onClose, nextButtonText, submitButtonText, onRequestSubmit, isSubmitting, shouldViewAll, componentBlockClass, componentName, continueToNextStep, setCurrentStep, setCreateComponentActions, setIsSubmitting, setShouldViewAll, setModalIsOpen]);
244
225
  var continueToNextStep = useCallback(function () {
245
226
  setIsSubmitting(false);
246
227
  setCurrentStep(function (prev) {
247
- return prev + 1;
228
+ // Find next included step to render
229
+ // There will always be a next step otherwise we will
230
+ // have reach the onSubmit
231
+ do {
232
+ var _stepData2;
233
+
234
+ prev++;
235
+ } while (!((_stepData2 = stepData[prev - 1]) !== null && _stepData2 !== void 0 && _stepData2.shouldIncludeStep));
236
+
237
+ return prev;
248
238
  });
249
- }, [setCurrentStep, setIsSubmitting]);
239
+ }, [setCurrentStep, setIsSubmitting, stepData]);
250
240
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2021, 2021
2
+ * Copyright IBM Corp. 2021, 2022
3
3
  *
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.
@@ -8,6 +8,7 @@ import { useEffect } from 'react';
8
8
  /**
9
9
  * Resets the current step of the create component if it has been closed.
10
10
  * @param {object} useResetCreateComponent - Create component that uses this custom hook
11
+ * @param {object} useResetCreateComponent.firstIncludedStep
11
12
  * @param {object} useResetCreateComponent.previousState
12
13
  * @param {boolean} useResetCreateComponent.open
13
14
  * @param {Function} useResetCreateComponent.setCurrentStep
@@ -17,7 +18,8 @@ import { useEffect } from 'react';
17
18
  */
18
19
 
19
20
  export var useResetCreateComponent = function useResetCreateComponent(_ref) {
20
- var previousState = _ref.previousState,
21
+ var firstIncludedStep = _ref.firstIncludedStep,
22
+ previousState = _ref.previousState,
21
23
  open = _ref.open,
22
24
  setCurrentStep = _ref.setCurrentStep,
23
25
  initialStep = _ref.initialStep,
@@ -28,7 +30,8 @@ export var useResetCreateComponent = function useResetCreateComponent(_ref) {
28
30
  if (initialStep && totalSteps && Number(initialStep) <= Number(totalSteps) && Number(initialStep) > 0) {
29
31
  setCurrentStep(Number(initialStep));
30
32
  } else {
31
- setCurrentStep(1);
33
+ // default should be fist includedStep instead of just 1
34
+ setCurrentStep(firstIncludedStep);
32
35
  } // An invalid initialStep value was provided, we'll default to rendering the first step in this scenario
33
36
 
34
37
 
@@ -36,5 +39,5 @@ export var useResetCreateComponent = function useResetCreateComponent(_ref) {
36
39
  console.warn("".concat(componentName, ": An invalid `initialStep` prop was supplied. The `initialStep` prop should be a number that is greater than 0 or less than or equal to the number of steps your ").concat(componentName, " has."));
37
40
  }
38
41
  }
39
- }, [open, previousState, setCurrentStep, initialStep, totalSteps, componentName]);
42
+ }, [firstIncludedStep, open, previousState, setCurrentStep, initialStep, totalSteps, componentName]);
40
43
  };
@@ -0,0 +1,51 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
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 { useEffect } from 'react';
10
+ /**
11
+ * This useEffect makes sure that every CreateTearsheetStep/CreateFullPageStep reports back it's
12
+ * title, secondaryLabel, introStep, and shouldIncludeStep data so that it can be sent to the CreateInfluencer.
13
+ * @param {object} useResetCreateComponent
14
+ * @param {object} useResetCreateComponent.stepsContext
15
+ * @param {number} useResetCreateComponent.stepNumber
16
+ * @param {boolean} useResetCreateComponent.introStep
17
+ * @param {boolean} useResetCreateComponent.shouldIncludeStep
18
+ * @param {string} useResetCreateComponent.secondaryLabel
19
+ * @param {string} useResetCreateComponent.title
20
+ */
21
+
22
+ export var useRetrieveStepData = function useRetrieveStepData(_ref) {
23
+ var stepsContext = _ref.stepsContext,
24
+ stepNumber = _ref.stepNumber,
25
+ introStep = _ref.introStep,
26
+ shouldIncludeStep = _ref.shouldIncludeStep,
27
+ secondaryLabel = _ref.secondaryLabel,
28
+ title = _ref.title;
29
+ useEffect(function () {
30
+ if (stepsContext) {
31
+ stepsContext.setStepData(function (prev) {
32
+ var stepItem = {
33
+ title: title,
34
+ secondaryLabel: secondaryLabel,
35
+ introStep: introStep,
36
+ shouldIncludeStep: shouldIncludeStep
37
+ };
38
+ var previousItem = prev[stepNumber - 1];
39
+
40
+ if ((previousItem === null || previousItem === void 0 ? void 0 : previousItem.title) !== stepItem.title || (previousItem === null || previousItem === void 0 ? void 0 : previousItem.secondaryLabel) !== stepItem.secondaryLabel || (previousItem === null || previousItem === void 0 ? void 0 : previousItem.introStep) !== stepItem.introStep || (previousItem === null || previousItem === void 0 ? void 0 : previousItem.shouldIncludeStep) !== stepItem.shouldIncludeStep) {
41
+ var clone = _toConsumableArray(prev);
42
+
43
+ clone[stepNumber - 1] = stepItem;
44
+ return clone;
45
+ }
46
+
47
+ return prev;
48
+ });
49
+ }
50
+ }, [shouldIncludeStep, title, secondaryLabel, introStep, stepsContext, stepNumber]);
51
+ };
@@ -7,17 +7,14 @@
7
7
  import { useEffect } from 'react';
8
8
  /**
9
9
  * Logs a warning to console if an invalid number of steps are used with the given CreateComponent
10
- * @param {Function} getCreateComponentSteps
10
+ * @param {number} stepCount
11
11
  * @param {string} componentName
12
12
  */
13
13
 
14
- export var useValidCreateStepCount = function useValidCreateStepCount(getCreateComponentSteps, componentName) {
14
+ export var useValidCreateStepCount = function useValidCreateStepCount(stepCount, componentName) {
15
15
  useEffect(function () {
16
- var createSteps = getCreateComponentSteps();
17
- var total = createSteps.length;
18
-
19
- if (total === 1) {
16
+ if (stepCount === 1) {
20
17
  console.warn("".concat(componentName, ": ").concat(componentName, "s with one step are not permitted. If you require only one step, please use either the CreateTearsheetNarrow, CreateSidePanel, or CreateModal components."));
21
18
  }
22
- }, [getCreateComponentSteps, componentName]);
19
+ }, [stepCount, componentName]);
23
20
  };
@@ -52,7 +52,8 @@ var defaults = {
52
52
  UnauthorizedEmptyState: true,
53
53
  UserProfileImage: true,
54
54
  // other public components not yet reviewed and released:
55
- AddSelect: false,
55
+ MultiAddSelect: false,
56
+ SingleAddSelect: false,
56
57
  LoadingBar: false,
57
58
  ModifiedTabs: false,
58
59
  Toolbar: false,
@@ -61,7 +62,8 @@ var defaults = {
61
62
  WebTerminal: false,
62
63
  EditSidePanel: false,
63
64
  OptionsTile: false,
64
- CancelableTextEdit: false
65
+ CancelableTextEdit: false,
66
+ InlineEdit: false
65
67
  /* new component flags here - comment used by generate CLI */
66
68
 
67
69
  },
@@ -0,0 +1,26 @@
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
+
8
+ /**
9
+ * This utility will return the index of the last instance of an
10
+ * item in the given array of objects whose key is equal to the value
11
+ * parameter. If there are no matches, -1 is returned as similar to findIndex
12
+ * @param {Array<Object.*>} array
13
+ * @param {string} key
14
+ * @param {string|boolean|number} value
15
+ */
16
+ export var lastIndexInArray = function lastIndexInArray(array, key, value) {
17
+ for (var i = array.length - 1; i >= 0; i--) {
18
+ var _array$i;
19
+
20
+ if (((_array$i = array[i]) === null || _array$i === void 0 ? void 0 : _array$i[key]) === value) {
21
+ return i + 1;
22
+ }
23
+ }
24
+
25
+ return -1;
26
+ };
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
  }