UNPKG

@extclp/vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

50 lines (49 loc) 1.94 kB
import { ComponentPublicInstance } from 'vue'; import { ScrollMode } from '../scroll'; import { EventHandler } from '@vexip-ui/utils'; export type NativeScrollMode = Exclude<ScrollMode, 'horizontal-exact'>; export interface NativeScrollPayload { type: NativeScrollMode; clientX: number; clientY: number; percentX: number; percentY: number; } export interface NativeScrollState { scrollX: number; scrollY: number; percentX: number; percentY: number; enableXScroll: Readonly<boolean>; enableYScroll: Readonly<boolean>; } export interface NativeScrollSlotParams { getState: () => NativeScrollState; refresh: () => 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>; ensureInView: (el: string | Element, duration?: number, offset?: number) => void; } export interface NativeScrollExposed extends ComponentPublicInstance { x: number; y: number; percentX: number; percentY: number; xScrollLimit: number; yScrollLimit: number; enableXScroll: boolean; enableYScroll: boolean; xBarLength: number; yBarLength: number; content?: HTMLElement; 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>; ensureInView: (el: string | Element, duration?: number, offset?: number) => Promise<void>; getXScrollLimit: () => number[]; getYScrollLimit: () => number[]; addScrollListener: (listener: EventHandler) => void; removeScrollListener: (listener: EventHandler) => void; }