@elastic/eui 90.0.0 → 91.0.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 (232) hide show
  1. package/dist/eui_charts_theme.js +1 -15
  2. package/dist/eui_charts_theme.js.map +1 -1
  3. package/dist/eui_theme_dark.css +112 -80
  4. package/dist/eui_theme_dark.min.css +1 -1
  5. package/dist/eui_theme_light.css +112 -80
  6. package/dist/eui_theme_light.min.css +1 -1
  7. package/es/components/accordion/accordion.js +13 -2
  8. package/es/components/accordion/accordion_children/accordion_children.js +4 -3
  9. package/es/components/breadcrumbs/breadcrumb.js +5 -5
  10. package/es/components/breadcrumbs/breadcrumbs.js +5 -5
  11. package/es/components/button/button_display/_button_display.js +1 -1
  12. package/es/components/button/button_group/button_group.js +8 -10
  13. package/es/components/button/button_group/button_group_button.js +8 -51
  14. package/es/components/button/button_group/button_group_button.styles.js +2 -12
  15. package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +8 -0
  16. package/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +8 -3
  17. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +7 -3
  18. package/es/components/combo_box/combo_box.js +7 -5
  19. package/es/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  20. package/es/components/combo_box/combo_box_input/combo_box_pill.js +8 -18
  21. package/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  22. package/es/components/combo_box/utils.js +23 -0
  23. package/es/components/control_bar/control_bar.js +5 -5
  24. package/es/components/datagrid/body/header/data_grid_header_cell.js +1 -1
  25. package/es/components/datagrid/controls/column_selector.js +5 -6
  26. package/es/components/datagrid/controls/column_sorting.js +6 -9
  27. package/es/components/datagrid/controls/display_selector.js +21 -16
  28. package/es/components/datagrid/data_grid.js +3 -864
  29. package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +92 -26
  30. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +1 -1
  31. package/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  32. package/es/components/date_picker/super_date_picker/super_date_picker.js +19 -0
  33. package/es/components/facet/facet_button.js +1 -1
  34. package/es/components/filter_group/filter_group.styles.js +1 -1
  35. package/es/components/header/header_breadcrumbs/header_breadcrumbs.js +5 -5
  36. package/es/components/header/header_links/header_links.js +5 -5
  37. package/es/components/i18n/i18n.js +1 -0
  38. package/es/components/page/page_header/page_header_content.js +5 -5
  39. package/es/components/popover/input_popover.js +1 -1
  40. package/es/components/popover/popover.js +15 -27
  41. package/es/components/popover/popover_arrow/_popover_arrow.styles.js +2 -4
  42. package/es/components/popover/popover_panel/_popover_panel.js +2 -6
  43. package/es/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  44. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +13 -11
  45. package/es/components/toast/global_toast_list.js +11 -1
  46. package/es/components/tour/tour_step.js +5 -5
  47. package/es/global_styling/mixins/_states.js +4 -1
  48. package/es/services/color/eui_palettes.js +0 -6
  49. package/es/services/color/index.js +1 -1
  50. package/es/services/hooks/useCombinedRefs.js +16 -9
  51. package/es/services/index.js +1 -2
  52. package/es/test/rtl/component_helpers.d.ts +2 -0
  53. package/es/test/rtl/component_helpers.js +40 -1
  54. package/eui.d.ts +96 -82
  55. package/i18ntokens.json +199 -181
  56. package/lib/components/accordion/accordion.js +13 -2
  57. package/lib/components/accordion/accordion_children/accordion_children.js +4 -3
  58. package/lib/components/breadcrumbs/breadcrumb.js +5 -5
  59. package/lib/components/button/button_display/_button_display.js +1 -1
  60. package/lib/components/button/button_group/button_group.js +7 -9
  61. package/lib/components/button/button_group/button_group_button.js +8 -51
  62. package/lib/components/button/button_group/button_group_button.styles.js +2 -12
  63. package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +8 -0
  64. package/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +7 -2
  65. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +6 -2
  66. package/lib/components/combo_box/combo_box.js +7 -5
  67. package/lib/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  68. package/lib/components/combo_box/combo_box_input/combo_box_pill.js +8 -18
  69. package/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  70. package/lib/components/combo_box/utils.js +31 -0
  71. package/lib/components/datagrid/body/header/data_grid_header_cell.js +1 -1
  72. package/lib/components/datagrid/controls/column_selector.js +5 -6
  73. package/lib/components/datagrid/controls/column_sorting.js +5 -8
  74. package/lib/components/datagrid/controls/display_selector.js +21 -16
  75. package/lib/components/datagrid/data_grid.js +2 -863
  76. package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +91 -26
  77. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +1 -1
  78. package/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  79. package/lib/components/date_picker/super_date_picker/super_date_picker.js +19 -0
  80. package/lib/components/facet/facet_button.js +1 -1
  81. package/lib/components/filter_group/filter_group.styles.js +1 -1
  82. package/lib/components/i18n/i18n.js +1 -0
  83. package/lib/components/popover/input_popover.js +1 -1
  84. package/lib/components/popover/popover.js +29 -35
  85. package/lib/components/popover/popover_arrow/_popover_arrow.styles.js +1 -3
  86. package/lib/components/popover/popover_panel/_popover_panel.js +2 -1
  87. package/lib/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  88. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +12 -10
  89. package/lib/components/toast/global_toast_list.js +11 -1
  90. package/lib/global_styling/mixins/_states.js +4 -1
  91. package/lib/services/color/eui_palettes.js +1 -8
  92. package/lib/services/color/index.js +0 -7
  93. package/lib/services/hooks/useCombinedRefs.js +19 -10
  94. package/lib/services/index.js +0 -15
  95. package/lib/test/rtl/component_helpers.d.ts +2 -0
  96. package/lib/test/rtl/component_helpers.js +41 -3
  97. package/optimize/es/components/accordion/accordion.js +5 -2
  98. package/optimize/es/components/accordion/accordion_children/accordion_children.js +4 -3
  99. package/optimize/es/components/button/button_group/button_group.js +7 -8
  100. package/optimize/es/components/button/button_group/button_group_button.js +6 -38
  101. package/optimize/es/components/button/button_group/button_group_button.styles.js +2 -12
  102. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +8 -3
  103. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +7 -3
  104. package/optimize/es/components/combo_box/combo_box.js +7 -5
  105. package/optimize/es/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  106. package/optimize/es/components/combo_box/combo_box_input/combo_box_pill.js +8 -17
  107. package/optimize/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  108. package/optimize/es/components/combo_box/utils.js +23 -0
  109. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.js +1 -1
  110. package/optimize/es/components/datagrid/controls/column_selector.js +5 -6
  111. package/optimize/es/components/datagrid/controls/column_sorting.js +6 -9
  112. package/optimize/es/components/datagrid/controls/display_selector.js +21 -16
  113. package/optimize/es/components/datagrid/data_grid.js +3 -3
  114. package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +87 -26
  115. package/optimize/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  116. package/optimize/es/components/filter_group/filter_group.styles.js +1 -1
  117. package/optimize/es/components/i18n/i18n.js +1 -0
  118. package/optimize/es/components/popover/input_popover.js +1 -1
  119. package/optimize/es/components/popover/popover.js +10 -22
  120. package/optimize/es/components/popover/popover_arrow/_popover_arrow.styles.js +2 -4
  121. package/optimize/es/components/popover/popover_panel/_popover_panel.js +2 -1
  122. package/optimize/es/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  123. package/optimize/es/components/selectable/selectable_templates/selectable_template_sitewide.js +13 -11
  124. package/optimize/es/components/toast/global_toast_list.js +1 -1
  125. package/optimize/es/global_styling/mixins/_states.js +4 -1
  126. package/optimize/es/services/color/eui_palettes.js +0 -6
  127. package/optimize/es/services/color/index.js +1 -1
  128. package/optimize/es/services/hooks/useCombinedRefs.js +16 -9
  129. package/optimize/es/services/index.js +1 -2
  130. package/optimize/es/test/rtl/component_helpers.d.ts +2 -0
  131. package/optimize/es/test/rtl/component_helpers.js +40 -1
  132. package/optimize/lib/components/accordion/accordion.js +5 -2
  133. package/optimize/lib/components/accordion/accordion_children/accordion_children.js +4 -3
  134. package/optimize/lib/components/button/button_group/button_group.js +6 -7
  135. package/optimize/lib/components/button/button_group/button_group_button.js +6 -38
  136. package/optimize/lib/components/button/button_group/button_group_button.styles.js +2 -12
  137. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +7 -2
  138. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +6 -2
  139. package/optimize/lib/components/combo_box/combo_box.js +7 -5
  140. package/optimize/lib/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  141. package/optimize/lib/components/combo_box/combo_box_input/combo_box_pill.js +8 -17
  142. package/optimize/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  143. package/optimize/lib/components/combo_box/utils.js +31 -0
  144. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.js +1 -1
  145. package/optimize/lib/components/datagrid/controls/column_selector.js +5 -6
  146. package/optimize/lib/components/datagrid/controls/column_sorting.js +5 -8
  147. package/optimize/lib/components/datagrid/controls/display_selector.js +21 -16
  148. package/optimize/lib/components/datagrid/data_grid.js +2 -2
  149. package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +86 -26
  150. package/optimize/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  151. package/optimize/lib/components/filter_group/filter_group.styles.js +1 -1
  152. package/optimize/lib/components/i18n/i18n.js +1 -0
  153. package/optimize/lib/components/popover/input_popover.js +1 -1
  154. package/optimize/lib/components/popover/popover.js +24 -35
  155. package/optimize/lib/components/popover/popover_arrow/_popover_arrow.styles.js +1 -3
  156. package/optimize/lib/components/popover/popover_panel/_popover_panel.js +2 -1
  157. package/optimize/lib/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  158. package/optimize/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +12 -10
  159. package/optimize/lib/components/toast/global_toast_list.js +1 -1
  160. package/optimize/lib/global_styling/mixins/_states.js +4 -1
  161. package/optimize/lib/services/color/eui_palettes.js +1 -8
  162. package/optimize/lib/services/color/index.js +0 -7
  163. package/optimize/lib/services/hooks/useCombinedRefs.js +19 -10
  164. package/optimize/lib/services/index.js +0 -15
  165. package/optimize/lib/test/rtl/component_helpers.d.ts +2 -0
  166. package/optimize/lib/test/rtl/component_helpers.js +41 -3
  167. package/package.json +10 -10
  168. package/src/components/combo_box/_combo_box.scss +46 -14
  169. package/src/components/combo_box/combo_box_input/_combo_box_pill.scss +0 -17
  170. package/src/components/combo_box/combo_box_input/_index.scss +0 -2
  171. package/src/components/datagrid/_data_grid_data_row.scss +1 -2
  172. package/src/components/date_picker/super_date_picker/date_popover/_absolute_tab.scss +21 -0
  173. package/src/components/date_picker/super_date_picker/quick_select_popover/_quick_select_popover.scss +0 -4
  174. package/src/components/form/form_control_layout/_form_control_layout.scss +0 -1
  175. package/src/global_styling/variables/_typography.scss +2 -2
  176. package/test-env/components/accordion/accordion.js +13 -2
  177. package/test-env/components/accordion/accordion_children/accordion_children.js +4 -3
  178. package/test-env/components/breadcrumbs/breadcrumb.js +5 -5
  179. package/test-env/components/button/button_display/_button_display.js +1 -1
  180. package/test-env/components/button/button_group/button_group.js +7 -9
  181. package/test-env/components/button/button_group/button_group_button.js +8 -51
  182. package/test-env/components/button/button_group/button_group_button.styles.js +2 -12
  183. package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +8 -0
  184. package/test-env/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +7 -2
  185. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +6 -2
  186. package/test-env/components/combo_box/combo_box.js +7 -5
  187. package/test-env/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  188. package/test-env/components/combo_box/combo_box_input/combo_box_pill.js +8 -18
  189. package/test-env/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  190. package/test-env/components/combo_box/utils.js +31 -0
  191. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +1 -1
  192. package/test-env/components/datagrid/controls/column_selector.js +5 -6
  193. package/test-env/components/datagrid/controls/column_sorting.js +5 -8
  194. package/test-env/components/datagrid/controls/display_selector.js +21 -16
  195. package/test-env/components/datagrid/data_grid.js +2 -863
  196. package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +86 -26
  197. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +1 -1
  198. package/test-env/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  199. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +19 -0
  200. package/test-env/components/facet/facet_button.js +1 -1
  201. package/test-env/components/filter_group/filter_group.styles.js +1 -1
  202. package/test-env/components/i18n/i18n.js +1 -0
  203. package/test-env/components/popover/input_popover.js +1 -1
  204. package/test-env/components/popover/popover.js +29 -35
  205. package/test-env/components/popover/popover_arrow/_popover_arrow.styles.js +1 -3
  206. package/test-env/components/popover/popover_panel/_popover_panel.js +2 -1
  207. package/test-env/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  208. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +12 -10
  209. package/test-env/components/toast/global_toast_list.js +11 -1
  210. package/test-env/global_styling/mixins/_states.js +4 -1
  211. package/test-env/services/color/eui_palettes.js +1 -8
  212. package/test-env/services/color/index.js +0 -7
  213. package/test-env/services/hooks/useCombinedRefs.js +19 -10
  214. package/test-env/services/index.js +0 -15
  215. package/test-env/test/rtl/component_helpers.js +41 -3
  216. package/es/services/random.js +0 -94
  217. package/es/services/utils.js +0 -25
  218. package/es/test/patch_random.js +0 -18
  219. package/lib/services/random.js +0 -100
  220. package/lib/services/utils.js +0 -35
  221. package/lib/test/patch_random.js +0 -25
  222. package/optimize/es/services/random.js +0 -85
  223. package/optimize/es/services/utils.js +0 -25
  224. package/optimize/es/test/patch_random.js +0 -18
  225. package/optimize/lib/services/random.js +0 -91
  226. package/optimize/lib/services/utils.js +0 -35
  227. package/optimize/lib/test/patch_random.js +0 -25
  228. package/src/components/combo_box/combo_box_input/_combo_box_input.scss +0 -12
  229. package/src/components/combo_box/combo_box_input/_combo_box_placeholder.scss +0 -11
  230. package/test-env/services/random.js +0 -91
  231. package/test-env/services/utils.js +0 -35
  232. package/test-env/test/patch_random.js +0 -25
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.EuiAbsoluteTab = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
12
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
@@ -17,9 +18,11 @@ var _react = _interopRequireWildcard(require("react"));
17
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
18
19
  var _moment = _interopRequireDefault(require("moment"));
19
20
  var _datemath = _interopRequireDefault(require("@elastic/datemath"));
20
- var _date_picker = require("../../date_picker");
21
+ var _services = require("../../../../services");
21
22
  var _form = require("../../../form");
23
+ var _code = require("../../../code");
22
24
  var _i18n = require("../../../i18n");
25
+ var _date_picker = require("../../date_picker");
23
26
  var _react2 = require("@emotion/react");
24
27
  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); }
25
28
  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; }
@@ -31,48 +34,92 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
31
34
  * in compliance with, at your election, the Elastic License 2.0 or the Server
32
35
  * Side Public License, v 1.
33
36
  */ // eslint-disable-line import/named
37
+ // Allow users to paste in and have the datepicker parse multiple common date formats,
38
+ // in addition to the configured displayed `dateFormat` prop
39
+ var ALLOWED_USER_DATE_FORMATS = [_moment.default.ISO_8601, _moment.default.RFC_2822, 'X' // Unix timestamp in seconds
40
+ ];
34
41
  var EuiAbsoluteTab = /*#__PURE__*/function (_Component) {
35
42
  (0, _inherits2.default)(EuiAbsoluteTab, _Component);
36
43
  var _super = _createSuper(EuiAbsoluteTab);
44
+ // Store outside of state as a ref for faster/unbatched updates
45
+
37
46
  function EuiAbsoluteTab(props) {
38
47
  var _this;
39
48
  (0, _classCallCheck2.default)(this, EuiAbsoluteTab);
40
49
  _this = _super.call(this, props);
41
50
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", void 0);
42
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleChange", function (date, event) {
51
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isParsing", false);
52
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleChange", function (date) {
43
53
  var onChange = _this.props.onChange;
44
54
  if (date === null) {
45
55
  return;
46
56
  }
47
- onChange(date.toISOString(), event);
57
+ onChange(date.toISOString());
48
58
  var valueAsMoment = (0, _moment.default)(date);
49
59
  _this.setState({
50
60
  valueAsMoment: valueAsMoment,
51
61
  textInputValue: valueAsMoment.format(_this.props.dateFormat),
62
+ hasUnparsedText: false,
52
63
  isTextInvalid: false
53
64
  });
54
65
  });
55
66
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleTextChange", function (event) {
56
- var onChange = _this.props.onChange;
57
- var valueAsMoment = (0, _moment.default)(event.target.value, _this.props.dateFormat, true);
58
- var dateIsValid = valueAsMoment.isValid();
59
- if (dateIsValid) {
60
- onChange(valueAsMoment.toISOString(), event);
61
- }
67
+ if (_this.isParsing) return;
62
68
  _this.setState({
63
69
  textInputValue: event.target.value,
64
- isTextInvalid: !dateIsValid,
65
- valueAsMoment: dateIsValid ? valueAsMoment : null
70
+ hasUnparsedText: true,
71
+ isTextInvalid: false
66
72
  });
67
73
  });
74
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "parseUserDateInput", function (textInputValue) {
75
+ _this.isParsing = true;
76
+ // Wait a tick for state to finish updating (whatever gets returned),
77
+ // and then allow `onChange` user input to continue setting state
78
+ requestAnimationFrame(function () {
79
+ _this.isParsing = false;
80
+ });
81
+ var invalidDateState = {
82
+ textInputValue: textInputValue,
83
+ isTextInvalid: true,
84
+ valueAsMoment: null
85
+ };
86
+ if (!textInputValue) {
87
+ return _this.setState(invalidDateState);
88
+ }
89
+ var _this$props = _this.props,
90
+ onChange = _this$props.onChange,
91
+ dateFormat = _this$props.dateFormat;
92
+
93
+ // Attempt to parse with passed `dateFormat`
94
+ var valueAsMoment = (0, _moment.default)(textInputValue, dateFormat, true);
95
+ var dateIsValid = valueAsMoment.isValid();
96
+
97
+ // If not valid, try a few other other standardized formats
98
+ if (!dateIsValid) {
99
+ valueAsMoment = (0, _moment.default)(textInputValue, ALLOWED_USER_DATE_FORMATS, true);
100
+ dateIsValid = valueAsMoment.isValid();
101
+ }
102
+ if (dateIsValid) {
103
+ onChange(valueAsMoment.toISOString());
104
+ _this.setState({
105
+ textInputValue: valueAsMoment.format(_this.props.dateFormat),
106
+ valueAsMoment: valueAsMoment,
107
+ hasUnparsedText: false,
108
+ isTextInvalid: false
109
+ });
110
+ } else {
111
+ _this.setState(invalidDateState);
112
+ }
113
+ });
68
114
  var parsedValue = _datemath.default.parse(props.value, {
69
115
  roundUp: props.roundUp
70
116
  });
71
117
  var _valueAsMoment = parsedValue && parsedValue.isValid() ? parsedValue : (0, _moment.default)();
72
- var textInputValue = _valueAsMoment.locale(_this.props.locale || 'en').format(_this.props.dateFormat);
118
+ var _textInputValue = _valueAsMoment.locale(_this.props.locale || 'en').format(_this.props.dateFormat);
73
119
  _this.state = {
120
+ hasUnparsedText: false,
74
121
  isTextInvalid: false,
75
- textInputValue: textInputValue,
122
+ textInputValue: _textInputValue,
76
123
  valueAsMoment: _valueAsMoment
77
124
  };
78
125
  return _this;
@@ -81,17 +128,18 @@ var EuiAbsoluteTab = /*#__PURE__*/function (_Component) {
81
128
  key: "render",
82
129
  value: function render() {
83
130
  var _this2 = this;
84
- var _this$props = this.props,
85
- dateFormat = _this$props.dateFormat,
86
- timeFormat = _this$props.timeFormat,
87
- locale = _this$props.locale,
88
- utcOffset = _this$props.utcOffset,
89
- labelPrefix = _this$props.labelPrefix;
131
+ var _this$props2 = this.props,
132
+ dateFormat = _this$props2.dateFormat,
133
+ timeFormat = _this$props2.timeFormat,
134
+ locale = _this$props2.locale,
135
+ utcOffset = _this$props2.utcOffset,
136
+ labelPrefix = _this$props2.labelPrefix;
90
137
  var _this$state = this.state,
91
138
  valueAsMoment = _this$state.valueAsMoment,
92
139
  isTextInvalid = _this$state.isTextInvalid,
140
+ hasUnparsedText = _this$state.hasUnparsedText,
93
141
  textInputValue = _this$state.textInputValue;
94
- return (0, _react2.jsx)("div", null, (0, _react2.jsx)(_date_picker.EuiDatePicker, {
142
+ return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_date_picker.EuiDatePicker, {
95
143
  inline: true,
96
144
  showTimeSelect: true,
97
145
  shadow: false,
@@ -102,22 +150,34 @@ var EuiAbsoluteTab = /*#__PURE__*/function (_Component) {
102
150
  locale: locale,
103
151
  utcOffset: utcOffset
104
152
  }), (0, _react2.jsx)(_i18n.EuiI18n, {
105
- token: "euiAbsoluteTab.dateFormatError",
106
- default: "Expected format: {dateFormat}",
153
+ tokens: ['euiAbsoluteTab.dateFormatHint', 'euiAbsoluteTab.dateFormatError'],
154
+ defaults: ['Press the Enter key to parse as a date.', 'Allowed formats: {dateFormat}, ISO 8601, RFC 2822, or Unix timestamp.'],
107
155
  values: {
108
- dateFormat: dateFormat
156
+ dateFormat: (0, _react2.jsx)(_code.EuiCode, null, dateFormat)
109
157
  }
110
- }, function (dateFormatError) {
158
+ }, function (_ref) {
159
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
160
+ dateFormatHint = _ref2[0],
161
+ dateFormatError = _ref2[1];
111
162
  return (0, _react2.jsx)(_form.EuiFormRow, {
112
163
  className: "euiSuperDatePicker__absoluteDateFormRow",
113
164
  isInvalid: isTextInvalid,
114
- error: isTextInvalid ? dateFormatError : undefined
165
+ error: isTextInvalid ? dateFormatError : undefined,
166
+ helpText: hasUnparsedText ? isTextInvalid ? dateFormatHint : [dateFormatHint, dateFormatError] : undefined
115
167
  }, (0, _react2.jsx)(_form.EuiFieldText, {
116
168
  compressed: true,
117
169
  isInvalid: isTextInvalid,
118
170
  value: textInputValue,
119
171
  onChange: _this2.handleTextChange,
120
- "data-test-subj": 'superDatePickerAbsoluteDateInput',
172
+ onPaste: function onPaste(event) {
173
+ _this2.parseUserDateInput(event.clipboardData.getData('text'));
174
+ },
175
+ onKeyDown: function onKeyDown(event) {
176
+ if (event.key === _services.keys.ENTER) {
177
+ _this2.parseUserDateInput(textInputValue);
178
+ }
179
+ },
180
+ "data-test-subj": "superDatePickerAbsoluteDateInput",
121
181
  prepend: (0, _react2.jsx)(_form.EuiFormLabel, null, labelPrefix)
122
182
  }));
123
183
  }));
@@ -104,7 +104,7 @@ EuiDatePopoverButton.propTypes = {
104
104
  isOpen: _propTypes.default.bool.isRequired,
105
105
  needsUpdating: _propTypes.default.bool,
106
106
  locale: _propTypes.default.any,
107
- onChange: _propTypes.default.any.isRequired,
107
+ onChange: _propTypes.default.func.isRequired,
108
108
  onPopoverClose: _propTypes.default.any.isRequired,
109
109
  onPopoverToggle: _propTypes.default.func.isRequired,
110
110
  position: _propTypes.default.oneOf(["start", "end"]).isRequired,
@@ -89,8 +89,7 @@ var EuiQuickSelectPopover = function EuiQuickSelectPopover(_ref) {
89
89
  button: quickSelectButton,
90
90
  isOpen: isOpen,
91
91
  closePopover: closePopover,
92
- anchorPosition: "downLeft",
93
- anchorClassName: "euiQuickSelectPopover__anchor"
92
+ anchorPosition: "downLeft"
94
93
  }, (0, _react2.jsx)(EuiQuickSelectPanels, (0, _extends2.default)({}, props, {
95
94
  applyTime: applyTime,
96
95
  prevQuickSelect: prevQuickSelect
@@ -491,6 +491,7 @@ EuiSuperDatePickerInternal.propTypes = {
491
491
  customQuickSelectRender: _propTypes.default.func,
492
492
  /**
493
493
  * Specifies the formatted used when displaying dates and/or datetimes
494
+ * @default 'MMM D, YYYY @ HH:mm:ss.SSS'
494
495
  */
495
496
  dateFormat: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.string.isRequired]),
496
497
  /**
@@ -507,12 +508,16 @@ EuiSuperDatePickerInternal.propTypes = {
507
508
  display: _propTypes.default.node.isRequired
508
509
  }).isRequired]),
509
510
  isLoading: _propTypes.default.bool,
511
+ /**
512
+ * @default true
513
+ */
510
514
  isPaused: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.bool.isRequired]),
511
515
  /**
512
516
  * Sets the overall width by adding sensible min and max widths.
513
517
  * - `auto`: fits width to internal content / time string.
514
518
  * - `restricted`: static width that fits the longest possible time string.
515
519
  * - `full`: expands to 100% of the container.
520
+ * @default 'restricted'
516
521
  */
517
522
  width: _propTypes.default.oneOf(["restricted", "full", "auto"]),
518
523
  /**
@@ -554,17 +559,20 @@ EuiSuperDatePickerInternal.propTypes = {
554
559
  }).isRequired).isRequired]),
555
560
  /**
556
561
  * Refresh interval in milliseconds
562
+ * @default 1000
557
563
  */
558
564
  refreshInterval: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.number.isRequired]),
559
565
  start: _propTypes.default.oneOfType([_propTypes.default.oneOfType([_propTypes.default.oneOf(["now"]), _propTypes.default.string.isRequired]), _propTypes.default.oneOfType([_propTypes.default.oneOf(["now"]), _propTypes.default.string.isRequired]).isRequired]),
560
566
  end: _propTypes.default.oneOfType([_propTypes.default.oneOfType([_propTypes.default.oneOf(["now"]), _propTypes.default.string.isRequired]), _propTypes.default.oneOfType([_propTypes.default.oneOf(["now"]), _propTypes.default.string.isRequired]).isRequired]),
561
567
  /**
562
568
  * Specifies the formatted used when displaying times
569
+ * @default 'HH:mm'
563
570
  */
564
571
  timeFormat: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.string.isRequired]),
565
572
  utcOffset: _propTypes.default.number,
566
573
  /**
567
574
  * Set showUpdateButton to false to immediately invoke onTimeChange for all start and end changes.
575
+ * @default true
568
576
  */
569
577
  showUpdateButton: _propTypes.default.oneOfType([_propTypes.default.bool.isRequired, _propTypes.default.oneOf(["iconOnly"])]),
570
578
  /**
@@ -701,6 +709,7 @@ EuiSuperDatePicker.propTypes = {
701
709
  customQuickSelectRender: _propTypes.default.func,
702
710
  /**
703
711
  * Specifies the formatted used when displaying dates and/or datetimes
712
+ * @default 'MMM D, YYYY @ HH:mm:ss.SSS'
704
713
  */
705
714
  dateFormat: _propTypes.default.string,
706
715
  /**
@@ -717,12 +726,16 @@ EuiSuperDatePicker.propTypes = {
717
726
  display: _propTypes.default.node.isRequired
718
727
  }).isRequired]),
719
728
  isLoading: _propTypes.default.bool,
729
+ /**
730
+ * @default true
731
+ */
720
732
  isPaused: _propTypes.default.bool,
721
733
  /**
722
734
  * Sets the overall width by adding sensible min and max widths.
723
735
  * - `auto`: fits width to internal content / time string.
724
736
  * - `restricted`: static width that fits the longest possible time string.
725
737
  * - `full`: expands to 100% of the container.
738
+ * @default 'restricted'
726
739
  */
727
740
  width: _propTypes.default.oneOf(["restricted", "full", "auto"]),
728
741
  /**
@@ -760,17 +773,23 @@ EuiSuperDatePicker.propTypes = {
760
773
  }).isRequired),
761
774
  /**
762
775
  * Refresh interval in milliseconds
776
+ * @default 1000
763
777
  */
764
778
  refreshInterval: _propTypes.default.number,
779
+ /**
780
+ * @default 'now'
781
+ */
765
782
  start: _propTypes.default.oneOfType([_propTypes.default.oneOf(["now"]), _propTypes.default.string.isRequired]),
766
783
  end: _propTypes.default.oneOfType([_propTypes.default.oneOf(["now"]), _propTypes.default.string.isRequired]),
767
784
  /**
768
785
  * Specifies the formatted used when displaying times
786
+ * @default 'HH:mm'
769
787
  */
770
788
  timeFormat: _propTypes.default.string,
771
789
  utcOffset: _propTypes.default.number,
772
790
  /**
773
791
  * Set showUpdateButton to false to immediately invoke onTimeChange for all start and end changes.
792
+ * @default true
774
793
  */
775
794
  showUpdateButton: _propTypes.default.oneOfType([_propTypes.default.bool.isRequired, _propTypes.default.oneOf(["iconOnly"])]),
776
795
  /**
@@ -128,7 +128,7 @@ EuiFacetButton.propTypes = {
128
128
  * Adds a notification indicator for displaying the quantity provided
129
129
  */
130
130
  quantity: _propTypes.default.number,
131
- element: _propTypes.default.oneOf(["a", "button", "span", "label"]),
131
+ element: _propTypes.default.oneOf(["a", "button", "span"]),
132
132
  size: _propTypes.default.any,
133
133
  /**
134
134
  * Extends the button to 100% width
@@ -32,7 +32,7 @@ var euiFilterGroupStyles = function euiFilterGroupStyles(euiThemeContext) {
32
32
  controlCompressedBorderRadius = _euiFormVariables.controlCompressedBorderRadius,
33
33
  controlCompressedHeight = _euiFormVariables.controlCompressedHeight;
34
34
  return {
35
- euiFilterGroup: /*#__PURE__*/(0, _react.css)("display:inline-flex;", (0, _global_styling.logicalCSS)('max-width', '100%'), " overflow:hidden;background-color:", backgroundColor, ";box-shadow:inset 0 0 0 ", euiTheme.border.width.thin, " ", borderColor, ";>*:not(.euiFilterButton){", (0, _filter_button.euiFilterButtonDisplay)(euiThemeContext), ";}.euiPopover__anchor{display:block;.euiFilterButton{", (0, _global_styling.logicalCSS)('width', '100%'), ";}}", (0, _global_styling.euiBreakpoint)(euiThemeContext, ['xs', 's']), "{flex-wrap:wrap;}", (0, _global_styling.euiBreakpoint)(euiThemeContext, ['xs']), "{display:flex;.euiFilterButton{flex-grow:1;}};label:euiFilterGroup;"),
35
+ euiFilterGroup: /*#__PURE__*/(0, _react.css)("display:inline-flex;", (0, _global_styling.logicalCSS)('max-width', '100%'), " overflow:hidden;background-color:", backgroundColor, ";box-shadow:inset 0 0 0 ", euiTheme.border.width.thin, " ", borderColor, ";>*:not(.euiFilterButton){", (0, _filter_button.euiFilterButtonDisplay)(euiThemeContext), ";}.euiPopover>.euiFilterButton{", (0, _global_styling.logicalCSS)('width', '100%'), ";}", (0, _global_styling.euiBreakpoint)(euiThemeContext, ['xs', 's']), "{flex-wrap:wrap;}", (0, _global_styling.euiBreakpoint)(euiThemeContext, ['xs']), "{display:flex;.euiFilterButton{flex-grow:1;}};label:euiFilterGroup;"),
36
36
  fullWidth: _ref,
37
37
  uncompressed: /*#__PURE__*/(0, _react.css)("border-radius:", controlBorderRadius, ";", buttonChildrenBorderRadii(controlBorderRadius), ";;label:uncompressed;"),
38
38
  compressed: /*#__PURE__*/(0, _react.css)("border-radius:", controlCompressedBorderRadius, ";", buttonChildrenBorderRadii(controlCompressedBorderRadius), " .euiFilterButton{", (0, _global_styling.logicalCSS)('height', controlCompressedHeight), ";};label:compressed;"),
@@ -81,6 +81,7 @@ var EuiI18n = function EuiI18n(props) {
81
81
  i18nMapping: mapping,
82
82
  i18nMappingFunc: mappingFunc,
83
83
  valueDefault: props.defaults[idx],
84
+ values: props.values,
84
85
  render: render
85
86
  });
86
87
  }));
@@ -179,7 +179,7 @@ var EuiInputPopover = function EuiInputPopover(_ref) {
179
179
  css: /*#__PURE__*/(0, _react2.css)(fullWidth ? undefined : (0, _global_styling.logicalCSS)('max-width', form.maxWidth), ";label:EuiInputPopover;"),
180
180
  display: display,
181
181
  button: input,
182
- buttonRef: inputRef,
182
+ popoverRef: inputRef,
183
183
  panelRef: panelRef,
184
184
  ref: popoverClassRef,
185
185
  closePopover: closePopover,
@@ -9,7 +9,6 @@ exports.EuiPopover = void 0;
9
9
  exports.getPopoverAlignFromAnchorPosition = getPopoverAlignFromAnchorPosition;
10
10
  exports.getPopoverPositionFromAnchorPosition = getPopoverPositionFromAnchorPosition;
11
11
  exports.popoverAnchorPosition = void 0;
12
- var _react = require("@emotion/react");
13
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
14
13
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
14
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -22,11 +21,12 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
22
21
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
22
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
24
23
  var _propTypes = _interopRequireDefault(require("prop-types"));
25
- var _react2 = _interopRequireWildcard(require("react"));
24
+ var _react = _interopRequireWildcard(require("react"));
26
25
  var _classnames = _interopRequireDefault(require("classnames"));
27
26
  var _tabbable = require("tabbable");
28
27
  var _focus_trap = require("../focus_trap");
29
28
  var _services = require("../../services");
29
+ var _useCombinedRefs = require("../../services/hooks/useCombinedRefs");
30
30
  var _accessibility = require("../accessibility");
31
31
  var _portal = require("../portal");
32
32
  var _mutation_observer = require("../observer/mutation_observer");
@@ -36,6 +36,7 @@ var _outside_click_detector = require("../outside_click_detector");
36
36
  var _popover_arrow = require("./popover_arrow");
37
37
  var _popover2 = require("./popover.styles");
38
38
  var _popover_panel = require("./popover_panel");
39
+ var _react2 = require("@emotion/react");
39
40
  var _excluded = ["anchorClassName", "anchorPosition", "button", "buttonRef", "insert", "isOpen", "ownFocus", "children", "className", "closePopover", "panelClassName", "panelPaddingSize", "panelProps", "panelRef", "panelStyle", "popoverScreenReaderText", "popoverRef", "hasArrow", "arrowChildren", "repositionOnScroll", "repositionToCrossAxis", "hasDragDrop", "zIndex", "attachToAnchor", "display", "offset", "onPositionChange", "buffer", "aria-label", "aria-labelledby", "container", "focusTrapProps", "initialFocus", "tabIndex"];
40
41
  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); }
41
42
  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; }
@@ -268,9 +269,9 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
268
269
  window.addEventListener('resize', _this.positionPopoverFluid);
269
270
  }
270
271
  });
271
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "buttonRef", function (node) {
272
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "popoverRef", function (node) {
272
273
  _this.button = node;
273
- _this.props.buttonRef && _this.props.buttonRef(node);
274
+ (0, _useCombinedRefs.setMultipleRefs)([_this.props.popoverRef, _this.props.buttonRef], node);
274
275
  });
275
276
  _this.state = {
276
277
  prevProps: {
@@ -389,12 +390,12 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
389
390
  var tabIndexProp = (_panelProps$tabIndex = panelProps === null || panelProps === void 0 ? void 0 : panelProps.tabIndex) !== null && _panelProps$tabIndex !== void 0 ? _panelProps$tabIndex : _tabIndexProp;
390
391
  var styles = (0, _popover2.euiPopoverStyles)();
391
392
  var popoverStyles = [styles.euiPopover, {
392
- display: display
393
+ display: display,
394
+ label: display
393
395
  }];
394
396
  var classes = (0, _classnames.default)('euiPopover', {
395
397
  'euiPopover-isOpen': this.state.isOpening
396
- }, className);
397
- var anchorClasses = (0, _classnames.default)('euiPopover__anchor', anchorClassName);
398
+ }, className, anchorClassName);
398
399
  var showArrow = hasArrow && !attachToAnchor;
399
400
  var panel;
400
401
  if (!this.state.suppressingPopover && (isOpen || this.state.isClosing)) {
@@ -418,17 +419,17 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
418
419
  var focusTrapScreenReaderText;
419
420
  if (ownFocus || popoverScreenReaderText) {
420
421
  ariaDescribedby = this.descriptionId;
421
- focusTrapScreenReaderText = (0, _react.jsx)(_accessibility.EuiScreenReaderOnly, null, (0, _react.jsx)("p", {
422
+ focusTrapScreenReaderText = (0, _react2.jsx)(_accessibility.EuiScreenReaderOnly, null, (0, _react2.jsx)("p", {
422
423
  id: this.descriptionId
423
- }, ownFocus && (0, _react.jsx)(_i18n.EuiI18n, {
424
+ }, ownFocus && (0, _react2.jsx)(_i18n.EuiI18n, {
424
425
  token: "euiPopover.screenReaderAnnouncement",
425
426
  default: "You are in a dialog. Press Escape, or tap/click outside the dialog to close."
426
427
  }), popoverScreenReaderText));
427
428
  }
428
429
  var returnFocus = this.state.isOpenStable ? returnFocusConfig : false;
429
- panel = (0, _react.jsx)(_portal.EuiPortal, {
430
+ panel = (0, _react2.jsx)(_portal.EuiPortal, {
430
431
  insert: insert
431
- }, (0, _react.jsx)(_focus_trap.EuiFocusTrap, (0, _extends2.default)({
432
+ }, (0, _react2.jsx)(_focus_trap.EuiFocusTrap, (0, _extends2.default)({
432
433
  clickOutsideDisables: true,
433
434
  onClickOutside: this.onClickOutside,
434
435
  returnFocus: returnFocus // Ignore temporary state of indecisive focus
@@ -436,7 +437,7 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
436
437
  initialFocus: initialFocus,
437
438
  onEscapeKey: this.onEscapeKey,
438
439
  disabled: !ownFocus || !this.state.isOpenStable || this.state.isClosing
439
- }, focusTrapProps), (0, _react.jsx)(_popover_panel.EuiPopoverPanel, (0, _extends2.default)({}, panelProps, {
440
+ }, focusTrapProps), (0, _react2.jsx)(_popover_panel.EuiPopoverPanel, (0, _extends2.default)({}, panelProps, {
440
441
  panelRef: this.panelRef,
441
442
  isOpen: this.state.isOpening,
442
443
  position: this.state.arrowPosition,
@@ -456,10 +457,10 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
456
457
  // Adding `will-change` to reduce risk of a blurry animation in Chrome 86+
457
458
  willChange: !this.state.isOpenStable ? 'transform, opacity' : undefined
458
459
  })
459
- }), showArrow && this.state.arrowPosition && (0, _react.jsx)(_popover_arrow.EuiPopoverArrow, {
460
+ }), showArrow && this.state.arrowPosition && (0, _react2.jsx)(_popover_arrow.EuiPopoverArrow, {
460
461
  position: this.state.arrowPosition,
461
462
  style: this.state.arrowStyles
462
- }, arrowChildren), focusTrapScreenReaderText, (0, _react.jsx)(_mutation_observer.EuiMutationObserver, {
463
+ }, arrowChildren), focusTrapScreenReaderText, (0, _react2.jsx)(_mutation_observer.EuiMutationObserver, {
463
464
  observerOptions: {
464
465
  attributes: true,
465
466
  // element attribute changes
@@ -472,7 +473,7 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
472
473
 
473
474
  onMutation: this.onMutation
474
475
  }, function (mutationRef) {
475
- return (0, _react.jsx)("div", {
476
+ return (0, _react2.jsx)("div", {
476
477
  ref: mutationRef
477
478
  }, children);
478
479
  }))));
@@ -481,32 +482,20 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
481
482
  // react-focus-on and related do not register outside click detection
482
483
  // when disabled, so we still need to conditionally check for that ourselves
483
484
  if (ownFocus) {
484
- return (0, _react.jsx)("div", (0, _extends2.default)({
485
+ return (0, _react2.jsx)("div", (0, _extends2.default)({
485
486
  css: popoverStyles,
486
487
  className: classes,
487
- ref: popoverRef
488
- }, rest), (0, _react.jsx)("div", {
489
- css: /*#__PURE__*/(0, _react.css)({
490
- display: display
491
- }, ";label:render;"),
492
- className: anchorClasses,
493
- ref: this.buttonRef
494
- }, button instanceof HTMLElement ? null : button), panel);
488
+ ref: this.popoverRef
489
+ }, rest), button instanceof HTMLElement ? null : button, panel);
495
490
  } else {
496
- return (0, _react.jsx)(_outside_click_detector.EuiOutsideClickDetector, {
491
+ return (0, _react2.jsx)(_outside_click_detector.EuiOutsideClickDetector, {
497
492
  onOutsideClick: this.closePopover
498
- }, (0, _react.jsx)("div", (0, _extends2.default)({
493
+ }, (0, _react2.jsx)("div", (0, _extends2.default)({
499
494
  css: popoverStyles,
500
495
  className: classes,
501
- ref: popoverRef,
496
+ ref: this.popoverRef,
502
497
  onKeyDown: this.onKeyDown
503
- }, rest), (0, _react.jsx)("div", {
504
- css: /*#__PURE__*/(0, _react.css)({
505
- display: display
506
- }, ";label:render;"),
507
- className: anchorClasses,
508
- ref: this.buttonRef
509
- }, button instanceof HTMLElement ? null : button), panel));
498
+ }, rest), button instanceof HTMLElement ? null : button, panel));
510
499
  }
511
500
  }
512
501
  }], [{
@@ -532,7 +521,7 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
532
521
  }
533
522
  }]);
534
523
  return EuiPopover;
535
- }(_react2.Component);
524
+ }(_react.Component);
536
525
  exports.EuiPopover = EuiPopover;
537
526
  (0, _defineProperty2.default)(EuiPopover, "defaultProps", {
538
527
  isOpen: false,
@@ -546,6 +535,8 @@ exports.EuiPopover = EuiPopover;
546
535
  EuiPopover.propTypes = {
547
536
  /**
548
537
  * Class name passed to the direct parent of the button
538
+ *
539
+ * @deprecated Use `className` instead
549
540
  */
550
541
  anchorClassName: _propTypes.default.string,
551
542
  /**
@@ -561,6 +552,9 @@ EuiPopover.propTypes = {
561
552
  * Triggering element for which to align the popover to
562
553
  */
563
554
  button: _propTypes.default.any.isRequired,
555
+ /**
556
+ * @deprecated Use `popoverRef` instead
557
+ */
564
558
  buttonRef: _propTypes.default.any,
565
559
  /**
566
560
  * Callback to handle hiding of the popover
@@ -18,9 +18,7 @@ var popoverArrowSize = 'm';
18
18
  exports.popoverArrowSize = popoverArrowSize;
19
19
  var euiPopoverArrowStyles = function euiPopoverArrowStyles(euiThemeContext) {
20
20
  var euiTheme = euiThemeContext.euiTheme;
21
-
22
- // Match the background color of panels
23
- var borderColor = (0, _global_styling.euiBackgroundColor)(euiThemeContext, 'plain');
21
+ var borderColor = 'var(--euiPopoverBackgroundColor)';
24
22
  var arrowSize = euiTheme.size[popoverArrowSize];
25
23
  return {
26
24
  // Base
@@ -46,7 +46,8 @@ var EuiPopoverPanel = function EuiPopoverPanel(_ref) {
46
46
  var euiThemeContext = (0, _services.useEuiTheme)();
47
47
  var cssStyles = (0, _react.useMemo)(function () {
48
48
  var styles = (0, _popover_panel.euiPopoverPanelStyles)(euiThemeContext);
49
- var sharedStyles = [styles.euiPopover__panel, isOpen && styles.isOpen];
49
+ var colorMode = euiThemeContext.colorMode.toLowerCase();
50
+ var sharedStyles = [styles.euiPopover__panel, styles[colorMode], isOpen && styles.isOpen];
50
51
  if (hasDragDrop) {
51
52
  return [].concat(sharedStyles, [styles.hasDragDrop.hasDragDrop, position && styles.hasDragDrop[position]]);
52
53
  }
@@ -7,6 +7,7 @@ exports.openAnimationTiming = exports.euiPopoverPanelStyles = void 0;
7
7
  var _react = require("@emotion/react");
8
8
  var _mixins = require("../../../themes/amsterdam/global_styling/mixins");
9
9
  var _functions = require("../../../themes/amsterdam/global_styling/functions");
10
+ var _services = require("../../../services");
10
11
  var _global_styling = require("../../../global_styling");
11
12
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } /*
12
13
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -21,6 +22,7 @@ var openAnimationTiming = 'slow';
21
22
  * 1. Can expand further, but it looks weird if it's smaller than the originating button.
22
23
  * 2. Animation happens on the panel. But don't animate position when using the attached mode like for inputs
23
24
  * 3. Make sure the panel stays within the window.
25
+ * 4. Make the popover lighter on dark mode (too hard to distinguish from plain bgs otherwise), and set a CSS var for the arrow to use
24
26
  */
25
27
  exports.openAnimationTiming = openAnimationTiming;
26
28
  var _ref = process.env.NODE_ENV === "production" ? {
@@ -42,8 +44,11 @@ var euiPopoverPanelStyles = function euiPopoverPanelStyles(euiThemeContext) {
42
44
  }));
43
45
  return {
44
46
  // Base
45
- euiPopover__panel: /*#__PURE__*/(0, _react.css)("position:absolute;", (0, _global_styling.logicalCSS)('min-width', "".concat(euiTheme.base * 7, "px")), (0, _global_styling.logicalCSS)('max-width', "calc(100vw - ".concat(euiTheme.size.xl, ")")), "backface-visibility:hidden;pointer-events:none;opacity:0;", _global_styling.euiCanAnimate, "{transition:", opacityTransition, ",", transformTransition, ";}&:focus{outline-offset:0;};label:euiPopover__panel;"),
47
+ euiPopover__panel: /*#__PURE__*/(0, _react.css)("position:absolute;", (0, _global_styling.logicalCSS)('min-width', "".concat(euiTheme.base * 7, "px")), (0, _global_styling.logicalCSS)('max-width', "calc(100vw - ".concat(euiTheme.size.xl, ")")), "backface-visibility:hidden;pointer-events:none;opacity:0;background-color:var(--euiPopoverBackgroundColor);", _global_styling.euiCanAnimate, "{transition:", opacityTransition, ",", transformTransition, ";}&:focus{outline-offset:0;};label:euiPopover__panel;"),
46
48
  isOpen: _ref,
49
+ /* 4 */
50
+ light: /*#__PURE__*/(0, _react.css)("--euiPopoverBackgroundColor:", euiTheme.colors.emptyShade, ";;label:light;"),
51
+ dark: /*#__PURE__*/(0, _react.css)("--euiPopoverBackgroundColor:", (0, _services.tint)(euiTheme.colors.emptyShade, 0.025), ";;label:dark;"),
47
52
  // Regular popover with an arrow, a transform animation/transition, and a
48
53
  // drop shadow via `filter` (which automatically handles the arrow)
49
54
  hasTransform: {
@@ -77,9 +77,11 @@ var EuiSelectableTemplateSitewide = function EuiSelectableTemplateSitewide(_ref)
77
77
  setPopoverIsOpen(false);
78
78
  _closePopover && _closePopover();
79
79
  };
80
- var togglePopover = function togglePopover() {
81
- setPopoverIsOpen(!popoverIsOpen);
82
- };
80
+ var togglePopover = (0, _react.useCallback)(function () {
81
+ setPopoverIsOpen(function (isOpen) {
82
+ return !isOpen;
83
+ });
84
+ }, []);
83
85
 
84
86
  // Width applied to the internal div
85
87
  var popoverWidth = width || 600;
@@ -154,16 +156,16 @@ var EuiSelectableTemplateSitewide = function EuiSelectableTemplateSitewide(_ref)
154
156
  if (!currentBreakpoint) return false;
155
157
  return popoverButtonBreakpoints.includes(currentBreakpoint);
156
158
  }, [currentBreakpoint, popoverButtonBreakpoints]);
157
- var popoverTrigger;
158
- if (popoverButton && canShowPopoverButton) {
159
- popoverTrigger = /*#__PURE__*/_react.default.cloneElement(popoverButton, _objectSpread(_objectSpread({}, popoverButton.props), {}, {
159
+ var popoverTrigger = (0, _react.useMemo)(function () {
160
+ if (!popoverButton || !canShowPopoverButton) return;
161
+ return (0, _react2.jsx)("span", {
162
+ className: "euiSelectableTemplateSitewide__popoverTrigger",
160
163
  onClick: togglePopover,
161
164
  onKeyDown: function onKeyDown(e) {
162
- // Selectable preventsDefault on Enter which kills browser controls for pressing the button
163
- e.stopPropagation();
165
+ return e.stopPropagation();
164
166
  }
165
- }));
166
- }
167
+ }, popoverButton);
168
+ }, [popoverButton, canShowPopoverButton, togglePopover]);
167
169
  return (0, _react2.jsx)(_selectable.EuiSelectable, (0, _extends2.default)({
168
170
  isLoading: isLoading,
169
171
  options: formattedOptions,