---
url: "https://vueda.dev/v3/reference/api/vue/Calendar.md"
title: "Calendar"
---

# Calendar

## Overview

A full-featured calendar component built on CalendarRoot with optional month/year navigation dropdowns.
Supports single and multiple date selection, date range constraints, and configurable heading layouts.

Theme entry: [Calendar](/v3/reference/theming/keys/Calendar.md)

## Props

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="prop-iconOverride">iconOverride</span> | `Object` |  | `null` | A partial icon registry (`{ [componentName]: { [iconName]: { component, props } } }`) merged with inherited and default icon entries; scopes icon overrides to this component and its descendants. |
| <span id="prop-themeOverride">themeOverride</span> | `Object` |  | `null` | A partial ThemeObject keyed by component name, merged over this component's theme and provided to descendants. |
| <span id="prop-class">class</span> | `string\|array\|object` |  | `undefined` | Additional CSS classes to apply to the calendar root. |
| <span id="prop-layout">layout</span> | `string` |  | `undefined` | The heading layout style: "month-and-year", "month-only", "year-only", or default heading. |
| <span id="prop-modelValue">modelValue</span> | `object` |  | `undefined` | The currently selected date value (use with v-model). |
| <span id="prop-defaultPlaceholder">defaultPlaceholder</span> | `object` |  | `undefined` | The default placeholder date shown when no date is selected. |
| <span id="prop-placeholder">placeholder</span> | `object` |  | `undefined` | The current placeholder date (use with v-model:placeholder). |
| <span id="prop-locale">locale</span> | `string` |  | `undefined` | The locale string used for date formatting. |
| <span id="prop-minValue">minValue</span> | `object` |  | `undefined` | The minimum selectable date value. |
| <span id="prop-maxValue">maxValue</span> | `object` |  | `undefined` | The maximum selectable date value. |
| <span id="prop-yearRange">yearRange</span> | `array` |  | `undefined` | An explicit array of year date values to populate the year dropdown. |
| <span id="prop-fixedWeeks">fixedWeeks</span> | `boolean` |  | `undefined` | Whether to always display a fixed number of weeks. |
| <span id="prop-isDateDisabled">isDateDisabled</span> | `func` |  | `undefined` | A function that returns true for dates that should be disabled. |
| <span id="prop-isDateUnavailable">isDateUnavailable</span> | `func` |  | `undefined` | A function that returns true for dates that are unavailable. |
| <span id="prop-numberOfMonths">numberOfMonths</span> | `number` |  | `undefined` | The number of months to display at once. |
| <span id="prop-pagedNavigation">pagedNavigation</span> | `boolean` |  | `undefined` | Whether to use paged navigation (advance by numberOfMonths at a time). |
| <span id="prop-preventDeselect">preventDeselect</span> | `boolean` |  | `undefined` | Whether to prevent deselecting an already-selected date. |
| <span id="prop-weekStartsOn">weekStartsOn</span> | `number` |  | `undefined` | The day of the week the calendar starts on (0 = Sunday). |
| <span id="prop-weekdayFormat">weekdayFormat</span> | `string` |  | `undefined` | The format of weekday labels: "narrow", "short", or "long". |
| <span id="prop-calendarLabel">calendarLabel</span> | `string` |  | `undefined` | An accessible label for the calendar. |
| <span id="prop-disabled">disabled</span> | `boolean` |  | `undefined` | Whether the calendar is disabled. |
| <span id="prop-readonly">readonly</span> | `boolean` |  | `undefined` | Whether the calendar is read-only. |
| <span id="prop-initialFocus">initialFocus</span> | `boolean` |  | `undefined` | Whether to focus the calendar on mount. |
| <span id="prop-multiple">multiple</span> | `boolean` |  | `undefined` | Whether multiple dates can be selected. |

## Slots

### `calendar-heading` {#slot-calendar-heading}

Scoped slot.

#### Bindings

| Name | Description |
| --- | --- |
| <span id="slot-calendar-heading-param-date">date</span> |  |
| <span id="slot-calendar-heading-param-month">month</span> |  |
| <span id="slot-calendar-heading-param-year">year</span> |  |

## Events

| Name | Description |
| --- | --- |
| `update:modelValue` | Emitted when the value changes. |
| `update:placeholder` | Emitted when the placeholder date changes. |

[Full event reference](/v3/reference/api/vue/Calendar/events.md)

## Source

`client/lib/controls/calendar/Calendar.vue`
