vue-virtualized-table-booway
Version:
The second version of implementation of `vue-virtual-table` component, it was inspired from [rc-table](https://github.com/react-component/table) and [ant-table](https://ant.design/components/table), API design is 60%+ consistent. Or you could think I tran
56 lines (49 loc) • 1.42 kB
TypeScript
import { VNode } from "vue";
interface ColumnConfig {
/* 列配置 */
label?: string
prop?: string
key: string | number
width: number | string /* % */
render: (
h: Function,
param: ColumnParam
) => VNode | null /* must return a vnode instance */
// filter(h: Function, param: ColumnParam)?: void; /* 暂未实现 */
// sortBy(h: Function, param: ColumnParam)?: void; /* 暂未实现 */
}
interface ColumnParam {
/* 列参数对象 */
row: RowModel // 当前数据项 对应后端传入 list 的当前项的 model
rows: Array<RowModel>
index: number
rowIndex: number
column: ColumnConfig
columnIndex: number
store: TableStore
}
interface TableStore {
isRowExpanded(row: RowModel): void /* 判断当前行是否是展开状态 */
toggleRowExpansion(
row: RowModel,
expanded?: boolean
) /* 切换当前行展开收起状态 */
isRowSelected(row: RowModel) /* 判断当前行是否选中状态 */
toggleRowSelection(
row: RowModel,
selected?: boolean
) /* 切换当前行是否选中状态 */
// filter /* 暂未实现 */
// sortBy /* 暂未实现 */
}
interface TableProps {
}
type RowKey = number | string
interface RowModel {
rowKey: RowKey /* [RowModel]rowKey 的值必须在 Array<RowModel> 中唯一 */
children?: RowModel[]
__parent?: RowModel | null /* 父节点 */
__index: number
__depth: number
[prop as string]: any
}