@elastic/eui 72.0.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.
- package/dist/eui_charts_theme.js +13 -1
- package/dist/eui_charts_theme.js.map +1 -1
- package/dist/eui_theme_dark.css +0 -148
- package/dist/eui_theme_dark.min.css +1 -1
- package/dist/eui_theme_light.css +0 -148
- package/dist/eui_theme_light.min.css +1 -1
- package/es/components/basic_table/basic_table.js +2 -2
- package/es/components/basic_table/in_memory_table.js +3 -6
- package/es/components/basic_table/table.a11y.js +128 -0
- package/es/components/color_picker/color_picker.styles.js +16 -0
- package/es/components/color_picker/color_stops/color_stop_thumb.js +19 -7
- package/es/components/color_picker/color_stops/color_stop_thumb.styles.js +59 -0
- package/es/components/color_picker/color_stops/color_stops.js +25 -15
- package/es/components/color_picker/color_stops/color_stops.styles.js +65 -0
- package/es/components/form/range/range_highlight.styles.js +1 -1
- package/es/components/form/range/range_levels.styles.js +1 -1
- package/es/components/form/range/range_track.js +5 -2
- package/es/components/image/image.a11y.js +55 -0
- package/es/components/key_pad_menu/key_pad_menu.a11y.js +158 -0
- package/es/components/popover/popover.js +2 -2
- package/es/components/table/table_footer_cell.js +1 -1
- package/es/components/table/table_header_cell.js +1 -1
- package/es/components/table/table_row_cell.js +2 -2
- package/es/services/color/manipulation.js +9 -0
- package/es/services/index.js +11 -11
- package/eui.d.ts +154 -106
- package/i18ntokens.json +16 -16
- package/lib/components/basic_table/basic_table.js +2 -2
- package/lib/components/basic_table/in_memory_table.js +3 -6
- package/lib/components/basic_table/table.a11y.js +139 -0
- package/lib/components/color_picker/color_picker.styles.js +26 -0
- package/lib/components/color_picker/color_stops/color_stop_thumb.js +19 -6
- package/lib/components/color_picker/color_stops/color_stop_thumb.styles.js +69 -0
- package/lib/components/color_picker/color_stops/color_stops.js +25 -14
- package/lib/components/color_picker/color_stops/color_stops.styles.js +73 -0
- package/lib/components/form/range/range_highlight.styles.js +1 -1
- package/lib/components/form/range/range_levels.styles.js +1 -1
- package/lib/components/form/range/range_track.js +6 -2
- package/lib/components/image/image.a11y.js +61 -0
- package/lib/components/key_pad_menu/key_pad_menu.a11y.js +163 -0
- package/lib/components/popover/popover.js +2 -2
- package/lib/components/table/table_footer_cell.js +1 -1
- package/lib/components/table/table_header_cell.js +1 -1
- package/lib/components/table/table_row_cell.js +2 -2
- package/lib/services/color/manipulation.js +14 -2
- package/lib/services/index.js +65 -58
- package/optimize/es/components/basic_table/table.a11y.js +128 -0
- package/optimize/es/components/color_picker/color_picker.styles.js +16 -0
- package/optimize/es/components/color_picker/color_stops/color_stop_thumb.js +19 -7
- package/optimize/es/components/color_picker/color_stops/color_stop_thumb.styles.js +59 -0
- package/optimize/es/components/color_picker/color_stops/color_stops.js +25 -15
- package/optimize/es/components/color_picker/color_stops/color_stops.styles.js +65 -0
- package/optimize/es/components/form/range/range_highlight.styles.js +1 -1
- package/optimize/es/components/form/range/range_levels.styles.js +1 -1
- package/optimize/es/components/form/range/range_track.js +5 -2
- package/optimize/es/components/image/image.a11y.js +55 -0
- package/optimize/es/components/key_pad_menu/key_pad_menu.a11y.js +148 -0
- package/optimize/es/components/popover/popover.js +2 -2
- package/optimize/es/services/color/manipulation.js +9 -0
- package/optimize/es/services/index.js +11 -11
- package/optimize/lib/components/basic_table/table.a11y.js +139 -0
- package/optimize/lib/components/color_picker/color_picker.styles.js +26 -0
- package/optimize/lib/components/color_picker/color_stops/color_stop_thumb.js +19 -6
- package/optimize/lib/components/color_picker/color_stops/color_stop_thumb.styles.js +69 -0
- package/optimize/lib/components/color_picker/color_stops/color_stops.js +25 -14
- package/optimize/lib/components/color_picker/color_stops/color_stops.styles.js +73 -0
- package/optimize/lib/components/form/range/range_highlight.styles.js +1 -1
- package/optimize/lib/components/form/range/range_levels.styles.js +1 -1
- package/optimize/lib/components/form/range/range_track.js +6 -2
- package/optimize/lib/components/image/image.a11y.js +61 -0
- package/optimize/lib/components/key_pad_menu/key_pad_menu.a11y.js +163 -0
- package/optimize/lib/components/popover/popover.js +2 -2
- package/optimize/lib/services/color/manipulation.js +14 -2
- package/optimize/lib/services/index.js +65 -58
- package/package.json +1 -1
- package/src/components/color_picker/_index.scss +0 -1
- package/src/themes/amsterdam/overrides/_index.scss +0 -1
- package/test-env/components/basic_table/basic_table.js +2 -2
- package/test-env/components/basic_table/in_memory_table.js +3 -6
- package/test-env/components/basic_table/table.a11y.js +139 -0
- package/test-env/components/color_picker/color_picker.styles.js +26 -0
- package/test-env/components/color_picker/color_stops/color_stop_thumb.js +19 -6
- package/test-env/components/color_picker/color_stops/color_stop_thumb.styles.js +69 -0
- package/test-env/components/color_picker/color_stops/color_stops.js +25 -14
- package/test-env/components/color_picker/color_stops/color_stops.styles.js +73 -0
- package/test-env/components/form/range/range_highlight.styles.js +1 -1
- package/test-env/components/form/range/range_levels.styles.js +1 -1
- package/test-env/components/form/range/range_track.js +6 -2
- package/test-env/components/image/image.a11y.js +61 -0
- package/test-env/components/key_pad_menu/key_pad_menu.a11y.js +163 -0
- package/test-env/components/popover/popover.js +2 -2
- package/test-env/components/table/table_footer_cell.js +1 -1
- package/test-env/components/table/table_header_cell.js +1 -1
- package/test-env/components/table/table_row_cell.js +2 -2
- package/test-env/services/color/manipulation.js +14 -2
- package/test-env/services/index.js +65 -58
- package/src/components/color_picker/color_stops/_color_stops.scss +0 -101
- package/src/components/color_picker/color_stops/_index.scss +0 -1
- package/src/themes/amsterdam/overrides/_color_stops.scss +0 -58
|
@@ -11,6 +11,8 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
|
|
12
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
13
|
|
|
14
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
15
|
+
|
|
14
16
|
var _range = _interopRequireDefault(require("lodash/range"));
|
|
15
17
|
|
|
16
18
|
var _services = require("../../../services");
|
|
@@ -23,7 +25,7 @@ var _range_track = require("./range_track.styles");
|
|
|
23
25
|
|
|
24
26
|
var _react2 = require("@emotion/react");
|
|
25
27
|
|
|
26
|
-
var _excluded = ["children", "disabled", "max", "min", "step", "showTicks", "tickInterval", "ticks", "levels", "onChange", "value", "compressed", "showRange"];
|
|
28
|
+
var _excluded = ["children", "disabled", "max", "min", "step", "showTicks", "tickInterval", "ticks", "levels", "onChange", "value", "compressed", "showRange", "className"];
|
|
27
29
|
|
|
28
30
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
31
|
|
|
@@ -63,6 +65,7 @@ var EuiRangeTrack = function EuiRangeTrack(_ref) {
|
|
|
63
65
|
value = _ref.value,
|
|
64
66
|
compressed = _ref.compressed,
|
|
65
67
|
showRange = _ref.showRange,
|
|
68
|
+
className = _ref.className,
|
|
66
69
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
67
70
|
|
|
68
71
|
(0, _react.useEffect)(function () {
|
|
@@ -122,8 +125,9 @@ var EuiRangeTrack = function EuiRangeTrack(_ref) {
|
|
|
122
125
|
trackWidth = _useState2[0],
|
|
123
126
|
setTrackWidth = _useState2[1];
|
|
124
127
|
|
|
128
|
+
var classes = (0, _classnames.default)('euiRangeTrack', className);
|
|
125
129
|
return (0, _react2.jsx)("div", _extends({
|
|
126
|
-
className:
|
|
130
|
+
className: classes,
|
|
127
131
|
css: cssStyles
|
|
128
132
|
}, rest, {
|
|
129
133
|
ref: function ref(node) {
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _react = _interopRequireDefault(require("react"));
|
|
4
|
+
|
|
5
|
+
var _image = require("./image");
|
|
6
|
+
|
|
7
|
+
var _react2 = require("@emotion/react");
|
|
8
|
+
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
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
|
+
});
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
6
|
+
|
|
7
|
+
var _key_pad_menu = require("./key_pad_menu");
|
|
8
|
+
|
|
9
|
+
var _key_pad_menu_item = require("./key_pad_menu_item");
|
|
10
|
+
|
|
11
|
+
var _icon = require("../icon");
|
|
12
|
+
|
|
13
|
+
var _services = require("../../services");
|
|
14
|
+
|
|
15
|
+
var _react2 = require("@emotion/react");
|
|
16
|
+
|
|
17
|
+
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); }
|
|
18
|
+
|
|
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; }
|
|
20
|
+
|
|
21
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
22
|
+
|
|
23
|
+
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."); }
|
|
24
|
+
|
|
25
|
+
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); }
|
|
26
|
+
|
|
27
|
+
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; }
|
|
28
|
+
|
|
29
|
+
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; }
|
|
30
|
+
|
|
31
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
32
|
+
|
|
33
|
+
var KeyPadMenu = function KeyPadMenu() {
|
|
34
|
+
var keypadButtonId__1 = (0, _services.useGeneratedHtmlId)({
|
|
35
|
+
prefix: 'keypadButton',
|
|
36
|
+
suffix: 'first'
|
|
37
|
+
});
|
|
38
|
+
var keypadButtonId__2 = (0, _services.useGeneratedHtmlId)({
|
|
39
|
+
prefix: 'keypadButton',
|
|
40
|
+
suffix: 'second'
|
|
41
|
+
});
|
|
42
|
+
var keypadButtonId__3 = (0, _services.useGeneratedHtmlId)({
|
|
43
|
+
prefix: 'keypadButton',
|
|
44
|
+
suffix: 'third'
|
|
45
|
+
});
|
|
46
|
+
var keypadButtonId__4 = (0, _services.useGeneratedHtmlId)({
|
|
47
|
+
prefix: 'keypadButton',
|
|
48
|
+
suffix: 'fourth'
|
|
49
|
+
});
|
|
50
|
+
var keypadButtonId__5 = (0, _services.useGeneratedHtmlId)({
|
|
51
|
+
prefix: 'keypadButton',
|
|
52
|
+
suffix: 'fifth'
|
|
53
|
+
});
|
|
54
|
+
var keypadButtonId__6 = (0, _services.useGeneratedHtmlId)({
|
|
55
|
+
prefix: 'keypadButton',
|
|
56
|
+
suffix: 'sixth'
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
var _useState = (0, _react.useState)(keypadButtonId__6),
|
|
60
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
61
|
+
selectedID = _useState2[0],
|
|
62
|
+
setSelectedID = _useState2[1];
|
|
63
|
+
|
|
64
|
+
return (0, _react2.jsx)("div", {
|
|
65
|
+
"aria-label": "Menu keypad"
|
|
66
|
+
}, (0, _react2.jsx)(_key_pad_menu.EuiKeyPadMenu, null, (0, _react2.jsx)(_key_pad_menu_item.EuiKeyPadMenuItem, {
|
|
67
|
+
"data-test-subj": "cy-keypad-button-1",
|
|
68
|
+
id: keypadButtonId__1,
|
|
69
|
+
label: "Button 1",
|
|
70
|
+
isSelected: selectedID === keypadButtonId__1,
|
|
71
|
+
onClick: function onClick() {
|
|
72
|
+
return setSelectedID(keypadButtonId__1);
|
|
73
|
+
}
|
|
74
|
+
}, (0, _react2.jsx)(_icon.EuiIcon, {
|
|
75
|
+
type: "grid",
|
|
76
|
+
size: "l"
|
|
77
|
+
})), (0, _react2.jsx)(_key_pad_menu_item.EuiKeyPadMenuItem, {
|
|
78
|
+
"data-test-subj": "cy-keypad-button-2",
|
|
79
|
+
id: keypadButtonId__2,
|
|
80
|
+
label: "Button 2",
|
|
81
|
+
isSelected: selectedID === keypadButtonId__2,
|
|
82
|
+
onClick: function onClick() {
|
|
83
|
+
return setSelectedID(keypadButtonId__2);
|
|
84
|
+
}
|
|
85
|
+
}, (0, _react2.jsx)(_icon.EuiIcon, {
|
|
86
|
+
type: "grid",
|
|
87
|
+
size: "l"
|
|
88
|
+
})), (0, _react2.jsx)(_key_pad_menu_item.EuiKeyPadMenuItem, {
|
|
89
|
+
"data-test-subj": "cy-keypad-button-3",
|
|
90
|
+
id: keypadButtonId__3,
|
|
91
|
+
label: "Button 3",
|
|
92
|
+
isSelected: selectedID === keypadButtonId__3,
|
|
93
|
+
onClick: function onClick() {
|
|
94
|
+
return setSelectedID(keypadButtonId__3);
|
|
95
|
+
}
|
|
96
|
+
}, (0, _react2.jsx)(_icon.EuiIcon, {
|
|
97
|
+
type: "grid",
|
|
98
|
+
size: "l"
|
|
99
|
+
})), (0, _react2.jsx)(_key_pad_menu_item.EuiKeyPadMenuItem, {
|
|
100
|
+
"data-test-subj": "cy-keypad-link-1",
|
|
101
|
+
id: keypadButtonId__4,
|
|
102
|
+
label: "Link 1",
|
|
103
|
+
href: "#/navigation/key-pad-menu",
|
|
104
|
+
isSelected: selectedID === keypadButtonId__4,
|
|
105
|
+
onClick: function onClick() {
|
|
106
|
+
return setSelectedID(keypadButtonId__4);
|
|
107
|
+
}
|
|
108
|
+
}, (0, _react2.jsx)(_icon.EuiIcon, {
|
|
109
|
+
type: "link",
|
|
110
|
+
size: "l"
|
|
111
|
+
})), (0, _react2.jsx)(_key_pad_menu_item.EuiKeyPadMenuItem, {
|
|
112
|
+
"data-test-subj": "cy-keypad-link-2",
|
|
113
|
+
id: keypadButtonId__5,
|
|
114
|
+
label: "Link 2",
|
|
115
|
+
href: "#/navigation/key-pad-menu",
|
|
116
|
+
isSelected: selectedID === keypadButtonId__5,
|
|
117
|
+
onClick: function onClick() {
|
|
118
|
+
return setSelectedID(keypadButtonId__5);
|
|
119
|
+
}
|
|
120
|
+
}, (0, _react2.jsx)(_icon.EuiIcon, {
|
|
121
|
+
type: "link",
|
|
122
|
+
size: "l"
|
|
123
|
+
})), (0, _react2.jsx)(_key_pad_menu_item.EuiKeyPadMenuItem, {
|
|
124
|
+
"data-test-subj": "cy-keypad-link-3",
|
|
125
|
+
id: keypadButtonId__6,
|
|
126
|
+
label: "Disabled Link 3",
|
|
127
|
+
isDisabled: true,
|
|
128
|
+
isSelected: selectedID === keypadButtonId__6
|
|
129
|
+
}, (0, _react2.jsx)(_icon.EuiIcon, {
|
|
130
|
+
type: "link",
|
|
131
|
+
size: "l"
|
|
132
|
+
}))));
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
beforeEach(function () {
|
|
136
|
+
cy.realMount((0, _react2.jsx)(KeyPadMenu, null));
|
|
137
|
+
cy.get('div[aria-label="Menu keypad"]').should('exist');
|
|
138
|
+
});
|
|
139
|
+
describe('EuiKeyPadMenu', function () {
|
|
140
|
+
describe('Automated accessibility check', function () {
|
|
141
|
+
it('has zero violations on first render', function () {
|
|
142
|
+
cy.checkAxe();
|
|
143
|
+
});
|
|
144
|
+
it('has zero violations on item click', function () {
|
|
145
|
+
cy.get('a[data-test-subj="cy-keypad-link-2"]').realClick();
|
|
146
|
+
cy.get('a[data-test-subj="cy-keypad-link-2"]').should('have.class', 'euiKeyPadMenuItem-isSelected');
|
|
147
|
+
cy.checkAxe();
|
|
148
|
+
});
|
|
149
|
+
it('has zero violations on item keypress', function () {
|
|
150
|
+
cy.repeatRealPress('Tab', 3);
|
|
151
|
+
cy.get('button[data-test-subj="cy-keypad-button-3"]').should('have.focus');
|
|
152
|
+
cy.realPress('Space');
|
|
153
|
+
cy.get('button[data-test-subj="cy-keypad-button-3"]').should('have.class', 'euiKeyPadMenuItem-isSelected');
|
|
154
|
+
cy.checkAxe();
|
|
155
|
+
cy.realPress(['Shift', 'Tab']);
|
|
156
|
+
cy.get('button[data-test-subj="cy-keypad-button-2"]').should('have.focus');
|
|
157
|
+
cy.realPress('Space');
|
|
158
|
+
cy.get('button[data-test-subj="cy-keypad-button-2"]').should('have.class', 'euiKeyPadMenuItem-isSelected');
|
|
159
|
+
cy.get('button[data-test-subj="cy-keypad-button-3"]').should('not.have.class', 'euiKeyPadMenuItem-isSelected');
|
|
160
|
+
cy.checkAxe();
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
});
|
|
@@ -535,13 +535,13 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
|
|
|
535
535
|
panel = (0, _react.jsx)(_portal.EuiPortal, {
|
|
536
536
|
insert: insert
|
|
537
537
|
}, (0, _react.jsx)(_focus_trap.EuiFocusTrap, _extends({
|
|
538
|
-
clickOutsideDisables: true
|
|
538
|
+
clickOutsideDisables: true,
|
|
539
|
+
onClickOutside: this.onClickOutside
|
|
539
540
|
}, focusTrapProps, {
|
|
540
541
|
returnFocus: returnFocus // Ignore temporary state of indecisive focus
|
|
541
542
|
,
|
|
542
543
|
initialFocus: initialFocus,
|
|
543
544
|
onDeactivation: onTrapDeactivation,
|
|
544
|
-
onClickOutside: this.onClickOutside,
|
|
545
545
|
onEscapeKey: this.onEscapeKey,
|
|
546
546
|
disabled: !ownFocus || !this.state.isOpenStable || this.state.isClosing
|
|
547
547
|
}), (0, _react.jsx)(_popover_panel.EuiPopoverPanel, _extends({}, panelProps, {
|
|
@@ -58,6 +58,6 @@ EuiTableFooterCell.propTypes = {
|
|
|
58
58
|
"aria-label": _propTypes.default.string,
|
|
59
59
|
"data-test-subj": _propTypes.default.string,
|
|
60
60
|
css: _propTypes.default.any,
|
|
61
|
-
align: _propTypes.default.
|
|
61
|
+
align: _propTypes.default.any,
|
|
62
62
|
width: _propTypes.default.oneOfType([_propTypes.default.string.isRequired, _propTypes.default.number.isRequired])
|
|
63
63
|
};
|
|
@@ -151,7 +151,7 @@ EuiTableHeaderCell.propTypes = {
|
|
|
151
151
|
"aria-label": _propTypes.default.string,
|
|
152
152
|
"data-test-subj": _propTypes.default.string,
|
|
153
153
|
css: _propTypes.default.any,
|
|
154
|
-
align: _propTypes.default.
|
|
154
|
+
align: _propTypes.default.any,
|
|
155
155
|
isSortAscending: _propTypes.default.bool,
|
|
156
156
|
isSorted: _propTypes.default.bool,
|
|
157
157
|
|
|
@@ -211,7 +211,7 @@ EuiTableRowCell.propTypes = {
|
|
|
211
211
|
/**
|
|
212
212
|
* Horizontal alignment of the text in the cell
|
|
213
213
|
*/
|
|
214
|
-
align: _propTypes.default.
|
|
214
|
+
align: _propTypes.default.any,
|
|
215
215
|
|
|
216
216
|
/**
|
|
217
217
|
* _Should only be used for action cells_
|
|
@@ -233,7 +233,7 @@ EuiTableRowCell.propTypes = {
|
|
|
233
233
|
/**
|
|
234
234
|
* Horizontal alignment of the text in the cell
|
|
235
235
|
*/
|
|
236
|
-
align: _propTypes.default.
|
|
236
|
+
align: _propTypes.default.any,
|
|
237
237
|
|
|
238
238
|
/**
|
|
239
239
|
* _Should only be used for action cells_
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.transparentize = exports.tintOrShade = exports.tint = exports.shadeOrTint = exports.shade = exports.saturate = exports.lightness = exports.desaturate = exports.darken = void 0;
|
|
6
|
+
exports.transparentize = exports.tintOrShade = exports.tint = exports.shadeOrTint = exports.shade = exports.saturate = exports.lightness = exports.desaturate = exports.darken = exports.brighten = void 0;
|
|
7
7
|
|
|
8
8
|
var _chromaJs = _interopRequireDefault(require("chroma-js"));
|
|
9
9
|
|
|
@@ -134,5 +134,17 @@ exports.lightness = lightness;
|
|
|
134
134
|
var darken = function darken(color, amount) {
|
|
135
135
|
return (0, _chromaJs.default)(color).darken(amount).hex();
|
|
136
136
|
};
|
|
137
|
+
/**
|
|
138
|
+
* Returns the brighten value of a color. 0-100
|
|
139
|
+
* @param color - Color to manipulate
|
|
140
|
+
* @param amount - Amount to change in absolute terms. 0-1.
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
exports.darken = darken;
|
|
145
|
+
|
|
146
|
+
var brighten = function brighten(color, amount) {
|
|
147
|
+
return (0, _chromaJs.default)(color).brighten(amount).hex();
|
|
148
|
+
};
|
|
137
149
|
|
|
138
|
-
exports.
|
|
150
|
+
exports.brighten = brighten;
|
package/lib/services/index.js
CHANGED
|
@@ -12,83 +12,84 @@ var _exportNames = {
|
|
|
12
12
|
comboBoxKeys: true,
|
|
13
13
|
htmlIdGenerator: true,
|
|
14
14
|
useGeneratedHtmlId: true,
|
|
15
|
+
CENTER_ALIGNMENT: true,
|
|
15
16
|
LEFT_ALIGNMENT: true,
|
|
16
17
|
RIGHT_ALIGNMENT: true,
|
|
17
|
-
CENTER_ALIGNMENT: true,
|
|
18
|
-
useIsWithinBreakpoints: true,
|
|
19
|
-
useIsWithinMaxBreakpoint: true,
|
|
20
|
-
useIsWithinMinBreakpoint: true,
|
|
21
18
|
CurrentEuiBreakpointContext: true,
|
|
22
19
|
CurrentEuiBreakpointProvider: true,
|
|
23
20
|
useCurrentEuiBreakpoint: true,
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
useIsWithinBreakpoints: true,
|
|
22
|
+
useIsWithinMaxBreakpoint: true,
|
|
23
|
+
useIsWithinMinBreakpoint: true,
|
|
24
|
+
brighten: true,
|
|
26
25
|
calculateContrast: true,
|
|
27
26
|
calculateLuminance: true,
|
|
28
|
-
hexToHsv: true,
|
|
29
|
-
hexToRgb: true,
|
|
30
|
-
hsvToHex: true,
|
|
31
|
-
hsvToRgb: true,
|
|
32
|
-
rgbToHex: true,
|
|
33
|
-
rgbToHsv: true,
|
|
34
|
-
VISUALIZATION_COLORS: true,
|
|
35
|
-
DEFAULT_VISUALIZATION_COLOR: true,
|
|
36
27
|
colorPalette: true,
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
darken: true,
|
|
29
|
+
DEFAULT_VISUALIZATION_COLOR: true,
|
|
30
|
+
desaturate: true,
|
|
39
31
|
euiPaletteColorBlind: true,
|
|
40
32
|
euiPaletteColorBlindBehindText: true,
|
|
33
|
+
euiPaletteComplimentary: true,
|
|
34
|
+
euiPaletteCool: true,
|
|
35
|
+
euiPaletteForDarkBackground: true,
|
|
36
|
+
euiPaletteForLightBackground: true,
|
|
41
37
|
euiPaletteForStatus: true,
|
|
42
38
|
euiPaletteForTemperature: true,
|
|
43
|
-
|
|
39
|
+
euiPaletteGray: true,
|
|
44
40
|
euiPaletteNegative: true,
|
|
45
41
|
euiPalettePositive: true,
|
|
46
|
-
euiPaletteCool: true,
|
|
47
42
|
euiPaletteWarm: true,
|
|
48
|
-
euiPaletteGray: true,
|
|
49
43
|
getSteppedGradient: true,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
desaturate: true,
|
|
44
|
+
hexToHsv: true,
|
|
45
|
+
hexToRgb: true,
|
|
46
|
+
hsvToHex: true,
|
|
47
|
+
hsvToRgb: true,
|
|
48
|
+
isColorDark: true,
|
|
49
|
+
isValidHex: true,
|
|
57
50
|
lightness: true,
|
|
58
|
-
darken: true,
|
|
59
|
-
makeHighContrastColor: true,
|
|
60
51
|
makeDisabledContrastColor: true,
|
|
52
|
+
makeHighContrastColor: true,
|
|
53
|
+
rgbToHex: true,
|
|
54
|
+
rgbToHsv: true,
|
|
55
|
+
saturate: true,
|
|
56
|
+
shade: true,
|
|
57
|
+
shadeOrTint: true,
|
|
58
|
+
tint: true,
|
|
59
|
+
tintOrShade: true,
|
|
60
|
+
transparentize: true,
|
|
61
|
+
VISUALIZATION_COLORS: true,
|
|
61
62
|
wcagContrastMin: true,
|
|
62
63
|
useColorPickerState: true,
|
|
63
64
|
useColorStopsState: true,
|
|
64
65
|
copyToClipboard: true,
|
|
66
|
+
dateFormatAliases: true,
|
|
65
67
|
formatAuto: true,
|
|
66
68
|
formatBoolean: true,
|
|
67
69
|
formatDate: true,
|
|
68
70
|
formatNumber: true,
|
|
69
71
|
formatText: true,
|
|
70
|
-
dateFormatAliases: true,
|
|
71
72
|
isEvenlyDivisibleBy: true,
|
|
72
73
|
isWithinRange: true,
|
|
73
74
|
Pager: true,
|
|
75
|
+
calculatePopoverPosition: true,
|
|
76
|
+
findPopoverPosition: true,
|
|
74
77
|
Random: true,
|
|
75
78
|
getSecureRelForTarget: true,
|
|
76
|
-
|
|
77
|
-
toInitials: true,
|
|
78
|
-
slugify: true,
|
|
79
|
+
Comparators: true,
|
|
79
80
|
PropertySortType: true,
|
|
80
|
-
SortDirectionType: true,
|
|
81
|
-
SortDirection: true,
|
|
82
81
|
SortableProperties: true,
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
SortDirection: true,
|
|
83
|
+
SortDirectionType: true,
|
|
84
|
+
slugify: true,
|
|
85
|
+
toInitials: true,
|
|
86
|
+
toSentenceCase: true,
|
|
87
|
+
throttle: true,
|
|
86
88
|
getDurationAndPerformOnFrame: true,
|
|
87
89
|
getTransitionTimings: true,
|
|
88
90
|
getWaitDuration: true,
|
|
89
91
|
performOnFrame: true,
|
|
90
|
-
EuiWindowEvent: true
|
|
91
|
-
throttle: true
|
|
92
|
+
EuiWindowEvent: true
|
|
92
93
|
};
|
|
93
94
|
Object.defineProperty(exports, "CENTER_ALIGNMENT", {
|
|
94
95
|
enumerable: true,
|
|
@@ -186,6 +187,12 @@ Object.defineProperty(exports, "accessibleClickKeys", {
|
|
|
186
187
|
return _accessibility.accessibleClickKeys;
|
|
187
188
|
}
|
|
188
189
|
});
|
|
190
|
+
Object.defineProperty(exports, "brighten", {
|
|
191
|
+
enumerable: true,
|
|
192
|
+
get: function get() {
|
|
193
|
+
return _color.brighten;
|
|
194
|
+
}
|
|
195
|
+
});
|
|
189
196
|
Object.defineProperty(exports, "calculateContrast", {
|
|
190
197
|
enumerable: true,
|
|
191
198
|
get: function get() {
|
|
@@ -630,24 +637,6 @@ Object.keys(_findElement).forEach(function (key) {
|
|
|
630
637
|
|
|
631
638
|
var _format = require("./format");
|
|
632
639
|
|
|
633
|
-
var _number = require("./number");
|
|
634
|
-
|
|
635
|
-
var _paging = require("./paging");
|
|
636
|
-
|
|
637
|
-
var _random = require("./random");
|
|
638
|
-
|
|
639
|
-
var _security = require("./security");
|
|
640
|
-
|
|
641
|
-
var _string = require("./string");
|
|
642
|
-
|
|
643
|
-
var _sort = require("./sort");
|
|
644
|
-
|
|
645
|
-
var _popover = require("./popover");
|
|
646
|
-
|
|
647
|
-
var _transition = require("./transition");
|
|
648
|
-
|
|
649
|
-
var _window_event = require("./window_event");
|
|
650
|
-
|
|
651
640
|
var _hooks = require("./hooks");
|
|
652
641
|
|
|
653
642
|
Object.keys(_hooks).forEach(function (key) {
|
|
@@ -662,7 +651,19 @@ Object.keys(_hooks).forEach(function (key) {
|
|
|
662
651
|
});
|
|
663
652
|
});
|
|
664
653
|
|
|
665
|
-
var
|
|
654
|
+
var _number = require("./number");
|
|
655
|
+
|
|
656
|
+
var _paging = require("./paging");
|
|
657
|
+
|
|
658
|
+
var _popover = require("./popover");
|
|
659
|
+
|
|
660
|
+
var _random = require("./random");
|
|
661
|
+
|
|
662
|
+
var _security = require("./security");
|
|
663
|
+
|
|
664
|
+
var _sort = require("./sort");
|
|
665
|
+
|
|
666
|
+
var _string = require("./string");
|
|
666
667
|
|
|
667
668
|
var _theme = require("./theme");
|
|
668
669
|
|
|
@@ -678,6 +679,12 @@ Object.keys(_theme).forEach(function (key) {
|
|
|
678
679
|
});
|
|
679
680
|
});
|
|
680
681
|
|
|
682
|
+
var _throttle = require("./throttle");
|
|
683
|
+
|
|
684
|
+
var _transition = require("./transition");
|
|
685
|
+
|
|
686
|
+
var _window_event = require("./window_event");
|
|
687
|
+
|
|
681
688
|
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); }
|
|
682
689
|
|
|
683
690
|
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; }
|
|
@@ -0,0 +1,128 @@
|
|
|
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 { EuiInMemoryTable } from './in_memory_table';
|
|
11
|
+
import { EuiHealth } from '../health';
|
|
12
|
+
import { EuiLink } from '../link';
|
|
13
|
+
import { formatDate } from '../../services';
|
|
14
|
+
import { createDataStore } from '../../../src-docs/src/views/tables/data_store';
|
|
15
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
|
16
|
+
var store = createDataStore();
|
|
17
|
+
|
|
18
|
+
var InMemoryTable = function InMemoryTable() {
|
|
19
|
+
var columns = [{
|
|
20
|
+
field: 'firstName',
|
|
21
|
+
name: 'First Name',
|
|
22
|
+
sortable: true,
|
|
23
|
+
truncateText: true
|
|
24
|
+
}, {
|
|
25
|
+
field: 'lastName',
|
|
26
|
+
name: 'Last Name',
|
|
27
|
+
truncateText: true
|
|
28
|
+
}, {
|
|
29
|
+
field: 'github',
|
|
30
|
+
name: 'Github',
|
|
31
|
+
render: function render(username) {
|
|
32
|
+
return ___EmotionJSX(EuiLink, {
|
|
33
|
+
href: "https://github.com/".concat(username),
|
|
34
|
+
target: "_blank"
|
|
35
|
+
}, username);
|
|
36
|
+
}
|
|
37
|
+
}, {
|
|
38
|
+
field: 'dateOfBirth',
|
|
39
|
+
name: 'Date of Birth',
|
|
40
|
+
dataType: 'date',
|
|
41
|
+
render: function render(date) {
|
|
42
|
+
return formatDate(date, 'dobLong');
|
|
43
|
+
},
|
|
44
|
+
sortable: true
|
|
45
|
+
}, {
|
|
46
|
+
field: 'nationality',
|
|
47
|
+
name: 'Nationality',
|
|
48
|
+
render: function render(countryCode) {
|
|
49
|
+
var country = store.getCountry(countryCode);
|
|
50
|
+
return "".concat(country.flag, " ").concat(country.name);
|
|
51
|
+
}
|
|
52
|
+
}, {
|
|
53
|
+
field: 'online',
|
|
54
|
+
name: 'Online',
|
|
55
|
+
dataType: 'boolean',
|
|
56
|
+
render: function render(online) {
|
|
57
|
+
var color = online ? 'success' : 'danger';
|
|
58
|
+
var label = online ? 'Online' : 'Offline';
|
|
59
|
+
return ___EmotionJSX(EuiHealth, {
|
|
60
|
+
color: color
|
|
61
|
+
}, label);
|
|
62
|
+
},
|
|
63
|
+
sortable: true
|
|
64
|
+
}];
|
|
65
|
+
var sorting = {
|
|
66
|
+
sort: {
|
|
67
|
+
field: 'dateOfBirth',
|
|
68
|
+
direction: 'desc'
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
return ___EmotionJSX(EuiInMemoryTable, {
|
|
72
|
+
"data-test-subj": "cy-in-memory-table",
|
|
73
|
+
tableCaption: "Demo of EuiInMemoryTable",
|
|
74
|
+
items: store.users,
|
|
75
|
+
columns: columns,
|
|
76
|
+
pagination: true,
|
|
77
|
+
sorting: sorting
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
beforeEach(function () {
|
|
82
|
+
cy.viewport(1024, 768); // medium breakpoint
|
|
83
|
+
|
|
84
|
+
cy.realMount(___EmotionJSX(InMemoryTable, null));
|
|
85
|
+
cy.get('div[data-test-subj="cy-in-memory-table"]').should('exist');
|
|
86
|
+
});
|
|
87
|
+
describe('EuiInMemoryTable', function () {
|
|
88
|
+
describe('Automated accessibility check', function () {
|
|
89
|
+
it('has zero violations on first render', function () {
|
|
90
|
+
cy.checkAxe();
|
|
91
|
+
});
|
|
92
|
+
it('has zero violations on pagination click', function () {
|
|
93
|
+
cy.get('a[data-test-subj="pagination-button-1"]').realClick();
|
|
94
|
+
cy.get('button[data-test-subj="pagination-button-1"]').should('be.disabled');
|
|
95
|
+
cy.checkAxe();
|
|
96
|
+
});
|
|
97
|
+
it('has zero violations after number of rows is increased', function () {
|
|
98
|
+
cy.get('button[data-test-subj="tablePaginationPopoverButton"]').realClick();
|
|
99
|
+
cy.get('div[data-popover-open="true"]').should('exist');
|
|
100
|
+
cy.get('button[data-test-subj="tablePagination-25-rows"]').realClick();
|
|
101
|
+
cy.get('table.euiTable').find('tr.euiTableRow').should('have.length', 20);
|
|
102
|
+
cy.checkAxe();
|
|
103
|
+
});
|
|
104
|
+
it('has zero violations after sorting on a column', function () {
|
|
105
|
+
cy.realPress('Tab');
|
|
106
|
+
cy.get('button[data-test-subj="tableHeaderSortButton"]').first().should('have.focus');
|
|
107
|
+
cy.realPress('Enter');
|
|
108
|
+
cy.get('tbody tr.euiTableRow span.euiTableCellContent__text').first().contains('Another very long first name which will wrap or be truncated');
|
|
109
|
+
});
|
|
110
|
+
it('has zero violations when number of rows is increased by keyboard', function () {
|
|
111
|
+
cy.repeatRealPress('Tab', 14);
|
|
112
|
+
cy.get('button[data-test-subj="tablePaginationPopoverButton"]').should('have.focus').realPress('Space');
|
|
113
|
+
cy.get('div[data-popover-open="true"]').should('exist');
|
|
114
|
+
cy.get('div[data-popover-open="true"]').should('have.focus');
|
|
115
|
+
cy.repeatRealPress('Tab'); // Switched to Tab from ArrowDown because of flaky test runs
|
|
116
|
+
|
|
117
|
+
cy.get('button[data-test-subj="tablePagination-25-rows"]').realPress('Space');
|
|
118
|
+
cy.get('table.euiTable').find('tr.euiTableRow').should('have.length', 20);
|
|
119
|
+
cy.checkAxe();
|
|
120
|
+
});
|
|
121
|
+
it('has zero violations when pagination is pressed', function () {
|
|
122
|
+
cy.repeatRealPress('Tab', 15);
|
|
123
|
+
cy.get('a[data-test-subj="pagination-button-1"]').should('have.focus').realPress('Enter');
|
|
124
|
+
cy.get('button[data-test-subj="pagination-button-1"]').should('be.disabled');
|
|
125
|
+
cy.checkAxe();
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
});
|