UNPKG

nepali-date-utility

Version:

A beautiful React date picker component with other date utilities for Nepali Bikram Sambat calendar

156 lines (147 loc) 4.04 kB
import React from 'react'; interface CustomDate { year: number; month: number; day: number; } type CustomDateFormatOptions = { format?: "YYYY-MM-DD" | "DD-MM-YYYY" | "MM/DD/YYYY" | "YYYY/MM/DD" | string; locale?: "en" | "ne"; separator?: string; }; interface DatePickerProps { /** * Selected date in Bikram Sambat format */ value?: CustomDate | null; /** * Callback when date changes */ onChange?: (date: CustomDate) => void; /** * Placeholder text for input */ placeholder?: string; /** * Disable the datepicker */ disabled?: boolean; /** * Min date (inclusive) */ minDate?: CustomDate; /** * Max date (inclusive) */ maxDate?: CustomDate; /** * Format for displaying the date */ formatOptions?: CustomDateFormatOptions; className?: string; /** * Additional class name for input field */ inputClassName?: string; /** * Additional class name for calendar popup */ calendarClassName?: string; /** * Position of the calendar popup */ position?: "bottom" | "top" | "auto"; /** * Additional class names for day in claendar */ dayClassName?: string; /** * Additional class names for selected day in calendar */ selectedDayClassName?: string; /** * Additional class names for today date in claendar */ todayClassName?: string; /** * Additional class names for disabled day in calendar */ disabledDayClassName?: string; } interface CalendarProps { /** * Currently selected locale */ locale?: "en" | "ne"; /** * Currently selected date */ selectedDate?: CustomDate | null; /** * Currently viewed month and year */ viewDate: CustomDate; /** * Callback when date is selected */ onDateSelect: (date: CustomDate) => void; /** * Callback when month view changes */ onViewDateChange: (date: CustomDate) => void; /** * Min date (inclusive) */ minDate?: CustomDate; /** * Max date (inclusive) */ maxDate?: CustomDate; /** * Additional class names */ calendarClassName?: string; /** * Additional class names */ dayClassName?: string; /** * Additional class names */ selectedDayClassName?: string; /** * Additional class names */ todayClassName?: string; /** * Additional class names */ disabledDayClassName?: string; } interface DateInputProps { value?: CustomDate | null; onChange?: (value: string) => void; onSelect?: (date: CustomDate | null) => void; placeholder?: string; disabled?: boolean; formatOptions?: CustomDateFormatOptions; className?: string; onFocus?: () => void; onBlur?: () => void; } declare const DatePicker: React.FC<DatePickerProps>; declare const Calendar: React.FC<CalendarProps>; declare const DateInput: React.FC<DateInputProps>; declare function convertADToBS(adDate: Date): CustomDate; declare function convertBSToAD(bsDate: CustomDate): CustomDate; declare function getTodayBS(): CustomDate; declare function getDaysInMonth(year: number, month: number): number; declare function isValidBsDate(date: CustomDate): boolean; declare function isDateInRange(date: CustomDate, minDate?: CustomDate, maxDate?: CustomDate): boolean; declare function formatDate(date: CustomDate, options?: CustomDateFormatOptions): string; declare function parseDate(dateStr: string, format?: string): CustomDate | null; declare const bsMonthsEn: string[]; declare const bsMonthsNe: string[]; declare const bsDaysEn: string[]; declare const bsDaysNe: string[]; export { Calendar, type CustomDate, DateInput, type DatePickerProps, DatePicker as NepaliDatePicker, bsDaysEn, bsDaysNe, bsMonthsEn, bsMonthsNe, convertADToBS, convertBSToAD, formatDate, getDaysInMonth, getTodayBS, isDateInRange, isValidBsDate, parseDate };