@elastic/eui 110.0.0 → 111.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 (237) hide show
  1. package/es/components/collapsible_nav/collapsible_nav.js +20 -101
  2. package/es/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
  3. package/es/components/flyout/_flyout_overlay.js +52 -0
  4. package/es/components/flyout/_flyout_resize_button.js +32 -0
  5. package/es/components/flyout/{flyout_resizable.styles.js → _flyout_resize_button.styles.js} +11 -11
  6. package/es/components/flyout/const.js +42 -0
  7. package/es/components/flyout/flyout.component.js +481 -0
  8. package/es/components/flyout/flyout.js +77 -379
  9. package/es/components/flyout/flyout.styles.js +105 -7
  10. package/es/components/flyout/flyout_menu.js +241 -0
  11. package/es/components/flyout/flyout_menu.styles.js +19 -0
  12. package/{optimize/es/components/flyout/flyout_context.js → es/components/flyout/flyout_menu_context.js} +1 -7
  13. package/es/components/flyout/flyout_parent_context.js +36 -0
  14. package/es/components/flyout/flyout_resizable.js +33 -144
  15. package/es/components/flyout/hooks.js +25 -0
  16. package/es/components/flyout/index.js +5 -2
  17. package/es/components/flyout/manager/actions.js +153 -0
  18. package/es/components/flyout/manager/activity_stage.js +95 -0
  19. package/es/components/flyout/manager/const.js +56 -0
  20. package/es/components/flyout/manager/context.js +33 -0
  21. package/es/components/flyout/manager/flyout_child.js +75 -0
  22. package/es/components/flyout/manager/flyout_main.js +65 -0
  23. package/es/components/flyout/manager/flyout_main.styles.js +25 -0
  24. package/es/components/flyout/manager/flyout_managed.js +227 -0
  25. package/es/components/flyout/manager/flyout_managed.styles.js +69 -0
  26. package/es/components/flyout/manager/hooks.js +55 -0
  27. package/es/components/flyout/manager/index.js +31 -0
  28. package/es/components/flyout/manager/layout_mode.js +167 -0
  29. package/es/components/flyout/manager/provider.js +57 -0
  30. package/es/components/flyout/manager/reducer.js +320 -0
  31. package/es/components/flyout/manager/selectors.js +116 -0
  32. package/es/components/flyout/manager/store.js +113 -0
  33. package/es/components/flyout/manager/validation.js +85 -0
  34. package/es/components/flyout/use_flyout_resizable.js +149 -0
  35. package/es/components/flyout/use_flyout_z_index.js +46 -0
  36. package/es/components/overlay_mask/overlay_mask.js +13 -3
  37. package/es/components/overlay_mask/overlay_mask.styles.js +11 -2
  38. package/es/components/provider/provider.js +2 -1
  39. package/eui.d.ts +1484 -921
  40. package/i18ntokens.json +1207 -1153
  41. package/lib/components/collapsible_nav/collapsible_nav.js +20 -101
  42. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
  43. package/lib/components/flyout/_flyout_overlay.js +59 -0
  44. package/lib/components/flyout/_flyout_resize_button.js +38 -0
  45. package/{test-env/components/flyout/flyout_resizable.styles.js → lib/components/flyout/_flyout_resize_button.styles.js} +12 -12
  46. package/lib/components/flyout/const.js +49 -0
  47. package/lib/components/flyout/flyout.component.js +488 -0
  48. package/lib/components/flyout/flyout.js +102 -379
  49. package/lib/components/flyout/flyout.styles.js +105 -7
  50. package/lib/components/flyout/flyout_menu.js +243 -0
  51. package/lib/components/flyout/flyout_menu.styles.js +25 -0
  52. package/{optimize/lib/components/flyout/flyout_context.js → lib/components/flyout/flyout_menu_context.js} +2 -7
  53. package/lib/components/flyout/flyout_parent_context.js +43 -0
  54. package/lib/components/flyout/flyout_resizable.js +36 -147
  55. package/lib/components/flyout/hooks.js +30 -0
  56. package/lib/components/flyout/index.js +21 -14
  57. package/lib/components/flyout/manager/actions.js +159 -0
  58. package/lib/components/flyout/manager/activity_stage.js +101 -0
  59. package/lib/components/flyout/manager/const.js +62 -0
  60. package/lib/components/flyout/manager/context.js +41 -0
  61. package/lib/components/flyout/manager/flyout_child.js +80 -0
  62. package/lib/components/flyout/manager/flyout_main.js +70 -0
  63. package/lib/components/flyout/manager/flyout_main.styles.js +31 -0
  64. package/lib/components/flyout/manager/flyout_managed.js +233 -0
  65. package/lib/components/flyout/manager/flyout_managed.styles.js +73 -0
  66. package/lib/components/flyout/manager/hooks.js +131 -0
  67. package/lib/components/flyout/manager/index.js +168 -0
  68. package/lib/components/flyout/manager/layout_mode.js +171 -0
  69. package/lib/components/flyout/manager/provider.js +63 -0
  70. package/lib/components/flyout/manager/reducer.js +325 -0
  71. package/lib/components/flyout/manager/selectors.js +122 -0
  72. package/lib/components/flyout/manager/store.js +120 -0
  73. package/lib/components/flyout/manager/validation.js +94 -0
  74. package/lib/components/flyout/use_flyout_resizable.js +153 -0
  75. package/lib/components/flyout/use_flyout_z_index.js +51 -0
  76. package/lib/components/overlay_mask/overlay_mask.js +12 -2
  77. package/lib/components/overlay_mask/overlay_mask.styles.js +11 -4
  78. package/lib/components/provider/provider.js +2 -1
  79. package/optimize/es/components/collapsible_nav/collapsible_nav.js +1 -0
  80. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
  81. package/optimize/es/components/flyout/_flyout_overlay.js +52 -0
  82. package/optimize/es/components/flyout/_flyout_resize_button.js +31 -0
  83. package/optimize/es/components/flyout/{flyout_resizable.styles.js → _flyout_resize_button.styles.js} +11 -11
  84. package/optimize/es/components/flyout/const.js +42 -0
  85. package/optimize/es/components/flyout/flyout.component.js +469 -0
  86. package/optimize/es/components/flyout/flyout.js +53 -349
  87. package/optimize/es/components/flyout/flyout.styles.js +102 -7
  88. package/optimize/es/components/flyout/flyout_menu.js +162 -0
  89. package/optimize/es/components/flyout/flyout_menu.styles.js +19 -0
  90. package/{es/components/flyout/flyout_context.js → optimize/es/components/flyout/flyout_menu_context.js} +1 -7
  91. package/optimize/es/components/flyout/flyout_parent_context.js +36 -0
  92. package/optimize/es/components/flyout/flyout_resizable.js +7 -138
  93. package/optimize/es/components/flyout/hooks.js +25 -0
  94. package/optimize/es/components/flyout/index.js +5 -2
  95. package/optimize/es/components/flyout/manager/actions.js +153 -0
  96. package/optimize/es/components/flyout/manager/activity_stage.js +95 -0
  97. package/optimize/es/components/flyout/manager/const.js +56 -0
  98. package/optimize/es/components/flyout/manager/context.js +33 -0
  99. package/optimize/es/components/flyout/manager/flyout_child.js +71 -0
  100. package/optimize/es/components/flyout/manager/flyout_main.js +61 -0
  101. package/optimize/es/components/flyout/manager/flyout_main.styles.js +25 -0
  102. package/optimize/es/components/flyout/manager/flyout_managed.js +223 -0
  103. package/optimize/es/components/flyout/manager/flyout_managed.styles.js +69 -0
  104. package/optimize/es/components/flyout/manager/hooks.js +55 -0
  105. package/optimize/es/components/flyout/manager/index.js +31 -0
  106. package/optimize/es/components/flyout/manager/layout_mode.js +162 -0
  107. package/optimize/es/components/flyout/manager/provider.js +53 -0
  108. package/optimize/es/components/flyout/manager/reducer.js +312 -0
  109. package/optimize/es/components/flyout/manager/selectors.js +116 -0
  110. package/optimize/es/components/flyout/manager/store.js +113 -0
  111. package/optimize/es/components/flyout/manager/types.js +1 -0
  112. package/optimize/es/components/flyout/manager/validation.js +85 -0
  113. package/optimize/es/components/flyout/types.js +1 -0
  114. package/optimize/es/components/flyout/use_flyout_resizable.js +144 -0
  115. package/optimize/es/components/flyout/use_flyout_z_index.js +46 -0
  116. package/optimize/es/components/overlay_mask/overlay_mask.js +13 -3
  117. package/optimize/es/components/overlay_mask/overlay_mask.styles.js +11 -2
  118. package/optimize/es/components/provider/provider.js +2 -1
  119. package/optimize/lib/components/collapsible_nav/collapsible_nav.js +1 -0
  120. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
  121. package/optimize/lib/components/flyout/_flyout_overlay.js +62 -0
  122. package/optimize/lib/components/flyout/_flyout_resize_button.js +37 -0
  123. package/{lib/components/flyout/flyout_resizable.styles.js → optimize/lib/components/flyout/_flyout_resize_button.styles.js} +12 -12
  124. package/optimize/lib/components/flyout/const.js +49 -0
  125. package/optimize/lib/components/flyout/flyout.component.js +477 -0
  126. package/optimize/lib/components/flyout/flyout.js +77 -349
  127. package/optimize/lib/components/flyout/flyout.styles.js +102 -7
  128. package/optimize/lib/components/flyout/flyout_menu.js +168 -0
  129. package/optimize/lib/components/flyout/flyout_menu.styles.js +25 -0
  130. package/{lib/components/flyout/flyout_context.js → optimize/lib/components/flyout/flyout_menu_context.js} +2 -7
  131. package/optimize/lib/components/flyout/flyout_parent_context.js +43 -0
  132. package/optimize/lib/components/flyout/flyout_resizable.js +9 -139
  133. package/optimize/lib/components/flyout/hooks.js +30 -0
  134. package/optimize/lib/components/flyout/index.js +21 -14
  135. package/optimize/lib/components/flyout/manager/actions.js +159 -0
  136. package/optimize/lib/components/flyout/manager/activity_stage.js +101 -0
  137. package/optimize/lib/components/flyout/manager/const.js +62 -0
  138. package/optimize/lib/components/flyout/manager/context.js +41 -0
  139. package/optimize/lib/components/flyout/manager/flyout_child.js +76 -0
  140. package/optimize/lib/components/flyout/manager/flyout_main.js +66 -0
  141. package/optimize/lib/components/flyout/manager/flyout_main.styles.js +31 -0
  142. package/optimize/lib/components/flyout/manager/flyout_managed.js +231 -0
  143. package/optimize/lib/components/flyout/manager/flyout_managed.styles.js +74 -0
  144. package/optimize/lib/components/flyout/manager/hooks.js +131 -0
  145. package/optimize/lib/components/flyout/manager/index.js +168 -0
  146. package/optimize/lib/components/flyout/manager/layout_mode.js +169 -0
  147. package/optimize/lib/components/flyout/manager/provider.js +61 -0
  148. package/optimize/lib/components/flyout/manager/reducer.js +318 -0
  149. package/optimize/lib/components/flyout/manager/selectors.js +122 -0
  150. package/optimize/lib/components/flyout/manager/store.js +120 -0
  151. package/optimize/lib/components/flyout/manager/validation.js +94 -0
  152. package/optimize/lib/components/flyout/types.js +5 -0
  153. package/optimize/lib/components/flyout/use_flyout_resizable.js +151 -0
  154. package/optimize/lib/components/flyout/use_flyout_z_index.js +51 -0
  155. package/optimize/lib/components/overlay_mask/overlay_mask.js +12 -2
  156. package/optimize/lib/components/overlay_mask/overlay_mask.styles.js +11 -4
  157. package/optimize/lib/components/provider/provider.js +2 -1
  158. package/package.json +5 -4
  159. package/test-env/components/collapsible_nav/collapsible_nav.js +20 -101
  160. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
  161. package/test-env/components/flyout/_flyout_overlay.js +62 -0
  162. package/test-env/components/flyout/_flyout_resize_button.js +37 -0
  163. package/{optimize/lib/components/flyout/flyout_resizable.styles.js → test-env/components/flyout/_flyout_resize_button.styles.js} +12 -12
  164. package/test-env/components/flyout/const.js +49 -0
  165. package/test-env/components/flyout/flyout.component.js +477 -0
  166. package/test-env/components/flyout/flyout.styles.js +102 -7
  167. package/test-env/components/flyout/flyout_menu.js +241 -0
  168. package/test-env/components/flyout/flyout_menu.styles.js +25 -0
  169. package/test-env/components/flyout/{flyout_context.js → flyout_menu_context.js} +2 -7
  170. package/test-env/components/flyout/flyout_parent_context.js +43 -0
  171. package/test-env/components/flyout/flyout_resizable.js +35 -139
  172. package/test-env/components/flyout/hooks.js +30 -0
  173. package/test-env/components/flyout/index.js +21 -14
  174. package/test-env/components/flyout/manager/actions.js +159 -0
  175. package/test-env/components/flyout/manager/activity_stage.js +101 -0
  176. package/test-env/components/flyout/manager/const.js +62 -0
  177. package/test-env/components/flyout/manager/context.js +41 -0
  178. package/test-env/components/flyout/manager/flyout_child.js +76 -0
  179. package/test-env/components/flyout/manager/flyout_main.js +66 -0
  180. package/test-env/components/flyout/manager/flyout_main.styles.js +31 -0
  181. package/test-env/components/flyout/manager/flyout_managed.js +231 -0
  182. package/test-env/components/flyout/manager/flyout_managed.styles.js +74 -0
  183. package/test-env/components/flyout/manager/hooks.js +131 -0
  184. package/test-env/components/flyout/manager/index.js +168 -0
  185. package/test-env/components/flyout/manager/layout_mode.js +169 -0
  186. package/test-env/components/flyout/manager/provider.js +61 -0
  187. package/test-env/components/flyout/manager/reducer.js +318 -0
  188. package/test-env/components/flyout/manager/selectors.js +122 -0
  189. package/test-env/components/flyout/manager/store.js +120 -0
  190. package/test-env/components/flyout/manager/types.js +5 -0
  191. package/test-env/components/flyout/manager/validation.js +94 -0
  192. package/test-env/components/flyout/types.js +5 -0
  193. package/test-env/components/flyout/use_flyout_resizable.js +151 -0
  194. package/test-env/components/flyout/use_flyout_z_index.js +51 -0
  195. package/test-env/components/overlay_mask/overlay_mask.js +12 -2
  196. package/test-env/components/overlay_mask/overlay_mask.styles.js +11 -4
  197. package/test-env/components/provider/provider.js +2 -1
  198. package/es/components/flyout/flyout_child.js +0 -223
  199. package/es/components/flyout/flyout_child.styles.js +0 -32
  200. package/es/components/flyout/flyout_child_manager.js +0 -114
  201. package/es/components/flyout/sessions/flyout_provider.js +0 -95
  202. package/es/components/flyout/sessions/flyout_reducer.js +0 -195
  203. package/es/components/flyout/sessions/index.js +0 -10
  204. package/es/components/flyout/sessions/use_eui_flyout.js +0 -82
  205. package/lib/components/flyout/flyout_child.js +0 -231
  206. package/lib/components/flyout/flyout_child.styles.js +0 -38
  207. package/lib/components/flyout/flyout_child_manager.js +0 -122
  208. package/lib/components/flyout/sessions/flyout_provider.js +0 -102
  209. package/lib/components/flyout/sessions/flyout_reducer.js +0 -202
  210. package/lib/components/flyout/sessions/index.js +0 -25
  211. package/lib/components/flyout/sessions/use_eui_flyout.js +0 -88
  212. package/optimize/es/components/flyout/flyout_child.js +0 -178
  213. package/optimize/es/components/flyout/flyout_child.styles.js +0 -32
  214. package/optimize/es/components/flyout/flyout_child_manager.js +0 -100
  215. package/optimize/es/components/flyout/sessions/flyout_provider.js +0 -90
  216. package/optimize/es/components/flyout/sessions/flyout_reducer.js +0 -187
  217. package/optimize/es/components/flyout/sessions/index.js +0 -10
  218. package/optimize/es/components/flyout/sessions/use_eui_flyout.js +0 -82
  219. package/optimize/lib/components/flyout/flyout_child.js +0 -186
  220. package/optimize/lib/components/flyout/flyout_child.styles.js +0 -38
  221. package/optimize/lib/components/flyout/flyout_child_manager.js +0 -110
  222. package/optimize/lib/components/flyout/sessions/flyout_provider.js +0 -100
  223. package/optimize/lib/components/flyout/sessions/flyout_reducer.js +0 -195
  224. package/optimize/lib/components/flyout/sessions/index.js +0 -25
  225. package/optimize/lib/components/flyout/sessions/use_eui_flyout.js +0 -88
  226. package/test-env/components/flyout/flyout_child.js +0 -230
  227. package/test-env/components/flyout/flyout_child.styles.js +0 -38
  228. package/test-env/components/flyout/flyout_child_manager.js +0 -119
  229. package/test-env/components/flyout/sessions/flyout_provider.js +0 -100
  230. package/test-env/components/flyout/sessions/flyout_reducer.js +0 -195
  231. package/test-env/components/flyout/sessions/index.js +0 -25
  232. package/test-env/components/flyout/sessions/use_eui_flyout.js +0 -88
  233. /package/es/components/flyout/{sessions → manager}/types.js +0 -0
  234. /package/{optimize/es/components/flyout/sessions → es/components/flyout}/types.js +0 -0
  235. /package/lib/components/flyout/{sessions → manager}/types.js +0 -0
  236. /package/{optimize/lib/components/flyout/sessions → lib/components/flyout}/types.js +0 -0
  237. /package/{test-env/components/flyout/sessions → optimize/lib/components/flyout/manager}/types.js +0 -0
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports._resetFlyoutManagerStore = _resetFlyoutManagerStore;
7
+ exports.getFlyoutManagerStore = getFlyoutManagerStore;
8
+ var _actions = require("./actions");
9
+ var _reducer = require("./reducer");
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
+ function createStore() {
19
+ var initial = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _reducer.initialState;
20
+ var currentState = initial;
21
+ var listeners = new Set();
22
+ var getState = function getState() {
23
+ return currentState;
24
+ };
25
+ var subscribe = function subscribe(listener) {
26
+ listeners.add(listener);
27
+ return function () {
28
+ listeners.delete(listener);
29
+ };
30
+ };
31
+
32
+ // The onClick handlers won't execute until after store is fully assigned.
33
+ // eslint-disable-next-line prefer-const -- Forward declaration requires 'let' not 'const'
34
+ var store;
35
+ var computeHistoryItems = function computeHistoryItems() {
36
+ var currentSessionIndex = currentState.sessions.length - 1;
37
+ var previousSessions = currentState.sessions.slice(0, currentSessionIndex);
38
+ return previousSessions.reverse().map(function (_ref) {
39
+ var title = _ref.title,
40
+ mainFlyoutId = _ref.mainFlyoutId;
41
+ return {
42
+ title: title,
43
+ onClick: function onClick() {
44
+ store.dispatch((0, _actions.goToFlyout)(mainFlyoutId));
45
+ }
46
+ };
47
+ });
48
+ };
49
+ var dispatch = function dispatch(action) {
50
+ var nextState = (0, _reducer.flyoutManagerReducer)(currentState, action);
51
+ if (nextState !== currentState) {
52
+ var previousSessions = currentState.sessions;
53
+ currentState = nextState;
54
+
55
+ // Recompute history items eagerly if sessions changed
56
+ // This ensures stable references and avoids stale closures
57
+ if (nextState.sessions !== previousSessions) {
58
+ store.historyItems = computeHistoryItems();
59
+ }
60
+ listeners.forEach(function (l) {
61
+ l();
62
+ });
63
+ }
64
+ };
65
+ store = {
66
+ getState: getState,
67
+ subscribe: subscribe,
68
+ dispatch: dispatch,
69
+ addFlyout: function addFlyout(flyoutId, title, level, size) {
70
+ return dispatch((0, _actions.addFlyout)(flyoutId, title, level, size));
71
+ },
72
+ closeFlyout: function closeFlyout(flyoutId) {
73
+ return dispatch((0, _actions.closeFlyout)(flyoutId));
74
+ },
75
+ setActiveFlyout: function setActiveFlyout(flyoutId) {
76
+ return dispatch((0, _actions.setActiveFlyout)(flyoutId));
77
+ },
78
+ setFlyoutWidth: function setFlyoutWidth(flyoutId, width) {
79
+ return dispatch((0, _actions.setFlyoutWidth)(flyoutId, width));
80
+ },
81
+ setPushPadding: function setPushPadding(side, width) {
82
+ return dispatch((0, _actions.setPushPadding)(side, width));
83
+ },
84
+ goBack: function goBack() {
85
+ return dispatch((0, _actions.goBack)());
86
+ },
87
+ goToFlyout: function goToFlyout(flyoutId) {
88
+ return dispatch((0, _actions.goToFlyout)(flyoutId));
89
+ },
90
+ addUnmanagedFlyout: function addUnmanagedFlyout(flyoutId) {
91
+ return dispatch((0, _actions.addUnmanagedFlyout)(flyoutId));
92
+ },
93
+ closeUnmanagedFlyout: function closeUnmanagedFlyout(flyoutId) {
94
+ return dispatch((0, _actions.closeUnmanagedFlyout)(flyoutId));
95
+ },
96
+ historyItems: computeHistoryItems() // Initialize with current state
97
+ };
98
+ return store;
99
+ }
100
+
101
+ // Module-level singleton. A necessary trade-off to avoid global namespace pollution or the need for a third-party library.
102
+ var storeInstance = null;
103
+
104
+ /**
105
+ * Returns a singleton store instance shared across all React roots within the same JS context.
106
+ * Uses module-level singleton to ensure deduplication even if modules are loaded twice.
107
+ */
108
+ function getFlyoutManagerStore() {
109
+ if (!storeInstance) {
110
+ storeInstance = createStore();
111
+ }
112
+ return storeInstance;
113
+ }
114
+
115
+ /**
116
+ * For testing purposes - allows resetting the store
117
+ */
118
+ function _resetFlyoutManagerStore() {
119
+ storeInstance = null;
120
+ }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createValidationErrorMessage = createValidationErrorMessage;
7
+ exports.isNamedSize = isNamedSize;
8
+ exports.validateManagedFlyoutSize = validateManagedFlyoutSize;
9
+ exports.validateSizeCombination = validateSizeCombination;
10
+ var _const = require("../const");
11
+ var _const2 = require("./const");
12
+ /*
13
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
14
+ * or more contributor license agreements. Licensed under the Elastic License
15
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
16
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
17
+ * Side Public License, v 1.
18
+ */
19
+
20
+ /**
21
+ * Checks if a size is a named size (s, m, l)
22
+ */
23
+ function isNamedSize(size) {
24
+ return _const.FLYOUT_SIZES.includes(size);
25
+ }
26
+
27
+ /**
28
+ * Validates that a managed flyout only uses named sizes
29
+ */
30
+ function validateManagedFlyoutSize(size, flyoutId, level) {
31
+ if (level === _const2.LEVEL_CHILD && !isNamedSize(size)) {
32
+ var namedSizes = _const.FLYOUT_SIZES.join(', ');
33
+ return {
34
+ type: 'INVALID_SIZE_TYPE',
35
+ message: "Child flyout ".concat(flyoutId, " must use a named size (").concat(namedSizes, "). Received: ").concat(size),
36
+ flyoutId: flyoutId,
37
+ level: level,
38
+ size: size
39
+ };
40
+ }
41
+ return null;
42
+ }
43
+
44
+ /**
45
+ * Validates size combinations for parent-child flyouts
46
+ */
47
+ function validateSizeCombination(parentSize, childSize) {
48
+ var sizes = [parentSize, childSize];
49
+
50
+ // Parent and child can't both be 'm'
51
+ if (sizes.every(function (s) {
52
+ return s === 'm';
53
+ })) {
54
+ return {
55
+ type: 'INVALID_SIZE_COMBINATION',
56
+ message: 'Parent and child flyouts cannot both be size "m"'
57
+ };
58
+ }
59
+
60
+ // Parent and child can't both be 'fill'
61
+ if (sizes.every(function (s) {
62
+ return s === 'fill';
63
+ })) {
64
+ return {
65
+ type: 'INVALID_SIZE_COMBINATION',
66
+ message: 'Parent and child flyouts cannot both be size "fill"'
67
+ };
68
+ }
69
+
70
+ // Flyout can't be 'l' if the other in the pair is not "fill"
71
+ if (sizes.includes('l') && !sizes.includes('fill')) {
72
+ return {
73
+ type: 'INVALID_SIZE_COMBINATION',
74
+ message: 'Flyouts cannot be size "l" unless the other flyout is "fill"'
75
+ };
76
+ }
77
+ return null;
78
+ }
79
+
80
+ /**
81
+ * Creates a user-friendly error message for validation errors
82
+ */
83
+ function createValidationErrorMessage(error) {
84
+ console.error(error);
85
+ var prefix = "EuiFlyout validation error";
86
+ switch (error.type) {
87
+ case 'INVALID_SIZE_TYPE':
88
+ case 'INVALID_SIZE_COMBINATION':
89
+ case 'INVALID_FLYOUT_MENU_TITLE':
90
+ return "".concat(prefix, ": ").concat(error.message);
91
+ default:
92
+ return "".concat(prefix, ": Unknown validation error");
93
+ }
94
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useEuiFlyoutResizable = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = require("react");
10
+ var _services = require("../../services");
11
+ var _helpers = require("../resizable_container/helpers");
12
+ /*
13
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
14
+ * or more contributor license agreements. Licensed under the Elastic License
15
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
16
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
17
+ * Side Public License, v 1.
18
+ */
19
+
20
+ /**
21
+ * @internal
22
+ */
23
+ var useEuiFlyoutResizable = exports.useEuiFlyoutResizable = function useEuiFlyoutResizable(_ref) {
24
+ var enabled = _ref.enabled,
25
+ _ref$minWidth = _ref.minWidth,
26
+ minWidth = _ref$minWidth === void 0 ? 0 : _ref$minWidth,
27
+ maxWidth = _ref.maxWidth,
28
+ onResize = _ref.onResize,
29
+ side = _ref.side,
30
+ _size = _ref.size;
31
+ var getFlyoutMinMaxWidth = (0, _react.useCallback)(function (width) {
32
+ return Math.min(Math.max(width, minWidth), maxWidth || Infinity, window.innerWidth - 20 // Leave some offset
33
+ );
34
+ }, [minWidth, maxWidth]);
35
+ var _useState = (0, _react.useState)(0),
36
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
37
+ flyoutWidth = _useState2[0],
38
+ setFlyoutWidth = _useState2[1];
39
+ var _useState3 = (0, _react.useState)(false),
40
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
41
+ callOnResize = _useState4[0],
42
+ setCallOnResize = _useState4[1];
43
+
44
+ // Must use state for the flyout ref in order for the useEffect to be correctly called after render
45
+ var _useState5 = (0, _react.useState)(null),
46
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
47
+ flyoutRef = _useState6[0],
48
+ setFlyoutRef = _useState6[1];
49
+ (0, _react.useEffect)(function () {
50
+ if (!enabled) return; // Don't measure when resizing is disabled
51
+ if (!flyoutWidth && flyoutRef) {
52
+ setCallOnResize(false); // Don't call `onResize` for non-user width changes
53
+ setFlyoutWidth(getFlyoutMinMaxWidth(flyoutRef.offsetWidth));
54
+ }
55
+ }, [flyoutWidth, flyoutRef, getFlyoutMinMaxWidth, enabled]);
56
+
57
+ // Update flyout width when consumers pass in a new `size`
58
+ (0, _react.useEffect)(function () {
59
+ if (!enabled) return; // Don't update width when resizing is disabled
60
+ setCallOnResize(false);
61
+ // For string `size`s, resetting flyoutWidth to 0 will trigger the above useEffect's recalculation
62
+ setFlyoutWidth(typeof _size === 'number' ? getFlyoutMinMaxWidth(_size) : 0);
63
+ }, [_size, getFlyoutMinMaxWidth, enabled]);
64
+
65
+ // Initial numbers to calculate from, on resize drag start
66
+ var initialWidth = (0, _react.useRef)(0);
67
+ var initialMouseX = (0, _react.useRef)(0);
68
+
69
+ // Account for flyout side and logical property direction
70
+ var direction = (0, _react.useMemo)(function () {
71
+ var modifier = side === 'right' ? -1 : 1;
72
+ if (flyoutRef) {
73
+ var languageDirection = window.getComputedStyle(flyoutRef).direction;
74
+ if (languageDirection === 'rtl') modifier *= -1;
75
+ }
76
+ return modifier;
77
+ }, [side, flyoutRef]);
78
+ var onMouseMove = (0, _react.useCallback)(function (e) {
79
+ if (!enabled) {
80
+ return;
81
+ }
82
+ var mouseOffset = (0, _helpers.getPosition)(e, true) - initialMouseX.current;
83
+ var changedFlyoutWidth = initialWidth.current + mouseOffset * direction;
84
+ setFlyoutWidth(getFlyoutMinMaxWidth(changedFlyoutWidth));
85
+ }, [getFlyoutMinMaxWidth, direction, enabled]);
86
+ var onMouseUp = (0, _react.useCallback)(function () {
87
+ setCallOnResize(true);
88
+ if (!enabled) {
89
+ return;
90
+ }
91
+ initialMouseX.current = 0;
92
+ window.removeEventListener('mousemove', onMouseMove);
93
+ window.removeEventListener('mouseup', onMouseUp);
94
+ window.removeEventListener('touchmove', onMouseMove);
95
+ window.removeEventListener('touchend', onMouseUp);
96
+ }, [onMouseMove, enabled]);
97
+ var onMouseDown = (0, _react.useCallback)(function (e) {
98
+ var _flyoutRef$offsetWidt;
99
+ setCallOnResize(false);
100
+ if (!enabled) {
101
+ return;
102
+ }
103
+ initialMouseX.current = (0, _helpers.getPosition)(e, true);
104
+ initialWidth.current = (_flyoutRef$offsetWidt = flyoutRef === null || flyoutRef === void 0 ? void 0 : flyoutRef.offsetWidth) !== null && _flyoutRef$offsetWidt !== void 0 ? _flyoutRef$offsetWidt : 0;
105
+
106
+ // Window event listeners instead of React events are used
107
+ // in case the user's mouse leaves the component
108
+ window.addEventListener('mousemove', onMouseMove);
109
+ window.addEventListener('mouseup', onMouseUp);
110
+ window.addEventListener('touchmove', onMouseMove);
111
+ window.addEventListener('touchend', onMouseUp);
112
+ }, [flyoutRef, onMouseMove, onMouseUp, enabled]);
113
+ var onKeyDown = (0, _react.useCallback)(function (e) {
114
+ setCallOnResize(true);
115
+ if (!enabled) {
116
+ return;
117
+ }
118
+ var KEYBOARD_OFFSET = 10;
119
+ switch (e.key) {
120
+ case _services.keys.ARROW_RIGHT:
121
+ e.preventDefault(); // Safari+VO will screen reader navigate off the button otherwise
122
+ setFlyoutWidth(function (flyoutWidth) {
123
+ return getFlyoutMinMaxWidth(flyoutWidth + KEYBOARD_OFFSET * direction);
124
+ });
125
+ break;
126
+ case _services.keys.ARROW_LEFT:
127
+ e.preventDefault(); // Safari+VO will screen reader navigate off the button otherwise
128
+ setFlyoutWidth(function (flyoutWidth) {
129
+ return getFlyoutMinMaxWidth(flyoutWidth - KEYBOARD_OFFSET * direction);
130
+ });
131
+ }
132
+ }, [getFlyoutMinMaxWidth, direction, enabled]);
133
+
134
+ // To reduce unnecessary calls, only fire onResize callback:
135
+ // 1. After initial mount / on user width change events only
136
+ // 2. If not currently mouse dragging
137
+ (0, _react.useEffect)(function () {
138
+ if (callOnResize && enabled) {
139
+ onResize === null || onResize === void 0 || onResize(flyoutWidth);
140
+ }
141
+ }, [onResize, callOnResize, flyoutWidth, enabled]);
142
+ var size = (0, _react.useMemo)(function () {
143
+ return enabled ? flyoutWidth || _size : _size;
144
+ }, [enabled, flyoutWidth, _size]);
145
+ return {
146
+ onKeyDown: onKeyDown,
147
+ onMouseDown: onMouseDown,
148
+ setFlyoutRef: setFlyoutRef,
149
+ size: size
150
+ };
151
+ };
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useEuiFlyoutZIndex = void 0;
7
+ var _services = require("../../services");
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
+
16
+ /**
17
+ * @internal
18
+ */
19
+
20
+ var calculateZIndex = function calculateZIndex(baseLevel, isChildFlyout) {
21
+ var level = Number(baseLevel);
22
+ return {
23
+ // Child flyouts slide in from below and need to have a lower z-index
24
+ flyoutZIndex: isChildFlyout ? level - 1 : level,
25
+ maskZIndex: level - 2
26
+ };
27
+ };
28
+
29
+ /**
30
+ * @internal
31
+ */
32
+ var useEuiFlyoutZIndex = exports.useEuiFlyoutZIndex = function useEuiFlyoutZIndex(_ref) {
33
+ var maskProps = _ref.maskProps,
34
+ isPushed = _ref.isPushed,
35
+ managedFlyoutIndex = _ref.managedFlyoutIndex,
36
+ isChildFlyout = _ref.isChildFlyout;
37
+ var _useEuiTheme = (0, _services.useEuiTheme)(),
38
+ euiTheme = _useEuiTheme.euiTheme;
39
+ var baseLevel = Number(euiTheme.levels.flyout);
40
+
41
+ // The default headerZindexLocation for EuiFlyout is "below"
42
+ // which is different from what EuiOverlayMask fallbacks to - see
43
+ // _flyout_overlay.tsx.
44
+ // We set z-index to mask level only when explicitly overridden
45
+ // via the maskProps prop
46
+ if (!isPushed && (maskProps === null || maskProps === void 0 ? void 0 : maskProps.headerZindexLocation) === 'above') {
47
+ baseLevel = Number(euiTheme.levels.mask);
48
+ }
49
+ baseLevel += managedFlyoutIndex;
50
+ return calculateZIndex(baseLevel, isChildFlyout);
51
+ };
@@ -34,13 +34,17 @@ var EuiOverlayMask = exports.EuiOverlayMask = function EuiOverlayMask(_ref) {
34
34
  headerZindexLocation = _ref$headerZindexLoca === void 0 ? 'above' : _ref$headerZindexLoca,
35
35
  maskRef = _ref.maskRef,
36
36
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
37
+ var hasRendered = (0, _react.useRef)(false);
37
38
  var _useState = (0, _react.useState)(null),
38
39
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
39
40
  overlayMaskNode = _useState2[0],
40
41
  setOverlayMaskNode = _useState2[1];
41
42
  var combinedMaskRef = (0, _services.useCombinedRefs)([setOverlayMaskNode, maskRef]);
43
+ var handleAnimationEnd = (0, _react.useCallback)(function () {
44
+ hasRendered.current = true;
45
+ }, []);
42
46
  var styles = (0, _services.useEuiMemoizedStyles)(_overlay_mask.euiOverlayMaskStyles);
43
- var cssStyles = (0, _css.cx)([styles.euiOverlayMask, styles["".concat(headerZindexLocation, "Header")]]);
47
+ var cssStyles = (0, _css.cx)([styles.euiOverlayMask, styles["".concat(headerZindexLocation, "Header")], hasRendered.current && styles.noAnimation]);
44
48
  (0, _react.useEffect)(function () {
45
49
  if (!overlayMaskNode) return;
46
50
  (0, _common.keysOf)(rest).forEach(function (key) {
@@ -51,7 +55,13 @@ var EuiOverlayMask = exports.EuiOverlayMask = function EuiOverlayMask(_ref) {
51
55
  overlayMaskNode.setAttribute(key, rest[key]);
52
56
  }
53
57
  });
54
- }, [overlayMaskNode]); // eslint-disable-line react-hooks/exhaustive-deps
58
+ overlayMaskNode.addEventListener('animationend', handleAnimationEnd, {
59
+ once: true
60
+ });
61
+ return function () {
62
+ overlayMaskNode.removeEventListener('animationend', handleAnimationEnd);
63
+ };
64
+ }, [overlayMaskNode, handleAnimationEnd]); // eslint-disable-line react-hooks/exhaustive-deps
55
65
 
56
66
  // Note: Use `classList.add/remove` instead of setting the entire `className`
57
67
  // so as not to override any existing classes set by `EuiPortal`
@@ -6,20 +6,27 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.euiOverlayMaskStyles = void 0;
7
7
  var _css = require("@emotion/css");
8
8
  var _global_styling = require("../../global_styling");
9
- /*
9
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } /*
10
10
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
11
11
  * or more contributor license agreements. Licensed under the Elastic License
12
12
  * 2.0 and the Server Side Public License, v 1; you may not use this file except
13
13
  * in compliance with, at your election, the Elastic License 2.0 or the Server
14
14
  * Side Public License, v 1.
15
15
  */
16
-
17
16
  var euiOverlayMaskStyles = exports.euiOverlayMaskStyles = function euiOverlayMaskStyles(_ref) {
18
17
  var euiTheme = _ref.euiTheme,
19
18
  highContrastMode = _ref.highContrastMode;
20
19
  return {
21
- euiOverlayMask: /*#__PURE__*/(0, _css.css)("position:fixed;", (0, _global_styling.logicalCSS)('top', 0), " ", (0, _global_styling.logicalCSS)('left', 0), " ", (0, _global_styling.logicalCSS)('right', 0), " ", (0, _global_styling.logicalCSS)('bottom', 0), " display:flex;align-items:center;justify-content:center;animation:", _global_styling.euiAnimFadeIn, " ", euiTheme.animation.fast, " ease-in;background:", highContrastMode ? euiTheme.components.overlayMaskBackgroundHighContrast : euiTheme.components.overlayMaskBackground, ";;label:euiOverlayMask;"),
20
+ euiOverlayMask: /*#__PURE__*/(0, _css.css)("position:fixed;", (0, _global_styling.logicalCSS)('top', 0), " ", (0, _global_styling.logicalCSS)('left', 0), " ", (0, _global_styling.logicalCSS)('right', 0), " ", (0, _global_styling.logicalCSS)('bottom', 0), " display:flex;align-items:center;justify-content:center;animation:", _global_styling.euiAnimFadeIn, " ", euiTheme.animation.fast, " ease-in forwards;animation-iteration-count:1;background:", highContrastMode ? euiTheme.components.overlayMaskBackgroundHighContrast : euiTheme.components.overlayMaskBackground, ";;label:euiOverlayMask;"),
22
21
  aboveHeader: /*#__PURE__*/(0, _css.css)("z-index:", euiTheme.levels.mask, ";;label:aboveHeader;"),
23
- belowHeader: /*#__PURE__*/(0, _css.css)("z-index:", euiTheme.levels.maskBelowHeader, ";", (0, _global_styling.logicalCSS)('top', 'var(--euiFixedHeadersOffset, 0)'), ";;label:belowHeader;")
22
+ belowHeader: /*#__PURE__*/(0, _css.css)("z-index:", euiTheme.levels.maskBelowHeader, ";", (0, _global_styling.logicalCSS)('top', 'var(--euiFixedHeadersOffset, 0)'), ";;label:belowHeader;"),
23
+ noAnimation: /*#__PURE__*/(0, _css.css)(process.env.NODE_ENV === "production" ? {
24
+ name: "lqr4xc-noAnimation",
25
+ styles: "animation:none;label:noAnimation;"
26
+ } : {
27
+ name: "lqr4xc-noAnimation",
28
+ styles: "animation:none;label:noAnimation;",
29
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
30
+ })
24
31
  };
25
32
  };
@@ -16,6 +16,7 @@ var _cache = require("./cache");
16
16
  var _system_defaults = require("./system_defaults");
17
17
  var _nested = require("./nested");
18
18
  var _component_defaults = require("./component_defaults");
19
+ var _manager = require("../flyout/manager");
19
20
  var _react2 = require("@emotion/react");
20
21
  /*
21
22
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -86,5 +87,5 @@ var EuiProvider = exports.EuiProvider = function EuiProvider(_ref) {
86
87
  children: Utilities && (0, _react2.jsx)(Utilities, null)
87
88
  })), (0, _react2.jsx)(_component_defaults.EuiComponentDefaultsProvider, {
88
89
  componentDefaults: componentDefaults
89
- }, children)))));
90
+ }, (0, _react2.jsx)(_manager.EuiFlyoutManager, null, children))))));
90
91
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elastic/eui",
3
3
  "description": "Elastic UI Component Library",
4
- "version": "110.0.0",
4
+ "version": "111.0.0",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "lib",
7
7
  "module": "es",
@@ -52,7 +52,7 @@
52
52
  "directory": "packages/eui"
53
53
  },
54
54
  "dependencies": {
55
- "@elastic/eui-theme-common": "7.1.0",
55
+ "@elastic/eui-theme-common": "7.2.0",
56
56
  "@elastic/prismjs-esql": "^1.1.2",
57
57
  "@hello-pangea/dnd": "^16.6.0",
58
58
  "@types/lodash": "^4.14.202",
@@ -85,6 +85,7 @@
85
85
  "unified": "^9.2.2",
86
86
  "unist-util-visit": "^2.0.3",
87
87
  "url-parse": "^1.5.10",
88
+ "use-sync-external-store": "^1.6.0",
88
89
  "uuid": "^8.3.0",
89
90
  "vfile": "^4.2.1"
90
91
  },
@@ -106,7 +107,7 @@
106
107
  "@cypress/webpack-dev-server": "^1.7.0",
107
108
  "@elastic/charts": "^64.1.0",
108
109
  "@elastic/datemath": "^5.0.3",
109
- "@elastic/eui-theme-borealis": "5.1.0",
110
+ "@elastic/eui-theme-borealis": "5.2.0",
110
111
  "@emotion/babel-preset-css-prop": "^11.11.0",
111
112
  "@emotion/cache": "^11.11.0",
112
113
  "@emotion/css": "^11.11.0",
@@ -256,7 +257,7 @@
256
257
  },
257
258
  "peerDependencies": {
258
259
  "@elastic/datemath": "^5.0.2",
259
- "@elastic/eui-theme-borealis": "5.1.0",
260
+ "@elastic/eui-theme-borealis": "5.2.0",
260
261
  "@emotion/css": "11.x",
261
262
  "@emotion/react": "11.x",
262
263
  "@types/react": "^17.0 || ^18.0",