export interface TableColumnsOperate {
  /**
   * 排除不参与的头部列（一般为头部固定列，如：fixed: 'left'）
   */
  excludeHead?: Array<string | string[]>;

  /**
   * 排除不参与的尾部列（一般为操作列），exclude 别名
   */
  excludeTail?: Array<string | string[]>;

  /**
   * @deprecated 请使用 excludeTail
   *
   * 排除不参与的尾部列（一般为操作列）
   */
  exclude?: Array<string | string[]>;

  /**
   * 初始化时，表格不展示的列（对应操作列为未选中）
   */
  initHidden?: Array<string | string[]>;

  /**
   * popoverTitle
   */
  popoverTitle?: string;

  /**
   * 车场id，必填
   */
  lotId: string;

  /**
   * 表格名，必填，唯一
   */
  tableName: string;

  /**
   * 返回被改变之后的全新 columns，在初始化的时候就会触发返回
   *
   * ⚠️⚠️⚠️ 不要在拿这里返回的 columns 赋值给 tableOptions.columns，否则会导致死循环！！！
   *
   * 最佳实践：
   * 定义一个新的响应式变量来接收
   * @example
   * const newColumns = ref<any[]>([]);
   * {
   *   //...
   *   postColumns(columns: any[]) {
   *     newColumns.value = columns;
   *   }
   * };
   */
  postColumns(columns: any[]): void;

  /**
   * 预留字段，存储方式
   *
   * localStorage：本地，serve：服务器
   *
   * Default: localStorage
   */
  saveType?: 'localStorage' | 'server';

  /**
   * 文本最大宽度，用于文本过长时，换行导致不美观，默认 100px
   *
   * textMaxWidth
   */
  textMaxWidth?: string;
}
