@elastic/eui 116.0.0-snapshot.1779106837095 → 116.1.0-snapshot.1779110362015

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 (46) hide show
  1. package/es/components/basic_table/basic_table.js +6 -0
  2. package/es/components/basic_table/in_memory_table.js +6 -0
  3. package/es/components/color_picker/color_picker_swatch.js +4 -0
  4. package/es/components/copy/copy.js +36 -13
  5. package/es/components/observer/mutation_observer/mutation_observer.js +32 -35
  6. package/es/components/observer/resize_observer/resize_observer.js +46 -60
  7. package/es/components/observer/use_observer.js +62 -0
  8. package/es/components/table/table_header_cell.js +4 -0
  9. package/es/components/tool_tip/icon_tip.js +4 -0
  10. package/es/components/tool_tip/tool_tip.js +8 -2
  11. package/eui.d.ts +21 -37
  12. package/lib/components/basic_table/basic_table.js +6 -0
  13. package/lib/components/basic_table/in_memory_table.js +6 -0
  14. package/lib/components/color_picker/color_picker_swatch.js +4 -0
  15. package/lib/components/copy/copy.js +35 -12
  16. package/lib/components/observer/mutation_observer/mutation_observer.js +32 -34
  17. package/lib/components/observer/resize_observer/resize_observer.js +48 -61
  18. package/lib/components/observer/use_observer.js +68 -0
  19. package/lib/components/table/table_header_cell.js +4 -0
  20. package/lib/components/tool_tip/icon_tip.js +4 -0
  21. package/lib/components/tool_tip/tool_tip.js +8 -2
  22. package/optimize/es/components/copy/copy.js +36 -13
  23. package/optimize/es/components/observer/mutation_observer/mutation_observer.js +23 -32
  24. package/optimize/es/components/observer/resize_observer/resize_observer.js +38 -54
  25. package/optimize/es/components/observer/use_observer.js +62 -0
  26. package/optimize/es/components/tool_tip/tool_tip.js +4 -2
  27. package/optimize/lib/components/copy/copy.js +35 -12
  28. package/optimize/lib/components/observer/mutation_observer/mutation_observer.js +23 -32
  29. package/optimize/lib/components/observer/resize_observer/resize_observer.js +40 -54
  30. package/optimize/lib/components/observer/use_observer.js +68 -0
  31. package/optimize/lib/components/tool_tip/tool_tip.js +4 -2
  32. package/package.json +21 -3
  33. package/test-env/components/basic_table/basic_table.js +6 -0
  34. package/test-env/components/basic_table/in_memory_table.js +6 -0
  35. package/test-env/components/color_picker/color_picker_swatch.js +4 -0
  36. package/test-env/components/copy/copy.js +35 -12
  37. package/test-env/components/observer/mutation_observer/mutation_observer.js +32 -32
  38. package/test-env/components/observer/use_observer.js +68 -0
  39. package/test-env/components/table/table_header_cell.js +4 -0
  40. package/test-env/components/tool_tip/icon_tip.js +4 -0
  41. package/test-env/components/tool_tip/tool_tip.js +8 -2
  42. package/es/components/observer/observer.js +0 -75
  43. package/lib/components/observer/observer.js +0 -79
  44. package/optimize/es/components/observer/observer.js +0 -69
  45. package/optimize/lib/components/observer/observer.js +0 -74
  46. package/test-env/components/observer/observer.js +0 -74
@@ -1141,6 +1141,10 @@ EuiBasicTable.propTypes = {
1141
1141
  * hidden.
1142
1142
  */
1143
1143
  onMouseOut: PropTypes.func,
1144
+ /**
1145
+ * If supplied, called when the trigger loses focus.
1146
+ */
1147
+ onBlur: PropTypes.func,
1144
1148
  /**
1145
1149
  * Offset in pixels from the anchor. Defaults to 16.
1146
1150
  */
@@ -1285,6 +1289,7 @@ EuiBasicTable.propTypes = {
1285
1289
  repositionOnScroll: PropTypes.bool,
1286
1290
  disableScreenReaderOutput: PropTypes.bool,
1287
1291
  onMouseOut: PropTypes.func,
1292
+ onBlur: PropTypes.func,
1288
1293
  offset: PropTypes.number,
1289
1294
  "aria-label": PropTypes.string,
1290
1295
  "data-test-subj": PropTypes.string,
@@ -1426,6 +1431,7 @@ EuiBasicTable.propTypes = {
1426
1431
  repositionOnScroll: PropTypes.bool,
1427
1432
  disableScreenReaderOutput: PropTypes.bool,
1428
1433
  onMouseOut: PropTypes.func,
1434
+ onBlur: PropTypes.func,
1429
1435
  offset: PropTypes.number,
1430
1436
  "aria-label": PropTypes.string,
1431
1437
  "data-test-subj": PropTypes.string,
@@ -668,6 +668,10 @@ EuiInMemoryTable.propTypes = {
668
668
  * hidden.
669
669
  */
670
670
  onMouseOut: PropTypes.func,
671
+ /**
672
+ * If supplied, called when the trigger loses focus.
673
+ */
674
+ onBlur: PropTypes.func,
671
675
  /**
672
676
  * Offset in pixels from the anchor. Defaults to 16.
673
677
  */
@@ -812,6 +816,7 @@ EuiInMemoryTable.propTypes = {
812
816
  repositionOnScroll: PropTypes.bool,
813
817
  disableScreenReaderOutput: PropTypes.bool,
814
818
  onMouseOut: PropTypes.func,
819
+ onBlur: PropTypes.func,
815
820
  offset: PropTypes.number,
816
821
  "aria-label": PropTypes.string,
817
822
  "data-test-subj": PropTypes.string,
@@ -953,6 +958,7 @@ EuiInMemoryTable.propTypes = {
953
958
  repositionOnScroll: PropTypes.bool,
954
959
  disableScreenReaderOutput: PropTypes.bool,
955
960
  onMouseOut: PropTypes.func,
961
+ onBlur: PropTypes.func,
956
962
  offset: PropTypes.number,
957
963
  "aria-label": PropTypes.string,
958
964
  "data-test-subj": PropTypes.string,
@@ -133,6 +133,10 @@ EuiColorPickerSwatch.propTypes = {
133
133
  * hidden.
134
134
  */
135
135
  onMouseOut: PropTypes.func,
136
+ /**
137
+ * If supplied, called when the trigger loses focus.
138
+ */
139
+ onBlur: PropTypes.func,
136
140
  /**
137
141
  * Offset in pixels from the anchor. Defaults to 16.
138
142
  */
@@ -21,9 +21,10 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
21
21
  * Side Public License, v 1.
22
22
  */
23
23
 
24
- import React, { Component } from 'react';
24
+ import React, { Component, createRef } from 'react';
25
25
  import PropTypes from "prop-types";
26
26
  import { copyToClipboard } from '../../services';
27
+ import { EuiScreenReaderOnly } from '../accessibility';
27
28
  import { EuiToolTip } from '../tool_tip';
28
29
  import { jsx as ___EmotionJSX } from "@emotion/react";
29
30
  export var EuiCopy = /*#__PURE__*/function (_Component) {
@@ -31,21 +32,31 @@ export var EuiCopy = /*#__PURE__*/function (_Component) {
31
32
  var _this;
32
33
  _classCallCheck(this, EuiCopy);
33
34
  _this = _callSuper(this, EuiCopy, [props]);
35
+ _defineProperty(_this, "tooltipRef", /*#__PURE__*/createRef());
34
36
  _defineProperty(_this, "copy", function () {
35
37
  var isCopied = copyToClipboard(_this.props.textToCopy);
36
38
  if (isCopied) {
37
39
  _this.setState({
38
- tooltipText: _this.props.afterMessage
40
+ tooltipText: _this.props.afterMessage,
41
+ isCopied: true
42
+ },
43
+ // `EuiToolTip` suppresses showing when content is empty, so `EuiCopy`
44
+ // imperatively shows the tooltip after the post-copy state update.
45
+ function () {
46
+ var _this$tooltipRef$curr;
47
+ (_this$tooltipRef$curr = _this.tooltipRef.current) === null || _this$tooltipRef$curr === void 0 || _this$tooltipRef$curr.showToolTip();
39
48
  });
40
49
  }
41
50
  });
42
51
  _defineProperty(_this, "resetTooltipText", function () {
43
52
  _this.setState({
44
- tooltipText: _this.props.beforeMessage
53
+ tooltipText: _this.props.beforeMessage,
54
+ isCopied: false
45
55
  });
46
56
  });
47
57
  _this.state = {
48
- tooltipText: _this.props.beforeMessage
58
+ tooltipText: _this.props.beforeMessage,
59
+ isCopied: false
49
60
  };
50
61
  return _this;
51
62
  }
@@ -53,17 +64,29 @@ export var EuiCopy = /*#__PURE__*/function (_Component) {
53
64
  return _createClass(EuiCopy, [{
54
65
  key: "render",
55
66
  value: function render() {
67
+ var _this2 = this;
56
68
  var _this$props = this.props,
57
69
  children = _this$props.children,
58
- tooltipProps = _this$props.tooltipProps;
59
- return (
60
- // See `src/components/tool_tip/tool_tip.js` for explanation of below eslint-disable
61
- // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events
62
- ___EmotionJSX(EuiToolTip, _extends({
63
- content: this.state.tooltipText,
64
- onMouseOut: this.resetTooltipText
65
- }, tooltipProps), children(this.copy))
66
- );
70
+ tooltipProps = _this$props.tooltipProps,
71
+ afterMessage = _this$props.afterMessage;
72
+ var _this$state = this.state,
73
+ tooltipText = _this$state.tooltipText,
74
+ isCopied = _this$state.isCopied;
75
+ return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(EuiToolTip, _extends({
76
+ ref: this.tooltipRef,
77
+ content: tooltipText,
78
+ onMouseOut: this.resetTooltipText
79
+ }, tooltipProps, {
80
+ onBlur: function onBlur() {
81
+ var _tooltipProps$onBlur;
82
+ tooltipProps === null || tooltipProps === void 0 || (_tooltipProps$onBlur = tooltipProps.onBlur) === null || _tooltipProps$onBlur === void 0 || _tooltipProps$onBlur.call(tooltipProps);
83
+ if (isCopied) _this2.resetTooltipText();
84
+ },
85
+ disableScreenReaderOutput: isCopied || !!(tooltipProps !== null && tooltipProps !== void 0 && tooltipProps.disableScreenReaderOutput)
86
+ }), children(this.copy)), ___EmotionJSX(EuiScreenReaderOnly, null, ___EmotionJSX("div", {
87
+ "aria-live": "assertive",
88
+ "aria-atomic": "true"
89
+ }, isCopied ? afterMessage : '')));
67
90
  }
68
91
  }]);
69
92
  }(Component);
@@ -1,16 +1,6 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
- function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
5
- function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
6
- function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
7
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
8
- function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
9
- function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
10
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
11
- function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
12
- function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
13
- function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
14
4
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
15
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -22,31 +12,38 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
22
12
  * Side Public License, v 1.
23
13
  */
24
14
 
25
- import { useEffect } from 'react';
26
- import { EuiObserver } from '../observer';
27
- export var EuiMutationObserver = /*#__PURE__*/function (_EuiObserver) {
28
- function EuiMutationObserver() {
29
- var _this;
30
- _classCallCheck(this, EuiMutationObserver);
31
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
32
- args[_key] = arguments[_key];
33
- }
34
- _this = _callSuper(this, EuiMutationObserver, [].concat(args));
35
- _defineProperty(_this, "name", 'EuiMutationObserver');
36
- // the `onMutation` prop may change while the observer is bound, abstracting
37
- // it out into a separate function means the current `onMutation` value is used
38
- _defineProperty(_this, "onMutation", function (records, observer) {
39
- _this.props.onMutation(records, observer);
40
- });
41
- _defineProperty(_this, "beginObserve", function () {
42
- var childNode = _this.childNode;
43
- _this.observer = makeMutationObserver(childNode, _this.props.observerOptions, _this.onMutation);
44
- });
45
- return _this;
46
- }
47
- _inherits(EuiMutationObserver, _EuiObserver);
48
- return _createClass(EuiMutationObserver);
49
- }(EuiObserver);
15
+ import { useCallback, useEffect, useRef } from 'react';
16
+ import PropTypes from "prop-types";
17
+ import { useObserver } from '../use_observer';
18
+ export var EuiMutationObserver = function EuiMutationObserver(_ref) {
19
+ var children = _ref.children,
20
+ onMutation = _ref.onMutation,
21
+ observerOptions = _ref.observerOptions;
22
+ // Store onMutation and observerOptions in refs so the observer callback
23
+ // and setup always use the latest prop values without needing to
24
+ // re-subscribe (which would cause the ref callback to cycle)
25
+ var onMutationRef = useRef(onMutation);
26
+ onMutationRef.current = onMutation;
27
+ var observerOptionsRef = useRef(observerOptions);
28
+ observerOptionsRef.current = observerOptions;
29
+ var mutationCallback = useCallback(function (records, observer) {
30
+ onMutationRef.current(records, observer);
31
+ }, []);
32
+ var beginObserve = useCallback(function (node) {
33
+ return makeMutationObserver(node, observerOptionsRef.current, mutationCallback);
34
+ }, [mutationCallback]);
35
+ var updateChildNode = useObserver(beginObserve, 'EuiMutationObserver');
36
+ return children(updateChildNode);
37
+ };
38
+ EuiMutationObserver.propTypes = {
39
+ /**
40
+ * ReactNode to render as this component's content
41
+ */
42
+ children: PropTypes.func.isRequired,
43
+ onMutation: PropTypes.any.isRequired,
44
+ observerOptions: PropTypes.any
45
+ };
46
+ EuiMutationObserver.displayName = 'EuiMutationObserver';
50
47
  var makeMutationObserver = function makeMutationObserver(node, _observerOptions, callback) {
51
48
  // The MutationObserver polyfill used in Kibana (for Jest) implements
52
49
  // an older spec in which specifying `attributeOldValue` or `attributeFilter`
@@ -1,23 +1,9 @@
1
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
1
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
3
2
  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."); }
4
3
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
5
4
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
6
5
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
7
6
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
8
- function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
9
- function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
10
- function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
11
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
12
- function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
13
- function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
14
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
15
- function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
16
- function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
17
- function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
18
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
19
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
20
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
21
7
  /*
22
8
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
23
9
  * or more contributor license agreements. Licensed under the Elastic License
@@ -27,52 +13,52 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
27
13
  */
28
14
 
29
15
  import { useCallback, useEffect, useRef, useState } from 'react';
30
- import { EuiObserver } from '../observer';
16
+ import PropTypes from "prop-types";
17
+ import { useObserver } from '../use_observer';
31
18
  export var hasResizeObserver = typeof window !== 'undefined' && typeof window.ResizeObserver !== 'undefined';
32
- export var EuiResizeObserver = /*#__PURE__*/function (_EuiObserver) {
33
- function EuiResizeObserver() {
34
- var _this;
35
- _classCallCheck(this, EuiResizeObserver);
36
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
37
- args[_key] = arguments[_key];
38
- }
39
- _this = _callSuper(this, EuiResizeObserver, [].concat(args));
40
- _defineProperty(_this, "name", 'EuiResizeObserver');
41
- _defineProperty(_this, "state", {
42
- height: 0,
43
- width: 0
44
- });
45
- _defineProperty(_this, "onResize", function (_ref) {
46
- var _ref2 = _slicedToArray(_ref, 1),
47
- entry = _ref2[0];
48
- var _entry$borderBoxSize$ = entry.borderBoxSize[0],
49
- width = _entry$borderBoxSize$.inlineSize,
50
- height = _entry$borderBoxSize$.blockSize;
19
+ export var EuiResizeObserver = function EuiResizeObserver(_ref) {
20
+ var children = _ref.children,
21
+ onResize = _ref.onResize;
22
+ var onResizeRef = useRef(onResize);
23
+ onResizeRef.current = onResize;
24
+ var sizeRef = useRef({
25
+ height: 0,
26
+ width: 0
27
+ });
28
+ var resizeCallback = useCallback(function (_ref2) {
29
+ var _ref3 = _slicedToArray(_ref2, 1),
30
+ entry = _ref3[0];
31
+ var _entry$borderBoxSize$ = entry.borderBoxSize[0],
32
+ width = _entry$borderBoxSize$.inlineSize,
33
+ height = _entry$borderBoxSize$.blockSize;
51
34
 
52
- // Check for actual resize event
53
- if (_this.state.height === height && _this.state.width === width) {
54
- return;
55
- }
56
- _this.props.onResize({
57
- height: height,
58
- width: width
59
- });
60
- _this.setState({
61
- height: height,
62
- width: width
63
- });
64
- });
65
- _defineProperty(_this, "beginObserve", function () {
66
- // The superclass checks that childNode is not null before invoking
67
- // beginObserve()
68
- var childNode = _this.childNode;
69
- _this.observer = makeResizeObserver(childNode, _this.onResize);
35
+ // Check for actual resize event
36
+ if (sizeRef.current.height === height && sizeRef.current.width === width) {
37
+ return;
38
+ }
39
+ sizeRef.current = {
40
+ height: height,
41
+ width: width
42
+ };
43
+ onResizeRef.current({
44
+ height: height,
45
+ width: width
70
46
  });
71
- return _this;
72
- }
73
- _inherits(EuiResizeObserver, _EuiObserver);
74
- return _createClass(EuiResizeObserver);
75
- }(EuiObserver);
47
+ }, []);
48
+ var beginObserve = useCallback(function (node) {
49
+ return makeResizeObserver(node, resizeCallback);
50
+ }, [resizeCallback]);
51
+ var updateChildNode = useObserver(beginObserve, 'EuiResizeObserver');
52
+ return children(updateChildNode);
53
+ };
54
+ EuiResizeObserver.propTypes = {
55
+ /**
56
+ * ReactNode to render as this component's content
57
+ */
58
+ children: PropTypes.func.isRequired,
59
+ onResize: PropTypes.func.isRequired
60
+ };
61
+ EuiResizeObserver.displayName = 'EuiResizeObserver';
76
62
  var makeResizeObserver = function makeResizeObserver(node, callback) {
77
63
  var observer;
78
64
  if (hasResizeObserver) {
@@ -103,9 +89,9 @@ export var useResizeObserver = function useResizeObserver(container, dimension)
103
89
  }, [dimension]);
104
90
  useEffect(function () {
105
91
  if (container != null) {
106
- var observer = makeResizeObserver(container, function (_ref3) {
107
- var _ref4 = _slicedToArray(_ref3, 1),
108
- entry = _ref4[0];
92
+ var observer = makeResizeObserver(container, function (_ref4) {
93
+ var _ref5 = _slicedToArray(_ref4, 1),
94
+ entry = _ref5[0];
109
95
  var _entry$borderBoxSize$2 = entry.borderBoxSize[0],
110
96
  inlineSize = _entry$borderBoxSize$2.inlineSize,
111
97
  blockSize = _entry$borderBoxSize$2.blockSize;
@@ -0,0 +1,62 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ import { useCallback, useEffect, useRef } from 'react';
10
+ /**
11
+ * A shared custom hook that provides a pattern for observing DOM nodes
12
+ * via browser observer APIs. Used by `EuiResizeObserver` and `EuiMutationObserver`.
13
+ *
14
+ * @param beginObserve - A callback that receives the target DOM element and should
15
+ * create and return the observer instance (e.g., `ResizeObserver`).
16
+ * @param componentName - Optional name used in error messages when no ref is
17
+ * attached on mount, mirroring the guard previously in `EuiObserver`.
18
+ */
19
+ export var useObserver = function useObserver(beginObserve) {
20
+ var componentName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'useObserver';
21
+ var childNodeRef = useRef(null);
22
+ var observerRef = useRef(null);
23
+
24
+ // Store beginObserve in a ref so the ref callback doesn't cycle
25
+ var beginObserveRef = useRef(beginObserve);
26
+ beginObserveRef.current = beginObserve;
27
+
28
+ // Store componentName in a ref so the mount-only effect can access the
29
+ // latest value without needing it as a dependency.
30
+ var componentNameRef = useRef(componentName);
31
+ componentNameRef.current = componentName;
32
+
33
+ // Guard: throw if the ref callback was never called (no element attached),
34
+ // mirroring the check previously in EuiObserver.componentDidMount.
35
+ // Also cleans up the observer on unmount.
36
+ // Empty deps: run only on mount/unmount — componentName is only used for the
37
+ // error message and changing it must not disconnect/re-connect the observer.
38
+ useEffect(function () {
39
+ if (childNodeRef.current == null) {
40
+ throw new Error("".concat(componentNameRef.current, " did not receive a ref"));
41
+ }
42
+ return function () {
43
+ var _observerRef$current;
44
+ (_observerRef$current = observerRef.current) === null || _observerRef$current === void 0 || _observerRef$current.disconnect();
45
+ };
46
+ }, []);
47
+ var updateChildNode = useCallback(function (ref) {
48
+ if (childNodeRef.current === ref) return; // node hasn't changed
49
+
50
+ // if there's an existing observer disconnect it
51
+ if (observerRef.current != null) {
52
+ observerRef.current.disconnect();
53
+ observerRef.current = null;
54
+ }
55
+ childNodeRef.current = ref;
56
+ if (childNodeRef.current != null) {
57
+ var _beginObserveRef$curr;
58
+ observerRef.current = (_beginObserveRef$curr = beginObserveRef.current(childNodeRef.current)) !== null && _beginObserveRef$curr !== void 0 ? _beginObserveRef$curr : null;
59
+ }
60
+ }, []);
61
+ return updateChildNode;
62
+ };
@@ -237,6 +237,10 @@ EuiTableHeaderCell.propTypes = {
237
237
  * hidden.
238
238
  */
239
239
  onMouseOut: PropTypes.func,
240
+ /**
241
+ * If supplied, called when the trigger loses focus.
242
+ */
243
+ onBlur: PropTypes.func,
240
244
  /**
241
245
  * Offset in pixels from the anchor. Defaults to 16.
242
246
  */
@@ -93,6 +93,10 @@ EuiIconTip.propTypes = {
93
93
  * hidden.
94
94
  */
95
95
  onMouseOut: PropTypes.func,
96
+ /**
97
+ * If supplied, called when the trigger loses focus.
98
+ */
99
+ onBlur: PropTypes.func,
96
100
  /**
97
101
  * Offset in pixels from the anchor. Defaults to 16.
98
102
  */
@@ -1,4 +1,4 @@
1
- var _excluded = ["children", "className", "anchorClassName", "anchorProps", "content", "title", "display", "repositionOnScroll", "disableScreenReaderOutput", "position", "offset", "id", "onMouseOut"];
1
+ var _excluded = ["children", "className", "anchorClassName", "anchorProps", "content", "title", "display", "repositionOnScroll", "disableScreenReaderOutput", "position", "offset", "id", "onMouseOut", "onBlur"];
2
2
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
3
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
4
4
  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."); }
@@ -73,6 +73,7 @@ export var EuiToolTip = /*#__PURE__*/forwardRef(function (_ref, ref) {
73
73
  offset = _ref.offset,
74
74
  idProp = _ref.id,
75
75
  onMouseOutProp = _ref.onMouseOut,
76
+ onBlurProp = _ref.onBlur,
76
77
  rest = _objectWithoutProperties(_ref, _excluded);
77
78
  var componentDefaultsContext = useContext(EuiComponentDefaultsContext);
78
79
  var _useState = useState(false),
@@ -219,7 +220,8 @@ export var EuiToolTip = /*#__PURE__*/forwardRef(function (_ref, ref) {
219
220
  var onBlur = useCallback(function () {
220
221
  setHasFocus(false);
221
222
  hideToolTip();
222
- }, [hideToolTip]);
223
+ onBlurProp === null || onBlurProp === void 0 || onBlurProp();
224
+ }, [hideToolTip, onBlurProp]);
223
225
  var onEscapeKey = useCallback(function (event) {
224
226
  if (event.key === keys.ESCAPE) {
225
227
  // when the tooltip is only visual, we don't want it to add an additional key stop
@@ -341,6 +343,10 @@ EuiToolTip.propTypes = {
341
343
  * hidden.
342
344
  */
343
345
  onMouseOut: PropTypes.func,
346
+ /**
347
+ * If supplied, called when the trigger loses focus.
348
+ */
349
+ onBlur: PropTypes.func,
344
350
  /**
345
351
  * Offset in pixels from the anchor. Defaults to 16.
346
352
  */
package/eui.d.ts CHANGED
@@ -2058,36 +2058,27 @@ declare module '@elastic/eui/src/components/i18n' {
2058
2058
  export { EuiI18nNumber } from '@elastic/eui/src/components/i18n/i18n_number';
2059
2059
 
2060
2060
  }
2061
- declare module '@elastic/eui/src/components/observer/observer' {
2062
- import { Component, ReactNode } from 'react';
2063
- interface BaseProps {
2064
- /**
2065
- * ReactNode to render as this component's content
2066
- */
2067
- children: (ref: any) => ReactNode;
2068
- }
2061
+ declare module '@elastic/eui/src/components/observer/use_observer' {
2069
2062
  export interface Observer {
2070
2063
  disconnect: () => void;
2071
2064
  observe: (element: Element, options?: {
2072
2065
  [key: string]: any;
2073
2066
  }) => void;
2074
2067
  }
2075
- export class EuiObserver<Props extends BaseProps> extends Component<Props> {
2076
- protected name: string;
2077
- protected childNode: null | Element;
2078
- protected observer: null | Observer;
2079
- componentDidMount(): void;
2080
- componentWillUnmount(): void;
2081
- updateChildNode: (ref: Element) => void;
2082
- beginObserve: () => void;
2083
- render(): ReactNode;
2084
- }
2085
- export {};
2068
+ /**
2069
+ * A shared custom hook that provides a pattern for observing DOM nodes
2070
+ * via browser observer APIs. Used by `EuiResizeObserver` and `EuiMutationObserver`.
2071
+ *
2072
+ * @param beginObserve - A callback that receives the target DOM element and should
2073
+ * create and return the observer instance (e.g., `ResizeObserver`).
2074
+ * @param componentName - Optional name used in error messages when no ref is
2075
+ * attached on mount, mirroring the guard previously in `EuiObserver`.
2076
+ */
2077
+ export const useObserver: (beginObserve: (node: Element) => Observer | undefined, componentName?: string) => (ref: Element | null) => void;
2086
2078
 
2087
2079
  }
2088
2080
  declare module '@elastic/eui/src/components/observer/resize_observer/resize_observer' {
2089
- import { ReactNode } from 'react';
2090
- import { EuiObserver } from '@elastic/eui/src/components/observer/observer';
2081
+ import { ReactNode, FunctionComponent } from 'react';
2091
2082
  export interface EuiResizeObserverProps {
2092
2083
  /**
2093
2084
  * ReactNode to render as this component's content
@@ -2099,15 +2090,7 @@ declare module '@elastic/eui/src/components/observer/resize_observer/resize_obse
2099
2090
  }) => void;
2100
2091
  }
2101
2092
  export const hasResizeObserver: boolean;
2102
- export class EuiResizeObserver extends EuiObserver<EuiResizeObserverProps> {
2103
- name: string;
2104
- state: {
2105
- height: number;
2106
- width: number;
2107
- };
2108
- onResize: ResizeObserverCallback;
2109
- beginObserve: () => void;
2110
- }
2093
+ export const EuiResizeObserver: FunctionComponent<EuiResizeObserverProps>;
2111
2094
  export const useResizeObserver: (container: Element | null, dimension?: "width" | "height") => {
2112
2095
  width: number;
2113
2096
  height: number;
@@ -9936,6 +9919,10 @@ declare module '@elastic/eui/src/components/tool_tip/tool_tip' {
9936
9919
  * hidden.
9937
9920
  */
9938
9921
  onMouseOut?: (event: ReactMouseEvent<HTMLSpanElement, MouseEvent>) => void;
9922
+ /**
9923
+ * If supplied, called when the trigger loses focus.
9924
+ */
9925
+ onBlur?: () => void;
9939
9926
  /**
9940
9927
  * Offset in pixels from the anchor. Defaults to 16.
9941
9928
  */
@@ -19909,8 +19896,7 @@ declare module '@elastic/eui/src/components/focus_trap' {
19909
19896
 
19910
19897
  }
19911
19898
  declare module '@elastic/eui/src/components/observer/mutation_observer/mutation_observer' {
19912
- import { ReactNode } from 'react';
19913
- import { EuiObserver } from '@elastic/eui/src/components/observer/observer';
19899
+ import { ReactNode, FunctionComponent } from 'react';
19914
19900
  export interface EuiMutationObserverProps {
19915
19901
  /**
19916
19902
  * ReactNode to render as this component's content
@@ -19919,11 +19905,7 @@ declare module '@elastic/eui/src/components/observer/mutation_observer/mutation_
19919
19905
  onMutation: MutationCallback;
19920
19906
  observerOptions?: MutationObserverInit;
19921
19907
  }
19922
- export class EuiMutationObserver extends EuiObserver<EuiMutationObserverProps> {
19923
- name: string;
19924
- onMutation: MutationCallback;
19925
- beginObserve: () => void;
19926
- }
19908
+ export const EuiMutationObserver: FunctionComponent<EuiMutationObserverProps>;
19927
19909
  export const useMutationObserver: (container: Element | null, callback: MutationCallback, observerOptions?: MutationObserverInit) => void;
19928
19910
 
19929
19911
  }
@@ -23205,11 +23187,13 @@ declare module '@elastic/eui/src/components/copy/copy' {
23205
23187
  }
23206
23188
  interface EuiCopyState {
23207
23189
  tooltipText: ReactNode;
23190
+ isCopied: boolean;
23208
23191
  }
23209
23192
  export class EuiCopy extends Component<EuiCopyProps, EuiCopyState> {
23210
23193
  static defaultProps: {
23211
23194
  afterMessage: string;
23212
23195
  };
23196
+ private tooltipRef;
23213
23197
  constructor(props: EuiCopyProps);
23214
23198
  copy: () => void;
23215
23199
  resetTooltipText: () => void;
@@ -1149,6 +1149,10 @@ EuiBasicTable.propTypes = {
1149
1149
  * hidden.
1150
1150
  */
1151
1151
  onMouseOut: _propTypes.default.func,
1152
+ /**
1153
+ * If supplied, called when the trigger loses focus.
1154
+ */
1155
+ onBlur: _propTypes.default.func,
1152
1156
  /**
1153
1157
  * Offset in pixels from the anchor. Defaults to 16.
1154
1158
  */
@@ -1293,6 +1297,7 @@ EuiBasicTable.propTypes = {
1293
1297
  repositionOnScroll: _propTypes.default.bool,
1294
1298
  disableScreenReaderOutput: _propTypes.default.bool,
1295
1299
  onMouseOut: _propTypes.default.func,
1300
+ onBlur: _propTypes.default.func,
1296
1301
  offset: _propTypes.default.number,
1297
1302
  "aria-label": _propTypes.default.string,
1298
1303
  "data-test-subj": _propTypes.default.string,
@@ -1434,6 +1439,7 @@ EuiBasicTable.propTypes = {
1434
1439
  repositionOnScroll: _propTypes.default.bool,
1435
1440
  disableScreenReaderOutput: _propTypes.default.bool,
1436
1441
  onMouseOut: _propTypes.default.func,
1442
+ onBlur: _propTypes.default.func,
1437
1443
  offset: _propTypes.default.number,
1438
1444
  "aria-label": _propTypes.default.string,
1439
1445
  "data-test-subj": _propTypes.default.string,