Skip to content

Props

This component displays meeting slots grouped by day. It is fully typed and supports advanced customization through props

Props Table

PropTypeDefaultRequiredDescription
meetingsByDaysMDay[]trueList of grouped meeting slots by day.
dateFieldKeyDateFieldKeytrueThe key used to extract the slot date (e.g., 'startAt').
meetingSlotsKeyMeetingSlotsKeytrueThe key used to extract the list of slots of the day.
dateDatetrueThe currently selected or reference date.
modelValueMSlot | MSlot[] | nulltrueSelected slot(s), used with v-model.
multibooleanfalsefalseEnables multiple slot selection.
calendarOptionsCalendarOptions{}falseConfiguration options for calendar display.
loadingbooleanfalsefalseWhether the calendar is in a loading state.
skipnumber-1falseNumber of slot rows to skip. Useful for pagination.

Types

MeetingSlot<MeetingDateKey>

typescript
export type MeetingSlot<MeetingDateKey extends string> = {
  [K in MeetingDateKey]: string | Date;
} & Record<string, unknown>;

Represents a single meeting slot. It includes a dynamic date key (MeetingDateKey, such as "startAt" or "date"), and any other custom data.

MeetingsByDay<MeetingDateKey, Slot>

typescript
export type MeetingsByDay<
  MeetingDateKey extends string,
  Slot extends MeetingSlot<MeetingDateKey>
> = {
  [K in MeetingDateKey]: string | Date;
} & Record<string, unknown>;

Represents a day grouping multiple slots, each of which follows the MeetingSlot shape.

CalendarOptions

typescript
export type CalendarOptions = {
  daysLabel?: string[]; // Labels for days of the week
  monthsLabel?: string[]; // Labels for months
  limit?: number; // Max number of days to display
  spacing?: number; // Gap between days
  disabledDate?: (date: string | Date) => boolean; // Disable specific dates
};

Use this to control calendar appearance, layout, and behavior.