import {
  DropDownTreeChangeEvent as KendoDropDownTreeChangeEvent,
  DropDownTreeBlurEvent as KendoDropDownTreeBlurEvent,
  ItemProps as KendoItemProps,
  DropDownTreeCloseEvent as KendoDropDownTreeCloseEvent,
  DropDownTreeFilterChangeEvent as KendoDropDownTreeFilterChangeEvent,
  DropDownTreeFocusEvent as KendoDropDownTreeFocusEvent,
  DropDownTreeOpenEvent as KendoDropDownTreeOpenEvent,
} from "@progress/kendo-react-dropdowns";
import { DropDownsPopupSettings } from "../ComboBox/ComboBoxProps";

export interface ListNoDataProps {
  children?: React.ReactNode;
}

export interface ValueHolderProps {
  children?: React.ReactNode;
  item?: any;
}

export interface DropDownTreeProps {
  dataTestId?: string;
  accessKey?: string;
  adaptive?: boolean;
  adaptiveTitle?: string;
  ariaDescribedBy?: string;
  ariaLabelledBy?: string;
  className?: string;
  data?: any[];
  dataItemKey: string;
  dir?: string;
  disabled?: boolean;
  expandField?: string;
  fillMode?: null | "flat" | "outline" | "solid";
  filter?: string;
  filterable?: boolean;
  id?: string;
  item?: React.ComponentType<KendoItemProps>;
  label?: string;
  listNoData?: React.ComponentType<ListNoDataProps>;
  loading?: boolean;
  name?: string;
  opened?: boolean;
  placeholder?: string;
  popupSettings?: DropDownsPopupSettings;
  required?: boolean;
  rounded?: null | "small" | "medium" | "full" | "large";
  selectField?: string;
  size?: null | "small" | "medium" | "large";
  style?: React.CSSProperties;
  subItemsField?: string;
  tabIndex?: number;
  textField: string;
  valid?: boolean;
  validationMessage?: string;
  validityStyles?: boolean;
  value?: any;
  valueHolder?: React.ComponentType<ValueHolderProps>;
  onBlur?: (event: KendoDropDownTreeBlurEvent) => void;
  onChange?: (event: KendoDropDownTreeChangeEvent) => void;
  onClose?: (event: KendoDropDownTreeCloseEvent) => void;
  onExpandChange?: (event: any) => void;
  onFilterChange?: (event: KendoDropDownTreeFilterChangeEvent) => void;
  onFocus?: (event: KendoDropDownTreeFocusEvent) => void;
  onOpen?: (event: KendoDropDownTreeOpenEvent) => void;
}
