@elastic/eui 106.0.0 → 106.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/es/components/collapsible_nav/collapsible_nav.js +4 -0
  2. package/es/components/flyout/flyout.js +85 -70
  3. package/es/components/flyout/flyout_child.js +13 -4
  4. package/es/components/flyout/flyout_child_manager.js +3 -1
  5. package/es/components/flyout/sessions/flyout_provider.js +4 -4
  6. package/es/components/flyout/sessions/flyout_reducer.js +11 -12
  7. package/es/components/flyout/sessions/use_eui_flyout.js +4 -27
  8. package/es/components/form/range/range_input.styles.js +5 -3
  9. package/es/components/provider/component_defaults/component_defaults.js +12 -2
  10. package/es/components/tree_view/tree_view.js +4 -0
  11. package/es/services/theme/provider.js +7 -1
  12. package/eui.d.ts +5931 -5928
  13. package/i18ntokens.json +508 -508
  14. package/lib/components/collapsible_nav/collapsible_nav.js +4 -0
  15. package/lib/components/flyout/flyout.js +84 -69
  16. package/lib/components/flyout/flyout_child.js +11 -2
  17. package/lib/components/flyout/flyout_child_manager.js +3 -1
  18. package/lib/components/flyout/sessions/flyout_provider.js +3 -3
  19. package/lib/components/flyout/sessions/flyout_reducer.js +11 -12
  20. package/lib/components/flyout/sessions/use_eui_flyout.js +4 -26
  21. package/lib/components/form/range/range_input.styles.js +5 -3
  22. package/lib/components/provider/component_defaults/component_defaults.js +12 -2
  23. package/lib/components/tree_view/tree_view.js +4 -0
  24. package/lib/services/theme/provider.js +7 -1
  25. package/optimize/es/components/flyout/flyout.js +85 -70
  26. package/optimize/es/components/flyout/flyout_child.js +13 -4
  27. package/optimize/es/components/flyout/flyout_child_manager.js +3 -1
  28. package/optimize/es/components/flyout/sessions/flyout_provider.js +4 -4
  29. package/optimize/es/components/flyout/sessions/flyout_reducer.js +11 -12
  30. package/optimize/es/components/flyout/sessions/use_eui_flyout.js +4 -27
  31. package/optimize/es/components/form/range/range_input.styles.js +5 -3
  32. package/optimize/es/components/tree_view/tree_view.js +1 -0
  33. package/optimize/es/services/theme/provider.js +7 -1
  34. package/optimize/lib/components/flyout/flyout.js +84 -69
  35. package/optimize/lib/components/flyout/flyout_child.js +11 -2
  36. package/optimize/lib/components/flyout/flyout_child_manager.js +3 -1
  37. package/optimize/lib/components/flyout/sessions/flyout_provider.js +3 -3
  38. package/optimize/lib/components/flyout/sessions/flyout_reducer.js +11 -12
  39. package/optimize/lib/components/flyout/sessions/use_eui_flyout.js +4 -26
  40. package/optimize/lib/components/form/range/range_input.styles.js +5 -3
  41. package/optimize/lib/components/tree_view/tree_view.js +1 -0
  42. package/optimize/lib/services/theme/provider.js +7 -1
  43. package/package.json +9 -11
  44. package/test-env/components/collapsible_nav/collapsible_nav.js +4 -0
  45. package/test-env/components/flyout/flyout_child.js +11 -2
  46. package/test-env/components/flyout/flyout_child_manager.js +3 -1
  47. package/test-env/components/flyout/sessions/flyout_provider.js +3 -3
  48. package/test-env/components/flyout/sessions/flyout_reducer.js +11 -12
  49. package/test-env/components/flyout/sessions/use_eui_flyout.js +4 -26
  50. package/test-env/components/form/range/range_input.styles.js +5 -3
  51. package/test-env/components/provider/component_defaults/component_defaults.js +12 -2
  52. package/test-env/components/tree_view/tree_view.js +4 -0
  53. package/test-env/services/theme/provider.js +7 -1
@@ -25,8 +25,9 @@ var _flyout_close_button = require("./_flyout_close_button");
25
25
  var _flyout = require("./flyout.styles");
26
26
  var _flyout_child = require("./flyout_child");
27
27
  var _flyout_child_manager = require("./flyout_child_manager");
28
+ var _component_defaults = require("../provider/component_defaults");
28
29
  var _react2 = require("@emotion/react");
29
- var _excluded = ["className", "children", "as", "hideCloseButton", "closeButtonProps", "closeButtonPosition", "onClose", "ownFocus", "side", "size", "paddingSize", "maxWidth", "style", "maskProps", "type", "outsideClickCloses", "pushMinBreakpoint", "pushAnimation", "focusTrapProps", "includeFixedHeadersInFocusTrap", "aria-describedby"];
30
+ var _excluded = ["className", "children", "as", "hideCloseButton", "closeButtonProps", "closeButtonPosition", "onClose", "ownFocus", "side", "size", "paddingSize", "maxWidth", "style", "maskProps", "type", "outsideClickCloses", "pushMinBreakpoint", "pushAnimation", "focusTrapProps", "includeFixedHeadersInFocusTrap", "includeSelectorInFocusTrap", "aria-describedby"];
30
31
  /*
31
32
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
32
33
  * or more contributor license agreements. Licensed under the Elastic License
@@ -50,40 +51,44 @@ function isEuiFlyoutSizeNamed(value) {
50
51
  }
51
52
  var PADDING_SIZES = exports.PADDING_SIZES = ['none', 's', 'm', 'l'];
52
53
  var defaultElement = 'div';
53
- var EuiFlyout = exports.EuiFlyout = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
54
- var className = _ref.className,
55
- children = _ref.children,
56
- as = _ref.as,
57
- _ref$hideCloseButton = _ref.hideCloseButton,
58
- hideCloseButton = _ref$hideCloseButton === void 0 ? false : _ref$hideCloseButton,
59
- closeButtonProps = _ref.closeButtonProps,
60
- _ref$closeButtonPosit = _ref.closeButtonPosition,
61
- _closeButtonPosition = _ref$closeButtonPosit === void 0 ? 'inside' : _ref$closeButtonPosit,
62
- onClose = _ref.onClose,
63
- _ref$ownFocus = _ref.ownFocus,
64
- ownFocus = _ref$ownFocus === void 0 ? true : _ref$ownFocus,
65
- _ref$side = _ref.side,
66
- side = _ref$side === void 0 ? 'right' : _ref$side,
67
- _ref$size = _ref.size,
68
- size = _ref$size === void 0 ? 'm' : _ref$size,
69
- _ref$paddingSize = _ref.paddingSize,
70
- paddingSize = _ref$paddingSize === void 0 ? 'l' : _ref$paddingSize,
71
- _ref$maxWidth = _ref.maxWidth,
72
- maxWidth = _ref$maxWidth === void 0 ? false : _ref$maxWidth,
73
- style = _ref.style,
74
- maskProps = _ref.maskProps,
75
- _ref$type = _ref.type,
76
- type = _ref$type === void 0 ? 'overlay' : _ref$type,
77
- outsideClickCloses = _ref.outsideClickCloses,
78
- _ref$pushMinBreakpoin = _ref.pushMinBreakpoint,
79
- pushMinBreakpoint = _ref$pushMinBreakpoin === void 0 ? 'l' : _ref$pushMinBreakpoin,
80
- _ref$pushAnimation = _ref.pushAnimation,
81
- pushAnimation = _ref$pushAnimation === void 0 ? false : _ref$pushAnimation,
82
- _focusTrapProps = _ref.focusTrapProps,
83
- _ref$includeFixedHead = _ref.includeFixedHeadersInFocusTrap,
84
- includeFixedHeadersInFocusTrap = _ref$includeFixedHead === void 0 ? true : _ref$includeFixedHead,
85
- _ariaDescribedBy = _ref['aria-describedby'],
86
- rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
54
+ var EuiFlyout = exports.EuiFlyout = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
55
+ var _usePropsWithComponen = (0, _component_defaults.usePropsWithComponentDefaults)('EuiFlyout', props),
56
+ className = _usePropsWithComponen.className,
57
+ children = _usePropsWithComponen.children,
58
+ as = _usePropsWithComponen.as,
59
+ _usePropsWithComponen2 = _usePropsWithComponen.hideCloseButton,
60
+ hideCloseButton = _usePropsWithComponen2 === void 0 ? false : _usePropsWithComponen2,
61
+ closeButtonProps = _usePropsWithComponen.closeButtonProps,
62
+ _usePropsWithComponen3 = _usePropsWithComponen.closeButtonPosition,
63
+ _closeButtonPosition = _usePropsWithComponen3 === void 0 ? 'inside' : _usePropsWithComponen3,
64
+ onClose = _usePropsWithComponen.onClose,
65
+ _usePropsWithComponen4 = _usePropsWithComponen.ownFocus,
66
+ ownFocus = _usePropsWithComponen4 === void 0 ? true : _usePropsWithComponen4,
67
+ _usePropsWithComponen5 = _usePropsWithComponen.side,
68
+ side = _usePropsWithComponen5 === void 0 ? 'right' : _usePropsWithComponen5,
69
+ _usePropsWithComponen6 = _usePropsWithComponen.size,
70
+ size = _usePropsWithComponen6 === void 0 ? 'm' : _usePropsWithComponen6,
71
+ _usePropsWithComponen7 = _usePropsWithComponen.paddingSize,
72
+ paddingSize = _usePropsWithComponen7 === void 0 ? 'l' : _usePropsWithComponen7,
73
+ _usePropsWithComponen8 = _usePropsWithComponen.maxWidth,
74
+ maxWidth = _usePropsWithComponen8 === void 0 ? false : _usePropsWithComponen8,
75
+ style = _usePropsWithComponen.style,
76
+ maskProps = _usePropsWithComponen.maskProps,
77
+ _usePropsWithComponen9 = _usePropsWithComponen.type,
78
+ type = _usePropsWithComponen9 === void 0 ? 'overlay' : _usePropsWithComponen9,
79
+ outsideClickCloses = _usePropsWithComponen.outsideClickCloses,
80
+ _usePropsWithComponen10 = _usePropsWithComponen.pushMinBreakpoint,
81
+ pushMinBreakpoint = _usePropsWithComponen10 === void 0 ? 'l' : _usePropsWithComponen10,
82
+ _usePropsWithComponen11 = _usePropsWithComponen.pushAnimation,
83
+ pushAnimation = _usePropsWithComponen11 === void 0 ? false : _usePropsWithComponen11,
84
+ _focusTrapProps = _usePropsWithComponen.focusTrapProps,
85
+ _usePropsWithComponen12 = _usePropsWithComponen.includeFixedHeadersInFocusTrap,
86
+ includeFixedHeadersInFocusTrap = _usePropsWithComponen12 === void 0 ? true : _usePropsWithComponen12,
87
+ includeSelectorInFocusTrap = _usePropsWithComponen.includeSelectorInFocusTrap,
88
+ _ariaDescribedBy = _usePropsWithComponen['aria-describedby'],
89
+ rest = (0, _objectWithoutProperties2.default)(_usePropsWithComponen, _excluded);
90
+ var _useEuiThemeCSSVariab = (0, _services.useEuiThemeCSSVariables)(),
91
+ setGlobalCSSVariables = _useEuiThemeCSSVariab.setGlobalCSSVariables;
87
92
  var Element = as || defaultElement;
88
93
  var maskRef = (0, _react.useRef)(null);
89
94
 
@@ -142,12 +147,17 @@ var EuiFlyout = exports.EuiFlyout = /*#__PURE__*/(0, _react.forwardRef)(function
142
147
  */
143
148
  if (isPushed) {
144
149
  var paddingSide = side === 'left' ? 'paddingInlineStart' : 'paddingInlineEnd';
150
+ var cssVarName = "--euiPushFlyoutOffset".concat(side === 'left' ? 'InlineStart' : 'InlineEnd');
145
151
  document.body.style[paddingSide] = "".concat(width, "px");
152
+
153
+ // EUI doesn't use this css variable, but it is useful for consumers
154
+ setGlobalCSSVariables((0, _defineProperty2.default)({}, cssVarName, "".concat(width, "px")));
146
155
  return function () {
147
156
  document.body.style[paddingSide] = '';
157
+ setGlobalCSSVariables((0, _defineProperty2.default)({}, cssVarName, null));
148
158
  };
149
159
  }
150
- }, [isPushed, side, width]);
160
+ }, [isPushed, setGlobalCSSVariables, side, width]);
151
161
 
152
162
  /**
153
163
  * This class doesn't actually do anything by EUI, but is nice to add for consumers (JIC)
@@ -164,11 +174,11 @@ var EuiFlyout = exports.EuiFlyout = /*#__PURE__*/(0, _react.forwardRef)(function
164
174
  * ESC key closes flyout (always?)
165
175
  */
166
176
  var onKeyDown = (0, _react.useCallback)(function (event) {
167
- if (!isPushed && event.key === _services.keys.ESCAPE) {
177
+ if (!isPushed && event.key === _services.keys.ESCAPE && !isChildFlyoutOpen) {
168
178
  event.preventDefault();
169
179
  onClose(event);
170
180
  }
171
- }, [onClose, isPushed]);
181
+ }, [onClose, isPushed, isChildFlyoutOpen]);
172
182
 
173
183
  /**
174
184
  * Set inline styles
@@ -197,32 +207,44 @@ var EuiFlyout = exports.EuiFlyout = /*#__PURE__*/(0, _react.forwardRef)(function
197
207
  var flyoutToggle = (0, _react.useRef)(document.activeElement);
198
208
  var _useState7 = (0, _react.useState)([]),
199
209
  _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
200
- fixedHeaders = _useState8[0],
201
- setFixedHeaders = _useState8[1];
202
- (0, _react.useEffect)(function () {
210
+ focusTrapShards = _useState8[0],
211
+ setFocusTrapShards = _useState8[1];
212
+ var focusTrapSelectors = (0, _react.useMemo)(function () {
213
+ var selectors = [];
214
+ if (includeSelectorInFocusTrap) {
215
+ selectors = Array.isArray(includeSelectorInFocusTrap) ? includeSelectorInFocusTrap : [includeSelectorInFocusTrap];
216
+ }
203
217
  if (includeFixedHeadersInFocusTrap) {
204
- var fixedHeaderEls = document.querySelectorAll('.euiHeader[data-fixed-header]');
205
- setFixedHeaders(Array.from(fixedHeaderEls));
218
+ selectors.push('.euiHeader[data-fixed-header]');
219
+ }
220
+ return selectors;
221
+ }, [includeSelectorInFocusTrap, includeFixedHeadersInFocusTrap]);
222
+ (0, _react.useEffect)(function () {
223
+ if (focusTrapSelectors.length > 0) {
224
+ var shardsEls = focusTrapSelectors.flatMap(function (selector) {
225
+ return Array.from(document.querySelectorAll(selector));
226
+ });
227
+ setFocusTrapShards(Array.from(shardsEls));
206
228
 
207
- // Flyouts that are toggled from fixed headers do not have working
229
+ // Flyouts that are toggled from shards do not have working
208
230
  // focus trap autoFocus, so we need to focus the flyout wrapper ourselves
209
- fixedHeaderEls.forEach(function (header) {
210
- if (header.contains(flyoutToggle.current)) {
231
+ shardsEls.forEach(function (shard) {
232
+ if (shard.contains(flyoutToggle.current)) {
211
233
  resizeRef === null || resizeRef === void 0 || resizeRef.focus();
212
234
  }
213
235
  });
214
236
  } else {
215
- // Clear existing headers if necessary, e.g. switching to `false`
216
- setFixedHeaders(function (headers) {
217
- return headers.length ? [] : headers;
237
+ // Clear existing shards if necessary, e.g. switching to `false`
238
+ setFocusTrapShards(function (shards) {
239
+ return shards.length ? [] : shards;
218
240
  });
219
241
  }
220
- }, [includeFixedHeadersInFocusTrap, resizeRef]);
242
+ }, [focusTrapSelectors, resizeRef]);
221
243
  var focusTrapProps = (0, _react.useMemo)(function () {
222
244
  return _objectSpread(_objectSpread({}, _focusTrapProps), {}, {
223
- shards: [].concat((0, _toConsumableArray2.default)(fixedHeaders), (0, _toConsumableArray2.default)((_focusTrapProps === null || _focusTrapProps === void 0 ? void 0 : _focusTrapProps.shards) || []))
245
+ shards: [].concat((0, _toConsumableArray2.default)(focusTrapShards), (0, _toConsumableArray2.default)((_focusTrapProps === null || _focusTrapProps === void 0 ? void 0 : _focusTrapProps.shards) || []))
224
246
  });
225
- }, [_focusTrapProps, fixedHeaders]);
247
+ }, [_focusTrapProps, focusTrapShards]);
226
248
 
227
249
  /*
228
250
  * Provide meaningful screen reader instructions/details
@@ -239,11 +261,11 @@ var EuiFlyout = exports.EuiFlyout = /*#__PURE__*/(0, _react.forwardRef)(function
239
261
  }) : (0, _react2.jsx)(_i18n.EuiI18n, {
240
262
  token: "euiFlyout.screenReaderNonModalDialog",
241
263
  default: "You are in a non-modal dialog. To close the dialog, press Escape."
242
- }), ' ', fixedHeaders.length > 0 && (0, _react2.jsx)(_i18n.EuiI18n, {
243
- token: "euiFlyout.screenReaderFixedHeaders",
244
- default: "You can still continue tabbing through the page headers in addition to the dialog."
264
+ }), ' ', focusTrapShards.length > 0 && (0, _react2.jsx)(_i18n.EuiI18n, {
265
+ token: "euiFlyout.screenReaderFocusTrapShards",
266
+ default: "You can still continue tabbing through other global page landmarks."
245
267
  })));
246
- }, [hasOverlayMask, descriptionId, fixedHeaders.length]);
268
+ }, [hasOverlayMask, descriptionId, focusTrapShards.length]);
247
269
 
248
270
  /*
249
271
  * Trap focus even when `ownFocus={false}`, otherwise closing
@@ -301,14 +323,7 @@ var EuiFlyout = exports.EuiFlyout = /*#__PURE__*/(0, _react.forwardRef)(function
301
323
  disabled: isPushed || ownFocus && isChildFlyoutOpen,
302
324
  scrollLock: hasOverlayMask,
303
325
  clickOutsideDisables: !ownFocus,
304
- onClickOutside: onClickOutside,
305
- returnFocus: function returnFocus() {
306
- if (!isChildFlyoutOpen && flyoutToggle.current) {
307
- flyoutToggle.current.focus();
308
- return false; // We've handled focus
309
- }
310
- return true;
311
- }
326
+ onClickOutside: onClickOutside
312
327
  }, focusTrapProps), (0, _react2.jsx)(Element, (0, _extends2.default)({
313
328
  className: classes,
314
329
  css: cssStyles,
@@ -335,11 +350,11 @@ EuiFlyout.displayName = 'EuiFlyout';
335
350
  * - Otherwise still wrap within an EuiPortal so it appends to the bottom of the window.
336
351
  * Push flyouts have no overlay OR portal behavior.
337
352
  */
338
- var EuiFlyoutWrapper = function EuiFlyoutWrapper(_ref2) {
339
- var children = _ref2.children,
340
- hasOverlayMask = _ref2.hasOverlayMask,
341
- maskProps = _ref2.maskProps,
342
- isPortalled = _ref2.isPortalled;
353
+ var EuiFlyoutWrapper = function EuiFlyoutWrapper(_ref) {
354
+ var children = _ref.children,
355
+ hasOverlayMask = _ref.hasOverlayMask,
356
+ maskProps = _ref.maskProps,
357
+ isPortalled = _ref.isPortalled;
343
358
  if (hasOverlayMask) {
344
359
  return (0, _react2.jsx)(_overlay_mask.EuiOverlayMask, (0, _extends2.default)({
345
360
  headerZindexLocation: "below"
@@ -52,7 +52,8 @@ var EuiFlyoutChild = exports.EuiFlyoutChild = function EuiFlyoutChild(_ref) {
52
52
  if (!flyoutContext) {
53
53
  throw new Error('EuiFlyoutChild must be used as a child of EuiFlyout.');
54
54
  }
55
- var setIsChildFlyoutOpen = flyoutContext.setIsChildFlyoutOpen,
55
+ var isChildFlyoutOpen = flyoutContext.isChildFlyoutOpen,
56
+ setIsChildFlyoutOpen = flyoutContext.setIsChildFlyoutOpen,
56
57
  parentSize = flyoutContext.parentSize;
57
58
  (0, _react.useEffect)(function () {
58
59
  setIsChildFlyoutOpen === null || setIsChildFlyoutOpen === void 0 || setIsChildFlyoutOpen(true);
@@ -131,6 +132,13 @@ var EuiFlyoutChild = exports.EuiFlyoutChild = function EuiFlyoutChild(_ref) {
131
132
  var childLayoutMode = flyoutContext.childLayoutMode,
132
133
  parentFlyoutRef = flyoutContext.parentFlyoutRef;
133
134
  var flyoutChildCss = [styles.euiFlyoutChild, backgroundStyle === 'shaded' ? styles.backgroundShaded : styles.backgroundDefault, size === 's' ? styles.s : styles.m, childLayoutMode === 'side-by-side' ? styles.sidePosition : styles.stackedPosition];
135
+ var onKeyDown = (0, _react.useCallback)(function (event) {
136
+ if (isChildFlyoutOpen && event.key === _services.keys.ESCAPE) {
137
+ event.preventDefault();
138
+ setIsChildFlyoutOpen === null || setIsChildFlyoutOpen === void 0 || setIsChildFlyoutOpen(false);
139
+ onClose(event.nativeEvent);
140
+ }
141
+ }, [isChildFlyoutOpen, onClose, setIsChildFlyoutOpen]);
134
142
  return (0, _react2.jsx)(_focus_trap.EuiFocusTrap, {
135
143
  returnFocus: function returnFocus() {
136
144
  if (parentFlyoutRef !== null && parentFlyoutRef !== void 0 && parentFlyoutRef.current) {
@@ -151,7 +159,8 @@ var EuiFlyoutChild = exports.EuiFlyoutChild = function EuiFlyoutChild(_ref) {
151
159
  "aria-label": ariaLabel,
152
160
  "aria-labelledby": ariaLabelledBy,
153
161
  "aria-describedby": ariaDescribedBy,
154
- tabIndex: -1
162
+ tabIndex: -1,
163
+ onKeyDown: onKeyDown // used as generic container event handler
155
164
  }, rest), flyoutTitleText && !ariaLabelledBy && (0, _react2.jsx)("h2", {
156
165
  id: titleIdGenerated,
157
166
  className: "euiScreenReaderOnly"
@@ -57,8 +57,10 @@ var EuiFlyoutChildProvider = exports.EuiFlyoutChildProvider = function EuiFlyout
57
57
  window.addEventListener('resize', handleResize);
58
58
  handleResize();
59
59
  return function () {
60
- return window.removeEventListener('resize', handleResize);
60
+ window.removeEventListener('resize', handleResize);
61
+ reportIsChildOpen === null || reportIsChildOpen === void 0 || reportIsChildOpen(false);
61
62
  };
63
+ // eslint-disable-next-line react-hooks/exhaustive-deps
62
64
  }, []);
63
65
 
64
66
  // Calculate stacking breakpoint value for child flyout.
@@ -58,7 +58,7 @@ var EuiFlyoutSessionProvider = exports.EuiFlyoutSessionProvider = function EuiFl
58
58
  var activeFlyoutGroup = state.activeFlyoutGroup;
59
59
  var handleClose = function handleClose() {
60
60
  dispatch({
61
- type: 'CLEAR_HISTORY'
61
+ type: 'CLOSE_SESSION'
62
62
  });
63
63
  };
64
64
  var handleCloseChild = function handleCloseChild() {
@@ -91,10 +91,10 @@ var EuiFlyoutSessionProvider = exports.EuiFlyoutSessionProvider = function EuiFl
91
91
  }
92
92
  }, children, (activeFlyoutGroup === null || activeFlyoutGroup === void 0 ? void 0 : activeFlyoutGroup.isMainOpen) && (0, _react2.jsx)(_index.EuiFlyout, (0, _extends2.default)({
93
93
  onClose: handleClose,
94
- size: activeFlyoutGroup.config.mainSize,
94
+ size: config === null || config === void 0 ? void 0 : config.mainSize,
95
95
  ownFocus: !activeFlyoutGroup.isChildOpen
96
96
  }, flyoutPropsMain), mainFlyoutContentNode, activeFlyoutGroup.isChildOpen && childFlyoutContentNode && (0, _react2.jsx)(_index.EuiFlyoutChild, (0, _extends2.default)({
97
97
  onClose: handleCloseChild,
98
- size: activeFlyoutGroup.config.childSize
98
+ size: config === null || config === void 0 ? void 0 : config.childSize
99
99
  }, flyoutPropsChild), childFlyoutContentNode)));
100
100
  };
@@ -62,10 +62,10 @@ function flyoutReducer(state, action) {
62
62
  switch (action.type) {
63
63
  case 'OPEN_MAIN_FLYOUT':
64
64
  {
65
- var _state$activeFlyoutGr, _state$activeFlyoutGr2;
66
65
  var _action$payload = action.payload,
67
66
  size = _action$payload.size,
68
- flyoutProps = _action$payload.flyoutProps;
67
+ flyoutProps = _action$payload.flyoutProps,
68
+ meta = _action$payload.meta;
69
69
  var newHistory = (0, _toConsumableArray2.default)(state.history);
70
70
  if (state.activeFlyoutGroup) {
71
71
  newHistory.push(state.activeFlyoutGroup);
@@ -75,11 +75,9 @@ function flyoutReducer(state, action) {
75
75
  isChildOpen: false,
76
76
  config: {
77
77
  mainSize: size,
78
- childSize: 's',
79
- mainFlyoutProps: flyoutProps,
80
- childFlyoutProps: {}
78
+ mainFlyoutProps: flyoutProps
81
79
  },
82
- meta: action.payload.meta !== undefined ? ((_state$activeFlyoutGr = state.activeFlyoutGroup) === null || _state$activeFlyoutGr === void 0 ? void 0 : _state$activeFlyoutGr.meta) !== undefined ? _objectSpread(_objectSpread({}, state.activeFlyoutGroup.meta), action.payload.meta) : action.payload.meta : (_state$activeFlyoutGr2 = state.activeFlyoutGroup) === null || _state$activeFlyoutGr2 === void 0 ? void 0 : _state$activeFlyoutGr2.meta
80
+ meta: meta
83
81
  };
84
82
  return {
85
83
  activeFlyoutGroup: applySizeConstraints(newActiveGroup),
@@ -94,14 +92,15 @@ function flyoutReducer(state, action) {
94
92
  }
95
93
  var _action$payload2 = action.payload,
96
94
  _size = _action$payload2.size,
97
- _flyoutProps = _action$payload2.flyoutProps;
95
+ _flyoutProps = _action$payload2.flyoutProps,
96
+ _meta = _action$payload2.meta;
98
97
  var updatedActiveGroup = _objectSpread(_objectSpread({}, state.activeFlyoutGroup), {}, {
99
98
  isChildOpen: true,
100
99
  config: _objectSpread(_objectSpread({}, state.activeFlyoutGroup.config), {}, {
101
100
  childSize: _size,
102
101
  childFlyoutProps: _flyoutProps
103
102
  }),
104
- meta: action.payload.meta !== undefined ? state.activeFlyoutGroup.meta !== undefined ? _objectSpread(_objectSpread({}, state.activeFlyoutGroup.meta), action.payload.meta) : action.payload.meta : state.activeFlyoutGroup.meta
103
+ meta: _meta
105
104
  });
106
105
  return {
107
106
  history: state.history,
@@ -113,7 +112,7 @@ function flyoutReducer(state, action) {
113
112
  var _action$payload3 = action.payload,
114
113
  main = _action$payload3.main,
115
114
  child = _action$payload3.child,
116
- meta = _action$payload3.meta;
115
+ _meta2 = _action$payload3.meta;
117
116
  var _newHistory = (0, _toConsumableArray2.default)(state.history);
118
117
  if (state.activeFlyoutGroup) {
119
118
  _newHistory.push(state.activeFlyoutGroup);
@@ -129,7 +128,7 @@ function flyoutReducer(state, action) {
129
128
  mainFlyoutProps: main.flyoutProps,
130
129
  childFlyoutProps: child.flyoutProps
131
130
  },
132
- meta: meta
131
+ meta: _meta2
133
132
  };
134
133
  return {
135
134
  activeFlyoutGroup: applySizeConstraints(_newActiveGroup),
@@ -184,8 +183,8 @@ function flyoutReducer(state, action) {
184
183
  activeFlyoutGroup: finalUpdatedActiveGroup
185
184
  });
186
185
  }
187
- case 'CLEAR_HISTORY':
188
- // Clear the history and remove the active group
186
+ case 'CLOSE_SESSION':
187
+ // Remove the active group and close the session
189
188
  return {
190
189
  activeFlyoutGroup: null,
191
190
  history: []
@@ -14,18 +14,6 @@ var _flyout_provider = require("./flyout_provider");
14
14
  * Side Public License, v 1.
15
15
  */
16
16
 
17
- /**
18
- * Options that control a main flyout in a session
19
- */
20
-
21
- /**
22
- * Options that control a child flyout in a session
23
- */
24
-
25
- /**
26
- * Options for opening both a main flyout and child flyout simultaneously
27
- */
28
-
29
17
  /**
30
18
  * Hook for accessing the flyout API
31
19
  * @public
@@ -65,17 +53,7 @@ function useEuiFlyoutSession() {
65
53
  var openFlyoutGroup = function openFlyoutGroup(options) {
66
54
  dispatch({
67
55
  type: 'OPEN_FLYOUT_GROUP',
68
- payload: {
69
- main: {
70
- size: options.main.size,
71
- flyoutProps: options.main.flyoutProps
72
- },
73
- child: {
74
- size: options.child.size,
75
- flyoutProps: options.child.flyoutProps
76
- },
77
- meta: options.meta
78
- }
56
+ payload: options
79
57
  });
80
58
  };
81
59
  var closeChildFlyout = function closeChildFlyout() {
@@ -88,9 +66,9 @@ function useEuiFlyoutSession() {
88
66
  type: 'GO_BACK'
89
67
  });
90
68
  };
91
- var clearHistory = function clearHistory() {
69
+ var closeSession = function closeSession() {
92
70
  dispatch({
93
- type: 'CLEAR_HISTORY'
71
+ type: 'CLOSE_SESSION'
94
72
  });
95
73
  };
96
74
  var isFlyoutOpen = !!((_state$activeFlyoutGr = state.activeFlyoutGroup) !== null && _state$activeFlyoutGr !== void 0 && _state$activeFlyoutGr.isMainOpen);
@@ -102,7 +80,7 @@ function useEuiFlyoutSession() {
102
80
  openFlyoutGroup: openFlyoutGroup,
103
81
  closeChildFlyout: closeChildFlyout,
104
82
  goBack: goBack,
105
- clearHistory: clearHistory,
83
+ closeSession: closeSession,
106
84
  isFlyoutOpen: isFlyoutOpen,
107
85
  isChildFlyoutOpen: isChildFlyoutOpen,
108
86
  canGoBack: canGoBack
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.euiRangeInputStyles = void 0;
7
7
  var _react = require("@emotion/react");
8
+ var _services = require("../../../services");
8
9
  /*
9
10
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
10
11
  * or more contributor license agreements. Licensed under the Elastic License
@@ -13,9 +14,10 @@ var _react = require("@emotion/react");
13
14
  * Side Public License, v 1.
14
15
  */
15
16
 
16
- var euiRangeInputStyles = exports.euiRangeInputStyles = function euiRangeInputStyles(_ref) {
17
- var euiTheme = _ref.euiTheme;
17
+ var euiRangeInputStyles = exports.euiRangeInputStyles = function euiRangeInputStyles(euiThemeContext) {
18
+ var euiTheme = euiThemeContext.euiTheme;
19
+ var isRefreshVariant = (0, _services.isEuiThemeRefreshVariant)(euiThemeContext, 'formVariant');
18
20
  return {
19
- euiRangeInput: /*#__PURE__*/(0, _react.css)("inline-size:auto;min-inline-size:", euiTheme.base * 4, "px;.euiRange__popover &,.euiDualRange__popover &{inline-size:100%;};label:euiRangeInput;")
21
+ euiRangeInput: /*#__PURE__*/(0, _react.css)("inline-size:auto;min-inline-size:", euiTheme.base * (isRefreshVariant ? 3.5 : 4), "px;.euiRange__popover &,.euiDualRange__popover &{inline-size:100%;};label:euiRangeInput;")
20
22
  };
21
23
  };
@@ -228,6 +228,7 @@ var EuiTreeViewClass = exports.EuiTreeViewClass = /*#__PURE__*/function (_Compon
228
228
  key: buttonId + index,
229
229
  id: buttonId,
230
230
  className: node.className,
231
+ css: node.css,
231
232
  buttonRef: function buttonRef(ref) {
232
233
  return _this2.setButtonRef(ref, index);
233
234
  },
@@ -182,7 +182,13 @@ var EuiThemeProvider = exports.EuiThemeProvider = function EuiThemeProvider(_ref
182
182
  _setThemeCSSVariables = _useState10[1];
183
183
  var setThemeCSSVariables = (0, _react2.useCallback)(function (variables) {
184
184
  return _setThemeCSSVariables(function (previous) {
185
- return _objectSpread(_objectSpread({}, previous), variables);
185
+ var merged = _objectSpread(_objectSpread({}, previous), variables);
186
+ Object.keys(merged).forEach(function (key) {
187
+ if (merged[key] === null) {
188
+ delete merged[key];
189
+ }
190
+ });
191
+ return merged;
186
192
  });
187
193
  }, []);
188
194
  var nestedThemeContext = (0, _react2.useMemo)(function () {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elastic/eui",
3
3
  "description": "Elastic UI Component Library",
4
- "version": "106.0.0",
4
+ "version": "106.1.0",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "lib",
7
7
  "module": "es",
@@ -49,10 +49,11 @@
49
49
  },
50
50
  "repository": {
51
51
  "type": "git",
52
- "url": "https://github.com/elastic/eui.git"
52
+ "url": "https://github.com/elastic/eui.git",
53
+ "directory": "packages/eui"
53
54
  },
54
55
  "dependencies": {
55
- "@elastic/eui-theme-common": "3.0.0",
56
+ "@elastic/eui-theme-common": "3.1.0",
56
57
  "@elastic/prismjs-esql": "^1.1.0",
57
58
  "@hello-pangea/dnd": "^16.6.0",
58
59
  "@types/lodash": "^4.14.202",
@@ -133,7 +134,7 @@
133
134
  "@svgr/plugin-svgo": "^8.0.1",
134
135
  "@testing-library/jest-dom": "^5.16.3",
135
136
  "@testing-library/react": "^14.0.0",
136
- "@testing-library/react-16-17": "npm:@testing-library/react@^12.1.5",
137
+ "@testing-library/react-17": "npm:@testing-library/react@^12.1.5",
137
138
  "@testing-library/react-hooks": "^7.0.2",
138
139
  "@testing-library/user-event": "^13.5.0",
139
140
  "@types/cheerio": "^0.22.31",
@@ -181,7 +182,6 @@
181
182
  "dedent": "^0.7.0",
182
183
  "dts-generator": "^3.0.0",
183
184
  "enzyme": "^3.11.0",
184
- "enzyme-adapter-react-16": "^1.15.7",
185
185
  "enzyme-to-json": "^3.5.0",
186
186
  "eslint": "^8.41.0",
187
187
  "eslint-config-prettier": "^8.8.0",
@@ -222,11 +222,9 @@
222
222
  "process": "^0.11.10",
223
223
  "raw-loader": "^4.0.1",
224
224
  "react": "^18.2.0",
225
- "react-16": "npm:react@^16.14.0",
226
225
  "react-17": "npm:react@^17.0.2",
227
226
  "react-docgen-typescript": "^2.2.2",
228
227
  "react-dom": "^18.2.0",
229
- "react-dom-16": "npm:react-dom@^16.14.0",
230
228
  "react-dom-17": "npm:react-dom@^17.0.2",
231
229
  "react-helmet": "^6.1.0",
232
230
  "react-redux": "^7.2.1",
@@ -262,11 +260,11 @@
262
260
  "@elastic/eui-theme-borealis": "3.3.0",
263
261
  "@emotion/css": "11.x",
264
262
  "@emotion/react": "11.x",
265
- "@types/react": "^16.9 || ^17.0 || ^18.0",
266
- "@types/react-dom": "^16.9 || ^17.0 || ^18.0",
263
+ "@types/react": "^17.0 || ^18.0",
264
+ "@types/react-dom": "^17.0 || ^18.0",
267
265
  "moment": "^2.13.0",
268
- "react": "^16.12 || ^17.0 || ^18.0",
269
- "react-dom": "^16.12 || ^17.0 || ^18.0",
266
+ "react": "^17.0 || ^18.0",
267
+ "react-dom": "^17.0 || ^18.0",
270
268
  "typescript": "~4.5.3 || ^5"
271
269
  },
272
270
  "files": [
@@ -217,6 +217,10 @@ EuiCollapsibleNav.propTypes = {
217
217
  * Set this to `false` if you need to disable this behavior for a specific reason.
218
218
  */
219
219
  includeFixedHeadersInFocusTrap: _propTypes.default.bool,
220
+ /**
221
+ * Specify additional css selectors to include in the focus trap.
222
+ */
223
+ includeSelectorInFocusTrap: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired).isRequired, _propTypes.default.string.isRequired]),
220
224
  /**
221
225
  * ReactNode to render as this component's content
222
226
  */
@@ -53,7 +53,8 @@ var EuiFlyoutChild = exports.EuiFlyoutChild = function EuiFlyoutChild(_ref) {
53
53
  if (!flyoutContext) {
54
54
  throw new Error('EuiFlyoutChild must be used as a child of EuiFlyout.');
55
55
  }
56
- var setIsChildFlyoutOpen = flyoutContext.setIsChildFlyoutOpen,
56
+ var isChildFlyoutOpen = flyoutContext.isChildFlyoutOpen,
57
+ setIsChildFlyoutOpen = flyoutContext.setIsChildFlyoutOpen,
57
58
  parentSize = flyoutContext.parentSize;
58
59
  (0, _react.useEffect)(function () {
59
60
  setIsChildFlyoutOpen === null || setIsChildFlyoutOpen === void 0 || setIsChildFlyoutOpen(true);
@@ -132,6 +133,13 @@ var EuiFlyoutChild = exports.EuiFlyoutChild = function EuiFlyoutChild(_ref) {
132
133
  var childLayoutMode = flyoutContext.childLayoutMode,
133
134
  parentFlyoutRef = flyoutContext.parentFlyoutRef;
134
135
  var flyoutChildCss = [styles.euiFlyoutChild, backgroundStyle === 'shaded' ? styles.backgroundShaded : styles.backgroundDefault, size === 's' ? styles.s : styles.m, childLayoutMode === 'side-by-side' ? styles.sidePosition : styles.stackedPosition];
136
+ var onKeyDown = (0, _react.useCallback)(function (event) {
137
+ if (isChildFlyoutOpen && event.key === _services.keys.ESCAPE) {
138
+ event.preventDefault();
139
+ setIsChildFlyoutOpen === null || setIsChildFlyoutOpen === void 0 || setIsChildFlyoutOpen(false);
140
+ onClose(event.nativeEvent);
141
+ }
142
+ }, [isChildFlyoutOpen, onClose, setIsChildFlyoutOpen]);
135
143
  return (0, _react2.jsx)(_focus_trap.EuiFocusTrap, {
136
144
  returnFocus: function returnFocus() {
137
145
  if (parentFlyoutRef !== null && parentFlyoutRef !== void 0 && parentFlyoutRef.current) {
@@ -152,7 +160,8 @@ var EuiFlyoutChild = exports.EuiFlyoutChild = function EuiFlyoutChild(_ref) {
152
160
  "aria-label": ariaLabel,
153
161
  "aria-labelledby": ariaLabelledBy,
154
162
  "aria-describedby": ariaDescribedBy,
155
- tabIndex: -1
163
+ tabIndex: -1,
164
+ onKeyDown: onKeyDown // used as generic container event handler
156
165
  }, rest), flyoutTitleText && !ariaLabelledBy && (0, _react2.jsx)("h2", {
157
166
  id: titleIdGenerated,
158
167
  className: "euiScreenReaderOnly"
@@ -58,8 +58,10 @@ var EuiFlyoutChildProvider = exports.EuiFlyoutChildProvider = function EuiFlyout
58
58
  window.addEventListener('resize', handleResize);
59
59
  handleResize();
60
60
  return function () {
61
- return window.removeEventListener('resize', handleResize);
61
+ window.removeEventListener('resize', handleResize);
62
+ reportIsChildOpen === null || reportIsChildOpen === void 0 || reportIsChildOpen(false);
62
63
  };
64
+ // eslint-disable-next-line react-hooks/exhaustive-deps
63
65
  }, []);
64
66
 
65
67
  // Calculate stacking breakpoint value for child flyout.
@@ -58,7 +58,7 @@ var EuiFlyoutSessionProvider = exports.EuiFlyoutSessionProvider = function EuiFl
58
58
  var activeFlyoutGroup = state.activeFlyoutGroup;
59
59
  var handleClose = function handleClose() {
60
60
  dispatch({
61
- type: 'CLEAR_HISTORY'
61
+ type: 'CLOSE_SESSION'
62
62
  });
63
63
  };
64
64
  var handleCloseChild = function handleCloseChild() {
@@ -91,10 +91,10 @@ var EuiFlyoutSessionProvider = exports.EuiFlyoutSessionProvider = function EuiFl
91
91
  }
92
92
  }, children, (activeFlyoutGroup === null || activeFlyoutGroup === void 0 ? void 0 : activeFlyoutGroup.isMainOpen) && (0, _react2.jsx)(_index.EuiFlyout, (0, _extends2.default)({
93
93
  onClose: handleClose,
94
- size: activeFlyoutGroup.config.mainSize,
94
+ size: config === null || config === void 0 ? void 0 : config.mainSize,
95
95
  ownFocus: !activeFlyoutGroup.isChildOpen
96
96
  }, flyoutPropsMain), mainFlyoutContentNode, activeFlyoutGroup.isChildOpen && childFlyoutContentNode && (0, _react2.jsx)(_index.EuiFlyoutChild, (0, _extends2.default)({
97
97
  onClose: handleCloseChild,
98
- size: activeFlyoutGroup.config.childSize
98
+ size: config === null || config === void 0 ? void 0 : config.childSize
99
99
  }, flyoutPropsChild), childFlyoutContentNode)));
100
100
  };