UNPKG

rsuite

Version:

A suite of react components

194 lines (193 loc) 6.16 kB
import React from 'react'; import { PickerComponent } from '../internals/Picker'; import type { DisabledDateFunction, RangeType, DateRange } from './types'; import type { FormControlBaseProps, PickerBaseProps } from '../internals/types'; import type { DateRangePickerLocale } from '../locales'; import type { MonthDropdownProps } from '../Calendar/types'; export interface DateRangePickerProps extends PickerBaseProps<DateRangePickerLocale>, FormControlBaseProps<DateRange | null> { /** * Custom caret component */ caretAs?: React.ElementType | null; /** * Predefined date ranges */ ranges?: RangeType[]; /** * Format of the date displayed in the input box */ format?: string; /** * Rendered as an input, the date can be entered via the keyboard. * @default true */ editable?: boolean; /** * The date range that will be selected when you click on the date */ hoverRange?: 'week' | 'month' | ((date: Date) => DateRange); /** * Whether to click once on selected date range,Can be used with hoverRange */ oneTap?: boolean; /** * ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day * @see https://en.wikipedia.org/wiki/ISO_week_date */ isoWeek?: boolean; /** * The index of the first day of the week (0 - Sunday) * If `isoWeek` is `true`, the value of `weekStart` is ignored. * * @default 0 */ weekStart?: 0 | 1 | 2 | 3 | 4 | 5 | 6; /** * A label displayed at the beginning of toggle button */ label?: React.ReactNode; /** * Set the upper limit of the available year relative to the current selection date. * * @default 1000 */ limitEndYear?: number; /** * Set the lower limit of the available year relative to the current selection date */ limitStartYear?: number; /** * Whether to display a loading state indicator */ loading?: boolean; /** * to show week numbers */ showWeekNumbers?: boolean; /** * Show only one calendar select */ showOneCalendar?: boolean; /** * @deprecated Use `showMeridiem` instead */ showMeridian?: boolean; /** * Meridiem format for 12-hour time */ showMeridiem?: boolean; /** * Whether to display the formatted date range at the header of the calendar * @default true * @version 5.52.0 */ showHeader?: boolean; /** * Set default date for calendar */ defaultCalendarValue?: DateRange; /** * The character that separates two dates * @default ' ~ ' */ character?: string; /** * The props for the Month Dropdown component. */ monthDropdownProps?: MonthDropdownProps; /** * If the user selects a date on the right calendar first, it will automatically switch to the left calendar. * Always keep the date on the left calendar as the start date. * @default false * @version 5.69.0 */ calendarSnapping?: boolean; /** * Hide specific hour options */ hideHours?: (hour: number, date: Date) => boolean; /** * Hide specific minute options */ hideMinutes?: (minute: number, date: Date) => boolean; /** * Hide specific second options */ hideSeconds?: (second: number, date: Date) => boolean; /** * Disabled date * @deprecated Use {@link shouldDisableDate} instead */ disabledDate?: DisabledDateFunction; /** * Whether a date cell is disabled */ shouldDisableDate?: DisabledDateFunction; /** * Disabled hours on the time view */ shouldDisableHour?: (hour: number, date: Date) => boolean; /** * Disabled minutes on the time view */ shouldDisableMinute?: (minute: number, date: Date) => boolean; /** * Disabled seconds on the time view */ shouldDisableSecond?: (second: number, date: Date) => boolean; /** * Called when the option is selected */ onSelect?: (date: Date, event?: React.SyntheticEvent) => void; /** * Called after clicking the OK button */ onOk?: (date: DateRange, event: React.SyntheticEvent) => void; /** * Called after clicking the shortcut button */ onShortcutClick?: (range: RangeType, event: React.MouseEvent) => void; /** * Called when the value is cleared */ onClean?: (event: React.MouseEvent) => void; /** * Custom rendering of the selected date range. */ renderValue?: (value: DateRange, format: string) => string; /** * Custom render for calendar title */ renderTitle?: (date: Date) => React.ReactNode; /** * Custom rendering calendar cell content. * * @version 5.77.0 */ renderCell?: (date: Date) => React.ReactNode; } export interface DateRangePickerComponent extends PickerComponent<DateRangePickerProps> { /** Allow the maximum number of days specified, other dates are disabled */ allowedMaxDays: (days: number) => DisabledDateFunction; /** Only allowed days are specified, other dates are disabled */ allowedDays: (days: number) => DisabledDateFunction; /** Allow specified date range, other dates are disabled */ allowedRange: (startDate: string | Date, endDate: string | Date) => DisabledDateFunction; /** Disable dates after the specified date */ before: (beforeDate: string | Date) => DisabledDateFunction; /** Disable dates before the specified date */ after: (afterDate: string | Date) => DisabledDateFunction; /** Disable dates after today. */ beforeToday: () => DisabledDateFunction; /** Disable dates before today */ afterToday: () => DisabledDateFunction; /** Used to combine multiple conditions */ combine: (...args: any) => DisabledDateFunction; } /** * A date range picker allows you to select a date range from a calendar. * * @see https://rsuitejs.com/components/date-range-picker */ declare const DateRangePicker: DateRangePickerComponent; export default DateRangePicker;