@carbon/ibm-products 2.84.0 → 2.85.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 (97) hide show
  1. package/css/index-full-carbon.css +18 -13
  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 +18 -13
  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 +18 -13
  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 +18 -13
  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/Coachmark/next/Coachmark/ContentHeader.js +2 -1
  18. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.js +12 -1
  19. package/es/components/CreateTearsheet/CreateTearsheet.d.ts +1 -0
  20. package/es/components/CreateTearsheet/CreateTearsheet.js +3 -0
  21. package/es/components/CreateTearsheet/CreateTearsheetStep.d.ts +4 -0
  22. package/es/components/CreateTearsheet/CreateTearsheetStep.js +7 -1
  23. package/es/components/EditInPlace/EditInPlace.d.ts +12 -1
  24. package/es/components/EditInPlace/EditInPlace.js +52 -31
  25. package/es/components/ImportModal/ImportModal.d.ts +5 -1
  26. package/es/components/ImportModal/ImportModal.js +12 -6
  27. package/es/components/PageHeader/next/PageHeader.d.ts +15 -238
  28. package/es/components/PageHeader/next/PageHeader.js +25 -637
  29. package/es/components/PageHeader/next/PageHeaderBreadcrumbBar.d.ts +41 -0
  30. package/es/components/PageHeader/next/PageHeaderBreadcrumbBar.js +74 -0
  31. package/es/components/PageHeader/next/PageHeaderBreadcrumbOverflow.d.ts +12 -0
  32. package/es/components/PageHeader/next/PageHeaderBreadcrumbOverflow.js +82 -0
  33. package/es/components/PageHeader/next/PageHeaderContent.d.ts +39 -0
  34. package/es/components/PageHeader/next/PageHeaderContent.js +129 -0
  35. package/es/components/PageHeader/next/PageHeaderContentPageActions.d.ts +52 -0
  36. package/es/components/PageHeader/next/PageHeaderContentPageActions.js +126 -0
  37. package/es/components/PageHeader/next/PageHeaderContentText.d.ts +44 -0
  38. package/es/components/PageHeader/next/PageHeaderContentText.js +54 -0
  39. package/es/components/PageHeader/next/PageHeaderHeroImage.d.ts +36 -0
  40. package/es/components/PageHeader/next/PageHeaderHeroImage.js +62 -0
  41. package/es/components/PageHeader/next/PageHeaderScrollButton.d.ts +13 -0
  42. package/es/components/PageHeader/next/PageHeaderScrollButton.js +73 -0
  43. package/es/components/PageHeader/next/PageHeaderTabBar.d.ts +19 -0
  44. package/es/components/PageHeader/next/PageHeaderTabBar.js +66 -0
  45. package/es/components/PageHeader/next/PageHeaderTagOverflow.d.ts +13 -0
  46. package/es/components/PageHeader/next/PageHeaderTagOverflow.js +68 -0
  47. package/es/components/PageHeader/next/PageHeaderTitleBreadcrumb.d.ts +9 -0
  48. package/es/components/PageHeader/next/PageHeaderTitleBreadcrumb.js +43 -0
  49. package/es/components/PageHeader/next/index.d.ts +3 -2
  50. package/es/components/PageHeader/next/index.js +11 -1
  51. package/es/global/js/hooks/useCreateComponentStepChange.d.ts +2 -1
  52. package/es/global/js/hooks/useCreateComponentStepChange.js +3 -2
  53. package/es/global/js/hooks/usePortalTarget.js +1 -1
  54. package/es/global/js/utils/makeDraggable/makeDraggable.js +22 -13
  55. package/lib/components/Coachmark/next/Coachmark/ContentHeader.js +2 -1
  56. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.js +12 -1
  57. package/lib/components/CreateTearsheet/CreateTearsheet.d.ts +1 -0
  58. package/lib/components/CreateTearsheet/CreateTearsheet.js +3 -0
  59. package/lib/components/CreateTearsheet/CreateTearsheetStep.d.ts +4 -0
  60. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +7 -1
  61. package/lib/components/EditInPlace/EditInPlace.d.ts +12 -1
  62. package/lib/components/EditInPlace/EditInPlace.js +50 -29
  63. package/lib/components/ImportModal/ImportModal.d.ts +5 -1
  64. package/lib/components/ImportModal/ImportModal.js +12 -6
  65. package/lib/components/PageHeader/next/PageHeader.d.ts +15 -238
  66. package/lib/components/PageHeader/next/PageHeader.js +42 -654
  67. package/lib/components/PageHeader/next/PageHeaderBreadcrumbBar.d.ts +41 -0
  68. package/lib/components/PageHeader/next/PageHeaderBreadcrumbBar.js +76 -0
  69. package/lib/components/PageHeader/next/PageHeaderBreadcrumbOverflow.d.ts +12 -0
  70. package/lib/components/PageHeader/next/PageHeaderBreadcrumbOverflow.js +84 -0
  71. package/lib/components/PageHeader/next/PageHeaderContent.d.ts +39 -0
  72. package/lib/components/PageHeader/next/PageHeaderContent.js +131 -0
  73. package/lib/components/PageHeader/next/PageHeaderContentPageActions.d.ts +52 -0
  74. package/lib/components/PageHeader/next/PageHeaderContentPageActions.js +128 -0
  75. package/lib/components/PageHeader/next/PageHeaderContentText.d.ts +44 -0
  76. package/lib/components/PageHeader/next/PageHeaderContentText.js +56 -0
  77. package/lib/components/PageHeader/next/PageHeaderHeroImage.d.ts +36 -0
  78. package/lib/components/PageHeader/next/PageHeaderHeroImage.js +64 -0
  79. package/lib/components/PageHeader/next/PageHeaderScrollButton.d.ts +13 -0
  80. package/lib/components/PageHeader/next/PageHeaderScrollButton.js +75 -0
  81. package/lib/components/PageHeader/next/PageHeaderTabBar.d.ts +19 -0
  82. package/lib/components/PageHeader/next/PageHeaderTabBar.js +68 -0
  83. package/lib/components/PageHeader/next/PageHeaderTagOverflow.d.ts +13 -0
  84. package/lib/components/PageHeader/next/PageHeaderTagOverflow.js +70 -0
  85. package/lib/components/PageHeader/next/PageHeaderTitleBreadcrumb.d.ts +9 -0
  86. package/lib/components/PageHeader/next/PageHeaderTitleBreadcrumb.js +45 -0
  87. package/lib/components/PageHeader/next/index.d.ts +3 -2
  88. package/lib/components/PageHeader/next/index.js +20 -10
  89. package/lib/global/js/hooks/useCreateComponentStepChange.d.ts +2 -1
  90. package/lib/global/js/hooks/useCreateComponentStepChange.js +3 -2
  91. package/lib/global/js/hooks/usePortalTarget.js +1 -1
  92. package/lib/global/js/utils/makeDraggable/makeDraggable.js +22 -13
  93. package/package.json +7 -7
  94. package/scss/components/Datagrid/_datagrid.scss +7 -10
  95. package/scss/components/EditInPlace/_edit-in-place.scss +11 -3
  96. package/scss/components/PageHeader/_page-header.scss +2 -1
  97. package/telemetry.yml +13 -0
@@ -9,19 +9,22 @@
9
9
 
10
10
  var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
11
11
  var React = require('react');
12
- var index = require('../../../_virtual/index.js');
13
12
  var cx = require('classnames');
14
- var react = require('@carbon/react');
15
- var layout = require('@carbon/layout');
16
13
  var PageHeaderUtils = require('../PageHeaderUtils.js');
17
- var overflowHandler = require('./overflowHandler.js');
18
- var utilities = require('@carbon/utilities');
19
- var icons = require('@carbon/react/icons');
20
14
  var context = require('./context.js');
21
15
  var utils = require('./utils.js');
22
16
  var settings = require('../../../settings.js');
23
17
  var useResizeObserver = require('../../../global/js/hooks/useResizeObserver.js');
24
- var useIsomorphicEffect = require('../../../global/js/hooks/useIsomorphicEffect.js');
18
+ var PageHeaderBreadcrumbBar = require('./PageHeaderBreadcrumbBar.js');
19
+ var PageHeaderContent = require('./PageHeaderContent.js');
20
+ var PageHeaderContentPageActions = require('./PageHeaderContentPageActions.js');
21
+ var PageHeaderContentText = require('./PageHeaderContentText.js');
22
+ var PageHeaderHeroImage = require('./PageHeaderHeroImage.js');
23
+ var PageHeaderTabBar = require('./PageHeaderTabBar.js');
24
+ var PageHeaderTagOverflow = require('./PageHeaderTagOverflow.js');
25
+ var PageHeaderScrollButton = require('./PageHeaderScrollButton.js');
26
+ var PageHeaderTitleBreadcrumb = require('./PageHeaderTitleBreadcrumb.js');
27
+ var PageHeaderBreadcrumbOverflow = require('./PageHeaderBreadcrumbOverflow.js');
25
28
 
26
29
  /**
27
30
  * ----------
@@ -109,40 +112,31 @@ const PageHeader = /*#__PURE__*/React.forwardRef(function PageHeader(_ref, ref)
109
112
  });
110
113
  }, {
111
114
  root: null,
112
- rootMargin: `${(predefinedContentPadding + totalTitleHeight + totalHeaderOffset + 48) * -1}px 0px 0px 0px`,
115
+ rootMargin: `${(predefinedContentPadding + totalHeaderOffset + 24) * -1}px 0px 0px 0px`,
113
116
  threshold: 0.1
114
117
  });
115
- if (refs?.contentRef.current) {
116
- contentObserver.observe(refs?.contentRef.current);
118
+ if (refs?.contentRef?.current) {
119
+ contentObserver.observe(refs.contentRef.current);
117
120
  }
118
- if (refs?.titleRef.current) {
119
- titleObserver.observe(refs?.titleRef.current);
121
+ if (refs?.titleRef?.current) {
122
+ titleObserver.observe(refs.titleRef.current);
120
123
  }
121
- if (refs?.contentActions.current) {
122
- contentActionsObserver.observe(refs?.contentActions.current);
124
+ if (refs?.contentActions?.current) {
125
+ contentActionsObserver.observe(refs.contentActions.current);
123
126
  }
124
127
  return () => {
125
- if (!refs?.contentRef?.current) {
126
- return;
127
- }
128
- contentObserver.unobserve(refs?.contentRef.current);
129
- if (!refs?.titleRef?.current) {
130
- return;
131
- }
132
- titleObserver.unobserve(refs?.titleRef.current);
133
- if (!refs?.contentActions?.current) {
134
- return;
135
- }
136
- contentActionsObserver.unobserve(refs?.contentActions.current);
128
+ contentObserver.disconnect();
129
+ titleObserver.disconnect();
130
+ contentActionsObserver.disconnect();
137
131
  };
138
- }, [refs, componentRef]);
132
+ }, [refs?.contentRef, refs?.titleRef, refs?.contentActions, componentRef]);
139
133
  return /*#__PURE__*/React.createElement(context.PageHeaderContext.Provider, {
140
134
  value: {
141
135
  refs,
142
136
  setRefs,
143
- fullyCollapsed,
144
137
  pageActionsInstance,
145
138
  setPageActionsInstance,
139
+ fullyCollapsed,
146
140
  titleClipped,
147
141
  contentActionsClipped,
148
142
  breadcrumbActionsClipped
@@ -154,612 +148,6 @@ const PageHeader = /*#__PURE__*/React.forwardRef(function PageHeader(_ref, ref)
154
148
  });
155
149
  PageHeader.displayName = 'PageHeader';
156
150
 
157
- /**
158
- * -----------------------
159
- * PageHeaderBreadcrumbBar
160
- * -----------------------
161
- */
162
-
163
- const PageHeaderBreadcrumbBar = /*#__PURE__*/React.forwardRef(function PageHeaderBreadcrumbBar(_ref2, ref) {
164
- let {
165
- border = true,
166
- className,
167
- children,
168
- renderIcon: IconElement,
169
- contentActions,
170
- contentActionsFlush,
171
- pageActions,
172
- pageActionsFlush,
173
- ...other
174
- } = _ref2;
175
- const context$1 = context.usePageHeader();
176
- const {
177
- pageActionsInstance: globalActions,
178
- contentActionsClipped
179
- } = context$1;
180
- const classNames = cx({
181
- [`${PageHeaderUtils.blockClass}__breadcrumb-bar`]: true,
182
- [`${PageHeaderUtils.blockClass}__breadcrumb-bar-border`]: border,
183
- [`${PageHeaderUtils.blockClass}__breadcrumb__actions-flush`]: pageActionsFlush
184
- }, className);
185
- const contentActionsClasses = cx({
186
- [`${PageHeaderUtils.blockClass}__breadcrumb__content-actions`]: !contentActionsFlush,
187
- [`${PageHeaderUtils.blockClass}__breadcrumb__content-actions-with-global-actions`]: !!globalActions,
188
- [`${PageHeaderUtils.blockClass}__breadcrumb__content-actions-with-global-actions--show`]: contentActionsClipped
189
- });
190
- return /*#__PURE__*/React.createElement(context.PageHeaderContext.Provider, {
191
- value: {
192
- ...context$1,
193
- isContentActionsInBreadcrumbBar: true
194
- }
195
- }, /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
196
- className: classNames,
197
- ref: ref
198
- }, other), /*#__PURE__*/React.createElement(react.Grid, null, /*#__PURE__*/React.createElement(react.Column, {
199
- lg: 16,
200
- md: 8,
201
- sm: 4
202
- }, /*#__PURE__*/React.createElement("div", {
203
- className: `${PageHeaderUtils.blockClass}__breadcrumb-container`
204
- }, /*#__PURE__*/React.createElement("div", {
205
- className: `${PageHeaderUtils.blockClass}__breadcrumb-wrapper`
206
- }, IconElement && /*#__PURE__*/React.createElement("div", {
207
- className: `${PageHeaderUtils.blockClass}__breadcrumb__icon`
208
- }, /*#__PURE__*/React.createElement(IconElement, null)), children), /*#__PURE__*/React.createElement("div", {
209
- className: `${PageHeaderUtils.blockClass}__breadcrumb__actions`
210
- }, /*#__PURE__*/React.createElement("div", {
211
- className: contentActionsClasses
212
- }, contentActions), pageActions))))));
213
- });
214
- PageHeaderBreadcrumbBar.displayName = 'PageHeaderBreadcrumbBar';
215
-
216
- /**
217
- * -----------------
218
- * PageHeaderContent
219
- * -----------------
220
- */
221
-
222
- const PageHeaderContent = /*#__PURE__*/React.forwardRef(function PageHeaderContent(_ref3, ref) {
223
- let {
224
- className,
225
- children,
226
- title,
227
- renderIcon: IconElement,
228
- contextualActions,
229
- pageActions,
230
- ...other
231
- } = _ref3;
232
- const contentRef = React.useRef(null);
233
- const componentRef = ref ?? contentRef;
234
- const {
235
- setRefs,
236
- setPageActionsInstance
237
- } = context.usePageHeader();
238
- const classNames = cx({
239
- [`${PageHeaderUtils.blockClass}__content`]: true
240
- }, className);
241
- const titleRef = React.useRef(null);
242
- React.useEffect(() => {
243
- if (componentRef?.current) {
244
- setRefs(prev => ({
245
- ...prev,
246
- contentRef: componentRef,
247
- titleRef
248
- }));
249
- }
250
- // eslint-disable-next-line react-hooks/exhaustive-deps
251
- }, []);
252
- React.useEffect(() => {
253
- if (pageActions) {
254
- setPageActionsInstance(pageActions);
255
- }
256
- // eslint-disable-next-line react-hooks/exhaustive-deps
257
- }, [pageActions]);
258
- const [isEllipsisApplied, setIsEllipsisApplied] = React.useState(false);
259
- const isEllipsisActive = element => {
260
- setIsEllipsisApplied(element.offsetHeight < element.scrollHeight);
261
- return element.offsetHeight < element.scrollHeight;
262
- };
263
- useIsomorphicEffect.useIsomorphicEffect(() => {
264
- titleRef.current && isEllipsisActive(titleRef.current);
265
- }, [title]);
266
- return /*#__PURE__*/React.createElement(react.Section, _rollupPluginBabelHelpers.extends({
267
- as: "div",
268
- className: classNames,
269
- ref: componentRef
270
- }, other), /*#__PURE__*/React.createElement(react.Grid, null, /*#__PURE__*/React.createElement(react.Column, {
271
- lg: 16,
272
- md: 8,
273
- sm: 4
274
- }, /*#__PURE__*/React.createElement("div", {
275
- className: `${PageHeaderUtils.blockClass}__content__title-wrapper`
276
- }, /*#__PURE__*/React.createElement("div", {
277
- className: `${PageHeaderUtils.blockClass}__content__start`
278
- }, /*#__PURE__*/React.createElement("div", {
279
- className: `${PageHeaderUtils.blockClass}__content__title-container`
280
- }, IconElement && /*#__PURE__*/React.createElement("div", {
281
- className: `${PageHeaderUtils.blockClass}__content__icon`
282
- }, /*#__PURE__*/React.createElement(IconElement, null)), isEllipsisApplied ? /*#__PURE__*/React.createElement(react.DefinitionTooltip, {
283
- definition: title
284
- }, /*#__PURE__*/React.createElement(react.unstable_Text, {
285
- ref: titleRef,
286
- as: react.Heading,
287
- className: `${PageHeaderUtils.blockClass}__content__title`
288
- }, title)) : /*#__PURE__*/React.createElement(react.unstable_Text, {
289
- ref: titleRef,
290
- as: react.Heading,
291
- className: `${PageHeaderUtils.blockClass}__content__title`
292
- }, title)), contextualActions && /*#__PURE__*/React.createElement("div", {
293
- className: `${PageHeaderUtils.blockClass}__content__contextual-actions`
294
- }, contextualActions)), pageActions), children)));
295
- });
296
- PageHeaderContent.displayName = 'PageHeaderContent';
297
- PageHeaderContent.propTypes = {
298
- /**
299
- * Provide child elements to be rendered inside PageHeaderContent.
300
- */
301
- children: index.default.node,
302
- /**
303
- * Specify an optional className to be added to your PageHeaderContent
304
- */
305
- className: index.default.string,
306
- /**
307
- * The PageHeaderContent's contextual actions
308
- */
309
- contextualActions: index.default.node,
310
- /**
311
- * The PageHeaderContent's page actions
312
- */
313
- pageActions: index.default.node,
314
- /**
315
- * Provide an optional icon to render in front of the PageHeaderContent's title.
316
- */
317
- renderIcon: index.default.oneOfType([index.default.func, index.default.object]),
318
- /**
319
- * The PageHeaderContent's subtitle
320
- */
321
- subtitle: index.default.string,
322
- /**
323
- * The PageHeaderContent's title
324
- */
325
- title: index.default.string.isRequired
326
- };
327
-
328
- /**
329
- * ----------------
330
- * PageHeaderContentPageActions
331
- * ----------------
332
- */
333
-
334
- const PageHeaderContentPageActions = _ref4 => {
335
- let {
336
- className,
337
- children,
338
- menuButtonLabel = 'Actions',
339
- actions,
340
- ...other
341
- } = _ref4;
342
- const {
343
- setRefs,
344
- contentActionsClipped,
345
- breadcrumbActionsClipped,
346
- isContentActionsInBreadcrumbBar: isInBreadcrumbBar
347
- } = context.usePageHeader();
348
- const classNames = cx(`${PageHeaderUtils.blockClass}__content__page-actions`, {
349
- // Revisit this:
350
- // May want to only add this class if there are content actions in the breadcrumb bar as well
351
- [`${PageHeaderUtils.blockClass}__content__page-actions--clipped`]: isInBreadcrumbBar ? breadcrumbActionsClipped : contentActionsClipped
352
- }, className);
353
- const containerRef = React.useRef(null);
354
- const offsetRef = React.useRef(null);
355
- const [menuButtonVisibility, setMenuButtonVisibility] = React.useState(false);
356
- const [hiddenItems, setHiddenItems] = React.useState([]);
357
-
358
- // need to set the grid columns width based on the menu button's width
359
- // to avoid overlapping when resizing
360
- useIsomorphicEffect.useIsomorphicEffect(() => {
361
- if (menuButtonVisibility && offsetRef.current) {
362
- const width = offsetRef.current.offsetWidth;
363
- document.documentElement.style.setProperty('--page-header-title-grid-width', `${width}px`);
364
- }
365
- }, [menuButtonVisibility]);
366
- React.useEffect(() => {
367
- if (isInBreadcrumbBar) {
368
- setRefs(prev => ({
369
- ...prev,
370
- breadcrumbActions: containerRef
371
- }));
372
- } else {
373
- setRefs(prev => ({
374
- ...prev,
375
- contentActions: containerRef
376
- }));
377
- }
378
- }, [isInBreadcrumbBar, setRefs]);
379
- React.useEffect(() => {
380
- if (!containerRef.current || !Array.isArray(actions)) {
381
- return;
382
- }
383
- utilities.createOverflowHandler({
384
- container: containerRef.current,
385
- // exclude the hidden menu button from children
386
- maxVisibleItems: containerRef.current.children.length - 1,
387
- onChange: (visible, hidden) => {
388
- setHiddenItems(actions?.slice(visible.length));
389
- if (hidden.length > 0) {
390
- setMenuButtonVisibility(true);
391
- }
392
- }
393
- });
394
- }, [actions]);
395
- return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
396
- className: classNames,
397
- ref: containerRef
398
- }, other), Array.isArray(actions) && /*#__PURE__*/React.createElement(React.Fragment, null, actions.map(action => /*#__PURE__*/React.createElement("div", {
399
- key: action.id
400
- }, /*#__PURE__*/React.cloneElement(action.body, {
401
- ...action.body.props,
402
- onClick: action.onClick
403
- }))), /*#__PURE__*/React.createElement("span", {
404
- "data-offset": true,
405
- "data-hidden": true,
406
- ref: offsetRef
407
- }, /*#__PURE__*/React.createElement(react.MenuButton, {
408
- menuAlignment: "bottom-end",
409
- label: menuButtonLabel,
410
- size: "md"
411
- }, [...hiddenItems].reverse().map(item => /*#__PURE__*/React.createElement(react.MenuItem, _rollupPluginBabelHelpers.extends({
412
- key: item.id,
413
- onClick: item.onClick
414
- }, item.menuItem)))))));
415
- };
416
- PageHeaderContentPageActions.displayName = 'PageHeaderContentPageActions';
417
- PageHeaderContentPageActions.propTypes = {
418
- /**
419
- * The PageHeaderContent's page actions
420
- */
421
- actions: index.default.oneOfType([index.default.node, index.default.array]),
422
- /**
423
- * Provide child elements to be rendered inside PageHeaderContentPageActions.
424
- */
425
- children: index.default.node,
426
- /**
427
- * Specify an optional className to be added to your PageHeaderContentPageActions
428
- */
429
- className: index.default.string,
430
- /**
431
- * The PageHeaderContent's collapsible Menu button label
432
- */
433
- menuButtonLabel: index.default.string
434
- };
435
-
436
- /**
437
- * ----------------
438
- * PageHeaderContentText
439
- * ----------------
440
- */
441
-
442
- const PageHeaderContentText = _ref5 => {
443
- let {
444
- className,
445
- children,
446
- subtitle,
447
- ...other
448
- } = _ref5;
449
- const classNames = cx({
450
- [`${PageHeaderUtils.blockClass}__content__body`]: true
451
- }, className);
452
- return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
453
- className: classNames
454
- }, other), subtitle && /*#__PURE__*/React.createElement(react.unstable_Text, {
455
- as: "h3",
456
- className: `${PageHeaderUtils.blockClass}__content__subtitle`
457
- }, subtitle), children);
458
- };
459
- PageHeaderContentText.displayName = 'PageHeaderContentText';
460
- PageHeaderContentText.propTypes = {
461
- /**
462
- * Provide child elements to be rendered inside PageHeaderContentText.
463
- */
464
- children: index.default.node,
465
- /**
466
- * Specify an optional className to be added to your PageHeaderContentText
467
- */
468
- className: index.default.string,
469
- /**
470
- * The PageHeaderContent's subtitle
471
- */
472
- subtitle: index.default.string
473
- };
474
-
475
- /**
476
- * ----------------
477
- * PageHeaderHeroImage
478
- * ----------------
479
- */
480
-
481
- const PageHeaderHeroImage = _ref6 => {
482
- let {
483
- className,
484
- children,
485
- ...other
486
- } = _ref6;
487
- const [lgBreakpoint, setLgBreakpoint] = React.useState(false);
488
- const classNames = cx({
489
- [`${PageHeaderUtils.blockClass}__hero-image`]: true
490
- }, className);
491
- const lgMediaQuery = `(min-width: ${layout.breakpoints.lg.width})`;
492
- React.useEffect(() => {
493
- const listener = event => {
494
- setLgBreakpoint(event.matches);
495
- };
496
- const mediaQueryList = window.matchMedia(lgMediaQuery);
497
- mediaQueryList.addEventListener('change', listener);
498
- setLgBreakpoint(mediaQueryList.matches);
499
- return () => {
500
- mediaQueryList.removeEventListener('change', listener);
501
- };
502
- }, [lgMediaQuery]);
503
- return /*#__PURE__*/React.createElement(react.AspectRatio, _rollupPluginBabelHelpers.extends({
504
- className: classNames
505
- }, other, {
506
- ratio: lgBreakpoint ? '2x1' : '3x2'
507
- }), children);
508
- };
509
- PageHeaderHeroImage.displayName = 'PageHeaderHeroImage';
510
- PageHeaderHeroImage.propTypes = {
511
- /**
512
- * Provide child elements to be rendered inside PageHeaderHeroImage.
513
- */
514
- children: index.default.node,
515
- /**
516
- * Specify an optional className to be added to your PageHeaderHeroImage
517
- */
518
- className: index.default.string
519
- };
520
-
521
- /**
522
- * ----------------
523
- * PageHeaderTabBar
524
- * ----------------
525
- */
526
-
527
- const PageHeaderTabBar = /*#__PURE__*/React.forwardRef(function PageHeaderTabBar(_ref7, ref) {
528
- let {
529
- className,
530
- children,
531
- tags,
532
- scroller,
533
- ...other
534
- } = _ref7;
535
- const classNames = cx({
536
- [`${PageHeaderUtils.blockClass}__tab-bar`]: true
537
- }, className);
538
- const renderScroller = () => scroller && /*#__PURE__*/React.createElement("div", {
539
- className: `${settings.pkg.prefix}--page-header--scroller-button-container`
540
- }, scroller);
541
-
542
- // Early return if no tags are provided
543
- if (!tags) {
544
- return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
545
- className: classNames,
546
- ref: ref
547
- }, other), /*#__PURE__*/React.createElement(react.Grid, {
548
- condensed: true
549
- }, /*#__PURE__*/React.createElement(react.Column, {
550
- lg: 16,
551
- md: 8,
552
- sm: 4
553
- }, children, renderScroller())));
554
- }
555
- return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
556
- className: classNames,
557
- ref: ref
558
- }, other), /*#__PURE__*/React.createElement(react.Grid, {
559
- condensed: true
560
- }, /*#__PURE__*/React.createElement(react.Column, {
561
- lg: 16,
562
- md: 8,
563
- sm: 4
564
- }, /*#__PURE__*/React.createElement("div", {
565
- className: cx(`${PageHeaderUtils.blockClass}__tab-bar--tablist`, {
566
- [`${settings.pkg.prefix}--page-header__tab-bar--with-scroller`]: !!scroller
567
- })
568
- }, children, tags, renderScroller()))));
569
- });
570
- PageHeaderTabBar.displayName = 'PageHeaderTabBar';
571
- const PageHeaderTagOverflow = /*#__PURE__*/React.forwardRef((_ref8, ref) => {
572
- let {
573
- renderOverflowTag,
574
- renderPopoverContent,
575
- children
576
- } = _ref8;
577
- const [openPopover, setOpenPopover] = React.useState(false);
578
- const [hiddenTags, setHiddenTags] = React.useState([]);
579
- const localRef = React.useRef(null);
580
- const tagsContainerRef = ref || localRef;
581
- // To close popover when window resizes
582
- React.useEffect(() => {
583
- const handleResize = () => {
584
- // Close the popover when window resizes to prevent unwanted opens
585
- setOpenPopover(false);
586
- };
587
- window.addEventListener('resize', handleResize);
588
- return () => {
589
- window.removeEventListener('resize', handleResize);
590
- };
591
- }, []);
592
- const handleOverflowClick = React.useCallback(event => {
593
- event.stopPropagation();
594
- setOpenPopover(prev => !prev);
595
- }, []);
596
- React.useEffect(() => {
597
- overflowHandler.createOverflowHandler({
598
- container: tagsContainerRef.current,
599
- onChange: (_, hidden) => {
600
- setHiddenTags(hidden);
601
- }
602
- });
603
- // Don't want ref in dependency array
604
- // eslint-disable-next-line react-hooks/exhaustive-deps
605
- }, []);
606
- return /*#__PURE__*/React.createElement("div", {
607
- ref: tagsContainerRef,
608
- className: cx(`${settings.pkg.prefix}--page-header--tag-overflow-container`, {
609
- [`${settings.pkg.prefix}--page-header--tag-overflow-container__has-no-hidden-items`]: !hiddenTags.length
610
- })
611
- }, children, /*#__PURE__*/React.createElement(react.Popover, {
612
- open: openPopover,
613
- onRequestClose: () => setOpenPopover(false),
614
- "data-fixed": true,
615
- className: cx(`${settings.pkg.prefix}--page-header--tag-overflow-popover`, {
616
- [`${settings.pkg.prefix}--page-header--tag-overflow-popover__hidden`]: !hiddenTags.length
617
- })
618
- }, renderOverflowTag?.(hiddenTags, handleOverflowClick, openPopover), /*#__PURE__*/React.createElement(react.PopoverContent, null, /*#__PURE__*/React.createElement("div", {
619
- className: `${PageHeaderUtils.blockClass}__tags-popover-list`
620
- }, renderPopoverContent?.(hiddenTags)))));
621
- });
622
- PageHeaderTagOverflow.displayName = 'PageHeaderTagOverflow';
623
- const PageHeaderScrollButton = /*#__PURE__*/React.forwardRef(function PageHeaderExpander(_ref9, ref) {
624
- let {
625
- className,
626
- children,
627
- label,
628
- onClick,
629
- collapseText = 'Collapse',
630
- expandText = 'Expand',
631
- ...other
632
- } = _ref9;
633
- const {
634
- refs,
635
- fullyCollapsed
636
- } = context.usePageHeader();
637
- const handleScroller = isFullyCollapsed => {
638
- if (!refs?.contentRef?.current) {
639
- return;
640
- }
641
- const scrollableTarget = utils.scrollableAncestor(refs?.contentRef.current);
642
-
643
- // Page header content is not fully collapsed
644
- if (!isFullyCollapsed) {
645
- const pageHeaderContentHeight = refs?.contentRef.current.offsetHeight;
646
- scrollableTarget?.scrollTo({
647
- top: pageHeaderContentHeight,
648
- // headerTopValue, check if breadcrumb bar is included
649
- behavior: 'smooth'
650
- });
651
- } else {
652
- // Page header content is fully collapsed
653
- scrollableTarget?.scrollTo({
654
- top: 0,
655
- behavior: 'smooth'
656
- });
657
- }
658
- };
659
- return /*#__PURE__*/React.createElement(react.IconButton, _rollupPluginBabelHelpers.extends({
660
- ref: ref,
661
- label: fullyCollapsed ? expandText : collapseText,
662
- size: "md",
663
- kind: "ghost",
664
- autoAlign: true
665
- }, other, {
666
- onClick: event => {
667
- onClick?.(event);
668
- handleScroller(!!fullyCollapsed);
669
- },
670
- className: cx(className, `${settings.pkg.prefix}--page-header--scroller-button`)
671
- }), /*#__PURE__*/React.createElement(icons.ChevronUp, {
672
- className: cx(`${settings.pkg.prefix}--page-header--scroller-button-icon`, {
673
- [`${settings.pkg.prefix}--page-header--scroller-button-icon-collapsed`]: fullyCollapsed
674
- })
675
- }));
676
- });
677
- const PageHeaderTitleBreadcrumb = /*#__PURE__*/React.forwardRef((_ref10, ref) => {
678
- let {
679
- className,
680
- children,
681
- ...other
682
- } = _ref10;
683
- const {
684
- titleClipped,
685
- refs
686
- } = context.usePageHeader();
687
- return /*#__PURE__*/React.createElement(react.BreadcrumbItem, _rollupPluginBabelHelpers.extends({
688
- ref: ref,
689
- isCurrentPage: true
690
- }, other, {
691
- className: cx(className, `${settings.pkg.prefix}--page-header-title-breadcrumb`, {
692
- [`${settings.pkg.prefix}--page-header-title-breadcrumb-show`]: titleClipped && refs?.titleRef,
693
- [`${settings.pkg.prefix}--page-header-title-breadcrumb-show__with-content-element`]: !!refs?.contentRef,
694
- [`${settings.pkg.prefix}--page-header-title-breadcrumb-show__without-content-element`]: !refs?.contentRef
695
- })
696
- }), children);
697
- });
698
- // This component is a wrapper for the Breadcrumb, and renders breadcrumb items as children
699
- // including the overflow breadcrumb item. The overflowHandler determines what elements
700
- // are visible and hidden and passes the hidden elements back to the render prop used
701
- // to display the overflow breadcrumb
702
- const PageHeaderBreadcrumbOverflow = /*#__PURE__*/React.forwardRef((_ref11, ref) => {
703
- let {
704
- renderOverflowBreadcrumb,
705
- className,
706
- children,
707
- ...other
708
- } = _ref11;
709
- const [hiddenBreadcrumbs, setHiddenBreadcrumbs] = React.useState([]);
710
- const fallbackRef = React.useRef(null);
711
- const componentRef = ref ?? fallbackRef;
712
-
713
- // Initialize overflow resize handler
714
- const carbonPrefix = react.usePrefix();
715
- React.useEffect(() => {
716
- if (!componentRef) {
717
- return;
718
- }
719
- const breadcrumbList = componentRef?.current.querySelector(`.${carbonPrefix}--breadcrumb`);
720
- overflowHandler.createOverflowHandler({
721
- container: breadcrumbList,
722
- onChange: (_, hidden) => {
723
- setHiddenBreadcrumbs(hidden);
724
- }
725
- });
726
- // Don't want ref or carbon prefix in dependency array
727
- // eslint-disable-next-line react-hooks/exhaustive-deps
728
- }, []);
729
- const renderChildren = () => {
730
- // Only BreadcrumbItems and TitleBreadcrumbs are valid children
731
- const filteredBreadcrumbs = React.Children.toArray(children).filter(child => {
732
- if (/*#__PURE__*/React.isValidElement(child)) {
733
- return child.type === react.BreadcrumbItem || PageHeaderTitleBreadcrumb;
734
- }
735
- });
736
- // We need to clone the renderProp for the overflow breadcrumb item
737
- // to place it before the title breadcrumb according to the design
738
- if (filteredBreadcrumbs) {
739
- const overflowBreadcrumb = renderOverflowBreadcrumb?.(hiddenBreadcrumbs);
740
- // If no overflow breadcrumb provided, return here with the rest of the children
741
- if (!overflowBreadcrumb) {
742
- return children;
743
- }
744
- const clonedTitleBreadcrumb = /*#__PURE__*/React.cloneElement(overflowBreadcrumb, {
745
- key: 'cloned overflow breadcrumb item',
746
- 'data-fixed': true,
747
- className: cx(`${settings.pkg.prefix}--page-header-breadcrumb-overflow-item`, {
748
- [`${settings.pkg.prefix}--page-header-overflow-breadcrumb-item-with-items`]: hiddenBreadcrumbs.length
749
- })
750
- });
751
- const clonedChildren = [...filteredBreadcrumbs];
752
- clonedChildren.splice(filteredBreadcrumbs.length - 1, 0, clonedTitleBreadcrumb); // second to last position
753
- return clonedChildren;
754
- }
755
- return children;
756
- };
757
- return /*#__PURE__*/React.createElement(react.Breadcrumb, _rollupPluginBabelHelpers.extends({
758
- className: cx(className, `${settings.pkg.prefix}--page-header-breadcrumb-overflow`),
759
- ref: componentRef
760
- }, other), renderChildren());
761
- });
762
-
763
151
  /**
764
152
  * -------
765
153
  * Exports
@@ -767,27 +155,37 @@ const PageHeaderBreadcrumbOverflow = /*#__PURE__*/React.forwardRef((_ref11, ref)
767
155
  */
768
156
  const Root = PageHeader;
769
157
  Root.displayName = 'PageHeader.Root';
770
- const BreadcrumbBar = PageHeaderBreadcrumbBar;
158
+ const BreadcrumbBar = PageHeaderBreadcrumbBar.PageHeaderBreadcrumbBar;
771
159
  BreadcrumbBar.displayName = 'PageHeaderBreadcrumbBar';
772
- const Content = PageHeaderContent;
160
+ const Content = PageHeaderContent.PageHeaderContent;
773
161
  Content.displayName = 'PageHeaderContent';
774
- const ContentPageActions = PageHeaderContentPageActions;
162
+ const ContentPageActions = PageHeaderContentPageActions.PageHeaderContentPageActions;
775
163
  ContentPageActions.displayName = 'PageHeaderContentPageActions';
776
- const ContentText = PageHeaderContentText;
164
+ const ContentText = PageHeaderContentText.PageHeaderContentText;
777
165
  ContentText.displayName = 'PageHeaderContentText';
778
- const HeroImage = PageHeaderHeroImage;
166
+ const HeroImage = PageHeaderHeroImage.PageHeaderHeroImage;
779
167
  HeroImage.displayName = 'PageHeaderHeroImage';
780
- const TabBar = PageHeaderTabBar;
168
+ const TabBar = PageHeaderTabBar.PageHeaderTabBar;
781
169
  TabBar.displayName = 'PageHeaderTabBar';
782
- const ScrollButton = PageHeaderScrollButton;
170
+ const ScrollButton = PageHeaderScrollButton.PageHeaderScrollButton;
783
171
  ScrollButton.displayName = 'PageHeaderScrollButton';
784
- const TitleBreadcrumb = PageHeaderTitleBreadcrumb;
172
+ const TitleBreadcrumb = PageHeaderTitleBreadcrumb.PageHeaderTitleBreadcrumb;
785
173
  TitleBreadcrumb.displayName = 'PageHeaderTitleBreadcrumb';
786
- const BreadcrumbOverflow = PageHeaderBreadcrumbOverflow;
174
+ const BreadcrumbOverflow = PageHeaderBreadcrumbOverflow.PageHeaderBreadcrumbOverflow;
787
175
  BreadcrumbOverflow.displayName = 'PageHeaderBreadcrumbOverflow';
788
- const TagOverflow = PageHeaderTagOverflow;
176
+ const TagOverflow = PageHeaderTagOverflow.PageHeaderTagOverflow;
789
177
  TagOverflow.displayName = 'PageHeaderTagOverflow';
790
178
 
179
+ exports.PageHeaderBreadcrumbBar = PageHeaderBreadcrumbBar.PageHeaderBreadcrumbBar;
180
+ exports.PageHeaderContent = PageHeaderContent.PageHeaderContent;
181
+ exports.PageHeaderContentPageActions = PageHeaderContentPageActions.PageHeaderContentPageActions;
182
+ exports.PageHeaderContentText = PageHeaderContentText.PageHeaderContentText;
183
+ exports.PageHeaderHeroImage = PageHeaderHeroImage.PageHeaderHeroImage;
184
+ exports.PageHeaderTabBar = PageHeaderTabBar.PageHeaderTabBar;
185
+ exports.PageHeaderTagOverflow = PageHeaderTagOverflow.PageHeaderTagOverflow;
186
+ exports.PageHeaderScrollButton = PageHeaderScrollButton.PageHeaderScrollButton;
187
+ exports.PageHeaderTitleBreadcrumb = PageHeaderTitleBreadcrumb.PageHeaderTitleBreadcrumb;
188
+ exports.PageHeaderBreadcrumbOverflow = PageHeaderBreadcrumbOverflow.PageHeaderBreadcrumbOverflow;
791
189
  exports.BreadcrumbBar = BreadcrumbBar;
792
190
  exports.BreadcrumbOverflow = BreadcrumbOverflow;
793
191
  exports.Content = Content;
@@ -795,16 +193,6 @@ exports.ContentPageActions = ContentPageActions;
795
193
  exports.ContentText = ContentText;
796
194
  exports.HeroImage = HeroImage;
797
195
  exports.PageHeader = PageHeader;
798
- exports.PageHeaderBreadcrumbBar = PageHeaderBreadcrumbBar;
799
- exports.PageHeaderBreadcrumbOverflow = PageHeaderBreadcrumbOverflow;
800
- exports.PageHeaderContent = PageHeaderContent;
801
- exports.PageHeaderContentPageActions = PageHeaderContentPageActions;
802
- exports.PageHeaderContentText = PageHeaderContentText;
803
- exports.PageHeaderHeroImage = PageHeaderHeroImage;
804
- exports.PageHeaderScrollButton = PageHeaderScrollButton;
805
- exports.PageHeaderTabBar = PageHeaderTabBar;
806
- exports.PageHeaderTagOverflow = PageHeaderTagOverflow;
807
- exports.PageHeaderTitleBreadcrumb = PageHeaderTitleBreadcrumb;
808
196
  exports.Root = Root;
809
197
  exports.ScrollButton = ScrollButton;
810
198
  exports.TabBar = TabBar;