UNPKG

tdesign-pro-component

Version:

ProComponents tdesign-vue-next + Vue3 + TS

93 lines (92 loc) 3.38 kB
import { BasicValueType, Optional, PromiseFunction, VueNode, WithFalse } from '@tdesign-pro-component/utils'; import { FilterKey } from '../ProForm'; import { ProFormDatePickerProps } from '../ProFormDatePicker'; import { ProFormSelectProps } from '../ProFormSelect'; import { ProFormInputNumberProps } from '../ProFormInputNumber'; import { ProFormTextareaProps } from '../ProFormTextarea'; import { ProFormTextProps } from '../ProFormText'; import { ProFormRadioProps } from '../ProFormRadio'; import { ProFormCheckboxProps } from '../ProFormCheckbox'; import { BaseTableCol, FormRule, PrimaryTableOnEditedContext, TableEditableCellConfig, TableProps } from 'tdesign-vue-next'; import { Ref } from 'vue'; export interface ProTableProps<T = any> { rowKey?: string; options: ProTableOption<T>[]; request: <REQ, RES>(data: ProTableRequest<REQ>) => Promise<ProTableResult<RES>>; dragAble?: boolean; dragType?: 'row' | 'col' | 'row-handler'; dragHandler?: (params: any) => any[]; empty?: VueNode | string; tableProps?: TableProps; selectData?: BasicValueType[]; selectAble?: boolean; selectType?: 'single' | 'multiple'; editAble?: boolean; hideFooter?: boolean; dataActions?: VueNode | string; expanedRow?: VueNode | string; formHeader?: VueNode | string; hideForm?: boolean; dataActionsAlign?: 'left' | 'right'; bordered?: boolean; [name: string]: any; } interface ProTableTitle { formTitle: VueNode; tableTitle: VueNode; } export interface ProTableOption<T> { key: string; title: string | ProTableTitle; render?: (row: T, rowIndex?: number) => VueNode; hideInTable?: boolean; titleRender?: (...args: any[]) => VueNode; tableColumnsProps?: Optional<BaseTableCol, 'colKey'>; ellipsis?: boolean; ellipsisTitle?: boolean; fixed?: 'left' | 'right'; sorter?: boolean; width?: string | number; footer?: (...args: any[]) => VueNode; tableType?: WithFalse<'single' | 'multiple'>; edit?: TableEditableCellConfig & { beforeEdit?: () => Promise<any>; onEditSuccess?: (data?: PrimaryTableOnEditedContext<T>) => void; onEditFail?: (e: any) => void; }; hideInSearch?: boolean; placeholder?: string; type?: 'text' | 'number' | 'textarea' | 'select' | 'radio' | 'checkbox' | 'date' | 'date-range'; span?: number; data?: any[] | PromiseFunction<any[]>; labelAlign?: 'left' | 'right' | 'top'; disabled?: boolean; rules?: FormRule[]; checkboxProps?: Optional<ProFormCheckboxProps, FilterKey>; radioProps?: Optional<ProFormRadioProps, FilterKey>; textProps?: Optional<ProFormTextProps, FilterKey>; numberProps?: Optional<ProFormInputNumberProps, FilterKey>; textareaProps?: Optional<ProFormTextareaProps, FilterKey>; selectProps?: Optional<ProFormSelectProps, FilterKey>; datePickerProps?: Optional<ProFormDatePickerProps, FilterKey>; readonly?: boolean; } export interface ProTableRequest<T = any> { form: T; pageNum: number; pageSize: number; [name: string]: any; } export interface ProTableResult<T = any> { list: T[]; total: number; success: boolean; [name: string]: any; } export interface ProTableRef { reset: () => void; reload: () => void; getTableData: () => Ref<any[]>; getFormValue: () => any; } export {};