import { SVGIcon } from "@progress/kendo-react-common";
import { ButtonsPopupSettings } from "../DropDownButton/DropDownButtonProps";
import {
  ButtonItemProps,
  SplitButtonBlurEvent,
  SplitButtonClickEvent,
  SplitButtonCloseEvent,
  SplitButtonFocusEvent,
  SplitButtonItemClickEvent,
  SplitButtonOpenEvent,
} from "@progress/kendo-react-buttons";

export interface SplitButton {
  element?: null | HTMLButtonElement;
  props?: Readonly<SplitButtonProps>;
}

export interface SplitButtonProps {
  dataTestId?: string;
  accessKey?: string;
  ariaLabel?: string;
  buttonClass?: string;
  children?: React.ReactNode;
  className?: string;
  dir?: string;
  disabled?: boolean;
  fillMode?: null | "link" | "flat" | "outline" | "solid";
  icon?: string;
  iconClass?: string;
  id?: string;
  imageUrl?: string;
  item?: null | React.ComponentType<{ item: any; itemIndex: number }>;
  itemRender?:
    | React.ComponentType<{ item: any; itemIndex: number }>
    | ((
        li: React.ReactElement<HTMLLIElement>,
        props: ButtonItemProps
      ) => React.ReactNode);
  items?: any[];
  opened?: boolean;
  popupSettings?: ButtonsPopupSettings;
  rounded?: null | "small" | "medium" | "full" | "large";
  size?: null | "small" | "medium" | "large";
  style?: React.CSSProperties;
  svgIcon?: SVGIcon;
  tabIndex?: number;
  text?: string;
  textField?: string;
  themeColor?:
    | null
    | "inverse"
    | "base"
    | "success"
    | "dark"
    | "light"
    | "primary"
    | "secondary"
    | "tertiary"
    | "info"
    | "warning";
  title?: string;
  onBlur?: (event: SplitButtonBlurEvent) => void;
  onButtonClick?: (event: SplitButtonClickEvent) => void;
  onClose?: (event: SplitButtonCloseEvent) => void;
  onFocus?: (event: SplitButtonFocusEvent) => void;
  onItemClick?: (event: SplitButtonItemClickEvent) => void;
  onOpen?: (event: SplitButtonOpenEvent) => void;
}
