
Product
Rust Support Now in Beta
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
vue-meeting-selector
Advanced tools
A fully-typed, accessible and customizable Vue component for displaying and selecting meeting slots grouped by day. Includes pagination, multi-selection, and render customization support.
A fully-typed, accessible and customizable Vue component for displaying and selecting meeting slots grouped by day. Includes pagination, multi-selection, and render customization support.
# npm
npm install vue-meeting-selector
# pnpm
pnpm add vue-meeting-selector
# yarn
yarn add vue-meeting-selector
<template>
<div>
<MeetingSelector
v-model="meeting"
v-model:skip="skip"
:date="date"
:meetings-by-days="meetingsDays"
date-field-key="date"
meeting-slots-key="slots"
@next-date="nextDate"
@previous-date="previousDate"
/>
Meeting selected: {{ meeting }}
</div>
</template>
<script setup lang="ts">
import {
MeetingSelector,
generateMeetingsByDays,
type MeetingsByDayGenerated,
type MeetingSlotGenerated,
type Time,
} from 'vue-meeting-selector';
import 'vue-meeting-selector/style.css';
import { ref } from 'vue';
const nbDaysToDisplay = 5;
const date = ref(new Date());
const meetingsDays = ref<MeetingsByDayGenerated[]>([]);
const skip = ref(0);
const meeting = ref<MeetingSlotGenerated | null>(null);
const loading = ref(true);
const nextDate = () => {
loading.value = true;
const start: Time = {
hours: 8,
minutes: 0,
};
const end: Time = {
hours: 16,
minutes: 0,
};
const dateCopy = new Date(date.value);
const newDate = new Date(dateCopy.setDate(dateCopy.getDate() + 7));
date.value = newDate;
meetingsDays.value = generateMeetingsByDays(newDate, nbDaysToDisplay, start, end, 30);
loading.value = false;
};
const previousDate = () => {
loading.value = true;
const start: Time = {
hours: 8,
minutes: 0,
};
const end: Time = {
hours: 16,
minutes: 0,
};
const dateCopy = new Date(date.value);
dateCopy.setDate(dateCopy.getDate() - 7);
const formattingDate = (dateToFormat: Date) => {
const d = new Date(dateToFormat);
const day = d.getDate() < 10 ? `0${d.getDate()}` : d.getDate();
const month = d.getMonth() + 1 < 10 ? `0${d.getMonth() + 1}` : d.getMonth() + 1;
const year = d.getFullYear();
return `${year}-${month}-${day}`;
};
const newDate =
formattingDate(new Date()) >= formattingDate(dateCopy) ? new Date() : new Date(dateCopy);
date.value = newDate;
meetingsDays.value = generateMeetingsByDays(newDate, nbDaysToDisplay, start, end, 30);
loading.value = false;
};
const start: Time = {
hours: 8,
minutes: 0,
};
const end: Time = {
hours: 16,
minutes: 0,
};
meetingsDays.value = generateMeetingsByDays(date.value, nbDaysToDisplay, start, end, 30);
loading.value = false;
</script>
Prop | Type | Default | Required | Description |
---|---|---|---|---|
meetingsByDays | MDay[] | — | true | List of grouped meeting slots by day. |
dateFieldKey | DateFieldKey | — | true | The key used to extract the slot date (e.g., 'startAt' ). |
meetingSlotsKey | MeetingSlotsKey | — | true | The key used to extract the list of slots of the day. |
date | Date | — | true | The currently selected or reference date. |
modelValue | MSlot | MSlot[] | null | — | true | Selected slot(s), used with v-model . |
multi | boolean | false | false | Enables multiple slot selection. |
calendarOptions | CalendarOptions | {} | false | Configuration options for calendar display. |
loading | boolean | false | false | Whether the calendar is in a loading state. |
skip | number | -1 | false | Number of slot rows to skip. Useful for pagination. |
generateMeetingsByDays(date, nbDays, startTime, endTime, interval)
Creates mock or real meeting slots grouped by day, spaced at regular intervals.
import { generateMeetingsByDays } from 'react-meeting-selector';
generatePlaceHolder(date, nbDays)
Generates an array of empty days with no slots — useful for loading states.
import { generatePlaceHolder } from 'react-meeting-selector';
FAQs
A fully-typed, accessible and customizable Vue component for displaying and selecting meeting slots grouped by day. Includes pagination, multi-selection, and render customization support.
The npm package vue-meeting-selector receives a total of 254 weekly downloads. As such, vue-meeting-selector popularity was classified as not popular.
We found that vue-meeting-selector demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.