-
+ You are in a modal dialog. Press Escape or tap/click outside the dialog on the shadowed overlay to close.
+
+
+
+
+
`;
diff --git a/packages/eui/src/components/collapsible_nav/collapsible_nav.spec.tsx b/packages/eui/src/components/collapsible_nav/collapsible_nav.spec.tsx
index e08c0850295..36eb11224af 100644
--- a/packages/eui/src/components/collapsible_nav/collapsible_nav.spec.tsx
+++ b/packages/eui/src/components/collapsible_nav/collapsible_nav.spec.tsx
@@ -67,7 +67,13 @@ describe('EuiCollapsibleNav', () => {
it('closes the nav when the overlay mask is clicked', () => {
cy.realMount();
cy.get('[data-test-subj="navSpecButton"]').realClick();
+
+ // wait is used here because cypress
+ // thinks the overlay is covered due to our position: fixed style.
+ // This is likely fixed in more recent versions of Cypress
+ cy.wait(0);
cy.get('.euiOverlayMask').realClick({ position: 'bottomRight' });
+
expect(cy.get('#navSpec').should('not.exist'));
});
diff --git a/packages/eui/src/components/collapsible_nav/collapsible_nav.tsx b/packages/eui/src/components/collapsible_nav/collapsible_nav.tsx
index d2216ab948a..90661f68bcd 100644
--- a/packages/eui/src/components/collapsible_nav/collapsible_nav.tsx
+++ b/packages/eui/src/components/collapsible_nav/collapsible_nav.tsx
@@ -116,6 +116,7 @@ export const EuiCollapsibleNav: FunctionComponent = ({
const flyout = (
Nav content
@@ -92,7 +92,7 @@ exports[`EuiCollapsibleNavBeta renders initialIsCollapsed 1`] = `
class="euiFlyout euiCollapsibleNav euiCollapsibleNavBeta emotion-euiFlyout-none-noMaxWidth-push-left-noAnimation-left-euiCollapsibleNavBeta-isPush-left-isPushCollapsed"
data-test-subj="nav"
id="generated-id_euiCollapsibleNav"
- style="inline-size: 48px;"
+ style="inline-size: 48px; z-index: 1000;"
>
Nav content
diff --git a/packages/eui/src/components/collapsible_nav_beta/collapsible_nav_beta.tsx b/packages/eui/src/components/collapsible_nav_beta/collapsible_nav_beta.tsx
index c7256e16fb4..56c8fe8e9d5 100644
--- a/packages/eui/src/components/collapsible_nav_beta/collapsible_nav_beta.tsx
+++ b/packages/eui/src/components/collapsible_nav_beta/collapsible_nav_beta.tsx
@@ -35,7 +35,7 @@ import { EuiCollapsibleNavButton } from './collapsible_nav_button';
import { euiCollapsibleNavBetaStyles } from './collapsible_nav_beta.styles';
export type EuiCollapsibleNavBetaProps = CommonProps &
- HTMLAttributes &
+ Omit, 'onResize'> &
Pick<
EuiFlyoutProps, // Extend only specific flyout props - EuiCollapsibleNav is much less customizable than EuiFlyout
'side' | 'focusTrapProps' | 'includeFixedHeadersInFocusTrap'
@@ -211,6 +211,7 @@ const _EuiCollapsibleNavBeta: FunctionComponent = ({
aria-label={defaultAriaLabel}
{...rest} // EuiCollapsibleNav is significantly less permissive than EuiFlyout
id={flyoutID}
+ session="never"
css={cssStyles}
className={classes}
size={width}
diff --git a/packages/eui/src/components/collapsible_nav_beta/context.ts b/packages/eui/src/components/collapsible_nav_beta/context.ts
index 7ae67a730a9..f2c21265a9a 100644
--- a/packages/eui/src/components/collapsible_nav_beta/context.ts
+++ b/packages/eui/src/components/collapsible_nav_beta/context.ts
@@ -8,7 +8,7 @@
import { createContext, MouseEventHandler } from 'react';
-import { _EuiFlyoutSide } from '../flyout/flyout';
+import { _EuiFlyoutSide } from '../flyout/const';
type _EuiCollapsibleNavContext = {
isCollapsed: boolean;
diff --git a/packages/eui/src/components/flyout/README.md b/packages/eui/src/components/flyout/README.md
new file mode 100644
index 00000000000..d41234da10c
--- /dev/null
+++ b/packages/eui/src/components/flyout/README.md
@@ -0,0 +1,50 @@
+# EuiFlyout
+
+[Documentation - production](https://eui.elastic.co/docs/components/containers/flyout/)
+
+[Documentation - local](http://localhost:3000/docs/components/containers/flyout/)
+
+[Documentation - sources](../../../../website/docs/components/containers/flyout)
+
+## Component composition
+
+```mermaid
+flowchart
+ EuiFlyout --> EuiFlyoutComponent
+ EuiFlyout --> |"session = 'start'"|EuiFlyoutMain --> EuiManagedFlyout --> EuiFlyoutComponent
+ EuiFlyout --> |"session = 'inherit'"|EuiFlyoutChild --> EuiManagedFlyout --> EuiFlyoutComponent
+```
+
+The core implementation of EuiFlyout lives in the internal [EuiFlyoutComponent](./flyout.component.tsx) file.
+It contains the main logic and UI for rendering flyouts. However, it's not the component
+that EUI consumers interact with directly.
+
+The EuiFlyout export actually comes from [`flyout.tsx`](./flyout.tsx) which is a thin logical
+wrapper that conditionally handles session management when `session="start"`,
+or renders the plain [EuiFlyoutComponent](./flyout.component.tsx) otherwise.
+That structure provides a better business logic separation.
+
+## Resizable flyouts
+
+Historically, the resizable variant of EuiFlyout was a separate component called
+[EuiFlyoutResizable](./flyout_resizable.tsx). It was a wrapper over the regular `EuiFlyout` that injected
+additional event handlers and a drag handler element to flyout's `children`.
+
+Currently, this logic is moved to an internal [`useEuiFlyoutResizable`](./use_flyout_resizable.ts) hook
+that serves the same purpose, but is directly integrated into EuiFlyoutComponent,
+and the resizability feature is enabled via the `resizable` prop for simplicity and ability
+to dynamically change whether the flyout is resizable or not.
+
+The EuiFlyoutResizable component still exists as a thin wrapper over EuiFlyout
+that sets the `resizable` prop to `true`, and is exported as part of the public API
+for backwards compatibility.
+
+```mermaid
+flowchart
+ EuiFlyoutResizable --> EuiFlyoutComponent
+ EuiFlyoutComponent ~~~|"resizable = true"| EuiFlyoutComponent
+```
+
+## Managed flyouts (aka flyout session management)
+
+The developer README for the managed flyouts lives in the [`manager` subdirectory](./manager/README.md).
diff --git a/packages/eui/src/components/flyout/__snapshots__/flyout.test.tsx.snap b/packages/eui/src/components/flyout/__snapshots__/flyout.test.tsx.snap
index 82f4c313eeb..4acbb4f66d2 100644
--- a/packages/eui/src/components/flyout/__snapshots__/flyout.test.tsx.snap
+++ b/packages/eui/src/components/flyout/__snapshots__/flyout.test.tsx.snap
@@ -5,53 +5,55 @@ exports[`EuiFlyout is rendered 1`] = `
class="euiBody--hasFlyout"
>
-
+
+
+
-
-
-
- You are in a modal dialog. Press Escape or tap/click outside the dialog on the shadowed overlay to close.
-
-
-
-
+ You are in a modal dialog. Press Escape or tap/click outside the dialog on the shadowed overlay to close.
+
+
+