@elastic/eui 90.0.0 → 91.0.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 (232) hide show
  1. package/dist/eui_charts_theme.js +1 -15
  2. package/dist/eui_charts_theme.js.map +1 -1
  3. package/dist/eui_theme_dark.css +112 -80
  4. package/dist/eui_theme_dark.min.css +1 -1
  5. package/dist/eui_theme_light.css +112 -80
  6. package/dist/eui_theme_light.min.css +1 -1
  7. package/es/components/accordion/accordion.js +13 -2
  8. package/es/components/accordion/accordion_children/accordion_children.js +4 -3
  9. package/es/components/breadcrumbs/breadcrumb.js +5 -5
  10. package/es/components/breadcrumbs/breadcrumbs.js +5 -5
  11. package/es/components/button/button_display/_button_display.js +1 -1
  12. package/es/components/button/button_group/button_group.js +8 -10
  13. package/es/components/button/button_group/button_group_button.js +8 -51
  14. package/es/components/button/button_group/button_group_button.styles.js +2 -12
  15. package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +8 -0
  16. package/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +8 -3
  17. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +7 -3
  18. package/es/components/combo_box/combo_box.js +7 -5
  19. package/es/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  20. package/es/components/combo_box/combo_box_input/combo_box_pill.js +8 -18
  21. package/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  22. package/es/components/combo_box/utils.js +23 -0
  23. package/es/components/control_bar/control_bar.js +5 -5
  24. package/es/components/datagrid/body/header/data_grid_header_cell.js +1 -1
  25. package/es/components/datagrid/controls/column_selector.js +5 -6
  26. package/es/components/datagrid/controls/column_sorting.js +6 -9
  27. package/es/components/datagrid/controls/display_selector.js +21 -16
  28. package/es/components/datagrid/data_grid.js +3 -864
  29. package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +92 -26
  30. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +1 -1
  31. package/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  32. package/es/components/date_picker/super_date_picker/super_date_picker.js +19 -0
  33. package/es/components/facet/facet_button.js +1 -1
  34. package/es/components/filter_group/filter_group.styles.js +1 -1
  35. package/es/components/header/header_breadcrumbs/header_breadcrumbs.js +5 -5
  36. package/es/components/header/header_links/header_links.js +5 -5
  37. package/es/components/i18n/i18n.js +1 -0
  38. package/es/components/page/page_header/page_header_content.js +5 -5
  39. package/es/components/popover/input_popover.js +1 -1
  40. package/es/components/popover/popover.js +15 -27
  41. package/es/components/popover/popover_arrow/_popover_arrow.styles.js +2 -4
  42. package/es/components/popover/popover_panel/_popover_panel.js +2 -6
  43. package/es/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  44. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +13 -11
  45. package/es/components/toast/global_toast_list.js +11 -1
  46. package/es/components/tour/tour_step.js +5 -5
  47. package/es/global_styling/mixins/_states.js +4 -1
  48. package/es/services/color/eui_palettes.js +0 -6
  49. package/es/services/color/index.js +1 -1
  50. package/es/services/hooks/useCombinedRefs.js +16 -9
  51. package/es/services/index.js +1 -2
  52. package/es/test/rtl/component_helpers.d.ts +2 -0
  53. package/es/test/rtl/component_helpers.js +40 -1
  54. package/eui.d.ts +96 -82
  55. package/i18ntokens.json +199 -181
  56. package/lib/components/accordion/accordion.js +13 -2
  57. package/lib/components/accordion/accordion_children/accordion_children.js +4 -3
  58. package/lib/components/breadcrumbs/breadcrumb.js +5 -5
  59. package/lib/components/button/button_display/_button_display.js +1 -1
  60. package/lib/components/button/button_group/button_group.js +7 -9
  61. package/lib/components/button/button_group/button_group_button.js +8 -51
  62. package/lib/components/button/button_group/button_group_button.styles.js +2 -12
  63. package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +8 -0
  64. package/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +7 -2
  65. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +6 -2
  66. package/lib/components/combo_box/combo_box.js +7 -5
  67. package/lib/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  68. package/lib/components/combo_box/combo_box_input/combo_box_pill.js +8 -18
  69. package/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  70. package/lib/components/combo_box/utils.js +31 -0
  71. package/lib/components/datagrid/body/header/data_grid_header_cell.js +1 -1
  72. package/lib/components/datagrid/controls/column_selector.js +5 -6
  73. package/lib/components/datagrid/controls/column_sorting.js +5 -8
  74. package/lib/components/datagrid/controls/display_selector.js +21 -16
  75. package/lib/components/datagrid/data_grid.js +2 -863
  76. package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +91 -26
  77. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +1 -1
  78. package/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  79. package/lib/components/date_picker/super_date_picker/super_date_picker.js +19 -0
  80. package/lib/components/facet/facet_button.js +1 -1
  81. package/lib/components/filter_group/filter_group.styles.js +1 -1
  82. package/lib/components/i18n/i18n.js +1 -0
  83. package/lib/components/popover/input_popover.js +1 -1
  84. package/lib/components/popover/popover.js +29 -35
  85. package/lib/components/popover/popover_arrow/_popover_arrow.styles.js +1 -3
  86. package/lib/components/popover/popover_panel/_popover_panel.js +2 -1
  87. package/lib/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  88. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +12 -10
  89. package/lib/components/toast/global_toast_list.js +11 -1
  90. package/lib/global_styling/mixins/_states.js +4 -1
  91. package/lib/services/color/eui_palettes.js +1 -8
  92. package/lib/services/color/index.js +0 -7
  93. package/lib/services/hooks/useCombinedRefs.js +19 -10
  94. package/lib/services/index.js +0 -15
  95. package/lib/test/rtl/component_helpers.d.ts +2 -0
  96. package/lib/test/rtl/component_helpers.js +41 -3
  97. package/optimize/es/components/accordion/accordion.js +5 -2
  98. package/optimize/es/components/accordion/accordion_children/accordion_children.js +4 -3
  99. package/optimize/es/components/button/button_group/button_group.js +7 -8
  100. package/optimize/es/components/button/button_group/button_group_button.js +6 -38
  101. package/optimize/es/components/button/button_group/button_group_button.styles.js +2 -12
  102. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +8 -3
  103. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +7 -3
  104. package/optimize/es/components/combo_box/combo_box.js +7 -5
  105. package/optimize/es/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  106. package/optimize/es/components/combo_box/combo_box_input/combo_box_pill.js +8 -17
  107. package/optimize/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  108. package/optimize/es/components/combo_box/utils.js +23 -0
  109. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.js +1 -1
  110. package/optimize/es/components/datagrid/controls/column_selector.js +5 -6
  111. package/optimize/es/components/datagrid/controls/column_sorting.js +6 -9
  112. package/optimize/es/components/datagrid/controls/display_selector.js +21 -16
  113. package/optimize/es/components/datagrid/data_grid.js +3 -3
  114. package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +87 -26
  115. package/optimize/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  116. package/optimize/es/components/filter_group/filter_group.styles.js +1 -1
  117. package/optimize/es/components/i18n/i18n.js +1 -0
  118. package/optimize/es/components/popover/input_popover.js +1 -1
  119. package/optimize/es/components/popover/popover.js +10 -22
  120. package/optimize/es/components/popover/popover_arrow/_popover_arrow.styles.js +2 -4
  121. package/optimize/es/components/popover/popover_panel/_popover_panel.js +2 -1
  122. package/optimize/es/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  123. package/optimize/es/components/selectable/selectable_templates/selectable_template_sitewide.js +13 -11
  124. package/optimize/es/components/toast/global_toast_list.js +1 -1
  125. package/optimize/es/global_styling/mixins/_states.js +4 -1
  126. package/optimize/es/services/color/eui_palettes.js +0 -6
  127. package/optimize/es/services/color/index.js +1 -1
  128. package/optimize/es/services/hooks/useCombinedRefs.js +16 -9
  129. package/optimize/es/services/index.js +1 -2
  130. package/optimize/es/test/rtl/component_helpers.d.ts +2 -0
  131. package/optimize/es/test/rtl/component_helpers.js +40 -1
  132. package/optimize/lib/components/accordion/accordion.js +5 -2
  133. package/optimize/lib/components/accordion/accordion_children/accordion_children.js +4 -3
  134. package/optimize/lib/components/button/button_group/button_group.js +6 -7
  135. package/optimize/lib/components/button/button_group/button_group_button.js +6 -38
  136. package/optimize/lib/components/button/button_group/button_group_button.styles.js +2 -12
  137. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +7 -2
  138. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +6 -2
  139. package/optimize/lib/components/combo_box/combo_box.js +7 -5
  140. package/optimize/lib/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  141. package/optimize/lib/components/combo_box/combo_box_input/combo_box_pill.js +8 -17
  142. package/optimize/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  143. package/optimize/lib/components/combo_box/utils.js +31 -0
  144. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.js +1 -1
  145. package/optimize/lib/components/datagrid/controls/column_selector.js +5 -6
  146. package/optimize/lib/components/datagrid/controls/column_sorting.js +5 -8
  147. package/optimize/lib/components/datagrid/controls/display_selector.js +21 -16
  148. package/optimize/lib/components/datagrid/data_grid.js +2 -2
  149. package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +86 -26
  150. package/optimize/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  151. package/optimize/lib/components/filter_group/filter_group.styles.js +1 -1
  152. package/optimize/lib/components/i18n/i18n.js +1 -0
  153. package/optimize/lib/components/popover/input_popover.js +1 -1
  154. package/optimize/lib/components/popover/popover.js +24 -35
  155. package/optimize/lib/components/popover/popover_arrow/_popover_arrow.styles.js +1 -3
  156. package/optimize/lib/components/popover/popover_panel/_popover_panel.js +2 -1
  157. package/optimize/lib/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  158. package/optimize/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +12 -10
  159. package/optimize/lib/components/toast/global_toast_list.js +1 -1
  160. package/optimize/lib/global_styling/mixins/_states.js +4 -1
  161. package/optimize/lib/services/color/eui_palettes.js +1 -8
  162. package/optimize/lib/services/color/index.js +0 -7
  163. package/optimize/lib/services/hooks/useCombinedRefs.js +19 -10
  164. package/optimize/lib/services/index.js +0 -15
  165. package/optimize/lib/test/rtl/component_helpers.d.ts +2 -0
  166. package/optimize/lib/test/rtl/component_helpers.js +41 -3
  167. package/package.json +10 -10
  168. package/src/components/combo_box/_combo_box.scss +46 -14
  169. package/src/components/combo_box/combo_box_input/_combo_box_pill.scss +0 -17
  170. package/src/components/combo_box/combo_box_input/_index.scss +0 -2
  171. package/src/components/datagrid/_data_grid_data_row.scss +1 -2
  172. package/src/components/date_picker/super_date_picker/date_popover/_absolute_tab.scss +21 -0
  173. package/src/components/date_picker/super_date_picker/quick_select_popover/_quick_select_popover.scss +0 -4
  174. package/src/components/form/form_control_layout/_form_control_layout.scss +0 -1
  175. package/src/global_styling/variables/_typography.scss +2 -2
  176. package/test-env/components/accordion/accordion.js +13 -2
  177. package/test-env/components/accordion/accordion_children/accordion_children.js +4 -3
  178. package/test-env/components/breadcrumbs/breadcrumb.js +5 -5
  179. package/test-env/components/button/button_display/_button_display.js +1 -1
  180. package/test-env/components/button/button_group/button_group.js +7 -9
  181. package/test-env/components/button/button_group/button_group_button.js +8 -51
  182. package/test-env/components/button/button_group/button_group_button.styles.js +2 -12
  183. package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +8 -0
  184. package/test-env/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +7 -2
  185. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +6 -2
  186. package/test-env/components/combo_box/combo_box.js +7 -5
  187. package/test-env/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  188. package/test-env/components/combo_box/combo_box_input/combo_box_pill.js +8 -18
  189. package/test-env/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  190. package/test-env/components/combo_box/utils.js +31 -0
  191. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +1 -1
  192. package/test-env/components/datagrid/controls/column_selector.js +5 -6
  193. package/test-env/components/datagrid/controls/column_sorting.js +5 -8
  194. package/test-env/components/datagrid/controls/display_selector.js +21 -16
  195. package/test-env/components/datagrid/data_grid.js +2 -863
  196. package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +86 -26
  197. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +1 -1
  198. package/test-env/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  199. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +19 -0
  200. package/test-env/components/facet/facet_button.js +1 -1
  201. package/test-env/components/filter_group/filter_group.styles.js +1 -1
  202. package/test-env/components/i18n/i18n.js +1 -0
  203. package/test-env/components/popover/input_popover.js +1 -1
  204. package/test-env/components/popover/popover.js +29 -35
  205. package/test-env/components/popover/popover_arrow/_popover_arrow.styles.js +1 -3
  206. package/test-env/components/popover/popover_panel/_popover_panel.js +2 -1
  207. package/test-env/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  208. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +12 -10
  209. package/test-env/components/toast/global_toast_list.js +11 -1
  210. package/test-env/global_styling/mixins/_states.js +4 -1
  211. package/test-env/services/color/eui_palettes.js +1 -8
  212. package/test-env/services/color/index.js +0 -7
  213. package/test-env/services/hooks/useCombinedRefs.js +19 -10
  214. package/test-env/services/index.js +0 -15
  215. package/test-env/test/rtl/component_helpers.js +41 -3
  216. package/es/services/random.js +0 -94
  217. package/es/services/utils.js +0 -25
  218. package/es/test/patch_random.js +0 -18
  219. package/lib/services/random.js +0 -100
  220. package/lib/services/utils.js +0 -35
  221. package/lib/test/patch_random.js +0 -25
  222. package/optimize/es/services/random.js +0 -85
  223. package/optimize/es/services/utils.js +0 -25
  224. package/optimize/es/test/patch_random.js +0 -18
  225. package/optimize/lib/services/random.js +0 -91
  226. package/optimize/lib/services/utils.js +0 -35
  227. package/optimize/lib/test/patch_random.js +0 -25
  228. package/src/components/combo_box/combo_box_input/_combo_box_input.scss +0 -12
  229. package/src/components/combo_box/combo_box_input/_combo_box_placeholder.scss +0 -11
  230. package/test-env/services/random.js +0 -91
  231. package/test-env/services/utils.js +0 -35
  232. package/test-env/test/patch_random.js +0 -25
@@ -11,16 +11,17 @@ var _services = require("../../../services");
11
11
  var _accessibility = require("../../accessibility");
12
12
  var _form_control_layout = require("../../form/form_control_layout");
13
13
  var _num_icons = require("../../form/form_control_layout/_num_icons");
14
+ var _utils = require("../utils");
14
15
  var _combo_box_pill = require("./combo_box_pill");
15
16
  var _react2 = require("@emotion/react");
16
17
  var _excluded = ["key", "label", "color", "onClick", "append", "prepend", "truncationProps"];
17
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19
  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); }
19
20
  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; }
21
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
20
22
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
23
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
22
24
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
23
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
24
25
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
25
26
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
26
27
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -64,6 +65,7 @@ var EuiComboBoxInput = /*#__PURE__*/function (_Component) {
64
65
  });
65
66
  _defineProperty(_assertThisInitialized(_this), "updateInputSize", function (inputValue) {
66
67
  if (!_this.widthUtils) return;
68
+ if (_this.asPlainText) return;
67
69
  _this.widthUtils.setTextToCheck(inputValue);
68
70
  // Canvas has minute subpixel differences in rendering compared to DOM
69
71
  // We'll buffer the input by ~2px just to ensure sufficient width
@@ -89,65 +91,42 @@ var EuiComboBoxInput = /*#__PURE__*/function (_Component) {
89
91
  _defineProperty(_assertThisInitialized(_this), "onKeyDown", function (event) {
90
92
  var _this$props2 = _this.props,
91
93
  searchValue = _this$props2.searchValue,
94
+ hasSelectedOptions = _this$props2.hasSelectedOptions,
92
95
  selectedOptions = _this$props2.selectedOptions,
93
96
  onRemoveOption = _this$props2.onRemoveOption,
94
97
  singleSelection = _this$props2.singleSelection,
95
98
  isListOpen = _this$props2.isListOpen,
96
- onOpenListClick = _this$props2.onOpenListClick;
97
-
98
- // When backspacing from an empty input, delete the last pill option in the list
99
+ onOpenListClick = _this$props2.onOpenListClick,
100
+ onChange = _this$props2.onChange;
99
101
  var searchIsEmpty = !searchValue.length;
100
- var hasPills = selectedOptions.length;
101
- if (event.key === _services.keys.BACKSPACE && searchIsEmpty && hasPills) {
102
- onRemoveOption(selectedOptions[selectedOptions.length - 1]);
103
- if (!!singleSelection && !isListOpen) {
104
- onOpenListClick();
102
+ if (event.key === _services.keys.BACKSPACE) {
103
+ // When backspacing in a plain text combobox, change normally and remove the selection
104
+ if (_this.asPlainText) {
105
+ onChange(event.currentTarget.value);
106
+ if (hasSelectedOptions) {
107
+ onRemoveOption(selectedOptions[selectedOptions.length - 1]);
108
+ }
109
+ }
110
+ // When backspacing from an empty input, delete the last pill option in the list
111
+ else if (searchIsEmpty && hasSelectedOptions) {
112
+ onRemoveOption(selectedOptions[selectedOptions.length - 1]);
113
+ if (!!singleSelection && !isListOpen) {
114
+ onOpenListClick();
115
+ }
105
116
  }
106
117
  }
107
118
  });
108
- return _this;
109
- }
110
- _createClass(EuiComboBoxInput, [{
111
- key: "componentDidUpdate",
112
- value: function componentDidUpdate(prevProps) {
113
- if (prevProps.searchValue !== this.props.searchValue) {
114
- this.updateInputSize(this.props.searchValue);
115
- }
116
- }
117
- }, {
118
- key: "render",
119
- value: function render() {
120
- var _this$props3 = this.props,
121
- compressed = _this$props3.compressed,
122
- focusedOptionId = _this$props3.focusedOptionId,
123
- fullWidth = _this$props3.fullWidth,
124
- hasSelectedOptions = _this$props3.hasSelectedOptions,
125
- id = _this$props3.id,
126
- isDisabled = _this$props3.isDisabled,
127
- isListOpen = _this$props3.isListOpen,
128
- noIcon = _this$props3.noIcon,
129
- _onChange = _this$props3.onChange,
130
- onClear = _this$props3.onClear,
131
- onClick = _this$props3.onClick,
132
- onCloseListClick = _this$props3.onCloseListClick,
133
- onOpenListClick = _this$props3.onOpenListClick,
134
- onRemoveOption = _this$props3.onRemoveOption,
135
- placeholder = _this$props3.placeholder,
136
- rootId = _this$props3.rootId,
137
- searchValue = _this$props3.searchValue,
119
+ _defineProperty(_assertThisInitialized(_this), "renderPills", function () {
120
+ // Don't render a pill for plain text comboboxes - use the input instead
121
+ if (_this.asPlainText) return null;
122
+ // Don't render the single pill selection while searching
123
+ if (_this.props.singleSelection && _this.props.searchValue) return null;
124
+ var _this$props3 = _this.props,
138
125
  selectedOptions = _this$props3.selectedOptions,
139
- singleSelectionProp = _this$props3.singleSelection,
140
- value = _this$props3.value,
141
- prepend = _this$props3.prepend,
142
- append = _this$props3.append,
143
- isLoading = _this$props3.isLoading,
144
- isInvalid = _this$props3.isInvalid,
145
- autoFocus = _this$props3.autoFocus,
146
- ariaLabel = _this$props3['aria-label'],
147
- ariaLabelledby = _this$props3['aria-labelledby'];
148
- var singleSelection = Boolean(singleSelectionProp);
149
- var asPlainText = singleSelectionProp && _typeof(singleSelectionProp) === 'object' && singleSelectionProp.asPlainText || false;
150
- var pills = selectedOptions ? selectedOptions.map(function (option) {
126
+ isDisabled = _this$props3.isDisabled,
127
+ onRemoveOption = _this$props3.onRemoveOption;
128
+ if (!selectedOptions || !selectedOptions.length) return null;
129
+ return selectedOptions.map(function (option) {
151
130
  var key = option.key,
152
131
  label = option.label,
153
132
  color = option.color,
@@ -156,17 +135,77 @@ var EuiComboBoxInput = /*#__PURE__*/function (_Component) {
156
135
  prepend = option.prepend,
157
136
  truncationProps = option.truncationProps,
158
137
  rest = _objectWithoutProperties(option, _excluded);
159
- var pillOnClose = isDisabled || singleSelection || onClick ? undefined : onRemoveOption;
138
+ var pillOnClose = isDisabled || _this.props.singleSelection || onClick ? undefined : onRemoveOption;
160
139
  return (0, _react2.jsx)(_combo_box_pill.EuiComboBoxPill, _extends({
161
140
  option: option,
162
141
  onClose: pillOnClose,
163
142
  key: key !== null && key !== void 0 ? key : label.toLowerCase(),
164
143
  color: color,
165
144
  onClick: onClick,
166
- onClickAriaLabel: onClick ? 'Change' : undefined,
167
- asPlainText: asPlainText
145
+ onClickAriaLabel: onClick ? 'Change' : undefined
168
146
  }, rest), label);
169
- }) : null;
147
+ });
148
+ });
149
+ return _this;
150
+ }
151
+ _createClass(EuiComboBoxInput, [{
152
+ key: "componentDidUpdate",
153
+ value: function componentDidUpdate(prevProps) {
154
+ if (prevProps.searchValue !== this.props.searchValue) {
155
+ this.updateInputSize(this.props.searchValue);
156
+ }
157
+ }
158
+ }, {
159
+ key: "asPlainText",
160
+ get: function get() {
161
+ var singleSelection = this.props.singleSelection;
162
+ var isSingleSelectionConfig = singleSelection && _typeof(singleSelection) === 'object';
163
+ return !!(isSingleSelectionConfig && singleSelection.asPlainText);
164
+ }
165
+ }, {
166
+ key: "searchValue",
167
+ get: function get() {
168
+ var _this$props4 = this.props,
169
+ searchValue = _this$props4.searchValue,
170
+ selectedOptions = _this$props4.selectedOptions;
171
+ if (this.asPlainText) {
172
+ var _selectedOptions$;
173
+ return searchValue || (selectedOptions === null || selectedOptions === void 0 ? void 0 : (_selectedOptions$ = selectedOptions[0]) === null || _selectedOptions$ === void 0 ? void 0 : _selectedOptions$.label) || '';
174
+ } else {
175
+ return searchValue;
176
+ }
177
+ }
178
+ }, {
179
+ key: "render",
180
+ value: function render() {
181
+ var _this$props5 = this.props,
182
+ compressed = _this$props5.compressed,
183
+ focusedOptionId = _this$props5.focusedOptionId,
184
+ fullWidth = _this$props5.fullWidth,
185
+ hasSelectedOptions = _this$props5.hasSelectedOptions,
186
+ id = _this$props5.id,
187
+ isDisabled = _this$props5.isDisabled,
188
+ isListOpen = _this$props5.isListOpen,
189
+ noIcon = _this$props5.noIcon,
190
+ _onChange = _this$props5.onChange,
191
+ onClear = _this$props5.onClear,
192
+ onClick = _this$props5.onClick,
193
+ onFocus = _this$props5.onFocus,
194
+ onCloseListClick = _this$props5.onCloseListClick,
195
+ onOpenListClick = _this$props5.onOpenListClick,
196
+ placeholder = _this$props5.placeholder,
197
+ rootId = _this$props5.rootId,
198
+ searchValue = _this$props5.searchValue,
199
+ selectedOptions = _this$props5.selectedOptions,
200
+ singleSelection = _this$props5.singleSelection,
201
+ value = _this$props5.value,
202
+ prepend = _this$props5.prepend,
203
+ append = _this$props5.append,
204
+ isLoading = _this$props5.isLoading,
205
+ isInvalid = _this$props5.isInvalid,
206
+ autoFocus = _this$props5.autoFocus,
207
+ ariaLabel = _this$props5['aria-label'],
208
+ ariaLabelledby = _this$props5['aria-labelledby'];
170
209
  var removeOptionMessage;
171
210
  var removeOptionMessageId;
172
211
  if (this.state.hasFocus) {
@@ -183,12 +222,7 @@ var EuiComboBoxInput = /*#__PURE__*/function (_Component) {
183
222
  id: removeOptionMessageId
184
223
  }, removeOptionMessageContent));
185
224
  }
186
- var placeholderMessage;
187
- if (placeholder && selectedOptions && !selectedOptions.length && !searchValue) {
188
- placeholderMessage = (0, _react2.jsx)("p", {
189
- className: "euiComboBoxPlaceholder"
190
- }, placeholder);
191
- }
225
+ var showPlaceholder = placeholder && !(selectedOptions !== null && selectedOptions !== void 0 && selectedOptions.length) && !searchValue;
192
226
  var clickProps = {};
193
227
  if (!isDisabled && onClear && hasSelectedOptions) {
194
228
  clickProps.clear = {
@@ -218,6 +252,7 @@ var EuiComboBoxInput = /*#__PURE__*/function (_Component) {
218
252
  'euiComboBox__inputWrap--compressed': compressed,
219
253
  'euiComboBox__inputWrap--fullWidth': fullWidth,
220
254
  'euiComboBox__inputWrap--noWrap': singleSelection,
255
+ 'euiComboBox__inputWrap--plainText': this.asPlainText || showPlaceholder,
221
256
  'euiComboBox__inputWrap--inGroup': prepend || append
222
257
  });
223
258
  return (0, _react2.jsx)(_form_control_layout.EuiFormControlLayout, _extends({
@@ -235,7 +270,10 @@ var EuiComboBoxInput = /*#__PURE__*/function (_Component) {
235
270
  "data-test-subj": "comboBoxInput",
236
271
  onClick: onClick,
237
272
  tabIndex: -1 // becomes onBlur event's relatedTarget, otherwise relatedTarget is null when clicking on this div
238
- }, !singleSelection || !searchValue ? pills : null, placeholderMessage, (0, _react2.jsx)("input", {
273
+ }, this.renderPills(), (0, _react2.jsx)(_utils.EuiComboBoxOptionAppendPrepend, {
274
+ option: this.asPlainText ? selectedOptions === null || selectedOptions === void 0 ? void 0 : selectedOptions[0] : undefined,
275
+ classNamePrefix: "euiComboBoxPlainTextSelection"
276
+ }, (0, _react2.jsx)("input", {
239
277
  "aria-activedescendant": focusedOptionId,
240
278
  "aria-autocomplete": "list",
241
279
  "aria-controls": isListOpen ? rootId('listbox') : '',
@@ -256,11 +294,15 @@ var EuiComboBoxInput = /*#__PURE__*/function (_Component) {
256
294
  ref: this.inputRefCallback,
257
295
  role: "combobox",
258
296
  style: {
259
- inlineSize: this.state.inputWidth
297
+ inlineSize: this.asPlainText || showPlaceholder ? '100%' : this.state.inputWidth
260
298
  },
261
- value: searchValue,
299
+ placeholder: showPlaceholder ? placeholder : undefined,
300
+ value: this.searchValue,
262
301
  autoFocus: autoFocus
263
- }), removeOptionMessage));
302
+ // Force the menu to re-open on every input click - only necessary when plain text
303
+ ,
304
+ onClick: this.asPlainText ? onFocus : undefined // Type shenanigans - event should be mostly the same
305
+ })), removeOptionMessage));
264
306
  }
265
307
  }]);
266
308
  return EuiComboBoxInput;
@@ -9,8 +9,9 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
10
  var _badge = require("../../badge");
11
11
  var _i18n = require("../../i18n");
12
+ var _utils = require("../utils");
12
13
  var _react2 = require("@emotion/react");
13
- var _excluded = ["asPlainText", "children", "className", "color", "onClick", "onClickAriaLabel", "onClose", "option"];
14
+ var _excluded = ["children", "className", "color", "onClick", "onClickAriaLabel", "onClose", "option"];
14
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
16
  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); }
16
17
  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; }
@@ -62,7 +63,6 @@ var EuiComboBoxPill = /*#__PURE__*/function (_Component) {
62
63
  value: function render() {
63
64
  var _this2 = this;
64
65
  var _this$props2 = this.props,
65
- asPlainText = _this$props2.asPlainText,
66
66
  children = _this$props2.children,
67
67
  className = _this$props2.className,
68
68
  color = _this$props2.color,
@@ -71,20 +71,17 @@ var EuiComboBoxPill = /*#__PURE__*/function (_Component) {
71
71
  onClose = _this$props2.onClose,
72
72
  option = _this$props2.option,
73
73
  rest = _objectWithoutProperties(_this$props2, _excluded);
74
- var classes = (0, _classnames.default)('euiComboBoxPill', {
75
- 'euiComboBoxPill--plainText': asPlainText
76
- }, className);
74
+ var classes = (0, _classnames.default)('euiComboBoxPill', className);
77
75
  var onClickProps = onClick && onClickAriaLabel ? {
78
76
  onClick: onClick,
79
77
  onClickAriaLabel: onClickAriaLabel
80
78
  } : {};
81
- var content = (0, _react2.jsx)(_react.default.Fragment, null, option.prepend && (0, _react2.jsx)("span", {
82
- className: "euiComboBoxPill__prepend"
83
- }, option.prepend), (0, _react2.jsx)("span", {
79
+ var content = (0, _react2.jsx)(_utils.EuiComboBoxOptionAppendPrepend, {
80
+ option: option,
81
+ classNamePrefix: "euiComboBoxPill"
82
+ }, (0, _react2.jsx)("span", {
84
83
  className: "eui-textTruncate"
85
- }, children), option.append && (0, _react2.jsx)("span", {
86
- className: "euiComboBoxPill__append"
87
- }, option.append));
84
+ }, children));
88
85
  if (onClose) {
89
86
  return (0, _react2.jsx)(_i18n.EuiI18n, {
90
87
  token: "euiComboBoxPill.removeSelection",
@@ -105,12 +102,6 @@ var EuiComboBoxPill = /*#__PURE__*/function (_Component) {
105
102
  }, onClickProps, rest), content);
106
103
  });
107
104
  }
108
- if (asPlainText) {
109
- return (0, _react2.jsx)("span", _extends({
110
- className: classes,
111
- "data-test-subj": "euiComboBoxPill"
112
- }, rest), content);
113
- }
114
105
  return (0, _react2.jsx)(_badge.EuiBadge, _extends({
115
106
  className: classes,
116
107
  color: color,
@@ -126,7 +117,6 @@ _defineProperty(EuiComboBoxPill, "defaultProps", {
126
117
  color: 'hollow'
127
118
  });
128
119
  EuiComboBoxPill.propTypes = {
129
- asPlainText: _propTypes.default.bool,
130
120
  children: _propTypes.default.string,
131
121
  className: _propTypes.default.string,
132
122
  color: _propTypes.default.string,
@@ -19,6 +19,7 @@ var _filter_select_item = require("../../filter_group/filter_select_item");
19
19
  var _badge = require("../../badge");
20
20
  var _text_truncate = require("../../text_truncate");
21
21
  var _input_popover = require("../../popover/input_popover");
22
+ var _utils = require("../utils");
22
23
  var _react2 = require("@emotion/react");
23
24
  var _excluded = ["children"],
24
25
  _excluded2 = ["key", "isGroupLabelOption", "label", "value", "prepend", "append", "truncationProps"],
@@ -133,13 +134,12 @@ var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
133
134
  title: label
134
135
  }, rest), (0, _react2.jsx)("span", {
135
136
  className: "euiComboBoxOption__contentWrapper"
136
- }, prepend && (0, _react2.jsx)("span", {
137
- className: "euiComboBoxOption__prepend"
138
- }, prepend), (0, _react2.jsx)("span", {
137
+ }, (0, _react2.jsx)(_utils.EuiComboBoxOptionAppendPrepend, {
138
+ option: option,
139
+ classNamePrefix: "euiComboBoxOption"
140
+ }, (0, _react2.jsx)("span", {
139
141
  className: "euiComboBoxOption__content"
140
- }, renderOption ? renderOption(option, searchValue, 'euiComboBoxOption__renderOption') : _this.renderTruncatedOption(label, truncationProps)), append && (0, _react2.jsx)("span", {
141
- className: "euiComboBoxOption__append"
142
- }, append), optionIsFocused && !optionIsDisabled ? hitEnterBadge : null));
142
+ }, renderOption ? renderOption(option, searchValue, 'euiComboBoxOption__renderOption') : _this.renderTruncatedOption(label, truncationProps))), optionIsFocused && !optionIsDisabled ? hitEnterBadge : null));
143
143
  });
144
144
  _defineProperty(_assertThisInitialized(_this), "optionWidth", void 0);
145
145
  _defineProperty(_assertThisInitialized(_this), "setOptionWidth", function (width) {
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EuiComboBoxOptionAppendPrepend = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _react2 = require("@emotion/react");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ /*
11
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
12
+ * or more contributor license agreements. Licensed under the Elastic License
13
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
14
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
15
+ * Side Public License, v 1.
16
+ */
17
+
18
+ /**
19
+ * DRY util for rendering an option with its prepend and append properties
20
+ */
21
+ var EuiComboBoxOptionAppendPrepend = function EuiComboBoxOptionAppendPrepend(_ref) {
22
+ var children = _ref.children,
23
+ option = _ref.option,
24
+ classNamePrefix = _ref.classNamePrefix;
25
+ return (0, _react2.jsx)(_react.default.Fragment, null, (option === null || option === void 0 ? void 0 : option.prepend) && (0, _react2.jsx)("span", {
26
+ className: "".concat(classNamePrefix, "__prepend")
27
+ }, option.prepend), children, (option === null || option === void 0 ? void 0 : option.append) && (0, _react2.jsx)("span", {
28
+ className: "".concat(classNamePrefix, "__append")
29
+ }, option.append));
30
+ };
31
+ exports.EuiComboBoxOptionAppendPrepend = EuiComboBoxOptionAppendPrepend;
@@ -115,7 +115,7 @@ var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
115
115
  title: displayAsText || id
116
116
  }, display || displayAsText || id), sortingScreenReaderText && (0, _react2.jsx)(_accessibility2.EuiScreenReaderOnly, null, (0, _react2.jsx)("p", null, sortingScreenReaderText))) : (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_popover.EuiPopover, _extends({
117
117
  className: "eui-fullWidth",
118
- anchorClassName: "eui-fullWidth",
118
+ display: "block",
119
119
  panelPaddingSize: "none",
120
120
  offset: 7,
121
121
  button: (0, _react2.jsx)("button", {
@@ -129,7 +129,7 @@ var useDataGridColumnSelector = function useDataGridColumnSelector(availableColu
129
129
  return setIsOpen(!isOpen);
130
130
  }
131
131
  }, buttonText)
132
- }, (0, _react2.jsx)("div", null, allowColumnHiding && (0, _react2.jsx)(_popover.EuiPopoverTitle, null, (0, _react2.jsx)(_i18n.EuiI18n, {
132
+ }, allowColumnHiding && (0, _react2.jsx)(_popover.EuiPopoverTitle, null, (0, _react2.jsx)(_i18n.EuiI18n, {
133
133
  tokens: ['euiColumnSelector.search', 'euiColumnSelector.searchcolumns'],
134
134
  defaults: ['Search', 'Search columns']
135
135
  }, function (_ref3) {
@@ -146,13 +146,12 @@ var useDataGridColumnSelector = function useDataGridColumnSelector(availableColu
146
146
  },
147
147
  "data-test-subj": "dataGridColumnSelectorSearch"
148
148
  });
149
- })), (0, _react2.jsx)("div", {
150
- className: "euiDataGrid__controlScroll"
151
- }, (0, _react2.jsx)(_drag_and_drop.EuiDragDropContext, {
149
+ })), (0, _react2.jsx)(_drag_and_drop.EuiDragDropContext, {
152
150
  onDragEnd: onDragEnd
153
151
  }, (0, _react2.jsx)(_drag_and_drop.EuiDroppable, {
154
152
  droppableId: "columnOrder",
155
- isDropDisabled: !isDragEnabled
153
+ isDropDisabled: !isDragEnabled,
154
+ className: "euiDataGrid__controlScroll"
156
155
  }, (0, _react2.jsx)(_react.default.Fragment, null, filteredColumns.map(function (id, index) {
157
156
  return (0, _react2.jsx)(_drag_and_drop.EuiDraggable, {
158
157
  key: id,
@@ -205,7 +204,7 @@ var useDataGridColumnSelector = function useDataGridColumnSelector(availableColu
205
204
  color: "subdued"
206
205
  }))));
207
206
  });
208
- })))))), allowColumnHiding && (0, _react2.jsx)(_popover.EuiPopoverFooter, null, (0, _react2.jsx)(_flex.EuiFlexGroup, {
207
+ })))), allowColumnHiding && (0, _react2.jsx)(_popover.EuiPopoverFooter, null, (0, _react2.jsx)(_flex.EuiFlexGroup, {
209
208
  gutterSize: "s",
210
209
  responsive: false,
211
210
  justifyContent: "spaceBetween"
@@ -136,15 +136,12 @@ var useDataGridColumnSorting = function useDataGridColumnSorting(columns, sortin
136
136
  return setIsOpen(!isOpen);
137
137
  }
138
138
  }, sorting.columns.length > 0 ? sortingButtonTextActive : sortingButtonText)
139
- }, sorting.columns.length > 0 ? (0, _react2.jsx)("div", {
140
- role: "region",
141
- "aria-live": "assertive",
142
- className: "euiDataGrid__controlScroll"
143
- }, (0, _react2.jsx)(_drag_and_drop.EuiDragDropContext, {
139
+ }, sorting.columns.length > 0 ? (0, _react2.jsx)(_drag_and_drop.EuiDragDropContext, {
144
140
  onDragEnd: onDragEnd
145
141
  }, (0, _react2.jsx)(_drag_and_drop.EuiDroppable, {
146
- droppableId: "columnSorting"
147
- }, (0, _react2.jsx)(_react.Fragment, null, sorting.columns.map(function (_ref6, index) {
142
+ droppableId: "columnSorting",
143
+ className: "euiDataGrid__controlScroll"
144
+ }, (0, _react2.jsx)(_react.default.Fragment, null, sorting.columns.map(function (_ref6, index) {
148
145
  var id = _ref6.id,
149
146
  direction = _ref6.direction;
150
147
  return (0, _react2.jsx)(_column_sorting_draggable.EuiDataGridColumnSortingDraggable, {
@@ -157,7 +154,7 @@ var useDataGridColumnSorting = function useDataGridColumnSorting(columns, sortin
157
154
  schema: schema,
158
155
  schemaDetectors: schemaDetectors
159
156
  });
160
- }))))) : (0, _react2.jsx)(_text.EuiText, {
157
+ })))) : (0, _react2.jsx)(_text.EuiText, {
161
158
  size: "s",
162
159
  color: "subdued"
163
160
  }, (0, _react2.jsx)("p", {
@@ -88,6 +88,7 @@ var convertRowHeightsOptionsToSelection = function convertRowHeightsOptionsToSel
88
88
  }
89
89
  return rowHeightButtonOptions[0];
90
90
  };
91
+ var defaultLineCountValue = String(2);
91
92
  var useDataGridDisplaySelector = function useDataGridDisplaySelector(showDisplaySelector, initialStyles, initialRowHeightsOptions) {
92
93
  var _showDisplaySelector$, _rowHeightsOptions$de2;
93
94
  var _useState = (0, _react.useState)(false),
@@ -115,10 +116,10 @@ var useDataGridDisplaySelector = function useDataGridDisplaySelector(showDisplay
115
116
  }, []);
116
117
 
117
118
  // Row height logic
118
- var _useState7 = (0, _react.useState)(2),
119
+ var _useState7 = (0, _react.useState)(defaultLineCountValue),
119
120
  _useState8 = _slicedToArray(_useState7, 2),
120
- lineCount = _useState8[0],
121
- setLineCount = _useState8[1];
121
+ lineCountInput = _useState8[0],
122
+ setLineCountInput = _useState8[1];
122
123
  var setRowHeight = (0, _react.useCallback)(function (option) {
123
124
  var rowHeightsOptions = {
124
125
  rowHeights: {} // Unset all row-specific heights
@@ -128,25 +129,27 @@ var useDataGridDisplaySelector = function useDataGridDisplaySelector(showDisplay
128
129
  rowHeightsOptions.defaultHeight = 'auto';
129
130
  } else if (option === 'lineCount') {
130
131
  rowHeightsOptions.defaultHeight = {
131
- lineCount: lineCount
132
+ lineCount: Number(lineCountInput)
132
133
  };
133
134
  } else {
134
135
  rowHeightsOptions.defaultHeight = undefined;
135
136
  }
136
137
  setUserRowHeightsOptions(rowHeightsOptions);
137
- }, [lineCount]);
138
+ }, [lineCountInput]);
138
139
  var setLineCountHeight = (0, _react.useCallback)(function (event) {
140
+ setLineCountInput(event.currentTarget.value);
139
141
  var newLineCount = Number(event.currentTarget.value);
140
- if (newLineCount < 1) return; // Don't let users set a 0 or negative line count
141
142
 
142
- setLineCount(newLineCount);
143
- setUserRowHeightsOptions({
144
- rowHeights: {},
145
- // Unset all row-specific line counts
146
- defaultHeight: {
147
- lineCount: newLineCount
148
- }
149
- });
143
+ // Don't let users set a 0 or negative line count
144
+ if (newLineCount > 0) {
145
+ setUserRowHeightsOptions({
146
+ rowHeights: {},
147
+ // Unset all row-specific line counts
148
+ defaultHeight: {
149
+ lineCount: newLineCount
150
+ }
151
+ });
152
+ }
150
153
  }, []);
151
154
 
152
155
  // Merge the developer-specified configurations with user overrides
@@ -166,8 +169,9 @@ var useDataGridDisplaySelector = function useDataGridDisplaySelector(showDisplay
166
169
  }, [rowHeightsOptions]);
167
170
  (0, _react.useEffect)(function () {
168
171
  var _rowHeightsOptions$de;
172
+ setLineCountInput(
169
173
  // @ts-ignore - optional chaining operator handles types & cases that aren't lineCount
170
- setLineCount((rowHeightsOptions === null || rowHeightsOptions === void 0 ? void 0 : (_rowHeightsOptions$de = rowHeightsOptions.defaultHeight) === null || _rowHeightsOptions$de === void 0 ? void 0 : _rowHeightsOptions$de.lineCount) || 2);
174
+ (rowHeightsOptions === null || rowHeightsOptions === void 0 ? void 0 : (_rowHeightsOptions$de = rowHeightsOptions.defaultHeight) === null || _rowHeightsOptions$de === void 0 ? void 0 : _rowHeightsOptions$de.lineCount) || defaultLineCountValue);
171
175
  // @ts-ignore - same as above
172
176
  }, [rowHeightsOptions === null || rowHeightsOptions === void 0 ? void 0 : (_rowHeightsOptions$de2 = rowHeightsOptions.defaultHeight) === null || _rowHeightsOptions$de2 === void 0 ? void 0 : _rowHeightsOptions$de2.lineCount]);
173
177
 
@@ -299,7 +303,8 @@ var useDataGridDisplaySelector = function useDataGridDisplaySelector(showDisplay
299
303
  min: 1,
300
304
  max: 20,
301
305
  step: 1,
302
- value: lineCount,
306
+ required: true,
307
+ value: lineCountInput,
303
308
  onChange: setLineCountHeight,
304
309
  "data-test-subj": "lineCountNumber"
305
310
  })));