@carbon/react 1.79.0 → 1.80.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/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +835 -779
- package/es/components/CodeSnippet/CodeSnippet.js +1 -1
- package/es/components/ComposedModal/ComposedModal.d.ts +6 -0
- package/es/components/ComposedModal/ModalFooter.d.ts +6 -0
- package/es/components/ContainedList/index.js +1 -1
- package/es/components/DataTable/DataTable.d.ts +3 -1
- package/es/components/DatePicker/DatePicker.d.ts +1 -1
- package/es/components/DatePicker/DatePicker.js +1 -1
- package/es/components/FluidTextArea/FluidTextArea.Skeleton.d.ts +6 -0
- package/es/components/InlineLoading/InlineLoading.js +10 -2
- package/es/components/Layer/LayerLevel.d.ts +6 -0
- package/es/components/Menu/Menu.d.ts +1 -1
- package/es/components/Menu/MenuItem.d.ts +4 -4
- package/es/components/Menu/MenuItem.js +1 -1
- package/es/components/Modal/Modal.js +1 -1
- package/es/components/ModalWrapper/ModalWrapper.d.ts +1 -1
- package/es/components/ModalWrapper/ModalWrapper.js +2 -1
- package/es/components/Notification/Notification.js +1 -1
- package/es/components/NumberInput/NumberInput.d.ts +1 -1
- package/es/components/OverflowMenu/OverflowMenu.js +3 -3
- package/es/components/OverflowMenuItem/OverflowMenuItem.js +1 -3
- package/es/components/OverflowMenuV2/index.js +1 -1
- package/es/components/PageHeader/PageHeader.d.ts +101 -0
- package/es/components/PageHeader/PageHeader.js +241 -0
- package/es/components/PageHeader/index.d.ts +8 -0
- package/es/components/PageHeader/index.js +8 -0
- package/es/components/PasswordInput/index.d.ts +6 -0
- package/es/components/Popover/index.js +1 -1
- package/es/components/Slider/SliderHandles.d.ts +6 -0
- package/es/components/Tag/DismissibleTag.d.ts +1 -55
- package/es/components/Tag/DismissibleTag.js +6 -4
- package/es/components/Tag/OperationalTag.d.ts +1 -1
- package/es/components/Tag/SelectableTag.d.ts +1 -43
- package/es/components/Tag/SelectableTag.js +7 -5
- package/es/components/Tag/Tag.js +2 -2
- package/es/components/Text/createTextComponent.js +1 -1
- package/es/components/TextArea/TextArea.d.ts +3 -3
- package/es/components/TextArea/TextArea.js +5 -2
- package/es/components/TextInput/ControlledPasswordInput.d.ts +6 -0
- package/es/components/TextInput/ControlledPasswordInput.js +1 -1
- package/es/components/TextInput/PasswordInput.d.ts +6 -0
- package/es/components/TextInput/index.js +1 -1
- package/es/components/Tile/Tile.d.ts +1 -1
- package/es/components/Tile/Tile.js +1 -4
- package/es/components/TreeView/TreeNode.d.ts +1 -1
- package/es/components/TreeView/TreeNode.js +11 -4
- package/es/components/TreeView/TreeView.d.ts +1 -1
- package/es/components/TreeView/TreeView.js +6 -6
- package/es/components/UIShell/Switcher.d.ts +1 -7
- package/es/components/UIShell/SwitcherDivider.d.ts +6 -0
- package/es/components/UIShell/SwitcherItem.d.ts +6 -0
- package/es/index.d.ts +5 -1
- package/es/index.js +3 -1
- package/es/internal/ClickListener.d.ts +13 -0
- package/es/internal/ClickListener.js +33 -60
- package/es/internal/FloatingMenu.js +2 -2
- package/es/internal/PolymorphicProps.d.ts +6 -0
- package/es/internal/deprecateFieldOnObject.d.ts +12 -0
- package/es/internal/deprecateFieldOnObject.js +4 -4
- package/es/internal/useControllableState.d.ts +34 -0
- package/es/internal/useControllableState.js +17 -32
- package/es/internal/useEvent.js +1 -1
- package/es/internal/useMergedRefs.d.ts +9 -6
- package/es/internal/useMergedRefs.js +8 -9
- package/es/internal/useNoInteractiveChildren.js +2 -2
- package/es/internal/useOutsideClick.d.ts +8 -0
- package/es/internal/useOutsideClick.js +9 -6
- package/es/internal/useSavedCallback.d.ts +15 -0
- package/es/internal/useSavedCallback.js +9 -12
- package/es/internal/warning.d.ts +17 -0
- package/es/internal/warning.js +16 -12
- package/es/internal/wrapFocus.js +1 -1
- package/es/prop-types/isRequiredOneOf.js +1 -1
- package/es/prop-types/requiredIfGivenPropIsTruthy.js +1 -1
- package/es/tools/events.js +1 -6
- package/es/tools/toggleClass.js +6 -0
- package/es/types/common.d.ts +6 -0
- package/lib/components/CodeSnippet/CodeSnippet.js +1 -1
- package/lib/components/ComposedModal/ComposedModal.d.ts +6 -0
- package/lib/components/ComposedModal/ModalFooter.d.ts +6 -0
- package/lib/components/ContainedList/index.js +1 -1
- package/lib/components/DataTable/DataTable.d.ts +3 -1
- package/lib/components/DatePicker/DatePicker.d.ts +1 -1
- package/lib/components/DatePicker/DatePicker.js +1 -1
- package/lib/components/FluidTextArea/FluidTextArea.Skeleton.d.ts +6 -0
- package/lib/components/InlineLoading/InlineLoading.js +10 -2
- package/lib/components/Layer/LayerLevel.d.ts +6 -0
- package/lib/components/Menu/Menu.d.ts +1 -1
- package/lib/components/Menu/MenuItem.d.ts +4 -4
- package/lib/components/Menu/MenuItem.js +1 -1
- package/lib/components/Modal/Modal.js +1 -1
- package/lib/components/ModalWrapper/ModalWrapper.d.ts +1 -1
- package/lib/components/ModalWrapper/ModalWrapper.js +2 -1
- package/lib/components/Notification/Notification.js +1 -1
- package/lib/components/NumberInput/NumberInput.d.ts +1 -1
- package/lib/components/OverflowMenu/OverflowMenu.js +3 -3
- package/lib/components/OverflowMenuItem/OverflowMenuItem.js +1 -3
- package/lib/components/OverflowMenuV2/index.js +1 -1
- package/lib/components/PageHeader/PageHeader.d.ts +101 -0
- package/lib/components/PageHeader/PageHeader.js +260 -0
- package/lib/components/PageHeader/index.d.ts +8 -0
- package/lib/components/PageHeader/index.js +25 -0
- package/lib/components/PasswordInput/index.d.ts +6 -0
- package/lib/components/Popover/index.js +1 -1
- package/lib/components/Slider/SliderHandles.d.ts +6 -0
- package/lib/components/Tag/DismissibleTag.d.ts +1 -55
- package/lib/components/Tag/DismissibleTag.js +5 -3
- package/lib/components/Tag/OperationalTag.d.ts +1 -1
- package/lib/components/Tag/SelectableTag.d.ts +1 -43
- package/lib/components/Tag/SelectableTag.js +6 -4
- package/lib/components/Tag/Tag.js +2 -2
- package/lib/components/Text/createTextComponent.js +1 -1
- package/lib/components/TextArea/TextArea.d.ts +3 -3
- package/lib/components/TextArea/TextArea.js +4 -1
- package/lib/components/TextInput/ControlledPasswordInput.d.ts +6 -0
- package/lib/components/TextInput/ControlledPasswordInput.js +1 -1
- package/lib/components/TextInput/PasswordInput.d.ts +6 -0
- package/lib/components/TextInput/index.js +1 -1
- package/lib/components/Tile/Tile.d.ts +1 -1
- package/lib/components/Tile/Tile.js +1 -4
- package/lib/components/TreeView/TreeNode.d.ts +1 -1
- package/lib/components/TreeView/TreeNode.js +11 -4
- package/lib/components/TreeView/TreeView.d.ts +1 -1
- package/lib/components/TreeView/TreeView.js +6 -6
- package/lib/components/UIShell/Switcher.d.ts +1 -7
- package/lib/components/UIShell/SwitcherDivider.d.ts +6 -0
- package/lib/components/UIShell/SwitcherItem.d.ts +6 -0
- package/lib/index.d.ts +5 -1
- package/lib/index.js +62 -57
- package/lib/internal/ClickListener.d.ts +13 -0
- package/lib/internal/ClickListener.js +32 -64
- package/lib/internal/FloatingMenu.js +2 -2
- package/lib/internal/PolymorphicProps.d.ts +6 -0
- package/lib/internal/deprecateFieldOnObject.d.ts +12 -0
- package/lib/internal/deprecateFieldOnObject.js +4 -4
- package/lib/internal/useControllableState.d.ts +34 -0
- package/lib/internal/useControllableState.js +17 -32
- package/lib/internal/useEvent.js +1 -1
- package/lib/internal/useMergedRefs.d.ts +9 -6
- package/lib/internal/useMergedRefs.js +8 -9
- package/lib/internal/useNoInteractiveChildren.js +2 -2
- package/lib/internal/useOutsideClick.d.ts +8 -0
- package/lib/internal/useOutsideClick.js +9 -6
- package/lib/internal/useSavedCallback.d.ts +15 -0
- package/lib/internal/useSavedCallback.js +9 -12
- package/lib/internal/warning.d.ts +17 -0
- package/lib/internal/warning.js +16 -12
- package/lib/internal/wrapFocus.js +1 -1
- package/lib/prop-types/isRequiredOneOf.js +1 -1
- package/lib/prop-types/requiredIfGivenPropIsTruthy.js +1 -1
- package/lib/tools/events.js +1 -6
- package/lib/tools/toggleClass.js +6 -0
- package/lib/types/common.d.ts +6 -0
- package/package.json +9 -8
- package/scss/components/page-header/_index.scss +9 -0
- package/scss/components/page-header/_page-header.scss +9 -0
- package/telemetry.yml +62 -23
|
@@ -14,7 +14,7 @@ var ContainedList = require('./ContainedList.js');
|
|
|
14
14
|
var ContainedListItem = require('./ContainedListItem/ContainedListItem.js');
|
|
15
15
|
|
|
16
16
|
ContainedList["default"].ContainedListItem = ContainedListItem["default"];
|
|
17
|
-
if (process.env.NODE_ENV !==
|
|
17
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
18
18
|
deprecateFieldOnObject.deprecateFieldOnObject(ContainedList["default"], 'ContainedListItem', ContainedListItem["default"]);
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -201,10 +201,12 @@ export interface DataTableProps<RowType, ColTypes extends any[]> extends Transla
|
|
|
201
201
|
render?: (renderProps: DataTableRenderProps<RowType, ColTypes>) => React.ReactElement;
|
|
202
202
|
rows: Array<Omit<DataTableRow<ColTypes>, 'cells'>>;
|
|
203
203
|
size?: DataTableSize;
|
|
204
|
-
sortRow?: (cellA:
|
|
204
|
+
sortRow?: (cellA: any, cellB: any, sortRowOptions: {
|
|
205
205
|
sortDirection: DataTableSortState;
|
|
206
206
|
sortStates: Record<DataTableSortState, DataTableSortState>;
|
|
207
207
|
locale: string;
|
|
208
|
+
key: string;
|
|
209
|
+
compare: (a: number | string, b: number | string, locale?: string) => number;
|
|
208
210
|
}) => number;
|
|
209
211
|
stickyHeader?: boolean;
|
|
210
212
|
useStaticWidth?: boolean;
|
|
@@ -369,7 +369,7 @@ const DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function Da
|
|
|
369
369
|
nextArrow: rightArrowHTML,
|
|
370
370
|
prevArrow: leftArrowHTML,
|
|
371
371
|
onChange: function () {
|
|
372
|
-
if (
|
|
372
|
+
if (!readOnly) {
|
|
373
373
|
savedOnChange(...arguments);
|
|
374
374
|
}
|
|
375
375
|
},
|
|
@@ -63,9 +63,9 @@ const InlineLoading = _ref => {
|
|
|
63
63
|
className: `${prefix}--inline-loading__checkmark-container`
|
|
64
64
|
}, /*#__PURE__*/React__default["default"].createElement("title", null, iconLabel));
|
|
65
65
|
}
|
|
66
|
-
if (status === '
|
|
66
|
+
if (status === 'active') {
|
|
67
67
|
if (!iconDescription) {
|
|
68
|
-
iconLabel =
|
|
68
|
+
iconLabel = 'loading';
|
|
69
69
|
}
|
|
70
70
|
return /*#__PURE__*/React__default["default"].createElement(Loading["default"], {
|
|
71
71
|
small: true,
|
|
@@ -74,6 +74,14 @@ const InlineLoading = _ref => {
|
|
|
74
74
|
active: status === 'active'
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
|
+
if (status === 'inactive') {
|
|
78
|
+
if (!iconDescription) {
|
|
79
|
+
iconLabel = 'not loading';
|
|
80
|
+
}
|
|
81
|
+
return /*#__PURE__*/React__default["default"].createElement("title", {
|
|
82
|
+
className: `${prefix}--inline-loading__inactive-status`
|
|
83
|
+
}, iconLabel);
|
|
84
|
+
}
|
|
77
85
|
return undefined;
|
|
78
86
|
};
|
|
79
87
|
const loadingText = description && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2023
|
|
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
|
+
*/
|
|
1
7
|
export declare const levels: readonly ["one", "two", "three"];
|
|
2
8
|
export declare const MIN_LEVEL = 0;
|
|
3
9
|
export declare const MAX_LEVEL: number;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright IBM Corp. 2025
|
|
2
|
+
* Copyright IBM Corp. 2023, 2025
|
|
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
|
-
import React, {
|
|
7
|
+
import React, { ComponentProps, FC, KeyboardEvent, LiHTMLAttributes, MouseEvent, ReactNode } from 'react';
|
|
8
8
|
export interface MenuItemProps extends LiHTMLAttributes<HTMLLIElement> {
|
|
9
9
|
/**
|
|
10
10
|
* Optionally provide another Menu to create a submenu. props.children can't be used to specify the content of the MenuItem itself. Use props.label instead.
|
|
@@ -48,7 +48,7 @@ export interface MenuItemSelectableProps extends Omit<MenuItemProps, 'onChange'>
|
|
|
48
48
|
/**
|
|
49
49
|
* Provide an optional function to be called when the selection state changes.
|
|
50
50
|
*/
|
|
51
|
-
onChange?:
|
|
51
|
+
onChange?: (checked: boolean) => void;
|
|
52
52
|
/**
|
|
53
53
|
* Controls the state of this option.
|
|
54
54
|
*/
|
|
@@ -94,7 +94,7 @@ export interface MenuItemRadioGroupProps<Item> extends Omit<ComponentProps<'ul'>
|
|
|
94
94
|
/**
|
|
95
95
|
* Provide an optional function to be called when the selection changes.
|
|
96
96
|
*/
|
|
97
|
-
onChange?:
|
|
97
|
+
onChange?: (selectedItem: Item) => void;
|
|
98
98
|
/**
|
|
99
99
|
* Provide props.selectedItem to control the state of this radio group. Must match the type of props.items.
|
|
100
100
|
*/
|
|
@@ -343,7 +343,7 @@ const MenuItemRadioGroup = /*#__PURE__*/React.forwardRef(function MenuItemRadioG
|
|
|
343
343
|
const [selection, setSelection] = useControllableState.useControllableState({
|
|
344
344
|
value: selectedItem,
|
|
345
345
|
onChange,
|
|
346
|
-
defaultValue: defaultSelectedItem
|
|
346
|
+
defaultValue: defaultSelectedItem ?? {}
|
|
347
347
|
});
|
|
348
348
|
function handleClick(item, e) {
|
|
349
349
|
setSelection(item);
|
|
@@ -208,7 +208,7 @@ const Modal = /*#__PURE__*/React__default["default"].forwardRef(function Modal(_
|
|
|
208
208
|
if (!enableDialogElement) {
|
|
209
209
|
const initialFocus = focusContainerElement => {
|
|
210
210
|
const containerElement = focusContainerElement || innerModal.current;
|
|
211
|
-
const primaryFocusElement = containerElement
|
|
211
|
+
const primaryFocusElement = containerElement && (containerElement.querySelector(selectorPrimaryFocus) || danger && containerElement.querySelector(`.${prefix}--btn--secondary`));
|
|
212
212
|
if (primaryFocusElement) {
|
|
213
213
|
return primaryFocusElement;
|
|
214
214
|
}
|
|
@@ -36,7 +36,7 @@ interface ModelWrapperState {
|
|
|
36
36
|
isOpen: boolean;
|
|
37
37
|
}
|
|
38
38
|
export default class ModalWrapper extends React.Component<ModalWrapperProps, ModelWrapperState> {
|
|
39
|
-
if(
|
|
39
|
+
if(isDev: any): void;
|
|
40
40
|
static propTypes: {
|
|
41
41
|
buttonTriggerClassName: PropTypes.Requireable<string>;
|
|
42
42
|
buttonTriggerText: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
@@ -26,6 +26,7 @@ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
|
26
26
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
27
27
|
|
|
28
28
|
let didWarnAboutDeprecation = false;
|
|
29
|
+
process.env.NODE_ENV !== 'production';
|
|
29
30
|
class ModalWrapper extends React__default["default"].Component {
|
|
30
31
|
constructor() {
|
|
31
32
|
super(...arguments);
|
|
@@ -61,7 +62,7 @@ class ModalWrapper extends React__default["default"].Component {
|
|
|
61
62
|
handleSubmit?.(evt);
|
|
62
63
|
});
|
|
63
64
|
}
|
|
64
|
-
if(
|
|
65
|
+
if(isDev) {
|
|
65
66
|
process.env.NODE_ENV !== "production" ? warning.warning(didWarnAboutDeprecation, '`<ModalWrapper>` has been deprecated in favor of `<ComposedModal/>` and will be removed in the next major version, `@carbon/react@v2.x`') : void 0;
|
|
66
67
|
didWarnAboutDeprecation = true;
|
|
67
68
|
}
|
|
@@ -822,7 +822,7 @@ Callout.propTypes = {
|
|
|
822
822
|
|
|
823
823
|
let didWarnAboutDeprecation = false;
|
|
824
824
|
const StaticNotification = props => {
|
|
825
|
-
if (process.env.NODE_ENV !==
|
|
825
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
826
826
|
process.env.NODE_ENV !== "production" ? warning.warning(didWarnAboutDeprecation, '`StaticNotification` has been renamed to `Callout`.' + 'Run the following codemod to automatically update usages in your' + 'project: `npx @carbon/upgrade migrate refactor-to-callout --write`') : void 0;
|
|
827
827
|
didWarnAboutDeprecation = true;
|
|
828
828
|
}
|
|
@@ -75,7 +75,7 @@ const triggerButtonPositionFactors = {
|
|
|
75
75
|
const getMenuOffset = (menuBody, direction, trigger, flip) => {
|
|
76
76
|
const triggerButtonPositionProp = triggerButtonPositionProps[direction];
|
|
77
77
|
const triggerButtonPositionFactor = triggerButtonPositionFactors[direction];
|
|
78
|
-
if (process.env.NODE_ENV !==
|
|
78
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
79
79
|
!(triggerButtonPositionProp && triggerButtonPositionFactor) ? process.env.NODE_ENV !== "production" ? invariant__default["default"](false, '[OverflowMenu] wrong floating menu direction: `%s`', direction) : invariant__default["default"](false) : void 0;
|
|
80
80
|
}
|
|
81
81
|
const {
|
|
@@ -212,7 +212,7 @@ const OverflowMenu = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
212
212
|
}
|
|
213
213
|
};
|
|
214
214
|
const handleClickOutside = evt => {
|
|
215
|
-
if (open && (!menuBodyRef.current || !menuBodyRef.current.contains(evt.target))) {
|
|
215
|
+
if (open && (!menuBodyRef.current || evt.target instanceof Node && !menuBodyRef.current.contains(evt.target))) {
|
|
216
216
|
closeMenu();
|
|
217
217
|
}
|
|
218
218
|
};
|
|
@@ -325,7 +325,7 @@ const OverflowMenu = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
325
325
|
}, /*#__PURE__*/React.cloneElement(menuBody, {
|
|
326
326
|
'data-floating-menu-direction': direction
|
|
327
327
|
}));
|
|
328
|
-
return /*#__PURE__*/React__default["default"].createElement(ClickListener
|
|
328
|
+
return /*#__PURE__*/React__default["default"].createElement(ClickListener.ClickListener, {
|
|
329
329
|
onClickOutside: handleClickOutside
|
|
330
330
|
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
|
331
331
|
className: `${prefix}--overflow-menu__wrapper`,
|
|
@@ -65,9 +65,7 @@ const OverflowMenuItem = /*#__PURE__*/React__default["default"].forwardRef(funct
|
|
|
65
65
|
closeMenu();
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
|
|
69
|
-
process.env.NODE_ENV !== "production" ? warning.warning(closeMenu, '`<OverflowMenuItem>` detected missing `closeMenu` prop. ' + '`closeMenu` is required to let `<OverflowMenu>` close the menu upon actions on `<OverflowMenuItem>`. ' + 'Please make sure `<OverflowMenuItem>` is a direct child of `<OverflowMenu>.') : void 0;
|
|
70
|
-
}
|
|
68
|
+
process.env.NODE_ENV !== "production" ? warning.warning(!!closeMenu, '`<OverflowMenuItem>` detected missing `closeMenu` prop. ' + '`closeMenu` is required to let `<OverflowMenu>` close the menu upon actions on `<OverflowMenuItem>`. ' + 'Please make sure `<OverflowMenuItem>` is a direct child of `<OverflowMenu>.') : void 0;
|
|
71
69
|
const overflowMenuBtnClasses = cx__default["default"](`${prefix}--overflow-menu-options__btn`, className);
|
|
72
70
|
const overflowMenuItemClasses = cx__default["default"](`${prefix}--overflow-menu-options__option`, {
|
|
73
71
|
[`${prefix}--overflow-menu--divider`]: hasDivider,
|
|
@@ -20,7 +20,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
|
20
20
|
|
|
21
21
|
let didWarnAboutDeprecation = false;
|
|
22
22
|
function OverflowMenuV2(props) {
|
|
23
|
-
if (process.env.NODE_ENV !==
|
|
23
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
24
24
|
process.env.NODE_ENV !== "production" ? warning.warning(didWarnAboutDeprecation, '`<OverflowMenuV2>` is deprecated and will be removed in the next major version. Use `<OverflowMenu>` with the `enable-v12-overflowmenu` feature flag instead.') : void 0;
|
|
25
25
|
didWarnAboutDeprecation = true;
|
|
26
26
|
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2025
|
|
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, { type ComponentType, type FunctionComponent } from 'react';
|
|
8
|
+
/**
|
|
9
|
+
* ----------
|
|
10
|
+
* PageHeader
|
|
11
|
+
* ----------
|
|
12
|
+
*/
|
|
13
|
+
interface PageHeaderProps {
|
|
14
|
+
children?: React.ReactNode;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
declare const PageHeader: React.ForwardRefExoticComponent<PageHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
/**
|
|
19
|
+
* -----------------------
|
|
20
|
+
* PageHeaderBreadcrumbBar
|
|
21
|
+
* -----------------------
|
|
22
|
+
*/
|
|
23
|
+
interface PageHeaderBreadcrumbBarProps {
|
|
24
|
+
children?: React.ReactNode;
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
declare const PageHeaderBreadcrumbBar: React.ForwardRefExoticComponent<PageHeaderBreadcrumbBarProps & React.RefAttributes<HTMLDivElement>>;
|
|
28
|
+
/**
|
|
29
|
+
* -----------------
|
|
30
|
+
* PageHeaderContent
|
|
31
|
+
* -----------------
|
|
32
|
+
*/
|
|
33
|
+
interface PageHeaderContentProps {
|
|
34
|
+
/**
|
|
35
|
+
* Provide child elements to be rendered inside PageHeaderContent.
|
|
36
|
+
*/
|
|
37
|
+
children?: React.ReactNode;
|
|
38
|
+
/**
|
|
39
|
+
* Specify an optional className to be added to your PageHeaderContent
|
|
40
|
+
*/
|
|
41
|
+
className?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Provide an optional icon to render in front of the PageHeaderContent's title.
|
|
44
|
+
*/
|
|
45
|
+
renderIcon?: ComponentType | FunctionComponent;
|
|
46
|
+
/**
|
|
47
|
+
* The PageHeaderContent's title
|
|
48
|
+
*/
|
|
49
|
+
title: string;
|
|
50
|
+
/**
|
|
51
|
+
* The PageHeaderContent's subtitle
|
|
52
|
+
*/
|
|
53
|
+
subtitle?: string;
|
|
54
|
+
/**
|
|
55
|
+
* The PageHeaderContent's contextual actions
|
|
56
|
+
*/
|
|
57
|
+
contextualActions?: React.ReactNode;
|
|
58
|
+
/**
|
|
59
|
+
* The PageHeaderContent's page actions
|
|
60
|
+
*/
|
|
61
|
+
pageActions?: React.ReactNode;
|
|
62
|
+
}
|
|
63
|
+
declare const PageHeaderContent: React.ForwardRefExoticComponent<PageHeaderContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
64
|
+
/**
|
|
65
|
+
* ----------------
|
|
66
|
+
* PageHeaderHeroImage
|
|
67
|
+
* ----------------
|
|
68
|
+
*/
|
|
69
|
+
interface PageHeaderHeroImageProps {
|
|
70
|
+
/**
|
|
71
|
+
* Provide child elements to be rendered inside PageHeaderHeroImage.
|
|
72
|
+
*/
|
|
73
|
+
children?: React.ReactNode;
|
|
74
|
+
/**
|
|
75
|
+
* Specify an optional className to be added to your PageHeaderHeroImage
|
|
76
|
+
*/
|
|
77
|
+
className?: string;
|
|
78
|
+
}
|
|
79
|
+
declare const PageHeaderHeroImage: React.ForwardRefExoticComponent<PageHeaderHeroImageProps & React.RefAttributes<HTMLDivElement>>;
|
|
80
|
+
/**
|
|
81
|
+
* ----------------
|
|
82
|
+
* PageHeaderTabBar
|
|
83
|
+
* ----------------
|
|
84
|
+
*/
|
|
85
|
+
interface PageHeaderTabBarProps {
|
|
86
|
+
children?: React.ReactNode;
|
|
87
|
+
className?: string;
|
|
88
|
+
}
|
|
89
|
+
declare const PageHeaderTabBar: React.ForwardRefExoticComponent<PageHeaderTabBarProps & React.RefAttributes<HTMLDivElement>>;
|
|
90
|
+
/**
|
|
91
|
+
* -------
|
|
92
|
+
* Exports
|
|
93
|
+
* -------
|
|
94
|
+
*/
|
|
95
|
+
declare const Root: React.ForwardRefExoticComponent<PageHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
96
|
+
declare const BreadcrumbBar: React.ForwardRefExoticComponent<PageHeaderBreadcrumbBarProps & React.RefAttributes<HTMLDivElement>>;
|
|
97
|
+
declare const Content: React.ForwardRefExoticComponent<PageHeaderContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
98
|
+
declare const HeroImage: React.ForwardRefExoticComponent<PageHeaderHeroImageProps & React.RefAttributes<HTMLDivElement>>;
|
|
99
|
+
declare const TabBar: React.ForwardRefExoticComponent<PageHeaderTabBarProps & React.RefAttributes<HTMLDivElement>>;
|
|
100
|
+
export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderHeroImage, PageHeaderTabBar, Root, BreadcrumbBar, Content, HeroImage, TabBar, };
|
|
101
|
+
export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderHeroImageProps, PageHeaderTabBarProps, };
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2023
|
|
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
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
11
|
+
|
|
12
|
+
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
|
|
13
|
+
var React = require('react');
|
|
14
|
+
var PropTypes = require('prop-types');
|
|
15
|
+
var cx = require('classnames');
|
|
16
|
+
var usePrefix = require('../../internal/usePrefix.js');
|
|
17
|
+
var layout = require('@carbon/layout');
|
|
18
|
+
var useMatchMedia = require('../../internal/useMatchMedia.js');
|
|
19
|
+
require('../Text/index.js');
|
|
20
|
+
var DefinitionTooltip = require('../Tooltip/DefinitionTooltip.js');
|
|
21
|
+
require('../Tooltip/Tooltip.js');
|
|
22
|
+
var AspectRatio = require('../AspectRatio/AspectRatio.js');
|
|
23
|
+
var Text = require('../Text/Text.js');
|
|
24
|
+
|
|
25
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
26
|
+
|
|
27
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
28
|
+
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
29
|
+
var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
|
30
|
+
|
|
31
|
+
var _p, _p2, _p3;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* ----------
|
|
35
|
+
* PageHeader
|
|
36
|
+
* ----------
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
const PageHeader = /*#__PURE__*/React__default["default"].forwardRef(function PageHeader(_ref, ref) {
|
|
40
|
+
let {
|
|
41
|
+
className,
|
|
42
|
+
children,
|
|
43
|
+
...other
|
|
44
|
+
} = _ref;
|
|
45
|
+
const prefix = usePrefix.usePrefix();
|
|
46
|
+
const classNames = cx__default["default"]({
|
|
47
|
+
[`${prefix}--page-header`]: true
|
|
48
|
+
}, className);
|
|
49
|
+
return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
|
|
50
|
+
className: classNames,
|
|
51
|
+
ref: ref
|
|
52
|
+
}, other), _p || (_p = /*#__PURE__*/React__default["default"].createElement("p", null, "page header")), children);
|
|
53
|
+
});
|
|
54
|
+
PageHeader.displayName = 'PageHeader';
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* -----------------------
|
|
58
|
+
* PageHeaderBreadcrumbBar
|
|
59
|
+
* -----------------------
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
const PageHeaderBreadcrumbBar = /*#__PURE__*/React__default["default"].forwardRef(function PageHeaderBreadcrumbBar(_ref2, ref) {
|
|
63
|
+
let {
|
|
64
|
+
className,
|
|
65
|
+
children,
|
|
66
|
+
...other
|
|
67
|
+
} = _ref2;
|
|
68
|
+
const prefix = usePrefix.usePrefix();
|
|
69
|
+
const classNames = cx__default["default"]({
|
|
70
|
+
[`${prefix}--page-header__breadcrumb-bar`]: true
|
|
71
|
+
}, className);
|
|
72
|
+
return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
|
|
73
|
+
className: classNames,
|
|
74
|
+
ref: ref
|
|
75
|
+
}, other), _p2 || (_p2 = /*#__PURE__*/React__default["default"].createElement("p", null, "page header breadcrumb bar")), children);
|
|
76
|
+
});
|
|
77
|
+
PageHeaderBreadcrumbBar.displayName = 'PageHeaderBreadcrumbBar';
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* -----------------
|
|
81
|
+
* PageHeaderContent
|
|
82
|
+
* -----------------
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
const PageHeaderContent = /*#__PURE__*/React__default["default"].forwardRef(function PageHeaderContent(_ref3, ref) {
|
|
86
|
+
let {
|
|
87
|
+
className,
|
|
88
|
+
children,
|
|
89
|
+
title,
|
|
90
|
+
subtitle,
|
|
91
|
+
renderIcon: IconElement,
|
|
92
|
+
contextualActions,
|
|
93
|
+
pageActions,
|
|
94
|
+
...other
|
|
95
|
+
} = _ref3;
|
|
96
|
+
const prefix = usePrefix.usePrefix();
|
|
97
|
+
const classNames = cx__default["default"]({
|
|
98
|
+
[`${prefix}--page-header__content`]: true
|
|
99
|
+
}, className);
|
|
100
|
+
const titleRef = React.useRef(null);
|
|
101
|
+
const [isEllipsisApplied, setIsEllipsisApplied] = React.useState(false);
|
|
102
|
+
const isEllipsisActive = element => {
|
|
103
|
+
setIsEllipsisApplied(element.offsetHeight < element.scrollHeight);
|
|
104
|
+
return element.offsetHeight < element.scrollHeight;
|
|
105
|
+
};
|
|
106
|
+
React.useLayoutEffect(() => {
|
|
107
|
+
titleRef.current && isEllipsisActive(titleRef.current);
|
|
108
|
+
}, [title]);
|
|
109
|
+
return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
|
|
110
|
+
className: classNames,
|
|
111
|
+
ref: ref
|
|
112
|
+
}, other), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
113
|
+
className: `${prefix}--page-header__content__title-wrapper`
|
|
114
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
115
|
+
className: `${prefix}--page-header__content__start`
|
|
116
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
117
|
+
className: `${prefix}--page-header__content__title-container`
|
|
118
|
+
}, IconElement && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
119
|
+
className: `${prefix}--page-header__content__icon`
|
|
120
|
+
}, /*#__PURE__*/React__default["default"].createElement(IconElement, null)), isEllipsisApplied ? /*#__PURE__*/React__default["default"].createElement(DefinitionTooltip.DefinitionTooltip, {
|
|
121
|
+
definition: title
|
|
122
|
+
}, /*#__PURE__*/React__default["default"].createElement(Text.Text, {
|
|
123
|
+
ref: titleRef,
|
|
124
|
+
as: "h4",
|
|
125
|
+
className: `${prefix}--page-header__content__title`
|
|
126
|
+
}, title)) : /*#__PURE__*/React__default["default"].createElement(Text.Text, {
|
|
127
|
+
ref: titleRef,
|
|
128
|
+
as: "h4",
|
|
129
|
+
className: `${prefix}--page-header__content__title`
|
|
130
|
+
}, title)), contextualActions && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
131
|
+
className: `${prefix}--page-header__content__contextual-actions`
|
|
132
|
+
}, contextualActions)), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
133
|
+
className: `${prefix}--page-header__content__end`
|
|
134
|
+
}, pageActions && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
135
|
+
className: `${prefix}--page-header__content__page-actions`
|
|
136
|
+
}, pageActions))), subtitle && /*#__PURE__*/React__default["default"].createElement(Text.Text, {
|
|
137
|
+
as: "h3",
|
|
138
|
+
className: `${prefix}--page-header__content__subtitle`
|
|
139
|
+
}, subtitle), children && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
140
|
+
className: `${prefix}--page-header__content__body`
|
|
141
|
+
}, children));
|
|
142
|
+
});
|
|
143
|
+
PageHeaderContent.displayName = 'PageHeaderContent';
|
|
144
|
+
PageHeaderContent.propTypes = {
|
|
145
|
+
/**
|
|
146
|
+
* Provide child elements to be rendered inside PageHeaderContent.
|
|
147
|
+
*/
|
|
148
|
+
children: PropTypes__default["default"].node,
|
|
149
|
+
/**
|
|
150
|
+
* Specify an optional className to be added to your PageHeaderContent
|
|
151
|
+
*/
|
|
152
|
+
className: PropTypes__default["default"].string,
|
|
153
|
+
/**
|
|
154
|
+
* Provide an optional icon to render in front of the PageHeaderContent's title.
|
|
155
|
+
*/
|
|
156
|
+
// @ts-expect-error: PropTypes are not expressive enough to cover this case
|
|
157
|
+
renderIcon: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object]),
|
|
158
|
+
/**
|
|
159
|
+
* The PageHeaderContent's title
|
|
160
|
+
*/
|
|
161
|
+
title: PropTypes__default["default"].string.isRequired,
|
|
162
|
+
/**
|
|
163
|
+
* The PageHeaderContent's subtitle
|
|
164
|
+
*/
|
|
165
|
+
subtitle: PropTypes__default["default"].string,
|
|
166
|
+
/**
|
|
167
|
+
* The PageHeaderContent's contextual actions
|
|
168
|
+
*/
|
|
169
|
+
contextualActions: PropTypes__default["default"].node,
|
|
170
|
+
/**
|
|
171
|
+
* The PageHeaderContent's page actions
|
|
172
|
+
*/
|
|
173
|
+
pageActions: PropTypes__default["default"].node
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* ----------------
|
|
178
|
+
* PageHeaderHeroImage
|
|
179
|
+
* ----------------
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
const PageHeaderHeroImage = /*#__PURE__*/React__default["default"].forwardRef(function PageHeaderHeroImage(_ref4, ref) {
|
|
183
|
+
let {
|
|
184
|
+
className,
|
|
185
|
+
children,
|
|
186
|
+
...other
|
|
187
|
+
} = _ref4;
|
|
188
|
+
const prefix = usePrefix.usePrefix();
|
|
189
|
+
const classNames = cx__default["default"]({
|
|
190
|
+
[`${prefix}--page-header__hero-image`]: true
|
|
191
|
+
}, className);
|
|
192
|
+
const lgMediaQuery = `(min-width: ${layout.breakpoints.lg.width})`;
|
|
193
|
+
const isLg = useMatchMedia.useMatchMedia(lgMediaQuery);
|
|
194
|
+
return /*#__PURE__*/React__default["default"].createElement(AspectRatio["default"], _rollupPluginBabelHelpers["extends"]({
|
|
195
|
+
className: classNames
|
|
196
|
+
}, other, {
|
|
197
|
+
ratio: isLg ? '2x1' : '3x2'
|
|
198
|
+
}), children);
|
|
199
|
+
});
|
|
200
|
+
PageHeaderHeroImage.displayName = 'PageHeaderHeroImage';
|
|
201
|
+
PageHeaderHeroImage.propTypes = {
|
|
202
|
+
/**
|
|
203
|
+
* Provide child elements to be rendered inside PageHeaderHeroImage.
|
|
204
|
+
*/
|
|
205
|
+
children: PropTypes__default["default"].node,
|
|
206
|
+
/**
|
|
207
|
+
* Specify an optional className to be added to your PageHeaderHeroImage
|
|
208
|
+
*/
|
|
209
|
+
className: PropTypes__default["default"].string
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* ----------------
|
|
214
|
+
* PageHeaderTabBar
|
|
215
|
+
* ----------------
|
|
216
|
+
*/
|
|
217
|
+
|
|
218
|
+
const PageHeaderTabBar = /*#__PURE__*/React__default["default"].forwardRef(function PageHeaderTabBar(_ref5, ref) {
|
|
219
|
+
let {
|
|
220
|
+
className,
|
|
221
|
+
children,
|
|
222
|
+
...other
|
|
223
|
+
} = _ref5;
|
|
224
|
+
const prefix = usePrefix.usePrefix();
|
|
225
|
+
const classNames = cx__default["default"]({
|
|
226
|
+
[`${prefix}--page-header__tab-bar`]: true
|
|
227
|
+
}, className);
|
|
228
|
+
return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
|
|
229
|
+
className: classNames,
|
|
230
|
+
ref: ref
|
|
231
|
+
}, other), _p3 || (_p3 = /*#__PURE__*/React__default["default"].createElement("p", null, "page header tab bar")), children);
|
|
232
|
+
});
|
|
233
|
+
PageHeaderTabBar.displayName = 'PageHeaderTabBar';
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* -------
|
|
237
|
+
* Exports
|
|
238
|
+
* -------
|
|
239
|
+
*/
|
|
240
|
+
const Root = PageHeader;
|
|
241
|
+
Root.displayName = 'PageHeader.Root';
|
|
242
|
+
const BreadcrumbBar = PageHeaderBreadcrumbBar;
|
|
243
|
+
BreadcrumbBar.displayName = 'PageHeaderBreadcrumbBar';
|
|
244
|
+
const Content = PageHeaderContent;
|
|
245
|
+
Content.displayName = 'PageHeaderContent';
|
|
246
|
+
const HeroImage = PageHeaderHeroImage;
|
|
247
|
+
HeroImage.displayName = 'PageHeaderHeroImage';
|
|
248
|
+
const TabBar = PageHeaderTabBar;
|
|
249
|
+
TabBar.displayName = 'PageHeaderTabBar';
|
|
250
|
+
|
|
251
|
+
exports.BreadcrumbBar = BreadcrumbBar;
|
|
252
|
+
exports.Content = Content;
|
|
253
|
+
exports.HeroImage = HeroImage;
|
|
254
|
+
exports.PageHeader = PageHeader;
|
|
255
|
+
exports.PageHeaderBreadcrumbBar = PageHeaderBreadcrumbBar;
|
|
256
|
+
exports.PageHeaderContent = PageHeaderContent;
|
|
257
|
+
exports.PageHeaderHeroImage = PageHeaderHeroImage;
|
|
258
|
+
exports.PageHeaderTabBar = PageHeaderTabBar;
|
|
259
|
+
exports.Root = Root;
|
|
260
|
+
exports.TabBar = TabBar;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2025
|
|
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
|
+
export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderTabBar, PageHeaderHeroImage, Root, BreadcrumbBar, Content, TabBar, HeroImage, } from './PageHeader';
|
|
8
|
+
export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderTabBarProps, PageHeaderHeroImageProps, } from './PageHeader';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2023
|
|
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
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
11
|
+
|
|
12
|
+
var PageHeader = require('./PageHeader.js');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
exports.BreadcrumbBar = PageHeader.BreadcrumbBar;
|
|
17
|
+
exports.Content = PageHeader.Content;
|
|
18
|
+
exports.HeroImage = PageHeader.HeroImage;
|
|
19
|
+
exports.PageHeader = PageHeader.PageHeader;
|
|
20
|
+
exports.PageHeaderBreadcrumbBar = PageHeader.PageHeaderBreadcrumbBar;
|
|
21
|
+
exports.PageHeaderContent = PageHeader.PageHeaderContent;
|
|
22
|
+
exports.PageHeaderHeroImage = PageHeader.PageHeaderHeroImage;
|
|
23
|
+
exports.PageHeaderTabBar = PageHeader.PageHeaderTabBar;
|
|
24
|
+
exports.Root = PageHeader.Root;
|
|
25
|
+
exports.TabBar = PageHeader.TabBar;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2024
|
|
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
|
+
*/
|
|
1
7
|
import ControlledPasswordInput from '../TextInput/ControlledPasswordInput';
|
|
2
8
|
import PasswordInput from '../TextInput/PasswordInput';
|
|
3
9
|
export { ControlledPasswordInput, PasswordInput };
|