@opensig/opendesign
Version:
<p align="center"><img src="../docs/public/opendesign-logo-light.png"/></p> <h1 align="center">opendesign</h1> <p align="center">一个 Vue 3 组件库</p> <p align="center"><b>皮肤可定制,使用 TypeScript</b></p>
32 lines (31 loc) • 1.28 kB
TypeScript
import { PointMoveT } from '../../_utils/types';
export interface EffectT {
active: (slideIndex: number) => Promise<null | number>;
destroyed: () => void;
}
export interface EffectOptionT {
activeClass?: string;
onTouchstart?: () => void;
onTouchend?: () => void;
onBeforeChange?: (from: number, to: number) => boolean | void;
onChanged?: (from: number, to: number) => void;
}
export default abstract class Effect {
total: number;
currentIndex: number;
activeClass: string | undefined;
onTouchstart: (() => void) | undefined;
onTouchend: (() => void) | undefined;
onBeforeChange: ((to: number, from: number) => boolean | void) | undefined;
onChanged: ((to: number, from: number) => void) | undefined;
private isTouchStart;
private containerEl;
constructor(slideElList: HTMLElement[], slideContainer: HTMLElement, options?: EffectOptionT);
abstract handleTouchStart(): void;
abstract handleTouchMove(pos: PointMoveT, e: TouchEvent): void;
abstract handleTouchEnd(pos: PointMoveT, e: TouchEvent): number | void;
abstract active(toIndex: number, animate?: boolean, force?: boolean): Promise<null | number>;
abstract destroyed(): void;
fixIndex(idx: number): number;
handleTouch(): void;
}