Calendar Component
Calendar component displays dates with customizable content and range.
When to Use
- Date selection
- Event calendars
- Schedule displays
- Date range views
Basic Usage
<template>
<el-calendar v-model="date" />
</template>
## Custom Content
```vue
<template>
<el-calendar v-model="date">
<template #dateCell="{ data }">
<p>{{ data.day.split('-')[2] }}</p>
</template>
</el-calendar>
</template>
Range
<template>
<el-calendar :range="[startDate, endDate]" />
</template>
<script setup>
const startDate = new Date(2024, 0, 1)
const endDate = new Date(2024, 1, 28)
</script>
Custom Header
<template>
<el-calendar v-model="date">
<template #header="{ date }">
<span>{{ date }}</span>
</template>
</el-calendar>
</template>
API Reference
Attributes
| Name |
Description |
Type |
Default |
| model-value / v-model |
Binding value |
Date |
— |
| range |
Time range |
[Date, Date] |
— |
| controller-type |
Controller type |
'button' | 'select' |
'button' |
| formatter |
Format label |
(value, type) => string | number |
— |
Slots
| Name |
Description |
Type |
| date-cell |
Custom date cell |
{ data: { type, isSelected, day, date } } |
| header |
Custom header |
{ date: string } |
Exposes
| Name |
Description |
Type |
| selectedDay |
Currently selected date |
ComputedRef<Dayjs> |
| pickDay |
Select a specific date |
(day) => void |
| selectDate |
Select date |
(type) => void |
Best Practices
- Use
date-cell slot for custom content
- Use
range for limited date views
- Customize header for branding