@elastic/eui
Version:
Elastic UI Component Library
123 lines (119 loc) • 5.61 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.EuiFlyout = void 0;
Object.defineProperty(exports, "FLYOUT_MENU_DISPLAY_MODES", {
enumerable: true,
get: function get() {
return _const2.FLYOUT_MENU_DISPLAY_MODES;
}
});
Object.defineProperty(exports, "FLYOUT_PADDING_SIZES", {
enumerable: true,
get: function get() {
return _const2.FLYOUT_PADDING_SIZES;
}
});
Object.defineProperty(exports, "FLYOUT_SIDES", {
enumerable: true,
get: function get() {
return _const2.FLYOUT_SIDES;
}
});
Object.defineProperty(exports, "FLYOUT_SIZES", {
enumerable: true,
get: function get() {
return _const2.FLYOUT_SIZES;
}
});
Object.defineProperty(exports, "FLYOUT_TYPES", {
enumerable: true,
get: function get() {
return _const2.FLYOUT_TYPES;
}
});
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _component_defaults = require("../provider/component_defaults");
var _flyout = require("./flyout.component");
var _manager = require("./manager");
var _flyout_menu_context = require("./flyout_menu_context");
var _flyout_parent_context = require("./flyout_parent_context");
var _const = require("./manager/const");
var _react2 = require("@emotion/react");
var _const2 = require("./const");
var _excluded = ["as", "onClose", "onActive", "session", "historyKey"];
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
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); }
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; }
var EuiFlyout = exports.EuiFlyout = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
var _usePropsWithComponen = (0, _component_defaults.usePropsWithComponentDefaults)('EuiFlyout', props),
as = _usePropsWithComponen.as,
onClose = _usePropsWithComponen.onClose,
onActive = _usePropsWithComponen.onActive,
session = _usePropsWithComponen.session,
historyKey = _usePropsWithComponen.historyKey,
rest = (0, _objectWithoutProperties2.default)(_usePropsWithComponen, _excluded);
var hasActiveSession = (0, _manager.useHasActiveSession)();
var isInsideParentFlyout = (0, _flyout_parent_context.useIsInsideParentFlyout)();
var isUnmanagedFlyout = (0, _react.useRef)(false);
/*
* Flyout routing logic:
* - session="start" → Main flyout (creates new session)
* - session="inherit" + active session → Child flyout (auto-joins, works across React roots!)
* - session="inherit" + no session → Standard flyout
* - session="never" → Standard flyout (explicit opt-out)
* - session=undefined + inside parent + active session → Child flyout (auto-inherit)
* - session=undefined + not inside parent → Standard flyout (default behavior)
*/
// Determine effective session behavior when session is undefined
var effectiveSession = session === undefined && isInsideParentFlyout && hasActiveSession ? _const.SESSION_INHERIT : session !== null && session !== void 0 ? session : _const.SESSION_NEVER;
if (effectiveSession !== _const.SESSION_NEVER) {
if (effectiveSession === _const.SESSION_START) {
// session=start: create new session
if (isUnmanagedFlyout.current) {
// TODO: @tkajtoch - We need to find a better way to handle the missing event.
onClose === null || onClose === void 0 || onClose({});
return null;
}
return (0, _react2.jsx)(_manager.EuiFlyoutMain, (0, _extends2.default)({}, rest, {
historyKey: historyKey,
onClose: onClose,
onActive: onActive,
as: "div",
ref: ref
}));
}
// session=inherit: auto-join existing session as child
if (hasActiveSession && effectiveSession === _const.SESSION_INHERIT) {
return (0, _react2.jsx)(_manager.EuiFlyoutChild, (0, _extends2.default)({}, rest, {
historyKey: historyKey,
onClose: onClose,
onActive: onActive,
as: "div",
ref: ref
}));
}
}
isUnmanagedFlyout.current = true;
return (0, _react2.jsx)(_flyout_menu_context.EuiFlyoutMenuContext.Provider, {
value: {
onClose: onClose
}
}, (0, _react2.jsx)(_flyout.EuiFlyoutComponent, (0, _extends2.default)({}, rest, {
onClose: onClose,
as: as,
ref: ref
})));
});
EuiFlyout.displayName = 'EuiFlyout';