@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.
- package/css/index-full-carbon.css +18 -13
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +1 -1
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +18 -13
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +1 -1
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +18 -13
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +1 -1
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +18 -13
- package/css/index.css.map +1 -1
- package/css/index.min.css +1 -1
- package/css/index.min.css.map +1 -1
- package/es/components/Coachmark/next/Coachmark/ContentHeader.js +2 -1
- package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.js +12 -1
- package/es/components/CreateTearsheet/CreateTearsheet.d.ts +1 -0
- package/es/components/CreateTearsheet/CreateTearsheet.js +3 -0
- package/es/components/CreateTearsheet/CreateTearsheetStep.d.ts +4 -0
- package/es/components/CreateTearsheet/CreateTearsheetStep.js +7 -1
- package/es/components/EditInPlace/EditInPlace.d.ts +12 -1
- package/es/components/EditInPlace/EditInPlace.js +52 -31
- package/es/components/ImportModal/ImportModal.d.ts +5 -1
- package/es/components/ImportModal/ImportModal.js +12 -6
- package/es/components/PageHeader/next/PageHeader.d.ts +15 -238
- package/es/components/PageHeader/next/PageHeader.js +25 -637
- package/es/components/PageHeader/next/PageHeaderBreadcrumbBar.d.ts +41 -0
- package/es/components/PageHeader/next/PageHeaderBreadcrumbBar.js +74 -0
- package/es/components/PageHeader/next/PageHeaderBreadcrumbOverflow.d.ts +12 -0
- package/es/components/PageHeader/next/PageHeaderBreadcrumbOverflow.js +82 -0
- package/es/components/PageHeader/next/PageHeaderContent.d.ts +39 -0
- package/es/components/PageHeader/next/PageHeaderContent.js +129 -0
- package/es/components/PageHeader/next/PageHeaderContentPageActions.d.ts +52 -0
- package/es/components/PageHeader/next/PageHeaderContentPageActions.js +126 -0
- package/es/components/PageHeader/next/PageHeaderContentText.d.ts +44 -0
- package/es/components/PageHeader/next/PageHeaderContentText.js +54 -0
- package/es/components/PageHeader/next/PageHeaderHeroImage.d.ts +36 -0
- package/es/components/PageHeader/next/PageHeaderHeroImage.js +62 -0
- package/es/components/PageHeader/next/PageHeaderScrollButton.d.ts +13 -0
- package/es/components/PageHeader/next/PageHeaderScrollButton.js +73 -0
- package/es/components/PageHeader/next/PageHeaderTabBar.d.ts +19 -0
- package/es/components/PageHeader/next/PageHeaderTabBar.js +66 -0
- package/es/components/PageHeader/next/PageHeaderTagOverflow.d.ts +13 -0
- package/es/components/PageHeader/next/PageHeaderTagOverflow.js +68 -0
- package/es/components/PageHeader/next/PageHeaderTitleBreadcrumb.d.ts +9 -0
- package/es/components/PageHeader/next/PageHeaderTitleBreadcrumb.js +43 -0
- package/es/components/PageHeader/next/index.d.ts +3 -2
- package/es/components/PageHeader/next/index.js +11 -1
- package/es/global/js/hooks/useCreateComponentStepChange.d.ts +2 -1
- package/es/global/js/hooks/useCreateComponentStepChange.js +3 -2
- package/es/global/js/hooks/usePortalTarget.js +1 -1
- package/es/global/js/utils/makeDraggable/makeDraggable.js +22 -13
- package/lib/components/Coachmark/next/Coachmark/ContentHeader.js +2 -1
- package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.js +12 -1
- package/lib/components/CreateTearsheet/CreateTearsheet.d.ts +1 -0
- package/lib/components/CreateTearsheet/CreateTearsheet.js +3 -0
- package/lib/components/CreateTearsheet/CreateTearsheetStep.d.ts +4 -0
- package/lib/components/CreateTearsheet/CreateTearsheetStep.js +7 -1
- package/lib/components/EditInPlace/EditInPlace.d.ts +12 -1
- package/lib/components/EditInPlace/EditInPlace.js +50 -29
- package/lib/components/ImportModal/ImportModal.d.ts +5 -1
- package/lib/components/ImportModal/ImportModal.js +12 -6
- package/lib/components/PageHeader/next/PageHeader.d.ts +15 -238
- package/lib/components/PageHeader/next/PageHeader.js +42 -654
- package/lib/components/PageHeader/next/PageHeaderBreadcrumbBar.d.ts +41 -0
- package/lib/components/PageHeader/next/PageHeaderBreadcrumbBar.js +76 -0
- package/lib/components/PageHeader/next/PageHeaderBreadcrumbOverflow.d.ts +12 -0
- package/lib/components/PageHeader/next/PageHeaderBreadcrumbOverflow.js +84 -0
- package/lib/components/PageHeader/next/PageHeaderContent.d.ts +39 -0
- package/lib/components/PageHeader/next/PageHeaderContent.js +131 -0
- package/lib/components/PageHeader/next/PageHeaderContentPageActions.d.ts +52 -0
- package/lib/components/PageHeader/next/PageHeaderContentPageActions.js +128 -0
- package/lib/components/PageHeader/next/PageHeaderContentText.d.ts +44 -0
- package/lib/components/PageHeader/next/PageHeaderContentText.js +56 -0
- package/lib/components/PageHeader/next/PageHeaderHeroImage.d.ts +36 -0
- package/lib/components/PageHeader/next/PageHeaderHeroImage.js +64 -0
- package/lib/components/PageHeader/next/PageHeaderScrollButton.d.ts +13 -0
- package/lib/components/PageHeader/next/PageHeaderScrollButton.js +75 -0
- package/lib/components/PageHeader/next/PageHeaderTabBar.d.ts +19 -0
- package/lib/components/PageHeader/next/PageHeaderTabBar.js +68 -0
- package/lib/components/PageHeader/next/PageHeaderTagOverflow.d.ts +13 -0
- package/lib/components/PageHeader/next/PageHeaderTagOverflow.js +70 -0
- package/lib/components/PageHeader/next/PageHeaderTitleBreadcrumb.d.ts +9 -0
- package/lib/components/PageHeader/next/PageHeaderTitleBreadcrumb.js +45 -0
- package/lib/components/PageHeader/next/index.d.ts +3 -2
- package/lib/components/PageHeader/next/index.js +20 -10
- package/lib/global/js/hooks/useCreateComponentStepChange.d.ts +2 -1
- package/lib/global/js/hooks/useCreateComponentStepChange.js +3 -2
- package/lib/global/js/hooks/usePortalTarget.js +1 -1
- package/lib/global/js/utils/makeDraggable/makeDraggable.js +22 -13
- package/package.json +7 -7
- package/scss/components/Datagrid/_datagrid.scss +7 -10
- package/scss/components/EditInPlace/_edit-in-place.scss +11 -3
- package/scss/components/PageHeader/_page-header.scss +2 -1
- package/telemetry.yml +13 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
/**
|
|
9
|
+
* ----------------
|
|
10
|
+
* PageHeaderHeroImage
|
|
11
|
+
* ----------------
|
|
12
|
+
*/
|
|
13
|
+
export interface PageHeaderHeroImageProps {
|
|
14
|
+
/**
|
|
15
|
+
* Provide child elements to be rendered inside PageHeaderHeroImage.
|
|
16
|
+
*/
|
|
17
|
+
children?: React.ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* Specify an optional className to be added to your PageHeaderHeroImage
|
|
20
|
+
*/
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const PageHeaderHeroImage: {
|
|
24
|
+
({ className, children, ...other }: PageHeaderHeroImageProps): React.JSX.Element;
|
|
25
|
+
displayName: string;
|
|
26
|
+
propTypes: {
|
|
27
|
+
/**
|
|
28
|
+
* Provide child elements to be rendered inside PageHeaderHeroImage.
|
|
29
|
+
*/
|
|
30
|
+
children: any;
|
|
31
|
+
/**
|
|
32
|
+
* Specify an optional className to be added to your PageHeaderHeroImage
|
|
33
|
+
*/
|
|
34
|
+
className: any;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2020, 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
|
|
11
|
+
var React = require('react');
|
|
12
|
+
var index = require('../../../_virtual/index.js');
|
|
13
|
+
var cx = require('classnames');
|
|
14
|
+
var react = require('@carbon/react');
|
|
15
|
+
var layout = require('@carbon/layout');
|
|
16
|
+
var PageHeaderUtils = require('../PageHeaderUtils.js');
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* ----------------
|
|
20
|
+
* PageHeaderHeroImage
|
|
21
|
+
* ----------------
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
const PageHeaderHeroImage = _ref => {
|
|
25
|
+
let {
|
|
26
|
+
className,
|
|
27
|
+
children,
|
|
28
|
+
...other
|
|
29
|
+
} = _ref;
|
|
30
|
+
const [lgBreakpoint, setLgBreakpoint] = React.useState(false);
|
|
31
|
+
const classNames = cx({
|
|
32
|
+
[`${PageHeaderUtils.blockClass}__hero-image`]: true
|
|
33
|
+
}, className);
|
|
34
|
+
const lgMediaQuery = `(min-width: ${layout.breakpoints.lg.width})`;
|
|
35
|
+
React.useEffect(() => {
|
|
36
|
+
const listener = event => {
|
|
37
|
+
setLgBreakpoint(event.matches);
|
|
38
|
+
};
|
|
39
|
+
const mediaQueryList = window.matchMedia(lgMediaQuery);
|
|
40
|
+
mediaQueryList.addEventListener('change', listener);
|
|
41
|
+
setLgBreakpoint(mediaQueryList.matches);
|
|
42
|
+
return () => {
|
|
43
|
+
mediaQueryList.removeEventListener('change', listener);
|
|
44
|
+
};
|
|
45
|
+
}, [lgMediaQuery]);
|
|
46
|
+
return /*#__PURE__*/React.createElement(react.AspectRatio, _rollupPluginBabelHelpers.extends({
|
|
47
|
+
className: classNames
|
|
48
|
+
}, other, {
|
|
49
|
+
ratio: lgBreakpoint ? '2x1' : '3x2'
|
|
50
|
+
}), children);
|
|
51
|
+
};
|
|
52
|
+
PageHeaderHeroImage.displayName = 'PageHeaderHeroImage';
|
|
53
|
+
PageHeaderHeroImage.propTypes = {
|
|
54
|
+
/**
|
|
55
|
+
* Provide child elements to be rendered inside PageHeaderHeroImage.
|
|
56
|
+
*/
|
|
57
|
+
children: index.default.node,
|
|
58
|
+
/**
|
|
59
|
+
* Specify an optional className to be added to your PageHeaderHeroImage
|
|
60
|
+
*/
|
|
61
|
+
className: index.default.string
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
exports.PageHeaderHeroImage = PageHeaderHeroImage;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import { IconButtonProps } from '@carbon/react';
|
|
9
|
+
export interface PageHeaderScrollButtonProps extends IconButtonProps {
|
|
10
|
+
collapseText?: string;
|
|
11
|
+
expandText?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const PageHeaderScrollButton: React.ForwardRefExoticComponent<PageHeaderScrollButtonProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2020, 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
|
|
11
|
+
var React = require('react');
|
|
12
|
+
var cx = require('classnames');
|
|
13
|
+
var react = require('@carbon/react');
|
|
14
|
+
var icons = require('@carbon/react/icons');
|
|
15
|
+
var context = require('./context.js');
|
|
16
|
+
var utils = require('./utils.js');
|
|
17
|
+
var settings = require('../../../settings.js');
|
|
18
|
+
|
|
19
|
+
const PageHeaderScrollButton = /*#__PURE__*/React.forwardRef(function PageHeaderExpander(_ref, ref) {
|
|
20
|
+
let {
|
|
21
|
+
className,
|
|
22
|
+
children,
|
|
23
|
+
label,
|
|
24
|
+
onClick,
|
|
25
|
+
collapseText = 'Collapse',
|
|
26
|
+
expandText = 'Expand',
|
|
27
|
+
...other
|
|
28
|
+
} = _ref;
|
|
29
|
+
const {
|
|
30
|
+
refs,
|
|
31
|
+
fullyCollapsed
|
|
32
|
+
} = context.usePageHeader();
|
|
33
|
+
const handleScroller = isFullyCollapsed => {
|
|
34
|
+
if (!refs?.contentRef?.current) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const scrollableTarget = utils.scrollableAncestor(refs?.contentRef.current);
|
|
38
|
+
|
|
39
|
+
// Page header content is not fully collapsed
|
|
40
|
+
if (!isFullyCollapsed) {
|
|
41
|
+
const pageHeaderContentHeight = refs?.contentRef.current.offsetHeight;
|
|
42
|
+
scrollableTarget?.scrollTo({
|
|
43
|
+
top: pageHeaderContentHeight,
|
|
44
|
+
// headerTopValue, check if breadcrumb bar is included
|
|
45
|
+
behavior: 'smooth'
|
|
46
|
+
});
|
|
47
|
+
} else {
|
|
48
|
+
// Page header content is fully collapsed
|
|
49
|
+
scrollableTarget?.scrollTo({
|
|
50
|
+
top: 0,
|
|
51
|
+
behavior: 'smooth'
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
return /*#__PURE__*/React.createElement(react.IconButton, _rollupPluginBabelHelpers.extends({
|
|
56
|
+
ref: ref,
|
|
57
|
+
label: fullyCollapsed ? expandText : collapseText,
|
|
58
|
+
size: "md",
|
|
59
|
+
kind: "ghost",
|
|
60
|
+
autoAlign: true
|
|
61
|
+
}, other, {
|
|
62
|
+
onClick: event => {
|
|
63
|
+
onClick?.(event);
|
|
64
|
+
handleScroller(!!fullyCollapsed);
|
|
65
|
+
},
|
|
66
|
+
className: cx(className, `${settings.pkg.prefix}--page-header--scroller-button`)
|
|
67
|
+
}), /*#__PURE__*/React.createElement(icons.ChevronUp, {
|
|
68
|
+
className: cx(`${settings.pkg.prefix}--page-header--scroller-button-icon`, {
|
|
69
|
+
[`${settings.pkg.prefix}--page-header--scroller-button-icon-collapsed`]: fullyCollapsed
|
|
70
|
+
})
|
|
71
|
+
}));
|
|
72
|
+
});
|
|
73
|
+
PageHeaderScrollButton.displayName = 'PageHeaderScrollButton';
|
|
74
|
+
|
|
75
|
+
exports.PageHeaderScrollButton = PageHeaderScrollButton;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
/**
|
|
9
|
+
* ----------------
|
|
10
|
+
* PageHeaderTabBar
|
|
11
|
+
* ----------------
|
|
12
|
+
*/
|
|
13
|
+
export interface PageHeaderTabBarProps {
|
|
14
|
+
children?: React.ReactNode;
|
|
15
|
+
className?: string;
|
|
16
|
+
tags?: React.ReactNode;
|
|
17
|
+
scroller?: React.ReactNode;
|
|
18
|
+
}
|
|
19
|
+
export declare const PageHeaderTabBar: React.ForwardRefExoticComponent<PageHeaderTabBarProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2020, 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
|
|
11
|
+
var React = require('react');
|
|
12
|
+
var cx = require('classnames');
|
|
13
|
+
var react = require('@carbon/react');
|
|
14
|
+
var PageHeaderUtils = require('../PageHeaderUtils.js');
|
|
15
|
+
var settings = require('../../../settings.js');
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* ----------------
|
|
19
|
+
* PageHeaderTabBar
|
|
20
|
+
* ----------------
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
const PageHeaderTabBar = /*#__PURE__*/React.forwardRef(function PageHeaderTabBar(_ref, ref) {
|
|
24
|
+
let {
|
|
25
|
+
className,
|
|
26
|
+
children,
|
|
27
|
+
tags,
|
|
28
|
+
scroller,
|
|
29
|
+
...other
|
|
30
|
+
} = _ref;
|
|
31
|
+
const classNames = cx({
|
|
32
|
+
[`${PageHeaderUtils.blockClass}__tab-bar`]: true
|
|
33
|
+
}, className);
|
|
34
|
+
const renderScroller = () => scroller && /*#__PURE__*/React.createElement("div", {
|
|
35
|
+
className: `${settings.pkg.prefix}--page-header--scroller-button-container`
|
|
36
|
+
}, scroller);
|
|
37
|
+
|
|
38
|
+
// Early return if no tags are provided
|
|
39
|
+
if (!tags) {
|
|
40
|
+
return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
|
|
41
|
+
className: classNames,
|
|
42
|
+
ref: ref
|
|
43
|
+
}, other), /*#__PURE__*/React.createElement(react.Grid, {
|
|
44
|
+
condensed: true
|
|
45
|
+
}, /*#__PURE__*/React.createElement(react.Column, {
|
|
46
|
+
lg: 16,
|
|
47
|
+
md: 8,
|
|
48
|
+
sm: 4
|
|
49
|
+
}, children, renderScroller())));
|
|
50
|
+
}
|
|
51
|
+
return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
|
|
52
|
+
className: classNames,
|
|
53
|
+
ref: ref
|
|
54
|
+
}, other), /*#__PURE__*/React.createElement(react.Grid, {
|
|
55
|
+
condensed: true
|
|
56
|
+
}, /*#__PURE__*/React.createElement(react.Column, {
|
|
57
|
+
lg: 16,
|
|
58
|
+
md: 8,
|
|
59
|
+
sm: 4
|
|
60
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
61
|
+
className: cx(`${PageHeaderUtils.blockClass}__tab-bar--tablist`, {
|
|
62
|
+
[`${settings.pkg.prefix}--page-header__tab-bar--with-scroller`]: !!scroller
|
|
63
|
+
})
|
|
64
|
+
}, children, tags, renderScroller()))));
|
|
65
|
+
});
|
|
66
|
+
PageHeaderTabBar.displayName = 'PageHeaderTabBar';
|
|
67
|
+
|
|
68
|
+
exports.PageHeaderTabBar = PageHeaderTabBar;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
export interface PageHeaderTagOverflowProps {
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
renderOverflowTag?: (hiddenBreadcrumbs: HTMLElement[], handleOverflowClick: (event: React.MouseEvent) => void, openPopover: boolean) => React.ReactElement;
|
|
11
|
+
renderPopoverContent?: (hiddenBreadcrumbs: HTMLElement[]) => React.ReactElement;
|
|
12
|
+
}
|
|
13
|
+
export declare const PageHeaderTagOverflow: React.ForwardRefExoticComponent<PageHeaderTagOverflowProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2020, 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
var React = require('react');
|
|
11
|
+
var cx = require('classnames');
|
|
12
|
+
var react = require('@carbon/react');
|
|
13
|
+
var PageHeaderUtils = require('../PageHeaderUtils.js');
|
|
14
|
+
var overflowHandler = require('./overflowHandler.js');
|
|
15
|
+
var settings = require('../../../settings.js');
|
|
16
|
+
|
|
17
|
+
const PageHeaderTagOverflow = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
18
|
+
let {
|
|
19
|
+
renderOverflowTag,
|
|
20
|
+
renderPopoverContent,
|
|
21
|
+
children
|
|
22
|
+
} = _ref;
|
|
23
|
+
const [openPopover, setOpenPopover] = React.useState(false);
|
|
24
|
+
const [hiddenTags, setHiddenTags] = React.useState([]);
|
|
25
|
+
const localRef = React.useRef(null);
|
|
26
|
+
const tagsContainerRef = ref || localRef;
|
|
27
|
+
// To close popover when window resizes
|
|
28
|
+
React.useEffect(() => {
|
|
29
|
+
const handleResize = () => {
|
|
30
|
+
// Close the popover when window resizes to prevent unwanted opens
|
|
31
|
+
setOpenPopover(false);
|
|
32
|
+
};
|
|
33
|
+
window.addEventListener('resize', handleResize);
|
|
34
|
+
return () => {
|
|
35
|
+
window.removeEventListener('resize', handleResize);
|
|
36
|
+
};
|
|
37
|
+
}, []);
|
|
38
|
+
const handleOverflowClick = React.useCallback(event => {
|
|
39
|
+
event.stopPropagation();
|
|
40
|
+
setOpenPopover(prev => !prev);
|
|
41
|
+
}, []);
|
|
42
|
+
React.useEffect(() => {
|
|
43
|
+
overflowHandler.createOverflowHandler({
|
|
44
|
+
container: tagsContainerRef.current,
|
|
45
|
+
onChange: (_, hidden) => {
|
|
46
|
+
setHiddenTags(hidden);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
// Don't want ref in dependency array
|
|
50
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
51
|
+
}, []);
|
|
52
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
53
|
+
ref: tagsContainerRef,
|
|
54
|
+
className: cx(`${settings.pkg.prefix}--page-header--tag-overflow-container`, {
|
|
55
|
+
[`${settings.pkg.prefix}--page-header--tag-overflow-container__has-no-hidden-items`]: !hiddenTags.length
|
|
56
|
+
})
|
|
57
|
+
}, children, /*#__PURE__*/React.createElement(react.Popover, {
|
|
58
|
+
open: openPopover,
|
|
59
|
+
onRequestClose: () => setOpenPopover(false),
|
|
60
|
+
"data-fixed": true,
|
|
61
|
+
className: cx(`${settings.pkg.prefix}--page-header--tag-overflow-popover`, {
|
|
62
|
+
[`${settings.pkg.prefix}--page-header--tag-overflow-popover__hidden`]: !hiddenTags.length
|
|
63
|
+
})
|
|
64
|
+
}, renderOverflowTag?.(hiddenTags, handleOverflowClick, openPopover), /*#__PURE__*/React.createElement(react.PopoverContent, null, /*#__PURE__*/React.createElement("div", {
|
|
65
|
+
className: `${PageHeaderUtils.blockClass}__tags-popover-list`
|
|
66
|
+
}, renderPopoverContent?.(hiddenTags)))));
|
|
67
|
+
});
|
|
68
|
+
PageHeaderTagOverflow.displayName = 'PageHeaderTagOverflow';
|
|
69
|
+
|
|
70
|
+
exports.PageHeaderTagOverflow = PageHeaderTagOverflow;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import { BreadcrumbItemProps } from '@carbon/react';
|
|
9
|
+
export declare const PageHeaderTitleBreadcrumb: React.ForwardRefExoticComponent<BreadcrumbItemProps & React.RefAttributes<HTMLLIElement>>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2020, 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
|
|
11
|
+
var React = require('react');
|
|
12
|
+
var cx = require('classnames');
|
|
13
|
+
var react = require('@carbon/react');
|
|
14
|
+
var context = require('./context.js');
|
|
15
|
+
var settings = require('../../../settings.js');
|
|
16
|
+
|
|
17
|
+
const PageHeaderTitleBreadcrumb = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
18
|
+
let {
|
|
19
|
+
className,
|
|
20
|
+
children,
|
|
21
|
+
...other
|
|
22
|
+
} = _ref;
|
|
23
|
+
const {
|
|
24
|
+
titleClipped,
|
|
25
|
+
refs
|
|
26
|
+
} = context.usePageHeader();
|
|
27
|
+
// Show title breadcrumb when:
|
|
28
|
+
// 1. No content element exists (compact mode), OR
|
|
29
|
+
// 2. Title is clipped and titleRef exists (with content element)
|
|
30
|
+
const hasContentElement = refs?.contentRef?.current;
|
|
31
|
+
const shouldShow = !hasContentElement || titleClipped && !!refs?.titleRef;
|
|
32
|
+
return /*#__PURE__*/React.createElement(react.BreadcrumbItem, _rollupPluginBabelHelpers.extends({
|
|
33
|
+
ref: ref,
|
|
34
|
+
isCurrentPage: true
|
|
35
|
+
}, other, {
|
|
36
|
+
className: cx(className, `${settings.pkg.prefix}--page-header-title-breadcrumb`, {
|
|
37
|
+
[`${settings.pkg.prefix}--page-header-title-breadcrumb-show`]: shouldShow,
|
|
38
|
+
[`${settings.pkg.prefix}--page-header-title-breadcrumb-show__with-content-element`]: hasContentElement,
|
|
39
|
+
[`${settings.pkg.prefix}--page-header-title-breadcrumb-show__without-content-element`]: !hasContentElement
|
|
40
|
+
})
|
|
41
|
+
}), children);
|
|
42
|
+
});
|
|
43
|
+
PageHeaderTitleBreadcrumb.displayName = 'PageHeaderTitleBreadcrumb';
|
|
44
|
+
|
|
45
|
+
exports.PageHeaderTitleBreadcrumb = PageHeaderTitleBreadcrumb;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright IBM Corp. 2025,
|
|
2
|
+
* Copyright IBM Corp. 2025, 2026
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderContentPageActions, PageHeaderContentText, PageHeaderTabBar, PageHeaderHeroImage, PageHeaderScrollButton, PageHeaderTitleBreadcrumb, PageHeaderBreadcrumbOverflow, PageHeaderTagOverflow, Root, BreadcrumbBar, Content, ContentPageActions, ContentText, TabBar, HeroImage, ScrollButton, TitleBreadcrumb, BreadcrumbOverflow, TagOverflow, } from './PageHeader';
|
|
8
|
-
export type {
|
|
8
|
+
export type { PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderContentPageActionsProps, PageHeaderContentTextProps, PageHeaderTabBarProps, PageHeaderHeroImageProps, PageHeaderScrollButtonProps, PageHeaderTagOverflowProps, PageHeaderBreadcrumbOverflowProps, } from './PageHeader';
|
|
9
|
+
export type { PageHeaderProps } from './PageHeader';
|
|
@@ -8,6 +8,16 @@
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
10
|
var PageHeader = require('./PageHeader.js');
|
|
11
|
+
var PageHeaderBreadcrumbBar = require('./PageHeaderBreadcrumbBar.js');
|
|
12
|
+
var PageHeaderContent = require('./PageHeaderContent.js');
|
|
13
|
+
var PageHeaderContentPageActions = require('./PageHeaderContentPageActions.js');
|
|
14
|
+
var PageHeaderContentText = require('./PageHeaderContentText.js');
|
|
15
|
+
var PageHeaderTabBar = require('./PageHeaderTabBar.js');
|
|
16
|
+
var PageHeaderHeroImage = require('./PageHeaderHeroImage.js');
|
|
17
|
+
var PageHeaderScrollButton = require('./PageHeaderScrollButton.js');
|
|
18
|
+
var PageHeaderTitleBreadcrumb = require('./PageHeaderTitleBreadcrumb.js');
|
|
19
|
+
var PageHeaderBreadcrumbOverflow = require('./PageHeaderBreadcrumbOverflow.js');
|
|
20
|
+
var PageHeaderTagOverflow = require('./PageHeaderTagOverflow.js');
|
|
11
21
|
|
|
12
22
|
|
|
13
23
|
|
|
@@ -18,18 +28,18 @@ exports.ContentPageActions = PageHeader.ContentPageActions;
|
|
|
18
28
|
exports.ContentText = PageHeader.ContentText;
|
|
19
29
|
exports.HeroImage = PageHeader.HeroImage;
|
|
20
30
|
exports.PageHeader = PageHeader.PageHeader;
|
|
21
|
-
exports.PageHeaderBreadcrumbBar = PageHeader.PageHeaderBreadcrumbBar;
|
|
22
|
-
exports.PageHeaderBreadcrumbOverflow = PageHeader.PageHeaderBreadcrumbOverflow;
|
|
23
|
-
exports.PageHeaderContent = PageHeader.PageHeaderContent;
|
|
24
|
-
exports.PageHeaderContentPageActions = PageHeader.PageHeaderContentPageActions;
|
|
25
|
-
exports.PageHeaderContentText = PageHeader.PageHeaderContentText;
|
|
26
|
-
exports.PageHeaderHeroImage = PageHeader.PageHeaderHeroImage;
|
|
27
|
-
exports.PageHeaderScrollButton = PageHeader.PageHeaderScrollButton;
|
|
28
|
-
exports.PageHeaderTabBar = PageHeader.PageHeaderTabBar;
|
|
29
|
-
exports.PageHeaderTagOverflow = PageHeader.PageHeaderTagOverflow;
|
|
30
|
-
exports.PageHeaderTitleBreadcrumb = PageHeader.PageHeaderTitleBreadcrumb;
|
|
31
31
|
exports.Root = PageHeader.Root;
|
|
32
32
|
exports.ScrollButton = PageHeader.ScrollButton;
|
|
33
33
|
exports.TabBar = PageHeader.TabBar;
|
|
34
34
|
exports.TagOverflow = PageHeader.TagOverflow;
|
|
35
35
|
exports.TitleBreadcrumb = PageHeader.TitleBreadcrumb;
|
|
36
|
+
exports.PageHeaderBreadcrumbBar = PageHeaderBreadcrumbBar.PageHeaderBreadcrumbBar;
|
|
37
|
+
exports.PageHeaderContent = PageHeaderContent.PageHeaderContent;
|
|
38
|
+
exports.PageHeaderContentPageActions = PageHeaderContentPageActions.PageHeaderContentPageActions;
|
|
39
|
+
exports.PageHeaderContentText = PageHeaderContentText.PageHeaderContentText;
|
|
40
|
+
exports.PageHeaderTabBar = PageHeaderTabBar.PageHeaderTabBar;
|
|
41
|
+
exports.PageHeaderHeroImage = PageHeaderHeroImage.PageHeaderHeroImage;
|
|
42
|
+
exports.PageHeaderScrollButton = PageHeaderScrollButton.PageHeaderScrollButton;
|
|
43
|
+
exports.PageHeaderTitleBreadcrumb = PageHeaderTitleBreadcrumb.PageHeaderTitleBreadcrumb;
|
|
44
|
+
exports.PageHeaderBreadcrumbOverflow = PageHeaderBreadcrumbOverflow.PageHeaderBreadcrumbOverflow;
|
|
45
|
+
exports.PageHeaderTagOverflow = PageHeaderTagOverflow.PageHeaderTagOverflow;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function useCreateComponentStepChange({ firstIncludedStep, lastIncludedStep, stepData, onPrevious, onNext, isSubmitDisabled, setCurrentStep, setIsSubmitting, setLoadingPrevious, loadingPrevious, onClose, onRequestSubmit, componentName, currentStep, backButtonText, cancelButtonText, submitButtonText, nextButtonText, isSubmitting, componentBlockClass, setCreateComponentActions, setModalIsOpen, experimentalSecondarySubmit, experimentalSecondarySubmitText, }: {
|
|
1
|
+
export function useCreateComponentStepChange({ firstIncludedStep, lastIncludedStep, stepData, onPrevious, onNext, isSubmitDisabled, setCurrentStep, setIsSubmitting, setLoadingPrevious, loadingPrevious, onClose, onRequestSubmit, componentName, currentStep, backButtonText, cancelButtonText, submitButtonText, nextButtonText, isSubmitting, secondaryButtonDisabled, componentBlockClass, setCreateComponentActions, setModalIsOpen, experimentalSecondarySubmit, experimentalSecondarySubmitText, }: {
|
|
2
2
|
firstIncludedStep: any;
|
|
3
3
|
lastIncludedStep: any;
|
|
4
4
|
stepData: any;
|
|
@@ -18,6 +18,7 @@ export function useCreateComponentStepChange({ firstIncludedStep, lastIncludedSt
|
|
|
18
18
|
submitButtonText: any;
|
|
19
19
|
nextButtonText: any;
|
|
20
20
|
isSubmitting: any;
|
|
21
|
+
secondaryButtonDisabled?: boolean | undefined;
|
|
21
22
|
componentBlockClass: any;
|
|
22
23
|
setCreateComponentActions: any;
|
|
23
24
|
setModalIsOpen: any;
|
|
@@ -30,6 +30,7 @@ const useCreateComponentStepChange = _ref => {
|
|
|
30
30
|
submitButtonText,
|
|
31
31
|
nextButtonText,
|
|
32
32
|
isSubmitting,
|
|
33
|
+
secondaryButtonDisabled = false,
|
|
33
34
|
componentBlockClass,
|
|
34
35
|
setCreateComponentActions,
|
|
35
36
|
setModalIsOpen,
|
|
@@ -140,7 +141,7 @@ const useCreateComponentStepChange = _ref => {
|
|
|
140
141
|
label: backButtonText,
|
|
141
142
|
onClick: handlePrevious,
|
|
142
143
|
kind: 'secondary',
|
|
143
|
-
disabled: currentStep === firstIncludedStep,
|
|
144
|
+
disabled: currentStep === firstIncludedStep || secondaryButtonDisabled,
|
|
144
145
|
loading: loadingPrevious
|
|
145
146
|
});
|
|
146
147
|
}
|
|
@@ -170,7 +171,7 @@ const useCreateComponentStepChange = _ref => {
|
|
|
170
171
|
});
|
|
171
172
|
setCreateComponentActions(buttons);
|
|
172
173
|
}
|
|
173
|
-
}, [firstIncludedStep, lastIncludedStep, stepData, onNext, isSubmitDisabled, backButtonText, cancelButtonText, currentStep, onClose, nextButtonText, submitButtonText, onRequestSubmit, isSubmitting, componentBlockClass, componentName, continueToNextStep, setCurrentStep, setCreateComponentActions, setIsSubmitting, setModalIsOpen, moveToPreviousStep, onPrevious, setLoadingPrevious, loadingPrevious, experimentalSecondarySubmit, experimentalSecondarySubmitText]);
|
|
174
|
+
}, [firstIncludedStep, lastIncludedStep, stepData, onNext, isSubmitDisabled, backButtonText, cancelButtonText, currentStep, onClose, nextButtonText, submitButtonText, onRequestSubmit, isSubmitting, secondaryButtonDisabled, componentBlockClass, componentName, continueToNextStep, setCurrentStep, setCreateComponentActions, setIsSubmitting, setModalIsOpen, moveToPreviousStep, onPrevious, setLoadingPrevious, loadingPrevious, experimentalSecondarySubmit, experimentalSecondarySubmitText]);
|
|
174
175
|
};
|
|
175
176
|
|
|
176
177
|
exports.useCreateComponentStepChange = useCreateComponentStepChange;
|
|
@@ -14,7 +14,7 @@ var index = require('../../../components/FeatureFlags/index.js');
|
|
|
14
14
|
|
|
15
15
|
const usePortalTarget = portalTargetIn => {
|
|
16
16
|
const enablePortalTarget = index.useFeatureFlag('default-portal-target-body');
|
|
17
|
-
const [portalTarget, setPortalTarget] = React.useState(null);
|
|
17
|
+
const [portalTarget, setPortalTarget] = React.useState(portalTargetIn ?? null);
|
|
18
18
|
React.useEffect(() => {
|
|
19
19
|
if (portalTargetIn) {
|
|
20
20
|
setPortalTarget(portalTargetIn);
|
|
@@ -42,15 +42,20 @@ const makeDraggable = _ref => {
|
|
|
42
42
|
const onKeyDown = e => {
|
|
43
43
|
if (e.key === 'Enter') {
|
|
44
44
|
isDragging = !isDragging;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
if (isDragging) {
|
|
46
|
+
// Get current transform values when starting keyboard drag
|
|
47
|
+
const style = window.getComputedStyle(el);
|
|
48
|
+
const matrix = new DOMMatrix(style.transform);
|
|
49
|
+
currentX = matrix.m41;
|
|
50
|
+
currentY = matrix.m42;
|
|
51
|
+
dispatch('dragstart', {
|
|
52
|
+
keyboard: true
|
|
53
|
+
});
|
|
54
|
+
} else {
|
|
55
|
+
dispatch('dragend', {
|
|
56
|
+
keyboard: true
|
|
57
|
+
});
|
|
58
|
+
}
|
|
54
59
|
}
|
|
55
60
|
if (!isDragging) {
|
|
56
61
|
return;
|
|
@@ -62,16 +67,20 @@ const makeDraggable = _ref => {
|
|
|
62
67
|
e.preventDefault();
|
|
63
68
|
break;
|
|
64
69
|
case 'ArrowLeft':
|
|
65
|
-
|
|
70
|
+
currentX -= distance;
|
|
71
|
+
el.style.transform = `translate(${currentX}px, ${currentY}px)`;
|
|
66
72
|
break;
|
|
67
73
|
case 'ArrowRight':
|
|
68
|
-
|
|
74
|
+
currentX += distance;
|
|
75
|
+
el.style.transform = `translate(${currentX}px, ${currentY}px)`;
|
|
69
76
|
break;
|
|
70
77
|
case 'ArrowUp':
|
|
71
|
-
|
|
78
|
+
currentY -= distance;
|
|
79
|
+
el.style.transform = `translate(${currentX}px, ${currentY}px)`;
|
|
72
80
|
break;
|
|
73
81
|
case 'ArrowDown':
|
|
74
|
-
|
|
82
|
+
currentY += distance;
|
|
83
|
+
el.style.transform = `translate(${currentX}px, ${currentY}px)`;
|
|
75
84
|
break;
|
|
76
85
|
}
|
|
77
86
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carbon/ibm-products",
|
|
3
3
|
"description": "Carbon for IBM Products",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.85.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "es/index.js",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"@babel/preset-react": "^7.26.3",
|
|
69
69
|
"@babel/preset-typescript": "^7.26.0",
|
|
70
70
|
"@carbon/styles": "^1.100.0",
|
|
71
|
-
"@figma/code-connect": "^1.
|
|
71
|
+
"@figma/code-connect": "^1.4.0",
|
|
72
72
|
"@ibm/telemetry-js-config-generator": "^2.0.1",
|
|
73
73
|
"@percy/cli": "^1.31.0",
|
|
74
74
|
"@percy/storybook": "^10.0.0",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"@types/react-table": "^7.7.20",
|
|
85
85
|
"@vitejs/plugin-react": "^5.0.0",
|
|
86
86
|
"babel-plugin-dev-expression": "^0.2.3",
|
|
87
|
-
"babel-preset-ibm-cloud-cognitive": "^0.
|
|
87
|
+
"babel-preset-ibm-cloud-cognitive": "^0.43.0",
|
|
88
88
|
"change-case": "5.4.4",
|
|
89
89
|
"classnames": "^2.5.1",
|
|
90
90
|
"copyfiles": "^2.4.1",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"fs-extra": "^11.3.0",
|
|
93
93
|
"glob": "^11.0.1",
|
|
94
94
|
"jest": "^29.7.0",
|
|
95
|
-
"jest-config-ibm-cloud-cognitive": "^1.
|
|
95
|
+
"jest-config-ibm-cloud-cognitive": "^1.44.0",
|
|
96
96
|
"jest-environment-jsdom": "^29.7.0",
|
|
97
97
|
"namor": "^1.1.2",
|
|
98
98
|
"npm-run-all2": "^8.0.0",
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"rollup-plugin-strip-banner": "^3.1.0",
|
|
105
105
|
"sass": "^1.93.2",
|
|
106
106
|
"storybook": "^9.1.15",
|
|
107
|
-
"storybook-addon-accessibility-checker": ">=9.2.0-
|
|
107
|
+
"storybook-addon-accessibility-checker": ">=9.2.0-git0",
|
|
108
108
|
"typescript-config-carbon": "^0.9.0",
|
|
109
109
|
"vite": "^7.0.0",
|
|
110
110
|
"yargs": "^18.0.0"
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"@babel/runtime": "^7.26.10",
|
|
114
114
|
"@carbon-labs/react-resizer": "^0.10.0",
|
|
115
115
|
"@carbon/feature-flags": "^1.0.0",
|
|
116
|
-
"@carbon/ibm-products-styles": "^2.
|
|
116
|
+
"@carbon/ibm-products-styles": "^2.81.0",
|
|
117
117
|
"@carbon/telemetry": "^0.1.0",
|
|
118
118
|
"@carbon/utilities": "^0.16.0",
|
|
119
119
|
"@carbon/utilities-react": "0.19.0",
|
|
@@ -135,5 +135,5 @@
|
|
|
135
135
|
"react": "^16.8.6 || ^17.0.1 || ^18.2.0 || ^19.0.0",
|
|
136
136
|
"react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0 || ^19.0.0"
|
|
137
137
|
},
|
|
138
|
-
"gitHead": "
|
|
138
|
+
"gitHead": "d5645922d967cd5c602f4c111bab8a6b5f633abe"
|
|
139
139
|
}
|