@carbon/react 1.83.0 → 1.84.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 (524) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +909 -874
  2. package/README.md +1 -1
  3. package/es/components/AILabel/index.js +27 -30
  4. package/es/components/AISkeleton/AISkeletonIcon.js +4 -5
  5. package/es/components/AISkeleton/AISkeletonPlaceholder.js +4 -5
  6. package/es/components/AISkeleton/AISkeletonText.js +4 -5
  7. package/es/components/Accordion/Accordion.Skeleton.js +9 -10
  8. package/es/components/Accordion/Accordion.js +10 -11
  9. package/es/components/Accordion/AccordionItem.js +13 -14
  10. package/es/components/Accordion/AccordionProvider.js +4 -5
  11. package/es/components/AspectRatio/AspectRatio.js +7 -8
  12. package/es/components/BadgeIndicator/index.js +5 -6
  13. package/es/components/Breadcrumb/Breadcrumb.Skeleton.js +4 -5
  14. package/es/components/Button/Button.Skeleton.js +7 -8
  15. package/es/components/Button/ButtonBase.js +23 -24
  16. package/es/components/ChatButton/ChatButton.Skeleton.js +5 -6
  17. package/es/components/ChatButton/ChatButton.js +11 -12
  18. package/es/components/Checkbox/Checkbox.Skeleton.js +4 -5
  19. package/es/components/Checkbox/Checkbox.js +19 -20
  20. package/es/components/CheckboxGroup/CheckboxGroup.js +16 -17
  21. package/es/components/ClassPrefix/index.js +4 -5
  22. package/es/components/CodeSnippet/CodeSnippet.Skeleton.js +5 -6
  23. package/es/components/CodeSnippet/CodeSnippet.js +25 -26
  24. package/es/components/ComboBox/ComboBox.js +24 -30
  25. package/es/components/ComboBox/tools/filter.js +9 -12
  26. package/es/components/ComboButton/index.js +16 -18
  27. package/es/components/ComposedModal/ComposedModal.js +50 -36
  28. package/es/components/ComposedModal/ModalFooter.js +37 -42
  29. package/es/components/ComposedModal/ModalHeader.js +14 -15
  30. package/es/components/ContainedList/ContainedList.js +10 -11
  31. package/es/components/ContainedList/ContainedListItem/ContainedListItem.js +9 -10
  32. package/es/components/ContentSwitcher/ContentSwitcher.d.ts +9 -29
  33. package/es/components/ContentSwitcher/ContentSwitcher.js +96 -128
  34. package/es/components/ContentSwitcher/index.d.ts +3 -4
  35. package/es/components/ContextMenu/useContextMenu.js +1 -2
  36. package/es/components/Copy/Copy.js +11 -12
  37. package/es/components/CopyButton/CopyButton.js +10 -11
  38. package/es/components/DataTable/DataTable.js +45 -53
  39. package/es/components/DataTable/Table.js +15 -18
  40. package/es/components/DataTable/TableBatchAction.js +8 -11
  41. package/es/components/DataTable/TableBatchActions.js +18 -20
  42. package/es/components/DataTable/TableBody.js +8 -11
  43. package/es/components/DataTable/TableContainer.js +9 -10
  44. package/es/components/DataTable/TableDecoratorRow.js +4 -5
  45. package/es/components/DataTable/TableExpandHeader.js +14 -15
  46. package/es/components/DataTable/TableExpandRow.js +13 -14
  47. package/es/components/DataTable/TableExpandedRow.js +6 -7
  48. package/es/components/DataTable/TableHeader.js +15 -16
  49. package/es/components/DataTable/TableSelectAll.js +11 -12
  50. package/es/components/DataTable/TableSelectRow.js +12 -13
  51. package/es/components/DataTable/TableSlugRow.js +4 -5
  52. package/es/components/DataTable/TableToolbar.js +7 -8
  53. package/es/components/DataTable/TableToolbarMenu.js +8 -9
  54. package/es/components/DataTable/TableToolbarSearch.js +22 -24
  55. package/es/components/DataTable/state/sorting.js +3 -4
  56. package/es/components/DataTable/tools/filter.js +10 -12
  57. package/es/components/DataTable/tools/normalize.js +6 -8
  58. package/es/components/DataTable/tools/sorting.js +24 -30
  59. package/es/components/DataTableSkeleton/DataTableSkeleton.js +11 -12
  60. package/es/components/DatePicker/DatePicker.Skeleton.js +7 -8
  61. package/es/components/DatePicker/DatePicker.js +88 -65
  62. package/es/components/DatePickerInput/DatePickerInput.js +5 -6
  63. package/es/components/Dialog/index.d.ts +193 -8
  64. package/es/components/Dialog/index.js +454 -35
  65. package/es/components/Dropdown/Dropdown.Skeleton.js +6 -7
  66. package/es/components/Dropdown/Dropdown.js +40 -43
  67. package/es/components/ErrorBoundary/ErrorBoundary.js +2 -2
  68. package/es/components/ExpandableSearch/ExpandableSearch.js +9 -10
  69. package/es/components/FeatureFlags/index.js +11 -12
  70. package/es/components/FileUploader/FileUploader.Skeleton.js +4 -5
  71. package/es/components/FileUploader/FileUploader.js +22 -24
  72. package/es/components/FileUploader/FileUploaderButton.js +16 -17
  73. package/es/components/FileUploader/FileUploaderDropContainer.js +15 -16
  74. package/es/components/FileUploader/FileUploaderItem.js +13 -14
  75. package/es/components/FileUploader/Filename.js +9 -10
  76. package/es/components/FluidComboBox/FluidComboBox.Skeleton.js +4 -5
  77. package/es/components/FluidComboBox/FluidComboBox.js +5 -6
  78. package/es/components/FluidDatePicker/FluidDatePicker.Skeleton.js +5 -6
  79. package/es/components/FluidDatePicker/FluidDatePicker.js +10 -11
  80. package/es/components/FluidDropdown/FluidDropdown.Skeleton.js +4 -5
  81. package/es/components/FluidDropdown/FluidDropdown.js +5 -6
  82. package/es/components/FluidForm/FluidForm.js +5 -6
  83. package/es/components/FluidMultiSelect/FluidMultiSelect.Skeleton.js +4 -5
  84. package/es/components/FluidMultiSelect/FluidMultiSelect.js +6 -7
  85. package/es/components/FluidNumberInput/FluidNumberInput.Skeleton.js +4 -5
  86. package/es/components/FluidNumberInput/FluidNumberInput.d.ts +40 -1
  87. package/es/components/FluidNumberInput/FluidNumberInput.js +38 -5
  88. package/es/components/FluidSearch/FluidSearch.Skeleton.js +4 -5
  89. package/es/components/FluidSearch/FluidSearch.js +4 -5
  90. package/es/components/FluidSelect/FluidSelect.Skeleton.js +4 -5
  91. package/es/components/FluidSelect/FluidSelect.js +5 -6
  92. package/es/components/FluidTextArea/FluidTextArea.Skeleton.js +4 -5
  93. package/es/components/FluidTextArea/FluidTextArea.js +4 -5
  94. package/es/components/FluidTextInput/FluidTextInput.Skeleton.js +4 -5
  95. package/es/components/FluidTextInput/FluidTextInput.js +5 -6
  96. package/es/components/FluidTimePicker/FluidTimePicker.Skeleton.js +5 -6
  97. package/es/components/FluidTimePicker/FluidTimePicker.js +11 -12
  98. package/es/components/FluidTimePickerSelect/FluidTimePickerSelect.js +5 -6
  99. package/es/components/Form/Form.js +5 -6
  100. package/es/components/FormGroup/FormGroup.js +11 -12
  101. package/es/components/FormItem/FormItem.js +5 -6
  102. package/es/components/FormLabel/FormLabel.js +6 -7
  103. package/es/components/Grid/CSSGrid.js +17 -19
  104. package/es/components/Grid/Column.js +28 -27
  105. package/es/components/Grid/ColumnHang.js +6 -7
  106. package/es/components/Grid/FlexGrid.js +9 -10
  107. package/es/components/Grid/GridContext.js +5 -6
  108. package/es/components/Grid/Row.js +8 -9
  109. package/es/components/Heading/index.js +5 -6
  110. package/es/components/Icon/Icon.Skeleton.js +4 -5
  111. package/es/components/IconButton/index.js +20 -21
  112. package/es/components/IconIndicator/index.js +7 -8
  113. package/es/components/IdPrefix/index.js +4 -5
  114. package/es/components/InlineLoading/InlineLoading.js +9 -10
  115. package/es/components/Layer/index.js +8 -9
  116. package/es/components/Layout/index.js +21 -26
  117. package/es/components/LayoutDirection/LayoutDirection.js +6 -7
  118. package/es/components/Link/Link.d.ts +1 -1
  119. package/es/components/Link/Link.js +14 -15
  120. package/es/components/ListBox/ListBoxField.js +6 -7
  121. package/es/components/ListBox/ListBoxMenu.js +5 -6
  122. package/es/components/ListBox/ListBoxMenuIcon.js +4 -5
  123. package/es/components/ListBox/ListBoxMenuItem.js +8 -10
  124. package/es/components/ListBox/ListBoxSelection.js +8 -9
  125. package/es/components/ListBox/next/ListBoxSelection.js +9 -10
  126. package/es/components/ListBox/next/ListBoxTrigger.js +5 -6
  127. package/es/components/ListItem/ListItem.js +5 -6
  128. package/es/components/Loading/Loading.js +8 -9
  129. package/es/components/Menu/Menu.js +23 -24
  130. package/es/components/Menu/MenuItem.js +39 -44
  131. package/es/components/MenuButton/index.js +16 -18
  132. package/es/components/Modal/Modal.js +74 -65
  133. package/es/components/ModalWrapper/ModalWrapper.js +2 -2
  134. package/es/components/MultiSelect/FilterableMultiSelect.js +67 -48
  135. package/es/components/MultiSelect/MultiSelect.js +43 -45
  136. package/es/components/MultiSelect/tools/sorting.js +11 -15
  137. package/es/components/Notification/Notification.js +96 -105
  138. package/es/components/NumberInput/NumberFormatPropTypes.d.ts +29 -0
  139. package/es/components/NumberInput/NumberFormatPropTypes.js +40 -0
  140. package/es/components/NumberInput/NumberInput.Skeleton.js +6 -7
  141. package/es/components/NumberInput/NumberInput.d.ts +39 -3
  142. package/es/components/NumberInput/NumberInput.js +174 -44
  143. package/es/components/OrderedList/OrderedList.js +7 -8
  144. package/es/components/OverflowMenu/OverflowMenu.d.ts +1 -1
  145. package/es/components/OverflowMenu/OverflowMenu.js +39 -46
  146. package/es/components/OverflowMenu/next/index.js +12 -13
  147. package/es/components/PageHeader/PageHeader.d.ts +39 -14
  148. package/es/components/PageHeader/PageHeader.js +187 -81
  149. package/es/components/PageHeader/index.d.ts +2 -2
  150. package/es/components/PageHeader/index.js +1 -1
  151. package/es/components/Pagination/Pagination.Skeleton.js +4 -5
  152. package/es/components/Pagination/Pagination.js +24 -25
  153. package/es/components/Pagination/experimental/PageSelector.js +8 -9
  154. package/es/components/Pagination/experimental/Pagination.js +20 -21
  155. package/es/components/PaginationNav/PaginationNav.js +33 -38
  156. package/es/components/Popover/index.js +26 -28
  157. package/es/components/ProgressBar/ProgressBar.js +11 -12
  158. package/es/components/ProgressIndicator/ProgressIndicator.Skeleton.js +5 -6
  159. package/es/components/ProgressIndicator/ProgressIndicator.js +29 -32
  160. package/es/components/RadioTile/RadioTile.js +17 -18
  161. package/es/components/Search/Search.Skeleton.js +5 -6
  162. package/es/components/Search/Search.js +26 -29
  163. package/es/components/Select/Select.Skeleton.js +5 -6
  164. package/es/components/Select/Select.js +24 -25
  165. package/es/components/SelectItem/SelectItem.js +8 -9
  166. package/es/components/SelectItemGroup/SelectItemGroup.js +7 -8
  167. package/es/components/ShapeIndicator/index.js +7 -8
  168. package/es/components/SkeletonIcon/SkeletonIcon.js +4 -5
  169. package/es/components/SkeletonPlaceholder/SkeletonPlaceholder.js +4 -5
  170. package/es/components/SkeletonText/SkeletonText.js +8 -9
  171. package/es/components/Slider/Slider.Skeleton.js +8 -9
  172. package/es/components/Slider/Slider.js +75 -83
  173. package/es/components/Slider/SliderHandles.js +6 -6
  174. package/es/components/StructuredList/StructuredList.Skeleton.js +5 -6
  175. package/es/components/Tabs/Tabs.Skeleton.js +5 -6
  176. package/es/components/Tabs/Tabs.js +83 -98
  177. package/es/components/Tabs/usePressable.js +7 -8
  178. package/es/components/Tag/DismissibleTag.js +16 -17
  179. package/es/components/Tag/OperationalTag.js +10 -11
  180. package/es/components/Tag/SelectableTag.js +13 -14
  181. package/es/components/Tag/Tag.Skeleton.js +5 -6
  182. package/es/components/Tag/Tag.js +19 -20
  183. package/es/components/Text/Text.js +6 -7
  184. package/es/components/Text/TextDirection.js +5 -6
  185. package/es/components/TextArea/TextArea.js +7 -7
  186. package/es/components/TextInput/ControlledPasswordInput.js +24 -25
  187. package/es/components/TextInput/PasswordInput.js +26 -27
  188. package/es/components/TextInput/TextInput.Skeleton.js +5 -6
  189. package/es/components/TextInput/TextInput.js +27 -28
  190. package/es/components/TextInput/util.js +14 -17
  191. package/es/components/Theme/index.js +10 -12
  192. package/es/components/Tile/Tile.js +68 -74
  193. package/es/components/TileGroup/TileGroup.d.ts +4 -4
  194. package/es/components/TileGroup/TileGroup.js +45 -53
  195. package/es/components/TileGroup/index.d.ts +3 -3
  196. package/es/components/Toggle/Toggle.Skeleton.js +4 -5
  197. package/es/components/Toggle/Toggle.js +17 -18
  198. package/es/components/ToggleSmall/ToggleSmall.Skeleton.js +6 -7
  199. package/es/components/Toggletip/index.js +33 -39
  200. package/es/components/Tooltip/DefinitionTooltip.js +13 -14
  201. package/es/components/Tooltip/Tooltip.js +15 -16
  202. package/es/components/TreeView/TreeNode.js +20 -21
  203. package/es/components/TreeView/TreeView.js +14 -16
  204. package/es/components/UIShell/Content.js +6 -7
  205. package/es/components/UIShell/Header.js +5 -6
  206. package/es/components/UIShell/HeaderContainer.js +5 -6
  207. package/es/components/UIShell/HeaderGlobalAction.js +12 -13
  208. package/es/components/UIShell/HeaderMenu.d.ts +10 -112
  209. package/es/components/UIShell/HeaderMenu.js +154 -201
  210. package/es/components/UIShell/HeaderMenuButton.js +10 -11
  211. package/es/components/UIShell/HeaderMenuItem.js +12 -12
  212. package/es/components/UIShell/HeaderName.js +6 -7
  213. package/es/components/UIShell/HeaderNavigation.js +7 -8
  214. package/es/components/UIShell/HeaderPanel.js +9 -10
  215. package/es/components/UIShell/HeaderSideNavItems.js +5 -6
  216. package/es/components/UIShell/Link.js +8 -9
  217. package/es/components/UIShell/SideNav.js +23 -25
  218. package/es/components/UIShell/SideNavDetails.js +6 -7
  219. package/es/components/UIShell/SideNavDivider.js +3 -4
  220. package/es/components/UIShell/SideNavFooter.js +6 -7
  221. package/es/components/UIShell/SideNavHeader.js +5 -6
  222. package/es/components/UIShell/SideNavIcon.js +5 -6
  223. package/es/components/UIShell/SideNavItem.js +5 -6
  224. package/es/components/UIShell/SideNavItems.js +5 -6
  225. package/es/components/UIShell/SideNavLink.js +10 -11
  226. package/es/components/UIShell/SideNavLinkText.js +5 -6
  227. package/es/components/UIShell/SideNavMenu.js +11 -12
  228. package/es/components/UIShell/SkipToContent.js +7 -8
  229. package/es/components/UIShell/Switcher.js +4 -5
  230. package/es/components/UIShell/SwitcherDivider.js +4 -5
  231. package/es/components/UnorderedList/UnorderedList.js +6 -7
  232. package/es/index.js +3 -3
  233. package/es/internal/FloatingMenu.js +26 -28
  234. package/es/internal/Selection.js +15 -17
  235. package/es/internal/getAnnouncement.d.ts +8 -0
  236. package/es/internal/getAnnouncement.js +22 -0
  237. package/es/internal/keyboard/match.js +6 -7
  238. package/es/internal/useControllableState.d.ts +1 -1
  239. package/es/internal/useControllableState.js +8 -9
  240. package/es/internal/useDelayedState.js +1 -2
  241. package/es/internal/useDocumentLang.d.ts +12 -0
  242. package/es/internal/useId.js +2 -4
  243. package/es/internal/useMatchMedia.js +1 -2
  244. package/es/internal/useMergedRefs.d.ts +1 -1
  245. package/es/internal/useNoInteractiveChildren.js +2 -4
  246. package/es/internal/useNormalizedInputProps.js +9 -10
  247. package/es/internal/useOverflowItems.d.ts +29 -0
  248. package/es/internal/useOverflowItems.js +122 -0
  249. package/es/internal/useResizeObserver.js +4 -5
  250. package/es/internal/useSavedCallback.js +1 -3
  251. package/es/internal/wrapFocus.js +20 -29
  252. package/es/prop-types/deprecate.js +1 -4
  253. package/es/prop-types/deprecateValuesWithin.js +1 -4
  254. package/es/prop-types/isRequiredOneOf.js +1 -4
  255. package/es/prop-types/requiredIfGivenPropIsTruthy.js +1 -4
  256. package/es/tools/events.js +1 -4
  257. package/es/tools/mergeRefs.js +9 -14
  258. package/es/tools/uniqueId.js +1 -2
  259. package/es/tools/wrapComponent.js +9 -11
  260. package/lib/components/AILabel/index.js +27 -30
  261. package/lib/components/AISkeleton/AISkeletonIcon.js +4 -5
  262. package/lib/components/AISkeleton/AISkeletonPlaceholder.js +4 -5
  263. package/lib/components/AISkeleton/AISkeletonText.js +4 -5
  264. package/lib/components/Accordion/Accordion.Skeleton.js +9 -10
  265. package/lib/components/Accordion/Accordion.js +10 -11
  266. package/lib/components/Accordion/AccordionItem.js +13 -14
  267. package/lib/components/Accordion/AccordionProvider.js +4 -5
  268. package/lib/components/AspectRatio/AspectRatio.js +7 -8
  269. package/lib/components/BadgeIndicator/index.js +5 -6
  270. package/lib/components/Breadcrumb/Breadcrumb.Skeleton.js +4 -5
  271. package/lib/components/Button/Button.Skeleton.js +7 -8
  272. package/lib/components/Button/ButtonBase.js +23 -24
  273. package/lib/components/ChatButton/ChatButton.Skeleton.js +5 -6
  274. package/lib/components/ChatButton/ChatButton.js +11 -12
  275. package/lib/components/Checkbox/Checkbox.Skeleton.js +4 -5
  276. package/lib/components/Checkbox/Checkbox.js +19 -20
  277. package/lib/components/CheckboxGroup/CheckboxGroup.js +16 -17
  278. package/lib/components/ClassPrefix/index.js +4 -5
  279. package/lib/components/CodeSnippet/CodeSnippet.Skeleton.js +5 -6
  280. package/lib/components/CodeSnippet/CodeSnippet.js +25 -26
  281. package/lib/components/ComboBox/ComboBox.js +24 -30
  282. package/lib/components/ComboBox/tools/filter.js +9 -12
  283. package/lib/components/ComboButton/index.js +16 -18
  284. package/lib/components/ComposedModal/ComposedModal.js +50 -36
  285. package/lib/components/ComposedModal/ModalFooter.js +37 -42
  286. package/lib/components/ComposedModal/ModalHeader.js +14 -15
  287. package/lib/components/ContainedList/ContainedList.js +10 -11
  288. package/lib/components/ContainedList/ContainedListItem/ContainedListItem.js +9 -10
  289. package/lib/components/ContentSwitcher/ContentSwitcher.d.ts +9 -29
  290. package/lib/components/ContentSwitcher/ContentSwitcher.js +94 -126
  291. package/lib/components/ContentSwitcher/index.d.ts +3 -4
  292. package/lib/components/ContextMenu/useContextMenu.js +1 -2
  293. package/lib/components/Copy/Copy.js +11 -12
  294. package/lib/components/CopyButton/CopyButton.js +10 -11
  295. package/lib/components/DataTable/DataTable.js +45 -53
  296. package/lib/components/DataTable/Table.js +15 -18
  297. package/lib/components/DataTable/TableBatchAction.js +8 -11
  298. package/lib/components/DataTable/TableBatchActions.js +18 -20
  299. package/lib/components/DataTable/TableBody.js +8 -11
  300. package/lib/components/DataTable/TableContainer.js +9 -10
  301. package/lib/components/DataTable/TableDecoratorRow.js +4 -5
  302. package/lib/components/DataTable/TableExpandHeader.js +14 -15
  303. package/lib/components/DataTable/TableExpandRow.js +13 -14
  304. package/lib/components/DataTable/TableExpandedRow.js +6 -7
  305. package/lib/components/DataTable/TableHeader.js +15 -16
  306. package/lib/components/DataTable/TableSelectAll.js +11 -12
  307. package/lib/components/DataTable/TableSelectRow.js +12 -13
  308. package/lib/components/DataTable/TableSlugRow.js +4 -5
  309. package/lib/components/DataTable/TableToolbar.js +7 -8
  310. package/lib/components/DataTable/TableToolbarMenu.js +8 -9
  311. package/lib/components/DataTable/TableToolbarSearch.js +22 -24
  312. package/lib/components/DataTable/state/sorting.js +3 -4
  313. package/lib/components/DataTable/tools/filter.js +10 -12
  314. package/lib/components/DataTable/tools/normalize.js +6 -8
  315. package/lib/components/DataTable/tools/sorting.js +24 -30
  316. package/lib/components/DataTableSkeleton/DataTableSkeleton.js +11 -12
  317. package/lib/components/DatePicker/DatePicker.Skeleton.js +7 -8
  318. package/lib/components/DatePicker/DatePicker.js +87 -64
  319. package/lib/components/DatePickerInput/DatePickerInput.js +5 -6
  320. package/lib/components/Dialog/index.d.ts +193 -8
  321. package/lib/components/Dialog/index.js +457 -33
  322. package/lib/components/Dropdown/Dropdown.Skeleton.js +6 -7
  323. package/lib/components/Dropdown/Dropdown.js +40 -43
  324. package/lib/components/ErrorBoundary/ErrorBoundary.js +2 -2
  325. package/lib/components/ExpandableSearch/ExpandableSearch.js +9 -10
  326. package/lib/components/FeatureFlags/index.js +11 -12
  327. package/lib/components/FileUploader/FileUploader.Skeleton.js +4 -5
  328. package/lib/components/FileUploader/FileUploader.js +22 -24
  329. package/lib/components/FileUploader/FileUploaderButton.js +16 -17
  330. package/lib/components/FileUploader/FileUploaderDropContainer.js +15 -16
  331. package/lib/components/FileUploader/FileUploaderItem.js +13 -14
  332. package/lib/components/FileUploader/Filename.js +9 -10
  333. package/lib/components/FluidComboBox/FluidComboBox.Skeleton.js +4 -5
  334. package/lib/components/FluidComboBox/FluidComboBox.js +5 -6
  335. package/lib/components/FluidDatePicker/FluidDatePicker.Skeleton.js +5 -6
  336. package/lib/components/FluidDatePicker/FluidDatePicker.js +10 -11
  337. package/lib/components/FluidDropdown/FluidDropdown.Skeleton.js +4 -5
  338. package/lib/components/FluidDropdown/FluidDropdown.js +5 -6
  339. package/lib/components/FluidForm/FluidForm.js +5 -6
  340. package/lib/components/FluidMultiSelect/FluidMultiSelect.Skeleton.js +4 -5
  341. package/lib/components/FluidMultiSelect/FluidMultiSelect.js +6 -7
  342. package/lib/components/FluidNumberInput/FluidNumberInput.Skeleton.js +4 -5
  343. package/lib/components/FluidNumberInput/FluidNumberInput.d.ts +40 -1
  344. package/lib/components/FluidNumberInput/FluidNumberInput.js +38 -5
  345. package/lib/components/FluidSearch/FluidSearch.Skeleton.js +4 -5
  346. package/lib/components/FluidSearch/FluidSearch.js +4 -5
  347. package/lib/components/FluidSelect/FluidSelect.Skeleton.js +4 -5
  348. package/lib/components/FluidSelect/FluidSelect.js +5 -6
  349. package/lib/components/FluidTextArea/FluidTextArea.Skeleton.js +4 -5
  350. package/lib/components/FluidTextArea/FluidTextArea.js +4 -5
  351. package/lib/components/FluidTextInput/FluidTextInput.Skeleton.js +4 -5
  352. package/lib/components/FluidTextInput/FluidTextInput.js +5 -6
  353. package/lib/components/FluidTimePicker/FluidTimePicker.Skeleton.js +5 -6
  354. package/lib/components/FluidTimePicker/FluidTimePicker.js +11 -12
  355. package/lib/components/FluidTimePickerSelect/FluidTimePickerSelect.js +5 -6
  356. package/lib/components/Form/Form.js +5 -6
  357. package/lib/components/FormGroup/FormGroup.js +11 -12
  358. package/lib/components/FormItem/FormItem.js +5 -6
  359. package/lib/components/FormLabel/FormLabel.js +6 -7
  360. package/lib/components/Grid/CSSGrid.js +17 -19
  361. package/lib/components/Grid/Column.js +28 -27
  362. package/lib/components/Grid/ColumnHang.js +6 -7
  363. package/lib/components/Grid/FlexGrid.js +9 -10
  364. package/lib/components/Grid/GridContext.js +5 -6
  365. package/lib/components/Grid/Row.js +8 -9
  366. package/lib/components/Heading/index.js +5 -6
  367. package/lib/components/Icon/Icon.Skeleton.js +4 -5
  368. package/lib/components/IconButton/index.js +20 -21
  369. package/lib/components/IconIndicator/index.js +7 -8
  370. package/lib/components/IdPrefix/index.js +4 -5
  371. package/lib/components/InlineLoading/InlineLoading.js +9 -10
  372. package/lib/components/Layer/index.js +8 -9
  373. package/lib/components/Layout/index.js +21 -26
  374. package/lib/components/LayoutDirection/LayoutDirection.js +6 -7
  375. package/lib/components/Link/Link.d.ts +1 -1
  376. package/lib/components/Link/Link.js +14 -15
  377. package/lib/components/ListBox/ListBoxField.js +6 -7
  378. package/lib/components/ListBox/ListBoxMenu.js +5 -6
  379. package/lib/components/ListBox/ListBoxMenuIcon.js +4 -5
  380. package/lib/components/ListBox/ListBoxMenuItem.js +8 -10
  381. package/lib/components/ListBox/ListBoxSelection.js +8 -9
  382. package/lib/components/ListBox/next/ListBoxSelection.js +9 -10
  383. package/lib/components/ListBox/next/ListBoxTrigger.js +5 -6
  384. package/lib/components/ListItem/ListItem.js +5 -6
  385. package/lib/components/Loading/Loading.js +8 -9
  386. package/lib/components/Menu/Menu.js +23 -24
  387. package/lib/components/Menu/MenuItem.js +39 -44
  388. package/lib/components/MenuButton/index.js +16 -18
  389. package/lib/components/Modal/Modal.js +74 -65
  390. package/lib/components/ModalWrapper/ModalWrapper.js +2 -2
  391. package/lib/components/MultiSelect/FilterableMultiSelect.js +66 -47
  392. package/lib/components/MultiSelect/MultiSelect.js +43 -45
  393. package/lib/components/MultiSelect/tools/sorting.js +11 -15
  394. package/lib/components/Notification/Notification.js +96 -105
  395. package/lib/components/NumberInput/NumberFormatPropTypes.d.ts +29 -0
  396. package/lib/components/NumberInput/NumberFormatPropTypes.js +48 -0
  397. package/lib/components/NumberInput/NumberInput.Skeleton.js +6 -7
  398. package/lib/components/NumberInput/NumberInput.d.ts +39 -3
  399. package/lib/components/NumberInput/NumberInput.js +173 -43
  400. package/lib/components/OrderedList/OrderedList.js +7 -8
  401. package/lib/components/OverflowMenu/OverflowMenu.d.ts +1 -1
  402. package/lib/components/OverflowMenu/OverflowMenu.js +39 -46
  403. package/lib/components/OverflowMenu/next/index.js +12 -13
  404. package/lib/components/PageHeader/PageHeader.d.ts +39 -14
  405. package/lib/components/PageHeader/PageHeader.js +185 -81
  406. package/lib/components/PageHeader/index.d.ts +2 -2
  407. package/lib/components/PageHeader/index.js +0 -2
  408. package/lib/components/Pagination/Pagination.Skeleton.js +4 -5
  409. package/lib/components/Pagination/Pagination.js +24 -25
  410. package/lib/components/Pagination/experimental/PageSelector.js +8 -9
  411. package/lib/components/Pagination/experimental/Pagination.js +20 -21
  412. package/lib/components/PaginationNav/PaginationNav.js +33 -38
  413. package/lib/components/Popover/index.js +26 -28
  414. package/lib/components/ProgressBar/ProgressBar.js +11 -12
  415. package/lib/components/ProgressIndicator/ProgressIndicator.Skeleton.js +5 -6
  416. package/lib/components/ProgressIndicator/ProgressIndicator.js +29 -32
  417. package/lib/components/RadioTile/RadioTile.js +17 -18
  418. package/lib/components/Search/Search.Skeleton.js +5 -6
  419. package/lib/components/Search/Search.js +26 -29
  420. package/lib/components/Select/Select.Skeleton.js +5 -6
  421. package/lib/components/Select/Select.js +24 -25
  422. package/lib/components/SelectItem/SelectItem.js +8 -9
  423. package/lib/components/SelectItemGroup/SelectItemGroup.js +7 -8
  424. package/lib/components/ShapeIndicator/index.js +7 -8
  425. package/lib/components/SkeletonIcon/SkeletonIcon.js +4 -5
  426. package/lib/components/SkeletonPlaceholder/SkeletonPlaceholder.js +4 -5
  427. package/lib/components/SkeletonText/SkeletonText.js +8 -9
  428. package/lib/components/Slider/Slider.Skeleton.js +8 -9
  429. package/lib/components/Slider/Slider.js +75 -83
  430. package/lib/components/Slider/SliderHandles.js +6 -6
  431. package/lib/components/StructuredList/StructuredList.Skeleton.js +5 -6
  432. package/lib/components/Tabs/Tabs.Skeleton.js +5 -6
  433. package/lib/components/Tabs/Tabs.js +83 -98
  434. package/lib/components/Tabs/usePressable.js +7 -8
  435. package/lib/components/Tag/DismissibleTag.js +16 -17
  436. package/lib/components/Tag/OperationalTag.js +10 -11
  437. package/lib/components/Tag/SelectableTag.js +13 -14
  438. package/lib/components/Tag/Tag.Skeleton.js +5 -6
  439. package/lib/components/Tag/Tag.js +19 -20
  440. package/lib/components/Text/Text.js +6 -7
  441. package/lib/components/Text/TextDirection.js +5 -6
  442. package/lib/components/TextArea/TextArea.js +7 -7
  443. package/lib/components/TextInput/ControlledPasswordInput.js +24 -25
  444. package/lib/components/TextInput/PasswordInput.js +26 -27
  445. package/lib/components/TextInput/TextInput.Skeleton.js +5 -6
  446. package/lib/components/TextInput/TextInput.js +27 -28
  447. package/lib/components/TextInput/util.js +14 -17
  448. package/lib/components/Theme/index.js +10 -12
  449. package/lib/components/Tile/Tile.js +68 -74
  450. package/lib/components/TileGroup/TileGroup.d.ts +4 -4
  451. package/lib/components/TileGroup/TileGroup.js +44 -52
  452. package/lib/components/TileGroup/index.d.ts +3 -3
  453. package/lib/components/Toggle/Toggle.Skeleton.js +4 -5
  454. package/lib/components/Toggle/Toggle.js +17 -18
  455. package/lib/components/ToggleSmall/ToggleSmall.Skeleton.js +6 -7
  456. package/lib/components/Toggletip/index.js +33 -39
  457. package/lib/components/Tooltip/DefinitionTooltip.js +13 -14
  458. package/lib/components/Tooltip/Tooltip.js +15 -16
  459. package/lib/components/TreeView/TreeNode.js +20 -21
  460. package/lib/components/TreeView/TreeView.js +14 -16
  461. package/lib/components/UIShell/Content.js +6 -7
  462. package/lib/components/UIShell/Header.js +5 -6
  463. package/lib/components/UIShell/HeaderContainer.js +5 -6
  464. package/lib/components/UIShell/HeaderGlobalAction.js +12 -13
  465. package/lib/components/UIShell/HeaderMenu.d.ts +10 -112
  466. package/lib/components/UIShell/HeaderMenu.js +152 -199
  467. package/lib/components/UIShell/HeaderMenuButton.js +10 -11
  468. package/lib/components/UIShell/HeaderMenuItem.js +12 -12
  469. package/lib/components/UIShell/HeaderName.js +6 -7
  470. package/lib/components/UIShell/HeaderNavigation.js +7 -8
  471. package/lib/components/UIShell/HeaderPanel.js +9 -10
  472. package/lib/components/UIShell/HeaderSideNavItems.js +5 -6
  473. package/lib/components/UIShell/Link.js +8 -9
  474. package/lib/components/UIShell/SideNav.js +23 -25
  475. package/lib/components/UIShell/SideNavDetails.js +6 -7
  476. package/lib/components/UIShell/SideNavDivider.js +3 -4
  477. package/lib/components/UIShell/SideNavFooter.js +6 -7
  478. package/lib/components/UIShell/SideNavHeader.js +5 -6
  479. package/lib/components/UIShell/SideNavIcon.js +5 -6
  480. package/lib/components/UIShell/SideNavItem.js +5 -6
  481. package/lib/components/UIShell/SideNavItems.js +5 -6
  482. package/lib/components/UIShell/SideNavLink.js +10 -11
  483. package/lib/components/UIShell/SideNavLinkText.js +5 -6
  484. package/lib/components/UIShell/SideNavMenu.js +11 -12
  485. package/lib/components/UIShell/SkipToContent.js +7 -8
  486. package/lib/components/UIShell/Switcher.js +4 -5
  487. package/lib/components/UIShell/SwitcherDivider.js +4 -5
  488. package/lib/components/UnorderedList/UnorderedList.js +6 -7
  489. package/lib/index.js +36 -36
  490. package/lib/internal/FloatingMenu.js +26 -28
  491. package/lib/internal/Selection.js +15 -17
  492. package/lib/internal/getAnnouncement.d.ts +8 -0
  493. package/lib/internal/getAnnouncement.js +26 -0
  494. package/lib/internal/keyboard/match.js +6 -7
  495. package/lib/internal/useControllableState.d.ts +1 -1
  496. package/lib/internal/useControllableState.js +8 -9
  497. package/lib/internal/useDelayedState.js +1 -2
  498. package/lib/internal/useDocumentLang.d.ts +12 -0
  499. package/lib/internal/useId.js +2 -4
  500. package/lib/internal/useMatchMedia.js +1 -2
  501. package/lib/internal/useMergedRefs.d.ts +1 -1
  502. package/lib/internal/useNoInteractiveChildren.js +2 -4
  503. package/lib/internal/useNormalizedInputProps.js +9 -10
  504. package/lib/internal/useOverflowItems.d.ts +29 -0
  505. package/lib/internal/useOverflowItems.js +126 -0
  506. package/lib/internal/useResizeObserver.js +4 -5
  507. package/lib/internal/useSavedCallback.js +1 -3
  508. package/lib/internal/wrapFocus.js +20 -29
  509. package/lib/prop-types/deprecate.js +1 -4
  510. package/lib/prop-types/deprecateValuesWithin.js +1 -4
  511. package/lib/prop-types/isRequiredOneOf.js +1 -4
  512. package/lib/prop-types/requiredIfGivenPropIsTruthy.js +1 -4
  513. package/lib/tools/events.js +1 -4
  514. package/lib/tools/mergeRefs.js +9 -14
  515. package/lib/tools/uniqueId.js +1 -2
  516. package/lib/tools/wrapComponent.js +9 -11
  517. package/package.json +21 -19
  518. package/telemetry.yml +25 -1
  519. package/es/components/ContentSwitcher/index.js +0 -13
  520. package/es/feature-flags.d.ts +0 -7
  521. package/es/internal/useAnnouncer.js +0 -21
  522. package/lib/components/ContentSwitcher/index.js +0 -18
  523. package/lib/feature-flags.d.ts +0 -7
  524. package/lib/internal/useAnnouncer.js +0 -25
@@ -30,5 +30,5 @@ interface UseControllableStateConfig<T> {
30
30
  * Note: This hook will warn if the component switches between controlled and
31
31
  * uncontrolled states.
32
32
  */
33
- export declare const useControllableState: <T>({ defaultValue, name, onChange, value, }: UseControllableStateConfig<T>) => [T, (stateOrUpdater: T | ((prev: T) => T)) => void];
33
+ export declare const useControllableState: <T>({ defaultValue, name, onChange, value, }: UseControllableStateConfig<T>) => [T, (stateOrUpdater: T | ((prev: T) => T)) => void, boolean];
34
34
  export {};
@@ -20,13 +20,12 @@ var warning = require('./warning.js');
20
20
  * Note: This hook will warn if the component switches between controlled and
21
21
  * uncontrolled states.
22
22
  */
23
- const useControllableState = _ref => {
24
- let {
25
- defaultValue,
26
- name = 'custom',
27
- onChange,
28
- value
29
- } = _ref;
23
+ const useControllableState = ({
24
+ defaultValue,
25
+ name = 'custom',
26
+ onChange,
27
+ value
28
+ }) => {
30
29
  const [state, internalSetState] = React.useState(typeof value !== 'undefined' ? value : defaultValue);
31
30
  const controlled = React.useRef(null);
32
31
  if (controlled.current === null) {
@@ -55,9 +54,9 @@ const useControllableState = _ref => {
55
54
  }
56
55
  }, [name, value]);
57
56
  if (controlled.current === true) {
58
- return [value, setState];
57
+ return [value, setState, controlled.current];
59
58
  }
60
- return [state, setState];
59
+ return [state, setState, controlled.current];
61
60
  };
62
61
 
63
62
  exports.useControllableState = useControllableState;
@@ -27,8 +27,7 @@ function useDelayedState(initialState) {
27
27
  const timeoutId = React.useRef(null);
28
28
  // We use `useCallback` to match the signature of React's `useState` which will
29
29
  // always return the same reference for the `setState` updater
30
- const setStateWithDelay = React.useCallback(function (stateToSet) {
31
- let delayMs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
30
+ const setStateWithDelay = React.useCallback((stateToSet, delayMs = 0) => {
32
31
  window.clearTimeout(timeoutId.current ?? undefined);
33
32
  timeoutId.current = null;
34
33
  if (delayMs === 0) {
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright IBM Corp. 2025
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /**
8
+ * React hook that returns the current document language and updates on changes.
9
+ *
10
+ * @returns {string} The current document language code.
11
+ */
12
+ export declare function useDocumentLang(): string;
@@ -38,8 +38,7 @@ const defaultId = 'id';
38
38
  * @param {string} [prefix]
39
39
  * @returns {string}
40
40
  */
41
- function useCompatibleId() {
42
- let prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultId;
41
+ function useCompatibleId(prefix = defaultId) {
43
42
  const contextPrefix = useIdPrefix.useIdPrefix();
44
43
  const [id, setId] = React.useState(() => {
45
44
  if (serverHandoffCompleted) {
@@ -66,8 +65,7 @@ function useCompatibleId() {
66
65
  * @param {string} [prefix]
67
66
  * @returns {string}
68
67
  */
69
- function useReactId() {
70
- let prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultId;
68
+ function useReactId(prefix = defaultId) {
71
69
  const contextPrefix = useIdPrefix.useIdPrefix();
72
70
  return `${contextPrefix ? `${contextPrefix}-` : ``}${prefix}-${_React.useId()}`;
73
71
  }
@@ -17,8 +17,7 @@ var React = require('react');
17
17
  * @param defaultState - The initial state to return before the media query is evaluated. Defaults to `false`.
18
18
  * @returns Whether the media query matches.
19
19
  */
20
- const useMatchMedia = function (mediaQuery) {
21
- let defaultState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
20
+ const useMatchMedia = (mediaQuery, defaultState = false) => {
22
21
  const [matches, setMatches] = React.useState(defaultState);
23
22
  React.useEffect(() => {
24
23
  const listener = event => {
@@ -13,4 +13,4 @@ import { type ForwardedRef, type Ref } from 'react';
13
13
  * accepts an array of refs and returns a callback ref that, when attached to a
14
14
  * node, assigns that node to every ref in the array.
15
15
  */
16
- export declare const useMergedRefs: <T>(refs: ForwardedRef<T>[]) => Ref<T>;
16
+ export declare const useMergedRefs: <T>(refs: (ForwardedRef<T> | undefined)[]) => Ref<T>;
@@ -11,8 +11,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
11
11
 
12
12
  var React = require('react');
13
13
 
14
- function useNoInteractiveChildren(ref) {
15
- let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'component should have no interactive child nodes';
14
+ function useNoInteractiveChildren(ref, message = 'component should have no interactive child nodes') {
16
15
  if (process.env.NODE_ENV !== 'production') {
17
16
  // TODO: https://github.com/carbon-design-system/carbon/issues/19005
18
17
  /*
@@ -29,8 +28,7 @@ function useNoInteractiveChildren(ref) {
29
28
  }, []);
30
29
  }
31
30
  }
32
- function useInteractiveChildrenNeedDescription(ref) {
33
- let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : `interactive child node(s) should have an \`aria-describedby\` property`;
31
+ function useInteractiveChildrenNeedDescription(ref, message = `interactive child node(s) should have an \`aria-describedby\` property`) {
34
32
  if (process.env.NODE_ENV !== 'production') {
35
33
  // TODO: https://github.com/carbon-design-system/carbon/issues/19005
36
34
  /*
@@ -28,16 +28,15 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
28
28
  * helper messages, and conditionally provides the appropriate validation
29
29
  * message and accompanying icon.
30
30
  */
31
- const useNormalizedInputProps = _ref => {
32
- let {
33
- id,
34
- readOnly,
35
- disabled,
36
- invalid,
37
- invalidText,
38
- warn,
39
- warnText
40
- } = _ref;
31
+ const useNormalizedInputProps = ({
32
+ id,
33
+ readOnly,
34
+ disabled,
35
+ invalid,
36
+ invalidText,
37
+ warn,
38
+ warnText
39
+ }) => {
41
40
  const prefix = usePrefix.usePrefix();
42
41
  const normalizedProps = {
43
42
  disabled: !readOnly && disabled,
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Copyright IBM Corp. 2025, 2025
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { ReactNode, RefObject } from 'react';
8
+ type Item = {
9
+ id: string;
10
+ };
11
+ /**
12
+ * Manages overflow items in a container by automatically hiding items that don't fit.
13
+ * @param items - Array of items to manage for overflow, each must have an `id` property.
14
+ * @param containerRef - React ref to the container element that holds the items.
15
+ * @param offsetRef - Optional ref to an offset element (like a "more" button) whose width is reserved when calculating available space.
16
+ * @param maxItems - Optional maximum number of visible items. If undefined, only container space constrains visibility.
17
+ * @param onChange - Optional callback called when hidden items change. Receives array of currently hidden items.
18
+ * @returns Object with `visibleItems` (items to display), `hiddenItems` (items that don't fit), and `itemRefHandler` (function to attach refs to items for width measurement).
19
+ */
20
+ declare const useOverflowItems: <T extends Item>(items: T[] | ReactNode, containerRef: RefObject<HTMLDivElement>, offsetRef?: RefObject<HTMLDivElement>, maxItems?: number, onChange?: (hiddenItems: T[]) => void) => {
21
+ visibleItems: T[];
22
+ hiddenItems: T[];
23
+ itemRefHandler: () => void;
24
+ } | {
25
+ visibleItems: T[];
26
+ itemRefHandler: (id: string, node: HTMLDivElement | null) => () => void;
27
+ hiddenItems: T[];
28
+ };
29
+ export default useOverflowItems;
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2023
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var React = require('react');
13
+ var useResizeObserver = require('./useResizeObserver.js');
14
+ var usePreviousValue = require('./usePreviousValue.js');
15
+
16
+ /**
17
+ * Manages overflow items in a container by automatically hiding items that don't fit.
18
+ * @param items - Array of items to manage for overflow, each must have an `id` property.
19
+ * @param containerRef - React ref to the container element that holds the items.
20
+ * @param offsetRef - Optional ref to an offset element (like a "more" button) whose width is reserved when calculating available space.
21
+ * @param maxItems - Optional maximum number of visible items. If undefined, only container space constrains visibility.
22
+ * @param onChange - Optional callback called when hidden items change. Receives array of currently hidden items.
23
+ * @returns Object with `visibleItems` (items to display), `hiddenItems` (items that don't fit), and `itemRefHandler` (function to attach refs to items for width measurement).
24
+ */
25
+
26
+ const useOverflowItems = (items, containerRef, offsetRef, maxItems, onChange) => {
27
+ const itemsRef = React.useRef(null);
28
+ const [maxWidth, setMaxWidth] = React.useState(0);
29
+ if (!items || !Array.isArray(items)) {
30
+ return {
31
+ visibleItems: [],
32
+ hiddenItems: [],
33
+ itemRefHandler: () => {}
34
+ };
35
+ }
36
+ const handleResize = () => {
37
+ if (containerRef.current) {
38
+ const offset = offsetRef?.current?.offsetWidth || 0;
39
+ const newMax = containerRef.current.offsetWidth - offset;
40
+ setMaxWidth(newMax);
41
+ }
42
+ };
43
+ useResizeObserver.useResizeObserver({
44
+ ref: containerRef,
45
+ onResize: handleResize
46
+ });
47
+ const getMap = () => {
48
+ if (!itemsRef.current) {
49
+ itemsRef.current = new Map();
50
+ }
51
+ return itemsRef.current;
52
+ };
53
+ const itemRefHandler = (id, node) => {
54
+ const map = getMap();
55
+ if (node) {
56
+ const style = getComputedStyle?.(node);
57
+ const totalWidth = node.offsetWidth + parseInt(style.marginLeft) + parseInt(style.marginRight);
58
+ map.set(id, totalWidth);
59
+ }
60
+ return () => {
61
+ map.delete(id);
62
+ };
63
+ };
64
+ const getVisibleItems = () => {
65
+ if (!items || Array.isArray(items) === false) {
66
+ return [];
67
+ }
68
+ if (!containerRef) {
69
+ return items;
70
+ }
71
+ const map = getMap();
72
+ let maxReached = false;
73
+ let accumulatedWidth = 0;
74
+ const visibleItems = items.slice(0, maxItems).reduce((prev, cur) => {
75
+ if (maxReached) {
76
+ return prev;
77
+ }
78
+ const itemWidth = map.get(cur.id) || 0;
79
+ const willFit = accumulatedWidth + itemWidth <= maxWidth;
80
+ if (willFit) {
81
+ accumulatedWidth += itemWidth;
82
+ prev.push(cur);
83
+ } else {
84
+ maxReached = true;
85
+ }
86
+ return prev;
87
+ }, []);
88
+ return visibleItems;
89
+ };
90
+
91
+ // Memoize visible items calculation to avoid recalculating on every render
92
+ const visibleItems = React.useMemo(() => {
93
+ if (!Array.isArray(items)) {
94
+ return [];
95
+ }
96
+ return getVisibleItems();
97
+ }, [items, maxWidth, maxItems]);
98
+
99
+ // Memoize hidden items calculation
100
+ const hiddenItems = React.useMemo(() => {
101
+ if (!Array.isArray(items)) {
102
+ return [];
103
+ }
104
+ return items.slice(visibleItems.length);
105
+ }, [items, visibleItems]);
106
+
107
+ // Use previous value to compare and only call onChange when needed
108
+ const previousHiddenItems = usePreviousValue.usePreviousValue(hiddenItems);
109
+
110
+ // Only call onChange if hidden items actually changed
111
+ React.useEffect(() => {
112
+ if (previousHiddenItems && onChange) {
113
+ const hasChanged = hiddenItems.length !== previousHiddenItems.length || hiddenItems.some((item, index) => item !== previousHiddenItems[index]);
114
+ if (hasChanged) {
115
+ onChange(hiddenItems);
116
+ }
117
+ }
118
+ }, [hiddenItems, previousHiddenItems, onChange]);
119
+ return {
120
+ visibleItems,
121
+ itemRefHandler,
122
+ hiddenItems
123
+ };
124
+ };
125
+
126
+ exports["default"] = useOverflowItems;
@@ -11,11 +11,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
11
11
 
12
12
  var React = require('react');
13
13
 
14
- const useResizeObserver = _ref => {
15
- let {
16
- ref,
17
- onResize
18
- } = _ref;
14
+ const useResizeObserver = ({
15
+ ref,
16
+ onResize
17
+ }) => {
19
18
  const [width, setWidth] = React.useState(-1);
20
19
  const [height, setHeight] = React.useState(-1);
21
20
  const entriesToHandle = React.useRef(null);
@@ -24,9 +24,7 @@ const useSavedCallback = callback => {
24
24
  React.useEffect(() => {
25
25
  savedCallback.current = callback;
26
26
  }, [callback]);
27
- return React.useCallback(function () {
28
- return savedCallback.current ? savedCallback.current(...arguments) : undefined;
29
- }, []);
27
+ return React.useCallback((...args) => savedCallback.current ? savedCallback.current(...args) : undefined, []);
30
28
  };
31
29
 
32
30
  exports.useSavedCallback = useSavedCallback;
@@ -34,8 +34,7 @@ const DOCUMENT_POSITION_BROAD_FOLLOWING = typeof Node !== 'undefined' ? Node.DOC
34
34
  * @returns {boolean} Whether the node or one of its ancestors is in a floating
35
35
  * menu.
36
36
  */
37
- const elementOrParentIsFloatingMenu = function (node) {
38
- let selectorsFloatingMenus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
37
+ const elementOrParentIsFloatingMenu = (node, selectorsFloatingMenus = []) => {
39
38
  if (node instanceof Element && typeof node.closest === 'function') {
40
39
  const allSelectorsFloatingMenus = ['.cds--overflow-menu-options', '.cds--tooltip', '.flatpickr-calendar', ...selectorsFloatingMenus];
41
40
  return allSelectorsFloatingMenus.some(selector => !!node.closest(selector));
@@ -47,36 +46,29 @@ const elementOrParentIsFloatingMenu = function (node) {
47
46
  * Ensures the focus is kept within the given container by implementing
48
47
  * "focus-wrap" behavior.
49
48
  */
50
- const wrapFocus = _ref => {
51
- let {
52
- bodyNode,
53
- startTrapNode,
54
- endTrapNode,
55
- currentActiveNode,
56
- oldActiveNode,
57
- selectorsFloatingMenus
58
- } = _ref;
49
+ const wrapFocus = ({
50
+ bodyNode,
51
+ startTrapNode,
52
+ endTrapNode,
53
+ currentActiveNode,
54
+ oldActiveNode,
55
+ selectorsFloatingMenus
56
+ }) => {
59
57
  if (bodyNode && currentActiveNode && oldActiveNode && !bodyNode.contains(currentActiveNode) && !elementOrParentIsFloatingMenu(currentActiveNode, selectorsFloatingMenus)) {
60
58
  const comparisonResult = oldActiveNode.compareDocumentPosition(currentActiveNode);
61
59
  if (currentActiveNode === startTrapNode || comparisonResult & DOCUMENT_POSITION_BROAD_PRECEDING) {
62
- const tabbableElement = Array.from(bodyNode.querySelectorAll(navigation.selectorTabbable)).reverse().find(_ref2 => {
63
- let {
64
- offsetParent
65
- } = _ref2;
66
- return Boolean(offsetParent);
67
- });
60
+ const tabbableElement = Array.from(bodyNode.querySelectorAll(navigation.selectorTabbable)).reverse().find(({
61
+ offsetParent
62
+ }) => Boolean(offsetParent));
68
63
  if (tabbableElement) {
69
64
  tabbableElement.focus();
70
65
  } else if (bodyNode !== oldActiveNode) {
71
66
  bodyNode.focus();
72
67
  }
73
68
  } else if (currentActiveNode === endTrapNode || comparisonResult & DOCUMENT_POSITION_BROAD_FOLLOWING) {
74
- const tabbableElement = Array.from(bodyNode.querySelectorAll(navigation.selectorTabbable)).find(_ref3 => {
75
- let {
76
- offsetParent
77
- } = _ref3;
78
- return Boolean(offsetParent);
79
- });
69
+ const tabbableElement = Array.from(bodyNode.querySelectorAll(navigation.selectorTabbable)).find(({
70
+ offsetParent
71
+ }) => Boolean(offsetParent));
80
72
  if (tabbableElement) {
81
73
  tabbableElement.focus();
82
74
  } else if (bodyNode !== oldActiveNode) {
@@ -92,12 +84,11 @@ const wrapFocus = _ref => {
92
84
  *
93
85
  * Note: This must be called *before* focus moves using `onKeyDown` or similar.
94
86
  */
95
- const wrapFocusWithoutSentinels = _ref4 => {
96
- let {
97
- containerNode,
98
- currentActiveNode,
99
- event
100
- } = _ref4;
87
+ const wrapFocusWithoutSentinels = ({
88
+ containerNode,
89
+ currentActiveNode,
90
+ event
91
+ }) => {
101
92
  if (!containerNode) return;
102
93
  if (['blur', 'focusout', 'focusin', 'focus'].includes(event.type) && process.env.NODE_ENV !== 'production') {
103
94
  throw new Error(`Error: wrapFocusWithoutSentinels(...) called in unsupported ${event.type} event.\n\nCall wrapFocusWithoutSentinels(...) from onKeyDown instead.`);
@@ -13,7 +13,7 @@ var warning = require('../internal/warning.js');
13
13
 
14
14
  const didWarnAboutDeprecation = {};
15
15
  function deprecate(propType, message) {
16
- function checker(props, propName, componentName) {
16
+ function checker(props, propName, componentName, ...rest) {
17
17
  if (props[propName] === undefined) {
18
18
  return;
19
19
  }
@@ -24,9 +24,6 @@ function deprecate(propType, message) {
24
24
  };
25
25
  process.env.NODE_ENV !== "production" ? warning.warning(false, message || `The prop \`${propName}\` has been deprecated for the ` + `${componentName} component. It will be removed in the next major ` + `release`) : void 0;
26
26
  }
27
- for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
28
- rest[_key - 3] = arguments[_key];
29
- }
30
27
  return propType(props, propName, componentName, ...rest);
31
28
  }
32
29
  return checker;
@@ -13,7 +13,7 @@ var warning = require('../internal/warning.js');
13
13
 
14
14
  const didWarnAboutDeprecation = {};
15
15
  function deprecateValuesWithin(propType, allowedValues, propMappingFunction) {
16
- return function checker(props, propName, componentName) {
16
+ return function checker(props, propName, componentName, ...rest) {
17
17
  if (props[propName] === undefined) {
18
18
  return;
19
19
  }
@@ -29,9 +29,6 @@ function deprecateValuesWithin(propType, allowedValues, propMappingFunction) {
29
29
  process.env.NODE_ENV !== "production" ? warning.warning(false, message) : void 0;
30
30
  }
31
31
  }
32
- for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
33
- rest[_key - 3] = arguments[_key];
34
- }
35
32
  return propType(props, propName, componentName, ...rest);
36
33
  };
37
34
  }
@@ -19,13 +19,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
19
19
  */
20
20
  const isRequiredOneOf = propTypes => {
21
21
  const names = Object.keys(propTypes);
22
- const checker = propType => function (props, propName, componentName) {
22
+ const checker = propType => (props, propName, componentName, ...rest) => {
23
23
  if (process.env.NODE_ENV !== 'production' && names.every(name => typeof props[name] === 'undefined')) {
24
24
  return new Error(`${componentName} requires one of the following props: ${names.join(', ')}`);
25
25
  }
26
- for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
27
- rest[_key - 3] = arguments[_key];
28
- }
29
26
  return propType(props, propName, componentName, ...rest);
30
27
  };
31
28
  return names.reduce((acc, name) => ({
@@ -17,13 +17,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
17
17
  * becomes required if the prop corresponding to the provided prop name exists.
18
18
  */
19
19
  function requiredIfGivenPropIsTruthy(name, propType) {
20
- return function check(props, propName, componentName) {
20
+ return function check(props, propName, componentName, ...rest) {
21
21
  if (process.env.NODE_ENV !== 'production' && props[name] == true && props[propName] == null) {
22
22
  return new Error(`You must provide a value for \`${propName}\` in \`${componentName}\` if \`${name}\` exists.`);
23
23
  }
24
- for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
25
- rest[_key - 3] = arguments[_key];
26
- }
27
24
  return propType(props, propName, componentName, ...rest);
28
25
  };
29
26
  }
@@ -18,10 +18,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
18
18
  * @param handlers - An array of event handler functions.
19
19
  * @returns A composite event handler.
20
20
  */
21
- const composeEventHandlers = handlers => function (event) {
22
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
23
- args[_key - 1] = arguments[_key];
24
- }
21
+ const composeEventHandlers = handlers => (event, ...args) => {
25
22
  for (const handler of handlers) {
26
23
  if (event.defaultPrevented) {
27
24
  break;
@@ -13,20 +13,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
13
13
  * @param {...Ref<Element>} refs List of React refs to merge.
14
14
  * @returns {Ref<Element>} Merged React ref.
15
15
  */
16
- const mergeRefs = function () {
17
- for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
18
- refs[_key] = arguments[_key];
19
- }
20
- return el => {
21
- refs.forEach(ref => {
22
- // https://github.com/facebook/react/issues/13029#issuecomment-410002316
23
- if (typeof ref === 'function') {
24
- ref(el);
25
- } else if (Object(ref) === ref) {
26
- ref.current = el;
27
- }
28
- });
29
- };
16
+ const mergeRefs = (...refs) => el => {
17
+ refs.forEach(ref => {
18
+ // https://github.com/facebook/react/issues/13029#issuecomment-410002316
19
+ if (typeof ref === 'function') {
20
+ ref(el);
21
+ } else if (Object(ref) === ref) {
22
+ ref.current = el;
23
+ }
24
+ });
30
25
  };
31
26
  var mergeRefs$1 = mergeRefs;
32
27
 
@@ -10,8 +10,7 @@
10
10
  Object.defineProperty(exports, '__esModule', { value: true });
11
11
 
12
12
  let lastId = 0;
13
- const uniqueId = function () {
14
- let prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'id';
13
+ const uniqueId = (prefix = 'id') => {
15
14
  lastId++;
16
15
  return `${prefix}${lastId}`;
17
16
  };
@@ -24,22 +24,20 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
24
  * @param {{ name: string, type: string, className?: string | (prefix: string) => string }} props
25
25
  * @returns
26
26
  */
27
- const wrapComponent = _ref => {
28
- let {
29
- name,
30
- className: getClassName,
31
- type
32
- } = _ref;
27
+ const wrapComponent = ({
28
+ name,
29
+ className: getClassName,
30
+ type
31
+ }) => {
33
32
  /**
34
33
  *
35
34
  * @param {{ className?: string, [x: string]: any}} param0
36
35
  * @returns
37
36
  */
38
- function Component(_ref2) {
39
- let {
40
- className: baseClassName,
41
- ...other
42
- } = _ref2;
37
+ function Component({
38
+ className: baseClassName,
39
+ ...other
40
+ }) {
43
41
  const prefix = usePrefix.usePrefix();
44
42
  const componentClass = cx__default["default"](typeof getClassName === 'function' ? getClassName(prefix) : getClassName, baseClassName);
45
43
  return /*#__PURE__*/React__default["default"].createElement(type, {