@elastic/eui 113.2.1 → 114.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 (142) hide show
  1. package/es/components/basic_table/collapsed_item_actions.js +2 -0
  2. package/es/components/button/split_button/split_button.js +13 -0
  3. package/es/components/button/split_button/split_button_actions.js +15 -0
  4. package/es/components/collapsible_nav/collapsible_nav.js +5 -0
  5. package/es/components/color_picker/color_picker.js +31 -8
  6. package/es/components/context_menu/context_menu_item.js +9 -3
  7. package/es/components/context_menu/context_menu_item.styles.js +6 -2
  8. package/es/components/datagrid/utils/scrolling.js +39 -10
  9. package/es/components/date_picker/super_date_picker/time_window_buttons.js +17 -3
  10. package/es/components/flyout/_flyout_overlay.js +34 -4
  11. package/es/components/flyout/const.js +10 -0
  12. package/es/components/flyout/flyout.component.js +49 -57
  13. package/es/components/flyout/flyout.js +10 -2
  14. package/es/components/flyout/flyout.styles.js +2 -2
  15. package/es/components/flyout/flyout_menu.js +19 -5
  16. package/es/components/flyout/flyout_resizable.js +5 -0
  17. package/es/components/flyout/manager/actions.js +12 -5
  18. package/es/components/flyout/manager/flyout_child.js +9 -2
  19. package/es/components/flyout/manager/flyout_managed.js +27 -14
  20. package/es/components/flyout/manager/reducer.js +251 -54
  21. package/es/components/flyout/manager/store.js +74 -12
  22. package/es/components/flyout/use_flyout_menu.js +70 -0
  23. package/es/components/form/file_picker/file_picker.js +46 -18
  24. package/es/components/markdown_editor/plugins/markdown_default_plugins/parsing_plugins.js +2 -1
  25. package/es/components/markdown_editor/plugins/remark/remark_intraword_underscore.js +172 -0
  26. package/es/components/overlay_mask/overlay_mask.js +10 -3
  27. package/es/components/tree_view/tree_view_item.styles.js +1 -1
  28. package/es/services/hooks/index.js +8 -8
  29. package/es/services/hooks/useIsPointerDown.js +6 -15
  30. package/es/services/index.js +1 -1
  31. package/eui.d.ts +477 -63
  32. package/i18ntokens.json +661 -643
  33. package/lib/components/basic_table/collapsed_item_actions.js +2 -0
  34. package/lib/components/button/split_button/split_button.js +13 -0
  35. package/lib/components/button/split_button/split_button_actions.js +15 -0
  36. package/lib/components/collapsible_nav/collapsible_nav.js +5 -0
  37. package/lib/components/color_picker/color_picker.js +30 -7
  38. package/lib/components/context_menu/context_menu_item.js +9 -3
  39. package/lib/components/context_menu/context_menu_item.styles.js +5 -1
  40. package/lib/components/datagrid/utils/scrolling.js +37 -8
  41. package/lib/components/date_picker/super_date_picker/time_window_buttons.js +17 -3
  42. package/lib/components/flyout/_flyout_overlay.js +33 -3
  43. package/lib/components/flyout/const.js +11 -1
  44. package/lib/components/flyout/flyout.component.js +48 -56
  45. package/lib/components/flyout/flyout.js +15 -1
  46. package/lib/components/flyout/flyout.styles.js +2 -2
  47. package/lib/components/flyout/flyout_menu.js +19 -5
  48. package/lib/components/flyout/flyout_resizable.js +5 -0
  49. package/lib/components/flyout/manager/actions.js +12 -5
  50. package/lib/components/flyout/manager/flyout_child.js +9 -2
  51. package/lib/components/flyout/manager/flyout_managed.js +19 -12
  52. package/lib/components/flyout/manager/reducer.js +250 -53
  53. package/lib/components/flyout/manager/store.js +74 -14
  54. package/lib/components/flyout/use_flyout_menu.js +75 -0
  55. package/lib/components/form/file_picker/file_picker.js +46 -18
  56. package/lib/components/markdown_editor/plugins/markdown_default_plugins/parsing_plugins.js +2 -1
  57. package/lib/components/markdown_editor/plugins/remark/remark_intraword_underscore.js +179 -0
  58. package/lib/components/overlay_mask/overlay_mask.js +10 -3
  59. package/lib/components/tree_view/tree_view_item.styles.js +1 -1
  60. package/lib/services/hooks/index.js +60 -91
  61. package/lib/services/hooks/useIsPointerDown.js +7 -14
  62. package/lib/services/index.js +70 -11
  63. package/optimize/es/components/basic_table/collapsed_item_actions.js +2 -0
  64. package/optimize/es/components/color_picker/color_picker.js +31 -8
  65. package/optimize/es/components/context_menu/context_menu_item.js +3 -2
  66. package/optimize/es/components/context_menu/context_menu_item.styles.js +6 -2
  67. package/optimize/es/components/datagrid/utils/scrolling.js +39 -10
  68. package/optimize/es/components/date_picker/super_date_picker/time_window_buttons.js +17 -3
  69. package/optimize/es/components/flyout/_flyout_overlay.js +34 -4
  70. package/optimize/es/components/flyout/const.js +10 -0
  71. package/optimize/es/components/flyout/flyout.component.js +49 -57
  72. package/optimize/es/components/flyout/flyout.js +5 -2
  73. package/optimize/es/components/flyout/flyout.styles.js +2 -2
  74. package/optimize/es/components/flyout/flyout_menu.js +7 -3
  75. package/optimize/es/components/flyout/manager/actions.js +12 -5
  76. package/optimize/es/components/flyout/manager/flyout_managed.js +18 -12
  77. package/optimize/es/components/flyout/manager/reducer.js +251 -54
  78. package/optimize/es/components/flyout/manager/store.js +69 -12
  79. package/optimize/es/components/flyout/use_flyout_menu.js +69 -0
  80. package/optimize/es/components/form/file_picker/file_picker.js +35 -18
  81. package/optimize/es/components/markdown_editor/plugins/markdown_default_plugins/parsing_plugins.js +2 -1
  82. package/optimize/es/components/markdown_editor/plugins/remark/remark_intraword_underscore.js +172 -0
  83. package/optimize/es/components/overlay_mask/overlay_mask.js +4 -2
  84. package/optimize/es/components/tree_view/tree_view_item.styles.js +1 -1
  85. package/optimize/es/services/hooks/index.js +8 -8
  86. package/optimize/es/services/hooks/useIsPointerDown.js +6 -10
  87. package/optimize/es/services/index.js +1 -1
  88. package/optimize/lib/components/basic_table/collapsed_item_actions.js +2 -0
  89. package/optimize/lib/components/color_picker/color_picker.js +30 -7
  90. package/optimize/lib/components/context_menu/context_menu_item.js +3 -2
  91. package/optimize/lib/components/context_menu/context_menu_item.styles.js +5 -1
  92. package/optimize/lib/components/datagrid/utils/scrolling.js +37 -8
  93. package/optimize/lib/components/date_picker/super_date_picker/time_window_buttons.js +17 -3
  94. package/optimize/lib/components/flyout/_flyout_overlay.js +33 -3
  95. package/optimize/lib/components/flyout/const.js +11 -1
  96. package/optimize/lib/components/flyout/flyout.component.js +48 -56
  97. package/optimize/lib/components/flyout/flyout.js +10 -1
  98. package/optimize/lib/components/flyout/flyout.styles.js +2 -2
  99. package/optimize/lib/components/flyout/flyout_menu.js +7 -3
  100. package/optimize/lib/components/flyout/manager/actions.js +12 -5
  101. package/optimize/lib/components/flyout/manager/flyout_managed.js +18 -12
  102. package/optimize/lib/components/flyout/manager/reducer.js +250 -53
  103. package/optimize/lib/components/flyout/manager/store.js +70 -12
  104. package/optimize/lib/components/flyout/use_flyout_menu.js +74 -0
  105. package/optimize/lib/components/form/file_picker/file_picker.js +35 -18
  106. package/optimize/lib/components/markdown_editor/plugins/markdown_default_plugins/parsing_plugins.js +2 -1
  107. package/optimize/lib/components/markdown_editor/plugins/remark/remark_intraword_underscore.js +179 -0
  108. package/optimize/lib/components/overlay_mask/overlay_mask.js +4 -2
  109. package/optimize/lib/components/tree_view/tree_view_item.styles.js +1 -1
  110. package/optimize/lib/services/hooks/index.js +60 -91
  111. package/optimize/lib/services/hooks/useIsPointerDown.js +5 -10
  112. package/optimize/lib/services/index.js +70 -11
  113. package/package.json +4 -4
  114. package/test-env/components/basic_table/collapsed_item_actions.js +2 -0
  115. package/test-env/components/button/split_button/split_button.js +13 -0
  116. package/test-env/components/button/split_button/split_button_actions.js +15 -0
  117. package/test-env/components/collapsible_nav/collapsible_nav.js +5 -0
  118. package/test-env/components/color_picker/color_picker.js +30 -7
  119. package/test-env/components/context_menu/context_menu_item.js +9 -3
  120. package/test-env/components/context_menu/context_menu_item.styles.js +5 -1
  121. package/test-env/components/datagrid/utils/scrolling.js +37 -8
  122. package/test-env/components/date_picker/super_date_picker/time_window_buttons.js +17 -3
  123. package/test-env/components/flyout/_flyout_overlay.js +33 -3
  124. package/test-env/components/flyout/const.js +11 -1
  125. package/test-env/components/flyout/flyout.component.js +48 -56
  126. package/test-env/components/flyout/flyout.styles.js +2 -2
  127. package/test-env/components/flyout/flyout_menu.js +19 -5
  128. package/test-env/components/flyout/flyout_resizable.js +5 -0
  129. package/test-env/components/flyout/manager/actions.js +12 -5
  130. package/test-env/components/flyout/manager/flyout_child.js +9 -2
  131. package/test-env/components/flyout/manager/flyout_managed.js +19 -12
  132. package/test-env/components/flyout/manager/reducer.js +250 -53
  133. package/test-env/components/flyout/manager/store.js +70 -12
  134. package/test-env/components/flyout/use_flyout_menu.js +74 -0
  135. package/test-env/components/form/file_picker/file_picker.js +46 -18
  136. package/test-env/components/markdown_editor/plugins/markdown_default_plugins/parsing_plugins.js +2 -1
  137. package/test-env/components/markdown_editor/plugins/remark/remark_intraword_underscore.js +179 -0
  138. package/test-env/components/overlay_mask/overlay_mask.js +10 -3
  139. package/test-env/components/tree_view/tree_view_item.styles.js +1 -1
  140. package/test-env/services/hooks/index.js +60 -91
  141. package/test-env/services/hooks/useIsPointerDown.js +5 -10
  142. package/test-env/services/index.js +70 -11
@@ -69,6 +69,16 @@ var _exportNames = {
69
69
  formatDate: true,
70
70
  formatNumber: true,
71
71
  formatText: true,
72
+ useDependentState: true,
73
+ useCombinedRefs: true,
74
+ setMultipleRefs: true,
75
+ useForceRender: true,
76
+ useLatest: true,
77
+ useDeepEqual: true,
78
+ isMouseEvent: true,
79
+ useMouseMove: true,
80
+ useUpdateEffect: true,
81
+ useEuiDisabledElement: true,
72
82
  isEvenlyDivisibleBy: true,
73
83
  isWithinRange: true,
74
84
  Pager: true,
@@ -426,6 +436,12 @@ Object.defineProperty(exports, "isEvenlyDivisibleBy", {
426
436
  return _number.isEvenlyDivisibleBy;
427
437
  }
428
438
  });
439
+ Object.defineProperty(exports, "isMouseEvent", {
440
+ enumerable: true,
441
+ get: function get() {
442
+ return _hooks.isMouseEvent;
443
+ }
444
+ });
429
445
  Object.defineProperty(exports, "isValidHex", {
430
446
  enumerable: true,
431
447
  get: function get() {
@@ -481,6 +497,12 @@ Object.defineProperty(exports, "saturate", {
481
497
  return _color.saturate;
482
498
  }
483
499
  });
500
+ Object.defineProperty(exports, "setMultipleRefs", {
501
+ enumerable: true,
502
+ get: function get() {
503
+ return _hooks.setMultipleRefs;
504
+ }
505
+ });
484
506
  Object.defineProperty(exports, "shade", {
485
507
  enumerable: true,
486
508
  get: function get() {
@@ -547,18 +569,48 @@ Object.defineProperty(exports, "useColorStopsState", {
547
569
  return _color_picker.useColorStopsState;
548
570
  }
549
571
  });
572
+ Object.defineProperty(exports, "useCombinedRefs", {
573
+ enumerable: true,
574
+ get: function get() {
575
+ return _hooks.useCombinedRefs;
576
+ }
577
+ });
550
578
  Object.defineProperty(exports, "useCurrentEuiBreakpoint", {
551
579
  enumerable: true,
552
580
  get: function get() {
553
581
  return _breakpoint.useCurrentEuiBreakpoint;
554
582
  }
555
583
  });
584
+ Object.defineProperty(exports, "useDeepEqual", {
585
+ enumerable: true,
586
+ get: function get() {
587
+ return _hooks.useDeepEqual;
588
+ }
589
+ });
590
+ Object.defineProperty(exports, "useDependentState", {
591
+ enumerable: true,
592
+ get: function get() {
593
+ return _hooks.useDependentState;
594
+ }
595
+ });
556
596
  Object.defineProperty(exports, "useEuiContainerQuery", {
557
597
  enumerable: true,
558
598
  get: function get() {
559
599
  return _container_query_hook.useEuiContainerQuery;
560
600
  }
561
601
  });
602
+ Object.defineProperty(exports, "useEuiDisabledElement", {
603
+ enumerable: true,
604
+ get: function get() {
605
+ return _hooks.useEuiDisabledElement;
606
+ }
607
+ });
608
+ Object.defineProperty(exports, "useForceRender", {
609
+ enumerable: true,
610
+ get: function get() {
611
+ return _hooks.useForceRender;
612
+ }
613
+ });
562
614
  Object.defineProperty(exports, "useGeneratedHtmlId", {
563
615
  enumerable: true,
564
616
  get: function get() {
@@ -583,6 +635,24 @@ Object.defineProperty(exports, "useIsWithinMinBreakpoint", {
583
635
  return _breakpoint.useIsWithinMinBreakpoint;
584
636
  }
585
637
  });
638
+ Object.defineProperty(exports, "useLatest", {
639
+ enumerable: true,
640
+ get: function get() {
641
+ return _hooks.useLatest;
642
+ }
643
+ });
644
+ Object.defineProperty(exports, "useMouseMove", {
645
+ enumerable: true,
646
+ get: function get() {
647
+ return _hooks.useMouseMove;
648
+ }
649
+ });
650
+ Object.defineProperty(exports, "useUpdateEffect", {
651
+ enumerable: true,
652
+ get: function get() {
653
+ return _hooks.useUpdateEffect;
654
+ }
655
+ });
586
656
  Object.defineProperty(exports, "wcagContrastMin", {
587
657
  enumerable: true,
588
658
  get: function get() {
@@ -661,17 +731,6 @@ Object.keys(_findElement).forEach(function (key) {
661
731
  var _focus_trap = require("./focus_trap");
662
732
  var _format = require("./format");
663
733
  var _hooks = require("./hooks");
664
- Object.keys(_hooks).forEach(function (key) {
665
- if (key === "default" || key === "__esModule") return;
666
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
667
- if (key in exports && exports[key] === _hooks[key]) return;
668
- Object.defineProperty(exports, key, {
669
- enumerable: true,
670
- get: function get() {
671
- return _hooks[key];
672
- }
673
- });
674
- });
675
734
  var _number = require("./number");
676
735
  var _paging = require("./paging");
677
736
  var _popover = require("./popover");
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elastic/eui",
3
3
  "description": "Elastic UI Component Library",
4
- "version": "113.2.1",
4
+ "version": "114.0.0",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "lib",
7
7
  "module": "es",
@@ -53,7 +53,7 @@
53
53
  "directory": "packages/eui"
54
54
  },
55
55
  "dependencies": {
56
- "@elastic/eui-theme-common": "8.1.0",
56
+ "@elastic/eui-theme-common": "9.0.0",
57
57
  "@elastic/prismjs-esql": "^1.1.2",
58
58
  "@hello-pangea/dnd": "^16.6.0",
59
59
  "@types/lodash": "^4.14.202",
@@ -108,7 +108,7 @@
108
108
  "@cypress/webpack-dev-server": "^1.7.0",
109
109
  "@elastic/charts": "^64.1.0",
110
110
  "@elastic/datemath": "^5.0.3",
111
- "@elastic/eui-theme-borealis": "6.1.0",
111
+ "@elastic/eui-theme-borealis": "7.0.0",
112
112
  "@emotion/babel-preset-css-prop": "^11.11.0",
113
113
  "@emotion/cache": "^11.11.0",
114
114
  "@emotion/css": "^11.11.0",
@@ -256,7 +256,7 @@
256
256
  },
257
257
  "peerDependencies": {
258
258
  "@elastic/datemath": "^5.0.2",
259
- "@elastic/eui-theme-borealis": "6.1.0",
259
+ "@elastic/eui-theme-borealis": "7.0.0",
260
260
  "@emotion/css": "11.x",
261
261
  "@emotion/react": "11.x",
262
262
  "@types/react": "^17.0 || ^18.0",
@@ -69,6 +69,7 @@ var CollapsedItemActions = exports.CollapsedItemActions = function CollapsedItem
69
69
  var toolTipContent = (0, _action_types.callWithItemIfFunction)(item)(action.description);
70
70
  var href = (0, _action_types.callWithItemIfFunction)(item)(action.href);
71
71
  var dataTestSubj = (0, _action_types.callWithItemIfFunction)(item)(action['data-test-subj']);
72
+ var color = action.color ? (0, _action_types.callWithItemIfFunction)(item)(action.color) : undefined;
72
73
  var _onClick = action.onClick,
73
74
  target = action.target;
74
75
  controls.push((0, _react2.jsx)(_context_menu.EuiContextMenuItem, {
@@ -78,6 +79,7 @@ var CollapsedItemActions = exports.CollapsedItemActions = function CollapsedItem
78
79
  href: href,
79
80
  target: target,
80
81
  icon: icon,
82
+ color: color,
81
83
  "data-test-subj": dataTestSubj,
82
84
  onClick: function onClick(event) {
83
85
  event.persist();
@@ -100,6 +100,19 @@ _EuiSplitButton.propTypes = {
100
100
  "aria-label": _propTypes.default.string,
101
101
  "data-test-subj": _propTypes.default.string,
102
102
  css: _propTypes.default.any,
103
+ /**
104
+ * Controls the disabled behavior via the native `disabled` attribute.
105
+ */
106
+ isDisabled: _propTypes.default.bool,
107
+ /**
108
+ * NOTE: Beta feature, may be changed or removed in the future
109
+ *
110
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
111
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
112
+ *
113
+ * Use e.g. when a disabled button should have a tooltip.
114
+ */
115
+ hasAriaDisabled: _propTypes.default.bool,
103
116
  size: _propTypes.default.any,
104
117
  color: _propTypes.default.any,
105
118
  fill: _propTypes.default.bool,
@@ -66,6 +66,19 @@ var EuiSplitButtonActionPrimary = exports.EuiSplitButtonActionPrimary = function
66
66
  return tooltipProps ? (0, _react2.jsx)(_tool_tip.EuiToolTip, tooltipProps, button) : button;
67
67
  };
68
68
  EuiSplitButtonActionPrimary.propTypes = {
69
+ /**
70
+ * Controls the disabled behavior via the native `disabled` attribute.
71
+ */
72
+ isDisabled: _propTypes.default.bool,
73
+ /**
74
+ * NOTE: Beta feature, may be changed or removed in the future
75
+ *
76
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
77
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
78
+ *
79
+ * Use e.g. when a disabled button should have a tooltip.
80
+ */
81
+ hasAriaDisabled: _propTypes.default.bool,
69
82
  /**
70
83
  * Enables rendering an `EuiToolTip` with the passed props.
71
84
  */
@@ -108,6 +121,8 @@ var EuiSplitButtonActionSecondary = exports.EuiSplitButtonActionSecondary = func
108
121
  })) : action;
109
122
  };
110
123
  EuiSplitButtonActionSecondary.propTypes = {
124
+ isDisabled: _propTypes.default.bool,
125
+ hasAriaDisabled: _propTypes.default.bool,
111
126
  /**
112
127
  * Enables rendering an `EuiToolTip` with the passed props.
113
128
  */
@@ -129,6 +129,11 @@ EuiCollapsibleNav.propTypes = {
129
129
  * @default undefined (auto-inherit when nested, otherwise 'never')
130
130
  */
131
131
  session: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.any.isRequired, _propTypes.default.any.isRequired]),
132
+ /**
133
+ * Optional Symbol to scope flyout history. Only flyouts that receive the same Symbol reference share Back button and history; omit to get a unique group per session.
134
+ * @default undefined (each session gets a unique key and does not share history)
135
+ */
136
+ historyKey: _propTypes.default.any,
132
137
  /**
133
138
  * Callback fired when the flyout becomes active/visible, which may happen programmatically from history navigation.
134
139
  */
@@ -96,9 +96,12 @@ var EuiColorPicker = exports.EuiColorPicker = function EuiColorPicker(_ref) {
96
96
  _ref$isClearable = _ref.isClearable,
97
97
  isClearable = _ref$isClearable === void 0 ? false : _ref$isClearable,
98
98
  placeholder = _ref.placeholder,
99
- dataTestSubj = _ref['data-test-subj'];
100
- var _useEuiI18n = (0, _i18n.useEuiI18n)(['euiColorPicker.popoverLabel', 'euiColorPicker.colorLabel', 'euiColorPicker.selectedColorLabel', 'euiColorPicker.colorErrorMessage', 'euiColorPicker.transparent', 'euiColorPicker.alphaLabel', 'euiColorPicker.openLabel', 'euiColorPicker.closeLabel'], ['Color selection dialog', 'Color value', 'Selected color', 'Invalid color value', 'Transparent', 'Alpha channel (opacity) value', 'Press the escape key to close the popover', 'Press the down key to open a popover containing color options']),
101
- _useEuiI18n2 = (0, _slicedToArray2.default)(_useEuiI18n, 8),
99
+ dataTestSubj = _ref['data-test-subj'],
100
+ _ariaLabel = _ref['aria-label'],
101
+ ariaLabelledby = _ref['aria-labelledby'],
102
+ ariaDescribedby = _ref['aria-describedby'];
103
+ var _useEuiI18n = (0, _i18n.useEuiI18n)(['euiColorPicker.popoverLabel', 'euiColorPicker.colorLabel', 'euiColorPicker.selectedColorLabel', 'euiColorPicker.colorErrorMessage', 'euiColorPicker.transparent', 'euiColorPicker.alphaLabel', 'euiColorPicker.openLabel', 'euiColorPicker.closeLabel', 'euiColorPicker.ariaLabel'], ['Color selection dialog', 'Color value', 'Selected color', 'Invalid color value', 'Transparent', 'Alpha channel (opacity) value', 'Press the escape key to close the popover', 'Press the down key to open a popover containing color options', 'Select a color']),
104
+ _useEuiI18n2 = (0, _slicedToArray2.default)(_useEuiI18n, 9),
102
105
  popoverLabel = _useEuiI18n2[0],
103
106
  colorLabel = _useEuiI18n2[1],
104
107
  selectedColorLabel = _useEuiI18n2[2],
@@ -106,7 +109,16 @@ var EuiColorPicker = exports.EuiColorPicker = function EuiColorPicker(_ref) {
106
109
  transparent = _useEuiI18n2[4],
107
110
  alphaLabel = _useEuiI18n2[5],
108
111
  openLabel = _useEuiI18n2[6],
109
- closeLabel = _useEuiI18n2[7];
112
+ closeLabel = _useEuiI18n2[7],
113
+ ariaLabel = _useEuiI18n2[8];
114
+ var openLabelId = (0, _services.useGeneratedHtmlId)({
115
+ prefix: 'colorPicker',
116
+ suffix: 'openLabel'
117
+ });
118
+ var closeLabelId = (0, _services.useGeneratedHtmlId)({
119
+ prefix: 'colorPicker',
120
+ suffix: 'closeLabel'
121
+ });
110
122
  var defaultSwatches = (0, _services.useEuiPaletteColorBlind)();
111
123
  var swatches = _swatches !== null && _swatches !== void 0 ? _swatches : defaultSwatches;
112
124
  var preferredFormat = (0, _react.useMemo)(function () {
@@ -435,10 +447,21 @@ var EuiColorPicker = exports.EuiColorPicker = function EuiColorPicker(_ref) {
435
447
  readOnly: readOnly,
436
448
  fullWidth: fullWidth,
437
449
  autoComplete: "off",
438
- "data-test-subj": testSubjAnchor,
439
- "aria-label": isColorSelectorShown ? openLabel : closeLabel,
450
+ "data-test-subj": testSubjAnchor
451
+ // if an id is provided it might be used in combination with `htmlFor` on a label,
452
+ // so we don't want to override it with a fallback `aria-label`
453
+ ,
454
+ "aria-label": _ariaLabel ? _ariaLabel : id || ariaLabelledby ? undefined : ariaLabel,
455
+ "aria-labelledby": ariaLabelledby,
456
+ "aria-describedby": (0, _classnames.default)(isColorSelectorShown ? openLabelId : closeLabelId, ariaDescribedby),
440
457
  controlOnly: true // Don't need two EuiFormControlwrappers
441
- }));
458
+ }), (0, _react2.jsx)(_accessibility.EuiScreenReaderOnly, null, (0, _react2.jsx)("span", null, (0, _react2.jsx)("span", {
459
+ id: openLabelId,
460
+ "aria-hidden": !isColorSelectorShown
461
+ }, openLabel), (0, _react2.jsx)("span", {
462
+ id: closeLabelId,
463
+ "aria-hidden": isColorSelectorShown
464
+ }, closeLabel))));
442
465
  }
443
466
  return display === 'inline' ? (0, _react2.jsx)("div", {
444
467
  css: styles.euiColorPicker,
@@ -17,7 +17,7 @@ var _icon = require("../icon");
17
17
  var _tool_tip = require("../tool_tip");
18
18
  var _context_menu_item = require("./context_menu_item.styles");
19
19
  var _react2 = require("@emotion/react");
20
- var _excluded = ["children", "className", "hasPanel", "icon", "buttonRef", "disabled", "layoutAlign", "toolTipContent", "toolTipProps", "href", "target", "rel", "size"];
20
+ var _excluded = ["children", "className", "hasPanel", "icon", "buttonRef", "disabled", "layoutAlign", "toolTipContent", "toolTipProps", "href", "target", "rel", "size", "color"];
21
21
  /*
22
22
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
23
23
  * or more contributor license agreements. Licensed under the Elastic License
@@ -48,12 +48,13 @@ var EuiContextMenuItem = exports.EuiContextMenuItem = function EuiContextMenuIte
48
48
  rel = _ref.rel,
49
49
  _ref$size = _ref.size,
50
50
  size = _ref$size === void 0 ? 'm' : _ref$size,
51
+ color = _ref.color,
51
52
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
52
53
  var isHrefValid = !href || (0, _href_validator.validateHref)(href);
53
54
  var disabled = _disabled || !isHrefValid;
54
55
  var classes = (0, _classnames.default)('euiContextMenuItem', className);
55
56
  var styles = (0, _services.useEuiMemoizedStyles)(_context_menu_item.euiContextMenuItemStyles);
56
- var cssStyles = [styles.euiContextMenuItem, styles.sizes[size], styles.layoutAlign[layoutAlign], disabled && styles.disabled];
57
+ var cssStyles = [styles.euiContextMenuItem, styles.sizes[size], styles.layoutAlign[layoutAlign], disabled && styles.disabled, !disabled && color && styles.colors[color]];
57
58
  var iconInstance = icon && (typeof icon === 'string' ? (0, _react2.jsx)(_icon.EuiIcon, {
58
59
  type: icon,
59
60
  size: "m",
@@ -149,5 +150,10 @@ EuiContextMenuItem.propTypes = {
149
150
  /**
150
151
  * Reduce the size to `s` when in need of a more compressed menu
151
152
  */
152
- size: _propTypes.default.any
153
+ size: _propTypes.default.any,
154
+ /**
155
+ * Applies a color to the text and icon of the item.
156
+ * Accepts the same color values as `EuiButtonEmpty`.
157
+ */
158
+ color: _propTypes.default.any
153
159
  };
@@ -81,6 +81,10 @@ var euiContextMenuItemStyles = exports.euiContextMenuItemStyles = function euiCo
81
81
  euiContextMenuItem__text: _ref2,
82
82
  s: /*#__PURE__*/(0, _react.css)((0, _global_styling.euiFontSize)(euiThemeContext, 's'), ";;label:s;")
83
83
  },
84
- euiContextMenuItem__arrow: _ref
84
+ euiContextMenuItem__arrow: _ref,
85
+ // Colors - maps button color names to text color overrides
86
+ colors: Object.fromEntries(_global_styling.EXTENDED_BUTTON_COLORS.map(function (color) {
87
+ return [color, /*#__PURE__*/(0, _react.css)("color:", (0, _global_styling.euiButtonEmptyColor)(euiThemeContext, color).color, ";;label:colors;")];
88
+ }))
85
89
  };
86
90
  };
@@ -10,6 +10,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
10
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
11
  var _react = _interopRequireWildcard(require("react"));
12
12
  var _services = require("../../../services");
13
+ var _hooks = require("../../../services/hooks");
13
14
  var _global_styling = require("../../../global_styling");
14
15
  var _cell = require("../body/cell");
15
16
  var _focus = require("./focus");
@@ -37,20 +38,48 @@ var useScroll = exports.useScroll = function useScroll(args) {
37
38
  scrollCellIntoView = _useScrollCellIntoVie.scrollCellIntoView;
38
39
  var _useContext = (0, _react.useContext)(_focus.DataGridFocusContext),
39
40
  focusedCell = _useContext.focusedCell;
40
- var isPointerDown = (0, _services.useIsPointerDown)(args.outerGridRef);
41
+ var isPointerDownRef = (0, _hooks.useIsPointerDown)(args.outerGridRef);
42
+
43
+ /**
44
+ * Set when `focusedCell` changes while the pointer is held down (e.g. clicking a cell).
45
+ * Allows the `pointerup` listener below to scroll on release without
46
+ * causing snap-back when the user scrolls the grid without changing focus.
47
+ */
48
+ var pendingScrollRef = (0, _react.useRef)(false);
41
49
  (0, _react.useEffect)(function () {
42
- if (focusedCell) {
50
+ if (!focusedCell) return;
51
+ if (isPointerDownRef.current) {
52
+ // Pointer is down - defer scroll decision to the pointerup listener
53
+ pendingScrollRef.current = true;
54
+ return;
55
+ }
56
+ scrollCellIntoView({
57
+ rowIndex: focusedCell[1],
58
+ colIndex: focusedCell[0]
59
+ });
60
+ }, [focusedCell, scrollCellIntoView, isPointerDownRef]);
61
+ (0, _react.useEffect)(function () {
62
+ var handlePointerUp = function handlePointerUp() {
43
63
  var _window;
44
- // do not scroll if text is being selected
45
- if (isPointerDown || ((_window = window) === null || _window === void 0 || (_window = _window.getSelection()) === null || _window === void 0 ? void 0 : _window.type) === 'Range') {
46
- return;
47
- }
64
+ if (!pendingScrollRef.current || !focusedCell) return;
65
+ pendingScrollRef.current = false;
66
+
67
+ // Skip if the interaction resulted in text being selected
68
+ if (((_window = window) === null || _window === void 0 || (_window = _window.getSelection()) === null || _window === void 0 ? void 0 : _window.type) === 'Range') return;
48
69
  scrollCellIntoView({
49
70
  rowIndex: focusedCell[1],
50
71
  colIndex: focusedCell[0]
51
72
  });
52
- }
53
- }, [focusedCell, isPointerDown, scrollCellIntoView]);
73
+ };
74
+ document.addEventListener('pointerup', handlePointerUp, {
75
+ capture: true
76
+ });
77
+ return function () {
78
+ return document.removeEventListener('pointerup', handlePointerUp, {
79
+ capture: true
80
+ });
81
+ };
82
+ }, [focusedCell, scrollCellIntoView]);
54
83
  var _useContext2 = (0, _react.useContext)(_cell.DataGridCellPopoverContext),
55
84
  popoverIsOpen = _useContext2.popoverIsOpen,
56
85
  cellLocation = _useContext2.cellLocation;
@@ -160,11 +160,20 @@ var EuiTimeWindowButtons = exports.EuiTimeWindowButtons = function EuiTimeWindow
160
160
  function useEuiTimeWindow(start, end, apply, options) {
161
161
  var _options$zoomFactor;
162
162
  var min = _datemath.default.parse(start);
163
+
164
+ /* `roundUp: true` will result in an "inclusive" time (e.g. 23:59:59.999 for 'now/d').
165
+ It only changes the value for relative expressions (e.g. 'now/d') but not absolute ISO strings. */
163
166
  var max = _datemath.default.parse(end, {
164
167
  roundUp: true
165
168
  });
166
169
  var isInvalid = !min || !min.isValid() || !max || !max.isValid();
167
- var windowDuration = isInvalid ? -1 : max.diff(min);
170
+ /* An end at .999ms is always considered an inclusive boundary (either as result of `roundUp: true`
171
+ or entered manually).
172
+ To avoid a 1ms drift on every time window or zoom step, windowDuration has to be increased by 1ms.
173
+ This ensures the window is always at a clean boundary (e.g. 00:00:00.000 - 23:59:59.999). */
174
+ var isInclusiveBoundary = !isInvalid && max.milliseconds() === 999;
175
+ var endBoundary = !isInvalid ? isInclusiveBoundary ? (0, _moment.default)(max).add(1, 'ms') : (0, _moment.default)(max) : null;
176
+ var windowDuration = isInvalid || !endBoundary ? -1 : endBoundary.diff(min);
168
177
  var isWindowDurationZero = windowDuration === 0;
169
178
  var zoomFactor = getPercentageMultiplier((_options$zoomFactor = options === null || options === void 0 ? void 0 : options.zoomFactor) !== null && _options$zoomFactor !== void 0 ? _options$zoomFactor : ZOOM_FACTOR_DEFAULT);
170
179
  var zoomDelta = windowDuration * (zoomFactor / 2); // Gets added to each end, that's why it's split in half
@@ -185,7 +194,10 @@ function useEuiTimeWindow(start, end, apply, options) {
185
194
  function stepForward() {
186
195
  if (isInvalid || isWindowDurationZero) return;
187
196
  apply({
188
- start: (0, _moment.default)(max).toISOString(),
197
+ /* Prevent 1ms drifts for inclusive boundaries by using the exclusive max (+ 1ms)
198
+ as the start of the next window (e.g. 00:00:00.000 instead of 23:59:59.999) */
199
+ start: (isInclusiveBoundary ? endBoundary // `!` is safe here because we early return on `isInvalid`
200
+ : (0, _moment.default)(max)).toISOString(),
189
201
  end: (0, _moment.default)(max).add(windowDuration, 'ms').toISOString()
190
202
  });
191
203
  }
@@ -193,7 +205,9 @@ function useEuiTimeWindow(start, end, apply, options) {
193
205
  if (isInvalid || isWindowDurationZero) return;
194
206
  apply({
195
207
  start: (0, _moment.default)(min).subtract(windowDuration, 'ms').toISOString(),
196
- end: (0, _moment.default)(min).toISOString()
208
+ /* Prevent 1ms drifts for inclusive boundaries by using the exclusive min (- 1ms)
209
+ as the end of the previous window (e.g. 23:59:59.999 instead of 00:00:00.000) */
210
+ end: (isInclusiveBoundary ? (0, _moment.default)(min).subtract(1, 'ms') : (0, _moment.default)(min)).toISOString()
197
211
  });
198
212
  }
199
213
  function expandWindow() {
@@ -9,6 +9,7 @@ exports.EuiFlyoutOverlay = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _css = require("@emotion/css");
12
+ var _services = require("../../services");
12
13
  var _overlay_mask = require("../overlay_mask");
13
14
  var _portal = require("../portal");
14
15
  var _react2 = require("@emotion/react");
@@ -26,8 +27,7 @@ var getEuiFlyoutOverlayStyles = function getEuiFlyoutOverlayStyles(zIndex) {
26
27
  /*
27
28
  This needs to have !important to override the default EuiOverlayMask
28
29
  z-index based on the headerZindexLocation prop. Using the style attribute
29
- doesn't work since EuiOverlayMask requires a string style prop that
30
- causes React errors in the test environment.
30
+ doesn't work since EuiOverlayMask requires the styles to be provided via className
31
31
  */
32
32
  return /*#__PURE__*/(0, _css.css)("z-index:", zIndex, "!important;;label:getEuiFlyoutOverlayStyles;");
33
33
  };
@@ -48,10 +48,39 @@ var EuiFlyoutOverlay = exports.EuiFlyoutOverlay = function EuiFlyoutOverlay(_ref
48
48
  hasOverlayMask = _ref.hasOverlayMask,
49
49
  maskZIndex = _ref.maskZIndex,
50
50
  _ref$headerZindexLoca = _ref.headerZindexLocation,
51
- headerZindexLocation = _ref$headerZindexLoca === void 0 ? 'below' : _ref$headerZindexLoca;
51
+ headerZindexLocation = _ref$headerZindexLoca === void 0 ? 'below' : _ref$headerZindexLoca,
52
+ containerRect = _ref.containerRect;
52
53
  var styles = (0, _react.useMemo)(function () {
53
54
  return getEuiFlyoutOverlayStyles(maskZIndex);
54
55
  }, [maskZIndex]);
56
+
57
+ // Internal ref so we can apply containerRect positioning directly on the DOM
58
+ // node, avoiding new Emotion CSS class generation on every scroll/resize.
59
+ var internalMaskRef = (0, _react.useRef)(null);
60
+ var combinedMaskRef = (0, _services.useCombinedRefs)([internalMaskRef, maskProps === null || maskProps === void 0 ? void 0 : maskProps.maskRef]);
61
+ (0, _react.useEffect)(function () {
62
+ var node = internalMaskRef.current;
63
+ if (!node) return;
64
+
65
+ // containerRect positioning must be applied via node.style.setProperty rather than
66
+ // through the style prop - EuiOverlayMask requires styles to be passed via className
67
+ if (containerRect) {
68
+ node.style.setProperty('inset-block-start', "".concat(containerRect.top, "px"));
69
+ node.style.setProperty('inset-inline-start', "".concat(containerRect.left, "px"));
70
+ node.style.setProperty('inline-size', "".concat(containerRect.width, "px"));
71
+ node.style.setProperty('block-size', "".concat(containerRect.height, "px"));
72
+ node.style.setProperty('inset-inline-end', 'auto');
73
+ node.style.setProperty('inset-block-end', 'auto');
74
+ } else {
75
+ node.style.removeProperty('inset-block-start');
76
+ node.style.removeProperty('inset-inline-start');
77
+ node.style.removeProperty('inline-size');
78
+ node.style.removeProperty('block-size');
79
+ node.style.removeProperty('inset-inline-end');
80
+ node.style.removeProperty('inset-block-end');
81
+ }
82
+ }, [containerRect, hasOverlayMask]); // toggling ownFocus while the flyout is already open should cause re-render
83
+
55
84
  var content = children;
56
85
  if (!isPushed || hasOverlayMask) {
57
86
  content = (0, _react2.jsx)(_portal.EuiPortal, null, content);
@@ -60,6 +89,7 @@ var EuiFlyoutOverlay = exports.EuiFlyoutOverlay = function EuiFlyoutOverlay(_ref
60
89
  return (0, _react2.jsx)(_react.default.Fragment, null, hasOverlayMask && (0, _react2.jsx)(_overlay_mask.EuiOverlayMask, (0, _extends2.default)({
61
90
  headerZindexLocation: (_maskProps$headerZind = maskProps === null || maskProps === void 0 ? void 0 : maskProps.headerZindexLocation) !== null && _maskProps$headerZind !== void 0 ? _maskProps$headerZind : headerZindexLocation
62
91
  }, maskProps, {
92
+ maskRef: combinedMaskRef,
63
93
  className: classes
64
94
  })), content);
65
95
  };
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.FLYOUT_TYPES = exports.FLYOUT_SIZES = exports.FLYOUT_SIDES = exports.FLYOUT_PADDING_SIZES = exports.DEFAULT_TYPE = exports.DEFAULT_SIZE = exports.DEFAULT_SIDE = exports.DEFAULT_PUSH_MIN_BREAKPOINT = exports.DEFAULT_PADDING_SIZE = void 0;
6
+ exports.MENU_DISPLAY_AUTO = exports.MENU_DISPLAY_ALWAYS = exports.FLYOUT_TYPES = exports.FLYOUT_SIZES = exports.FLYOUT_SIDES = exports.FLYOUT_PADDING_SIZES = exports.FLYOUT_MENU_DISPLAY_MODES = exports.DEFAULT_TYPE = exports.DEFAULT_SIZE = exports.DEFAULT_SIDE = exports.DEFAULT_PUSH_MIN_BREAKPOINT = exports.DEFAULT_PADDING_SIZE = exports.DEFAULT_MENU_DISPLAY_MODE = void 0;
7
7
  exports.isEuiFlyoutSizeNamed = isEuiFlyoutSizeNamed;
8
8
  /*
9
9
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -25,6 +25,14 @@ var FLYOUT_SIDES = exports.FLYOUT_SIDES = ['left', 'right'];
25
25
  var FLYOUT_SIZES = exports.FLYOUT_SIZES = ['s', 'm', 'l', 'fill'];
26
26
  /** Type representing a supported named flyout size. */
27
27
 
28
+ /** Menu display mode: always render menu when flyoutMenuProps is provided. */
29
+ var MENU_DISPLAY_ALWAYS = exports.MENU_DISPLAY_ALWAYS = 'always';
30
+ /** Menu display mode: only render menu when it has content (back button, history, title, or custom actions). */
31
+ var MENU_DISPLAY_AUTO = exports.MENU_DISPLAY_AUTO = 'auto';
32
+ /** Allowed flyout menu display modes. */
33
+ var FLYOUT_MENU_DISPLAY_MODES = exports.FLYOUT_MENU_DISPLAY_MODES = [MENU_DISPLAY_ALWAYS, MENU_DISPLAY_AUTO];
34
+ /** Type representing a supported flyout menu display mode. */
35
+
28
36
  /** Allowed padding sizes for flyout content. */
29
37
  var FLYOUT_PADDING_SIZES = exports.FLYOUT_PADDING_SIZES = ['none', 's', 'm', 'l'];
30
38
  /** Type representing a supported flyout padding size. */
@@ -39,6 +47,8 @@ var DEFAULT_SIDE = exports.DEFAULT_SIDE = 'right';
39
47
  var DEFAULT_SIZE = exports.DEFAULT_SIZE = 'm';
40
48
  /** Default padding size inside flyouts. */
41
49
  var DEFAULT_PADDING_SIZE = exports.DEFAULT_PADDING_SIZE = 'l';
50
+ /** Default flyout menu display mode. */
51
+ var DEFAULT_MENU_DISPLAY_MODE = exports.DEFAULT_MENU_DISPLAY_MODE = MENU_DISPLAY_AUTO;
42
52
 
43
53
  /**
44
54
  * Custom type checker for named flyout sizes since the prop