@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
@@ -9,7 +9,7 @@ import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js
9
9
  import { Subtract, Add } from '@carbon/icons-react';
10
10
  import cx from 'classnames';
11
11
  import PropTypes from 'prop-types';
12
- import React, { useContext, useState, useRef, useEffect } from 'react';
12
+ import React, { useContext, useState, useMemo, useCallback, useRef, useEffect } from 'react';
13
13
  import { useMergedRefs } from '../../internal/useMergedRefs.js';
14
14
  import { useNormalizedInputProps } from '../../internal/useNormalizedInputProps.js';
15
15
  import { usePrefix } from '../../internal/usePrefix.js';
@@ -18,6 +18,11 @@ import '../FluidForm/FluidForm.js';
18
18
  import { FormContext } from '../FluidForm/FormContext.js';
19
19
  import '../Text/index.js';
20
20
  import { clamp } from '../../internal/clamp.js';
21
+ import { useControllableState } from '../../internal/useControllableState.js';
22
+ import { NumberParser, NumberFormatter } from '@carbon/utilities';
23
+ import { ArrowUp, ArrowDown } from '../../internal/keyboard/keys.js';
24
+ import { match } from '../../internal/keyboard/match.js';
25
+ import { NumberFormatOptionsPropType } from './NumberFormatPropTypes.js';
21
26
  import { Text } from '../Text/Text.js';
22
27
 
23
28
  var _Subtract, _Add;
@@ -42,25 +47,30 @@ const NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(props, fo
42
47
  disabled = false,
43
48
  disableWheel: disableWheelProp = false,
44
49
  defaultValue = 0,
50
+ formatOptions,
45
51
  helperText = '',
46
52
  hideLabel = false,
47
53
  hideSteppers,
48
54
  iconDescription,
49
55
  id,
50
- label,
56
+ inputMode,
51
57
  invalid = false,
52
58
  invalidText,
59
+ label,
53
60
  light,
61
+ locale = 'en-US',
54
62
  max,
55
63
  min,
56
64
  onChange,
57
65
  onClick,
58
66
  onKeyUp,
67
+ pattern = '[0-9]*',
59
68
  readOnly,
60
69
  size = 'md',
61
70
  slug,
62
71
  step = 1,
63
72
  translateWithId: t = id => defaultTranslations[id],
73
+ type = 'number',
64
74
  warn = false,
65
75
  warnText = '',
66
76
  value: controlledValue,
@@ -71,6 +81,10 @@ const NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(props, fo
71
81
  isFluid
72
82
  } = useContext(FormContext);
73
83
  const [isFocused, setIsFocused] = useState(false);
84
+
85
+ /**
86
+ * The input value, only used when type=number
87
+ */
74
88
  const [value, setValue] = useState(() => {
75
89
  if (controlledValue !== undefined) {
76
90
  return controlledValue;
@@ -84,6 +98,30 @@ const NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(props, fo
84
98
  return 0;
85
99
  });
86
100
  const [prevControlledValue, setPrevControlledValue] = useState(controlledValue);
101
+ const numberParser = useMemo(() => new NumberParser(locale, formatOptions), [locale, formatOptions]);
102
+ /**
103
+ * The currently parsed number value.
104
+ * Only used when type=text
105
+ * Updated based on the `value` as the user types.
106
+ */
107
+ const [numberValue, setNumberValue, isControlled] = useControllableState({
108
+ name: 'NumberInput',
109
+ defaultValue: typeof defaultValue === 'string' ? numberParser.parse(defaultValue) : defaultValue,
110
+ value: typeof controlledValue === 'string' ? numberParser.parse(controlledValue) : controlledValue
111
+ });
112
+
113
+ /**
114
+ * The current text value of the input.
115
+ * Only used when type=text
116
+ * Updated as the user types and formatted on blur.
117
+ */
118
+ const [inputValue, setInputValue] = React.useState(() => isNaN(numberValue) ? '' : new NumberFormatter(locale, formatOptions).format(numberValue));
119
+ const numberingSystem = useMemo(() => numberParser.getNumberingSystem(inputValue), [numberParser, inputValue]);
120
+ const numberFormatter = useMemo(() => new NumberFormatter(locale, {
121
+ ...formatOptions,
122
+ numberingSystem
123
+ }), [locale, formatOptions, numberingSystem]);
124
+ const format = useCallback(value => isNaN(value) || value === null ? '' : numberFormatter.format(value), [numberFormatter]);
87
125
  const inputRef = useRef(null);
88
126
  const ref = useMergedRefs([forwardRef, inputRef]);
89
127
  const numberInputClasses = cx({
@@ -98,7 +136,7 @@ const NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(props, fo
98
136
  const isInputValid = getInputValidity({
99
137
  allowEmpty,
100
138
  invalid,
101
- value,
139
+ value: type === 'number' ? value : numberValue,
102
140
  max,
103
141
  min
104
142
  });
@@ -140,13 +178,24 @@ const NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(props, fo
140
178
  if (disabled) {
141
179
  return;
142
180
  }
143
- const state = {
144
- value: allowEmpty && event.target.value === '' ? '' : Number(event.target.value),
145
- direction: value < event.target.value ? 'up' : 'down'
146
- };
147
- setValue(state.value);
148
- if (onChange) {
149
- onChange(event, state);
181
+ if (type === 'number') {
182
+ const state = {
183
+ value: allowEmpty && event.target.value === '' ? '' : Number(event.target.value),
184
+ direction: value < event.target.value ? 'up' : 'down'
185
+ };
186
+ setValue(state.value);
187
+ if (onChange) {
188
+ onChange(event, state);
189
+ }
190
+ return;
191
+ }
192
+ if (type === 'text') {
193
+ const _value = allowEmpty && event.target.value === '' ? '' : event.target.value;
194
+ setNumberValue(numberParser.parse(_value));
195
+ setInputValue(_value);
196
+ // The onChange prop isn't called here because it will be called on blur
197
+ // or on click of a stepper, after the number is parsed and formatted
198
+ // according to the locale.
150
199
  }
151
200
  }
152
201
  const handleFocus = evt => {
@@ -168,21 +217,44 @@ const NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(props, fo
168
217
  const parts = num.toString().split('.');
169
218
  return parts[1] ? parts[1].length : 0;
170
219
  };
171
- const handleStepperClick = (event, direction) => {
220
+ const handleStep = (event, direction) => {
172
221
  if (inputRef.current) {
173
- const currentValue = Number(inputRef.current.value);
222
+ const currentValue = type === 'number' ? Number(inputRef.current.value) : numberParser.parse(inputRef.current.value);
174
223
  const rawValue = direction === 'up' ? currentValue + step : currentValue - step;
175
224
  const precision = Math.max(getDecimalPlaces(currentValue), getDecimalPlaces(step));
176
225
  const floatValue = parseFloat(rawValue.toFixed(precision));
177
226
  const newValue = clamp(floatValue, min ?? -Infinity, max ?? Infinity);
178
- const state = {
179
- value: allowEmpty && inputRef.current.value === '' && step === 0 ? '' : newValue,
180
- direction
181
- };
182
- setValue(state.value);
227
+ let state;
228
+ if (type === 'number') {
229
+ state = {
230
+ value: allowEmpty && inputRef.current.value === '' && step === 0 ? '' : newValue,
231
+ direction
232
+ };
233
+ setValue(state.value);
234
+ }
235
+ if (type === 'text') {
236
+ const formattedNewValue = format(newValue);
237
+ state = {
238
+ value: allowEmpty && inputRef.current.value === '' && step === 0 ? '' : formattedNewValue,
239
+ direction
240
+ };
241
+
242
+ // newValue does not need to be parsed because it is derived from
243
+ // currentValue, which is parsed at the beginning of this function
244
+ setNumberValue(newValue);
245
+ setInputValue(formattedNewValue);
246
+ }
183
247
  if (onChange) {
184
248
  onChange(event, state);
185
249
  }
250
+ return state;
251
+ }
252
+ };
253
+ const handleStepperClick = (event, direction) => {
254
+ if (inputRef.current) {
255
+ const {
256
+ state
257
+ } = handleStep(event, direction);
186
258
  if (onClick) {
187
259
  onClick(event, state);
188
260
  }
@@ -234,6 +306,15 @@ const NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(props, fo
234
306
  onClick: onClick,
235
307
  onChange: handleOnChange,
236
308
  onKeyUp: onKeyUp,
309
+ onKeyDown: e => {
310
+ if (type === 'text') {
311
+ match(e, ArrowUp) && handleStep(e, 'up');
312
+ match(e, ArrowDown) && handleStep(e, 'down');
313
+ }
314
+ if (rest?.onKeyDown) {
315
+ rest?.onKeyDown(e);
316
+ }
317
+ },
237
318
  onFocus: e => {
238
319
  if (disableWheelProp) {
239
320
  e.target.addEventListener('wheel', disableWheel);
@@ -246,15 +327,32 @@ const NumberInput = /*#__PURE__*/React.forwardRef(function NumberInput(props, fo
246
327
  if (disableWheelProp) {
247
328
  e.target.removeEventListener('wheel', disableWheel);
248
329
  }
330
+ if (type === 'text') {
331
+ // When isControlled, the current inputValue needs re-parsed
332
+ // because the consumer's onChange hasn't been called yet and
333
+ // the `numberValue` we have in state is the (stale) value
334
+ // they've passed in.
335
+ const _numberValue = isControlled ? numberParser.parse(inputValue) : numberValue;
336
+ const formattedValue = isNaN(_numberValue) ? '' : format(_numberValue);
337
+ setInputValue(formattedValue);
338
+ if (onChange) {
339
+ const state = {
340
+ value: formattedValue,
341
+ direction: value < e.target.value ? 'up' : 'down'
342
+ };
343
+ onChange(e, state);
344
+ }
345
+ }
249
346
  if (rest.onBlur) {
250
347
  rest.onBlur(e);
251
348
  }
252
349
  },
253
- pattern: "[0-9]*",
350
+ pattern: pattern,
351
+ inputMode: inputMode,
254
352
  readOnly: readOnly,
255
353
  step: step,
256
- type: "number",
257
- value: value
354
+ type: type,
355
+ value: type === 'number' ? value : inputValue
258
356
  })), slug ? normalizedDecorator : decorator ? /*#__PURE__*/React.createElement("div", {
259
357
  className: `${prefix}--number__input-inner-wrapper--decorator`
260
358
  }, normalizedDecorator) : '', Icon ? /*#__PURE__*/React.createElement(Icon, {
@@ -311,13 +409,20 @@ NumberInput.propTypes = {
311
409
  */
312
410
  defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
313
411
  /**
314
- * Specify if the wheel functionality for the input should be disabled, or not
412
+ * Specify if the wheel functionality for the input should be disabled, or no t
315
413
  */
316
414
  disableWheel: PropTypes.bool,
317
415
  /**
318
416
  * Specify if the control should be disabled, or not
319
417
  */
320
418
  disabled: PropTypes.bool,
419
+ /**
420
+ * **Experimental:** Specify Intl.NumberFormat options applied to internal
421
+ * number parsing and formatting. Use with `type="text"`, has no effect when
422
+ * `type="number"`.
423
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options
424
+ */
425
+ formatOptions: NumberFormatOptionsPropType,
321
426
  /**
322
427
  * Provide text that is used alongside the control label for additional help
323
428
  */
@@ -338,6 +443,12 @@ NumberInput.propTypes = {
338
443
  * Specify a custom `id` for the input
339
444
  */
340
445
  id: PropTypes.string.isRequired,
446
+ /**
447
+ * Instruct the browser which keyboard to display on mobile devices. Note that
448
+ * standard numeric keyboards vary across devices and operating systems.
449
+ * @see https://css-tricks.com/everything-you-ever-wanted-to-know-about-inputmode/
450
+ */
451
+ inputMode: PropTypes.oneOf(['none', 'text', 'tel', 'url', 'email', 'numeric', 'decimal', 'search']),
341
452
  /**
342
453
  * Specify if the currently value is invalid.
343
454
  */
@@ -355,6 +466,12 @@ NumberInput.propTypes = {
355
466
  * `true` to use the light version.
356
467
  */
357
468
  light: deprecate(PropTypes.bool, 'The `light` prop for `NumberInput` is no longer needed and has ' + 'been deprecated in v11 in favor of the new `Layer` component. It will be moved in the next major release.'),
469
+ /**
470
+ * **Experimental:** Specify a [BCP47](https://www.ietf.org/rfc/bcp/bcp47.txt)
471
+ * language code for parsing and formatting. Use with `type="text"`, has no
472
+ * effect when `type="number"`.
473
+ */
474
+ locale: PropTypes.string,
358
475
  /**
359
476
  * The maximum value.
360
477
  */
@@ -366,6 +483,9 @@ NumberInput.propTypes = {
366
483
  /**
367
484
  * Provide an optional handler that is called when the internal state of
368
485
  * NumberInput changes. This handler is called with event and state info.
486
+ * When type="number", this is called on every change of the input.
487
+ * When type="text", this is only called on blur after the number has been
488
+ * parsed and formatted.
369
489
  * `(event, { value, direction }) => void`
370
490
  */
371
491
  onChange: PropTypes.func,
@@ -377,6 +497,11 @@ NumberInput.propTypes = {
377
497
  * Provide an optional function to be called when a key is pressed in the number input
378
498
  */
379
499
  onKeyUp: PropTypes.func,
500
+ /**
501
+ * When type="text", provide an optional pattern to restrict user input. Has
502
+ * no effect when type="number".
503
+ */
504
+ pattern: PropTypes.string,
380
505
  /**
381
506
  * Specify if the component should be read-only
382
507
  */
@@ -386,17 +511,25 @@ NumberInput.propTypes = {
386
511
  */
387
512
  size: PropTypes.oneOf(['sm', 'md', 'lg']),
388
513
  /**
389
- * **Experimental**: Provide a `Slug` component to be rendered inside the `NumberInput` component
514
+ * **Experimental**: Provide a `Slug` component to be rendered inside the
515
+ * `NumberInput` component
390
516
  */
391
517
  slug: deprecate(PropTypes.node, 'The `slug` prop for `NumberInput` is no longer needed and has ' + 'been deprecated in v11 in favor of the new `decorator` prop. It will be moved in the next major release.'),
392
518
  /**
393
- * Specify how much the values should increase/decrease upon clicking on up/down button
519
+ * Specify how much the values should increase/decrease upon clicking on
520
+ * up/down button
394
521
  */
395
522
  step: PropTypes.number,
396
523
  /**
397
524
  * Provide custom text for the component for each translation id
398
525
  */
399
526
  translateWithId: PropTypes.func,
527
+ /**
528
+ * **Experimental**: Specify if the input should be of type text or number.
529
+ * Use type="text" with `locale`, `formatOptions`, and guide user input with
530
+ * `pattern` and `inputMode`.
531
+ */
532
+ type: PropTypes.oneOf(['number', 'text']),
400
533
  /**
401
534
  * Specify the value of the input
402
535
  */
@@ -410,13 +543,12 @@ NumberInput.propTypes = {
410
543
  */
411
544
  warnText: PropTypes.node
412
545
  };
413
- const Label = _ref => {
414
- let {
415
- disabled,
416
- id,
417
- hideLabel,
418
- label
419
- } = _ref;
546
+ const Label = ({
547
+ disabled,
548
+ id,
549
+ hideLabel,
550
+ label
551
+ }) => {
420
552
  const prefix = usePrefix();
421
553
  const className = cx({
422
554
  [`${prefix}--label`]: true,
@@ -438,12 +570,11 @@ Label.propTypes = {
438
570
  id: PropTypes.string,
439
571
  label: PropTypes.node
440
572
  };
441
- function HelperText(_ref2) {
442
- let {
443
- disabled,
444
- description,
445
- id
446
- } = _ref2;
573
+ function HelperText({
574
+ disabled,
575
+ description,
576
+ id
577
+ }) {
447
578
  const prefix = usePrefix();
448
579
  const className = cx(`${prefix}--form__helper-text`, {
449
580
  [`${prefix}--form__helper-text--disabled`]: disabled
@@ -476,14 +607,13 @@ HelperText.propTypes = {
476
607
  * @param {number} config.min
477
608
  * @returns {boolean}
478
609
  */
479
- function getInputValidity(_ref3) {
480
- let {
481
- allowEmpty,
482
- invalid,
483
- value,
484
- max,
485
- min
486
- } = _ref3;
610
+ function getInputValidity({
611
+ allowEmpty,
612
+ invalid,
613
+ value,
614
+ max,
615
+ min
616
+ }) {
487
617
  if (invalid) {
488
618
  return false;
489
619
  }
@@ -11,14 +11,13 @@ import React from 'react';
11
11
  import cx from 'classnames';
12
12
  import { usePrefix } from '../../internal/usePrefix.js';
13
13
 
14
- function OrderedList(_ref) {
15
- let {
16
- className,
17
- nested = false,
18
- native = false,
19
- isExpressive = false,
20
- ...other
21
- } = _ref;
14
+ function OrderedList({
15
+ className,
16
+ nested = false,
17
+ native = false,
18
+ isExpressive = false,
19
+ ...other
20
+ }) {
22
21
  const prefix = usePrefix();
23
22
  const classNames = cx({
24
23
  [`${prefix}--list--ordered`]: !native,
@@ -106,7 +106,7 @@ export interface OverflowMenuProps {
106
106
  */
107
107
  selectorPrimaryFocus?: string;
108
108
  /**
109
- * Specify the size of the OverflowMenu. Currently supports either `sm`, 'md' (default) or 'lg` as an option.
109
+ * Specify the size of the OverflowMenu. Currently supports either `sm`, `md` (default) or `lg` as an option.
110
110
  */
111
111
  size?: 'sm' | 'md' | 'lg';
112
112
  /**
@@ -25,10 +25,7 @@ import deprecateValuesWithin from '../../prop-types/deprecateValuesWithin.js';
25
25
  import { mapPopoverAlign } from '../../tools/mapPopoverAlign.js';
26
26
 
27
27
  const getInstanceId = setupGetInstanceId();
28
- const on = function (target) {
29
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
30
- args[_key - 1] = arguments[_key];
31
- }
28
+ const on = (target, ...args) => {
32
29
  target.addEventListener(...args);
33
30
  return {
34
31
  release() {
@@ -91,33 +88,32 @@ const getMenuOffset = (menuBody, direction, trigger, flip) => {
91
88
  };
92
89
  }
93
90
  };
94
- const OverflowMenu = /*#__PURE__*/forwardRef((_ref, ref) => {
95
- let {
96
- align,
97
- ['aria-label']: ariaLabel = null,
98
- ariaLabel: deprecatedAriaLabel,
99
- children,
100
- className,
101
- direction = DIRECTION_BOTTOM,
102
- flipped = false,
103
- focusTrap = true,
104
- iconClass,
105
- iconDescription = 'Options',
106
- id,
107
- light,
108
- menuOffset = getMenuOffset,
109
- menuOffsetFlip = getMenuOffset,
110
- menuOptionsClass,
111
- onClick = noopFn,
112
- onClose = noopFn,
113
- onOpen = noopFn,
114
- open: openProp,
115
- renderIcon: IconElement = OverflowMenuVertical,
116
- selectorPrimaryFocus = '[data-floating-menu-primary-focus]',
117
- size = 'md',
118
- innerRef,
119
- ...other
120
- } = _ref;
91
+ const OverflowMenu = /*#__PURE__*/forwardRef(({
92
+ align,
93
+ ['aria-label']: ariaLabel = null,
94
+ ariaLabel: deprecatedAriaLabel,
95
+ children,
96
+ className,
97
+ direction = DIRECTION_BOTTOM,
98
+ flipped = false,
99
+ focusTrap = true,
100
+ iconClass,
101
+ iconDescription = 'Options',
102
+ id,
103
+ light,
104
+ menuOffset = getMenuOffset,
105
+ menuOffsetFlip = getMenuOffset,
106
+ menuOptionsClass,
107
+ onClick = noopFn,
108
+ onClose = noopFn,
109
+ onOpen = noopFn,
110
+ open: openProp,
111
+ renderIcon: IconElement = OverflowMenuVertical,
112
+ selectorPrimaryFocus = '[data-floating-menu-primary-focus]',
113
+ size = 'md',
114
+ innerRef,
115
+ ...other
116
+ }, ref) => {
121
117
  const prefix = useContext(PrefixContext);
122
118
  const [open, setOpen] = useState(openProp ?? false);
123
119
  const [click, setClick] = useState(false);
@@ -147,18 +143,17 @@ const OverflowMenu = /*#__PURE__*/forwardRef((_ref, ref) => {
147
143
  setHasMountedTrigger(true);
148
144
  }
149
145
  }, []);
150
-
151
- // Call `onClose` when menu closes.
152
146
  useEffect(() => {
153
- if (!open && prevOpenState.current) {
147
+ if (open && !prevOpenState.current) {
148
+ onOpen();
149
+ } else if (!open && prevOpenState.current) {
154
150
  onClose();
155
151
  }
156
152
  prevOpenState.current = open;
157
- }, [open, onClose]);
158
- useOutsideClick(wrapperRef, _ref2 => {
159
- let {
160
- target
161
- } = _ref2;
153
+ }, [open, onClose, onOpen]);
154
+ useOutsideClick(wrapperRef, ({
155
+ target
156
+ }) => {
162
157
  if (open && (!menuBodyRef.current || target instanceof Node && !menuBodyRef.current.contains(target))) {
163
158
  closeMenu();
164
159
  }
@@ -218,11 +213,10 @@ const OverflowMenu = /*#__PURE__*/forwardRef((_ref, ref) => {
218
213
  * Focuses the next enabled overflow menu item given the currently focused
219
214
  * item index and direction to move.
220
215
  */
221
- const handleOverflowMenuItemFocus = _ref3 => {
222
- let {
223
- currentIndex = 0,
224
- direction
225
- } = _ref3;
216
+ const handleOverflowMenuItemFocus = ({
217
+ currentIndex = 0,
218
+ direction
219
+ }) => {
226
220
  const enabledIndices = Children.toArray(children).reduce((acc, curr, i) => {
227
221
  if (/*#__PURE__*/React.isValidElement(curr) && !curr.props.disabled) {
228
222
  acc.push(i);
@@ -265,7 +259,6 @@ const OverflowMenu = /*#__PURE__*/forwardRef((_ref, ref) => {
265
259
  }
266
260
  }
267
261
  }, !hasFocusin);
268
- onOpen();
269
262
  };
270
263
  const getTarget = () => {
271
264
  const triggerEl = triggerRef.current;
@@ -469,7 +462,7 @@ OverflowMenu.propTypes = {
469
462
  */
470
463
  selectorPrimaryFocus: PropTypes.string,
471
464
  /**
472
- * Specify the size of the OverflowMenu. Currently supports either `sm`, 'md' (default) or 'lg` as an option.
465
+ * Specify the size of the OverflowMenu. Currently supports either `sm`, `md` (default) or `lg` as an option.
473
466
  */
474
467
  size: PropTypes.oneOf(['sm', 'md', 'lg'])
475
468
  };
@@ -23,19 +23,18 @@ import deprecateValuesWithin from '../../../prop-types/deprecateValuesWithin.js'
23
23
  import { mapPopoverAlign } from '../../../tools/mapPopoverAlign.js';
24
24
 
25
25
  const defaultSize = 'md';
26
- const OverflowMenu = /*#__PURE__*/React.forwardRef(function OverflowMenu(_ref, forwardRef) {
27
- let {
28
- autoAlign = false,
29
- children,
30
- className,
31
- label = 'Options',
32
- renderIcon: IconElement = OverflowMenuVertical,
33
- size = defaultSize,
34
- menuAlignment = 'bottom-start',
35
- tooltipAlignment,
36
- menuTarget,
37
- ...rest
38
- } = _ref;
26
+ const OverflowMenu = /*#__PURE__*/React.forwardRef(function OverflowMenu({
27
+ autoAlign = false,
28
+ children,
29
+ className,
30
+ label = 'Options',
31
+ renderIcon: IconElement = OverflowMenuVertical,
32
+ size = defaultSize,
33
+ menuAlignment = 'bottom-start',
34
+ tooltipAlignment,
35
+ menuTarget,
36
+ ...rest
37
+ }, forwardRef) {
39
38
  const enableFloatingStyles = useFeatureFlag('enable-v12-dynamic-floating-styles') || autoAlign;
40
39
  const {
41
40
  refs,