a11y-slider
Version:
Library for accessible sliders
139 lines (138 loc) • 4.7 kB
TypeScript
import './index.css';
declare enum SliderState {
Enabled = 1,
Disabled = 0
}
interface CustomPaging {
(index: number, a11ySlider: A11YSlider): string;
}
declare type Options = {
/** Adds a container element around the slider */
container?: boolean;
/** Enables prev/next button */
arrows?: boolean;
/** Button to trigger previous slide. A11YSlider will generate one by default. Can be one or multiple HTML elements */
prevArrow?: HTMLElement | HTMLCollectionOf<HTMLElement> | NodeList;
/** Button to trigger next slide. A11YSlider will generate one by default. Can be one or multiple HTML elements */
nextArrow?: HTMLElement | HTMLCollectionOf<HTMLElement> | NodeList;
/** Generate navigation dots */
dots?: boolean;
/** Height of slider container changes according to each slide's height */
adaptiveHeight?: boolean;
/** Adds a skip button before the slider for a11y devices (Can be seen by tabbing) */
skipBtn?: boolean;
/** The total number of items to be shown. By default A11YSlider will work by default based off your CSS styling. This option hardcodes the width into the HTML for you */
slidesToShow?: number | null;
/** Enables the automatic change of slides */
autoplay?: boolean;
/** Time between slide changes when autoplay is enabled */
autoplaySpeed?: number;
/** If autoplay is enabled then pause when the slider is hovered */
autoplayHoverPause?: boolean;
/** **(EXPERIMENTAL)** Makes the center slide active */
centerMode?: boolean;
/** Makes the slider infinitely loop */
infinite?: boolean;
/** Disables the slider */
disable?: boolean;
/** Define options for different viewport widths */
responsive?: object | null;
/** Define your own custom dots template */
customPaging?: CustomPaging | null;
/** Swipe functionality */
swipe?: boolean;
};
export default class A11YSlider {
private _activeClass;
private _visibleClass;
private _dotsClass;
private _sliderClass;
private _hasCustomArrows;
private _focusable;
private _checkShouldEnableDebounced;
private _updateHeightDebounced;
private _generateDotsDebounced;
private _updateScrollPosition;
private _autoplayTimer;
private autoplayBtn;
private _pauseOnMouseLeave;
private _skipBtns;
slider: HTMLElement;
slides: HTMLCollectionOf<HTMLElement>;
dots: HTMLElement | null;
swipe: boolean;
activeSlide: HTMLElement;
visibleSlides: HTMLElement[];
sliderContainer: HTMLElement;
options: Options;
sliderEnabled: SliderState;
modernBrowser: boolean;
isPlatformiOS: boolean;
mouseDown: boolean;
touchStart: boolean;
swipeStartX: number;
swipeX: number;
swipeXCached: number;
statusEl: HTMLElement;
constructor(element: HTMLElement, options?: Options);
private _init;
private _checkShouldEnable;
private _enableSlider;
private _disableSlider;
private _setCSS;
private _removeCSS;
private _enableA11YStatus;
private _updateA11YStatus;
private _removeA11YStatus;
private _checkResponsive;
private _addSlidesWidth;
private _removeSlidesWidth;
private _updateA11Y;
private _removeA11Y;
private _addSkipBtn;
private _removeSkipBtn;
private _generateDots;
private _getDotCount;
private _removeDots;
private _updateDots;
private _enableAutoplay;
private _disableAutoplay;
private _enableSwipe;
private _swipeMouseDown;
private _swipeMouseUp;
private _swipeMouseMove;
private _swipeTouchStart;
private _swipeTouchEnd;
private _swipeTouchMove;
private _disableSwipe;
private _toggleAutoplay;
private _goPrevOrNext;
/**
* Moves slider to target element
*/
scrollToSlide(target: HTMLElement | number): void;
/**
* Update the options on the slider instance
*/
updateOptions(options: Options): void;
/**
* Updates height of slider based on tallest element passed in array, or false to reset
*/
private _updateHeight;
/** Manully update height of slider (based off adaptiveHeight option) */
refreshHeight(): void;
private _getActiveAndVisible;
private _handlePrev;
private _handleNext;
private _handleAutoplay;
private _handleAutoplayHover;
private _handleAutoplayEvent;
private _handleScroll;
private _scrollFinish;
private _dispatchEvent;
/**
* Nuke the slider
*/
destroy(): void;
}
export {};