@carbon/react 1.92.1 → 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 +1026 -985
  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 +19 -25
  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 +17 -23
  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 +18 -24
  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 +16 -22
  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
@@ -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}`;
@@ -216,6 +214,11 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
216
214
  });
217
215
  }
218
216
  const onSecondaryButtonClick = onSecondarySubmit ? onSecondarySubmit : onRequestClose;
217
+ const {
218
+ height
219
+ } = useResizeObserver.useResizeObserver({
220
+ ref: contentRef
221
+ });
219
222
  const modalClasses = cx(`${prefix}--modal`, {
220
223
  [`${prefix}--modal-tall`]: !passiveModal,
221
224
  'is-visible': enablePresence || open,
@@ -228,8 +231,15 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
228
231
  [`${prefix}--modal-container--${size}`]: size,
229
232
  [`${prefix}--modal-container--full-width`]: isFullWidth
230
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;
231
240
  const contentClasses = cx(`${prefix}--modal-content`, {
232
- [`${prefix}--modal-scroll-content`]: hasScrollingContent || isScrollable
241
+ [`${prefix}--modal-scroll-content`]: hasScrollingContent || isScrollable,
242
+ [`${prefix}--modal-scroll-content--no-fade`]: height <= 300
233
243
  });
234
244
  const footerClasses = cx(`${prefix}--modal-footer`, {
235
245
  [`${prefix}--modal-footer--three-button`]: Array.isArray(secondaryButtons) && secondaryButtons.length === 2
@@ -268,7 +278,7 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
268
278
  return () => {
269
279
  document.removeEventListener('keydown', handleEscapeKey, true);
270
280
  };
271
- // 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
272
282
  }, [open]);
273
283
  React.useEffect(() => {
274
284
  return () => {
@@ -323,29 +333,13 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
323
333
  }
324
334
  }
325
335
  }, [open, selectorPrimaryFocus, danger, prefix, enableDialogElement]);
326
- useIsomorphicEffect.default(() => {
327
- if (contentRef.current) {
328
- setIsScrollable(contentRef.current.scrollHeight > contentRef.current.clientHeight);
329
- }
330
- function handler() {
331
- if (contentRef.current) {
332
- setIsScrollable(contentRef.current.scrollHeight > contentRef.current.clientHeight);
333
- }
334
- }
335
- const debouncedHandler = debounce.debounce(handler, 200);
336
- window.addEventListener('resize', debouncedHandler);
337
- return () => {
338
- debouncedHandler.cancel();
339
- window.removeEventListener('resize', debouncedHandler);
340
- };
341
- }, []);
342
336
 
343
337
  // AILabel always size `sm`
344
338
  const candidate = slug ?? decorator;
345
339
  const candidateIsAILabel = utils.isComponentElement(candidate, index$1.AILabel);
346
340
  const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
347
341
  size: 'sm'
348
- }) : null;
342
+ }) : candidate;
349
343
  const modalButton = /*#__PURE__*/React.createElement("div", {
350
344
  className: `${prefix}--modal-close-button`
351
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> {
@@ -34,17 +34,15 @@ const translationIds = {
34
34
  'increment.number': 'increment.number',
35
35
  'decrement.number': 'decrement.number'
36
36
  };
37
-
38
- /**
39
- * Message ids that will be passed to translateWithId().
40
- */
41
-
42
37
  const defaultTranslations = {
43
38
  [translationIds['increment.number']]: 'Increment number',
44
39
  [translationIds['decrement.number']]: 'Decrement number'
45
40
  };
41
+ const defaultTranslateWithId = messageId => {
42
+ return defaultTranslations[messageId];
43
+ };
46
44
 
47
- // eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/20071
45
+ // eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/20452
48
46
  const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
49
47
  const {
50
48
  allowEmpty = false,
@@ -75,7 +73,7 @@ const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
75
73
  size = 'md',
76
74
  slug,
77
75
  step = 1,
78
- translateWithId: t = id => defaultTranslations[id],
76
+ translateWithId: t = defaultTranslateWithId,
79
77
  type = 'number',
80
78
  defaultValue = type === 'number' ? 0 : NaN,
81
79
  validate,
@@ -106,7 +104,7 @@ const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
106
104
  }
107
105
  return 0;
108
106
  });
109
- // 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
110
108
  const [prevControlledValue, setPrevControlledValue] = React.useState(controlledValue);
111
109
  const numberParser = React.useMemo(() => new utilities.NumberParser(locale, formatOptions), [locale, formatOptions]);
112
110
  /**
@@ -239,7 +237,7 @@ const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
239
237
  [`${prefix}--number-input--fluid--disabled`]: isFluid && disabled
240
238
  });
241
239
 
242
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20071
240
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
243
241
  const Icon = normalizedProps.icon;
244
242
  const getDecimalPlaces = num => {
245
243
  const parts = num.toString().split('.');
@@ -308,13 +306,10 @@ const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
308
306
  const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
309
307
  const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
310
308
  size: 'mini'
311
- }) : null;
309
+ }) : candidate;
312
310
 
313
311
  // Need to update the internal value when the revert button is clicked
314
- let isRevertActive;
315
- if (normalizedDecorator?.type === index.AILabel) {
316
- isRevertActive = normalizedDecorator.props.revertActive;
317
- }
312
+ const isRevertActive = utils.isComponentElement(normalizedDecorator, index.AILabel) ? normalizedDecorator.props.revertActive : undefined;
318
313
  React.useEffect(() => {
319
314
  if (!isRevertActive && slug && defaultValue) {
320
315
  setValue(defaultValue);
@@ -349,9 +344,9 @@ const NumberInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
349
344
  onKeyUp: onKeyUp,
350
345
  onKeyDown: e => {
351
346
  if (type === 'text') {
352
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20071
347
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452
353
348
  match.match(e, keys.ArrowUp) && handleStep(e, 'up');
354
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20071
349
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452
355
350
  match.match(e, keys.ArrowDown) && handleStep(e, 'down');
356
351
  }
357
352
  if (rest?.onKeyDown) {
@@ -599,7 +594,7 @@ NumberInput.propTypes = {
599
594
  */
600
595
  step: PropTypes.number,
601
596
  /**
602
- * Provide custom text for the component for each translation id
597
+ * Translates component strings using your i18n tool.
603
598
  */
604
599
  translateWithId: PropTypes.func,
605
600
  /**
@@ -734,4 +729,3 @@ function disableWheel(e) {
734
729
  }
735
730
 
736
731
  exports.NumberInput = NumberInput;
737
- exports.translationIds = translationIds;
@@ -102,9 +102,9 @@ export interface OverflowMenuProps extends Omit<IconButtonProps, 'type' | 'aria-
102
102
  */
103
103
  selectorPrimaryFocus?: string;
104
104
  /**
105
- * Specify the size of the OverflowMenu. Currently supports either `sm`, `md` (default) or `lg` as an option.
105
+ * Specify the size of the OverflowMenu. Currently supports either `xs`, `sm`, `md` (default) or `lg` as an option.
106
106
  */
107
- size?: 'sm' | 'md' | 'lg';
107
+ size?: 'xs' | 'sm' | 'md' | 'lg';
108
108
  /**
109
109
  * The ref to the overflow menu's trigger button element.
110
110
  * @deprecated Use the standard React `ref` prop instead.