@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.
- package/es/components/collapsible_nav/collapsible_nav.js +20 -101
- package/es/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
- package/es/components/flyout/_flyout_overlay.js +52 -0
- package/es/components/flyout/_flyout_resize_button.js +32 -0
- package/es/components/flyout/{flyout_resizable.styles.js → _flyout_resize_button.styles.js} +11 -11
- package/es/components/flyout/const.js +42 -0
- package/es/components/flyout/flyout.component.js +481 -0
- package/es/components/flyout/flyout.js +77 -379
- package/es/components/flyout/flyout.styles.js +105 -7
- package/es/components/flyout/flyout_menu.js +241 -0
- package/es/components/flyout/flyout_menu.styles.js +19 -0
- package/{optimize/es/components/flyout/flyout_context.js → es/components/flyout/flyout_menu_context.js} +1 -7
- package/es/components/flyout/flyout_parent_context.js +36 -0
- package/es/components/flyout/flyout_resizable.js +33 -144
- package/es/components/flyout/hooks.js +25 -0
- package/es/components/flyout/index.js +5 -2
- package/es/components/flyout/manager/actions.js +153 -0
- package/es/components/flyout/manager/activity_stage.js +95 -0
- package/es/components/flyout/manager/const.js +56 -0
- package/es/components/flyout/manager/context.js +33 -0
- package/es/components/flyout/manager/flyout_child.js +75 -0
- package/es/components/flyout/manager/flyout_main.js +65 -0
- package/es/components/flyout/manager/flyout_main.styles.js +25 -0
- package/es/components/flyout/manager/flyout_managed.js +227 -0
- package/es/components/flyout/manager/flyout_managed.styles.js +69 -0
- package/es/components/flyout/manager/hooks.js +55 -0
- package/es/components/flyout/manager/index.js +31 -0
- package/es/components/flyout/manager/layout_mode.js +167 -0
- package/es/components/flyout/manager/provider.js +57 -0
- package/es/components/flyout/manager/reducer.js +320 -0
- package/es/components/flyout/manager/selectors.js +116 -0
- package/es/components/flyout/manager/store.js +113 -0
- package/es/components/flyout/manager/validation.js +85 -0
- package/es/components/flyout/use_flyout_resizable.js +149 -0
- package/es/components/flyout/use_flyout_z_index.js +46 -0
- package/es/components/overlay_mask/overlay_mask.js +13 -3
- package/es/components/overlay_mask/overlay_mask.styles.js +11 -2
- package/es/components/provider/provider.js +2 -1
- package/eui.d.ts +1484 -921
- package/i18ntokens.json +1207 -1153
- package/lib/components/collapsible_nav/collapsible_nav.js +20 -101
- package/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
- package/lib/components/flyout/_flyout_overlay.js +59 -0
- package/lib/components/flyout/_flyout_resize_button.js +38 -0
- package/{test-env/components/flyout/flyout_resizable.styles.js → lib/components/flyout/_flyout_resize_button.styles.js} +12 -12
- package/lib/components/flyout/const.js +49 -0
- package/lib/components/flyout/flyout.component.js +488 -0
- package/lib/components/flyout/flyout.js +102 -379
- package/lib/components/flyout/flyout.styles.js +105 -7
- package/lib/components/flyout/flyout_menu.js +243 -0
- package/lib/components/flyout/flyout_menu.styles.js +25 -0
- package/{optimize/lib/components/flyout/flyout_context.js → lib/components/flyout/flyout_menu_context.js} +2 -7
- package/lib/components/flyout/flyout_parent_context.js +43 -0
- package/lib/components/flyout/flyout_resizable.js +36 -147
- package/lib/components/flyout/hooks.js +30 -0
- package/lib/components/flyout/index.js +21 -14
- package/lib/components/flyout/manager/actions.js +159 -0
- package/lib/components/flyout/manager/activity_stage.js +101 -0
- package/lib/components/flyout/manager/const.js +62 -0
- package/lib/components/flyout/manager/context.js +41 -0
- package/lib/components/flyout/manager/flyout_child.js +80 -0
- package/lib/components/flyout/manager/flyout_main.js +70 -0
- package/lib/components/flyout/manager/flyout_main.styles.js +31 -0
- package/lib/components/flyout/manager/flyout_managed.js +233 -0
- package/lib/components/flyout/manager/flyout_managed.styles.js +73 -0
- package/lib/components/flyout/manager/hooks.js +131 -0
- package/lib/components/flyout/manager/index.js +168 -0
- package/lib/components/flyout/manager/layout_mode.js +171 -0
- package/lib/components/flyout/manager/provider.js +63 -0
- package/lib/components/flyout/manager/reducer.js +325 -0
- package/lib/components/flyout/manager/selectors.js +122 -0
- package/lib/components/flyout/manager/store.js +120 -0
- package/lib/components/flyout/manager/validation.js +94 -0
- package/lib/components/flyout/use_flyout_resizable.js +153 -0
- package/lib/components/flyout/use_flyout_z_index.js +51 -0
- package/lib/components/overlay_mask/overlay_mask.js +12 -2
- package/lib/components/overlay_mask/overlay_mask.styles.js +11 -4
- package/lib/components/provider/provider.js +2 -1
- package/optimize/es/components/collapsible_nav/collapsible_nav.js +1 -0
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
- package/optimize/es/components/flyout/_flyout_overlay.js +52 -0
- package/optimize/es/components/flyout/_flyout_resize_button.js +31 -0
- package/optimize/es/components/flyout/{flyout_resizable.styles.js → _flyout_resize_button.styles.js} +11 -11
- package/optimize/es/components/flyout/const.js +42 -0
- package/optimize/es/components/flyout/flyout.component.js +469 -0
- package/optimize/es/components/flyout/flyout.js +53 -349
- package/optimize/es/components/flyout/flyout.styles.js +102 -7
- package/optimize/es/components/flyout/flyout_menu.js +162 -0
- package/optimize/es/components/flyout/flyout_menu.styles.js +19 -0
- package/{es/components/flyout/flyout_context.js → optimize/es/components/flyout/flyout_menu_context.js} +1 -7
- package/optimize/es/components/flyout/flyout_parent_context.js +36 -0
- package/optimize/es/components/flyout/flyout_resizable.js +7 -138
- package/optimize/es/components/flyout/hooks.js +25 -0
- package/optimize/es/components/flyout/index.js +5 -2
- package/optimize/es/components/flyout/manager/actions.js +153 -0
- package/optimize/es/components/flyout/manager/activity_stage.js +95 -0
- package/optimize/es/components/flyout/manager/const.js +56 -0
- package/optimize/es/components/flyout/manager/context.js +33 -0
- package/optimize/es/components/flyout/manager/flyout_child.js +71 -0
- package/optimize/es/components/flyout/manager/flyout_main.js +61 -0
- package/optimize/es/components/flyout/manager/flyout_main.styles.js +25 -0
- package/optimize/es/components/flyout/manager/flyout_managed.js +223 -0
- package/optimize/es/components/flyout/manager/flyout_managed.styles.js +69 -0
- package/optimize/es/components/flyout/manager/hooks.js +55 -0
- package/optimize/es/components/flyout/manager/index.js +31 -0
- package/optimize/es/components/flyout/manager/layout_mode.js +162 -0
- package/optimize/es/components/flyout/manager/provider.js +53 -0
- package/optimize/es/components/flyout/manager/reducer.js +312 -0
- package/optimize/es/components/flyout/manager/selectors.js +116 -0
- package/optimize/es/components/flyout/manager/store.js +113 -0
- package/optimize/es/components/flyout/manager/types.js +1 -0
- package/optimize/es/components/flyout/manager/validation.js +85 -0
- package/optimize/es/components/flyout/types.js +1 -0
- package/optimize/es/components/flyout/use_flyout_resizable.js +144 -0
- package/optimize/es/components/flyout/use_flyout_z_index.js +46 -0
- package/optimize/es/components/overlay_mask/overlay_mask.js +13 -3
- package/optimize/es/components/overlay_mask/overlay_mask.styles.js +11 -2
- package/optimize/es/components/provider/provider.js +2 -1
- package/optimize/lib/components/collapsible_nav/collapsible_nav.js +1 -0
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
- package/optimize/lib/components/flyout/_flyout_overlay.js +62 -0
- package/optimize/lib/components/flyout/_flyout_resize_button.js +37 -0
- package/{lib/components/flyout/flyout_resizable.styles.js → optimize/lib/components/flyout/_flyout_resize_button.styles.js} +12 -12
- package/optimize/lib/components/flyout/const.js +49 -0
- package/optimize/lib/components/flyout/flyout.component.js +477 -0
- package/optimize/lib/components/flyout/flyout.js +77 -349
- package/optimize/lib/components/flyout/flyout.styles.js +102 -7
- package/optimize/lib/components/flyout/flyout_menu.js +168 -0
- package/optimize/lib/components/flyout/flyout_menu.styles.js +25 -0
- package/{lib/components/flyout/flyout_context.js → optimize/lib/components/flyout/flyout_menu_context.js} +2 -7
- package/optimize/lib/components/flyout/flyout_parent_context.js +43 -0
- package/optimize/lib/components/flyout/flyout_resizable.js +9 -139
- package/optimize/lib/components/flyout/hooks.js +30 -0
- package/optimize/lib/components/flyout/index.js +21 -14
- package/optimize/lib/components/flyout/manager/actions.js +159 -0
- package/optimize/lib/components/flyout/manager/activity_stage.js +101 -0
- package/optimize/lib/components/flyout/manager/const.js +62 -0
- package/optimize/lib/components/flyout/manager/context.js +41 -0
- package/optimize/lib/components/flyout/manager/flyout_child.js +76 -0
- package/optimize/lib/components/flyout/manager/flyout_main.js +66 -0
- package/optimize/lib/components/flyout/manager/flyout_main.styles.js +31 -0
- package/optimize/lib/components/flyout/manager/flyout_managed.js +231 -0
- package/optimize/lib/components/flyout/manager/flyout_managed.styles.js +74 -0
- package/optimize/lib/components/flyout/manager/hooks.js +131 -0
- package/optimize/lib/components/flyout/manager/index.js +168 -0
- package/optimize/lib/components/flyout/manager/layout_mode.js +169 -0
- package/optimize/lib/components/flyout/manager/provider.js +61 -0
- package/optimize/lib/components/flyout/manager/reducer.js +318 -0
- package/optimize/lib/components/flyout/manager/selectors.js +122 -0
- package/optimize/lib/components/flyout/manager/store.js +120 -0
- package/optimize/lib/components/flyout/manager/validation.js +94 -0
- package/optimize/lib/components/flyout/types.js +5 -0
- package/optimize/lib/components/flyout/use_flyout_resizable.js +151 -0
- package/optimize/lib/components/flyout/use_flyout_z_index.js +51 -0
- package/optimize/lib/components/overlay_mask/overlay_mask.js +12 -2
- package/optimize/lib/components/overlay_mask/overlay_mask.styles.js +11 -4
- package/optimize/lib/components/provider/provider.js +2 -1
- package/package.json +5 -4
- package/test-env/components/collapsible_nav/collapsible_nav.js +20 -101
- package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
- package/test-env/components/flyout/_flyout_overlay.js +62 -0
- package/test-env/components/flyout/_flyout_resize_button.js +37 -0
- package/{optimize/lib/components/flyout/flyout_resizable.styles.js → test-env/components/flyout/_flyout_resize_button.styles.js} +12 -12
- package/test-env/components/flyout/const.js +49 -0
- package/test-env/components/flyout/flyout.component.js +477 -0
- package/test-env/components/flyout/flyout.styles.js +102 -7
- package/test-env/components/flyout/flyout_menu.js +241 -0
- package/test-env/components/flyout/flyout_menu.styles.js +25 -0
- package/test-env/components/flyout/{flyout_context.js → flyout_menu_context.js} +2 -7
- package/test-env/components/flyout/flyout_parent_context.js +43 -0
- package/test-env/components/flyout/flyout_resizable.js +35 -139
- package/test-env/components/flyout/hooks.js +30 -0
- package/test-env/components/flyout/index.js +21 -14
- package/test-env/components/flyout/manager/actions.js +159 -0
- package/test-env/components/flyout/manager/activity_stage.js +101 -0
- package/test-env/components/flyout/manager/const.js +62 -0
- package/test-env/components/flyout/manager/context.js +41 -0
- package/test-env/components/flyout/manager/flyout_child.js +76 -0
- package/test-env/components/flyout/manager/flyout_main.js +66 -0
- package/test-env/components/flyout/manager/flyout_main.styles.js +31 -0
- package/test-env/components/flyout/manager/flyout_managed.js +231 -0
- package/test-env/components/flyout/manager/flyout_managed.styles.js +74 -0
- package/test-env/components/flyout/manager/hooks.js +131 -0
- package/test-env/components/flyout/manager/index.js +168 -0
- package/test-env/components/flyout/manager/layout_mode.js +169 -0
- package/test-env/components/flyout/manager/provider.js +61 -0
- package/test-env/components/flyout/manager/reducer.js +318 -0
- package/test-env/components/flyout/manager/selectors.js +122 -0
- package/test-env/components/flyout/manager/store.js +120 -0
- package/test-env/components/flyout/manager/types.js +5 -0
- package/test-env/components/flyout/manager/validation.js +94 -0
- package/test-env/components/flyout/types.js +5 -0
- package/test-env/components/flyout/use_flyout_resizable.js +151 -0
- package/test-env/components/flyout/use_flyout_z_index.js +51 -0
- package/test-env/components/overlay_mask/overlay_mask.js +12 -2
- package/test-env/components/overlay_mask/overlay_mask.styles.js +11 -4
- package/test-env/components/provider/provider.js +2 -1
- package/es/components/flyout/flyout_child.js +0 -223
- package/es/components/flyout/flyout_child.styles.js +0 -32
- package/es/components/flyout/flyout_child_manager.js +0 -114
- package/es/components/flyout/sessions/flyout_provider.js +0 -95
- package/es/components/flyout/sessions/flyout_reducer.js +0 -195
- package/es/components/flyout/sessions/index.js +0 -10
- package/es/components/flyout/sessions/use_eui_flyout.js +0 -82
- package/lib/components/flyout/flyout_child.js +0 -231
- package/lib/components/flyout/flyout_child.styles.js +0 -38
- package/lib/components/flyout/flyout_child_manager.js +0 -122
- package/lib/components/flyout/sessions/flyout_provider.js +0 -102
- package/lib/components/flyout/sessions/flyout_reducer.js +0 -202
- package/lib/components/flyout/sessions/index.js +0 -25
- package/lib/components/flyout/sessions/use_eui_flyout.js +0 -88
- package/optimize/es/components/flyout/flyout_child.js +0 -178
- package/optimize/es/components/flyout/flyout_child.styles.js +0 -32
- package/optimize/es/components/flyout/flyout_child_manager.js +0 -100
- package/optimize/es/components/flyout/sessions/flyout_provider.js +0 -90
- package/optimize/es/components/flyout/sessions/flyout_reducer.js +0 -187
- package/optimize/es/components/flyout/sessions/index.js +0 -10
- package/optimize/es/components/flyout/sessions/use_eui_flyout.js +0 -82
- package/optimize/lib/components/flyout/flyout_child.js +0 -186
- package/optimize/lib/components/flyout/flyout_child.styles.js +0 -38
- package/optimize/lib/components/flyout/flyout_child_manager.js +0 -110
- package/optimize/lib/components/flyout/sessions/flyout_provider.js +0 -100
- package/optimize/lib/components/flyout/sessions/flyout_reducer.js +0 -195
- package/optimize/lib/components/flyout/sessions/index.js +0 -25
- package/optimize/lib/components/flyout/sessions/use_eui_flyout.js +0 -88
- package/test-env/components/flyout/flyout_child.js +0 -230
- package/test-env/components/flyout/flyout_child.styles.js +0 -38
- package/test-env/components/flyout/flyout_child_manager.js +0 -119
- package/test-env/components/flyout/sessions/flyout_provider.js +0 -100
- package/test-env/components/flyout/sessions/flyout_reducer.js +0 -195
- package/test-env/components/flyout/sessions/index.js +0 -25
- package/test-env/components/flyout/sessions/use_eui_flyout.js +0 -88
- /package/es/components/flyout/{sessions → manager}/types.js +0 -0
- /package/{optimize/es/components/flyout/sessions → es/components/flyout}/types.js +0 -0
- /package/lib/components/flyout/{sessions → manager}/types.js +0 -0
- /package/{optimize/lib/components/flyout/sessions → lib/components/flyout}/types.js +0 -0
- /package/{test-env/components/flyout/sessions → optimize/lib/components/flyout/manager}/types.js +0 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useFlyoutLayoutMode = exports.useApplyFlyoutLayoutMode = exports.getWidthFromSize = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _services = require("../../../services");
|
|
11
|
+
var _actions = require("./actions");
|
|
12
|
+
var _selectors = require("./selectors");
|
|
13
|
+
var _hooks = require("./hooks");
|
|
14
|
+
var _const = require("./const");
|
|
15
|
+
/*
|
|
16
|
+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
17
|
+
* or more contributor license agreements. Licensed under the Elastic License
|
|
18
|
+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
19
|
+
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
20
|
+
* Side Public License, v 1.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Hook to handle responsive layout mode for managed flyouts.
|
|
25
|
+
* Decides whether to place flyouts side-by-side or stacked based on
|
|
26
|
+
* viewport width and flyout widths/sizes.
|
|
27
|
+
*/
|
|
28
|
+
var useApplyFlyoutLayoutMode = exports.useApplyFlyoutLayoutMode = function useApplyFlyoutLayoutMode() {
|
|
29
|
+
var _context$state;
|
|
30
|
+
var _useEuiTheme = (0, _services.useEuiTheme)(),
|
|
31
|
+
euiTheme = _useEuiTheme.euiTheme;
|
|
32
|
+
var context = (0, _hooks.useFlyoutManager)();
|
|
33
|
+
var currentSession = (0, _selectors.useCurrentSession)();
|
|
34
|
+
var parentFlyoutId = currentSession === null || currentSession === void 0 ? void 0 : currentSession.mainFlyoutId;
|
|
35
|
+
var childFlyoutId = currentSession === null || currentSession === void 0 ? void 0 : currentSession.childFlyoutId;
|
|
36
|
+
var parentFlyout = (0, _selectors.useCurrentMainFlyout)();
|
|
37
|
+
var childFlyout = (0, _selectors.useCurrentChildFlyout)();
|
|
38
|
+
var parentWidth = (0, _selectors.useFlyoutWidth)(parentFlyoutId);
|
|
39
|
+
var childWidth = (0, _selectors.useFlyoutWidth)(childFlyoutId);
|
|
40
|
+
var hasFlyouts = Boolean(parentFlyoutId);
|
|
41
|
+
var _useState = (0, _react.useState)(typeof window !== 'undefined' ? window.innerWidth : Infinity),
|
|
42
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
43
|
+
windowWidth = _useState2[0],
|
|
44
|
+
setWindowWidth = _useState2[1];
|
|
45
|
+
|
|
46
|
+
// Extract specific context values
|
|
47
|
+
var dispatch = context === null || context === void 0 ? void 0 : context.dispatch;
|
|
48
|
+
var currentLayoutMode = context === null || context === void 0 || (_context$state = context.state) === null || _context$state === void 0 ? void 0 : _context$state.layoutMode;
|
|
49
|
+
var setMode = (0, _react.useCallback)(function (layoutMode) {
|
|
50
|
+
if (dispatch) {
|
|
51
|
+
dispatch((0, _actions.setLayoutMode)(layoutMode));
|
|
52
|
+
}
|
|
53
|
+
}, [dispatch]);
|
|
54
|
+
(0, _react.useEffect)(function () {
|
|
55
|
+
if (typeof window === 'undefined') {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
var rafId = 0;
|
|
59
|
+
var handleResize = function handleResize() {
|
|
60
|
+
if (rafId) {
|
|
61
|
+
cancelAnimationFrame(rafId);
|
|
62
|
+
}
|
|
63
|
+
rafId = requestAnimationFrame(function () {
|
|
64
|
+
return setWindowWidth(window.innerWidth);
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
window.addEventListener('resize', handleResize);
|
|
68
|
+
return function () {
|
|
69
|
+
if (rafId) {
|
|
70
|
+
cancelAnimationFrame(rafId);
|
|
71
|
+
}
|
|
72
|
+
window.removeEventListener('resize', handleResize);
|
|
73
|
+
};
|
|
74
|
+
}, []);
|
|
75
|
+
|
|
76
|
+
// Calculate the desired layout mode
|
|
77
|
+
var desiredLayoutMode = (0, _react.useMemo)(function () {
|
|
78
|
+
// Skip calculation if no flyouts open
|
|
79
|
+
if (!hasFlyouts) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Thresholds to prevent thrashing near the breakpoint.
|
|
84
|
+
var THRESHOLD_TO_SIDE_BY_SIDE = 85;
|
|
85
|
+
var THRESHOLD_TO_STACKED = 95;
|
|
86
|
+
|
|
87
|
+
// If the window is too small, set the mode to stacked.
|
|
88
|
+
//
|
|
89
|
+
// The value is based on the maximum width of a flyout in
|
|
90
|
+
// `composeFlyoutSizing` in `flyout.styles.ts` multiplied
|
|
91
|
+
// by 2 (open flyouts side-by-side).
|
|
92
|
+
if (windowWidth < Math.round(euiTheme.breakpoint.s * 1.4)) {
|
|
93
|
+
return _const.LAYOUT_MODE_STACKED;
|
|
94
|
+
}
|
|
95
|
+
if (!childFlyoutId) {
|
|
96
|
+
return _const.LAYOUT_MODE_SIDE_BY_SIDE;
|
|
97
|
+
}
|
|
98
|
+
var parentWidthValue = parentWidth;
|
|
99
|
+
var childWidthValue = childWidth;
|
|
100
|
+
if (!parentWidthValue && parentFlyout !== null && parentFlyout !== void 0 && parentFlyout.size) {
|
|
101
|
+
parentWidthValue = getWidthFromSize(parentFlyout.size);
|
|
102
|
+
}
|
|
103
|
+
if (!childWidthValue && childFlyout !== null && childFlyout !== void 0 && childFlyout.size) {
|
|
104
|
+
childWidthValue = getWidthFromSize(childFlyout.size);
|
|
105
|
+
}
|
|
106
|
+
if (!parentWidthValue || !childWidthValue) {
|
|
107
|
+
return _const.LAYOUT_MODE_SIDE_BY_SIDE;
|
|
108
|
+
}
|
|
109
|
+
var combinedWidth = parentWidthValue + childWidthValue;
|
|
110
|
+
var combinedWidthPercentage = combinedWidth / windowWidth * 100;
|
|
111
|
+
|
|
112
|
+
// Handle fill size flyouts: keep layout as side-by-side when fill flyout is present
|
|
113
|
+
// This allows fill flyouts to dynamically calculate their width based on the other in the pair
|
|
114
|
+
if ((parentFlyout === null || parentFlyout === void 0 ? void 0 : parentFlyout.size) === 'fill' || (childFlyout === null || childFlyout === void 0 ? void 0 : childFlyout.size) === 'fill') {
|
|
115
|
+
// For fill flyouts, we want to maintain side-by-side layout to enable dynamic width calculation
|
|
116
|
+
// Only stack if the viewport is too small (below the small breakpoint)
|
|
117
|
+
if (windowWidth >= Math.round(euiTheme.breakpoint.s * 1.4)) {
|
|
118
|
+
return _const.LAYOUT_MODE_SIDE_BY_SIDE;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (currentLayoutMode === _const.LAYOUT_MODE_STACKED) {
|
|
122
|
+
return combinedWidthPercentage <= THRESHOLD_TO_SIDE_BY_SIDE ? _const.LAYOUT_MODE_SIDE_BY_SIDE : _const.LAYOUT_MODE_STACKED;
|
|
123
|
+
} else {
|
|
124
|
+
return combinedWidthPercentage >= THRESHOLD_TO_STACKED ? _const.LAYOUT_MODE_STACKED : _const.LAYOUT_MODE_SIDE_BY_SIDE;
|
|
125
|
+
}
|
|
126
|
+
}, [hasFlyouts, windowWidth, euiTheme, childFlyoutId, parentWidth, childWidth, parentFlyout === null || parentFlyout === void 0 ? void 0 : parentFlyout.size, childFlyout === null || childFlyout === void 0 ? void 0 : childFlyout.size, currentLayoutMode]);
|
|
127
|
+
|
|
128
|
+
// Apply the desired layout mode
|
|
129
|
+
(0, _react.useEffect)(function () {
|
|
130
|
+
if (desiredLayoutMode && currentLayoutMode !== desiredLayoutMode) {
|
|
131
|
+
setMode(desiredLayoutMode);
|
|
132
|
+
}
|
|
133
|
+
}, [desiredLayoutMode, currentLayoutMode, setMode]);
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
/** Convert a flyout `size` value to a pixel width using theme breakpoints. */
|
|
137
|
+
var getWidthFromSize = exports.getWidthFromSize = function getWidthFromSize(size) {
|
|
138
|
+
if (typeof size === 'number') {
|
|
139
|
+
return size;
|
|
140
|
+
}
|
|
141
|
+
if (typeof size === 'string') {
|
|
142
|
+
var parsed = parseInt(size, 10);
|
|
143
|
+
if (!Number.isNaN(parsed)) {
|
|
144
|
+
return parsed;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Size is a function of a percentage of `vw`, defined in `composeFlyoutSizing` in `flyout.styles.ts`
|
|
148
|
+
switch (size) {
|
|
149
|
+
case 's':
|
|
150
|
+
return Math.round(window.innerWidth * 0.25);
|
|
151
|
+
case 'm':
|
|
152
|
+
return Math.round(window.innerWidth * 0.5);
|
|
153
|
+
case 'l':
|
|
154
|
+
return Math.round(window.innerWidth * 0.75);
|
|
155
|
+
case 'fill':
|
|
156
|
+
return Math.round(window.innerWidth * 0.9);
|
|
157
|
+
default:
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return 0;
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
/** Current layout mode for managed flyouts (`side-by-side` or `stacked`). */
|
|
165
|
+
var useFlyoutLayoutMode = exports.useFlyoutLayoutMode = function useFlyoutLayoutMode() {
|
|
166
|
+
var _context$state2;
|
|
167
|
+
var context = (0, _hooks.useFlyoutManager)();
|
|
168
|
+
return (context === null || context === void 0 || (_context$state2 = context.state) === null || _context$state2 === void 0 ? void 0 : _context$state2.layoutMode) || _const.LAYOUT_MODE_SIDE_BY_SIDE;
|
|
169
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useFlyoutManager = exports.EuiFlyoutManagerContext = exports.EuiFlyoutManager = void 0;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _shim = require("use-sync-external-store/shim");
|
|
13
|
+
var _layout_mode = require("./layout_mode");
|
|
14
|
+
var _store = require("./store");
|
|
15
|
+
var _react2 = require("@emotion/react");
|
|
16
|
+
var _excluded = ["getState", "subscribe"];
|
|
17
|
+
/*
|
|
18
|
+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
19
|
+
* or more contributor license agreements. Licensed under the Elastic License
|
|
20
|
+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
21
|
+
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
22
|
+
* Side Public License, v 1.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* React context that exposes the Flyout Manager API (state + actions).
|
|
26
|
+
*/
|
|
27
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
28
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
29
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
30
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
31
|
+
var EuiFlyoutManagerContext = exports.EuiFlyoutManagerContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Provides the Flyout Manager API via context and runs layout-mode logic.
|
|
35
|
+
*/
|
|
36
|
+
var EuiFlyoutManager = exports.EuiFlyoutManager = function EuiFlyoutManager(_ref) {
|
|
37
|
+
var children = _ref.children;
|
|
38
|
+
var _getFlyoutManagerStor = (0, _store.getFlyoutManagerStore)(),
|
|
39
|
+
getState = _getFlyoutManagerStor.getState,
|
|
40
|
+
subscribe = _getFlyoutManagerStor.subscribe,
|
|
41
|
+
rest = (0, _objectWithoutProperties2.default)(_getFlyoutManagerStor, _excluded);
|
|
42
|
+
var state = (0, _shim.useSyncExternalStore)(subscribe, getState, getState);
|
|
43
|
+
var api = (0, _react.useMemo)(function () {
|
|
44
|
+
return _objectSpread({
|
|
45
|
+
state: state
|
|
46
|
+
}, rest);
|
|
47
|
+
}, [state, rest]);
|
|
48
|
+
return (0, _react2.jsx)(EuiFlyoutManagerContext.Provider, {
|
|
49
|
+
value: api
|
|
50
|
+
}, (0, _react2.jsx)(EuiFlyoutManagerContainer, null, children));
|
|
51
|
+
};
|
|
52
|
+
var EuiFlyoutManagerContainer = function EuiFlyoutManagerContainer(_ref2) {
|
|
53
|
+
var children = _ref2.children;
|
|
54
|
+
(0, _layout_mode.useApplyFlyoutLayoutMode)();
|
|
55
|
+
return (0, _react2.jsx)(_react.default.Fragment, null, children);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/** Hook to access the Flyout Manager API from context. */
|
|
59
|
+
var useFlyoutManager = exports.useFlyoutManager = function useFlyoutManager() {
|
|
60
|
+
return (0, _react.useContext)(EuiFlyoutManagerContext);
|
|
61
|
+
};
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.flyoutManagerReducer = flyoutManagerReducer;
|
|
8
|
+
exports.initialState = void 0;
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _actions = require("./actions");
|
|
12
|
+
var _const = require("./const");
|
|
13
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /*
|
|
15
|
+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
16
|
+
* or more contributor license agreements. Licensed under the Elastic License
|
|
17
|
+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
18
|
+
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
19
|
+
* Side Public License, v 1.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Default flyout manager state used to initialize the reducer.
|
|
23
|
+
*/
|
|
24
|
+
var initialState = exports.initialState = {
|
|
25
|
+
sessions: [],
|
|
26
|
+
flyouts: [],
|
|
27
|
+
layoutMode: _const.LAYOUT_MODE_SIDE_BY_SIDE,
|
|
28
|
+
pushPadding: {
|
|
29
|
+
left: 0,
|
|
30
|
+
right: 0
|
|
31
|
+
},
|
|
32
|
+
currentZIndex: 0,
|
|
33
|
+
unmanagedFlyouts: []
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Reducer handling all flyout manager actions and state transitions.
|
|
38
|
+
*/
|
|
39
|
+
function flyoutManagerReducer() {
|
|
40
|
+
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
|
|
41
|
+
var action = arguments.length > 1 ? arguments[1] : undefined;
|
|
42
|
+
switch (action.type) {
|
|
43
|
+
case _actions.ACTION_ADD_UNMANAGED_FLYOUT:
|
|
44
|
+
{
|
|
45
|
+
if (state.unmanagedFlyouts.includes(action.flyoutId)) {
|
|
46
|
+
return state;
|
|
47
|
+
}
|
|
48
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
49
|
+
// Increment by 2 for each new unmanaged flyout.
|
|
50
|
+
// Unmanaged flyouts render on z-index of `n`, and their overlay mask
|
|
51
|
+
// on `n - 1`.
|
|
52
|
+
currentZIndex: state.currentZIndex + 2,
|
|
53
|
+
unmanagedFlyouts: [].concat((0, _toConsumableArray2.default)(state.unmanagedFlyouts), [action.flyoutId])
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
case _actions.ACTION_CLOSE_UNMANAGED_FLYOUT:
|
|
57
|
+
{
|
|
58
|
+
var newUnmanagedFlyouts = state.unmanagedFlyouts.filter(function (flyoutId) {
|
|
59
|
+
return flyoutId !== action.flyoutId;
|
|
60
|
+
});
|
|
61
|
+
var newCurrentZIndex = state.currentZIndex;
|
|
62
|
+
if (state.sessions.length === 0 && newUnmanagedFlyouts.length === 0) {
|
|
63
|
+
newCurrentZIndex = 0;
|
|
64
|
+
}
|
|
65
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
66
|
+
unmanagedFlyouts: newUnmanagedFlyouts,
|
|
67
|
+
currentZIndex: newCurrentZIndex
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Register a flyout.
|
|
72
|
+
// - Ignore duplicates by `flyoutId`.
|
|
73
|
+
// - For a `main` flyout, start a new session { main, child: null }.
|
|
74
|
+
// - For a `child` flyout, attach it to the most recent session; if no
|
|
75
|
+
// session exists, do nothing (invalid child without a parent).
|
|
76
|
+
case _actions.ACTION_ADD:
|
|
77
|
+
{
|
|
78
|
+
var flyoutId = action.flyoutId,
|
|
79
|
+
title = action.title,
|
|
80
|
+
level = action.level,
|
|
81
|
+
size = action.size;
|
|
82
|
+
|
|
83
|
+
// Ignore duplicate registrations
|
|
84
|
+
if (state.flyouts.some(function (f) {
|
|
85
|
+
return f.flyoutId === flyoutId;
|
|
86
|
+
})) {
|
|
87
|
+
return state;
|
|
88
|
+
}
|
|
89
|
+
var newFlyoutState = {
|
|
90
|
+
level: level,
|
|
91
|
+
flyoutId: flyoutId,
|
|
92
|
+
size: size,
|
|
93
|
+
activityStage: _const.STAGE_OPENING
|
|
94
|
+
};
|
|
95
|
+
var newFlyouts = [].concat((0, _toConsumableArray2.default)(state.flyouts), [newFlyoutState]);
|
|
96
|
+
if (level === _const.LEVEL_MAIN) {
|
|
97
|
+
var newSession = {
|
|
98
|
+
mainFlyoutId: flyoutId,
|
|
99
|
+
title: title,
|
|
100
|
+
childFlyoutId: null,
|
|
101
|
+
zIndex: state.currentZIndex
|
|
102
|
+
};
|
|
103
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
104
|
+
sessions: [].concat((0, _toConsumableArray2.default)(state.sessions), [newSession]),
|
|
105
|
+
flyouts: newFlyouts,
|
|
106
|
+
// Increment by 3 for each new flyout session.
|
|
107
|
+
// Managed flyouts render main flyouts on z-index of `n`,
|
|
108
|
+
// child flyouts on `n - 1` and the overlay mask on `n - 2`.
|
|
109
|
+
currentZIndex: state.currentZIndex + 3
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
if (state.sessions.length === 0) {
|
|
113
|
+
return state;
|
|
114
|
+
}
|
|
115
|
+
var updatedSessions = (0, _toConsumableArray2.default)(state.sessions);
|
|
116
|
+
var currentSessionIndex = updatedSessions.length - 1;
|
|
117
|
+
updatedSessions[currentSessionIndex] = _objectSpread(_objectSpread({}, updatedSessions[currentSessionIndex]), {}, {
|
|
118
|
+
childFlyoutId: flyoutId
|
|
119
|
+
});
|
|
120
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
121
|
+
sessions: updatedSessions,
|
|
122
|
+
flyouts: newFlyouts
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Unregister a flyout and update sessions accordingly.
|
|
127
|
+
// - When closing a `main` flyout, drop its entire session and all associated flyouts.
|
|
128
|
+
// - When closing a `child` flyout, clear the child pointer on the most
|
|
129
|
+
// recent session if it matches.
|
|
130
|
+
case _actions.ACTION_CLOSE:
|
|
131
|
+
{
|
|
132
|
+
var removedFlyout = state.flyouts.find(function (f) {
|
|
133
|
+
return f.flyoutId === action.flyoutId;
|
|
134
|
+
});
|
|
135
|
+
if (!removedFlyout) {
|
|
136
|
+
return state;
|
|
137
|
+
}
|
|
138
|
+
if (removedFlyout.level === _const.LEVEL_MAIN) {
|
|
139
|
+
// Find the session that contains this main flyout
|
|
140
|
+
var sessionToRemove = state.sessions.find(function (session) {
|
|
141
|
+
return session.mainFlyoutId === action.flyoutId;
|
|
142
|
+
});
|
|
143
|
+
if (sessionToRemove) {
|
|
144
|
+
// Remove all flyouts associated with this session (main + child)
|
|
145
|
+
var flyoutsToRemove = new Set([action.flyoutId]);
|
|
146
|
+
if (sessionToRemove.childFlyoutId) {
|
|
147
|
+
flyoutsToRemove.add(sessionToRemove.childFlyoutId);
|
|
148
|
+
}
|
|
149
|
+
var _newFlyouts = state.flyouts.filter(function (f) {
|
|
150
|
+
return !flyoutsToRemove.has(f.flyoutId);
|
|
151
|
+
});
|
|
152
|
+
var newSessions = state.sessions.filter(function (session) {
|
|
153
|
+
return session.mainFlyoutId !== action.flyoutId;
|
|
154
|
+
});
|
|
155
|
+
var _newCurrentZIndex = state.currentZIndex;
|
|
156
|
+
if (newSessions.length === 0 && state.unmanagedFlyouts.length === 0) {
|
|
157
|
+
// Reset to initial value if no flyouts remain open to avoid
|
|
158
|
+
// the value going too high during the lifecycle of the app
|
|
159
|
+
_newCurrentZIndex = 0;
|
|
160
|
+
}
|
|
161
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
162
|
+
sessions: newSessions,
|
|
163
|
+
flyouts: _newFlyouts,
|
|
164
|
+
currentZIndex: _newCurrentZIndex
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Handle child flyout closing (existing logic)
|
|
170
|
+
var _newFlyouts2 = state.flyouts.filter(function (f) {
|
|
171
|
+
return f.flyoutId !== action.flyoutId;
|
|
172
|
+
});
|
|
173
|
+
if (state.sessions.length === 0) {
|
|
174
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
175
|
+
flyouts: _newFlyouts2
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
var _updatedSessions = (0, _toConsumableArray2.default)(state.sessions);
|
|
179
|
+
var _currentSessionIndex = _updatedSessions.length - 1;
|
|
180
|
+
if (_updatedSessions[_currentSessionIndex].childFlyoutId === action.flyoutId) {
|
|
181
|
+
_updatedSessions[_currentSessionIndex] = _objectSpread(_objectSpread({}, _updatedSessions[_currentSessionIndex]), {}, {
|
|
182
|
+
childFlyoutId: null
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
186
|
+
sessions: _updatedSessions,
|
|
187
|
+
flyouts: _newFlyouts2
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// Mark the provided flyout ID as the active child for the latest session.
|
|
192
|
+
case _actions.ACTION_SET_ACTIVE:
|
|
193
|
+
{
|
|
194
|
+
// No-op when no session exists.
|
|
195
|
+
if (state.sessions.length === 0) {
|
|
196
|
+
return state;
|
|
197
|
+
}
|
|
198
|
+
var _updatedSessions2 = (0, _toConsumableArray2.default)(state.sessions);
|
|
199
|
+
var _currentSessionIndex2 = _updatedSessions2.length - 1;
|
|
200
|
+
_updatedSessions2[_currentSessionIndex2] = _objectSpread(_objectSpread({}, _updatedSessions2[_currentSessionIndex2]), {}, {
|
|
201
|
+
childFlyoutId: action.flyoutId
|
|
202
|
+
});
|
|
203
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
204
|
+
sessions: _updatedSessions2
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// Persist a flyout's measured width (px). Used for responsive layout
|
|
209
|
+
// calculations, e.g., deciding stacked vs side-by-side.
|
|
210
|
+
case _actions.ACTION_SET_WIDTH:
|
|
211
|
+
{
|
|
212
|
+
var _flyoutId = action.flyoutId,
|
|
213
|
+
width = action.width;
|
|
214
|
+
var updatedFlyouts = state.flyouts.map(function (flyout) {
|
|
215
|
+
return flyout.flyoutId === _flyoutId ? _objectSpread(_objectSpread({}, flyout), {}, {
|
|
216
|
+
width: width
|
|
217
|
+
}) : flyout;
|
|
218
|
+
});
|
|
219
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
220
|
+
flyouts: updatedFlyouts
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Switch global layout mode for managed flyouts.
|
|
225
|
+
case _actions.ACTION_SET_LAYOUT_MODE:
|
|
226
|
+
{
|
|
227
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
228
|
+
layoutMode: action.layoutMode
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// Update a flyout's activity stage in state
|
|
233
|
+
case _actions.ACTION_SET_ACTIVITY_STAGE:
|
|
234
|
+
{
|
|
235
|
+
var _flyoutId2 = action.flyoutId;
|
|
236
|
+
var _updatedFlyouts = state.flyouts.map(function (flyout) {
|
|
237
|
+
return flyout.flyoutId === _flyoutId2 ? _objectSpread(_objectSpread({}, flyout), {}, {
|
|
238
|
+
activityStage: action.activityStage
|
|
239
|
+
}) : flyout;
|
|
240
|
+
});
|
|
241
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
242
|
+
flyouts: _updatedFlyouts
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Go back one session (remove current session from stack)
|
|
247
|
+
case _actions.ACTION_GO_BACK:
|
|
248
|
+
{
|
|
249
|
+
if (state.sessions.length === 0) {
|
|
250
|
+
return state;
|
|
251
|
+
}
|
|
252
|
+
var _currentSessionIndex3 = state.sessions.length - 1;
|
|
253
|
+
var currentSession = state.sessions[_currentSessionIndex3];
|
|
254
|
+
|
|
255
|
+
// Close all flyouts in the current session
|
|
256
|
+
var _flyoutsToRemove = new Set([currentSession.mainFlyoutId]);
|
|
257
|
+
if (currentSession.childFlyoutId) {
|
|
258
|
+
_flyoutsToRemove.add(currentSession.childFlyoutId);
|
|
259
|
+
}
|
|
260
|
+
var _newFlyouts3 = state.flyouts.filter(function (f) {
|
|
261
|
+
return !_flyoutsToRemove.has(f.flyoutId);
|
|
262
|
+
});
|
|
263
|
+
var _newSessions = state.sessions.slice(0, _currentSessionIndex3);
|
|
264
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
265
|
+
sessions: _newSessions,
|
|
266
|
+
flyouts: _newFlyouts3
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// Navigate to a specific flyout (remove all sessions after it)
|
|
271
|
+
case _actions.ACTION_GO_TO_FLYOUT:
|
|
272
|
+
{
|
|
273
|
+
var _flyoutId3 = action.flyoutId;
|
|
274
|
+
|
|
275
|
+
// Find the session containing the target flyout
|
|
276
|
+
var targetSessionIndex = state.sessions.findIndex(function (session) {
|
|
277
|
+
return session.mainFlyoutId === _flyoutId3;
|
|
278
|
+
});
|
|
279
|
+
if (targetSessionIndex === -1) {
|
|
280
|
+
return state; // Target flyout not found
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Close all sessions after the target session
|
|
284
|
+
var sessionsToClose = state.sessions.slice(targetSessionIndex + 1);
|
|
285
|
+
var _flyoutsToRemove2 = new Set();
|
|
286
|
+
sessionsToClose.forEach(function (session) {
|
|
287
|
+
_flyoutsToRemove2.add(session.mainFlyoutId);
|
|
288
|
+
if (session.childFlyoutId) {
|
|
289
|
+
_flyoutsToRemove2.add(session.childFlyoutId);
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
var _newFlyouts4 = state.flyouts.filter(function (f) {
|
|
293
|
+
return !_flyoutsToRemove2.has(f.flyoutId);
|
|
294
|
+
});
|
|
295
|
+
var _newSessions2 = state.sessions.slice(0, targetSessionIndex + 1);
|
|
296
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
297
|
+
sessions: _newSessions2,
|
|
298
|
+
flyouts: _newFlyouts4
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// Set push padding offset for a specific side
|
|
303
|
+
case _actions.ACTION_SET_PUSH_PADDING:
|
|
304
|
+
{
|
|
305
|
+
var _state$pushPadding;
|
|
306
|
+
var side = action.side,
|
|
307
|
+
_width = action.width;
|
|
308
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
309
|
+
pushPadding: _objectSpread(_objectSpread({}, (_state$pushPadding = state.pushPadding) !== null && _state$pushPadding !== void 0 ? _state$pushPadding : {
|
|
310
|
+
left: 0,
|
|
311
|
+
right: 0
|
|
312
|
+
}), {}, (0, _defineProperty2.default)({}, side, _width))
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
default:
|
|
316
|
+
return state;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useSession = exports.usePushPaddingOffsets = exports.useParentFlyoutSize = exports.useIsFlyoutRegistered = exports.useIsFlyoutActive = exports.useHasPushPadding = exports.useHasChildFlyout = exports.useHasActiveSession = exports.useFlyoutWidth = exports.useFlyout = exports.useCurrentSession = exports.useCurrentMainFlyout = exports.useCurrentFlyoutZIndexRef = exports.useCurrentChildFlyout = void 0;
|
|
7
|
+
var _provider = require("./provider");
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
/*
|
|
10
|
+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
11
|
+
* or more contributor license agreements. Licensed under the Elastic License
|
|
12
|
+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
13
|
+
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
14
|
+
* Side Public License, v 1.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
var useSession = exports.useSession = function useSession(flyoutId) {
|
|
18
|
+
var context = (0, _provider.useFlyoutManager)();
|
|
19
|
+
if (!context) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return context.state.sessions.find(function (s) {
|
|
23
|
+
return s.mainFlyoutId === flyoutId || s.childFlyoutId === flyoutId;
|
|
24
|
+
}) || null;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/** True when any managed flyout session is currently active. */
|
|
28
|
+
var useHasActiveSession = exports.useHasActiveSession = function useHasActiveSession() {
|
|
29
|
+
return !!useCurrentSession();
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/** True if the given `flyoutId` is the main or child flyout in the latest session. */
|
|
33
|
+
var useIsFlyoutActive = exports.useIsFlyoutActive = function useIsFlyoutActive(flyoutId) {
|
|
34
|
+
var currentSession = useCurrentSession();
|
|
35
|
+
return (currentSession === null || currentSession === void 0 ? void 0 : currentSession.mainFlyoutId) === flyoutId || (currentSession === null || currentSession === void 0 ? void 0 : currentSession.childFlyoutId) === flyoutId;
|
|
36
|
+
};
|
|
37
|
+
var useFlyout = exports.useFlyout = function useFlyout(flyoutId) {
|
|
38
|
+
var context = (0, _provider.useFlyoutManager)();
|
|
39
|
+
if (!context || !flyoutId) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return context.state.flyouts.find(function (f) {
|
|
43
|
+
return f.flyoutId === flyoutId;
|
|
44
|
+
}) || null;
|
|
45
|
+
};
|
|
46
|
+
var useIsFlyoutRegistered = exports.useIsFlyoutRegistered = function useIsFlyoutRegistered(flyoutId) {
|
|
47
|
+
var context = (0, _provider.useFlyoutManager)();
|
|
48
|
+
if (!context || !flyoutId) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return context.state.flyouts.some(function (f) {
|
|
52
|
+
return f.flyoutId === flyoutId;
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/** The most recent flyout session or `null` if none. */
|
|
57
|
+
var useCurrentSession = exports.useCurrentSession = function useCurrentSession() {
|
|
58
|
+
var context = (0, _provider.useFlyoutManager)();
|
|
59
|
+
if (!context) return null;
|
|
60
|
+
return context.state.sessions[context.state.sessions.length - 1] || null;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/** The registered state of the current session's main flyout, if present. */
|
|
64
|
+
var useCurrentMainFlyout = exports.useCurrentMainFlyout = function useCurrentMainFlyout() {
|
|
65
|
+
var currentSession = useCurrentSession();
|
|
66
|
+
var mainFlyoutId = currentSession === null || currentSession === void 0 ? void 0 : currentSession.mainFlyoutId;
|
|
67
|
+
return useFlyout(mainFlyoutId);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/** The registered state of the current session's child flyout, if present. */
|
|
71
|
+
var useCurrentChildFlyout = exports.useCurrentChildFlyout = function useCurrentChildFlyout() {
|
|
72
|
+
var currentSession = useCurrentSession();
|
|
73
|
+
var childFlyoutId = currentSession === null || currentSession === void 0 ? void 0 : currentSession.childFlyoutId;
|
|
74
|
+
return useFlyout(childFlyoutId);
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/** The measured width (px) of the specified flyout, or `null` if unknown. */
|
|
78
|
+
var useFlyoutWidth = exports.useFlyoutWidth = function useFlyoutWidth(flyoutId) {
|
|
79
|
+
var _useFlyout;
|
|
80
|
+
return (_useFlyout = useFlyout(flyoutId)) === null || _useFlyout === void 0 ? void 0 : _useFlyout.width;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
/** The configured size of the parent (main) flyout for a given child flyout ID. */
|
|
84
|
+
var useParentFlyoutSize = exports.useParentFlyoutSize = function useParentFlyoutSize(childFlyoutId) {
|
|
85
|
+
var session = useSession(childFlyoutId);
|
|
86
|
+
var parentFlyout = useFlyout(session === null || session === void 0 ? void 0 : session.mainFlyoutId);
|
|
87
|
+
return parentFlyout === null || parentFlyout === void 0 ? void 0 : parentFlyout.size;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/** True if the provided `flyoutId` is the main flyout and it currently has a child. */
|
|
91
|
+
var useHasChildFlyout = exports.useHasChildFlyout = function useHasChildFlyout(flyoutId) {
|
|
92
|
+
var session = useSession(flyoutId);
|
|
93
|
+
return !!(session !== null && session !== void 0 && session.childFlyoutId);
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/** Get the current push padding offsets from manager state. */
|
|
97
|
+
var usePushPaddingOffsets = exports.usePushPaddingOffsets = function usePushPaddingOffsets() {
|
|
98
|
+
var _context$state$pushPa;
|
|
99
|
+
var context = (0, _provider.useFlyoutManager)();
|
|
100
|
+
if (!context) {
|
|
101
|
+
return {
|
|
102
|
+
left: 0,
|
|
103
|
+
right: 0
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
return (_context$state$pushPa = context.state.pushPadding) !== null && _context$state$pushPa !== void 0 ? _context$state$pushPa : {
|
|
107
|
+
left: 0,
|
|
108
|
+
right: 0
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
/** True if there's any active push padding (left or right side). */
|
|
113
|
+
var useHasPushPadding = exports.useHasPushPadding = function useHasPushPadding() {
|
|
114
|
+
var pushPadding = usePushPaddingOffsets();
|
|
115
|
+
return pushPadding.left > 0 || pushPadding.right > 0;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
/** Get the ref for the current flyout z-index to be used */
|
|
119
|
+
var useCurrentFlyoutZIndexRef = exports.useCurrentFlyoutZIndexRef = function useCurrentFlyoutZIndexRef() {
|
|
120
|
+
var context = (0, _provider.useFlyoutManager)();
|
|
121
|
+
return (0, _react.useRef)((context === null || context === void 0 ? void 0 : context.state.currentZIndex) || 0);
|
|
122
|
+
};
|