@canonical/react-components 0.47.0 → 0.47.2

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 (152) hide show
  1. package/dist/__mocks__/nanoid.js +3 -3
  2. package/dist/components/Accordion/Accordion.js +28 -41
  3. package/dist/components/Accordion/AccordionSection/AccordionSection.js +18 -18
  4. package/dist/components/Accordion/AccordionSection/index.js +1 -1
  5. package/dist/components/Accordion/index.js +1 -1
  6. package/dist/components/ActionButton/ActionButton.js +34 -66
  7. package/dist/components/ActionButton/index.js +1 -1
  8. package/dist/components/ArticlePagination/ArticlePagination.js +10 -12
  9. package/dist/components/ArticlePagination/index.js +1 -1
  10. package/dist/components/Badge/Badge.js +24 -29
  11. package/dist/components/Badge/index.js +1 -1
  12. package/dist/components/Button/Button.js +21 -26
  13. package/dist/components/Button/index.js +4 -5
  14. package/dist/components/Card/Card.js +12 -14
  15. package/dist/components/Card/index.js +1 -1
  16. package/dist/components/CheckboxInput/CheckableInput/CheckableInput.js +15 -19
  17. package/dist/components/CheckboxInput/CheckableInput/index.js +1 -1
  18. package/dist/components/CheckboxInput/CheckboxInput.js +7 -10
  19. package/dist/components/CheckboxInput/index.js +1 -1
  20. package/dist/components/Chip/Chip.js +23 -33
  21. package/dist/components/Chip/index.js +1 -1
  22. package/dist/components/Code/Code.js +14 -17
  23. package/dist/components/Code/index.js +1 -1
  24. package/dist/components/CodeSnippet/CodeSnippet.js +9 -14
  25. package/dist/components/CodeSnippet/CodeSnippetBlock.js +24 -29
  26. package/dist/components/CodeSnippet/CodeSnippetDropdown.js +11 -11
  27. package/dist/components/CodeSnippet/index.js +2 -2
  28. package/dist/components/Col/Col.js +24 -26
  29. package/dist/components/Col/index.js +4 -5
  30. package/dist/components/ConfirmationButton/ConfirmationButton.js +18 -21
  31. package/dist/components/ConfirmationButton/index.js +1 -1
  32. package/dist/components/ConfirmationModal/ConfirmationModal.js +11 -15
  33. package/dist/components/ConfirmationModal/index.js +1 -1
  34. package/dist/components/ContextualMenu/ContextualMenu.js +89 -107
  35. package/dist/components/ContextualMenu/ContextualMenuDropdown/ContextualMenuDropdown.d.ts +4 -4
  36. package/dist/components/ContextualMenu/ContextualMenuDropdown/ContextualMenuDropdown.js +97 -107
  37. package/dist/components/ContextualMenu/ContextualMenuDropdown/index.js +1 -1
  38. package/dist/components/ContextualMenu/index.js +1 -1
  39. package/dist/components/EmptyState/EmptyState.js +9 -11
  40. package/dist/components/EmptyState/index.js +1 -1
  41. package/dist/components/Field/Field.js +66 -65
  42. package/dist/components/Field/index.js +1 -1
  43. package/dist/components/Form/Form.js +9 -11
  44. package/dist/components/Form/index.js +1 -1
  45. package/dist/components/Icon/Icon.js +9 -12
  46. package/dist/components/Icon/index.js +4 -5
  47. package/dist/components/Input/Input.js +38 -45
  48. package/dist/components/Input/index.js +1 -1
  49. package/dist/components/Label/Label.js +9 -11
  50. package/dist/components/Label/index.js +1 -1
  51. package/dist/components/Link/Link.js +12 -18
  52. package/dist/components/Link/index.js +1 -1
  53. package/dist/components/List/List.js +50 -54
  54. package/dist/components/List/index.js +1 -1
  55. package/dist/components/Loader/Loader.js +2 -3
  56. package/dist/components/Loader/index.js +1 -1
  57. package/dist/components/MainTable/MainTable.js +87 -104
  58. package/dist/components/MainTable/index.js +1 -1
  59. package/dist/components/Modal/Modal.js +45 -40
  60. package/dist/components/Modal/index.js +1 -1
  61. package/dist/components/ModularTable/ModularTable.js +63 -77
  62. package/dist/components/ModularTable/index.js +1 -1
  63. package/dist/components/Navigation/Navigation.js +63 -97
  64. package/dist/components/Navigation/NavigationLink/NavigationLink.js +32 -35
  65. package/dist/components/Navigation/NavigationLink/index.js +1 -1
  66. package/dist/components/Navigation/NavigationMenu/NavigationMenu.js +26 -45
  67. package/dist/components/Navigation/NavigationMenu/index.js +1 -1
  68. package/dist/components/Navigation/index.js +1 -1
  69. package/dist/components/Notification/Notification.js +49 -59
  70. package/dist/components/Notification/index.js +4 -5
  71. package/dist/components/NotificationProvider/NotificationProvider.js +47 -68
  72. package/dist/components/NotificationProvider/index.js +7 -7
  73. package/dist/components/NotificationProvider/messageBuilder.js +9 -9
  74. package/dist/components/NotificationProvider/types.d.ts +1 -0
  75. package/dist/components/Pagination/Pagination.js +55 -74
  76. package/dist/components/Pagination/PaginationButton/PaginationButton.js +11 -12
  77. package/dist/components/Pagination/PaginationButton/index.js +1 -1
  78. package/dist/components/Pagination/PaginationItem/PaginationItem.js +7 -7
  79. package/dist/components/Pagination/PaginationItem/index.js +1 -1
  80. package/dist/components/Pagination/index.js +1 -1
  81. package/dist/components/PasswordToggle/PasswordToggle.d.ts +1 -1
  82. package/dist/components/PasswordToggle/PasswordToggle.js +25 -40
  83. package/dist/components/PasswordToggle/index.js +1 -1
  84. package/dist/components/RadioInput/RadioInput.js +6 -8
  85. package/dist/components/RadioInput/index.js +1 -1
  86. package/dist/components/Row/Row.js +7 -9
  87. package/dist/components/Row/index.js +1 -1
  88. package/dist/components/SearchAndFilter/FilterPanelSection/FilterPanelSection.js +38 -51
  89. package/dist/components/SearchAndFilter/FilterPanelSection/index.js +1 -1
  90. package/dist/components/SearchAndFilter/SearchAndFilter.js +75 -135
  91. package/dist/components/SearchAndFilter/index.js +1 -1
  92. package/dist/components/SearchAndFilter/utils.js +4 -8
  93. package/dist/components/SearchBox/SearchBox.js +25 -33
  94. package/dist/components/SearchBox/index.js +1 -1
  95. package/dist/components/Select/Select.js +38 -44
  96. package/dist/components/Select/index.js +1 -1
  97. package/dist/components/Slider/Slider.js +27 -35
  98. package/dist/components/Slider/index.js +1 -1
  99. package/dist/components/Spinner/Spinner.js +10 -15
  100. package/dist/components/Spinner/index.js +1 -1
  101. package/dist/components/StatusLabel/StatusLabel.js +11 -13
  102. package/dist/components/StatusLabel/index.js +4 -5
  103. package/dist/components/Strip/Strip.js +27 -34
  104. package/dist/components/Strip/index.js +1 -1
  105. package/dist/components/SummaryButton/SummaryButton.js +9 -8
  106. package/dist/components/SummaryButton/index.js +1 -1
  107. package/dist/components/Switch/Switch.js +7 -10
  108. package/dist/components/Switch/index.js +1 -1
  109. package/dist/components/Table/Table.js +9 -13
  110. package/dist/components/Table/index.js +1 -1
  111. package/dist/components/TableCell/TableCell.js +11 -17
  112. package/dist/components/TableCell/index.js +1 -1
  113. package/dist/components/TableHeader/TableHeader.js +7 -9
  114. package/dist/components/TableHeader/index.js +1 -1
  115. package/dist/components/TablePagination/TablePagination.d.ts +37 -0
  116. package/dist/components/TablePagination/TablePagination.js +125 -0
  117. package/dist/components/TablePagination/TablePagination.scss +40 -0
  118. package/dist/components/TablePagination/TablePaginationControls/TablePaginationControls.d.ts +16 -0
  119. package/dist/components/TablePagination/TablePaginationControls/TablePaginationControls.js +66 -0
  120. package/dist/components/TablePagination/TablePaginationControls/index.d.ts +2 -0
  121. package/dist/components/TablePagination/TablePaginationControls/index.js +13 -0
  122. package/dist/components/TablePagination/index.d.ts +2 -0
  123. package/dist/components/TablePagination/index.js +13 -0
  124. package/dist/components/TableRow/TableRow.js +6 -8
  125. package/dist/components/TableRow/index.js +1 -1
  126. package/dist/components/Tabs/Tabs.js +17 -17
  127. package/dist/components/Tabs/index.js +1 -1
  128. package/dist/components/Textarea/Textarea.js +51 -45
  129. package/dist/components/Textarea/index.js +1 -1
  130. package/dist/components/Tooltip/Tooltip.d.ts +5 -1
  131. package/dist/components/Tooltip/Tooltip.js +76 -79
  132. package/dist/components/Tooltip/index.js +4 -5
  133. package/dist/enums.js +2 -3
  134. package/dist/hooks/index.d.ts +1 -1
  135. package/dist/hooks/index.js +16 -10
  136. package/dist/hooks/useId.js +1 -3
  137. package/dist/hooks/useListener.d.ts +2 -1
  138. package/dist/hooks/useListener.js +25 -24
  139. package/dist/hooks/useOnClickOutside.d.ts +12 -0
  140. package/dist/hooks/useOnClickOutside.js +45 -0
  141. package/dist/hooks/useOnEscapePressed.d.ts +3 -1
  142. package/dist/hooks/useOnEscapePressed.js +13 -6
  143. package/dist/hooks/usePagination.js +17 -29
  144. package/dist/hooks/usePrevious.js +4 -4
  145. package/dist/hooks/useThrottle.js +16 -25
  146. package/dist/hooks/useWindowFitment.js +30 -28
  147. package/dist/index.d.ts +3 -1
  148. package/dist/index.js +86 -74
  149. package/dist/utils.js +6 -13
  150. package/package.json +56 -49
  151. package/dist/hooks/useClickOutside.d.ts +0 -6
  152. package/dist/hooks/useClickOutside.js +0 -32
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -9,50 +8,53 @@ var _classnames = _interopRequireDefault(require("classnames"));
9
8
  var _react = _interopRequireWildcard(require("react"));
10
9
  var _Field = _interopRequireDefault(require("../Field"));
11
10
  var _hooks = require("../../hooks");
12
- var _excluded = ["caution", "className", "error", "grow", "help", "id", "label", "labelClassName", "onKeyUp", "required", "stacked", "style", "success", "takeFocus", "wrapperClassName"];
13
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
14
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
21
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
22
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
24
15
  /**
25
16
  * The props for the Textarea component.
26
17
  */
27
18
 
28
- var Textarea = function Textarea(_ref) {
29
- var caution = _ref.caution,
30
- className = _ref.className,
31
- error = _ref.error,
32
- _ref$grow = _ref.grow,
33
- grow = _ref$grow === void 0 ? false : _ref$grow,
34
- help = _ref.help,
35
- id = _ref.id,
36
- label = _ref.label,
37
- labelClassName = _ref.labelClassName,
38
- _onKeyUp = _ref.onKeyUp,
39
- required = _ref.required,
40
- stacked = _ref.stacked,
41
- style = _ref.style,
42
- success = _ref.success,
43
- _ref$takeFocus = _ref.takeFocus,
44
- takeFocus = _ref$takeFocus === void 0 ? false : _ref$takeFocus,
45
- wrapperClassName = _ref.wrapperClassName,
46
- props = _objectWithoutProperties(_ref, _excluded);
47
- var textareaRef = (0, _react.useRef)(null);
48
- var validationId = (0, _hooks.useId)();
49
- var helpId = (0, _hooks.useId)();
50
- var hasError = !!error;
51
- (0, _react.useEffect)(function () {
19
+ const Textarea = _ref => {
20
+ let {
21
+ caution,
22
+ className,
23
+ error,
24
+ grow = false,
25
+ help,
26
+ id,
27
+ label,
28
+ labelClassName,
29
+ onKeyUp,
30
+ required,
31
+ stacked,
32
+ style,
33
+ success,
34
+ takeFocus = false,
35
+ wrapperClassName,
36
+ ...props
37
+ } = _ref;
38
+ const textareaRef = (0, _react.useRef)(null);
39
+ const validationId = (0, _hooks.useId)();
40
+ const helpId = (0, _hooks.useId)();
41
+ const hasError = !!error;
42
+ const [innerValue, setInnervalue] = (0, _react.useState)(props.defaultValue);
43
+ (0, _react.useEffect)(() => {
52
44
  if (takeFocus) {
53
45
  textareaRef.current.focus();
54
46
  }
55
47
  }, [takeFocus]);
48
+ (0, _react.useLayoutEffect)(() => {
49
+ if (grow) {
50
+ const textArea = textareaRef.current;
51
+ if (textArea) {
52
+ textArea.style.height = "0px";
53
+ const scrollHeight = textArea.scrollHeight;
54
+ textArea.style.height = "".concat(scrollHeight, "px");
55
+ }
56
+ }
57
+ }, [textareaRef, grow, innerValue, props.value]);
56
58
  return /*#__PURE__*/_react.default.createElement(_Field.default, {
57
59
  caution: caution,
58
60
  className: wrapperClassName,
@@ -72,20 +74,24 @@ var Textarea = function Textarea(_ref) {
72
74
  "aria-invalid": hasError,
73
75
  className: (0, _classnames.default)("p-form-validation__input", className),
74
76
  id: id,
75
- onKeyUp: function onKeyUp(evt) {
76
- _onKeyUp && _onKeyUp(evt);
77
- if (grow) {
78
- evt.currentTarget.style.height = evt.currentTarget.scrollHeight + "px";
77
+ onKeyUp: evt => {
78
+ onKeyUp && onKeyUp(evt);
79
+ },
80
+ onChange: evt => {
81
+ if (!props.value) {
82
+ setInnervalue(evt.target.value);
79
83
  }
80
84
  },
81
85
  ref: textareaRef,
82
- style: grow && _objectSpread({
86
+ style: grow && {
83
87
  minHeight: "5rem",
84
88
  resize: "none",
85
89
  overflow: "hidden",
86
- boxSizing: "border-box"
87
- }, style) || style
88
- }, props)));
90
+ boxSizing: "border-box",
91
+ ...style
92
+ } || style
93
+ }, props, {
94
+ value: props.value || innerValue
95
+ })));
89
96
  };
90
- var _default = Textarea;
91
- exports.default = _default;
97
+ var _default = exports.default = Textarea;
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "default", {
7
7
  enumerable: true,
8
- get: function get() {
8
+ get: function () {
9
9
  return _Textarea.default;
10
10
  }
11
11
  });
@@ -56,6 +56,10 @@ export type Props = {
56
56
  * The z-index value of the tooltip message element.
57
57
  */
58
58
  zIndex?: number;
59
+ /**
60
+ * Delay in ms after which Tooltip will appear (defaults to 350ms).
61
+ */
62
+ delay?: number;
59
63
  };
60
64
  export declare const adjustForWindow: (position: Position, fitsWindow: WindowFitment) => Position;
61
65
  /**
@@ -70,5 +74,5 @@ export declare const adjustForWindow: (position: Position, fitsWindow: WindowFit
70
74
  * @param tooltipClassName An optional class to apply to the tooltip message element.
71
75
  * @param zIndex The z-index value of the tooltip message element.
72
76
  */
73
- declare const Tooltip: ({ autoAdjust, children, className, followMouse, message, position, positionElementClassName, tooltipClassName, zIndex, }: Props) => JSX.Element;
77
+ declare const Tooltip: ({ autoAdjust, children, className, followMouse, message, position, positionElementClassName, tooltipClassName, zIndex, delay, }: Props) => JSX.Element;
74
78
  export default Tooltip;
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -9,16 +8,10 @@ var _classnames = _interopRequireDefault(require("classnames"));
9
8
  var _react = _interopRequireWildcard(require("react"));
10
9
  var _reactUseportal = _interopRequireDefault(require("react-useportal"));
11
10
  var _hooks = require("../../hooks");
12
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
16
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
17
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
18
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
19
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
20
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
21
- var position = {
14
+ const position = exports.position = {
22
15
  btmCenter: "btm-center",
23
16
  btmLeft: "btm-left",
24
17
  btmRight: "btm-right",
@@ -28,18 +21,19 @@ var position = {
28
21
  topLeft: "top-left",
29
22
  topRight: "top-right"
30
23
  };
31
- exports.position = position;
32
- var getPositionStyle = function getPositionStyle(pos, wrapperNode) {
24
+ const getPositionStyle = (pos, wrapperNode) => {
33
25
  if (!wrapperNode) {
34
26
  return null;
35
27
  }
36
- var dimensions = wrapperNode.getBoundingClientRect();
37
- var x = dimensions.x,
38
- y = dimensions.y,
39
- height = dimensions.height,
40
- width = dimensions.width;
41
- var left = x + window.scrollX || 0;
42
- var top = y + window.scrollY || 0;
28
+ const dimensions = wrapperNode.getBoundingClientRect();
29
+ const {
30
+ x,
31
+ y,
32
+ height,
33
+ width
34
+ } = dimensions;
35
+ let left = x + window.scrollX || 0;
36
+ let top = y + window.scrollY || 0;
43
37
  switch (pos) {
44
38
  case "btm-center":
45
39
  left += width / 2;
@@ -72,12 +66,12 @@ var getPositionStyle = function getPositionStyle(pos, wrapperNode) {
72
66
  }
73
67
  return {
74
68
  position: "absolute",
75
- left: left,
76
- top: top
69
+ left,
70
+ top
77
71
  };
78
72
  };
79
- var adjustForWindow = function adjustForWindow(position, fitsWindow) {
80
- var newPosition = position;
73
+ const adjustForWindow = (position, fitsWindow) => {
74
+ let newPosition = position;
81
75
  if (!fitsWindow.fromLeft.fitsLeft && newPosition === "left") {
82
76
  newPosition = "top-right";
83
77
  }
@@ -123,48 +117,50 @@ var adjustForWindow = function adjustForWindow(position, fitsWindow) {
123
117
  * @param zIndex The z-index value of the tooltip message element.
124
118
  */
125
119
  exports.adjustForWindow = adjustForWindow;
126
- var Tooltip = function Tooltip(_ref) {
127
- var _ref$autoAdjust = _ref.autoAdjust,
128
- autoAdjust = _ref$autoAdjust === void 0 ? true : _ref$autoAdjust,
129
- children = _ref.children,
130
- className = _ref.className,
131
- _ref$followMouse = _ref.followMouse,
132
- followMouse = _ref$followMouse === void 0 ? false : _ref$followMouse,
133
- message = _ref.message,
134
- _ref$position = _ref.position,
135
- position = _ref$position === void 0 ? "top-left" : _ref$position,
136
- positionElementClassName = _ref.positionElementClassName,
137
- tooltipClassName = _ref.tooltipClassName,
138
- zIndex = _ref.zIndex;
139
- var wrapperRef = (0, _react.useRef)(null);
140
- var messageRef = (0, _react.useRef)(null);
141
- var _useState = (0, _react.useState)(position),
142
- _useState2 = _slicedToArray(_useState, 2),
143
- adjustedPosition = _useState2[0],
144
- setAdjustedPosition = _useState2[1];
145
- var _useState3 = (0, _react.useState)({
146
- position: "absolute",
147
- // Initially position the tooltip of the screen in case it gets shown
148
- // before setting the position.
149
- left: -9999999,
150
- top: -9999999
151
- }),
152
- _useState4 = _slicedToArray(_useState3, 2),
153
- positionStyle = _useState4[0],
154
- setPositionStyle = _useState4[1];
155
- var _usePortal = (0, _reactUseportal.default)(),
156
- openPortal = _usePortal.openPortal,
157
- closePortal = _usePortal.closePortal,
158
- isOpen = _usePortal.isOpen,
159
- Portal = _usePortal.Portal;
160
- var tooltipId = (0, _hooks.useId)();
161
- (0, _react.useEffect)(function () {
120
+ const Tooltip = _ref => {
121
+ let {
122
+ autoAdjust = true,
123
+ children,
124
+ className,
125
+ followMouse = false,
126
+ message,
127
+ position = "top-left",
128
+ positionElementClassName,
129
+ tooltipClassName,
130
+ zIndex,
131
+ delay = 350
132
+ } = _ref;
133
+ const wrapperRef = (0, _react.useRef)(null);
134
+ const messageRef = (0, _react.useRef)(null);
135
+ const [adjustedPosition, setAdjustedPosition] = (0, _react.useState)(position);
136
+ const [positionStyle, setPositionStyle] = (0, _react.useState)({
137
+ position: "absolute",
138
+ // Initially position the tooltip of the screen in case it gets shown
139
+ // before setting the position.
140
+ left: -9999999,
141
+ top: -9999999
142
+ });
143
+ const {
144
+ openPortal,
145
+ closePortal,
146
+ isOpen,
147
+ Portal
148
+ } = (0, _reactUseportal.default)({
149
+ programmaticallyOpen: true
150
+ });
151
+ const tooltipId = (0, _hooks.useId)();
152
+ const [timer, setTimer] = (0, _react.useState)(null);
153
+ const cancelableClosePortal = (0, _react.useCallback)(() => {
154
+ clearTimeout(timer);
155
+ closePortal();
156
+ }, [timer, closePortal]);
157
+ (0, _react.useEffect)(() => {
162
158
  if (isOpen && !followMouse && wrapperRef.current) {
163
159
  // Position the tooltip when it becomes visible.
164
160
  setPositionStyle(getPositionStyle(adjustedPosition, wrapperRef.current));
165
161
  }
166
162
  }, [adjustedPosition, isOpen, followMouse]);
167
- var mouseHandler = (0, _react.useCallback)(function (evt) {
163
+ const mouseHandler = (0, _react.useCallback)(evt => {
168
164
  // Set the position of the tooltip next to the mouse.
169
165
  setPositionStyle({
170
166
  // Don't allow the tooltip to block the mouse events.
@@ -174,7 +170,7 @@ var Tooltip = function Tooltip(_ref) {
174
170
  top: evt.pageY
175
171
  });
176
172
  }, []);
177
- var onUpdateWindowFitment = (0, _react.useCallback)(function (fitsWindow) {
173
+ const onUpdateWindowFitment = (0, _react.useCallback)(fitsWindow => {
178
174
  setAdjustedPosition(adjustForWindow(position, fitsWindow));
179
175
  }, [setAdjustedPosition, position]);
180
176
 
@@ -183,61 +179,63 @@ var Tooltip = function Tooltip(_ref) {
183
179
 
184
180
  // Handle adjusting the position of the tooltip so that it remains on screen.
185
181
  (0, _hooks.useWindowFitment)(messageRef.current, wrapperRef.current, onUpdateWindowFitment, 20, isOpen, autoAdjust && followMouse);
186
- var handleKeyPress = (0, _react.useCallback)(function (event) {
182
+ const handleKeyPress = (0, _react.useCallback)(event => {
187
183
  if (event.key === "Escape") {
188
- closePortal();
184
+ cancelableClosePortal();
189
185
  }
190
- }, [closePortal]);
191
- (0, _react.useEffect)(function () {
186
+ }, [cancelableClosePortal]);
187
+ (0, _react.useEffect)(() => {
192
188
  window.addEventListener("keypress", handleKeyPress);
193
- return function () {
189
+ return () => {
194
190
  window.removeEventListener("keypress", handleKeyPress);
195
191
  };
196
192
  }, [handleKeyPress]);
197
- var handleBlur = function handleBlur(e) {
193
+ const handleBlur = e => {
198
194
  var _wrapperRef$current, _messageRef$current;
199
195
  // do not close if the focus is within the tooltip wrapper
200
196
  if (wrapperRef !== null && wrapperRef !== void 0 && (_wrapperRef$current = wrapperRef.current) !== null && _wrapperRef$current !== void 0 && _wrapperRef$current.contains(document.activeElement)) {
201
197
  return;
202
198
  }
203
199
  if (e.relatedTarget ? !((_messageRef$current = messageRef.current) !== null && _messageRef$current !== void 0 && _messageRef$current.contains(e.relatedTarget)) : e.target !== messageRef.current) {
204
- closePortal();
200
+ cancelableClosePortal();
205
201
  }
206
202
  };
207
- var handleClick = function handleClick(e) {
203
+ const handleClick = e => {
208
204
  var _messageRef$current2;
209
205
  // ignore clicks within the tooltip message
210
206
  if ((_messageRef$current2 = messageRef.current) !== null && _messageRef$current2 !== void 0 && _messageRef$current2.contains(e.target)) {
211
207
  return;
212
208
  }
213
209
  e.target.focus();
214
- openPortal();
210
+ openPortal(e);
215
211
  };
212
+ const delayedOpenPortal = (0, _react.useCallback)(() => {
213
+ const timeout = setTimeout(() => openPortal(), delay);
214
+ setTimer(timeout);
215
+ }, [delay, openPortal]);
216
216
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, message ? /*#__PURE__*/_react.default.createElement("span", {
217
217
  className: className,
218
218
  onBlur: handleBlur,
219
219
  onClick: handleClick,
220
220
  onFocus: openPortal,
221
221
  onMouseOut: handleBlur,
222
- onMouseOver: openPortal
222
+ onMouseOver: delayedOpenPortal
223
223
  }, /*#__PURE__*/_react.default.createElement("span", {
224
224
  className: positionElementClassName,
225
225
  ref: wrapperRef,
226
226
  style: {
227
227
  display: "inline-block"
228
228
  }
229
- }, _react.default.Children.map(children, function (child) {
230
- return child && /*#__PURE__*/_react.default.isValidElement(child) ? /*#__PURE__*/_react.default.cloneElement(child, {
231
- "aria-describedby": isOpen ? tooltipId : undefined
232
- }) : child;
233
- })), isOpen ? /*#__PURE__*/_react.default.createElement(Portal, null, /*#__PURE__*/_react.default.createElement("span", {
229
+ }, _react.default.Children.map(children, child => child && /*#__PURE__*/_react.default.isValidElement(child) ? /*#__PURE__*/_react.default.cloneElement(child, {
230
+ "aria-describedby": isOpen ? tooltipId : undefined
231
+ }) : child)), isOpen ? /*#__PURE__*/_react.default.createElement(Portal, null, /*#__PURE__*/_react.default.createElement("span", {
234
232
  className: (0, _classnames.default)("p-tooltip--".concat(adjustedPosition), "is-detached", tooltipClassName),
235
233
  "data-testid": "tooltip-portal",
236
234
  style: positionStyle
237
235
  }, /*#__PURE__*/_react.default.createElement("span", {
238
236
  role: "tooltip",
239
237
  className: "p-tooltip__message",
240
- onClick: function onClick(event) {
238
+ onClick: event => {
241
239
  // Prevent clicks inside the message from bubbling to parent
242
240
  // click handlers.
243
241
  event.stopPropagation();
@@ -251,5 +249,4 @@ var Tooltip = function Tooltip(_ref) {
251
249
  className: className
252
250
  }, children));
253
251
  };
254
- var _default = Tooltip;
255
- exports.default = _default;
252
+ var _default = exports.default = Tooltip;
@@ -1,21 +1,20 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  Object.defineProperty(exports, "default", {
8
7
  enumerable: true,
9
- get: function get() {
8
+ get: function () {
10
9
  return _Tooltip.default;
11
10
  }
12
11
  });
13
12
  Object.defineProperty(exports, "position", {
14
13
  enumerable: true,
15
- get: function get() {
14
+ get: function () {
16
15
  return _Tooltip.position;
17
16
  }
18
17
  });
19
18
  var _Tooltip = _interopRequireWildcard(require("./Tooltip"));
20
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
package/dist/enums.js CHANGED
@@ -7,9 +7,8 @@ exports.Theme = void 0;
7
7
  /**
8
8
  * The Vanilla theme types.
9
9
  */
10
- var Theme = /*#__PURE__*/function (Theme) {
10
+ let Theme = exports.Theme = /*#__PURE__*/function (Theme) {
11
11
  Theme["DARK"] = "dark";
12
12
  Theme["LIGHT"] = "light";
13
13
  return Theme;
14
- }({});
15
- exports.Theme = Theme;
14
+ }({});
@@ -1,4 +1,4 @@
1
- export { useClickOutside } from "./useClickOutside";
1
+ export { useOnClickOutside, useClickOutside } from "./useOnClickOutside";
2
2
  export { useId } from "./useId";
3
3
  export { useListener } from "./useListener";
4
4
  export { useOnEscapePressed } from "./useOnEscapePressed";
@@ -5,53 +5,59 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "useClickOutside", {
7
7
  enumerable: true,
8
- get: function get() {
9
- return _useClickOutside.useClickOutside;
8
+ get: function () {
9
+ return _useOnClickOutside.useClickOutside;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "useId", {
13
13
  enumerable: true,
14
- get: function get() {
14
+ get: function () {
15
15
  return _useId.useId;
16
16
  }
17
17
  });
18
18
  Object.defineProperty(exports, "useListener", {
19
19
  enumerable: true,
20
- get: function get() {
20
+ get: function () {
21
21
  return _useListener.useListener;
22
22
  }
23
23
  });
24
+ Object.defineProperty(exports, "useOnClickOutside", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _useOnClickOutside.useOnClickOutside;
28
+ }
29
+ });
24
30
  Object.defineProperty(exports, "useOnEscapePressed", {
25
31
  enumerable: true,
26
- get: function get() {
32
+ get: function () {
27
33
  return _useOnEscapePressed.useOnEscapePressed;
28
34
  }
29
35
  });
30
36
  Object.defineProperty(exports, "usePagination", {
31
37
  enumerable: true,
32
- get: function get() {
38
+ get: function () {
33
39
  return _usePagination.usePagination;
34
40
  }
35
41
  });
36
42
  Object.defineProperty(exports, "usePrevious", {
37
43
  enumerable: true,
38
- get: function get() {
44
+ get: function () {
39
45
  return _usePrevious.usePrevious;
40
46
  }
41
47
  });
42
48
  Object.defineProperty(exports, "useThrottle", {
43
49
  enumerable: true,
44
- get: function get() {
50
+ get: function () {
45
51
  return _useThrottle.useThrottle;
46
52
  }
47
53
  });
48
54
  Object.defineProperty(exports, "useWindowFitment", {
49
55
  enumerable: true,
50
- get: function get() {
56
+ get: function () {
51
57
  return _useWindowFitment.useWindowFitment;
52
58
  }
53
59
  });
54
- var _useClickOutside = require("./useClickOutside");
60
+ var _useOnClickOutside = require("./useOnClickOutside");
55
61
  var _useId = require("./useId");
56
62
  var _useListener = require("./useListener");
57
63
  var _useOnEscapePressed = require("./useOnEscapePressed");
@@ -11,7 +11,5 @@ var _nanoid = require("nanoid");
11
11
  * Can be used as a value for HTML "id" attributes.
12
12
  * @returns random ID string
13
13
  */
14
- var useId = function useId() {
15
- return (0, _react.useRef)((0, _nanoid.nanoid)()).current;
16
- };
14
+ const useId = () => (0, _react.useRef)((0, _nanoid.nanoid)()).current;
17
15
  exports.useId = useId;
@@ -6,5 +6,6 @@
6
6
  * @param eventType The event name.
7
7
  * @param shouldThrottle Whether the callback calls should be throttled.
8
8
  * @param shouldListen When the listener should be active.
9
+ * @param options Native event listener options.
9
10
  */
10
- export declare const useListener: (targetNode: Window | HTMLElement, callback: (...args: any[]) => any, eventType: string, shouldThrottle?: boolean, shouldListen?: boolean) => void;
11
+ export declare const useListener: (targetNode: Window | HTMLElement, callback: (...args: any[]) => any, eventType: string, shouldThrottle?: boolean, shouldListen?: boolean, options?: boolean | AddEventListenerOptions) => void;
@@ -15,23 +15,26 @@ var _usePrevious = require("./usePrevious");
15
15
  * @param eventType The event name.
16
16
  * @param shouldThrottle Whether the callback calls should be throttled.
17
17
  * @param shouldListen When the listener should be active.
18
+ * @param options Native event listener options.
18
19
  */
19
- var useListener = function useListener(targetNode, callback, eventType) {
20
- var shouldThrottle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
21
- var shouldListen = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
22
- var isListening = (0, _react.useRef)(false);
23
- var throttle = (0, _useThrottle.useThrottle)(callback);
24
- var eventListener = (0, _react.useRef)(shouldThrottle ? throttle : callback);
25
- var previousEventType = (0, _usePrevious.usePrevious)(eventType);
26
- var previousShouldThrottle = (0, _usePrevious.usePrevious)(shouldThrottle);
27
- var previousTargetNode = (0, _usePrevious.usePrevious)(targetNode);
28
- var previousCallback = (0, _usePrevious.usePrevious)(callback);
29
- (0, _react.useEffect)(function () {
20
+ const useListener = function (targetNode, callback, eventType) {
21
+ let shouldThrottle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
22
+ let shouldListen = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
23
+ let options = arguments.length > 5 ? arguments[5] : undefined;
24
+ const isListening = (0, _react.useRef)(false);
25
+ const throttle = (0, _useThrottle.useThrottle)(callback);
26
+ const eventListener = (0, _react.useRef)(shouldThrottle ? throttle : callback);
27
+ const previousEventType = (0, _usePrevious.usePrevious)(eventType);
28
+ const previousShouldThrottle = (0, _usePrevious.usePrevious)(shouldThrottle);
29
+ const previousTargetNode = (0, _usePrevious.usePrevious)(targetNode);
30
+ const previousCallback = (0, _usePrevious.usePrevious)(callback);
31
+ const previousOptions = (0, _usePrevious.usePrevious)(options);
32
+ (0, _react.useEffect)(() => {
30
33
  // If any of the props related to the attached listener changed then the
31
34
  // listener needs to be re-attached.
32
- var listenerAttributesChanged = callback !== previousCallback || eventType !== previousEventType || shouldThrottle !== previousShouldThrottle || targetNode !== previousTargetNode;
35
+ const listenerAttributesChanged = callback !== previousCallback || eventType !== previousEventType || shouldThrottle !== previousShouldThrottle || targetNode !== previousTargetNode || options !== previousOptions;
33
36
  if (isListening.current && (!shouldListen || listenerAttributesChanged)) {
34
- previousTargetNode.removeEventListener(previousEventType, eventListener.current);
37
+ previousTargetNode.removeEventListener(previousEventType, eventListener.current, previousOptions);
35
38
  isListening.current = false;
36
39
  }
37
40
  if (shouldThrottle !== previousShouldThrottle || callback !== previousCallback) {
@@ -39,18 +42,16 @@ var useListener = function useListener(targetNode, callback, eventType) {
39
42
  eventListener.current = shouldThrottle ? throttle : callback;
40
43
  }
41
44
  if (targetNode && shouldListen && !isListening.current) {
42
- targetNode.addEventListener(eventType, eventListener.current);
45
+ targetNode.addEventListener(eventType, eventListener.current, options);
43
46
  isListening.current = true;
44
47
  }
45
- }, [callback, eventType, previousCallback, previousEventType, previousShouldThrottle, previousTargetNode, shouldListen, shouldThrottle, targetNode, throttle]);
46
- (0, _react.useEffect)(function () {
47
- return function () {
48
- // Unattach the listener if the component gets unmounted while
49
- // listening.
50
- if (targetNode && isListening.current) {
51
- targetNode.removeEventListener(eventType, eventListener.current);
52
- }
53
- };
54
- }, [eventType, targetNode]);
48
+ }, [callback, eventType, options, previousCallback, previousEventType, previousOptions, previousShouldThrottle, previousTargetNode, shouldListen, shouldThrottle, targetNode, throttle]);
49
+ (0, _react.useEffect)(() => () => {
50
+ // Unattach the listener if the component gets unmounted while
51
+ // listening.
52
+ if (targetNode && isListening.current) {
53
+ targetNode.removeEventListener(eventType, eventListener.current, options);
54
+ }
55
+ }, [eventType, targetNode, options]);
55
56
  };
56
57
  exports.useListener = useListener;