Skip to main content
Elastic UI
Elastic UI
ComponentsPatternsContentData visualization
EUI ChangelogGitHubFigma
  • Guidelines
    • Getting started
    • Accessibility
    • Writing
    • Testing
  • Theming
    • Theme provider
    • Color mode
    • High contrast mode
    • Borders
    • Breakpoints
    • Colors
    • Sizing
    • Typography
  • Templates
    • Page template
    • Sitewide search
  • Layout
    • Accordion
    • Bottom bar
    • Flex
    • Flyout
      • Push flyouts
      • Resizable flyouts
    • Header
    • Horizontal rule
    • Modal
    • Page components
    • Page header
    • Panel
    • Popover
    • Resizable container
    • Spacer
  • Navigation
    • Breadcrumbs
    • Buttons
    • Collapsible nav
    • Context menu
    • Facet
    • Key pad menu
    • Link
    • Pagination
    • Side nav
    • Steps
    • Tabs
    • Tree view
  • Display
    • Aspect ratio
    • Avatar
    • Badge
    • Callout
    • Card
    • Comment list
    • Description list
    • Drag and drop
    • Empty prompt
    • Health
    • Icons
    • Image
    • List group
    • Loading
    • Progress
    • Skeleton
    • Stat
    • Text
    • Timeline
    • Title
    • Toast
    • Tooltip
    • Tour
  • Forms
    • Form controls
    • Form layouts
    • Form validation
    • Text controls
    • Numeric controls
    • Selection controls
    • Search and filter controls
    • Date and time controls
    • Other controls
  • Tabular content
    • Tables
    • Data grid
  • Editors & Syntax
    • Code
    • Markdown
  • Utilities
    • Accessibility
    • Auto sizer
    • Beacon
    • Color palettes
    • Copy
    • CSS utility classes
    • Delay
    • Error boundary
    • Focus trap
    • Highlight and mark
    • HTML ID generator
    • I18n
    • Inner text
    • Mutation observer
    • Outside click detector
    • Overlay mask
    • Portal
    • Pretty duration
    • Provider
    • Resize observer
    • Scroll
    • Text diff
    • Text truncation
    • Window events
  • EUI
  • Layout
  • Flyout

Flyout

EuiFlyout is a fixed position panel that pops in from the side of the window. It should be used to reveal more detailed contextual information or to provide complex forms without losing the user's current state. It is a good alternative to

modals when the action is not transient.

Like modals, you control the visibility of the flyout using your own state management, but EuiFlyout requires an

onClose handler for it's internal dismiss buttons.

Accessibility recommendation

Use aria-labelledby={headingId} to announce the flyout to screen readers.

Loading...

More complicated flyout

This component also comes with related child components for ease of creating headers, footers and scrolling body content. EuiFlyoutHeader and EuiFlyoutFooter are pinned to the top and bottom of the flyout, respectively, to allow for always visible navigation and actions. The EuiFlyoutBody component will then automatically overflow.

Loading...

Sizing

Flyouts come in three predefined sizes of 's' | 'm' | 'l', which define the width relative to the window size with a minimum width defined in pixels. You can otherwise supply your own fixed width in number or string format.

Loading...

Adjusting padding

All the inner flyout components inherit their padding from the wrapping EuiFlyout component. This ensures that all the horizontal edges line up no matter the paddingSize. When using the "none" size, you will need to accommodate your content with some other way of creating distance to the edges of the flyout.

Loading...

Adding a banner

To highlight some information at the top of a flyout, you can pass an EuiCallOut to the banner prop available in EuiFlyoutBody and its layout will adjust appropriately.

Loading...

Without ownFocus

Like modals, you will usually want to obscure the page content beneath with ownFocus which wraps the flyout with an EuiOverlayMask . However, there are use-cases where flyouts present more information or controls, but need to maintain the interactions of the page content. By setting ownFocus={false}, the underlying page content will be visible and clickable.

Loading...

Understanding max-width

By default, flyouts will continue to grow with the width of the window. To stop this growth at an ideal width, set maxWidth to true, or pass your own custom size.

Note that there are some caveats to providing a maxWidth that is smaller than the minWidth.

Loading...

Props

EuiFlyout

𐘂𐘂
✄𐘗✄𐘗
Prop
↦
Description and type
↦
Default value
↵
Prop
onClose#
↦
Description and type
Type: (event: MouseEvent | KeyboardEvent | TouchEvent) => void
↦
Default value
Required
↵
Prop
className#
↦
Description and type
Type: string
↦
Default value
↵
Prop
aria-label#
↦
Description and type
Type: string
↦
Default value
↵
Prop
data-test-subj#
↦
Description and type
Type: string
↦
Default value
↵
Prop
css#
↦
Description and type
Type: Interpolation<Theme>
↦
Default value
↵
Prop
as#
↦
Description and type

Sets the HTML element for EuiFlyout

Type: ElementType
↦
Default value
↵
Prop
size#
↦
Description and type

Defines the width of the panel.
Pass a predefined size of s | m | l, or pass any number/string compatible with the CSS width attribute

Type: Width<string | number>
↦
Default value
m
↵
Prop
maxWidth#
↦
Description and type

Sets the max-width of the panel,
set to true to use the default size,
set to false to not restrict the width,
set to a number for a custom width in px,
set to a string for a custom width in custom measurement.

Type: string | number | boolean
↦
Default value
false
↵
Prop
paddingSize#
↦
Description and type

Customize the padding around the content of the flyout header, body and footer

Type: "s" | "m" | "l" | "none"
↦
Default value
l
↵
Prop
ownFocus#
↦
Description and type

Adds an EuiOverlayMask and wraps in an EuiPortal

Type: boolean
↦
Default value
true
↵
Prop
hideCloseButton#
↦
Description and type

Hides the default close button. You must provide another close button somewhere within the flyout.

Type: boolean
↦
Default value
false
↵
Prop
closeButtonProps#
↦
Description and type

Extends EuiButtonIconProps onto the close button

Type: Partial<EuiButtonIconPropsForButton>
↦
Default value
↵
Prop
closeButtonPosition#
↦
Description and type

Position of close button.
inside: Floating to just inside the flyout, always top right;
outside: Floating just outside the flyout near the top (side dependent on side). Helpful when the close button may cover other interactable content.

Type: "inside" | "outside"
↦
Default value
inside
↵
Prop
maskProps#
↦
Description and type

Adjustments to the EuiOverlayMask that is added when ownFocus = true

Type: EuiOverlayMaskProps
↦
Default value
↵
Prop
type#
↦
Description and type

How to display the the flyout in relation to the body content;
push keeps it visible, pushing the <body> content via padding

Type: "push" | "overlay"
↦
Default value
overlay
↵
Prop
outsideClickCloses#
↦
Description and type

Forces this interaction on the mask overlay or body content.
Defaults depend on ownFocus and type values

Type: boolean
↦
Default value
↵
Prop
side#
↦
Description and type

Which side of the window to attach to.
The left option should only be used for navigation.

Type: "left" | "right"
↦
Default value
right
↵
Prop
pushMinBreakpoint#
↦
Description and type

Named breakpoint (xs through xl) for customizing the minimum window width to enable the push type

Type: string
↦
Default value
l
↵
Prop
pushAnimation#
↦
Description and type

Enables a slide in animation on push flyouts

Type: boolean
↦
Default value
false
↵
Prop
style#
↦
Description and type
Type: CSSProperties
↦
Default value
↵
Prop
focusTrapProps#
↦
Description and type

Object of props passed to EuiFocusTrap.
shards specifies an array of elements that will be considered part of the flyout, preventing the flyout from being closed when clicked.
closeOnMouseup will delay the close callback, allowing time for external toggle buttons to handle close behavior.

Type: Pick<EuiFocusTrapProps, "shards" | "closeOnMouseup">
↦
Default value
↵
Prop
includeFixedHeadersInFocusTrap#
↦
Description and type

By default, EuiFlyout will consider any fixed EuiHeaders that sit alongside or above the EuiFlyout
as part of the flyout's focus trap. This prevents focus fighting with interactive elements
within fixed headers.

Set this to false if you need to disable this behavior for a specific reason.

Type: boolean
↦
Default value
↵
𐘂𐘂

EuiFlyoutBody

Extends HTMLAttributes
𐘂𐘂
✄𐘗✄𐘗
Prop
↦
Description and type
↦
Default value
↵
Prop
className#
↦
Description and type
Type: string
↦
Default value
↵
Prop
aria-label#
↦
Description and type

Defines a string value that labels the current element.
@see aria-labelledby.

Type: string
↦
Default value
↵
Prop
data-test-subj#
↦
Description and type
Type: string
↦
Default value
↵
Prop
css#
↦
Description and type
Type: Interpolation<Theme>
↦
Default value
↵
Prop
banner#
↦
Description and type

Use to display a banner at the top of the body. It is suggested to use EuiCallOut for it.

Type: ReactNode
↦
Default value
↵
Prop
scrollableTabIndex#
↦
Description and type

Scrollable regions (or their children) should be focusable
to allow keyboard users to scroll the region via arrow keys.

By default, EuiFlyoutBody's scroll overflow wrapper sets a tabIndex of 0.
If you know your flyout body content already contains focusable children
that satisfy keyboard accessibility requirements, you can use this prop
to override this default.

Type: number
↦
Default value
0
↵
𐘂𐘂

EuiFlyoutFooter

Extends HTMLAttributes
𐘂𐘂
✄𐘗✄𐘗
Prop
↦
Description and type
↦
Default value
↵
Prop
className#
↦
Description and type
Type: string
↦
Default value
↵
Prop
aria-label#
↦
Description and type

Defines a string value that labels the current element.
@see aria-labelledby.

Type: string
↦
Default value
↵
Prop
data-test-subj#
↦
Description and type
Type: string
↦
Default value
↵
Prop
css#
↦
Description and type
Type: Interpolation<Theme>
↦
Default value
↵
𐘂𐘂

EuiFlyoutHeader

Extends HTMLAttributes
𐘂𐘂
✄𐘗✄𐘗
Prop
↦
Description and type
↦
Default value
↵
Prop
className#
↦
Description and type
Type: string
↦
Default value
↵
Prop
aria-label#
↦
Description and type

Defines a string value that labels the current element.
@see aria-labelledby.

Type: string
↦
Default value
↵
Prop
data-test-subj#
↦
Description and type
Type: string
↦
Default value
↵
Prop
css#
↦
Description and type
Type: Interpolation<Theme>
↦
Default value
↵
Prop
hasBorder#
↦
Description and type
Type: boolean
↦
Default value
false
↵
𐘂𐘂
Edit this page

Previous
Flex grids
Next
Push flyouts
  • More complicated flyout
  • Sizing
  • Adjusting padding
  • Adding a banner
  • Without ownFocus
  • Understanding max-width
  • Props
EUI is dual-licensed under Elastic License 2.0 and Server Side Public License, v 1 | Crafted with ❤ by Elastic