@carbon/react 1.29.1 → 1.30.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 (580) hide show
  1. package/es/_virtual/_rollupPluginBabelHelpers.js +16 -5
  2. package/es/components/Accordion/Accordion.Skeleton.js +0 -7
  3. package/es/components/Accordion/Accordion.js +1 -8
  4. package/es/components/Accordion/AccordionItem.js +5 -19
  5. package/es/components/AspectRatio/AspectRatio.js +0 -5
  6. package/es/components/Breadcrumb/Breadcrumb.Skeleton.js +0 -3
  7. package/es/components/Breadcrumb/Breadcrumb.js +0 -3
  8. package/es/components/Breadcrumb/BreadcrumbItem.js +0 -7
  9. package/es/components/Button/Button.Skeleton.js +2 -7
  10. package/es/components/Button/Button.js +2 -36
  11. package/es/components/ButtonSet/ButtonSet.js +0 -2
  12. package/es/components/Checkbox/Checkbox.Skeleton.js +0 -1
  13. package/es/components/Checkbox/Checkbox.js +4 -20
  14. package/es/components/CheckboxGroup/CheckboxGroup.js +0 -11
  15. package/es/components/ClassPrefix/index.d.ts +26 -0
  16. package/es/components/ClassPrefix/index.js +0 -2
  17. package/es/components/CodeSnippet/CodeSnippet.Skeleton.js +0 -5
  18. package/es/components/CodeSnippet/CodeSnippet.js +6 -45
  19. package/es/components/ComboBox/ComboBox.js +12 -79
  20. package/es/components/ComboBox/tools/filter.js +0 -1
  21. package/es/components/ComboButton/index.js +0 -14
  22. package/es/components/ComposedModal/ComposedModal.js +2 -32
  23. package/es/components/ComposedModal/ModalFooter.js +0 -21
  24. package/es/components/ComposedModal/ModalHeader.js +0 -12
  25. package/es/components/ContainedList/ContainedList.js +5 -32
  26. package/es/components/ContainedList/ContainedListItem/ContainedListItem.js +0 -6
  27. package/es/components/ContentSwitcher/ContentSwitcher.js +11 -23
  28. package/es/components/ContextMenu/useContextMenu.js +1 -6
  29. package/es/components/Copy/Copy.js +8 -31
  30. package/es/components/CopyButton/CopyButton.js +0 -4
  31. package/es/components/DangerButton/DangerButton.js +0 -1
  32. package/es/components/DataTable/DataTable.js +171 -91
  33. package/es/components/DataTable/Table.js +0 -6
  34. package/es/components/DataTable/TableBatchAction.js +0 -4
  35. package/es/components/DataTable/TableBatchActions.js +0 -8
  36. package/es/components/DataTable/TableBody.js +0 -1
  37. package/es/components/DataTable/TableContainer.js +0 -5
  38. package/es/components/DataTable/TableExpandHeader.js +0 -7
  39. package/es/components/DataTable/TableExpandRow.js +0 -6
  40. package/es/components/DataTable/TableExpandedRow.js +0 -6
  41. package/es/components/DataTable/TableHeader.d.ts +1 -1
  42. package/es/components/DataTable/TableHeader.js +3 -19
  43. package/es/components/DataTable/TableRow.js +4 -5
  44. package/es/components/DataTable/TableSelectAll.js +0 -8
  45. package/es/components/DataTable/TableSelectRow.js +2 -10
  46. package/es/components/DataTable/TableToolbar.js +0 -3
  47. package/es/components/DataTable/TableToolbarMenu.d.ts +1 -1
  48. package/es/components/DataTable/TableToolbarMenu.js +3 -6
  49. package/es/components/DataTable/TableToolbarSearch.js +2 -30
  50. package/es/components/DataTable/state/getDerivedStateFromProps.js +0 -4
  51. package/es/components/DataTable/state/sorting.js +5 -8
  52. package/es/components/DataTable/tools/denormalize.js +2 -2
  53. package/es/components/DataTable/tools/filter.js +0 -2
  54. package/es/components/DataTable/tools/instanceId.js +0 -1
  55. package/es/components/DataTable/tools/normalize.js +10 -10
  56. package/es/components/DataTable/tools/sorting.js +5 -13
  57. package/es/components/DataTableSkeleton/DataTableSkeleton.js +5 -20
  58. package/es/components/DatePicker/DatePicker.Skeleton.js +0 -6
  59. package/es/components/DatePicker/DatePicker.js +153 -175
  60. package/es/components/DatePicker/plugins/appendToPlugin.js +3 -7
  61. package/es/components/DatePicker/plugins/fixEventsPlugin.js +14 -25
  62. package/es/components/DatePicker/plugins/rangePlugin.js +2 -7
  63. package/es/components/DatePickerInput/DatePickerInput.js +2 -28
  64. package/es/components/Dropdown/Dropdown.Skeleton.js +0 -2
  65. package/es/components/Dropdown/Dropdown.js +43 -52
  66. package/es/components/ErrorBoundary/ErrorBoundary.js +0 -10
  67. package/es/components/ErrorBoundary/ErrorBoundaryContext.js +0 -1
  68. package/es/components/ExpandableSearch/ExpandableSearch.js +1 -10
  69. package/es/components/FeatureFlags/index.js +8 -20
  70. package/es/components/FileUploader/FileUploader.Skeleton.js +0 -2
  71. package/es/components/FileUploader/FileUploader.js +3 -38
  72. package/es/components/FileUploader/FileUploaderButton.js +3 -24
  73. package/es/components/FileUploader/FileUploaderDropContainer.js +1 -28
  74. package/es/components/FileUploader/FileUploaderItem.js +5 -12
  75. package/es/components/FileUploader/Filename.js +6 -10
  76. package/es/components/FluidComboBox/FluidComboBox.Skeleton.js +0 -1
  77. package/es/components/FluidComboBox/FluidComboBox.js +0 -18
  78. package/es/components/FluidDatePicker/FluidDatePicker.Skeleton.js +0 -2
  79. package/es/components/FluidDatePicker/FluidDatePicker.js +0 -6
  80. package/es/components/FluidDatePickerInput/FluidDatePickerInput.js +2 -1
  81. package/es/components/FluidDropdown/FluidDropdown.Skeleton.js +0 -1
  82. package/es/components/FluidDropdown/FluidDropdown.js +0 -18
  83. package/es/components/FluidForm/FluidForm.js +0 -2
  84. package/es/components/FluidMultiSelect/FluidMultiSelect.Skeleton.js +0 -1
  85. package/es/components/FluidMultiSelect/FluidMultiSelect.js +0 -19
  86. package/es/components/FluidSelect/FluidSelect.Skeleton.js +0 -1
  87. package/es/components/FluidSelect/FluidSelect.js +0 -10
  88. package/es/components/FluidTextArea/FluidTextArea.Skeleton.js +0 -1
  89. package/es/components/FluidTextArea/FluidTextArea.js +0 -20
  90. package/es/components/FluidTextInput/FluidTextInput.Skeleton.js +0 -1
  91. package/es/components/FluidTextInput/FluidTextInput.js +0 -14
  92. package/es/components/FluidTimePicker/FluidTimePicker.Skeleton.js +0 -3
  93. package/es/components/FluidTimePicker/FluidTimePicker.js +1 -11
  94. package/es/components/FluidTimePickerSelect/FluidTimePickerSelect.js +0 -6
  95. package/es/components/Form/Form.d.ts +23 -0
  96. package/es/components/Form/Form.js +3 -6
  97. package/es/components/Form/index.d.ts +7 -0
  98. package/es/components/FormGroup/FormGroup.js +0 -7
  99. package/es/components/FormItem/FormItem.js +0 -2
  100. package/es/components/FormLabel/FormLabel.js +1 -7
  101. package/es/components/Grid/CSSGrid.js +2 -15
  102. package/es/components/Grid/Column.js +18 -59
  103. package/es/components/Grid/ColumnHang.js +2 -5
  104. package/es/components/Grid/FlexGrid.js +2 -8
  105. package/es/components/Grid/Grid.js +0 -8
  106. package/es/components/Grid/GridContext.js +1 -3
  107. package/es/components/Grid/Row.js +2 -7
  108. package/es/components/Heading/index.js +0 -4
  109. package/es/components/Icon/Icon.Skeleton.js +2 -2
  110. package/es/components/IconButton/index.js +0 -10
  111. package/es/components/IdPrefix/index.js +0 -2
  112. package/es/components/InlineCheckbox/InlineCheckbox.js +0 -14
  113. package/es/components/InlineLoading/InlineLoading.js +0 -12
  114. package/es/components/Layer/index.js +3 -6
  115. package/es/components/Layout/LayoutDirection.js +0 -3
  116. package/es/components/Layout/useLayoutDirection.js +0 -1
  117. package/es/components/Link/Link.js +3 -10
  118. package/es/components/ListBox/ListBox.js +2 -13
  119. package/es/components/ListBox/ListBoxField.js +0 -5
  120. package/es/components/ListBox/ListBoxMenuIcon.js +0 -4
  121. package/es/components/ListBox/ListBoxMenuItem.js +2 -6
  122. package/es/components/ListBox/ListBoxPropTypes.d.ts +2 -2
  123. package/es/components/ListBox/ListBoxSelection.js +1 -13
  124. package/es/components/ListBox/next/ListBoxSelection.js +1 -14
  125. package/es/components/ListBox/next/ListBoxTrigger.js +1 -3
  126. package/es/components/ListItem/ListItem.d.ts +23 -0
  127. package/es/components/ListItem/ListItem.js +4 -8
  128. package/es/components/ListItem/index.d.ts +7 -0
  129. package/es/components/Loading/Loading.js +0 -6
  130. package/es/components/Menu/Menu.js +22 -40
  131. package/es/components/Menu/MenuContext.js +4 -5
  132. package/es/components/Menu/MenuItem.js +5 -39
  133. package/es/components/MenuButton/index.js +0 -9
  134. package/es/components/Modal/Modal.js +1 -46
  135. package/es/components/ModalWrapper/ModalWrapper.js +2 -15
  136. package/es/components/MultiSelect/FilterableMultiSelect.js +2 -60
  137. package/es/components/MultiSelect/MultiSelect.js +22 -70
  138. package/es/components/MultiSelect/MultiSelectPropTypes.js +0 -1
  139. package/es/components/MultiSelect/index.js +0 -1
  140. package/es/components/MultiSelect/tools/itemToString.js +0 -2
  141. package/es/components/MultiSelect/tools/sorting.js +3 -4
  142. package/es/components/Notification/Notification.js +0 -78
  143. package/es/components/NumberInput/NumberInput.Skeleton.js +0 -2
  144. package/es/components/NumberInput/NumberInput.js +3 -60
  145. package/es/components/OrderedList/OrderedList.d.ts +39 -0
  146. package/es/components/OrderedList/OrderedList.js +7 -19
  147. package/es/components/{Form/index.js → OrderedList/index.d.ts} +1 -3
  148. package/es/components/OverflowMenu/OverflowMenu.js +65 -86
  149. package/es/components/OverflowMenuItem/OverflowMenuItem.js +6 -23
  150. package/es/components/OverflowMenuV2/index.js +0 -5
  151. package/es/components/Pagination/Pagination.Skeleton.js +0 -2
  152. package/es/components/Pagination/Pagination.js +11 -47
  153. package/es/components/Pagination/experimental/PageSelector.js +0 -10
  154. package/es/components/Pagination/experimental/Pagination.js +2 -48
  155. package/es/components/PaginationNav/PaginationNav.js +15 -59
  156. package/es/components/Popover/index.d.ts +14 -8
  157. package/es/components/Popover/index.js +44 -48
  158. package/es/components/PrimaryButton/PrimaryButton.js +0 -1
  159. package/es/components/ProgressBar/ProgressBar.js +0 -15
  160. package/es/components/ProgressIndicator/ProgressIndicator.Skeleton.js +0 -4
  161. package/es/components/ProgressIndicator/ProgressIndicator.js +2 -40
  162. package/es/components/RadioButton/RadioButton.Skeleton.js +0 -1
  163. package/es/components/RadioButton/RadioButton.js +0 -13
  164. package/es/components/RadioButtonGroup/RadioButtonGroup.js +3 -23
  165. package/es/components/RadioTile/RadioTile.js +0 -12
  166. package/es/components/Search/Search.Skeleton.js +0 -2
  167. package/es/components/Search/Search.js +1 -28
  168. package/es/components/SecondaryButton/SecondaryButton.js +0 -1
  169. package/es/components/Select/Select.Skeleton.js +0 -2
  170. package/es/components/Select/Select.d.ts +1 -1
  171. package/es/components/Select/Select.js +6 -33
  172. package/es/components/SelectItem/SelectItem.js +0 -5
  173. package/es/components/SelectItemGroup/SelectItemGroup.d.ts +0 -1
  174. package/es/components/SelectItemGroup/SelectItemGroup.js +1 -7
  175. package/es/components/SkeletonIcon/SkeletonIcon.js +0 -2
  176. package/es/components/SkeletonPlaceholder/SkeletonPlaceholder.js +0 -1
  177. package/es/components/SkeletonText/SkeletonText.js +0 -12
  178. package/es/components/Slider/Slider.Skeleton.js +0 -2
  179. package/es/components/Slider/Slider.d.ts +0 -1
  180. package/es/components/Slider/Slider.js +112 -135
  181. package/es/components/Stack/Stack.js +1 -8
  182. package/es/components/StructuredList/StructuredList.Skeleton.js +0 -5
  183. package/es/components/StructuredList/StructuredList.js +1 -25
  184. package/es/components/Switch/IconSwitch.js +0 -18
  185. package/es/components/Switch/Switch.js +0 -11
  186. package/es/components/TabContent/TabContent.js +2 -6
  187. package/es/components/Tabs/Tabs.Skeleton.js +0 -4
  188. package/es/components/Tabs/Tabs.js +135 -104
  189. package/es/components/Tabs/usePressable.js +18 -31
  190. package/es/components/Tag/Tag.Skeleton.js +0 -2
  191. package/es/components/Tag/Tag.js +0 -15
  192. package/es/components/Text/Text.js +5 -18
  193. package/es/components/Text/TextDirection.js +0 -3
  194. package/es/components/Text/TextDirectionContext.js +0 -1
  195. package/es/components/Text/createTextComponent.js +0 -3
  196. package/es/components/TextArea/TextArea.Skeleton.js +0 -2
  197. package/es/components/TextArea/TextArea.js +11 -33
  198. package/es/components/TextInput/ControlledPasswordInput.js +0 -20
  199. package/es/components/TextInput/PasswordInput.js +0 -25
  200. package/es/components/TextInput/TextInput.Skeleton.js +0 -2
  201. package/es/components/TextInput/TextInput.d.ts +1 -1
  202. package/es/components/TextInput/TextInput.js +5 -33
  203. package/es/components/TextInput/util.js +3 -5
  204. package/es/components/Theme/index.js +1 -6
  205. package/es/components/Tile/Tile.js +32 -59
  206. package/es/components/TileGroup/TileGroup.js +1 -22
  207. package/es/components/TimePicker/TimePicker.js +6 -32
  208. package/es/components/TimePickerSelect/TimePickerSelect.js +2 -5
  209. package/es/components/Toggle/Toggle.Skeleton.js +0 -8
  210. package/es/components/Toggle/Toggle.js +0 -16
  211. package/es/components/ToggleSmall/ToggleSmall.Skeleton.js +0 -7
  212. package/es/components/Toggletip/index.d.ts +148 -0
  213. package/es/components/Toggletip/index.js +20 -44
  214. package/es/components/Tooltip/DefinitionTooltip.js +0 -11
  215. package/es/components/Tooltip/Tooltip.d.ts +1 -1
  216. package/es/components/Tooltip/Tooltip.js +4 -21
  217. package/es/components/TreeView/TreeNode.js +21 -66
  218. package/es/components/TreeView/TreeView.js +11 -67
  219. package/es/components/UIShell/Content.js +2 -4
  220. package/es/components/UIShell/Header.js +0 -2
  221. package/es/components/UIShell/HeaderContainer.d.ts +33 -0
  222. package/es/components/UIShell/HeaderContainer.js +13 -11
  223. package/es/components/UIShell/HeaderGlobalAction.js +0 -6
  224. package/es/components/UIShell/HeaderGlobalBar.js +0 -1
  225. package/es/components/UIShell/HeaderMenu.js +32 -31
  226. package/es/components/UIShell/HeaderMenuButton.js +2 -4
  227. package/es/components/UIShell/HeaderMenuItem.js +0 -8
  228. package/es/components/UIShell/HeaderName.js +0 -5
  229. package/es/components/UIShell/HeaderNavigation.js +0 -2
  230. package/es/components/UIShell/HeaderPanel.js +0 -2
  231. package/es/components/UIShell/HeaderSideNavItems.js +0 -2
  232. package/es/components/UIShell/Link.js +2 -3
  233. package/es/components/UIShell/SideNav.d.ts +3 -1
  234. package/es/components/UIShell/SideNav.js +44 -36
  235. package/es/components/UIShell/SideNavDetails.js +0 -3
  236. package/es/components/UIShell/SideNavDivider.js +0 -1
  237. package/es/components/UIShell/SideNavFooter.js +1 -4
  238. package/es/components/UIShell/SideNavHeader.js +0 -4
  239. package/es/components/UIShell/SideNavIcon.js +0 -3
  240. package/es/components/UIShell/SideNavItem.js +0 -3
  241. package/es/components/UIShell/SideNavItems.js +2 -6
  242. package/es/components/UIShell/SideNavLink.js +3 -7
  243. package/es/components/UIShell/SideNavLinkText.js +0 -2
  244. package/es/components/UIShell/SideNavMenu.js +0 -16
  245. package/es/components/UIShell/SideNavMenuItem.js +0 -2
  246. package/es/components/UIShell/SideNavSwitcher.js +2 -5
  247. package/es/components/UIShell/SkipToContent.d.ts +32 -0
  248. package/es/components/UIShell/SkipToContent.js +8 -15
  249. package/es/components/UIShell/Switcher.js +0 -2
  250. package/es/components/UIShell/SwitcherDivider.js +0 -1
  251. package/es/components/UIShell/SwitcherItem.js +0 -3
  252. package/es/components/UnorderedList/UnorderedList.d.ts +34 -0
  253. package/es/components/UnorderedList/UnorderedList.js +6 -16
  254. package/es/components/UnorderedList/index.d.ts +7 -0
  255. package/es/index.js +7 -8
  256. package/es/internal/ClickListener.js +3 -13
  257. package/es/internal/FloatingMenu.js +57 -63
  258. package/es/internal/OptimizedResize.js +6 -12
  259. package/es/internal/Selection.js +2 -25
  260. package/es/internal/createClassWrapper.js +0 -2
  261. package/es/internal/deprecateFieldOnObject.js +0 -4
  262. package/es/internal/focus/index.js +0 -1
  263. package/es/internal/keyboard/keys.js +2 -1
  264. package/es/internal/keyboard/match.js +1 -6
  265. package/es/internal/keyboard/navigation.js +8 -7
  266. package/es/internal/useAnnouncer.js +0 -1
  267. package/es/internal/useAttachedMenu.js +1 -9
  268. package/es/internal/useControllableState.js +6 -13
  269. package/es/internal/useDelayedState.js +2 -4
  270. package/es/internal/useEffectOnce.js +0 -1
  271. package/es/internal/useEvent.js +61 -3
  272. package/es/internal/useId.js +2 -5
  273. package/es/internal/useIsomorphicEffect.js +1 -0
  274. package/es/internal/useMergedRefs.js +2 -2
  275. package/es/internal/useNoInteractiveChildren.js +2 -13
  276. package/es/internal/useNormalizedInputProps.js +0 -3
  277. package/es/internal/useSavedCallback.js +0 -1
  278. package/es/internal/warning.js +0 -3
  279. package/es/internal/wrapFocus.js +1 -8
  280. package/es/prop-types/deprecate.js +2 -5
  281. package/es/prop-types/isRequiredOneOf.js +2 -5
  282. package/es/prop-types/requiredIfGivenPropIsTruthy.js +0 -2
  283. package/es/tools/array.js +0 -3
  284. package/es/tools/events.js +0 -3
  285. package/es/tools/mergeRefs.js +0 -2
  286. package/es/tools/wrapComponent.js +2 -5
  287. package/lib/_virtual/_rollupPluginBabelHelpers.js +17 -4
  288. package/lib/components/Accordion/Accordion.Skeleton.js +0 -7
  289. package/lib/components/Accordion/Accordion.js +1 -27
  290. package/lib/components/Accordion/AccordionItem.js +5 -19
  291. package/lib/components/AspectRatio/AspectRatio.js +0 -5
  292. package/lib/components/Breadcrumb/Breadcrumb.Skeleton.js +0 -3
  293. package/lib/components/Breadcrumb/Breadcrumb.js +0 -3
  294. package/lib/components/Breadcrumb/BreadcrumbItem.js +0 -7
  295. package/lib/components/Button/Button.Skeleton.js +2 -26
  296. package/lib/components/Button/Button.js +2 -36
  297. package/lib/components/ButtonSet/ButtonSet.js +0 -2
  298. package/lib/components/Checkbox/Checkbox.Skeleton.js +0 -1
  299. package/lib/components/Checkbox/Checkbox.js +4 -20
  300. package/lib/components/CheckboxGroup/CheckboxGroup.js +0 -11
  301. package/lib/components/ClassPrefix/index.d.ts +26 -0
  302. package/lib/components/ClassPrefix/index.js +0 -2
  303. package/lib/components/CodeSnippet/CodeSnippet.Skeleton.js +0 -5
  304. package/lib/components/CodeSnippet/CodeSnippet.js +6 -45
  305. package/lib/components/ComboBox/ComboBox.js +19 -86
  306. package/lib/components/ComboBox/tools/filter.js +0 -1
  307. package/lib/components/ComboButton/index.js +0 -14
  308. package/lib/components/ComposedModal/ComposedModal.js +2 -32
  309. package/lib/components/ComposedModal/ModalFooter.js +0 -21
  310. package/lib/components/ComposedModal/ModalHeader.js +0 -12
  311. package/lib/components/ContainedList/ContainedList.js +5 -32
  312. package/lib/components/ContainedList/ContainedListItem/ContainedListItem.js +0 -6
  313. package/lib/components/ContentSwitcher/ContentSwitcher.js +11 -23
  314. package/lib/components/ContextMenu/useContextMenu.js +1 -6
  315. package/lib/components/Copy/Copy.js +8 -50
  316. package/lib/components/CopyButton/CopyButton.js +0 -4
  317. package/lib/components/DangerButton/DangerButton.js +0 -1
  318. package/lib/components/DataTable/DataTable.js +171 -91
  319. package/lib/components/DataTable/Table.js +0 -6
  320. package/lib/components/DataTable/TableBatchAction.js +0 -4
  321. package/lib/components/DataTable/TableBatchActions.js +0 -8
  322. package/lib/components/DataTable/TableBody.js +0 -1
  323. package/lib/components/DataTable/TableContainer.js +0 -5
  324. package/lib/components/DataTable/TableExpandHeader.js +0 -7
  325. package/lib/components/DataTable/TableExpandRow.js +0 -6
  326. package/lib/components/DataTable/TableExpandedRow.js +0 -6
  327. package/lib/components/DataTable/TableHeader.d.ts +1 -1
  328. package/lib/components/DataTable/TableHeader.js +3 -19
  329. package/lib/components/DataTable/TableRow.js +4 -5
  330. package/lib/components/DataTable/TableSelectAll.js +0 -8
  331. package/lib/components/DataTable/TableSelectRow.js +2 -10
  332. package/lib/components/DataTable/TableToolbar.js +0 -3
  333. package/lib/components/DataTable/TableToolbarMenu.d.ts +1 -1
  334. package/lib/components/DataTable/TableToolbarMenu.js +3 -6
  335. package/lib/components/DataTable/TableToolbarSearch.js +2 -30
  336. package/lib/components/DataTable/state/getDerivedStateFromProps.js +0 -4
  337. package/lib/components/DataTable/state/sorting.js +5 -8
  338. package/lib/components/DataTable/tools/denormalize.js +2 -2
  339. package/lib/components/DataTable/tools/filter.js +0 -2
  340. package/lib/components/DataTable/tools/instanceId.js +0 -1
  341. package/lib/components/DataTable/tools/normalize.js +10 -10
  342. package/lib/components/DataTable/tools/sorting.js +5 -13
  343. package/lib/components/DataTableSkeleton/DataTableSkeleton.js +5 -20
  344. package/lib/components/DatePicker/DatePicker.Skeleton.js +0 -6
  345. package/lib/components/DatePicker/DatePicker.js +153 -175
  346. package/lib/components/DatePicker/plugins/appendToPlugin.js +3 -7
  347. package/lib/components/DatePicker/plugins/fixEventsPlugin.js +14 -25
  348. package/lib/components/DatePicker/plugins/rangePlugin.js +2 -7
  349. package/lib/components/DatePickerInput/DatePickerInput.js +2 -28
  350. package/lib/components/Dropdown/Dropdown.Skeleton.js +0 -2
  351. package/lib/components/Dropdown/Dropdown.js +50 -59
  352. package/lib/components/ErrorBoundary/ErrorBoundary.js +0 -10
  353. package/lib/components/ErrorBoundary/ErrorBoundaryContext.js +0 -1
  354. package/lib/components/ExpandableSearch/ExpandableSearch.js +1 -10
  355. package/lib/components/FeatureFlags/index.js +8 -20
  356. package/lib/components/FileUploader/FileUploader.Skeleton.js +0 -2
  357. package/lib/components/FileUploader/FileUploader.js +3 -57
  358. package/lib/components/FileUploader/FileUploaderButton.js +3 -43
  359. package/lib/components/FileUploader/FileUploaderDropContainer.js +1 -28
  360. package/lib/components/FileUploader/FileUploaderItem.js +5 -31
  361. package/lib/components/FileUploader/Filename.js +6 -10
  362. package/lib/components/FluidComboBox/FluidComboBox.Skeleton.js +0 -1
  363. package/lib/components/FluidComboBox/FluidComboBox.js +0 -18
  364. package/lib/components/FluidDatePicker/FluidDatePicker.Skeleton.js +0 -2
  365. package/lib/components/FluidDatePicker/FluidDatePicker.js +0 -6
  366. package/lib/components/FluidDatePickerInput/FluidDatePickerInput.js +2 -1
  367. package/lib/components/FluidDropdown/FluidDropdown.Skeleton.js +0 -1
  368. package/lib/components/FluidDropdown/FluidDropdown.js +0 -18
  369. package/lib/components/FluidForm/FluidForm.js +0 -2
  370. package/lib/components/FluidMultiSelect/FluidMultiSelect.Skeleton.js +0 -1
  371. package/lib/components/FluidMultiSelect/FluidMultiSelect.js +0 -19
  372. package/lib/components/FluidSelect/FluidSelect.Skeleton.js +0 -1
  373. package/lib/components/FluidSelect/FluidSelect.js +0 -10
  374. package/lib/components/FluidTextArea/FluidTextArea.Skeleton.js +0 -1
  375. package/lib/components/FluidTextArea/FluidTextArea.js +0 -20
  376. package/lib/components/FluidTextInput/FluidTextInput.Skeleton.js +0 -1
  377. package/lib/components/FluidTextInput/FluidTextInput.js +0 -14
  378. package/lib/components/FluidTimePicker/FluidTimePicker.Skeleton.js +0 -3
  379. package/lib/components/FluidTimePicker/FluidTimePicker.js +1 -11
  380. package/lib/components/FluidTimePickerSelect/FluidTimePickerSelect.js +0 -6
  381. package/lib/components/Form/Form.d.ts +23 -0
  382. package/lib/components/Form/Form.js +3 -6
  383. package/lib/components/Form/index.d.ts +7 -0
  384. package/lib/components/FormGroup/FormGroup.js +0 -7
  385. package/lib/components/FormItem/FormItem.js +0 -2
  386. package/lib/components/FormLabel/FormLabel.js +1 -26
  387. package/lib/components/Grid/CSSGrid.js +2 -15
  388. package/lib/components/Grid/Column.js +18 -59
  389. package/lib/components/Grid/ColumnHang.js +2 -5
  390. package/lib/components/Grid/FlexGrid.js +2 -8
  391. package/lib/components/Grid/Grid.js +0 -8
  392. package/lib/components/Grid/GridContext.js +1 -3
  393. package/lib/components/Grid/Row.js +2 -7
  394. package/lib/components/Heading/index.js +0 -4
  395. package/lib/components/Icon/Icon.Skeleton.js +2 -2
  396. package/lib/components/IconButton/index.js +0 -10
  397. package/lib/components/IdPrefix/index.js +0 -2
  398. package/lib/components/InlineCheckbox/InlineCheckbox.js +0 -14
  399. package/lib/components/InlineLoading/InlineLoading.js +0 -12
  400. package/lib/components/Layer/index.js +3 -6
  401. package/lib/components/Layout/LayoutDirection.js +0 -3
  402. package/lib/components/Layout/useLayoutDirection.js +0 -1
  403. package/lib/components/Link/Link.js +3 -10
  404. package/lib/components/ListBox/ListBox.js +2 -13
  405. package/lib/components/ListBox/ListBoxField.js +0 -5
  406. package/lib/components/ListBox/ListBoxMenuIcon.js +0 -4
  407. package/lib/components/ListBox/ListBoxMenuItem.js +2 -6
  408. package/lib/components/ListBox/ListBoxPropTypes.d.ts +2 -2
  409. package/lib/components/ListBox/ListBoxSelection.js +1 -13
  410. package/lib/components/ListBox/next/ListBoxSelection.js +1 -14
  411. package/lib/components/ListBox/next/ListBoxTrigger.js +1 -3
  412. package/lib/components/ListItem/ListItem.d.ts +23 -0
  413. package/lib/components/ListItem/ListItem.js +4 -8
  414. package/lib/components/ListItem/index.d.ts +7 -0
  415. package/lib/components/Loading/Loading.js +0 -6
  416. package/lib/components/Menu/Menu.js +22 -40
  417. package/lib/components/Menu/MenuContext.js +4 -5
  418. package/lib/components/Menu/MenuItem.js +5 -39
  419. package/lib/components/MenuButton/index.js +0 -9
  420. package/lib/components/Modal/Modal.js +1 -46
  421. package/lib/components/ModalWrapper/ModalWrapper.js +2 -15
  422. package/lib/components/MultiSelect/FilterableMultiSelect.js +8 -66
  423. package/lib/components/MultiSelect/MultiSelect.js +30 -78
  424. package/lib/components/MultiSelect/MultiSelectPropTypes.js +0 -1
  425. package/lib/components/MultiSelect/index.js +0 -1
  426. package/lib/components/MultiSelect/tools/itemToString.js +0 -2
  427. package/lib/components/MultiSelect/tools/sorting.js +3 -4
  428. package/lib/components/Notification/Notification.js +0 -78
  429. package/lib/components/NumberInput/NumberInput.Skeleton.js +0 -2
  430. package/lib/components/NumberInput/NumberInput.js +3 -60
  431. package/lib/components/OrderedList/OrderedList.d.ts +39 -0
  432. package/lib/components/OrderedList/OrderedList.js +7 -19
  433. package/lib/components/OrderedList/index.d.ts +7 -0
  434. package/lib/components/OverflowMenu/OverflowMenu.js +65 -86
  435. package/lib/components/OverflowMenuItem/OverflowMenuItem.js +6 -23
  436. package/lib/components/OverflowMenuV2/index.js +0 -5
  437. package/lib/components/Pagination/Pagination.Skeleton.js +0 -2
  438. package/lib/components/Pagination/Pagination.js +11 -47
  439. package/lib/components/Pagination/experimental/PageSelector.js +0 -10
  440. package/lib/components/Pagination/experimental/Pagination.js +2 -67
  441. package/lib/components/PaginationNav/PaginationNav.js +15 -78
  442. package/lib/components/Popover/index.d.ts +14 -8
  443. package/lib/components/Popover/index.js +44 -48
  444. package/lib/components/PrimaryButton/PrimaryButton.js +0 -1
  445. package/lib/components/ProgressBar/ProgressBar.js +0 -15
  446. package/lib/components/ProgressIndicator/ProgressIndicator.Skeleton.js +0 -4
  447. package/lib/components/ProgressIndicator/ProgressIndicator.js +2 -40
  448. package/lib/components/RadioButton/RadioButton.Skeleton.js +0 -1
  449. package/lib/components/RadioButton/RadioButton.js +0 -13
  450. package/lib/components/RadioButtonGroup/RadioButtonGroup.js +3 -23
  451. package/lib/components/RadioTile/RadioTile.js +0 -12
  452. package/lib/components/Search/Search.Skeleton.js +0 -2
  453. package/lib/components/Search/Search.js +1 -28
  454. package/lib/components/SecondaryButton/SecondaryButton.js +0 -1
  455. package/lib/components/Select/Select.Skeleton.js +0 -2
  456. package/lib/components/Select/Select.d.ts +1 -1
  457. package/lib/components/Select/Select.js +6 -33
  458. package/lib/components/SelectItem/SelectItem.js +0 -5
  459. package/lib/components/SelectItemGroup/SelectItemGroup.d.ts +0 -1
  460. package/lib/components/SelectItemGroup/SelectItemGroup.js +1 -26
  461. package/lib/components/SkeletonIcon/SkeletonIcon.js +0 -2
  462. package/lib/components/SkeletonPlaceholder/SkeletonPlaceholder.js +0 -1
  463. package/lib/components/SkeletonText/SkeletonText.js +0 -12
  464. package/lib/components/Slider/Slider.Skeleton.js +0 -2
  465. package/lib/components/Slider/Slider.d.ts +0 -1
  466. package/lib/components/Slider/Slider.js +112 -154
  467. package/lib/components/Stack/Stack.js +1 -8
  468. package/lib/components/StructuredList/StructuredList.Skeleton.js +0 -5
  469. package/lib/components/StructuredList/StructuredList.js +1 -25
  470. package/lib/components/Switch/IconSwitch.js +0 -18
  471. package/lib/components/Switch/Switch.js +0 -11
  472. package/lib/components/TabContent/TabContent.js +2 -6
  473. package/lib/components/Tabs/Tabs.Skeleton.js +0 -4
  474. package/lib/components/Tabs/Tabs.js +133 -102
  475. package/lib/components/Tabs/usePressable.js +18 -31
  476. package/lib/components/Tag/Tag.Skeleton.js +0 -2
  477. package/lib/components/Tag/Tag.js +0 -15
  478. package/lib/components/Text/Text.js +5 -18
  479. package/lib/components/Text/TextDirection.js +0 -3
  480. package/lib/components/Text/TextDirectionContext.js +0 -1
  481. package/lib/components/Text/createTextComponent.js +0 -3
  482. package/lib/components/TextArea/TextArea.Skeleton.js +0 -2
  483. package/lib/components/TextArea/TextArea.js +10 -32
  484. package/lib/components/TextInput/ControlledPasswordInput.js +0 -20
  485. package/lib/components/TextInput/PasswordInput.js +0 -25
  486. package/lib/components/TextInput/TextInput.Skeleton.js +0 -2
  487. package/lib/components/TextInput/TextInput.d.ts +1 -1
  488. package/lib/components/TextInput/TextInput.js +5 -52
  489. package/lib/components/TextInput/util.js +3 -5
  490. package/lib/components/Theme/index.js +1 -6
  491. package/lib/components/Tile/Tile.js +31 -58
  492. package/lib/components/TileGroup/TileGroup.js +1 -22
  493. package/lib/components/TimePicker/TimePicker.js +6 -32
  494. package/lib/components/TimePickerSelect/TimePickerSelect.js +2 -5
  495. package/lib/components/Toggle/Toggle.Skeleton.js +0 -8
  496. package/lib/components/Toggle/Toggle.js +0 -16
  497. package/lib/components/ToggleSmall/ToggleSmall.Skeleton.js +0 -7
  498. package/lib/components/Toggletip/index.d.ts +148 -0
  499. package/lib/components/Toggletip/index.js +20 -44
  500. package/lib/components/Tooltip/DefinitionTooltip.js +0 -11
  501. package/lib/components/Tooltip/Tooltip.d.ts +1 -1
  502. package/lib/components/Tooltip/Tooltip.js +4 -21
  503. package/lib/components/TreeView/TreeNode.js +21 -66
  504. package/lib/components/TreeView/TreeView.js +11 -67
  505. package/lib/components/UIShell/Content.js +2 -4
  506. package/lib/components/UIShell/Header.js +0 -2
  507. package/lib/components/UIShell/HeaderContainer.d.ts +33 -0
  508. package/lib/components/UIShell/HeaderContainer.js +13 -11
  509. package/lib/components/UIShell/HeaderGlobalAction.js +0 -6
  510. package/lib/components/UIShell/HeaderGlobalBar.js +0 -1
  511. package/lib/components/UIShell/HeaderMenu.js +32 -31
  512. package/lib/components/UIShell/HeaderMenuButton.js +2 -4
  513. package/lib/components/UIShell/HeaderMenuItem.js +0 -8
  514. package/lib/components/UIShell/HeaderName.js +0 -5
  515. package/lib/components/UIShell/HeaderNavigation.js +0 -2
  516. package/lib/components/UIShell/HeaderPanel.js +0 -2
  517. package/lib/components/UIShell/HeaderSideNavItems.js +0 -2
  518. package/lib/components/UIShell/Link.js +2 -3
  519. package/lib/components/UIShell/SideNav.d.ts +3 -1
  520. package/lib/components/UIShell/SideNav.js +43 -35
  521. package/lib/components/UIShell/SideNavDetails.js +0 -3
  522. package/lib/components/UIShell/SideNavDivider.js +0 -1
  523. package/lib/components/UIShell/SideNavFooter.js +1 -4
  524. package/lib/components/UIShell/SideNavHeader.js +0 -4
  525. package/lib/components/UIShell/SideNavIcon.js +0 -3
  526. package/lib/components/UIShell/SideNavItem.js +0 -3
  527. package/lib/components/UIShell/SideNavItems.js +2 -6
  528. package/lib/components/UIShell/SideNavLink.js +3 -7
  529. package/lib/components/UIShell/SideNavLinkText.js +0 -2
  530. package/lib/components/UIShell/SideNavMenu.js +0 -16
  531. package/lib/components/UIShell/SideNavMenuItem.js +0 -2
  532. package/lib/components/UIShell/SideNavSwitcher.js +2 -5
  533. package/lib/components/UIShell/SkipToContent.d.ts +32 -0
  534. package/lib/components/UIShell/SkipToContent.js +8 -15
  535. package/lib/components/UIShell/Switcher.js +0 -2
  536. package/lib/components/UIShell/SwitcherDivider.js +0 -1
  537. package/lib/components/UIShell/SwitcherItem.js +0 -3
  538. package/lib/components/UnorderedList/UnorderedList.d.ts +34 -0
  539. package/lib/components/UnorderedList/UnorderedList.js +6 -16
  540. package/lib/components/UnorderedList/index.d.ts +7 -0
  541. package/lib/index.js +42 -43
  542. package/lib/internal/ClickListener.js +3 -13
  543. package/lib/internal/FloatingMenu.js +57 -63
  544. package/lib/internal/OptimizedResize.js +6 -12
  545. package/lib/internal/Selection.js +2 -25
  546. package/lib/internal/createClassWrapper.js +0 -2
  547. package/lib/internal/deprecateFieldOnObject.js +0 -4
  548. package/lib/internal/focus/index.js +0 -1
  549. package/lib/internal/keyboard/keys.js +2 -1
  550. package/lib/internal/keyboard/match.js +1 -6
  551. package/lib/internal/keyboard/navigation.js +8 -7
  552. package/lib/internal/useAnnouncer.js +0 -1
  553. package/lib/internal/useAttachedMenu.js +1 -9
  554. package/lib/internal/useControllableState.js +6 -13
  555. package/lib/internal/useDelayedState.js +2 -4
  556. package/lib/internal/useEffectOnce.js +0 -1
  557. package/lib/internal/useEvent.js +61 -2
  558. package/lib/internal/useId.js +2 -5
  559. package/lib/internal/useIsomorphicEffect.js +1 -0
  560. package/lib/internal/useMergedRefs.js +2 -2
  561. package/lib/internal/useNoInteractiveChildren.js +2 -13
  562. package/lib/internal/useNormalizedInputProps.js +0 -3
  563. package/lib/internal/useSavedCallback.js +0 -1
  564. package/lib/internal/warning.js +0 -3
  565. package/lib/internal/wrapFocus.js +1 -8
  566. package/lib/prop-types/deprecate.js +2 -5
  567. package/lib/prop-types/isRequiredOneOf.js +2 -5
  568. package/lib/prop-types/requiredIfGivenPropIsTruthy.js +0 -2
  569. package/lib/tools/array.js +0 -3
  570. package/lib/tools/events.js +0 -3
  571. package/lib/tools/mergeRefs.js +0 -2
  572. package/lib/tools/wrapComponent.js +2 -5
  573. package/package.json +9 -9
  574. package/es/components/Tab/Tab.js +0 -185
  575. package/es/components/Tab/index.js +0 -14
  576. package/es/components/TimePickerSelect/index.js +0 -13
  577. package/lib/components/Form/index.js +0 -17
  578. package/lib/components/Tab/Tab.js +0 -214
  579. package/lib/components/Tab/index.js +0 -39
  580. package/lib/components/TimePickerSelect/index.js +0 -38
@@ -26,6 +26,7 @@ var useNoInteractiveChildren = require('../../internal/useNoInteractiveChildren.
26
26
  var usePrefix = require('../../internal/usePrefix.js');
27
27
  var usePressable = require('./usePressable.js');
28
28
  var deprecate = require('../../prop-types/deprecate.js');
29
+ var useEvent = require('../../internal/useEvent.js');
29
30
  var match = require('../../internal/keyboard/match.js');
30
31
  var keys = require('../../internal/keyboard/keys.js');
31
32
 
@@ -36,25 +37,29 @@ var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
36
37
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
37
38
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
38
39
 
39
- var _ChevronLeft, _ChevronRight;
40
+ var _ChevronLeft, _ChevronRight, _Close;
40
41
 
41
- const TabsContext = /*#__PURE__*/React__default["default"].createContext(); // Used to keep track of position in a tablist
42
+ // Used to manage the overall state of the Tabs
43
+ const TabsContext = /*#__PURE__*/React__default["default"].createContext();
42
44
 
43
- const TabContext = /*#__PURE__*/React__default["default"].createContext(); // Used to keep track of position in a list of tab panels
45
+ // Used to keep track of position in a tablist
46
+ const TabContext = /*#__PURE__*/React__default["default"].createContext();
44
47
 
48
+ // Used to keep track of position in a list of tab panels
45
49
  const TabPanelContext = /*#__PURE__*/React__default["default"].createContext();
46
-
47
50
  function Tabs(_ref) {
48
51
  let {
49
52
  children,
50
53
  defaultSelectedIndex = 0,
51
54
  onChange,
52
- selectedIndex: controlledSelectedIndex
55
+ selectedIndex: controlledSelectedIndex,
56
+ dismissable,
57
+ onTabCloseRequest
53
58
  } = _ref;
54
- const baseId = useId.useId('ccs'); // The active index is used to track the element which has focus in our tablist
55
-
56
- const [activeIndex, setActiveIndex] = React.useState(defaultSelectedIndex); // The selected index is used for the tab/panel pairing which is "visible"
57
-
59
+ const baseId = useId.useId('ccs');
60
+ // The active index is used to track the element which has focus in our tablist
61
+ const [activeIndex, setActiveIndex] = React.useState(defaultSelectedIndex);
62
+ // The selected index is used for the tab/panel pairing which is "visible"
58
63
  const [selectedIndex, setSelectedIndex] = useControllableState.useControllableState({
59
64
  value: controlledSelectedIndex,
60
65
  defaultValue: defaultSelectedIndex,
@@ -70,6 +75,8 @@ function Tabs(_ref) {
70
75
  baseId,
71
76
  activeIndex,
72
77
  defaultSelectedIndex,
78
+ dismissable,
79
+ onTabCloseRequest,
73
80
  setActiveIndex,
74
81
  selectedIndex,
75
82
  setSelectedIndex
@@ -78,32 +85,43 @@ function Tabs(_ref) {
78
85
  value: value
79
86
  }, children);
80
87
  }
81
-
82
88
  Tabs.propTypes = {
83
89
  /**
84
90
  * Provide child elements to be rendered inside of the `Tabs`.
85
91
  * These elements should render either `TabsList` or `TabsPanels`
86
92
  */
87
93
  children: PropTypes__default["default"].node,
88
-
89
94
  /**
90
95
  * Specify which content tab should be initially selected when the component
91
96
  * is first rendered
92
97
  */
93
98
  defaultSelectedIndex: PropTypes__default["default"].number,
94
-
99
+ /**
100
+ * Whether the render Tab children should be dismissable.
101
+ */
102
+ dismissable: PropTypes__default["default"].bool,
95
103
  /**
96
104
  * Provide an optional function which is called whenever the state of the
97
105
  * `Tabs` changes
98
106
  */
99
107
  onChange: PropTypes__default["default"].func,
100
-
108
+ /**
109
+ * If specifying the `onTabCloseRequest` prop, provide a callback function
110
+ * responsible for removing the tab when close button is pressed on one of the Tab elements
111
+ */
112
+ onTabCloseRequest: props => {
113
+ if (props.dismissable && !props.onTabCloseRequest) {
114
+ return new Error('dismissable property specified without also providing an onTabCloseRequest property.');
115
+ }
116
+ return undefined;
117
+ },
101
118
  /**
102
119
  * Control which content panel is currently selected. This puts the component
103
120
  * in a controlled mode and should be used along with `onChange`
104
121
  */
105
122
  selectedIndex: PropTypes__default["default"].number
106
123
  };
124
+
107
125
  /**
108
126
  * Get the next index for a given keyboard event given a count of the total
109
127
  * items and the current index
@@ -112,7 +130,6 @@ Tabs.propTypes = {
112
130
  * @param {number} index
113
131
  * @returns {number}
114
132
  */
115
-
116
133
  function getNextIndex(event, total, index) {
117
134
  if (match.match(event, keys.ArrowRight)) {
118
135
  return (index + 1) % total;
@@ -124,7 +141,6 @@ function getNextIndex(event, total, index) {
124
141
  return total - 1;
125
142
  }
126
143
  }
127
-
128
144
  function TabList(_ref2) {
129
145
  let {
130
146
  activation = 'automatic',
@@ -144,7 +160,8 @@ function TabList(_ref2) {
144
160
  activeIndex,
145
161
  selectedIndex,
146
162
  setSelectedIndex,
147
- setActiveIndex
163
+ setActiveIndex,
164
+ dismissable
148
165
  } = React__default["default"].useContext(TabsContext);
149
166
  const prefix = usePrefix.usePrefix();
150
167
  const ref = React.useRef(null);
@@ -152,25 +169,26 @@ function TabList(_ref2) {
152
169
  const nextButton = React.useRef(null);
153
170
  const [isScrollable, setIsScrollable] = React.useState(false);
154
171
  const [scrollLeft, setScrollLeft] = React.useState(null);
155
- const hasSecondaryLabelTabs = contained && !!React__default["default"].Children.toArray(children).filter(child => child.props.secondaryLabel).length;
156
- const className = cx__default["default"](`${prefix}--tabs`, customClassName, {
157
- [`${prefix}--tabs--contained`]: contained,
158
- [`${prefix}--tabs--light`]: light,
159
- [`${prefix}--tabs__icon--default`]: iconSize === 'default',
160
- [`${prefix}--tabs__icon--lg`]: iconSize === 'lg',
161
- [`${prefix}--tabs--tall`]: hasSecondaryLabelTabs
162
- }); // Previous Button
172
+
173
+ // Previous Button
163
174
  // VISIBLE IF:
164
175
  // SCROLLABLE
165
176
  // AND SCROLL_LEFT > 0
166
-
167
177
  const buttonWidth = 44;
168
- const isPreviousButtonVisible = ref.current ? isScrollable && scrollLeft > 0 : false; // Next Button
178
+ // Next Button
169
179
  // VISIBLE IF:
170
180
  // SCROLLABLE
171
181
  // AND SCROLL_LEFT + CLIENT_WIDTH < SCROLL_WIDTH
172
-
173
- const isNextButtonVisible = ref.current ? scrollLeft + buttonWidth + ref.current.clientWidth < ref.current.scrollWidth : false;
182
+ const [isNextButtonVisible, setIsNextButtonVisible] = React.useState(ref.current ? scrollLeft + buttonWidth + ref.current.clientWidth < ref.current.scrollWidth : false);
183
+ const hasSecondaryLabelTabs = contained && !!React__default["default"].Children.toArray(children).filter(child => child.props.secondaryLabel).length;
184
+ const className = cx__default["default"](`${prefix}--tabs`, customClassName, {
185
+ [`${prefix}--tabs--contained`]: contained,
186
+ [`${prefix}--tabs--light`]: light,
187
+ [`${prefix}--tabs__icon--default`]: iconSize === 'default',
188
+ [`${prefix}--tabs__icon--lg`]: iconSize === 'lg',
189
+ [`${prefix}--tabs--tall`]: hasSecondaryLabelTabs
190
+ });
191
+ const isPreviousButtonVisible = ref.current ? isScrollable && scrollLeft > 0 : false;
174
192
  const previousButtonClasses = cx__default["default"](`${prefix}--tab--overflow-nav-button`, `${prefix}--tab--overflow-nav-button--previous`, {
175
193
  [`${prefix}--tab--overflow-nav-button--hidden`]: !isPreviousButtonVisible
176
194
  });
@@ -183,7 +201,6 @@ function TabList(_ref2) {
183
201
  setScrollLeft(event.target.scrollLeft);
184
202
  }, scrollDebounceWait);
185
203
  }, [scrollDebounceWait]);
186
-
187
204
  function onKeyDown(event) {
188
205
  if (match.matches(event, [keys.ArrowRight, keys.ArrowLeft, keys.Home, keys.End])) {
189
206
  event.preventDefault();
@@ -192,20 +209,16 @@ function TabList(_ref2) {
192
209
  });
193
210
  const currentIndex = activeTabs.indexOf(tabs.current[activation === 'automatic' ? selectedIndex : activeIndex]);
194
211
  const nextIndex = tabs.current.indexOf(activeTabs[getNextIndex(event, activeTabs.length, currentIndex)]);
195
-
196
212
  if (activation === 'automatic') {
197
213
  setSelectedIndex(nextIndex);
198
214
  } else if (activation === 'manual') {
199
215
  setActiveIndex(nextIndex);
200
216
  }
201
-
202
217
  tabs.current[nextIndex].focus();
203
218
  }
204
219
  }
205
-
206
220
  useEffectOnce.useEffectOnce(() => {
207
221
  const tab = tabs.current[selectedIndex];
208
-
209
222
  if (scrollIntoView && tab) {
210
223
  tab.scrollIntoView({
211
224
  block: 'nearest',
@@ -213,12 +226,19 @@ function TabList(_ref2) {
213
226
  });
214
227
  }
215
228
  });
229
+ React.useEffect(() => {
230
+ setIsNextButtonVisible(ref.current ? scrollLeft + buttonWidth + ref.current.clientWidth < ref.current.scrollWidth : false);
231
+ if (dismissable) {
232
+ if (ref.current) {
233
+ setIsScrollable(ref.current.scrollWidth > ref.current.clientWidth);
234
+ }
235
+ }
236
+ }, [scrollLeft, children, dismissable]);
216
237
  useEffectOnce.useEffectOnce(() => {
217
238
  if (tabs.current[selectedIndex].disabled) {
218
239
  const activeTabs = tabs.current.filter(tab => {
219
240
  return !tab.disabled;
220
241
  });
221
-
222
242
  if (activeTabs.length > 0) {
223
243
  const tab = activeTabs[0];
224
244
  setSelectedIndex(tabs.current.indexOf(tab));
@@ -229,21 +249,20 @@ function TabList(_ref2) {
229
249
  if (ref.current) {
230
250
  setIsScrollable(ref.current.scrollWidth > ref.current.clientWidth);
231
251
  }
232
-
233
252
  function handler() {
234
253
  if (ref.current) {
235
254
  setIsScrollable(ref.current.scrollWidth > ref.current.clientWidth);
236
255
  }
237
256
  }
238
-
239
257
  const debouncedHandler = debounce__default["default"](handler, 200);
240
258
  window.addEventListener('resize', debouncedHandler);
241
259
  return () => {
242
260
  debouncedHandler.cancel();
243
261
  window.removeEventListener('resize', debouncedHandler);
244
262
  };
245
- }, []); // updates scroll location for all scroll behavior.
263
+ }, []);
246
264
 
265
+ // updates scroll location for all scroll behavior.
247
266
  useIsomorphicEffect["default"](() => {
248
267
  if (scrollLeft !== null) {
249
268
  ref.current.scrollLeft = scrollLeft;
@@ -253,67 +272,63 @@ function TabList(_ref2) {
253
272
  if (!isScrollable) {
254
273
  return;
255
274
  }
256
-
257
275
  const tab = activation === 'manual' ? tabs.current[activeIndex] : tabs.current[selectedIndex];
258
-
259
276
  if (tab) {
260
277
  // The width of the "scroll buttons"
278
+
261
279
  // The start and end position of the selected tab
262
280
  const {
263
281
  width: tabWidth
264
282
  } = tab.getBoundingClientRect();
265
283
  const start = tab.offsetLeft;
266
- const end = tab.offsetLeft + tabWidth; // The start and end of the visible area for the tabs
284
+ const end = tab.offsetLeft + tabWidth;
267
285
 
286
+ // The start and end of the visible area for the tabs
268
287
  const visibleStart = ref.current.scrollLeft + buttonWidth;
269
- const visibleEnd = ref.current.scrollLeft + ref.current.clientWidth - buttonWidth; // The beginning of the tab is clipped and not visible
288
+ const visibleEnd = ref.current.scrollLeft + ref.current.clientWidth - buttonWidth;
270
289
 
290
+ // The beginning of the tab is clipped and not visible
271
291
  if (start < visibleStart) {
272
292
  setScrollLeft(start - buttonWidth);
273
- } // The end of teh tab is clipped and not visible
274
-
293
+ }
275
294
 
295
+ // The end of the tab is clipped and not visible
276
296
  if (end > visibleEnd) {
277
297
  setScrollLeft(end + buttonWidth - ref.current.clientWidth);
278
298
  }
279
299
  }
280
- }, [activation, activeIndex, selectedIndex, isScrollable]);
300
+ }, [activation, activeIndex, selectedIndex, isScrollable, children]);
281
301
  usePressable.usePressable(previousButton, {
282
302
  onPress(_ref3) {
283
303
  let {
284
304
  longPress
285
305
  } = _ref3;
286
-
287
306
  if (!longPress) {
288
307
  setScrollLeft(Math.max(scrollLeft - ref.current.scrollWidth / tabs.current.length * 1.5, 0));
289
308
  }
290
309
  },
291
-
292
310
  onLongPress() {
293
311
  return createLongPressBehavior(ref, 'backward', setScrollLeft);
294
312
  }
295
-
296
313
  });
297
314
  usePressable.usePressable(nextButton, {
298
315
  onPress(_ref4) {
299
316
  let {
300
317
  longPress
301
318
  } = _ref4;
302
-
303
319
  if (!longPress) {
304
320
  setScrollLeft(Math.min(scrollLeft + ref.current.scrollWidth / tabs.current.length * 1.5, ref.current.scrollWidth - ref.current.clientWidth));
305
321
  }
306
322
  },
307
-
308
323
  onLongPress() {
309
324
  return createLongPressBehavior(ref, 'forward', setScrollLeft);
310
325
  }
311
-
312
326
  });
313
327
  return /*#__PURE__*/React__default["default"].createElement("div", {
314
328
  className: className
315
329
  }, /*#__PURE__*/React__default["default"].createElement("button", _rollupPluginBabelHelpers["extends"]({
316
330
  "aria-hidden": "true",
331
+ tabIndex: "-1",
317
332
  "aria-label": "Scroll left",
318
333
  ref: previousButton,
319
334
  className: previousButtonClasses,
@@ -329,7 +344,8 @@ function TabList(_ref2) {
329
344
  return /*#__PURE__*/React__default["default"].createElement(TabContext.Provider, {
330
345
  value: {
331
346
  index,
332
- hasSecondaryLabel: hasSecondaryLabelTabs
347
+ hasSecondaryLabel: hasSecondaryLabelTabs,
348
+ contained
333
349
  }
334
350
  }, /*#__PURE__*/React__default["default"].cloneElement(child, {
335
351
  ref: node => {
@@ -338,75 +354,66 @@ function TabList(_ref2) {
338
354
  }));
339
355
  })), /*#__PURE__*/React__default["default"].createElement("button", _rollupPluginBabelHelpers["extends"]({
340
356
  "aria-hidden": "true",
357
+ tabIndex: "-1",
341
358
  "aria-label": "Scroll right",
342
359
  ref: nextButton,
343
360
  className: nextButtonClasses,
344
361
  type: "button"
345
362
  }, rightOverflowButtonProps), _ChevronRight || (_ChevronRight = /*#__PURE__*/React__default["default"].createElement(iconsReact.ChevronRight, null))));
346
363
  }
347
-
348
364
  TabList.propTypes = {
349
365
  /**
350
366
  * Specify whether the content tab should be activated automatically or
351
367
  * manually
352
368
  */
353
369
  activation: PropTypes__default["default"].oneOf(['automatic', 'manual']),
354
-
355
370
  /**
356
371
  * Provide an accessible label to be read when a user interacts with this
357
372
  * component
358
373
  */
359
374
  'aria-label': PropTypes__default["default"].string.isRequired,
360
-
361
375
  /**
362
376
  * Provide child elements to be rendered inside of `ContentTabs`.
363
377
  * These elements should render a `ContentTab`
364
378
  */
365
379
  children: PropTypes__default["default"].node,
366
-
367
380
  /**
368
381
  * Specify an optional className to be added to the container node
369
382
  */
370
383
  className: PropTypes__default["default"].string,
371
-
372
384
  /**
373
385
  * Specify whether component is contained type
374
386
  */
375
387
  contained: PropTypes__default["default"].bool,
376
-
377
388
  /**
378
389
  * If using `IconTab`, specify the size of the icon being used.
379
390
  */
380
391
  iconSize: PropTypes__default["default"].oneOf(['default', 'lg']),
381
-
382
392
  /**
383
393
  * Provide the props that describe the left overflow button
384
394
  */
385
395
  leftOverflowButtonProps: PropTypes__default["default"].object,
386
-
387
396
  /**
388
397
  * Specify whether or not to use the light component variant
389
398
  */
390
399
  light: deprecate["default"](PropTypes__default["default"].bool, 'The `light` prop for `TabList` has ' + 'been deprecated in favor of the new `Layer` component. It will be removed in the next major release.'),
391
-
392
400
  /**
393
401
  * Provide the props that describe the right overflow button
394
402
  */
395
403
  rightOverflowButtonProps: PropTypes__default["default"].object,
396
-
397
404
  /**
398
405
  * Optionally provide a delay (in milliseconds) passed to the lodash
399
406
  * debounce of the onScroll handler. This will impact the responsiveness
400
407
  * of scroll arrow buttons rendering when scrolling to the first or last tab.
401
408
  */
402
409
  scrollDebounceWait: PropTypes__default["default"].number,
403
-
404
410
  /**
405
411
  * Choose whether or not to automatically scroll to newly selected tabs
406
412
  * on component rerender
407
413
  */
408
414
  scrollIntoView: PropTypes__default["default"].bool
409
415
  };
416
+
410
417
  /**
411
418
  * Helper function to setup the behavior when a button is "long pressed". This
412
419
  * function will take a ref to the tablist, a direction, and a setter for
@@ -421,7 +428,6 @@ TabList.propTypes = {
421
428
  * @param {Function} setScrollLeft
422
429
  * @returns {Function}
423
430
  */
424
-
425
431
  function createLongPressBehavior(ref, direction, setScrollLeft) {
426
432
  // We manually override the scroll behavior to be "auto". If it is set as
427
433
  // smooth, this animation does not update correctly
@@ -429,27 +435,24 @@ function createLongPressBehavior(ref, direction, setScrollLeft) {
429
435
  ref.current.style['scroll-behavior'] = 'auto';
430
436
  const scrollDelta = direction === 'forward' ? 5 : -5;
431
437
  let frameId = null;
432
-
433
438
  function tick() {
434
439
  ref.current.scrollLeft = ref.current.scrollLeft + scrollDelta;
435
440
  frameId = requestAnimationFrame(tick);
436
441
  }
437
-
438
442
  frameId = requestAnimationFrame(tick);
439
443
  return () => {
440
444
  // Restore the previous scroll behavior
441
- ref.current.style['scroll-behavior'] = defaultScrollBehavior; // Make sure that our `scrollLeft` value is in sync with the existing
442
- // `ref` after our requestAnimationFrame loop above
445
+ ref.current.style['scroll-behavior'] = defaultScrollBehavior;
443
446
 
447
+ // Make sure that our `scrollLeft` value is in sync with the existing
448
+ // `ref` after our requestAnimationFrame loop above
444
449
  setScrollLeft(ref.current.scrollLeft);
445
-
446
450
  if (frameId) {
447
451
  cancelAnimationFrame(frameId);
448
452
  }
449
453
  };
450
454
  }
451
-
452
- const Tab = /*#__PURE__*/React__default["default"].forwardRef(function Tab(_ref5, ref) {
455
+ const Tab = /*#__PURE__*/React__default["default"].forwardRef(function Tab(_ref5, forwardRef) {
453
456
  let {
454
457
  as: BaseComponent = 'button',
455
458
  children,
@@ -465,18 +468,67 @@ const Tab = /*#__PURE__*/React__default["default"].forwardRef(function Tab(_ref5
465
468
  const {
466
469
  selectedIndex,
467
470
  setSelectedIndex,
468
- baseId
471
+ baseId,
472
+ dismissable,
473
+ onTabCloseRequest
469
474
  } = React__default["default"].useContext(TabsContext);
470
475
  const {
471
476
  index,
472
- hasSecondaryLabel
477
+ hasSecondaryLabel,
478
+ contained
473
479
  } = React__default["default"].useContext(TabContext);
480
+ const dismissIconRef = React.useRef(null);
481
+ const tabRef = React.useRef(null);
482
+ const ref = useMergedRefs.useMergedRefs([forwardRef, tabRef]);
483
+ const [ignoreHover, setIgnoreHover] = React.useState(false);
474
484
  const id = `${baseId}-tab-${index}`;
475
485
  const panelId = `${baseId}-tabpanel-${index}`;
476
486
  const className = cx__default["default"](`${prefix}--tabs__nav-item`, `${prefix}--tabs__nav-link`, customClassName, {
477
487
  [`${prefix}--tabs__nav-item--selected`]: selectedIndex === index,
478
- [`${prefix}--tabs__nav-item--disabled`]: disabled
488
+ [`${prefix}--tabs__nav-item--disabled`]: disabled,
489
+ [`${prefix}--tabs__nav-item--hover-off`]: ignoreHover
479
490
  });
491
+ const onDismissIconMouseEnter = evt => {
492
+ if (contained) {
493
+ evt.stopPropagation();
494
+ setIgnoreHover(true);
495
+ tabRef.current.classList.add(`${prefix}--tabs__nav-item--hover-off`);
496
+ }
497
+ };
498
+ const onDismissIconMouseLeave = () => {
499
+ if (contained) {
500
+ tabRef.current.classList.remove(`${prefix}--tabs__nav-item--hover-off`);
501
+ setIgnoreHover(false);
502
+ }
503
+ };
504
+ useEvent.useEvent(dismissIconRef, 'mouseover', onDismissIconMouseEnter);
505
+ useEvent.useEvent(dismissIconRef, 'mouseleave', onDismissIconMouseLeave);
506
+ const handleClose = evt => {
507
+ evt.stopPropagation();
508
+ onTabCloseRequest?.(index);
509
+ };
510
+ const handleKeyDown = event => {
511
+ if (dismissable && match.match(event, keys.Delete)) {
512
+ handleClose(event);
513
+ }
514
+ onKeyDown?.(event);
515
+ };
516
+ const DismissIcon =
517
+ /*#__PURE__*/
518
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events
519
+ React__default["default"].createElement("div", {
520
+ role: "button",
521
+ tabIndex: -1,
522
+ "aria-hidden": true,
523
+ className: cx__default["default"](`${prefix}--tabs__nav-item--close-icon`, {
524
+ [`${prefix}--visually-hidden`]: !dismissable
525
+ }),
526
+ onClick: handleClose,
527
+ "aria-label": "Close tab",
528
+ title: "Close tab",
529
+ ref: dismissIconRef
530
+ }, _Close || (_Close = /*#__PURE__*/React__default["default"].createElement(iconsReact.Close, null)));
531
+ const hasIcon = Icon || dismissable;
480
532
  return /*#__PURE__*/React__default["default"].createElement(BaseComponent, _rollupPluginBabelHelpers["extends"]({}, rest, {
481
533
  "aria-controls": panelId,
482
534
  "aria-disabled": disabled,
@@ -490,23 +542,23 @@ const Tab = /*#__PURE__*/React__default["default"].forwardRef(function Tab(_ref5
490
542
  if (disabled) {
491
543
  return;
492
544
  }
493
-
494
545
  setSelectedIndex(index);
495
-
496
546
  if (onClick) {
497
547
  onClick(evt);
498
548
  }
499
549
  },
500
- onKeyDown: onKeyDown,
550
+ onKeyDown: handleKeyDown,
501
551
  tabIndex: selectedIndex === index ? '0' : '-1',
502
552
  type: "button"
503
553
  }), /*#__PURE__*/React__default["default"].createElement("div", {
504
554
  className: `${prefix}--tabs__nav-item-label-wrapper`
505
555
  }, /*#__PURE__*/React__default["default"].createElement("span", {
506
556
  className: `${prefix}--tabs__nav-item-label`
507
- }, children), Icon && /*#__PURE__*/React__default["default"].createElement("div", {
508
- className: `${prefix}--tabs__nav-item--icon`
509
- }, /*#__PURE__*/React__default["default"].createElement(Icon, {
557
+ }, children), /*#__PURE__*/React__default["default"].createElement("div", {
558
+ className: cx__default["default"](`${prefix}--tabs__nav-item--icon`, {
559
+ [`${prefix}--visually-hidden`]: !hasIcon
560
+ })
561
+ }, DismissIcon, !dismissable && hasIcon && /*#__PURE__*/React__default["default"].createElement(Icon, {
510
562
  size: 16
511
563
  }))), hasSecondaryLabel && /*#__PURE__*/React__default["default"].createElement("div", {
512
564
  className: `${prefix}--tabs__nav-item-secondary-label`
@@ -517,45 +569,37 @@ Tab.propTypes = {
517
569
  * Provide a custom element to render instead of the default button
518
570
  */
519
571
  as: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].elementType]),
520
-
521
572
  /**
522
573
  * Provide child elements to be rendered inside of `Tab`.
523
574
  */
524
575
  children: PropTypes__default["default"].node,
525
-
526
576
  /**
527
577
  * Specify an optional className to be added to your Tab
528
578
  */
529
579
  className: PropTypes__default["default"].string,
530
-
531
580
  /**
532
581
  * Whether your Tab is disabled.
533
582
  */
534
583
  disabled: PropTypes__default["default"].bool,
535
-
536
584
  /**
537
585
  * Provide a handler that is invoked when a user clicks on the control
538
586
  */
539
587
  onClick: PropTypes__default["default"].func,
540
-
541
588
  /**
542
589
  * Provide a handler that is invoked on the key down event for the control
543
590
  */
544
591
  onKeyDown: PropTypes__default["default"].func,
545
-
546
592
  /*
547
593
  * An optional parameter to allow overriding the anchor rendering.
548
594
  * Useful for using Tab along with react-router or other client
549
595
  * side router libraries.
550
596
  **/
551
597
  renderButton: PropTypes__default["default"].func,
552
-
553
598
  /**
554
599
  * Optional prop to render an icon next to the label.
555
600
  * Can be a React component class
556
601
  */
557
602
  renderIcon: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object]),
558
-
559
603
  /*
560
604
  * An optional label to render under the primary tab label.
561
605
  /* This prop is only useful for conained tabs
@@ -591,22 +635,18 @@ IconTab.propTypes = {
591
635
  * Provide an icon to be rendered inside of `IconTab` as the visual label for Tab.
592
636
  */
593
637
  children: PropTypes__default["default"].node,
594
-
595
638
  /**
596
639
  * Specify an optional className to be added to your Tab
597
640
  */
598
641
  className: PropTypes__default["default"].string,
599
-
600
642
  /**
601
643
  * Specify whether the tooltip for the icon should be open when it first renders
602
644
  */
603
645
  defaultOpen: PropTypes__default["default"].bool,
604
-
605
646
  /**
606
647
  * Specify the duration in milliseconds to delay before displaying the tooltip for the icon.
607
648
  */
608
649
  enterDelayMs: PropTypes__default["default"].number,
609
-
610
650
  /**
611
651
  * Provide the label to be rendered inside of the Tooltip. The label will use
612
652
  * `aria-labelledby` and will fully describe the child node that is provided.
@@ -614,7 +654,6 @@ IconTab.propTypes = {
614
654
  * announced to the screen reader.
615
655
  */
616
656
  label: PropTypes__default["default"].node.isRequired,
617
-
618
657
  /**
619
658
  * Specify the duration in milliseconds to delay before hiding the tooltip
620
659
  */
@@ -645,27 +684,23 @@ const TabPanel = /*#__PURE__*/React__default["default"].forwardRef(function TabP
645
684
  if (!panel.current) {
646
685
  return;
647
686
  }
648
-
649
687
  const content = useNoInteractiveChildren.getInteractiveContent(panel.current);
650
-
651
688
  if (content) {
652
689
  setInteractiveContent(true);
653
690
  setTabIndex('-1');
654
691
  }
655
- }); // tabindex should only be 0 if no interactive content in children
692
+ });
656
693
 
694
+ // tabindex should only be 0 if no interactive content in children
657
695
  React.useEffect(() => {
658
696
  if (!panel.current) {
659
697
  return;
660
698
  }
661
-
662
699
  const {
663
700
  current: node
664
701
  } = panel;
665
-
666
702
  function callback() {
667
703
  const content = useNoInteractiveChildren.getInteractiveContent(node);
668
-
669
704
  if (content) {
670
705
  setInteractiveContent(true);
671
706
  setTabIndex('-1');
@@ -674,7 +709,6 @@ const TabPanel = /*#__PURE__*/React__default["default"].forwardRef(function TabP
674
709
  setTabIndex('0');
675
710
  }
676
711
  }
677
-
678
712
  const observer = new MutationObserver(callback);
679
713
  observer.observe(node, {
680
714
  childList: true,
@@ -699,13 +733,11 @@ TabPanel.propTypes = {
699
733
  * Provide child elements to be rendered inside of `TabPanel`.
700
734
  */
701
735
  children: PropTypes__default["default"].node,
702
-
703
736
  /**
704
737
  * Specify an optional className to be added to TabPanel.
705
738
  */
706
739
  className: PropTypes__default["default"].string
707
740
  };
708
-
709
741
  function TabPanels(_ref8) {
710
742
  let {
711
743
  children
@@ -716,7 +748,6 @@ function TabPanels(_ref8) {
716
748
  }, child);
717
749
  });
718
750
  }
719
-
720
751
  TabPanels.propTypes = {
721
752
  /**
722
753
  * Provide child elements to be rendered inside of `TabPanels`.