@brightsoftware/date-np
Version:
Simple & minimal Nepali date picker that just works.
92 lines (91 loc) • 3.48 kB
TypeScript
import { type Dispatch, type SetStateAction } from "react";
import { NepaliDate } from "../NepaliDate";
type tpickerContextType = {
pickerState: {
onSelect?: (selectedDate: Date | NepaliDate) => void;
minDate?: Date | NepaliDate;
maxDate?: Date | NepaliDate;
today: Date;
isVisible: boolean;
locale: "en" | "ne";
/**
* The Date that is selected
* @default null
*/
selectedDate: Date | NepaliDate | null;
/**
* The default date used as a label when no valid date is selected
*/
defaultDate?: Date | NepaliDate;
/**
* Month that is currently in view,
* not always the selected Date's month.
*/
activeMonth: number;
/**
* Year that is in view not always the selected
* year's month.
*/
activeYear: number;
mode: "date" | "month" | "year";
};
setPickerState: Dispatch<SetStateAction<tpickerContextType["pickerState"]>>;
};
declare const usePicker: () => {
updatePickerDay: (day: Date | NepaliDate, programatic?: boolean) => void;
updatePickerMonth: (month: number) => void;
togglePickerMode: (toggleIf: tpickerContextType["pickerState"]["mode"], defaultMode: tpickerContextType["pickerState"]["mode"]) => void;
updatePickerMode: (newMode: tpickerContextType["pickerState"]["mode"]) => void;
updatePickerYear: (newYear: tpickerContextType["pickerState"]["activeYear"]) => void;
changePickerLocale: (newLocale: "en" | "ne") => void;
updatePickerVisiblity: (newVis: boolean) => void;
getEffectiveMinDate: () => Date;
getEffectiveMaxDate: () => Date;
isDateInRange: (date: Date | NepaliDate) => boolean;
canNavigateToPreviousMonth: () => boolean;
canNavigateToNextMonth: () => boolean;
canNavigateToPreviousYear: () => boolean;
canNavigateToNextYear: () => boolean;
resetToOriginalState: () => void;
getDisplayDate: () => Date | NepaliDate | null;
setMinDate: (newMinDate: Date | NepaliDate) => void;
setMaxDate: (newMaxDate: Date | NepaliDate) => void;
pickerState: {
onSelect?: (selectedDate: Date | NepaliDate) => void;
minDate?: Date | NepaliDate;
maxDate?: Date | NepaliDate;
today: Date;
isVisible: boolean;
locale: "en" | "ne";
/**
* The Date that is selected
* @default null
*/
selectedDate: Date | NepaliDate | null;
/**
* The default date used as a label when no valid date is selected
*/
defaultDate?: Date | NepaliDate;
/**
* Month that is currently in view,
* not always the selected Date's month.
*/
activeMonth: number;
/**
* Year that is in view not always the selected
* year's month.
*/
activeYear: number;
mode: "date" | "month" | "year";
};
setPickerState: Dispatch<SetStateAction<tpickerContextType["pickerState"]>>;
};
declare const PickerProvider: ({ children, minDate, maxDate, defaultDate, defaultLocale, onSelect, }: {
children: React.ReactNode;
minDate?: Date | NepaliDate;
maxDate?: Date | NepaliDate;
defaultDate?: Date | NepaliDate;
defaultLocale?: "AD" | "BS";
onSelect?: (selectedDate: Date | NepaliDate) => void;
}) => import("react/jsx-runtime").JSX.Element;
export { PickerProvider, usePicker, };