34 lines
963 B
TypeScript
34 lines
963 B
TypeScript
import { ref } from "vue";
|
|
|
|
export function useCalendarNavigation(calendarApiGetter: () => any) {
|
|
const selectedMonth = ref(new Date().getMonth());
|
|
const selectedYear = ref(new Date().getFullYear());
|
|
|
|
const years = Array.from({ length: 41 }, (_, i) => selectedYear.value - 20 + i);
|
|
|
|
function goPrev() { calendarApiGetter()?.prev(); }
|
|
function goNext() { calendarApiGetter()?.next(); }
|
|
function goToday() { calendarApiGetter()?.today(); }
|
|
|
|
function onDatesSet() {
|
|
const d = calendarApiGetter()?.getDate() ?? new Date();
|
|
selectedMonth.value = d.getMonth();
|
|
selectedYear.value = d.getFullYear();
|
|
}
|
|
|
|
function goToSelectedDate() {
|
|
calendarApiGetter()?.gotoDate(new Date(selectedYear.value, selectedMonth.value, 1));
|
|
}
|
|
|
|
return {
|
|
selectedMonth,
|
|
selectedYear,
|
|
years,
|
|
goPrev,
|
|
goNext,
|
|
goToday,
|
|
onDatesSet,
|
|
goToSelectedDate,
|
|
};
|
|
}
|