Skip to content

Drawer ​

Use bo-drawer for navigation, details, or actions that can remain in a side panel.

Usage ​

<bo-button @click="open = true">Open drawer</bo-button>
<bo-drawer v-model:open="open" title="Project details" description="Review the current project.">
  <p>Drawer body content.</p>
  <template #footer>
    <bo-button @click="open = false">Done</bo-button>
  </template>
</bo-drawer>

Shared Drawer State ​

Use useDrawer when a drawer needs to be opened from a component that does not own its template. Mount bo-drawer-viewport once in the application shell.

const { show, clear } = useDrawer();
show({ side: 'right', title: 'Managed drawer', description: 'Opened from any component.' });
clear();
 
<bo-drawer-viewport />

Side and size ​

Use side="left" for navigation and size="sm", lg, or full for the panel width.

<bo-drawer v-model:open="leftOpen" side="left" size="sm" title="Navigation">
  <p>Navigation links.</p>
</bo-drawer>

API ​

Prop / event / slotTypeDefaultDescription
id / dataTestIdstringautogeneratedPanel attributes.
openbooleanfalseVisibility used by v-model:open.
sideleft | rightrightPanel side.
sizesm | default | lg | fulldefaultPanel width.
title / descriptionstring-Generated header and body content.
closeOnBackdrop / closeOnEscapebooleantrueClose behavior.
showClose / closeAriaLabelboolean / stringtrue / CloseClose button settings.
role / ariaLabel / ariaLabelledBy / ariaDescribedBynative accessibility typesdialog / -Panel semantics.
update:openevent-Emitted when the panel state changes.
closeevent-Emitted when the drawer requests closing.
default / header / footerslot-Body, header, and footer content.

Released under the MIT License.