import { StrAnyObj } from '@/typings'

export interface ColumnConfigType {
  // 绑定属性
  prop?: string
  // 访问权限列表
  permissions?: string | string[]
  // 字典
  dict?: string
  // 插槽
  slot?: string
  // 用来格式化内容
  formatter?: (row: any, column: any, cellValue: any, index: number) => VNode | string
  // 当内容过长被隐藏时显示 tooltip
  showOverflowTooltip?: boolean
  // 操作按钮配置
  handleConfig?: HandleConfigType[]
  // 是否存在
  if?: boolean | (() => boolean)
  // 标签文本
  label?: string
  // 宽度
  width?: number | string
  // 最小宽度
  minWidth?: number | string
  // 对齐方式
  align?: 'left' | 'center' | 'right'
  // 表头对齐方式， 若不设置该项，则使用表格的对齐方式
  headerAlign?: 'left' | 'center' | 'right'
  // 列是否固定在左侧或者右侧。 true 表示固定在左侧
  fixed?: boolean | 'left' | 'right'
  // 是否显示
  visible?: boolean
}

export interface HandleConfigType {
  if?: boolean | ((row: StrAnyObj, index: number) => boolean)
  disabled?: boolean | (() => boolean)
  common?: 'add' | 'detail' | 'update' | 'delete'
  icon?: string
  text?: string
  click: (row: StrAnyObj, index: number) => void
  permissions?: string | string[]
}
