@carbon/ibm-products 1.54.2 → 1.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/css/index-full-carbon.css +1312 -108
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +3 -3
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon.css +1200 -1
  6. package/css/index-without-carbon.css.map +1 -1
  7. package/css/index-without-carbon.min.css +2 -2
  8. package/css/index-without-carbon.min.css.map +1 -1
  9. package/css/index.css +1310 -106
  10. package/css/index.css.map +1 -1
  11. package/css/index.min.css +3 -3
  12. package/css/index.min.css.map +1 -1
  13. package/es/components/APIKeyModal/APIKeyModal.js +25 -21
  14. package/es/components/ActionBar/ActionBar.js +5 -5
  15. package/es/components/Carousel/Carousel.js +237 -0
  16. package/es/components/Carousel/CarouselItem.js +66 -0
  17. package/es/components/Carousel/index.js +9 -0
  18. package/es/components/Carousel/utils.js +98 -0
  19. package/es/components/CreateFullPage/CreateFullPage.js +4 -2
  20. package/es/components/CreateModal/CreateModal.js +2 -1
  21. package/es/components/CreateSidePanel/CreateSidePanel.js +6 -2
  22. package/es/components/CreateTearsheet/CreateTearsheet.js +3 -1
  23. package/es/components/CreateTearsheetNarrow/CreateTearsheetNarrow.js +6 -2
  24. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +1 -1
  25. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +3 -2
  26. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +2 -1
  27. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilterContext.js +13 -0
  28. package/es/components/Datagrid/index.js +2 -1
  29. package/es/components/Datagrid/useActionsColumn.js +13 -7
  30. package/es/components/Datagrid/useOnRowClick.js +20 -4
  31. package/es/components/Datagrid/useSortableColumns.js +27 -3
  32. package/es/components/Datagrid/utils/DatagridActions.js +6 -6
  33. package/es/components/Datagrid/utils/getArgTypes.js +4 -0
  34. package/es/components/EditSidePanel/EditSidePanel.js +7 -3
  35. package/es/components/FilterSummary/FilterSummary.js +7 -3
  36. package/es/components/Guidebanner/Guidebanner.js +229 -0
  37. package/es/components/Guidebanner/GuidebannerElement.js +71 -0
  38. package/es/components/Guidebanner/GuidebannerElementButton.js +76 -0
  39. package/es/components/Guidebanner/GuidebannerElementLink.js +56 -0
  40. package/es/components/Guidebanner/index.js +11 -0
  41. package/es/components/InlineTip/InlineTip.js +228 -0
  42. package/es/components/InlineTip/InlineTipButton.js +89 -0
  43. package/es/components/InlineTip/InlineTipLink.js +89 -0
  44. package/es/components/InlineTip/index.js +10 -0
  45. package/es/components/InlineTip/utils.js +36 -0
  46. package/es/components/SteppedAnimatedMedia/SteppedAnimatedMedia.js +164 -0
  47. package/es/components/SteppedAnimatedMedia/assets/index.js +4 -0
  48. package/es/components/SteppedAnimatedMedia/index.js +8 -0
  49. package/es/components/Tearsheet/TearsheetShell.js +2 -1
  50. package/es/components/index.js +4 -2
  51. package/es/global/js/hooks/useResizeObserver.js +1 -1
  52. package/es/global/js/package-settings.js +2 -0
  53. package/lib/components/APIKeyModal/APIKeyModal.js +25 -21
  54. package/lib/components/ActionBar/ActionBar.js +5 -5
  55. package/lib/components/Carousel/Carousel.js +238 -0
  56. package/lib/components/Carousel/CarouselItem.js +66 -0
  57. package/lib/components/Carousel/index.js +19 -0
  58. package/lib/components/Carousel/utils.js +108 -0
  59. package/lib/components/CreateFullPage/CreateFullPage.js +4 -2
  60. package/lib/components/CreateModal/CreateModal.js +2 -1
  61. package/lib/components/CreateSidePanel/CreateSidePanel.js +6 -2
  62. package/lib/components/CreateTearsheet/CreateTearsheet.js +3 -1
  63. package/lib/components/CreateTearsheetNarrow/CreateTearsheetNarrow.js +6 -2
  64. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +1 -1
  65. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +3 -2
  66. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +8 -1
  67. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilterContext.js +20 -0
  68. package/lib/components/Datagrid/index.js +8 -1
  69. package/lib/components/Datagrid/useActionsColumn.js +13 -7
  70. package/lib/components/Datagrid/useOnRowClick.js +20 -4
  71. package/lib/components/Datagrid/useSortableColumns.js +27 -3
  72. package/lib/components/Datagrid/utils/DatagridActions.js +6 -6
  73. package/lib/components/Datagrid/utils/getArgTypes.js +4 -0
  74. package/lib/components/EditSidePanel/EditSidePanel.js +7 -3
  75. package/lib/components/FilterSummary/FilterSummary.js +7 -3
  76. package/lib/components/Guidebanner/Guidebanner.js +229 -0
  77. package/lib/components/Guidebanner/GuidebannerElement.js +67 -0
  78. package/lib/components/Guidebanner/GuidebannerElementButton.js +71 -0
  79. package/lib/components/Guidebanner/GuidebannerElementLink.js +52 -0
  80. package/lib/components/Guidebanner/index.js +33 -0
  81. package/lib/components/InlineTip/InlineTip.js +228 -0
  82. package/lib/components/InlineTip/InlineTipButton.js +86 -0
  83. package/lib/components/InlineTip/InlineTipLink.js +86 -0
  84. package/lib/components/InlineTip/index.js +26 -0
  85. package/lib/components/InlineTip/utils.js +44 -0
  86. package/lib/components/SteppedAnimatedMedia/SteppedAnimatedMedia.js +165 -0
  87. package/lib/components/SteppedAnimatedMedia/assets/index.js +12 -0
  88. package/lib/components/SteppedAnimatedMedia/index.js +12 -0
  89. package/lib/components/Tearsheet/TearsheetShell.js +2 -1
  90. package/lib/components/index.js +21 -1
  91. package/lib/global/js/hooks/useResizeObserver.js +1 -1
  92. package/lib/global/js/package-settings.js +2 -0
  93. package/package.json +5 -5
  94. package/scss/components/Carousel/_carousel.scss +80 -0
  95. package/scss/components/Carousel/_index.scss +8 -0
  96. package/scss/components/Carousel/_storybook-styles.scss +10 -0
  97. package/scss/components/Datagrid/_storybook-styles.scss +5 -0
  98. package/scss/components/Datagrid/styles/_datagrid.scss +1 -1
  99. package/scss/components/Guidebanner/_guidebanner.scss +257 -0
  100. package/scss/components/Guidebanner/_index.scss +8 -0
  101. package/scss/components/Guidebanner/_storybook-styles.scss +20 -0
  102. package/scss/components/InlineTip/_index.scss +8 -0
  103. package/scss/components/InlineTip/_inline-tip.scss +231 -0
  104. package/scss/components/InlineTip/_storybook-styles.scss +21 -0
  105. package/scss/components/SteppedAnimatedMedia/_index.scss +8 -0
  106. package/scss/components/SteppedAnimatedMedia/_stepped-animated-media.scss +34 -0
  107. package/scss/components/SteppedAnimatedMedia/_storybook-styles.scss +12 -0
  108. package/scss/components/_index.scss +4 -0
@@ -72,6 +72,8 @@ var defaults = {
72
72
  EditUpdateCards: false,
73
73
  ButtonMenu: false,
74
74
  // Novice to pro components not yet reviewed and released:
75
+ InlineTip: false,
76
+ Guidebanner: false,
75
77
  NonLinearReading: false
76
78
  /* new component flags here - comment used by generate CLI */
77
79
  },
@@ -80,18 +80,22 @@ var APIKeyModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
80
80
  previousStepButtonText = _ref.previousStepButtonText,
81
81
  showAPIKeyLabel = _ref.showAPIKeyLabel,
82
82
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
83
- var _useState = (0, _react.useState)(false),
83
+ var _useState = (0, _react.useState)(null),
84
84
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
85
- copyError = _useState2[0],
86
- setCopyError = _useState2[1];
87
- var _useState3 = (0, _react.useState)(apiKeyName),
85
+ title = _useState2[0],
86
+ setTitle = _useState2[1];
87
+ var _useState3 = (0, _react.useState)(false),
88
88
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
89
- name = _useState4[0],
90
- setName = _useState4[1];
91
- var _useState5 = (0, _react.useState)(0),
89
+ copyError = _useState4[0],
90
+ setCopyError = _useState4[1];
91
+ var _useState5 = (0, _react.useState)(apiKeyName),
92
92
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
93
- currentStep = _useState6[0],
94
- setCurrentStep = _useState6[1];
93
+ name = _useState6[0],
94
+ setName = _useState6[1];
95
+ var _useState7 = (0, _react.useState)(0),
96
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
97
+ currentStep = _useState8[0],
98
+ setCurrentStep = _useState8[1];
95
99
  var copyRef = (0, _react.useRef)();
96
100
  var apiKeyInputId = (0, _react.useRef)((0, _uuidv.default)());
97
101
  var nameInputId = (0, _react.useRef)((0, _uuidv.default)());
@@ -140,18 +144,17 @@ var APIKeyModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
140
144
  }
141
145
  return closeButtonText;
142
146
  };
143
- var getTitle = function getTitle() {
147
+ (0, _react.useEffect)(function () {
144
148
  if (editing && editSuccess) {
145
- return editSuccessTitle;
146
- }
147
- if (apiKeyLoaded) {
148
- return generateSuccessTitle;
149
- }
150
- if (hasSteps) {
151
- return customSteps[currentStep].title;
149
+ setTitle(editSuccessTitle);
150
+ } else if (apiKeyLoaded) {
151
+ setTitle(generateSuccessTitle);
152
+ } else if (hasSteps) {
153
+ setTitle(customSteps[currentStep].title);
154
+ } else {
155
+ setTitle(generateTitle);
152
156
  }
153
- return generateTitle;
154
- };
157
+ }, [apiKeyLoaded, editing, editSuccess, editSuccessTitle, hasSteps, generateSuccessTitle, generateTitle, currentStep, customSteps]);
155
158
  var setNameHandler = function setNameHandler(evt) {
156
159
  setName(evt.target.value);
157
160
  };
@@ -234,7 +237,7 @@ var APIKeyModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
234
237
  preventCloseOnClickOutside: true
235
238
  }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.ModalHeader, {
236
239
  className: "".concat(blockClass, "__header"),
237
- title: getTitle(),
240
+ title: title,
238
241
  label: modalLabel
239
242
  }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.ModalBody, {
240
243
  className: "".concat(blockClass, "__body-container")
@@ -252,7 +255,8 @@ var APIKeyModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
252
255
  labelText: apiKeyLabel,
253
256
  id: apiKeyInputId.current
254
257
  }), (editing || !apiKeyLoaded && nameRequired) && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Form, {
255
- onSubmit: submitHandler
258
+ onSubmit: submitHandler,
259
+ "aria-label": title
256
260
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TextInput, {
257
261
  helperText: nameHelperText,
258
262
  placeholder: namePlaceholder,
@@ -71,13 +71,12 @@ var ActionBar = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
71
71
  className: "".concat(blockClass, "__hidden-sizing-items"),
72
72
  "aria-hidden": true,
73
73
  ref: sizingRef
74
- }, /*#__PURE__*/_react.default.createElement("span", {
75
- "aria-hidden": false
76
- }, /*#__PURE__*/_react.default.createElement(_ActionBarOverflowItems.ActionBarOverflowItems, {
74
+ }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_ActionBarOverflowItems.ActionBarOverflowItems, {
77
75
  className: "".concat(blockClass, "__hidden-sizing-item"),
78
76
  overflowAriaLabel: "hidden sizing overflow items",
79
77
  overflowItems: [],
80
- key: "hidden-overflow-menu"
78
+ key: "hidden-overflow-menu",
79
+ tabIndex: -1
81
80
  }), actions.map(function (_ref2) {
82
81
  var key = _ref2.key,
83
82
  id = _ref2.id,
@@ -86,7 +85,8 @@ var ActionBar = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
86
85
  // ensure id is not duplicated
87
86
  "data-original-id": id,
88
87
  key: "hidden-item-".concat(key),
89
- className: "".concat(blockClass, "__hidden-sizing-item")
88
+ className: "".concat(blockClass, "__hidden-sizing-item"),
89
+ tabIndex: -1
90
90
  }));
91
91
  }))));
92
92
  }, [actions]);
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.Carousel = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _lodash = require("lodash");
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+ var _CarouselItem = require("./CarouselItem");
16
+ var _utils = require("./utils");
17
+ var _classnames = _interopRequireDefault(require("classnames"));
18
+ var _devtools = require("../../global/js/utils/devtools");
19
+ var _settings = require("../../settings");
20
+ var _excluded = ["children", "className", "disableArrowScroll", "fadedEdgeColor", "scrollableChange", "scrollTune"];
21
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+ // Carbon and package components we use.
24
+ /* TODO: @import(s) of carbon components and other package components. */
25
+
26
+ // The block part of our conventional BEM class names (blockClass__E--M).
27
+ var blockClass = "".concat(_settings.pkg.prefix, "--carousel");
28
+ var componentName = 'Carousel';
29
+
30
+ // Default values for props
31
+ var defaults = {
32
+ disableArrowScroll: false,
33
+ scrollTune: 0
34
+ };
35
+
36
+ /**
37
+ * The Carousel acts as a scaffold for other Novice to Pro content.
38
+ *
39
+ * This component is not intended for general use.
40
+ */
41
+ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
42
+ var children = _ref.children,
43
+ className = _ref.className,
44
+ _ref$disableArrowScro = _ref.disableArrowScroll,
45
+ disableArrowScroll = _ref$disableArrowScro === void 0 ? defaults.disableArrowScroll : _ref$disableArrowScro,
46
+ fadedEdgeColor = _ref.fadedEdgeColor,
47
+ scrollableChange = _ref.scrollableChange,
48
+ _ref$scrollTune = _ref.scrollTune,
49
+ scrollTune = _ref$scrollTune === void 0 ? defaults.scrollTune : _ref$scrollTune,
50
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
51
+ var carouselScrollPromiseDelay = 700;
52
+ var totalViews = _react.default.Children.count(children) || 1;
53
+ var leftFadedEdgeColor = (fadedEdgeColor === null || fadedEdgeColor === void 0 ? void 0 : fadedEdgeColor.left) || fadedEdgeColor;
54
+ var rightFadedEdgeColor = (fadedEdgeColor === null || fadedEdgeColor === void 0 ? void 0 : fadedEdgeColor.right) || fadedEdgeColor;
55
+ var _useState = (0, _react.useState)(0),
56
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
57
+ currentViewID = _useState2[0],
58
+ _setCurrentViewID = _useState2[1];
59
+ var currentViewIDRef = (0, _react.useRef)(currentViewID);
60
+ var scrollRef = (0, _react.useRef)();
61
+ var carouselRef = (0, _react.useRef)();
62
+ var isScrollable = (0, _utils.useIsOverflow)(scrollRef);
63
+ // Scrolling has no complete callback, nor does it return a promise.
64
+ // Since there is no way to tell when a scroll is finished we can set a timeout.
65
+ // Chrome appears to be the slowest implementation.
66
+ // Here is the spec: https://drafts.csswg.org/cssom-view/#concept-smooth-scroll
67
+ // found issue: https://github.com/w3c/csswg-drafts/issues/3744
68
+
69
+ var scrollNext = (0, _react.useCallback)(function () {
70
+ return scrollToView(currentViewID + 1);
71
+ }, [currentViewID, scrollToView]);
72
+ var scrollPrev = (0, _react.useCallback)(function () {
73
+ return scrollToView(currentViewID - 1);
74
+ }, [currentViewID, scrollToView]);
75
+ var scrollToView = (0, _react.useCallback)(function (viewID) {
76
+ if (!isScrolling) {
77
+ var _scrollRef$current;
78
+ var targetViewID = (0, _lodash.clamp)(viewID, 0, totalViews - 1);
79
+ setCurrentViewID(targetViewID);
80
+ setIsScrolling(true);
81
+ scrollRef.current.scrollLeft = ((_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.offsetWidth) * targetViewID + scrollTune;
82
+ return scrollPromise();
83
+ }
84
+ return new Promise(function (resolve) {
85
+ return resolveScroll(resolve);
86
+ });
87
+ }, [isScrolling, resolveScroll, scrollPromise, scrollTune, totalViews]);
88
+ var scrollPromise = (0, _react.useCallback)(function () {
89
+ return new Promise(function (resolve) {
90
+ setTimeout(function () {
91
+ return resolveScroll(resolve);
92
+ }, carouselScrollPromiseDelay);
93
+ });
94
+ }, [resolveScroll]);
95
+ var resolveScroll = (0, _react.useCallback)(function (resolve) {
96
+ setIsScrolling(false);
97
+ var percentage = scrollPosition() / maxScroll();
98
+ return resolve(parseFloat(percentage.toFixed(2)));
99
+ }, []);
100
+ var scrollPosition = function scrollPosition() {
101
+ var _scrollRef$current2;
102
+ return (_scrollRef$current2 = scrollRef.current) === null || _scrollRef$current2 === void 0 ? void 0 : _scrollRef$current2.scrollLeft;
103
+ };
104
+ var maxScroll = function maxScroll() {
105
+ var _scrollRef$current3, _scrollRef$current4;
106
+ return ((_scrollRef$current3 = scrollRef.current) === null || _scrollRef$current3 === void 0 ? void 0 : _scrollRef$current3.scrollWidth) - ((_scrollRef$current4 = scrollRef.current) === null || _scrollRef$current4 === void 0 ? void 0 : _scrollRef$current4.clientWidth);
107
+ };
108
+ var handleResize = (0, _lodash.debounce)(function () {
109
+ scrollToView(currentViewIDRef.current);
110
+ }, 200);
111
+ var setCurrentViewID = function setCurrentViewID(val) {
112
+ currentViewIDRef.current = val;
113
+ _setCurrentViewID(val);
114
+ };
115
+ var _useState3 = (0, _react.useState)(false),
116
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
117
+ isScrolling = _useState4[0],
118
+ setIsScrolling = _useState4[1];
119
+
120
+ // EFFECTS
121
+ (0, _utils.useWindowEvent)('resize', handleResize);
122
+ (0, _react.useEffect)(function () {
123
+ if (scrollableChange) {
124
+ scrollableChange(isScrollable);
125
+ }
126
+ }, [isScrollable, scrollableChange]);
127
+ (0, _react.useEffect)(function () {
128
+ function updateScrollPosition(event) {
129
+ // update the scroll position
130
+ event.stopPropagation();
131
+ event.preventDefault();
132
+ event.cancelBubble = false;
133
+ }
134
+ var scrollDiv = scrollRef.current;
135
+ if (scrollDiv) {
136
+ scrollDiv.addEventListener('wheel', updateScrollPosition, {
137
+ passive: false
138
+ });
139
+ return function () {
140
+ scrollDiv.removeEventListener('wheel', updateScrollPosition, {
141
+ passive: false
142
+ });
143
+ };
144
+ }
145
+ }, []);
146
+ (0, _react.useEffect)(function () {
147
+ function keypress(event) {
148
+ var key = event.key;
149
+ if ((key === 'ArrowLeft' || key === 'ArrowRight') && disableArrowScroll) {
150
+ event.stopPropagation();
151
+ event.preventDefault();
152
+ event.cancelBubble = false;
153
+ }
154
+ }
155
+ var outerDiv = carouselRef.current;
156
+ if (outerDiv) {
157
+ outerDiv.addEventListener('keydown', keypress);
158
+ return function () {
159
+ return outerDiv.removeEventListener('keydown', keypress);
160
+ };
161
+ }
162
+ }, [disableArrowScroll]);
163
+ (0, _react.useImperativeHandle)(ref, function () {
164
+ return {
165
+ scrollNext: scrollNext,
166
+ scrollPrev: scrollPrev,
167
+ scrollToView: scrollToView,
168
+ maxScroll: maxScroll
169
+ };
170
+ }, [scrollNext, scrollPrev, scrollToView]);
171
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
172
+ tabIndex: -1,
173
+ className: (0, _classnames.default)(blockClass, className),
174
+ ref: carouselRef,
175
+ role: "main"
176
+ }, (0, _devtools.getDevtoolsProps)(componentName)), /*#__PURE__*/_react.default.createElement("div", {
177
+ className: (0, _classnames.default)("".concat(blockClass, "__elements-container"))
178
+ }, /*#__PURE__*/_react.default.createElement("div", {
179
+ className: "".concat(blockClass, "__elements"),
180
+ ref: scrollRef
181
+ }, _react.default.Children.map(children, function (child) {
182
+ return /*#__PURE__*/_react.default.createElement(_CarouselItem.CarouselItem, null, child);
183
+ })), leftFadedEdgeColor && /*#__PURE__*/_react.default.createElement("div", {
184
+ className: "".concat(blockClass, "__elements-container--scrolled"),
185
+ style: {
186
+ background: "linear-gradient(90deg, ".concat(leftFadedEdgeColor, ", transparent)")
187
+ }
188
+ }), rightFadedEdgeColor && /*#__PURE__*/_react.default.createElement("div", {
189
+ className: "".concat(blockClass, "__elements-container--scroll-max"),
190
+ style: {
191
+ background: "linear-gradient(270deg, ".concat(rightFadedEdgeColor, ", transparent)")
192
+ }
193
+ })));
194
+ });
195
+
196
+ // The display name of the component, used by React. Note that displayName
197
+ // is used in preference to relying on function.name.
198
+ exports.Carousel = Carousel;
199
+ Carousel.displayName = componentName;
200
+
201
+ // The types and DocGen commentary for the component props,
202
+ // in alphabetical order (for consistency).
203
+ // See https://www.npmjs.com/package/prop-types#usage.
204
+ Carousel.propTypes = {
205
+ /**
206
+ * Provide the contents of the Carousel.
207
+ */
208
+ children: _propTypes.default.node.isRequired,
209
+ /**
210
+ * Provide an optional class to be applied to the containing node.
211
+ */
212
+ className: _propTypes.default.string,
213
+ /**
214
+ * Disables the ability of the Carousel to scroll
215
+ * use a keyboard's left and right arrow keys.
216
+ */
217
+ disableArrowScroll: _propTypes.default.bool,
218
+ /**
219
+ * Enables the edges of the component to have faded styling.
220
+ *
221
+ * Pass a single string to specify the same color for left and right.
222
+ *
223
+ * Pass `{ left: $color1, right: $color2 }` to specify different colors.
224
+ */
225
+ fadedEdgeColor: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({
226
+ left: _propTypes.default.string,
227
+ right: _propTypes.default.string
228
+ })]),
229
+ /**
230
+ * Determines how much of the Carousel moves into view on rotation.
231
+ */
232
+ scrollTune: _propTypes.default.number,
233
+ /**
234
+ * An optional callback function that returns `true`
235
+ * when the carousel has completed scrolling a single item.
236
+ */
237
+ scrollableChange: _propTypes.default.func
238
+ };
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.CarouselItem = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+ var _utils = require("./utils");
16
+ var _devtools = require("../../global/js/utils/devtools");
17
+ var _settings = require("../../settings");
18
+ var _excluded = ["children", "className"];
19
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+ // Carbon and package components we use.
22
+ /* TODO: @import(s) of carbon components and other package components. */
23
+
24
+ // The block part of our conventional BEM class names (blockClass__E--M).
25
+ var blockClass = "".concat(_settings.pkg.prefix, "--carousel__item");
26
+ var componentName = 'CarouselItem';
27
+
28
+ /**
29
+ * TODO: A description of the component.
30
+ */
31
+ var CarouselItem = function CarouselItem(_ref) {
32
+ var children = _ref.children,
33
+ className = _ref.className,
34
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
35
+ var itemRef = (0, _react.useRef)();
36
+ var isInView = (0, _utils.useIntersection)(itemRef, 0.85);
37
+ (0, _react.useEffect)(function () {
38
+ var _itemRef$current;
39
+ var matches = (_itemRef$current = itemRef.current) === null || _itemRef$current === void 0 ? void 0 : _itemRef$current.querySelectorAll('a, button, [role="button"], [tabindex]');
40
+ if (matches) {
41
+ var ti = isInView ? 0 : -1;
42
+ (0, _toConsumableArray2.default)(matches).forEach(function (match) {
43
+ match.tabIndex = ti;
44
+ });
45
+ }
46
+ }, [isInView]);
47
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
48
+ className: (0, _classnames.default)(blockClass, className),
49
+ ref: itemRef
50
+ }, (0, _devtools.getDevtoolsProps)(componentName)), children);
51
+ };
52
+
53
+ // The types and DocGen commentary for the component props,
54
+ // in alphabetical order (for consistency).
55
+ // See https://www.npmjs.com/package/prop-types#usage.
56
+ exports.CarouselItem = CarouselItem;
57
+ CarouselItem.propTypes = {
58
+ /**
59
+ * Provide the contents of the CarouselItem.
60
+ */
61
+ children: _propTypes.default.node.isRequired,
62
+ /**
63
+ * Provide an optional class to be applied to the containing node.
64
+ */
65
+ className: _propTypes.default.string
66
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Carousel", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Carousel.Carousel;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "CarouselItem", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _CarouselItem.CarouselItem;
16
+ }
17
+ });
18
+ var _Carousel = require("./Carousel");
19
+ var _CarouselItem = require("./CarouselItem");
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useWindowEvent = exports.useIsOverflow = exports.useIntersection = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = require("react");
10
+ /**
11
+ * Copyright IBM Corp. 2023, 2023
12
+ *
13
+ * This source code is licensed under the Apache-2.0 license found in the
14
+ * LICENSE file in the root directory of this source tree.
15
+ */
16
+
17
+ var useIntersection = function useIntersection(element, threshold) {
18
+ var _useState = (0, _react.useState)(false),
19
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
20
+ isVisible = _useState2[0],
21
+ setState = _useState2[1];
22
+ (0, _react.useEffect)(function () {
23
+ var el = element.current;
24
+ var observer = new IntersectionObserver(function (_ref) {
25
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 1),
26
+ entry = _ref2[0];
27
+ setState(entry.isIntersecting);
28
+ }, {
29
+ threshold: threshold
30
+ });
31
+ el && observer.observe(el);
32
+ return function () {
33
+ return observer.unobserve(el);
34
+ };
35
+ }, [element, threshold]);
36
+ return isVisible;
37
+ };
38
+ exports.useIntersection = useIntersection;
39
+ var useIsOverflow = function useIsOverflow(ref) {
40
+ var _useState3 = (0, _react.useState)(),
41
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
42
+ isScrollable = _useState4[0],
43
+ setIsScrollable = _useState4[1];
44
+ var _useState5 = (0, _react.useState)(),
45
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
46
+ mutationObserver = _useState6[0],
47
+ setMutationObserver = _useState6[1];
48
+ var _useState7 = (0, _react.useState)(),
49
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
50
+ resizeObserver = _useState8[0],
51
+ setResizeObserver = _useState8[1];
52
+ var checkOverflow = (0, _react.useCallback)(function () {
53
+ if (!ref.current) {
54
+ return;
55
+ }
56
+ var hasOverflow = ref.current.scrollWidth > ref.current.clientWidth;
57
+ setIsScrollable(hasOverflow);
58
+ }, [ref]);
59
+ (0, _react.useEffect)(function () {
60
+ if (!mutationObserver) {
61
+ return;
62
+ }
63
+ return function () {
64
+ if (mutationObserver) {
65
+ mutationObserver.disconnect();
66
+ }
67
+ if (resizeObserver) {
68
+ resizeObserver.disconnect();
69
+ }
70
+ };
71
+ });
72
+ (0, _react.useLayoutEffect)(function () {
73
+ var current = ref.current;
74
+ if (current) {
75
+ if ('ResizeObserver' in window && !resizeObserver) {
76
+ setResizeObserver(new ResizeObserver(checkOverflow).observe(current));
77
+ }
78
+ if ('MutationObserver' in window && !mutationObserver) {
79
+ setMutationObserver(new MutationObserver(checkOverflow).observe(current, {
80
+ attributes: false,
81
+ childList: true,
82
+ subtree: false
83
+ }));
84
+ }
85
+ checkOverflow();
86
+ }
87
+ }, [ref, checkOverflow, mutationObserver, resizeObserver]);
88
+ return isScrollable;
89
+ };
90
+ exports.useIsOverflow = useIsOverflow;
91
+ var useWindowEvent = function useWindowEvent(eventName, callback) {
92
+ var savedCallback = (0, _react.useRef)(null);
93
+ (0, _react.useEffect)(function () {
94
+ savedCallback.current = callback;
95
+ });
96
+ (0, _react.useEffect)(function () {
97
+ function handler(event) {
98
+ if (savedCallback.current) {
99
+ savedCallback.current(event);
100
+ }
101
+ }
102
+ window.addEventListener(eventName, handler);
103
+ return function () {
104
+ window.removeEventListener(eventName, handler);
105
+ };
106
+ }, [eventName]);
107
+ };
108
+ exports.useWindowEvent = useWindowEvent;
@@ -19,7 +19,7 @@ var _CreateInfluencer = require("../CreateInfluencer");
19
19
  var _ActionSet = require("../ActionSet");
20
20
  var _hooks = require("../../global/js/hooks");
21
21
  var _lastIndexInArray = require("../../global/js/utils/lastIndexInArray");
22
- var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "modalDangerButtonText", "modalDescription", "modalSecondaryButtonText", "modalTitle", "nextButtonText", "onClose", "onRequestSubmit", "firstFocusElement", "submitButtonText"];
22
+ var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "modalDangerButtonText", "modalDescription", "modalSecondaryButtonText", "modalTitle", "nextButtonText", "onClose", "onRequestSubmit", "firstFocusElement", "submitButtonText", "title"];
23
23
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
25
  var blockClass = "".concat(_settings.pkg.prefix, "--create-full-page");
@@ -49,6 +49,7 @@ var CreateFullPage = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
49
49
  onRequestSubmit = _ref.onRequestSubmit,
50
50
  firstFocusElement = _ref.firstFocusElement,
51
51
  submitButtonText = _ref.submitButtonText,
52
+ title = _ref.title,
52
53
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
53
54
  var _useState = (0, _react.useState)([]),
54
55
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -159,7 +160,8 @@ var CreateFullPage = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
159
160
  }, /*#__PURE__*/_react.default.createElement("div", {
160
161
  className: "".concat(blockClass, "__content")
161
162
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Grid, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Form, {
162
- className: "".concat(blockClass, "__form")
163
+ className: "".concat(blockClass, "__form"),
164
+ "aria-label": title
163
165
  }, /*#__PURE__*/_react.default.createElement(StepsContext.Provider, {
164
166
  value: {
165
167
  currentStep: currentStep,
@@ -63,7 +63,8 @@ var CreateModal = /*#__PURE__*/_react.default.forwardRef(function (_ref2, ref) {
63
63
  }, description && /*#__PURE__*/_react.default.createElement("p", {
64
64
  className: "".concat(blockClass, "__description")
65
65
  }, description), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Form, {
66
- className: "".concat(blockClass, "__form")
66
+ className: "".concat(blockClass, "__form"),
67
+ "aria-label": title
67
68
  }, children)), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.ModalFooter, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
68
69
  type: "button",
69
70
  kind: "secondary",
@@ -15,6 +15,7 @@ var _settings = require("../../settings");
15
15
  var _devtools = require("../../global/js/utils/devtools");
16
16
  var _carbonComponentsReact = require("carbon-components-react");
17
17
  var _SidePanel = require("../SidePanel");
18
+ var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
18
19
  var _excluded = ["className", "children", "disableSubmit", "formTitle", "formDescription", "onRequestClose", "onRequestSubmit", "open", "primaryButtonText", "secondaryButtonText", "selectorPageContent", "selectorPrimaryFocus", "subtitle", "title"];
19
20
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
21
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -57,6 +58,7 @@ var CreateSidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
57
58
  onClick: onRequestClose,
58
59
  kind: 'secondary'
59
60
  }];
61
+ var formTitleId = (0, _uuidv.default)();
60
62
  return selectorPageContent && /*#__PURE__*/_react.default.createElement(_SidePanel.SidePanel, (0, _extends2.default)({}, rest, _objectSpread({
61
63
  open: open,
62
64
  ref: ref,
@@ -73,11 +75,13 @@ var CreateSidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
73
75
  size: "md",
74
76
  actions: actions
75
77
  }), /*#__PURE__*/_react.default.createElement("h3", {
76
- className: "".concat(blockClass, "__form-title-text ").concat(blockClass, "__content-text")
78
+ className: "".concat(blockClass, "__form-title-text ").concat(blockClass, "__content-text"),
79
+ id: formTitleId
77
80
  }, formTitle), /*#__PURE__*/_react.default.createElement("p", {
78
81
  className: "".concat(blockClass, "__form-description-text ").concat(blockClass, "__content-text")
79
82
  }, formDescription), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Form, {
80
- className: "".concat(blockClass, "__form")
83
+ className: "".concat(blockClass, "__form"),
84
+ "aria-labelledby": formTitleId
81
85
  }, children));
82
86
  });
83
87
  exports.CreateSidePanel = CreateSidePanel;
@@ -201,7 +201,9 @@ var CreateTearsheet = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
201
201
  className: "".concat(blockClass, "__content"),
202
202
  onBlur: handleBlur,
203
203
  ref: contentRef
204
- }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Grid, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Form, null, /*#__PURE__*/_react.default.createElement(StepsContext.Provider, {
204
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Grid, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Form, {
205
+ "aria-label": title
206
+ }, /*#__PURE__*/_react.default.createElement(StepsContext.Provider, {
205
207
  value: {
206
208
  currentStep: currentStep,
207
209
  setIsDisabled: setIsDisabled,