@carbon/react 1.83.0 → 1.84.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 (510) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +980 -945
  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 +31 -34
  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 +55 -63
  133. package/es/components/ModalWrapper/ModalWrapper.js +2 -2
  134. package/es/components/MultiSelect/FilterableMultiSelect.js +46 -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 +35 -41
  146. package/es/components/OverflowMenu/next/index.js +12 -13
  147. package/es/components/PageHeader/PageHeader.d.ts +29 -5
  148. package/es/components/PageHeader/PageHeader.js +119 -73
  149. package/es/components/Pagination/Pagination.Skeleton.js +4 -5
  150. package/es/components/Pagination/Pagination.js +24 -25
  151. package/es/components/Pagination/experimental/PageSelector.js +8 -9
  152. package/es/components/Pagination/experimental/Pagination.js +20 -21
  153. package/es/components/PaginationNav/PaginationNav.js +33 -38
  154. package/es/components/Popover/index.js +26 -28
  155. package/es/components/ProgressBar/ProgressBar.js +11 -12
  156. package/es/components/ProgressIndicator/ProgressIndicator.Skeleton.js +5 -6
  157. package/es/components/ProgressIndicator/ProgressIndicator.js +29 -32
  158. package/es/components/RadioTile/RadioTile.js +17 -18
  159. package/es/components/Search/Search.Skeleton.js +5 -6
  160. package/es/components/Search/Search.js +26 -28
  161. package/es/components/Select/Select.Skeleton.js +5 -6
  162. package/es/components/Select/Select.js +24 -25
  163. package/es/components/SelectItem/SelectItem.js +8 -9
  164. package/es/components/SelectItemGroup/SelectItemGroup.js +7 -8
  165. package/es/components/ShapeIndicator/index.js +7 -8
  166. package/es/components/SkeletonIcon/SkeletonIcon.js +4 -5
  167. package/es/components/SkeletonPlaceholder/SkeletonPlaceholder.js +4 -5
  168. package/es/components/SkeletonText/SkeletonText.js +8 -9
  169. package/es/components/Slider/Slider.Skeleton.js +8 -9
  170. package/es/components/Slider/Slider.js +69 -83
  171. package/es/components/Slider/SliderHandles.js +6 -6
  172. package/es/components/StructuredList/StructuredList.Skeleton.js +5 -6
  173. package/es/components/Tabs/Tabs.Skeleton.js +5 -6
  174. package/es/components/Tabs/Tabs.js +83 -98
  175. package/es/components/Tabs/usePressable.js +7 -8
  176. package/es/components/Tag/DismissibleTag.js +16 -17
  177. package/es/components/Tag/OperationalTag.js +10 -11
  178. package/es/components/Tag/SelectableTag.js +13 -14
  179. package/es/components/Tag/Tag.Skeleton.js +5 -6
  180. package/es/components/Tag/Tag.js +19 -20
  181. package/es/components/Text/Text.js +6 -7
  182. package/es/components/Text/TextDirection.js +5 -6
  183. package/es/components/TextArea/TextArea.js +3 -3
  184. package/es/components/TextInput/ControlledPasswordInput.js +24 -25
  185. package/es/components/TextInput/PasswordInput.js +26 -27
  186. package/es/components/TextInput/TextInput.Skeleton.js +5 -6
  187. package/es/components/TextInput/TextInput.js +27 -28
  188. package/es/components/TextInput/util.js +14 -17
  189. package/es/components/Theme/index.js +10 -12
  190. package/es/components/Tile/Tile.js +68 -74
  191. package/es/components/Toggle/Toggle.Skeleton.js +4 -5
  192. package/es/components/Toggle/Toggle.js +17 -18
  193. package/es/components/ToggleSmall/ToggleSmall.Skeleton.js +6 -7
  194. package/es/components/Toggletip/index.js +33 -39
  195. package/es/components/Tooltip/DefinitionTooltip.js +13 -14
  196. package/es/components/Tooltip/Tooltip.js +15 -16
  197. package/es/components/TreeView/TreeNode.js +20 -21
  198. package/es/components/TreeView/TreeView.js +14 -16
  199. package/es/components/UIShell/Content.js +6 -7
  200. package/es/components/UIShell/Header.js +5 -6
  201. package/es/components/UIShell/HeaderContainer.js +5 -6
  202. package/es/components/UIShell/HeaderGlobalAction.js +12 -13
  203. package/es/components/UIShell/HeaderMenu.d.ts +10 -112
  204. package/es/components/UIShell/HeaderMenu.js +154 -201
  205. package/es/components/UIShell/HeaderMenuButton.js +10 -11
  206. package/es/components/UIShell/HeaderMenuItem.js +10 -11
  207. package/es/components/UIShell/HeaderName.js +6 -7
  208. package/es/components/UIShell/HeaderNavigation.js +7 -8
  209. package/es/components/UIShell/HeaderPanel.js +9 -10
  210. package/es/components/UIShell/HeaderSideNavItems.js +5 -6
  211. package/es/components/UIShell/Link.js +8 -9
  212. package/es/components/UIShell/SideNav.js +23 -25
  213. package/es/components/UIShell/SideNavDetails.js +6 -7
  214. package/es/components/UIShell/SideNavDivider.js +3 -4
  215. package/es/components/UIShell/SideNavFooter.js +6 -7
  216. package/es/components/UIShell/SideNavHeader.js +5 -6
  217. package/es/components/UIShell/SideNavIcon.js +5 -6
  218. package/es/components/UIShell/SideNavItem.js +5 -6
  219. package/es/components/UIShell/SideNavItems.js +5 -6
  220. package/es/components/UIShell/SideNavLink.js +10 -11
  221. package/es/components/UIShell/SideNavLinkText.js +5 -6
  222. package/es/components/UIShell/SideNavMenu.js +11 -12
  223. package/es/components/UIShell/SkipToContent.js +7 -8
  224. package/es/components/UIShell/Switcher.js +4 -5
  225. package/es/components/UIShell/SwitcherDivider.js +4 -5
  226. package/es/components/UnorderedList/UnorderedList.js +6 -7
  227. package/es/index.js +2 -2
  228. package/es/internal/FloatingMenu.js +26 -28
  229. package/es/internal/Selection.js +15 -17
  230. package/es/internal/getAnnouncement.d.ts +8 -0
  231. package/es/internal/getAnnouncement.js +22 -0
  232. package/es/internal/keyboard/match.js +6 -7
  233. package/es/internal/useControllableState.d.ts +1 -1
  234. package/es/internal/useControllableState.js +8 -9
  235. package/es/internal/useDelayedState.js +1 -2
  236. package/es/internal/useDocumentLang.d.ts +12 -0
  237. package/es/internal/useId.js +2 -4
  238. package/es/internal/useMatchMedia.js +1 -2
  239. package/es/internal/useMergedRefs.d.ts +1 -1
  240. package/es/internal/useNoInteractiveChildren.js +2 -4
  241. package/es/internal/useNormalizedInputProps.js +9 -10
  242. package/es/internal/useResizeObserver.js +4 -5
  243. package/es/internal/useSavedCallback.js +1 -3
  244. package/es/internal/wrapFocus.js +20 -29
  245. package/es/prop-types/deprecate.js +1 -4
  246. package/es/prop-types/deprecateValuesWithin.js +1 -4
  247. package/es/prop-types/isRequiredOneOf.js +1 -4
  248. package/es/prop-types/requiredIfGivenPropIsTruthy.js +1 -4
  249. package/es/tools/events.js +1 -4
  250. package/es/tools/mergeRefs.js +9 -14
  251. package/es/tools/uniqueId.js +1 -2
  252. package/es/tools/wrapComponent.js +9 -11
  253. package/lib/components/AILabel/index.js +27 -30
  254. package/lib/components/AISkeleton/AISkeletonIcon.js +4 -5
  255. package/lib/components/AISkeleton/AISkeletonPlaceholder.js +4 -5
  256. package/lib/components/AISkeleton/AISkeletonText.js +4 -5
  257. package/lib/components/Accordion/Accordion.Skeleton.js +9 -10
  258. package/lib/components/Accordion/Accordion.js +10 -11
  259. package/lib/components/Accordion/AccordionItem.js +13 -14
  260. package/lib/components/Accordion/AccordionProvider.js +4 -5
  261. package/lib/components/AspectRatio/AspectRatio.js +7 -8
  262. package/lib/components/BadgeIndicator/index.js +5 -6
  263. package/lib/components/Breadcrumb/Breadcrumb.Skeleton.js +4 -5
  264. package/lib/components/Button/Button.Skeleton.js +7 -8
  265. package/lib/components/Button/ButtonBase.js +23 -24
  266. package/lib/components/ChatButton/ChatButton.Skeleton.js +5 -6
  267. package/lib/components/ChatButton/ChatButton.js +11 -12
  268. package/lib/components/Checkbox/Checkbox.Skeleton.js +4 -5
  269. package/lib/components/Checkbox/Checkbox.js +19 -20
  270. package/lib/components/CheckboxGroup/CheckboxGroup.js +16 -17
  271. package/lib/components/ClassPrefix/index.js +4 -5
  272. package/lib/components/CodeSnippet/CodeSnippet.Skeleton.js +5 -6
  273. package/lib/components/CodeSnippet/CodeSnippet.js +25 -26
  274. package/lib/components/ComboBox/ComboBox.js +24 -30
  275. package/lib/components/ComboBox/tools/filter.js +9 -12
  276. package/lib/components/ComboButton/index.js +16 -18
  277. package/lib/components/ComposedModal/ComposedModal.js +31 -34
  278. package/lib/components/ComposedModal/ModalFooter.js +37 -42
  279. package/lib/components/ComposedModal/ModalHeader.js +14 -15
  280. package/lib/components/ContainedList/ContainedList.js +10 -11
  281. package/lib/components/ContainedList/ContainedListItem/ContainedListItem.js +9 -10
  282. package/lib/components/ContentSwitcher/ContentSwitcher.d.ts +9 -29
  283. package/lib/components/ContentSwitcher/ContentSwitcher.js +94 -126
  284. package/lib/components/ContentSwitcher/index.d.ts +3 -4
  285. package/lib/components/ContextMenu/useContextMenu.js +1 -2
  286. package/lib/components/Copy/Copy.js +11 -12
  287. package/lib/components/CopyButton/CopyButton.js +10 -11
  288. package/lib/components/DataTable/DataTable.js +45 -53
  289. package/lib/components/DataTable/Table.js +15 -18
  290. package/lib/components/DataTable/TableBatchAction.js +8 -11
  291. package/lib/components/DataTable/TableBatchActions.js +18 -20
  292. package/lib/components/DataTable/TableBody.js +8 -11
  293. package/lib/components/DataTable/TableContainer.js +9 -10
  294. package/lib/components/DataTable/TableDecoratorRow.js +4 -5
  295. package/lib/components/DataTable/TableExpandHeader.js +14 -15
  296. package/lib/components/DataTable/TableExpandRow.js +13 -14
  297. package/lib/components/DataTable/TableExpandedRow.js +6 -7
  298. package/lib/components/DataTable/TableHeader.js +15 -16
  299. package/lib/components/DataTable/TableSelectAll.js +11 -12
  300. package/lib/components/DataTable/TableSelectRow.js +12 -13
  301. package/lib/components/DataTable/TableSlugRow.js +4 -5
  302. package/lib/components/DataTable/TableToolbar.js +7 -8
  303. package/lib/components/DataTable/TableToolbarMenu.js +8 -9
  304. package/lib/components/DataTable/TableToolbarSearch.js +22 -24
  305. package/lib/components/DataTable/state/sorting.js +3 -4
  306. package/lib/components/DataTable/tools/filter.js +10 -12
  307. package/lib/components/DataTable/tools/normalize.js +6 -8
  308. package/lib/components/DataTable/tools/sorting.js +24 -30
  309. package/lib/components/DataTableSkeleton/DataTableSkeleton.js +11 -12
  310. package/lib/components/DatePicker/DatePicker.Skeleton.js +7 -8
  311. package/lib/components/DatePicker/DatePicker.js +87 -64
  312. package/lib/components/DatePickerInput/DatePickerInput.js +5 -6
  313. package/lib/components/Dialog/index.d.ts +193 -8
  314. package/lib/components/Dialog/index.js +457 -33
  315. package/lib/components/Dropdown/Dropdown.Skeleton.js +6 -7
  316. package/lib/components/Dropdown/Dropdown.js +40 -43
  317. package/lib/components/ErrorBoundary/ErrorBoundary.js +2 -2
  318. package/lib/components/ExpandableSearch/ExpandableSearch.js +9 -10
  319. package/lib/components/FeatureFlags/index.js +11 -12
  320. package/lib/components/FileUploader/FileUploader.Skeleton.js +4 -5
  321. package/lib/components/FileUploader/FileUploader.js +22 -24
  322. package/lib/components/FileUploader/FileUploaderButton.js +16 -17
  323. package/lib/components/FileUploader/FileUploaderDropContainer.js +15 -16
  324. package/lib/components/FileUploader/FileUploaderItem.js +13 -14
  325. package/lib/components/FileUploader/Filename.js +9 -10
  326. package/lib/components/FluidComboBox/FluidComboBox.Skeleton.js +4 -5
  327. package/lib/components/FluidComboBox/FluidComboBox.js +5 -6
  328. package/lib/components/FluidDatePicker/FluidDatePicker.Skeleton.js +5 -6
  329. package/lib/components/FluidDatePicker/FluidDatePicker.js +10 -11
  330. package/lib/components/FluidDropdown/FluidDropdown.Skeleton.js +4 -5
  331. package/lib/components/FluidDropdown/FluidDropdown.js +5 -6
  332. package/lib/components/FluidForm/FluidForm.js +5 -6
  333. package/lib/components/FluidMultiSelect/FluidMultiSelect.Skeleton.js +4 -5
  334. package/lib/components/FluidMultiSelect/FluidMultiSelect.js +6 -7
  335. package/lib/components/FluidNumberInput/FluidNumberInput.Skeleton.js +4 -5
  336. package/lib/components/FluidNumberInput/FluidNumberInput.d.ts +40 -1
  337. package/lib/components/FluidNumberInput/FluidNumberInput.js +38 -5
  338. package/lib/components/FluidSearch/FluidSearch.Skeleton.js +4 -5
  339. package/lib/components/FluidSearch/FluidSearch.js +4 -5
  340. package/lib/components/FluidSelect/FluidSelect.Skeleton.js +4 -5
  341. package/lib/components/FluidSelect/FluidSelect.js +5 -6
  342. package/lib/components/FluidTextArea/FluidTextArea.Skeleton.js +4 -5
  343. package/lib/components/FluidTextArea/FluidTextArea.js +4 -5
  344. package/lib/components/FluidTextInput/FluidTextInput.Skeleton.js +4 -5
  345. package/lib/components/FluidTextInput/FluidTextInput.js +5 -6
  346. package/lib/components/FluidTimePicker/FluidTimePicker.Skeleton.js +5 -6
  347. package/lib/components/FluidTimePicker/FluidTimePicker.js +11 -12
  348. package/lib/components/FluidTimePickerSelect/FluidTimePickerSelect.js +5 -6
  349. package/lib/components/Form/Form.js +5 -6
  350. package/lib/components/FormGroup/FormGroup.js +11 -12
  351. package/lib/components/FormItem/FormItem.js +5 -6
  352. package/lib/components/FormLabel/FormLabel.js +6 -7
  353. package/lib/components/Grid/CSSGrid.js +17 -19
  354. package/lib/components/Grid/Column.js +28 -27
  355. package/lib/components/Grid/ColumnHang.js +6 -7
  356. package/lib/components/Grid/FlexGrid.js +9 -10
  357. package/lib/components/Grid/GridContext.js +5 -6
  358. package/lib/components/Grid/Row.js +8 -9
  359. package/lib/components/Heading/index.js +5 -6
  360. package/lib/components/Icon/Icon.Skeleton.js +4 -5
  361. package/lib/components/IconButton/index.js +20 -21
  362. package/lib/components/IconIndicator/index.js +7 -8
  363. package/lib/components/IdPrefix/index.js +4 -5
  364. package/lib/components/InlineLoading/InlineLoading.js +9 -10
  365. package/lib/components/Layer/index.js +8 -9
  366. package/lib/components/Layout/index.js +21 -26
  367. package/lib/components/LayoutDirection/LayoutDirection.js +6 -7
  368. package/lib/components/Link/Link.d.ts +1 -1
  369. package/lib/components/Link/Link.js +14 -15
  370. package/lib/components/ListBox/ListBoxField.js +6 -7
  371. package/lib/components/ListBox/ListBoxMenu.js +5 -6
  372. package/lib/components/ListBox/ListBoxMenuIcon.js +4 -5
  373. package/lib/components/ListBox/ListBoxMenuItem.js +8 -10
  374. package/lib/components/ListBox/ListBoxSelection.js +8 -9
  375. package/lib/components/ListBox/next/ListBoxSelection.js +9 -10
  376. package/lib/components/ListBox/next/ListBoxTrigger.js +5 -6
  377. package/lib/components/ListItem/ListItem.js +5 -6
  378. package/lib/components/Loading/Loading.js +8 -9
  379. package/lib/components/Menu/Menu.js +23 -24
  380. package/lib/components/Menu/MenuItem.js +39 -44
  381. package/lib/components/MenuButton/index.js +16 -18
  382. package/lib/components/Modal/Modal.js +55 -63
  383. package/lib/components/ModalWrapper/ModalWrapper.js +2 -2
  384. package/lib/components/MultiSelect/FilterableMultiSelect.js +45 -47
  385. package/lib/components/MultiSelect/MultiSelect.js +43 -45
  386. package/lib/components/MultiSelect/tools/sorting.js +11 -15
  387. package/lib/components/Notification/Notification.js +96 -105
  388. package/lib/components/NumberInput/NumberFormatPropTypes.d.ts +29 -0
  389. package/lib/components/NumberInput/NumberFormatPropTypes.js +48 -0
  390. package/lib/components/NumberInput/NumberInput.Skeleton.js +6 -7
  391. package/lib/components/NumberInput/NumberInput.d.ts +39 -3
  392. package/lib/components/NumberInput/NumberInput.js +173 -43
  393. package/lib/components/OrderedList/OrderedList.js +7 -8
  394. package/lib/components/OverflowMenu/OverflowMenu.d.ts +1 -1
  395. package/lib/components/OverflowMenu/OverflowMenu.js +35 -41
  396. package/lib/components/OverflowMenu/next/index.js +12 -13
  397. package/lib/components/PageHeader/PageHeader.d.ts +29 -5
  398. package/lib/components/PageHeader/PageHeader.js +119 -73
  399. package/lib/components/Pagination/Pagination.Skeleton.js +4 -5
  400. package/lib/components/Pagination/Pagination.js +24 -25
  401. package/lib/components/Pagination/experimental/PageSelector.js +8 -9
  402. package/lib/components/Pagination/experimental/Pagination.js +20 -21
  403. package/lib/components/PaginationNav/PaginationNav.js +33 -38
  404. package/lib/components/Popover/index.js +26 -28
  405. package/lib/components/ProgressBar/ProgressBar.js +11 -12
  406. package/lib/components/ProgressIndicator/ProgressIndicator.Skeleton.js +5 -6
  407. package/lib/components/ProgressIndicator/ProgressIndicator.js +29 -32
  408. package/lib/components/RadioTile/RadioTile.js +17 -18
  409. package/lib/components/Search/Search.Skeleton.js +5 -6
  410. package/lib/components/Search/Search.js +26 -28
  411. package/lib/components/Select/Select.Skeleton.js +5 -6
  412. package/lib/components/Select/Select.js +24 -25
  413. package/lib/components/SelectItem/SelectItem.js +8 -9
  414. package/lib/components/SelectItemGroup/SelectItemGroup.js +7 -8
  415. package/lib/components/ShapeIndicator/index.js +7 -8
  416. package/lib/components/SkeletonIcon/SkeletonIcon.js +4 -5
  417. package/lib/components/SkeletonPlaceholder/SkeletonPlaceholder.js +4 -5
  418. package/lib/components/SkeletonText/SkeletonText.js +8 -9
  419. package/lib/components/Slider/Slider.Skeleton.js +8 -9
  420. package/lib/components/Slider/Slider.js +69 -83
  421. package/lib/components/Slider/SliderHandles.js +6 -6
  422. package/lib/components/StructuredList/StructuredList.Skeleton.js +5 -6
  423. package/lib/components/Tabs/Tabs.Skeleton.js +5 -6
  424. package/lib/components/Tabs/Tabs.js +83 -98
  425. package/lib/components/Tabs/usePressable.js +7 -8
  426. package/lib/components/Tag/DismissibleTag.js +16 -17
  427. package/lib/components/Tag/OperationalTag.js +10 -11
  428. package/lib/components/Tag/SelectableTag.js +13 -14
  429. package/lib/components/Tag/Tag.Skeleton.js +5 -6
  430. package/lib/components/Tag/Tag.js +19 -20
  431. package/lib/components/Text/Text.js +6 -7
  432. package/lib/components/Text/TextDirection.js +5 -6
  433. package/lib/components/TextArea/TextArea.js +3 -3
  434. package/lib/components/TextInput/ControlledPasswordInput.js +24 -25
  435. package/lib/components/TextInput/PasswordInput.js +26 -27
  436. package/lib/components/TextInput/TextInput.Skeleton.js +5 -6
  437. package/lib/components/TextInput/TextInput.js +27 -28
  438. package/lib/components/TextInput/util.js +14 -17
  439. package/lib/components/Theme/index.js +10 -12
  440. package/lib/components/Tile/Tile.js +68 -74
  441. package/lib/components/Toggle/Toggle.Skeleton.js +4 -5
  442. package/lib/components/Toggle/Toggle.js +17 -18
  443. package/lib/components/ToggleSmall/ToggleSmall.Skeleton.js +6 -7
  444. package/lib/components/Toggletip/index.js +33 -39
  445. package/lib/components/Tooltip/DefinitionTooltip.js +13 -14
  446. package/lib/components/Tooltip/Tooltip.js +15 -16
  447. package/lib/components/TreeView/TreeNode.js +20 -21
  448. package/lib/components/TreeView/TreeView.js +14 -16
  449. package/lib/components/UIShell/Content.js +6 -7
  450. package/lib/components/UIShell/Header.js +5 -6
  451. package/lib/components/UIShell/HeaderContainer.js +5 -6
  452. package/lib/components/UIShell/HeaderGlobalAction.js +12 -13
  453. package/lib/components/UIShell/HeaderMenu.d.ts +10 -112
  454. package/lib/components/UIShell/HeaderMenu.js +152 -199
  455. package/lib/components/UIShell/HeaderMenuButton.js +10 -11
  456. package/lib/components/UIShell/HeaderMenuItem.js +10 -11
  457. package/lib/components/UIShell/HeaderName.js +6 -7
  458. package/lib/components/UIShell/HeaderNavigation.js +7 -8
  459. package/lib/components/UIShell/HeaderPanel.js +9 -10
  460. package/lib/components/UIShell/HeaderSideNavItems.js +5 -6
  461. package/lib/components/UIShell/Link.js +8 -9
  462. package/lib/components/UIShell/SideNav.js +23 -25
  463. package/lib/components/UIShell/SideNavDetails.js +6 -7
  464. package/lib/components/UIShell/SideNavDivider.js +3 -4
  465. package/lib/components/UIShell/SideNavFooter.js +6 -7
  466. package/lib/components/UIShell/SideNavHeader.js +5 -6
  467. package/lib/components/UIShell/SideNavIcon.js +5 -6
  468. package/lib/components/UIShell/SideNavItem.js +5 -6
  469. package/lib/components/UIShell/SideNavItems.js +5 -6
  470. package/lib/components/UIShell/SideNavLink.js +10 -11
  471. package/lib/components/UIShell/SideNavLinkText.js +5 -6
  472. package/lib/components/UIShell/SideNavMenu.js +11 -12
  473. package/lib/components/UIShell/SkipToContent.js +7 -8
  474. package/lib/components/UIShell/Switcher.js +4 -5
  475. package/lib/components/UIShell/SwitcherDivider.js +4 -5
  476. package/lib/components/UnorderedList/UnorderedList.js +6 -7
  477. package/lib/index.js +35 -35
  478. package/lib/internal/FloatingMenu.js +26 -28
  479. package/lib/internal/Selection.js +15 -17
  480. package/lib/internal/getAnnouncement.d.ts +8 -0
  481. package/lib/internal/getAnnouncement.js +26 -0
  482. package/lib/internal/keyboard/match.js +6 -7
  483. package/lib/internal/useControllableState.d.ts +1 -1
  484. package/lib/internal/useControllableState.js +8 -9
  485. package/lib/internal/useDelayedState.js +1 -2
  486. package/lib/internal/useDocumentLang.d.ts +12 -0
  487. package/lib/internal/useId.js +2 -4
  488. package/lib/internal/useMatchMedia.js +1 -2
  489. package/lib/internal/useMergedRefs.d.ts +1 -1
  490. package/lib/internal/useNoInteractiveChildren.js +2 -4
  491. package/lib/internal/useNormalizedInputProps.js +9 -10
  492. package/lib/internal/useResizeObserver.js +4 -5
  493. package/lib/internal/useSavedCallback.js +1 -3
  494. package/lib/internal/wrapFocus.js +20 -29
  495. package/lib/prop-types/deprecate.js +1 -4
  496. package/lib/prop-types/deprecateValuesWithin.js +1 -4
  497. package/lib/prop-types/isRequiredOneOf.js +1 -4
  498. package/lib/prop-types/requiredIfGivenPropIsTruthy.js +1 -4
  499. package/lib/tools/events.js +1 -4
  500. package/lib/tools/mergeRefs.js +9 -14
  501. package/lib/tools/uniqueId.js +1 -2
  502. package/lib/tools/wrapComponent.js +9 -11
  503. package/package.json +21 -19
  504. package/telemetry.yml +23 -1
  505. package/es/components/ContentSwitcher/index.js +0 -13
  506. package/es/feature-flags.d.ts +0 -7
  507. package/es/internal/useAnnouncer.js +0 -21
  508. package/lib/components/ContentSwitcher/index.js +0 -18
  509. package/lib/feature-flags.d.ts +0 -7
  510. package/lib/internal/useAnnouncer.js +0 -25
@@ -5,10 +5,10 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import { defineProperty as _defineProperty, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
8
+ import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import { ChevronDown } from '@carbon/icons-react';
10
10
  import cx from 'classnames';
11
- import React from 'react';
11
+ import React, { useContext, useState, useRef, Children, forwardRef, isValidElement, cloneElement } from 'react';
12
12
  import PropTypes from 'prop-types';
13
13
  import { Enter, Space, Escape } from '../../internal/keyboard/keys.js';
14
14
  import { matches } from '../../internal/keyboard/match.js';
@@ -16,205 +16,165 @@ import { AriaLabelPropType } from '../../prop-types/AriaPropTypes.js';
16
16
  import { PrefixContext } from '../../internal/usePrefix.js';
17
17
  import deprecate from '../../prop-types/deprecate.js';
18
18
  import { composeEventHandlers } from '../../tools/events.js';
19
+ import { useMergedRefs } from '../../internal/useMergedRefs.js';
19
20
 
20
- /**
21
- * `HeaderMenu` is used to render submenu's in the `Header`. Most often children
22
- * will be a `HeaderMenuItem`. It handles certain keyboard events to help
23
- * with managing focus. It also passes along refs to each child so that it can
24
- * help manage focus state of its children.
25
- */
21
+ const frFn = forwardRef;
22
+ const HeaderMenu = frFn((props, ref) => {
23
+ const {
24
+ isActive,
25
+ isCurrentPage,
26
+ 'aria-label': ariaLabel,
27
+ 'aria-labelledby': ariaLabelledBy,
28
+ className: customClassName,
29
+ children,
30
+ renderMenuContent: MenuContent,
31
+ menuLinkName,
32
+ focusRef,
33
+ onBlur,
34
+ onClick,
35
+ onKeyDown,
36
+ ...rest
37
+ } = props;
38
+ const prefix = useContext(PrefixContext);
39
+ const [expanded, setExpanded] = useState(false);
40
+ const menuButtonRef = useRef(null);
41
+ const subMenusRef = useRef(null);
42
+ const itemRefs = useRef([]);
43
+ const mergedButtonRef = useMergedRefs([ref, focusRef, menuButtonRef]);
26
44
 
27
- class HeaderMenu extends React.Component {
28
- constructor(props) {
29
- super(props);
30
- _defineProperty(this, "_subMenus", /*#__PURE__*/React.createRef());
31
- _defineProperty(this, "items", []);
32
- _defineProperty(this, "menuButtonRef", null);
33
- /**
34
- * Toggle the expanded state of the menu on click.
35
- */
36
- _defineProperty(this, "handleOnClick", e => {
37
- const {
38
- current: subMenusNode
39
- } = this._subMenus;
40
- if (!subMenusNode || !subMenusNode.contains(e.target)) {
41
- e.preventDefault();
42
- }
43
- this.setState(prevState => ({
44
- expanded: !prevState.expanded
45
- }));
46
- });
47
- /**
48
- * Keyboard event handler for the entire menu.
49
- */
50
- _defineProperty(this, "handleOnKeyDown", event => {
51
- // Handle enter or space key for toggling the expanded state of the menu.
52
- if (matches(event, [Enter, Space])) {
53
- event.stopPropagation();
54
- event.preventDefault();
55
- this.setState(prevState => ({
56
- expanded: !prevState.expanded
57
- }));
58
- return;
59
- }
60
- });
61
- /**
62
- * Handle our blur event from our underlying menuitems. Will mostly be used
63
- * for closing our menu in response to a user clicking off or tabbing out of
64
- * the menu or menubar.
65
- */
66
- _defineProperty(this, "handleOnBlur", event => {
67
- // Close the menu on blur when the related target is not a sibling menu item
68
- // or a child in a submenu
69
- const siblingItemBlurredTo = this.items.find(element => element === event.relatedTarget);
70
- const childItemBlurredTo = this._subMenus.current?.contains(event.relatedTarget);
71
- if (!siblingItemBlurredTo && !childItemBlurredTo) {
72
- this.setState({
73
- expanded: false,
74
- selectedIndex: null
75
- });
76
- }
77
- });
78
- /**
79
- * ref handler for our menu button. If we are supplied a `focusRef` prop, we also
80
- * forward along the node.
81
- *
82
- * This is useful when this component is a child in a
83
- * menu or menubar as it will allow the parent to explicitly focus the menu
84
- * button node when that child should receive focus.
85
- */
86
- _defineProperty(this, "handleMenuButtonRef", node => {
87
- const {
88
- focusRef
89
- } = this.props;
90
- // Check if focusRef is a function before calling it
91
- if (typeof focusRef === 'function') {
92
- focusRef(node);
93
- }
94
- this.menuButtonRef = node;
95
- });
96
- /**
97
- * Handles individual menuitem refs. We assign them to a class instance
98
- * property so that we can properly manage focus of our children.
99
- */
100
- _defineProperty(this, "handleItemRef", index => node => {
101
- this.items[index] = node;
102
- });
103
- _defineProperty(this, "handleMenuClose", event => {
104
- // Handle ESC keydown for closing the expanded menu.
105
- if (matches(event, [Escape]) && this.state.expanded) {
106
- event.stopPropagation();
107
- event.preventDefault();
108
- this.setState(() => ({
109
- expanded: false,
110
- selectedIndex: null
111
- }));
45
+ /**
46
+ * Toggle the expanded state of the menu on click.
47
+ */
48
+ const handleOnClick = e => {
49
+ if (!subMenusRef.current || e.target instanceof Node && !subMenusRef.current.contains(e.target)) {
50
+ e.preventDefault();
51
+ }
52
+ setExpanded(prev => !prev);
53
+ };
112
54
 
113
- // Return focus to menu button when the user hits ESC.
114
- if (this.menuButtonRef !== null) {
115
- this.menuButtonRef.focus();
116
- }
117
- return;
118
- }
119
- });
120
- /**
121
- * We capture the `ref` for each child inside of `this.items` to properly
122
- * manage focus. In addition to this focus management, all items receive a
123
- * `tabIndex: -1` so the user won't hit a large number of items in their tab
124
- * sequence when they might not want to go through all the items.
125
- */
126
- _defineProperty(this, "_renderMenuItem", (item, index) => {
127
- if (/*#__PURE__*/React.isValidElement(item)) {
128
- return /*#__PURE__*/React.cloneElement(item, {
129
- ref: this.handleItemRef(index)
130
- });
55
+ /**
56
+ * Keyboard event handler for the entire menu.
57
+ */
58
+ const handleOnKeyDown = event => {
59
+ // Handle enter or space key for toggling the expanded state of the menu.
60
+ if (matches(event, [Enter, Space])) {
61
+ event.stopPropagation();
62
+ event.preventDefault();
63
+ setExpanded(prev => !prev);
64
+ return;
65
+ }
66
+ };
67
+
68
+ /**
69
+ * Handle our blur event from our underlying menuitems. Will mostly be used
70
+ * for closing our menu in response to a user clicking off or tabbing out of
71
+ * the menu or menubar.
72
+ */
73
+ const handleOnBlur = event => {
74
+ // Close the menu on blur when the related target is not a sibling menu item
75
+ // or a child in a submenu
76
+ const siblingItemBlurredTo = itemRefs.current.find(element => element === event.relatedTarget);
77
+ const childItemBlurredTo = subMenusRef.current?.contains(event.relatedTarget);
78
+ if (!siblingItemBlurredTo && !childItemBlurredTo) {
79
+ setExpanded(false);
80
+ }
81
+ };
82
+
83
+ /**
84
+ * Handles individual menuitem refs. We assign them to a class instance
85
+ * property so that we can properly manage focus of our children.
86
+ */
87
+ const handleItemRef = index => node => {
88
+ itemRefs.current[index] = node;
89
+ };
90
+ const handleMenuClose = event => {
91
+ // Handle ESC keydown for closing the expanded menu.
92
+ if (matches(event, [Escape]) && expanded) {
93
+ event.stopPropagation();
94
+ event.preventDefault();
95
+ setExpanded(false);
96
+
97
+ // Return focus to menu button when the user hits ESC.
98
+ if (menuButtonRef.current) {
99
+ menuButtonRef.current.focus();
131
100
  }
132
- });
133
- this.state = {
134
- // Used to manage the expansion state of the menu
135
- expanded: false,
136
- // Refers to the menuitem that is currently focused
137
- // Note: children should have `role="menuitem"` on node consuming ref
138
- selectedIndex: null
139
- };
140
- this.items = [];
141
- }
142
- render() {
143
- const prefix = this.context;
101
+ }
102
+ };
103
+ const hasActiveDescendant = childrenArg => Children.toArray(childrenArg).some(child => {
104
+ if (! /*#__PURE__*/isValidElement(child)) {
105
+ return false;
106
+ }
144
107
  const {
145
108
  isActive,
146
109
  isCurrentPage,
147
- 'aria-label': ariaLabel,
148
- 'aria-labelledby': ariaLabelledBy,
149
- className: customClassName,
150
- children,
151
- renderMenuContent: MenuContent,
152
- menuLinkName,
153
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
154
- focusRef,
155
- onBlur,
156
- onClick,
157
- onKeyDown,
158
- ...rest
159
- } = this.props;
160
- const hasActiveDescendant = childrenArg => React.Children.toArray(childrenArg).some(child => {
161
- if (! /*#__PURE__*/React.isValidElement(child)) {
162
- return false;
163
- }
110
+ children
111
+ } = child.props;
112
+ return isActive || isCurrentPage || Array.isArray(children) && hasActiveDescendant(children);
113
+ });
164
114
 
165
- // Explicitly type the element to access props safely
166
- const element = child;
167
- return element.props.isActive || element.props.isCurrentPage || Array.isArray(element.props.children) && hasActiveDescendant(element.props.children);
168
- });
169
- const accessibilityLabel = {
170
- 'aria-label': ariaLabel,
171
- 'aria-labelledby': ariaLabelledBy
172
- };
173
- const itemClassName = cx({
174
- [`${prefix}--header__submenu`]: true,
175
- [`${customClassName}`]: !!customClassName
176
- });
177
- const isActivePage = isActive ? isActive : isCurrentPage;
178
- const linkClassName = cx({
179
- [`${prefix}--header__menu-item`]: true,
180
- [`${prefix}--header__menu-title`]: true,
181
- // We set the current class only if `isActive` is passed in and we do
182
- // not have an `aria-current="page"` set for the breadcrumb item
183
- [`${prefix}--header__menu-item--current`]: isActivePage || hasActiveDescendant(children) && !this.state.expanded
184
- });
115
+ /**
116
+ * We capture the `ref` for each child inside of `this.items` to properly
117
+ * manage focus. In addition to this focus management, all items receive a
118
+ * `tabIndex: -1` so the user won't hit a large number of items in their tab
119
+ * sequence when they might not want to go through all the items.
120
+ */
121
+ const renderMenuItem = (item, index) => {
122
+ if (/*#__PURE__*/isValidElement(item)) {
123
+ return /*#__PURE__*/cloneElement(item, {
124
+ ref: handleItemRef(index)
125
+ });
126
+ }
127
+ return item;
128
+ };
129
+ const accessibilityLabel = {
130
+ 'aria-label': ariaLabel,
131
+ 'aria-labelledby': ariaLabelledBy
132
+ };
133
+ const itemClassName = cx({
134
+ [`${prefix}--header__submenu`]: true,
135
+ [`${customClassName}`]: !!customClassName
136
+ });
137
+ const isActivePage = isActive ? isActive : isCurrentPage;
138
+ const linkClassName = cx({
139
+ [`${prefix}--header__menu-item`]: true,
140
+ [`${prefix}--header__menu-title`]: true,
141
+ // We set the current class only if `isActive` is passed in and we do
142
+ // not have an `aria-current="page"` set for the breadcrumb item
143
+ [`${prefix}--header__menu-item--current`]: isActivePage || hasActiveDescendant(children) && !expanded
144
+ });
185
145
 
186
- // Notes on eslint comments and based on the examples in:
187
- // https://www.w3.org/TR/wai-aria-practices/examples/menubar/menubar-1/menubar-1.html#
188
- // - The focus is handled by the <a> menuitem, onMouseOver is for mouse
189
- // users
190
- // - aria-haspopup can definitely have the value "menu"
191
- // - aria-expanded is on their example node with role="menuitem"
192
- // - href can be set to javascript:void(0), ideally this will be a button
193
- return /*#__PURE__*/React.createElement("li", _extends({}, rest, {
194
- className: itemClassName,
195
- onKeyDown: composeEventHandlers([onKeyDown, this.handleMenuClose]),
196
- onClick: composeEventHandlers([onClick, this.handleOnClick]),
197
- onBlur: composeEventHandlers([onBlur, this.handleOnBlur])
198
- }), /*#__PURE__*/React.createElement("a", _extends({
199
- // eslint-disable-line jsx-a11y/role-supports-aria-props,jsx-a11y/anchor-is-valid
200
- "aria-haspopup": "menu" // eslint-disable-line jsx-a11y/aria-proptypes
201
- ,
202
- "aria-expanded": this.state.expanded,
203
- className: linkClassName,
204
- href: "#",
205
- onKeyDown: this.handleOnKeyDown,
206
- ref: this.handleMenuButtonRef,
207
- tabIndex: 0
208
- }, accessibilityLabel), menuLinkName, MenuContent ? /*#__PURE__*/React.createElement(MenuContent, null) : /*#__PURE__*/React.createElement(ChevronDown, {
209
- className: `${this.context}--header__menu-arrow`
210
- })), /*#__PURE__*/React.createElement("ul", _extends({}, accessibilityLabel, {
211
- ref: this._subMenus,
212
- onClick: this.handleOnClick,
213
- className: `${prefix}--header__menu`
214
- }), React.Children.map(children, this._renderMenuItem)));
215
- }
216
- }
217
- _defineProperty(HeaderMenu, "propTypes", {
146
+ // Notes on eslint comments and based on the examples in:
147
+ // https://www.w3.org/TR/wai-aria-practices/examples/menubar/menubar-1/menubar-1.html#
148
+ // - The focus is handled by the <a> menuitem, onMouseOver is for mouse
149
+ // users
150
+ // - aria-haspopup can definitely have the value "menu"
151
+ // - aria-expanded is on their example node with role="menuitem"
152
+ // - href can be set to javascript:void(0), ideally this will be a button
153
+ return /*#__PURE__*/React.createElement("li", _extends({}, rest, {
154
+ className: itemClassName,
155
+ onKeyDown: composeEventHandlers([onKeyDown, handleMenuClose]),
156
+ onClick: composeEventHandlers([onClick, handleOnClick]),
157
+ onBlur: composeEventHandlers([onBlur, handleOnBlur]),
158
+ ref: ref
159
+ }), /*#__PURE__*/React.createElement("a", _extends({
160
+ // eslint-disable-line jsx-a11y/role-supports-aria-props,jsx-a11y/anchor-is-valid
161
+ "aria-haspopup": "menu" // eslint-disable-line jsx-a11y/aria-proptypes
162
+ ,
163
+ "aria-expanded": expanded,
164
+ className: linkClassName,
165
+ href: "#",
166
+ onKeyDown: handleOnKeyDown,
167
+ ref: mergedButtonRef,
168
+ tabIndex: 0
169
+ }, accessibilityLabel), menuLinkName, MenuContent ? /*#__PURE__*/React.createElement(MenuContent, null) : /*#__PURE__*/React.createElement(ChevronDown, {
170
+ className: `${prefix}--header__menu-arrow`
171
+ })), /*#__PURE__*/React.createElement("ul", _extends({}, accessibilityLabel, {
172
+ ref: subMenusRef,
173
+ className: `${prefix}--header__menu`
174
+ }), Children.map(children, renderMenuItem)));
175
+ });
176
+ HeaderMenu.displayName = 'HeaderMenu';
177
+ HeaderMenu.propTypes = {
218
178
  /**
219
179
  * Required props for the accessibility label of the menu
220
180
  */
@@ -263,13 +223,6 @@ _defineProperty(HeaderMenu, "propTypes", {
263
223
  * Optionally provide a tabIndex for the underlying menu button
264
224
  */
265
225
  tabIndex: PropTypes.number
266
- });
267
- _defineProperty(HeaderMenu, "contextType", PrefixContext);
268
- const HeaderMenuForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => {
269
- return /*#__PURE__*/React.createElement(HeaderMenu, _extends({}, props, {
270
- focusRef: ref
271
- }));
272
- });
273
- HeaderMenuForwardRef.displayName = 'HeaderMenu';
226
+ };
274
227
 
275
- export { HeaderMenu, HeaderMenuForwardRef as default };
228
+ export { HeaderMenu, HeaderMenu as default };
@@ -14,17 +14,16 @@ import { AriaLabelPropType } from '../../prop-types/AriaPropTypes.js';
14
14
  import { usePrefix } from '../../internal/usePrefix.js';
15
15
 
16
16
  var _Menu, _Close;
17
- function HeaderMenuButton(_ref) {
18
- let {
19
- 'aria-label': ariaLabel,
20
- 'aria-labelledby': ariaLabelledBy,
21
- className: customClassName,
22
- renderMenuIcon,
23
- renderCloseIcon,
24
- isActive,
25
- isCollapsible,
26
- ...rest
27
- } = _ref;
17
+ function HeaderMenuButton({
18
+ 'aria-label': ariaLabel,
19
+ 'aria-labelledby': ariaLabelledBy,
20
+ className: customClassName,
21
+ renderMenuIcon,
22
+ renderCloseIcon,
23
+ isActive,
24
+ isCollapsible,
25
+ ...rest
26
+ }) {
28
27
  const prefix = usePrefix();
29
28
  const className = cx({
30
29
  ...(typeof customClassName === 'string' && {
@@ -13,17 +13,16 @@ import Link, { LinkPropTypes } from './Link.js';
13
13
  import { usePrefix } from '../../internal/usePrefix.js';
14
14
  import deprecate from '../../prop-types/deprecate.js';
15
15
 
16
- const HeaderMenuItem = /*#__PURE__*/forwardRef(function HeaderMenuItem(_ref, ref) {
17
- let {
18
- className,
19
- isActive,
20
- isCurrentPage,
21
- 'aria-current': ariaCurrent,
22
- children,
23
- role,
24
- tabIndex,
25
- ...rest
26
- } = _ref;
16
+ const HeaderMenuItem = /*#__PURE__*/forwardRef(function HeaderMenuItem({
17
+ className,
18
+ isActive,
19
+ isCurrentPage,
20
+ 'aria-current': ariaCurrent,
21
+ children,
22
+ role,
23
+ tabIndex,
24
+ ...rest
25
+ }, ref) {
27
26
  const prefix = usePrefix();
28
27
  if (isCurrentPage) {
29
28
  isActive = isCurrentPage;
@@ -12,13 +12,12 @@ import PropTypes from 'prop-types';
12
12
  import Link, { LinkPropTypes } from './Link.js';
13
13
  import { usePrefix } from '../../internal/usePrefix.js';
14
14
 
15
- function HeaderName(_ref) {
16
- let {
17
- children,
18
- className: customClassName,
19
- prefix = 'IBM',
20
- ...rest
21
- } = _ref;
15
+ function HeaderName({
16
+ children,
17
+ className: customClassName,
18
+ prefix = 'IBM',
19
+ ...rest
20
+ }) {
22
21
  const selectorPrefix = usePrefix();
23
22
  const className = cx(`${selectorPrefix}--header__name`, customClassName);
24
23
  return /*#__PURE__*/React.createElement(Link, _extends({}, rest, {
@@ -12,14 +12,13 @@ import PropTypes from 'prop-types';
12
12
  import { AriaLabelPropType } from '../../prop-types/AriaPropTypes.js';
13
13
  import { usePrefix } from '../../internal/usePrefix.js';
14
14
 
15
- function HeaderNavigation(_ref) {
16
- let {
17
- 'aria-label': ariaLabel,
18
- 'aria-labelledby': ariaLabelledBy,
19
- children,
20
- className: customClassName,
21
- ...rest
22
- } = _ref;
15
+ function HeaderNavigation({
16
+ 'aria-label': ariaLabel,
17
+ 'aria-labelledby': ariaLabelledBy,
18
+ children,
19
+ className: customClassName,
20
+ ...rest
21
+ }) {
23
22
  const prefix = usePrefix();
24
23
  const className = cx(`${prefix}--header__nav`, customClassName);
25
24
  return /*#__PURE__*/React.createElement("nav", _extends({}, rest, {
@@ -16,16 +16,15 @@ import { useWindowEvent } from '../../internal/useEvent.js';
16
16
  import { useMergedRefs } from '../../internal/useMergedRefs.js';
17
17
 
18
18
  const noopFn = () => {};
19
- const HeaderPanel = /*#__PURE__*/React.forwardRef(function HeaderPanel(_ref, ref) {
20
- let {
21
- children,
22
- className: customClassName,
23
- expanded,
24
- addFocusListeners = true,
25
- onHeaderPanelFocus = noopFn,
26
- href,
27
- ...rest
28
- } = _ref;
19
+ const HeaderPanel = /*#__PURE__*/React.forwardRef(function HeaderPanel({
20
+ children,
21
+ className: customClassName,
22
+ expanded,
23
+ addFocusListeners = true,
24
+ onHeaderPanelFocus = noopFn,
25
+ href,
26
+ ...rest
27
+ }, ref) {
29
28
  const prefix = usePrefix();
30
29
  const headerPanelReference = useRef(null);
31
30
  const headerPanelRef = useMergedRefs([headerPanelReference, ref]);
@@ -10,12 +10,11 @@ import React from 'react';
10
10
  import PropTypes from 'prop-types';
11
11
  import { usePrefix } from '../../internal/usePrefix.js';
12
12
 
13
- function HeaderSideNavItems(_ref) {
14
- let {
15
- className: customClassName,
16
- children,
17
- hasDivider = false
18
- } = _ref;
13
+ function HeaderSideNavItems({
14
+ className: customClassName,
15
+ children,
16
+ hasDivider = false
17
+ }) {
19
18
  const prefix = usePrefix();
20
19
  const className = cx({
21
20
  [`${prefix}--side-nav__header-navigation`]: true,
@@ -12,15 +12,14 @@ import deprecate from '../../prop-types/deprecate.js';
12
12
 
13
13
  // First define the component without generics
14
14
 
15
- const LinkBase = (_ref, ref) => {
16
- let {
17
- element,
18
- as: BaseComponent,
19
- // Captured here to prevent it from being passed into the created element.
20
- // See https://github.com/carbon-design-system/carbon/issues/3970
21
- isSideNavExpanded: _isSideNavExpanded,
22
- ...rest
23
- } = _ref;
15
+ const LinkBase = ({
16
+ element,
17
+ as: BaseComponent,
18
+ // Captured here to prevent it from being passed into the created element.
19
+ // See https://github.com/carbon-design-system/carbon/issues/3970
20
+ isSideNavExpanded: _isSideNavExpanded,
21
+ ...rest
22
+ }, ref) => {
24
23
  const BaseComponentAsAny = BaseComponent ?? element ?? 'a';
25
24
  return /*#__PURE__*/React.createElement(BaseComponentAsAny, _extends({
26
25
  ref: ref
@@ -24,29 +24,28 @@ import { useMatchMedia } from '../../internal/useMatchMedia.js';
24
24
  // import SideNavFooter from './SideNavFooter';
25
25
 
26
26
  const SideNavContext = /*#__PURE__*/createContext({});
27
- function SideNavRenderFunction(_ref, ref) {
28
- let {
29
- expanded: expandedProp,
30
- defaultExpanded = false,
31
- isChildOfHeader = true,
32
- 'aria-label': ariaLabel,
33
- 'aria-labelledby': ariaLabelledBy,
34
- children,
35
- onToggle,
36
- className: customClassName,
37
- // TO-DO: comment back in when footer is added for rails
38
- // translateById: t = (id) => translations[id],
39
- href,
40
- isFixedNav = false,
41
- isRail,
42
- isPersistent = true,
43
- addFocusListeners = true,
44
- addMouseListeners = true,
45
- onOverlayClick,
46
- onSideNavBlur,
47
- enterDelayMs = 100,
48
- ...other
49
- } = _ref;
27
+ function SideNavRenderFunction({
28
+ expanded: expandedProp,
29
+ defaultExpanded = false,
30
+ isChildOfHeader = true,
31
+ 'aria-label': ariaLabel,
32
+ 'aria-labelledby': ariaLabelledBy,
33
+ children,
34
+ onToggle,
35
+ className: customClassName,
36
+ // TO-DO: comment back in when footer is added for rails
37
+ // translateById: t = (id) => translations[id],
38
+ href,
39
+ isFixedNav = false,
40
+ isRail,
41
+ isPersistent = true,
42
+ addFocusListeners = true,
43
+ addMouseListeners = true,
44
+ onOverlayClick,
45
+ onSideNavBlur,
46
+ enterDelayMs = 100,
47
+ ...other
48
+ }, ref) {
50
49
  const prefix = usePrefix();
51
50
  const {
52
51
  current: controlled
@@ -56,8 +55,7 @@ function SideNavRenderFunction(_ref, ref) {
56
55
  const expanded = controlled ? expandedProp : expandedState;
57
56
  const sideNavRef = useRef(null);
58
57
  const navRef = useMergedRefs([sideNavRef, ref]);
59
- const handleToggle = function (event) {
60
- let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !expanded;
58
+ const handleToggle = (event, value = !expanded) => {
61
59
  if (!controlled) {
62
60
  setExpandedState(value, enterDelayMs);
63
61
  }
@@ -11,13 +11,12 @@ import PropTypes from 'prop-types';
11
11
  import React from 'react';
12
12
  import { usePrefix } from '../../internal/usePrefix.js';
13
13
 
14
- const SideNavDetails = _ref => {
15
- let {
16
- children,
17
- className: customClassName,
18
- title,
19
- ...rest
20
- } = _ref;
14
+ const SideNavDetails = ({
15
+ children,
16
+ className: customClassName,
17
+ title,
18
+ ...rest
19
+ }) => {
21
20
  const prefix = usePrefix();
22
21
  const className = cx(`${prefix}--side-nav__details`, customClassName);
23
22
  return /*#__PURE__*/React.createElement("div", _extends({
@@ -11,10 +11,9 @@ import React from 'react';
11
11
  import { usePrefix } from '../../internal/usePrefix.js';
12
12
 
13
13
  var _hr;
14
- const SideNavDivider = _ref => {
15
- let {
16
- className
17
- } = _ref;
14
+ const SideNavDivider = ({
15
+ className
16
+ }) => {
18
17
  const prefix = usePrefix();
19
18
  const classNames = cx(`${prefix}--side-nav__divider`, className);
20
19
  return /*#__PURE__*/React.createElement("li", {