@oiij/naive-ui
Version:
Some Composable Functions And Components for Vue 3
59 lines (58 loc) • 3.2 kB
TypeScript
import { DataObject, DataRequestFields, UseDataRequestReturns } from "../../composables/useDataRequest.js";
import { RemoteRequestEmits, RemoteRequestProps } from "../remote-request/index.js";
import { SearchInputProps } from "../search-input/index.js";
import { _default } from "./DataTablePlus.vue.js";
import { CSSProperties, Ref, ShallowRef } from "vue";
import { ButtonProps, DataTableColumns, DataTableFilterState, DataTableInst, DataTableProps, DataTableSortState, PaginationProps } from "naive-ui";
import { ComponentExposed } from "vue-component-type-helpers";
import { FilterState, TableBaseColumn } from "naive-ui/es/data-table/src/interface";
//#region src/components/data-table-plus/index.d.ts
type ClassStyle = {
class?: string;
style?: CSSProperties | string;
};
type DataTablePlusExpose<P extends DataObject = DataObject, D extends DataObject = DataObject, R extends DataObject = DataObject> = UseDataRequestReturns<P, D, R> & {
filters: Ref<DataTableFilterState | undefined>;
sorters: Ref<Record<string, DataTableSortState> | undefined>;
dataTableRef: Readonly<ShallowRef<DataTableInst | null>>;
};
type DataTablePlusFields = DataRequestFields & {
filter?: string;
sorter?: string;
rowKey?: string;
search?: string;
children?: string;
};
type DataTablePlusProps<P extends DataObject = DataObject, D extends DataObject = DataObject, R extends DataObject = DataObject> = RemoteRequestProps<P, D> & {
title?: string;
scrollTop?: number | boolean | {
top?: number;
buttonProps?: ButtonProps & ClassStyle;
};
columns?: DataTableColumns<R>;
fields?: DataTablePlusFields;
search?: SearchInputProps & ClassStyle | boolean;
pagination?: Omit<PaginationProps, 'page' | 'pageSize' | 'itemCount'> & ClassStyle | boolean;
columnsFilterOptions?: (filters: DataTableFilterState) => Record<string, any>;
columnsSorterOptions?: (sorters: Record<string, DataTableSortState>) => Record<string, any>;
dataTableProps?: DataTableProps & ClassStyle;
};
type DataTablePlusEmits<P extends DataObject = DataObject, D extends DataObject = DataObject, R extends DataObject = DataObject> = 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;
};
type DataTablePlusInst = ComponentExposed<typeof _default>;
//#endregion
export { ClassStyle, DataTablePlusEmits, DataTablePlusExpose, DataTablePlusFields, DataTablePlusInst, DataTablePlusProps };