yanzhen-design-vue
Version:
109 lines (108 loc) • 3.95 kB
TypeScript
import { VxeTableDefines } from 'vxe-pc-ui/types/components/table';
import { Ref } from 'vue';
import { VxeTableInstance } from 'vxe-pc-ui';
import { ResizeObserverEntry } from '@vueuse/core';
import { ColRecord, RowRecord } from '../utils';
export type ScrollParams = {
[K in keyof VxeTableDefines.ScrollParams]: VxeTableDefines.ScrollParams[K];
};
export interface ScrollDOMRect {
type: string;
scrollTop: number;
scrollLeft: number;
scrollHeight: number;
scrollWidth: number;
bodyWidth: number;
bodyHeight: number;
isX: boolean;
isY: boolean;
virtualX?: boolean;
virtualY?: boolean;
params: any[];
}
export interface TableWrapperDOMRect {
target?: Element;
parent?: Element;
tbody?: Element;
parentRect?: DOMRect;
contentRect?: DOMRect;
bodyWidth: number;
bodyHeight: number;
parentHeight: number;
parentWidth: number;
scrollWidth: number;
scrollHeight: number;
scrollLeft: number;
scrollTop: number;
}
export interface TableWrapperOptions {
scroll?: {
debounce?: number;
};
onTrResizeObserver?: (entries: ReadonlyArray<ResizeObserverEntry>) => void;
onResizeBodyRowRecord?: (record: RowRecord) => void;
onResizeBodyColRecord?: (record: ColRecord) => void;
onTableResizeObserver?: (rect: TableWrapperDOMRect) => void;
onScroll?: (rect: TableWrapperDOMRect, scroll: any) => void;
}
export declare function useVxeTableObserver(tableRef: Ref<VxeTableInstance | undefined>, options?: TableWrapperOptions): {
observer: {
mutation: {
isSupported: import('vue').ComputedRef<boolean>;
stop: () => void;
takeRecords: () => MutationRecord[] | undefined;
};
resize: {
key: symbol;
isSupported: boolean;
add: {
(target: Element, callback?: import('@yanzhen-libs/utils-vue/src/observer/types').TargetObserver["observer"], options?: import('@vueuse/core').UseResizeObserverOptions): import('@yanzhen-libs/utils-vue/src/observer/types').TargetObserver | null | undefined;
(target: Element[], callback?: import('@yanzhen-libs/utils-vue/src/observer/types').TargetObserver["observer"], options?: import('@vueuse/core').UseResizeObserverOptions): (import('@yanzhen-libs/utils-vue/src/observer/types').TargetObserver | null | undefined)[];
};
delete: (target: Element | Element[], callback?: import('@yanzhen-libs/utils-vue/src/observer/types').TargetObserver["observer"]) => import('@yanzhen-libs/utils-vue/src/observer/types').ReturnObserverType<undefined | null>;
stop: () => void;
};
tableResize: {
isSupported: import('vue').ComputedRef<boolean>;
stop: () => void;
};
};
tableWrapperRef: import('vue').ComputedRef<never>;
tableWrapper: import('vue').ComputedRef<TableWrapperDOMRect | {
target?: Element;
parent?: Element;
tbody?: Element;
parentRect?: {
height: number;
width: number;
x: number;
y: number;
readonly bottom: number;
readonly left: number;
readonly right: number;
readonly top: number;
toJSON: () => any;
};
contentRect?: {
height: number;
width: number;
x: number;
y: number;
readonly bottom: number;
readonly left: number;
readonly right: number;
readonly top: number;
toJSON: () => any;
};
bodyWidth: number;
bodyHeight: number;
parentHeight: number;
parentWidth: number;
scrollWidth: number;
scrollHeight: number;
scrollLeft: number;
scrollTop: number;
}>;
stop: () => void;
onTableScroll: (data: ScrollParams) => void;
};