mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-09-17 06:30:21 +00:00
Merge pull request #26025 from NathanNZ/react-dates-daypicker
React Dates DayPickerSingleDate Support
This commit is contained in:
Vendored
+122
-89
@@ -1,6 +1,7 @@
|
||||
// Type definitions for react-dates v16.0.0
|
||||
// Project: https://github.com/airbnb/react-dates
|
||||
// Definitions by: Artur Ampilogov <https://github.com/Artur-A>
|
||||
// Definitions by: Artur Ampilogov <https://github.com/Artur-A>
|
||||
// Nathan Holland <https://github.com/NathanNZ>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
// TypeScript Version: 2.6
|
||||
|
||||
@@ -21,8 +22,66 @@ declare namespace ReactDates {
|
||||
type FocusedInputShape = 'startDate' | 'endDate';
|
||||
type OrientationShape = 'horizontal' | 'vertical';
|
||||
type ScrollableOrientationShape = 'horizontal' | 'vertical' | 'verticalScrollable';
|
||||
type CalendarInfoPositionShape = 'top' | 'bottom' | 'before' | 'after';
|
||||
|
||||
//https://github.com/airbnb/react-dates/blob/v16.0.1/src/defaultPhrases.js
|
||||
type SingleDatePickerPhrases = {
|
||||
closeDatePicker: string,
|
||||
clearDate: string,
|
||||
jumpToPrevMonth: string,
|
||||
jumpToNextMonth: string,
|
||||
keyboardShortcuts: string,
|
||||
showKeyboardShortcutsPanel: string,
|
||||
hideKeyboardShortcutsPanel: string,
|
||||
openThisPanel: string,
|
||||
enterKey: string,
|
||||
leftArrowRightArrow: string,
|
||||
upArrowDownArrow: string,
|
||||
pageUpPageDown: string,
|
||||
homeEnd: string,
|
||||
escape: string,
|
||||
questionMark: string,
|
||||
selectFocusedDate: string,
|
||||
moveFocusByOneDay: string,
|
||||
moveFocusByOneWeek: string,
|
||||
moveFocusByOneMonth: string,
|
||||
moveFocustoStartAndEndOfWeek: string,
|
||||
returnFocusToInput: string,
|
||||
keyboardNavigationInstructions: string,
|
||||
chooseAvailableDate: (date: string) => string,
|
||||
dateIsUnavailable: (date: string) => string,
|
||||
};
|
||||
|
||||
//https://github.com/airbnb/react-dates/blob/v16.0.1/src/defaultPhrases.js
|
||||
type DateRangePickerPhrases = {
|
||||
calendarLabel?: string,
|
||||
jumpToPrevMonth?: string,
|
||||
jumpToNextMonth?: string,
|
||||
keyboardShortcuts?: string,
|
||||
showKeyboardShortcutsPanel?: string,
|
||||
hideKeyboardShortcutsPanel?: string,
|
||||
openThisPanel?: string,
|
||||
enterKey?: string,
|
||||
leftArrowRightArrow?: string,
|
||||
upArrowDownArrow?: string,
|
||||
pageUpPageDown?: string,
|
||||
homeEnd?: string,
|
||||
escape?: string,
|
||||
questionMark?: string,
|
||||
selectFocusedDate?: string,
|
||||
moveFocusByOneDay?: string,
|
||||
moveFocusByOneWeek?: string,
|
||||
moveFocusByOneMonth?: string,
|
||||
moveFocustoStartAndEndOfWeek?: string,
|
||||
returnFocusToInput?: string,
|
||||
chooseAvailableStartDate?: (date: string) => string,
|
||||
chooseAvailableEndDate?: (date: string) => string,
|
||||
chooseAvailableDate?: (date: string) => string,
|
||||
dateIsUnavailable?: (date: string) => string,
|
||||
dateIsSelected?: (date: string) => string
|
||||
};
|
||||
|
||||
//https://github.com/airbnb/react-dates/blob/v16.0.1/src/shapes/DateRangePickerShape.js
|
||||
interface DateRangePickerShape {
|
||||
// REQUIRED props
|
||||
startDate: momentPropTypes.momentObj | null,
|
||||
@@ -61,7 +120,7 @@ declare namespace ReactDates {
|
||||
withPortal?: boolean,
|
||||
withFullScreenPortal?: boolean,
|
||||
initialVisibleMonth?: () => momentPropTypes.momentObj,
|
||||
firstDayOfWeek? : 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
numberOfMonths?: number,
|
||||
keepOpenOnDateSelect?: boolean,
|
||||
reopenPickerOnClearDates?: boolean,
|
||||
@@ -92,40 +151,13 @@ declare namespace ReactDates {
|
||||
displayFormat?: (string | (() => string)),
|
||||
monthFormat?: string,
|
||||
weekDayFormat?: string,
|
||||
phrases?: {
|
||||
closeDatePicker: string,
|
||||
clearDates: string,
|
||||
focusStartDate: string,
|
||||
jumpToPrevMonth: string,
|
||||
jumpToNextMonth: string,
|
||||
keyboardShortcuts: string,
|
||||
showKeyboardShortcutsPanel: string,
|
||||
hideKeyboardShortcutsPanel: string,
|
||||
openThisPanel: string,
|
||||
enterKey: string,
|
||||
leftArrowRightArrow: string,
|
||||
upArrowDownArrow: string,
|
||||
pageUpPageDown: string,
|
||||
homeEnd: string,
|
||||
escape: string,
|
||||
questionMark: string,
|
||||
selectFocusedDate: string,
|
||||
moveFocusByOneDay: string,
|
||||
moveFocusByOneWeek: string,
|
||||
moveFocusByOneMonth: string,
|
||||
moveFocustoStartAndEndOfWeek: string,
|
||||
returnFocusToInput: string,
|
||||
keyboardNavigationInstructions: string,
|
||||
|
||||
chooseAvailableStartDate: (date: string) => string,
|
||||
chooseAvailableEndDate: (date: string) => string,
|
||||
dateIsUnavailable: (date: string) => string
|
||||
}
|
||||
phrases?: DateRangePickerPhrases
|
||||
}
|
||||
|
||||
type DateRangePicker = React.ClassicComponentClass<DateRangePickerShape>;
|
||||
var DateRangePicker: React.ClassicComponentClass<DateRangePickerShape>;
|
||||
|
||||
//https://github.com/airbnb/react-dates/blob/v16.0.1/src/shapes/SingleDatePickerShape.js
|
||||
interface SingleDatePickerShape {
|
||||
// REQUIRED props
|
||||
date: momentPropTypes.momentObj | null,
|
||||
@@ -159,7 +191,7 @@ declare namespace ReactDates {
|
||||
withPortal?: boolean,
|
||||
withFullScreenPortal?: boolean,
|
||||
initialVisibleMonth?: () => momentPropTypes.momentObj,
|
||||
firstDayOfWeek? : 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
numberOfMonths?: number,
|
||||
keepOpenOnDateSelect?: boolean,
|
||||
reopenPickerOnClearDates?: boolean,
|
||||
@@ -168,7 +200,7 @@ declare namespace ReactDates {
|
||||
daySize?: number,
|
||||
isRTL?: boolean,
|
||||
verticalSpacing?: number,
|
||||
verticalHeight?: number| null,
|
||||
verticalHeight?: number | null,
|
||||
|
||||
// navigation related props
|
||||
navPrev?: string | JSX.Element,
|
||||
@@ -189,39 +221,12 @@ declare namespace ReactDates {
|
||||
// internationalization props
|
||||
displayFormat?: (string | (() => string)),
|
||||
monthFormat?: string,
|
||||
phrases?: {
|
||||
closeDatePicker: string,
|
||||
clearDate: string,
|
||||
jumpToPrevMonth: string,
|
||||
jumpToNextMonth: string,
|
||||
keyboardShortcuts: string,
|
||||
showKeyboardShortcutsPanel: string,
|
||||
hideKeyboardShortcutsPanel: string,
|
||||
openThisPanel: string,
|
||||
enterKey: string,
|
||||
leftArrowRightArrow: string,
|
||||
upArrowDownArrow: string,
|
||||
pageUpPageDown: string,
|
||||
homeEnd: string,
|
||||
escape: string,
|
||||
questionMark: string,
|
||||
selectFocusedDate: string,
|
||||
moveFocusByOneDay: string,
|
||||
moveFocusByOneWeek: string,
|
||||
moveFocusByOneMonth: string,
|
||||
moveFocustoStartAndEndOfWeek: string,
|
||||
returnFocusToInput: string,
|
||||
keyboardNavigationInstructions: string,
|
||||
|
||||
chooseAvailableDate: (date: string) => string,
|
||||
dateIsUnavailable: (date: string) => string,
|
||||
},
|
||||
phrases?: SingleDatePickerPhrases
|
||||
}
|
||||
type SingleDatePicker = React.ClassicComponentClass<SingleDatePickerShape>;
|
||||
var SingleDatePicker: React.ClassicComponentClass<SingleDatePickerShape>;
|
||||
|
||||
|
||||
|
||||
//https://github.com/airbnb/react-dates/blob/v16.0.1/src/components/DayPickerRangeController.jsx
|
||||
interface DayPickerRangeControllerShape {
|
||||
// REQUIRED props
|
||||
startDate: momentPropTypes.momentObj | null,
|
||||
@@ -266,40 +271,68 @@ declare namespace ReactDates {
|
||||
|
||||
// internationalization props
|
||||
monthFormat?: string,
|
||||
phrases?: {
|
||||
calendarLabel?: string,
|
||||
jumpToPrevMonth?: string,
|
||||
jumpToNextMonth?: string,
|
||||
keyboardShortcuts?: string,
|
||||
showKeyboardShortcutsPanel?: string,
|
||||
hideKeyboardShortcutsPanel?: string,
|
||||
openThisPanel?: string,
|
||||
enterKey?: string,
|
||||
leftArrowRightArrow?: string,
|
||||
upArrowDownArrow?: string,
|
||||
pageUpPageDown?: string,
|
||||
homeEnd?: string,
|
||||
escape?: string,
|
||||
questionMark?: string,
|
||||
selectFocusedDate?: string,
|
||||
moveFocusByOneDay?: string,
|
||||
moveFocusByOneWeek?: string,
|
||||
moveFocusByOneMonth?: string,
|
||||
moveFocustoStartAndEndOfWeek?: string,
|
||||
returnFocusToInput?: string,
|
||||
chooseAvailableStartDate?: (date: string) => string,
|
||||
chooseAvailableEndDate?: (date: string) => string,
|
||||
chooseAvailableDate?: (date: string) => string,
|
||||
dateIsUnavailable?: (date: string) => string,
|
||||
dateIsSelected?: (date: string) => string,
|
||||
}
|
||||
phrases?: DateRangePickerPhrases
|
||||
}
|
||||
|
||||
type DayPickerRangeController = React.ClassicComponentClass<DayPickerRangeControllerShape>;
|
||||
var DayPickerRangeController: React.ClassicComponentClass<DayPickerRangeControllerShape>;
|
||||
|
||||
//https://github.com/airbnb/react-dates/blob/97bf16e72dbf5ce88f0181c49212080061a83f69/src/components/DayPickerSingleDateController.jsx
|
||||
interface DayPickerSingleDateControllerShape {
|
||||
date: momentPropTypes.momentObj | null,
|
||||
onDateChange: (date: momentPropTypes.momentObj | null) => void,
|
||||
focused: boolean,
|
||||
|
||||
onFocusChange: (arg: { focused: boolean | null }) => void,
|
||||
onClose?: (final: { date: momentPropTypes.momentObj }) => void,
|
||||
|
||||
keepOpenOnDateSelect?: boolean,
|
||||
isOutsideRange?: (day: any) => boolean,
|
||||
isDayBlocked?: (day: any) => boolean,
|
||||
isDayHighlighted?: (day: any) => boolean,
|
||||
|
||||
// DayPicker props
|
||||
renderMonth?: (day: momentPropTypes.momentObj) => (string | JSX.Element),
|
||||
enableOutsideDays?: boolean,
|
||||
numberOfMonths?: number,
|
||||
orientation?: ScrollableOrientationShape,
|
||||
withPortal?: boolean,
|
||||
initialVisibleMonth?: () => momentPropTypes.momentObj,
|
||||
firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
hideKeyboardShortcutsPanel?: boolean,
|
||||
daySize?: number,
|
||||
verticalHeight?: number,
|
||||
noBorder?: boolean,
|
||||
transitionDuration?: number,
|
||||
|
||||
navPrev?: string | JSX.Element,
|
||||
navNext?: string | JSX.Element,
|
||||
|
||||
onPrevMonthClick?: (newCurrentMonth: momentPropTypes.momentObj) => void,
|
||||
onNextMonthClick?: (newCurrentMonth: momentPropTypes.momentObj) => void,
|
||||
onOutsideClick?: (e: any) => void,
|
||||
renderCalendarDay?: (day: momentPropTypes.momentObj) => (string | JSX.Element),
|
||||
renderDayContents?: (day: momentPropTypes.momentObj) => (string | JSX.Element),
|
||||
renderCalendarInfo?: () => (string | JSX.Element),
|
||||
calendarInfoPosition?: CalendarInfoPositionShape,
|
||||
|
||||
// accessibility
|
||||
onBlur?: () => void,
|
||||
isFocused?: boolean,
|
||||
showKeyboardShortcuts?: boolean,
|
||||
|
||||
// i18n
|
||||
monthFormat?: string,
|
||||
weekDayFormat?: string,
|
||||
phrases?: SingleDatePickerPhrases,
|
||||
dayAriaLabelFormat?: string,
|
||||
|
||||
isRTL?: boolean,
|
||||
|
||||
}
|
||||
|
||||
type DayPickerSingleDateController = React.ClassicComponentClass<DayPickerSingleDateControllerShape>;
|
||||
var DayPickerSingleDateController: React.ClassicComponentClass<DayPickerSingleDateControllerShape>;
|
||||
|
||||
var isInclusivelyAfterDay: (a: moment.Moment, b: moment.Moment) => boolean;
|
||||
var isInclusivelyBeforeDay: (a: moment.Moment, b: moment.Moment) => boolean;
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
SingleDatePicker,
|
||||
DateRangePicker,
|
||||
DayPickerRangeController,
|
||||
DayPickerSingleDateController,
|
||||
isInclusivelyAfterDay,
|
||||
isInclusivelyBeforeDay,
|
||||
isNextDay,
|
||||
@@ -137,16 +138,16 @@ class DayPickerRangeControllerMinimumTest extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class DayPickerSingleDateControllerMinimumTest extends React.Component {
|
||||
render() {
|
||||
return <DayPickerSingleDateController
|
||||
date={moment()}
|
||||
onDateChange={(arg)=> {}}
|
||||
focused={true}
|
||||
onFocusChange={(arg) => {}}
|
||||
/>
|
||||
}
|
||||
}
|
||||
|
||||
const isInclusivelyAfterDayResult: boolean = isInclusivelyAfterDay(moment(),moment());
|
||||
const isInclusivelyBeforeDayResult: boolean = isInclusivelyBeforeDay(moment(),moment());
|
||||
|
||||
Reference in New Issue
Block a user