UNPKG

vue-devui

Version:

DevUI components based on Vite and Vue3

335 lines (334 loc) 9.83 kB
import type { PropType, ExtractPropTypes, VNode, InjectionKey, Ref, SetupContext } from 'vue'; import type { Placement } from '../../overlay'; export interface RowData { checked?: boolean; disableCheck?: boolean; children?: RowData[]; isLeaf?: boolean; [k: string]: any; } export type ColumnType = 'checkable' | 'index' | ''; export type ColumnAlign = 'left' | 'center' | 'right'; export type BorderType = '' | 'bordered' | 'borderless'; export type Size = 'mini' | 'xs' | 'sm' | 'md' | 'lg'; export type ShadowType = '' | 'shadowed'; export type FixedDirection = 'left' | 'right'; export type SortDirection = 'asc' | 'desc' | ''; export type CheckableRelation = 'upward' | 'downward' | 'both' | 'none'; export type SortMethod<T = RowData> = (a: T, b: T) => boolean; export type RowClass = string | ((row: RowData, rowIndex: number) => string); export type CellClass = string | ((row: RowData, rowIndex: number, column: ColumnConfig, columnIndex: number) => string); export type RowKey = string | ((row: RowData) => string); export interface TooltipConfig { content?: string; position?: Placement[]; mouseEnterDelay?: number; enterable?: boolean; class?: string; } export interface FilterListItem { name: string; value: any; checked?: boolean; } export interface ColumnConfig { header: string; field: string; width?: number | string; minWidth?: number | string; maxWidth?: number | string; type?: ColumnType; resizable?: boolean; sortable?: boolean; showSortIcon?: boolean; sortMethod?: SortMethod; filterable?: boolean; showFilterIcon?: boolean; filterMultiple?: boolean; filterList?: FilterListItem[]; filterChange?: (val: FilterListItem | FilterListItem[]) => void; filterMenu?: (scope: { toggleFilterMenu: (status?: boolean) => void; setFilterStatus: (status: boolean) => void; }) => VNode; fixed?: FixedDirection; align?: ColumnAlign; showOverflowTooltip?: boolean | TooltipConfig; showHeadOverflowTooltip?: boolean | TooltipConfig; headRender?: (columnConfig: ColumnConfig) => VNode; cellRender?: (rowData: RowData, rowIndex: number, cellData: string, cellIndex: number) => VNode; } export interface InnerColumnConfig extends ColumnConfig { $columnId: string; offsetLeft: number; $showExpandTreeIcon?: boolean; } export interface InnerRowData extends RowData { $rowId?: string; $parentId?: string; $rowIndex?: number; $level?: number; height?: number; offsetTop?: number; showNode?: boolean; $expand?: boolean; halfChecked?: boolean; childList?: InnerRowData[]; descendantList?: InnerRowData[]; } export interface ScrollYParams { distance: number; renderCountPerScreen: number; scrollScaleY: number[]; originRowData: InnerRowData[]; defaultSortRowData: InnerRowData[]; } export interface ScrollXParams { distance: number; totalColumn: number; bufferSize: number; scrollViewWidth: number; scrollScaleX: number[]; originColumnData: InnerColumnConfig[]; } export interface IExpandLoadMoreResult { node: InnerRowData; rowItems: RowData[]; } export declare const dataGridProps: { columns: { type: PropType<ColumnConfig[]>; default: () => never[]; }; data: { type: PropType<RowData[]>; default: () => never[]; }; indent: { type: NumberConstructor; default: number; }; striped: { type: BooleanConstructor; default: boolean; }; fixHeader: { type: BooleanConstructor; default: boolean; }; rowHoveredHighlight: { type: BooleanConstructor; default: boolean; }; headerBg: { type: BooleanConstructor; default: boolean; }; showHeader: { type: BooleanConstructor; default: boolean; }; lazy: { type: BooleanConstructor; default: boolean; }; virtualScroll: { type: BooleanConstructor; default: boolean; }; columnVirtualScroll: { type: BooleanConstructor; }; reserveCheck: { type: BooleanConstructor; default: boolean; }; resizable: { type: BooleanConstructor; }; rowClass: { type: PropType<RowClass>; default: string; }; rowKey: { type: PropType<RowKey>; }; cellClass: { type: PropType<CellClass>; default: string; }; size: { type: PropType<Size>; default: string; }; borderType: { type: PropType<BorderType>; default: string; }; shadowType: { type: PropType<ShadowType>; default: string; }; checkableRelation: { type: PropType<CheckableRelation>; default: string; }; }; export type DataGridProps = ExtractPropTypes<typeof dataGridProps>; export interface DataGridContext { showHeader: Ref<boolean>; fixHeader: Ref<boolean>; lazy: Ref<boolean>; virtualScroll: Ref<boolean>; columnVirtualScroll: Ref<boolean>; resizable: Ref<boolean>; indent: Ref<number>; bodyContentWidth: Ref<number>; bodyContentHeight: Ref<number>; translateX: Ref<number>; translateY: Ref<number>; bodyScrollLeft: Ref<number>; rowClass: Ref<RowClass>; cellClass: Ref<CellClass>; size: Ref<Size>; rootRef: Ref<HTMLElement | undefined>; scrollRef: Ref<HTMLElement | undefined>; headBoxRef: Ref<HTMLElement | undefined>; renderColumnData: Ref<InnerColumnConfig[]>; renderFixedLeftColumnData: Ref<InnerColumnConfig[]>; renderFixedRightColumnData: Ref<InnerColumnConfig[]>; renderRowData: Ref<InnerRowData[]>; rootCtx: SetupContext; allChecked: Ref<boolean>; halfAllChecked: Ref<boolean>; isTreeGrid: Ref<boolean>; execSortMethod: (direction: SortDirection, sortMethod?: SortMethod) => void; addGridThContextToMap: (key: ColumnConfig['field'], thCtx: GridThContext) => void; clearAllSortState: () => void; toggleRowExpansion: (node: InnerRowData, status?: boolean) => void; toggleRowChecked: (node: InnerRowData, status?: boolean) => void; toggleAllRowChecked: (status?: boolean) => void; afterColumnDragend: (columnId: InnerColumnConfig['$columnId'], offset: number) => void; } export declare const DataGridInjectionKey: InjectionKey<DataGridContext>; export interface GridThContext { doSort: (direction: SortDirection) => void; doClearSort: () => void; } export declare const gridHeadProps: { columnData: { type: PropType<InnerColumnConfig[]>; default: () => never[]; }; leftColumnData: { type: PropType<InnerColumnConfig[]>; default: () => never[]; }; rightColumnData: { type: PropType<InnerColumnConfig[]>; default: () => never[]; }; translateX: { type: NumberConstructor; default: number; }; bodyScrollLeft: { type: NumberConstructor; default: number; }; }; export type GridHeadProps = ExtractPropTypes<typeof gridHeadProps>; export declare const gridBodyProps: { rowData: { type: PropType<InnerRowData[]>; default: () => never[]; }; columnData: { type: PropType<InnerColumnConfig[]>; default: () => never[]; }; leftColumnData: { type: PropType<InnerRowData[]>; default: () => never[]; }; rightColumnData: { type: PropType<InnerRowData[]>; default: () => never[]; }; translateX: { type: NumberConstructor; default: number; }; translateY: { type: NumberConstructor; default: number; }; bodyScrollLeft: { type: NumberConstructor; default: number; }; }; export type GridBodyProps = ExtractPropTypes<typeof gridBodyProps>; export declare const gridThProps: { columnConfig: { type: PropType<InnerColumnConfig>; default: () => {}; }; mouseenterCb: { type: PropType<(e: Event, tooltipConfig: InnerColumnConfig['showOverflowTooltip']) => void>; default: () => {}; }; mouseleaveCb: { type: PropType<(e: Event, tooltipConfig: InnerColumnConfig['showOverflowTooltip']) => void>; default: () => {}; }; }; export type GridThProps = ExtractPropTypes<typeof gridThProps>; export declare const gridThFilterProps: { filterList: { type: PropType<FilterListItem[] | undefined>; default: () => never[]; }; multiple: { type: BooleanConstructor; default: boolean; }; showFilterIcon: { type: BooleanConstructor; default: boolean; }; filterMenu: { type: PropType<((scope: { toggleFilterMenu: (status?: boolean) => void; setFilterStatus: (status: boolean) => void; }) => VNode) | undefined>; }; setFilterStatus: { type: PropType<(status: boolean) => void>; default(): void; }; }; export type GridThFilterProps = ExtractPropTypes<typeof gridThFilterProps>; export declare const gridTdProps: { rowData: { type: PropType<InnerRowData>; default: () => {}; }; cellData: { type: PropType<InnerColumnConfig>; default: () => {}; }; rowIndex: { type: NumberConstructor; default: number; }; mouseenterCb: { type: PropType<(e: Event, tooltipConfig: InnerColumnConfig['showOverflowTooltip']) => void>; default: () => {}; }; mouseleaveCb: { type: PropType<(e: Event, tooltipConfig: InnerColumnConfig['showOverflowTooltip']) => void>; default: () => {}; }; }; export type GridTdProps = ExtractPropTypes<typeof gridTdProps>;