import { Dom7Array } from 'dom7'; import { CSSSelector } from '../shared'; import Swiper from '../swiper-class'; export interface PaginationMethods { /** * HTMLElement of pagination container element */ el: HTMLElement; /** * Dom7 array-like collection of pagination bullets * HTML elements. To get specific slide HTMLElement * use `swiper.pagination.bullets[1]`. */ bullets: Dom7Array; /** * Render pagination layout */ render(): void; /** * Update pagination state (enabled/disabled/active) */ update(): void; /** * Initialize pagination */ init(): void; /** * Destroy pagination */ destroy(): void; } export interface PaginationEvents { /** * Event will be fired after pagination rendered */ paginationRender: (swiper: Swiper, paginationEl: HTMLElement) => void; /** * Event will be fired when pagination updated */ paginationUpdate: (swiper: Swiper, paginationEl: HTMLElement) => void; /** * Event will be fired on pagination hide */ paginationHide: (swiper: Swiper) => void; /** * Event will be fired on pagination show */ paginationShow: (swiper: Swiper) => void; } export interface PaginationOptions { /** * String with CSS selector or HTML element of the container with pagination * * @default null */ el?: CSSSelector | HTMLElement | null; /** * String with type of pagination. Can be `'bullets'`, `'fraction'`, `'progressbar'` or `'custom'` * * @default 'bullets' */ type?: 'bullets' | 'fraction' | 'progressbar' | 'custom'; /** * Defines which HTML tag will be used to represent single pagination bullet. Only for `'bullets'` pagination type. * * @default 'span' */ bulletElement?: string; /** * Good to enable if you use bullets pagination with a lot of slides. So it will keep only few bullets visible at the same time. * * @default false */ dynamicBullets?: boolean; /** * The number of main bullets visible when `dynamicBullets` enabled. * * @default 1 */ dynamicMainBullets?: number; /** * Toggle (hide/show) pagination container visibility after click on Slider's container * * @default true */ hideOnClick?: boolean; /** * If `true` then clicking on pagination button will cause transition to appropriate slide. Only for bullets pagination type * * @default false */ clickable?: boolean; /** * Makes pagination progressbar opposite to Swiper's `direction` parameter, means vertical progressbar for horizontal swiper * direction and horizontal progressbar for vertical swiper direction * * @default false */ progressbarOpposite?: boolean; /** * format fraction pagination current number. Function receives current number, * and you need to return formatted value */ formatFractionCurrent?: (number: number) => number; /** * format fraction pagination total number. Function receives total number, and you * need to return formatted value */ formatFractionTotal?: (number: number) => number; /** * This parameter allows totally customize pagination bullets, you need to pass here a function that accepts `index` number of * pagination bullet and required element class name (`className`). Only for `'bullets'` pagination type * * @default null * * @example * ```js * const swiper = new Swiper('.swiper', { * //... * renderBullet: function (index, className) { * return '' + (index + 1) + ''; * } * }); * ``` */ renderBullet?: (index: number, className: string) => void; /** * This parameter allows to customize "fraction" pagination html. Only for `'fraction'` pagination type * * @default null * * @example * ```js * const swiper = new Swiper('.swiper', { * //... * renderFraction: function (currentClass, totalClass) { * return '' + * ' of ' + * ''; * } * }); * ``` */ renderFraction?: (currentClass: string, totalClass: string) => void; /** * This parameter allows to customize "progress" pagination. Only for `'progress'` pagination type * * @default null * * @example * ```js * const swiper = new Swiper('.swiper', { * //... * renderProgressbar: function (progressbarFillClass) { * return ''; * } * }); * ``` */ renderProgressbar?: (progressbarFillClass: string) => void; /** * This parameter is required for `'custom'` pagination type where you have to specify * how it should be rendered. * * @default null * * @example * ```js * const swiper = new Swiper('.swiper', { * //... * renderCustom: function (swiper, current, total) { * return current + ' of ' + total; * } * }); * ``` */ renderCustom?: (swiper: Swiper, current: number, total: number) => void; /** * CSS class name of single pagination bullet * * @default 'swiper-pagination-bullet' */ bulletClass?: string; /** * CSS class name of currently active pagination bullet * * @default 'swiper-pagination-bullet-active' */ bulletActiveClass?: string; /** * The beginning of the modifier CSS class name that will be added to pagination depending on parameters * * @default 'swiper-pagination-' */ modifierClass?: string; /** * CSS class name of the element with currently active index in "fraction" pagination * * @default 'swiper-pagination-current' */ currentClass?: string; /** * CSS class name of the element with total number of "snaps" in "fraction" pagination * * @default 'swiper-pagination-total' */ totalClass?: string; /** * CSS class name of pagination when it becomes inactive * * @default 'swiper-pagination-hidden' */ hiddenClass?: string; /** * CSS class name of pagination progressbar fill element * * @default 'swiper-pagination-progressbar-fill' */ progressbarFillClass?: string; /** * CSS class name of pagination progressbar opposite * * @default 'swiper-pagination-progressbar-opposite' */ progressbarOppositeClass?: string; /** * CSS class name set to pagination when it is clickable * * @default 'swiper-pagination-clickable' */ clickableClass?: string; /** * CSS class name set to pagination when it is disabled * * @default 'swiper-pagination-lock' */ lockClass?: string; /** * CSS class name set to pagination in horizontal Swiper * * @default 'swiper-pagination-horizontal' */ horizontalClass?: string; /** * CSS class name set to pagination in vertical Swiper * * @default 'swiper-pagination-vertical' */ verticalClass?: string; }