| import type { DayPickerProps } from "./props.js"; |
| import type { DateRange, Mode, Modifiers } from "./shared.js"; |
|
|
| export type Selection<T extends DayPickerProps> = { |
| |
| selected: SelectedValue<T> | undefined; |
| |
| select: SelectHandler<T> | undefined; |
| |
| isSelected: (date: Date) => boolean; |
| }; |
|
|
| export type SelectedSingle<T extends { required?: boolean }> = |
| T["required"] extends true ? Date : Date | undefined; |
| export type SelectedMulti<T extends { required?: boolean }> = |
| T["required"] extends true ? Date[] : Date[] | undefined; |
| export type SelectedRange<T extends { required?: boolean }> = |
| T["required"] extends true ? DateRange : DateRange | undefined; |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| export type SelectedValue<T> = T extends { mode: "single"; required?: boolean } |
| ? SelectedSingle<T> |
| : T extends { mode: "multiple"; required?: boolean } |
| ? SelectedMulti<T> |
| : T extends { mode: "range"; required?: boolean } |
| ? SelectedRange<T> |
| : undefined; |
|
|
| export type SelectHandlerSingle<T extends { required?: boolean | undefined }> = |
| ( |
| triggerDate: Date, |
| modifiers: Modifiers, |
| e: React.MouseEvent | React.KeyboardEvent, |
| ) => T["required"] extends true ? Date : Date | undefined; |
|
|
| export type SelectHandlerMulti<T extends { required?: boolean | undefined }> = ( |
| triggerDate: Date, |
| modifiers: Modifiers, |
| e: React.MouseEvent | React.KeyboardEvent, |
| ) => T["required"] extends true ? Date[] : Date[] | undefined; |
|
|
| export type SelectHandlerRange<T extends { required?: boolean | undefined }> = ( |
| triggerDate: Date, |
| modifiers: Modifiers, |
| e: React.MouseEvent | React.KeyboardEvent, |
| ) => T["required"] extends true ? DateRange : DateRange | undefined; |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| export type SelectHandler< |
| T extends { mode?: Mode | undefined; required?: boolean | undefined }, |
| > = T extends { |
| mode: "single"; |
| } |
| ? SelectHandlerSingle<T> |
| : T extends { mode: "multiple" } |
| ? SelectHandlerMulti<T> |
| : T extends { mode: "range" } |
| ? SelectHandlerRange<T> |
| : undefined; |
|
|