@renderlesskit/react
Version:
Collection of headless components/hooks that are accessible, composable, customizable from low level to build your own UI & Design System powered by Reakit
55 lines (54 loc) • 2.01 kB
TypeScript
/**
* All credit goes to [React Spectrum](https://github.com/adobe/react-spectrum)
* We improved the Calendar from Stately [useRangeCalendar](https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/calendar/src/useRangeCalendar.ts)
* to work with Reakit System
*/
import * as React from "react";
import { InputBase, RangeValue } from "@react-types/shared";
import { CalendarActions, CalendarState } from "./CalendarState";
export declare function useRangeCalendarState(props?: RangeCalendarInitialState): RangeCalendarStateReturn;
export declare type RangeCalendarState = CalendarState & {
dateRangeValue: RangeValue<Date> | null;
anchorDate: Date | null;
highlightedRange: RangeValue<Date> | null;
isRangeCalendar: boolean;
};
export declare type RangeCalendarActions = CalendarActions & {
setDateRangeValue: (value: RangeValue<Date>) => void;
setAnchorDate: React.Dispatch<React.SetStateAction<Date | null>>;
selectDate: (date: Date) => void;
selectFocusedDate: () => void;
highlightDate: (date: Date) => void;
};
declare type Range = {
/** The start value of the range. */
start: string;
/** The end value of the range. */
end: string;
};
declare type RangeValueBase = {
/** The current value (controlled). */
value?: Range;
/** The default value (uncontrolled). */
defaultValue?: Range;
/** Handler that is called when the value changes. */
onChange?: (value: Range) => void;
};
declare type RangeValueMinMax = {
/** The smallest value allowed. */
minValue?: string;
/** The largest value allowed. */
maxValue?: string;
};
export declare type RangeCalendarInitialState = RangeValueBase & RangeValueMinMax & InputBase & {
/**
* Whether the element should receive focus on render.
*/
autoFocus?: boolean;
/**
* Id for the calendar grid
*/
id?: string;
};
export declare type RangeCalendarStateReturn = RangeCalendarState & RangeCalendarActions;
export {};