82 lines
1.7 KiB
Markdown
82 lines
1.7 KiB
Markdown
---
|
|
title: Date Picker
|
|
description: A date picker component with range and presets.
|
|
---
|
|
|
|
|
|
<ComponentPreview name="DatePickerDemo" />
|
|
|
|
## Installation
|
|
|
|
The Date Picker is built using a composition of the `<Popover />` and the `<Calendar />` components.
|
|
|
|
See installation instructions for the [Popover](/docs/components/popover#installation) and the [Calendar](/docs/components/calendar#installation) components.
|
|
|
|
## Usage
|
|
|
|
```vue
|
|
<script setup lang="ts">
|
|
import { format } from 'date-fns'
|
|
import { Calendar as CalendarIcon } from 'lucide-vue-next'
|
|
|
|
import { ref } from 'vue'
|
|
import { cn } from '@/lib/utils'
|
|
import { Button } from '@/components/ui/button'
|
|
import { Calendar } from '@/components/ui/calendar'
|
|
import {
|
|
Popover,
|
|
PopoverContent,
|
|
PopoverTrigger,
|
|
} from '@/components/ui/popover'
|
|
|
|
const date = ref<Date>()
|
|
</script>
|
|
|
|
<template>
|
|
<Popover>
|
|
<PopoverTrigger as-child>
|
|
<Button
|
|
:variant="'outline'"
|
|
:class="cn(
|
|
'w-[280px] justify-start text-left font-normal',
|
|
!date && 'text-muted-foreground',
|
|
)"
|
|
>
|
|
<CalendarIcon class="mr-2 h-4 w-4" />
|
|
<span>{{ date ? format(date, "PPP") : "Pick a date" }}</span>
|
|
</Button>
|
|
</PopoverTrigger>
|
|
<PopoverContent class="w-auto p-0">
|
|
<Calendar v-model="date" />
|
|
</PopoverContent>
|
|
</Popover>
|
|
</template>
|
|
```
|
|
|
|
|
|
## Examples
|
|
|
|
### Date Picker
|
|
|
|
<ComponentPreview name="DatePickerDemo" />
|
|
|
|
### Date Range Picker
|
|
|
|
<ComponentPreview name="DatePickerWithRange" />
|
|
|
|
### Date Time Picker
|
|
|
|
<ComponentPreview name="DateTimePickerDemo" />
|
|
|
|
### With Presets
|
|
|
|
<ComponentPreview name="DatePickerWithPresets" />
|
|
|
|
### With Slot
|
|
|
|
<ComponentPreview name="RangePickerWithSlot" />
|
|
|
|
### Form
|
|
|
|
<ComponentPreview name="DatePickerForm" />
|