Filters
Present several filters in an edge-attached modal panel.
Components / Overlays
A top-layer edge panel with a stationary header and footer and scrollable body.
npx @getweini/cli@latest add sheetPresent several filters in an edge-attached modal panel.
Show a focused detail workflow while retaining the underlying page context.
<Sheet>
<SheetTrigger>Open filters</SheetTrigger>
<SheetContent side="right">
<SheetHeader>
<SheetTitle>Filters</SheetTitle>
</SheetHeader>
<SheetBody><!-- filter controls --></SheetBody>
<SheetFooter>
<SheetClose>Done</SheetClose>
</SheetFooter>
</SheetContent>
</Sheet>A right-edge sheet keeps its header and footer stationary.
<script setup lang="ts">
import Sheet from './components/ui/sheet/Sheet.vue'
import SheetTrigger from './components/ui/sheet/SheetTrigger.vue'
import SheetContent from './components/ui/sheet/SheetContent.vue'
import SheetHeader from './components/ui/sheet/SheetHeader.vue'
import SheetTitle from './components/ui/sheet/SheetTitle.vue'
import SheetDescription from './components/ui/sheet/SheetDescription.vue'
import SheetBody from './components/ui/sheet/SheetBody.vue'
import SheetFooter from './components/ui/sheet/SheetFooter.vue'
import SheetClose from './components/ui/sheet/SheetClose.vue'
</script>
<template>
<Sheet>
<SheetTrigger>Open filters</SheetTrigger>
<SheetContent side="right">
<SheetHeader><SheetTitle>Filters</SheetTitle><SheetDescription>Narrow the results.</SheetDescription></SheetHeader>
<SheetBody><label><input type="checkbox" /> Available only</label></SheetBody>
<SheetFooter><SheetClose>Apply filters</SheetClose></SheetFooter>
</SheetContent>
</Sheet>
</template>Choose the attachment edge explicitly.
<script setup lang="ts">
import Sheet from './components/ui/sheet/Sheet.vue'
import SheetTrigger from './components/ui/sheet/SheetTrigger.vue'
import SheetContent from './components/ui/sheet/SheetContent.vue'
import SheetHeader from './components/ui/sheet/SheetHeader.vue'
import SheetTitle from './components/ui/sheet/SheetTitle.vue'
import SheetBody from './components/ui/sheet/SheetBody.vue'
import SheetFooter from './components/ui/sheet/SheetFooter.vue'
import SheetClose from './components/ui/sheet/SheetClose.vue'
</script>
<template>
<Sheet>
<SheetTrigger>Order details</SheetTrigger>
<SheetContent side="bottom">
<SheetHeader><SheetTitle>Order details</SheetTitle></SheetHeader>
<SheetBody><p>Review the items before confirming.</p></SheetBody>
<SheetFooter><SheetClose>Done</SheetClose></SheetFooter>
</SheetContent>
</Sheet>
</template>The most useful props, models, slots, events, and methods for this component.
| Name | Type | Default or requirement |
|---|---|---|
v-model:open / defaultOpen | boolean | false |
side | top | right | bottom | left | right |
dismissOnBackdrop | boolean | true |
Sheet opens from any viewport edge. Its exposed corners are rounded, including both left corners when it opens from the right.