New calendar

This commit is contained in:
Milan Paunovic
2024-12-15 16:29:34 +01:00
parent a6009beb03
commit 70db8bdc0b
67 changed files with 1568 additions and 1041 deletions

View File

@ -0,0 +1,45 @@
import { useCallback } from 'react';
import debounce from 'debounce';
import { useSetAtom } from 'jotai';
import {
editVisibleAtom,
eventForEditAtom,
selectedNewEventDateAtom,
selectedDateAtom,
} from '@/components/pages/calendar/atoms';
import {DateOrDateTime} from "@howljs/calendar-kit";
export const useCalendarControls = (events: any[]) => {
const setEditVisible = useSetAtom(editVisibleAtom);
const setEventForEdit = useSetAtom(eventForEditAtom);
const setSelectedNewEndDate = useSetAtom(selectedNewEventDateAtom);
const setSelectedDate = useSetAtom(selectedDateAtom);
const handlePressEvent = useCallback((event: any) => {
const foundEvent = events?.find(x => x.id === event.id);
setEditVisible(true);
setEventForEdit(foundEvent!);
}, [events, setEditVisible, setEventForEdit]);
const handlePressCell = useCallback((date: DateOrDateTime) => {
const selectedDate = new Date(date.dateTime!);
const minutes = selectedDate.getMinutes();
selectedDate.setMinutes(minutes - (minutes % 30), 0, 0); // Also sets seconds and milliseconds to 0
setSelectedNewEndDate(selectedDate);
}, [setSelectedNewEndDate]);
const debouncedOnDateChanged = useCallback(
debounce((date: string) => {
setSelectedDate(new Date(date));
}, 50),
[setSelectedDate]
);
return {
handlePressEvent,
handlePressCell,
debouncedOnDateChanged
};
};