@ithinkdt/naive
Version:
iThinkDT Naive UI
49 lines (42 loc) • 1.83 kB
TypeScript
/* eslint-disable @typescript-eslint/no-explicit-any */
import { DataTableProps, DataTableInst } from 'ithinkdt-ui'
import { PublicProps, GenericCtx, GenericReturn, GenericExposed } from '@ithinkdt/common'
import { UnwrapRefTableColumn, SortParam } from '@ithinkdt/core'
declare interface _TableProps<T extends {}, K extends 'id' | keyof T | ((row: T) => string | number)>
extends Omit<DataTableProps, 'columns' | 'rowKey' | 'data'> {
columns?: UnwrapRefTableColumn<T>[]
data?: T[]
rowKey?: K
sorts?: SortParam<T>
optimization?: boolean
onSort?: (v: SortParam<T>) => any
onSelect?: (
v:
| {
key: K extends keyof T ? T[K] & (string | number) : K extends (...p: any[]) => infer K1 ? K1 : 'id'
selected: boolean
}
| boolean,
) => any
}
declare interface _TableEmits<T extends {}, K extends 'id' | keyof T | ((row: T) => string | number)> {
(e: 'sort', v: SortParam<T>): any
(
e: 'select',
v:
| {
key: K extends keyof T ? T[K] & (string | number) : K extends (...p: any[]) => infer K1 ? K1 : 'id'
selected: boolean
}
| boolean,
): any
}
declare interface _TableInst extends DataTableInst {
scrollToRow(index: number): void
}
export declare const DtTable: <T extends {}, K extends 'id' | keyof T | ((row: T) => string | number) = 'id'>(
props: _TableProps<T, K> & PublicProps,
ctx?: Pick<GenericCtx<_TableProps<T, K>, _TableEmits<T, K>, {}, _TableInst>, 'attrs' | 'emit' | 'slots'>,
expose?: (exposed?: GenericExposed<_TableInst>) => void,
setup?: GenericCtx<_TableProps<T, K>, _TableEmits<T, K>, {}, _TableInst>,
) => GenericReturn<_TableProps<T, K>, _TableEmits<T, K>, {}, _TableInst>