{"version":3,"file":"defaults.mjs","sources":["../../../../../../src/components/ivue-table/table-column/defaults.ts"],"sourcesContent":["import type { VNode, ComponentInternalInstance, Ref, PropType } from 'vue';\r\nimport type { Table, TableRefs } from '../table/defaults';\r\n\r\nimport { oneOf } from '../../../utils/assist';\r\n\r\n// 插槽内容 slots\r\ntype SlotsContent = { column: TableColumnCtx; $index: number };\r\n\r\ntype FilterMethods = (value, row: any, column: TableColumnCtx) => void;\r\n\r\n// 数据过滤的选项\r\n// 数组格式，数组中的元素需要有 text 和 value 属性。 数组中的每个元素都需要有 text 和 value 属性。\r\n// array[{ text, value }]\r\ntype Filters = {\r\n  text: string;\r\n  value: string;\r\n}[];\r\n\r\n// 列参数\r\ninterface TableColumnCtx {\r\n  id: string;\r\n  prop: string;\r\n  label: string;\r\n  width: string | number;\r\n  minWidth: string | number;\r\n  children?: TableColumnCtx[];\r\n  isSubColumn: boolean;\r\n  type: string;\r\n  sortable: boolean | string;\r\n  property: string;\r\n  align: string;\r\n  headerAlign: string;\r\n  showOverflowTooltip: boolean;\r\n  filters: Filters;\r\n  filterMethod: FilterMethods;\r\n  filterPlacement: string;\r\n  filterOpened?: boolean;\r\n  index: number | ((index: number) => number);\r\n  rawColumnKey: string;\r\n  renderHeader: (data: SlotsContent) => VNode;\r\n  renderCell: (data: any) => void;\r\n  formatter: (\r\n    row: Record<string, any>,\r\n    column: TableColumnCtx,\r\n    cellValue,\r\n    index: number\r\n  ) => VNode | string;\r\n  columnWidth: number;\r\n  className: string;\r\n  fixed: boolean | string;\r\n  getColumnIndex: () => number;\r\n  currentIndex: number;\r\n  level: number;\r\n  rowSpan: number;\r\n  colSpan: number;\r\n  order: string | null;\r\n  labelClassName: string;\r\n  columns: TableColumnCtx[];\r\n  resizable: boolean;\r\n  selectable: (row: any, index: number | string) => boolean;\r\n  reserveSelection: boolean;\r\n  sortOrders: ('ascending' | 'descending' | null)[];\r\n  sortBy: string | ((row: any, index: number) => string) | string[];\r\n  sortMethod: (a: any, b: any) => number;\r\n  columnKey: string;\r\n  filterable: boolean | FilterMethods | Filters;\r\n  filterMultiple: boolean;\r\n  filteredValue: string[];\r\n}\r\n\r\n// 列节点内容\r\ninterface TableColumn extends ComponentInternalInstance {\r\n  vnode: {\r\n    vParent: TableColumn | Table;\r\n  } & VNode;\r\n  vParent: TableColumn | Table;\r\n  columnId: string;\r\n  columnConfig: Ref<Partial<TableColumnCtx>>;\r\n}\r\n\r\ninterface ColumnParent {\r\n  columnConfig?: Ref<Partial<TableColumnCtx>>;\r\n  tableId?: string;\r\n  vnode?: {\r\n    vParent?: TableColumn | Table;\r\n  } & VNode;\r\n  parent?: Table;\r\n  refs?: TableRefs;\r\n  columnId?: string;\r\n}\r\n\r\nexport type { TableColumnCtx, TableColumn, ColumnParent };\r\n\r\nexport default {\r\n  /**\r\n   * 对应列的类型\r\n   *\r\n   * selection / index / expand\r\n   *\r\n   * @type {String}\r\n   */\r\n  type: {\r\n    type: String,\r\n    validator(value: string | boolean) {\r\n      return oneOf(value, ['selection', 'index', 'expand', 'default']);\r\n    },\r\n    default: 'default',\r\n  },\r\n  /**\r\n   * 字段名称 对应列内容的字段名\r\n   *\r\n   * @type {String}\r\n   */\r\n  prop: {\r\n    type: String,\r\n  },\r\n  /**\r\n   * column 的 key\r\n   *\r\n   * @type {String}\r\n   */\r\n  label: {\r\n    type: String,\r\n  },\r\n  /**\r\n   * 对应列的宽度\r\n   *\r\n   * @type {String | Number}\r\n   */\r\n  width: {\r\n    type: [String, Number],\r\n    default: '',\r\n  },\r\n  /**\r\n   * 对应列的最小宽度\r\n   *\r\n   * @type {String | Number}\r\n   */\r\n  minWidth: {\r\n    type: [String, Number],\r\n    default: '',\r\n  },\r\n  /**\r\n   * 对应列是否可以排序\r\n   *\r\n   * @type {Boolean | String}\r\n   */\r\n  sortable: {\r\n    type: [Boolean, String],\r\n    validator(value: string | boolean) {\r\n      return oneOf(value, ['custom', false, true]);\r\n    },\r\n    default: false,\r\n  },\r\n  /**\r\n   * 字段名称 对应列内容的字段名\r\n   *\r\n   * @type {String}\r\n   */\r\n  property: {\r\n    type: String,\r\n  },\r\n  /**\r\n   * 对齐方式\r\n   *\r\n   * left / center / right\r\n   *\r\n   * @type {String}\r\n   */\r\n  align: {\r\n    type: String,\r\n    validator(value: string | boolean) {\r\n      return oneOf(value, ['left', 'center', 'right']);\r\n    },\r\n    default: 'left',\r\n  },\r\n  /**\r\n   * 表头对齐方式\r\n   *\r\n   * left / center / right\r\n   *\r\n   * @type {String}\r\n   */\r\n  headerAlign: {\r\n    type: String,\r\n    validator(value: string | boolean) {\r\n      return oneOf(value, ['left', 'center', 'right', '']);\r\n    },\r\n    default: '',\r\n  },\r\n  /**\r\n   * 当内容过长被隐藏时显示 tooltip\r\n   *\r\n   * @type {Boolean}\r\n   */\r\n  showOverflowTooltip: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  /**\r\n   * 数据过滤的选项\r\n   * 数组格式，数组中的元素需要有 text 和 value 属性\r\n   * 数组中的每个元素都需要有 text 和 value 属性。\r\n   *\r\n   * @type {Array}\r\n   */\r\n  filters: {\r\n    type: Array as PropType<TableColumnCtx['filters']>,\r\n  },\r\n  /**\r\n   * 数据过滤使用的方法\r\n   * 如果是多选的筛选项\r\n   * 对每一条数据会执行多次\r\n   * 任意一次返回 true 就会显示。\r\n   *\r\n   * @type {Function}\r\n   */\r\n  filterMethod: {\r\n    type: Function as PropType<TableColumnCtx['filterMethod']>,\r\n  },\r\n  /**\r\n   * 过滤弹出框的定位\r\n   *\r\n   * @type {String}\r\n   */\r\n  filterPlacement: {\r\n    type: String,\r\n    default: 'bottom-start',\r\n  },\r\n  /**\r\n   * 如果设置了 type=index，可以通过传递 index 属性来自定义索引\r\n   *\r\n   * @type {Number, Function}\r\n   */\r\n  index: {\r\n    type: [Number, Function] as PropType<TableColumnCtx['index']>,\r\n  },\r\n  /**\r\n   * 列标题 Label 区域渲染使用的 Function\r\n   *\r\n   * @type {Function}\r\n   */\r\n  renderHeader: {\r\n    type: Function as PropType<TableColumnCtx['renderHeader']>,\r\n  },\r\n  /**\r\n   * 用来格式化内容\r\n   *\r\n   * @type {Function}\r\n   */\r\n  formatter: {\r\n    type: Function as PropType<TableColumnCtx['formatter']>,\r\n  },\r\n  /**\r\n   * 列的 className\r\n   *\r\n   * @type {String}\r\n   */\r\n  className: {\r\n    type: String,\r\n  },\r\n  /**\r\n   * 列是否固定在左侧或者右侧。\r\n   *\r\n   * @type {Boolean | String}\r\n   */\r\n  fixed: {\r\n    type: [Boolean, String],\r\n    validator(value: string | boolean) {\r\n      return oneOf(value, ['left', 'right', true, false]);\r\n    },\r\n  },\r\n  /**\r\n   * 当前列标题的自定义类名\r\n   *\r\n   * @type {String}\r\n   */\r\n  labelClassName: {\r\n    type: String,\r\n  },\r\n  /**\r\n   * 对应列是否可以通过拖动改变宽度（需要在设置 border 属性为真）\r\n   *\r\n   * @type {Boolean}\r\n   */\r\n  resizable: {\r\n    type: Boolean,\r\n    default: true,\r\n  },\r\n  /**\r\n   * 仅对 type=selection 的列有效，\r\n   * 类型为 Function，\r\n   * Function 的返回值用来决定这一行的 CheckBox 是否可以勾选\r\n   *\r\n   * @type {Function}\r\n   */\r\n  selectable: {\r\n    type: Function as PropType<TableColumnCtx['selectable']>,\r\n  },\r\n  /**\r\n   * 保存数据更新前选中的值\r\n   *\r\n   * @type {Boolean}\r\n   */\r\n  reserveSelection: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  /**\r\n   * 数据在排序时所使用排序策略的轮转顺序\r\n   *\r\n   * @type {Array}\r\n   */\r\n  sortOrders: {\r\n    type: Array as PropType<TableColumnCtx['sortOrders']>,\r\n    default: () => {\r\n      return ['ascending', 'descending', null];\r\n    },\r\n  },\r\n  /**\r\n   * 没有指定数据按照哪个属性进行排序\r\n   *\r\n   * @type {String, Function, Array}\r\n   */\r\n  sortBy: {\r\n    type: [String, Function, Array] as PropType<TableColumnCtx['sortBy']>,\r\n  },\r\n  /**\r\n   * 自定义排序方法\r\n   *\r\n   * @type {Function}\r\n   */\r\n  sortMethod: {\r\n    type: Function as PropType<TableColumnCtx['sortMethod']>,\r\n  },\r\n  /**\r\n   * column 的 key， column 的 key\r\n   * 如果需要使用 filter-change 事件\r\n   * 则需要此属性标识是哪个 column 的筛选条件\r\n   *\r\n   * @type {String}\r\n   */\r\n  columnKey: {\r\n    type: String,\r\n  },\r\n  /**\r\n   * 数据过滤的选项是否多选\r\n   *\r\n   * @type {Boolean}\r\n   */\r\n  filterMultiple: {\r\n    type: Boolean,\r\n    default: true,\r\n  },\r\n  /**\r\n   * 选中的数据过滤项\r\n   * 如果需要自定义表头过滤的渲染方式\r\n   * 可能会需要此属性。\r\n   *\r\n   * @type {Array}\r\n   */\r\n  filteredValue: {\r\n    type: Array as PropType<TableColumnCtx['filteredValue']>,\r\n  },\r\n};\r\n"],"names":[],"mappings":"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"}