@elastic/eui 116.0.0 → 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 (70) hide show
  1. package/es/components/accordion/accordion.js +95 -134
  2. package/es/components/basic_table/basic_table.js +6 -0
  3. package/es/components/basic_table/in_memory_table.js +6 -0
  4. package/es/components/color_picker/color_picker_swatch.js +4 -0
  5. package/es/components/context_menu/context_menu_panel.js +2 -2
  6. package/es/components/copy/copy.js +36 -13
  7. package/es/components/datagrid/body/cell/data_grid_cell_popover.js +10 -7
  8. package/es/components/datagrid/data_grid.styles.js +6 -5
  9. package/es/components/focus_trap/focus_trap.js +110 -177
  10. package/es/components/observer/mutation_observer/mutation_observer.js +32 -35
  11. package/es/components/observer/resize_observer/resize_observer.js +46 -60
  12. package/es/components/observer/use_observer.js +62 -0
  13. package/es/components/table/table_header_cell.js +4 -0
  14. package/es/components/tool_tip/icon_tip.js +4 -0
  15. package/es/components/tool_tip/tool_tip.js +8 -2
  16. package/eui.d.ts +26 -69
  17. package/lib/components/accordion/accordion.js +102 -139
  18. package/lib/components/basic_table/basic_table.js +6 -0
  19. package/lib/components/basic_table/in_memory_table.js +6 -0
  20. package/lib/components/color_picker/color_picker_swatch.js +4 -0
  21. package/lib/components/context_menu/context_menu_panel.js +2 -2
  22. package/lib/components/copy/copy.js +35 -12
  23. package/lib/components/datagrid/body/cell/data_grid_cell_popover.js +10 -7
  24. package/lib/components/datagrid/data_grid.styles.js +6 -5
  25. package/lib/components/focus_trap/focus_trap.js +117 -183
  26. package/lib/components/observer/mutation_observer/mutation_observer.js +32 -34
  27. package/lib/components/observer/resize_observer/resize_observer.js +48 -61
  28. package/lib/components/observer/use_observer.js +68 -0
  29. package/lib/components/table/table_header_cell.js +4 -0
  30. package/lib/components/tool_tip/icon_tip.js +4 -0
  31. package/lib/components/tool_tip/tool_tip.js +8 -2
  32. package/optimize/es/components/accordion/accordion.js +88 -126
  33. package/optimize/es/components/context_menu/context_menu_panel.js +2 -2
  34. package/optimize/es/components/copy/copy.js +36 -13
  35. package/optimize/es/components/datagrid/body/cell/data_grid_cell_popover.js +10 -7
  36. package/optimize/es/components/datagrid/data_grid.styles.js +6 -5
  37. package/optimize/es/components/focus_trap/focus_trap.js +103 -122
  38. package/optimize/es/components/observer/mutation_observer/mutation_observer.js +23 -32
  39. package/optimize/es/components/observer/resize_observer/resize_observer.js +38 -54
  40. package/optimize/es/components/observer/use_observer.js +62 -0
  41. package/optimize/es/components/tool_tip/tool_tip.js +4 -2
  42. package/optimize/lib/components/accordion/accordion.js +90 -127
  43. package/optimize/lib/components/context_menu/context_menu_panel.js +2 -2
  44. package/optimize/lib/components/copy/copy.js +35 -12
  45. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_popover.js +10 -7
  46. package/optimize/lib/components/datagrid/data_grid.styles.js +6 -5
  47. package/optimize/lib/components/focus_trap/focus_trap.js +106 -124
  48. package/optimize/lib/components/observer/mutation_observer/mutation_observer.js +23 -32
  49. package/optimize/lib/components/observer/resize_observer/resize_observer.js +40 -54
  50. package/optimize/lib/components/observer/use_observer.js +68 -0
  51. package/optimize/lib/components/tool_tip/tool_tip.js +4 -2
  52. package/package.json +4 -3
  53. package/test-env/components/accordion/accordion.js +92 -129
  54. package/test-env/components/basic_table/basic_table.js +6 -0
  55. package/test-env/components/basic_table/in_memory_table.js +6 -0
  56. package/test-env/components/color_picker/color_picker_swatch.js +4 -0
  57. package/test-env/components/context_menu/context_menu_panel.js +2 -2
  58. package/test-env/components/copy/copy.js +35 -12
  59. package/test-env/components/datagrid/body/cell/data_grid_cell_popover.js +10 -7
  60. package/test-env/components/datagrid/data_grid.styles.js +6 -5
  61. package/test-env/components/observer/mutation_observer/mutation_observer.js +32 -32
  62. package/test-env/components/observer/use_observer.js +68 -0
  63. package/test-env/components/table/table_header_cell.js +4 -0
  64. package/test-env/components/tool_tip/icon_tip.js +4 -0
  65. package/test-env/components/tool_tip/tool_tip.js +8 -2
  66. package/es/components/observer/observer.js +0 -75
  67. package/lib/components/observer/observer.js +0 -79
  68. package/optimize/es/components/observer/observer.js +0 -69
  69. package/optimize/lib/components/observer/observer.js +0 -74
  70. package/test-env/components/observer/observer.js +0 -74
@@ -5,27 +5,15 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useResizeObserver = exports.hasResizeObserver = exports.EuiResizeObserver = void 0;
7
7
  var _react = require("react");
8
- var _observer = require("../observer");
9
- 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); }
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _use_observer = require("../use_observer");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
11
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
11
12
  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."); }
12
13
  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; } }
13
14
  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; }
14
15
  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; } }
15
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
16
- 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); } }
17
- function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
18
- function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
19
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
20
- 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); }
21
- function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
22
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
23
- function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
24
- 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); }
25
- function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
26
- 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; }
27
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
28
- 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); } /*
16
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } /*
29
17
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
30
18
  * or more contributor license agreements. Licensed under the Elastic License
31
19
  * 2.0 and the Server Side Public License, v 1; you may not use this file except
@@ -33,50 +21,49 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
33
21
  * Side Public License, v 1.
34
22
  */
35
23
  var hasResizeObserver = exports.hasResizeObserver = typeof window !== 'undefined' && typeof window.ResizeObserver !== 'undefined';
36
- var EuiResizeObserver = exports.EuiResizeObserver = /*#__PURE__*/function (_EuiObserver) {
37
- function EuiResizeObserver() {
38
- var _this;
39
- _classCallCheck(this, EuiResizeObserver);
40
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
41
- args[_key] = arguments[_key];
42
- }
43
- _this = _callSuper(this, EuiResizeObserver, [].concat(args));
44
- _defineProperty(_this, "name", 'EuiResizeObserver');
45
- _defineProperty(_this, "state", {
46
- height: 0,
47
- width: 0
48
- });
49
- _defineProperty(_this, "onResize", function (_ref) {
50
- var _ref2 = _slicedToArray(_ref, 1),
51
- entry = _ref2[0];
52
- var _entry$borderBoxSize$ = entry.borderBoxSize[0],
53
- width = _entry$borderBoxSize$.inlineSize,
54
- height = _entry$borderBoxSize$.blockSize;
24
+ var EuiResizeObserver = exports.EuiResizeObserver = function EuiResizeObserver(_ref) {
25
+ var children = _ref.children,
26
+ onResize = _ref.onResize;
27
+ var onResizeRef = (0, _react.useRef)(onResize);
28
+ onResizeRef.current = onResize;
29
+ var sizeRef = (0, _react.useRef)({
30
+ height: 0,
31
+ width: 0
32
+ });
33
+ var resizeCallback = (0, _react.useCallback)(function (_ref2) {
34
+ var _ref3 = _slicedToArray(_ref2, 1),
35
+ entry = _ref3[0];
36
+ var _entry$borderBoxSize$ = entry.borderBoxSize[0],
37
+ width = _entry$borderBoxSize$.inlineSize,
38
+ height = _entry$borderBoxSize$.blockSize;
55
39
 
56
- // Check for actual resize event
57
- if (_this.state.height === height && _this.state.width === width) {
58
- return;
59
- }
60
- _this.props.onResize({
61
- height: height,
62
- width: width
63
- });
64
- _this.setState({
65
- height: height,
66
- width: width
67
- });
68
- });
69
- _defineProperty(_this, "beginObserve", function () {
70
- // The superclass checks that childNode is not null before invoking
71
- // beginObserve()
72
- var childNode = _this.childNode;
73
- _this.observer = makeResizeObserver(childNode, _this.onResize);
40
+ // Check for actual resize event
41
+ if (sizeRef.current.height === height && sizeRef.current.width === width) {
42
+ return;
43
+ }
44
+ sizeRef.current = {
45
+ height: height,
46
+ width: width
47
+ };
48
+ onResizeRef.current({
49
+ height: height,
50
+ width: width
74
51
  });
75
- return _this;
76
- }
77
- _inherits(EuiResizeObserver, _EuiObserver);
78
- return _createClass(EuiResizeObserver);
79
- }(_observer.EuiObserver);
52
+ }, []);
53
+ var beginObserve = (0, _react.useCallback)(function (node) {
54
+ return makeResizeObserver(node, resizeCallback);
55
+ }, [resizeCallback]);
56
+ var updateChildNode = (0, _use_observer.useObserver)(beginObserve, 'EuiResizeObserver');
57
+ return children(updateChildNode);
58
+ };
59
+ EuiResizeObserver.propTypes = {
60
+ /**
61
+ * ReactNode to render as this component's content
62
+ */
63
+ children: _propTypes.default.func.isRequired,
64
+ onResize: _propTypes.default.func.isRequired
65
+ };
66
+ EuiResizeObserver.displayName = 'EuiResizeObserver';
80
67
  var makeResizeObserver = function makeResizeObserver(node, callback) {
81
68
  var observer;
82
69
  if (hasResizeObserver) {
@@ -107,9 +94,9 @@ var useResizeObserver = exports.useResizeObserver = function useResizeObserver(c
107
94
  }, [dimension]);
108
95
  (0, _react.useEffect)(function () {
109
96
  if (container != null) {
110
- var observer = makeResizeObserver(container, function (_ref3) {
111
- var _ref4 = _slicedToArray(_ref3, 1),
112
- entry = _ref4[0];
97
+ var observer = makeResizeObserver(container, function (_ref4) {
98
+ var _ref5 = _slicedToArray(_ref4, 1),
99
+ entry = _ref5[0];
113
100
  var _entry$borderBoxSize$2 = entry.borderBoxSize[0],
114
101
  inlineSize = _entry$borderBoxSize$2.inlineSize,
115
102
  blockSize = _entry$borderBoxSize$2.blockSize;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useObserver = void 0;
7
+ var _react = require("react");
8
+ /*
9
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
10
+ * or more contributor license agreements. Licensed under the Elastic License
11
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
12
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
13
+ * Side Public License, v 1.
14
+ */
15
+
16
+ /**
17
+ * A shared custom hook that provides a pattern for observing DOM nodes
18
+ * via browser observer APIs. Used by `EuiResizeObserver` and `EuiMutationObserver`.
19
+ *
20
+ * @param beginObserve - A callback that receives the target DOM element and should
21
+ * create and return the observer instance (e.g., `ResizeObserver`).
22
+ * @param componentName - Optional name used in error messages when no ref is
23
+ * attached on mount, mirroring the guard previously in `EuiObserver`.
24
+ */
25
+ var useObserver = exports.useObserver = function useObserver(beginObserve) {
26
+ var componentName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'useObserver';
27
+ var childNodeRef = (0, _react.useRef)(null);
28
+ var observerRef = (0, _react.useRef)(null);
29
+
30
+ // Store beginObserve in a ref so the ref callback doesn't cycle
31
+ var beginObserveRef = (0, _react.useRef)(beginObserve);
32
+ beginObserveRef.current = beginObserve;
33
+
34
+ // Store componentName in a ref so the mount-only effect can access the
35
+ // latest value without needing it as a dependency.
36
+ var componentNameRef = (0, _react.useRef)(componentName);
37
+ componentNameRef.current = componentName;
38
+
39
+ // Guard: throw if the ref callback was never called (no element attached),
40
+ // mirroring the check previously in EuiObserver.componentDidMount.
41
+ // Also cleans up the observer on unmount.
42
+ // Empty deps: run only on mount/unmount — componentName is only used for the
43
+ // error message and changing it must not disconnect/re-connect the observer.
44
+ (0, _react.useEffect)(function () {
45
+ if (childNodeRef.current == null) {
46
+ throw new Error("".concat(componentNameRef.current, " did not receive a ref"));
47
+ }
48
+ return function () {
49
+ var _observerRef$current;
50
+ (_observerRef$current = observerRef.current) === null || _observerRef$current === void 0 || _observerRef$current.disconnect();
51
+ };
52
+ }, []);
53
+ var updateChildNode = (0, _react.useCallback)(function (ref) {
54
+ if (childNodeRef.current === ref) return; // node hasn't changed
55
+
56
+ // if there's an existing observer disconnect it
57
+ if (observerRef.current != null) {
58
+ observerRef.current.disconnect();
59
+ observerRef.current = null;
60
+ }
61
+ childNodeRef.current = ref;
62
+ if (childNodeRef.current != null) {
63
+ var _beginObserveRef$curr;
64
+ observerRef.current = (_beginObserveRef$curr = beginObserveRef.current(childNodeRef.current)) !== null && _beginObserveRef$curr !== void 0 ? _beginObserveRef$curr : null;
65
+ }
66
+ }, []);
67
+ return updateChildNode;
68
+ };
@@ -242,6 +242,10 @@ EuiTableHeaderCell.propTypes = {
242
242
  * hidden.
243
243
  */
244
244
  onMouseOut: _propTypes.default.func,
245
+ /**
246
+ * If supplied, called when the trigger loses focus.
247
+ */
248
+ onBlur: _propTypes.default.func,
245
249
  /**
246
250
  * Offset in pixels from the anchor. Defaults to 16.
247
251
  */
@@ -99,6 +99,10 @@ EuiIconTip.propTypes = {
99
99
  * hidden.
100
100
  */
101
101
  onMouseOut: _propTypes.default.func,
102
+ /**
103
+ * If supplied, called when the trigger loses focus.
104
+ */
105
+ onBlur: _propTypes.default.func,
102
106
  /**
103
107
  * Offset in pixels from the anchor. Defaults to 16.
104
108
  */
@@ -18,7 +18,7 @@ var _tool_tip_anchor = require("./tool_tip_anchor");
18
18
  var _tool_tip_arrow = require("./tool_tip_arrow");
19
19
  var _tool_tip_manager = require("./tool_tip_manager");
20
20
  var _react2 = require("@emotion/react");
21
- var _excluded = ["children", "className", "anchorClassName", "anchorProps", "content", "title", "display", "repositionOnScroll", "disableScreenReaderOutput", "position", "offset", "id", "onMouseOut"];
21
+ var _excluded = ["children", "className", "anchorClassName", "anchorProps", "content", "title", "display", "repositionOnScroll", "disableScreenReaderOutput", "position", "offset", "id", "onMouseOut", "onBlur"];
22
22
  /*
23
23
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
24
24
  * or more contributor license agreements. Licensed under the Elastic License
@@ -82,6 +82,7 @@ var EuiToolTip = exports.EuiToolTip = /*#__PURE__*/(0, _react.forwardRef)(functi
82
82
  offset = _ref.offset,
83
83
  idProp = _ref.id,
84
84
  onMouseOutProp = _ref.onMouseOut,
85
+ onBlurProp = _ref.onBlur,
85
86
  rest = _objectWithoutProperties(_ref, _excluded);
86
87
  var componentDefaultsContext = (0, _react.useContext)(_component_defaults.EuiComponentDefaultsContext);
87
88
  var _useState = (0, _react.useState)(false),
@@ -228,7 +229,8 @@ var EuiToolTip = exports.EuiToolTip = /*#__PURE__*/(0, _react.forwardRef)(functi
228
229
  var onBlur = (0, _react.useCallback)(function () {
229
230
  setHasFocus(false);
230
231
  hideToolTip();
231
- }, [hideToolTip]);
232
+ onBlurProp === null || onBlurProp === void 0 || onBlurProp();
233
+ }, [hideToolTip, onBlurProp]);
232
234
  var onEscapeKey = (0, _react.useCallback)(function (event) {
233
235
  if (event.key === _services.keys.ESCAPE) {
234
236
  // when the tooltip is only visual, we don't want it to add an additional key stop
@@ -350,6 +352,10 @@ EuiToolTip.propTypes = {
350
352
  * hidden.
351
353
  */
352
354
  onMouseOut: _propTypes.default.func,
355
+ /**
356
+ * If supplied, called when the trigger loses focus.
357
+ */
358
+ onBlur: _propTypes.default.func,
353
359
  /**
354
360
  * Offset in pixels from the anchor. Defaults to 16.
355
361
  */
@@ -1,14 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
- import _createClass from "@babel/runtime/helpers/createClass";
5
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
- import _inherits from "@babel/runtime/helpers/inherits";
8
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
- var _excluded = ["children", "className", "id", "role", "element", "buttonElement", "buttonProps", "buttonClassName", "buttonContentClassName", "buttonContent", "arrowDisplay", "arrowProps", "extraAction", "paddingSize", "borders", "initialIsOpen", "forceState", "isLoading", "isLoadingMessage", "isDisabled", "theme"];
10
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
11
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
4
+ var _excluded = ["children", "className", "id", "role", "element", "buttonElement", "buttonProps", "buttonClassName", "buttonContentClassName", "buttonContent", "arrowDisplay", "arrowProps", "extraAction", "paddingSize", "borders", "initialIsOpen", "forceState", "isLoading", "isLoadingMessage", "isDisabled", "onToggle"];
12
5
  /*
13
6
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
14
7
  * or more contributor license agreements. Licensed under the Elastic License
@@ -17,128 +10,97 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
17
10
  * Side Public License, v 1.
18
11
  */
19
12
 
20
- import React, { Component } from 'react';
13
+ import React, { useState } from 'react';
21
14
  import classNames from 'classnames';
22
- import { htmlIdGenerator, withEuiTheme } from '../../services';
15
+ import { useEuiMemoizedStyles, useGeneratedHtmlId } from '../../services';
23
16
  import { EuiLoadingSpinner } from '../loading';
24
17
  import { EuiAccordionTrigger } from './accordion_trigger';
25
18
  import { EuiAccordionChildren } from './accordion_children';
26
19
  import { euiAccordionStyles } from './accordion.styles';
27
20
  import { jsx as ___EmotionJSX } from "@emotion/react";
28
21
  export var PADDING_SIZES = ['none', 'xs', 's', 'm', 'l', 'xl'];
29
- export var EuiAccordionClass = /*#__PURE__*/function (_Component) {
30
- function EuiAccordionClass() {
31
- var _this;
32
- _classCallCheck(this, EuiAccordionClass);
33
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
34
- args[_key] = arguments[_key];
22
+ export var EuiAccordion = function EuiAccordion(_ref) {
23
+ var _buttonProps$id;
24
+ var children = _ref.children,
25
+ className = _ref.className,
26
+ id = _ref.id,
27
+ _ref$role = _ref.role,
28
+ role = _ref$role === void 0 ? 'group' : _ref$role,
29
+ _ref$element = _ref.element,
30
+ Element = _ref$element === void 0 ? 'div' : _ref$element,
31
+ _ref$buttonElement = _ref.buttonElement,
32
+ buttonElement = _ref$buttonElement === void 0 ? 'button' : _ref$buttonElement,
33
+ buttonProps = _ref.buttonProps,
34
+ buttonClassName = _ref.buttonClassName,
35
+ buttonContentClassName = _ref.buttonContentClassName,
36
+ buttonContent = _ref.buttonContent,
37
+ _ref$arrowDisplay = _ref.arrowDisplay,
38
+ arrowDisplay = _ref$arrowDisplay === void 0 ? 'left' : _ref$arrowDisplay,
39
+ arrowProps = _ref.arrowProps,
40
+ extraAction = _ref.extraAction,
41
+ _ref$paddingSize = _ref.paddingSize,
42
+ paddingSize = _ref$paddingSize === void 0 ? 'none' : _ref$paddingSize,
43
+ _ref$borders = _ref.borders,
44
+ borders = _ref$borders === void 0 ? 'none' : _ref$borders,
45
+ _ref$initialIsOpen = _ref.initialIsOpen,
46
+ initialIsOpen = _ref$initialIsOpen === void 0 ? false : _ref$initialIsOpen,
47
+ forceState = _ref.forceState,
48
+ _ref$isLoading = _ref.isLoading,
49
+ isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
50
+ _ref$isLoadingMessage = _ref.isLoadingMessage,
51
+ isLoadingMessage = _ref$isLoadingMessage === void 0 ? false : _ref$isLoadingMessage,
52
+ _ref$isDisabled = _ref.isDisabled,
53
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
54
+ onToggle = _ref.onToggle,
55
+ rest = _objectWithoutProperties(_ref, _excluded);
56
+ var _useState = useState(forceState ? forceState === 'open' : initialIsOpen),
57
+ _useState2 = _slicedToArray(_useState, 2),
58
+ isOpenState = _useState2[0],
59
+ setIsOpenState = _useState2[1];
60
+ var isOpen = forceState ? forceState === 'open' : isOpenState;
61
+ var onAccordionToggle = function onAccordionToggle() {
62
+ if (forceState) {
63
+ onToggle === null || onToggle === void 0 || onToggle(!isOpen);
64
+ } else {
65
+ var nextState = !isOpenState;
66
+ setIsOpenState(nextState);
67
+ onToggle === null || onToggle === void 0 || onToggle(nextState);
35
68
  }
36
- _this = _callSuper(this, EuiAccordionClass, [].concat(args));
37
- _defineProperty(_this, "state", {
38
- isOpen: _this.props.forceState ? _this.props.forceState === 'open' : _this.props.initialIsOpen
39
- });
40
- _defineProperty(_this, "onToggle", function () {
41
- var forceState = _this.props.forceState;
42
- if (forceState) {
43
- var _this$props$onToggle, _this$props;
44
- var nextState = !_this.isOpen;
45
- (_this$props$onToggle = (_this$props = _this.props).onToggle) === null || _this$props$onToggle === void 0 || _this$props$onToggle.call(_this$props, nextState);
46
- } else {
47
- _this.setState(function (prevState) {
48
- return {
49
- isOpen: !prevState.isOpen
50
- };
51
- }, function () {
52
- var _this$props$onToggle2, _this$props2;
53
- (_this$props$onToggle2 = (_this$props2 = _this.props).onToggle) === null || _this$props$onToggle2 === void 0 || _this$props$onToggle2.call(_this$props2, _this.state.isOpen);
54
- });
55
- }
56
- });
57
- _defineProperty(_this, "generatedId", htmlIdGenerator()());
58
- return _this;
59
- }
60
- _inherits(EuiAccordionClass, _Component);
61
- return _createClass(EuiAccordionClass, [{
62
- key: "isOpen",
63
- get: function get() {
64
- return this.props.forceState ? this.props.forceState === 'open' : this.state.isOpen;
65
- }
66
- }, {
67
- key: "render",
68
- value: function render() {
69
- var _buttonProps$id;
70
- var _this$props3 = this.props,
71
- children = _this$props3.children,
72
- className = _this$props3.className,
73
- id = _this$props3.id,
74
- role = _this$props3.role,
75
- _this$props3$element = _this$props3.element,
76
- Element = _this$props3$element === void 0 ? 'div' : _this$props3$element,
77
- buttonElement = _this$props3.buttonElement,
78
- buttonProps = _this$props3.buttonProps,
79
- buttonClassName = _this$props3.buttonClassName,
80
- buttonContentClassName = _this$props3.buttonContentClassName,
81
- buttonContent = _this$props3.buttonContent,
82
- arrowDisplay = _this$props3.arrowDisplay,
83
- arrowProps = _this$props3.arrowProps,
84
- extraAction = _this$props3.extraAction,
85
- paddingSize = _this$props3.paddingSize,
86
- borders = _this$props3.borders,
87
- initialIsOpen = _this$props3.initialIsOpen,
88
- forceState = _this$props3.forceState,
89
- isLoading = _this$props3.isLoading,
90
- isLoadingMessage = _this$props3.isLoadingMessage,
91
- isDisabled = _this$props3.isDisabled,
92
- theme = _this$props3.theme,
93
- rest = _objectWithoutProperties(_this$props3, _excluded);
94
- var classes = classNames('euiAccordion', {
95
- 'euiAccordion-isOpen': this.isOpen
96
- }, className);
97
- var styles = euiAccordionStyles(theme);
98
- var cssStyles = [styles.euiAccordion, borders !== 'none' && styles.borders.borders, borders !== 'none' && styles.borders[borders]];
99
- var buttonId = (_buttonProps$id = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.id) !== null && _buttonProps$id !== void 0 ? _buttonProps$id : this.generatedId;
100
- return ___EmotionJSX(Element, _extends({
101
- className: classes,
102
- css: cssStyles
103
- }, rest), ___EmotionJSX(EuiAccordionTrigger, {
104
- ariaControlsId: id,
105
- buttonId: buttonId
106
- // Force button element to be a legend if the element is a fieldset
107
- ,
108
- buttonElement: Element === 'fieldset' ? 'legend' : buttonElement,
109
- buttonClassName: buttonClassName,
110
- buttonContent: buttonContent,
111
- buttonContentClassName: buttonContentClassName,
112
- buttonProps: buttonProps,
113
- arrowProps: arrowProps,
114
- arrowDisplay: arrowDisplay,
115
- isDisabled: isDisabled,
116
- isOpen: this.isOpen,
117
- onToggle: this.onToggle,
118
- extraAction: isLoading ? ___EmotionJSX(EuiLoadingSpinner, null) : extraAction
119
- }), ___EmotionJSX(EuiAccordionChildren, {
120
- role: role,
121
- id: id,
122
- "aria-labelledby": buttonId,
123
- paddingSize: paddingSize,
124
- isLoading: isLoading,
125
- isLoadingMessage: isLoadingMessage,
126
- isOpen: this.isOpen,
127
- initialIsOpen: initialIsOpen
128
- }, children));
129
- }
130
- }]);
131
- }(Component);
132
- _defineProperty(EuiAccordionClass, "defaultProps", {
133
- initialIsOpen: false,
134
- borders: 'none',
135
- paddingSize: 'none',
136
- arrowDisplay: 'left',
137
- isLoading: false,
138
- isDisabled: false,
139
- isLoadingMessage: false,
140
- element: 'div',
141
- buttonElement: 'button',
142
- role: 'group'
143
- });
144
- export var EuiAccordion = withEuiTheme(EuiAccordionClass);
69
+ };
70
+ var generatedId = useGeneratedHtmlId();
71
+ var buttonId = (_buttonProps$id = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.id) !== null && _buttonProps$id !== void 0 ? _buttonProps$id : generatedId;
72
+ var classes = classNames('euiAccordion', {
73
+ 'euiAccordion-isOpen': isOpen
74
+ }, className);
75
+ var styles = useEuiMemoizedStyles(euiAccordionStyles);
76
+ var cssStyles = [styles.euiAccordion, borders !== 'none' && styles.borders.borders, borders !== 'none' && styles.borders[borders]];
77
+ return ___EmotionJSX(Element, _extends({
78
+ className: classes,
79
+ css: cssStyles
80
+ }, rest), ___EmotionJSX(EuiAccordionTrigger, {
81
+ ariaControlsId: id,
82
+ buttonId: buttonId
83
+ // Force button element to be a legend if the element is a fieldset
84
+ ,
85
+ buttonElement: Element === 'fieldset' ? 'legend' : buttonElement,
86
+ buttonClassName: buttonClassName,
87
+ buttonContent: buttonContent,
88
+ buttonContentClassName: buttonContentClassName,
89
+ buttonProps: buttonProps,
90
+ arrowProps: arrowProps,
91
+ arrowDisplay: arrowDisplay,
92
+ isDisabled: isDisabled,
93
+ isOpen: isOpen,
94
+ onToggle: onAccordionToggle,
95
+ extraAction: isLoading ? ___EmotionJSX(EuiLoadingSpinner, null) : extraAction
96
+ }), ___EmotionJSX(EuiAccordionChildren, {
97
+ role: role,
98
+ id: id,
99
+ "aria-labelledby": buttonId,
100
+ paddingSize: paddingSize,
101
+ isLoading: isLoading,
102
+ isLoadingMessage: isLoadingMessage,
103
+ isOpen: isOpen,
104
+ initialIsOpen: initialIsOpen
105
+ }, children));
106
+ };
@@ -261,8 +261,8 @@ export var EuiContextMenuPanelClass = /*#__PURE__*/function (_Component) {
261
261
  }
262
262
  }, {
263
263
  key: "componentDidUpdate",
264
- value: function componentDidUpdate(_, prevState) {
265
- if (prevState.menuItems !== this.state.menuItems) {
264
+ value: function componentDidUpdate(prevProps) {
265
+ if (prevProps.items !== this.props.items) {
266
266
  this.findMenuItems();
267
267
  }
268
268
  // Focus isn't always ready to be taken on mount, so we need to call it
@@ -15,8 +15,9 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
15
15
  * Side Public License, v 1.
16
16
  */
17
17
 
18
- import React, { Component } from 'react';
18
+ import React, { Component, createRef } from 'react';
19
19
  import { copyToClipboard } from '../../services';
20
+ import { EuiScreenReaderOnly } from '../accessibility';
20
21
  import { EuiToolTip } from '../tool_tip';
21
22
  import { jsx as ___EmotionJSX } from "@emotion/react";
22
23
  export var EuiCopy = /*#__PURE__*/function (_Component) {
@@ -24,21 +25,31 @@ export var EuiCopy = /*#__PURE__*/function (_Component) {
24
25
  var _this;
25
26
  _classCallCheck(this, EuiCopy);
26
27
  _this = _callSuper(this, EuiCopy, [props]);
28
+ _defineProperty(_this, "tooltipRef", /*#__PURE__*/createRef());
27
29
  _defineProperty(_this, "copy", function () {
28
30
  var isCopied = copyToClipboard(_this.props.textToCopy);
29
31
  if (isCopied) {
30
32
  _this.setState({
31
- tooltipText: _this.props.afterMessage
33
+ tooltipText: _this.props.afterMessage,
34
+ isCopied: true
35
+ },
36
+ // `EuiToolTip` suppresses showing when content is empty, so `EuiCopy`
37
+ // imperatively shows the tooltip after the post-copy state update.
38
+ function () {
39
+ var _this$tooltipRef$curr;
40
+ (_this$tooltipRef$curr = _this.tooltipRef.current) === null || _this$tooltipRef$curr === void 0 || _this$tooltipRef$curr.showToolTip();
32
41
  });
33
42
  }
34
43
  });
35
44
  _defineProperty(_this, "resetTooltipText", function () {
36
45
  _this.setState({
37
- tooltipText: _this.props.beforeMessage
46
+ tooltipText: _this.props.beforeMessage,
47
+ isCopied: false
38
48
  });
39
49
  });
40
50
  _this.state = {
41
- tooltipText: _this.props.beforeMessage
51
+ tooltipText: _this.props.beforeMessage,
52
+ isCopied: false
42
53
  };
43
54
  return _this;
44
55
  }
@@ -46,17 +57,29 @@ export var EuiCopy = /*#__PURE__*/function (_Component) {
46
57
  return _createClass(EuiCopy, [{
47
58
  key: "render",
48
59
  value: function render() {
60
+ var _this2 = this;
49
61
  var _this$props = this.props,
50
62
  children = _this$props.children,
51
- tooltipProps = _this$props.tooltipProps;
52
- return (
53
- // See `src/components/tool_tip/tool_tip.js` for explanation of below eslint-disable
54
- // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events
55
- ___EmotionJSX(EuiToolTip, _extends({
56
- content: this.state.tooltipText,
57
- onMouseOut: this.resetTooltipText
58
- }, tooltipProps), children(this.copy))
59
- );
63
+ tooltipProps = _this$props.tooltipProps,
64
+ afterMessage = _this$props.afterMessage;
65
+ var _this$state = this.state,
66
+ tooltipText = _this$state.tooltipText,
67
+ isCopied = _this$state.isCopied;
68
+ return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(EuiToolTip, _extends({
69
+ ref: this.tooltipRef,
70
+ content: tooltipText,
71
+ onMouseOut: this.resetTooltipText
72
+ }, tooltipProps, {
73
+ onBlur: function onBlur() {
74
+ var _tooltipProps$onBlur;
75
+ tooltipProps === null || tooltipProps === void 0 || (_tooltipProps$onBlur = tooltipProps.onBlur) === null || _tooltipProps$onBlur === void 0 || _tooltipProps$onBlur.call(tooltipProps);
76
+ if (isCopied) _this2.resetTooltipText();
77
+ },
78
+ disableScreenReaderOutput: isCopied || !!(tooltipProps !== null && tooltipProps !== void 0 && tooltipProps.disableScreenReaderOutput)
79
+ }), children(this.copy)), ___EmotionJSX(EuiScreenReaderOnly, null, ___EmotionJSX("div", {
80
+ "aria-live": "assertive",
81
+ "aria-atomic": "true"
82
+ }, isCopied ? afterMessage : '')));
60
83
  }
61
84
  }]);
62
85
  }(Component);