@elastic/eui 76.1.0 → 76.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 (240) hide show
  1. package/dist/eui_theme_dark.css +33 -6
  2. package/dist/eui_theme_dark.min.css +1 -1
  3. package/dist/eui_theme_light.css +33 -6
  4. package/dist/eui_theme_light.min.css +1 -1
  5. package/es/components/avatar/avatar.js +1 -1
  6. package/es/components/badge/badge.js +1 -1
  7. package/es/components/badge/beta_badge/beta_badge.js +1 -1
  8. package/es/components/basic_table/basic_table.js +1 -1
  9. package/es/components/basic_table/collapsed_item_actions.js +1 -1
  10. package/es/components/basic_table/in_memory_table.js +1 -1
  11. package/es/components/button/_button_content_deprecated.js +1 -1
  12. package/es/components/button/button_display/_button_display.js +1 -1
  13. package/es/components/button/button_display/_button_display_content.js +1 -1
  14. package/es/components/button/button_empty/button_empty.js +1 -1
  15. package/es/components/button/button_group/button_group.js +1 -1
  16. package/es/components/button/button_group/button_group_button.js +1 -1
  17. package/es/components/button/button_icon/button_icon.js +1 -1
  18. package/es/components/call_out/call_out.js +1 -1
  19. package/es/components/card/card.js +1 -1
  20. package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  21. package/es/components/comment_list/comment.js +2 -2
  22. package/es/components/comment_list/comment_event.js +1 -1
  23. package/es/components/comment_list/comment_list.js +2 -2
  24. package/es/components/comment_list/comment_timeline.js +1 -1
  25. package/es/components/datagrid/body/data_grid_body.js +32 -408
  26. package/es/components/datagrid/body/data_grid_body_custom.js +908 -0
  27. package/es/components/datagrid/body/data_grid_body_virtualized.js +1031 -0
  28. package/es/components/datagrid/body/data_grid_cell.js +34 -33
  29. package/es/components/datagrid/body/data_grid_cell_wrapper.js +132 -0
  30. package/es/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  31. package/es/components/datagrid/body/header/data_grid_header_row.js +16 -15
  32. package/es/components/datagrid/controls/column_sorting_draggable.js +1 -1
  33. package/es/components/datagrid/data_grid.js +34 -18
  34. package/es/components/datagrid/data_grid_types.js +18 -1
  35. package/es/components/datagrid/utils/in_memory.js +12 -12
  36. package/es/components/datagrid/utils/row_heights.js +111 -31
  37. package/es/components/date_picker/date_picker.js +2 -2
  38. package/es/components/date_picker/date_picker_range.js +1 -1
  39. package/es/components/empty_prompt/empty_prompt.js +1 -1
  40. package/es/components/facet/facet_button.js +1 -1
  41. package/es/components/form/field_number/field_number.js +1 -1
  42. package/es/components/form/field_text/field_text.js +2 -2
  43. package/es/components/form/form_control_layout/form_control_layout.js +2 -2
  44. package/es/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  45. package/es/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  46. package/es/components/header/header_links/header_link.js +1 -1
  47. package/es/components/header/header_links/header_links.js +1 -1
  48. package/es/components/header/header_logo.js +1 -1
  49. package/es/components/icon/icon.js +1 -1
  50. package/es/components/icon/icon_map.js +2 -0
  51. package/es/components/key_pad_menu/key_pad_menu_item.js +1 -1
  52. package/es/components/list_group/list_group.js +2 -2
  53. package/es/components/list_group/list_group_item.js +2 -2
  54. package/es/components/list_group/list_group_item_extra_action.js +1 -1
  55. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  56. package/es/components/loading/loading_logo.js +1 -1
  57. package/es/components/markdown_editor/markdown_editor.js +1 -1
  58. package/es/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  59. package/es/components/markdown_editor/markdown_editor_footer.js +1 -1
  60. package/es/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  61. package/es/components/notification/notification_event.js +2 -2
  62. package/es/components/notification/notification_event_meta.js +1 -1
  63. package/es/components/page/page_header/page_header_content.js +1 -1
  64. package/es/components/pagination/pagination_button.js +1 -1
  65. package/es/components/selectable/selectable_list/selectable_list.js +1 -1
  66. package/es/components/selectable/selectable_list/selectable_list_item.js +1 -1
  67. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  68. package/es/components/suggest/suggest.js +1 -1
  69. package/es/components/suggest/suggest_item.js +1 -1
  70. package/es/components/table/table_header_button.js +1 -1
  71. package/es/components/timeline/timeline_item_icon.js +1 -1
  72. package/es/components/toast/global_toast_list.js +1 -1
  73. package/es/components/toast/toast.js +1 -1
  74. package/es/components/tool_tip/icon_tip.js +1 -1
  75. package/eui.d.ts +229 -136
  76. package/i18ntokens.json +8 -8
  77. package/lib/components/avatar/avatar.js +1 -1
  78. package/lib/components/badge/badge.js +1 -1
  79. package/lib/components/badge/beta_badge/beta_badge.js +1 -1
  80. package/lib/components/basic_table/basic_table.js +1 -1
  81. package/lib/components/basic_table/collapsed_item_actions.js +1 -1
  82. package/lib/components/basic_table/in_memory_table.js +1 -1
  83. package/lib/components/button/_button_content_deprecated.js +1 -1
  84. package/lib/components/button/button_display/_button_display.js +1 -1
  85. package/lib/components/button/button_display/_button_display_content.js +1 -1
  86. package/lib/components/button/button_empty/button_empty.js +1 -1
  87. package/lib/components/button/button_group/button_group.js +1 -1
  88. package/lib/components/button/button_group/button_group_button.js +1 -1
  89. package/lib/components/button/button_icon/button_icon.js +1 -1
  90. package/lib/components/call_out/call_out.js +1 -1
  91. package/lib/components/card/card.js +1 -1
  92. package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  93. package/lib/components/comment_list/comment.js +2 -2
  94. package/lib/components/comment_list/comment_event.js +1 -1
  95. package/lib/components/comment_list/comment_list.js +2 -2
  96. package/lib/components/comment_list/comment_timeline.js +1 -1
  97. package/lib/components/datagrid/body/data_grid_body.js +32 -429
  98. package/lib/components/datagrid/body/data_grid_body_custom.js +927 -0
  99. package/lib/components/datagrid/body/data_grid_body_virtualized.js +1059 -0
  100. package/lib/components/datagrid/body/data_grid_cell.js +34 -33
  101. package/lib/components/datagrid/body/data_grid_cell_wrapper.js +147 -0
  102. package/lib/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  103. package/lib/components/datagrid/body/header/data_grid_header_row.js +17 -15
  104. package/lib/components/datagrid/controls/column_sorting_draggable.js +1 -1
  105. package/lib/components/datagrid/data_grid.js +34 -17
  106. package/lib/components/datagrid/data_grid_types.js +22 -1
  107. package/lib/components/datagrid/utils/in_memory.js +12 -12
  108. package/lib/components/datagrid/utils/row_heights.js +116 -33
  109. package/lib/components/date_picker/date_picker.js +2 -2
  110. package/lib/components/date_picker/date_picker_range.js +1 -1
  111. package/lib/components/empty_prompt/empty_prompt.js +1 -1
  112. package/lib/components/facet/facet_button.js +1 -1
  113. package/lib/components/form/field_number/field_number.js +1 -1
  114. package/lib/components/form/field_text/field_text.js +2 -2
  115. package/lib/components/form/form_control_layout/form_control_layout.js +2 -2
  116. package/lib/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  117. package/lib/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  118. package/lib/components/header/header_links/header_link.js +1 -1
  119. package/lib/components/header/header_links/header_links.js +1 -1
  120. package/lib/components/header/header_logo.js +1 -1
  121. package/lib/components/icon/icon.js +1 -1
  122. package/lib/components/icon/icon_map.js +2 -0
  123. package/lib/components/key_pad_menu/key_pad_menu_item.js +1 -1
  124. package/lib/components/list_group/list_group.js +2 -2
  125. package/lib/components/list_group/list_group_item.js +2 -2
  126. package/lib/components/list_group/list_group_item_extra_action.js +1 -1
  127. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  128. package/lib/components/loading/loading_logo.js +1 -1
  129. package/lib/components/markdown_editor/markdown_editor.js +1 -1
  130. package/lib/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  131. package/lib/components/markdown_editor/markdown_editor_footer.js +1 -1
  132. package/lib/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  133. package/lib/components/notification/notification_event.js +2 -2
  134. package/lib/components/notification/notification_event_meta.js +1 -1
  135. package/lib/components/page/page_header/page_header_content.js +1 -1
  136. package/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  137. package/lib/components/selectable/selectable_list/selectable_list_item.js +1 -1
  138. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  139. package/lib/components/suggest/suggest.js +1 -1
  140. package/lib/components/suggest/suggest_item.js +1 -1
  141. package/lib/components/table/table_header_button.js +1 -1
  142. package/lib/components/timeline/timeline_item_icon.js +1 -1
  143. package/lib/components/toast/global_toast_list.js +1 -1
  144. package/lib/components/toast/toast.js +1 -1
  145. package/lib/components/tool_tip/icon_tip.js +1 -1
  146. package/optimize/es/components/datagrid/body/data_grid_body.js +17 -387
  147. package/optimize/es/components/datagrid/body/data_grid_body_custom.js +176 -0
  148. package/optimize/es/components/datagrid/body/data_grid_body_virtualized.js +311 -0
  149. package/optimize/es/components/datagrid/body/data_grid_cell.js +8 -7
  150. package/optimize/es/components/datagrid/body/data_grid_cell_wrapper.js +127 -0
  151. package/optimize/es/components/datagrid/body/header/data_grid_header_row.js +3 -2
  152. package/optimize/es/components/datagrid/data_grid.js +8 -5
  153. package/optimize/es/components/datagrid/data_grid_types.js +18 -1
  154. package/optimize/es/components/datagrid/utils/row_heights.js +100 -31
  155. package/optimize/es/components/icon/icon_map.js +2 -0
  156. package/optimize/lib/components/datagrid/body/data_grid_body.js +16 -409
  157. package/optimize/lib/components/datagrid/body/data_grid_body_custom.js +198 -0
  158. package/optimize/lib/components/datagrid/body/data_grid_body_virtualized.js +342 -0
  159. package/optimize/lib/components/datagrid/body/data_grid_cell.js +8 -7
  160. package/optimize/lib/components/datagrid/body/data_grid_cell_wrapper.js +144 -0
  161. package/optimize/lib/components/datagrid/body/header/data_grid_header_row.js +4 -2
  162. package/optimize/lib/components/datagrid/data_grid.js +8 -4
  163. package/optimize/lib/components/datagrid/data_grid_types.js +22 -1
  164. package/optimize/lib/components/datagrid/utils/row_heights.js +103 -37
  165. package/optimize/lib/components/icon/icon_map.js +2 -0
  166. package/package.json +1 -1
  167. package/src/components/datagrid/_data_grid.scss +7 -0
  168. package/src/components/datagrid/_data_grid_data_row.scss +1 -0
  169. package/src/components/datagrid/body/footer/_data_grid_footer_row.scss +1 -0
  170. package/src/components/datagrid/body/header/_data_grid_header_row.scss +1 -0
  171. package/src/components/selectable/selectable_list/_selectable_list.scss +10 -3
  172. package/src/themes/amsterdam/global_styling/mixins/_states.scss +17 -8
  173. package/test-env/components/avatar/avatar.js +1 -1
  174. package/test-env/components/badge/badge.js +1 -1
  175. package/test-env/components/badge/beta_badge/beta_badge.js +1 -1
  176. package/test-env/components/basic_table/basic_table.js +1 -1
  177. package/test-env/components/basic_table/collapsed_item_actions.js +1 -1
  178. package/test-env/components/basic_table/in_memory_table.js +1 -1
  179. package/test-env/components/button/_button_content_deprecated.js +1 -1
  180. package/test-env/components/button/button_display/_button_display.js +1 -1
  181. package/test-env/components/button/button_display/_button_display_content.js +1 -1
  182. package/test-env/components/button/button_empty/button_empty.js +1 -1
  183. package/test-env/components/button/button_group/button_group.js +1 -1
  184. package/test-env/components/button/button_group/button_group_button.js +1 -1
  185. package/test-env/components/button/button_icon/button_icon.js +1 -1
  186. package/test-env/components/call_out/call_out.js +1 -1
  187. package/test-env/components/card/card.js +1 -1
  188. package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  189. package/test-env/components/comment_list/comment.js +2 -2
  190. package/test-env/components/comment_list/comment_event.js +1 -1
  191. package/test-env/components/comment_list/comment_list.js +2 -2
  192. package/test-env/components/comment_list/comment_timeline.js +1 -1
  193. package/test-env/components/datagrid/body/data_grid_body.js +31 -428
  194. package/test-env/components/datagrid/body/data_grid_body_custom.js +908 -0
  195. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +1057 -0
  196. package/test-env/components/datagrid/body/data_grid_cell.js +34 -33
  197. package/test-env/components/datagrid/body/data_grid_cell_wrapper.js +144 -0
  198. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  199. package/test-env/components/datagrid/body/header/data_grid_header_row.js +17 -15
  200. package/test-env/components/datagrid/controls/column_sorting_draggable.js +1 -1
  201. package/test-env/components/datagrid/data_grid.js +34 -17
  202. package/test-env/components/datagrid/data_grid_types.js +22 -1
  203. package/test-env/components/datagrid/utils/in_memory.js +12 -12
  204. package/test-env/components/datagrid/utils/row_heights.js +103 -37
  205. package/test-env/components/date_picker/date_picker.js +2 -2
  206. package/test-env/components/date_picker/date_picker_range.js +1 -1
  207. package/test-env/components/empty_prompt/empty_prompt.js +1 -1
  208. package/test-env/components/facet/facet_button.js +1 -1
  209. package/test-env/components/form/field_number/field_number.js +1 -1
  210. package/test-env/components/form/field_text/field_text.js +2 -2
  211. package/test-env/components/form/form_control_layout/form_control_layout.js +2 -2
  212. package/test-env/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  213. package/test-env/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  214. package/test-env/components/header/header_links/header_link.js +1 -1
  215. package/test-env/components/header/header_links/header_links.js +1 -1
  216. package/test-env/components/header/header_logo.js +1 -1
  217. package/test-env/components/icon/icon_map.js +2 -0
  218. package/test-env/components/key_pad_menu/key_pad_menu_item.js +1 -1
  219. package/test-env/components/list_group/list_group.js +2 -2
  220. package/test-env/components/list_group/list_group_item.js +2 -2
  221. package/test-env/components/list_group/list_group_item_extra_action.js +1 -1
  222. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  223. package/test-env/components/loading/loading_logo.js +1 -1
  224. package/test-env/components/markdown_editor/markdown_editor.js +1 -1
  225. package/test-env/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  226. package/test-env/components/markdown_editor/markdown_editor_footer.js +1 -1
  227. package/test-env/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  228. package/test-env/components/notification/notification_event.js +2 -2
  229. package/test-env/components/notification/notification_event_meta.js +1 -1
  230. package/test-env/components/page/page_header/page_header_content.js +1 -1
  231. package/test-env/components/selectable/selectable_list/selectable_list.js +1 -1
  232. package/test-env/components/selectable/selectable_list/selectable_list_item.js +1 -1
  233. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  234. package/test-env/components/suggest/suggest.js +1 -1
  235. package/test-env/components/suggest/suggest_item.js +1 -1
  236. package/test-env/components/table/table_header_button.js +1 -1
  237. package/test-env/components/timeline/timeline_item_icon.js +1 -1
  238. package/test-env/components/toast/global_toast_list.js +1 -1
  239. package/test-env/components/toast/toast.js +1 -1
  240. package/test-env/components/tool_tip/icon_tip.js +1 -1
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.Cell = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _classnames = _interopRequireDefault(require("classnames"));
21
+
22
+ var _sorting = require("../utils/sorting");
23
+
24
+ var _data_grid_cell_popover = require("./data_grid_cell_popover");
25
+
26
+ var _data_grid_cell = require("./data_grid_cell");
27
+
28
+ var _react2 = require("@emotion/react");
29
+
30
+ var _excluded = ["colIndex", "visibleRowIndex", "style", "schema", "schemaDetectors", "pagination", "columns", "leadingControlColumns", "trailingControlColumns", "visibleColCount", "columnWidths", "defaultColumnWidth", "renderCellValue", "renderCellPopover", "interactiveCellId", "setRowHeight", "rowHeightsOptions", "rowHeightUtils", "rowManager"];
31
+
32
+ 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); }
33
+
34
+ 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; }
35
+
36
+ /**
37
+ * A DRY wrapper used by both custom and virtualized grid cells.
38
+ * It grabs context, determines the type of cell being rendered
39
+ * (e.g. control vs data cell), & sets shared props between all cells
40
+ */
41
+ var Cell = function Cell(_ref) {
42
+ var colIndex = _ref.colIndex,
43
+ visibleRowIndex = _ref.visibleRowIndex,
44
+ style = _ref.style,
45
+ schema = _ref.schema,
46
+ schemaDetectors = _ref.schemaDetectors,
47
+ pagination = _ref.pagination,
48
+ columns = _ref.columns,
49
+ leadingControlColumns = _ref.leadingControlColumns,
50
+ trailingControlColumns = _ref.trailingControlColumns,
51
+ visibleColCount = _ref.visibleColCount,
52
+ columnWidths = _ref.columnWidths,
53
+ defaultColumnWidth = _ref.defaultColumnWidth,
54
+ renderCellValue = _ref.renderCellValue,
55
+ renderCellPopover = _ref.renderCellPopover,
56
+ interactiveCellId = _ref.interactiveCellId,
57
+ setRowHeight = _ref.setRowHeight,
58
+ rowHeightsOptions = _ref.rowHeightsOptions,
59
+ rowHeightUtils = _ref.rowHeightUtils,
60
+ rowManager = _ref.rowManager,
61
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
62
+ var popoverContext = (0, _react.useContext)(_data_grid_cell_popover.DataGridCellPopoverContext);
63
+
64
+ var _useContext = (0, _react.useContext)(_sorting.DataGridSortingContext),
65
+ getCorrectRowIndex = _useContext.getCorrectRowIndex;
66
+
67
+ var cellContent;
68
+ var isFirstColumn = colIndex === 0;
69
+ var isLastColumn = colIndex === visibleColCount - 1;
70
+ var isLeadingControlColumn = colIndex < leadingControlColumns.length;
71
+ var isTrailingControlColumn = colIndex >= leadingControlColumns.length + columns.length;
72
+ var datacolIndex = colIndex - leadingControlColumns.length;
73
+ var column = columns[datacolIndex];
74
+ var columnId = column === null || column === void 0 ? void 0 : column.id;
75
+ var textTransform = (0, _react.useMemo)(function () {
76
+ var _schemaDetectors$filt;
77
+
78
+ return (_schemaDetectors$filt = schemaDetectors.filter(function (row) {
79
+ return column !== null && column !== void 0 && column.schema ? (column === null || column === void 0 ? void 0 : column.schema) === row.type : columnId === row.type;
80
+ })[0]) === null || _schemaDetectors$filt === void 0 ? void 0 : _schemaDetectors$filt.textTransform;
81
+ }, [columnId, column === null || column === void 0 ? void 0 : column.schema, schemaDetectors]);
82
+ var classes = (0, _classnames.default)((0, _defineProperty2.default)({
83
+ 'euiDataGridRowCell--firstColumn': isFirstColumn,
84
+ 'euiDataGridRowCell--lastColumn': isLastColumn,
85
+ 'euiDataGridRowCell--controlColumn': isLeadingControlColumn || isTrailingControlColumn
86
+ }, "euiDataGridRowCell--".concat(textTransform), textTransform));
87
+ var sharedCellProps = {
88
+ rowIndex: getCorrectRowIndex(visibleRowIndex),
89
+ visibleRowIndex: visibleRowIndex,
90
+ colIndex: colIndex,
91
+ interactiveCellId: interactiveCellId,
92
+ className: classes,
93
+ style: style,
94
+ rowHeightsOptions: rowHeightsOptions,
95
+ rowHeightUtils: rowHeightUtils,
96
+ setRowHeight: isFirstColumn ? setRowHeight : undefined,
97
+ rowManager: rowManager,
98
+ popoverContext: popoverContext,
99
+ pagination: pagination
100
+ };
101
+
102
+ if (isLeadingControlColumn) {
103
+ var leadingColumn = leadingControlColumns[colIndex];
104
+ var id = leadingColumn.id,
105
+ rowCellRender = leadingColumn.rowCellRender;
106
+ cellContent = (0, _react2.jsx)(_data_grid_cell.EuiDataGridCell, (0, _extends2.default)({}, sharedCellProps, {
107
+ columnId: id,
108
+ width: leadingColumn.width,
109
+ renderCellValue: rowCellRender,
110
+ isExpandable: false
111
+ }, rest));
112
+ } else if (isTrailingControlColumn) {
113
+ var columnOffset = columns.length + leadingControlColumns.length;
114
+ var trailingcolIndex = colIndex - columnOffset;
115
+ var trailingColumn = trailingControlColumns[trailingcolIndex];
116
+ var _id = trailingColumn.id,
117
+ _rowCellRender = trailingColumn.rowCellRender;
118
+ cellContent = (0, _react2.jsx)(_data_grid_cell.EuiDataGridCell, (0, _extends2.default)({}, sharedCellProps, {
119
+ columnId: _id,
120
+ width: trailingColumn.width,
121
+ renderCellValue: _rowCellRender,
122
+ isExpandable: false
123
+ }, rest));
124
+ } else {
125
+ // this is a normal data cell
126
+ var columnType = schema[columnId] ? schema[columnId].columnType : null;
127
+ var isExpandable = column.isExpandable !== undefined ? column.isExpandable : true;
128
+ var width = columnWidths[columnId] || defaultColumnWidth;
129
+ cellContent = (0, _react2.jsx)(_data_grid_cell.EuiDataGridCell, (0, _extends2.default)({}, sharedCellProps, {
130
+ columnId: columnId,
131
+ column: column,
132
+ columnType: columnType,
133
+ width: width || undefined,
134
+ renderCellValue: renderCellValue,
135
+ renderCellPopover: renderCellPopover,
136
+ interactiveCellId: interactiveCellId,
137
+ isExpandable: isExpandable
138
+ }, rest));
139
+ }
140
+
141
+ return cellContent;
142
+ };
143
+
144
+ exports.Cell = Cell;
@@ -21,6 +21,8 @@ var _data_grid_control_header_cell = require("./data_grid_control_header_cell");
21
21
 
22
22
  var _data_grid_header_cell = require("./data_grid_header_cell");
23
23
 
24
+ var _data_grid_types = require("../../data_grid_types");
25
+
24
26
  var _react2 = require("@emotion/react");
25
27
 
26
28
  var _excluded = ["leadingControlColumns", "trailingControlColumns", "columns", "schema", "schemaDetectors", "columnWidths", "defaultColumnWidth", "className", "setColumnWidth", "setVisibleColumns", "switchColumnPos", "headerIsInteractive", "data-test-subj"];
@@ -31,9 +33,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
31
33
 
32
34
  var EuiDataGridHeaderRow = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
33
35
  var _props$leadingControl = props.leadingControlColumns,
34
- leadingControlColumns = _props$leadingControl === void 0 ? [] : _props$leadingControl,
36
+ leadingControlColumns = _props$leadingControl === void 0 ? _data_grid_types.emptyControlColumns : _props$leadingControl,
35
37
  _props$trailingContro = props.trailingControlColumns,
36
- trailingControlColumns = _props$trailingContro === void 0 ? [] : _props$trailingContro,
38
+ trailingControlColumns = _props$trailingContro === void 0 ? _data_grid_types.emptyControlColumns : _props$trailingContro,
37
39
  columns = props.columns,
38
40
  schema = props.schema,
39
41
  schemaDetectors = props.schemaDetectors,
@@ -55,9 +55,11 @@ var _data_grid_schema = require("./utils/data_grid_schema");
55
55
 
56
56
  var _ref = require("./utils/ref");
57
57
 
58
+ var _data_grid_types = require("./data_grid_types");
59
+
58
60
  var _react2 = require("@emotion/react");
59
61
 
60
- var _excluded = ["leadingControlColumns", "trailingControlColumns", "columns", "columnVisibility", "schemaDetectors", "rowCount", "renderCellValue", "renderCellPopover", "renderFooterCellValue", "className", "gridStyle", "toolbarVisibility", "pagination", "sorting", "inMemory", "onColumnResize", "minSizeForControls", "height", "width", "rowHeightsOptions", "virtualizationOptions"],
62
+ var _excluded = ["leadingControlColumns", "trailingControlColumns", "columns", "columnVisibility", "schemaDetectors", "rowCount", "renderCellValue", "renderCellPopover", "renderFooterCellValue", "className", "gridStyle", "toolbarVisibility", "pagination", "sorting", "inMemory", "onColumnResize", "minSizeForControls", "height", "width", "rowHeightsOptions", "virtualizationOptions", "renderCustomGridBody"],
61
63
  _excluded2 = ["focusProps"];
62
64
 
63
65
  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); }
@@ -101,9 +103,9 @@ var EuiDataGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
101
103
  var _gridItemsRendered$cu;
102
104
 
103
105
  var _props$leadingControl = props.leadingControlColumns,
104
- leadingControlColumns = _props$leadingControl === void 0 ? [] : _props$leadingControl,
106
+ leadingControlColumns = _props$leadingControl === void 0 ? _data_grid_types.emptyControlColumns : _props$leadingControl,
105
107
  _props$trailingContro = props.trailingControlColumns,
106
- trailingControlColumns = _props$trailingContro === void 0 ? [] : _props$trailingContro,
108
+ trailingControlColumns = _props$trailingContro === void 0 ? _data_grid_types.emptyControlColumns : _props$trailingContro,
107
109
  columns = props.columns,
108
110
  columnVisibility = props.columnVisibility,
109
111
  schemaDetectors = props.schemaDetectors,
@@ -124,6 +126,7 @@ var EuiDataGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
124
126
  width = props.width,
125
127
  _rowHeightsOptions = props.rowHeightsOptions,
126
128
  virtualizationOptions = props.virtualizationOptions,
129
+ renderCustomGridBody = props.renderCustomGridBody,
127
130
  rest = (0, _objectWithoutProperties2.default)(props, _excluded);
128
131
  /**
129
132
  * Merge consumer settings with defaults
@@ -400,7 +403,8 @@ var EuiDataGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
400
403
  gridWidth: gridWidth,
401
404
  gridRef: gridRef,
402
405
  gridItemsRendered: gridItemsRendered,
403
- wrapperRef: contentRef
406
+ wrapperRef: contentRef,
407
+ renderCustomGridBody: renderCustomGridBody
404
408
  })), pagination && props['aria-labelledby'] && (0, _react2.jsx)("p", {
405
409
  id: ariaLabelledById,
406
410
  hidden: true
@@ -2,4 +2,25 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+ exports.emptyControlColumns = void 0;
7
+
8
+ /*
9
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
10
+ * or more contributor license agreements. Licensed under the Elastic License
11
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
12
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
13
+ * Side Public License, v 1.
14
+ */
15
+ // since react-window doesn't export a type with the imperative api only we can
16
+ // use this to omit the react-specific class component methods
17
+ // An array of [x,y] coordinates. Note that the `y` value expected internally is a `visibleRowIndex`
18
+ // Force either aria-label or aria-labelledby to be defined
19
+
20
+ /**
21
+ * Props shared between renderCellValue and renderCellPopover
22
+ */
23
+ // The empty control column array fallbacks need to be cached, or
24
+ // they'll cause rerendering/remount issues in memoized dependencies
25
+ var emptyControlColumns = [];
26
+ exports.emptyControlColumns = emptyControlColumns;
@@ -5,10 +5,20 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.useRowHeightUtils = exports.useDefaultRowHeight = exports.cellPaddingsMap = exports.RowHeightUtils = exports.DEFAULT_ROW_HEIGHT = exports.AUTO_HEIGHT = void 0;
8
+ exports.useRowHeightUtils = exports.useDefaultRowHeight = exports.cellPaddingsMap = exports.RowHeightVirtualizationUtils = exports.RowHeightUtils = exports.DEFAULT_ROW_HEIGHT = exports.AUTO_HEIGHT = void 0;
9
9
 
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
 
12
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
13
+
14
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
12
22
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
23
 
14
24
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -25,13 +35,10 @@ var _predicate = require("../../../services/predicate");
25
35
 
26
36
  var _sorting = require("./sorting");
27
37
 
28
- /*
29
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
30
- * or more contributor license agreements. Licensed under the Elastic License
31
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
32
- * in compliance with, at your election, the Elastic License 2.0 or the Server
33
- * Side Public License, v 1.
34
- */
38
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
39
+
40
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
41
+
35
42
  // TODO: Once JS variables are available, use them here instead of hard-coded maps
36
43
  var cellPaddingsMap = {
37
44
  s: 4,
@@ -45,14 +52,10 @@ var DEFAULT_ROW_HEIGHT = 34;
45
52
  exports.DEFAULT_ROW_HEIGHT = DEFAULT_ROW_HEIGHT;
46
53
 
47
54
  var RowHeightUtils = /*#__PURE__*/function () {
48
- function RowHeightUtils(gridRef, outerGridElementRef, gridItemsRenderedRef, rerenderGridBodyRef) {
55
+ function RowHeightUtils() {
49
56
  var _this = this;
50
57
 
51
58
  (0, _classCallCheck2.default)(this, RowHeightUtils);
52
- this.gridRef = gridRef;
53
- this.outerGridElementRef = outerGridElementRef;
54
- this.gridItemsRenderedRef = gridItemsRenderedRef;
55
- this.rerenderGridBodyRef = rerenderGridBodyRef;
56
59
  (0, _defineProperty2.default)(this, "styles", {
57
60
  paddingTop: 0,
58
61
  paddingBottom: 0
@@ -82,8 +85,6 @@ var RowHeightUtils = /*#__PURE__*/function () {
82
85
  };
83
86
  });
84
87
  (0, _defineProperty2.default)(this, "heightsCache", new Map());
85
- (0, _defineProperty2.default)(this, "timerId", void 0);
86
- (0, _defineProperty2.default)(this, "lastUpdatedRow", Infinity);
87
88
  }
88
89
 
89
90
  (0, _createClass2.default)(RowHeightUtils, [{
@@ -169,6 +170,11 @@ var RowHeightUtils = /*#__PURE__*/function () {
169
170
 
170
171
  return false;
171
172
  }
173
+ /**
174
+ * Heights cache utils
175
+ * This cache is primarily used by auto heights & secondarily used by lineCount row overrides
176
+ */
177
+
172
178
  }, {
173
179
  key: "getRowHeight",
174
180
  value: function getRowHeight(rowIndex) {
@@ -181,23 +187,20 @@ var RowHeightUtils = /*#__PURE__*/function () {
181
187
  }, {
182
188
  key: "setRowHeight",
183
189
  value: function setRowHeight(rowIndex, colId) {
184
- var _this$rerenderGridBod, _this$rerenderGridBod2;
185
-
186
190
  var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_ROW_HEIGHT;
187
- var visibleRowIndex = arguments.length > 3 ? arguments[3] : undefined;
191
+
192
+ var _visibleRowIndex = arguments.length > 3 ? arguments[3] : undefined;
193
+
188
194
  var rowHeights = this.heightsCache.get(rowIndex) || new Map();
189
195
  var adaptedHeight = Math.ceil(height + this.styles.paddingTop + this.styles.paddingBottom);
190
196
 
191
197
  if (rowHeights.get(colId) === adaptedHeight) {
192
- return;
198
+ return false;
199
+ } else {
200
+ rowHeights.set(colId, adaptedHeight);
201
+ this.heightsCache.set(rowIndex, rowHeights);
202
+ return true;
193
203
  }
194
-
195
- rowHeights.set(colId, adaptedHeight);
196
- this.heightsCache.set(rowIndex, rowHeights);
197
- this.resetRow(visibleRowIndex); // When an auto row height is updated, force a re-render
198
- // of the grid body to update the unconstrained height
199
-
200
- (_this$rerenderGridBod = (_this$rerenderGridBod2 = this.rerenderGridBodyRef).current) === null || _this$rerenderGridBod === void 0 ? void 0 : _this$rerenderGridBod.call(_this$rerenderGridBod2);
201
204
  }
202
205
  }, {
203
206
  key: "pruneHiddenColumnHeights",
@@ -216,22 +219,80 @@ var RowHeightUtils = /*#__PURE__*/function () {
216
219
  }
217
220
  });
218
221
  });
222
+ return didModify;
223
+ }
224
+ }]);
225
+ return RowHeightUtils;
226
+ }();
227
+ /**
228
+ * Row height utils with virtualization library-specific APIs
229
+ */
230
+
231
+
232
+ exports.RowHeightUtils = RowHeightUtils;
233
+
234
+ var RowHeightVirtualizationUtils = /*#__PURE__*/function (_RowHeightUtils) {
235
+ (0, _inherits2.default)(RowHeightVirtualizationUtils, _RowHeightUtils);
236
+
237
+ var _super = _createSuper(RowHeightVirtualizationUtils);
238
+
239
+ function RowHeightVirtualizationUtils(gridRef, outerGridElementRef, gridItemsRenderedRef, rerenderGridBodyRef) {
240
+ var _this2;
241
+
242
+ (0, _classCallCheck2.default)(this, RowHeightVirtualizationUtils);
243
+ _this2 = _super.call(this);
244
+ _this2.gridRef = gridRef;
245
+ _this2.outerGridElementRef = outerGridElementRef;
246
+ _this2.gridItemsRenderedRef = gridItemsRenderedRef;
247
+ _this2.rerenderGridBodyRef = rerenderGridBodyRef;
248
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "timerId", void 0);
249
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "lastUpdatedRow", Infinity);
250
+ return _this2;
251
+ }
252
+ /**
253
+ * Virtualization workarounds for auto height rows
254
+ */
255
+
256
+
257
+ (0, _createClass2.default)(RowHeightVirtualizationUtils, [{
258
+ key: "setRowHeight",
259
+ value: function setRowHeight(rowIndex, colId) {
260
+ var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_ROW_HEIGHT;
261
+ var visibleRowIndex = arguments.length > 3 ? arguments[3] : undefined;
262
+ var didModify = (0, _get2.default)((0, _getPrototypeOf2.default)(RowHeightVirtualizationUtils.prototype), "setRowHeight", this).call(this, rowIndex, colId, height, visibleRowIndex); // When an auto row height is updated, force a re-render
263
+ // of the grid body to update the unconstrained height
264
+
265
+ if (didModify) {
266
+ var _this$rerenderGridBod, _this$rerenderGridBod2;
267
+
268
+ (_this$rerenderGridBod = (_this$rerenderGridBod2 = this.rerenderGridBodyRef).current) === null || _this$rerenderGridBod === void 0 ? void 0 : _this$rerenderGridBod.call(_this$rerenderGridBod2);
269
+ this.resetRow(visibleRowIndex);
270
+ }
271
+
272
+ return didModify; // Mostly just here for typing
273
+ }
274
+ }, {
275
+ key: "pruneHiddenColumnHeights",
276
+ value: function pruneHiddenColumnHeights(visibleColumns) {
277
+ var didModify = (0, _get2.default)((0, _getPrototypeOf2.default)(RowHeightVirtualizationUtils.prototype), "pruneHiddenColumnHeights", this).call(this, visibleColumns);
219
278
 
220
279
  if (didModify) {
221
280
  this.resetRow(0);
222
281
  }
282
+
283
+ return didModify; // Mostly just here for typing
223
284
  }
224
285
  }, {
225
286
  key: "resetRow",
226
287
  value: function resetRow(visibleRowIndex) {
227
- var _this2 = this;
288
+ var _this3 = this;
228
289
 
229
290
  // save the first row index of batch, reassigning it only
230
291
  // if this visible row index less than lastUpdatedRow
231
292
  this.lastUpdatedRow = Math.min(this.lastUpdatedRow, visibleRowIndex);
232
293
  clearTimeout(this.timerId);
233
294
  this.timerId = window.setTimeout(function () {
234
- return _this2.resetGrid();
295
+ return _this3.resetGrid();
235
296
  }, 0);
236
297
  }
237
298
  }, {
@@ -268,27 +329,32 @@ var RowHeightUtils = /*#__PURE__*/function () {
268
329
  });
269
330
  }
270
331
  }]);
271
- return RowHeightUtils;
272
- }();
332
+ return RowHeightVirtualizationUtils;
333
+ }(RowHeightUtils);
273
334
  /**
274
335
  * Hook for instantiating RowHeightUtils, setting internal class vars,
275
336
  * and setting up various row-height-related side effects
276
337
  */
277
338
 
278
339
 
279
- exports.RowHeightUtils = RowHeightUtils;
340
+ exports.RowHeightVirtualizationUtils = RowHeightVirtualizationUtils;
280
341
 
281
342
  var useRowHeightUtils = function useRowHeightUtils(_ref2) {
282
- var gridRef = _ref2.gridRef,
283
- outerGridElementRef = _ref2.outerGridElementRef,
284
- gridItemsRenderedRef = _ref2.gridItemsRenderedRef,
343
+ var virtualization = _ref2.virtualization,
344
+ rowHeightsOptions = _ref2.rowHeightsOptions,
285
345
  gridStyles = _ref2.gridStyles,
286
- columns = _ref2.columns,
287
- rowHeightsOptions = _ref2.rowHeightsOptions;
346
+ columns = _ref2.columns;
288
347
  var forceRenderRef = (0, _services.useLatest)((0, _services.useForceRender)());
289
348
 
290
349
  var _useState = (0, _react.useState)(function () {
291
- return new RowHeightUtils(gridRef, outerGridElementRef, gridItemsRenderedRef, forceRenderRef);
350
+ if (virtualization) {
351
+ var _gridRef = virtualization.gridRef,
352
+ _outerGridElementRef = virtualization.outerGridElementRef,
353
+ _gridItemsRenderedRef = virtualization.gridItemsRenderedRef;
354
+ return new RowHeightVirtualizationUtils(_gridRef, _outerGridElementRef, _gridItemsRenderedRef, forceRenderRef);
355
+ } else {
356
+ return new RowHeightUtils();
357
+ }
292
358
  }),
293
359
  _useState2 = (0, _slicedToArray2.default)(_useState, 1),
294
360
  rowHeightUtils = _useState2[0]; // Forces a rerender whenever the row heights change, as this can cause the
@@ -422,6 +422,8 @@ var typeToPathMap = {
422
422
  visVisualBuilder: 'vis_visual_builder',
423
423
  visualizeApp: 'app_visualize',
424
424
  warning: 'warning',
425
+ alert: 'warning',
426
+ // NOTE: This is an undocumented alias for `warning`, added for legacy compatability with Elastic Charts
425
427
  watchesApp: 'app_watches',
426
428
  wordWrap: 'wordWrap',
427
429
  wordWrapDisabled: 'wordWrapDisabled',
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elastic/eui",
3
3
  "description": "Elastic UI Component Library",
4
- "version": "76.1.0",
4
+ "version": "76.2.0",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "lib",
7
7
  "module": "es",
@@ -35,6 +35,13 @@
35
35
  font-feature-settings: 'tnum' 1; // Tabular numbers
36
36
  }
37
37
 
38
+ .euiDataGrid__customRenderBody {
39
+ @include euiScrollBar($euiColorDarkShade, $euiColorEmptyShade);
40
+ height: 100%;
41
+ width: 100%;
42
+ overflow: auto;
43
+ }
44
+
38
45
  .euiDataGrid__pagination {
39
46
  z-index: 2; // Sits above the content above it
40
47
  padding-top: $euiSizeXS;
@@ -24,6 +24,7 @@
24
24
  }
25
25
 
26
26
  &:focus {
27
+ position: relative;
27
28
  @include euiDataGridCellFocus;
28
29
  }
29
30
 
@@ -1,5 +1,6 @@
1
1
  .euiDataGridFooter {
2
2
  display: flex;
3
+ width: fit-content;
3
4
  }
4
5
 
5
6
  @include euiDataGridFooterCell {
@@ -4,6 +4,7 @@
4
4
  background: $euiColorEmptyShade;
5
5
  position: sticky;
6
6
  top: 0;
7
+ width: fit-content;
7
8
  }
8
9
 
9
10
  @include euiDataGridHeaderCell {
@@ -1,10 +1,12 @@
1
- // Expand height of list via flex box
2
1
  .euiSelectableList {
3
- &:focus-within {
4
- @include euiFocusRing;
2
+ // NOTE: This is currently only visible on supported browsers (all except FF)
3
+ // which is (unfortunately) better than always displaying the focus ring to mouse users
4
+ &:has(:focus-visible) {
5
+ @include euiFocusRing(null, $euiFocusRingSize / 2, false);
5
6
  }
6
7
  }
7
8
 
9
+ // Expand height of list via flex box
8
10
  .euiSelectableList-fullHeight {
9
11
  flex-grow: 1;
10
12
  }
@@ -18,6 +20,11 @@
18
20
  .euiSelectableList__list {
19
21
  @include euiOverflowShadow;
20
22
  @include euiScrollBar;
23
+
24
+ &:focus,
25
+ & > ul:focus {
26
+ outline: none; // Focus outline handled by parent .euiSelectableList
27
+ }
21
28
  }
22
29
 
23
30
  .euiSelectableList__groupLabel {
@@ -3,22 +3,31 @@
3
3
  // This re-uses the same faux focus ring mixin, but adjusts the outline instead
4
4
  // @param {size} Old param from default theme that won't be used, so it should always be `null`
5
5
  // @param {offset} Accepts a specific number or 'inner' or 'outer' to adjust outline position
6
- @mixin euiFocusRing($size: null, $offset: false) {
6
+ // @param {includeFocusVisible} Allows turning off :not:focus-visible selector (which can interfere with some manual usages)
7
+ @mixin euiFocusRing($size: null, $offset: false, $focusVisibleSelectors: true) {
7
8
  // Safari & Firefox
8
9
  outline: $euiFocusRingSize solid currentColor;
9
10
 
10
- // Chrome
11
- &:focus-visible {
12
- outline-style: auto;
13
- }
11
+ @if ($focusVisibleSelectors) {
12
+ // Chrome
13
+ &:focus-visible {
14
+ outline-style: auto;
15
+ }
14
16
 
15
- &:not(:focus-visible) {
16
- outline: none;
17
+ &:not(:focus-visible) {
18
+ outline: none;
19
+ }
20
+ } @else {
21
+ outline-style: auto;
17
22
  }
18
23
 
19
24
  // Adjusting position with offset
20
25
  @if (type-of($offset) == number) {
21
- outline-offset: #{$offset}px;
26
+ @if (unitless($offset)) {
27
+ outline-offset: #{$offset}px;
28
+ } @else {
29
+ outline-offset: #{$offset};
30
+ }
22
31
  } @else if ($offset == 'inner') {
23
32
  outline-offset: -$euiFocusRingSize;
24
33
  } @else if ($offset == 'outer') {