UNPKG

@oiij/naive-ui

Version:

Som Composable Functions And Components for Vue 3

97 lines (96 loc) 5.45 kB
import { DataTableColumns, DataTableFilterState, DataTableInst, DataTableProps, DataTableSortState, DropdownOption, FlexProps, FormItemProps, GridItemProps, GridProps, ModalProps, PaginationProps } from 'naive-ui'; import { FilterState, TableBaseColumn } from 'naive-ui/es/data-table/src/interface'; import { ComputedRef, CSSProperties, Ref, ShallowRef, VNode } from 'vue'; import { useRequestResult } from 'vue-hooks-plus/es/useRequest/types'; import { PresetInputOptions } from '../preset-input/index'; import { RemoteRequestEmits, RemoteRequestProps, RObject } from '../remote-request/index'; import { SearchInputProps } from '../search-input/index'; export { default as NDataTablePlus } from './DataTablePlus.vue'; export type ClassStyle = { class?: string; style?: CSSProperties | string; }; export type DataTablePlusExposeActionsBase<P extends RObject = RObject, D extends RObject = RObject> = { run: (params: P) => void; runAsync: (params: P) => Promise<D>; refresh: () => void; refreshAsync: () => Promise<D>; cancel: () => void; mutate: (data?: D | ((oldData?: D | undefined) => D | undefined) | undefined) => void; setParams: (params: Partial<P>) => void; runParams: (params: Partial<P>) => void; runParamsAsync: (params: Partial<P>) => Promise<D>; }; export type DataTablePlusExposeActions<P extends RObject = RObject, D extends RObject = RObject> = DataTablePlusExposeActionsBase<P, D> & { onValueUpdate: (key: keyof P, val: any) => void; showFilterModal: () => void; resetParams: () => void; }; export type DataTablePlusPagination = { page: number; pageSize: number; itemCount: number; }; export type DataTablePlusExposeRefsBase<P extends RObject = RObject, D extends RObject = RObject, R extends RObject = RObject> = Pick<useRequestResult<D, P[], false, false>, 'loading' | 'data' | 'error' | 'params'> & { pagination: Readonly<Ref<DataTablePlusPagination, DataTablePlusPagination>>; rawList: ComputedRef<R[]>; }; export type DataTablePlusExposeRefs<P extends RObject = RObject, D extends RObject = RObject, R extends RObject = RObject> = DataTablePlusExposeRefsBase<P, D, R> & { filters: Ref<DataTableFilterState | undefined>; sorters: Ref<Record<string, DataTableSortState> | undefined>; dataTableRef: Readonly<ShallowRef<DataTableInst | null>>; }; export type DataTablePlusFilterOptionItem<P extends RObject = RObject, D extends RObject = RObject, R extends RObject = RObject> = PresetInputOptions & { key?: keyof P; label?: string | boolean | (FormItemProps & { style?: CSSProperties; class?: string; }); collapsed?: boolean; hidden?: boolean | ((refs: DataTablePlusExposeRefs<P, D, R>) => boolean); gridSpan?: string | number; gridItemProps?: GridItemProps; render?: (refs: DataTablePlusExposeRefs<P, D, R>, actions: DataTablePlusExposeActions<P, D>) => VNode | null; }; export type DataTablePlusFilterOptions<P extends RObject = RObject, D extends RObject = RObject, R extends RObject = RObject> = DataTablePlusFilterOptionItem<P, D, R>[]; export type DataTablePlusFields = Partial<Record<'page' | 'pageSize' | 'filter' | 'sorter' | 'list' | 'count' | 'rowKey' | 'search' | 'children', string>>; export type DataTablePlusProps<P extends RObject = RObject, D extends RObject = RObject, R extends RObject = RObject> = RemoteRequestProps<P, D> & { title?: string; columns?: DataTableColumns<R>; filterOptions?: DataTablePlusFilterOptions<P, D, R>; filterGridProps?: GridProps & ClassStyle; filterFlexProps?: FlexProps & ClassStyle; filterLayout?: 'grid' | 'flex' | ['grid' | 'flex']; filterCollapsedType?: 'collapsed' | 'modal'; filterModalTrigger?: 'manual' | 'auto'; filterLabel?: string; filterClearLabel?: string; filterModalProps?: ModalProps & ClassStyle; contextMenuOptions?: DropdownOption[]; fields?: DataTablePlusFields; search?: SearchInputProps & ClassStyle | boolean; pagination?: Omit<PaginationProps, 'page' | 'pageSize'> & ClassStyle | boolean; clearable?: boolean | 'main' | 'modal'; infiniteScroll?: boolean | { threshold?: number; }; columnsFilterOptions?: (filters: DataTableFilterState) => Record<string, any>; columnsSorterOptions?: (sorters: Record<string, DataTableSortState>) => Record<string, any>; dataTableProps?: DataTableProps & ClassStyle; }; export type DataTablePlusEmits<P extends RObject = RObject, D extends RObject = RObject, R extends RObject = RObject> = RemoteRequestEmits<P, D> & { (e: 'clickRow', row: R, index: number, event: MouseEvent, currentData: R[]): void; (e: 'contextMenuRow', row: R, index: number, event: MouseEvent, currentData: R[]): void; (e: 'load', row: R): Promise<void>; (e: 'scroll', ev: Event): void; (e: 'scrollBottom', ev: Event): void; (e: 'update:checkedRowKeys', keys: (string | number)[], rows: (R | undefined)[], meta: { row: R | undefined; action: 'check' | 'uncheck' | 'checkAll' | 'uncheckAll'; }, currentData: R[]): void; (e: 'update:expandedRowKeys', keys: (string | number)[], currentData: R[]): void; (e: 'update:filters', filterState: FilterState, sourceColumn: TableBaseColumn): void; (e: 'update:sorter', options: DataTableSortState | DataTableSortState[] | null): void; (e: 'update:page', page: number): void; (e: 'update:pageSize', pageSize: number): void; };