import React, { MutableRefObject, ReactElement } from "react"; import { IAccordionProps } from "@che-ins-ui/accordion"; import { IThemedProps } from "@che-ins-ui/theme"; import { IInputProps } from "@che-ins-ui/input"; import { SvgIcon } from "@che-ins-ui/icons/types"; import { CalendarComponent } from "./Calendar"; import { DatepickerDropdownPosition } from "./types"; export interface IExtraComponentProps { setIsOpen?: React.Dispatch>; isOpen?: boolean; } export interface IDatepickerProps extends IThemedProps, Omit { /** * Для управления Datepicker используется преднастроенный accordion, * но так же можно передать свои параметры */ accordionProps?: IAccordionProps; /** * Для отображения поля ввода используется инпут type="button", * но так же можно передать в него свои параметры. * label placeholder вынесены в параметры компонента */ inputProps?: Omit & { ref?: MutableRefObject; }; placeholder?: string; label?: string; /** * Закрыть ли календарь после выбора значения */ closeAfterSelect?: boolean; /** * При передаче открывает календарь и наводит фокус на инпут, дальше он опять становится uncontrolled */ isOpen?: boolean; /** * срабатывает при изменении isOpen */ onChangeIsOpen?: (newIsOpen: boolean) => void; /** * При наличии value меняет иконку календаря на CrossIcon(крестик) * Обработка очистки необходима из приложения. * При нажатии на кнопку очистки просто вызывается этот callback */ onClear?: React.DOMAttributes["onClick"]; /** * Props для иконки крестика при наличии onClear */ clearIconProps?: SvgIcon; /** * Делает width: 100% */ shouldFitContent?: boolean; /** * Кастомный компонент над Header * В props компонента добавляется setIsOpen, isOpen, * для управления состоянием открытия дейтпикера */ headerComponent?: ReactElement; /** * Кастомный компонент под Table * В props компонента добавляется setIsOpen, isOpen, * для управления состоянием открытия дейтпикера */ footerComponent?: ReactElement; /** * Выравнивание dropdown относительно инпута по левому или правому краю */ position?: DatepickerDropdownPosition; } export declare const Datepicker: ({ baseAppearance, appearance, accordionProps, inputProps, placeholder, label, disabled, closeAfterSelect, showCurrentMonthDaysOnly, isOpen: isOpenProps, shouldFitContent, maxDate, minDate, openedDate, value, onChange, onChangeIsOpen, onClear, clearIconProps, rangeSelector, startDate, endDate, locale, headerComponent, footerComponent, position, }: IDatepickerProps) => JSX.Element;