import {
  DateTimePickerCloseEvent as KendoDateTimePickerCloseEvent,
  DateTimePickerChangeEvent as KendoDateTimePickerChangeEvent,
  DateTimePickerOpenEvent as KendoDateTimePickerOpenEvent,
} from "@progress/kendo-react-dateinputs";
import {
  DateFormatOptions,
  DateInputFormatPlaceholder,
  DateInputIncrementalSteps,
} from "../DateInput/DateInputProps";

export interface DateTimePickerProps {
  dataTestId?: string;
  adaptive?: boolean;
  adaptiveTitle?: string;
  ariaDescribedBy?: string;
  ariaLabelledBy?: string;
  calendar?: React.ComponentType<any>;
  cancelButton?: boolean;
  className?: string;
  dateInput?: React.ComponentType<any>;
  defaultShow?: boolean;
  defaultValue?: null | Date;
  disabled?: boolean;
  fillMode?: null | "flat" | "outline" | "solid";
  focusedDate?: Date;
  format?: string | DateFormatOptions;
  formatPlaceholder?: DateInputFormatPlaceholder;
  id?: string;
  label?: string;
  max?: Date;
  maxTime?: Date;
  min?: Date;
  minTime?: Date;
  name?: string;
  placeholder?: null | string;
  popup?: React.ComponentType<any>;
  required?: boolean;
  rounded?: null | "small" | "medium" | "full" | "large";
  show?: boolean;
  size?: null | "small" | "medium" | "large";
  steps?: DateInputIncrementalSteps;
  tabIndex?: number;
  title?: string;
  valid?: boolean;
  validationMessage?: string;
  validityStyles?: boolean;
  value?: null | Date;
  weekNumber?: boolean;
  width?: string | number;
  onBlur?: (
    event: React.FocusEvent<HTMLSpanElement | HTMLDivElement | HTMLInputElement>
  ) => void;
  onChange?: (event: KendoDateTimePickerChangeEvent) => void;
  onClose?: (event: KendoDateTimePickerCloseEvent) => void;
  onFocus?: (
    event: React.FocusEvent<HTMLSpanElement | HTMLDivElement | HTMLInputElement>
  ) => void;
  onOpen?: (event: KendoDateTimePickerOpenEvent) => void;
}
