import type { VNode } from 'vue'; import { VxeTableDefines, VxeTableInstance } from 'vxe-table'; import { TableEditorCloseTrigger, TableEditorMode } from './table'; /** * 行上下文 */ export interface RowContext { /** * 当前唯一键, 默认使用__draftId, 若不存在时,使用第三方组件内置唯一键(如VxeTable使用{@link VXE_TABLE_X_ID}) */ key: string; /** * 当前行数据 */ data: Record; /** * 当前行索引 */ index: number; /** * 第三方组件原始上下文 */ origin: T; } interface BaseContext { /** * 当前行数据 */ row: Record; /** * 行索引 */ rowIndex: number; /** * 列索引 */ columnIndex: number; /** * 第三方组件原始上下文 */ origin: T; } /** * 行内编辑上下文 */ export interface ActiveEditorContext extends BaseContext { /** * 预处理的行内编辑上下文 */ prepare?: boolean; /** * 新行 */ new?: boolean; /** * 新行编辑完成后插入位置索引 */ insertTo?: number; /** * 当前列 */ column: { field: string | undefined; }; /** * 列可编辑过滤 */ editableMap: Record; /** * 数据提交 */ submit: boolean; /** * 行内编辑模式; 一般用于开启行内编辑时手动指定编辑模式,强制覆盖当前配置的编辑模式; */ editorMode?: TableEditorMode; /** * 行内编辑关闭触发方式; 一般用于开启行内编辑时手动指定关闭触发方式,强制覆盖当前配置的关闭触发方式; */ editorCloseTrigger?: TableEditorCloseTrigger; /** * 强制编辑 */ forceEditable?: boolean; /** * @see RuntimeAction */ triggerAction?: Record; } export type RenderCellContext = BaseContext; export type CellRenderFunction = (context: RowContext) => VNode[] | string; export interface OioTableInstance { getOrigin(): VxeTableInstance; setCurrentRow(row: unknown): Promise; clearCurrentRow(): Promise; setCheckboxRow(rows: unknown[], checked: boolean): Promise; clearCheckboxRow(): Promise; resetCheckboxRow(rows: unknown[]): Promise; setRadioRow(row: unknown): Promise; clearRadioRow(): Promise; getAllColumns(): VxeTableDefines.ColumnInfo[]; refreshColumn(): Promise; loadColumns(columns: (VxeTableDefines.ColumnOptions | VxeTableDefines.ColumnInfo)[]): Promise; reloadColumns(columns: (VxeTableDefines.ColumnOptions | VxeTableDefines.ColumnInfo)[]): Promise; updateFooter(); getTableData(index: number): Promise; setEditRow(row: unknown): Promise; isEditRow(row: unknown): boolean; getActiveEditorRecord(): RowContext | undefined; activeCellEditor(row: unknown, fieldOrColumn: string | VxeTableDefines.ColumnInfo): Promise; clearEditor(): Promise; recalculate(refull?: boolean): Promise; allRowExpand(): Promise; clearAllRowExpand(): Promise; setRowExpand(row: unknown, isExpand: boolean): Promise; getSortColumns(): VxeTableDefines.SortCheckedParams[]; clearSort(fieldOrColumn: string | VxeTableDefines.ColumnInfo): Promise; sort(sortConfs: VxeTableDefines.SortConfs[]): Promise; insert(records: Record | Record[], index?: number): Promise; isInsertByRow(row: unknown): boolean; removeInsertRow(): Promise; } export type VxeTableRowContext = RowContext; export type VxeTableActiveEditorEventContext = ActiveEditorContext; export type VxeTableCellRenderFunction = CellRenderFunction;