"use client"; import "@schedule-x/theme-shadcn/dist/index.css"; import { useNextCalendarApp, ScheduleXCalendar } from "@schedule-x/react"; import { createEventsServicePlugin } from "@schedule-x/events-service"; import { CalendarEventExternal, createViewDay, createViewWeek, } from "@schedule-x/calendar"; import { useEffect, useState } from "react"; import { format } from "date-fns"; import { Dialog } from "@radix-ui/react-dialog"; import { DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Label } from "@/components/ui/label"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { CalendarIcon } from "lucide-react"; import { Calendar } from "@/components/ui/calendar"; import { cn } from "@/lib/utils"; const Planning = () => { const plugins = [createEventsServicePlugin()]; const [eventSelected, setEventSelected] = useState(null); const [events, setEvents] = useState([ { id: "1", title: "Event 1", start: format(new Date(Date.now()), "yyyy-MM-dd HH:mm"), end: format( new Date(Date.now() + 1 * 3600 * 1000), "yyyy-MM-dd HH:mm", ), }, ]); const calendar = useNextCalendarApp( { theme: "shadcn", views: [createViewDay(), createViewWeek()], defaultView: "week", isDark: true, isResponsive: true, locale: "fr-FR", dayBoundaries: { start: "06:00", end: "00:00", }, events, callbacks: { onEventClick(event, e) { setEventSelected(event); }, }, }, plugins, ); useEffect(() => { // get all events calendar?.events.getAll(); }, []); return (
{ setEventSelected((e) => (open ? e : null)); }} > {eventSelected?.title} {eventSelected?.description}
{/* date > new Date() || date < new Date("1900-01-01") } initialFocus /> */} { const val = e.currentTarget.value; console.log(val); setEventSelected((ev) => { if (ev) return { ...ev, start: val, }; return ev; }); }} className="col-span-3" />
setEventSelected((ev) => { if (ev) return { ...ev, end: e.currentTarget.value, }; return ev; }) } className="col-span-3" />
); }; export default Planning;