vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
41 lines (40 loc) • 1.67 kB
TypeScript
import { Ref } from 'vue';
import { NativeScrollMode } from './symbol';
export declare function useScrollWrapper({ mode, disabled, appear, scrollX, scrollY, onResize, onBeforeRefresh, onAfterRefresh, }: {
mode: Ref<NativeScrollMode>;
disabled: Ref<boolean>;
appear: Ref<boolean>;
scrollX: Ref<number>;
scrollY: Ref<number>;
onResize?: (entity: ResizeObserverEntry) => void;
onBeforeRefresh?: () => void;
onAfterRefresh?: () => void;
}): {
contentEl: Ref<HTMLElement | undefined, HTMLElement | undefined>;
content: {
el: HTMLElement | undefined;
scrollWidth: number;
offsetWidth: number;
scrollHeight: number;
offsetHeight: number;
};
x: Ref<number, number>;
y: Ref<number, number>;
percentX: Ref<number, number>;
percentY: Ref<number, number>;
xScrollLimit: import('vue').ComputedRef<number>;
yScrollLimit: import('vue').ComputedRef<number>;
enableXScroll: import('vue').ComputedRef<boolean>;
enableYScroll: import('vue').ComputedRef<boolean>;
xBarLength: import('vue').ComputedRef<number>;
yBarLength: import('vue').ComputedRef<number>;
handleResize: (entity: ResizeObserverEntry) => void;
setScrollX: (value: number) => void;
setScrollY: (value: number) => void;
computePercent: () => void;
refresh: () => Promise<void>;
scrollTo: (clientX: number, clientY: number, duration?: number) => Promise<void>;
scrollBy: (deltaX: number, deltaY: number, duration?: number) => Promise<void>;
scrollToElement: (el: string | Element, duration?: number, offset?: number) => Promise<void>;
triggerUpdate: () => void;
};