import { Ref } from 'vue'; import { ViewMode } from './useDatePickerViewMode'; /** * Options du composable `useDatePickerCalendar`. * * Centralise la logique partagée entre `ComplexDatePicker` et `CalendarMode/DatePicker` * pour la gestion du calendrier VDatePicker : accessibilité, transitions, navigation * mois/année, et synchronisation de l'affichage. */ export interface UseDatePickerCalendarOptions { /** Accès unifié à l'élément racine du calendrier (VDatePicker.$el ou dialog) */ getRootEl: () => HTMLElement | null | undefined; /** Visibilité du calendrier */ isDatePickerVisible: Ref; currentViewMode: Ref; handleViewModeUpdate: (mode: ViewMode) => void; handleMonthUpdate: () => void; handleYearUpdate: () => void; currentMonth: Ref; currentMonthName: Ref; currentYear: Ref; currentYearName: Ref; updateAccessibility: (el: HTMLElement, mode: ViewMode) => void; cleanupGridSemantics: (el: HTMLElement) => void; focusInitialDay: () => void; /** * Rafraîchit l'UI du calendrier après un changement de mois/année. * Typiquement : updateSelectedDayAria + focus. */ refreshCalendarUi: (options: { focusDay?: boolean; }) => void; /** * Hook optionnel appelé lors de l'ouverture de la vue année dans * `handleViewModeUpdateWrapper`. ComplexDatePicker l'utilise pour * synchroniser le mois/année affiché depuis la date sélectionnée. */ onYearViewOpen?: () => void; /** * Hook optionnel pour personnaliser le focus dans la vue année. * ComplexDatePicker l'utilise pour synchroniser le proxy et focaliser * l'année sélectionnée. Retourne `true` si le focus a été géré. */ onYearViewFocus?: (rootEl: HTMLElement) => boolean | void; /** * Hook optionnel appelé dans `onUpdateYear` après la mise à jour de * l'année, avant le refresh. ComplexDatePicker l'utilise pour le * pont Dec↔Jan lors de la navigation par année. */ onYearChangeBridge?: (newYear: string, oldYear: string | null) => void; } export interface UseDatePickerCalendarReturn { reapplyAccessibility: () => void; waitForTransitionEnd: (container: HTMLElement, callback: () => void) => void; handleViewModeUpdateWrapper: (mode: ViewMode) => void; syncDisplayedMonthYearFromDate: (date: Date) => void; onUpdateMonth: (month: string) => void; onUpdateYear: (year: string) => void; } /** * Centralise la logique calendrier partagée entre ComplexDatePicker et * CalendarMode/DatePicker : reapplyAccessibility, handleViewModeUpdateWrapper, * waitForTransitionEnd, syncDisplayedMonthYearFromDate, onUpdateMonth/onUpdateYear. */ export declare const useDatePickerCalendar: (options: UseDatePickerCalendarOptions) => UseDatePickerCalendarReturn;