Vitral 0.2
Sobreposição

Drawer

Um painel que desliza de uma borda da viewport, ou a cobre inteira, com o mesmo comportamento modal do Dialog.

Importação

main.ts
import { Drawer } from '@vitral/vue';

Posições

<script setup lang="ts">import { Button, Drawer } from '@vitral/vue';import { ref } from 'vue'; type Position = 'left' | 'right' | 'top' | 'bottom' | 'full'; const visible = ref(false);const position = ref<Position>('left');const positions: Position[] = ['left', 'right', 'top', 'bottom', 'full'];const links = ['Inbox', 'Drafts', 'Sent', 'Archive', 'Trash']; function open(where: Position) {    position.value = where;    visible.value = true;}</script> <template>    <Button v-for="p in positions" :key="p" :label="p" severity="secondary" :icon="p === 'full' ? 'maximize' : 'sidebar'" @click="open(p)" />    <Drawer v-model:visible="visible" header="Mail" :position="position">        <nav aria-label="Folders" style="display: flex; flex-direction: column; gap: 2px">            <a v-for="link in links" :key="link" href="#" class="demo-drawer-link" @click.prevent="visible = false">{{ link }}</a>        </nav>        <template #footer>            <Button label="Compose" icon="pencil" fluid @click="visible = false" />        </template>    </Drawer></template> <style scoped>.demo-drawer-link {    padding: var(--vt-navigation-item-padding);    border-radius: var(--vt-navigation-item-border-radius);    color: var(--vt-navigation-item-color);    text-decoration: none;} .demo-drawer-link:hover {    background: var(--vt-navigation-item-focus-background);} .demo-drawer-link:focus-visible {    outline: var(--vt-focus-ring-width) var(--vt-focus-ring-style) var(--vt-focus-ring-color);    outline-offset: -2px;}</style>

API

Lido de packages/vue/src/components/Drawer/types.ts, então diz o que o componente aceita de fato.

Props

NomeTipoDescrição
headerstringO título; ele dá nome ao drawer. Sem ele, nomeie-o com `aria-label` ou `aria-labelledby`.
positionDrawerPositionA borda de onde ele desliza, ou `'full'` para cobrir a viewport. O padrão é `'left'`.
modalbooleanEscurece e bloqueia a página, prende o foco e trava a rolagem. O padrão é true.
dismissablebooleanFecha com um clique na máscara. O padrão é true.
closeOnEscapebooleanO padrão é true.
showCloseIconbooleanMostra o botão de fechar. O padrão é true.
blockScrollbooleanTrava a rolagem da página mesmo quando o drawer não é modal.
appendTostring`'body'` (o padrão), `'self'` para renderizar no lugar, ou um seletor.

Mais pt, dt e unstyled de BaseProps; veja pass-through e modo sem estilo.

Emits

EventoPayloadDescrição
show——
hide——
after-hide—Depois da animação de fechar, quando o drawer já saiu da página.

Slots

NomeProps do slotDescrição
default——
header—Substitui o texto do título; ele continua dando nome ao drawer.
footer——
closeicon——