@elastic/eui 77.1.1 → 77.1.3

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.
@@ -255,7 +255,7 @@ export var EuiFlyout = /*#__PURE__*/forwardRef(function (_ref, ref) {
255
255
  };
256
256
  var flyout = ___EmotionJSX(EuiFocusTrap, _extends({
257
257
  disabled: isPushed,
258
- scrollLock: ownFocus,
258
+ scrollLock: hasOverlayMask,
259
259
  clickOutsideDisables: !ownFocus,
260
260
  onClickOutside: onClickOutside
261
261
  }, focusTrapProps), ___EmotionJSX(Element, _extends({
@@ -1,4 +1,4 @@
1
- var _excluded = ["children", "clickOutsideDisables", "disabled", "returnFocus", "noIsolation", "scrollLock"];
1
+ var _excluded = ["children", "clickOutsideDisables", "disabled", "returnFocus", "noIsolation", "scrollLock", "gapMode"];
2
2
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
3
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -28,6 +28,7 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
28
28
  import React, { Component } from 'react';
29
29
  import PropTypes from "prop-types";
30
30
  import { FocusOn } from 'react-focus-on';
31
+ import { RemoveScrollBar } from 'react-remove-scroll-bar';
31
32
  import { findElementBySelectorOrRef } from '../../services';
32
33
  import { jsx as ___EmotionJSX } from "@emotion/react";
33
34
  export var EuiFocusTrap = /*#__PURE__*/function (_Component) {
@@ -116,17 +117,25 @@ export var EuiFocusTrap = /*#__PURE__*/function (_Component) {
116
117
  returnFocus = _this$props3.returnFocus,
117
118
  noIsolation = _this$props3.noIsolation,
118
119
  scrollLock = _this$props3.scrollLock,
120
+ gapMode = _this$props3.gapMode,
119
121
  rest = _objectWithoutProperties(_this$props3, _excluded);
120
122
  var isDisabled = disabled || this.state.hasBeenDisabledByClick;
121
123
  var focusOnProps = _objectSpread(_objectSpread({
122
124
  returnFocus: returnFocus,
123
125
  noIsolation: noIsolation,
124
- scrollLock: scrollLock,
125
126
  enabled: !isDisabled
126
127
  }, rest), {}, {
127
- onClickOutside: this.handleOutsideClick
128
+ onClickOutside: this.handleOutsideClick,
129
+ /**
130
+ * `scrollLock` should always be unset on FocusOn, as it can prevent scrolling on
131
+ * portals (i.e. popovers, comboboxes, dropdown menus, etc.) within modals & flyouts
132
+ * @see https://github.com/theKashey/react-focus-on/issues/49
133
+ */
134
+ scrollLock: false
128
135
  });
129
- return ___EmotionJSX(FocusOn, focusOnProps, children);
136
+ return ___EmotionJSX(FocusOn, focusOnProps, children, !isDisabled && scrollLock && ___EmotionJSX(RemoveScrollBar, {
137
+ gapMode: gapMode
138
+ }));
130
139
  }
131
140
  }]);
132
141
  return EuiFocusTrap;
@@ -136,7 +145,8 @@ _defineProperty(EuiFocusTrap, "defaultProps", {
136
145
  disabled: false,
137
146
  returnFocus: true,
138
147
  noIsolation: true,
139
- scrollLock: false
148
+ scrollLock: false,
149
+ gapMode: 'padding' // EUI defaults to padding because Kibana's body/layout CSS ignores `margin`
140
150
  });
141
151
  EuiFocusTrap.propTypes = {
142
152
  className: PropTypes.string,
@@ -157,5 +167,11 @@ EuiFocusTrap.propTypes = {
157
167
  */
158
168
  initialFocus: PropTypes.any,
159
169
  style: PropTypes.any,
170
+ /**
171
+ * if `scrollLock` is set to true, the body's scrollbar width will be preserved on lock
172
+ * via the `gapMode` CSS property. Depending on your custom CSS, you may prefer to use
173
+ * `margin` instead of `padding`.
174
+ */
175
+ gapMode: PropTypes.oneOf(["padding", "margin"]),
160
176
  disabled: PropTypes.bool
161
177
  };
package/eui.d.ts CHANGED
@@ -4261,6 +4261,12 @@ declare module '@elastic/eui/src/components/focus_trap/focus_trap' {
4261
4261
  */
4262
4262
  initialFocus?: FocusTarget;
4263
4263
  style?: CSSProperties;
4264
+ /**
4265
+ * if `scrollLock` is set to true, the body's scrollbar width will be preserved on lock
4266
+ * via the `gapMode` CSS property. Depending on your custom CSS, you may prefer to use
4267
+ * `margin` instead of `padding`.
4268
+ */
4269
+ gapMode?: 'padding' | 'margin';
4264
4270
  disabled?: boolean;
4265
4271
  }
4266
4272
  export interface EuiFocusTrapProps extends CommonProps, Omit<ReactFocusOnProps, 'enabled'>, // Inverted `disabled` prop used instead
@@ -4276,6 +4282,7 @@ declare module '@elastic/eui/src/components/focus_trap/focus_trap' {
4276
4282
  returnFocus: boolean;
4277
4283
  noIsolation: boolean;
4278
4284
  scrollLock: boolean;
4285
+ gapMode: string;
4279
4286
  };
4280
4287
  state: State;
4281
4288
  lastInterceptedEvent: Event | null;
@@ -260,7 +260,7 @@ var EuiFlyout = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
260
260
  };
261
261
  var flyout = (0, _react2.jsx)(_focus_trap.EuiFocusTrap, _extends({
262
262
  disabled: isPushed,
263
- scrollLock: ownFocus,
263
+ scrollLock: hasOverlayMask,
264
264
  clickOutsideDisables: !ownFocus,
265
265
  onClickOutside: onClickOutside
266
266
  }, focusTrapProps), (0, _react2.jsx)(Element, _extends({
@@ -7,9 +7,10 @@ exports.EuiFocusTrap = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _reactFocusOn = require("react-focus-on");
10
+ var _reactRemoveScrollBar = require("react-remove-scroll-bar");
10
11
  var _services = require("../../services");
11
12
  var _react2 = require("@emotion/react");
12
- var _excluded = ["children", "clickOutsideDisables", "disabled", "returnFocus", "noIsolation", "scrollLock"];
13
+ var _excluded = ["children", "clickOutsideDisables", "disabled", "returnFocus", "noIsolation", "scrollLock", "gapMode"];
13
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -117,17 +118,25 @@ var EuiFocusTrap = /*#__PURE__*/function (_Component) {
117
118
  returnFocus = _this$props3.returnFocus,
118
119
  noIsolation = _this$props3.noIsolation,
119
120
  scrollLock = _this$props3.scrollLock,
121
+ gapMode = _this$props3.gapMode,
120
122
  rest = _objectWithoutProperties(_this$props3, _excluded);
121
123
  var isDisabled = disabled || this.state.hasBeenDisabledByClick;
122
124
  var focusOnProps = _objectSpread(_objectSpread({
123
125
  returnFocus: returnFocus,
124
126
  noIsolation: noIsolation,
125
- scrollLock: scrollLock,
126
127
  enabled: !isDisabled
127
128
  }, rest), {}, {
128
- onClickOutside: this.handleOutsideClick
129
+ onClickOutside: this.handleOutsideClick,
130
+ /**
131
+ * `scrollLock` should always be unset on FocusOn, as it can prevent scrolling on
132
+ * portals (i.e. popovers, comboboxes, dropdown menus, etc.) within modals & flyouts
133
+ * @see https://github.com/theKashey/react-focus-on/issues/49
134
+ */
135
+ scrollLock: false
129
136
  });
130
- return (0, _react2.jsx)(_reactFocusOn.FocusOn, focusOnProps, children);
137
+ return (0, _react2.jsx)(_reactFocusOn.FocusOn, focusOnProps, children, !isDisabled && scrollLock && (0, _react2.jsx)(_reactRemoveScrollBar.RemoveScrollBar, {
138
+ gapMode: gapMode
139
+ }));
131
140
  }
132
141
  }]);
133
142
  return EuiFocusTrap;
@@ -138,7 +147,8 @@ _defineProperty(EuiFocusTrap, "defaultProps", {
138
147
  disabled: false,
139
148
  returnFocus: true,
140
149
  noIsolation: true,
141
- scrollLock: false
150
+ scrollLock: false,
151
+ gapMode: 'padding' // EUI defaults to padding because Kibana's body/layout CSS ignores `margin`
142
152
  });
143
153
  EuiFocusTrap.propTypes = {
144
154
  className: _propTypes.default.string,
@@ -159,5 +169,11 @@ EuiFocusTrap.propTypes = {
159
169
  */
160
170
  initialFocus: _propTypes.default.any,
161
171
  style: _propTypes.default.any,
172
+ /**
173
+ * if `scrollLock` is set to true, the body's scrollbar width will be preserved on lock
174
+ * via the `gapMode` CSS property. Depending on your custom CSS, you may prefer to use
175
+ * `margin` instead of `padding`.
176
+ */
177
+ gapMode: _propTypes.default.oneOf(["padding", "margin"]),
162
178
  disabled: _propTypes.default.bool
163
179
  };
@@ -243,7 +243,7 @@ export var EuiFlyout = /*#__PURE__*/forwardRef(function (_ref, ref) {
243
243
  };
244
244
  var flyout = ___EmotionJSX(EuiFocusTrap, _extends({
245
245
  disabled: isPushed,
246
- scrollLock: ownFocus,
246
+ scrollLock: hasOverlayMask,
247
247
  clickOutsideDisables: !ownFocus,
248
248
  onClickOutside: onClickOutside
249
249
  }, focusTrapProps), ___EmotionJSX(Element, _extends({
@@ -6,7 +6,7 @@ import _inherits from "@babel/runtime/helpers/inherits";
6
6
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7
7
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
8
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
- var _excluded = ["children", "clickOutsideDisables", "disabled", "returnFocus", "noIsolation", "scrollLock"];
9
+ var _excluded = ["children", "clickOutsideDisables", "disabled", "returnFocus", "noIsolation", "scrollLock", "gapMode"];
10
10
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
11
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
12
12
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
@@ -21,6 +21,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
21
21
 
22
22
  import React, { Component } from 'react';
23
23
  import { FocusOn } from 'react-focus-on';
24
+ import { RemoveScrollBar } from 'react-remove-scroll-bar';
24
25
  import { findElementBySelectorOrRef } from '../../services';
25
26
  import { jsx as ___EmotionJSX } from "@emotion/react";
26
27
  export var EuiFocusTrap = /*#__PURE__*/function (_Component) {
@@ -109,17 +110,25 @@ export var EuiFocusTrap = /*#__PURE__*/function (_Component) {
109
110
  returnFocus = _this$props3.returnFocus,
110
111
  noIsolation = _this$props3.noIsolation,
111
112
  scrollLock = _this$props3.scrollLock,
113
+ gapMode = _this$props3.gapMode,
112
114
  rest = _objectWithoutProperties(_this$props3, _excluded);
113
115
  var isDisabled = disabled || this.state.hasBeenDisabledByClick;
114
116
  var focusOnProps = _objectSpread(_objectSpread({
115
117
  returnFocus: returnFocus,
116
118
  noIsolation: noIsolation,
117
- scrollLock: scrollLock,
118
119
  enabled: !isDisabled
119
120
  }, rest), {}, {
120
- onClickOutside: this.handleOutsideClick
121
+ onClickOutside: this.handleOutsideClick,
122
+ /**
123
+ * `scrollLock` should always be unset on FocusOn, as it can prevent scrolling on
124
+ * portals (i.e. popovers, comboboxes, dropdown menus, etc.) within modals & flyouts
125
+ * @see https://github.com/theKashey/react-focus-on/issues/49
126
+ */
127
+ scrollLock: false
121
128
  });
122
- return ___EmotionJSX(FocusOn, focusOnProps, children);
129
+ return ___EmotionJSX(FocusOn, focusOnProps, children, !isDisabled && scrollLock && ___EmotionJSX(RemoveScrollBar, {
130
+ gapMode: gapMode
131
+ }));
123
132
  }
124
133
  }]);
125
134
  return EuiFocusTrap;
@@ -129,5 +138,6 @@ _defineProperty(EuiFocusTrap, "defaultProps", {
129
138
  disabled: false,
130
139
  returnFocus: true,
131
140
  noIsolation: true,
132
- scrollLock: false
141
+ scrollLock: false,
142
+ gapMode: 'padding' // EUI defaults to padding because Kibana's body/layout CSS ignores `margin`
133
143
  });
@@ -249,7 +249,7 @@ var EuiFlyout = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
249
249
  };
250
250
  var flyout = (0, _react2.jsx)(_focus_trap.EuiFocusTrap, (0, _extends2.default)({
251
251
  disabled: isPushed,
252
- scrollLock: ownFocus,
252
+ scrollLock: hasOverlayMask,
253
253
  clickOutsideDisables: !ownFocus,
254
254
  onClickOutside: onClickOutside
255
255
  }, focusTrapProps), (0, _react2.jsx)(Element, (0, _extends2.default)({
@@ -16,9 +16,10 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
16
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
17
  var _react = _interopRequireWildcard(require("react"));
18
18
  var _reactFocusOn = require("react-focus-on");
19
+ var _reactRemoveScrollBar = require("react-remove-scroll-bar");
19
20
  var _services = require("../../services");
20
21
  var _react2 = require("@emotion/react");
21
- var _excluded = ["children", "clickOutsideDisables", "disabled", "returnFocus", "noIsolation", "scrollLock"];
22
+ var _excluded = ["children", "clickOutsideDisables", "disabled", "returnFocus", "noIsolation", "scrollLock", "gapMode"];
22
23
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
25
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -111,17 +112,25 @@ var EuiFocusTrap = /*#__PURE__*/function (_Component) {
111
112
  returnFocus = _this$props3.returnFocus,
112
113
  noIsolation = _this$props3.noIsolation,
113
114
  scrollLock = _this$props3.scrollLock,
115
+ gapMode = _this$props3.gapMode,
114
116
  rest = (0, _objectWithoutProperties2.default)(_this$props3, _excluded);
115
117
  var isDisabled = disabled || this.state.hasBeenDisabledByClick;
116
118
  var focusOnProps = _objectSpread(_objectSpread({
117
119
  returnFocus: returnFocus,
118
120
  noIsolation: noIsolation,
119
- scrollLock: scrollLock,
120
121
  enabled: !isDisabled
121
122
  }, rest), {}, {
122
- onClickOutside: this.handleOutsideClick
123
+ onClickOutside: this.handleOutsideClick,
124
+ /**
125
+ * `scrollLock` should always be unset on FocusOn, as it can prevent scrolling on
126
+ * portals (i.e. popovers, comboboxes, dropdown menus, etc.) within modals & flyouts
127
+ * @see https://github.com/theKashey/react-focus-on/issues/49
128
+ */
129
+ scrollLock: false
123
130
  });
124
- return (0, _react2.jsx)(_reactFocusOn.FocusOn, focusOnProps, children);
131
+ return (0, _react2.jsx)(_reactFocusOn.FocusOn, focusOnProps, children, !isDisabled && scrollLock && (0, _react2.jsx)(_reactRemoveScrollBar.RemoveScrollBar, {
132
+ gapMode: gapMode
133
+ }));
125
134
  }
126
135
  }]);
127
136
  return EuiFocusTrap;
@@ -132,5 +141,6 @@ exports.EuiFocusTrap = EuiFocusTrap;
132
141
  disabled: false,
133
142
  returnFocus: true,
134
143
  noIsolation: true,
135
- scrollLock: false
144
+ scrollLock: false,
145
+ gapMode: 'padding' // EUI defaults to padding because Kibana's body/layout CSS ignores `margin`
136
146
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elastic/eui",
3
3
  "description": "Elastic UI Component Library",
4
- "version": "77.1.1",
4
+ "version": "77.1.3",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "lib",
7
7
  "module": "es",
@@ -80,6 +80,7 @@
80
80
  "react-focus-on": "^3.7.0",
81
81
  "react-input-autosize": "^3.0.0",
82
82
  "react-is": "^17.0.2",
83
+ "react-remove-scroll-bar": "^2.3.4",
83
84
  "react-virtualized-auto-sizer": "^1.0.6",
84
85
  "react-window": "^1.8.6",
85
86
  "refractor": "^3.5.0",