vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
211 lines (210 loc) • 12.1 kB
TypeScript
import { ExtractPropTypes, PropType } from 'vue';
import { ClassType, ConfigurableProps, StyleType } from '@vexip-ui/config';
import { Accessor, ColumnCellSpanFn, ColumnRenderFn, ColumnSummaryRenderFn, Data, DropType, ExpandRenderFn, FilterRenderFn, HeadRenderFn, SummaryCellSpanFn, SummaryRenderFn, TableCellPayload, TableCellPropFn, TableCellSpanFn, TableColumnRawOptions, TableFilterProfile, TableFootPayload, TableFootPropFn, TableHeadPayload, TableHeadPropFn, TableKeyConfig, TableRowPayload, TableRowPropFn, TableSlots, TableSorterOptions, TableSorterProfile, TableSummaryOptions } from './symbol';
export declare const tableProps: {
inherit: PropType<boolean>;
locale: PropType<Partial<{
empty: string;
filterConfirm: string;
filterReset: string;
filterAll: string;
}>>;
columns: PropType<TableColumnRawOptions[]>;
summaries: PropType<TableSummaryOptions<any, any>[]>;
data: PropType<Data[]>;
width: PropType<string | number>;
height: PropType<number>;
minHeight: PropType<number>;
rowClass: PropType<string | Record<string, any> | (string | Record<string, any>)[] | TableRowPropFn<ClassType>>;
rowStyle: PropType<string | import('vue').CSSProperties | (string | import('vue').CSSProperties)[] | TableRowPropFn<StyleType>>;
rowAttrs: PropType<Record<string, any> | TableRowPropFn<Record<string, any>>>;
stripe: PropType<boolean>;
border: PropType<boolean>;
highlight: PropType<boolean>;
useXBar: PropType<boolean>;
useYBar: PropType<boolean>;
barFade: PropType<number>;
rowDraggable: PropType<boolean>;
rowHeight: PropType<number>;
rowMinHeight: PropType<number>;
virtual: PropType<boolean>;
bufferCount: PropType<number>;
scrollClass: PropType<{
horizontal?: ClassType;
major?: ClassType;
left?: ClassType;
right?: ClassType;
}>;
expandRenderer: PropType<ExpandRenderFn>;
currentPage: PropType<number>;
pageSize: PropType<number>;
transparent: PropType<boolean>;
tooltipTheme: PropType<"light" | "dark">;
tooltipWidth: PropType<string | number>;
singleSorter: PropType<boolean>;
singleFilter: PropType<boolean>;
cellClass: PropType<string | Record<string, any> | (string | Record<string, any>)[] | TableCellPropFn<any, ClassType>>;
cellStyle: PropType<string | import('vue').CSSProperties | (string | import('vue').CSSProperties)[] | TableCellPropFn<any, StyleType>>;
cellAttrs: PropType<Record<string, any> | TableCellPropFn<any, Record<string, any>>>;
headClass: PropType<string | Record<string, any> | (string | Record<string, any>)[] | TableHeadPropFn<ClassType>>;
headStyle: PropType<string | import('vue').CSSProperties | (string | import('vue').CSSProperties)[] | TableHeadPropFn<StyleType>>;
headAttrs: PropType<Record<string, any> | TableHeadPropFn<Record<string, any>>>;
footClass: PropType<string | Record<string, any> | (string | Record<string, any>)[] | TableFootPropFn<ClassType>>;
footStyle: PropType<string | import('vue').CSSProperties | (string | import('vue').CSSProperties)[] | TableFootPropFn<StyleType>>;
footAttrs: PropType<Record<string, any> | TableFootPropFn<Record<string, any>>>;
customSorter: PropType<boolean>;
customFilter: PropType<boolean>;
keyConfig: PropType<TableKeyConfig>;
disabledTree: PropType<boolean>;
rowIndent: PropType<string | number>;
noCascaded: PropType<boolean>;
colResizable: PropType<boolean | "responsive" | "lazy">;
cellSpan: PropType<TableCellSpanFn>;
sidePadding: PropType<number | number[]>;
icons: PropType<Partial<Record<import('./symbol').TableIconName, Record<string, any> | (() => any)>>>;
borderWidth: PropType<number>;
dataFilter: PropType<(data: Data) => boolean>;
noTransition: PropType<boolean>;
ellipsis: PropType<boolean>;
slots: PropType<TableSlots>;
onScroll: PropType<((payload: {
type: "horizontal" | "vertical";
client: number;
percent: number;
}) => void) | ((payload: {
type: "horizontal" | "vertical";
client: number;
percent: number;
}) => void)[]>;
onRowEnter: PropType<((payload: TableRowPayload) => void) | ((payload: TableRowPayload) => void)[]>;
onRowLeave: PropType<((payload: TableRowPayload) => void) | ((payload: TableRowPayload) => void)[]>;
onRowClick: PropType<((payload: TableRowPayload) => void) | ((payload: TableRowPayload) => void)[]>;
onRowDblclick: PropType<((payload: TableRowPayload) => void) | ((payload: TableRowPayload) => void)[]>;
onRowContextmenu: PropType<((payload: TableRowPayload) => void) | ((payload: TableRowPayload) => void)[]>;
onRowCheck: PropType<((payload: TableRowPayload) => void) | ((payload: TableRowPayload) => void)[]>;
onRowCheckAll: PropType<((checked: boolean, partial: boolean) => void) | ((checked: boolean, partial: boolean) => void)[]>;
onRowExpand: PropType<((payload: TableRowPayload) => void) | ((payload: TableRowPayload) => void)[]>;
onRowTreeExpand: PropType<((payload: TableRowPayload) => void) | ((payload: TableRowPayload) => void)[]>;
onRowDragStart: PropType<((row: Data, event: DragEvent) => void) | ((row: Data, event: DragEvent) => void)[]>;
onRowDragOver: PropType<((row: Data, event: DragEvent) => void) | ((row: Data, event: DragEvent) => void)[]>;
onRowDrop: PropType<((row: Data, type: DropType, event: DragEvent) => void) | ((row: Data, type: DropType, event: DragEvent) => void)[]>;
onRowDragEnd: PropType<((row: Data, allRows: Data[], event: DragEvent) => void) | ((row: Data, allRows: Data[], event: DragEvent) => void)[]>;
onRowFilter: PropType<((profiles: TableFilterProfile[], filteredRow: Data[]) => void) | ((profiles: TableFilterProfile[], filteredRow: Data[]) => void)[]>;
onRowSort: PropType<((profiles: TableSorterProfile[], sortedRow: Data[]) => void) | ((profiles: TableSorterProfile[], sortedRow: Data[]) => void)[]>;
onCellEnter: PropType<((payload: TableCellPayload) => void) | ((payload: TableCellPayload) => void)[]>;
onCellLeave: PropType<((payload: TableCellPayload) => void) | ((payload: TableCellPayload) => void)[]>;
onCellClick: PropType<((payload: TableCellPayload) => void) | ((payload: TableCellPayload) => void)[]>;
onCellDblclick: PropType<((payload: TableCellPayload) => void) | ((payload: TableCellPayload) => void)[]>;
onCellContextmenu: PropType<((payload: TableCellPayload) => void) | ((payload: TableCellPayload) => void)[]>;
onHeadEnter: PropType<((payload: TableHeadPayload) => void) | ((payload: TableHeadPayload) => void)[]>;
onHeadLeave: PropType<((payload: TableHeadPayload) => void) | ((payload: TableHeadPayload) => void)[]>;
onHeadClick: PropType<((payload: TableHeadPayload) => void) | ((payload: TableHeadPayload) => void)[]>;
onHeadDblclick: PropType<((payload: TableHeadPayload) => void) | ((payload: TableHeadPayload) => void)[]>;
onHeadContextmenu: PropType<((payload: TableHeadPayload) => void) | ((payload: TableHeadPayload) => void)[]>;
onColResizeStart: PropType<((payload: TableHeadPayload) => void) | ((payload: TableHeadPayload) => void)[]>;
onColResizeMove: PropType<((payload: TableHeadPayload) => void) | ((payload: TableHeadPayload) => void)[]>;
onColResizeEnd: PropType<((payload: TableHeadPayload) => void) | ((payload: TableHeadPayload) => void)[]>;
onFootEnter: PropType<((payload: TableFootPayload) => void) | ((payload: TableFootPayload) => void)[]>;
onFootLeave: PropType<((payload: TableFootPayload) => void) | ((payload: TableFootPayload) => void)[]>;
onFootClick: PropType<((payload: TableFootPayload) => void) | ((payload: TableFootPayload) => void)[]>;
onFootDblclick: PropType<((payload: TableFootPayload) => void) | ((payload: TableFootPayload) => void)[]>;
onFootContextmenu: PropType<((payload: TableFootPayload) => void) | ((payload: TableFootPayload) => void)[]>;
};
export type TableProps = ExtractPropTypes<typeof tableProps>;
export type TableCProps = ConfigurableProps<TableProps, 'columns' | 'data' | 'currentPage' | 'summaries'>;
export declare const tableColumnProps: {
inherit: PropType<boolean>;
idKey: PropType<string | number>;
name: PropType<string>;
accessor: PropType<Accessor>;
fixed: PropType<boolean | "right" | "left">;
class: PropType<string | Record<string, any> | (string | Record<string, any>)[]>;
style: PropType<string | import('vue').CSSProperties | (string | import('vue').CSSProperties)[]>;
attrs: PropType<any>;
type: PropType<"drag" | "order" | "expand" | "selection">;
width: PropType<number | `${number}%`>;
minWidth: PropType<number>;
maxWidth: PropType<number>;
filter: PropType<{
able?: boolean;
custom?: false;
options?: (string | {
value: any;
label?: string;
active?: boolean;
})[] | undefined;
multiple?: false;
active?: any;
method?: ((active: any, data: any) => boolean) | null | undefined;
meta?: any;
} | {
able?: boolean;
custom?: false;
options?: (string | {
value: any;
label?: string;
active?: boolean;
})[] | undefined;
multiple: true;
active?: any[] | null | undefined;
method?: ((active: any[], data: any) => boolean) | null | undefined;
meta?: any;
} | {
able?: boolean;
custom: true;
options?: never;
multiple?: false;
active?: any;
method?: ((active: any, data: any) => boolean) | null | undefined;
meta?: any;
}>;
sorter: PropType<boolean | TableSorterOptions<any>>;
renderer: PropType<ColumnRenderFn>;
headRenderer: PropType<HeadRenderFn>;
filterRenderer: PropType<FilterRenderFn>;
order: PropType<number>;
ellipsis: PropType<boolean>;
checkboxSize: PropType<"default" | "small" | "large">;
selectionSize: PropType<"default" | "small" | "large">;
disableRow: PropType<(data: Data) => boolean>;
truthIndex: PropType<boolean>;
orderLabel: PropType<(index: number) => string | number>;
meta: PropType<any>;
textAlign: PropType<"center" | "right" | "left">;
headSpan: PropType<number>;
cellSpan: PropType<ColumnCellSpanFn>;
noSummary: PropType<boolean>;
summaryRenderer: PropType<ColumnSummaryRenderFn>;
indented: PropType<boolean>;
formatter: PropType<(value: any) => unknown>;
singleSelect: PropType<boolean>;
};
export type TableColumnProps = ExtractPropTypes<typeof tableColumnProps>;
export type TableColumnCProps = ConfigurableProps<TableColumnProps, 'idKey' | 'name' | 'accessor' | 'fixed' | 'type' | 'renderer' | 'headRenderer' | 'order' | 'headSpan' | 'summaryRenderer'>;
export declare const tableColumnGroupProps: {
inherit: PropType<boolean>;
name: PropType<string>;
fixed: PropType<boolean | "right" | "left">;
order: PropType<number>;
ellipsis: PropType<boolean>;
textAlign: PropType<"center" | "right" | "left">;
renderer: PropType<() => any>;
children: PropType<TableColumnRawOptions[]>;
};
export type TableColumnGroupProps = ExtractPropTypes<typeof tableColumnGroupProps>;
export type TableColumnGroupCProps = ConfigurableProps<TableColumnProps, 'name' | 'fixed' | 'order'>;
export declare const tableSummaryProps: {
inherit: PropType<boolean>;
idKey: PropType<string | number>;
name: PropType<string>;
class: PropType<string | Record<string, any> | (string | Record<string, any>)[]>;
style: PropType<string | import('vue').CSSProperties | (string | import('vue').CSSProperties)[]>;
attrs: PropType<any>;
cellSpan: PropType<SummaryCellSpanFn>;
order: PropType<number>;
above: PropType<boolean>;
meta: PropType<any>;
renderer: PropType<SummaryRenderFn>;
};
export type TableSummaryProps = ExtractPropTypes<typeof tableSummaryProps>;
export type TableSummaryCProps = ConfigurableProps<TableSummaryProps, 'idKey' | 'name' | 'renderer' | 'colSpan' | 'order' | 'above'>;