mirror of
https://gitee.com/xuliangzhan_admin/vxe-table.git
synced 2026-01-21 05:27:57 +08:00
368 lines
10 KiB
TypeScript
368 lines
10 KiB
TypeScript
import { VNode } from 'vue'
|
|
import { VXEComponent } from './component'
|
|
import { VxeTableConstructor, VxeTableDefines, VxeTablePropTypes } from './table'
|
|
import { VxeGlobalRendererHandles } from './v-x-e-table'
|
|
import { VxeFilterPanel } from './filter'
|
|
import { VxeTooltipPropTypes } from './tooltip'
|
|
|
|
/**
|
|
* 组件 - 表格列
|
|
* @example import { Column as VxeColumn } from 'vxe-table'
|
|
*/
|
|
export const Column: VXEComponent<VxeColumnProps>
|
|
|
|
export namespace VxeColumnPropTypes {
|
|
export type ColId = string | number
|
|
export type Type = 'seq' | 'radio' | 'checkbox' | 'expand' | 'html' | null
|
|
export type Field = string
|
|
export type Title = string
|
|
export type Width = number | string
|
|
export type MinWidth = number | string
|
|
export type Resizable = boolean
|
|
export type Fixed = 'left' | 'right' | null
|
|
export type Align = 'left' | 'center' | 'right' | null
|
|
export type HeaderAlign = Align
|
|
export type FooterAlign = Align
|
|
export type ShowOverflow = VxeTablePropTypes.ShowOverflow
|
|
export type ShowHeaderOverflow = ShowOverflow
|
|
export type ShowFooterOverflow = ShowOverflow
|
|
export type ClassName = string | ((params: VxeGlobalRendererHandles.RenderCellParams) => string | any[] | { [key: string]: boolean })
|
|
export type HeaderClassName = string | ((params: VxeGlobalRendererHandles.RenderHeaderParams) => string | any[] | { [key: string]: boolean })
|
|
export type FooterClassName = string | ((params: VxeGlobalRendererHandles.RenderFooterParams) => string | any[] | { [key: string]: boolean })
|
|
|
|
export type Formatter = ((params: {
|
|
cellValue: any
|
|
column: VxeTableDefines.ColumnInfo
|
|
row: any
|
|
}) => string | number) | any[] | string
|
|
|
|
export type Sortable = boolean
|
|
export type SortBy = string | ((params: {
|
|
row: any
|
|
column: VxeTableDefines.ColumnInfo
|
|
}) => string | number)
|
|
export type SortType = 'string' | 'number' | null
|
|
|
|
export interface Filter {
|
|
label?: string | number
|
|
value?: any
|
|
data?: any
|
|
resetValue?: any
|
|
checked?: boolean
|
|
}
|
|
export type Filters = Filter[]
|
|
|
|
export type FilterMultiple = boolean
|
|
|
|
interface FilterMethodParams {
|
|
$table: VxeTableConstructor,
|
|
value: any
|
|
option: VxeTableDefines.FilterOption
|
|
cellValue: any
|
|
row: any
|
|
column: VxeTableDefines.ColumnInfo
|
|
}
|
|
export type FilterMethod = (params: FilterMethodParams) => boolean
|
|
|
|
interface FilterResetMethodParams {
|
|
options: VxeTableDefines.FilterOption[]
|
|
column: VxeTableDefines.ColumnInfo
|
|
}
|
|
export type FilterResetMethod = (params: FilterResetMethodParams) => void
|
|
|
|
interface FilterRecoverMethodParams {
|
|
option: VxeTableDefines.FilterOption
|
|
column: VxeTableDefines.ColumnInfo
|
|
}
|
|
export type FilterRecoverMethod = (params: FilterRecoverMethodParams) => void
|
|
|
|
/**
|
|
* 筛选渲染配置项
|
|
*/
|
|
export interface FilterRender extends VxeGlobalRendererHandles.RenderOptions {
|
|
options?: any[]
|
|
optionProps?: VxeGlobalRendererHandles.RenderOptionProps
|
|
optionGroups?: any[]
|
|
optionGroupProps?: VxeGlobalRendererHandles.RenderOptionGroupProps
|
|
content?: string
|
|
}
|
|
|
|
export type TreeNode = boolean
|
|
export type Visible = boolean
|
|
|
|
interface ExportMethodParams {
|
|
$table: VxeTableConstructor,
|
|
row: any
|
|
column: VxeTableDefines.ColumnInfo
|
|
}
|
|
export type ExportMethod = (params: ExportMethodParams) => string | number
|
|
|
|
interface FooterExportParams {
|
|
$table: VxeTableConstructor,
|
|
items: any[]
|
|
column: VxeTableDefines.ColumnInfo
|
|
_columnIndex: number
|
|
}
|
|
export type FooterExportMethod = (params: FooterExportParams) => string | number
|
|
|
|
export interface TitlePrefix {
|
|
useHTML?: VxeTooltipPropTypes.UseHTML
|
|
content?: VxeTooltipPropTypes.Content
|
|
enterable?: VxeTooltipPropTypes.Enterable
|
|
theme?: VxeTooltipPropTypes.Theme
|
|
icon?: string
|
|
/**
|
|
* @deprecated 已废弃,请使用 content
|
|
*/
|
|
message?: string
|
|
}
|
|
|
|
export interface TitleHelp extends TitlePrefix {}
|
|
|
|
export type CellType = 'auto' | 'number' | 'string'
|
|
|
|
export interface CellRender extends VxeGlobalRendererHandles.RenderOptions {
|
|
events?: { [key: string]: (cellParams: DefaultSlotParams, ...args: any[]) => any }
|
|
options?: any[]
|
|
optionProps?: VxeGlobalRendererHandles.RenderOptionProps
|
|
optionGroups?: any[]
|
|
optionGroupProps?: VxeGlobalRendererHandles.RenderOptionGroupProps
|
|
content?: string
|
|
}
|
|
|
|
/**
|
|
* 编辑渲染配置项
|
|
*/
|
|
export interface EditRender extends VxeGlobalRendererHandles.RenderOptions {
|
|
events?: { [key: string]: (cellParams: EditSlotParams, ...args: any[]) => any }
|
|
enabled?: boolean
|
|
options?: any[]
|
|
optionProps?: VxeGlobalRendererHandles.RenderOptionProps
|
|
optionGroups?: any[]
|
|
optionGroupProps?: VxeGlobalRendererHandles.RenderOptionGroupProps
|
|
autofocus?: string
|
|
autoselect?: boolean
|
|
defaultValue?: ((params: { column: VxeTableDefines.ColumnInfo }) => any) | null | undefined | string | number | RegExp | object | any[] | Date
|
|
immediate?: boolean
|
|
content?: string
|
|
placeholder?: string
|
|
}
|
|
|
|
/**
|
|
* 内容渲染配置项
|
|
*/
|
|
export interface ContentRender extends VxeGlobalRendererHandles.RenderOptions {
|
|
options?: any[]
|
|
optionProps?: VxeGlobalRendererHandles.RenderOptionProps
|
|
optionGroups?: any[]
|
|
optionGroupProps?: VxeGlobalRendererHandles.RenderOptionGroupProps
|
|
}
|
|
|
|
export type Params = any
|
|
|
|
interface FilterSlotParams {
|
|
$panel: VxeFilterPanel
|
|
column: {
|
|
filters: VxeTableDefines.FilterOption[]
|
|
} & VxeTableDefines.ColumnInfo
|
|
columnIndex: number
|
|
$columnIndex: number
|
|
$rowIndex: number
|
|
}
|
|
|
|
interface EditSlotParams {
|
|
column: VxeTableDefines.ColumnInfo
|
|
columnIndex: number
|
|
$columnIndex: number
|
|
row: any
|
|
rowIndex: number
|
|
$rowIndex: number
|
|
}
|
|
|
|
interface FooterSlotParams {
|
|
column: VxeTableDefines.ColumnInfo
|
|
columnIndex: number
|
|
_columnIndex: number
|
|
$columnIndex: number
|
|
$rowIndex: number
|
|
items: any[]
|
|
data: any[][]
|
|
}
|
|
|
|
interface HeaderSlotParams extends VxeTableDefines.CellRenderHeaderParams { }
|
|
|
|
interface ContentSlotParams {
|
|
column: VxeTableDefines.ColumnInfo
|
|
columnIndex: number
|
|
$columnIndex: number
|
|
row: any
|
|
rowIndex: number
|
|
$rowIndex: number
|
|
isHidden: boolean
|
|
fixed: VxeColumnPropTypes.Fixed
|
|
type: string
|
|
}
|
|
|
|
interface DefaultSlotParams extends VxeTableDefines.CellRenderBodyParams { }
|
|
|
|
interface IconSlotParams extends DefaultSlotParams { }
|
|
|
|
export type Slots = {
|
|
title?: string | ((params: HeaderSlotParams) => JSX.Element[] | VNode[] | string[]) | null
|
|
radio?: string | ((params: DefaultSlotParams) => JSX.Element[] | VNode[] | string[]) | null
|
|
checkbox?: string | ((params: DefaultSlotParams) => JSX.Element[] | VNode[] | string[]) | null
|
|
default?: string | ((params: DefaultSlotParams) => JSX.Element[] | VNode[] | string[]) | null
|
|
header?: string | ((params: HeaderSlotParams) => JSX.Element[] | VNode[] | string[]) | null
|
|
footer?: string | ((params: FooterSlotParams) => JSX.Element[] | VNode[] | string[]) | null
|
|
content?: string | ((params: ContentSlotParams) => JSX.Element[] | VNode[] | string[]) | null
|
|
filter?: string | ((params: FilterSlotParams) => JSX.Element[] | VNode[] | string[]) | null
|
|
edit?: string | ((params: EditSlotParams) => JSX.Element[] | VNode[] | string[]) | null
|
|
icon?: string | ((params: IconSlotParams) => JSX.Element[] | VNode[] | string[]) | null
|
|
}
|
|
}
|
|
|
|
export type VxeColumnProps = {
|
|
colId?: VxeColumnPropTypes.ColId
|
|
/**
|
|
* 渲染类型
|
|
*/
|
|
type?: VxeColumnPropTypes.Type
|
|
/**
|
|
* 列字段名
|
|
*/
|
|
field?: VxeColumnPropTypes.Field
|
|
/**
|
|
* 列标题
|
|
*/
|
|
title?: VxeColumnPropTypes.Title
|
|
/**
|
|
* 列宽度
|
|
*/
|
|
width?: VxeColumnPropTypes.Width
|
|
/**
|
|
* 列最小宽度,把剩余宽度按比例分配
|
|
*/
|
|
minWidth?: VxeColumnPropTypes.MinWidth
|
|
/**
|
|
* 是否允许拖动列宽调整大小
|
|
*/
|
|
resizable?: VxeColumnPropTypes.Resizable
|
|
/**
|
|
* 将列固定在左侧或者右侧
|
|
*/
|
|
fixed?: VxeColumnPropTypes.Fixed
|
|
/**
|
|
* 列对其方式
|
|
*/
|
|
align?: VxeColumnPropTypes.Align
|
|
/**
|
|
* 表头对齐方式
|
|
*/
|
|
headerAlign?: VxeColumnPropTypes.HeaderAlign
|
|
/**
|
|
* 表尾列的对齐方式
|
|
*/
|
|
footerAlign?: VxeColumnPropTypes.FooterAlign
|
|
/**
|
|
* 当内容过长时显示为省略号
|
|
*/
|
|
showOverflow?: VxeColumnPropTypes.ShowOverflow
|
|
/**
|
|
* 当表头内容过长时显示为省略号
|
|
*/
|
|
showHeaderOverflow?: VxeColumnPropTypes.ShowHeaderOverflow
|
|
/**
|
|
* 当表尾内容过长时显示为省略号
|
|
*/
|
|
showFooterOverflow?: VxeColumnPropTypes.ShowFooterOverflow
|
|
/**
|
|
* 给单元格附加 className
|
|
*/
|
|
className?: VxeColumnPropTypes.ClassName
|
|
/**
|
|
* 给表头单元格附加 className
|
|
*/
|
|
headerClassName?: VxeColumnPropTypes.HeaderClassName
|
|
/**
|
|
* 给表尾单元格附加 className
|
|
*/
|
|
footerClassName?: VxeColumnPropTypes.FooterClassName
|
|
/**
|
|
* 格式化显示内容
|
|
*/
|
|
formatter?: VxeColumnPropTypes.Formatter
|
|
/**
|
|
* 是否允许排序
|
|
*/
|
|
sortable?: VxeColumnPropTypes.Sortable
|
|
/**
|
|
* 自定义排序的属性
|
|
*/
|
|
sortBy?: VxeColumnPropTypes.SortBy
|
|
/**
|
|
* 排序的字段类型,比如字符串转数值等
|
|
*/
|
|
sortType?: VxeColumnPropTypes.SortType
|
|
/**
|
|
* 配置筛选条件数组
|
|
*/
|
|
filters?: VxeColumnPropTypes.Filter[]
|
|
/**
|
|
* 筛选是否允许多选
|
|
*/
|
|
filterMultiple?: VxeColumnPropTypes.FilterMultiple
|
|
/**
|
|
* 自定义筛选方法
|
|
*/
|
|
filterMethod?: VxeColumnPropTypes.FilterMethod
|
|
/**
|
|
* 筛选模板配置项
|
|
*/
|
|
filterRender?: VxeColumnPropTypes.FilterRender
|
|
/**
|
|
* 指定为树节点
|
|
*/
|
|
treeNode?: VxeColumnPropTypes.TreeNode
|
|
/**
|
|
* 是否可视
|
|
*/
|
|
visible?: VxeColumnPropTypes.Visible
|
|
/**
|
|
* 自定义单元格数据导出方法
|
|
*/
|
|
exportMethod?: VxeColumnPropTypes.ExportMethod
|
|
/**
|
|
* 自定义表尾单元格数据导出方法
|
|
*/
|
|
footerExportMethod?: VxeColumnPropTypes.FooterExportMethod
|
|
/**
|
|
* 已废弃,被 titlePrefix 替换
|
|
* @deprecated
|
|
*/
|
|
titleHelp?: VxeColumnPropTypes.TitleHelp
|
|
/**
|
|
* 标题帮助图标配置项
|
|
*/
|
|
titlePrefix?: VxeColumnPropTypes.TitlePrefix
|
|
/**
|
|
* 单元格值类型
|
|
*/
|
|
cellType?: VxeColumnPropTypes.CellType
|
|
/**
|
|
* 单元格渲染配置项
|
|
*/
|
|
cellRender?: VxeColumnPropTypes.CellRender
|
|
/**
|
|
* 单元格编辑渲染配置项
|
|
*/
|
|
editRender?: VxeColumnPropTypes.EditRender
|
|
/**
|
|
* 内容渲染配置项
|
|
*/
|
|
contentRender?: VxeColumnPropTypes.ContentRender
|
|
/**
|
|
* 额外的参数
|
|
*/
|
|
params?: VxeColumnPropTypes.Params
|
|
}
|