UNPKG

@vurilo/nepali-date-picker

Version:

Nepali Calendars, date and time pickers based on Mantine components

93 lines (92 loc) 4.6 kB
import React from "react"; import { BoxProps, StylesApiProps, ElementProps, Factory } from "@mantine/core"; import { MonthLevelGroupStylesNames } from "../MonthLevelGroup"; import { YearLevelGroupStylesNames } from "../YearLevelGroup"; import { DecadeLevelGroupStylesNames } from "../DecadeLevelGroup"; import { CalendarLevel } from "../../types"; import { MonthLevelSettings } from "../MonthLevel"; import { YearLevelSettings } from "../YearLevel"; import { DecadeLevelSettings } from "../DecadeLevel"; export type CalendarStylesNames = MonthLevelGroupStylesNames | YearLevelGroupStylesNames | DecadeLevelGroupStylesNames; export interface CalendarAriaLabels { monthLevelControl?: string; yearLevelControl?: string; nextMonth?: string; previousMonth?: string; nextYear?: string; previousYear?: string; nextDecade?: string; previousDecade?: string; } type OmittedSettings = "onNext" | "onPrevious" | "onLevelClick" | "withNext" | "withPrevious" | "nextDisabled" | "previousDisabled"; export interface CalendarSettings extends Omit<DecadeLevelSettings, OmittedSettings>, Omit<YearLevelSettings, OmittedSettings>, Omit<MonthLevelSettings, OmittedSettings> { /** Initial level displayed to the user (decade, year, month), used for uncontrolled component */ defaultLevel?: CalendarLevel; /** Current level displayed to the user (decade, year, month), used for controlled component */ level?: CalendarLevel; /** Called when level changes */ onLevelChange?: (level: CalendarLevel) => void; /** Called when user clicks year on decade level */ onYearSelect?: (date: Date) => void; /** Called when user clicks month on year level */ onMonthSelect?: (date: Date) => void; /** Called when mouse enters year control */ onYearMouseEnter?: (event: React.MouseEvent<HTMLButtonElement>, date: Date) => void; /** Called when mouse enters month control */ onMonthMouseEnter?: (event: React.MouseEvent<HTMLButtonElement>, date: Date) => void; } export interface CalendarBaseProps { __staticSelector?: string; /** Internal Variable to check if timezones were applied by parent component */ __timezoneApplied?: boolean; /** Prevents focus shift when buttons are clicked */ __preventFocus?: boolean; /** Determines whether date should be updated when year control is clicked */ __updateDateOnYearSelect?: boolean; /** Determines whether date should be updated when month control is clicked */ __updateDateOnMonthSelect?: boolean; /** Initial date that is displayed, used for uncontrolled component */ defaultDate?: Date; /** Date that is displayed, used for controlled component */ date?: Date; /** Called when date changes */ onDateChange?: (date: Date) => void; /** Number of columns to render next to each other */ numberOfColumns?: number; /** Number of columns to scroll when user clicks next/prev buttons, defaults to numberOfColumns */ columnsToScroll?: number; /** aria-label attributes for controls on different levels */ ariaLabels?: CalendarAriaLabels; /** Called when next decade button is clicked */ onNextDecade?: (date: Date) => void; /** Called when previous decade button is clicked */ onPreviousDecade?: (date: Date) => void; /** Called when next year button is clicked */ onNextYear?: (date: Date) => void; /** Called when previous year button is clicked */ onPreviousYear?: (date: Date) => void; /** Called when next month button is clicked */ onNextMonth?: (date: Date) => void; /** Called when previous month button is clicked */ onPreviousMonth?: (date: Date) => void; isNepali?: boolean; } export interface CalendarProps extends BoxProps, CalendarSettings, CalendarBaseProps, StylesApiProps<CalendarFactory>, ElementProps<"div"> { /** Max level that user can go up to (decade, year, month), defaults to decade */ maxLevel?: CalendarLevel; /** Min level that user can go down to (decade, year, month), defaults to month */ minLevel?: CalendarLevel; /** Determines whether days should be static, static days can be used to display month if it is not expected that user will interact with the component in any way */ static?: boolean; } export type CalendarFactory = Factory<{ props: CalendarProps; ref: HTMLDivElement; stylesNames: CalendarStylesNames; }>; export declare const Calendar: import("@mantine/core").MantineComponent<{ props: CalendarProps; ref: HTMLDivElement; stylesNames: CalendarStylesNames; }>; export {};