@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
@@ -8,14 +8,22 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _moment = _interopRequireDefault(require("moment"));
10
10
  var _datemath = _interopRequireDefault(require("@elastic/datemath"));
11
- var _date_picker = require("../../date_picker");
11
+ var _services = require("../../../../services");
12
12
  var _form = require("../../../form");
13
+ var _code = require("../../../code");
13
14
  var _i18n = require("../../../i18n");
15
+ var _date_picker = require("../../date_picker");
14
16
  var _react2 = require("@emotion/react");
15
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
18
  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); }
17
19
  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; }
18
20
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
21
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
22
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
23
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
24
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
25
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
26
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
19
27
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
20
28
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
21
29
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -35,48 +43,92 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
35
43
  * in compliance with, at your election, the Elastic License 2.0 or the Server
36
44
  * Side Public License, v 1.
37
45
  */ // eslint-disable-line import/named
46
+ // Allow users to paste in and have the datepicker parse multiple common date formats,
47
+ // in addition to the configured displayed `dateFormat` prop
48
+ var ALLOWED_USER_DATE_FORMATS = [_moment.default.ISO_8601, _moment.default.RFC_2822, 'X' // Unix timestamp in seconds
49
+ ];
38
50
  var EuiAbsoluteTab = /*#__PURE__*/function (_Component) {
39
51
  _inherits(EuiAbsoluteTab, _Component);
40
52
  var _super = _createSuper(EuiAbsoluteTab);
53
+ // Store outside of state as a ref for faster/unbatched updates
54
+
41
55
  function EuiAbsoluteTab(props) {
42
56
  var _this;
43
57
  _classCallCheck(this, EuiAbsoluteTab);
44
58
  _this = _super.call(this, props);
45
59
  _defineProperty(_assertThisInitialized(_this), "state", void 0);
46
- _defineProperty(_assertThisInitialized(_this), "handleChange", function (date, event) {
60
+ _defineProperty(_assertThisInitialized(_this), "isParsing", false);
61
+ _defineProperty(_assertThisInitialized(_this), "handleChange", function (date) {
47
62
  var onChange = _this.props.onChange;
48
63
  if (date === null) {
49
64
  return;
50
65
  }
51
- onChange(date.toISOString(), event);
66
+ onChange(date.toISOString());
52
67
  var valueAsMoment = (0, _moment.default)(date);
53
68
  _this.setState({
54
69
  valueAsMoment: valueAsMoment,
55
70
  textInputValue: valueAsMoment.format(_this.props.dateFormat),
71
+ hasUnparsedText: false,
56
72
  isTextInvalid: false
57
73
  });
58
74
  });
59
75
  _defineProperty(_assertThisInitialized(_this), "handleTextChange", function (event) {
60
- var onChange = _this.props.onChange;
61
- var valueAsMoment = (0, _moment.default)(event.target.value, _this.props.dateFormat, true);
62
- var dateIsValid = valueAsMoment.isValid();
63
- if (dateIsValid) {
64
- onChange(valueAsMoment.toISOString(), event);
65
- }
76
+ if (_this.isParsing) return;
66
77
  _this.setState({
67
78
  textInputValue: event.target.value,
68
- isTextInvalid: !dateIsValid,
69
- valueAsMoment: dateIsValid ? valueAsMoment : null
79
+ hasUnparsedText: true,
80
+ isTextInvalid: false
70
81
  });
71
82
  });
83
+ _defineProperty(_assertThisInitialized(_this), "parseUserDateInput", function (textInputValue) {
84
+ _this.isParsing = true;
85
+ // Wait a tick for state to finish updating (whatever gets returned),
86
+ // and then allow `onChange` user input to continue setting state
87
+ requestAnimationFrame(function () {
88
+ _this.isParsing = false;
89
+ });
90
+ var invalidDateState = {
91
+ textInputValue: textInputValue,
92
+ isTextInvalid: true,
93
+ valueAsMoment: null
94
+ };
95
+ if (!textInputValue) {
96
+ return _this.setState(invalidDateState);
97
+ }
98
+ var _this$props = _this.props,
99
+ onChange = _this$props.onChange,
100
+ dateFormat = _this$props.dateFormat;
101
+
102
+ // Attempt to parse with passed `dateFormat`
103
+ var valueAsMoment = (0, _moment.default)(textInputValue, dateFormat, true);
104
+ var dateIsValid = valueAsMoment.isValid();
105
+
106
+ // If not valid, try a few other other standardized formats
107
+ if (!dateIsValid) {
108
+ valueAsMoment = (0, _moment.default)(textInputValue, ALLOWED_USER_DATE_FORMATS, true);
109
+ dateIsValid = valueAsMoment.isValid();
110
+ }
111
+ if (dateIsValid) {
112
+ onChange(valueAsMoment.toISOString());
113
+ _this.setState({
114
+ textInputValue: valueAsMoment.format(_this.props.dateFormat),
115
+ valueAsMoment: valueAsMoment,
116
+ hasUnparsedText: false,
117
+ isTextInvalid: false
118
+ });
119
+ } else {
120
+ _this.setState(invalidDateState);
121
+ }
122
+ });
72
123
  var parsedValue = _datemath.default.parse(props.value, {
73
124
  roundUp: props.roundUp
74
125
  });
75
126
  var _valueAsMoment = parsedValue && parsedValue.isValid() ? parsedValue : (0, _moment.default)();
76
- var textInputValue = _valueAsMoment.locale(_this.props.locale || 'en').format(_this.props.dateFormat);
127
+ var _textInputValue = _valueAsMoment.locale(_this.props.locale || 'en').format(_this.props.dateFormat);
77
128
  _this.state = {
129
+ hasUnparsedText: false,
78
130
  isTextInvalid: false,
79
- textInputValue: textInputValue,
131
+ textInputValue: _textInputValue,
80
132
  valueAsMoment: _valueAsMoment
81
133
  };
82
134
  return _this;
@@ -85,17 +137,18 @@ var EuiAbsoluteTab = /*#__PURE__*/function (_Component) {
85
137
  key: "render",
86
138
  value: function render() {
87
139
  var _this2 = this;
88
- var _this$props = this.props,
89
- dateFormat = _this$props.dateFormat,
90
- timeFormat = _this$props.timeFormat,
91
- locale = _this$props.locale,
92
- utcOffset = _this$props.utcOffset,
93
- labelPrefix = _this$props.labelPrefix;
140
+ var _this$props2 = this.props,
141
+ dateFormat = _this$props2.dateFormat,
142
+ timeFormat = _this$props2.timeFormat,
143
+ locale = _this$props2.locale,
144
+ utcOffset = _this$props2.utcOffset,
145
+ labelPrefix = _this$props2.labelPrefix;
94
146
  var _this$state = this.state,
95
147
  valueAsMoment = _this$state.valueAsMoment,
96
148
  isTextInvalid = _this$state.isTextInvalid,
149
+ hasUnparsedText = _this$state.hasUnparsedText,
97
150
  textInputValue = _this$state.textInputValue;
98
- return (0, _react2.jsx)("div", null, (0, _react2.jsx)(_date_picker.EuiDatePicker, {
151
+ return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_date_picker.EuiDatePicker, {
99
152
  inline: true,
100
153
  showTimeSelect: true,
101
154
  shadow: false,
@@ -106,22 +159,34 @@ var EuiAbsoluteTab = /*#__PURE__*/function (_Component) {
106
159
  locale: locale,
107
160
  utcOffset: utcOffset
108
161
  }), (0, _react2.jsx)(_i18n.EuiI18n, {
109
- token: "euiAbsoluteTab.dateFormatError",
110
- default: "Expected format: {dateFormat}",
162
+ tokens: ['euiAbsoluteTab.dateFormatHint', 'euiAbsoluteTab.dateFormatError'],
163
+ defaults: ['Press the Enter key to parse as a date.', 'Allowed formats: {dateFormat}, ISO 8601, RFC 2822, or Unix timestamp.'],
111
164
  values: {
112
- dateFormat: dateFormat
165
+ dateFormat: (0, _react2.jsx)(_code.EuiCode, null, dateFormat)
113
166
  }
114
- }, function (dateFormatError) {
167
+ }, function (_ref) {
168
+ var _ref2 = _slicedToArray(_ref, 2),
169
+ dateFormatHint = _ref2[0],
170
+ dateFormatError = _ref2[1];
115
171
  return (0, _react2.jsx)(_form.EuiFormRow, {
116
172
  className: "euiSuperDatePicker__absoluteDateFormRow",
117
173
  isInvalid: isTextInvalid,
118
- error: isTextInvalid ? dateFormatError : undefined
174
+ error: isTextInvalid ? dateFormatError : undefined,
175
+ helpText: hasUnparsedText ? isTextInvalid ? dateFormatHint : [dateFormatHint, dateFormatError] : undefined
119
176
  }, (0, _react2.jsx)(_form.EuiFieldText, {
120
177
  compressed: true,
121
178
  isInvalid: isTextInvalid,
122
179
  value: textInputValue,
123
180
  onChange: _this2.handleTextChange,
124
- "data-test-subj": 'superDatePickerAbsoluteDateInput',
181
+ onPaste: function onPaste(event) {
182
+ _this2.parseUserDateInput(event.clipboardData.getData('text'));
183
+ },
184
+ onKeyDown: function onKeyDown(event) {
185
+ if (event.key === _services.keys.ENTER) {
186
+ _this2.parseUserDateInput(textInputValue);
187
+ }
188
+ },
189
+ "data-test-subj": "superDatePickerAbsoluteDateInput",
125
190
  prepend: (0, _react2.jsx)(_form.EuiFormLabel, null, labelPrefix)
126
191
  }));
127
192
  }));
@@ -105,7 +105,7 @@ EuiDatePopoverButton.propTypes = {
105
105
  isOpen: _propTypes.default.bool.isRequired,
106
106
  needsUpdating: _propTypes.default.bool,
107
107
  locale: _propTypes.default.any,
108
- onChange: _propTypes.default.any.isRequired,
108
+ onChange: _propTypes.default.func.isRequired,
109
109
  onPopoverClose: _propTypes.default.any.isRequired,
110
110
  onPopoverToggle: _propTypes.default.func.isRequired,
111
111
  position: _propTypes.default.oneOf(["start", "end"]).isRequired,
@@ -95,8 +95,7 @@ var EuiQuickSelectPopover = function EuiQuickSelectPopover(_ref) {
95
95
  button: quickSelectButton,
96
96
  isOpen: isOpen,
97
97
  closePopover: closePopover,
98
- anchorPosition: "downLeft",
99
- anchorClassName: "euiQuickSelectPopover__anchor"
98
+ anchorPosition: "downLeft"
100
99
  }, (0, _react2.jsx)(EuiQuickSelectPanels, _extends({}, props, {
101
100
  applyTime: applyTime,
102
101
  prevQuickSelect: prevQuickSelect
@@ -495,6 +495,7 @@ EuiSuperDatePickerInternal.propTypes = {
495
495
  customQuickSelectRender: _propTypes.default.func,
496
496
  /**
497
497
  * Specifies the formatted used when displaying dates and/or datetimes
498
+ * @default 'MMM D, YYYY @ HH:mm:ss.SSS'
498
499
  */
499
500
  dateFormat: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.string.isRequired]),
500
501
  /**
@@ -511,12 +512,16 @@ EuiSuperDatePickerInternal.propTypes = {
511
512
  display: _propTypes.default.node.isRequired
512
513
  }).isRequired]),
513
514
  isLoading: _propTypes.default.bool,
515
+ /**
516
+ * @default true
517
+ */
514
518
  isPaused: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.bool.isRequired]),
515
519
  /**
516
520
  * Sets the overall width by adding sensible min and max widths.
517
521
  * - `auto`: fits width to internal content / time string.
518
522
  * - `restricted`: static width that fits the longest possible time string.
519
523
  * - `full`: expands to 100% of the container.
524
+ * @default 'restricted'
520
525
  */
521
526
  width: _propTypes.default.oneOf(["restricted", "full", "auto"]),
522
527
  /**
@@ -558,17 +563,20 @@ EuiSuperDatePickerInternal.propTypes = {
558
563
  }).isRequired).isRequired]),
559
564
  /**
560
565
  * Refresh interval in milliseconds
566
+ * @default 1000
561
567
  */
562
568
  refreshInterval: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.number.isRequired]),
563
569
  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]),
564
570
  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]),
565
571
  /**
566
572
  * Specifies the formatted used when displaying times
573
+ * @default 'HH:mm'
567
574
  */
568
575
  timeFormat: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.string.isRequired]),
569
576
  utcOffset: _propTypes.default.number,
570
577
  /**
571
578
  * Set showUpdateButton to false to immediately invoke onTimeChange for all start and end changes.
579
+ * @default true
572
580
  */
573
581
  showUpdateButton: _propTypes.default.oneOfType([_propTypes.default.bool.isRequired, _propTypes.default.oneOf(["iconOnly"])]),
574
582
  /**
@@ -705,6 +713,7 @@ EuiSuperDatePicker.propTypes = {
705
713
  customQuickSelectRender: _propTypes.default.func,
706
714
  /**
707
715
  * Specifies the formatted used when displaying dates and/or datetimes
716
+ * @default 'MMM D, YYYY @ HH:mm:ss.SSS'
708
717
  */
709
718
  dateFormat: _propTypes.default.string,
710
719
  /**
@@ -721,12 +730,16 @@ EuiSuperDatePicker.propTypes = {
721
730
  display: _propTypes.default.node.isRequired
722
731
  }).isRequired]),
723
732
  isLoading: _propTypes.default.bool,
733
+ /**
734
+ * @default true
735
+ */
724
736
  isPaused: _propTypes.default.bool,
725
737
  /**
726
738
  * Sets the overall width by adding sensible min and max widths.
727
739
  * - `auto`: fits width to internal content / time string.
728
740
  * - `restricted`: static width that fits the longest possible time string.
729
741
  * - `full`: expands to 100% of the container.
742
+ * @default 'restricted'
730
743
  */
731
744
  width: _propTypes.default.oneOf(["restricted", "full", "auto"]),
732
745
  /**
@@ -764,17 +777,23 @@ EuiSuperDatePicker.propTypes = {
764
777
  }).isRequired),
765
778
  /**
766
779
  * Refresh interval in milliseconds
780
+ * @default 1000
767
781
  */
768
782
  refreshInterval: _propTypes.default.number,
783
+ /**
784
+ * @default 'now'
785
+ */
769
786
  start: _propTypes.default.oneOfType([_propTypes.default.oneOf(["now"]), _propTypes.default.string.isRequired]),
770
787
  end: _propTypes.default.oneOfType([_propTypes.default.oneOf(["now"]), _propTypes.default.string.isRequired]),
771
788
  /**
772
789
  * Specifies the formatted used when displaying times
790
+ * @default 'HH:mm'
773
791
  */
774
792
  timeFormat: _propTypes.default.string,
775
793
  utcOffset: _propTypes.default.number,
776
794
  /**
777
795
  * Set showUpdateButton to false to immediately invoke onTimeChange for all start and end changes.
796
+ * @default true
778
797
  */
779
798
  showUpdateButton: _propTypes.default.oneOfType([_propTypes.default.bool.isRequired, _propTypes.default.oneOf(["iconOnly"])]),
780
799
  /**
@@ -129,7 +129,7 @@ EuiFacetButton.propTypes = {
129
129
  * Adds a notification indicator for displaying the quantity provided
130
130
  */
131
131
  quantity: _propTypes.default.number,
132
- element: _propTypes.default.oneOf(["a", "button", "span", "label"]),
132
+ element: _propTypes.default.oneOf(["a", "button", "span"]),
133
133
  size: _propTypes.default.any,
134
134
  /**
135
135
  * 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;"),
@@ -83,6 +83,7 @@ var EuiI18n = function EuiI18n(props) {
83
83
  i18nMapping: mapping,
84
84
  i18nMappingFunc: mappingFunc,
85
85
  valueDefault: props.defaults[idx],
86
+ values: props.values,
86
87
  render: render
87
88
  });
88
89
  }));
@@ -187,7 +187,7 @@ var EuiInputPopover = function EuiInputPopover(_ref) {
187
187
  css: /*#__PURE__*/(0, _react2.css)(fullWidth ? undefined : (0, _global_styling.logicalCSS)('max-width', form.maxWidth), ";label:EuiInputPopover;"),
188
188
  display: display,
189
189
  button: input,
190
- buttonRef: inputRef,
190
+ popoverRef: inputRef,
191
191
  panelRef: panelRef,
192
192
  ref: popoverClassRef,
193
193
  closePopover: closePopover,
@@ -8,13 +8,13 @@ exports.EuiPopover = void 0;
8
8
  exports.getPopoverAlignFromAnchorPosition = getPopoverAlignFromAnchorPosition;
9
9
  exports.getPopoverPositionFromAnchorPosition = getPopoverPositionFromAnchorPosition;
10
10
  exports.popoverAnchorPosition = void 0;
11
- var _react = require("@emotion/react");
12
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
- var _react2 = _interopRequireWildcard(require("react"));
12
+ var _react = _interopRequireWildcard(require("react"));
14
13
  var _classnames = _interopRequireDefault(require("classnames"));
15
14
  var _tabbable = require("tabbable");
16
15
  var _focus_trap = require("../focus_trap");
17
16
  var _services = require("../../services");
17
+ var _useCombinedRefs = require("../../services/hooks/useCombinedRefs");
18
18
  var _accessibility = require("../accessibility");
19
19
  var _portal = require("../portal");
20
20
  var _mutation_observer = require("../observer/mutation_observer");
@@ -24,6 +24,7 @@ var _outside_click_detector = require("../outside_click_detector");
24
24
  var _popover_arrow = require("./popover_arrow");
25
25
  var _popover2 = require("./popover.styles");
26
26
  var _popover_panel = require("./popover_panel");
27
+ var _react2 = require("@emotion/react");
27
28
  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"];
28
29
  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); }
29
30
  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; }
@@ -281,9 +282,9 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
281
282
  window.addEventListener('resize', _this.positionPopoverFluid);
282
283
  }
283
284
  });
284
- _defineProperty(_assertThisInitialized(_this), "buttonRef", function (node) {
285
+ _defineProperty(_assertThisInitialized(_this), "popoverRef", function (node) {
285
286
  _this.button = node;
286
- _this.props.buttonRef && _this.props.buttonRef(node);
287
+ (0, _useCombinedRefs.setMultipleRefs)([_this.props.popoverRef, _this.props.buttonRef], node);
287
288
  });
288
289
  _this.state = {
289
290
  prevProps: {
@@ -402,12 +403,12 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
402
403
  var tabIndexProp = (_panelProps$tabIndex = panelProps === null || panelProps === void 0 ? void 0 : panelProps.tabIndex) !== null && _panelProps$tabIndex !== void 0 ? _panelProps$tabIndex : _tabIndexProp;
403
404
  var styles = (0, _popover2.euiPopoverStyles)();
404
405
  var popoverStyles = [styles.euiPopover, {
405
- display: display
406
+ display: display,
407
+ label: display
406
408
  }];
407
409
  var classes = (0, _classnames.default)('euiPopover', {
408
410
  'euiPopover-isOpen': this.state.isOpening
409
- }, className);
410
- var anchorClasses = (0, _classnames.default)('euiPopover__anchor', anchorClassName);
411
+ }, className, anchorClassName);
411
412
  var showArrow = hasArrow && !attachToAnchor;
412
413
  var panel;
413
414
  if (!this.state.suppressingPopover && (isOpen || this.state.isClosing)) {
@@ -431,17 +432,17 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
431
432
  var focusTrapScreenReaderText;
432
433
  if (ownFocus || popoverScreenReaderText) {
433
434
  ariaDescribedby = this.descriptionId;
434
- focusTrapScreenReaderText = (0, _react.jsx)(_accessibility.EuiScreenReaderOnly, null, (0, _react.jsx)("p", {
435
+ focusTrapScreenReaderText = (0, _react2.jsx)(_accessibility.EuiScreenReaderOnly, null, (0, _react2.jsx)("p", {
435
436
  id: this.descriptionId
436
- }, ownFocus && (0, _react.jsx)(_i18n.EuiI18n, {
437
+ }, ownFocus && (0, _react2.jsx)(_i18n.EuiI18n, {
437
438
  token: "euiPopover.screenReaderAnnouncement",
438
439
  default: "You are in a dialog. Press Escape, or tap/click outside the dialog to close."
439
440
  }), popoverScreenReaderText));
440
441
  }
441
442
  var returnFocus = this.state.isOpenStable ? returnFocusConfig : false;
442
- panel = (0, _react.jsx)(_portal.EuiPortal, {
443
+ panel = (0, _react2.jsx)(_portal.EuiPortal, {
443
444
  insert: insert
444
- }, (0, _react.jsx)(_focus_trap.EuiFocusTrap, _extends({
445
+ }, (0, _react2.jsx)(_focus_trap.EuiFocusTrap, _extends({
445
446
  clickOutsideDisables: true,
446
447
  onClickOutside: this.onClickOutside,
447
448
  returnFocus: returnFocus // Ignore temporary state of indecisive focus
@@ -449,7 +450,7 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
449
450
  initialFocus: initialFocus,
450
451
  onEscapeKey: this.onEscapeKey,
451
452
  disabled: !ownFocus || !this.state.isOpenStable || this.state.isClosing
452
- }, focusTrapProps), (0, _react.jsx)(_popover_panel.EuiPopoverPanel, _extends({}, panelProps, {
453
+ }, focusTrapProps), (0, _react2.jsx)(_popover_panel.EuiPopoverPanel, _extends({}, panelProps, {
453
454
  panelRef: this.panelRef,
454
455
  isOpen: this.state.isOpening,
455
456
  position: this.state.arrowPosition,
@@ -469,10 +470,10 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
469
470
  // Adding `will-change` to reduce risk of a blurry animation in Chrome 86+
470
471
  willChange: !this.state.isOpenStable ? 'transform, opacity' : undefined
471
472
  })
472
- }), showArrow && this.state.arrowPosition && (0, _react.jsx)(_popover_arrow.EuiPopoverArrow, {
473
+ }), showArrow && this.state.arrowPosition && (0, _react2.jsx)(_popover_arrow.EuiPopoverArrow, {
473
474
  position: this.state.arrowPosition,
474
475
  style: this.state.arrowStyles
475
- }, arrowChildren), focusTrapScreenReaderText, (0, _react.jsx)(_mutation_observer.EuiMutationObserver, {
476
+ }, arrowChildren), focusTrapScreenReaderText, (0, _react2.jsx)(_mutation_observer.EuiMutationObserver, {
476
477
  observerOptions: {
477
478
  attributes: true,
478
479
  // element attribute changes
@@ -485,7 +486,7 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
485
486
 
486
487
  onMutation: this.onMutation
487
488
  }, function (mutationRef) {
488
- return (0, _react.jsx)("div", {
489
+ return (0, _react2.jsx)("div", {
489
490
  ref: mutationRef
490
491
  }, children);
491
492
  }))));
@@ -494,32 +495,20 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
494
495
  // react-focus-on and related do not register outside click detection
495
496
  // when disabled, so we still need to conditionally check for that ourselves
496
497
  if (ownFocus) {
497
- return (0, _react.jsx)("div", _extends({
498
+ return (0, _react2.jsx)("div", _extends({
498
499
  css: popoverStyles,
499
500
  className: classes,
500
- ref: popoverRef
501
- }, rest), (0, _react.jsx)("div", {
502
- css: /*#__PURE__*/(0, _react.css)({
503
- display: display
504
- }, ";label:render;"),
505
- className: anchorClasses,
506
- ref: this.buttonRef
507
- }, button instanceof HTMLElement ? null : button), panel);
501
+ ref: this.popoverRef
502
+ }, rest), button instanceof HTMLElement ? null : button, panel);
508
503
  } else {
509
- return (0, _react.jsx)(_outside_click_detector.EuiOutsideClickDetector, {
504
+ return (0, _react2.jsx)(_outside_click_detector.EuiOutsideClickDetector, {
510
505
  onOutsideClick: this.closePopover
511
- }, (0, _react.jsx)("div", _extends({
506
+ }, (0, _react2.jsx)("div", _extends({
512
507
  css: popoverStyles,
513
508
  className: classes,
514
- ref: popoverRef,
509
+ ref: this.popoverRef,
515
510
  onKeyDown: this.onKeyDown
516
- }, rest), (0, _react.jsx)("div", {
517
- css: /*#__PURE__*/(0, _react.css)({
518
- display: display
519
- }, ";label:render;"),
520
- className: anchorClasses,
521
- ref: this.buttonRef
522
- }, button instanceof HTMLElement ? null : button), panel));
511
+ }, rest), button instanceof HTMLElement ? null : button, panel));
523
512
  }
524
513
  }
525
514
  }], [{
@@ -545,7 +534,7 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
545
534
  }
546
535
  }]);
547
536
  return EuiPopover;
548
- }(_react2.Component);
537
+ }(_react.Component);
549
538
  exports.EuiPopover = EuiPopover;
550
539
  _defineProperty(EuiPopover, "defaultProps", {
551
540
  isOpen: false,
@@ -559,6 +548,8 @@ _defineProperty(EuiPopover, "defaultProps", {
559
548
  EuiPopover.propTypes = {
560
549
  /**
561
550
  * Class name passed to the direct parent of the button
551
+ *
552
+ * @deprecated Use `className` instead
562
553
  */
563
554
  anchorClassName: _propTypes.default.string,
564
555
  /**
@@ -574,6 +565,9 @@ EuiPopover.propTypes = {
574
565
  * Triggering element for which to align the popover to
575
566
  */
576
567
  button: _propTypes.default.any.isRequired,
568
+ /**
569
+ * @deprecated Use `popoverRef` instead
570
+ */
577
571
  buttonRef: _propTypes.default.any,
578
572
  /**
579
573
  * 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
@@ -47,7 +47,8 @@ var EuiPopoverPanel = function EuiPopoverPanel(_ref) {
47
47
  var euiThemeContext = (0, _services.useEuiTheme)();
48
48
  var cssStyles = (0, _react.useMemo)(function () {
49
49
  var styles = (0, _popover_panel.euiPopoverPanelStyles)(euiThemeContext);
50
- var sharedStyles = [styles.euiPopover__panel, isOpen && styles.isOpen];
50
+ var colorMode = euiThemeContext.colorMode.toLowerCase();
51
+ var sharedStyles = [styles.euiPopover__panel, styles[colorMode], isOpen && styles.isOpen];
51
52
  if (hasDragDrop) {
52
53
  return [].concat(sharedStyles, [styles.hasDragDrop.hasDragDrop, position && styles.hasDragDrop[position]]);
53
54
  }
@@ -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: {
@@ -85,9 +85,11 @@ var EuiSelectableTemplateSitewide = function EuiSelectableTemplateSitewide(_ref)
85
85
  setPopoverIsOpen(false);
86
86
  _closePopover && _closePopover();
87
87
  };
88
- var togglePopover = function togglePopover() {
89
- setPopoverIsOpen(!popoverIsOpen);
90
- };
88
+ var togglePopover = (0, _react.useCallback)(function () {
89
+ setPopoverIsOpen(function (isOpen) {
90
+ return !isOpen;
91
+ });
92
+ }, []);
91
93
 
92
94
  // Width applied to the internal div
93
95
  var popoverWidth = width || 600;
@@ -162,16 +164,16 @@ var EuiSelectableTemplateSitewide = function EuiSelectableTemplateSitewide(_ref)
162
164
  if (!currentBreakpoint) return false;
163
165
  return popoverButtonBreakpoints.includes(currentBreakpoint);
164
166
  }, [currentBreakpoint, popoverButtonBreakpoints]);
165
- var popoverTrigger;
166
- if (popoverButton && canShowPopoverButton) {
167
- popoverTrigger = /*#__PURE__*/_react.default.cloneElement(popoverButton, _objectSpread(_objectSpread({}, popoverButton.props), {}, {
167
+ var popoverTrigger = (0, _react.useMemo)(function () {
168
+ if (!popoverButton || !canShowPopoverButton) return;
169
+ return (0, _react2.jsx)("span", {
170
+ className: "euiSelectableTemplateSitewide__popoverTrigger",
168
171
  onClick: togglePopover,
169
172
  onKeyDown: function onKeyDown(e) {
170
- // Selectable preventsDefault on Enter which kills browser controls for pressing the button
171
- e.stopPropagation();
173
+ return e.stopPropagation();
172
174
  }
173
- }));
174
- }
175
+ }, popoverButton);
176
+ }, [popoverButton, canShowPopoverButton, togglePopover]);
175
177
  return (0, _react2.jsx)(_selectable.EuiSelectable, _extends({
176
178
  isLoading: isLoading,
177
179
  options: formattedOptions,