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
TypeScript
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 };