import { SelectProps } from 'antd/lib/select';
import { YPopoverProps } from '../popover/popover.interface';

export interface YSelectProps<VT> {
  disabled?: boolean;
  value?: any;
  onChange?: (value: any, options: any) => void;
  valueType?: YSelectValueType;
  addBtnText?: string; // 新增项按钮文案
  shouldInitFetch?: boolean; // 是否需要默认走接口获取下拉项
  shouldFetchWhenEmpty?: boolean; // 空值时是否需要走接口获取
  requestTime?: number; // 搜索间隔时长，单位毫秒
  request?: (keyword?: string | undefined) => any; // 接口请求
  apiDataKey?: string; // 接口数据层级key，如data，或者data下的list
  apiLabelKey?: string; // label的字段名
  apiValueKey?: string; // value的字段名
  handleResponseData?: (resList: any[]) => YSelectCustomValue[]; // 接口
  showAddBtn?: boolean; // 是否展示新增按钮
  showDefaultOption?: boolean; // 是否展示【默认】项
  defaultOptionText?: string; // 【默认】文案
  defaultOptionValue?: string; // 【默认】项的值
  previewPlaceholder?: string; // 无值时占位符
  originalProps?: SelectProps<VT>;
  minWidth?: boolean | string | null | undefined;
  hoverText?: boolean | ((el: YSelectCustomValue) => React.ReactNode); // hover内容
  hoverTextConfig?: YPopoverProps; // hover配置
  shouldRequestOnFilter?: boolean; // 筛选时是否需要调接口
}

// 自定义值格式
export interface YSelectCustomValue {
  value: string | number;
  label: string | undefined;
  data?: object; // 原始数据
  disabled?: boolean;
}

type YSelectValueType = 'object' | 'string';
