@carbon/ibm-products 2.38.0 → 2.40.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. package/css/index-full-carbon.css +236 -3
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +5 -0
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +236 -3
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +1 -1
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +236 -3
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +1 -1
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/AddSelect/AddSelect.d.ts +44 -2
  18. package/es/components/AddSelect/AddSelect.js +8 -4
  19. package/es/components/AddSelect/AddSelectBody.d.ts +44 -2
  20. package/es/components/AddSelect/AddSelectBody.js +10 -12
  21. package/es/components/AddSelect/AddSelectSort.d.ts +16 -17
  22. package/es/components/AddSelect/AddSelectSort.js +5 -5
  23. package/es/components/AddSelect/types/index.d.ts +44 -0
  24. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.d.ts +5 -1
  25. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +12 -6
  26. package/es/components/Card/Card.js +50 -9
  27. package/es/components/Card/CardFooter.d.ts +5 -1
  28. package/es/components/Card/CardFooter.js +11 -1
  29. package/es/components/Carousel/Carousel.d.ts +6 -2
  30. package/es/components/Checklist/Checklist.d.ts +100 -2
  31. package/es/components/Checklist/Checklist.js +9 -5
  32. package/es/components/Checklist/Checklist.types.d.ts +19 -0
  33. package/es/components/Checklist/Checklist.types.js +22 -0
  34. package/es/components/Checklist/ChecklistChart.d.ts +5 -1
  35. package/es/components/Checklist/ChecklistChart.js +9 -4
  36. package/es/components/Checklist/ChecklistIcon.d.ts +5 -1
  37. package/es/components/Checklist/ChecklistIcon.js +9 -4
  38. package/es/components/CoachmarkButton/CoachmarkButton.d.ts +19 -2
  39. package/es/components/CoachmarkOverlayElements/CoachmarkOverlayElements.d.ts +46 -2
  40. package/es/components/CoachmarkOverlayElements/CoachmarkOverlayElements.js +5 -4
  41. package/es/components/CreateInfluencer/CreateInfluencer.d.ts +55 -17
  42. package/es/components/CreateInfluencer/CreateInfluencer.js +1 -1
  43. package/es/components/CreateTearsheet/CreateTearsheetStep.d.ts +95 -2
  44. package/es/components/CreateTearsheet/CreateTearsheetStep.js +7 -5
  45. package/es/components/DataSpreadsheet/DataSpreadsheet.d.ts +67 -2
  46. package/es/components/DataSpreadsheet/DataSpreadsheet.js +50 -28
  47. package/es/components/DataSpreadsheet/DataSpreadsheetBody.d.ts +139 -2
  48. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +46 -31
  49. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.d.ts +89 -2
  50. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +39 -25
  51. package/es/components/DataSpreadsheet/types/index.d.ts +30 -0
  52. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +5 -1
  53. package/es/components/ExpressiveCard/ExpressiveCard.d.ts +2 -1
  54. package/es/components/GetStartedCard/GetStartedCard.d.ts +5 -0
  55. package/es/components/GetStartedCard/GetStartedCard.js +82 -0
  56. package/es/components/GetStartedCard/index.d.ts +1 -0
  57. package/es/components/Guidebanner/Guidebanner.d.ts +62 -2
  58. package/es/components/Guidebanner/Guidebanner.js +6 -5
  59. package/es/components/Guidebanner/GuidebannerElement.d.ts +30 -17
  60. package/es/components/Guidebanner/GuidebannerElement.js +4 -4
  61. package/es/components/Guidebanner/GuidebannerElementButton.d.ts +29 -15
  62. package/es/components/Guidebanner/GuidebannerElementButton.js +10 -4
  63. package/es/components/Guidebanner/GuidebannerElementLink.d.ts +20 -13
  64. package/es/components/Guidebanner/GuidebannerElementLink.js +3 -3
  65. package/es/components/InterstitialScreen/InterstitialScreen.js +3 -1
  66. package/es/components/MultiAddSelect/MultiAddSelect.d.ts +134 -2
  67. package/es/components/MultiAddSelect/MultiAddSelect.js +2 -1
  68. package/es/components/NotificationsPanel/NotificationsPanel.d.ts +162 -1
  69. package/es/components/NotificationsPanel/NotificationsPanel.js +10 -11
  70. package/es/components/PageHeader/PageHeader.d.ts +298 -5
  71. package/es/components/PageHeader/PageHeader.js +98 -47
  72. package/es/components/PageHeader/PageHeaderUtils.d.ts +1 -1
  73. package/es/components/PageHeader/PageHeaderUtils.js +4 -1
  74. package/es/components/SidePanel/SidePanel.d.ts +6 -2
  75. package/es/components/SidePanel/SidePanel.js +18 -3
  76. package/es/components/SidePanel/constants.d.ts +1 -0
  77. package/es/components/SidePanel/constants.js +1 -0
  78. package/es/components/SingleAddSelect/SingleAddSelect.d.ts +69 -2
  79. package/es/components/SingleAddSelect/SingleAddSelect.js +2 -1
  80. package/es/components/TagOverflow/TagOverflow.d.ts +5 -0
  81. package/es/components/TagOverflow/TagOverflow.js +153 -29
  82. package/es/components/TagOverflow/TagOverflowModal.d.ts +29 -0
  83. package/es/components/TagOverflow/TagOverflowModal.js +112 -0
  84. package/es/components/TagOverflow/TagOverflowPopover.d.ts +2 -0
  85. package/es/components/TagOverflow/TagOverflowPopover.js +135 -0
  86. package/es/components/Tearsheet/Tearsheet.d.ts +132 -6
  87. package/es/components/Tearsheet/Tearsheet.js +25 -13
  88. package/es/components/Tearsheet/TearsheetShell.d.ts +5 -1
  89. package/es/components/Tearsheet/TearsheetShell.js +26 -4
  90. package/es/components/WebTerminal/WebTerminal.d.ts +4 -0
  91. package/es/components/WebTerminal/WebTerminal.js +11 -3
  92. package/es/components/index.d.ts +1 -0
  93. package/es/global/js/hooks/useFocus.d.ts +3 -1
  94. package/es/global/js/hooks/useFocus.js +6 -3
  95. package/es/global/js/hooks/useRetrieveStepData.d.ts +1 -1
  96. package/es/global/js/hooks/useRetrieveStepData.js +1 -1
  97. package/es/global/js/package-settings.d.ts +1 -0
  98. package/es/global/js/package-settings.js +1 -0
  99. package/es/index.js +1 -0
  100. package/es/settings.d.ts +1 -0
  101. package/lib/components/AddSelect/AddSelect.d.ts +44 -2
  102. package/lib/components/AddSelect/AddSelect.js +7 -3
  103. package/lib/components/AddSelect/AddSelectBody.d.ts +44 -2
  104. package/lib/components/AddSelect/AddSelectBody.js +10 -12
  105. package/lib/components/AddSelect/AddSelectSort.d.ts +16 -17
  106. package/lib/components/AddSelect/AddSelectSort.js +5 -5
  107. package/lib/components/AddSelect/types/index.d.ts +44 -0
  108. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.d.ts +5 -1
  109. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +12 -6
  110. package/lib/components/Card/Card.js +50 -9
  111. package/lib/components/Card/CardFooter.d.ts +5 -1
  112. package/lib/components/Card/CardFooter.js +11 -1
  113. package/lib/components/Carousel/Carousel.d.ts +6 -2
  114. package/lib/components/Checklist/Checklist.d.ts +100 -2
  115. package/lib/components/Checklist/Checklist.js +9 -5
  116. package/lib/components/Checklist/Checklist.types.d.ts +19 -0
  117. package/lib/components/Checklist/Checklist.types.js +27 -0
  118. package/lib/components/Checklist/ChecklistChart.d.ts +5 -1
  119. package/lib/components/Checklist/ChecklistChart.js +14 -9
  120. package/lib/components/Checklist/ChecklistIcon.d.ts +5 -1
  121. package/lib/components/Checklist/ChecklistIcon.js +9 -4
  122. package/lib/components/CoachmarkButton/CoachmarkButton.d.ts +19 -2
  123. package/lib/components/CoachmarkOverlayElements/CoachmarkOverlayElements.d.ts +46 -2
  124. package/lib/components/CoachmarkOverlayElements/CoachmarkOverlayElements.js +5 -4
  125. package/lib/components/CreateInfluencer/CreateInfluencer.d.ts +55 -17
  126. package/lib/components/CreateInfluencer/CreateInfluencer.js +1 -1
  127. package/lib/components/CreateTearsheet/CreateTearsheetStep.d.ts +95 -2
  128. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +7 -5
  129. package/lib/components/DataSpreadsheet/DataSpreadsheet.d.ts +67 -2
  130. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +50 -28
  131. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.d.ts +139 -2
  132. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +46 -31
  133. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.d.ts +89 -2
  134. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +39 -25
  135. package/lib/components/DataSpreadsheet/types/index.d.ts +30 -0
  136. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +5 -1
  137. package/lib/components/ExpressiveCard/ExpressiveCard.d.ts +2 -1
  138. package/lib/components/GetStartedCard/GetStartedCard.d.ts +5 -0
  139. package/lib/components/GetStartedCard/GetStartedCard.js +88 -0
  140. package/lib/components/GetStartedCard/index.d.ts +1 -0
  141. package/lib/components/Guidebanner/Guidebanner.d.ts +62 -2
  142. package/lib/components/Guidebanner/Guidebanner.js +6 -5
  143. package/lib/components/Guidebanner/GuidebannerElement.d.ts +30 -17
  144. package/lib/components/Guidebanner/GuidebannerElement.js +4 -4
  145. package/lib/components/Guidebanner/GuidebannerElementButton.d.ts +29 -15
  146. package/lib/components/Guidebanner/GuidebannerElementButton.js +10 -4
  147. package/lib/components/Guidebanner/GuidebannerElementLink.d.ts +20 -13
  148. package/lib/components/Guidebanner/GuidebannerElementLink.js +3 -3
  149. package/lib/components/InterstitialScreen/InterstitialScreen.js +3 -1
  150. package/lib/components/MultiAddSelect/MultiAddSelect.d.ts +134 -2
  151. package/lib/components/MultiAddSelect/MultiAddSelect.js +2 -1
  152. package/lib/components/NotificationsPanel/NotificationsPanel.d.ts +162 -1
  153. package/lib/components/NotificationsPanel/NotificationsPanel.js +10 -11
  154. package/lib/components/PageHeader/PageHeader.d.ts +298 -5
  155. package/lib/components/PageHeader/PageHeader.js +98 -47
  156. package/lib/components/PageHeader/PageHeaderUtils.d.ts +1 -1
  157. package/lib/components/PageHeader/PageHeaderUtils.js +4 -1
  158. package/lib/components/SidePanel/SidePanel.d.ts +6 -2
  159. package/lib/components/SidePanel/SidePanel.js +18 -3
  160. package/lib/components/SidePanel/constants.d.ts +1 -0
  161. package/lib/components/SidePanel/constants.js +1 -0
  162. package/lib/components/SingleAddSelect/SingleAddSelect.d.ts +69 -2
  163. package/lib/components/SingleAddSelect/SingleAddSelect.js +2 -1
  164. package/lib/components/TagOverflow/TagOverflow.d.ts +5 -0
  165. package/lib/components/TagOverflow/TagOverflow.js +154 -28
  166. package/lib/components/TagOverflow/TagOverflowModal.d.ts +29 -0
  167. package/lib/components/TagOverflow/TagOverflowModal.js +121 -0
  168. package/lib/components/TagOverflow/TagOverflowPopover.d.ts +2 -0
  169. package/lib/components/TagOverflow/TagOverflowPopover.js +144 -0
  170. package/lib/components/Tearsheet/Tearsheet.d.ts +132 -6
  171. package/lib/components/Tearsheet/Tearsheet.js +25 -13
  172. package/lib/components/Tearsheet/TearsheetShell.d.ts +5 -1
  173. package/lib/components/Tearsheet/TearsheetShell.js +26 -4
  174. package/lib/components/WebTerminal/WebTerminal.d.ts +4 -0
  175. package/lib/components/WebTerminal/WebTerminal.js +11 -3
  176. package/lib/components/index.d.ts +1 -0
  177. package/lib/global/js/hooks/useFocus.d.ts +3 -1
  178. package/lib/global/js/hooks/useFocus.js +6 -3
  179. package/lib/global/js/hooks/useRetrieveStepData.d.ts +1 -1
  180. package/lib/global/js/hooks/useRetrieveStepData.js +1 -1
  181. package/lib/global/js/package-settings.d.ts +1 -0
  182. package/lib/global/js/package-settings.js +1 -0
  183. package/lib/index.js +5 -0
  184. package/lib/settings.d.ts +1 -0
  185. package/package.json +3 -3
  186. package/scss/components/CoachmarkStack/_coachmark-stack.scss +4 -2
  187. package/scss/components/GetStartedCard/_carbon-imports.scss +9 -0
  188. package/scss/components/GetStartedCard/_get-started-card.scss +135 -0
  189. package/scss/components/GetStartedCard/_index-with-carbon.scss +9 -0
  190. package/scss/components/GetStartedCard/_index.scss +8 -0
  191. package/scss/components/SidePanel/_side-panel-variables.scss +1 -0
  192. package/scss/components/StringFormatter/_string-formatter.scss +1 -1
  193. package/scss/components/TagOverflow/_tag-overflow.scss +157 -0
  194. package/scss/components/_index-with-carbon.scss +1 -0
  195. package/scss/components/_index.scss +1 -0
  196. package/telemetry.yml +25 -16
@@ -81,7 +81,7 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
81
81
  _useState2 = _slicedToArray(_useState, 2),
82
82
  metrics = _useState2[0],
83
83
  setMetrics = _useState2[1];
84
- var _useState3 = useState(_objectSpread2({}, rest.style)),
84
+ var _useState3 = useState(_objectSpread2({}, rest === null || rest === void 0 ? void 0 : rest.style)),
85
85
  _useState4 = _slicedToArray(_useState3, 2),
86
86
  pageHeaderStyles = _useState4[0],
87
87
  setPageHeaderStyles = _useState4[1];
@@ -89,16 +89,30 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
89
89
  // refs
90
90
  var localHeaderRef = useRef(null);
91
91
  var headerRef = ref || localHeaderRef;
92
- var sizingContainerRef = useRef();
92
+ var sizingContainerRef = useRef(null);
93
93
  var offsetTopMeasuringRef = useRef(null);
94
94
 
95
95
  // state based on props only
96
96
  var hasActionBar = actionBarItems && actionBarItems.length > 0;
97
97
  var hasBreadcrumbRow = !!breadcrumbs || !!actionBarItems;
98
+ if (tags && (tags === null || tags === void 0 ? void 0 : tags.length) > 10) {
99
+ if (!allTagsModalSearchLabel) {
100
+ throw new Error("allTagsModalSearchLabel' is required.");
101
+ }
102
+ if (!allTagsModalSearchPlaceholderText) {
103
+ throw new Error("'allTagsModalSearchPlaceholderText' is required.");
104
+ }
105
+ if (!allTagsModalTitle) {
106
+ throw new Error("'allTagsModalTitle' is required.");
107
+ }
108
+ if (!showAllTagsLabel) {
109
+ throw new Error("'showAllTagsLabel' is required.");
110
+ }
111
+ }
98
112
 
99
113
  // utility functions
100
114
  var checkUpdateVerticalSpace = function checkUpdateVerticalSpace() {
101
- return utilCheckUpdateVerticalSpace(headerRef, offsetTopMeasuringRef, navigation, enableBreadcrumbScroll, hasActionBar, widthIsNarrow, setMetrics);
115
+ return utilCheckUpdateVerticalSpace(headerRef, offsetTopMeasuringRef, navigation, enableBreadcrumbScroll, hasActionBar || false, widthIsNarrow, setMetrics);
102
116
  };
103
117
 
104
118
  // NOTE: The buffer is used to add space between the bottom of the header and the last content
@@ -189,15 +203,16 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
189
203
  checkUpdateVerticalSpace();
190
204
  };
191
205
  var handleCollapseToggle = function handleCollapseToggle() {
192
- utilSetCollapsed(!fullyCollapsed, headerRef, metrics.headerOffset, metrics.headerTopValue);
206
+ utilSetCollapsed(!fullyCollapsed, headerRef, metrics === null || metrics === void 0 ? void 0 : metrics.headerOffset, metrics === null || metrics === void 0 ? void 0 : metrics.headerTopValue);
193
207
  };
194
208
 
195
209
  // use effects
196
210
  useEffect(function () {
197
211
  /* istanbul ignore else */
198
212
  if (pageActions !== null && pageActions !== void 0 && pageActions.content) {
199
- var minWidth = pageActions.minWidth,
200
- maxWidth = pageActions.maxWidth;
213
+ var _ref5 = pageActions,
214
+ minWidth = _ref5.minWidth,
215
+ maxWidth = _ref5.maxWidth;
201
216
  handlePageActionWidthChange({
202
217
  minWidth: minWidth,
203
218
  maxWidth: maxWidth
@@ -207,7 +222,9 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
207
222
  useEffect(function () {
208
223
  // Determine the location of the pageAction buttons
209
224
  /* istanbul ignore next */
210
- setPageActionsInBreadcrumbRow(collapseTitle || hasActionBar && scrollYValue > metrics.titleRowSpaceAbove || widthIsNarrow && scrollYValue > metrics.pageActionsSpaceAbove);
225
+ if (metrics !== null && metrics !== void 0 && metrics.titleRowSpaceAbove && metrics !== null && metrics !== void 0 && metrics.pageActionsSpaceAbove) {
226
+ setPageActionsInBreadcrumbRow(collapseTitle || hasActionBar && scrollYValue > (metrics === null || metrics === void 0 ? void 0 : metrics.titleRowSpaceAbove) || widthIsNarrow && scrollYValue > (metrics === null || metrics === void 0 ? void 0 : metrics.pageActionsSpaceAbove));
227
+ }
211
228
  }, [hasActionBar, metrics.breadcrumbRowSpaceBelow, metrics.titleRowSpaceAbove, metrics.pageActionsSpaceAbove, collapseTitle, scrollYValue, widthIsNarrow]);
212
229
  useEffect(function () {
213
230
  // Assesses the size of the action bar and page action area and their required
@@ -240,15 +257,15 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
240
257
  // Updates custom CSS props used to manage scroll behavior
241
258
  /* istanbul ignore next */
242
259
  setPageHeaderStyles(function (prev) {
243
- return _objectSpread2(_objectSpread2({}, prev), {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "--".concat(blockClass, "--height-px"), "".concat(metrics.headerHeight, "px")), "--".concat(blockClass, "--width-px"), "".concat(metrics.headerWidth, "px")), "--".concat(blockClass, "--header-top"), "".concat(metrics.headerTopValue + metrics.headerOffset, "px")), "--".concat(blockClass, "--breadcrumb-title-visibility"), scrollYValue > 0 ? 'visible' : 'hidden'), "--".concat(blockClass, "--scroll"), "".concat(scrollYValue)), "--".concat(blockClass, "--breadcrumb-title-top"), "".concat(Math.max(0, metrics.breadcrumbTitleHeight + metrics.titleRowSpaceAbove - scrollYValue), "px")), "--".concat(blockClass, "--breadcrumb-title-opacity"), "".concat(Math.min(1, Math.max(0, (scrollYValue - (metrics.titleRowSpaceAbove || 0)) / (metrics.breadcrumbTitleHeight || 1) // don't want to divide by zero
244
- )))), "--".concat(blockClass, "--breadcrumb-row-width-px"), "".concat(metrics.breadcrumbRowWidth, "px")));
260
+ return _objectSpread2(_objectSpread2({}, prev), {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "--".concat(blockClass, "--height-px"), "".concat(metrics.headerHeight, "px")), "--".concat(blockClass, "--width-px"), "".concat(metrics.headerWidth, "px")), "--".concat(blockClass, "--header-top"), "".concat(((metrics === null || metrics === void 0 ? void 0 : metrics.headerTopValue) || 0) + ((metrics === null || metrics === void 0 ? void 0 : metrics.headerOffset) || 0), "px")), "--".concat(blockClass, "--breadcrumb-title-visibility"), scrollYValue > 0 ? 'visible' : 'hidden'), "--".concat(blockClass, "--scroll"), "".concat(scrollYValue)), "--".concat(blockClass, "--breadcrumb-title-top"), "".concat(metrics.breadcrumbTitleHeight && metrics.titleRowSpaceAbove && Math.max(0, metrics.breadcrumbTitleHeight + metrics.titleRowSpaceAbove - scrollYValue), "px")), "--".concat(blockClass, "--breadcrumb-title-opacity"), "".concat(Math.min(1, Math.max(0, (scrollYValue - (metrics.titleRowSpaceAbove || 0)) / (metrics.breadcrumbTitleHeight || 1) // don't want to divide by zero
261
+ )))), "--".concat(blockClass, "--breadcrumb-row-width-px"), "".concat(metrics === null || metrics === void 0 ? void 0 : metrics.breadcrumbRowWidth, "px")));
245
262
  });
246
263
  }, [headerRef, enableBreadcrumbScroll, metrics, metrics.breadcrumbRowHeight, metrics.breadcrumbRowSpaceBelow, metrics.breadcrumbTitleHeight, metrics.breadcrumbRowWidth, metrics.headerHeight, metrics.headerWidth, metrics.headerOffset, metrics.headerTopValue, metrics.navigationRowHeight, navigation, scrollYValue, tags]);
247
264
  useNearestScroll(headerRef,
248
265
  // on scroll or various layout changes check updates if needed
249
266
  // istanbul ignore next
250
- function (_ref5) {
251
- var current = _ref5.current;
267
+ function (_ref6) {
268
+ var current = _ref6.current;
252
269
  setPageHeaderStyles(function (prev) {
253
270
  return _objectSpread2(_objectSpread2({}, prev), {}, _defineProperty({}, "--".concat(blockClass, "--breadcrumb-top"), "".concat(metrics.headerOffset, "px")));
254
271
  });
@@ -257,15 +274,15 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
257
274
 
258
275
  // set offset for tagset tooltip
259
276
  /* istanbul ignore next */
260
- var tagsetTooltipOffset = fullyCollapsed ? metrics.headerHeight + metrics.headerTopValue + metrics.headerOffset : metrics.headerHeight + metrics.headerOffset;
277
+ var tagsetTooltipOffset = fullyCollapsed && metrics !== null && metrics !== void 0 && metrics.headerHeight && metrics !== null && metrics !== void 0 && metrics.headerTopValue && metrics !== null && metrics !== void 0 && metrics.headerOffset ? metrics.headerHeight + metrics.headerTopValue + metrics.headerOffset : (metrics.headerHeight || 0) + (metrics.headerOffset || 0);
261
278
 
262
279
  /* istanbul ignore next */
263
280
  document.documentElement.style.setProperty("--".concat(blockClass, "--tagset-tooltip-position"), fullyCollapsed ? 'fixed' : 'absolute');
264
281
  document.documentElement.style.setProperty("--".concat(blockClass, "--tagset-tooltip-offset"), "".concat(tagsetTooltipOffset, "px"));
265
282
  setScrollYValue(current.scrollY);
266
283
  }, [metrics.headerHeight, metrics.headerTopValue, metrics.headerOffset, enableBreadcrumbScroll]);
267
- useWindowResize(function (_ref6) {
268
- var current = _ref6.current;
284
+ useWindowResize(function (_ref7) {
285
+ var current = _ref7.current;
269
286
  // on window resize and other updates some values may have changed
270
287
  checkUpdateVerticalSpace();
271
288
  setWidthIsNarrow(current.innerWidth / 16 < parseInt(breakpoints.md.width)); // small (below medium) media query
@@ -277,14 +294,14 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
277
294
  useEffect(function () {
278
295
  // Determines the appropriate header background opacity based on the header config/height/scroll and the withoutBackground setting
279
296
  var result = withoutBackground ? 0 : 1;
280
- if (!result && metrics.headerHeight > 0 && (breadcrumbs || actionBarItems || tags || navigation)) {
281
- var startAddingAt = parseFloat(spacing10, 10) * parseInt(baseFontSize);
297
+ if (!result && metrics !== null && metrics !== void 0 && metrics.headerHeight && metrics.headerHeight > 0 && (breadcrumbs || actionBarItems || tags || navigation)) {
298
+ var startAddingAt = parseFloat(spacing10) * parseInt(baseFontSize);
282
299
  var scrollRemaining = metrics.headerHeight - scrollYValue;
283
300
 
284
301
  /* don't know how to test resize */
285
302
  /* istanbul ignore if */
286
303
  if (scrollRemaining < startAddingAt) {
287
- var distanceAddingOver = startAddingAt - metrics.breadcrumbRowHeight;
304
+ var distanceAddingOver = startAddingAt - ((metrics === null || metrics === void 0 ? void 0 : metrics.breadcrumbRowHeight) || 0);
288
305
  result = Math.min(1, (startAddingAt - scrollRemaining) / distanceAddingOver);
289
306
  }
290
307
  }
@@ -296,15 +313,19 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
296
313
  // only has toggle if requested and withoutBackground is unset/falsy
297
314
  // NOTE: prop-types isRequired.if for the expand and collapse
298
315
  // icon descriptions depends on the this.
299
- setHasCollapseButton(hasCollapseHeaderToggle && !withoutBackground);
316
+ setHasCollapseButton(hasCollapseHeaderToggle && !withoutBackground || false);
300
317
  }, [withoutBackground, hasCollapseHeaderToggle]);
301
318
  useEffect(function () {
302
319
  // Determine if space is needed in the breadcrumb for a collapse button
303
- setSpaceForCollapseButton(hasCollapseButton && !(navigation || tags) && metrics.headerHeight);
320
+ if (hasCollapseButton && !(navigation || tags) && metrics !== null && metrics !== void 0 && metrics.headerHeight) {
321
+ setSpaceForCollapseButton(true);
322
+ } else {
323
+ setSpaceForCollapseButton(false);
324
+ }
304
325
  }, [hasCollapseButton, navigation, tags, metrics.headerHeight]);
305
326
  var nextToTabsCheck = function nextToTabsCheck() {
306
327
  /* istanbul ignore next */
307
- return enableBreadcrumbScroll && !actionBarItems && scrollYValue + metrics.headerTopValue >= 0;
328
+ return enableBreadcrumbScroll && !actionBarItems && metrics.headerTopValue && scrollYValue + metrics.headerTopValue >= 0;
308
329
  };
309
330
  useEffect(function () {
310
331
  if (collapseHeader === true) {
@@ -316,6 +337,18 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
316
337
 
317
338
  // Determine what form of title to display in the breadcrumb
318
339
  var breadcrumbItemForTitle = utilGetBreadcrumbItemForTitle(blockClass, collapseTitle, title);
340
+ var getBreadcrumbs = function getBreadcrumbs() {
341
+ if (breadcrumbs && breadcrumbItemForTitle) {
342
+ return breadcrumbs.concat(breadcrumbItemForTitle);
343
+ } else {
344
+ if (breadcrumbItemForTitle) {
345
+ return [breadcrumbItemForTitle];
346
+ } else {
347
+ return breadcrumbs;
348
+ }
349
+ }
350
+ };
351
+ var displayedBreadcrumbs = getBreadcrumbs();
319
352
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
320
353
  className: "".concat(blockClass, "--offset-top-measuring-element"),
321
354
  ref: offsetTopMeasuringRef
@@ -335,14 +368,14 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
335
368
  className: "".concat(blockClass, "__breadcrumb-row--container")
336
369
  }, /*#__PURE__*/React__default.createElement(Column, {
337
370
  className: cx("".concat(blockClass, "__breadcrumb-column"), _defineProperty({}, "".concat(blockClass, "__breadcrumb-column--background"), !!breadcrumbs || hasActionBar || widthIsNarrow))
338
- }, breadcrumbs || breadcrumbItemForTitle ? /*#__PURE__*/React__default.createElement(BreadcrumbWithOverflow, {
371
+ }, (breadcrumbs || breadcrumbItemForTitle) && /*#__PURE__*/React__default.createElement(BreadcrumbWithOverflow, {
339
372
  className: "".concat(blockClass, "__breadcrumb"),
340
373
  noTrailingSlash: !!title,
341
374
  overflowAriaLabel: breadcrumbOverflowAriaLabel,
342
- breadcrumbs: breadcrumbs && breadcrumbItemForTitle ? breadcrumbs.concat(breadcrumbItemForTitle) : breadcrumbItemForTitle ? [breadcrumbItemForTitle] : breadcrumbs // breadcrumbs may be null or undefined
343
- ,
344
- overflowTooltipAlign: breadcrumbOverflowTooltipAlign
345
- }) : null), /*#__PURE__*/React__default.createElement(Column, {
375
+ breadcrumbs: displayedBreadcrumbs,
376
+ overflowTooltipAlign: breadcrumbOverflowTooltipAlign,
377
+ maxVisible: undefined
378
+ })), /*#__PURE__*/React__default.createElement(Column, {
346
379
  className: cx(["".concat(blockClass, "__action-bar-column ").concat(blockClass, "__action-bar-column--background"), _defineProperty(_defineProperty({}, "".concat(blockClass, "__action-bar-column--has-page-actions"), pageActions), "".concat(blockClass, "__action-bar-column--influenced-by-collapse-button"), spaceForCollapseButton)])
347
380
  }, /*#__PURE__*/React__default.createElement("div", {
348
381
  className: "".concat(blockClass, "__action-bar-column-content"),
@@ -351,11 +384,11 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
351
384
  /*#__PURE__*/
352
385
  // Investigate the responsive behavior or this and the title also fix the ActionBar Item and PageAction story css
353
386
  React__default.createElement(React__default.Fragment, null, thePageActions(true, pageActionsInBreadcrumbRow), /*#__PURE__*/React__default.createElement(ActionBar, {
354
- menuOptionsClass: cx(actionBarMenuOptionsClass, "".concat(blockClass, "__action-bar-menu-options")),
355
- overflowAriaLabel: actionBarOverflowAriaLabel,
356
387
  actions: actionBarItems,
357
388
  className: "".concat(blockClass, "__action-bar"),
389
+ menuOptionsClass: "".concat(cx(actionBarMenuOptionsClass, "".concat(blockClass, "__action-bar-menu-options"))),
358
390
  onWidthChange: handleActionBarWidthChange,
391
+ overflowAriaLabel: actionBarOverflowAriaLabel,
359
392
  rightAlign: true
360
393
  })) : widthIsNarrow && thePageActions(true, pageActionsInBreadcrumbRow))))) : null, !collapseTitle && (title || pageActions) ? /*#__PURE__*/React__default.createElement(Row, {
361
394
  className: cx("".concat(blockClass, "__title-row"), _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(blockClass, "__title-row--no-breadcrumb-row"), !hasBreadcrumbRow), "".concat(blockClass, "__title-row--under-action-bar"), hasActionBar || widthIsNarrow), "".concat(blockClass, "__title-row--has-page-actions"), !!pageActions), "".concat(blockClass, "__title-row--sticky"), !!pageActions && !actionBarItems && hasBreadcrumbRow))
@@ -386,9 +419,9 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
386
419
  allTagsModalSearchLabel: allTagsModalSearchLabel,
387
420
  allTagsModalSearchPlaceholderText: allTagsModalSearchPlaceholderText,
388
421
  allTagsModalTitle: allTagsModalTitle,
389
- showAllTagsLabel: showAllTagsLabel,
390
422
  tags: tags,
391
- overflowClassName: "".concat(blockClass, "__navigation-tags-overflow")
423
+ overflowClassName: "".concat(blockClass, "__navigation-tags-overflow"),
424
+ showAllTagsLabel: showAllTagsLabel || ''
392
425
  }))) : null),
393
426
  // this navigation pushes the breadcrumb off or settles underneath it depending on enableBreadcrumbScroll
394
427
  navigation ? /*#__PURE__*/React__default.createElement(Row, {
@@ -402,7 +435,7 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
402
435
  allTagsModalSearchLabel: allTagsModalSearchLabel,
403
436
  allTagsModalSearchPlaceholderText: allTagsModalSearchPlaceholderText,
404
437
  allTagsModalTitle: allTagsModalTitle,
405
- showAllTagsLabel: showAllTagsLabel,
438
+ showAllTagsLabel: showAllTagsLabel || '',
406
439
  tags: tags,
407
440
  overflowClassName: "".concat(blockClass, "__navigation-tags-overflow")
408
441
  })) : null) : null), hasCollapseButton ? /*#__PURE__*/React__default.createElement("div", {
@@ -425,7 +458,7 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
425
458
  })) : null));
426
459
  function thePageActions(isBreadcrumbRow, inBreadcrumbRow) {
427
460
  if (pageActions) {
428
- var _pageActions$content;
461
+ var _content;
429
462
  var _Tag = isBreadcrumbRow ? 'div' : Column;
430
463
  // Only report size change of version action bar is rendered as part of the breadcrumb row.
431
464
  // and when there is an actionBar
@@ -434,8 +467,8 @@ var PageHeader = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
434
467
  className: cx("".concat(blockClass, "__page-actions"), _defineProperty({}, "".concat(blockClass, "__page-actions--in-breadcrumb"), inBreadcrumbRow))
435
468
  }, /*#__PURE__*/React__default.createElement("div", {
436
469
  className: cx("".concat(blockClass, "__page-actions-content"))
437
- }, (_pageActions$content = pageActions.content) !== null && _pageActions$content !== void 0 ? _pageActions$content : /*#__PURE__*/React__default.createElement(ButtonSetWithOverflow, {
438
- classname: "".concat(blockClass, "__button-set-with-overflow"),
470
+ }, (_content = pageActions === null || pageActions === void 0 ? void 0 : pageActions.content) !== null && _content !== void 0 ? _content : /*#__PURE__*/React__default.createElement(ButtonSetWithOverflow, {
471
+ className: "".concat(blockClass, "__button-set-with-overflow"),
439
472
  menuOptionsClass: cx(pageActionsMenuOptionsClass, "".concat(blockClass, "__button-set-menu-options")),
440
473
  onWidthChange: handleWidthChange,
441
474
  buttons: pageActions,
@@ -475,6 +508,8 @@ var deprecatedProps = {
475
508
  */
476
509
  hasBackgroundAlways: deprecateProp(PropTypes.bool, 'Property replaced by `withoutBackground`')
477
510
  };
511
+
512
+ /**@ts-ignore */
478
513
  PageHeader.tagTypes = tagTypes;
479
514
  PageHeader.propTypes = _objectSpread2({
480
515
  /**
@@ -482,6 +517,7 @@ PageHeader.propTypes = _objectSpread2({
482
517
  * Each item is specified as an object with the properties of a Carbon Button in icon only form.
483
518
  * Button kind, size, tooltipPosition, tooltipAlignment and type are ignored.
484
519
  */
520
+ /**@ts-ignore */
485
521
  actionBarItems: PropTypes.arrayOf(PropTypes.shape(_objectSpread2(_objectSpread2({}, prepareProps(Button.propTypes, ['kind', 'size', 'tooltipPosition', 'tooltipAlignment'])), {}, {
486
522
  iconDescription: PropTypes.string.isRequired,
487
523
  onClick: Button.propTypes.onClick,
@@ -497,8 +533,9 @@ PageHeader.propTypes = _objectSpread2({
497
533
  *
498
534
  * NOTE: This prop is required if actionBarItems are supplied
499
535
  */
500
- actionBarOverflowAriaLabel: PropTypes.string.isRequired.if(function (_ref10) {
501
- var actionBarItems = _ref10.actionBarItems;
536
+ /**@ts-ignore */
537
+ actionBarOverflowAriaLabel: PropTypes.string.isRequired.if(function (_ref11) {
538
+ var actionBarItems = _ref11.actionBarItems;
502
539
  return actionBarItems && actionBarItems.length > 0;
503
540
  }),
504
541
  /**
@@ -529,8 +566,9 @@ PageHeader.propTypes = _objectSpread2({
529
566
  * If the user supplies breadcrumbs then this property is required.
530
567
  * It is used in an overflow menu when there is insufficient space to display all breadcrumbs inline.
531
568
  */
532
- breadcrumbOverflowAriaLabel: PropTypes.string.isRequired.if(function (_ref11) {
533
- var breadcrumbs = _ref11.breadcrumbs;
569
+ /**@ts-ignore */
570
+ breadcrumbOverflowAriaLabel: PropTypes.string.isRequired.if(function (_ref12) {
571
+ var breadcrumbs = _ref12.breadcrumbs;
534
572
  return breadcrumbs && breadcrumbs.length > 0;
535
573
  }),
536
574
  /**
@@ -548,6 +586,7 @@ PageHeader.propTypes = _objectSpread2({
548
586
  * fields in the object will be passed through to the breadcrumb element as
549
587
  * HTML attributes.
550
588
  */
589
+ /**@ts-ignore */
551
590
  breadcrumbs: PropTypes.arrayOf(PropTypes.shape({
552
591
  /**
553
592
  * Optional string representing the link location for the BreadcrumbItem
@@ -568,8 +607,9 @@ PageHeader.propTypes = _objectSpread2({
568
607
  /**
569
608
  * A text version of the `label` for display, required if `label` is not a string.
570
609
  */
571
- title: PropTypes.string.isRequired.if(function (_ref12) {
572
- var label = _ref12.label;
610
+ /**@ts-ignore */
611
+ title: PropTypes.string.isRequired.if(function (_ref13) {
612
+ var label = _ref13.label;
573
613
  return typeof label !== 'string';
574
614
  })
575
615
  })),
@@ -595,9 +635,10 @@ PageHeader.propTypes = _objectSpread2({
595
635
  * If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
596
636
  * required for both the expend and collapse states of the button component used.
597
637
  */
598
- collapseHeaderIconDescription: PropTypes.string.isRequired.if(function (_ref13) {
599
- var withoutBackground = _ref13.withoutBackground,
600
- hasCollapseHeaderToggle = _ref13.hasCollapseHeaderToggle;
638
+ /**@ts-ignore */
639
+ collapseHeaderIconDescription: PropTypes.string.isRequired.if(function (_ref14) {
640
+ var withoutBackground = _ref14.withoutBackground,
641
+ hasCollapseHeaderToggle = _ref14.hasCollapseHeaderToggle;
601
642
  return !withoutBackground && hasCollapseHeaderToggle;
602
643
  }),
603
644
  /**
@@ -614,15 +655,17 @@ PageHeader.propTypes = _objectSpread2({
614
655
  * If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
615
656
  * required for both the expend and collapse states of the button component used.
616
657
  */
617
- expandHeaderIconDescription: PropTypes.string.isRequired.if(function (_ref14) {
618
- var withoutBackground = _ref14.withoutBackground,
619
- hasCollapseHeaderToggle = _ref14.hasCollapseHeaderToggle;
658
+ /**@ts-ignore */
659
+ expandHeaderIconDescription: PropTypes.string.isRequired.if(function (_ref15) {
660
+ var withoutBackground = _ref15.withoutBackground,
661
+ hasCollapseHeaderToggle = _ref15.hasCollapseHeaderToggle;
620
662
  return !withoutBackground && hasCollapseHeaderToggle;
621
663
  }),
622
664
  /**
623
665
  * The PageHeader is hosted in a Carbon grid, this value is passed through to the Carbon grid fullWidth prop.
624
666
  * 'xl' is used to override the grid width setting. Can be used with narrowGrid: true to get the largest size.
625
667
  */
668
+ /**@ts-ignore */
626
669
  fullWidthGrid: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['xl'])]),
627
670
  /**
628
671
  * Adds a button as the last element of the bottom row which collapses and expands the header.
@@ -630,6 +673,7 @@ PageHeader.propTypes = _objectSpread2({
630
673
  * NOTE: The header is collapsed by setting the scroll position to hide part of the header.
631
674
  * Collapsing has no effect if there is insufficient content to scroll.
632
675
  */
676
+ /**@ts-ignore */
633
677
  hasCollapseHeaderToggle: PropTypes.bool,
634
678
  /**
635
679
  * The PageHeader is hosted in a Carbon grid, this value is passed through to the Carbon grid narrow prop
@@ -656,6 +700,7 @@ PageHeader.propTypes = _objectSpread2({
656
700
  * - maxWidth: maximum number of pixels the content will grow to
657
701
  * Carbon Button API https://react.carbondesignsystem.com/?path=/docs/components-button--default#component-api
658
702
  */
703
+ /**@ts-ignore */
659
704
  pageActions: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape(_objectSpread2(_objectSpread2({}, Button.propTypes), {}, {
660
705
  key: PropTypes.string.isRequired,
661
706
  kind: Button.propTypes.kind,
@@ -680,8 +725,9 @@ PageHeader.propTypes = _objectSpread2({
680
725
  *
681
726
  * NOTE: This prop is required if pageActions are supplied
682
727
  */
683
- pageActionsOverflowLabel: PropTypes.node.isRequired.if(function (_ref15) {
684
- var pageActions = _ref15.pageActions;
728
+ /**@ts-ignore */
729
+ pageActionsOverflowLabel: PropTypes.node.isRequired.if(function (_ref16) {
730
+ var pageActions = _ref16.pageActions;
685
731
  return pageActions && pageActions.length > 0 && !pageActions.content;
686
732
  }),
687
733
  /**
@@ -709,6 +755,7 @@ PageHeader.propTypes = _objectSpread2({
709
755
  *
710
756
  * See https://react.carbondesignsystem.com/?path=/docs/components-tag--default
711
757
  */
758
+ /**@ts-ignore */
712
759
  tags: PropTypes.arrayOf(PropTypes.shape(_objectSpread2(_objectSpread2({}, prepareProps(Tag.propTypes, 'filter')), {}, {
713
760
  label: PropTypes.string.isRequired,
714
761
  // we duplicate this prop to improve the DocGen
@@ -721,6 +768,7 @@ PageHeader.propTypes = _objectSpread2({
721
768
  * - String
722
769
  * - Object containing
723
770
  * - text: title string
771
+ * - shortTitle: alternative title for exceptionally long titles
724
772
  * - icon: optional icon
725
773
  * - loading: boolean shows loading indicator if true
726
774
  * - onChange: function to process the live value (React change === HTML Input)
@@ -733,9 +781,11 @@ PageHeader.propTypes = _objectSpread2({
733
781
  * - breadcrumbContent: version of content used in the breadcrumb on scroll. If not supplied
734
782
  * - asText: String based representation of the title
735
783
  */
784
+ /**@ts-ignore */
736
785
  title: PropTypes.oneOfType([PropTypes.shape({
737
786
  // Update docgen if changed
738
787
  text: PropTypes.string.isRequired,
788
+ shortTitle: PropTypes.string,
739
789
  icon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
740
790
  loading: PropTypes.bool,
741
791
  // inline edit version properties
@@ -761,6 +811,7 @@ PageHeader.propTypes = _objectSpread2({
761
811
  * Specifies if the PageHeader should appear without a background color, and defaults to the preferred `false` (a background color is shown).
762
812
  * Note that when `true` some parts of the header still gain a background if and when they stick to the top of the PageHeader on scroll.
763
813
  */
814
+ /**@ts-ignore */
764
815
  withoutBackground: PropTypes.bool
765
816
  }, deprecatedProps);
766
817
  PageHeader.displayName = componentName;
@@ -1,5 +1,5 @@
1
1
  export const blockClass: string;
2
- export function utilCheckUpdateVerticalSpace(headerRef: {}, offsetTopMeasuringRef: {}, navigation: {}, enableBreadcrumbScroll: boolean, hasActionBar: boolean, widthIsNarrow: boolean, setMetrics: () => any): void;
2
+ export function utilCheckUpdateVerticalSpace(headerRef: {}, offsetTopMeasuringRef: {}, navigation: object, enableBreadcrumbScroll: boolean, hasActionBar: boolean, widthIsNarrow: boolean, setMetrics: () => any): void;
3
3
  export function utilSetCollapsed(collapse: any, headerRef: any, headerOffset: any, headerTopValue: any): void;
4
4
  export function utilGetBreadcrumbItemForTitle(blockClass: any, collapseTitle: any, title: any): {
5
5
  label: any;
@@ -19,7 +19,7 @@ var blockClass = "".concat(pkg.prefix, "--page-header");
19
19
  * Assesses the vertical height of various elements and calls setMetrics with update
20
20
  * @param {{}} headerRef
21
21
  * @param {{}} offsetTopMeasuringRef
22
- * @param {{}} navigation
22
+ * @param {object} navigation
23
23
  * @param {boolean} enableBreadcrumbScroll
24
24
  * @param {boolean} hasActionBar
25
25
  * @param {boolean} widthIsNarrow
@@ -182,6 +182,9 @@ var utilGetBreadcrumbItemForTitle = function utilGetBreadcrumbItemForTitle(block
182
182
  breadcrumbTitle.isCurrentPage = true;
183
183
  breadcrumbTitle.className = cx(["".concat(blockClass, "__breadcrumb-title"), _defineProperty({}, "".concat(blockClass, "__breadcrumb-title--pre-collapsed"), collapseTitle)]);
184
184
  }
185
+ if (title.shortTitle) {
186
+ breadcrumbTitle.shortTitle = title.shortTitle;
187
+ }
185
188
  return breadcrumbTitle;
186
189
  }
187
190
  };
@@ -5,7 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  /// <reference path="../../../src/custom-typings/index.d.ts" />
8
- import React, { ReactNode } from 'react';
8
+ import React, { ReactNode, RefObject } from 'react';
9
9
  import { ButtonProps } from '@carbon/react';
10
10
  type SidePanelBaseProps = {
11
11
  /**
@@ -57,6 +57,10 @@ type SidePanelBaseProps = {
57
57
  * Sets the label text which will display above the title text
58
58
  */
59
59
  labelText?: string;
60
+ /**
61
+ * Provide a ref to return focus to once the side panel is closed.
62
+ */
63
+ launcherButtonRef?: RefObject<any>;
60
64
  /**
61
65
  * Sets the icon description for the navigation back icon button
62
66
  */
@@ -100,7 +104,7 @@ type SidePanelBaseProps = {
100
104
  /**
101
105
  * Sets the size of the side panel
102
106
  */
103
- size: 'xs' | 'sm' | 'md' | 'lg' | '2xl';
107
+ size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
104
108
  /**
105
109
  * Determines if this panel slides in
106
110
  */
@@ -23,7 +23,7 @@ import { ActionSet } from '../ActionSet/ActionSet.js';
23
23
  import { usePreviousValue } from '../../global/js/hooks/usePreviousValue.js';
24
24
  import { useFocus } from '../../global/js/hooks/useFocus.js';
25
25
 
26
- var _excluded = ["actionToolbarButtons", "actions", "animateTitle", "children", "className", "closeIconDescription", "condensedActions", "currentStep", "id", "includeOverlay", "labelText", "navigationBackIconDescription", "onNavigationBack", "onRequestClose", "onUnmount", "open", "placement", "preventCloseOnClickOutside", "selectorPageContent", "selectorPrimaryFocus", "size", "slideIn", "slug", "subtitle", "title"],
26
+ var _excluded = ["actionToolbarButtons", "actions", "animateTitle", "children", "className", "closeIconDescription", "condensedActions", "currentStep", "id", "includeOverlay", "labelText", "navigationBackIconDescription", "onNavigationBack", "onRequestClose", "onUnmount", "open", "placement", "preventCloseOnClickOutside", "selectorPageContent", "selectorPrimaryFocus", "size", "slideIn", "slug", "subtitle", "title", "launcherButtonRef"],
27
27
  _excluded2 = ["label", "kind", "hasIconOnly", "icon", "renderIcon", "tooltipPosition", "tooltipAlignment", "leading", "disabled", "className", "onClick"];
28
28
  var blockClass = "".concat(pkg.prefix, "--side-panel");
29
29
  var componentName = 'SidePanel';
@@ -77,6 +77,7 @@ var SidePanel = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
77
77
  slug = _ref.slug,
78
78
  subtitle = _ref.subtitle,
79
79
  title = _ref.title,
80
+ launcherButtonRef = _ref.launcherButtonRef,
80
81
  rest = _objectWithoutProperties(_ref, _excluded);
81
82
  var _useState = useState(false),
82
83
  _useState2 = _slicedToArray(_useState, 2),
@@ -108,6 +109,7 @@ var SidePanel = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
108
109
  firstElement = _useFocus.firstElement,
109
110
  keyDownListener = _useFocus.keyDownListener;
110
111
  var panelRefValue = sidePanelRef.current;
112
+ var previousOpen = usePreviousValue(open);
111
113
  var shouldReduceMotion = useReducedMotion();
112
114
 
113
115
  // Title animation on scroll related state
@@ -179,6 +181,14 @@ var SidePanel = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
179
181
  console.warn("".concat(componentName, ": The prop `labelText` was provided without a `title`. It is required to have a `title` when using the `labelText` prop."));
180
182
  }
181
183
  }, [labelText, title]);
184
+ useEffect(function () {
185
+ if (previousOpen && !open && launcherButtonRef) {
186
+ setTimeout(function () {
187
+ var _launcherButtonRef$cu;
188
+ launcherButtonRef === null || launcherButtonRef === void 0 || (_launcherButtonRef$cu = launcherButtonRef.current) === null || _launcherButtonRef$cu === void 0 || _launcherButtonRef$cu.focus();
189
+ }, 0);
190
+ }
191
+ }, [launcherButtonRef, open, previousOpen]);
182
192
  var checkSetDoAnimateTitle = function checkSetDoAnimateTitle() {
183
193
  var canDoAnimateTitle = false;
184
194
  if (panelRefValue && open && animateTitle && animationComplete && titleRef !== null && titleRef !== void 0 && titleRef.current && title && title.length && !reducedMotion.matches) {
@@ -346,7 +356,7 @@ var SidePanel = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
346
356
  });
347
357
  }
348
358
  return /*#__PURE__*/React__default.createElement("div", {
349
- className: cx("".concat(blockClass, "__header"), _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(blockClass, "__header--on-detail-step"), currentStep > 0), "".concat(blockClass, "__header--no-title-animation"), !doAnimateTitle), "".concat(blockClass, "__header--reduced-motion"), reducedMotion.matches), "".concat(blockClass, "__header--has-title"), title)),
359
+ className: cx("".concat(blockClass, "__header"), _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(blockClass, "__header--on-detail-step"), currentStep > 0), "".concat(blockClass, "__header--no-title-animation"), !animateTitle), "".concat(blockClass, "__header--reduced-motion"), reducedMotion.matches), "".concat(blockClass, "__header--has-title"), title)),
350
360
  ref: headerRef
351
361
  }, currentStep > 0 && /*#__PURE__*/React__default.createElement(Button, {
352
362
  "aria-label": navigationBackIconDescription,
@@ -532,6 +542,11 @@ SidePanel.propTypes = {
532
542
  * Sets the label text which will display above the title text
533
543
  */
534
544
  labelText: PropTypes.string,
545
+ /**
546
+ * Provide a ref to return focus to once the modal is closed.
547
+ */
548
+ /**@ts-ignore */
549
+ launcherButtonRef: PropTypes.any,
535
550
  /**
536
551
  * Sets the icon description for the navigation back icon button
537
552
  */
@@ -581,7 +596,7 @@ SidePanel.propTypes = {
581
596
  * Sets the size of the side panel
582
597
  */
583
598
  /**@ts-ignore*/
584
- size: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', '2xl']),
599
+ size: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', '2xl']),
585
600
  /**
586
601
  * Determines if this panel slides in
587
602
  */
@@ -3,5 +3,6 @@ export namespace SIDE_PANEL_SIZES {
3
3
  let sm: string;
4
4
  let md: string;
5
5
  let lg: string;
6
+ let xl: string;
6
7
  let max: string;
7
8
  }
@@ -10,6 +10,7 @@ var SIDE_PANEL_SIZES = {
10
10
  sm: '20rem',
11
11
  md: '30rem',
12
12
  lg: '40rem',
13
+ xl: '65rem',
13
14
  max: '75%'
14
15
  };
15
16
 
@@ -1,5 +1,72 @@
1
+ import React from 'react';
2
+ import { Entry } from '../AddSelect/types';
3
+ interface SingleAddSelectProps {
4
+ /**
5
+ * optional class name
6
+ */
7
+ className?: string;
8
+ /**
9
+ * text description that appears under the title
10
+ */
11
+ description?: string;
12
+ /**
13
+ * label for global search input
14
+ */
15
+ globalSearchLabel?: string;
16
+ /**
17
+ * placeholder for global search input
18
+ */
19
+ globalSearchPlaceholder?: string;
20
+ /**
21
+ * object that contains the item data. for more information reference the
22
+ * "Structuring items" section in the docs tab
23
+ */
24
+ items?: {
25
+ entries: Entry[];
26
+ };
27
+ /**
28
+ * label that display above the list of items
29
+ */
30
+ itemsLabel?: string;
31
+ /**
32
+ * text to display when no results are found from the global search
33
+ */
34
+ noResultsDescription?: string;
35
+ /**
36
+ * title to display when no results are found from the global search
37
+ */
38
+ noResultsTitle?: string;
39
+ /**
40
+ * function to call when the close button clicked
41
+ */
42
+ onClose?: () => void;
43
+ /**
44
+ * text for close button
45
+ */
46
+ onCloseButtonText?: string;
47
+ /**
48
+ * function to call when the submit button is clicked. returns a selection
49
+ */
50
+ onSubmit?: () => void;
51
+ /**
52
+ * text for the submit button
53
+ */
54
+ onSubmitButtonText?: string;
55
+ /**
56
+ * specifies if the component is open or not
57
+ */
58
+ open?: boolean;
59
+ /**
60
+ * text that displays when displaying filtered items
61
+ */
62
+ searchResultsLabel?: string;
63
+ /**
64
+ * header text
65
+ */
66
+ title?: string;
67
+ }
1
68
  /**
2
69
  * Used to add or select one or more items from larger lists or hierarchies.
3
70
  */
4
- export let SingleAddSelect: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
5
- import React from 'react';
71
+ export declare let SingleAddSelect: React.ForwardRefExoticComponent<SingleAddSelectProps & React.RefAttributes<HTMLDivElement>>;
72
+ export {};
@@ -14,7 +14,6 @@ import { prepareProps } from '../../global/js/utils/props-helper.js';
14
14
  import { AddSelect } from '../AddSelect/AddSelect.js';
15
15
 
16
16
  var componentName = 'SingleAddSelect';
17
-
18
17
  /**
19
18
  * Used to add or select one or more items from larger lists or hierarchies.
20
19
  */
@@ -30,6 +29,7 @@ SingleAddSelect.propTypes = {
30
29
  /**
31
30
  * optional class name
32
31
  */
32
+ /**@ts-ignore */
33
33
  className: PropTypes.string,
34
34
  /**
35
35
  * text description that appears under the title
@@ -47,6 +47,7 @@ SingleAddSelect.propTypes = {
47
47
  * object that contains the item data. for more information reference the
48
48
  * "Structuring items" section in the docs tab
49
49
  */
50
+ /**@ts-ignore */
50
51
  items: PropTypes.shape({
51
52
  entries: PropTypes.arrayOf(PropTypes.shape({
52
53
  children: PropTypes.object,