@carbon/ibm-products 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. package/css/index-full-carbon.css +124 -40
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-without-carbon-released-only.css +124 -40
  5. package/css/index-without-carbon-released-only.css.map +1 -1
  6. package/css/index-without-carbon-released-only.min.css +1 -1
  7. package/css/index-without-carbon.css +124 -40
  8. package/css/index-without-carbon.css.map +1 -1
  9. package/css/index-without-carbon.min.css +1 -1
  10. package/css/index.css +124 -40
  11. package/css/index.css.map +1 -1
  12. package/css/index.min.css +1 -1
  13. package/es/components/ActionSet/ActionSet.js +22 -10
  14. package/es/components/ActionSet/actions.js +25 -17
  15. package/es/components/CreateFullPage/CreateFullPage.js +30 -5
  16. package/es/components/CreateFullPage/CreateFullPageStep.js +40 -32
  17. package/es/components/CreateInfluencer/CreateInfluencer.js +25 -3
  18. package/es/components/CreateTearsheet/CreateTearsheet.js +32 -6
  19. package/es/components/CreateTearsheet/CreateTearsheetStep.js +45 -38
  20. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +24 -4
  21. package/es/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +8 -6
  22. package/es/components/ExportModal/ExportModal.js +39 -12
  23. package/es/components/SidePanel/SidePanel.js +1 -1
  24. package/es/components/Tearsheet/Tearsheet.js +1 -1
  25. package/es/components/Tearsheet/TearsheetNarrow.js +1 -1
  26. package/es/components/Tearsheet/TearsheetShell.js +1 -1
  27. package/es/global/js/hooks/index.js +1 -0
  28. package/es/global/js/hooks/useCreateComponentStepChange.js +31 -11
  29. package/es/global/js/hooks/useResetCreateComponent.js +7 -4
  30. package/es/global/js/hooks/useRetrieveStepData.js +51 -0
  31. package/es/global/js/utils/lastIndexInArray.js +26 -0
  32. package/lib/components/ActionSet/ActionSet.js +22 -10
  33. package/lib/components/ActionSet/actions.js +25 -17
  34. package/lib/components/CreateFullPage/CreateFullPage.js +29 -4
  35. package/lib/components/CreateFullPage/CreateFullPageStep.js +38 -30
  36. package/lib/components/CreateInfluencer/CreateInfluencer.js +25 -3
  37. package/lib/components/CreateTearsheet/CreateTearsheet.js +31 -5
  38. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +43 -36
  39. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +22 -2
  40. package/lib/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +8 -6
  41. package/lib/components/ExportModal/ExportModal.js +36 -11
  42. package/lib/components/SidePanel/SidePanel.js +1 -1
  43. package/lib/components/Tearsheet/Tearsheet.js +1 -1
  44. package/lib/components/Tearsheet/TearsheetNarrow.js +1 -1
  45. package/lib/components/Tearsheet/TearsheetShell.js +1 -1
  46. package/lib/global/js/hooks/index.js +8 -0
  47. package/lib/global/js/hooks/useCreateComponentStepChange.js +31 -11
  48. package/lib/global/js/hooks/useResetCreateComponent.js +7 -4
  49. package/lib/global/js/hooks/useRetrieveStepData.js +62 -0
  50. package/lib/global/js/utils/lastIndexInArray.js +35 -0
  51. package/package.json +15 -15
  52. package/scss/components/StatusIcon/_status-icon.scss +2 -0
@@ -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
@@ -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");
@@ -14,13 +14,15 @@ 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 totalStepCount = _ref.totalStepCount,
23
+ var firstIncludedStep = _ref.firstIncludedStep,
24
+ lastIncludedStep = _ref.lastIncludedStep,
25
+ stepData = _ref.stepData,
24
26
  onNext = _ref.onNext,
25
27
  isSubmitDisabled = _ref.isSubmitDisabled,
26
28
  setCurrentStep = _ref.setCurrentStep,
@@ -185,20 +187,29 @@ var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
185
187
  };
186
188
  }();
187
189
 
188
- if (totalStepCount > 0) {
190
+ if ((stepData === null || stepData === void 0 ? void 0 : stepData.length) > 0) {
189
191
  var buttons = [];
190
192
 
191
- if (totalStepCount > 1 && !shouldViewAll) {
193
+ if ((stepData === null || stepData === void 0 ? void 0 : stepData.length) > 1 && !shouldViewAll) {
192
194
  buttons.push({
193
195
  key: 'create-action-button-back',
194
196
  label: backButtonText,
195
197
  onClick: function onClick() {
196
198
  return setCurrentStep(function (prev) {
197
- 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;
198
209
  });
199
210
  },
200
211
  kind: 'secondary',
201
- disabled: currentStep === 1
212
+ disabled: currentStep === firstIncludedStep
202
213
  });
203
214
  }
204
215
 
@@ -212,8 +223,8 @@ var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
212
223
  });
213
224
  buttons.push({
214
225
  key: 'create-action-button-submit',
215
- label: shouldViewAll ? submitButtonText : currentStep < totalStepCount ? nextButtonText : submitButtonText,
216
- onClick: shouldViewAll ? handleSubmit : currentStep < totalStepCount ? handleNext : handleSubmit,
226
+ label: shouldViewAll ? submitButtonText : currentStep < lastIncludedStep ? nextButtonText : submitButtonText,
227
+ onClick: shouldViewAll ? handleSubmit : currentStep < lastIncludedStep ? handleNext : handleSubmit,
217
228
  disabled: isSubmitDisabled,
218
229
  kind: 'primary',
219
230
  loading: isSubmitting,
@@ -221,13 +232,22 @@ var useCreateComponentStepChange = function useCreateComponentStepChange(_ref) {
221
232
  });
222
233
  setCreateComponentActions(buttons);
223
234
  }
224
- }, [totalStepCount, onNext, isSubmitDisabled, 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]);
225
236
  var continueToNextStep = (0, _react.useCallback)(function () {
226
237
  setIsSubmitting(false);
227
238
  setCurrentStep(function (prev) {
228
- 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;
229
249
  });
230
- }, [setCurrentStep, setIsSubmitting]);
250
+ }, [setCurrentStep, setIsSubmitting, stepData]);
231
251
  };
232
252
 
233
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;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.lastIndexInArray = void 0;
7
+
8
+ /**
9
+ * Copyright IBM Corp. 2022, 2022
10
+ *
11
+ * This source code is licensed under the Apache-2.0 license found in the
12
+ * LICENSE file in the root directory of this source tree.
13
+ */
14
+
15
+ /**
16
+ * This utility will return the index of the last instance of an
17
+ * item in the given array of objects whose key is equal to the value
18
+ * parameter. If there are no matches, -1 is returned as similar to findIndex
19
+ * @param {Array<Object.*>} array
20
+ * @param {string} key
21
+ * @param {string|boolean|number} value
22
+ */
23
+ var lastIndexInArray = function lastIndexInArray(array, key, value) {
24
+ for (var i = array.length - 1; i >= 0; i--) {
25
+ var _array$i;
26
+
27
+ if (((_array$i = array[i]) === null || _array$i === void 0 ? void 0 : _array$i[key]) === value) {
28
+ return i + 1;
29
+ }
30
+ }
31
+
32
+ return -1;
33
+ };
34
+
35
+ exports.lastIndexInArray = lastIndexInArray;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "1.4.0",
4
+ "version": "1.5.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -47,12 +47,12 @@
47
47
  "postinstall": "carbon-telemetry collect --install",
48
48
  "test": "jest --colors",
49
49
  "//upgrade-dependencies": "# don't upgrade carbon (done globally), react/react-dom (explicit range peer dependency) or chalk (until we can load it as ESM)",
50
- "upgrade-dependencies": "npm-check-updates -u --color --reject '/(carbon|^react$|^react-dom$|^chalk$)/'"
50
+ "upgrade-dependencies": "npm-check-updates -u --dep dev,peer,prod --color --reject '/(carbon|^react$|^react-dom$|^chalk$)/'"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@babel/cli": "^7.16.8",
54
- "@babel/core": "^7.16.10",
55
- "babel-preset-ibm-cloud-cognitive": "^0.14.4",
54
+ "@babel/core": "^7.16.12",
55
+ "babel-preset-ibm-cloud-cognitive": "^0.14.5",
56
56
  "chalk": "^4.1.2",
57
57
  "change-case": "^4.1.2",
58
58
  "copyfiles": "^2.4.1",
@@ -60,8 +60,8 @@
60
60
  "fs-extra": "^10.0.0",
61
61
  "glob": "^7.2.0",
62
62
  "jest": "^27.4.7",
63
- "jest-config-ibm-cloud-cognitive": "^0.23.5",
64
- "npm-check-updates": "^12.2.0",
63
+ "jest-config-ibm-cloud-cognitive": "^0.23.6",
64
+ "npm-check-updates": "^12.2.1",
65
65
  "npm-run-all": "^4.1.5",
66
66
  "rimraf": "^3.0.2",
67
67
  "sass": "^1.49.0",
@@ -73,18 +73,18 @@
73
73
  "react-resize-detector": "^7.0.0"
74
74
  },
75
75
  "peerDependencies": {
76
- "@carbon/colors": "^10.34.0",
77
- "@carbon/icons-react": "^10.42.0",
76
+ "@carbon/colors": "^10.35.0",
77
+ "@carbon/icons-react": "^10.45.0",
78
78
  "@carbon/import-once": "^10.5.0",
79
- "@carbon/layout": "^10.34.0",
80
- "@carbon/motion": "^10.26.0",
81
- "@carbon/themes": "^10.46.0",
82
- "@carbon/type": "^10.38.0",
83
- "carbon-components": "^10.47.1",
84
- "carbon-components-react": "^7.47.2",
79
+ "@carbon/layout": "^10.35.0",
80
+ "@carbon/motion": "^10.27.0",
81
+ "@carbon/themes": "^10.49.0",
82
+ "@carbon/type": "^10.40.0",
83
+ "carbon-components": "^10.51.0",
84
+ "carbon-components-react": "^7.51.0",
85
85
  "carbon-icons": "^7.0.7",
86
86
  "react": "^16.8.6 || ^17.0.1",
87
87
  "react-dom": "^16.8.6 || ^17.0.1"
88
88
  },
89
- "gitHead": "64c7f310e4d344bce77216750d5989485d28a11c"
89
+ "gitHead": "c87d8a538026632249a4f6e907b008efb1d50250"
90
90
  }
@@ -111,6 +111,8 @@ $block-class: #{$pkg-prefix}--status-icon;
111
111
  @each $theme in $themes {
112
112
  @each $icon in $icons {
113
113
  @each $theme-key in $themes {
114
+ .#{$prefix}--btn.#{$prefix}--btn--icon-only.#{$prefix}--tooltip__trigger
115
+ .#{$block-class}--#{$theme}.#{$block-class}--#{$theme-key}-#{$icon},
114
116
  .#{$block-class}--#{$theme}.#{$block-class}--#{$theme-key}-#{$icon} {
115
117
  @if $icon == in-progress {
116
118
  @media (prefers-reduced-motion: reduce) {