@elastic/eui 76.0.2 → 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 (107) hide show
  1. package/dist/eui_theme_dark.css +37 -6
  2. package/dist/eui_theme_dark.min.css +1 -1
  3. package/dist/eui_theme_light.css +37 -6
  4. package/dist/eui_theme_light.min.css +1 -1
  5. package/es/components/color_picker/color_palette_picker/color_palette_picker.js +5 -6
  6. package/es/components/datagrid/body/data_grid_body.js +19 -395
  7. package/es/components/datagrid/body/data_grid_body_custom.js +908 -0
  8. package/es/components/datagrid/body/data_grid_body_virtualized.js +1031 -0
  9. package/es/components/datagrid/body/data_grid_cell.js +16 -12
  10. package/es/components/datagrid/body/data_grid_cell_popover.js +32 -12
  11. package/es/components/datagrid/body/data_grid_cell_wrapper.js +132 -0
  12. package/es/components/datagrid/body/header/data_grid_header_row.js +3 -2
  13. package/es/components/datagrid/data_grid.js +21 -5
  14. package/es/components/datagrid/data_grid_types.js +18 -1
  15. package/es/components/datagrid/utils/row_heights.js +111 -31
  16. package/es/components/date_picker/auto_refresh/auto_refresh.js +2 -1
  17. package/es/components/form/range/dual_range.js +14 -7
  18. package/es/components/form/range/range.js +10 -3
  19. package/es/components/form/super_select/super_select.js +21 -18
  20. package/es/components/form/super_select/super_select_control.js +7 -14
  21. package/es/components/selectable/selectable.js +59 -36
  22. package/es/components/selectable/selectable_list/selectable_list.js +1 -1
  23. package/es/components/suggest/suggest.js +3 -10
  24. package/eui.d.ts +253 -146
  25. package/i18ntokens.json +89 -57
  26. package/lib/components/color_picker/color_palette_picker/color_palette_picker.js +5 -6
  27. package/lib/components/datagrid/body/data_grid_body.js +19 -416
  28. package/lib/components/datagrid/body/data_grid_body_custom.js +927 -0
  29. package/lib/components/datagrid/body/data_grid_body_virtualized.js +1059 -0
  30. package/lib/components/datagrid/body/data_grid_cell.js +16 -12
  31. package/lib/components/datagrid/body/data_grid_cell_popover.js +35 -12
  32. package/lib/components/datagrid/body/data_grid_cell_wrapper.js +147 -0
  33. package/lib/components/datagrid/body/header/data_grid_header_row.js +4 -2
  34. package/lib/components/datagrid/data_grid.js +21 -4
  35. package/lib/components/datagrid/data_grid_types.js +22 -1
  36. package/lib/components/datagrid/utils/row_heights.js +116 -33
  37. package/lib/components/date_picker/auto_refresh/auto_refresh.js +2 -1
  38. package/lib/components/form/range/dual_range.js +14 -7
  39. package/lib/components/form/range/range.js +10 -3
  40. package/lib/components/form/super_select/super_select.js +21 -18
  41. package/lib/components/form/super_select/super_select_control.js +7 -16
  42. package/lib/components/selectable/selectable.js +59 -36
  43. package/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  44. package/lib/components/suggest/suggest.js +3 -12
  45. package/optimize/es/components/datagrid/body/data_grid_body.js +17 -387
  46. package/optimize/es/components/datagrid/body/data_grid_body_custom.js +176 -0
  47. package/optimize/es/components/datagrid/body/data_grid_body_virtualized.js +311 -0
  48. package/optimize/es/components/datagrid/body/data_grid_cell.js +12 -9
  49. package/optimize/es/components/datagrid/body/data_grid_cell_popover.js +30 -12
  50. package/optimize/es/components/datagrid/body/data_grid_cell_wrapper.js +127 -0
  51. package/optimize/es/components/datagrid/body/header/data_grid_header_row.js +3 -2
  52. package/optimize/es/components/datagrid/data_grid.js +8 -5
  53. package/optimize/es/components/datagrid/data_grid_types.js +18 -1
  54. package/optimize/es/components/datagrid/utils/row_heights.js +100 -31
  55. package/optimize/es/components/date_picker/auto_refresh/auto_refresh.js +2 -1
  56. package/optimize/es/components/form/range/dual_range.js +14 -7
  57. package/optimize/es/components/form/range/range.js +10 -3
  58. package/optimize/es/components/form/super_select/super_select.js +16 -12
  59. package/optimize/es/components/form/super_select/super_select_control.js +7 -14
  60. package/optimize/es/components/selectable/selectable.js +50 -34
  61. package/optimize/es/components/selectable/selectable_list/selectable_list.js +1 -1
  62. package/optimize/es/components/suggest/suggest.js +3 -10
  63. package/optimize/lib/components/datagrid/body/data_grid_body.js +16 -409
  64. package/optimize/lib/components/datagrid/body/data_grid_body_custom.js +198 -0
  65. package/optimize/lib/components/datagrid/body/data_grid_body_virtualized.js +342 -0
  66. package/optimize/lib/components/datagrid/body/data_grid_cell.js +12 -9
  67. package/optimize/lib/components/datagrid/body/data_grid_cell_popover.js +33 -19
  68. package/optimize/lib/components/datagrid/body/data_grid_cell_wrapper.js +144 -0
  69. package/optimize/lib/components/datagrid/body/header/data_grid_header_row.js +4 -2
  70. package/optimize/lib/components/datagrid/data_grid.js +8 -4
  71. package/optimize/lib/components/datagrid/data_grid_types.js +22 -1
  72. package/optimize/lib/components/datagrid/utils/row_heights.js +103 -37
  73. package/optimize/lib/components/date_picker/auto_refresh/auto_refresh.js +2 -1
  74. package/optimize/lib/components/form/range/dual_range.js +14 -7
  75. package/optimize/lib/components/form/range/range.js +10 -3
  76. package/optimize/lib/components/form/super_select/super_select.js +16 -11
  77. package/optimize/lib/components/form/super_select/super_select_control.js +7 -16
  78. package/optimize/lib/components/selectable/selectable.js +50 -35
  79. package/optimize/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  80. package/optimize/lib/components/suggest/suggest.js +3 -12
  81. package/package.json +1 -1
  82. package/src/components/datagrid/_data_grid.scss +7 -0
  83. package/src/components/datagrid/_data_grid_data_row.scss +1 -0
  84. package/src/components/datagrid/body/footer/_data_grid_footer_row.scss +1 -0
  85. package/src/components/datagrid/body/header/_data_grid_header_row.scss +1 -0
  86. package/src/components/form/super_select/_super_select_control.scss +4 -0
  87. package/src/components/selectable/selectable_list/_selectable_list.scss +10 -3
  88. package/src/themes/amsterdam/global_styling/mixins/_states.scss +17 -8
  89. package/test-env/components/color_picker/color_palette_picker/color_palette_picker.js +5 -6
  90. package/test-env/components/datagrid/body/data_grid_body.js +18 -415
  91. package/test-env/components/datagrid/body/data_grid_body_custom.js +908 -0
  92. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +1057 -0
  93. package/test-env/components/datagrid/body/data_grid_cell.js +16 -12
  94. package/test-env/components/datagrid/body/data_grid_cell_popover.js +33 -19
  95. package/test-env/components/datagrid/body/data_grid_cell_wrapper.js +144 -0
  96. package/test-env/components/datagrid/body/header/data_grid_header_row.js +4 -2
  97. package/test-env/components/datagrid/data_grid.js +21 -4
  98. package/test-env/components/datagrid/data_grid_types.js +22 -1
  99. package/test-env/components/datagrid/utils/row_heights.js +103 -37
  100. package/test-env/components/date_picker/auto_refresh/auto_refresh.js +2 -1
  101. package/test-env/components/form/range/dual_range.js +14 -7
  102. package/test-env/components/form/range/range.js +10 -3
  103. package/test-env/components/form/super_select/super_select.js +21 -17
  104. package/test-env/components/form/super_select/super_select_control.js +7 -16
  105. package/test-env/components/selectable/selectable.js +58 -36
  106. package/test-env/components/selectable/selectable_list/selectable_list.js +1 -1
  107. package/test-env/components/suggest/suggest.js +3 -12
@@ -598,7 +598,7 @@ EuiDataGridCellContent.propTypes = {
598
598
  */
599
599
  scrollAnchorRow: _propTypes.default.oneOf(["start", "center", undefined])
600
600
  }),
601
- rowHeightUtils: _propTypes.default.any,
601
+ rowHeightUtils: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.any.isRequired]),
602
602
  pagination: _propTypes.default.shape({
603
603
  /**
604
604
  * The index of the current page, starts at 0 for the first page
@@ -863,7 +863,8 @@ var EuiDataGridCell = /*#__PURE__*/function (_Component) {
863
863
  if (_this.isPopoverOpen()) {
864
864
  var _this$props$popoverCo2 = _this.props.popoverContext,
865
865
  setPopoverAnchor = _this$props$popoverCo2.setPopoverAnchor,
866
- setPopoverContent = _this$props$popoverCo2.setPopoverContent; // Set popover anchor
866
+ setPopoverContent = _this$props$popoverCo2.setPopoverContent,
867
+ setCellPopoverProps = _this$props$popoverCo2.setCellPopoverProps; // Set popover anchor
867
868
 
868
869
  var cellAnchorEl = _this.popoverAnchorRef.current;
869
870
  setPopoverAnchor(cellAnchorEl); // Set popover contents with cell content
@@ -889,7 +890,8 @@ var EuiDataGridCell = /*#__PURE__*/function (_Component) {
889
890
  cellActions: (0, _react2.jsx)(_data_grid_cell_actions.EuiDataGridCellPopoverActions, (0, _extends2.default)({}, sharedProps, {
890
891
  column: column
891
892
  })),
892
- DefaultCellPopover: _data_grid_cell_popover.DefaultCellPopover
893
+ DefaultCellPopover: _data_grid_cell_popover.DefaultCellPopover,
894
+ setCellPopoverProps: setCellPopoverProps
893
895
  }), (0, _react2.jsx)(CellElement, (0, _extends2.default)({}, sharedProps, {
894
896
  setCellProps: _this.setCellProps,
895
897
  isExpandable: true,
@@ -942,7 +944,7 @@ var EuiDataGridCell = /*#__PURE__*/function (_Component) {
942
944
  }, {
943
945
  key: "componentDidUpdate",
944
946
  value: function componentDidUpdate(prevProps) {
945
- var _this$props$rowHeight, _prevProps$rowHeights, _this$props$rowHeight2, _this$props$style, _prevProps$style;
947
+ var _this$props$rowHeight, _prevProps$rowHeights, _this$props$rowHeight2, _this$props$rowHeight3, _this$props$style, _prevProps$style;
946
948
 
947
949
  this.recalculateAutoHeight();
948
950
 
@@ -950,16 +952,17 @@ var EuiDataGridCell = /*#__PURE__*/function (_Component) {
950
952
  this.recalculateLineHeight();
951
953
  }
952
954
 
953
- if ((_this$props$rowHeight2 = this.props.rowHeightsOptions) !== null && _this$props$rowHeight2 !== void 0 && _this$props$rowHeight2.scrollAnchorRow && this.props.colIndex === 0 && // once per row
955
+ if ((_this$props$rowHeight2 = this.props.rowHeightUtils) !== null && _this$props$rowHeight2 !== void 0 && _this$props$rowHeight2.compensateForLayoutShift && (_this$props$rowHeight3 = this.props.rowHeightsOptions) !== null && _this$props$rowHeight3 !== void 0 && _this$props$rowHeight3.scrollAnchorRow && this.props.colIndex === 0 && // once per row
954
956
  this.props.columnId === prevProps.columnId && // if this is still the same column
955
957
  this.props.rowIndex === prevProps.rowIndex && // if this is still the same row
956
958
  ((_this$props$style = this.props.style) === null || _this$props$style === void 0 ? void 0 : _this$props$style.top) !== ((_prevProps$style = prevProps.style) === null || _prevProps$style === void 0 ? void 0 : _prevProps$style.top) // if the top position has changed
957
959
  ) {
958
- var _prevProps$style2, _this$props$style2, _this$props$rowHeight3, _this$props$rowHeight4;
960
+ var _prevProps$style2, _this$props$style2, _this$props$rowHeight4;
959
961
 
960
962
  var previousTop = parseFloat((_prevProps$style2 = prevProps.style) === null || _prevProps$style2 === void 0 ? void 0 : _prevProps$style2.top);
961
- var currentTop = parseFloat((_this$props$style2 = this.props.style) === null || _this$props$style2 === void 0 ? void 0 : _this$props$style2.top);
962
- (_this$props$rowHeight3 = this.props.rowHeightUtils) === null || _this$props$rowHeight3 === void 0 ? void 0 : _this$props$rowHeight3.compensateForLayoutShift(this.props.rowIndex, currentTop - previousTop, (_this$props$rowHeight4 = this.props.rowHeightsOptions) === null || _this$props$rowHeight4 === void 0 ? void 0 : _this$props$rowHeight4.scrollAnchorRow);
963
+ var currentTop = parseFloat((_this$props$style2 = this.props.style) === null || _this$props$style2 === void 0 ? void 0 : _this$props$style2.top); // @ts-ignore We've already checked that this virtualization util is available above
964
+
965
+ this.props.rowHeightUtils.compensateForLayoutShift(this.props.rowIndex, currentTop - previousTop, (_this$props$rowHeight4 = this.props.rowHeightsOptions) === null || _this$props$rowHeight4 === void 0 ? void 0 : _this$props$rowHeight4.scrollAnchorRow);
963
966
  }
964
967
 
965
968
  if (this.props.popoverContext.popoverIsOpen !== prevProps.popoverContext.popoverIsOpen || this.props.popoverContext.cellLocation !== prevProps.popoverContext.cellLocation || this.props.renderCellPopover !== prevProps.renderCellPopover) {
@@ -1047,8 +1050,8 @@ var EuiDataGridCell = /*#__PURE__*/function (_Component) {
1047
1050
  });
1048
1051
 
1049
1052
  cellProps.style = _objectSpread(_objectSpread({}, style), {}, {
1050
- // from react-window
1051
- top: 0,
1053
+ // set by react-window or the custom renderer
1054
+ top: style !== null && style !== void 0 && style.top ? 0 : undefined,
1052
1055
  // The cell's row will handle top positioning
1053
1056
  width: width,
1054
1057
  // column width, can be undefined
@@ -1595,7 +1598,8 @@ EuiDataGridCell.propTypes = {
1595
1598
  openCellPopover: _propTypes.default.func.isRequired,
1596
1599
  closeCellPopover: _propTypes.default.func.isRequired,
1597
1600
  setPopoverAnchor: _propTypes.default.func.isRequired,
1598
- setPopoverContent: _propTypes.default.func.isRequired
1601
+ setPopoverContent: _propTypes.default.func.isRequired,
1602
+ setCellPopoverProps: _propTypes.default.func.isRequired
1599
1603
  }).isRequired,
1600
1604
  renderCellValue: _propTypes.default.oneOfType([_propTypes.default.func.isRequired, _propTypes.default.func.isRequired]).isRequired,
1601
1605
  renderCellPopover: _propTypes.default.oneOfType([_propTypes.default.func.isRequired, _propTypes.default.func.isRequired]),
@@ -1638,7 +1642,7 @@ EuiDataGridCell.propTypes = {
1638
1642
  */
1639
1643
  scrollAnchorRow: _propTypes.default.oneOf(["start", "center", undefined])
1640
1644
  }),
1641
- rowHeightUtils: _propTypes.default.any,
1645
+ rowHeightUtils: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.any.isRequired]),
1642
1646
  rowManager: _propTypes.default.shape({
1643
1647
  getRow: _propTypes.default.func.isRequired
1644
1648
  }),
@@ -9,10 +9,16 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.useCellPopover = exports.JsonPopoverContent = exports.DefaultCellPopover = exports.DataGridCellPopoverContext = void 0;
11
11
 
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
12
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
17
 
14
18
  var _react = _interopRequireWildcard(require("react"));
15
19
 
20
+ var _classnames = _interopRequireDefault(require("classnames"));
21
+
16
22
  var _services = require("../../../services");
17
23
 
18
24
  var _popover = require("../../popover");
@@ -27,13 +33,10 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
27
33
 
28
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; }
29
35
 
30
- /*
31
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
32
- * or more contributor license agreements. Licensed under the Elastic License
33
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
34
- * in compliance with, at your election, the Elastic License 2.0 or the Server
35
- * Side Public License, v 1.
36
- */
36
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
37
+
38
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
39
+
37
40
  var DataGridCellPopoverContext = /*#__PURE__*/(0, _react.createContext)({
38
41
  popoverIsOpen: false,
39
42
  cellLocation: {
@@ -43,11 +46,14 @@ var DataGridCellPopoverContext = /*#__PURE__*/(0, _react.createContext)({
43
46
  openCellPopover: function openCellPopover() {},
44
47
  closeCellPopover: function closeCellPopover() {},
45
48
  setPopoverAnchor: function setPopoverAnchor() {},
46
- setPopoverContent: function setPopoverContent() {}
49
+ setPopoverContent: function setPopoverContent() {},
50
+ setCellPopoverProps: function setCellPopoverProps() {}
47
51
  });
48
52
  exports.DataGridCellPopoverContext = DataGridCellPopoverContext;
49
53
 
50
54
  var useCellPopover = function useCellPopover() {
55
+ var _cellPopoverProps$pan;
56
+
51
57
  // Current open state & cell location are handled here
52
58
  var _useState = (0, _react.useState)(false),
53
59
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -71,7 +77,13 @@ var useCellPopover = function useCellPopover() {
71
77
  var _useState7 = (0, _react.useState)(),
72
78
  _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
73
79
  popoverContent = _useState8[0],
74
- setPopoverContent = _useState8[1];
80
+ setPopoverContent = _useState8[1]; // Allow customization of most (not all) popover props by consumers
81
+
82
+
83
+ var _useState9 = (0, _react.useState)({}),
84
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
85
+ cellPopoverProps = _useState10[0],
86
+ setCellPopoverProps = _useState10[1];
75
87
 
76
88
  var closeCellPopover = (0, _react.useCallback)(function () {
77
89
  return setPopoverIsOpen(false);
@@ -101,20 +113,20 @@ var useCellPopover = function useCellPopover() {
101
113
  openCellPopover: openCellPopover,
102
114
  cellLocation: cellLocation,
103
115
  setPopoverAnchor: setPopoverAnchor,
104
- setPopoverContent: setPopoverContent
116
+ setPopoverContent: setPopoverContent,
117
+ setCellPopoverProps: setCellPopoverProps
105
118
  }; // Note that this popover is rendered once at the top grid level, rather than one popover per cell
106
119
 
107
- var cellPopover = popoverIsOpen && popoverAnchor && (0, _react2.jsx)(_popover.EuiWrappingPopover, {
120
+ var cellPopover = popoverIsOpen && popoverAnchor && (0, _react2.jsx)(_popover.EuiWrappingPopover, (0, _extends2.default)({
108
121
  isOpen: popoverIsOpen,
109
- button: popoverAnchor,
110
122
  display: "block",
111
123
  hasArrow: false,
112
- panelPaddingSize: "s",
113
- panelClassName: "euiDataGridRowCell__popover",
114
- panelProps: {
124
+ panelPaddingSize: "s"
125
+ }, cellPopoverProps, {
126
+ panelProps: _objectSpread({
115
127
  'data-test-subj': 'euiDataGridExpansionPopover'
116
- },
117
- closePopover: closeCellPopover,
128
+ }, cellPopoverProps.panelProps || {}),
129
+ panelClassName: (0, _classnames.default)('euiDataGridRowCell__popover', cellPopoverProps.panelClassName, (_cellPopoverProps$pan = cellPopoverProps.panelProps) === null || _cellPopoverProps$pan === void 0 ? void 0 : _cellPopoverProps$pan.className),
118
130
  onKeyDown: function onKeyDown(event) {
119
131
  if (event.key === _services.keys.F2 || event.key === _services.keys.ESCAPE) {
120
132
  event.preventDefault();
@@ -125,8 +137,10 @@ var useCellPopover = function useCellPopover() {
125
137
  return popoverAnchor.parentElement.focus();
126
138
  });
127
139
  }
128
- }
129
- }, popoverContent);
140
+ },
141
+ button: popoverAnchor,
142
+ closePopover: closeCellPopover
143
+ }), popoverContent);
130
144
  return {
131
145
  cellPopoverContext: cellPopoverContext,
132
146
  cellPopover: cellPopover
@@ -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;
@@ -23,6 +23,8 @@ var _data_grid_control_header_cell = require("./data_grid_control_header_cell");
23
23
 
24
24
  var _data_grid_header_cell = require("./data_grid_header_cell");
25
25
 
26
+ var _data_grid_types = require("../../data_grid_types");
27
+
26
28
  var _react2 = require("@emotion/react");
27
29
 
28
30
  var _excluded = ["leadingControlColumns", "trailingControlColumns", "columns", "schema", "schemaDetectors", "columnWidths", "defaultColumnWidth", "className", "setColumnWidth", "setVisibleColumns", "switchColumnPos", "headerIsInteractive", "data-test-subj"];
@@ -33,9 +35,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
33
35
 
34
36
  var EuiDataGridHeaderRow = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
35
37
  var _props$leadingControl = props.leadingControlColumns,
36
- leadingControlColumns = _props$leadingControl === void 0 ? [] : _props$leadingControl,
38
+ leadingControlColumns = _props$leadingControl === void 0 ? _data_grid_types.emptyControlColumns : _props$leadingControl,
37
39
  _props$trailingContro = props.trailingControlColumns,
38
- trailingControlColumns = _props$trailingContro === void 0 ? [] : _props$trailingContro,
40
+ trailingControlColumns = _props$trailingContro === void 0 ? _data_grid_types.emptyControlColumns : _props$trailingContro,
39
41
  columns = props.columns,
40
42
  schema = props.schema,
41
43
  schemaDetectors = props.schemaDetectors,
@@ -57,9 +57,11 @@ var _data_grid_schema = require("./utils/data_grid_schema");
57
57
 
58
58
  var _ref = require("./utils/ref");
59
59
 
60
+ var _data_grid_types = require("./data_grid_types");
61
+
60
62
  var _react2 = require("@emotion/react");
61
63
 
62
- var _excluded = ["leadingControlColumns", "trailingControlColumns", "columns", "columnVisibility", "schemaDetectors", "rowCount", "renderCellValue", "renderCellPopover", "renderFooterCellValue", "className", "gridStyle", "toolbarVisibility", "pagination", "sorting", "inMemory", "onColumnResize", "minSizeForControls", "height", "width", "rowHeightsOptions", "virtualizationOptions"],
64
+ var _excluded = ["leadingControlColumns", "trailingControlColumns", "columns", "columnVisibility", "schemaDetectors", "rowCount", "renderCellValue", "renderCellPopover", "renderFooterCellValue", "className", "gridStyle", "toolbarVisibility", "pagination", "sorting", "inMemory", "onColumnResize", "minSizeForControls", "height", "width", "rowHeightsOptions", "virtualizationOptions", "renderCustomGridBody"],
63
65
  _excluded2 = ["focusProps"];
64
66
 
65
67
  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); }
@@ -103,9 +105,9 @@ var EuiDataGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
103
105
  var _gridItemsRendered$cu;
104
106
 
105
107
  var _props$leadingControl = props.leadingControlColumns,
106
- leadingControlColumns = _props$leadingControl === void 0 ? [] : _props$leadingControl,
108
+ leadingControlColumns = _props$leadingControl === void 0 ? _data_grid_types.emptyControlColumns : _props$leadingControl,
107
109
  _props$trailingContro = props.trailingControlColumns,
108
- trailingControlColumns = _props$trailingContro === void 0 ? [] : _props$trailingContro,
110
+ trailingControlColumns = _props$trailingContro === void 0 ? _data_grid_types.emptyControlColumns : _props$trailingContro,
109
111
  columns = props.columns,
110
112
  columnVisibility = props.columnVisibility,
111
113
  schemaDetectors = props.schemaDetectors,
@@ -126,6 +128,7 @@ var EuiDataGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
126
128
  width = props.width,
127
129
  _rowHeightsOptions = props.rowHeightsOptions,
128
130
  virtualizationOptions = props.virtualizationOptions,
131
+ renderCustomGridBody = props.renderCustomGridBody,
129
132
  rest = (0, _objectWithoutProperties2.default)(props, _excluded);
130
133
  /**
131
134
  * Merge consumer settings with defaults
@@ -402,7 +405,8 @@ var EuiDataGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
402
405
  gridWidth: gridWidth,
403
406
  gridRef: gridRef,
404
407
  gridItemsRendered: gridItemsRendered,
405
- wrapperRef: contentRef
408
+ wrapperRef: contentRef,
409
+ renderCustomGridBody: renderCustomGridBody
406
410
  })), pagination && props['aria-labelledby'] && (0, _react2.jsx)("p", {
407
411
  id: ariaLabelledById,
408
412
  hidden: true
@@ -1058,6 +1062,19 @@ EuiDataGrid.propTypes = {
1058
1062
  */
1059
1063
  renderFooterCellValue: _propTypes.default.oneOfType([_propTypes.default.func.isRequired, _propTypes.default.func.isRequired]),
1060
1064
 
1065
+ /**
1066
+ * An optional function called to completely customize and control the rendering of
1067
+ * EuiDataGrid's body and cell placement. This can be used to, e.g. remove EuiDataGrid's
1068
+ * virtualization library, or roll your own.
1069
+ *
1070
+ * This component is **only** meant as an escape hatch for extremely custom use cases.
1071
+ *
1072
+ * Behind the scenes, this function is treated as a React component,
1073
+ * allowing hooks, context, and other React concepts to be used.
1074
+ * It receives #EuiDataGridCustomBodyProps as its only argument.
1075
+ */
1076
+ renderCustomGridBody: _propTypes.default.func,
1077
+
1061
1078
  /**
1062
1079
  * Defines the initial style of the grid. Accepts a partial #EuiDataGridStyle object.
1063
1080
  * Settings provided may be overwritten or merged with user defined preferences if `toolbarVisibility.showDisplaySelector.allowDensity = true` (which is the default).
@@ -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;