aero-slider
Version:
A lightweight, CSS-first slider library for the modern web
61 lines (60 loc) • 1.64 kB
TypeScript
export type SliderAlignment = "left" | "center" | "right";
export interface SliderConfig {
loop?: boolean;
autoplay?: boolean;
autoplayInterval?: number;
draggable?: boolean;
/** Where the active slide rests in the viewport. */
alignment?: SliderAlignment;
/** Show at most this many pagination dots, scrolling them iOS-style. 0 = unlimited. */
maxDots?: number;
/** Selector for elements inside slides that should not start a mouse drag. */
noDrag?: string;
/** Slides advanced per next()/prev() call. */
perMove?: number;
direction?: "ltr" | "rtl" | "ttb";
}
export interface SliderInstance {
readonly element: HTMLElement;
readonly currentIndex: number;
readonly slideCount: number;
next(): void;
prev(): void;
goTo(index: number): void;
update(config?: SliderConfig): void;
refresh(): void;
add(slides: HTMLElement | HTMLElement[], index?: number): void;
remove(index: number | number[]): void;
destroy(): void;
}
export interface SliderEventMap {
ready: {};
slideChange: {
index: number;
};
dragStart: {
index: number;
};
dragEnd: {
index: number;
fromIndex: number;
};
autoplayStart: {};
autoplayStop: {};
destroy: {};
resize: {};
resized: {};
visible: {
index: number;
};
hidden: {
index: number;
};
}
export type SliderEvent = keyof SliderEventMap;
export type SliderEventData<E extends SliderEvent = SliderEvent> = SliderEventMap[E];
declare global {
interface HTMLElement {
aeroSlider?: SliderInstance;
}
}