@carbon/react 1.81.0 → 1.82.0-rc.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 (202) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +892 -892
  2. package/es/components/AILabel/index.d.ts +1 -1
  3. package/es/components/AILabel/index.js +2 -9
  4. package/es/components/Breadcrumb/Breadcrumb.d.ts +2 -3
  5. package/es/components/Breadcrumb/Breadcrumb.js +4 -4
  6. package/es/components/Breadcrumb/BreadcrumbItem.d.ts +3 -4
  7. package/es/components/Breadcrumb/BreadcrumbItem.js +5 -4
  8. package/es/components/Button/Button.js +2 -10
  9. package/es/components/ButtonSet/ButtonSet.d.ts +2 -3
  10. package/es/components/ButtonSet/ButtonSet.js +4 -4
  11. package/es/components/CodeSnippet/CodeSnippet.d.ts +1 -1
  12. package/es/components/CodeSnippet/CodeSnippet.js +3 -19
  13. package/es/components/ComboBox/ComboBox.d.ts +1 -1
  14. package/es/components/ComboBox/ComboBox.js +2 -2
  15. package/es/components/ComboButton/index.d.ts +1 -1
  16. package/es/components/ComboButton/index.js +2 -18
  17. package/es/components/ComposedModal/ComposedModal.js +5 -3
  18. package/es/components/Copy/Copy.d.ts +1 -1
  19. package/es/components/Copy/Copy.js +2 -18
  20. package/es/components/CopyButton/CopyButton.d.ts +1 -1
  21. package/es/components/CopyButton/CopyButton.js +2 -18
  22. package/es/components/DataTable/DataTable.d.ts +7 -12
  23. package/es/components/DataTable/DataTable.js +0 -5
  24. package/es/components/DataTable/TableToolbarAction.d.ts +2 -4
  25. package/es/components/DataTable/TableToolbarAction.js +5 -4
  26. package/es/components/DataTable/tools/sorting.d.ts +42 -0
  27. package/es/components/DataTable/tools/sorting.js +24 -53
  28. package/es/components/DatePicker/DatePicker.d.ts +1 -1
  29. package/es/components/DatePicker/DatePicker.js +18 -18
  30. package/es/components/Dialog/index.d.ts +1 -1
  31. package/es/components/Dropdown/Dropdown.Skeleton.d.ts +2 -2
  32. package/es/components/Dropdown/Dropdown.Skeleton.js +2 -2
  33. package/es/components/Dropdown/Dropdown.d.ts +7 -6
  34. package/es/components/Dropdown/Dropdown.js +7 -3
  35. package/es/components/FileUploader/FileUploaderButton.d.ts +1 -1
  36. package/es/components/FileUploader/FileUploaderButton.js +1 -1
  37. package/es/components/FileUploader/FileUploaderDropContainer.js +1 -1
  38. package/es/components/FileUploader/FileUploaderItem.js +1 -1
  39. package/es/components/FluidDropdown/FluidDropdown.d.ts +1 -1
  40. package/es/components/FluidSearch/FluidSearch.d.ts +3 -6
  41. package/es/components/IconButton/index.d.ts +1 -1
  42. package/es/components/IconButton/index.js +2 -18
  43. package/es/components/ListBox/ListBox.d.ts +4 -5
  44. package/es/components/ListBox/ListBox.js +8 -7
  45. package/es/components/ListBox/ListBoxMenu.d.ts +4 -4
  46. package/es/components/ListBox/ListBoxMenu.js +4 -2
  47. package/es/components/ListBox/ListBoxMenuItem.d.ts +9 -8
  48. package/es/components/ListBox/ListBoxPropTypes.d.ts +3 -3
  49. package/es/components/ListBox/ListBoxPropTypes.js +3 -3
  50. package/es/components/ListBox/index.d.ts +7 -5
  51. package/es/components/ListBox/index.js +1 -1
  52. package/es/components/Menu/Menu.js +5 -0
  53. package/es/components/Modal/Modal.js +9 -9
  54. package/es/components/MultiSelect/FilterableMultiSelect.d.ts +3 -2
  55. package/es/components/MultiSelect/FilterableMultiSelect.js +3 -2
  56. package/es/components/MultiSelect/MultiSelect.d.ts +8 -2
  57. package/es/components/MultiSelect/MultiSelect.js +3 -3
  58. package/es/components/Notification/Notification.js +1 -1
  59. package/es/components/OverflowMenu/OverflowMenu.js +2 -21
  60. package/es/components/OverflowMenu/next/index.js +2 -18
  61. package/es/components/OverflowMenuItem/OverflowMenuItem.d.ts +2 -4
  62. package/es/components/OverflowMenuItem/OverflowMenuItem.js +5 -4
  63. package/es/components/PageHeader/PageHeader.d.ts +153 -8
  64. package/es/components/PageHeader/PageHeader.js +143 -21
  65. package/es/components/PageHeader/index.d.ts +2 -2
  66. package/es/components/PageHeader/index.js +1 -1
  67. package/es/components/Popover/index.js +4 -21
  68. package/es/components/Search/Search.d.ts +2 -5
  69. package/es/components/Search/Search.js +24 -8
  70. package/es/components/Stack/HStack.d.ts +2 -3
  71. package/es/components/Stack/HStack.js +4 -7
  72. package/es/components/Stack/Stack.d.ts +3 -4
  73. package/es/components/Stack/Stack.js +3 -6
  74. package/es/components/Stack/VStack.d.ts +2 -3
  75. package/es/components/Stack/VStack.js +3 -2
  76. package/es/components/Stack/index.d.ts +4 -4
  77. package/es/components/TextArea/TextArea.js +3 -5
  78. package/es/components/TimePicker/TimePicker.d.ts +3 -4
  79. package/es/components/TimePicker/TimePicker.js +5 -4
  80. package/es/components/TimePickerSelect/TimePickerSelect.d.ts +23 -4
  81. package/es/components/TimePickerSelect/TimePickerSelect.js +5 -4
  82. package/es/components/TreeView/TreeNode.js +13 -1
  83. package/es/components/TreeView/TreeView.js +1 -1
  84. package/es/index.js +1 -1
  85. package/es/internal/FloatingMenu.js +9 -5
  86. package/es/internal/environment.js +7 -0
  87. package/es/internal/keyboard/navigation.d.ts +0 -10
  88. package/es/internal/keyboard/navigation.js +1 -13
  89. package/es/internal/useId.js +1 -1
  90. package/es/internal/useNoInteractiveChildren.js +7 -0
  91. package/es/internal/useOutsideClick.js +3 -0
  92. package/es/internal/wrapFocus.d.ts +49 -0
  93. package/es/internal/wrapFocus.js +64 -51
  94. package/es/tools/events.d.ts +17 -0
  95. package/es/tools/events.js +10 -13
  96. package/es/tools/mapPopoverAlign.d.ts +15 -0
  97. package/es/tools/mapPopoverAlign.js +28 -0
  98. package/es/tools/uniqueId.d.ts +7 -0
  99. package/es/tools/uniqueId.js +3 -3
  100. package/es/types/common.d.ts +0 -2
  101. package/lib/components/AILabel/index.d.ts +1 -1
  102. package/lib/components/AILabel/index.js +2 -9
  103. package/lib/components/Breadcrumb/Breadcrumb.d.ts +2 -3
  104. package/lib/components/Breadcrumb/Breadcrumb.js +3 -3
  105. package/lib/components/Breadcrumb/BreadcrumbItem.d.ts +3 -4
  106. package/lib/components/Breadcrumb/BreadcrumbItem.js +4 -3
  107. package/lib/components/Button/Button.js +1 -9
  108. package/lib/components/ButtonSet/ButtonSet.d.ts +2 -3
  109. package/lib/components/ButtonSet/ButtonSet.js +3 -3
  110. package/lib/components/CodeSnippet/CodeSnippet.d.ts +1 -1
  111. package/lib/components/CodeSnippet/CodeSnippet.js +3 -19
  112. package/lib/components/ComboBox/ComboBox.d.ts +1 -1
  113. package/lib/components/ComboBox/ComboBox.js +1 -1
  114. package/lib/components/ComboButton/index.d.ts +1 -1
  115. package/lib/components/ComboButton/index.js +2 -18
  116. package/lib/components/ComposedModal/ComposedModal.js +5 -3
  117. package/lib/components/Copy/Copy.d.ts +1 -1
  118. package/lib/components/Copy/Copy.js +2 -18
  119. package/lib/components/CopyButton/CopyButton.d.ts +1 -1
  120. package/lib/components/CopyButton/CopyButton.js +2 -18
  121. package/lib/components/DataTable/DataTable.d.ts +7 -12
  122. package/lib/components/DataTable/DataTable.js +0 -5
  123. package/lib/components/DataTable/TableToolbarAction.d.ts +2 -4
  124. package/lib/components/DataTable/TableToolbarAction.js +4 -3
  125. package/lib/components/DataTable/tools/sorting.d.ts +42 -0
  126. package/lib/components/DataTable/tools/sorting.js +23 -53
  127. package/lib/components/DatePicker/DatePicker.d.ts +1 -1
  128. package/lib/components/DatePicker/DatePicker.js +18 -18
  129. package/lib/components/Dialog/index.d.ts +1 -1
  130. package/lib/components/Dropdown/Dropdown.Skeleton.d.ts +2 -2
  131. package/lib/components/Dropdown/Dropdown.Skeleton.js +1 -1
  132. package/lib/components/Dropdown/Dropdown.d.ts +7 -6
  133. package/lib/components/Dropdown/Dropdown.js +6 -2
  134. package/lib/components/FileUploader/FileUploaderButton.d.ts +1 -1
  135. package/lib/components/FileUploader/FileUploaderButton.js +1 -1
  136. package/lib/components/FileUploader/FileUploaderDropContainer.js +1 -1
  137. package/lib/components/FileUploader/FileUploaderItem.js +1 -1
  138. package/lib/components/FluidDropdown/FluidDropdown.d.ts +1 -1
  139. package/lib/components/FluidSearch/FluidSearch.d.ts +3 -6
  140. package/lib/components/IconButton/index.d.ts +1 -1
  141. package/lib/components/IconButton/index.js +2 -18
  142. package/lib/components/ListBox/ListBox.d.ts +4 -5
  143. package/lib/components/ListBox/ListBox.js +7 -6
  144. package/lib/components/ListBox/ListBoxMenu.d.ts +4 -4
  145. package/lib/components/ListBox/ListBoxMenu.js +3 -1
  146. package/lib/components/ListBox/ListBoxMenuItem.d.ts +9 -8
  147. package/lib/components/ListBox/ListBoxPropTypes.d.ts +3 -3
  148. package/lib/components/ListBox/ListBoxPropTypes.js +4 -4
  149. package/lib/components/ListBox/index.d.ts +7 -5
  150. package/lib/components/ListBox/index.js +2 -2
  151. package/lib/components/Menu/Menu.js +5 -0
  152. package/lib/components/Modal/Modal.js +9 -9
  153. package/lib/components/MultiSelect/FilterableMultiSelect.d.ts +3 -2
  154. package/lib/components/MultiSelect/FilterableMultiSelect.js +2 -1
  155. package/lib/components/MultiSelect/MultiSelect.d.ts +8 -2
  156. package/lib/components/MultiSelect/MultiSelect.js +2 -2
  157. package/lib/components/Notification/Notification.js +1 -1
  158. package/lib/components/OverflowMenu/OverflowMenu.js +2 -21
  159. package/lib/components/OverflowMenu/next/index.js +2 -18
  160. package/lib/components/OverflowMenuItem/OverflowMenuItem.d.ts +2 -4
  161. package/lib/components/OverflowMenuItem/OverflowMenuItem.js +4 -3
  162. package/lib/components/PageHeader/PageHeader.d.ts +153 -8
  163. package/lib/components/PageHeader/PageHeader.js +145 -19
  164. package/lib/components/PageHeader/index.d.ts +2 -2
  165. package/lib/components/PageHeader/index.js +4 -0
  166. package/lib/components/Popover/index.js +4 -21
  167. package/lib/components/Search/Search.d.ts +2 -5
  168. package/lib/components/Search/Search.js +24 -8
  169. package/lib/components/Stack/HStack.d.ts +2 -3
  170. package/lib/components/Stack/HStack.js +3 -6
  171. package/lib/components/Stack/Stack.d.ts +3 -4
  172. package/lib/components/Stack/Stack.js +2 -5
  173. package/lib/components/Stack/VStack.d.ts +2 -3
  174. package/lib/components/Stack/VStack.js +2 -1
  175. package/lib/components/Stack/index.d.ts +4 -4
  176. package/lib/components/TextArea/TextArea.js +2 -4
  177. package/lib/components/TimePicker/TimePicker.d.ts +3 -4
  178. package/lib/components/TimePicker/TimePicker.js +4 -3
  179. package/lib/components/TimePickerSelect/TimePickerSelect.d.ts +23 -4
  180. package/lib/components/TimePickerSelect/TimePickerSelect.js +4 -3
  181. package/lib/components/TreeView/TreeNode.js +13 -1
  182. package/lib/components/TreeView/TreeView.js +1 -1
  183. package/lib/index.js +2 -2
  184. package/lib/internal/FloatingMenu.js +9 -5
  185. package/lib/internal/environment.js +7 -0
  186. package/lib/internal/keyboard/navigation.d.ts +0 -10
  187. package/lib/internal/keyboard/navigation.js +0 -14
  188. package/lib/internal/useNoInteractiveChildren.js +7 -0
  189. package/lib/internal/useOutsideClick.js +3 -0
  190. package/lib/internal/wrapFocus.d.ts +49 -0
  191. package/lib/internal/wrapFocus.js +66 -53
  192. package/lib/tools/events.d.ts +17 -0
  193. package/lib/tools/events.js +10 -13
  194. package/lib/tools/mapPopoverAlign.d.ts +15 -0
  195. package/lib/tools/mapPopoverAlign.js +32 -0
  196. package/lib/tools/uniqueId.d.ts +7 -0
  197. package/lib/tools/uniqueId.js +3 -3
  198. package/lib/types/common.d.ts +0 -2
  199. package/package.json +7 -7
  200. package/telemetry.yml +3 -1
  201. package/es/tools/createPropAdapter.js +0 -40
  202. package/lib/tools/createPropAdapter.js +0 -44
@@ -4,8 +4,8 @@
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 { ForwardedRef, ReactNode, type Ref } from 'react';
8
- import { ForwardRefReturn, ReactAttr } from '../../types/common';
7
+ import React, { ReactNode } from 'react';
8
+ import { ReactAttr } from '../../types/common';
9
9
  export interface ListBoxMenuItemProps extends ReactAttr<HTMLLIElement> {
10
10
  /**
11
11
  * Specify any children nodes that should be rendered inside of the ListBox
@@ -29,9 +29,10 @@ export interface ListBoxMenuItemProps extends ReactAttr<HTMLLIElement> {
29
29
  */
30
30
  title?: string;
31
31
  }
32
- export type ListBoxMenuItemForwardedRef = (ForwardedRef<HTMLLIElement> & {
33
- menuItemOptionRef?: Ref<HTMLDivElement>;
34
- }) | null;
35
- export type ListBoxMenuItemComponent = ForwardRefReturn<ListBoxMenuItemForwardedRef, ListBoxMenuItemProps>;
36
- declare const _default: ListBoxMenuItemComponent;
37
- export default _default;
32
+ /**
33
+ * `ListBoxMenuItem` is a helper component for managing the container class
34
+ * name, alongside any classes for any corresponding states, for a generic list
35
+ * box menu item.
36
+ */
37
+ declare const ListBoxMenuItem: React.ForwardRefExoticComponent<ListBoxMenuItemProps & React.RefAttributes<HTMLLIElement>>;
38
+ export default ListBoxMenuItem;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2023
2
+ * Copyright IBM Corp. 2016, 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.
@@ -9,6 +9,6 @@ declare const listBoxTypes: readonly ["default", "inline"];
9
9
  declare const listBoxSizes: readonly ["sm", "md", "lg"];
10
10
  export type ListBoxType = (typeof listBoxTypes)[number];
11
11
  export type ListBoxSize = (typeof listBoxSizes)[number];
12
- export declare const ListBoxType: PropTypes.Requireable<"default" | "inline">;
13
- export declare const ListBoxSize: PropTypes.Requireable<"sm" | "md" | "lg">;
12
+ export declare const ListBoxTypePropType: PropTypes.Requireable<"default" | "inline">;
13
+ export declare const ListBoxSizePropType: PropTypes.Requireable<"sm" | "md" | "lg">;
14
14
  export {};
@@ -9,7 +9,7 @@ import PropTypes from 'prop-types';
9
9
 
10
10
  const listBoxTypes = ['default', 'inline'];
11
11
  const listBoxSizes = ['sm', 'md', 'lg'];
12
- const ListBoxType = PropTypes.oneOf(listBoxTypes);
13
- const ListBoxSize = PropTypes.oneOf(listBoxSizes);
12
+ const ListBoxTypePropType = PropTypes.oneOf(listBoxTypes);
13
+ const ListBoxSizePropType = PropTypes.oneOf(listBoxSizes);
14
14
 
15
- export { ListBoxSize, ListBoxType };
15
+ export { ListBoxSizePropType, ListBoxTypePropType };
@@ -1,17 +1,19 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2023
2
+ * Copyright IBM Corp. 2016, 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
- export * as PropTypes from './ListBoxPropTypes';
8
7
  export * from './ListBoxPropTypes';
9
- import { ListBoxComponent as ListBoxPartialComponent } from './ListBox';
8
+ import ListBoxInternal from './ListBox';
10
9
  import { ListBoxFieldComponent } from './ListBoxField';
11
- import { ListBoxMenuComponent } from './ListBoxMenu';
10
+ import ListBoxMenu from './ListBoxMenu';
12
11
  import { ListBoxMenuIconComponent } from './ListBoxMenuIcon';
13
- import { ListBoxMenuItemComponent } from './ListBoxMenuItem';
12
+ import ListBoxMenuItem from './ListBoxMenuItem';
14
13
  import { ListBoxSelectionComponent } from './ListBoxSelection';
14
+ type ListBoxMenuComponent = typeof ListBoxMenu;
15
+ type ListBoxMenuItemComponent = typeof ListBoxMenuItem;
16
+ type ListBoxPartialComponent = typeof ListBoxInternal;
15
17
  export interface ListBoxComponent extends ListBoxPartialComponent {
16
18
  readonly Field: ListBoxFieldComponent;
17
19
  readonly Menu: ListBoxMenuComponent;
@@ -5,7 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- export { ListBoxSize, ListBoxType } from './ListBoxPropTypes.js';
8
+ export { ListBoxSizePropType, ListBoxTypePropType } from './ListBoxPropTypes.js';
9
9
  import ListBox$1 from './ListBox.js';
10
10
  import ListBoxField from './ListBoxField.js';
11
11
  import ListBoxMenu from './ListBoxMenu.js';
@@ -34,7 +34,12 @@ const Menu = /*#__PURE__*/forwardRef(function Menu(_ref, forwardRef) {
34
34
  open,
35
35
  size = 'sm',
36
36
  legacyAutoalign = 'true',
37
+ // TODO: `ssr-friendly` doesn't support ESLint v9.
38
+ // https://github.com/kopiro/eslint-plugin-ssr-friendly/issues/30
39
+ // https://github.com/carbon-design-system/carbon/issues/18991
40
+ /*
37
41
  // eslint-disable-next-line ssr-friendly/no-dom-globals-in-react-fc
42
+ */
38
43
  target = canUseDOM && document.body,
39
44
  x = 0,
40
45
  y = 0,
@@ -17,7 +17,7 @@ import ButtonSet from '../ButtonSet/ButtonSet.js';
17
17
  import InlineLoading from '../InlineLoading/InlineLoading.js';
18
18
  import { Layer } from '../Layer/index.js';
19
19
  import requiredIfGivenPropIsTruthy from '../../prop-types/requiredIfGivenPropIsTruthy.js';
20
- import wrapFocus, { wrapFocusWithoutSentinels, elementOrParentIsFloatingMenu } from '../../internal/wrapFocus.js';
20
+ import { wrapFocusWithoutSentinels, elementOrParentIsFloatingMenu, wrapFocus } from '../../internal/wrapFocus.js';
21
21
  import useIsomorphicEffect from '../../internal/useIsomorphicEffect.js';
22
22
  import { useId } from '../../internal/useId.js';
23
23
  import { usePrefix } from '../../internal/usePrefix.js';
@@ -99,28 +99,28 @@ const Modal = /*#__PURE__*/React__default.forwardRef(function Modal(_ref, ref) {
99
99
  target
100
100
  } = evt;
101
101
  evt.stopPropagation();
102
- if (open) {
102
+ if (open && target instanceof HTMLElement) {
103
103
  if (match(evt, Escape)) {
104
104
  onRequestClose(evt);
105
105
  }
106
- if (match(evt, Enter) && shouldSubmitOnEnter && target instanceof Element && !isCloseButton(target) && document.activeElement !== button.current) {
106
+ if (match(evt, Enter) && shouldSubmitOnEnter && !isCloseButton(target) && document.activeElement !== button.current) {
107
107
  onRequestSubmit(evt);
108
108
  }
109
109
  if (focusTrapWithoutSentinels && !enableDialogElement && match(evt, Tab) && innerModal.current) {
110
110
  wrapFocusWithoutSentinels({
111
111
  containerNode: innerModal.current,
112
- currentActiveNode: evt.target,
113
- // TODO: Delete type assertion following util rewrite.
114
- // https://github.com/carbon-design-system/carbon/pull/18913
112
+ currentActiveNode: target,
115
113
  event: evt
116
114
  });
117
115
  }
118
116
  }
119
117
  }
120
118
  function handleOnClick(evt) {
121
- const target = evt.target;
119
+ const {
120
+ target
121
+ } = evt;
122
122
  evt.stopPropagation();
123
- if (!preventCloseOnClickOutside && !elementOrParentIsFloatingMenu(target, selectorsFloatingMenus) && innerModal.current && !innerModal.current.contains(target)) {
123
+ if (!preventCloseOnClickOutside && target instanceof Node && !elementOrParentIsFloatingMenu(target, selectorsFloatingMenus) && innerModal.current && !innerModal.current.contains(target)) {
124
124
  onRequestClose(evt);
125
125
  }
126
126
  }
@@ -129,7 +129,7 @@ const Modal = /*#__PURE__*/React__default.forwardRef(function Modal(_ref, ref) {
129
129
  target: oldActiveNode,
130
130
  relatedTarget: currentActiveNode
131
131
  } = _ref2;
132
- if (open && currentActiveNode && oldActiveNode) {
132
+ if (open && oldActiveNode instanceof HTMLElement && currentActiveNode instanceof HTMLElement) {
133
133
  const {
134
134
  current: bodyNode
135
135
  } = innerModal;
@@ -7,6 +7,7 @@
7
7
  import { type UseComboboxProps, type UseMultipleSelectionProps } from 'downshift';
8
8
  import React, { ReactNode, FunctionComponent, ReactElement } from 'react';
9
9
  import { type MultiSelectSortingProps } from './MultiSelectPropTypes';
10
+ import { type ListBoxSize, type ListBoxType } from '../ListBox';
10
11
  import { TranslateWithId } from '../../types/common';
11
12
  /**
12
13
  * Message ids that will be passed to translateWithId().
@@ -166,7 +167,7 @@ export interface FilterableMultiSelectProps<ItemType> extends MultiSelectSorting
166
167
  * Specify the size of the ListBox.
167
168
  * Currently, supports either `sm`, `md` or `lg` as an option.
168
169
  */
169
- size?: 'sm' | 'md' | 'lg';
170
+ size?: ListBoxSize;
170
171
  /**
171
172
  * @deprecated please use decorator instead.
172
173
  * **Experimental**: Provide a `Slug` component to be rendered inside the `Checkbox` component
@@ -177,7 +178,7 @@ export interface FilterableMultiSelectProps<ItemType> extends MultiSelectSorting
177
178
  * combobox via ARIA attributes.
178
179
  */
179
180
  titleText?: ReactNode;
180
- type?: 'default' | 'inline';
181
+ type?: ListBoxType;
181
182
  /**
182
183
  * Specify title to show title on hover
183
184
  */
@@ -29,7 +29,7 @@ import '../FluidForm/FluidForm.js';
29
29
  import { FormContext } from '../FluidForm/FormContext.js';
30
30
  import { useSelection } from '../../internal/Selection.js';
31
31
  import { useFloating, flip, size, hide, autoUpdate } from '@floating-ui/react';
32
- import { ListBoxSize } from '../ListBox/ListBoxPropTypes.js';
32
+ import { ListBoxSizePropType, ListBoxTypePropType } from '../ListBox/ListBoxPropTypes.js';
33
33
 
34
34
  const {
35
35
  InputBlur,
@@ -775,7 +775,7 @@ FilterableMultiSelect.propTypes = {
775
775
  /**
776
776
  * Specify the size of the ListBox. Currently supports either `sm`, `md` or `lg` as an option.
777
777
  */
778
- size: ListBoxSize,
778
+ size: ListBoxSizePropType,
779
779
  slug: deprecate(PropTypes.node, 'The `slug` prop has been deprecated and will be removed in the next major version. Use the decorator prop instead.'),
780
780
  ...sortingPropTypes,
781
781
  /**
@@ -787,6 +787,7 @@ FilterableMultiSelect.propTypes = {
787
787
  * Callback function for translating ListBoxMenuIcon SVG title
788
788
  */
789
789
  translateWithId: PropTypes.func,
790
+ type: ListBoxTypePropType,
790
791
  /**
791
792
  * Specify title to show title on hover
792
793
  */
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { UseSelectProps } from 'downshift';
8
8
  import React, { ReactNode } from 'react';
9
- import { ListBoxSize, ListBoxType } from '../ListBox';
9
+ import { type ListBoxSize, type ListBoxType } from '../ListBox';
10
10
  import { MultiSelectSortingProps } from './MultiSelectPropTypes';
11
11
  import { ListBoxProps } from '../ListBox/ListBox';
12
12
  import type { TranslateWithId } from '../../types/common';
@@ -173,5 +173,11 @@ export interface MultiSelectProps<ItemType> extends MultiSelectSortingProps<Item
173
173
  */
174
174
  warnText?: ReactNode;
175
175
  }
176
- export declare const MultiSelect: React.ForwardRefExoticComponent<MultiSelectProps<unknown> & React.RefAttributes<HTMLButtonElement>>;
176
+ export declare const MultiSelect: MultiSelectComponent;
177
+ type MultiSelectComponentProps<ItemType> = React.PropsWithChildren<MultiSelectProps<ItemType>> & React.RefAttributes<HTMLButtonElement>;
178
+ interface MultiSelectComponent {
179
+ propTypes: Record<string, any>;
180
+ displayName: string;
181
+ <ItemType>(props: MultiSelectComponentProps<ItemType>): React.ReactElement<any> | null;
182
+ }
177
183
  export {};
@@ -29,7 +29,7 @@ import '../Checkbox/Checkbox.Skeleton.js';
29
29
  import { noopFn } from '../../internal/noopFn.js';
30
30
  import { useFloating, flip, size, hide, autoUpdate } from '@floating-ui/react';
31
31
  import { useFeatureFlag } from '../FeatureFlags/index.js';
32
- import { ListBoxSize } from '../ListBox/ListBoxPropTypes.js';
32
+ import { ListBoxSizePropType, ListBoxTypePropType } from '../ListBox/ListBoxPropTypes.js';
33
33
 
34
34
  const {
35
35
  ItemClick,
@@ -669,7 +669,7 @@ MultiSelect.propTypes = {
669
669
  /**
670
670
  * Specify the size of the ListBox. Currently supports either `sm`, `md` or `lg` as an option.
671
671
  */
672
- size: ListBoxSize,
672
+ size: ListBoxSizePropType,
673
673
  slug: deprecate(PropTypes.node, 'The `slug` prop has been deprecated and will be removed in the next major version. Use the decorator prop instead.'),
674
674
  /**
675
675
  * Provide a method that sorts all options in the control. Overriding this
@@ -704,7 +704,7 @@ MultiSelect.propTypes = {
704
704
  /**
705
705
  * Specify 'inline' to create an inline multi-select.
706
706
  */
707
- type: PropTypes.oneOf(['default', 'inline']),
707
+ type: ListBoxTypePropType,
708
708
  /**
709
709
  * Specify title to show title on hover
710
710
  */
@@ -21,7 +21,7 @@ import { match, matches } from '../../internal/keyboard/match.js';
21
21
  import { usePrefix } from '../../internal/usePrefix.js';
22
22
  import { useId } from '../../internal/useId.js';
23
23
  import { noopFn } from '../../internal/noopFn.js';
24
- import wrapFocus, { wrapFocusWithoutSentinels } from '../../internal/wrapFocus.js';
24
+ import { wrapFocus, wrapFocusWithoutSentinels } from '../../internal/wrapFocus.js';
25
25
  import { useFeatureFlag } from '../FeatureFlags/index.js';
26
26
  import { warning } from '../../internal/warning.js';
27
27
  import deprecateValuesWithin from '../../prop-types/deprecateValuesWithin.js';
@@ -22,6 +22,7 @@ import { setupGetInstanceId } from '../../tools/setupGetInstanceId.js';
22
22
  import { IconButton } from '../IconButton/index.js';
23
23
  import { useOutsideClick } from '../../internal/useOutsideClick.js';
24
24
  import deprecateValuesWithin from '../../prop-types/deprecateValuesWithin.js';
25
+ import { mapPopoverAlign } from '../../tools/mapPopoverAlign.js';
25
26
 
26
27
  const getInstanceId = setupGetInstanceId();
27
28
  const on = function (target) {
@@ -90,22 +91,6 @@ const getMenuOffset = (menuBody, direction, trigger, flip) => {
90
91
  };
91
92
  }
92
93
  };
93
-
94
- // TODO: Replace this code when align mapping is consolidated.
95
- // https://github.com/carbon-design-system/carbon/pull/19081
96
- const propMappingFunction = deprecatedValue => {
97
- const mapping = {
98
- 'top-left': 'top-start',
99
- 'top-right': 'top-end',
100
- 'bottom-left': 'bottom-start',
101
- 'bottom-right': 'bottom-end',
102
- 'left-bottom': 'left-end',
103
- 'left-top': 'left-start',
104
- 'right-bottom': 'right-end',
105
- 'right-top': 'right-start'
106
- };
107
- return mapping[deprecatedValue];
108
- };
109
94
  const OverflowMenu = /*#__PURE__*/forwardRef((_ref, ref) => {
110
95
  let {
111
96
  align,
@@ -385,11 +370,7 @@ OverflowMenu.propTypes = {
385
370
  // deprecated use right-start instead
386
371
 
387
372
  // new values to match floating-ui
388
- 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-end', 'left-start', 'right-end', 'right-start']),
389
- //allowed prop values
390
- ['top', 'top-start', 'top-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end', 'right', 'right-start', 'right-end'],
391
- //optional mapper function
392
- propMappingFunction),
373
+ 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-end', 'left-start', 'right-end', 'right-start']), ['top', 'top-start', 'top-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end', 'right', 'right-start', 'right-end'], mapPopoverAlign),
393
374
  /**
394
375
  * Specify a label to be read by screen readers on the container node
395
376
  */
@@ -20,21 +20,9 @@ import { useId } from '../../../internal/useId.js';
20
20
  import { usePrefix } from '../../../internal/usePrefix.js';
21
21
  import { useAttachedMenu } from '../../../internal/useAttachedMenu.js';
22
22
  import deprecateValuesWithin from '../../../prop-types/deprecateValuesWithin.js';
23
+ import { mapPopoverAlign } from '../../../tools/mapPopoverAlign.js';
23
24
 
24
25
  const defaultSize = 'md';
25
- const propMappingFunction = deprecatedValue => {
26
- const mapping = {
27
- 'top-left': 'top-start',
28
- 'top-right': 'top-end',
29
- 'bottom-left': 'bottom-start',
30
- 'bottom-right': 'bottom-end',
31
- 'left-bottom': 'left-end',
32
- 'left-top': 'left-start',
33
- 'right-bottom': 'right-end',
34
- 'right-top': 'right-start'
35
- };
36
- return mapping[deprecatedValue];
37
- };
38
26
  const OverflowMenu = /*#__PURE__*/React__default.forwardRef(function OverflowMenu(_ref, forwardRef) {
39
27
  let {
40
28
  autoAlign = false,
@@ -196,11 +184,7 @@ OverflowMenu.propTypes = {
196
184
  // deprecated use right-start instead
197
185
 
198
186
  // new values to match floating-ui
199
- 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-end', 'left-start', 'right-end', 'right-start']),
200
- //allowed prop values
201
- ['top', 'top-start', 'top-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end', 'right', 'right-start', 'right-end'],
202
- //optional mapper function
203
- propMappingFunction),
187
+ 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-end', 'left-start', 'right-end', 'right-start']), ['top', 'top-start', 'top-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end', 'right', 'right-start', 'right-end'], mapPopoverAlign),
204
188
  /**
205
189
  * Specify a DOM node where the Menu should be rendered in. Defaults to document.body.
206
190
  */
@@ -1,11 +1,10 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2023
2
+ * Copyright IBM Corp. 2016, 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
7
  import React from 'react';
8
- import { ForwardRefReturn } from '../../types/common';
9
8
  export interface OverflowMenuItemProps extends React.HTMLAttributes<HTMLElement> {
10
9
  /**
11
10
  * The CSS class name to be placed on the button element
@@ -57,6 +56,5 @@ export interface OverflowMenuItemProps extends React.HTMLAttributes<HTMLElement>
57
56
  */
58
57
  wrapperClassName?: string;
59
58
  }
60
- export type OverflowMenuItemComponent = ForwardRefReturn<HTMLElement, OverflowMenuItemProps>;
61
- declare const OverflowMenuItem: OverflowMenuItemComponent;
59
+ declare const OverflowMenuItem: React.ForwardRefExoticComponent<Omit<OverflowMenuItemProps, "ref"> & React.RefAttributes<HTMLElement>>;
62
60
  export default OverflowMenuItem;
@@ -8,7 +8,7 @@
8
8
  import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import cx from 'classnames';
10
10
  import PropTypes from 'prop-types';
11
- import React__default from 'react';
11
+ import React__default, { forwardRef } from 'react';
12
12
  import { ArrowDown, ArrowUp } from '../../internal/keyboard/keys.js';
13
13
  import { match } from '../../internal/keyboard/match.js';
14
14
  import { usePrefix } from '../../internal/usePrefix.js';
@@ -16,8 +16,9 @@ import { warning } from '../../internal/warning.js';
16
16
  import '../Text/index.js';
17
17
  import { Text } from '../Text/Text.js';
18
18
 
19
- const OverflowMenuItem = /*#__PURE__*/React__default.forwardRef(function OverflowMenuItem(_ref, ref) {
20
- let {
19
+ const frFn = forwardRef;
20
+ const OverflowMenuItem = frFn((props, ref) => {
21
+ const {
21
22
  className,
22
23
  closeMenu,
23
24
  disabled = false,
@@ -33,7 +34,7 @@ const OverflowMenuItem = /*#__PURE__*/React__default.forwardRef(function Overflo
33
34
  title,
34
35
  wrapperClassName,
35
36
  ...rest
36
- } = _ref;
37
+ } = props;
37
38
  const prefix = usePrefix();
38
39
  function setTabFocus(evt) {
39
40
  if (match(evt, ArrowDown)) {
@@ -5,6 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React, { type ComponentType, type FunctionComponent } from 'react';
8
+ import PropTypes from 'prop-types';
8
9
  import { Tabs as BaseTabs } from '../Tabs/Tabs';
9
10
  /**
10
11
  * ----------
@@ -48,10 +49,6 @@ interface PageHeaderContentProps {
48
49
  * The PageHeaderContent's title
49
50
  */
50
51
  title: string;
51
- /**
52
- * The PageHeaderContent's subtitle
53
- */
54
- subtitle?: string;
55
52
  /**
56
53
  * The PageHeaderContent's contextual actions
57
54
  */
@@ -62,6 +59,88 @@ interface PageHeaderContentProps {
62
59
  pageActions?: React.ReactNode;
63
60
  }
64
61
  declare const PageHeaderContent: React.ForwardRefExoticComponent<PageHeaderContentProps & React.RefAttributes<HTMLDivElement>>;
62
+ /**
63
+ * ----------------
64
+ * PageHeaderContentPageActions
65
+ * ----------------
66
+ */
67
+ interface PageHeaderContentPageActionsProps {
68
+ /**
69
+ * Provide child elements to be rendered inside PageHeaderContentPageActions.
70
+ */
71
+ children?: React.ReactNode;
72
+ /**
73
+ * Specify an optional className to be added to your PageHeaderContentPageActions
74
+ */
75
+ className?: string;
76
+ /**
77
+ * The PageHeaderContent's page actions collapsible Menu button label
78
+ */
79
+ menuButtonLabel?: string;
80
+ /**
81
+ * The PageHeaderContent's page actions
82
+ */
83
+ pageActions?: React.ReactNode;
84
+ }
85
+ declare const PageHeaderContentPageActions: {
86
+ ({ className, children, menuButtonLabel, pageActions, ...other }: PageHeaderContentPageActionsProps): import("react/jsx-runtime").JSX.Element;
87
+ displayName: string;
88
+ propTypes: {
89
+ /**
90
+ * Provide child elements to be rendered inside PageHeaderContentPageActions.
91
+ */
92
+ children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
93
+ /**
94
+ * Specify an optional className to be added to your PageHeaderContentPageActions
95
+ */
96
+ className: PropTypes.Requireable<string>;
97
+ /**
98
+ * The PageHeaderContent's collapsible Menu button label
99
+ */
100
+ menuButtonLabel: PropTypes.Requireable<string>;
101
+ /**
102
+ * The PageHeaderContent's page actions
103
+ */
104
+ pageActions: PropTypes.Requireable<NonNullable<any[] | PropTypes.ReactNodeLike>>;
105
+ };
106
+ };
107
+ /**
108
+ * ----------------
109
+ * PageHeaderContentText
110
+ * ----------------
111
+ */
112
+ interface PageHeaderContentTextProps {
113
+ /**
114
+ * Provide child elements to be rendered inside PageHeaderContentText.
115
+ */
116
+ children?: React.ReactNode;
117
+ /**
118
+ * Specify an optional className to be added to your PageHeaderContentText
119
+ */
120
+ className?: string;
121
+ /**
122
+ * The PageHeaderContent's subtitle
123
+ */
124
+ subtitle?: string;
125
+ }
126
+ declare const PageHeaderContentText: {
127
+ ({ className, children, subtitle, ...other }: PageHeaderContentTextProps): import("react/jsx-runtime").JSX.Element;
128
+ displayName: string;
129
+ propTypes: {
130
+ /**
131
+ * Provide child elements to be rendered inside PageHeaderContentText.
132
+ */
133
+ children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
134
+ /**
135
+ * Specify an optional className to be added to your PageHeaderContentText
136
+ */
137
+ className: PropTypes.Requireable<string>;
138
+ /**
139
+ * The PageHeaderContent's subtitle
140
+ */
141
+ subtitle: PropTypes.Requireable<string>;
142
+ };
143
+ };
65
144
  /**
66
145
  * ----------------
67
146
  * PageHeaderHeroImage
@@ -77,7 +156,20 @@ interface PageHeaderHeroImageProps {
77
156
  */
78
157
  className?: string;
79
158
  }
80
- declare const PageHeaderHeroImage: React.ForwardRefExoticComponent<PageHeaderHeroImageProps & React.RefAttributes<HTMLDivElement>>;
159
+ declare const PageHeaderHeroImage: {
160
+ ({ className, children, ...other }: PageHeaderHeroImageProps): import("react/jsx-runtime").JSX.Element;
161
+ displayName: string;
162
+ propTypes: {
163
+ /**
164
+ * Provide child elements to be rendered inside PageHeaderHeroImage.
165
+ */
166
+ children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
167
+ /**
168
+ * Specify an optional className to be added to your PageHeaderHeroImage
169
+ */
170
+ className: PropTypes.Requireable<string>;
171
+ };
172
+ };
81
173
  /**
82
174
  * ----------------
83
175
  * PageHeaderTabBar
@@ -101,8 +193,61 @@ declare const PageHeaderTabs: React.ForwardRefExoticComponent<PageHeaderTabsProp
101
193
  declare const Root: React.ForwardRefExoticComponent<PageHeaderProps & React.RefAttributes<HTMLDivElement>>;
102
194
  declare const BreadcrumbBar: React.ForwardRefExoticComponent<PageHeaderBreadcrumbBarProps & React.RefAttributes<HTMLDivElement>>;
103
195
  declare const Content: React.ForwardRefExoticComponent<PageHeaderContentProps & React.RefAttributes<HTMLDivElement>>;
104
- declare const HeroImage: React.ForwardRefExoticComponent<PageHeaderHeroImageProps & React.RefAttributes<HTMLDivElement>>;
196
+ declare const ContentPageActions: {
197
+ ({ className, children, menuButtonLabel, pageActions, ...other }: PageHeaderContentPageActionsProps): import("react/jsx-runtime").JSX.Element;
198
+ displayName: string;
199
+ propTypes: {
200
+ /**
201
+ * Provide child elements to be rendered inside PageHeaderContentPageActions.
202
+ */
203
+ children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
204
+ /**
205
+ * Specify an optional className to be added to your PageHeaderContentPageActions
206
+ */
207
+ className: PropTypes.Requireable<string>;
208
+ /**
209
+ * The PageHeaderContent's collapsible Menu button label
210
+ */
211
+ menuButtonLabel: PropTypes.Requireable<string>;
212
+ /**
213
+ * The PageHeaderContent's page actions
214
+ */
215
+ pageActions: PropTypes.Requireable<NonNullable<any[] | PropTypes.ReactNodeLike>>;
216
+ };
217
+ };
218
+ declare const ContentText: {
219
+ ({ className, children, subtitle, ...other }: PageHeaderContentTextProps): import("react/jsx-runtime").JSX.Element;
220
+ displayName: string;
221
+ propTypes: {
222
+ /**
223
+ * Provide child elements to be rendered inside PageHeaderContentText.
224
+ */
225
+ children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
226
+ /**
227
+ * Specify an optional className to be added to your PageHeaderContentText
228
+ */
229
+ className: PropTypes.Requireable<string>;
230
+ /**
231
+ * The PageHeaderContent's subtitle
232
+ */
233
+ subtitle: PropTypes.Requireable<string>;
234
+ };
235
+ };
236
+ declare const HeroImage: {
237
+ ({ className, children, ...other }: PageHeaderHeroImageProps): import("react/jsx-runtime").JSX.Element;
238
+ displayName: string;
239
+ propTypes: {
240
+ /**
241
+ * Provide child elements to be rendered inside PageHeaderHeroImage.
242
+ */
243
+ children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
244
+ /**
245
+ * Specify an optional className to be added to your PageHeaderHeroImage
246
+ */
247
+ className: PropTypes.Requireable<string>;
248
+ };
249
+ };
105
250
  declare const TabBar: React.ForwardRefExoticComponent<PageHeaderTabBarProps & React.RefAttributes<HTMLDivElement>>;
106
251
  declare const Tabs: React.ForwardRefExoticComponent<PageHeaderTabsProps & React.RefAttributes<HTMLDivElement>>;
107
- export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderHeroImage, PageHeaderTabBar, PageHeaderTabs, Root, BreadcrumbBar, Content, HeroImage, TabBar, Tabs, };
108
- export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderHeroImageProps, PageHeaderTabBarProps, PageHeaderTabsProps, };
252
+ export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderContentPageActions, PageHeaderContentText, PageHeaderHeroImage, PageHeaderTabBar, PageHeaderTabs, Root, BreadcrumbBar, Content, ContentPageActions, ContentText, HeroImage, TabBar, Tabs, };
253
+ export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderContentPageActionsProps, PageHeaderContentTextProps, PageHeaderHeroImageProps, PageHeaderTabBarProps, PageHeaderTabsProps, };