@carbon/react 1.80.1 → 1.81.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 (293) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +785 -785
  2. package/es/components/Accordion/AccordionItem.d.ts +2 -2
  3. package/es/components/AspectRatio/AspectRatio.d.ts +2 -2
  4. package/es/components/Button/Button.js +3 -0
  5. package/es/components/Button/ButtonBase.d.ts +2 -2
  6. package/es/components/ChatButton/ChatButton.js +5 -3
  7. package/es/components/CodeSnippet/CodeSnippet.js +2 -0
  8. package/es/components/ComboBox/ComboBox.d.ts +1 -1
  9. package/es/components/ComboBox/ComboBox.js +52 -30
  10. package/es/components/ComposedModal/ComposedModal.d.ts +1 -1
  11. package/es/components/ComposedModal/ComposedModal.js +1 -2
  12. package/es/components/ComposedModal/ModalFooter.js +0 -1
  13. package/es/components/ContainedList/ContainedListItem/ContainedListItem.js +0 -1
  14. package/es/components/ContentSwitcher/ContentSwitcher.d.ts +1 -1
  15. package/es/components/ContextMenu/useContextMenu.d.ts +1 -1
  16. package/es/components/DataTable/DataTable.d.ts +5 -5
  17. package/es/components/DataTable/DataTable.js +1 -1
  18. package/es/components/DataTable/TableActionList.d.ts +1 -1
  19. package/es/components/DataTable/TableCell.js +28 -4
  20. package/es/components/DataTable/TableExpandHeader.d.ts +1 -1
  21. package/es/components/DataTable/TableHead.d.ts +1 -1
  22. package/es/components/DataTable/TableToolbarContent.d.ts +1 -1
  23. package/es/components/DataTable/TableToolbarSearch.d.ts +1 -1
  24. package/es/components/DataTable/tools/cells.d.ts +13 -0
  25. package/es/components/DataTable/tools/cells.js +3 -6
  26. package/es/components/DataTable/tools/filter.d.ts +26 -0
  27. package/es/components/DataTable/tools/filter.js +8 -17
  28. package/es/components/DatePicker/DatePicker.js +1 -1
  29. package/es/components/DatePickerInput/DatePickerInput.d.ts +2 -2
  30. package/es/components/Dropdown/Dropdown.d.ts +1 -1
  31. package/es/components/Dropdown/Dropdown.js +6 -6
  32. package/es/components/FeatureFlags/index.d.ts +1 -1
  33. package/es/components/FileUploader/FileUploader.d.ts +6 -1
  34. package/es/components/FileUploader/FileUploader.js +3 -1
  35. package/es/components/FileUploader/FileUploaderButton.d.ts +1 -1
  36. package/es/components/FileUploader/FileUploaderDropContainer.d.ts +1 -1
  37. package/es/components/FluidDatePickerInput/FluidDatePickerInput.d.ts +1 -1
  38. package/es/components/FluidDatePickerInput/FluidDatePickerInput.js +5 -6
  39. package/es/components/FluidMultiSelect/FluidFilterableMultiSelect.d.ts +3 -3
  40. package/es/components/FluidMultiSelect/FluidMultiSelect.d.ts +2 -2
  41. package/es/components/FluidMultiSelect/FluidMultiSelect.js +6 -4
  42. package/es/components/FluidNumberInput/FluidNumberInput.Skeleton.js +40 -0
  43. package/es/components/FluidNumberInput/FluidNumberInput.js +123 -0
  44. package/es/components/FluidTextInput/FluidTextInput.js +2 -2
  45. package/es/components/Grid/Column.js +1 -1
  46. package/es/components/Grid/GridTypes.d.ts +6 -1
  47. package/es/components/Layer/LayerLevel.d.ts +3 -3
  48. package/es/components/Layer/LayerLevel.js +4 -3
  49. package/es/components/Layer/index.d.ts +4 -2
  50. package/es/components/Layer/index.js +3 -2
  51. package/es/components/Link/Link.js +3 -1
  52. package/es/components/Menu/Menu.d.ts +1 -1
  53. package/es/components/Menu/Menu.js +4 -14
  54. package/es/components/Menu/MenuContext.d.ts +1 -1
  55. package/es/components/Menu/MenuItem.js +15 -4
  56. package/es/components/Modal/Modal.js +5 -2
  57. package/es/components/ModalWrapper/ModalWrapper.d.ts +2 -2
  58. package/es/components/MultiSelect/FilterableMultiSelect.d.ts +3 -3
  59. package/es/components/MultiSelect/FilterableMultiSelect.js +4 -3
  60. package/es/components/MultiSelect/MultiSelect.d.ts +2 -6
  61. package/es/components/MultiSelect/MultiSelect.js +22 -4
  62. package/es/components/MultiSelect/index.d.ts +2 -4
  63. package/es/components/NumberInput/NumberInput.js +2 -1
  64. package/es/components/OverflowMenu/OverflowMenu.d.ts +7 -1
  65. package/es/components/OverflowMenu/OverflowMenu.js +69 -17
  66. package/es/components/OverflowMenu/index.d.ts +2 -4
  67. package/es/components/OverflowMenu/index.js +10 -6
  68. package/es/components/OverflowMenu/next/index.js +0 -1
  69. package/es/components/OverflowMenuItem/OverflowMenuItem.d.ts +4 -0
  70. package/es/components/PageHeader/PageHeader.d.ts +9 -2
  71. package/es/components/PageHeader/PageHeader.js +16 -4
  72. package/es/components/PageHeader/index.d.ts +2 -2
  73. package/es/components/PageHeader/index.js +1 -1
  74. package/es/components/PaginationNav/PaginationNav.d.ts +1 -1
  75. package/es/components/PaginationNav/PaginationNav.js +2 -1
  76. package/es/components/Popover/index.d.ts +3 -2
  77. package/es/components/Popover/index.js +10 -5
  78. package/es/components/Portal/index.d.ts +1 -1
  79. package/es/components/Search/Search.js +0 -1
  80. package/es/components/SkeletonText/SkeletonText.js +3 -1
  81. package/es/components/Slider/Slider.d.ts +3 -13
  82. package/es/components/Slider/Slider.js +2 -14
  83. package/es/components/Tabs/Tabs.d.ts +2 -2
  84. package/es/components/Tabs/Tabs.js +8 -6
  85. package/es/components/Tabs/usePressable.js +1 -1
  86. package/es/components/Tag/Tag.js +9 -2
  87. package/es/components/Text/Text.js +3 -2
  88. package/es/components/TextInput/ControlledPasswordInput.d.ts +1 -1
  89. package/es/components/TextInput/ControlledPasswordInput.js +0 -6
  90. package/es/components/TextInput/TextInput.d.ts +1 -1
  91. package/es/components/TextInput/TextInput.js +0 -4
  92. package/es/components/TextInput/index.d.ts +6 -0
  93. package/es/components/TextInput/index.js +0 -8
  94. package/es/components/Tile/Tile.js +0 -1
  95. package/es/components/Toggle/Toggle.d.ts +1 -1
  96. package/es/components/ToggleSmall/ToggleSmall.Skeleton.d.ts +9 -14
  97. package/es/components/ToggleSmall/ToggleSmall.Skeleton.js +37 -41
  98. package/es/components/Toggletip/index.js +11 -8
  99. package/es/components/Tooltip/Tooltip.d.ts +1 -1
  100. package/es/components/TreeView/TreeView.d.ts +1 -1
  101. package/es/components/UIShell/Content.d.ts +14 -1
  102. package/es/components/UIShell/HeaderGlobalBar.d.ts +1 -1
  103. package/es/components/UIShell/HeaderMenu.d.ts +2 -99
  104. package/es/components/UIShell/HeaderMenu.js +10 -3
  105. package/es/components/UIShell/HeaderMenuButton.d.ts +1 -98
  106. package/es/components/UIShell/HeaderMenuItem.d.ts +3 -4
  107. package/es/components/UIShell/HeaderMenuItem.js +3 -3
  108. package/es/components/UIShell/HeaderName.js +1 -1
  109. package/es/components/UIShell/HeaderNavigation.d.ts +0 -97
  110. package/es/components/UIShell/Link.d.ts +8 -8
  111. package/es/components/UIShell/Link.js +8 -5
  112. package/es/components/UIShell/SideNav.d.ts +3 -3
  113. package/es/components/UIShell/SideNav.js +1 -1
  114. package/es/components/UIShell/SideNavHeader.js +0 -1
  115. package/es/components/UIShell/SideNavLink.d.ts +3 -4
  116. package/es/components/UIShell/SideNavLink.js +8 -3
  117. package/es/components/UIShell/SideNavMenu.js +0 -1
  118. package/es/components/UIShell/SideNavMenuItem.d.ts +1 -49
  119. package/es/components/UIShell/SideNavMenuItem.js +1 -1
  120. package/es/components/UIShell/SideNavSwitcher.js +0 -1
  121. package/es/components/UIShell/SwitcherItem.d.ts +2 -2
  122. package/es/components/UIShell/SwitcherItem.js +1 -1
  123. package/es/index.d.ts +2 -2
  124. package/es/index.js +7 -7
  125. package/es/internal/FloatingMenu.js +2 -1
  126. package/es/internal/clamp.d.ts +10 -0
  127. package/es/internal/clamp.js +13 -0
  128. package/es/internal/useEvent.d.ts +9 -0
  129. package/es/internal/useEvent.js +8 -49
  130. package/es/internal/useId.js +1 -1
  131. package/es/internal/useMatchMedia.d.ts +7 -2
  132. package/es/internal/useMatchMedia.js +9 -10
  133. package/es/internal/useNoInteractiveChildren.js +4 -2
  134. package/es/internal/useOutsideClick.d.ts +1 -1
  135. package/es/prop-types/AriaPropTypes.js +1 -1
  136. package/es/prop-types/isRequiredOneOf.d.ts +16 -0
  137. package/es/prop-types/isRequiredOneOf.js +11 -9
  138. package/es/tools/setupGetInstanceId.d.ts +12 -0
  139. package/es/tools/setupGetInstanceId.js +7 -8
  140. package/es/tools/toggleClass.d.ts +14 -0
  141. package/es/tools/toggleClass.js +9 -10
  142. package/es/tools/wrapComponent.d.ts +1 -1
  143. package/es/types/common.d.ts +1 -6
  144. package/lib/components/Accordion/AccordionItem.d.ts +2 -2
  145. package/lib/components/AspectRatio/AspectRatio.d.ts +2 -2
  146. package/lib/components/Button/Button.js +3 -0
  147. package/lib/components/Button/ButtonBase.d.ts +2 -2
  148. package/lib/components/ChatButton/ChatButton.js +5 -3
  149. package/lib/components/CodeSnippet/CodeSnippet.js +2 -0
  150. package/lib/components/ComboBox/ComboBox.d.ts +1 -1
  151. package/lib/components/ComboBox/ComboBox.js +52 -30
  152. package/lib/components/ComposedModal/ComposedModal.d.ts +1 -1
  153. package/lib/components/ComposedModal/ComposedModal.js +2 -3
  154. package/lib/components/ComposedModal/ModalFooter.js +0 -1
  155. package/lib/components/ContainedList/ContainedListItem/ContainedListItem.js +0 -1
  156. package/lib/components/ContentSwitcher/ContentSwitcher.d.ts +1 -1
  157. package/lib/components/ContextMenu/useContextMenu.d.ts +1 -1
  158. package/lib/components/DataTable/DataTable.d.ts +5 -5
  159. package/lib/components/DataTable/DataTable.js +1 -1
  160. package/lib/components/DataTable/TableActionList.d.ts +1 -1
  161. package/lib/components/DataTable/TableCell.js +28 -3
  162. package/lib/components/DataTable/TableExpandHeader.d.ts +1 -1
  163. package/lib/components/DataTable/TableHead.d.ts +1 -1
  164. package/lib/components/DataTable/TableToolbarContent.d.ts +1 -1
  165. package/lib/components/DataTable/TableToolbarSearch.d.ts +1 -1
  166. package/lib/components/DataTable/tools/cells.d.ts +13 -0
  167. package/lib/components/DataTable/tools/cells.js +3 -6
  168. package/lib/components/DataTable/tools/filter.d.ts +26 -0
  169. package/lib/components/DataTable/tools/filter.js +8 -17
  170. package/lib/components/DatePicker/DatePicker.js +1 -1
  171. package/lib/components/DatePickerInput/DatePickerInput.d.ts +2 -2
  172. package/lib/components/Dropdown/Dropdown.d.ts +1 -1
  173. package/lib/components/Dropdown/Dropdown.js +6 -6
  174. package/lib/components/FeatureFlags/index.d.ts +1 -1
  175. package/lib/components/FileUploader/FileUploader.d.ts +6 -1
  176. package/lib/components/FileUploader/FileUploader.js +3 -1
  177. package/lib/components/FileUploader/FileUploaderButton.d.ts +1 -1
  178. package/lib/components/FileUploader/FileUploaderDropContainer.d.ts +1 -1
  179. package/lib/components/FluidDatePickerInput/FluidDatePickerInput.d.ts +1 -1
  180. package/lib/components/FluidDatePickerInput/FluidDatePickerInput.js +4 -5
  181. package/lib/components/FluidMultiSelect/FluidFilterableMultiSelect.d.ts +3 -3
  182. package/lib/components/FluidMultiSelect/FluidMultiSelect.d.ts +2 -2
  183. package/lib/components/FluidMultiSelect/FluidMultiSelect.js +7 -5
  184. package/lib/components/FluidNumberInput/FluidNumberInput.Skeleton.js +50 -0
  185. package/lib/components/FluidNumberInput/FluidNumberInput.js +133 -0
  186. package/lib/components/FluidTextInput/FluidTextInput.js +2 -2
  187. package/lib/components/Grid/Column.js +1 -1
  188. package/lib/components/Grid/GridTypes.d.ts +6 -1
  189. package/lib/components/Layer/LayerLevel.d.ts +3 -3
  190. package/lib/components/Layer/LayerLevel.js +4 -2
  191. package/lib/components/Layer/index.d.ts +4 -2
  192. package/lib/components/Layer/index.js +2 -1
  193. package/lib/components/Link/Link.js +3 -1
  194. package/lib/components/Menu/Menu.d.ts +1 -1
  195. package/lib/components/Menu/Menu.js +4 -14
  196. package/lib/components/Menu/MenuContext.d.ts +1 -1
  197. package/lib/components/Menu/MenuItem.js +15 -4
  198. package/lib/components/Modal/Modal.js +6 -3
  199. package/lib/components/ModalWrapper/ModalWrapper.d.ts +2 -2
  200. package/lib/components/MultiSelect/FilterableMultiSelect.d.ts +3 -3
  201. package/lib/components/MultiSelect/FilterableMultiSelect.js +3 -2
  202. package/lib/components/MultiSelect/MultiSelect.d.ts +2 -6
  203. package/lib/components/MultiSelect/MultiSelect.js +21 -3
  204. package/lib/components/MultiSelect/index.d.ts +2 -4
  205. package/lib/components/NumberInput/NumberInput.js +2 -1
  206. package/lib/components/OverflowMenu/OverflowMenu.d.ts +7 -1
  207. package/lib/components/OverflowMenu/OverflowMenu.js +69 -17
  208. package/lib/components/OverflowMenu/index.d.ts +2 -4
  209. package/lib/components/OverflowMenu/index.js +9 -5
  210. package/lib/components/OverflowMenu/next/index.js +0 -1
  211. package/lib/components/OverflowMenuItem/OverflowMenuItem.d.ts +4 -0
  212. package/lib/components/PageHeader/PageHeader.d.ts +9 -2
  213. package/lib/components/PageHeader/PageHeader.js +17 -3
  214. package/lib/components/PageHeader/index.d.ts +2 -2
  215. package/lib/components/PageHeader/index.js +2 -0
  216. package/lib/components/PaginationNav/PaginationNav.d.ts +1 -1
  217. package/lib/components/PaginationNav/PaginationNav.js +2 -1
  218. package/lib/components/Popover/index.d.ts +3 -2
  219. package/lib/components/Popover/index.js +10 -5
  220. package/lib/components/Portal/index.d.ts +1 -1
  221. package/lib/components/Search/Search.js +0 -1
  222. package/lib/components/SkeletonText/SkeletonText.js +3 -1
  223. package/lib/components/Slider/Slider.d.ts +3 -13
  224. package/lib/components/Slider/Slider.js +2 -14
  225. package/lib/components/Tabs/Tabs.d.ts +2 -2
  226. package/lib/components/Tabs/Tabs.js +7 -5
  227. package/lib/components/Tabs/usePressable.js +1 -1
  228. package/lib/components/Tag/Tag.js +9 -2
  229. package/lib/components/Text/Text.js +2 -1
  230. package/lib/components/TextInput/ControlledPasswordInput.d.ts +1 -1
  231. package/lib/components/TextInput/ControlledPasswordInput.js +0 -6
  232. package/lib/components/TextInput/TextInput.d.ts +1 -1
  233. package/lib/components/TextInput/TextInput.js +0 -4
  234. package/lib/components/TextInput/index.d.ts +6 -0
  235. package/lib/components/TextInput/index.js +1 -7
  236. package/lib/components/Tile/Tile.js +0 -1
  237. package/lib/components/Toggle/Toggle.d.ts +1 -1
  238. package/lib/components/ToggleSmall/ToggleSmall.Skeleton.d.ts +9 -14
  239. package/lib/components/ToggleSmall/ToggleSmall.Skeleton.js +34 -39
  240. package/lib/components/Toggletip/index.js +11 -8
  241. package/lib/components/Tooltip/Tooltip.d.ts +1 -1
  242. package/lib/components/TreeView/TreeView.d.ts +1 -1
  243. package/lib/components/UIShell/Content.d.ts +14 -1
  244. package/lib/components/UIShell/HeaderGlobalBar.d.ts +1 -1
  245. package/lib/components/UIShell/HeaderMenu.d.ts +2 -99
  246. package/lib/components/UIShell/HeaderMenu.js +10 -3
  247. package/lib/components/UIShell/HeaderMenuButton.d.ts +1 -98
  248. package/lib/components/UIShell/HeaderMenuItem.d.ts +3 -4
  249. package/lib/components/UIShell/HeaderMenuItem.js +3 -3
  250. package/lib/components/UIShell/HeaderName.js +1 -1
  251. package/lib/components/UIShell/HeaderNavigation.d.ts +0 -97
  252. package/lib/components/UIShell/Link.d.ts +8 -8
  253. package/lib/components/UIShell/Link.js +7 -5
  254. package/lib/components/UIShell/SideNav.d.ts +3 -3
  255. package/lib/components/UIShell/SideNav.js +1 -1
  256. package/lib/components/UIShell/SideNavHeader.js +0 -1
  257. package/lib/components/UIShell/SideNavLink.d.ts +3 -4
  258. package/lib/components/UIShell/SideNavLink.js +8 -3
  259. package/lib/components/UIShell/SideNavMenu.js +0 -1
  260. package/lib/components/UIShell/SideNavMenuItem.d.ts +1 -49
  261. package/lib/components/UIShell/SideNavMenuItem.js +1 -1
  262. package/lib/components/UIShell/SideNavSwitcher.js +0 -1
  263. package/lib/components/UIShell/SwitcherItem.d.ts +2 -2
  264. package/lib/components/UIShell/SwitcherItem.js +1 -1
  265. package/lib/index.d.ts +2 -2
  266. package/lib/index.js +13 -11
  267. package/lib/internal/FloatingMenu.js +2 -1
  268. package/lib/internal/clamp.d.ts +10 -0
  269. package/lib/internal/clamp.js +17 -0
  270. package/lib/internal/useEvent.d.ts +9 -0
  271. package/lib/internal/useEvent.js +8 -49
  272. package/lib/internal/useId.js +1 -1
  273. package/lib/internal/useMatchMedia.d.ts +7 -2
  274. package/lib/internal/useMatchMedia.js +9 -10
  275. package/lib/internal/useNoInteractiveChildren.js +4 -2
  276. package/lib/internal/useOutsideClick.d.ts +1 -1
  277. package/lib/prop-types/AriaPropTypes.js +1 -1
  278. package/lib/prop-types/isRequiredOneOf.d.ts +16 -0
  279. package/lib/prop-types/isRequiredOneOf.js +11 -9
  280. package/lib/tools/setupGetInstanceId.d.ts +12 -0
  281. package/lib/tools/setupGetInstanceId.js +7 -8
  282. package/lib/tools/toggleClass.d.ts +14 -0
  283. package/lib/tools/toggleClass.js +9 -10
  284. package/lib/tools/wrapComponent.d.ts +1 -1
  285. package/lib/types/common.d.ts +1 -6
  286. package/package.json +15 -15
  287. package/telemetry.yml +11 -12
  288. package/es/components/MultiSelect/index.js +0 -13
  289. package/es/internal/ClickListener.d.ts +0 -13
  290. package/es/internal/ClickListener.js +0 -47
  291. package/lib/components/MultiSelect/index.js +0 -19
  292. package/lib/internal/ClickListener.d.ts +0 -13
  293. package/lib/internal/ClickListener.js +0 -51
@@ -1,13 +0,0 @@
1
- /**
2
- * Copyright IBM Corp. 2016, 2025
3
- *
4
- * This source code is licensed under the Apache-2.0 license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import React, { type ReactElement } from 'react';
8
- interface ClickListenerProps {
9
- children: ReactElement;
10
- onClickOutside: (event: MouseEvent) => void;
11
- }
12
- export declare const ClickListener: ({ children, onClickOutside, }: ClickListenerProps) => React.ReactElement<any, string | React.JSXElementConstructor<any>>;
13
- export {};
@@ -1,47 +0,0 @@
1
- /**
2
- * Copyright IBM Corp. 2016, 2023
3
- *
4
- * This source code is licensed under the Apache-2.0 license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- import { useRef, useEffect, cloneElement } from 'react';
9
-
10
- const ClickListener = _ref => {
11
- let {
12
- children,
13
- onClickOutside
14
- } = _ref;
15
- const elementRef = useRef(null);
16
- const getEventTarget = event => {
17
- if (event.composed && typeof event.composedPath === 'function') {
18
- return event.composedPath()[0];
19
- }
20
- return event.target;
21
- };
22
- const handleDocumentClick = event => {
23
- if (elementRef.current?.contains) {
24
- const eventTarget = getEventTarget(event);
25
- if (eventTarget instanceof Node && !elementRef.current.contains(eventTarget)) {
26
- onClickOutside(event);
27
- }
28
- }
29
- };
30
- useEffect(() => {
31
- document.addEventListener('click', handleDocumentClick);
32
- return () => {
33
- document.removeEventListener('click', handleDocumentClick);
34
- };
35
- }, [onClickOutside]);
36
- const handleRef = el => {
37
- elementRef.current = el;
38
- if ('ref' in children && typeof children.ref === 'function') {
39
- children.ref(el);
40
- }
41
- };
42
- return /*#__PURE__*/cloneElement(children, {
43
- ref: handleRef
44
- });
45
- };
46
-
47
- export { ClickListener };
@@ -1,19 +0,0 @@
1
- /**
2
- * Copyright IBM Corp. 2016, 2023
3
- *
4
- * This source code is licensed under the Apache-2.0 license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- 'use strict';
9
-
10
- Object.defineProperty(exports, '__esModule', { value: true });
11
-
12
- var MultiSelect = require('./MultiSelect.js');
13
- var FilterableMultiSelect = require('./FilterableMultiSelect.js');
14
-
15
- FilterableMultiSelect["default"].displayName = 'FilterableMultiSelect';
16
-
17
- exports.MultiSelect = MultiSelect["default"];
18
- exports["default"] = MultiSelect["default"];
19
- exports.FilterableMultiSelect = FilterableMultiSelect["default"];
@@ -1,13 +0,0 @@
1
- /**
2
- * Copyright IBM Corp. 2016, 2025
3
- *
4
- * This source code is licensed under the Apache-2.0 license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import React, { type ReactElement } from 'react';
8
- interface ClickListenerProps {
9
- children: ReactElement;
10
- onClickOutside: (event: MouseEvent) => void;
11
- }
12
- export declare const ClickListener: ({ children, onClickOutside, }: ClickListenerProps) => React.ReactElement<any, string | React.JSXElementConstructor<any>>;
13
- export {};
@@ -1,51 +0,0 @@
1
- /**
2
- * Copyright IBM Corp. 2016, 2023
3
- *
4
- * This source code is licensed under the Apache-2.0 license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- 'use strict';
9
-
10
- Object.defineProperty(exports, '__esModule', { value: true });
11
-
12
- var React = require('react');
13
-
14
- const ClickListener = _ref => {
15
- let {
16
- children,
17
- onClickOutside
18
- } = _ref;
19
- const elementRef = React.useRef(null);
20
- const getEventTarget = event => {
21
- if (event.composed && typeof event.composedPath === 'function') {
22
- return event.composedPath()[0];
23
- }
24
- return event.target;
25
- };
26
- const handleDocumentClick = event => {
27
- if (elementRef.current?.contains) {
28
- const eventTarget = getEventTarget(event);
29
- if (eventTarget instanceof Node && !elementRef.current.contains(eventTarget)) {
30
- onClickOutside(event);
31
- }
32
- }
33
- };
34
- React.useEffect(() => {
35
- document.addEventListener('click', handleDocumentClick);
36
- return () => {
37
- document.removeEventListener('click', handleDocumentClick);
38
- };
39
- }, [onClickOutside]);
40
- const handleRef = el => {
41
- elementRef.current = el;
42
- if ('ref' in children && typeof children.ref === 'function') {
43
- children.ref(el);
44
- }
45
- };
46
- return /*#__PURE__*/React.cloneElement(children, {
47
- ref: handleRef
48
- });
49
- };
50
-
51
- exports.ClickListener = ClickListener;