@elastic/eui 72.0.0 → 72.2.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 (149) 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 +0 -151
  4. package/dist/eui_theme_dark.min.css +1 -1
  5. package/dist/eui_theme_light.css +0 -151
  6. package/dist/eui_theme_light.min.css +1 -1
  7. package/es/components/accordion/accordion.js +1 -1
  8. package/es/components/basic_table/basic_table.js +2 -2
  9. package/es/components/basic_table/in_memory_table.js +3 -6
  10. package/es/components/basic_table/table.a11y.js +128 -0
  11. package/es/components/color_picker/color_picker.styles.js +16 -0
  12. package/es/components/color_picker/color_stops/color_stop_thumb.js +19 -7
  13. package/es/components/color_picker/color_stops/color_stop_thumb.styles.js +59 -0
  14. package/es/components/color_picker/color_stops/color_stops.js +25 -15
  15. package/es/components/color_picker/color_stops/color_stops.styles.js +65 -0
  16. package/es/components/date_picker/super_date_picker/super_date_picker.js +9 -0
  17. package/es/components/date_picker/super_date_picker/super_update_button.js +8 -0
  18. package/es/components/form/range/range_highlight.styles.js +1 -1
  19. package/es/components/form/range/range_levels.styles.js +1 -1
  20. package/es/components/form/range/range_track.js +5 -2
  21. package/es/components/image/image.a11y.js +55 -0
  22. package/es/components/image/image.js +9 -2
  23. package/es/components/image/image_fullscreen_wrapper.js +3 -1
  24. package/es/components/image/image_wrapper.js +3 -1
  25. package/es/components/key_pad_menu/key_pad_menu.a11y.js +158 -0
  26. package/es/components/markdown_editor/markdown_format.styles.js +2 -5
  27. package/es/components/popover/popover.js +2 -2
  28. package/es/components/table/table_footer_cell.js +1 -1
  29. package/es/components/table/table_header_cell.js +1 -1
  30. package/es/components/table/table_row_cell.js +2 -2
  31. package/es/components/text/text.styles.js +6 -3
  32. package/es/components/tool_tip/icon_tip.js +8 -0
  33. package/es/components/tool_tip/tool_tip.js +24 -1
  34. package/es/components/tour/tour.styles.js +1 -1
  35. package/es/services/color/manipulation.js +9 -0
  36. package/es/services/index.js +11 -11
  37. package/eui.d.ts +166 -107
  38. package/i18ntokens.json +16 -16
  39. package/lib/components/accordion/accordion.js +1 -1
  40. package/lib/components/basic_table/basic_table.js +2 -2
  41. package/lib/components/basic_table/in_memory_table.js +3 -6
  42. package/lib/components/basic_table/table.a11y.js +139 -0
  43. package/lib/components/color_picker/color_picker.styles.js +26 -0
  44. package/lib/components/color_picker/color_stops/color_stop_thumb.js +19 -6
  45. package/lib/components/color_picker/color_stops/color_stop_thumb.styles.js +69 -0
  46. package/lib/components/color_picker/color_stops/color_stops.js +25 -14
  47. package/lib/components/color_picker/color_stops/color_stops.styles.js +73 -0
  48. package/lib/components/date_picker/super_date_picker/super_date_picker.js +9 -0
  49. package/lib/components/date_picker/super_date_picker/super_update_button.js +8 -0
  50. package/lib/components/form/range/range_highlight.styles.js +1 -1
  51. package/lib/components/form/range/range_levels.styles.js +1 -1
  52. package/lib/components/form/range/range_track.js +6 -2
  53. package/lib/components/image/image.a11y.js +61 -0
  54. package/lib/components/image/image.js +9 -2
  55. package/lib/components/image/image_fullscreen_wrapper.js +3 -1
  56. package/lib/components/image/image_wrapper.js +3 -1
  57. package/lib/components/key_pad_menu/key_pad_menu.a11y.js +163 -0
  58. package/lib/components/markdown_editor/markdown_format.styles.js +1 -4
  59. package/lib/components/popover/popover.js +2 -2
  60. package/lib/components/table/table_footer_cell.js +1 -1
  61. package/lib/components/table/table_header_cell.js +1 -1
  62. package/lib/components/table/table_row_cell.js +2 -2
  63. package/lib/components/text/text.styles.js +5 -2
  64. package/lib/components/tool_tip/icon_tip.js +8 -0
  65. package/lib/components/tool_tip/tool_tip.js +24 -1
  66. package/lib/components/tour/tour.styles.js +1 -1
  67. package/lib/services/color/manipulation.js +14 -2
  68. package/lib/services/index.js +65 -58
  69. package/optimize/es/components/accordion/accordion.js +1 -1
  70. package/optimize/es/components/basic_table/table.a11y.js +128 -0
  71. package/optimize/es/components/color_picker/color_picker.styles.js +16 -0
  72. package/optimize/es/components/color_picker/color_stops/color_stop_thumb.js +19 -7
  73. package/optimize/es/components/color_picker/color_stops/color_stop_thumb.styles.js +59 -0
  74. package/optimize/es/components/color_picker/color_stops/color_stops.js +25 -15
  75. package/optimize/es/components/color_picker/color_stops/color_stops.styles.js +65 -0
  76. package/optimize/es/components/form/range/range_highlight.styles.js +1 -1
  77. package/optimize/es/components/form/range/range_levels.styles.js +1 -1
  78. package/optimize/es/components/form/range/range_track.js +5 -2
  79. package/optimize/es/components/image/image.a11y.js +55 -0
  80. package/optimize/es/components/image/image.js +4 -2
  81. package/optimize/es/components/image/image_fullscreen_wrapper.js +3 -1
  82. package/optimize/es/components/image/image_wrapper.js +3 -1
  83. package/optimize/es/components/key_pad_menu/key_pad_menu.a11y.js +148 -0
  84. package/optimize/es/components/markdown_editor/markdown_format.styles.js +2 -5
  85. package/optimize/es/components/popover/popover.js +2 -2
  86. package/optimize/es/components/text/text.styles.js +6 -3
  87. package/optimize/es/components/tool_tip/tool_tip.js +16 -1
  88. package/optimize/es/components/tour/tour.styles.js +1 -1
  89. package/optimize/es/services/color/manipulation.js +9 -0
  90. package/optimize/es/services/index.js +11 -11
  91. package/optimize/lib/components/accordion/accordion.js +1 -1
  92. package/optimize/lib/components/basic_table/table.a11y.js +139 -0
  93. package/optimize/lib/components/color_picker/color_picker.styles.js +26 -0
  94. package/optimize/lib/components/color_picker/color_stops/color_stop_thumb.js +19 -6
  95. package/optimize/lib/components/color_picker/color_stops/color_stop_thumb.styles.js +69 -0
  96. package/optimize/lib/components/color_picker/color_stops/color_stops.js +25 -14
  97. package/optimize/lib/components/color_picker/color_stops/color_stops.styles.js +73 -0
  98. package/optimize/lib/components/form/range/range_highlight.styles.js +1 -1
  99. package/optimize/lib/components/form/range/range_levels.styles.js +1 -1
  100. package/optimize/lib/components/form/range/range_track.js +6 -2
  101. package/optimize/lib/components/image/image.a11y.js +61 -0
  102. package/optimize/lib/components/image/image.js +4 -2
  103. package/optimize/lib/components/image/image_fullscreen_wrapper.js +3 -1
  104. package/optimize/lib/components/image/image_wrapper.js +3 -1
  105. package/optimize/lib/components/key_pad_menu/key_pad_menu.a11y.js +163 -0
  106. package/optimize/lib/components/markdown_editor/markdown_format.styles.js +1 -4
  107. package/optimize/lib/components/popover/popover.js +2 -2
  108. package/optimize/lib/components/text/text.styles.js +5 -2
  109. package/optimize/lib/components/tool_tip/tool_tip.js +16 -1
  110. package/optimize/lib/components/tour/tour.styles.js +1 -1
  111. package/optimize/lib/services/color/manipulation.js +14 -2
  112. package/optimize/lib/services/index.js +65 -58
  113. package/package.json +2 -2
  114. package/src/components/color_picker/_index.scss +0 -1
  115. package/src/components/markdown_editor/_markdown_format.scss +0 -4
  116. package/src/themes/amsterdam/overrides/_index.scss +0 -1
  117. package/test-env/components/accordion/accordion.js +1 -1
  118. package/test-env/components/basic_table/basic_table.js +2 -2
  119. package/test-env/components/basic_table/in_memory_table.js +3 -6
  120. package/test-env/components/basic_table/table.a11y.js +139 -0
  121. package/test-env/components/color_picker/color_picker.styles.js +26 -0
  122. package/test-env/components/color_picker/color_stops/color_stop_thumb.js +19 -6
  123. package/test-env/components/color_picker/color_stops/color_stop_thumb.styles.js +69 -0
  124. package/test-env/components/color_picker/color_stops/color_stops.js +25 -14
  125. package/test-env/components/color_picker/color_stops/color_stops.styles.js +73 -0
  126. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +9 -0
  127. package/test-env/components/date_picker/super_date_picker/super_update_button.js +8 -0
  128. package/test-env/components/form/range/range_highlight.styles.js +1 -1
  129. package/test-env/components/form/range/range_levels.styles.js +1 -1
  130. package/test-env/components/form/range/range_track.js +6 -2
  131. package/test-env/components/image/image.a11y.js +61 -0
  132. package/test-env/components/image/image.js +9 -2
  133. package/test-env/components/image/image_fullscreen_wrapper.js +3 -1
  134. package/test-env/components/image/image_wrapper.js +3 -1
  135. package/test-env/components/key_pad_menu/key_pad_menu.a11y.js +163 -0
  136. package/test-env/components/markdown_editor/markdown_format.styles.js +1 -4
  137. package/test-env/components/popover/popover.js +2 -2
  138. package/test-env/components/table/table_footer_cell.js +1 -1
  139. package/test-env/components/table/table_header_cell.js +1 -1
  140. package/test-env/components/table/table_row_cell.js +2 -2
  141. package/test-env/components/text/text.styles.js +5 -2
  142. package/test-env/components/tool_tip/icon_tip.js +8 -0
  143. package/test-env/components/tool_tip/tool_tip.js +24 -1
  144. package/test-env/components/tour/tour.styles.js +1 -1
  145. package/test-env/services/color/manipulation.js +14 -2
  146. package/test-env/services/index.js +65 -58
  147. package/src/components/color_picker/color_stops/_color_stops.scss +0 -101
  148. package/src/components/color_picker/color_stops/_index.scss +0 -1
  149. package/src/themes/amsterdam/overrides/_color_stops.scss +0 -58
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _in_memory_table = require("./in_memory_table");
8
+
9
+ var _health = require("../health");
10
+
11
+ var _link = require("../link");
12
+
13
+ var _services = require("../../services");
14
+
15
+ var _data_store = require("../../../src-docs/src/views/tables/data_store");
16
+
17
+ var _react2 = require("@emotion/react");
18
+
19
+ /*
20
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
21
+ * or more contributor license agreements. Licensed under the Elastic License
22
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
23
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
24
+ * Side Public License, v 1.
25
+ */
26
+ /// <reference types="../../../cypress/support"/>
27
+ var store = (0, _data_store.createDataStore)();
28
+
29
+ var InMemoryTable = function InMemoryTable() {
30
+ var columns = [{
31
+ field: 'firstName',
32
+ name: 'First Name',
33
+ sortable: true,
34
+ truncateText: true
35
+ }, {
36
+ field: 'lastName',
37
+ name: 'Last Name',
38
+ truncateText: true
39
+ }, {
40
+ field: 'github',
41
+ name: 'Github',
42
+ render: function render(username) {
43
+ return (0, _react2.jsx)(_link.EuiLink, {
44
+ href: "https://github.com/".concat(username),
45
+ target: "_blank"
46
+ }, username);
47
+ }
48
+ }, {
49
+ field: 'dateOfBirth',
50
+ name: 'Date of Birth',
51
+ dataType: 'date',
52
+ render: function render(date) {
53
+ return (0, _services.formatDate)(date, 'dobLong');
54
+ },
55
+ sortable: true
56
+ }, {
57
+ field: 'nationality',
58
+ name: 'Nationality',
59
+ render: function render(countryCode) {
60
+ var country = store.getCountry(countryCode);
61
+ return "".concat(country.flag, " ").concat(country.name);
62
+ }
63
+ }, {
64
+ field: 'online',
65
+ name: 'Online',
66
+ dataType: 'boolean',
67
+ render: function render(online) {
68
+ var color = online ? 'success' : 'danger';
69
+ var label = online ? 'Online' : 'Offline';
70
+ return (0, _react2.jsx)(_health.EuiHealth, {
71
+ color: color
72
+ }, label);
73
+ },
74
+ sortable: true
75
+ }];
76
+ var sorting = {
77
+ sort: {
78
+ field: 'dateOfBirth',
79
+ direction: 'desc'
80
+ }
81
+ };
82
+ return (0, _react2.jsx)(_in_memory_table.EuiInMemoryTable, {
83
+ "data-test-subj": "cy-in-memory-table",
84
+ tableCaption: "Demo of EuiInMemoryTable",
85
+ items: store.users,
86
+ columns: columns,
87
+ pagination: true,
88
+ sorting: sorting
89
+ });
90
+ };
91
+
92
+ beforeEach(function () {
93
+ cy.viewport(1024, 768); // medium breakpoint
94
+
95
+ cy.realMount((0, _react2.jsx)(InMemoryTable, null));
96
+ cy.get('div[data-test-subj="cy-in-memory-table"]').should('exist');
97
+ });
98
+ describe('EuiInMemoryTable', function () {
99
+ describe('Automated accessibility check', function () {
100
+ it('has zero violations on first render', function () {
101
+ cy.checkAxe();
102
+ });
103
+ it('has zero violations on pagination click', function () {
104
+ cy.get('a[data-test-subj="pagination-button-1"]').realClick();
105
+ cy.get('button[data-test-subj="pagination-button-1"]').should('be.disabled');
106
+ cy.checkAxe();
107
+ });
108
+ it('has zero violations after number of rows is increased', function () {
109
+ cy.get('button[data-test-subj="tablePaginationPopoverButton"]').realClick();
110
+ cy.get('div[data-popover-open="true"]').should('exist');
111
+ cy.get('button[data-test-subj="tablePagination-25-rows"]').realClick();
112
+ cy.get('table.euiTable').find('tr.euiTableRow').should('have.length', 20);
113
+ cy.checkAxe();
114
+ });
115
+ it('has zero violations after sorting on a column', function () {
116
+ cy.realPress('Tab');
117
+ cy.get('button[data-test-subj="tableHeaderSortButton"]').first().should('have.focus');
118
+ cy.realPress('Enter');
119
+ cy.get('tbody tr.euiTableRow span.euiTableCellContent__text').first().contains('Another very long first name which will wrap or be truncated');
120
+ });
121
+ it('has zero violations when number of rows is increased by keyboard', function () {
122
+ cy.repeatRealPress('Tab', 14);
123
+ cy.get('button[data-test-subj="tablePaginationPopoverButton"]').should('have.focus').realPress('Space');
124
+ cy.get('div[data-popover-open="true"]').should('exist');
125
+ cy.get('div[data-popover-open="true"]').should('have.focus');
126
+ cy.repeatRealPress('Tab'); // Switched to Tab from ArrowDown because of flaky test runs
127
+
128
+ cy.get('button[data-test-subj="tablePagination-25-rows"]').realPress('Space');
129
+ cy.get('table.euiTable').find('tr.euiTableRow').should('have.length', 20);
130
+ cy.checkAxe();
131
+ });
132
+ it('has zero violations when pagination is pressed', function () {
133
+ cy.repeatRealPress('Tab', 15);
134
+ cy.get('a[data-test-subj="pagination-button-1"]').should('have.focus').realPress('Enter');
135
+ cy.get('button[data-test-subj="pagination-button-1"]').should('be.disabled');
136
+ cy.checkAxe();
137
+ });
138
+ });
139
+ });
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.euiColorPickerVariables = void 0;
7
+
8
+ var _global_styling = require("../../global_styling");
9
+
10
+ /*
11
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
12
+ * or more contributor license agreements. Licensed under the Elastic License
13
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
14
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
15
+ * Side Public License, v 1.
16
+ */
17
+ var euiColorPickerVariables = function euiColorPickerVariables(euiThemeContext) {
18
+ var euiTheme = euiThemeContext.euiTheme;
19
+ return {
20
+ width: (0, _global_styling.mathWithUnits)([euiTheme.size.l, euiTheme.size.s], function (x, y) {
21
+ return x * 5 + y * 4;
22
+ })
23
+ };
24
+ };
25
+
26
+ exports.euiColorPickerVariables = euiColorPickerVariables;
@@ -47,6 +47,8 @@ var _spacer = require("../../spacer");
47
47
 
48
48
  var _range_thumb = require("../../form/range/range_thumb");
49
49
 
50
+ var _color_stop_thumb = require("./color_stop_thumb.styles");
51
+
50
52
  var _react2 = require("@emotion/react");
51
53
 
52
54
  var _excluded = ["className", "stop", "color", "onChange", "onFocus", "onRemove", "globalMin", "globalMax", "localMin", "localMax", "min", "max", "isRangeMin", "isRangeMax", "parentRef", "colorPickerMode", "colorPickerShowAlpha", "colorPickerSwatches", "disabled", "readOnly", "isPopoverOpen", "openPopover", "closePopover", "data-index", "aria-valuetext", "style", "valueInputProps"];
@@ -264,13 +266,20 @@ var EuiColorStopThumb = function EuiColorStopThumb(_ref) {
264
266
  }
265
267
  };
266
268
 
267
- var classes = (0, _classnames.default)('euiColorStopPopover', {
268
- 'euiColorStopPopover-hasFocus': hasFocus || isPopoverOpen
269
- }, className);
270
- return (0, _react2.jsx)(_popover.EuiPopover, (0, _extends2.default)({}, rest, {
269
+ var euiTheme = (0, _services.useEuiTheme)();
270
+ var popoverStyles = (0, _color_stop_thumb.euiColorStopThumbPopoverStyles)(euiTheme);
271
+ var cssPopoverStyles = [popoverStyles.euiColorStopThumbPopover, (hasFocus || isPopoverOpen) && popoverStyles.hasFocus];
272
+ var thumbStyles = (0, _color_stop_thumb.euiColorStopThumbStyles)(euiTheme);
273
+ var cssThumbStyles = [thumbStyles.euiColorStopThumb, isPopoverOpen && thumbStyles.isPopoverOpen];
274
+ var colorStopStyles = (0, _color_stop_thumb.euiColorStopStyles)(euiTheme);
275
+ var cssColorStopStyles = colorStopStyles.euiColorStop;
276
+ var classes = (0, _classnames.default)('euiColorStopPopover', className);
277
+ return (0, _react2.jsx)(_popover.EuiPopover, (0, _extends2.default)({
278
+ css: cssPopoverStyles
279
+ }, rest, {
271
280
  ref: popoverRef,
272
281
  className: classes,
273
- anchorClassName: "euiColorStopPopover__anchor",
282
+ anchorClassName: "euiColorStopThumbPopover__anchor",
274
283
  panelPaddingSize: "s",
275
284
  isOpen: isPopoverOpen,
276
285
  closePopover: closePopover,
@@ -278,7 +287,9 @@ var EuiColorStopThumb = function EuiColorStopThumb(_ref) {
278
287
  focusTrapProps: {
279
288
  clickOutsideDisables: false
280
289
  },
281
- panelClassName: numberInputRef ? undefined : 'euiColorStopPopover-isLoadingPanel',
290
+ panelProps: {
291
+ css: numberInputRef ? undefined : popoverStyles.isLoadingPanel
292
+ },
282
293
  style: _objectSpread(_objectSpread({}, style), {}, {
283
294
  left: "".concat(getPositionFromStopFn(stop), "%")
284
295
  }),
@@ -310,6 +321,7 @@ var EuiColorStopThumb = function EuiColorStopThumb(_ref) {
310
321
  "aria-label": ariaLabel,
311
322
  title: title,
312
323
  className: "euiColorStopThumb",
324
+ css: cssThumbStyles,
313
325
  tabIndex: -1,
314
326
  style: {
315
327
  background: background
@@ -319,6 +331,7 @@ var EuiColorStopThumb = function EuiColorStopThumb(_ref) {
319
331
  })
320
332
  }), (0, _react2.jsx)("div", {
321
333
  className: "euiColorStop",
334
+ css: cssColorStopStyles,
322
335
  "data-test-subj": "euiColorStopPopover"
323
336
  }, (0, _react2.jsx)(_accessibility.EuiScreenReaderOnly, null, (0, _react2.jsx)("p", {
324
337
  "aria-live": "polite"
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.euiColorStopThumbStyles = exports.euiColorStopThumbPopoverStyles = exports.euiColorStopStyles = void 0;
7
+
8
+ var _react = require("@emotion/react");
9
+
10
+ var _global_styling = require("../../../global_styling");
11
+
12
+ var _range = require("../../form/range/range.styles");
13
+
14
+ var _color_picker = require("../color_picker.styles");
15
+
16
+ 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)."; }
17
+
18
+ var _ref2 = process.env.NODE_ENV === "production" ? {
19
+ name: "zrzkfg-euiColorStopThumb",
20
+ styles: "&:not(:disabled){inset-block-start:0;margin-block-start:0;pointer-events:auto;cursor:grab;&:active{cursor:grabbing;}};label:euiColorStopThumb;"
21
+ } : {
22
+ name: "zrzkfg-euiColorStopThumb",
23
+ styles: "&:not(:disabled){inset-block-start:0;margin-block-start:0;pointer-events:auto;cursor:grab;&:active{cursor:grabbing;}};label:euiColorStopThumb;",
24
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
25
+ };
26
+
27
+ var euiColorStopThumbStyles = function euiColorStopThumbStyles(euiThemeContext) {
28
+ return {
29
+ // Base
30
+ euiColorStopThumb: _ref2,
31
+ isPopoverOpen: /*#__PURE__*/(0, _react.css)((0, _range.euiRangeThumbFocus)(euiThemeContext), ";;label:isPopoverOpen;")
32
+ };
33
+ };
34
+
35
+ exports.euiColorStopThumbStyles = euiColorStopThumbStyles;
36
+
37
+ var _ref = process.env.NODE_ENV === "production" ? {
38
+ name: "1wndm4s-isLoadingPanel",
39
+ styles: "visibility:hidden!important;label:isLoadingPanel;"
40
+ } : {
41
+ name: "1wndm4s-isLoadingPanel",
42
+ styles: "visibility:hidden!important;label:isLoadingPanel;",
43
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
44
+ };
45
+
46
+ var euiColorStopThumbPopoverStyles = function euiColorStopThumbPopoverStyles(euiThemeContext) {
47
+ var range = (0, _range.euiRangeVariables)(euiThemeContext);
48
+ var euiTheme = euiThemeContext.euiTheme;
49
+ return {
50
+ // Base
51
+ euiColorStopThumbPopover: /*#__PURE__*/(0, _react.css)("position:absolute;inset-block-start:50%;inline-size:", range.thumbWidth, ";block-size:", range.thumbHeight, ";margin-block-start:", (0, _global_styling.mathWithUnits)(range.thumbHeight, function (x) {
52
+ return x * -0.5;
53
+ }), ";.euiColorStopThumbPopover__anchor{position:absolute;inline-size:100%;block-size:100%;&::before{content:'';display:block;position:absolute;inset-inline-start:0;inset-block-start:0;block-size:", range.thumbHeight, ";inline-size:", range.thumbWidth, ";border-radius:", range.thumbHeight, ";background:", euiTheme.colors.emptyShade, ";}};label:euiColorStopThumbPopover;"),
54
+ isLoadingPanel: _ref,
55
+ hasFocus: /*#__PURE__*/(0, _react.css)("z-index:", range.thumbZIndex, ";;label:hasFocus;")
56
+ };
57
+ };
58
+
59
+ exports.euiColorStopThumbPopoverStyles = euiColorStopThumbPopoverStyles;
60
+
61
+ var euiColorStopStyles = function euiColorStopStyles(euiThemeContext) {
62
+ var colorPicker = (0, _color_picker.euiColorPickerVariables)(euiThemeContext);
63
+ return {
64
+ // Base
65
+ euiColorStop: /*#__PURE__*/(0, _react.css)("inline-size:", colorPicker.width, ";;label:euiColorStop;")
66
+ };
67
+ };
68
+
69
+ exports.euiColorStopStyles = euiColorStopStyles;
@@ -43,6 +43,8 @@ var _range_track = require("../../form/range/range_track");
43
43
 
44
44
  var _range_wrapper = require("../../form/range/range_wrapper");
45
45
 
46
+ var _color_stops = require("./color_stops.styles");
47
+
46
48
  var _react2 = require("@emotion/react");
47
49
 
48
50
  var _excluded = ["addColor", "max", "min", "mode", "colorStops", "onChange", "disabled", "readOnly", "compressed", "fullWidth", "className", "label", "stopType", "stepNumber", "swatches", "showAlpha", "valueInputProps"];
@@ -191,11 +193,16 @@ var EuiColorStops = function EuiColorStops(_ref) {
191
193
  setFocusStopOnUpdate = _useState14[1];
192
194
 
193
195
  var isNotInteractive = disabled || readOnly;
194
- var classes = (0, _classnames.default)('euiColorStops', {
195
- 'euiColorStops-isDragging': isHoverDisabled,
196
- 'euiColorStops-isDisabled': disabled,
197
- 'euiColorStops-isReadOnly': readOnly
198
- }, className);
196
+ var isDragging = isHoverDisabled && !isNotInteractive;
197
+ var addContainerIsDisabled = isHoverDisabled || isNotInteractive;
198
+ var classes = (0, _classnames.default)('euiColorStops', className);
199
+ var euiTheme = (0, _services.useEuiTheme)();
200
+ var styles = (0, _color_stops.euiColorStopsStyles)(euiTheme);
201
+ var cssPopoverStyles = [styles.euiColorStops, !disabled ? styles.isEnabled : styles.isDisabled, readOnly && styles.isReadOnly, isDragging && styles.isDragging];
202
+ var cssTrackStyles = [styles.euiColorStops__track];
203
+ var cssAddTargetStyles = [styles.euiColorStops__addTarget];
204
+ var addContainerStyles = (0, _color_stops.euiColorStopsAddContainerStyles)(euiTheme);
205
+ var cssAddContainerStyles = [addContainerStyles.euiColorStopsAddContainer, !addContainerIsDisabled ? addContainerStyles.isEnabled : addContainerStyles.isDisabled];
199
206
 
200
207
  var getStopFromMouseLocationFn = function getStopFromMouseLocationFn(location) {
201
208
  // Guard against `null` ref in usage
@@ -395,7 +402,7 @@ var EuiColorStops = function EuiColorStops(_ref) {
395
402
  disabled: disabled,
396
403
  readOnly: readOnly,
397
404
  "aria-valuetext": "Stop: ".concat(colorStop.stop, ", Color: ").concat(colorStop.color, " (").concat(index + 1, " of ").concat(colorStops.length, ")"),
398
- isPopoverOpen: colorStop.id === openedStopId,
405
+ isPopoverOpen: !isDragging && colorStop.id === openedStopId,
399
406
  openPopover: function openPopover() {
400
407
  setOpenedStopId(colorStop.id);
401
408
  },
@@ -405,7 +412,7 @@ var EuiColorStops = function EuiColorStops(_ref) {
405
412
  valueInputProps: valueInputProps
406
413
  });
407
414
  });
408
- }, [colorStops, disabled, handleOnChange, max, min, mode, onRemove, openedStopId, rangeMax, rangeMin, readOnly, showAlpha, sortedStops, swatches, wrapperRef, valueInputProps]);
415
+ }, [colorStops, disabled, handleOnChange, isDragging, max, min, mode, onRemove, openedStopId, rangeMax, rangeMin, readOnly, showAlpha, sortedStops, swatches, wrapperRef, valueInputProps]);
409
416
  var positions = wrapperRef ? sortedStops.map(function (_ref3) {
410
417
  var stop = _ref3.stop;
411
418
  return getPositionFromStopFn(stop);
@@ -413,10 +420,10 @@ var EuiColorStops = function EuiColorStops(_ref) {
413
420
 
414
421
  var gradientStop = function gradientStop(colorStop, index) {
415
422
  var color = (0, _utils2.getChromaColor)(colorStop.color, showAlpha);
416
- var rgba = color ? color.css() : 'currentColor';
423
+ var rgba = color ? color.css() : 'transparent';
417
424
 
418
425
  if (index === 0) {
419
- return "currentColor, currentColor ".concat(positions[index], "%, ").concat(rgba, " ").concat(positions[index], "%");
426
+ return "transparent, transparent ".concat(positions[index], "%, ").concat(rgba, " ").concat(positions[index], "%");
420
427
  }
421
428
 
422
429
  return "".concat(rgba, " ").concat(positions[index], "%");
@@ -444,13 +451,15 @@ var EuiColorStops = function EuiColorStops(_ref) {
444
451
  percentageSteps = percentageSteps + percentage;
445
452
  });
446
453
  steppedGradient = steppedGradient.substring(0, steppedGradient.length - 2);
447
- gradient = "linear-gradient(to right, currentColor ".concat(trailingPercentage, "%, ").concat(steppedGradient, ")");
454
+ gradient = "linear-gradient(to right, transparent ".concat(trailingPercentage, "%, ").concat(steppedGradient, ")");
448
455
  } else {
449
456
  var linearGradient = sortedStops.map(stopType === 'gradient' ? gradientStop : fixedStop);
450
457
  gradient = "linear-gradient(to right,".concat(linearGradient, ")");
451
458
  }
452
459
 
453
- return (0, _react2.jsx)(_range_wrapper.EuiRangeWrapper, (0, _extends2.default)({}, rest, {
460
+ return (0, _react2.jsx)(_range_wrapper.EuiRangeWrapper, (0, _extends2.default)({
461
+ css: cssPopoverStyles
462
+ }, rest, {
454
463
  "data-test-subj": (0, _classnames.default)('euiColorStops', rest['data-test-subj']),
455
464
  ref: setWrapperRef,
456
465
  className: classes,
@@ -473,6 +482,8 @@ var EuiColorStops = function EuiColorStops(_ref) {
473
482
  token: "euiColorStops.screenReaderAnnouncement",
474
483
  default: "{label}: {readOnly} {disabled} Color stop picker. Each stop consists of a number and corresponding color value. Use the Down and Up arrow keys to select individual stops. Press the Enter key to create a new stop."
475
484
  }))), (0, _react2.jsx)(_range_track.EuiRangeTrack, {
485
+ className: "euiColorStops__track",
486
+ css: cssTrackStyles,
476
487
  min: min || rangeMin,
477
488
  max: max || rangeMax,
478
489
  compressed: compressed,
@@ -489,13 +500,13 @@ var EuiColorStops = function EuiColorStops(_ref) {
489
500
  trackWidth: trackWidth
490
501
  }), (0, _react2.jsx)("div", {
491
502
  "data-test-subj": "euiColorStopsAdd",
492
- className: (0, _classnames.default)('euiColorStops__addContainer', {
493
- 'euiColorStops__addContainer-isDisabled': isHoverDisabled || disabled || readOnly
494
- }),
503
+ className: "euiColorStops__addContainer",
504
+ css: cssAddContainerStyles,
495
505
  onClick: handleAddClick,
496
506
  onMouseMove: handleAddHover
497
507
  }, (0, _react2.jsx)("div", {
498
508
  className: "euiColorStops__addTarget",
509
+ css: cssAddTargetStyles,
499
510
  style: {
500
511
  left: "".concat(addTargetPosition, "%")
501
512
  }
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.euiColorStopsStyles = exports.euiColorStopsAddContainerStyles = void 0;
7
+
8
+ var _react = require("@emotion/react");
9
+
10
+ var _services = require("../../../services");
11
+
12
+ var _global_styling = require("../../../global_styling");
13
+
14
+ var _form = require("../../form/form.styles");
15
+
16
+ var _range = require("../../form/range/range.styles");
17
+
18
+ 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)."; }
19
+
20
+ var _ref2 = process.env.NODE_ENV === "production" ? {
21
+ name: "uu65b3-isDragging",
22
+ styles: "cursor:grabbing;label:isDragging;"
23
+ } : {
24
+ name: "uu65b3-isDragging",
25
+ styles: "cursor:grabbing;label:isDragging;",
26
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
27
+ };
28
+
29
+ var euiColorStopsStyles = function euiColorStopsStyles(euiThemeContext) {
30
+ var range = (0, _range.euiRangeVariables)(euiThemeContext);
31
+ var euiTheme = euiThemeContext.euiTheme,
32
+ colorMode = euiThemeContext.colorMode;
33
+ var isDarkMode = colorMode === 'DARK';
34
+ var stripeColor = isDarkMode ? (0, _services.brighten)(range.trackColor, 0.5) : (0, _services.darken)(range.trackColor, 0.5);
35
+ var stripesBackground = "repeating-linear-gradient(\n -45deg,\n ".concat(range.trackColor, ",\n ").concat(range.trackColor, " 25%,\n ").concat(stripeColor, " 25%,\n ").concat(stripeColor, " 50%,\n ").concat(range.trackColor, " 50%\n )");
36
+ return {
37
+ // Base
38
+ euiColorStops: /*#__PURE__*/(0, _react.css)(";label:euiColorStops;"),
39
+ isEnabled: /*#__PURE__*/(0, _react.css)("&:focus{outline:none;}&:focus-visible{.euiColorStops__track::after{box-shadow:0 0 0 1px rgba(", (0, _services.hexToRgb)(euiTheme.colors.emptyShade).join(', '), ", 0.8),0 0 0 3px ", range.focusColor, ";}};label:isEnabled;"),
40
+ isDisabled: /*#__PURE__*/(0, _react.css)(";label:isDisabled;"),
41
+ isHoverDisabled: /*#__PURE__*/(0, _react.css)(";label:isHoverDisabled;"),
42
+ isReadOnly: /*#__PURE__*/(0, _react.css)(";label:isReadOnly;"),
43
+ isDragging: _ref2,
44
+ euiColorStops__track: /*#__PURE__*/(0, _react.css)("&::after{background:", stripesBackground, ";background-size:", euiTheme.size.xs, " ", euiTheme.size.xs, ";};label:euiColorStops__track;"),
45
+ euiColorStops__addTarget: /*#__PURE__*/(0, _react.css)((0, _form.euiCustomControl)(euiThemeContext, {
46
+ type: 'round'
47
+ }), ";", (0, _range.euiRangeThumbStyle)(euiThemeContext), ";position:absolute;inset-block-start:0;block-size:", range.thumbHeight, ";inline-size:", range.thumbHeight, ";background-color:", euiTheme.colors.lightestShade, ";pointer-events:none;opacity:0;border:", euiTheme.border.width.thin, " solid ", euiTheme.colors.darkShade, ";box-shadow:none;z-index:", range.thumbZIndex, ";", _global_styling.euiCanAnimate, "{transition:opacity ", euiTheme.animation.fast, " ease-in;};label:euiColorStops__addTarget;")
48
+ };
49
+ };
50
+
51
+ exports.euiColorStopsStyles = euiColorStopsStyles;
52
+
53
+ var _ref = process.env.NODE_ENV === "production" ? {
54
+ name: "1173em8-isEnabled",
55
+ styles: "&:hover{cursor:pointer;.euiColorStops__addTarget{opacity:0.7;}};label:isEnabled;"
56
+ } : {
57
+ name: "1173em8-isEnabled",
58
+ styles: "&:hover{cursor:pointer;.euiColorStops__addTarget{opacity:0.7;}};label:isEnabled;",
59
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
60
+ };
61
+
62
+ var euiColorStopsAddContainerStyles = function euiColorStopsAddContainerStyles(euiThemeContext) {
63
+ var range = (0, _range.euiRangeVariables)(euiThemeContext);
64
+ return {
65
+ euiColorStopsAddContainer: /*#__PURE__*/(0, _react.css)("display:block;position:absolute;inset-inline-start:0;inset-inline-end:0;inset-block-start:50%;block-size:", range.thumbHeight, ";margin-block-start:", (0, _global_styling.mathWithUnits)(range.thumbHeight, function (x) {
66
+ return x * -0.5;
67
+ }), ";z-index:", range.thumbZIndex, ";;label:euiColorStopsAddContainer;"),
68
+ isEnabled: _ref,
69
+ isDisabled: /*#__PURE__*/(0, _react.css)(";label:isDisabled;")
70
+ };
71
+ };
72
+
73
+ exports.euiColorStopsAddContainerStyles = euiColorStopsAddContainerStyles;
@@ -688,6 +688,14 @@ EuiSuperDatePickerInternal.propTypes = {
688
688
  */
689
689
  position: _propTypes.default.oneOf(["top", "right", "bottom", "left"]).isRequired,
690
690
 
691
+ /**
692
+ * When `true`, the tooltip's position is re-calculated when the user
693
+ * scrolls. This supports having fixed-position tooltip anchors.
694
+ *
695
+ * When nesting an `EuiTooltip` in a scrollable container, `repositionOnScroll` should be `true`
696
+ */
697
+ repositionOnScroll: _propTypes.default.bool,
698
+
691
699
  /**
692
700
  * If supplied, called when mouse movement causes the tool tip to be
693
701
  * hidden.
@@ -859,6 +867,7 @@ EuiSuperDatePicker.propTypes = {
859
867
  title: _propTypes.default.node,
860
868
  id: _propTypes.default.string,
861
869
  position: _propTypes.default.oneOf(["top", "right", "bottom", "left"]).isRequired,
870
+ repositionOnScroll: _propTypes.default.bool,
862
871
  onMouseOut: _propTypes.default.func
863
872
  }),
864
873
  iconOnly: _propTypes.default.bool,
@@ -279,6 +279,14 @@ EuiSuperUpdateButton.propTypes = {
279
279
  */
280
280
  position: _propTypes.default.oneOf(["top", "right", "bottom", "left"]).isRequired,
281
281
 
282
+ /**
283
+ * When `true`, the tooltip's position is re-calculated when the user
284
+ * scrolls. This supports having fixed-position tooltip anchors.
285
+ *
286
+ * When nesting an `EuiTooltip` in a scrollable container, `repositionOnScroll` should be `true`
287
+ */
288
+ repositionOnScroll: _propTypes.default.bool,
289
+
282
290
  /**
283
291
  * If supplied, called when mouse movement causes the tool tip to be
284
292
  * hidden.
@@ -29,7 +29,7 @@ exports.euiRangeHighlightStyles = euiRangeHighlightStyles;
29
29
  var euiRangeHighlightProgressStyles = function euiRangeHighlightProgressStyles(euiThemeContext) {
30
30
  var range = (0, _range.euiRangeVariables)(euiThemeContext);
31
31
  return {
32
- euiRangeHighlight__progress: /*#__PURE__*/(0, _react.css)("block-size:", range.highlightHeight, ";border-radius:", range.trackBorderRadius, ";background-color:", range.highlightColor, ";border-color:", range.highlightColor, ";.euiRangeSlider:focus-visible~.euiRangeHighlight &,.euiRangeThumb:focus-visible~.euiRangeHighlight &,.euiRangeDraggable:focus~.euiRangeHighlight &{background-color:", range.focusColor, ";};label:euiRangeHighlight__progress;")
32
+ euiRangeHighlight__progress: /*#__PURE__*/(0, _react.css)("block-size:", range.highlightHeight, ";border-radius:", range.trackBorderRadius, ";background-color:", range.highlightColor, ";.euiRangeSlider:focus-visible~.euiRangeHighlight &,.euiRangeThumb:focus-visible~.euiRangeHighlight &,.euiRangeDraggable:focus~.euiRangeHighlight &{background-color:", range.focusColor, ";};label:euiRangeHighlight__progress;")
33
33
  };
34
34
  };
35
35
 
@@ -29,7 +29,7 @@ var euiRangeLevelsStyles = function euiRangeLevelsStyles(euiThemeContext) {
29
29
  var stripesBackground = "repeating-linear-gradient(\n -45deg,\n ".concat((0, _services.transparentize)(stripeColor, 0.5), ",\n ").concat((0, _services.transparentize)(stripeColor, 0.5), " 25%,\n ").concat((0, _services.transparentize)(stripeColor, 0.7), " 25%,\n ").concat((0, _services.transparentize)(stripeColor, 0.7), " 50%,\n ").concat((0, _services.transparentize)(stripeColor, 0.5), " 50%\n )");
30
30
  return {
31
31
  euiRangeLevels: /*#__PURE__*/(0, _react.css)("display:flex;justify-content:stretch;position:absolute;inset-inline:0;inset-block-start:", range.trackTopPositionWithoutTicks, ";z-index:", range.levelsZIndex, ";;label:euiRangeLevels;"),
32
- hasRange: /*#__PURE__*/(0, _react.css)("&::after{content:'';position:absolute;block-size:", range.trackHeight, ";inline-size:100%;background-image:", stripesBackground, ";background-size:", euiTheme.size.s, " ", euiTheme.size.s, ";border-radius:", range.trackBorderRadius, ";};label:hasRange;"),
32
+ hasRange: /*#__PURE__*/(0, _react.css)("&::after{content:'';position:absolute;block-size:", range.trackHeight, ";inline-size:100%;background-image:", stripesBackground, ";background-size:", euiTheme.size.xs, " ", euiTheme.size.xs, ";border-radius:", range.trackBorderRadius, ";};label:hasRange;"),
33
33
  hasTicks: /*#__PURE__*/(0, _react.css)("inset-block-start:", range.trackTopPositionWithTicks, ";;label:hasTicks;")
34
34
  };
35
35
  };
@@ -19,6 +19,8 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _propTypes = _interopRequireDefault(require("prop-types"));
21
21
 
22
+ var _classnames = _interopRequireDefault(require("classnames"));
23
+
22
24
  var _range = _interopRequireDefault(require("lodash/range"));
23
25
 
24
26
  var _services = require("../../../services");
@@ -31,7 +33,7 @@ var _range_track = require("./range_track.styles");
31
33
 
32
34
  var _react2 = require("@emotion/react");
33
35
 
34
- var _excluded = ["children", "disabled", "max", "min", "step", "showTicks", "tickInterval", "ticks", "levels", "onChange", "value", "compressed", "showRange"];
36
+ var _excluded = ["children", "disabled", "max", "min", "step", "showTicks", "tickInterval", "ticks", "levels", "onChange", "value", "compressed", "showRange", "className"];
35
37
 
36
38
  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); }
37
39
 
@@ -51,6 +53,7 @@ var EuiRangeTrack = function EuiRangeTrack(_ref) {
51
53
  value = _ref.value,
52
54
  compressed = _ref.compressed,
53
55
  showRange = _ref.showRange,
56
+ className = _ref.className,
54
57
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
55
58
  (0, _react.useEffect)(function () {
56
59
  validateValueIsInStep(max, {
@@ -109,8 +112,9 @@ var EuiRangeTrack = function EuiRangeTrack(_ref) {
109
112
  trackWidth = _useState2[0],
110
113
  setTrackWidth = _useState2[1];
111
114
 
115
+ var classes = (0, _classnames.default)('euiRangeTrack', className);
112
116
  return (0, _react2.jsx)("div", (0, _extends2.default)({
113
- className: "euiRangeTrack",
117
+ className: classes,
114
118
  css: cssStyles
115
119
  }, rest, {
116
120
  ref: function ref(node) {
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _image = require("./image");
8
+
9
+ var _react2 = require("@emotion/react");
10
+
11
+ /*
12
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
13
+ * or more contributor license agreements. Licensed under the Elastic License
14
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
15
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
16
+ * Side Public License, v 1.
17
+ */
18
+ /// <reference types="../../../cypress/support"/>
19
+ var Image = function Image() {
20
+ return (0, _react2.jsx)(_image.EuiImage, {
21
+ size: "m",
22
+ hasShadow: true,
23
+ allowFullScreen: true,
24
+ caption: "Albert Einstein, theoretical physicist",
25
+ alt: "" // Because this image is sufficiently described by its caption, there is no need to repeat it via alt text
26
+ ,
27
+ src: "https://upload.wikimedia.org/wikipedia/commons/d/d3/Albert_Einstein_Head.jpg"
28
+ });
29
+ };
30
+
31
+ beforeEach(function () {
32
+ cy.viewport(1024, 768); // medium breakpoint
33
+
34
+ cy.realMount((0, _react2.jsx)(Image, null));
35
+ cy.get('figure[aria-label="Albert Einstein, theoretical physicist"]').should('exist');
36
+ });
37
+ describe('EuiImage', function () {
38
+ describe('Automated accessibility check', function () {
39
+ it('has zero violations on first render', function () {
40
+ cy.checkAxe();
41
+ });
42
+ it('has zero violations on fullscreen render', function () {
43
+ cy.get('button[data-test-subj="activateFullScreenButton"]').realClick();
44
+ cy.get('button[data-test-subj="deactivateFullScreenButton"]').should('exist');
45
+ cy.checkAxe();
46
+ cy.get('div[data-test-subj="fullScreenOverlayMask"]').realClick();
47
+ cy.checkAxe();
48
+ });
49
+ it('has zero violations on keyboard interaction', function () {
50
+ cy.realPress('Tab');
51
+ cy.get('button[data-test-subj="activateFullScreenButton"]').should('have.focus');
52
+ cy.realPress('Enter');
53
+ cy.get('button[data-test-subj="deactivateFullScreenButton"]').should('exist');
54
+ cy.get('button[data-test-subj="deactivateFullScreenButton"]').should('have.focus');
55
+ cy.checkAxe();
56
+ cy.realPress('Escape');
57
+ cy.get('button[data-test-subj="activateFullScreenButton"]').should('have.focus');
58
+ cy.checkAxe();
59
+ });
60
+ });
61
+ });