@jk-core/components
Version:
components for jk
55 lines (43 loc) • 1.28 kB
text/typescript
import { CalendarView } from '../type';
interface UseDateSelectProps {
viewDate: Date;
setViewDate: (date: Date) => void;
method: CalendarView;
setSelectMode:(mode:CalendarView) => void;
onChange: (date: Date, method?: CalendarView) => void;
setView:(view:CalendarView)=>void;
}
const useDateSelect = ({
viewDate, setViewDate, onChange, setSelectMode, method, setView,
}: UseDateSelectProps) => {
const min = new Date(2000, 0, 1);
const max = new Date(2099, 11, 31);
const onDayClick = (day: Date) => {
if (day < min || day > max) {
return;
}
setViewDate(day);
setView('day');
onChange(day, 'day');
};
const onMonthClick = (month:number) => {
const newDate = new Date(viewDate.getFullYear(), month, 1);
setViewDate(newDate);
if (method !== 'month') setSelectMode(method);
if (method === 'month') {
setView('month');
onChange(newDate, 'month');
}
};
const onYearClick = (year:number) => {
const newDate = new Date(year, 0, 1);
setViewDate(newDate);
if (method !== 'year') setSelectMode(method);
if (method === 'year') {
setView('year');
onChange(newDate, 'year');
}
};
return { onDayClick, onMonthClick, onYearClick };
};
export default useDateSelect;