123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import { CreateElement, VNode } from 'vue'
- import { ElementUIComponent, ElementUIHorizontalAlignment } from './component'
- export type TableColumnType = 'default' | 'selection' | 'index' | 'expand'
- export type TableColumnFixedType = 'left' | 'right'
- // TODO: complete type here
- export type TableColumn = any
- /** Data used in renderHeader function */
- export interface RenderHeaderData {
- /** The column that is current rendering */
- column: any,
- /** The index of the rendering column */
- $index: number
- }
- /** Filter Object */
- export interface TableColumnFilter {
- /** The text to show in the filter's panel */
- text: string,
- /** The value of the filter */
- value: any
- }
- /** TableColumn Component */
- export declare class ElTableColumn extends ElementUIComponent {
- /** Type of the column. If set to `selection`, the column will display checkbox. If set to `index`, the column will display index of the row (staring from 1). If set to `expand`, the column will display expand icon. */
- type: TableColumnType
- /** Column label */
- label: string
- /** Column's key. If you need to use the filter-change event, you need this attribute to identify which column is being filtered */
- columnKey: string
- /** Field name. You can also use its alias: property */
- prop: string
- /** Column width */
- width: string
- /** Column minimum width. Columns with `width` has a fixed width, while columns with `min-width` has a width that is distributed in proportion */
- minWidth: string
- /** Whether column is fixed at left/right. Will be fixed at left if `true` */
- fixed: boolean | TableColumnFixedType
- /** Render function for table header of this column */
- renderHeader: (h: CreateElement, data: RenderHeaderData) => VNode | string
- /** Whether column can be sorted */
- sortable: boolean
- /** Sorting method. Works when `sortable` is `true` */
- sortMethod: (a: any, b: any) => number
- /** Whether column width can be resized. Works when border of `el-table` is `true` */
- resizable: boolean
- /** Function that formats content */
- formatter: (row: object, column: TableColumn) => any
- /** Whether to hide extra content and show them in a tooltip when hovering on the cell */
- showOverflowTooltip: boolean
- /** Alignment */
- align: ElementUIHorizontalAlignment
- /** Alignment of the table header. If omitted, the value of the `align` attribute will be applied */
- headerAlign: ElementUIHorizontalAlignment
- /** Class name of cells in the column */
- className: string
- /** Class name of the label of this column */
- labelClassName: string
- /** Function that determines if a certain row can be selected, works when `type` is `'selection'` */
- selectable: (row: object, index: number) => boolean
- /** Whether to reserve selection after data refreshing, works when `type` is `'selection'` */
- reserveSelection: boolean
- /** An array of data filtering options */
- filters: TableColumnFilter[]
- /** Whether data filtering supports multiple options */
- filterMultiple: Boolean
- /** Data filtering method. If `filter-multiple` is on, this method will be called multiple times for each row, and a row will display if one of the calls returns `true` */
- filterMethod: (value: any, row: object) => boolean
- // TODO: complete type here
- /** Filter value for selected data, might be useful when table header is rendered with `render-header` */
- filteredValue: any[]
- }
|