@elastic/eui 71.1.0 → 72.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/dist/eui_charts_theme.js +13 -1
  2. package/dist/eui_charts_theme.js.map +1 -1
  3. package/dist/eui_theme_dark.css +20 -176
  4. package/dist/eui_theme_dark.min.css +1 -1
  5. package/dist/eui_theme_light.css +20 -176
  6. package/dist/eui_theme_light.min.css +1 -1
  7. package/es/components/basic_table/basic_table.js +2 -2
  8. package/es/components/basic_table/in_memory_table.js +3 -6
  9. package/es/components/basic_table/table.a11y.js +128 -0
  10. package/es/components/color_picker/color_picker.styles.js +16 -0
  11. package/es/components/color_picker/color_stops/color_stop_thumb.js +19 -7
  12. package/es/components/color_picker/color_stops/color_stop_thumb.styles.js +59 -0
  13. package/es/components/color_picker/color_stops/color_stops.js +25 -15
  14. package/es/components/color_picker/color_stops/color_stops.styles.js +65 -0
  15. package/es/components/date_picker/auto_refresh/refresh_interval.js +3 -1
  16. package/es/components/date_picker/super_date_picker/quick_select_popover/commonly_used_time_ranges.js +5 -2
  17. package/es/components/date_picker/super_date_picker/quick_select_popover/quick_select.js +3 -1
  18. package/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +160 -173
  19. package/es/components/date_picker/super_date_picker/quick_select_popover/recently_used.js +5 -2
  20. package/es/components/date_picker/super_date_picker/super_date_picker.js +16 -0
  21. package/es/components/error_boundary/error_boundary.a11y.js +67 -0
  22. package/es/components/expression/expression.a11y.js +254 -0
  23. package/es/components/filter_group/filter_group.a11y.js +281 -0
  24. package/es/components/focus_trap/focus_trap.a11y.js +131 -0
  25. package/es/components/form/file_picker/file_picker.js +1 -0
  26. package/es/components/form/range/range_highlight.styles.js +1 -1
  27. package/es/components/form/range/range_levels.styles.js +1 -1
  28. package/es/components/form/range/range_track.js +5 -2
  29. package/es/components/header/header.a11y.js +374 -0
  30. package/es/components/icon/icon_ML.a11y.js +33 -0
  31. package/es/components/icon/icon_apps.a11y.js +33 -0
  32. package/es/components/icon/icon_editor.a11y.js +33 -0
  33. package/es/components/icon/icon_elastic.a11y.js +33 -0
  34. package/es/components/icon/icon_glyphs.a11y.js +33 -0
  35. package/es/components/icon/icon_tokens.a11y.js +33 -0
  36. package/es/components/image/image.a11y.js +55 -0
  37. package/es/components/key_pad_menu/key_pad_menu.a11y.js +158 -0
  38. package/es/components/markdown_editor/plugins/markdown_default_plugins/parsing_plugins.js +1 -1
  39. package/es/components/popover/popover.js +2 -2
  40. package/es/components/selectable/selectable.js +4 -3
  41. package/es/components/selectable/selectable_list/selectable_list.js +17 -5
  42. package/es/components/table/table_footer_cell.js +1 -1
  43. package/es/components/table/table_header_cell.js +1 -1
  44. package/es/components/table/table_row_cell.js +2 -2
  45. package/es/components/tabs/tab.js +7 -17
  46. package/es/components/tabs/tabbed_content/tabbed_content.js +0 -16
  47. package/es/components/tabs/tabs.js +7 -11
  48. package/es/components/tabs/tabs_context.js +13 -0
  49. package/es/services/color/manipulation.js +9 -0
  50. package/es/services/index.js +11 -11
  51. package/eui.d.ts +195 -138
  52. package/i18ntokens.json +46 -30
  53. package/lib/components/basic_table/basic_table.js +2 -2
  54. package/lib/components/basic_table/in_memory_table.js +3 -6
  55. package/lib/components/basic_table/table.a11y.js +139 -0
  56. package/lib/components/color_picker/color_picker.styles.js +26 -0
  57. package/lib/components/color_picker/color_stops/color_stop_thumb.js +19 -6
  58. package/lib/components/color_picker/color_stops/color_stop_thumb.styles.js +69 -0
  59. package/lib/components/color_picker/color_stops/color_stops.js +25 -14
  60. package/lib/components/color_picker/color_stops/color_stops.styles.js +73 -0
  61. package/lib/components/date_picker/auto_refresh/refresh_interval.js +3 -1
  62. package/lib/components/date_picker/super_date_picker/quick_select_popover/commonly_used_time_ranges.js +5 -2
  63. package/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select.js +3 -1
  64. package/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +155 -168
  65. package/lib/components/date_picker/super_date_picker/quick_select_popover/recently_used.js +5 -2
  66. package/lib/components/date_picker/super_date_picker/super_date_picker.js +16 -0
  67. package/lib/components/error_boundary/error_boundary.a11y.js +75 -0
  68. package/lib/components/expression/expression.a11y.js +262 -0
  69. package/lib/components/filter_group/filter_group.a11y.js +287 -0
  70. package/lib/components/focus_trap/focus_trap.a11y.js +140 -0
  71. package/lib/components/form/file_picker/file_picker.js +1 -0
  72. package/lib/components/form/range/range_highlight.styles.js +1 -1
  73. package/lib/components/form/range/range_levels.styles.js +1 -1
  74. package/lib/components/form/range/range_track.js +6 -2
  75. package/lib/components/header/header.a11y.js +385 -0
  76. package/lib/components/icon/icon_ML.a11y.js +40 -0
  77. package/lib/components/icon/icon_apps.a11y.js +40 -0
  78. package/lib/components/icon/icon_editor.a11y.js +40 -0
  79. package/lib/components/icon/icon_elastic.a11y.js +40 -0
  80. package/lib/components/icon/icon_glyphs.a11y.js +40 -0
  81. package/lib/components/icon/icon_tokens.a11y.js +40 -0
  82. package/lib/components/image/image.a11y.js +61 -0
  83. package/lib/components/key_pad_menu/key_pad_menu.a11y.js +163 -0
  84. package/lib/components/markdown_editor/plugins/markdown_default_plugins/parsing_plugins.js +2 -2
  85. package/lib/components/popover/popover.js +2 -2
  86. package/lib/components/selectable/selectable.js +4 -3
  87. package/lib/components/selectable/selectable_list/selectable_list.js +17 -5
  88. package/lib/components/table/table_footer_cell.js +1 -1
  89. package/lib/components/table/table_header_cell.js +1 -1
  90. package/lib/components/table/table_row_cell.js +2 -2
  91. package/lib/components/tabs/tab.js +14 -17
  92. package/lib/components/tabs/tabbed_content/tabbed_content.js +0 -16
  93. package/lib/components/tabs/tabs.js +8 -14
  94. package/lib/components/tabs/tabs_context.js +23 -0
  95. package/lib/services/color/manipulation.js +14 -2
  96. package/lib/services/index.js +65 -58
  97. package/optimize/es/components/basic_table/table.a11y.js +128 -0
  98. package/optimize/es/components/color_picker/color_picker.styles.js +16 -0
  99. package/optimize/es/components/color_picker/color_stops/color_stop_thumb.js +19 -7
  100. package/optimize/es/components/color_picker/color_stops/color_stop_thumb.styles.js +59 -0
  101. package/optimize/es/components/color_picker/color_stops/color_stops.js +25 -15
  102. package/optimize/es/components/color_picker/color_stops/color_stops.styles.js +65 -0
  103. package/optimize/es/components/date_picker/auto_refresh/refresh_interval.js +3 -1
  104. package/optimize/es/components/date_picker/super_date_picker/quick_select_popover/commonly_used_time_ranges.js +5 -2
  105. package/optimize/es/components/date_picker/super_date_picker/quick_select_popover/quick_select.js +3 -1
  106. package/optimize/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +145 -169
  107. package/optimize/es/components/date_picker/super_date_picker/quick_select_popover/recently_used.js +5 -2
  108. package/optimize/es/components/date_picker/super_date_picker/super_date_picker.js +2 -0
  109. package/optimize/es/components/error_boundary/error_boundary.a11y.js +67 -0
  110. package/optimize/es/components/expression/expression.a11y.js +243 -0
  111. package/optimize/es/components/filter_group/filter_group.a11y.js +271 -0
  112. package/optimize/es/components/focus_trap/focus_trap.a11y.js +120 -0
  113. package/optimize/es/components/form/file_picker/file_picker.js +1 -0
  114. package/optimize/es/components/form/range/range_highlight.styles.js +1 -1
  115. package/optimize/es/components/form/range/range_levels.styles.js +1 -1
  116. package/optimize/es/components/form/range/range_track.js +5 -2
  117. package/optimize/es/components/header/header.a11y.js +364 -0
  118. package/optimize/es/components/icon/icon_ML.a11y.js +33 -0
  119. package/optimize/es/components/icon/icon_apps.a11y.js +33 -0
  120. package/optimize/es/components/icon/icon_editor.a11y.js +33 -0
  121. package/optimize/es/components/icon/icon_elastic.a11y.js +33 -0
  122. package/optimize/es/components/icon/icon_glyphs.a11y.js +33 -0
  123. package/optimize/es/components/icon/icon_tokens.a11y.js +33 -0
  124. package/optimize/es/components/image/image.a11y.js +55 -0
  125. package/optimize/es/components/key_pad_menu/key_pad_menu.a11y.js +148 -0
  126. package/optimize/es/components/markdown_editor/plugins/markdown_default_plugins/parsing_plugins.js +1 -1
  127. package/optimize/es/components/popover/popover.js +2 -2
  128. package/optimize/es/components/selectable/selectable.js +2 -2
  129. package/optimize/es/components/selectable/selectable_list/selectable_list.js +15 -4
  130. package/optimize/es/components/tabs/tab.js +7 -5
  131. package/optimize/es/components/tabs/tabs.js +7 -11
  132. package/optimize/es/components/tabs/tabs_context.js +13 -0
  133. package/optimize/es/services/color/manipulation.js +9 -0
  134. package/optimize/es/services/index.js +11 -11
  135. package/optimize/lib/components/basic_table/table.a11y.js +139 -0
  136. package/optimize/lib/components/color_picker/color_picker.styles.js +26 -0
  137. package/optimize/lib/components/color_picker/color_stops/color_stop_thumb.js +19 -6
  138. package/optimize/lib/components/color_picker/color_stops/color_stop_thumb.styles.js +69 -0
  139. package/optimize/lib/components/color_picker/color_stops/color_stops.js +25 -14
  140. package/optimize/lib/components/color_picker/color_stops/color_stops.styles.js +73 -0
  141. package/optimize/lib/components/date_picker/auto_refresh/refresh_interval.js +3 -1
  142. package/optimize/lib/components/date_picker/super_date_picker/quick_select_popover/commonly_used_time_ranges.js +5 -2
  143. package/optimize/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select.js +3 -1
  144. package/optimize/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +146 -167
  145. package/optimize/lib/components/date_picker/super_date_picker/quick_select_popover/recently_used.js +5 -2
  146. package/optimize/lib/components/date_picker/super_date_picker/super_date_picker.js +2 -0
  147. package/optimize/lib/components/error_boundary/error_boundary.a11y.js +75 -0
  148. package/optimize/lib/components/expression/expression.a11y.js +254 -0
  149. package/optimize/lib/components/filter_group/filter_group.a11y.js +287 -0
  150. package/optimize/lib/components/focus_trap/focus_trap.a11y.js +140 -0
  151. package/optimize/lib/components/form/file_picker/file_picker.js +1 -0
  152. package/optimize/lib/components/form/range/range_highlight.styles.js +1 -1
  153. package/optimize/lib/components/form/range/range_levels.styles.js +1 -1
  154. package/optimize/lib/components/form/range/range_track.js +6 -2
  155. package/optimize/lib/components/header/header.a11y.js +385 -0
  156. package/optimize/lib/components/icon/icon_ML.a11y.js +40 -0
  157. package/optimize/lib/components/icon/icon_apps.a11y.js +40 -0
  158. package/optimize/lib/components/icon/icon_editor.a11y.js +40 -0
  159. package/optimize/lib/components/icon/icon_elastic.a11y.js +40 -0
  160. package/optimize/lib/components/icon/icon_glyphs.a11y.js +40 -0
  161. package/optimize/lib/components/icon/icon_tokens.a11y.js +40 -0
  162. package/optimize/lib/components/image/image.a11y.js +61 -0
  163. package/optimize/lib/components/key_pad_menu/key_pad_menu.a11y.js +163 -0
  164. package/optimize/lib/components/markdown_editor/plugins/markdown_default_plugins/parsing_plugins.js +2 -2
  165. package/optimize/lib/components/popover/popover.js +2 -2
  166. package/optimize/lib/components/selectable/selectable.js +2 -2
  167. package/optimize/lib/components/selectable/selectable_list/selectable_list.js +15 -4
  168. package/optimize/lib/components/tabs/tab.js +15 -5
  169. package/optimize/lib/components/tabs/tabs.js +8 -14
  170. package/optimize/lib/components/tabs/tabs_context.js +23 -0
  171. package/optimize/lib/services/color/manipulation.js +14 -2
  172. package/optimize/lib/services/index.js +65 -58
  173. package/package.json +4 -6
  174. package/src/components/color_picker/_index.scss +0 -1
  175. package/src/components/date_picker/super_date_picker/quick_select_popover/_quick_select_popover.scss +14 -0
  176. package/src/components/form/file_picker/_file_picker.scss +14 -14
  177. package/src/themes/amsterdam/overrides/_index.scss +0 -1
  178. package/test-env/components/basic_table/basic_table.js +2 -2
  179. package/test-env/components/basic_table/in_memory_table.js +3 -6
  180. package/test-env/components/basic_table/table.a11y.js +139 -0
  181. package/test-env/components/color_picker/color_picker.styles.js +26 -0
  182. package/test-env/components/color_picker/color_stops/color_stop_thumb.js +19 -6
  183. package/test-env/components/color_picker/color_stops/color_stop_thumb.styles.js +69 -0
  184. package/test-env/components/color_picker/color_stops/color_stops.js +25 -14
  185. package/test-env/components/color_picker/color_stops/color_stops.styles.js +73 -0
  186. package/test-env/components/date_picker/auto_refresh/refresh_interval.js +3 -1
  187. package/test-env/components/date_picker/super_date_picker/quick_select_popover/commonly_used_time_ranges.js +5 -2
  188. package/test-env/components/date_picker/super_date_picker/quick_select_popover/quick_select.js +3 -1
  189. package/test-env/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +153 -166
  190. package/test-env/components/date_picker/super_date_picker/quick_select_popover/recently_used.js +5 -2
  191. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +16 -0
  192. package/test-env/components/error_boundary/error_boundary.a11y.js +75 -0
  193. package/test-env/components/expression/expression.a11y.js +254 -0
  194. package/test-env/components/filter_group/filter_group.a11y.js +287 -0
  195. package/test-env/components/focus_trap/focus_trap.a11y.js +140 -0
  196. package/test-env/components/form/file_picker/file_picker.js +1 -0
  197. package/test-env/components/form/range/range_highlight.styles.js +1 -1
  198. package/test-env/components/form/range/range_levels.styles.js +1 -1
  199. package/test-env/components/form/range/range_track.js +6 -2
  200. package/test-env/components/header/header.a11y.js +385 -0
  201. package/test-env/components/icon/icon_ML.a11y.js +40 -0
  202. package/test-env/components/icon/icon_apps.a11y.js +40 -0
  203. package/test-env/components/icon/icon_editor.a11y.js +40 -0
  204. package/test-env/components/icon/icon_elastic.a11y.js +40 -0
  205. package/test-env/components/icon/icon_glyphs.a11y.js +40 -0
  206. package/test-env/components/icon/icon_tokens.a11y.js +40 -0
  207. package/test-env/components/image/image.a11y.js +61 -0
  208. package/test-env/components/key_pad_menu/key_pad_menu.a11y.js +163 -0
  209. package/test-env/components/markdown_editor/plugins/markdown_default_plugins/parsing_plugins.js +2 -2
  210. package/test-env/components/popover/popover.js +2 -2
  211. package/test-env/components/selectable/selectable.js +4 -3
  212. package/test-env/components/selectable/selectable_list/selectable_list.js +17 -5
  213. package/test-env/components/table/table_footer_cell.js +1 -1
  214. package/test-env/components/table/table_header_cell.js +1 -1
  215. package/test-env/components/table/table_row_cell.js +2 -2
  216. package/test-env/components/tabs/tab.js +15 -17
  217. package/test-env/components/tabs/tabbed_content/tabbed_content.js +0 -16
  218. package/test-env/components/tabs/tabs.js +8 -14
  219. package/test-env/components/tabs/tabs_context.js +23 -0
  220. package/test-env/services/color/manipulation.js +14 -2
  221. package/test-env/services/index.js +65 -58
  222. package/src/components/color_picker/color_stops/_color_stops.scss +0 -101
  223. package/src/components/color_picker/color_stops/_index.scss +0 -1
  224. package/src/themes/amsterdam/overrides/_color_stops.scss +0 -58
@@ -0,0 +1,55 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+ /// <reference types="../../../cypress/support"/>
9
+ import React from 'react';
10
+ import { EuiImage } from './image';
11
+ import { jsx as ___EmotionJSX } from "@emotion/react";
12
+
13
+ var Image = function Image() {
14
+ return ___EmotionJSX(EuiImage, {
15
+ size: "m",
16
+ hasShadow: true,
17
+ allowFullScreen: true,
18
+ caption: "Albert Einstein, theoretical physicist",
19
+ alt: "" // Because this image is sufficiently described by its caption, there is no need to repeat it via alt text
20
+ ,
21
+ src: "https://upload.wikimedia.org/wikipedia/commons/d/d3/Albert_Einstein_Head.jpg"
22
+ });
23
+ };
24
+
25
+ beforeEach(function () {
26
+ cy.viewport(1024, 768); // medium breakpoint
27
+
28
+ cy.realMount(___EmotionJSX(Image, null));
29
+ cy.get('figure[aria-label="Albert Einstein, theoretical physicist"]').should('exist');
30
+ });
31
+ describe('EuiImage', function () {
32
+ describe('Automated accessibility check', function () {
33
+ it('has zero violations on first render', function () {
34
+ cy.checkAxe();
35
+ });
36
+ it('has zero violations on fullscreen render', function () {
37
+ cy.get('button[data-test-subj="activateFullScreenButton"]').realClick();
38
+ cy.get('button[data-test-subj="deactivateFullScreenButton"]').should('exist');
39
+ cy.checkAxe();
40
+ cy.get('div[data-test-subj="fullScreenOverlayMask"]').realClick();
41
+ cy.checkAxe();
42
+ });
43
+ it('has zero violations on keyboard interaction', function () {
44
+ cy.realPress('Tab');
45
+ cy.get('button[data-test-subj="activateFullScreenButton"]').should('have.focus');
46
+ cy.realPress('Enter');
47
+ cy.get('button[data-test-subj="deactivateFullScreenButton"]').should('exist');
48
+ cy.get('button[data-test-subj="deactivateFullScreenButton"]').should('have.focus');
49
+ cy.checkAxe();
50
+ cy.realPress('Escape');
51
+ cy.get('button[data-test-subj="activateFullScreenButton"]').should('have.focus');
52
+ cy.checkAxe();
53
+ });
54
+ });
55
+ });
@@ -0,0 +1,158 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+
3
+ 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."); }
4
+
5
+ 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); }
6
+
7
+ 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; }
8
+
9
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
+
11
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
+
13
+ /*
14
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
15
+ * or more contributor license agreements. Licensed under the Elastic License
16
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
17
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
18
+ * Side Public License, v 1.
19
+ */
20
+ /// <reference types="../../../cypress/support"/>
21
+ import React, { useState } from 'react';
22
+ import { EuiKeyPadMenu } from './key_pad_menu';
23
+ import { EuiKeyPadMenuItem } from './key_pad_menu_item';
24
+ import { EuiIcon } from '../icon';
25
+ import { useGeneratedHtmlId } from '../../services';
26
+ import { jsx as ___EmotionJSX } from "@emotion/react";
27
+
28
+ var KeyPadMenu = function KeyPadMenu() {
29
+ var keypadButtonId__1 = useGeneratedHtmlId({
30
+ prefix: 'keypadButton',
31
+ suffix: 'first'
32
+ });
33
+ var keypadButtonId__2 = useGeneratedHtmlId({
34
+ prefix: 'keypadButton',
35
+ suffix: 'second'
36
+ });
37
+ var keypadButtonId__3 = useGeneratedHtmlId({
38
+ prefix: 'keypadButton',
39
+ suffix: 'third'
40
+ });
41
+ var keypadButtonId__4 = useGeneratedHtmlId({
42
+ prefix: 'keypadButton',
43
+ suffix: 'fourth'
44
+ });
45
+ var keypadButtonId__5 = useGeneratedHtmlId({
46
+ prefix: 'keypadButton',
47
+ suffix: 'fifth'
48
+ });
49
+ var keypadButtonId__6 = useGeneratedHtmlId({
50
+ prefix: 'keypadButton',
51
+ suffix: 'sixth'
52
+ });
53
+
54
+ var _useState = useState(keypadButtonId__6),
55
+ _useState2 = _slicedToArray(_useState, 2),
56
+ selectedID = _useState2[0],
57
+ setSelectedID = _useState2[1];
58
+
59
+ return ___EmotionJSX("div", {
60
+ "aria-label": "Menu keypad"
61
+ }, ___EmotionJSX(EuiKeyPadMenu, null, ___EmotionJSX(EuiKeyPadMenuItem, {
62
+ "data-test-subj": "cy-keypad-button-1",
63
+ id: keypadButtonId__1,
64
+ label: "Button 1",
65
+ isSelected: selectedID === keypadButtonId__1,
66
+ onClick: function onClick() {
67
+ return setSelectedID(keypadButtonId__1);
68
+ }
69
+ }, ___EmotionJSX(EuiIcon, {
70
+ type: "grid",
71
+ size: "l"
72
+ })), ___EmotionJSX(EuiKeyPadMenuItem, {
73
+ "data-test-subj": "cy-keypad-button-2",
74
+ id: keypadButtonId__2,
75
+ label: "Button 2",
76
+ isSelected: selectedID === keypadButtonId__2,
77
+ onClick: function onClick() {
78
+ return setSelectedID(keypadButtonId__2);
79
+ }
80
+ }, ___EmotionJSX(EuiIcon, {
81
+ type: "grid",
82
+ size: "l"
83
+ })), ___EmotionJSX(EuiKeyPadMenuItem, {
84
+ "data-test-subj": "cy-keypad-button-3",
85
+ id: keypadButtonId__3,
86
+ label: "Button 3",
87
+ isSelected: selectedID === keypadButtonId__3,
88
+ onClick: function onClick() {
89
+ return setSelectedID(keypadButtonId__3);
90
+ }
91
+ }, ___EmotionJSX(EuiIcon, {
92
+ type: "grid",
93
+ size: "l"
94
+ })), ___EmotionJSX(EuiKeyPadMenuItem, {
95
+ "data-test-subj": "cy-keypad-link-1",
96
+ id: keypadButtonId__4,
97
+ label: "Link 1",
98
+ href: "#/navigation/key-pad-menu",
99
+ isSelected: selectedID === keypadButtonId__4,
100
+ onClick: function onClick() {
101
+ return setSelectedID(keypadButtonId__4);
102
+ }
103
+ }, ___EmotionJSX(EuiIcon, {
104
+ type: "link",
105
+ size: "l"
106
+ })), ___EmotionJSX(EuiKeyPadMenuItem, {
107
+ "data-test-subj": "cy-keypad-link-2",
108
+ id: keypadButtonId__5,
109
+ label: "Link 2",
110
+ href: "#/navigation/key-pad-menu",
111
+ isSelected: selectedID === keypadButtonId__5,
112
+ onClick: function onClick() {
113
+ return setSelectedID(keypadButtonId__5);
114
+ }
115
+ }, ___EmotionJSX(EuiIcon, {
116
+ type: "link",
117
+ size: "l"
118
+ })), ___EmotionJSX(EuiKeyPadMenuItem, {
119
+ "data-test-subj": "cy-keypad-link-3",
120
+ id: keypadButtonId__6,
121
+ label: "Disabled Link 3",
122
+ isDisabled: true,
123
+ isSelected: selectedID === keypadButtonId__6
124
+ }, ___EmotionJSX(EuiIcon, {
125
+ type: "link",
126
+ size: "l"
127
+ }))));
128
+ };
129
+
130
+ beforeEach(function () {
131
+ cy.realMount(___EmotionJSX(KeyPadMenu, null));
132
+ cy.get('div[aria-label="Menu keypad"]').should('exist');
133
+ });
134
+ describe('EuiKeyPadMenu', function () {
135
+ describe('Automated accessibility check', function () {
136
+ it('has zero violations on first render', function () {
137
+ cy.checkAxe();
138
+ });
139
+ it('has zero violations on item click', function () {
140
+ cy.get('a[data-test-subj="cy-keypad-link-2"]').realClick();
141
+ cy.get('a[data-test-subj="cy-keypad-link-2"]').should('have.class', 'euiKeyPadMenuItem-isSelected');
142
+ cy.checkAxe();
143
+ });
144
+ it('has zero violations on item keypress', function () {
145
+ cy.repeatRealPress('Tab', 3);
146
+ cy.get('button[data-test-subj="cy-keypad-button-3"]').should('have.focus');
147
+ cy.realPress('Space');
148
+ cy.get('button[data-test-subj="cy-keypad-button-3"]').should('have.class', 'euiKeyPadMenuItem-isSelected');
149
+ cy.checkAxe();
150
+ cy.realPress(['Shift', 'Tab']);
151
+ cy.get('button[data-test-subj="cy-keypad-button-2"]').should('have.focus');
152
+ cy.realPress('Space');
153
+ cy.get('button[data-test-subj="cy-keypad-button-2"]').should('have.class', 'euiKeyPadMenuItem-isSelected');
154
+ cy.get('button[data-test-subj="cy-keypad-button-3"]').should('not.have.class', 'euiKeyPadMenuItem-isSelected');
155
+ cy.checkAxe();
156
+ });
157
+ });
158
+ });
@@ -9,7 +9,7 @@
9
9
  // are exported for two versions of TypeScript (3.4, 4.0) and implicit
10
10
  // imports during eui.d.ts generation default to the incorrect version (3.4).
11
11
  // Explicit imports here resolve the version mismatch.
12
- import markdown from 'remark-parse';
12
+ import markdown from 'remark-parse-no-trim';
13
13
  import emoji from 'remark-emoji';
14
14
  import breaks from 'remark-breaks';
15
15
  import highlight from '../remark/remark_prismjs';
@@ -508,13 +508,13 @@ export var EuiPopover = /*#__PURE__*/function (_Component) {
508
508
  panel = ___EmotionJSX(EuiPortal, {
509
509
  insert: insert
510
510
  }, ___EmotionJSX(EuiFocusTrap, _extends({
511
- clickOutsideDisables: true
511
+ clickOutsideDisables: true,
512
+ onClickOutside: this.onClickOutside
512
513
  }, focusTrapProps, {
513
514
  returnFocus: returnFocus // Ignore temporary state of indecisive focus
514
515
  ,
515
516
  initialFocus: initialFocus,
516
517
  onDeactivation: onTrapDeactivation,
517
- onClickOutside: this.onClickOutside,
518
518
  onEscapeKey: this.onEscapeKey,
519
519
  disabled: !ownFocus || !this.state.isOpenStable || this.state.isClosing
520
520
  }), ___EmotionJSX(EuiPopoverPanel, _extends({}, panelProps, {
@@ -275,7 +275,7 @@ export var EuiSelectable = /*#__PURE__*/function (_Component) {
275
275
  });
276
276
  });
277
277
 
278
- _defineProperty(_assertThisInitialized(_this), "onOptionClick", function (options, event) {
278
+ _defineProperty(_assertThisInitialized(_this), "onOptionClick", function (options, event, clickedOption) {
279
279
  var _this$props = _this.props,
280
280
  isPreFiltered = _this$props.isPreFiltered,
281
281
  onChange = _this$props.onChange;
@@ -287,7 +287,7 @@ export var EuiSelectable = /*#__PURE__*/function (_Component) {
287
287
  });
288
288
 
289
289
  if (onChange) {
290
- onChange(options, event);
290
+ onChange(options, event, clickedOption);
291
291
  }
292
292
  });
293
293
 
@@ -723,7 +723,8 @@ EuiSelectable.propTypes = {
723
723
 
724
724
  /**
725
725
  * Passes back the altered `options` array with selected options having `checked: 'on'`.
726
- * Also passes back the React click/keyboard event as a second argument.
726
+ * Also passes back the React click/keyboard event as a second argument,
727
+ * and the option that triggered the onChange event as a third argument.
727
728
  */
728
729
  onChange: PropTypes.func,
729
730
 
@@ -227,6 +227,9 @@ export var EuiSelectableList = /*#__PURE__*/function (_Component) {
227
227
  onOptionClick = _this$props4.onOptionClick,
228
228
  options = _this$props4.options,
229
229
  singleSelection = _this$props4.singleSelection;
230
+
231
+ var changedOption = _objectSpread({}, addedOption);
232
+
230
233
  var updatedOptions = options.map(function (option) {
231
234
  // if singleSelection is enabled, uncheck any selected option(s)
232
235
  var updatedOption = _objectSpread({}, option);
@@ -238,11 +241,12 @@ export var EuiSelectableList = /*#__PURE__*/function (_Component) {
238
241
 
239
242
  if (option === addedOption) {
240
243
  updatedOption.checked = 'on';
244
+ changedOption = updatedOption;
241
245
  }
242
246
 
243
247
  return updatedOption;
244
248
  });
245
- onOptionClick(updatedOptions, event);
249
+ onOptionClick(updatedOptions, event, changedOption);
246
250
  });
247
251
 
248
252
  _defineProperty(_assertThisInitialized(_this), "onRemoveOption", function (removedOption, event) {
@@ -250,33 +254,40 @@ export var EuiSelectableList = /*#__PURE__*/function (_Component) {
250
254
  onOptionClick = _this$props5.onOptionClick,
251
255
  singleSelection = _this$props5.singleSelection,
252
256
  options = _this$props5.options;
257
+
258
+ var changedOption = _objectSpread({}, removedOption);
259
+
253
260
  var updatedOptions = options.map(function (option) {
254
261
  var updatedOption = _objectSpread({}, option);
255
262
 
256
263
  if (option === removedOption && singleSelection !== 'always') {
257
264
  delete updatedOption.checked;
265
+ changedOption = updatedOption;
258
266
  }
259
267
 
260
268
  return updatedOption;
261
269
  });
262
- onOptionClick(updatedOptions, event);
270
+ onOptionClick(updatedOptions, event, changedOption);
263
271
  });
264
272
 
265
273
  _defineProperty(_assertThisInitialized(_this), "onExcludeOption", function (excludedOption, event) {
266
274
  var _this$props6 = _this.props,
267
275
  onOptionClick = _this$props6.onOptionClick,
268
276
  options = _this$props6.options;
269
- excludedOption.checked = 'off';
277
+
278
+ var changedOption = _objectSpread({}, excludedOption);
279
+
270
280
  var updatedOptions = options.map(function (option) {
271
281
  var updatedOption = _objectSpread({}, option);
272
282
 
273
283
  if (option === excludedOption) {
274
284
  updatedOption.checked = 'off';
285
+ changedOption = updatedOption;
275
286
  }
276
287
 
277
288
  return updatedOption;
278
289
  });
279
- onOptionClick(updatedOptions, event);
290
+ onOptionClick(updatedOptions, event, changedOption);
280
291
  });
281
292
 
282
293
  return _this;
@@ -590,7 +601,8 @@ EuiSelectableList.propTypes = {
590
601
  searchValue: PropTypes.string.isRequired,
591
602
 
592
603
  /**
593
- * Returns the array of options with altered checked state
604
+ * Returns the array of options with altered checked state, the click/keyboard event,
605
+ * and the option that triggered the click/keyboard event
594
606
  */
595
607
  onOptionClick: PropTypes.func.isRequired,
596
608
 
@@ -48,6 +48,6 @@ EuiTableFooterCell.propTypes = {
48
48
  "aria-label": PropTypes.string,
49
49
  "data-test-subj": PropTypes.string,
50
50
  css: PropTypes.any,
51
- align: PropTypes.oneOf(["left", "right", "center"]),
51
+ align: PropTypes.any,
52
52
  width: PropTypes.oneOfType([PropTypes.string.isRequired, PropTypes.number.isRequired])
53
53
  };
@@ -139,7 +139,7 @@ EuiTableHeaderCell.propTypes = {
139
139
  "aria-label": PropTypes.string,
140
140
  "data-test-subj": PropTypes.string,
141
141
  css: PropTypes.any,
142
- align: PropTypes.oneOf(["left", "right", "center"]),
142
+ align: PropTypes.any,
143
143
  isSortAscending: PropTypes.bool,
144
144
  isSorted: PropTypes.bool,
145
145
 
@@ -195,7 +195,7 @@ EuiTableRowCell.propTypes = {
195
195
  /**
196
196
  * Horizontal alignment of the text in the cell
197
197
  */
198
- align: PropTypes.oneOf(["left", "right", "center"]),
198
+ align: PropTypes.any,
199
199
 
200
200
  /**
201
201
  * _Should only be used for action cells_
@@ -217,7 +217,7 @@ EuiTableRowCell.propTypes = {
217
217
  /**
218
218
  * Horizontal alignment of the text in the cell
219
219
  */
220
- align: PropTypes.oneOf(["left", "right", "center"]),
220
+ align: PropTypes.any,
221
221
 
222
222
  /**
223
223
  * _Should only be used for action cells_
@@ -1,4 +1,4 @@
1
- var _excluded = ["isSelected", "children", "className", "disabled", "href", "target", "rel", "prepend", "append", "size", "expand"];
1
+ var _excluded = ["isSelected", "children", "className", "disabled", "href", "target", "rel", "prepend", "append"];
2
2
 
3
3
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
4
 
@@ -13,12 +13,13 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
13
13
  * in compliance with, at your election, the Elastic License 2.0 or the Server
14
14
  * Side Public License, v 1.
15
15
  */
16
- import React from 'react';
16
+ import React, { useContext } from 'react';
17
17
  import PropTypes from "prop-types";
18
18
  import classNames from 'classnames';
19
19
  import { getSecureRelForTarget, useEuiTheme } from '../../services';
20
20
  import { validateHref } from '../../services/security/href_validator';
21
21
  import { euiTabStyles, euiTabContentStyles } from './tab.styles';
22
+ import { EuiTabsContext } from './tabs_context';
22
23
  import { jsx as ___EmotionJSX } from "@emotion/react";
23
24
  export var EuiTab = function EuiTab(_ref) {
24
25
  var isSelected = _ref.isSelected,
@@ -30,11 +31,12 @@ export var EuiTab = function EuiTab(_ref) {
30
31
  rel = _ref.rel,
31
32
  prepend = _ref.prepend,
32
33
  append = _ref.append,
33
- _ref$size = _ref.size,
34
- size = _ref$size === void 0 ? 'm' : _ref$size,
35
- expand = _ref.expand,
36
34
  rest = _objectWithoutProperties(_ref, _excluded);
37
35
 
36
+ var _useContext = useContext(EuiTabsContext),
37
+ size = _useContext.size,
38
+ expand = _useContext.expand;
39
+
38
40
  var euiTheme = useEuiTheme();
39
41
  var isHrefValid = !href || validateHref(href);
40
42
  var disabled = _disabled || !isHrefValid; // Keep CSS classnames for reference
@@ -114,18 +116,6 @@ EuiTab.propTypes = {
114
116
  * Will be excluded from interactive effects.
115
117
  */
116
118
  append: PropTypes.node,
117
-
118
- /**
119
- * Evenly stretches each tab to fill the
120
- * horizontal space
121
- */
122
- expand: PropTypes.bool,
123
-
124
- /**
125
- * Sizes affect both font size and overall size.
126
- * Only use the `xl` size when displayed as page titles.
127
- */
128
- size: PropTypes.any,
129
119
  className: PropTypes.string,
130
120
  "aria-label": PropTypes.string,
131
121
  "data-test-subj": PropTypes.string,
@@ -239,18 +239,6 @@ EuiTabbedContent.propTypes = {
239
239
  * Will be excluded from interactive effects.
240
240
  */
241
241
  append: PropTypes.node,
242
-
243
- /**
244
- * Evenly stretches each tab to fill the
245
- * horizontal space
246
- */
247
- expand: PropTypes.bool,
248
-
249
- /**
250
- * Sizes affect both font size and overall size.
251
- * Only use the `xl` size when displayed as page titles.
252
- */
253
- size: PropTypes.any,
254
242
  className: PropTypes.string,
255
243
  "aria-label": PropTypes.string,
256
244
  "data-test-subj": PropTypes.string,
@@ -269,8 +257,6 @@ EuiTabbedContent.propTypes = {
269
257
  disabled: PropTypes.bool,
270
258
  prepend: PropTypes.node,
271
259
  append: PropTypes.node,
272
- expand: PropTypes.bool,
273
- size: PropTypes.any,
274
260
  className: PropTypes.string,
275
261
  "aria-label": PropTypes.string,
276
262
  "data-test-subj": PropTypes.string,
@@ -290,8 +276,6 @@ EuiTabbedContent.propTypes = {
290
276
  disabled: PropTypes.bool,
291
277
  prepend: PropTypes.node,
292
278
  append: PropTypes.node,
293
- expand: PropTypes.bool,
294
- size: PropTypes.any,
295
279
  className: PropTypes.string,
296
280
  "aria-label": PropTypes.string,
297
281
  "data-test-subj": PropTypes.string,
@@ -16,8 +16,8 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
16
16
  import React, { forwardRef } from 'react';
17
17
  import classNames from 'classnames';
18
18
  import { useEuiTheme } from '../../services';
19
- import { cloneElementWithCss } from '../../services/theme/clone_element';
20
19
  import { euiTabsStyles } from './tabs.styles';
20
+ import { EuiTabsContext } from './tabs_context';
21
21
  import { jsx as ___EmotionJSX } from "@emotion/react";
22
22
  export var SIZES = ['s', 'm', 'l', 'xl'];
23
23
  export var EuiTabs = /*#__PURE__*/forwardRef(function (_ref, ref) {
@@ -35,21 +35,17 @@ export var EuiTabs = /*#__PURE__*/forwardRef(function (_ref, ref) {
35
35
  var classes = classNames('euiTabs', className);
36
36
  var styles = euiTabsStyles(euiTheme);
37
37
  var cssStyles = [styles.euiTabs, styles[size], bottomBorder && styles.bottomBorder];
38
- var tabItems = React.Children.map(children, function (child) {
39
- if ( /*#__PURE__*/React.isValidElement(child)) {
40
- return cloneElementWithCss(child, {
41
- // we're passing the parent `size` and `expand` down to the children
42
- size: size,
43
- expand: expand
44
- });
45
- }
46
- });
47
38
  return ___EmotionJSX("div", _extends({
48
39
  ref: ref,
49
40
  className: classes,
50
41
  css: cssStyles
51
42
  }, children && {
52
43
  role: 'tablist'
53
- }, rest), tabItems);
44
+ }, rest), ___EmotionJSX(EuiTabsContext.Provider, {
45
+ value: {
46
+ expand: expand,
47
+ size: size
48
+ }
49
+ }, children));
54
50
  });
55
51
  EuiTabs.displayName = 'EuiTabs';
@@ -0,0 +1,13 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+ import { createContext } from 'react';
9
+ export var contextDefaults = {
10
+ expand: false,
11
+ size: 'm'
12
+ };
13
+ export var EuiTabsContext = /*#__PURE__*/createContext(contextDefaults);
@@ -97,4 +97,13 @@ export var lightness = function lightness(color) {
97
97
 
98
98
  export var darken = function darken(color, amount) {
99
99
  return chroma(color).darken(amount).hex();
100
+ };
101
+ /**
102
+ * Returns the brighten value of a color. 0-100
103
+ * @param color - Color to manipulate
104
+ * @param amount - Amount to change in absolute terms. 0-1.
105
+ */
106
+
107
+ export var brighten = function brighten(color, amount) {
108
+ return chroma(color).brighten(amount).hex();
100
109
  };
@@ -7,25 +7,25 @@
7
7
  */
8
8
  // Export all keys under a `keys` named variable
9
9
  import * as keys from './keys';
10
- export { keys };
11
10
  export { accessibleClickKeys, cascadingMenuKeys, comboBoxKeys, htmlIdGenerator, useGeneratedHtmlId } from './accessibility';
12
- export { LEFT_ALIGNMENT, RIGHT_ALIGNMENT, CENTER_ALIGNMENT } from './alignment';
13
- export { useIsWithinBreakpoints, useIsWithinMaxBreakpoint, useIsWithinMinBreakpoint, CurrentEuiBreakpointContext, CurrentEuiBreakpointProvider, useCurrentEuiBreakpoint } from './breakpoint';
14
- export { isColorDark, isValidHex, calculateContrast, calculateLuminance, hexToHsv, hexToRgb, hsvToHex, hsvToRgb, rgbToHex, rgbToHsv, VISUALIZATION_COLORS, DEFAULT_VISUALIZATION_COLOR, colorPalette, euiPaletteForLightBackground, euiPaletteForDarkBackground, euiPaletteColorBlind, euiPaletteColorBlindBehindText, euiPaletteForStatus, euiPaletteForTemperature, euiPaletteComplimentary, euiPaletteNegative, euiPalettePositive, euiPaletteCool, euiPaletteWarm, euiPaletteGray, getSteppedGradient, transparentize, tint, shade, tintOrShade, shadeOrTint, saturate, desaturate, lightness, darken, makeHighContrastColor, makeDisabledContrastColor, wcagContrastMin } from './color';
11
+ export { CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT } from './alignment';
12
+ export { CurrentEuiBreakpointContext, CurrentEuiBreakpointProvider, useCurrentEuiBreakpoint, useIsWithinBreakpoints, useIsWithinMaxBreakpoint, useIsWithinMinBreakpoint } from './breakpoint';
13
+ export { brighten, calculateContrast, calculateLuminance, colorPalette, darken, DEFAULT_VISUALIZATION_COLOR, desaturate, euiPaletteColorBlind, euiPaletteColorBlindBehindText, euiPaletteComplimentary, euiPaletteCool, euiPaletteForDarkBackground, euiPaletteForLightBackground, euiPaletteForStatus, euiPaletteForTemperature, euiPaletteGray, euiPaletteNegative, euiPalettePositive, euiPaletteWarm, getSteppedGradient, hexToHsv, hexToRgb, hsvToHex, hsvToRgb, isColorDark, isValidHex, lightness, makeDisabledContrastColor, makeHighContrastColor, rgbToHex, rgbToHsv, saturate, shade, shadeOrTint, tint, tintOrShade, transparentize, VISUALIZATION_COLORS, wcagContrastMin } from './color';
15
14
  export { useColorPickerState, useColorStopsState } from './color_picker';
16
15
  export * from './console';
17
16
  export { copyToClipboard } from './copy_to_clipboard';
18
17
  export * from './findElement';
19
- export { formatAuto, formatBoolean, formatDate, formatNumber, formatText, dateFormatAliases } from './format';
18
+ export { dateFormatAliases, formatAuto, formatBoolean, formatDate, formatNumber, formatText } from './format';
19
+ export * from './hooks';
20
20
  export { isEvenlyDivisibleBy, isWithinRange } from './number';
21
21
  export { Pager } from './paging';
22
+ export { calculatePopoverPosition, findPopoverPosition } from './popover';
22
23
  export { Random } from './random';
23
24
  export { getSecureRelForTarget } from './security';
24
- export { toSentenceCase, toInitials, slugify } from './string';
25
- export { PropertySortType, SortDirectionType, SortDirection, SortableProperties, Comparators } from './sort';
26
- export { calculatePopoverPosition, findPopoverPosition } from './popover';
25
+ export { Comparators, PropertySortType, SortableProperties, SortDirection, SortDirectionType } from './sort';
26
+ export { slugify, toInitials, toSentenceCase } from './string';
27
+ export * from './theme';
28
+ export { throttle } from './throttle';
27
29
  export { getDurationAndPerformOnFrame, getTransitionTimings, getWaitDuration, performOnFrame } from './transition';
28
30
  export { EuiWindowEvent } from './window_event';
29
- export * from './hooks';
30
- export { throttle } from './throttle';
31
- export * from './theme';
31
+ export { keys };