UNPKG

vxe-table-demonic

Version:

一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...

168 lines (144 loc) 4.33 kB
import { RenderFunction, SetupContext, ComponentPublicInstance, Ref } from 'vue' import { VXEComponent, VxeComponentBase, VxeEvent, SizeType, ValueOf } from './component' /* eslint-disable no-use-before-define */ /** * 组件 - 虚拟列表 * @example import { VxeList } from 'vxe-components' */ export const VxeList: VXEComponent<VxeListProps, VxeListEventProps, VxeListSlots> /** * 组件 - 虚拟列表 */ export const List: typeof VxeList export type VxeListInstance = ComponentPublicInstance<VxeListProps, VxeListConstructor> export interface VxeListConstructor extends VxeComponentBase, VxeListMethods { props: VxeListProps context: SetupContext<VxeListEmits> reactData: ListReactData internalData: ListInternalData getRefMaps(): ListPrivateRef renderVN: RenderFunction } export interface ListPrivateRef { refElem: Ref<HTMLDivElement> } export interface VxeListPrivateRef extends ListPrivateRef { } export interface ListReactData { scrollYLoad: boolean bodyHeight: number rowHeight: number topSpaceHeight: number items: any[] } export interface ListInternalData { fullData: any[] lastScrollLeft: number lastScrollTop: number scrollYStore: { startIndex: number endIndex: number visibleSize: number offsetSize: number rowHeight: number } } export interface ListMethods { dispatchEvent(type: ValueOf<VxeListEmits>, params: any, evnt: Event): void /** * 加载数据 * @param data 列表数据 */ loadData(data: any[]): Promise<any> /** * 加载数据 * @param data 列表数据 */ reloadData(data: any[]): Promise<any> /** * 重新计算列表 */ recalculate(): Promise<void> /** * 如果有滚动条,则滚动到对应的位置 * @param scrollLeft 左边距离 * @param scrollTop 顶部距离 */ scrollTo(scrollLeft: number | null, scrollTop?: number | null): Promise<void> /** * 刷新滚动操作,手动同步滚动相关位置 */ refreshScroll(): Promise<void> /** * 手动清除滚动相关信息,还原到初始状态 */ clearScroll(): Promise<void> } export interface VxeListMethods extends ListMethods { } export interface ListPrivateMethods { } export interface VxeListPrivateMethods extends ListPrivateMethods { } export namespace VxeListPropTypes { export type Size = SizeType export type Data = any[] export type Height = number | string export type MaxHeight = number | string export type Loading = boolean export type AutoResize = boolean export type ClassName = string | ((params: { $list: VxeListConstructor }) => string) export type SyncResize = boolean | string | number export interface ScrollY { /** * 指定大于指定行时自动启动纵向虚拟滚动,如果为 0 则总是启用,如果为 -1 则关闭 */ gt?: number /** * 指定每次渲染的数据偏移量,偏移量越大渲染次数就越少,但每次渲染耗时就越久 */ oSize?: number /** * 指定列表项的 className */ sItem?: string /** * 是否启用 */ enabled?: boolean } } export type VxeListProps<D = any> = { size?: VxeListPropTypes.Size data?: D[] height?: VxeListPropTypes.Height maxHeight?: VxeListPropTypes.MaxHeight loading?: VxeListPropTypes.Loading autoResize?: VxeListPropTypes.AutoResize syncResize?: VxeListPropTypes.SyncResize className?: VxeListPropTypes.ClassName scrollY?: VxeListPropTypes.ScrollY } export type VxeListEmits = [ 'scroll' ] export namespace VxeListDefines { interface ListEventParams extends VxeEvent { $list: VxeListConstructor } export interface ScrollParams { } export interface ScrollEventParams extends ListEventParams, ScrollParams { } } export type VxeListEventProps = { onScroll?: VxeListEvents.Scroll } export interface VxeListListeners { scroll?: VxeListEvents.Scroll } export namespace VxeListEvents { export type Scroll = (params: VxeListDefines.ScrollEventParams) => void } export interface VxeListSlots { /** * 自定义插槽模板 */ [key: string]: ((params: { [key: string]: any }) => any) | undefined }