export interface IAnyObject<T = any> {
  [key: string]: T;
}

/**
 * 组件属性
 */
export interface IVFormComponent {
  [key: string]: any;
  // 唯一标识
  key?: string;
  label: string; // 字段标签
  fieldName?: string; // 字段名
  component: string; // 组件类型
  icon: string; // 图标
  // 传给给组件的属性，默认会吧所有的props都传递给控件
  componentProps?: IAnyObject;
  hideLabel: boolean; // 隐藏label
  rules?: string; // 组件校验规则
}

/**
 * 设计配置
 */
export interface IFormConfig {
  schemas: IVFormComponent[];
  config: {
    commonConfig?: IAnyObject;
    showDefaultActions: boolean;
    wrapperClass: string;
  };
  currentItem?: IVFormComponent;
}

/**
 * 设计方法
 */
export interface IFormDesignMethods {
  // 添加控件属性
  handleAddAttrs(schemas: IVFormComponent[], index: number): void;
  // 设置当前选中的控件
  handleSetSelectItem(item: IVFormComponent): void;
}
