Skip to Content
Patternfly Logo

Drawer

Info alert:Beta feature

This Beta component is currently under review, so please join in and give us your feedback on the PatternFly forum

The Drawer is a sliding panel that enters from the right edge of the viewport. It can be configured to either overlay content on a page or create a sidebar by pushing that content to the left.

ExamplesPropsCSS Variables

Examples

Basic

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.

Panel on left

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.

Basic inline

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.

Inline panel on left

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.

Stacked content body elements

content-body
content-body with padding
content-body

Modified content padding

Drawer content padding. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.

Modified panel padding

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.

Modified panel border

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.

Additional section above drawer content

drawer-section
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.

Static drawer

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.

Props

Drawer properties
NameTypeRequiredDefaultDescription
classNamestringNo''Additional classes added to the Drawer.
childrenReact.ReactNodeNoContent rendered in the left hand panel
isExpandedbooleanNofalseIndicates if the drawer is expanded
isInlinebooleanNofalseIndicates if the content element and panel element are displayed side by side.
isStaticbooleanNofalse
position'left' | 'right'No'right'
DrawerContent properties
NameTypeRequiredDefaultDescription
classNamestringNo''Additional classes added to the Drawer.
childrenReact.ReactNodeNoContent to be rendered in the drawer.
panelContentReact.ReactNodeYesContent rendered in the drawer panel.
DrawerPanelContent properties
NameTypeRequiredDefaultDescription
classNamestringNo''Additional classes added to the drawer.
childrenReact.ReactNodeNoContent to be rendered in the drawer panel.
hasBorderbooleanNofalse
width25 | 33 | 50 | 66 | 75 | 100No
widthOnLg25 | 33 | 50 | 66 | 75 | 100No
widthOnXl25 | 33 | 50 | 66 | 75 | 100No
widthOn2Xl25 | 33 | 50 | 66 | 75 | 100No
DrawerContentBody properties
NameTypeRequiredDefaultDescription
classNamestringNo''Additional classes added to the Drawer.
childrenReact.ReactNodeNoContent to be rendered in the drawer
hasPaddingbooleanNofalseIndicates if there should be padding around the drawer content body
DrawerPanelBody properties
NameTypeRequiredDefaultDescription
classNamestringNo''Additional classes added to the Drawer.
childrenReact.ReactNodeNoContent to be rendered in the drawer
noPaddingbooleanNofalseIndicates if there should be no padding around the drawer panel body
DrawerSection properties
NameTypeRequiredDefaultDescription
classNamestringNo''Additional classes added to the drawer section.
childrenReact.ReactNodeNoContent to be rendered in the drawer section.
DrawerHead properties
NameTypeRequiredDefaultDescription
classNamestringNo''Additional classes added to the drawer head.
childrenReact.ReactNodeNoContent to be rendered in the drawer head
noPaddingbooleanNofalseIndicates if there should be no padding around the drawer panel body of the head
DrawerActions properties
NameTypeRequiredDefaultDescription
classNamestringNo''Additional classes added to the drawer actions button.
childrenReact.ReactNodeNoActions to be rendered in the panel head.
DrawerCloseButton properties
NameTypeRequiredDefaultDescription
classNamestringNo''Additional classes added to the drawer close button outer <div>.
onClose() => voidNo() => undefined as anyA callback for when the close button is clicked
aria-labelstringNo'Close drawer panel'Accessible label for the drawer close button

CSS Variables

--pf-c-drawer__actions--MarginRightc_drawer__actions_MarginRight
0
--pf-c-drawer__actions--MarginTopc_drawer__actions_MarginTop
0
--pf-c-drawer__content--BackgroundColorc_drawer__content_BackgroundColor
transparent
--pf-c-drawer__content--child--PaddingBottomc_drawer__content_child_PaddingBottom
0
--pf-c-drawer__content--child--PaddingLeftc_drawer__content_child_PaddingLeft
0
--pf-c-drawer__content--child--PaddingRightc_drawer__content_child_PaddingRight
0
--pf-c-drawer__content--child--PaddingTopc_drawer__content_child_PaddingTop
0
--pf-c-drawer__content--FlexBasisc_drawer__content_FlexBasis
100%
--pf-c-drawer__content--ZIndexc_drawer__content_ZIndex
100
--pf-c-drawer__panel--after--BackgroundColorc_drawer__panel_after_BackgroundColor
transparent
--pf-c-drawer__panel--after--Widthc_drawer__panel_after_Width
1px
--pf-c-drawer__panel--BackgroundColorc_drawer__panel_BackgroundColor
#fff
--pf-c-drawer__panel--BoxShadowc_drawer__panel_BoxShadow
none
--pf-c-drawer__panel--FlexBasisc_drawer__panel_FlexBasis
100%
--pf-c-drawer__panel--md--FlexBasisc_drawer__panel_md_FlexBasis
50%
--pf-c-drawer__panel--MinWidthc_drawer__panel_MinWidth
50%
--pf-c-drawer__panel--TransitionDurationc_drawer__panel_TransitionDuration
.25s
--pf-c-drawer__panel--TransitionPropertyc_drawer__panel_TransitionProperty
margin,transform,box-shadow
--pf-c-drawer__panel--xl--FlexBasisc_drawer__panel_xl_FlexBasis
28.125rem
--pf-c-drawer__panel--xl--MinWidthc_drawer__panel_xl_MinWidth
28.125rem
--pf-c-drawer__panel--ZIndexc_drawer__panel_ZIndex
200
--pf-c-drawer__section--BackgroundColorc_drawer__section_BackgroundColor
transparent
--pf-c-drawer--child--m-padding--md--PaddingBottomc_drawer_child_m_padding_md_PaddingBottom
1.5rem
--pf-c-drawer--child--m-padding--md--PaddingLeftc_drawer_child_m_padding_md_PaddingLeft
1.5rem
--pf-c-drawer--child--m-padding--md--PaddingRightc_drawer_child_m_padding_md_PaddingRight
1.5rem
--pf-c-drawer--child--m-padding--md--PaddingTopc_drawer_child_m_padding_md_PaddingTop
1.5rem
--pf-c-drawer--child--m-padding--PaddingBottomc_drawer_child_m_padding_PaddingBottom
1rem
--pf-c-drawer--child--m-padding--PaddingLeftc_drawer_child_m_padding_PaddingLeft
1rem
--pf-c-drawer--child--m-padding--PaddingRightc_drawer_child_m_padding_PaddingRight
1rem
--pf-c-drawer--child--m-padding--PaddingTopc_drawer_child_m_padding_PaddingTop
1rem
--pf-c-drawer--child--md--PaddingBottomc_drawer_child_md_PaddingBottom
1.5rem
--pf-c-drawer--child--md--PaddingLeftc_drawer_child_md_PaddingLeft
1.5rem
--pf-c-drawer--child--md--PaddingRightc_drawer_child_md_PaddingRight
1.5rem
--pf-c-drawer--child--md--PaddingTopc_drawer_child_md_PaddingTop
1.5rem
--pf-c-drawer--child--PaddingBottomc_drawer_child_PaddingBottom
1rem
--pf-c-drawer--child--PaddingLeftc_drawer_child_PaddingLeft
1rem
--pf-c-drawer--child--PaddingRightc_drawer_child_PaddingRight
1rem
--pf-c-drawer--child--PaddingTopc_drawer_child_PaddingTop
0
--pf-c-drawer--m-expanded__panel--BoxShadowc_drawer_m_expanded__panel_BoxShadow
-0.75rem 0 0.625rem -0.25rem rgba(3,3,3,0.07)
--pf-c-drawer--m-expanded--m-panel-left__panel--BoxShadowc_drawer_m_expanded_m_panel_left__panel_BoxShadow
0.75rem 0 0.625rem -0.25rem rgba(3,3,3,0.07)
--pf-c-drawer--m-inline--m-expanded__panel--after--BackgroundColorc_drawer_m_inline_m_expanded__panel_after_BackgroundColor
#d2d2d2