@elastic/eui 87.0.0 → 87.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 (126) hide show
  1. package/es/components/accordion/accordion.js +82 -35
  2. package/es/components/auto_sizer/index.js +1 -1
  3. package/es/components/breadcrumbs/breadcrumb.js +2 -3
  4. package/es/components/breadcrumbs/breadcrumbs.js +2 -3
  5. package/es/components/code/code_block_virtualized.js +25 -17
  6. package/es/components/collapsible_nav_beta/collapsible_nav_beta.js +14 -1
  7. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +8 -7
  8. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +6 -6
  9. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +7 -7
  10. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +6 -6
  11. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +9 -9
  12. package/es/components/color_picker/color_palette_picker/color_palette_picker.js +1 -1
  13. package/es/components/control_bar/control_bar.js +2 -3
  14. package/es/components/date_picker/date_picker_range.js +5 -2
  15. package/es/components/date_picker/super_date_picker/super_date_picker.js +2 -2
  16. package/es/components/date_picker/super_date_picker/super_update_button.js +1 -1
  17. package/es/components/empty_prompt/empty_prompt.js +0 -1
  18. package/es/components/flyout/flyout.js +9 -7
  19. package/es/components/flyout/flyout_body.js +15 -3
  20. package/es/components/form/range/dual_range.js +33 -6
  21. package/es/components/form/range/range.js +31 -6
  22. package/es/components/form/super_select/super_select.js +1 -1
  23. package/es/components/header/header_breadcrumbs/header_breadcrumbs.js +2 -3
  24. package/es/components/header/header_links/header_links.js +2 -3
  25. package/es/components/page/page_header/page_header_content.js +2 -3
  26. package/es/components/page/page_sidebar/page_sidebar.js +2 -2
  27. package/es/components/page_template/page_template.js +12 -4
  28. package/es/components/popover/input_popover.js +24 -9
  29. package/es/components/popover/popover.js +4 -6
  30. package/es/components/selectable/selectable_list/selectable_list.js +97 -79
  31. package/es/components/tool_tip/icon_tip.js +1 -1
  32. package/es/components/tool_tip/tool_tip.js +4 -14
  33. package/es/components/tool_tip/tool_tip_anchor.js +5 -14
  34. package/es/components/tour/tour_step.js +2 -3
  35. package/eui.d.ts +85 -37
  36. package/i18ntokens.json +54 -36
  37. package/lib/components/accordion/accordion.js +82 -35
  38. package/lib/components/auto_sizer/index.js +11 -7
  39. package/lib/components/breadcrumbs/breadcrumb.js +2 -3
  40. package/lib/components/code/code_block_virtualized.js +25 -17
  41. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +14 -1
  42. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +8 -7
  43. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +6 -6
  44. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +7 -7
  45. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +6 -6
  46. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +9 -9
  47. package/lib/components/color_picker/color_palette_picker/color_palette_picker.js +1 -1
  48. package/lib/components/date_picker/date_picker_range.js +5 -2
  49. package/lib/components/date_picker/super_date_picker/super_date_picker.js +2 -2
  50. package/lib/components/date_picker/super_date_picker/super_update_button.js +1 -1
  51. package/lib/components/empty_prompt/empty_prompt.js +0 -1
  52. package/lib/components/flyout/flyout.js +9 -7
  53. package/lib/components/flyout/flyout_body.js +15 -3
  54. package/lib/components/form/range/dual_range.js +33 -6
  55. package/lib/components/form/range/range.js +14 -6
  56. package/lib/components/form/super_select/super_select.js +1 -1
  57. package/lib/components/page/page_sidebar/page_sidebar.js +1 -1
  58. package/lib/components/page_template/page_template.js +12 -4
  59. package/lib/components/popover/input_popover.js +23 -8
  60. package/lib/components/popover/popover.js +4 -6
  61. package/lib/components/selectable/selectable_list/selectable_list.js +97 -79
  62. package/lib/components/tool_tip/icon_tip.js +1 -1
  63. package/lib/components/tool_tip/tool_tip.js +4 -14
  64. package/lib/components/tool_tip/tool_tip_anchor.js +5 -13
  65. package/optimize/es/components/accordion/accordion.js +82 -35
  66. package/optimize/es/components/auto_sizer/index.js +1 -1
  67. package/optimize/es/components/code/code_block_virtualized.js +25 -17
  68. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.js +5 -1
  69. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +2 -1
  70. package/optimize/es/components/date_picker/date_picker_range.js +5 -2
  71. package/optimize/es/components/flyout/flyout.js +9 -7
  72. package/optimize/es/components/flyout/flyout_body.js +4 -2
  73. package/optimize/es/components/form/range/dual_range.js +7 -4
  74. package/optimize/es/components/form/range/range.js +5 -4
  75. package/optimize/es/components/page/page_sidebar/page_sidebar.js +2 -2
  76. package/optimize/es/components/page_template/page_template.js +12 -4
  77. package/optimize/es/components/popover/input_popover.js +13 -8
  78. package/optimize/es/components/popover/popover.js +2 -3
  79. package/optimize/es/components/selectable/selectable_list/selectable_list.js +97 -79
  80. package/optimize/es/components/tool_tip/tool_tip.js +3 -13
  81. package/optimize/es/components/tool_tip/tool_tip_anchor.js +4 -8
  82. package/optimize/lib/components/accordion/accordion.js +82 -35
  83. package/optimize/lib/components/auto_sizer/index.js +11 -7
  84. package/optimize/lib/components/code/code_block_virtualized.js +25 -17
  85. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +5 -1
  86. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +2 -1
  87. package/optimize/lib/components/date_picker/date_picker_range.js +5 -2
  88. package/optimize/lib/components/flyout/flyout.js +9 -7
  89. package/optimize/lib/components/flyout/flyout_body.js +4 -2
  90. package/optimize/lib/components/form/range/dual_range.js +7 -4
  91. package/optimize/lib/components/form/range/range.js +5 -4
  92. package/optimize/lib/components/page/page_sidebar/page_sidebar.js +1 -1
  93. package/optimize/lib/components/page_template/page_template.js +12 -4
  94. package/optimize/lib/components/popover/input_popover.js +12 -7
  95. package/optimize/lib/components/popover/popover.js +2 -3
  96. package/optimize/lib/components/selectable/selectable_list/selectable_list.js +97 -79
  97. package/optimize/lib/components/tool_tip/tool_tip.js +3 -13
  98. package/optimize/lib/components/tool_tip/tool_tip_anchor.js +4 -8
  99. package/package.json +7 -9
  100. package/test-env/components/accordion/accordion.js +82 -35
  101. package/test-env/components/auto_sizer/index.js +11 -7
  102. package/test-env/components/breadcrumbs/breadcrumb.js +2 -3
  103. package/test-env/components/code/code_block_virtualized.js +25 -17
  104. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.js +14 -1
  105. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +8 -7
  106. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +6 -6
  107. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +7 -7
  108. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +6 -6
  109. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +9 -9
  110. package/test-env/components/color_picker/color_palette_picker/color_palette_picker.js +1 -1
  111. package/test-env/components/date_picker/date_picker_range.js +5 -2
  112. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +2 -2
  113. package/test-env/components/date_picker/super_date_picker/super_update_button.js +1 -1
  114. package/test-env/components/empty_prompt/empty_prompt.js +0 -1
  115. package/test-env/components/flyout/flyout_body.js +15 -3
  116. package/test-env/components/form/range/dual_range.js +33 -6
  117. package/test-env/components/form/range/range.js +14 -6
  118. package/test-env/components/form/super_select/super_select.js +1 -1
  119. package/test-env/components/page/page_sidebar/page_sidebar.js +1 -1
  120. package/test-env/components/page_template/page_template.js +12 -4
  121. package/test-env/components/popover/input_popover.js +23 -8
  122. package/test-env/components/popover/popover.js +4 -6
  123. package/test-env/components/selectable/selectable_list/selectable_list.js +97 -79
  124. package/test-env/components/tool_tip/icon_tip.js +1 -1
  125. package/test-env/components/tool_tip/tool_tip.js +4 -14
  126. package/test-env/components/tool_tip/tool_tip_anchor.js +5 -11
@@ -134,11 +134,11 @@ EuiCollapsibleNavAccordion.propTypes = {
134
134
  // know for sure it's an actual accordion item and not a section heading
135
135
  items: _propTypes.default.arrayOf(_propTypes.default.shape({
136
136
  /**
137
- * ReactNode to render as this component's title
137
+ * Required text to render as the nav item title
138
138
  */
139
- title: _propTypes.default.node.isRequired,
139
+ title: _propTypes.default.string.isRequired,
140
140
  /**
141
- * Allows customizing title's element.
141
+ * Allows customizing the title element.
142
142
  * Consider using a heading element for better accessibility.
143
143
  * Defaults to an unsemantic `span` or `div`, depending on context.
144
144
  */
@@ -166,11 +166,11 @@ EuiCollapsibleNavAccordion.propTypes = {
166
166
  */
167
167
  items: _propTypes.default.arrayOf(_propTypes.default.shape({
168
168
  /**
169
- * ReactNode to render as this component's title
169
+ * Required text to render as the nav item title
170
170
  */
171
- title: _propTypes.default.node,
171
+ title: _propTypes.default.string,
172
172
  /**
173
- * Allows customizing title's element.
173
+ * Allows customizing the title element.
174
174
  * Consider using a heading element for better accessibility.
175
175
  * Defaults to an unsemantic `span` or `div`, depending on context.
176
176
  */
@@ -75,11 +75,11 @@ var EuiCollapsibleNavItemDisplay = function EuiCollapsibleNavItemDisplay(_ref) {
75
75
  */
76
76
  EuiCollapsibleNavItemDisplay.propTypes = {
77
77
  /**
78
- * ReactNode to render as this component's title
78
+ * Required text to render as the nav item title
79
79
  */
80
- title: _propTypes.default.node.isRequired,
80
+ title: _propTypes.default.string.isRequired,
81
81
  /**
82
- * Allows customizing title's element.
82
+ * Allows customizing the title element.
83
83
  * Consider using a heading element for better accessibility.
84
84
  * Defaults to an unsemantic `span` or `div`, depending on context.
85
85
  */
@@ -184,11 +184,11 @@ var EuiCollapsibleNavSubItem = function EuiCollapsibleNavSubItem(_ref3) {
184
184
  exports.EuiCollapsibleNavSubItem = EuiCollapsibleNavSubItem;
185
185
  EuiCollapsibleNavSubItem.propTypes = {
186
186
  /**
187
- * ReactNode to render as this component's title
187
+ * Required text to render as the nav item title
188
188
  */
189
- title: _propTypes.default.node,
189
+ title: _propTypes.default.string,
190
190
  /**
191
- * Allows customizing title's element.
191
+ * Allows customizing the title element.
192
192
  * Consider using a heading element for better accessibility.
193
193
  * Defaults to an unsemantic `span` or `div`, depending on context.
194
194
  */
@@ -257,11 +257,11 @@ var EuiCollapsibleNavItem = function EuiCollapsibleNavItem(_ref4) {
257
257
  exports.EuiCollapsibleNavItem = EuiCollapsibleNavItem;
258
258
  EuiCollapsibleNavItem.propTypes = {
259
259
  /**
260
- * ReactNode to render as this component's title
260
+ * Required text to render as the nav item title
261
261
  */
262
- title: _propTypes.default.node.isRequired,
262
+ title: _propTypes.default.string.isRequired,
263
263
  /**
264
- * Allows customizing title's element.
264
+ * Allows customizing the title element.
265
265
  * Consider using a heading element for better accessibility.
266
266
  * Defaults to an unsemantic `span` or `div`, depending on context.
267
267
  */
@@ -146,7 +146,7 @@ EuiColorPalettePicker.propTypes = {
146
146
  */
147
147
  isOpen: _propTypes.default.bool,
148
148
  /**
149
- * Optional props to pass to the underlying [EuiPopover](/#/layout/popover).
149
+ * Optional props to pass to the underlying [EuiInputPopover](/#/layout/popover#popover-attached-to-input-element).
150
150
  * Allows fine-grained control of the popover dropdown menu, including
151
151
  * `repositionOnScroll` for EuiSuperSelects used within scrollable containers,
152
152
  * and customizing popover panel styling.
@@ -15,7 +15,7 @@ var _form = require("../form");
15
15
  var _services = require("../../services");
16
16
  var _date_picker_range = require("./date_picker_range.styles");
17
17
  var _react2 = require("@emotion/react");
18
- var _excluded = ["children", "className", "startDateControl", "endDateControl", "iconType", "inline", "shadow", "fullWidth", "isCustom", "readOnly", "isLoading", "isInvalid", "disabled", "onFocus", "onBlur", "append", "prepend"];
18
+ var _excluded = ["children", "className", "startDateControl", "endDateControl", "iconType", "inline", "shadow", "fullWidth", "compressed", "isCustom", "readOnly", "isLoading", "isInvalid", "disabled", "onFocus", "onBlur", "append", "prepend"];
19
19
  /*
20
20
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
21
21
  * or more contributor license agreements. Licensed under the Elastic License
@@ -36,6 +36,7 @@ var EuiDatePickerRange = function EuiDatePickerRange(_ref) {
36
36
  _ref$shadow = _ref.shadow,
37
37
  shadow = _ref$shadow === void 0 ? true : _ref$shadow,
38
38
  _fullWidth = _ref.fullWidth,
39
+ _compressed = _ref.compressed,
39
40
  isCustom = _ref.isCustom,
40
41
  readOnly = _ref.readOnly,
41
42
  isLoading = _ref.isLoading,
@@ -46,8 +47,9 @@ var EuiDatePickerRange = function EuiDatePickerRange(_ref) {
46
47
  append = _ref.append,
47
48
  prepend = _ref.prepend,
48
49
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
49
- // `fullWidth` should not affect inline datepickers (matches non-range behavior)
50
+ // `fullWidth` and `compressed` should not affect inline datepickers (matches non-range behavior)
50
51
  var fullWidth = _fullWidth && !inline;
52
+ var compressed = _compressed && !inline;
51
53
  var classes = (0, _classnames.default)('euiDatePickerRange', className);
52
54
  var euiTheme = (0, _services.useEuiTheme)();
53
55
  var styles = (0, _date_picker_range.euiDatePickerRangeStyles)(euiTheme);
@@ -119,6 +121,7 @@ var EuiDatePickerRange = function EuiDatePickerRange(_ref) {
119
121
  startControl: startControl,
120
122
  endControl: endControl,
121
123
  fullWidth: fullWidth,
124
+ compressed: compressed,
122
125
  readOnly: readOnly,
123
126
  isDisabled: disabled,
124
127
  isInvalid: isInvalid,
@@ -611,7 +611,7 @@ EuiSuperDatePickerInternal.propTypes = {
611
611
  /**
612
612
  * Common display alternatives for the anchor wrapper
613
613
  */
614
- display: _propTypes.default.oneOf(["inlineBlock", "block"]),
614
+ display: _propTypes.default.any,
615
615
  /**
616
616
  * Delay before showing tooltip. Good for repeatable items.
617
617
  */
@@ -793,7 +793,7 @@ EuiSuperDatePicker.propTypes = {
793
793
  children: _propTypes.default.element.isRequired,
794
794
  className: _propTypes.default.string,
795
795
  content: _propTypes.default.node,
796
- display: _propTypes.default.oneOf(["inlineBlock", "block"]),
796
+ display: _propTypes.default.any,
797
797
  delay: _propTypes.default.oneOf(["regular", "long"]).isRequired,
798
798
  title: _propTypes.default.node,
799
799
  id: _propTypes.default.string,
@@ -215,7 +215,7 @@ EuiSuperUpdateButton.propTypes = {
215
215
  /**
216
216
  * Common display alternatives for the anchor wrapper
217
217
  */
218
- display: _propTypes.default.oneOf(["inlineBlock", "block"]),
218
+ display: _propTypes.default.any,
219
219
  /**
220
220
  * Delay before showing tooltip. Good for repeatable items.
221
221
  */
@@ -131,7 +131,6 @@ EuiEmptyPrompt.propTypes = {
131
131
  "aria-label": _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.string]),
132
132
  "data-test-subj": _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.string]),
133
133
  css: _propTypes.default.oneOfType([_propTypes.default.any, _propTypes.default.any]),
134
- element: _propTypes.default.oneOf(["div"]),
135
134
  /**
136
135
  * Adds a medium shadow to the panel;
137
136
  * Only works when `color="plain"`
@@ -13,7 +13,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
13
13
  var _services = require("../../services");
14
14
  var _flyout_body = require("./flyout_body.styles");
15
15
  var _react2 = require("@emotion/react");
16
- var _excluded = ["children", "className", "banner"];
16
+ var _excluded = ["children", "className", "banner", "scrollableTabIndex"];
17
17
  /*
18
18
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
19
19
  * or more contributor license agreements. Licensed under the Elastic License
@@ -25,6 +25,8 @@ var EuiFlyoutBody = function EuiFlyoutBody(_ref) {
25
25
  var children = _ref.children,
26
26
  className = _ref.className,
27
27
  banner = _ref.banner,
28
+ _ref$scrollableTabInd = _ref.scrollableTabIndex,
29
+ scrollableTabIndex = _ref$scrollableTabInd === void 0 ? 0 : _ref$scrollableTabInd,
28
30
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
29
31
  var classes = (0, _classnames.default)('euiFlyoutBody', className);
30
32
  var euiTheme = (0, _services.useEuiTheme)();
@@ -36,7 +38,7 @@ var EuiFlyoutBody = function EuiFlyoutBody(_ref) {
36
38
  className: classes,
37
39
  css: cssStyles
38
40
  }, rest), (0, _react2.jsx)("div", {
39
- tabIndex: 0,
41
+ tabIndex: scrollableTabIndex,
40
42
  className: "euiFlyoutBody__overflow",
41
43
  css: overflowCssStyles
42
44
  }, banner && (0, _react2.jsx)("div", {
@@ -55,5 +57,15 @@ EuiFlyoutBody.propTypes = {
55
57
  /**
56
58
  * Use to display a banner at the top of the body. It is suggested to use `EuiCallOut` for it.
57
59
  */
58
- banner: _propTypes.default.node
60
+ banner: _propTypes.default.node,
61
+ /**
62
+ * [Scrollable regions (or their children) should be focusable](https://dequeuniversity.com/rules/axe/4.0/scrollable-region-focusable)
63
+ * to allow keyboard users to scroll the region via arrow keys.
64
+ *
65
+ * By default, EuiFlyoutBody's scroll overflow wrapper sets a `tabIndex` of `0`.
66
+ * If you know your flyout body content already contains focusable children
67
+ * that satisfy keyboard accessibility requirements, you can use this prop
68
+ * to override this default.
69
+ */
70
+ scrollableTabIndex: _propTypes.default.number
59
71
  };
@@ -38,7 +38,7 @@ var _range = require("./range.styles");
38
38
  var _dual_range = require("./dual_range.styles");
39
39
  var _i18n = require("../../i18n");
40
40
  var _react2 = require("@emotion/react");
41
- var _excluded = ["className", "css", "compressed", "disabled", "fullWidth", "isLoading", "readOnly", "id", "max", "min", "name", "step", "showLabels", "showInput", "showTicks", "tickInterval", "ticks", "levels", "onBlur", "onChange", "onFocus", "showRange", "value", "isInvalid", "append", "prepend", "minInputProps", "maxInputProps", "isDraggable", "theme"];
41
+ var _excluded = ["className", "css", "compressed", "disabled", "fullWidth", "isLoading", "readOnly", "id", "max", "min", "name", "step", "showLabels", "showInput", "showTicks", "tickInterval", "ticks", "levels", "onBlur", "onChange", "onFocus", "showRange", "value", "isInvalid", "append", "prepend", "minInputProps", "maxInputProps", "inputPopoverProps", "isDraggable", "theme"];
42
42
  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); }
43
43
  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; }
44
44
  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; }
@@ -268,9 +268,11 @@ var EuiDualRangeClass = /*#__PURE__*/function (_Component) {
268
268
  });
269
269
  });
270
270
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onResize", function (width) {
271
+ var _this$props$inputPopo, _this$props$inputPopo2;
271
272
  _this.setState({
272
273
  rangeWidth: width
273
274
  });
275
+ (_this$props$inputPopo = _this.props.inputPopoverProps) === null || _this$props$inputPopo === void 0 ? void 0 : (_this$props$inputPopo2 = _this$props$inputPopo.onPanelResize) === null || _this$props$inputPopo2 === void 0 ? void 0 : _this$props$inputPopo2.call(_this$props$inputPopo, width);
274
276
  });
275
277
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getNearestStep", function (value) {
276
278
  var min = _this.props.min;
@@ -387,6 +389,7 @@ var EuiDualRangeClass = /*#__PURE__*/function (_Component) {
387
389
  prepend = _this$props.prepend,
388
390
  minInputProps = _this$props.minInputProps,
389
391
  maxInputProps = _this$props.maxInputProps,
392
+ inputPopoverProps = _this$props.inputPopoverProps,
390
393
  isDraggable = _this$props.isDraggable,
391
394
  theme = _this$props.theme,
392
395
  rest = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
@@ -627,8 +630,8 @@ var EuiDualRangeClass = /*#__PURE__*/function (_Component) {
627
630
  className: showTicks || ticks ? 'euiRange__slimHorizontalSpacer' : 'euiRange__horizontalSpacer',
628
631
  css: showTicks || ticks ? rangeStyles.euiRange__slimHorizontalSpacer : rangeStyles.euiRange__horizontalSpacer
629
632
  }), maxInput));
630
- var thePopover = showInputOnly ? (0, _react2.jsx)(_popover.EuiInputPopover, {
631
- className: "euiRange__popover",
633
+ var thePopover = showInputOnly ? (0, _react2.jsx)(_popover.EuiInputPopover, (0, _extends2.default)({}, inputPopoverProps, {
634
+ className: (0, _classnames.default)('euiDualRange__popover', inputPopoverProps === null || inputPopoverProps === void 0 ? void 0 : inputPopoverProps.className),
632
635
  input: (0, _react2.jsx)(_form_control_layout.EuiFormControlLayoutDelimited, {
633
636
  startControl: minInput,
634
637
  endControl: maxInput,
@@ -647,7 +650,7 @@ var EuiDualRangeClass = /*#__PURE__*/function (_Component) {
647
650
  disableFocusTrap: true,
648
651
  onPanelResize: this.onResize,
649
652
  popoverScreenReaderText: dualSliderScreenReaderInstructions
650
- }, theRange) : undefined;
653
+ }), theRange) : undefined;
651
654
  return thePopover || theRange;
652
655
  }
653
656
  }]);
@@ -768,14 +771,38 @@ EuiDualRangeClass.propTypes = {
768
771
  * @default false
769
772
  */
770
773
  fullWidth: _propTypes.default.bool,
774
+ /**
775
+ * Only impacts inputs rendered by the `showInput` prop
776
+ */
777
+ isInvalid: _propTypes.default.bool,
771
778
  /**
772
779
  * Only impacts inputs rendered when the `showInput` prop is set to `"inputWithPopover"`
773
780
  */
774
781
  isLoading: _propTypes.default.bool,
775
782
  /**
776
- * Only impacts inputs rendered by the `showInput` prop
783
+ * Only impacts input popovers rendered when the `showInput` prop is set to `"inputWithPopover"`
784
+ *
785
+ * Allows customizing the underlying [EuiInputPopover](/#/layout/popover#popover-attached-to-input-element),
786
+ * except for props controlled by the range component
777
787
  */
778
- isInvalid: _propTypes.default.bool
788
+ inputPopoverProps: _propTypes.default.shape({
789
+ className: _propTypes.default.string,
790
+ "aria-label": _propTypes.default.string,
791
+ "data-test-subj": _propTypes.default.string,
792
+ css: _propTypes.default.any,
793
+ /**
794
+ * Alignment of the popover relative to the input
795
+ */
796
+ anchorPosition: _propTypes.default.oneOf(["downLeft", "downRight", "downCenter"]),
797
+ inputRef: _propTypes.default.any,
798
+ onPanelResize: _propTypes.default.func,
799
+ /**
800
+ * By default, **EuiInputPopovers** inherit the same width as the passed input element.
801
+ * However, if the input width is too small, you can pass a minimum panel width
802
+ * (that should be based on the popover content).
803
+ */
804
+ panelMinWidth: _propTypes.default.number
805
+ })
779
806
  };
780
807
  var EuiDualRange = (0, _services.withEuiTheme)(EuiDualRangeClass);
781
808
  exports.EuiDualRange = EuiDualRange;
@@ -33,7 +33,7 @@ var _range_wrapper = require("./range_wrapper");
33
33
  var _range = require("./range.styles");
34
34
  var _i18n = require("../../i18n");
35
35
  var _react2 = require("@emotion/react");
36
- var _excluded = ["className", "compressed", "disabled", "fullWidth", "isLoading", "readOnly", "id", "max", "min", "name", "step", "showLabels", "showInput", "showTicks", "tickInterval", "ticks", "levels", "showRange", "showValue", "valueAppend", "valuePrepend", "onBlur", "onChange", "onFocus", "value", "tabIndex", "isInvalid", "theme"];
36
+ var _excluded = ["className", "compressed", "disabled", "fullWidth", "isLoading", "readOnly", "id", "max", "min", "name", "step", "showLabels", "showInput", "inputPopoverProps", "showTicks", "tickInterval", "ticks", "levels", "showRange", "showValue", "valueAppend", "valuePrepend", "onBlur", "onChange", "onFocus", "value", "tabIndex", "isInvalid", "theme"];
37
37
  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); }
38
38
  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; }
39
39
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
@@ -123,6 +123,7 @@ var EuiRangeClass = /*#__PURE__*/function (_Component) {
123
123
  step = _this$props.step,
124
124
  showLabels = _this$props.showLabels,
125
125
  showInput = _this$props.showInput,
126
+ inputPopoverProps = _this$props.inputPopoverProps,
126
127
  showTicks = _this$props.showTicks,
127
128
  tickInterval = _this$props.tickInterval,
128
129
  ticks = _this$props.ticks,
@@ -235,8 +236,8 @@ var EuiRangeClass = /*#__PURE__*/function (_Component) {
235
236
  className: showTicks || ticks ? 'euiRange__slimHorizontalSpacer' : 'euiRange__horizontalSpacer',
236
237
  css: showTicks || ticks ? styles.euiRange__slimHorizontalSpacer : styles.euiRange__horizontalSpacer
237
238
  }), theInput));
238
- var thePopover = showInputOnly ? (0, _react2.jsx)(_popover.EuiInputPopover, {
239
- className: "euiRange__popover",
239
+ var thePopover = showInputOnly ? (0, _react2.jsx)(_popover.EuiInputPopover, (0, _extends2.default)({}, inputPopoverProps, {
240
+ className: (0, _classnames.default)('euiRange__popover', inputPopoverProps === null || inputPopoverProps === void 0 ? void 0 : inputPopoverProps.className),
240
241
  input: theInput // `showInputOnly` confirms existence
241
242
  ,
242
243
  fullWidth: fullWidth,
@@ -244,7 +245,7 @@ var EuiRangeClass = /*#__PURE__*/function (_Component) {
244
245
  closePopover: this.closePopover,
245
246
  disableFocusTrap: true,
246
247
  popoverScreenReaderText: sliderScreenReaderInstructions
247
- }, theRange) : undefined;
248
+ }), theRange) : undefined;
248
249
  return thePopover ? thePopover : theRange;
249
250
  }
250
251
  }]);
@@ -364,14 +365,21 @@ EuiRangeClass.propTypes = {
364
365
  * @default false
365
366
  */
366
367
  fullWidth: _propTypes.default.bool,
368
+ /**
369
+ * Only impacts inputs rendered by the `showInput` prop
370
+ */
371
+ isInvalid: _propTypes.default.bool,
367
372
  /**
368
373
  * Only impacts inputs rendered when the `showInput` prop is set to `"inputWithPopover"`
369
374
  */
370
375
  isLoading: _propTypes.default.bool,
371
376
  /**
372
- * Only impacts inputs rendered by the `showInput` prop
377
+ * Only impacts input popovers rendered when the `showInput` prop is set to `"inputWithPopover"`
378
+ *
379
+ * Allows customizing the underlying [EuiInputPopover](/#/layout/popover#popover-attached-to-input-element),
380
+ * except for props controlled by the range component
373
381
  */
374
- isInvalid: _propTypes.default.bool
382
+ inputPopoverProps: _propTypes.default.any
375
383
  };
376
384
  var EuiRange = (0, _services.withEuiTheme)(EuiRangeClass);
377
385
  exports.EuiRange = EuiRange;
@@ -355,7 +355,7 @@ EuiSuperSelect.propTypes = {
355
355
  */
356
356
  isOpen: _propTypes.default.bool,
357
357
  /**
358
- * Optional props to pass to the underlying [EuiPopover](/#/layout/popover).
358
+ * Optional props to pass to the underlying [EuiInputPopover](/#/layout/popover#popover-attached-to-input-element).
359
359
  * Allows fine-grained control of the popover dropdown menu, including
360
360
  * `repositionOnScroll` for EuiSuperSelects used within scrollable containers,
361
361
  * and customizing popover panel styling.
@@ -52,7 +52,7 @@ var EuiPageSidebar = function EuiPageSidebar(_ref) {
52
52
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
53
53
  inlineStyles = _useState2[0],
54
54
  setInlineStyles = _useState2[1];
55
- (0, _react.useEffect)(function () {
55
+ (0, _react.useLayoutEffect)(function () {
56
56
  var updatedStyles = _objectSpread(_objectSpread({}, style), (0, _global_styling.logicalStyle)('min-width', isResponding ? '100%' : minWidth));
57
57
  if (sticky) {
58
58
  var _document$body$datase;
@@ -40,6 +40,14 @@ var TemplateContext = /*#__PURE__*/(0, _react.createContext)({
40
40
  bottomBar: {}
41
41
  });
42
42
  exports.TemplateContext = TemplateContext;
43
+ var calculateOffset = function calculateOffset(base) {
44
+ var _document$body$datase;
45
+ if (typeof document === 'undefined') return 0; // SSR catch
46
+
47
+ var euiHeaderFixedCounter = Number((_document$body$datase = document.body.dataset.fixedHeaders) !== null && _document$body$datase !== void 0 ? _document$body$datase : 0);
48
+ return base * 3 * euiHeaderFixedCounter;
49
+ };
50
+
43
51
  /**
44
52
  * Consumed via `EuiPageTemplate`,
45
53
  * it controls and propogates most of the shared props per direct child
@@ -66,7 +74,9 @@ var _EuiPageTemplate = function _EuiPageTemplate(_ref) {
66
74
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
67
75
  var _useEuiTheme = (0, _services.useEuiTheme)(),
68
76
  euiTheme = _useEuiTheme.euiTheme;
69
- var _useState = (0, _react.useState)(_offset),
77
+ var _useState = (0, _react.useState)(function () {
78
+ return _offset !== null && _offset !== void 0 ? _offset : calculateOffset(euiTheme.base);
79
+ }),
70
80
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
71
81
  offset = _useState2[0],
72
82
  setOffset = _useState2[1];
@@ -79,9 +89,7 @@ var _EuiPageTemplate = function _EuiPageTemplate(_ref) {
79
89
  });
80
90
  (0, _react.useEffect)(function () {
81
91
  if (_offset === undefined) {
82
- var _document$body$datase;
83
- var euiHeaderFixedCounter = Number((_document$body$datase = document.body.dataset.fixedHeaders) !== null && _document$body$datase !== void 0 ? _document$body$datase : 0);
84
- setOffset(euiTheme.base * 3 * euiHeaderFixedCounter);
92
+ setOffset(calculateOffset(euiTheme.base));
85
93
  }
86
94
  }, [_offset, euiTheme.base]);
87
95
 
@@ -20,7 +20,7 @@ var _services = require("../../services");
20
20
  var _form = require("../form/form.styles");
21
21
  var _react2 = require("@emotion/react");
22
22
  var _global_styling = require("../../global_styling");
23
- var _excluded = ["children", "className", "disableFocusTrap", "focusTrapProps", "input", "fullWidth", "onPanelResize", "inputRef", "panelRef"];
23
+ var _excluded = ["children", "className", "disableFocusTrap", "focusTrapProps", "input", "fullWidth", "panelMinWidth", "onPanelResize", "inputRef", "panelRef"];
24
24
  /*
25
25
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
26
26
  * or more contributor license agreements. Licensed under the Elastic License
@@ -39,6 +39,8 @@ var EuiInputPopover = function EuiInputPopover(_ref) {
39
39
  input = _ref.input,
40
40
  _ref$fullWidth = _ref.fullWidth,
41
41
  fullWidth = _ref$fullWidth === void 0 ? false : _ref$fullWidth,
42
+ _ref$panelMinWidth = _ref.panelMinWidth,
43
+ panelMinWidth = _ref$panelMinWidth === void 0 ? 0 : _ref$panelMinWidth,
42
44
  onPanelResize = _ref.onPanelResize,
43
45
  _inputRef = _ref.inputRef,
44
46
  _panelRef = _ref.panelRef,
@@ -56,22 +58,24 @@ var EuiInputPopover = function EuiInputPopover(_ref) {
56
58
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
57
59
  panelEl = _useState6[0],
58
60
  setPanelEl = _useState6[1];
61
+ var popoverClassRef = (0, _react.useRef)(null);
59
62
  var inputRef = (0, _services.useCombinedRefs)([setInputEl, _inputRef]);
60
63
  var panelRef = (0, _services.useCombinedRefs)([setPanelEl, _panelRef]);
61
64
  var setPanelWidth = (0, _react.useCallback)(function (width) {
62
65
  if (panelEl && (!!inputElWidth || !!width)) {
63
66
  var newWidth = !!width ? width : inputElWidth;
64
- panelEl.style.width = "".concat(newWidth, "px");
65
- if (onPanelResize) {
66
- onPanelResize(newWidth);
67
- }
67
+ var widthToSet = newWidth && newWidth > panelMinWidth ? newWidth : panelMinWidth;
68
+ panelEl.style.width = "".concat(widthToSet, "px");
69
+ onPanelResize === null || onPanelResize === void 0 ? void 0 : onPanelResize(widthToSet);
68
70
  }
69
- }, [panelEl, inputElWidth, onPanelResize]);
71
+ }, [panelEl, inputElWidth, onPanelResize, panelMinWidth]);
70
72
  var onResize = (0, _react.useCallback)(function () {
71
73
  if (inputEl) {
74
+ var _popoverClassRef$curr;
72
75
  var _width = inputEl.getBoundingClientRect().width;
73
76
  setInputElWidth(_width);
74
77
  setPanelWidth(_width);
78
+ (_popoverClassRef$curr = popoverClassRef.current) === null || _popoverClassRef$curr === void 0 ? void 0 : _popoverClassRef$curr.positionPopoverFluid();
75
79
  }
76
80
  }, [inputEl, setPanelWidth]);
77
81
  (0, _react.useEffect)(function () {
@@ -106,7 +110,8 @@ var EuiInputPopover = function EuiInputPopover(_ref) {
106
110
  }),
107
111
  buttonRef: inputRef,
108
112
  panelRef: panelRef,
109
- className: classes
113
+ className: classes,
114
+ ref: popoverClassRef
110
115
  }, props), (0, _react2.jsx)(_focus_trap.EuiFocusTrap, (0, _extends2.default)({
111
116
  clickOutsideDisables: true,
112
117
  disabled: disableFocusTrap
@@ -120,11 +125,21 @@ EuiInputPopover.propTypes = {
120
125
  "aria-label": _propTypes.default.string,
121
126
  "data-test-subj": _propTypes.default.string,
122
127
  css: _propTypes.default.any,
128
+ /**
129
+ * Alignment of the popover relative to the input
130
+ */
131
+ anchorPosition: _propTypes.default.oneOf(["downLeft", "downRight", "downCenter"]),
123
132
  disableFocusTrap: _propTypes.default.bool,
124
133
  fullWidth: _propTypes.default.bool,
125
134
  input: _propTypes.default.any.isRequired,
126
135
  inputRef: _propTypes.default.any,
127
- onPanelResize: _propTypes.default.func
136
+ onPanelResize: _propTypes.default.func,
137
+ /**
138
+ * By default, **EuiInputPopovers** inherit the same width as the passed input element.
139
+ * However, if the input width is too small, you can pass a minimum panel width
140
+ * (that should be based on the popover content).
141
+ */
142
+ panelMinWidth: _propTypes.default.number
128
143
  };
129
144
  EuiInputPopover.defaultProps = {
130
145
  anchorPosition: 'downLeft',
@@ -217,8 +217,7 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
217
217
  top = _findPopoverPosition.top,
218
218
  left = _findPopoverPosition.left,
219
219
  foundPosition = _findPopoverPosition.position,
220
- arrow = _findPopoverPosition.arrow,
221
- anchorBoundingBox = _findPopoverPosition.anchorBoundingBox;
220
+ arrow = _findPopoverPosition.arrow;
222
221
 
223
222
  // the popover's z-index must inherit from the button
224
223
  // this keeps a button's popover under a flyout that would cover the button
@@ -227,7 +226,7 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
227
226
  var zIndex = zIndexProp == null ? (0, _popover.getElementZIndex)(_this.button, _this.panel) + 2000 : zIndexProp;
228
227
  var popoverStyles = _objectSpread(_objectSpread({}, _this.props.panelStyle), {}, {
229
228
  top: top,
230
- left: _this.props.attachToAnchor && anchorBoundingBox ? anchorBoundingBox.left : left,
229
+ left: left,
231
230
  zIndex: zIndex
232
231
  });
233
232
  var willRenderArrow = !_this.props.attachToAnchor && _this.props.hasArrow;
@@ -549,9 +548,8 @@ EuiPopover.propTypes = {
549
548
  */
550
549
  anchorPosition: _propTypes.default.any,
551
550
  /**
552
- * Style and position alteration for arrow-less, left-aligned
553
- * attachment. Intended for use with inputs as anchors, e.g.
554
- * EuiInputPopover
551
+ * Style and position alteration for arrow-less attachment.
552
+ * Intended for use with inputs as anchors, e.g. EuiInputPopover
555
553
  */
556
554
  attachToAnchor: _propTypes.default.bool,
557
555
  /**