import React, { ReactNode } from "react"
import {StandardProps, FormItemStandardProps} from '../@types/common'

export interface EditableAreaProps extends StandardProps, FormItemStandardProps<string> {

  /**
   * Whether to show the border
   *
   * 是否显示外边框
   *
   * default: false
   */
  bordered?: boolean;

  /**
   * Whether to show the clear button
   *
   * 是否展示清除按钮
   *
   * default: true
   */
  clearable?: boolean;

  /**
   * User input triggers the onChange and to check interval, unit: ms.
   *
   * 用户输入触发 onChange 和校验间隔时间，单位 毫秒
   *
   * default: 400
   */
  delay?: number;

  /**
   * Whether to disable
   *
   * 是否禁用
   *
   * default: false
   */
  disabled?: boolean;

  /**
   * Custom Popover container, override the default behavior which is rendering under the body, () => DOMElement
   *
   * 自定义Popover容器，覆盖默认渲染在body下的行为, () => DOMElement
   *
   *  default: none
   */
  getPopupContainer?: () => HTMLElement;

  /**
   * the maxHeight of the textarea, scroll bars appear after more than
   *
   * 输入框的最大高度, 超过之后会出现滚动条
   *
   * default: none
   */
  maxHeight?: number | string;

  /**
   * blur event
   *
   * 失去焦点事件
   *
   * default: none
   */
  onBlur?: (e: MouseEvent) => void;

  /**
   * focus event
   *
   * 聚焦事件
   *
   * default: none
   */
  onFocus?: (e: MouseEvent) => void;

  /**
   * When trim is true, blank characters are automatically deleted when lose focus
   *
   * trim 为 true 时，失去焦点时会自动删除空白字符
   *
   * default: false
   */
  trim?: boolean;

  /**
   * width of the editablearea
   *
   * 编辑域宽度
   *
   * default: none
   */
  width?: number | string;

  /**
   * inner title
   *
   * 内嵌标题
   *
   * default: -
   */
  // 定向功能，不对外开放
  // innerTitle?: ReactNode,

  /**
   * Placeholder title, which needs to be used together with innerTitle
   *
   * 占位标题，需要配合 innerTitle 一起使用
   *
   * default: -
   */
  // placeTitle?: ReactNode,

  /**
   * render textarea footer
   *
   * 渲染 textarea footer
   *
   * default: -
   */
  renderFooter?: (value: string)=> ReactNode,

  /**
   * Customize display results
   *
   * 自定义显示结果
   *
   * default: -
   */
  renderResult?: (value: string)=> ReactNode,

  // 暂时屏蔽该属性
  /**
   * Customize display results
   *
   * 输入状态改变后的回调，抛出改变后的状态。类似onBlur。
   *
   * default: -
   */
  //  onShowTextareaChange?: (value: boolean)=> void,


}

declare class EditableArea extends React.PureComponent<EditableAreaProps, any>{
  render(): JSX.Element
}

export default EditableArea
