@navikt/ds-react
Version:
React components from the Norwegian Labour and Welfare Administration.
77 lines (76 loc) • 2.31 kB
TypeScript
import React from "react";
import { DateInputProps } from "../../Date.Input";
import { DateRange } from "../../Date.typeutils";
import { DatePickerProps } from "../DatePicker";
import { DateValidationT, UseDatepickerOptions } from "./useDatepicker";
export type RangeValidationT = {
from: DateValidationT;
to: DateValidationT & {
isBeforeFrom?: boolean;
};
};
export interface UseRangeDatepickerOptions extends Omit<UseDatepickerOptions, "defaultSelected" | "onDateChange" | "onValidate"> {
/**
* The initially selected DateRange
*/
defaultSelected?: DateRange;
/**
* Callback for changed state
*/
onRangeChange?: (val?: DateRange) => void;
/**
* validation-callback
*/
onValidate?: (val: RangeValidationT) => void;
}
interface UseRangeDatepickerValue {
/**
* Use: <DatePicker {...datepickerProps}/>
*/
datepickerProps: DatePickerProps;
/**
* Use: <DatePicker.Input label="from" {...fromInputProps}/>
*/
fromInputProps: Pick<DateInputProps, "onChange" | "onFocus" | "onBlur" | "value"> & {
/**
* @private
*/
setAnchorRef: React.Dispatch<React.SetStateAction<HTMLButtonElement | null>>;
};
/**
* Use: <DatePicker.Input label="to" {...toInputProps}/>
*/
toInputProps: Pick<DateInputProps, "onChange" | "onFocus" | "onBlur" | "value"> & {
/**
* @private
*/
setAnchorRef?: React.Dispatch<React.SetStateAction<HTMLButtonElement | null>>;
};
/**
* Resets all states (callback)
*/
reset: () => void;
/**
* Currently selected DateRange
* Up to user to validate values
*/
selectedRange?: DateRange;
/**
* Manually override currently selected day
*/
setSelected: (date?: DateRange) => void;
}
/**
*
* @see 🏷️ {@link UseRangeDatepickerOptions}
* @see 🏷️ {@link UseRangeDatepickerValue}
* @see 🏷️ {@link RangeValidationT}
* @example
* const { datepickerProps, fromInputProps, toInputProps } = useRangeDatepicker({
* fromDate: new Date("Aug 23 2019"),
* onRangeChange: console.log,
* onValidate: console.log,
* });
*/
export declare const useRangeDatepicker: (opt?: UseRangeDatepickerOptions) => UseRangeDatepickerValue;
export {};