@carbon/react 1.92.0 → 1.93.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 (302) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +1011 -970
  2. package/es/components/AILabel/index.js +4 -4
  3. package/es/components/Breadcrumb/BreadcrumbItem.js +1 -1
  4. package/es/components/Button/Button.js +2 -2
  5. package/es/components/ChatButton/ChatButton.js +1 -1
  6. package/es/components/Checkbox/Checkbox.js +1 -1
  7. package/es/components/CheckboxGroup/CheckboxGroup.js +1 -1
  8. package/es/components/ComboBox/ComboBox.d.ts +3 -11
  9. package/es/components/ComboBox/ComboBox.js +15 -25
  10. package/es/components/ComboButton/index.d.ts +5 -8
  11. package/es/components/ComboButton/index.js +9 -12
  12. package/es/components/ComposedModal/ComposedModal.js +22 -36
  13. package/es/components/DataTable/DataTable.d.ts +25 -16
  14. package/es/components/DataTable/DataTable.js +33 -34
  15. package/es/components/DataTable/Table.js +2 -2
  16. package/es/components/DataTable/TableBatchActions.d.ts +49 -10
  17. package/es/components/DataTable/TableBatchActions.js +26 -21
  18. package/es/components/DataTable/TableExpandHeader.js +2 -2
  19. package/es/components/DataTable/TableExpandRow.js +1 -1
  20. package/es/components/DataTable/TableHeader.d.ts +8 -10
  21. package/es/components/DataTable/TableHeader.js +11 -13
  22. package/es/components/DataTable/TableRow.js +5 -5
  23. package/es/components/DataTable/TableSlugRow.js +1 -1
  24. package/es/components/DataTable/TableToolbarMenu.js +1 -1
  25. package/es/components/DataTable/TableToolbarSearch.d.ts +8 -7
  26. package/es/components/DataTable/TableToolbarSearch.js +11 -11
  27. package/es/components/DataTable/index.d.ts +2 -2
  28. package/es/components/DataTable/state/sorting.d.ts +2 -2
  29. package/es/components/DataTable/state/sorting.js +1 -1
  30. package/es/components/DataTable/tools/sorting.js +1 -1
  31. package/es/components/DatePicker/DatePicker.js +9 -9
  32. package/es/components/DatePickerInput/DatePickerInput.js +5 -5
  33. package/es/components/Dialog/Dialog.js +6 -6
  34. package/es/components/Dropdown/Dropdown.d.ts +1 -1
  35. package/es/components/Dropdown/Dropdown.js +8 -8
  36. package/es/components/ErrorBoundary/ErrorBoundaryContext.js +1 -1
  37. package/es/components/FileUploader/FileUploader.js +4 -4
  38. package/es/components/FileUploader/FileUploaderButton.js +1 -1
  39. package/es/components/FileUploader/FileUploaderDropContainer.js +1 -1
  40. package/es/components/FileUploader/FileUploaderItem.js +2 -2
  41. package/es/components/FluidComboBox/FluidComboBox.d.ts +4 -7
  42. package/es/components/FluidComboBox/FluidComboBox.js +1 -1
  43. package/es/components/FluidDropdown/FluidDropdown.d.ts +4 -8
  44. package/es/components/FluidDropdown/FluidDropdown.js +1 -1
  45. package/es/components/FluidMultiSelect/FluidFilterableMultiSelect.d.ts +3 -7
  46. package/es/components/FluidMultiSelect/FluidMultiSelect.d.ts +3 -7
  47. package/es/components/FluidMultiSelect/FluidMultiSelect.js +3 -3
  48. package/es/components/FluidNumberInput/FluidNumberInput.d.ts +4 -7
  49. package/es/components/FluidNumberInput/FluidNumberInput.js +2 -2
  50. package/es/components/FluidSearch/FluidSearch.js +1 -1
  51. package/es/components/FluidSelect/FluidSelect.js +1 -1
  52. package/es/components/FluidTextInput/FluidTextInput.js +1 -1
  53. package/es/components/FluidTimePicker/FluidTimePicker.js +3 -3
  54. package/es/components/FluidTimePickerSelect/FluidTimePickerSelect.js +1 -1
  55. package/es/components/Grid/CSSGrid.js +3 -3
  56. package/es/components/Grid/Column.js +2 -2
  57. package/es/components/Grid/ColumnHang.js +1 -1
  58. package/es/components/Grid/FlexGrid.js +1 -1
  59. package/es/components/Grid/Row.js +1 -1
  60. package/es/components/Heading/index.js +2 -2
  61. package/es/components/IconButton/index.js +2 -2
  62. package/es/components/IconIndicator/index.js +2 -2
  63. package/es/components/InlineCheckbox/InlineCheckbox.js +1 -1
  64. package/es/components/Layout/index.js +2 -2
  65. package/es/components/LayoutDirection/LayoutDirection.js +1 -1
  66. package/es/components/Link/Link.js +2 -2
  67. package/es/components/ListBox/ListBoxField.d.ts +0 -1
  68. package/es/components/ListBox/ListBoxMenuIcon.d.ts +8 -4
  69. package/es/components/ListBox/ListBoxMenuIcon.js +10 -6
  70. package/es/components/ListBox/ListBoxMenuItem.js +2 -2
  71. package/es/components/ListBox/ListBoxSelection.d.ts +3 -6
  72. package/es/components/ListBox/ListBoxSelection.js +5 -10
  73. package/es/components/ListBox/index.d.ts +5 -3
  74. package/es/components/ListBox/next/ListBoxSelection.d.ts +6 -13
  75. package/es/components/ListBox/next/ListBoxSelection.js +16 -8
  76. package/es/components/ListBox/next/ListBoxTrigger.d.ts +5 -10
  77. package/es/components/ListBox/next/ListBoxTrigger.js +6 -6
  78. package/es/components/Menu/MenuContext.js +1 -1
  79. package/es/components/Menu/MenuItem.js +1 -1
  80. package/es/components/MenuButton/index.js +5 -5
  81. package/es/components/Modal/Modal.js +20 -36
  82. package/es/components/ModalWrapper/ModalWrapper.js +2 -2
  83. package/es/components/MultiSelect/FilterableMultiSelect.d.ts +3 -12
  84. package/es/components/MultiSelect/FilterableMultiSelect.js +18 -27
  85. package/es/components/MultiSelect/MultiSelect.d.ts +2 -2
  86. package/es/components/MultiSelect/MultiSelect.js +12 -12
  87. package/es/components/Notification/Notification.js +1 -1
  88. package/es/components/NumberInput/NumberInput.d.ts +2 -5
  89. package/es/components/NumberInput/NumberInput.js +13 -18
  90. package/es/components/OverflowMenu/OverflowMenu.d.ts +2 -2
  91. package/es/components/OverflowMenu/OverflowMenu.js +4 -4
  92. package/es/components/OverflowMenu/next/index.d.ts +1 -1
  93. package/es/components/OverflowMenu/next/index.js +2 -2
  94. package/es/components/OverflowMenuItem/OverflowMenuItem.js +2 -2
  95. package/es/components/PageHeader/PageHeader.js +12 -12
  96. package/es/components/Pagination/Pagination.js +3 -3
  97. package/es/components/PaginationNav/PaginationNav.d.ts +6 -9
  98. package/es/components/PaginationNav/PaginationNav.js +21 -22
  99. package/es/components/Popover/index.js +8 -8
  100. package/es/components/ProgressBar/ProgressBar.js +2 -2
  101. package/es/components/ProgressIndicator/ProgressIndicator.d.ts +11 -15
  102. package/es/components/ProgressIndicator/ProgressIndicator.js +15 -15
  103. package/es/components/RadioButton/RadioButton.js +1 -1
  104. package/es/components/RadioButtonGroup/RadioButtonGroup.js +1 -1
  105. package/es/components/RadioTile/RadioTile.js +1 -1
  106. package/es/components/Select/Select.js +7 -5
  107. package/es/components/ShapeIndicator/index.js +2 -2
  108. package/es/components/Slider/Slider.d.ts +7 -9
  109. package/es/components/Slider/Slider.js +16 -20
  110. package/es/components/Stack/HStack.js +1 -1
  111. package/es/components/Stack/Stack.js +1 -1
  112. package/es/components/Stack/VStack.js +1 -1
  113. package/es/components/StructuredList/StructuredList.js +3 -3
  114. package/es/components/Tabs/Tabs.js +12 -12
  115. package/es/components/Tag/DismissibleTag.js +3 -3
  116. package/es/components/Tag/OperationalTag.js +2 -2
  117. package/es/components/Tag/SelectableTag.js +2 -2
  118. package/es/components/Tag/Tag.js +4 -4
  119. package/es/components/Tag/isEllipsisActive.js +1 -1
  120. package/es/components/Text/Text.js +1 -1
  121. package/es/components/TextArea/TextArea.js +1 -1
  122. package/es/components/TextInput/PasswordInput.js +4 -4
  123. package/es/components/TextInput/TextInput.js +3 -3
  124. package/es/components/Theme/index.js +3 -3
  125. package/es/components/Tile/Tile.js +3 -3
  126. package/es/components/TimePicker/TimePicker.js +1 -1
  127. package/es/components/Toggletip/index.js +4 -4
  128. package/es/components/Tooltip/DefinitionTooltip.js +1 -1
  129. package/es/components/Tooltip/Tooltip.js +3 -3
  130. package/es/components/TreeView/TreeNode.js +6 -6
  131. package/es/components/TreeView/TreeView.js +5 -5
  132. package/es/components/UIShell/HeaderContainer.js +1 -1
  133. package/es/components/UIShell/HeaderMenu.js +1 -1
  134. package/es/components/UIShell/Link.js +2 -2
  135. package/es/components/UIShell/SideNavItems.js +1 -1
  136. package/es/components/UIShell/Switcher.js +1 -1
  137. package/es/components/UIShell/SwitcherItem.js +1 -1
  138. package/es/index.d.ts +1 -1
  139. package/es/internal/FloatingMenu.js +4 -4
  140. package/es/internal/Selection.js +6 -6
  141. package/es/internal/useMergedRefs.js +1 -1
  142. package/es/internal/useNoInteractiveChildren.js +4 -4
  143. package/es/internal/useOutsideClick.js +1 -1
  144. package/es/internal/useOverflowItems.js +6 -6
  145. package/es/internal/useResizeObserver.js +3 -3
  146. package/es/internal/useSavedCallback.js +1 -1
  147. package/es/internal/warning.js +1 -1
  148. package/es/prop-types/isRequiredOneOf.js +2 -2
  149. package/es/tools/events.js +1 -1
  150. package/es/tools/wrapComponent.js +1 -1
  151. package/es/types/common.d.ts +6 -2
  152. package/lib/components/AILabel/index.js +4 -4
  153. package/lib/components/Breadcrumb/BreadcrumbItem.js +1 -1
  154. package/lib/components/Button/Button.js +2 -2
  155. package/lib/components/ChatButton/ChatButton.js +1 -1
  156. package/lib/components/Checkbox/Checkbox.js +1 -1
  157. package/lib/components/CheckboxGroup/CheckboxGroup.js +1 -1
  158. package/lib/components/ComboBox/ComboBox.d.ts +3 -11
  159. package/lib/components/ComboBox/ComboBox.js +15 -25
  160. package/lib/components/ComboButton/index.d.ts +5 -8
  161. package/lib/components/ComboButton/index.js +9 -12
  162. package/lib/components/ComposedModal/ComposedModal.js +21 -35
  163. package/lib/components/DataTable/DataTable.d.ts +25 -16
  164. package/lib/components/DataTable/DataTable.js +33 -34
  165. package/lib/components/DataTable/Table.js +2 -2
  166. package/lib/components/DataTable/TableBatchActions.d.ts +49 -10
  167. package/lib/components/DataTable/TableBatchActions.js +26 -21
  168. package/lib/components/DataTable/TableExpandHeader.js +2 -2
  169. package/lib/components/DataTable/TableExpandRow.js +1 -1
  170. package/lib/components/DataTable/TableHeader.d.ts +8 -10
  171. package/lib/components/DataTable/TableHeader.js +11 -13
  172. package/lib/components/DataTable/TableRow.js +5 -5
  173. package/lib/components/DataTable/TableSlugRow.js +1 -1
  174. package/lib/components/DataTable/TableToolbarMenu.js +1 -1
  175. package/lib/components/DataTable/TableToolbarSearch.d.ts +8 -7
  176. package/lib/components/DataTable/TableToolbarSearch.js +11 -11
  177. package/lib/components/DataTable/index.d.ts +2 -2
  178. package/lib/components/DataTable/state/sorting.d.ts +2 -2
  179. package/lib/components/DataTable/state/sorting.js +1 -1
  180. package/lib/components/DataTable/tools/sorting.js +1 -1
  181. package/lib/components/DatePicker/DatePicker.js +9 -9
  182. package/lib/components/DatePickerInput/DatePickerInput.js +5 -5
  183. package/lib/components/Dialog/Dialog.js +6 -6
  184. package/lib/components/Dropdown/Dropdown.d.ts +1 -1
  185. package/lib/components/Dropdown/Dropdown.js +8 -8
  186. package/lib/components/ErrorBoundary/ErrorBoundaryContext.js +1 -1
  187. package/lib/components/FileUploader/FileUploader.js +4 -4
  188. package/lib/components/FileUploader/FileUploaderButton.js +1 -1
  189. package/lib/components/FileUploader/FileUploaderDropContainer.js +1 -1
  190. package/lib/components/FileUploader/FileUploaderItem.js +2 -2
  191. package/lib/components/FluidComboBox/FluidComboBox.d.ts +4 -7
  192. package/lib/components/FluidComboBox/FluidComboBox.js +1 -1
  193. package/lib/components/FluidDropdown/FluidDropdown.d.ts +4 -8
  194. package/lib/components/FluidDropdown/FluidDropdown.js +1 -1
  195. package/lib/components/FluidMultiSelect/FluidFilterableMultiSelect.d.ts +3 -7
  196. package/lib/components/FluidMultiSelect/FluidMultiSelect.d.ts +3 -7
  197. package/lib/components/FluidMultiSelect/FluidMultiSelect.js +3 -3
  198. package/lib/components/FluidNumberInput/FluidNumberInput.d.ts +4 -7
  199. package/lib/components/FluidNumberInput/FluidNumberInput.js +2 -2
  200. package/lib/components/FluidSearch/FluidSearch.js +1 -1
  201. package/lib/components/FluidSelect/FluidSelect.js +1 -1
  202. package/lib/components/FluidTextInput/FluidTextInput.js +1 -1
  203. package/lib/components/FluidTimePicker/FluidTimePicker.js +3 -3
  204. package/lib/components/FluidTimePickerSelect/FluidTimePickerSelect.js +1 -1
  205. package/lib/components/Grid/CSSGrid.js +3 -3
  206. package/lib/components/Grid/Column.js +2 -2
  207. package/lib/components/Grid/ColumnHang.js +1 -1
  208. package/lib/components/Grid/FlexGrid.js +1 -1
  209. package/lib/components/Grid/Row.js +1 -1
  210. package/lib/components/Heading/index.js +2 -2
  211. package/lib/components/IconButton/index.js +2 -2
  212. package/lib/components/IconIndicator/index.js +2 -2
  213. package/lib/components/InlineCheckbox/InlineCheckbox.js +1 -1
  214. package/lib/components/Layout/index.js +2 -2
  215. package/lib/components/LayoutDirection/LayoutDirection.js +1 -1
  216. package/lib/components/Link/Link.js +2 -2
  217. package/lib/components/ListBox/ListBoxField.d.ts +0 -1
  218. package/lib/components/ListBox/ListBoxMenuIcon.d.ts +8 -4
  219. package/lib/components/ListBox/ListBoxMenuIcon.js +10 -6
  220. package/lib/components/ListBox/ListBoxMenuItem.js +2 -2
  221. package/lib/components/ListBox/ListBoxSelection.d.ts +3 -6
  222. package/lib/components/ListBox/ListBoxSelection.js +4 -10
  223. package/lib/components/ListBox/index.d.ts +5 -3
  224. package/lib/components/ListBox/next/ListBoxSelection.d.ts +6 -13
  225. package/lib/components/ListBox/next/ListBoxSelection.js +16 -8
  226. package/lib/components/ListBox/next/ListBoxTrigger.d.ts +5 -10
  227. package/lib/components/ListBox/next/ListBoxTrigger.js +5 -6
  228. package/lib/components/Menu/MenuContext.js +1 -1
  229. package/lib/components/Menu/MenuItem.js +1 -1
  230. package/lib/components/MenuButton/index.js +5 -5
  231. package/lib/components/Modal/Modal.js +19 -35
  232. package/lib/components/ModalWrapper/ModalWrapper.js +2 -2
  233. package/lib/components/MultiSelect/FilterableMultiSelect.d.ts +3 -12
  234. package/lib/components/MultiSelect/FilterableMultiSelect.js +18 -27
  235. package/lib/components/MultiSelect/MultiSelect.d.ts +2 -2
  236. package/lib/components/MultiSelect/MultiSelect.js +12 -12
  237. package/lib/components/Notification/Notification.js +1 -1
  238. package/lib/components/NumberInput/NumberInput.d.ts +2 -5
  239. package/lib/components/NumberInput/NumberInput.js +12 -18
  240. package/lib/components/OverflowMenu/OverflowMenu.d.ts +2 -2
  241. package/lib/components/OverflowMenu/OverflowMenu.js +4 -4
  242. package/lib/components/OverflowMenu/next/index.d.ts +1 -1
  243. package/lib/components/OverflowMenu/next/index.js +2 -2
  244. package/lib/components/OverflowMenuItem/OverflowMenuItem.js +2 -2
  245. package/lib/components/PageHeader/PageHeader.js +12 -12
  246. package/lib/components/Pagination/Pagination.js +3 -3
  247. package/lib/components/PaginationNav/PaginationNav.d.ts +6 -9
  248. package/lib/components/PaginationNav/PaginationNav.js +21 -22
  249. package/lib/components/Popover/index.js +8 -8
  250. package/lib/components/ProgressBar/ProgressBar.js +2 -2
  251. package/lib/components/ProgressIndicator/ProgressIndicator.d.ts +11 -15
  252. package/lib/components/ProgressIndicator/ProgressIndicator.js +15 -15
  253. package/lib/components/RadioButton/RadioButton.js +1 -1
  254. package/lib/components/RadioButtonGroup/RadioButtonGroup.js +1 -1
  255. package/lib/components/RadioTile/RadioTile.js +1 -1
  256. package/lib/components/Select/Select.js +7 -5
  257. package/lib/components/ShapeIndicator/index.js +2 -2
  258. package/lib/components/Slider/Slider.d.ts +7 -9
  259. package/lib/components/Slider/Slider.js +16 -20
  260. package/lib/components/Stack/HStack.js +1 -1
  261. package/lib/components/Stack/Stack.js +1 -1
  262. package/lib/components/Stack/VStack.js +1 -1
  263. package/lib/components/StructuredList/StructuredList.js +3 -3
  264. package/lib/components/Tabs/Tabs.js +12 -12
  265. package/lib/components/Tag/DismissibleTag.js +3 -3
  266. package/lib/components/Tag/OperationalTag.js +2 -2
  267. package/lib/components/Tag/SelectableTag.js +2 -2
  268. package/lib/components/Tag/Tag.js +4 -4
  269. package/lib/components/Tag/isEllipsisActive.js +1 -1
  270. package/lib/components/Text/Text.js +1 -1
  271. package/lib/components/TextArea/TextArea.js +1 -1
  272. package/lib/components/TextInput/PasswordInput.js +4 -4
  273. package/lib/components/TextInput/TextInput.js +3 -3
  274. package/lib/components/Theme/index.js +3 -3
  275. package/lib/components/Tile/Tile.js +3 -3
  276. package/lib/components/TimePicker/TimePicker.js +1 -1
  277. package/lib/components/Toggletip/index.js +4 -4
  278. package/lib/components/Tooltip/DefinitionTooltip.js +1 -1
  279. package/lib/components/Tooltip/Tooltip.js +3 -3
  280. package/lib/components/TreeView/TreeNode.js +6 -6
  281. package/lib/components/TreeView/TreeView.js +5 -5
  282. package/lib/components/UIShell/HeaderContainer.js +1 -1
  283. package/lib/components/UIShell/HeaderMenu.js +1 -1
  284. package/lib/components/UIShell/Link.js +2 -2
  285. package/lib/components/UIShell/SideNavItems.js +1 -1
  286. package/lib/components/UIShell/Switcher.js +1 -1
  287. package/lib/components/UIShell/SwitcherItem.js +1 -1
  288. package/lib/index.d.ts +1 -1
  289. package/lib/internal/FloatingMenu.js +4 -4
  290. package/lib/internal/Selection.js +6 -6
  291. package/lib/internal/useMergedRefs.js +1 -1
  292. package/lib/internal/useNoInteractiveChildren.js +4 -4
  293. package/lib/internal/useOutsideClick.js +1 -1
  294. package/lib/internal/useOverflowItems.js +6 -6
  295. package/lib/internal/useResizeObserver.js +3 -3
  296. package/lib/internal/useSavedCallback.js +1 -1
  297. package/lib/internal/warning.js +1 -1
  298. package/lib/prop-types/isRequiredOneOf.js +2 -2
  299. package/lib/tools/events.js +1 -1
  300. package/lib/tools/wrapComponent.js +1 -1
  301. package/lib/types/common.d.ts +6 -2
  302. package/package.json +9 -9
@@ -1,27 +1,22 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2024
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
- export declare const translationIds: {
8
+ import type { TranslateWithId } from '../../../types/common';
9
+ declare const translationIds: {
9
10
  readonly 'close.menu': "close.menu";
10
11
  readonly 'open.menu': "open.menu";
11
12
  };
12
- export type TranslationKey = keyof typeof translationIds;
13
- export interface ListBoxTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
13
+ type TranslationKey = keyof typeof translationIds;
14
+ export interface ListBoxTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, TranslateWithId<TranslationKey> {
14
15
  /**
15
16
  * Specify whether the menu is currently open, which will influence the
16
17
  * direction of the menu icon
17
18
  */
18
19
  isOpen: boolean;
19
- /**
20
- * i18n hook used to provide the appropriate description for the given menu
21
- * icon. This function takes in an id defined in `translationIds` and should
22
- * return a string message for that given message id.
23
- */
24
- translateWithId?: (id: TranslationKey) => string;
25
20
  }
26
21
  /**
27
22
  * `ListBoxTrigger` is used to orient the icon up or down depending on the
@@ -25,13 +25,15 @@ const defaultTranslations = {
25
25
  [translationIds['close.menu']]: 'Close',
26
26
  [translationIds['open.menu']]: 'Open'
27
27
  };
28
- const defaultTranslateWithId = id => defaultTranslations[id];
28
+ const defaultTranslateWithId = messageId => {
29
+ return defaultTranslations[messageId];
30
+ };
29
31
  /**
30
32
  * `ListBoxTrigger` is used to orient the icon up or down depending on the
31
33
  * state of the menu for a given `ListBox`
32
34
  */
33
35
 
34
- // eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/20071
36
+ // eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/20452
35
37
  const ListBoxTrigger = /*#__PURE__*/React.forwardRef(({
36
38
  isOpen,
37
39
  translateWithId: t = defaultTranslateWithId,
@@ -59,12 +61,9 @@ ListBoxTrigger.propTypes = {
59
61
  */
60
62
  isOpen: PropTypes.bool.isRequired,
61
63
  /**
62
- * i18n hook used to provide the appropriate description for the given menu
63
- * icon. This function takes in an id defined in `translationIds` and should
64
- * return a string message for that given message id.
64
+ * Translates component strings using your i18n tool.
65
65
  */
66
66
  translateWithId: PropTypes.func
67
67
  };
68
68
 
69
69
  exports.default = ListBoxTrigger;
70
- exports.translationIds = translationIds;
@@ -46,7 +46,7 @@ function menuReducer(state, action) {
46
46
  const MenuContext = /*#__PURE__*/React.createContext({
47
47
  state: menuDefaultState,
48
48
  // 'dispatch' is populated by the root menu
49
- // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20071
49
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
50
50
  dispatch: _ => {}
51
51
  });
52
52
 
@@ -344,7 +344,7 @@ const MenuItemRadioGroup = /*#__PURE__*/React.forwardRef(function MenuItemRadioG
344
344
  onChange,
345
345
  defaultValue: defaultSelectedItem ?? {}
346
346
  });
347
- //eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20071
347
+ //eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
348
348
  function handleClick(item, e) {
349
349
  setSelection(item);
350
350
  }
@@ -25,7 +25,7 @@ var mergeRefs = require('../../tools/mergeRefs.js');
25
25
 
26
26
  const validButtonKinds = ['primary', 'tertiary', 'ghost'];
27
27
  const defaultButtonKind = 'primary';
28
- // eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/20071
28
+ // eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/20452
29
29
  const MenuButton = /*#__PURE__*/React.forwardRef(({
30
30
  children,
31
31
  className,
@@ -44,7 +44,7 @@ const MenuButton = /*#__PURE__*/React.forwardRef(({
44
44
  const id = useId.useId('MenuButton');
45
45
  const prefix = usePrefix.usePrefix();
46
46
  const triggerRef = React.useRef(null);
47
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
47
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
48
48
  let middlewares = [];
49
49
  if (!enableOnlyFloatingStyles) {
50
50
  middlewares = [react.flip({
@@ -163,7 +163,7 @@ MenuButton.propTypes = {
163
163
  /**
164
164
  * Specify the type of button to be used as the base for the trigger button.
165
165
  */
166
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
166
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
167
167
  // @ts-ignore-next-line -- avoid spurious (?) TS2322 error
168
168
  kind: PropTypes.oneOf(validButtonKinds),
169
169
  /**
@@ -177,13 +177,13 @@ MenuButton.propTypes = {
177
177
  /**
178
178
  * Specify the size of the button and menu.
179
179
  */
180
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
180
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
181
181
  // @ts-ignore-next-line -- avoid spurious (?) TS2322 error
182
182
  size: PropTypes.oneOf(['xs', 'sm', 'md', 'lg']),
183
183
  /**
184
184
  * Specify the tabIndex of the button.
185
185
  */
186
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
186
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
187
187
  // @ts-ignore-next-line -- avoid spurious (?) TS2322 error
188
188
  tabIndex: PropTypes.number,
189
189
  /**
@@ -22,7 +22,7 @@ var InlineLoading = require('../InlineLoading/InlineLoading.js');
22
22
  var index$3 = require('../Layer/index.js');
23
23
  var requiredIfGivenPropIsTruthy = require('../../prop-types/requiredIfGivenPropIsTruthy.js');
24
24
  var wrapFocus = require('../../internal/wrapFocus.js');
25
- var useIsomorphicEffect = require('../../internal/useIsomorphicEffect.js');
25
+ var useResizeObserver = require('../../internal/useResizeObserver.js');
26
26
  var useId = require('../../internal/useId.js');
27
27
  var useMergedRefs = require('../../internal/useMergedRefs.js');
28
28
  var usePrefix = require('../../internal/usePrefix.js');
@@ -41,7 +41,6 @@ var index$1 = require('../AILabel/index.js');
41
41
  var utils = require('../../internal/utils.js');
42
42
  var warning = require('../../internal/warning.js');
43
43
  var ModalPresence = require('./ModalPresence.js');
44
- var debounce = require('../../node_modules/es-toolkit/dist/compat/function/debounce.js');
45
44
 
46
45
  const ModalSizes = ['xs', 'sm', 'md', 'lg'];
47
46
  const invalidOutsideClickMessage = '`<Modal>` prop `preventCloseOnClickOutside` should not be `false` when ' + '`passiveModal` is `false`. Transactional, non-passive Modals should ' + 'not be dissmissable by clicking outside. ' + 'See: https://carbondesignsystem.com/components/modal/usage/#transactional-modal';
@@ -116,7 +115,6 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
116
115
  const startTrap = React.useRef(null);
117
116
  const endTrap = React.useRef(null);
118
117
  const wrapFocusTimeout = React.useRef(null);
119
- const [isScrollable, setIsScrollable] = React.useState(false);
120
118
  const modalInstanceId = `modal-${useId.useId()}`;
121
119
  const modalLabelId = `${prefix}--modal-header__label--${modalInstanceId}`;
122
120
  const modalHeadingId = `${prefix}--modal-header__heading--${modalInstanceId}`;
@@ -211,21 +209,16 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
211
209
  if (!modalContent || !modalContent.classList.contains(`${prefix}--modal-scroll-content`) || !currentActiveNode || !modalContent.contains(currentActiveNode)) {
212
210
  return;
213
211
  }
214
- const lastContent = modalContent.children[modalContent.children.length - 1];
215
- const gradientSpacing = modalContent.scrollHeight - lastContent.offsetTop - lastContent.clientHeight;
216
-
217
- // eslint-disable-next-line prefer-const -- https://github.com/carbon-design-system/carbon/issues/20071
218
- for (let elem of modalContent.children) {
219
- if (elem.contains(currentActiveNode)) {
220
- const spaceBelow = modalContent.clientHeight - elem.offsetTop + modalContent.scrollTop - elem.clientHeight;
221
- if (spaceBelow < gradientSpacing) {
222
- modalContent.scrollTop = modalContent.scrollTop + (gradientSpacing - spaceBelow);
223
- }
224
- break;
225
- }
226
- }
212
+ currentActiveNode.scrollIntoView({
213
+ block: 'center'
214
+ });
227
215
  }
228
216
  const onSecondaryButtonClick = onSecondarySubmit ? onSecondarySubmit : onRequestClose;
217
+ const {
218
+ height
219
+ } = useResizeObserver.useResizeObserver({
220
+ ref: contentRef
221
+ });
229
222
  const modalClasses = cx(`${prefix}--modal`, {
230
223
  [`${prefix}--modal-tall`]: !passiveModal,
231
224
  'is-visible': enablePresence || open,
@@ -238,8 +231,15 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
238
231
  [`${prefix}--modal-container--${size}`]: size,
239
232
  [`${prefix}--modal-container--full-width`]: isFullWidth
240
233
  });
234
+
235
+ /**
236
+ * isScrollable is implicitly dependent on height, when height gets updated
237
+ * via `useResizeObserver`, clientHeight and scrollHeight get updated too
238
+ */
239
+ const isScrollable = !!contentRef.current && contentRef?.current?.scrollHeight > contentRef?.current?.clientHeight;
241
240
  const contentClasses = cx(`${prefix}--modal-content`, {
242
- [`${prefix}--modal-scroll-content`]: hasScrollingContent || isScrollable
241
+ [`${prefix}--modal-scroll-content`]: hasScrollingContent || isScrollable,
242
+ [`${prefix}--modal-scroll-content--no-fade`]: height <= 300
243
243
  });
244
244
  const footerClasses = cx(`${prefix}--modal-footer`, {
245
245
  [`${prefix}--modal-footer--three-button`]: Array.isArray(secondaryButtons) && secondaryButtons.length === 2
@@ -278,7 +278,7 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
278
278
  return () => {
279
279
  document.removeEventListener('keydown', handleEscapeKey, true);
280
280
  };
281
- // eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20071
281
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20452
282
282
  }, [open]);
283
283
  React.useEffect(() => {
284
284
  return () => {
@@ -333,29 +333,13 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
333
333
  }
334
334
  }
335
335
  }, [open, selectorPrimaryFocus, danger, prefix, enableDialogElement]);
336
- useIsomorphicEffect.default(() => {
337
- if (contentRef.current) {
338
- setIsScrollable(contentRef.current.scrollHeight > contentRef.current.clientHeight);
339
- }
340
- function handler() {
341
- if (contentRef.current) {
342
- setIsScrollable(contentRef.current.scrollHeight > contentRef.current.clientHeight);
343
- }
344
- }
345
- const debouncedHandler = debounce.debounce(handler, 200);
346
- window.addEventListener('resize', debouncedHandler);
347
- return () => {
348
- debouncedHandler.cancel();
349
- window.removeEventListener('resize', debouncedHandler);
350
- };
351
- }, []);
352
336
 
353
337
  // AILabel always size `sm`
354
338
  const candidate = slug ?? decorator;
355
339
  const candidateIsAILabel = utils.isComponentElement(candidate, index$1.AILabel);
356
340
  const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
357
341
  size: 'sm'
358
- }) : null;
342
+ }) : candidate;
359
343
  const modalButton = /*#__PURE__*/React.createElement("div", {
360
344
  className: `${prefix}--modal-close-button`
361
345
  }, /*#__PURE__*/React.createElement(index$2.IconButton, {
@@ -21,7 +21,7 @@ var keys = require('../../internal/keyboard/keys.js');
21
21
  var match = require('../../internal/keyboard/match.js');
22
22
 
23
23
  let didWarnAboutDeprecation = false;
24
- // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20071
24
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
25
25
  process.env.NODE_ENV !== 'production';
26
26
  class ModalWrapper extends React.Component {
27
27
  constructor(...args) {
@@ -58,7 +58,7 @@ class ModalWrapper extends React.Component {
58
58
  handleSubmit?.(evt);
59
59
  });
60
60
  }
61
- // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20071
61
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
62
62
  if(isDev) {
63
63
  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;
64
64
  didWarnAboutDeprecation = true;
@@ -7,17 +7,9 @@
7
7
  import { type UseComboboxProps, type UseMultipleSelectionProps } from 'downshift';
8
8
  import React, { type FunctionComponent, type ReactElement, type ReactNode } from 'react';
9
9
  import { type MultiSelectSortingProps } from './MultiSelectPropTypes';
10
- import { type ListBoxSize, type ListBoxType } from '../ListBox';
11
- import { TranslateWithId } from '../../types/common';
12
- /**
13
- * Message ids that will be passed to translateWithId().
14
- * Combination of message ids from ListBox/next/ListBoxSelection.js and
15
- * ListBox/next/ListBoxTrigger.js, but we can't access those values directly
16
- * because those components aren't Typescript. (If you try, TranslationKey
17
- * ends up just being defined as "string".)
18
- */
19
- type TranslationKey = 'close.menu' | 'open.menu' | 'clear.all' | 'clear.selection';
20
- export interface FilterableMultiSelectProps<ItemType> extends MultiSelectSortingProps<ItemType>, React.RefAttributes<HTMLDivElement>, TranslateWithId<TranslationKey> {
10
+ import { type ListBoxMenuIconTranslationKey, type ListBoxSelectionTranslationKey, type ListBoxSize, type ListBoxType } from '../ListBox';
11
+ import type { TranslateWithId } from '../../types/common';
12
+ export interface FilterableMultiSelectProps<ItemType> extends MultiSelectSortingProps<ItemType>, React.RefAttributes<HTMLDivElement>, TranslateWithId<ListBoxSelectionTranslationKey | ListBoxMenuIconTranslationKey> {
21
13
  /**
22
14
  * Specify a label to be read by screen readers on the container node
23
15
  * @deprecated
@@ -209,4 +201,3 @@ export declare const FilterableMultiSelect: {
209
201
  defaultProps?: any;
210
202
  displayName?: any;
211
203
  };
212
- export {};
@@ -58,15 +58,6 @@ const {
58
58
  DropdownKeyDownBackspace,
59
59
  FunctionRemoveSelectedItem
60
60
  } = Downshift.useMultipleSelection.stateChangeTypes;
61
-
62
- /**
63
- * Message ids that will be passed to translateWithId().
64
- * Combination of message ids from ListBox/next/ListBoxSelection.js and
65
- * ListBox/next/ListBoxTrigger.js, but we can't access those values directly
66
- * because those components aren't Typescript. (If you try, TranslationKey
67
- * ends up just being defined as "string".)
68
- */
69
-
70
61
  const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableMultiSelect({
71
62
  autoAlign = false,
72
63
  className: containerClassName,
@@ -113,7 +104,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
113
104
  isFluid
114
105
  } = React.useContext(FormContext.FormContext);
115
106
  const isFirstRender = React.useRef(true);
116
- // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20071
107
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
117
108
  const [isFocused, setIsFocused] = React.useState(false);
118
109
  const [isOpen, setIsOpen] = React.useState(!!open);
119
110
  const [prevOpen, setPrevOpen] = React.useState(!!open);
@@ -125,9 +116,9 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
125
116
  inputValue
126
117
  }), [items, inputValue, itemToString, filterItems]);
127
118
  const nonSelectAllItems = React.useMemo(
128
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
119
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
129
120
  () => filteredItems.filter(item => !item.isSelectAll), [filteredItems]);
130
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
121
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
131
122
  const selectAll = filteredItems.some(item => item.isSelectAll);
132
123
  const {
133
124
  selectedItems: controlledSelectedItems,
@@ -144,7 +135,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
144
135
  });
145
136
  const selectAllStatus = React.useMemo(() => {
146
137
  const selectable = nonSelectAllItems.filter(
147
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
138
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
148
139
  item => !item.disabled);
149
140
  const nonSelectedCount = selectable.filter(item => !controlledSelectedItems.some(sel => isEqual(sel, item))).length;
150
141
  const totalCount = selectable.length;
@@ -154,7 +145,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
154
145
  };
155
146
  }, [controlledSelectedItems, nonSelectAllItems]);
156
147
  const handleSelectAllClick = React.useCallback(() => {
157
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
148
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
158
149
  const selectable = nonSelectAllItems.filter(i => !i.disabled);
159
150
  const {
160
151
  checked,
@@ -171,7 +162,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
171
162
  const toSelect = selectable.filter(e => !controlledSelectedItems.some(sel => isEqual(sel, e)));
172
163
  toggleAll([...controlledSelectedItems, ...toSelect]);
173
164
  }
174
- // eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20071
165
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20452
175
166
  }, [nonSelectAllItems, selectAllStatus, controlledSelectedItems, toggleAll]);
176
167
  const {
177
168
  refs,
@@ -222,14 +213,14 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
222
213
 
223
214
  // memoize sorted items to reduce unnecessary expensive sort on rerender
224
215
  const sortedItems = React.useMemo(() => {
225
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
216
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
226
217
  const selectAllItem = items.find(item => item.isSelectAll);
227
218
  const selectableRealItems = nonSelectAllItems.filter(
228
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
219
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
229
220
  item => !item.disabled);
230
221
 
231
222
  // Sort only non-select-all items, select-all item must stay at the top
232
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
223
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
233
224
  const sortedReal = sortItems(nonSelectAllItems, {
234
225
  selectedItems: {
235
226
  top: controlledSelectedItems,
@@ -246,7 +237,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
246
237
  return [selectAllItem, ...sortedReal];
247
238
  }
248
239
  return sortedReal;
249
- // eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20071
240
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20452
250
241
  }, [items, inputValue, controlledSelectedItems, topItems, selectionFeedback, itemToString, compareItems, locale, sortItems, nonSelectAllItems]);
251
242
  const inline = type === 'inline';
252
243
  const showWarning = !invalid && warn;
@@ -330,7 +321,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
330
321
  return () => {
331
322
  document.removeEventListener('mousedown', handleClickOutside);
332
323
  };
333
- // eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20071
324
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20452
334
325
  }, [isOpen, inputFocused]);
335
326
  const {
336
327
  getToggleButtonProps,
@@ -353,9 +344,9 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
353
344
  inputId,
354
345
  inputValue,
355
346
  stateReducer,
356
- // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20071
347
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
357
348
  isItemDisabled(item, _index) {
358
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
349
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
359
350
  return item?.disabled;
360
351
  }
361
352
  });
@@ -523,11 +514,11 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
523
514
  const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
524
515
  const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
525
516
  size: 'mini'
526
- }) : null;
517
+ }) : candidate;
527
518
 
528
519
  // exclude the select-all item from the count
529
520
  const selectedItemsLength = controlledSelectedItems.filter(
530
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
521
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
531
522
  item => !item.isSelectAll).length;
532
523
  const className = cx(`${prefix}--multi-select`, `${prefix}--combo-box`, `${prefix}--multi-select--filterable`, {
533
524
  [`${prefix}--multi-select--invalid`]: invalid,
@@ -709,7 +700,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
709
700
  }, normalizedDecorator) : '', /*#__PURE__*/React.createElement(index$1.default.Menu, menuProps, isOpen ? sortedItems.map((item, index) => {
710
701
  let isChecked;
711
702
  let isIndeterminate = false;
712
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
703
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
713
704
  if (item.isSelectAll) {
714
705
  isChecked = selectAllStatus.checked;
715
706
  isIndeterminate = selectAllStatus.indeterminate;
@@ -807,7 +798,7 @@ FilterableMultiSelect.propTypes = {
807
798
  * change, and in some cases they can not be shimmed by Carbon to shield you
808
799
  * from potentially breaking changes.
809
800
  */
810
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
801
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
811
802
  // @ts-ignore
812
803
  downshiftProps: PropTypes.shape(Downshift.propTypes),
813
804
  /**
@@ -899,7 +890,7 @@ FilterableMultiSelect.propTypes = {
899
890
  */
900
891
  titleText: PropTypes.node,
901
892
  /**
902
- * Callback function for translating ListBoxMenuIcon SVG title
893
+ * Translates component strings using your i18n tool.
903
894
  */
904
895
  translateWithId: PropTypes.func,
905
896
  type: ListBoxPropTypes.ListBoxTypePropType,
@@ -6,14 +6,14 @@
6
6
  */
7
7
  import { UseSelectProps } from 'downshift';
8
8
  import React, { type ReactNode } from 'react';
9
- import { type ListBoxSize, type ListBoxType } from '../ListBox';
9
+ import { type ListBoxMenuIconTranslationKey, type ListBoxSelectionTranslationKey, 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';
13
13
  interface OnChangeData<ItemType> {
14
14
  selectedItems: ItemType[] | null;
15
15
  }
16
- export interface MultiSelectProps<ItemType> extends MultiSelectSortingProps<ItemType>, TranslateWithId<'close.menu' | 'open.menu' | 'clear.all' | 'clear.selection'> {
16
+ export interface MultiSelectProps<ItemType> extends MultiSelectSortingProps<ItemType>, TranslateWithId<ListBoxMenuIconTranslationKey | ListBoxSelectionTranslationKey> {
17
17
  /**
18
18
  * **Experimental**: Will attempt to automatically align the floating
19
19
  * element to avoid collisions with the viewport and being clipped by
@@ -103,14 +103,14 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
103
103
  });
104
104
  }, [items]);
105
105
 
106
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
106
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
107
107
  const selectAll = filteredItems.some(item => item.isSelectAll);
108
108
  const prefix = usePrefix.usePrefix();
109
109
  const {
110
110
  isFluid
111
111
  } = React.useContext(FormContext.FormContext);
112
112
  const multiSelectInstanceId = useId.useId();
113
- // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20071
113
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
114
114
  const [isFocused, setIsFocused] = React.useState(false);
115
115
  const [inputFocused, setInputFocused] = React.useState(false);
116
116
  const [isOpen, setIsOpen] = React.useState(open || false);
@@ -185,9 +185,9 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
185
185
  },
186
186
  selectedItem: controlledSelectedItems,
187
187
  items: filteredItems,
188
- // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20071
188
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
189
189
  isItemDisabled(item, _index) {
190
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
190
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
191
191
  return item?.disabled;
192
192
  },
193
193
  ...downshiftProps
@@ -383,7 +383,7 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
383
383
  [`${prefix}--list-box__field--wrapper--input-focused`]: inputFocused
384
384
  });
385
385
  const handleFocus = evt => {
386
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20071
386
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452
387
387
  evt.target.classList.contains(`${prefix}--tag__close-icon`) ? setIsFocused(false) : setIsFocused(evt.type === 'focus' ? true : false);
388
388
  };
389
389
  const readOnlyEventHandlers = readOnly ? {
@@ -409,10 +409,10 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
409
409
  const candidateIsAILabel = utils.isComponentElement(candidate, index$1.AILabel);
410
410
  const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
411
411
  size: 'mini'
412
- }) : null;
412
+ }) : candidate;
413
413
  const itemsSelectedText = selectedItems.length > 0 && selectedItems.map(item => item?.text);
414
414
  const selectedItemsLength = selectAll ?
415
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
415
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
416
416
  selectedItems.filter(item => !item.isSelectAll).length : selectedItems.length;
417
417
 
418
418
  // Memoize the value of getMenuProps to avoid an infinite loop
@@ -433,7 +433,7 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
433
433
  totalSelectableCount
434
434
  };
435
435
  },
436
- // eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20071
436
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20452
437
437
  [selectedItems, filteredItems]);
438
438
  return /*#__PURE__*/React.createElement("div", {
439
439
  className: wrapperClasses
@@ -487,7 +487,7 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
487
487
  })), slug ? normalizedDecorator : decorator ? /*#__PURE__*/React.createElement("div", {
488
488
  className: `${prefix}--list-box__inner-wrapper--decorator`
489
489
  }, normalizedDecorator) : ''), /*#__PURE__*/React.createElement(index$2.default.Menu, menuProps, isOpen &&
490
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
490
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
491
491
  sortItems(filteredItems, sortOptions).map((item, index) => {
492
492
  const {
493
493
  hasIndividualSelections,
@@ -495,10 +495,10 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
495
495
  totalSelectableCount
496
496
  } = getSelectionStats(selectedItems, filteredItems);
497
497
 
498
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
498
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
499
499
  const isChecked = item.isSelectAll ? nonSelectAllSelectedCount === totalSelectableCount && totalSelectableCount > 0 : selectedItems.some(selected => isEqual(selected, item));
500
500
  const isIndeterminate =
501
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
501
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
502
502
  item.isSelectAll && hasIndividualSelections && nonSelectAllSelectedCount < totalSelectableCount;
503
503
  const itemProps = getItemProps({
504
504
  item,
@@ -702,7 +702,7 @@ MultiSelect.propTypes = {
702
702
  */
703
703
  titleText: PropTypes.node,
704
704
  /**
705
- * Callback function for translating ListBoxMenuIcon SVG title
705
+ * Translates component strings using your i18n tool.
706
706
  */
707
707
  translateWithId: PropTypes.func,
708
708
  /**
@@ -809,7 +809,7 @@ Callout.propTypes = {
809
809
  /**
810
810
  * @deprecated Use `CalloutProps` instead.
811
811
  */
812
- // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- https://github.com/carbon-design-system/carbon/issues/20071
812
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- https://github.com/carbon-design-system/carbon/issues/20452
813
813
 
814
814
  let didWarnAboutDeprecation = false;
815
815
  const StaticNotification = props => {
@@ -5,15 +5,12 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React, { type ReactNode } from 'react';
8
- import { TranslateWithId } from '../../types/common';
8
+ import type { TranslateWithId } from '../../types/common';
9
9
  import { type NumberFormatOptions } from '@carbon/utilities';
10
- export declare const translationIds: {
10
+ declare const translationIds: {
11
11
  readonly 'increment.number': "increment.number";
12
12
  readonly 'decrement.number': "decrement.number";
13
13
  };
14
- /**
15
- * Message ids that will be passed to translateWithId().
16
- */
17
14
  type TranslationKey = keyof typeof translationIds;
18
15
  type ExcludedAttributes = 'defaultValue' | 'id' | 'min' | 'max' | 'onChange' | 'onClick' | 'size' | 'step' | 'value';
19
16
  export interface NumberInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, ExcludedAttributes>, TranslateWithId<TranslationKey> {