Skip to content

Multiple calendars

Each instance needs its own calendar-id. Composables and API functions take the same id.

vue
<template>
  <section>
    <h2>Sales</h2>
    <ZaptimeCalendar calendar-id="sales" :config="sales" @booking-confirmed="(r) => log('sales', r)" />
  </section>

  <section>
    <h2>Support</h2>
    <ZaptimeCalendar calendar-id="support" :config="support" @booking-confirmed="(r) => log('support', r)" />
  </section>
</template>

<script setup lang="ts">
import { ZaptimeCalendar } from "@zaptime/vue3";
import type { ZaptimeConfig } from "@zaptime/vue3";
import { useSelectedTimeSlot } from "@zaptime/core";
import type { ReservationResponse } from "@zaptime/core";

const sales: ZaptimeConfig = { token: import.meta.env.VITE_SALES_TOKEN, compact: true };
const support: ZaptimeConfig = { token: import.meta.env.VITE_SUPPORT_TOKEN, compact: true };

// State is per id
const { selectedTimeSlot: salesSlot } = useSelectedTimeSlot("sales");
const { selectedTimeSlot: supportSlot } = useSelectedTimeSlot("support");

function log(which: string, r: ReservationResponse) {
  console.log(which, r.data.uuid);
}
</script>

The component renders #zaptime-calendar on each instance. The duplicate id is harmless for styling but fails strict HTML validation.