UNPKG

vxe-pc-ui

Version:
1,963 lines (1,896 loc) 226 kB
import { RenderFunction, SetupContext, Ref, ComputedRef, ComponentPublicInstance, VNode } from 'vue' import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentBaseOptions, VxeComponentEventParams, VxeComponentSizeType, ValueOf, VxeGlobalConfig, VxeComponentStyleType, VxeComponentSlotType, VxeComponentAlignType } from '@vxe-ui/core' import { VxeColumnPropTypes, VxeColumnProps, VxeColumnSlotTypes } from './column' import { VxeTableExtendCellAreaDefines, VxeTableExtendCellAreaEmits } from './table-plugins' import { VxeGridConstructor } from './grid' import { VxeTooltipInstance, VxeTooltipPropTypes } from './tooltip' import { VxeModalPropTypes } from './modal' import { VxeDrawerPropTypes } from './drawer' import { VxeToolbarConstructor, VxeToolbarInstance } from './toolbar' import { VxeTableCustomPanelConstructor } from './table-module/custom' import { VxeGanttConstructor, VxeGanttPrivateMethods } from './gantt' import { VxeGanttViewConstructor, VxeGanttViewInstance, VxeGanttViewPrivateMethods } from './gantt-module/gantt-view' /* eslint-disable no-use-before-define,@typescript-eslint/ban-types */ export declare const VxeTable: DefineVxeComponentApp<VxeTableProps, VxeTableEventProps, VxeTableSlots, VxeTableMethods> export type VxeTableComponent = DefineVxeComponentOptions<VxeTableProps, VxeTableEventProps> export type VxeTableInstance<D = any> = DefineVxeComponentInstance<VxeTableProps<D>, VxeTableConstructor> export interface VxeTableConstructor<D = any> extends VxeComponentBaseOptions, VxeTableMethods { props: VxeTableProps context: SetupContext<VxeTableEmits> /** * 组件内部属性 * @private */ reactData: TableReactData /** * 组件内部属性 * @private */ internalData: TableInternalData<D> getRefMaps(): TablePrivateRef getComputeMaps(): TablePrivateComputed renderVN: RenderFunction xeGrid: VxeGridConstructor<D> | null | undefined xeGantt: VxeTableDefines.InjectGanttType<D> | null | undefined /** * @deprecated */ xegrid: VxeGridConstructor<D> | null | undefined } export interface TablePrivateRef { refElem: Ref<HTMLDivElement> refTooltip: Ref<VxeTooltipInstance> refValidTooltip: Ref<VxeTooltipInstance> refTableFilter: Ref<any> refTableCustom: Ref<VxeTableCustomPanelConstructor> refTableMenu: Ref<any> refTableHeader: Ref<ComponentPublicInstance> refTableBody: Ref<ComponentPublicInstance> refTableFooter: Ref<ComponentPublicInstance> refTableLeftHeader: Ref<ComponentPublicInstance> refTableLeftBody: Ref<ComponentPublicInstance> refTableLeftFooter: Ref<ComponentPublicInstance> refTableRightHeader: Ref<ComponentPublicInstance> refTableRightBody: Ref<ComponentPublicInstance> refTableRightFooter: Ref<ComponentPublicInstance> refLeftContainer: Ref<HTMLDivElement> refRightContainer: Ref<HTMLDivElement> refColResizeBar: Ref<HTMLDivElement> refRowResizeBar: Ref<HTMLDivElement> refScrollXVirtualElem: Ref<HTMLDivElement | undefined> refScrollYVirtualElem: Ref<HTMLDivElement | undefined> refScrollXHandleElem: Ref<HTMLDivElement | undefined> refScrollYHandleElem: Ref<HTMLDivElement | undefined> refScrollXSpaceElem: Ref<HTMLDivElement | undefined> refScrollYSpaceElem: Ref<HTMLDivElement | undefined> } export interface VxeTablePrivateRef extends TablePrivateRef { } /** * 已废弃,被 VxeTablePropTypes.Row 替换 * @deprecated */ export type VxeTableDataRow = VxeTablePropTypes.Row export namespace VxeTablePropTypes { export type Size = VxeComponentSizeType export type ID<D = any> = string | ((params: { $table: VxeTableConstructor<D> $grid: VxeGridConstructor<D> | null | undefined $gantt: VxeGanttConstructor | null | undefined }) => string | number | null) export interface Row { [key: string]: any } export type Data<T = Row> = T[] export type Height = number | string export type MinHeight = number | string export type MaxHeight = number | string export type Resizable = boolean export type Stripe = boolean export type Round = boolean export type Padding = boolean export type Border = boolean | 'default' | 'full' | 'outer' | 'inner' | 'none' | '' export type Loading = boolean export type Align = VxeComponentAlignType export type HeaderAlign = Align export type FooterAlign = Align export type ShowHeader = boolean export type HighlightCurrentRow = boolean export type HighlightHoverRow = boolean export type HighlightCurrentColumn = boolean export type HighlightHoverColumn = boolean export type HighlightCell = boolean export type ShowFooter = boolean export type FooterData = Record<string, any>[] export type FooterMethod<D = any> = (params: { $table: VxeTableConstructor<D> $grid: VxeGridConstructor<D> | null | undefined $gantt: VxeGanttConstructor<D> | null | undefined columns: VxeTableDefines.ColumnInfo<D>[] data: D[] }) => Array<string | number | null>[] | any[] export type RowClassName<D = VxeTablePropTypes.Row> = string | ((params: { $table: VxeTableConstructor<D> row: D rowIndex: number $rowIndex: number _rowIndex: number }) => void | null | string | { [key: string]: boolean | null | undefined }) export type CellClassName<D = VxeTablePropTypes.Row> = string | ((params: { $table: VxeTableConstructor<D> row: D rowIndex: number $rowIndex: number _rowIndex: number column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number _columnIndex: number }) => void | null | string | { [key: string]: boolean | null | undefined }) export type HeaderRowClassName<D = VxeTablePropTypes.Row> = string | ((params: { $table: VxeTableConstructor<D> $rowIndex: number fixed: VxeColumnPropTypes.Fixed type: string }) => void | null | string | { [key: string]: boolean | null | undefined }) export type HeaderCellClassName<D = VxeTablePropTypes.Row> = string | ((params: { $table: VxeTableConstructor<D> $rowIndex: number column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number _columnIndex: number fixed: VxeColumnPropTypes.Fixed type: string }) => void | null | string | { [key: string]: boolean | null | undefined }) export type FooterRowClassName<D = VxeTablePropTypes.Row> = string | ((params: { $table: VxeTableConstructor<D> row: D $rowIndex: number _rowIndex: number fixed: VxeColumnPropTypes.Fixed type: string }) => void | null | string | { [key: string]: boolean | null | undefined }) export type FooterCellClassName<D = VxeTablePropTypes.Row> = string | ((params: { $table: VxeTableConstructor<D> row: D $rowIndex: number _rowIndex: number column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number _columnIndex: number }) => void | null | string | { [key: string]: boolean | null | undefined }) export type CellStyle<D = VxeTablePropTypes.Row> = Partial<CSSStyleDeclaration> | ((params: { row: D rowIndex: number $rowIndex: number _rowIndex: number column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number _columnIndex: number }) => void | null | Partial<CSSStyleDeclaration> |VxeComponentStyleType) export type HeaderCellStyle<D = VxeTablePropTypes.Row> = Partial<CSSStyleDeclaration> | ((params: { $table: VxeTableConstructor<D> $rowIndex: number column: VxeTableDefines.ColumnInfo<D> columnIndex: number _columnIndex: number }) => void | null | Partial<CSSStyleDeclaration> |VxeComponentStyleType) export type FooterCellStyle<D = any> = VxeComponentStyleType | ((params: { $table: VxeTableConstructor<D> row: D $rowIndex: number column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number _columnIndex: number }) => void | null | Partial<CSSStyleDeclaration> |VxeComponentStyleType) export type RowStyle<D = VxeTablePropTypes.Row> = Partial<CSSStyleDeclaration> | ((params: { $table: VxeTableConstructor<D> row: D rowIndex: number $rowIndex: number _rowIndex: number }) => void | null | Partial<CSSStyleDeclaration> |VxeComponentStyleType) export type HeaderRowStyle<D = VxeTablePropTypes.Row> = Partial<CSSStyleDeclaration> | ((params: { $table: VxeTableConstructor<D> $rowIndex: number fixed: VxeColumnPropTypes.Fixed type: string }) => void | null | Partial<CSSStyleDeclaration> |VxeComponentStyleType) export type FooterRowStyle<D = any> = Partial<CSSStyleDeclaration> | ((params: { $table: VxeTableConstructor<D> row: D $rowIndex: number _rowIndex: number fixed: VxeColumnPropTypes.Fixed type: string }) => void | null | Partial<CSSStyleDeclaration> | VxeComponentStyleType) export type ShowCustomHeader = boolean export type MergeHeaderCells = VxeTableDefines.MergeOptions[] export type MergeCells<D = VxeTablePropTypes.Row> = VxeTableDefines.MergeOptions<D>[] export type MergeFooterCells<D = any> = VxeTableDefines.MergeOptions<D>[] /** * @deprecated */ export type MergeCell<D = VxeTablePropTypes.Row> = VxeTableDefines.MergeOptions<D> /** * @deprecated */ export type MergeFooterItem<D = any> = VxeTableDefines.MergeOptions<D> /** * 已废弃,请使用 VxeTablePropTypes.MergeFooterCells * @deprecated */ export type MergeFooterItems<D = any> = VxeTableDefines.MergeOptions<D>[] export type SpanMethod<D = VxeTablePropTypes.Row> = (params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number row: D rowIndex: number $rowIndex: number _rowIndex: number isHidden: boolean fixed: VxeColumnPropTypes.Fixed type: string visibleData: D[] }) => void | { rowspan: number, colspan: number } export type FooterSpanMethod<D = any> = (params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> columnIndex: number _columnIndex: number $columnIndex: number row: D $rowIndex: number _rowIndex: number items: any[] data: D[][] }) => void | { rowspan: number, colspan: number } export type ShowOverflow = boolean | 'ellipsis' | 'title' | 'tooltip' | '' | null export type ShowHeaderOverflow = ShowOverflow export type ShowFooterOverflow = ShowOverflow export type ColumnKey = boolean export type RowKey = boolean export type RowId = string export type KeepSource = boolean export type AutoResize = boolean export type SyncResize = boolean | string | number /** * 响应式布局配置项 */ export interface ResizeConfig { refreshDelay?: number } export interface ResizeOpts extends ResizeConfig { } /** * 列配置信息 */ export interface ColumnConfig<D = any> { /** * 是否需要为每一列的 VNode 设置 key 属性 */ useKey?: boolean /** * 当鼠标点击列头时,是否要高亮当前列 */ isCurrent?: boolean /** * 当鼠标移到列头时,是否要高亮当前头 */ isHover?: boolean /** * 已废弃,请使用 current-column-config.beforeSelectMethod * @deprecated */ currentMethod?(params: { column: VxeTableDefines.ColumnInfo<D> }): boolean /** * 每一列是否启用列宽调整 */ resizable?: VxeColumnPropTypes.Resizable /** * 每一列的宽度 */ width?: VxeColumnPropTypes.Width /** * 每一列的最小宽度 */ minWidth?: VxeColumnPropTypes.MinWidth /** * 每一列的最大宽度 */ maxWidth?: VxeColumnPropTypes.MaxWidth /** * 用于 column.width=auto | column.min-width=auto 自适应单元格宽度参数 */ autoOptions?: { /** * 是否启用自适应表头单元格宽度 */ isCalcHeader?: boolean /** * 是否启用自适应表体单元格宽度 */ isCalcBody?: boolean /** * 是否启用自适应表尾单元格宽度 */ isCalcFooter?: boolean } /** * 固定列允许设置的最大数量(如果是分组,则一个分组算一个) */ maxFixedSize?: number /** * 是否启用列拖拽排序 */ drag?: boolean /** * 每一列的自定义表头单元格数据导出方法,返回自定义的标题 */ headerExportMethod?: VxeColumnPropTypes.HeaderExportMethod<any> /** * 每一列的自定义单元格数据导出方法,返回自定义的值 */ exportMethod?: VxeColumnPropTypes.ExportMethod<any> /** * 每一列的自定义表尾单元格数据导出方法,返回自定义的值 */ footerExportMethod?: VxeColumnPropTypes.FooterExportMethod<any> } export interface ColumnOpts<D = any> extends ColumnConfig<D> { } /** * 行配置信息 */ export interface RowConfig<D = any> { /** * 是否需要为每一行的 VNode 设置 key 属性 */ useKey?: boolean /** * 自定义行数据唯一主键的字段名(默认自动生成) */ keyField?: string /** * 自定义行主键生成的方法 */ createKeyMethod?(params: { row: D keyField: string }): string | number /** * 当鼠标点击行时,是否要高亮当前行 */ isCurrent?: boolean /** * 已废弃,请使用 current-row-config.beforeSelectMethod * @deprecated */ currentMethod?(params: { row: D }): boolean /** * 当鼠标移到行时,是否要高亮当前行 */ isHover?: boolean /** * 每一行开启调整行高度 */ resizable?: boolean /** * 已废弃,被 cell-config.height 替换 * @deprecated */ height?: number /** * 是否启用行拖拽排序 */ drag?: boolean } export interface RowOpts<D = any> extends RowConfig<D> { } /** * 数据聚合配置项 */ export interface AggregateConfig<D = any> { /** * 分组列展示方式 */ mode?: 'column' | 'default' | '' | null /** * 按指定字段对数据进行分组 */ groupFields?: string[] /** * 是否显示边距 */ padding?: boolean /** * 对于同一级的节点,每次只能展开一个 */ accordion?: boolean /** * 分组节点的字段名 */ rowField?: string /** * 分组父节点的字段名 */ parentField?: string /** * 分组子节点的字段名 */ childrenField?: string /** * 分组子节点映射的字段名 */ mapChildrenField?: string /** * 默认展开所有分组行(只会在初始化时被触发一次) */ expandAll?: boolean /** * 默认展开指定分组行的字段(只会在初始化时被触发一次) */ expandGroupFields?: string[] /** * 分组节点的缩进 */ indent?: number /** * 触发方式 */ trigger?: 'default' | 'row' | 'cell' | 'manual' | '' | null /** * 是否显示图标按钮 */ showIcon?: boolean /** * 自定义展开后显示的图标 */ iconOpen?: string /** * 自定义收起后显示的图标 */ iconClose?: string /** * 是否显示分组的统计 */ showTotal?: boolean /** * 是否显示聚合函数的列标题 */ showAggFuncTitle?: boolean /** * 聚合函数默认值初始化的方法,当聚合列被创建时会执行一次 */ initialAggFuncMethod?:(params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> }) => VxeTableDefines.AggFuncType /** * 数据分组允许设置的最大数量 */ maxGroupSize?: number /** * 指定哪些列允许拖拽到分组 */ includeGroupFields?: string[] /** * 排除哪些列允许拖拽到分组 */ excludeGroupFields?: string[] /** * 指定哪些列允许拖拽到值 */ includeValuesFields?: string[] /** * 排除哪些列允许拖拽到值 */ excludeValuesFields?: string[] /** * 自定义列聚合数据的计算方法 */ calcValuesMethod?:(params: { $table: VxeTableConstructor<D> groupField: VxeColumnPropTypes.Field groupColumn: VxeTableDefines.ColumnInfo<D> column: VxeTableDefines.ColumnInfo<D> groupValue: any childCount: number children: D[] aggValue: number }) => number /** * 自定义列聚合数据的显示值 */ formatValuesMethod?:(params: { $table: VxeTableConstructor<D> groupField: VxeColumnPropTypes.Field groupColumn: VxeTableDefines.ColumnInfo<D> column: VxeTableDefines.ColumnInfo<D> groupValue: any childCount: number children: D[] aggValue: number }) => number | string /** * 自定义分组统计的方法 */ totalMethod?:(params: { $table: VxeTableConstructor<D> groupField: VxeColumnPropTypes.Field groupColumn: VxeTableDefines.ColumnInfo<D> column: VxeTableDefines.ColumnInfo<D> groupValue: any childCount: number children: D[] }) => number | string /** * 自定义分组单元格展示内容 */ contentMethod?:(params: { $table: VxeTableConstructor<D> groupField: VxeColumnPropTypes.Field groupColumn: VxeTableDefines.ColumnInfo<D> column: VxeTableDefines.ColumnInfo<D> groupValue: any }) => number | string /** * 已废弃,请使用 column.aggFunc * @deprecated */ countFields?: string[] /** * 请使用 calcValuesMethod * @deprecated */ aggregateMethod?:(params: { $table: VxeTableConstructor<D> groupField: VxeColumnPropTypes.Field groupColumn: VxeTableDefines.ColumnInfo<D> column: VxeTableDefines.ColumnInfo<D> groupValue: any childCount: number aggValue: any children: D[] }) => number /** * 已废弃,请使用 calcValuesMethod * @deprecated */ countMethod?:(params: { $table: VxeTableConstructor<D> groupField: VxeColumnPropTypes.Field groupColumn: VxeTableDefines.ColumnInfo<D> column: VxeTableDefines.ColumnInfo<D> groupValue: any childCount: number children: D[] }) => number } /** * 聚合函数计算精度配置项 */ export interface AggregateAccuracyConfig<D = any> { [key: string]: VxeTableDefines.AggregateAccuracyObj<D> } /** * 已废弃,请使用 AggregateConfig * @deprecated */ export interface RowGroupConfig<D = any> extends AggregateConfig<D> {} /** * 当前行配置项 */ export interface CurrentRowConfig<D = any> { /** * 触发方式 */ trigger?: 'default' | 'row' | 'manual' | '' | null /** * 严格模式,选中后不能取消 */ strict?: boolean /** * 只对 mouse-config.selected 启用有效,是否跟随单元格选中而移动高亮行 */ isFollowSelected?: boolean /** * 用于选中当前行执行之前的方法,返回 false 可以阻止默认行为 */ beforeSelectMethod?(params: { $table: VxeTableConstructor<D> row: D selected: boolean }): boolean } /** * 当前列配置项 */ export interface CurrentColumnConfig<D = any> { /** * 触发方式 */ trigger?: 'default' | 'header' | 'cell' | 'manual' | '' | null /** * 严格模式,选中后不能取消 */ strict?: boolean /** * 只对 mouse-config.selected 启用有效,是否跟随单元格选中而移动高亮列 */ isFollowSelected?: boolean /** * 用于选中当前列执行之前的方法,返回 false 可以阻止默认行为 */ beforeSelectMethod?(params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> selected: boolean }): boolean } /** * 单元格配置项 */ export interface CellConfig<D = any>{ /** * 单元格默认高度 */ height?: number /** * 是否显示间距 */ padding?: VxeColumnPropTypes.Padding /** * 垂直对齐方式 */ verticalAlign?: VxeColumnPropTypes.VerticalAlign } /** * 表头单元格配置项 */ export interface HeaderCellConfig<D = any>{ /** * 单元格默认高度 */ height?: number | 'unset' /** * 是否显示间距 */ padding?: boolean } /** * 表尾单元格配置项 */ export interface FooterCellConfig<D = any>{ /** * 单元格默认高度 */ height?: number | 'unset' /** * 是否显示间距 */ padding?: boolean } /** * 已废弃,被 RowDragConfig 替换 * @deprecated */ export interface DragConfig<D = any>{ /** * 自定义图标 * @deprecated */ rowIcon?: string /** * 是否显示拖拽按钮图标 * @deprecated */ showRowIcon?: boolean /** * 是否禁用拖拽按钮 * @deprecated */ rowDisabledMethod?(params: { row: D column: VxeTableDefines.ColumnInfo<D> }): boolean /** * 是否显示拖拽按钮 * @deprecated */ rowVisibleMethod?(params: { row: D column: VxeTableDefines.ColumnInfo<D> }): boolean /** * 自定义提示内容 * @deprecated */ rowTooltipMethod?(params: { row: D }): string | number | null /** * 拖拽开始时是否允许行拖拽调整顺序的方法,该方法的返回值用来决定是否允许被拖拽 * @deprecated */ dragStartMethod?(params: VxeTableDefines.RowDragstartEventParams<D>): boolean /** * 拖拽结束时是否允许行拖拽调整顺序的方法,该方法的返回值用来决定是否允许被拖拽调整顺序 * @deprecated */ dragEndMethod?(params: Omit<VxeTableDefines.RowDragendEventParams<D>, '_index'>): Promise<boolean> | boolean /** * 自定义插槽模板 * @deprecated */ slots?: { rowTip?: string | ((params: VxeTableDefines.RowDragSlotParams) => VxeComponentSlotType | VxeComponentSlotType[]) } } /** * 行拖拽排序配置项 */ export interface RowDragConfig<D = any>{ /** * 自定义图标 */ icon?: string /** * 是否显示拖拽按钮图标 */ showIcon?: boolean /** * 显示拖拽提示,拖拽过程中显示信息 */ showDragTip?: boolean /** * 触发拖拽方式 */ trigger?: 'default' | 'cell' | 'row' | '' | null /** * 只对 tree-config 启用有效,是否允许同级行拖拽,用于树结构,启用后允许同层级之间进行拖拽 */ isPeerDrag?: boolean /** * 只对 tree-config 启用有效,是否允许同级/跨层行拖拽,用于树结构,启用后允许跨层级拖拽(除了上级拖到子级) */ isCrossDrag?: boolean /** * 需要 isCrossDrag,只对 tree-config 启用有效,是否允许拖拽成目标行的子级 */ isToChildDrag?: boolean /** * 需要 isCrossDrag,只对 tree-config 启用有效,是否允许将自己拖拽到子级行中 */ isSelfToChildDrag?: boolean /** * 是否允许在不同表格之间进行拖拽 */ isCrossTableDrag?: boolean /** * 是否显示拖拽辅助状态显示 */ showGuidesStatus?: boolean /** * 是否显示拖拽动画,启用后由数据量的大小来影响渲染性能 */ animation?: boolean /** * 是否禁用拖拽按钮 */ disabledMethod?(params: { $table: VxeTableConstructor<D> row: D column: VxeTableDefines.ColumnInfo<D> }): boolean /** * 是否显示拖拽按钮 */ visibleMethod?(params: { $table: VxeTableConstructor<D> row: D column: VxeTableDefines.ColumnInfo<D> }): boolean /** * 自定义提示内容 */ tooltipMethod?(params: { $table: VxeTableConstructor<D> row: D }): string | number | null /** * 拖拽开始时是否允许行拖拽调整顺序的方法,该方法的返回值用来决定是否允许被拖拽 */ dragStartMethod?(params: VxeTableDefines.RowDragstartEventParams<D>): boolean /** * 拖拽结束时是否允许行拖拽调整顺序的方法,该方法的返回值用来决定是否允许被拖拽调整顺序 */ dragEndMethod?(params: Omit<VxeTableDefines.RowDragendEventParams<D>, '_index'>): Promise<boolean> | boolean /** * 用于 isToChildDrag,在拖拽完成后,该方法的返回值用于决定是否拖拽成子级 */ dragToChildMethod?(params: Omit<VxeTableDefines.RowDragToChildMethod<D>, '_index'>): boolean /** * 自定义插槽模板 */ slots?: { tip?: string | ((params: VxeTableDefines.RowDragSlotParams) => VxeComponentSlotType | VxeComponentSlotType[]) } } /** * 列拖拽排序配置项 */ export interface ColumnDragConfig<D = any>{ /** * 自定义图标 */ icon?: string /** * 是否显示拖拽按钮图标 */ showIcon?: boolean /** * 显示拖拽提示,拖拽过程中显示信息 */ showDragTip?: boolean /** * 触发拖拽方式 */ trigger?: 'default' | 'cell' | '' | null /** * 用于分组表头,是否允许同级列拖拽,启用后允许同层级列之间进行拖拽 */ isPeerDrag?: boolean /** * 需要 isCrossDrag,用于分组表头,是否同级/跨层列拖拽,启用后允许跨拖拽列拖拽(除了上级拖到子级) */ isCrossDrag?: boolean /** * 需要 isCrossDrag,是否允许拖拽成目标列的子级 */ isToChildDrag?: boolean /** * 用于分组表头,是否允许将自己拖拽到子孙列中 */ isSelfToChildDrag?: boolean /** * 是否显示拖拽辅助状态显示 */ showGuidesStatus?: boolean /** * 是否显示拖拽动画,启用后由数据量的大小来影响渲染性能 */ animation?: boolean /** * 是否禁用拖拽按钮 */ disabledMethod?(params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> }): boolean /** * 是否显示拖拽按钮 */ visibleMethod?(params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> }): boolean /** * 自定义提示内容 */ tooltipMethod?(params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> }): string | number | null /** * 拖拽开始时是否允许行拖拽调整顺序的方法,该方法的返回值用来决定是否允许被拖拽 */ dragStartMethod?(params: VxeTableDefines.ColumnDragstartEventParams<D>): boolean /** * 拖拽结束时是否允许行拖拽调整顺序的方法,该方法的返回值用来决定是否允许被拖拽调整顺序 */ dragEndMethod?(params: Omit<VxeTableDefines.ColumnDragendEventParams<D>, '_index'>): Promise<boolean> | boolean /** * 用于 isToChildDrag,在拖拽完成后,该方法的返回值用于决定是否拖拽成子级 */ dragToChildMethod?(params: Omit<VxeTableDefines.ColumnDragToChildMethod<D>, '_index'>): boolean /** * 自定义插槽模板 */ slots?: { tip?: string | ((params: VxeTableDefines.ColumnDragSlotParams) => VxeComponentSlotType | VxeComponentSlotType[]) } } /** * 自定义列配置项 */ export interface CustomConfig<D = VxeTablePropTypes.Row> { /** * 是否启用,支持局部/全局启用 */ enabled?: boolean /** * 是否启用 localStorage 本地保存,会将列操作状态保留在本地(需要有 id) */ storage?: boolean | VxeTableDefines.VxeTableCustomStorageObj /** * 只对 storage 有效,缓存项的配置 */ storeOptions?: VxeTableDefines.VxeTableCustomStorageObj /** * 只对 storage 有效,用于重写默认的恢复自定义配置逻辑,用于实现服务端保存 */ restoreStore?(params: { $table: VxeTableConstructor<D> id: string type: 'restore' storeData: VxeTableDefines.CustomStoreData }): VxeTableDefines.CustomStoreData | Promise<VxeTableDefines.CustomStoreData> /** * 只对 storage 有效,重写默认的保存方法,用于实现服务端保存 */ updateStore?(params: { $table: VxeTableConstructor<D> id: string type: VxeTableDefines.CustomEventType storeData: VxeTableDefines.CustomStoreData }): Promise<any> mode?: 'default' | 'modal' | 'drawer' | 'simple' | 'popup' | '' | null /** * 窗口模式配置项,用于 mode='modal' */ modalOptions?: { title?: VxeModalPropTypes.Title width?: VxeModalPropTypes.Width minWidth?: VxeModalPropTypes.MinWidth height?: VxeModalPropTypes.Height minHeight?: VxeModalPropTypes.MinHeight className?: VxeModalPropTypes.ClassName showZoom?: VxeModalPropTypes.ShowZoom showMaximize?: VxeModalPropTypes.ShowMaximize showMinimize?: VxeModalPropTypes.ShowMinimize mask?: VxeModalPropTypes.Mask lockView?: VxeModalPropTypes.LockView resize?: VxeModalPropTypes.Resize escClosable?: VxeModalPropTypes.EscClosable maskClosable?: VxeModalPropTypes.MaskClosable } /** * 抽屉模式配置项,用于 mode='drawer' */ drawerOptions?: { title?: VxeDrawerPropTypes.Title width?: VxeDrawerPropTypes.Width className?: VxeDrawerPropTypes.ClassName position?: VxeDrawerPropTypes.Position mask?: VxeDrawerPropTypes.Mask lockView?: VxeDrawerPropTypes.LockView resize?: VxeDrawerPropTypes.Resize escClosable?: VxeDrawerPropTypes.EscClosable maskClosable?: VxeDrawerPropTypes.MaskClosable } /** * 默认模式配置项 */ popupOptions?: { mode?: 'inside' | 'outside' | 'auto' | '' | null width?: number | string maxHeight?: number | string } trigger?: 'manual' | 'hover' | 'click' | '' | null /** * 是否实时同步操作 */ immediate?: boolean placement?: 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' /** * 自定义列是否允许列选中的方法,该方法的返回值用来决定这一列的 checkbox 是否可以选中 */ checkMethod?(params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> }): boolean /** * 自定义列是否的方法,该方法的返回值用来决定这一列是否显示 */ visibleMethod?(params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> }): boolean /** * 是否允许个性化列显示与隐藏 */ allowVisible?: boolean /** * 是否允许自定义冻结列 */ allowFixed?: boolean /** * 是否允许自定义排序 */ allowSort?: boolean /** * 是否允许自定义调整列宽 */ allowResizable?: boolean /** * 允许自定义聚合分组配置 */ allowGroup?: boolean /** * 允许自定义聚合函数配置 */ allowValues?: boolean /** * 允许自定义聚合函数小数精度配置 */ allowValueDigits?: boolean /** * 允许自定义聚合函数格式化配置 */ allowValueFormat?: boolean /** * 当拖拽数据分组或聚合列时,自动更新列可视状态 */ autoAggGroupValues?: boolean showFooter?: boolean icon?: string resetButtonText?: string closeButtonText?: string cancelButtonText?: string confirmButtonText?: string /** * 自定义列的插槽模板 */ slots?: { header?: string | ((params: VxeTableDefines.CustomSlotParams) => VxeComponentSlotType | VxeComponentSlotType[]) top?: string | ((params: VxeTableDefines.CustomSlotParams) => VxeComponentSlotType | VxeComponentSlotType[]) bottom?: string | ((params: VxeTableDefines.CustomSlotParams) => VxeComponentSlotType | VxeComponentSlotType[]) default?: string | ((params: VxeTableDefines.CustomSlotParams) => VxeComponentSlotType | VxeComponentSlotType[]) footer?: string | ((params: VxeTableDefines.CustomSlotParams) => VxeComponentSlotType | VxeComponentSlotType[]) } } export interface CustomOpts<D = VxeTablePropTypes.Row> extends CustomConfig<D> { } /** * 调整列宽和行高整配置项 */ export interface ResizableConfig<D = VxeTablePropTypes.Row> { /** * 拖拽模式,如果是列拖拽,则支持自适应和固定模式 */ dragMode?: 'auto' | 'fixed' | '' /** * 所有单元格默认允许拖拽调整行高 */ isAllRowDrag?: boolean /** * 所有单元格默认允许拖拽调整列宽 */ isAllColumnDrag?: boolean /** * 显示列宽拖拽提示,拖拽过程中实时显示列宽 */ showDragTip?: boolean /** * 双击自适应列宽,启用后双击拖拽线,自动根据整列的内容自适应调整列宽 */ isDblclickAutoWidth?: boolean /** * 双击自适应行高,启用后双击拖拽线,自动根据整列的内容自适应调整行高 */ isDblclickAutoHeight?: boolean /** * 当拖拽调整列宽时,是否自动同步更新所选区域的所有列宽 */ isSyncAutoWidth?: boolean /** * 当拖拽调整行高时,是否自动同步更新所选区域的所有行高 */ isSyncAutoHeight?: boolean /** * 行高拖动的最小高度 */ minHeight?: number | string | ((params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number $rowIndex: number rowIndex: number row: any }) => number | string) /** * 行高拖动的最大高度 */ maxHeight?: number | string | ((params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number $rowIndex: number rowIndex: number row: any }) => number | string) /** * 列宽拖动的最小宽度 */ minWidth?: number | string | ((params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number $rowIndex: number cell?: HTMLElement }) => number | string) /** * 列宽拖动的最大宽度 */ maxWidth?: number | string | ((params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number $rowIndex: number cell?: HTMLElement }) => number | string) } export interface ResizableOpts<D = VxeTablePropTypes.Row> extends ResizableConfig<D> { } /** * 序号配置项 */ export interface SeqConfig<D = VxeTablePropTypes.Row> { startIndex?: number seqMethod?(params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number row: D rowIndex: number $rowIndex: number }): number | string } export interface SeqOpts<D = VxeTablePropTypes.Row> extends SeqConfig<D> { } interface SortConfigDefaultSort { field: string order: SortOrder } /** * 排序配置项 */ export interface SortConfig<D = VxeTablePropTypes.Row> { defaultSort?: SortConfigDefaultSort | SortConfigDefaultSort[] orders?: SortOrder[] sortMethod?(params: { $table: VxeTableConstructor<D> data: D[] sortList: VxeTableDefines.SortCheckedParams[] }): any[] /** * 是否使用服务端排序,如果设置为 true 则不会对数据进行处理 */ remote?: boolean /** * 是否允许多列排序 */ multiple?: boolean /** * 只对 multiple 有效,是否按照先后触发顺序进行排序 */ chronological?: boolean /** * 只对 allowBtn 有效,是否启用当点击排序图标时,如果与当前一致,则取消排序 */ allowClear?: boolean /** * 是否允许点击排序图标进行操作 */ allowBtn?: boolean trigger?: 'default' | 'cell' /** * 只对 tree-config.transform 有效,是否允许同时排序子孙层级 */ isDeep?: boolean /** * 是否显示排序按钮图标 */ showIcon?: boolean /** * 排序按钮图标的显示方法,该方法的返回值用于决定该列是否显示排序按钮图标 * @param params */ iconVisibleMethod?(params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> }): boolean /** * 自定义列头升级按钮的 title 提示语 */ ascTitle?: string | number /** * 自定义列头倒序按钮的 title 提示语 */ descTitle?: string | number iconLayout?: 'horizontal' | 'vertical' iconAsc?: string iconDesc?: string } export type SortOrder = 'asc' | 'desc' | '' | null export interface SortOpts<D = VxeTablePropTypes.Row> extends SortConfig<D> { orders: SortOrder[] } /** * 筛选配置项 */ export interface FilterConfig<D = VxeTablePropTypes.Row> { filterMethod?:(params: { $table: VxeTableConstructor<D> options: VxeTableDefines.FilterOption[] values: any[] cellValue: any row: D column: VxeTableDefines.ColumnInfo<D> }) => any /** * 是否精确筛选到每一行,默认情况下是父级被匹配到则所有子级也被匹配;如果传 true 则会对每一行进行筛选 */ isEvery?: boolean /** * 是否使用服务端筛选,如果设置为 true 则不会对数据进行处理 */ remote?: boolean /** * 是否允许多列筛选 */ multiple?: boolean /** * 是否显示筛选按钮图标 */ showIcon?: boolean /** * 只对 tree-config.transform 有效,是否允许同时筛选子孙层级 */ isDeep?: boolean /** * 筛选按钮图标的显示方法,该方法的返回值用于决定该列是否显示筛选按钮图标 * @param params */ iconVisibleMethod?(params: { $table: VxeTableConstructor<D> column: VxeTableDefines.ColumnInfo<D> }): boolean className?: string zIndex?: number transfer?: boolean iconNone?: string iconMatch?: string /** * 筛选面板最大高度 */ maxHeight?: number /** * 弹出层在关闭时是否销毁 */ destroyOnClose?: boolean /** * 自定义确认按钮内容 */ confirmButtonText?: string /** * 自定义重置按钮内容 */ resetButtonText?: string /** * 是否显示底部按钮 */ showFooter?: boolean } export interface FilterOpts<D = VxeTablePropTypes.Row> extends FilterConfig<D> { } export interface FloatingFilterConfig<D = VxeTablePropTypes.Row> { /** * 是否启用 */ enabled?: boolean /** * 是否启用浮动筛选 */ floatingFilters?: VxeColumnPropTypes.FloatingFilters } /** * 单选框配置 */ export interface RadioConfig<D = VxeTablePropTypes.Row> { reserve?: boolean labelField?: string checkRowKey?: string | number checkMethod?(params: { $table: VxeTableConstructor<D> row: D }): boolean visibleMethod?(params: { $table: VxeTableConstructor<D> row: D }): boolean trigger?: 'default' | 'cell' | 'row' | 'manual' | '' | null highlight?: boolean /** * 严格模式,选中后不能取消 */ strict?: boolean } export interface RadioOpts<D = VxeTablePropTypes.Row> extends RadioConfig<D> { } /** * 复选框配置项 */ export interface CheckboxConfig<D = VxeTablePropTypes.Row> { /** * 自定义列头复选框的 title 提示语 */ headerTitle?: string | number /** * 是否保留勾选状态,对于某些场景可能会用到,比如数据被刷新之后还保留之前选中的状态 */ reserve?: boolean /** * 是否显示保留勾选状态,启用后如果存在保留记录,则未勾选当前页数据也会显示未半选状态 */ showReserveStatus?: boolean /** * 复选框显示的字段名,可以直接显示在复选框中 */ labelField?: string /** * 绑定选中属性,支持读写,行数据中必须存在该字段,否则无效 */ checkField?: string /** * 绑定半选只读属性,仅有只读权限,不支持修改,行数据中必须存在该字段,否则无效 */ indeterminateField?: string /** * 是否显示全选按钮,如果 checkStrictly=true 则默认为 false */ showHeader?: boolean /** * 默认勾选所有,只会在初始化时被触发一次 */ checkAll?: boolean /** * 默认勾选指定行,只会在初始化时被触发一次,需要有 row-config.keyField */ checkRowKeys?: string[] | number[] /** * 是否严格的遵循父子不互相关联的做法 */ checkStrictly?: boolean /** * 严格模式,当数据为空或全部禁用时,列头的复选框为禁用状态 */ strict?: boolean /** * 开启复选框指定行选择功能,启用后通过鼠标点击和 shift 键选取指定范围的行 */ isShiftKey?: boolean /** * 是否允许勾选的方法,该方法,的返回值用来决定这一行的 checkbox 是否可以勾选 */ checkMethod?(params: { $table: VxeTableConstructor<D> row: D }): boolean /** * 是否允许勾选的方法,该方法,的返回值用来决定这一行的 checkbox 是否显示 */ visibleMethod?(params: { $table: VxeTableConstructor<D> row: D }): boolean /** * 触发方式 */ trigger?: 'default' | 'cell' | 'row' | 'manual' | '' | null /** * 是否高亮勾选行 */ highlight?: boolean /** * 开启复选框范围选择功能,启用后通过鼠标在复选框的列内滑动选中或取消指定行 */ range?: boolean /** * 请使用 indeterminateField * @deprecated */ halfField?: string } export interface CheckboxOpts<D = VxeTablePropTypes.Row> extends CheckboxConfig<D> { } /** * 透视表配置项 */ // export interface PivotConfig<D = any> { // } /** * 提示信息配置项 */ export interface TooltipConfig<D = VxeTablePropTypes.Row> { showAll?: boolean theme?: VxeTooltipPropTypes.Theme enterable?: VxeTooltipPropTypes.Enterable enterDelay?: VxeTooltipPropTypes.EnterDelay leaveDelay?: VxeTooltipPropTypes.LeaveDelay width?: VxeTooltipPropTypes.Width height?: VxeTooltipPropTypes.Height minWidth?: VxeTooltipPropTypes.MinWidth minHeight?: VxeTooltipPropTypes.MinHeight maxWidth?: VxeTooltipPropTypes.MaxWidth maxHeight?: VxeTooltipPropTypes.MaxHeight useHTML?: VxeTooltipPropTypes.UseHTML placement?: VxeTooltipPropTypes.Placement defaultPlacement?: VxeTooltipPropTypes.DefaultPlacement popupClassName?: VxeTooltipPropTypes.PopupClassName contentMethod?(params: { $table: VxeTableConstructor<D> items: any[] row: D rowIndex: number $rowIndex: number _rowIndex: number column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number _columnIndex: number type: 'body' cell: HTMLElement $event: any }): string | null | void } export interface HeaderTooltipConfig<D = VxeTablePropTypes.Row> extends Omit<TooltipConfig<D>, 'contentMethod'> { contentMethod?(params: { $table: VxeTableConstructor<D> $rowIndex: number column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number _columnIndex: number type: 'header' cell: HTMLElement $event: any }): string | null | void } export interface FooterTooltipConfig<D = VxeTablePropTypes.Row> extends Omit<TooltipConfig<D>, 'contentMethod'> { contentMethod?(params: { $table: VxeTableConstructor<D> items: any[] row: D rowIndex: number $rowIndex: number column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number _columnIndex: number type: 'footer' cell: HTMLElement $event: any }): string | null | void } /** * 展开行配置项 */ export interface ExpandConfig<D = any> { labelField?: string /** * 默认展开所有行(只会在初始化时被触发一次) */ expandAll?: boolean /** * 默认展开指定行(只会在初始化时被触发一次,需要有 row-config.keyField) */ expandRowKeys?: string[] | number[] accordion?: boolean trigger?: 'default' | 'cell' | 'row' | 'manual' |'' | null lazy?: boolean reserve?: boolean height?: number padding?: boolean /** * 展开内容的显示模式 */ mode?: 'inside' | 'fixed' | '' | null /** * 当存在树结构时,展开内容的缩进,默认继承树配置 */ indent?: number loadMethod?(params: { $table: VxeTableConstructor<D> row: D rowIndex: number $rowIndex: number }): Promise<void> toggleMethod?(params: { $table: VxeTableConstructor<D> expanded: boolean row: D rowIndex: number $rowIndex: number column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number }): boolean visibleMethod?(params: VxeTableDefines.CellRenderBodyParams<D>): boolean showIcon?: boolean iconOpen?: string iconClose?: string iconLoaded?: string } export interface ExpandOpts<D = any> extends ExpandConfig<D> { } /** * 树形结构配置项 */ export interface TreeConfig<D = any> { /** * 自动将列表转为树结构 */ transform?: boolean /** * 用于 tree-config.transform,树节点的字段名 */ rowField?: string /** * 用于 tree-config.transform,树父节点的字段名 */ parentField?: string /** * 树子节点的字段名 */ childrenField?: string /** * 用于 tree-config.transform,树子节点映射的字段名 */ mapChildrenField?: string /** * 是否显示边距 */ padding?: boolean /** * 树节点的缩进 */ indent?: number /** * 树节点的连接线(启用连接线会降低渲染性能) */ showLine?: boolean /** * 只对 showLine 有效,显示树的根节点连接线 */ showRootLine?: boolean /** * 树结构序号显示模式,支持层级序号和自增序号(仅支持 transform)个固定序号 */ seqMode?: 'default' | 'increasing' | 'fixed' | '' | null /** * 默认展开所有子孙树节点(只会在初始化时被触发一次) */ expandAll?: boolean /** * 默认展开指定树节点(只会在初始化时被触发一次,需要有 row-config.keyField) */ expandRowKeys?: string[] | number[] /** * 对于同一级的节点,每次只能展开一个 */ accordion?: boolean /** * 触发方式(注:当多种功能重叠时,会同时触发) */ trigger?: 'default' | 'cell' | 'row' | 'manual' | '' | null /** * 是否使用懒加载(启用后只有指定 hasChildField 字段的节点才允许被点击) */ lazy?: boolean /** * 只对 lazy 启用后有效,标识是否存在子节点,从而控制是否允许被点击 */ hasChildField?: string /** * 是否保留展开状态,对于某些场景可能会用到,比如数据被刷新之后还保留之前展开的状态(需要有 row-config.keyField) */ reserve?: boolean /** * 该方法用于异步加载子节点 */ loadMethod?(params: { $table: VxeTableConstructor<D> row: D }): Promise<any[]> /** * 该方法在展开或关闭触发之前调用,可以通过返回值来决定是否允许继续执行 */ toggleMethod?(params: { $table: VxeTableConstructor<D> expanded: boolean row: D column: VxeTableDefines.ColumnInfo<D> columnIndex: number $columnIndex: number }): boolean /** * 是否显示图标按钮 */ showIcon?: boolean /** * 自定义展开后显示的图标 */ iconOpen?: string /** * 自定义收起后显示的图标 */ iconClose?: string /** * 自定义懒加载中显示的图标 */ iconLoaded?: string /** * 已废弃,请使用 showLine * @deprecated */ line?: boolean /** * 已废弃,请使用 hasChildField * @deprecated */ hasChild?: string /** * 已废弃,请使用 childrenField * @deprecated */ children?: string } export type TreeOpts<D = any> = Required<TreeConfig<D>> /** * 快捷菜单配置项 */ export interface MenuConfig<D = any> { /** * 是否启用 */ enabled?: boolean /** * 表头的右键菜单 */ header?: VxeTableDefines.MenuOptions /** * 内容的右键菜单 */ body?: VxeTableDefines.MenuOptions /** * 表尾的右键菜单 */ footer?: VxeTableDefines.MenuOptions /** * 触发方式 * default(默认右键表格触发), cell(右键单元格触发) */ trigger?: 'default' | 'cell' | '' | null /** * 菜单面板的 className */ className?: string zIndex?: number transfer?: boolean destroyOnClose?: boolean /** * 该函数的返回值用来决定是否允许显示右键菜单(对于需要对菜单进行权限控制时可能会用到) */ visibleMethod?(params: { $table: VxeTableConstructor<D> type: string options: VxeTableDefines.MenuFirstOption[][] columns: VxeTableDefines.ColumnInfo<D>[] row?: D rowIndex?: number column?: VxeTableDefines.ColumnInfo<D> columnIndex?: number }): boolean } export type MenuOpts<D = any> = Required<MenuConfig<D>> /** * 鼠标配置项 */ export interface MouseConfig { /** * 开启单元格选中功能(只对 edit-config.mode=cell 有效) */ selected?: boolean /** * 如果功能被支持,则开启单元格区域选取功能,非连续的区域,按住 Ctrl 键,用鼠标逐一选取 */ area?: boolean /** * 只对 area 启用后有效,是否开启区域扩展选取功能,开启后可以通过鼠标左键按住区域内右下角扩展按钮,将区域横向或纵向扩大(支持扩大区域并复制值) */ extension?: boolean } export interface MouseOpts extends MouseConfig { } /** * 区域配置项 */ export interface AreaConfig<D = any> { /** * 是否显示操作提示消息 */ showActionMsg?: boolean /** * 自定义操作提示消息 */ customModalMsg?:(params: { $table: VxeTableConstructor<D> type: 'fnr' | 'clip' | 'merge' | 'selected' message: string status: VxeModalPropTypes.Status }) => void /** * 只对 mouse-config.area 启用后有效,启用多区域选取功能 */ multiple?: boolean /** * 用于指定哪些列允许被选取 */ includeFields?: string[] /** * 用于排除指定列允许不允许被选取 */ excludeFields?: string[] /** * 单元格选取的方法,返回是否允许被选取 */ selectedMethod?(params: { $table: VxeTableConstructor<D> row: D column: VxeTableDefines.ColumnInfo<D> $grid: VxeGridConstructor<D> | null | undefined }): boolean /** * 只对 mouse-config.area 启用后有效,表格头部选取功能 */ selectCellByHeader?: boolean /** * 只对 mouse-config.area 启用后有效,表格单元格选取功能 */ selectCellByBody?: boolean /** * 只对 mouse-config.area 启用后有效,点击单元格后自动选取当前行的单元格;如果为 true,当选中第一列时联动选择当前行的单元格 */ selectCellToRow?: boolean /** * 只对 mouse-config.area 启用后有效,选择单元格后显示列状态 */ showColumnStatus?: boolean /** * 只对 mouse-config.area 启用后有效,选择单元格后显示行状态 */ showRowStatus?: boolean /** * 只对 mouse-config.extension 启用后有效,将被选取区域的值复制到扩展区域中 */ extendByCopy?: boolean /** * 只对 mouse-config.extension 启用后有效,扩展区域时将自动识别数字规则进行计算 */ extendByCalc?: boolean /** * 只对 mouse-config.extension 启用后有效,扩展区域的方向控制 */ extendDirection?: boolean | { /** * 是否允许向上扩展 */ top?: boolean /** * 是否允许向下扩展 */ bottom?: boolean /** * 是否允许向左扩展 */ left?: boolean /** * 是否允许向右扩展 */ right?: boolean } /** * 只对 mouse-config.extension 启用后有效,扩展区域之前的方法,可以通过返回 false 阻止扩展行为 * @param params */ beforeExtendMethod?(params: VxeTableExtendCellAreaDefines.CellAreaExtensionStartParams<D>): boolean /** * 只对 mouse-config.extension 启用后有效,扩展区域之后的方法 * @param params */ afterExtendMethod?(params: VxeTableExtendCellAreaDefines.CellAreaExtensionEndParams<D>): void /** * 当点击表格之外,是否自动清除单元格的选取状态 */ autoClear?: boolean /** * 只对 extendByCalc 启用后有效,重写单元格扩展区域计算值的方法 * @param params */ extendCalcMethod?(params: VxeTableExtendCellAreaDefines.ExtendCellAreaCalcBaseParams<D>): any[][] /** * 只对 extendByCopy | extendByCalc 启用后有效,重写单元格扩展区域赋值的方法 * @param params */ extendSetMethod?(params: { $table: VxeTableConstructor<D> cellValue: any row: D column: VxeTableDefines.ColumnInfo<D> } & VxeTableExtendCellAreaDefines.ExtendCellAreaCalcBaseParams<D>): void /** * 只对 extendByCopy | extendByCalc 启用后有效,自定义单元格扩展区域赋值之前的方法,可以通过返回 false 阻止扩展赋值行为 * @param params */ beforeExtendSetMethod?(params: VxeTableExtendCellAreaDefines.ExtendCellAreaCalcBaseParams<D>): boolean /** * 只对 extendByCopy | extendByCalc 启用后有效,自定义单元格扩展区域赋值之后的方法 * @param params */ afterExtendSetMethod?(params: { $table: VxeTableConstructor<D> extendValues: any[][] } & VxeTableExtendCellAreaDefines.ExtendCellAreaCalcBaseParams<D>): void } export interface AreaOpts<D = any> extends AreaConfig<D> { } /** * 按键配置项 */ export interface KeyboardConfig<D = any> { /** * 是否启用全选 */ isAll?: boolean /** * 是否开启非编辑状态下,上下左右移动功能 */ isArrow?: boolean /** * 是否开启Esc键退出编辑功能 */ isEsc?: boolean /** * 是否开启删除键功能 */ isDel?: boolean /** * 是否开启回退键功能 */ isBack?: boolean /** * 是否开启回车移动上下行移动 */ isEnter?: boolean /** * 如果功能被支持,用于 mouse-config.area,开启同时按住方向键以活动区域为起始,向指定方向延伸单元格区域 */ isShift?: boolean /** * 是否开启TAB键左右移动功能 */ isTab?: boolean /** * 是否开启单元格选择编辑 */ isEdit?: boolean /** * 用于 mouse-config.area,开启合并和取消合并功能 */ isMerge?: boolean /** * 用于 mouse-config.area,开启复