@carbon/ibm-products 1.54.1 → 1.55.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. package/css/index-full-carbon.css +1309 -110
  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 +1304 -110
  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 +1312 -113
  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/useStickyColumn.js +10 -3
  33. package/es/components/Datagrid/utils/DatagridActions.js +6 -6
  34. package/es/components/Datagrid/utils/getArgTypes.js +4 -0
  35. package/es/components/EditSidePanel/EditSidePanel.js +7 -3
  36. package/es/components/FilterSummary/FilterSummary.js +7 -3
  37. package/es/components/Guidebanner/Guidebanner.js +229 -0
  38. package/es/components/Guidebanner/GuidebannerElement.js +71 -0
  39. package/es/components/Guidebanner/GuidebannerElementButton.js +76 -0
  40. package/es/components/Guidebanner/GuidebannerElementLink.js +56 -0
  41. package/es/components/Guidebanner/index.js +11 -0
  42. package/es/components/InlineTip/InlineTip.js +228 -0
  43. package/es/components/InlineTip/InlineTipButton.js +89 -0
  44. package/es/components/InlineTip/InlineTipLink.js +89 -0
  45. package/es/components/InlineTip/index.js +10 -0
  46. package/es/components/InlineTip/utils.js +36 -0
  47. package/es/components/SteppedAnimatedMedia/SteppedAnimatedMedia.js +164 -0
  48. package/es/components/SteppedAnimatedMedia/assets/index.js +4 -0
  49. package/es/components/SteppedAnimatedMedia/index.js +8 -0
  50. package/es/components/Tearsheet/TearsheetShell.js +2 -1
  51. package/es/components/index.js +4 -2
  52. package/es/global/js/hooks/useResizeObserver.js +1 -1
  53. package/es/global/js/package-settings.js +2 -0
  54. package/lib/components/APIKeyModal/APIKeyModal.js +25 -21
  55. package/lib/components/ActionBar/ActionBar.js +5 -5
  56. package/lib/components/Carousel/Carousel.js +238 -0
  57. package/lib/components/Carousel/CarouselItem.js +66 -0
  58. package/lib/components/Carousel/index.js +19 -0
  59. package/lib/components/Carousel/utils.js +108 -0
  60. package/lib/components/CreateFullPage/CreateFullPage.js +4 -2
  61. package/lib/components/CreateModal/CreateModal.js +2 -1
  62. package/lib/components/CreateSidePanel/CreateSidePanel.js +6 -2
  63. package/lib/components/CreateTearsheet/CreateTearsheet.js +3 -1
  64. package/lib/components/CreateTearsheetNarrow/CreateTearsheetNarrow.js +6 -2
  65. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +1 -1
  66. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +3 -2
  67. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +8 -1
  68. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilterContext.js +20 -0
  69. package/lib/components/Datagrid/index.js +8 -1
  70. package/lib/components/Datagrid/useActionsColumn.js +13 -7
  71. package/lib/components/Datagrid/useOnRowClick.js +20 -4
  72. package/lib/components/Datagrid/useSortableColumns.js +27 -3
  73. package/lib/components/Datagrid/useStickyColumn.js +10 -3
  74. package/lib/components/Datagrid/utils/DatagridActions.js +6 -6
  75. package/lib/components/Datagrid/utils/getArgTypes.js +4 -0
  76. package/lib/components/EditSidePanel/EditSidePanel.js +7 -3
  77. package/lib/components/FilterSummary/FilterSummary.js +7 -3
  78. package/lib/components/Guidebanner/Guidebanner.js +229 -0
  79. package/lib/components/Guidebanner/GuidebannerElement.js +67 -0
  80. package/lib/components/Guidebanner/GuidebannerElementButton.js +71 -0
  81. package/lib/components/Guidebanner/GuidebannerElementLink.js +52 -0
  82. package/lib/components/Guidebanner/index.js +33 -0
  83. package/lib/components/InlineTip/InlineTip.js +228 -0
  84. package/lib/components/InlineTip/InlineTipButton.js +86 -0
  85. package/lib/components/InlineTip/InlineTipLink.js +86 -0
  86. package/lib/components/InlineTip/index.js +26 -0
  87. package/lib/components/InlineTip/utils.js +44 -0
  88. package/lib/components/SteppedAnimatedMedia/SteppedAnimatedMedia.js +165 -0
  89. package/lib/components/SteppedAnimatedMedia/assets/index.js +12 -0
  90. package/lib/components/SteppedAnimatedMedia/index.js +12 -0
  91. package/lib/components/Tearsheet/TearsheetShell.js +2 -1
  92. package/lib/components/index.js +21 -1
  93. package/lib/global/js/hooks/useResizeObserver.js +1 -1
  94. package/lib/global/js/package-settings.js +2 -0
  95. package/package.json +5 -5
  96. package/scss/components/Carousel/_carousel.scss +80 -0
  97. package/scss/components/Carousel/_index.scss +8 -0
  98. package/scss/components/Carousel/_storybook-styles.scss +10 -0
  99. package/scss/components/Datagrid/_storybook-styles.scss +13 -0
  100. package/scss/components/Datagrid/styles/_datagrid.scss +1 -6
  101. package/scss/components/Guidebanner/_guidebanner.scss +257 -0
  102. package/scss/components/Guidebanner/_index.scss +8 -0
  103. package/scss/components/Guidebanner/_storybook-styles.scss +20 -0
  104. package/scss/components/InlineTip/_index.scss +8 -0
  105. package/scss/components/InlineTip/_inline-tip.scss +231 -0
  106. package/scss/components/InlineTip/_storybook-styles.scss +21 -0
  107. package/scss/components/SteppedAnimatedMedia/_index.scss +8 -0
  108. package/scss/components/SteppedAnimatedMedia/_stepped-animated-media.scss +34 -0
  109. package/scss/components/SteppedAnimatedMedia/_storybook-styles.scss +12 -0
  110. 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,