3.x
Essentials

Events

Every event and its payload.
EventPayloadWhen
update:modelValueThe calendar state objectAfter a selection or a preset, and when the displayed month changes
openednoneThe calendar becomes visible
closednoneThe calendar is hidden
dayClickedThe day objectAny click or Enter on a day, even a disabled one
choseDayThe day objectA day was selected
selectedDaysCountnumberA range has both ends. The payload is the difference in days
dayMouseOverA date stringThe pointer or the keyboard focus moves over a day
changedMonthDateThe first visible month changed
changedYearDateThe year changed
<FunctionalCalendar
  v-model="value"
  is-date-range
  @day-clicked="day => console.log('clicked', day.date)"
  @chose-day="day => console.log('chose', day.date)"
  @selected-days-count="count => console.log(count, 'days')"
  @changed-month="date => console.log(date.getMonth() + 1)"
/>

Event names are camelCase in the component. In a template, @day-clicked and @dayClicked both work.

update:modelValue

The payload is the calendar's own state object, the same reference each time. Typed dates, the time picker and the clear button change that object in place without emitting. To react to every change, watch the bound value deeply.

watch(value, next => save(next), { deep: true })

A preset emits it once, with the final state. See the bound value for the keys.

opened and closed

The calendar emits one of them when it mounts, with its initial state. An inline calendar is open, so it emits opened. A modal calendar emits closed. After that they fire when the modal opens or closes.

The day object

dayClicked and choseDay receive this object. With a range and the time picker on, date has the suffix 00:00.

KeyTypeDescription
daynumberDay of the month
datestringThe date in dateFormat
hidebooleanA day of a neighbor month, or a disabled weekday
isTodaybooleanToday
isMarkedbooleanPart of the selection or marked
isDateRangeStart, isDateRangeEndbooleanStart or end of markedDateRange
isMouseToLeft, isMouseToRight, isHoveredbooleanRange preview state
hideLeftAndRightDaysbooleanA hidden neighbor day

Not emitted by presets

A preset emits update:modelValue once and no dayClicked or choseDay. See presets.

Copyright © 2026