import { useRef } from "react"; import { useDatePicker, AriaDatePickerProps, DateValue, } from "@react-aria/datepicker"; import { filterDOMProps } from "@react-aria/utils"; import { useDatePickerState } from "react-stately"; import { useRenderProps } from "@hooks"; import { fieldStatusSelectors } from "@hooks/useRenderProps"; import { AriaProps, FieldInputProps, Size } from "../../../../types"; import { IconButton } from "../../../Buttons/IconButton"; import { Popover } from "../../../Overlays/Popover"; import { Calendar } from "../Calendar"; import { DateField, ErrorMessage, Label, Message, ComboInput, } from "../../../Fields"; import { OverlayTriggerStateContext } from "@components/Overlays/OverlayTrigger/context"; import { Flex } from "@components/Layout/Flex"; export interface DatePickerProps extends AriaProps>, FieldInputProps { calendarSize?: Size; } /** DatePicker is a combination of a `` component and a dropdown `` component. */ export function DatePicker(props: DatePickerProps) { const state = useDatePickerState(props); const ref = useRef(null); const { labelProps, fieldProps, buttonProps, calendarProps, errorMessageProps, descriptionProps, } = useDatePicker(props, state, ref); const { size = "medium", calendarSize = "small", error, isInvalid, label, message, } = props; const renderProps = useRenderProps({ componentClassName: "aje-date-picker", ...props, selectors: fieldStatusSelectors(props), }); return ( <>
{message && {message}} {(_, index) => } {error}
{(date) => } ); }