@carbon/ibm-products 1.2.4 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. package/css/index-full-carbon.css +662 -313
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +2 -2
  4. package/css/index-without-carbon-released-only.css +156 -81
  5. package/css/index-without-carbon-released-only.css.map +1 -1
  6. package/css/index-without-carbon-released-only.min.css +2 -2
  7. package/css/index-without-carbon.css +393 -81
  8. package/css/index-without-carbon.css.map +1 -1
  9. package/css/index-without-carbon.min.css +2 -2
  10. package/css/index.css +615 -81
  11. package/css/index.css.map +1 -1
  12. package/css/index.min.css +2 -2
  13. package/es/components/APIKeyModal/APIKeyModal.js +25 -29
  14. package/es/components/ActionBar/ActionBar.js +4 -1
  15. package/es/components/ActionSet/ActionSet.js +22 -10
  16. package/es/components/ActionSet/actions.js +25 -17
  17. package/es/components/AddSelect/AddSelect.js +157 -0
  18. package/es/components/AddSelect/index.js +7 -0
  19. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +19 -15
  20. package/es/components/CancelableTextEdit/CancelableTextEdit.js +245 -0
  21. package/es/components/{CreateTearsheet/constants.js → CancelableTextEdit/index.js} +1 -2
  22. package/es/components/CreateFullPage/CreateFullPage.js +102 -258
  23. package/es/components/CreateFullPage/CreateFullPageStep.js +65 -13
  24. package/es/components/CreateFullPage/index.js +1 -2
  25. package/es/components/CreateInfluencer/CreateInfluencer.js +40 -220
  26. package/es/components/CreateTearsheet/CreateTearsheet.js +95 -146
  27. package/es/components/CreateTearsheet/CreateTearsheetStep.js +70 -20
  28. package/es/components/CreateTearsheet/index.js +0 -1
  29. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +87 -28
  30. package/es/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +8 -6
  31. package/es/components/ExportModal/ExportModal.js +41 -12
  32. package/es/components/ImportModal/ImportModal.js +2 -1
  33. package/es/components/InlineEdit/InlineEdit.js +224 -0
  34. package/es/components/InlineEdit/index.js +7 -0
  35. package/es/components/MultiAddSelect/MultiAddSelect.js +16 -0
  36. package/es/components/MultiAddSelect/index.js +1 -0
  37. package/es/components/OptionsTile/OptionsTile.js +36 -15
  38. package/es/components/PageHeader/PageHeader.js +54 -33
  39. package/es/components/PageHeader/PageHeaderTitle.js +78 -7
  40. package/es/components/PageHeader/PageHeaderUtils.js +21 -2
  41. package/es/components/RemoveModal/RemoveModal.js +4 -2
  42. package/es/components/SidePanel/SidePanel.js +1 -1
  43. package/es/components/SingleAddSelect/SingleAddSelect.js +15 -0
  44. package/es/components/SingleAddSelect/index.js +1 -0
  45. package/es/components/TagSet/TagSet.js +4 -1
  46. package/es/components/Tearsheet/Tearsheet.js +1 -1
  47. package/es/components/Tearsheet/TearsheetNarrow.js +1 -1
  48. package/es/components/Tearsheet/TearsheetShell.js +1 -1
  49. package/es/components/Toolbar/Toolbar.js +69 -8
  50. package/es/components/index.js +5 -1
  51. package/es/global/js/hooks/index.js +1 -0
  52. package/es/global/js/hooks/useCreateComponentFocus.js +15 -19
  53. package/es/global/js/hooks/useCreateComponentStepChange.js +69 -79
  54. package/es/global/js/hooks/useResetCreateComponent.js +7 -4
  55. package/es/global/js/hooks/useRetrieveStepData.js +51 -0
  56. package/es/global/js/hooks/useValidCreateStepCount.js +4 -7
  57. package/es/global/js/package-settings.js +5 -1
  58. package/es/global/js/utils/lastIndexInArray.js +26 -0
  59. package/es/global/js/utils/story-helper.js +1 -1
  60. package/lib/components/APIKeyModal/APIKeyModal.js +25 -29
  61. package/lib/components/ActionBar/ActionBar.js +4 -1
  62. package/lib/components/ActionSet/ActionSet.js +22 -10
  63. package/lib/components/ActionSet/actions.js +25 -17
  64. package/lib/components/AddSelect/AddSelect.js +178 -0
  65. package/lib/components/AddSelect/index.js +13 -0
  66. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +18 -14
  67. package/lib/components/CancelableTextEdit/CancelableTextEdit.js +265 -0
  68. package/lib/components/CancelableTextEdit/index.js +13 -0
  69. package/lib/components/CreateFullPage/CreateFullPage.js +102 -258
  70. package/lib/components/CreateFullPage/CreateFullPageStep.js +68 -13
  71. package/lib/components/CreateFullPage/index.js +1 -9
  72. package/lib/components/CreateInfluencer/CreateInfluencer.js +38 -231
  73. package/lib/components/CreateTearsheet/CreateTearsheet.js +97 -148
  74. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +72 -19
  75. package/lib/components/CreateTearsheet/index.js +0 -8
  76. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +86 -34
  77. package/lib/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +8 -6
  78. package/lib/components/ExportModal/ExportModal.js +38 -11
  79. package/lib/components/ImportModal/ImportModal.js +2 -1
  80. package/lib/components/InlineEdit/InlineEdit.js +242 -0
  81. package/lib/components/InlineEdit/index.js +13 -0
  82. package/lib/components/MultiAddSelect/MultiAddSelect.js +37 -0
  83. package/lib/components/MultiAddSelect/index.js +13 -0
  84. package/lib/components/OptionsTile/OptionsTile.js +36 -15
  85. package/lib/components/PageHeader/PageHeader.js +54 -33
  86. package/lib/components/PageHeader/PageHeaderTitle.js +87 -9
  87. package/lib/components/PageHeader/PageHeaderUtils.js +21 -2
  88. package/lib/components/RemoveModal/RemoveModal.js +4 -2
  89. package/lib/components/SidePanel/SidePanel.js +1 -1
  90. package/lib/components/SingleAddSelect/SingleAddSelect.js +36 -0
  91. package/lib/components/SingleAddSelect/index.js +13 -0
  92. package/lib/components/TagSet/TagSet.js +4 -1
  93. package/lib/components/Tearsheet/Tearsheet.js +1 -1
  94. package/lib/components/Tearsheet/TearsheetNarrow.js +1 -1
  95. package/lib/components/Tearsheet/TearsheetShell.js +1 -1
  96. package/lib/components/Toolbar/Toolbar.js +69 -6
  97. package/lib/components/index.js +33 -1
  98. package/lib/global/js/hooks/index.js +8 -0
  99. package/lib/global/js/hooks/useCreateComponentFocus.js +15 -19
  100. package/lib/global/js/hooks/useCreateComponentStepChange.js +69 -79
  101. package/lib/global/js/hooks/useResetCreateComponent.js +7 -4
  102. package/lib/global/js/hooks/useRetrieveStepData.js +62 -0
  103. package/lib/global/js/hooks/useValidCreateStepCount.js +4 -7
  104. package/lib/global/js/package-settings.js +5 -1
  105. package/lib/global/js/utils/lastIndexInArray.js +35 -0
  106. package/lib/global/js/utils/story-helper.js +1 -1
  107. package/package.json +22 -22
  108. package/scss/components/AddSelect/_add-select.scss +84 -0
  109. package/scss/components/AddSelect/_index.scss +10 -0
  110. package/scss/components/AddSelect/_storybook-styles.scss +6 -0
  111. package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +19 -15
  112. package/scss/components/CancelableTextEdit/_cancelable-text-edit.scss +211 -0
  113. package/{es/components/CreateFullPage/constants.js → scss/components/CancelableTextEdit/_index.scss} +2 -2
  114. package/scss/components/CancelableTextEdit/_storybook-styles.scss +15 -0
  115. package/scss/components/CreateFullPage/_create-full-page.scss +4 -11
  116. package/scss/components/CreateTearsheet/_create-tearsheet.scss +4 -8
  117. package/scss/components/InlineEdit/_index.scss +8 -0
  118. package/scss/components/InlineEdit/_inline-edit.scss +44 -0
  119. package/scss/components/InlineEdit/_storybook-styles.scss +15 -0
  120. package/scss/components/MultiAddSelect/_index.scss +1 -0
  121. package/scss/components/MultiAddSelect/_multi-add-select.scss +1 -0
  122. package/scss/components/MultiAddSelect/_storybook-styles.scss +6 -0
  123. package/scss/components/PageHeader/_page-header.scss +14 -4
  124. package/scss/components/SingleAddSelect/_index.scss +1 -0
  125. package/scss/components/SingleAddSelect/_single-add-select.scss +1 -0
  126. package/scss/components/SingleAddSelect/_storybook-styles.scss +6 -0
  127. package/scss/components/StatusIcon/_status-icon.scss +2 -0
  128. package/scss/components/_index.scss +4 -0
  129. package/es/components/CreateFullPage/CreateFullPageSection.js +0 -53
  130. package/es/components/CreateTearsheet/CreateTearsheetSection.js +0 -83
  131. package/es/components/CreateTearsheet/preview-components/MultiStepWithSectionsTearsheet.js +0 -327
  132. package/es/global/js/utils/hasValidType.js +0 -94
  133. package/lib/components/CreateFullPage/CreateFullPageSection.js +0 -74
  134. package/lib/components/CreateFullPage/constants.js +0 -16
  135. package/lib/components/CreateTearsheet/CreateTearsheetSection.js +0 -105
  136. package/lib/components/CreateTearsheet/constants.js +0 -17
  137. package/lib/components/CreateTearsheet/preview-components/MultiStepWithSectionsTearsheet.js +0 -354
  138. package/lib/global/js/utils/hasValidType.js +0 -110
@@ -94,7 +94,7 @@ Tearsheet.propTypes = _objectSpread({
94
94
  actions: (0, _propsHelper.allPropTypes)([_ActionSet.ActionSet.validateActions(function () {
95
95
  return 'max';
96
96
  }), _propTypes.default.arrayOf(_propTypes.default.shape(_objectSpread(_objectSpread({}, _carbonComponentsReact.Button.propTypes), {}, {
97
- kind: _propTypes.default.oneOf(['ghost', 'secondary', 'primary']),
97
+ kind: _propTypes.default.oneOf(['ghost', 'danger--ghost', 'secondary', 'danger', 'primary']),
98
98
  label: _propTypes.default.string,
99
99
  loading: _propTypes.default.bool,
100
100
  // we duplicate this Button prop to improve the DocGen here
@@ -90,7 +90,7 @@ TearsheetNarrow.propTypes = _objectSpread({
90
90
  actions: (0, _propsHelper.allPropTypes)([_ActionSet.ActionSet.validateActions(function () {
91
91
  return 'lg';
92
92
  }), _propTypes.default.arrayOf(_propTypes.default.shape(_objectSpread(_objectSpread({}, _carbonComponentsReact.Button.propTypes), {}, {
93
- kind: _propTypes.default.oneOf(['ghost', 'secondary', 'primary']),
93
+ kind: _propTypes.default.oneOf(['ghost', 'danger--ghost', 'secondary', 'danger', 'primary']),
94
94
  label: _propTypes.default.string,
95
95
  loading: _propTypes.default.bool,
96
96
  // we duplicate this Button prop to improve the DocGen here
@@ -311,7 +311,7 @@ TearsheetShell.propTypes = _objectSpread({
311
311
  actions: _propTypes.default.arrayOf( // NB we don't include the validator here, as the component wrapping this
312
312
  // one should ensure appropriate validation is done.
313
313
  _propTypes.default.shape(_objectSpread(_objectSpread({}, _carbonComponentsReact.Button.propTypes), {}, {
314
- kind: _propTypes.default.oneOf(['ghost', 'secondary', 'primary']),
314
+ kind: _propTypes.default.oneOf(['ghost', 'danger--ghost', 'secondary', 'danger', 'primary']),
315
315
  label: _propTypes.default.string,
316
316
  loading: _propTypes.default.bool,
317
317
  // we duplicate this Button prop to improve the DocGen here
@@ -13,6 +13,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
13
13
 
14
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
15
 
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
16
18
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
19
 
18
20
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -21,6 +23,8 @@ var _propTypes = require("prop-types");
21
23
 
22
24
  var _react = _interopRequireWildcard(require("react"));
23
25
 
26
+ var _getFocusableElements2 = require("../../global/js/utils/getFocusableElements");
27
+
24
28
  var _settings = require("../../settings");
25
29
 
26
30
  var _excluded = ["children", "className", "vertical"];
@@ -37,14 +41,73 @@ var ToolbarContext = /*#__PURE__*/(0, _react.createContext)();
37
41
  /** Toolbars are a collection of action items that organize a program’s interaction patterns into a series of closely related commands. */
38
42
 
39
43
  exports.ToolbarContext = ToolbarContext;
40
- var Toolbar = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
41
- var children = _ref.children,
42
- className = _ref.className,
43
- vertical = _ref.vertical,
44
- rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
44
+ var Toolbar = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, r) {
45
+ var children = _ref2.children,
46
+ className = _ref2.className,
47
+ vertical = _ref2.vertical,
48
+ rest = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
49
+ var focusableElements = (0, _react.useRef)();
50
+ var getFocusableElements = (0, _react.useCallback)(function () {
51
+ return focusableElements.current;
52
+ }, [focusableElements]);
53
+
54
+ var _ref = (0, _react.useRef)();
55
+
56
+ var ref = r || _ref;
57
+
58
+ var _useState = (0, _react.useState)(),
59
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
60
+ focus = _useState2[0],
61
+ setFocus = _useState2[1];
62
+
63
+ (0, _react.useEffect)(function () {
64
+ focusableElements.current = (0, _getFocusableElements2.getFocusableElements)(ref.current);
65
+ typeof focus !== 'undefined' && getFocusableElements().forEach(function (element, index) {
66
+ element[index !== focus ? 'setAttribute' : 'removeAttribute']('tabindex', -1);
67
+ });
68
+ });
69
+ (0, _react.useEffect)(function () {
70
+ typeof focus !== 'undefined' && getFocusableElements()[focus].focus();
71
+ }, [focus, getFocusableElements]);
72
+
73
+ var _ref3 = !vertical ? ['ArrowRight', 'ArrowLeft'] : ['ArrowDown', 'ArrowUp'],
74
+ _ref4 = (0, _slicedToArray2.default)(_ref3, 2),
75
+ arrowNext = _ref4[0],
76
+ arrowPrevious = _ref4[1];
77
+
78
+ function onArrowDown(increment) {
79
+ var nextFocus = focus + increment;
80
+ getFocusableElements()[nextFocus] && setFocus(nextFocus);
81
+ }
82
+
83
+ function onFocus(_ref5) {
84
+ var target = _ref5.target;
85
+ var elements = getFocusableElements();
86
+ elements.includes(target) && setFocus(elements.indexOf(target));
87
+ }
88
+
89
+ function onKeyDown(_ref6) {
90
+ var key = _ref6.key,
91
+ target = _ref6.target;
92
+
93
+ if (getFocusableElements().includes(target)) {
94
+ switch (key) {
95
+ case arrowNext:
96
+ onArrowDown(1);
97
+ break;
98
+
99
+ case arrowPrevious:
100
+ onArrowDown(-1);
101
+ break;
102
+ }
103
+ }
104
+ }
105
+
45
106
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
46
107
  ref: ref,
47
- className: (0, _classnames.default)(blockClass, className, (0, _defineProperty2.default)({}, "".concat(blockClass, "--vertical"), vertical))
108
+ className: (0, _classnames.default)(blockClass, className, (0, _defineProperty2.default)({}, "".concat(blockClass, "--vertical"), vertical)),
109
+ onFocus: onFocus,
110
+ onKeyDown: onKeyDown
48
111
  }, vertical && {
49
112
  'aria-orientation': 'vertical'
50
113
  }, {
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "AboutModal", {
15
15
  return _AboutModal.AboutModal;
16
16
  }
17
17
  });
18
+ Object.defineProperty(exports, "CancelableTextEdit", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _CancelableTextEdit.CancelableTextEdit;
22
+ }
23
+ });
18
24
  Object.defineProperty(exports, "Cascade", {
19
25
  enumerable: true,
20
26
  get: function get() {
@@ -135,6 +141,12 @@ Object.defineProperty(exports, "ImportModal", {
135
141
  return _ImportModal.ImportModal;
136
142
  }
137
143
  });
144
+ Object.defineProperty(exports, "InlineEdit", {
145
+ enumerable: true,
146
+ get: function get() {
147
+ return _InlineEdit.InlineEdit;
148
+ }
149
+ });
138
150
  Object.defineProperty(exports, "LoadingBar", {
139
151
  enumerable: true,
140
152
  get: function get() {
@@ -147,6 +159,12 @@ Object.defineProperty(exports, "ModifiedTabs", {
147
159
  return _ModifiedTabs.ModifiedTabs;
148
160
  }
149
161
  });
162
+ Object.defineProperty(exports, "MultiAddSelect", {
163
+ enumerable: true,
164
+ get: function get() {
165
+ return _MultiAddSelect.MultiAddSelect;
166
+ }
167
+ });
150
168
  Object.defineProperty(exports, "NoDataEmptyState", {
151
169
  enumerable: true,
152
170
  get: function get() {
@@ -213,6 +231,12 @@ Object.defineProperty(exports, "SidePanel", {
213
231
  return _SidePanel.SidePanel;
214
232
  }
215
233
  });
234
+ Object.defineProperty(exports, "SingleAddSelect", {
235
+ enumerable: true,
236
+ get: function get() {
237
+ return _SingleAddSelect.SingleAddSelect;
238
+ }
239
+ });
216
240
  Object.defineProperty(exports, "StatusIcon", {
217
241
  enumerable: true,
218
242
  get: function get() {
@@ -306,6 +330,8 @@ var _LoadingBar = require("./LoadingBar");
306
330
 
307
331
  var _ModifiedTabs = require("./ModifiedTabs");
308
332
 
333
+ var _MultiAddSelect = require("./MultiAddSelect");
334
+
309
335
  var _NotificationsPanel = require("./NotificationsPanel");
310
336
 
311
337
  var _PageHeader = require("./PageHeader");
@@ -318,6 +344,8 @@ var _Saving = require("./Saving");
318
344
 
319
345
  var _SidePanel = require("./SidePanel");
320
346
 
347
+ var _SingleAddSelect = require("./SingleAddSelect");
348
+
321
349
  var _StatusIcon = require("./StatusIcon");
322
350
 
323
351
  var _TagSet = require("./TagSet");
@@ -332,4 +360,8 @@ var _WebTerminal = require("./WebTerminal");
332
360
 
333
361
  var _EditSidePanel = require("./EditSidePanel");
334
362
 
335
- var _OptionsTile = require("./OptionsTile");
363
+ var _OptionsTile = require("./OptionsTile");
364
+
365
+ var _CancelableTextEdit = require("./CancelableTextEdit");
366
+
367
+ var _InlineEdit = require("./InlineEdit");
@@ -39,6 +39,12 @@ Object.defineProperty(exports, "useResetCreateComponent", {
39
39
  return _useResetCreateComponent.useResetCreateComponent;
40
40
  }
41
41
  });
42
+ Object.defineProperty(exports, "useRetrieveStepData", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _useRetrieveStepData.useRetrieveStepData;
46
+ }
47
+ });
42
48
  Object.defineProperty(exports, "useValidCreateStepCount", {
43
49
  enumerable: true,
44
50
  get: function get() {
@@ -72,4 +78,6 @@ var _usePreviousValue = require("./usePreviousValue");
72
78
 
73
79
  var _useResetCreateComponent = require("./useResetCreateComponent");
74
80
 
81
+ var _useRetrieveStepData = require("./useRetrieveStepData");
82
+
75
83
  var _useValidCreateStepCount = require("./useValidCreateStepCount");
@@ -15,34 +15,30 @@ var _getFocusableElements = require("../utils/getFocusableElements");
15
15
  * This source code is licensed under the Apache-2.0 license found in the
16
16
  * LICENSE file in the root directory of this source tree.
17
17
  */
18
-
19
- /**
20
- * Returns the previous state values included in the param
21
- * @param {object} previousState
22
- * @param {number} currentStep
23
- * @param {Function} getCreateComponentSteps
24
- * @param {string} componentBlockClass
25
- */
26
- var useCreateComponentFocus = function useCreateComponentFocus(previousState, currentStep, getCreateComponentSteps, componentBlockClass) {
18
+ // Focus the first focusable element and call the onMount prop for the current step if one is provided
19
+ var useCreateComponentFocus = function useCreateComponentFocus(_ref) {
20
+ var previousState = _ref.previousState,
21
+ currentStep = _ref.currentStep,
22
+ blockClass = _ref.blockClass,
23
+ onMount = _ref.onMount;
24
+ (0, _react.useEffect)(function () {
25
+ if (typeof onMount === 'function') {
26
+ onMount();
27
+ }
28
+ }, [onMount]);
27
29
  (0, _react.useEffect)(function () {
28
30
  if ((previousState === null || previousState === void 0 ? void 0 : previousState.currentStep) !== currentStep && currentStep > 0) {
29
- var visibleStepInnerContent = document.querySelector(".".concat(componentBlockClass, "__step.").concat(componentBlockClass, "__step--visible-step"));
30
- var createComponentSteps = getCreateComponentSteps();
31
- var focusableStepElements = createComponentSteps && createComponentSteps.length && (0, _getFocusableElements.getFocusableElements)(visibleStepInnerContent);
32
- var activeStepComponent = createComponentSteps && createComponentSteps.length && createComponentSteps[currentStep - 1];
33
-
34
- if (activeStepComponent && activeStepComponent.props.onMount) {
35
- activeStepComponent.props.onMount();
36
- }
31
+ var visibleStepInnerContent = document.querySelector(".".concat(blockClass, "__step.").concat(blockClass, "__step__step--visible-step"));
32
+ var focusableStepElements = visibleStepInnerContent ? (0, _getFocusableElements.getFocusableElements)(visibleStepInnerContent) : [];
37
33
 
38
34
  if (focusableStepElements && focusableStepElements.length) {
39
35
  focusableStepElements[0].focus();
40
36
  } else {
41
- var nextButton = document.querySelector(".".concat(componentBlockClass, "__create-button"));
37
+ var nextButton = document.querySelector(".".concat(blockClass, "__create-button"));
42
38
  nextButton === null || nextButton === void 0 ? void 0 : nextButton.focus();
43
39
  }
44
40
  }
45
- }, [currentStep, getCreateComponentSteps, previousState, componentBlockClass]);
41
+ }, [currentStep, previousState, blockClass, onMount]);
46
42
  };
47
43
 
48
44
  exports.useCreateComponentFocus = useCreateComponentFocus;
@@ -14,19 +14,23 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
14
14
  var _react = require("react");
15
15
 
16
16
  /**
17
- * Copyright IBM Corp. 2021, 2021
17
+ * Copyright IBM Corp. 2021, 2022
18
18
  *
19
19
  * This source code is licensed under the Apache-2.0 license found in the
20
20
  * LICENSE file in the root directory of this source tree.
21
21
  */
22
22
  var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
23
- var setCurrentStep = _ref.setCurrentStep,
23
+ var firstIncludedStep = _ref.firstIncludedStep,
24
+ lastIncludedStep = _ref.lastIncludedStep,
25
+ stepData = _ref.stepData,
26
+ onNext = _ref.onNext,
27
+ isSubmitDisabled = _ref.isSubmitDisabled,
28
+ setCurrentStep = _ref.setCurrentStep,
24
29
  setIsSubmitting = _ref.setIsSubmitting,
25
30
  setShouldViewAll = _ref.setShouldViewAll,
26
31
  onClose = _ref.onClose,
27
32
  onRequestSubmit = _ref.onRequestSubmit,
28
33
  componentName = _ref.componentName,
29
- getComponentSteps = _ref.getComponentSteps,
30
34
  currentStep = _ref.currentStep,
31
35
  shouldViewAll = _ref.shouldViewAll,
32
36
  backButtonText = _ref.backButtonText,
@@ -39,8 +43,6 @@ var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
39
43
  setModalIsOpen = _ref.setModalIsOpen;
40
44
  // useEffect to handle multi step logic
41
45
  (0, _react.useEffect)(function () {
42
- var _getComponentSteps;
43
-
44
46
  var onUnmount = function onUnmount() {
45
47
  if (componentName !== 'CreateFullPage') {
46
48
  setCurrentStep(0);
@@ -85,73 +87,47 @@ var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
85
87
  };
86
88
  }();
87
89
 
88
- var isSubmitDisabled = function isSubmitDisabled() {
89
- var step = 0;
90
- var submitDisabled = false;
91
- var viewAllSubmitDisabled = false;
92
- var createComponentSteps = getComponentSteps();
93
- createComponentSteps.forEach(function (child) {
94
- step++;
95
-
96
- if (currentStep === step) {
97
- submitDisabled = child.props.disableSubmit;
98
- }
99
-
100
- if (shouldViewAll && child.props.disableSubmit) {
101
- viewAllSubmitDisabled = true;
102
- }
103
- });
104
-
105
- if (!shouldViewAll) {
106
- return submitDisabled;
107
- }
108
-
109
- return viewAllSubmitDisabled;
110
- };
111
-
112
90
  var handleNext = /*#__PURE__*/function () {
113
91
  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
114
- var createSteps;
115
92
  return _regenerator.default.wrap(function _callee2$(_context2) {
116
93
  while (1) {
117
94
  switch (_context2.prev = _context2.next) {
118
95
  case 0:
119
96
  setIsSubmitting(true);
120
- createSteps = getComponentSteps();
121
97
 
122
- if (!createSteps[currentStep - 1].props.onNext) {
123
- _context2.next = 15;
98
+ if (!(typeof onNext === 'function')) {
99
+ _context2.next = 14;
124
100
  break;
125
101
  }
126
102
 
127
- _context2.prev = 3;
128
- _context2.next = 6;
129
- return createSteps[currentStep - 1].props.onNext();
103
+ _context2.prev = 2;
104
+ _context2.next = 5;
105
+ return onNext();
130
106
 
131
- case 6:
107
+ case 5:
132
108
  continueToNextStep();
133
- _context2.next = 13;
109
+ _context2.next = 12;
134
110
  break;
135
111
 
136
- case 9:
137
- _context2.prev = 9;
138
- _context2.t0 = _context2["catch"](3);
112
+ case 8:
113
+ _context2.prev = 8;
114
+ _context2.t0 = _context2["catch"](2);
139
115
  setIsSubmitting(false);
140
116
  console.warn("".concat(componentName, " onNext error: ").concat(_context2.t0));
141
117
 
142
- case 13:
143
- _context2.next = 16;
118
+ case 12:
119
+ _context2.next = 15;
144
120
  break;
145
121
 
146
- case 15:
122
+ case 14:
147
123
  continueToNextStep();
148
124
 
149
- case 16:
125
+ case 15:
150
126
  case "end":
151
127
  return _context2.stop();
152
128
  }
153
129
  }
154
- }, _callee2, null, [[3, 9]]);
130
+ }, _callee2, null, [[2, 8]]);
155
131
  }));
156
132
 
157
133
  return function handleNext() {
@@ -161,51 +137,49 @@ var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
161
137
 
162
138
  var handleSubmit = /*#__PURE__*/function () {
163
139
  var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
164
- var createSteps;
165
140
  return _regenerator.default.wrap(function _callee3$(_context3) {
166
141
  while (1) {
167
142
  switch (_context3.prev = _context3.next) {
168
143
  case 0:
169
- setIsSubmitting(true);
170
- createSteps = getComponentSteps(); // last step should have onNext as well
144
+ setIsSubmitting(true); // last step should have onNext as well
171
145
 
172
- if (!createSteps[currentStep - 1].props.onNext) {
173
- _context3.next = 16;
146
+ if (!(typeof onNext === 'function')) {
147
+ _context3.next = 15;
174
148
  break;
175
149
  }
176
150
 
177
- _context3.prev = 3;
178
- _context3.next = 6;
179
- return createSteps[currentStep - 1].props.onNext();
151
+ _context3.prev = 2;
152
+ _context3.next = 5;
153
+ return onNext();
180
154
 
181
- case 6:
182
- _context3.next = 8;
155
+ case 5:
156
+ _context3.next = 7;
183
157
  return handleOnRequestSubmit();
184
158
 
185
- case 8:
186
- _context3.next = 14;
159
+ case 7:
160
+ _context3.next = 13;
187
161
  break;
188
162
 
189
- case 10:
190
- _context3.prev = 10;
191
- _context3.t0 = _context3["catch"](3);
163
+ case 9:
164
+ _context3.prev = 9;
165
+ _context3.t0 = _context3["catch"](2);
192
166
  setIsSubmitting(false);
193
167
  console.warn("".concat(componentName, " onNext error: ").concat(_context3.t0));
194
168
 
195
- case 14:
196
- _context3.next = 18;
169
+ case 13:
170
+ _context3.next = 17;
197
171
  break;
198
172
 
199
- case 16:
200
- _context3.next = 18;
173
+ case 15:
174
+ _context3.next = 17;
201
175
  return handleOnRequestSubmit();
202
176
 
203
- case 18:
177
+ case 17:
204
178
  case "end":
205
179
  return _context3.stop();
206
180
  }
207
181
  }
208
- }, _callee3, null, [[3, 10]]);
182
+ }, _callee3, null, [[2, 9]]);
209
183
  }));
210
184
 
211
185
  return function handleSubmit() {
@@ -213,22 +187,29 @@ var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
213
187
  };
214
188
  }();
215
189
 
216
- if ((_getComponentSteps = getComponentSteps()) !== null && _getComponentSteps !== void 0 && _getComponentSteps.length) {
217
- var createSteps = getComponentSteps();
218
- var total = createSteps.length;
190
+ if ((stepData === null || stepData === void 0 ? void 0 : stepData.length) > 0) {
219
191
  var buttons = [];
220
192
 
221
- if (total > 1 && !shouldViewAll) {
193
+ if ((stepData === null || stepData === void 0 ? void 0 : stepData.length) > 1 && !shouldViewAll) {
222
194
  buttons.push({
223
195
  key: 'create-action-button-back',
224
196
  label: backButtonText,
225
197
  onClick: function onClick() {
226
198
  return setCurrentStep(function (prev) {
227
- return prev - 1;
199
+ // Find previous included step to render
200
+ // There will always be a previous step otherwise we will
201
+ // have disabled the back button since we have reached the first visible step
202
+ do {
203
+ var _stepData;
204
+
205
+ prev--;
206
+ } while (!((_stepData = stepData[prev - 1]) !== null && _stepData !== void 0 && _stepData.shouldIncludeStep));
207
+
208
+ return prev;
228
209
  });
229
210
  },
230
211
  kind: 'secondary',
231
- disabled: currentStep === 1
212
+ disabled: currentStep === firstIncludedStep
232
213
  });
233
214
  }
234
215
 
@@ -242,22 +223,31 @@ var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
242
223
  });
243
224
  buttons.push({
244
225
  key: 'create-action-button-submit',
245
- label: shouldViewAll ? submitButtonText : currentStep < total ? nextButtonText : submitButtonText,
246
- onClick: shouldViewAll ? handleSubmit : currentStep < total ? handleNext : handleSubmit,
247
- disabled: isSubmitDisabled(),
226
+ label: shouldViewAll ? submitButtonText : currentStep < lastIncludedStep ? nextButtonText : submitButtonText,
227
+ onClick: shouldViewAll ? handleSubmit : currentStep < lastIncludedStep ? handleNext : handleSubmit,
228
+ disabled: isSubmitDisabled,
248
229
  kind: 'primary',
249
230
  loading: isSubmitting,
250
231
  className: "".concat(componentBlockClass, "__create-button")
251
232
  });
252
233
  setCreateComponentActions(buttons);
253
234
  }
254
- }, [getComponentSteps, backButtonText, cancelButtonText, currentStep, onClose, nextButtonText, submitButtonText, onRequestSubmit, isSubmitting, shouldViewAll, componentBlockClass, componentName, continueToNextStep, setCurrentStep, setCreateComponentActions, setIsSubmitting, setShouldViewAll, setModalIsOpen]);
235
+ }, [firstIncludedStep, lastIncludedStep, stepData, onNext, isSubmitDisabled, backButtonText, cancelButtonText, currentStep, onClose, nextButtonText, submitButtonText, onRequestSubmit, isSubmitting, shouldViewAll, componentBlockClass, componentName, continueToNextStep, setCurrentStep, setCreateComponentActions, setIsSubmitting, setShouldViewAll, setModalIsOpen]);
255
236
  var continueToNextStep = (0, _react.useCallback)(function () {
256
237
  setIsSubmitting(false);
257
238
  setCurrentStep(function (prev) {
258
- return prev + 1;
239
+ // Find next included step to render
240
+ // There will always be a next step otherwise we will
241
+ // have reach the onSubmit
242
+ do {
243
+ var _stepData2;
244
+
245
+ prev++;
246
+ } while (!((_stepData2 = stepData[prev - 1]) !== null && _stepData2 !== void 0 && _stepData2.shouldIncludeStep));
247
+
248
+ return prev;
259
249
  });
260
- }, [setCurrentStep, setIsSubmitting]);
250
+ }, [setCurrentStep, setIsSubmitting, stepData]);
261
251
  };
262
252
 
263
253
  exports.useCreateComponentStepChange = useCreateComponentStepChange;
@@ -8,7 +8,7 @@ exports.useResetCreateComponent = void 0;
8
8
  var _react = require("react");
9
9
 
10
10
  /**
11
- * Copyright IBM Corp. 2021, 2021
11
+ * Copyright IBM Corp. 2021, 2022
12
12
  *
13
13
  * This source code is licensed under the Apache-2.0 license found in the
14
14
  * LICENSE file in the root directory of this source tree.
@@ -17,6 +17,7 @@ var _react = require("react");
17
17
  /**
18
18
  * Resets the current step of the create component if it has been closed.
19
19
  * @param {object} useResetCreateComponent - Create component that uses this custom hook
20
+ * @param {object} useResetCreateComponent.firstIncludedStep
20
21
  * @param {object} useResetCreateComponent.previousState
21
22
  * @param {boolean} useResetCreateComponent.open
22
23
  * @param {Function} useResetCreateComponent.setCurrentStep
@@ -25,7 +26,8 @@ var _react = require("react");
25
26
  * @param {string} useResetCreateComponent.componentName
26
27
  */
27
28
  var useResetCreateComponent = function useResetCreateComponent(_ref) {
28
- var previousState = _ref.previousState,
29
+ var firstIncludedStep = _ref.firstIncludedStep,
30
+ previousState = _ref.previousState,
29
31
  open = _ref.open,
30
32
  setCurrentStep = _ref.setCurrentStep,
31
33
  initialStep = _ref.initialStep,
@@ -36,7 +38,8 @@ var useResetCreateComponent = function useResetCreateComponent(_ref) {
36
38
  if (initialStep && totalSteps && Number(initialStep) <= Number(totalSteps) && Number(initialStep) > 0) {
37
39
  setCurrentStep(Number(initialStep));
38
40
  } else {
39
- setCurrentStep(1);
41
+ // default should be fist includedStep instead of just 1
42
+ setCurrentStep(firstIncludedStep);
40
43
  } // An invalid initialStep value was provided, we'll default to rendering the first step in this scenario
41
44
 
42
45
 
@@ -44,7 +47,7 @@ var useResetCreateComponent = function useResetCreateComponent(_ref) {
44
47
  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."));
45
48
  }
46
49
  }
47
- }, [open, previousState, setCurrentStep, initialStep, totalSteps, componentName]);
50
+ }, [firstIncludedStep, open, previousState, setCurrentStep, initialStep, totalSteps, componentName]);
48
51
  };
49
52
 
50
53
  exports.useResetCreateComponent = useResetCreateComponent;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useRetrieveStepData = void 0;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _react = require("react");
13
+
14
+ /**
15
+ * Copyright IBM Corp. 2022, 2022
16
+ *
17
+ * This source code is licensed under the Apache-2.0 license found in the
18
+ * LICENSE file in the root directory of this source tree.
19
+ */
20
+
21
+ /**
22
+ * This useEffect makes sure that every CreateTearsheetStep/CreateFullPageStep reports back it's
23
+ * title, secondaryLabel, introStep, and shouldIncludeStep data so that it can be sent to the CreateInfluencer.
24
+ * @param {object} useResetCreateComponent
25
+ * @param {object} useResetCreateComponent.stepsContext
26
+ * @param {number} useResetCreateComponent.stepNumber
27
+ * @param {boolean} useResetCreateComponent.introStep
28
+ * @param {boolean} useResetCreateComponent.shouldIncludeStep
29
+ * @param {string} useResetCreateComponent.secondaryLabel
30
+ * @param {string} useResetCreateComponent.title
31
+ */
32
+ var useRetrieveStepData = function useRetrieveStepData(_ref) {
33
+ var stepsContext = _ref.stepsContext,
34
+ stepNumber = _ref.stepNumber,
35
+ introStep = _ref.introStep,
36
+ shouldIncludeStep = _ref.shouldIncludeStep,
37
+ secondaryLabel = _ref.secondaryLabel,
38
+ title = _ref.title;
39
+ (0, _react.useEffect)(function () {
40
+ if (stepsContext) {
41
+ stepsContext.setStepData(function (prev) {
42
+ var stepItem = {
43
+ title: title,
44
+ secondaryLabel: secondaryLabel,
45
+ introStep: introStep,
46
+ shouldIncludeStep: shouldIncludeStep
47
+ };
48
+ var previousItem = prev[stepNumber - 1];
49
+
50
+ 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) {
51
+ var clone = (0, _toConsumableArray2.default)(prev);
52
+ clone[stepNumber - 1] = stepItem;
53
+ return clone;
54
+ }
55
+
56
+ return prev;
57
+ });
58
+ }
59
+ }, [shouldIncludeStep, title, secondaryLabel, introStep, stepsContext, stepNumber]);
60
+ };
61
+
62
+ exports.useRetrieveStepData = useRetrieveStepData;