diff --git a/apps/main/src/components/EventModal.tsx b/apps/main/src/components/EventModal.tsx index 6f35b98..200cc1c 100644 --- a/apps/main/src/components/EventModal.tsx +++ b/apps/main/src/components/EventModal.tsx @@ -29,7 +29,19 @@ import { useCreateEvents, useEvent, useUpdateEvent } from "../hooks/events"; import { useTablosList } from "../hooks/tablos"; import { useIsReadOnlyUser, useUser } from "../providers/UserStoreProvider"; -export const EventModal = ({ mode }: { mode: "create" | "edit" }) => { +export const EventModal = ({ + mode, + isOpen, + onClose: onCloseProp, + defaultTabloId, + defaultDate, +}: { + mode: "create" | "edit"; + isOpen?: boolean; + onClose?: () => void; + defaultTabloId?: string; + defaultDate?: Date; +}) => { const { t, i18n } = useTranslation("components"); const { event_id } = useParams(); const { data: event } = useEvent(event_id as string); @@ -37,17 +49,24 @@ export const EventModal = ({ mode }: { mode: "create" | "edit" }) => { const user = useUser(); const isReadOnly = useIsReadOnlyUser(); const [searchParams] = useSearchParams(); - const tablo_id = searchParams.get("tablo_id"); - const dateFromParams = searchParams.get("date"); - const date = dateFromParams ? new Date(dateFromParams) : new Date(); + const navigate = useNavigate(); + + // When used standalone (isOpen prop provided), ignore URL params and use props instead + const isStandalone = isOpen !== undefined; + const tablo_id = isStandalone ? (defaultTabloId ?? "") : (searchParams.get("tablo_id") ?? ""); + const dateFromParams = isStandalone ? null : searchParams.get("date"); + const date = defaultDate ?? (dateFromParams ? new Date(dateFromParams) : new Date()); const { data: tablos, isLoading: tablosLoading } = useTablosList(); const createEvents = useCreateEvents(); const updateEvent = useUpdateEvent(); - const navigate = useNavigate(); const onClose = () => { - navigate(-1); + if (onCloseProp) { + onCloseProp(); + } else { + navigate(-1); + } }; // Get the local date string without timezone conversion @@ -93,7 +112,7 @@ export const EventModal = ({ mode }: { mode: "create" | "edit" }) => { }, [mode, event]); return ( - + diff --git a/apps/main/src/pages/planning.tsx b/apps/main/src/pages/planning.tsx index aafec5f..73e760b 100644 --- a/apps/main/src/pages/planning.tsx +++ b/apps/main/src/pages/planning.tsx @@ -18,6 +18,7 @@ import { Outlet, useNavigate, useParams, useSearchParams } from "react-router-do import { useDeleteEvent, useEventsByTablo } from "../hooks/events"; import { useGetAllTabloAccess, useTablosList } from "../hooks/tablos"; import { useIsReadOnlyUser } from "../providers/UserStoreProvider"; +import { EventModal } from "../components/EventModal"; type ViewType = "month" | "week" | "day"; @@ -41,6 +42,7 @@ export const PlanningPage = () => { const isReadOnly = useIsReadOnlyUser(); const currentTab = searchParams.get("tab") ?? "calendar"; const [eventsSearchQuery, setEventsSearchQuery] = useState(""); + const [isCreateEventOpen, setIsCreateEventOpen] = useState(false); // Fetch tablos const { data: tablos, isLoading: tablosLoading } = useTablosList(); @@ -815,10 +817,7 @@ export const PlanningPage = () => {