# Слайдер

## Общая информация

Слайдер - отличное дополнение для вашего сайта, когда необходимо показать специальные акции или другое интересное содержимое, которое может быть не только изображением, но и любым HTML контентом.

### Разметка

```html
<div id="slider"></div>

<script>
    let someHtml = '<h3 class="pb-20">HTML Slide</h3>'
        + 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.<br>'
        + 'Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.<br>'
        + 'It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.<br>'
        + 'It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.'
        + '<br><br><hr><br>'
        + '<ol class="px-20"><li>Line #1</li><li>Line #2</li><li>Line #3</li></ol>';

    let slider = new PipUI.Slider('#slider', {
        slides: [
            {img: "https://cdn.pipui.ru/media/images/slider/1.webp"},
            {img: "https://cdn.pipui.ru/media/images/slider/2.webp"},
            {img: "https://cdn.pipui.ru/media/images/slider/3.webp"},
            {img: "https://cdn.pipui.ru/media/images/slider/4.webp"},
            {content: someHtml},
            {img: "https://cdn.pipui.ru/media/images/slider/5.webp", content: someHtml}
        ]
    });
</script>
```

{% embed url="<https://codepen.io/pipui/pen/ZEqWPNz>" %}
Пример работы кода выше
{% endembed %}

## Javascript

Данный компонент управляется исключительно с помощью Javascript, по этому какие-либо настройки через атрибуты произвести не удастся.

### Инициализация <a href="#init" id="init"></a>

Для инициализации слайдера необходимо создать экземпляр класса PipUI.Slider.

Конструктор данного класса поддерживает 2 параметра: HTMLElement и Object

Первый параметр - селектор или объект контейнера слайдера.

Второй параметр - объект опций

```html
<div id="slider"></div>

<script>
    let slider = new PipUI.Slider('#slider');
</script>
```

Если произвести просто инициализацию, то слайдер будет пустым, по этому необходимо заполнить его опции, а именно параметр slides, который принимает массив слайдов.

### Опции

```
// Выводить в консоль отладку
debug: false

// Массив слайдов
// Каждый элемент слайдов может представлять собой объект, состоящий из
// параметра img или content, которые являются не обязательными.
// img - ссылка на изображение
// content - HTML содержимое
slides: []

// Функция обратного вызова, срабатываемая при обновлении слайдера
updateCallback: undefined

// Функция обратного вызова, срабатываемая при изменении слайда
changeCallback: undefined

// Функция обратного вызова, срабатываемая при паузе
pauseCallback: undefined

// Функция обратного вызова, срабатываемая при возобновлении после паузе
resumeCallback: undefined

// Функция обратного вызова, срабатываемая при старте
playCallback: undefined

// Задержка при изменении слайда на следующей.
// Если установить 0, то слайды не будут переключаться автоматически.
duration: 3000

// Анимация переключения слайда
animation: 'slide'

// Отображать ли стрелочки переключения на предыдущий и следующий слайды
arrows: true

// Отображать ли элементы переключения по имеющимся слайдам
labels: true

// Можно ли использовать паузу при наведении
pause: true

// Шаблоны слайдера
templates: {
	// Контейнер списка слайдов
	list: '...'
	
	// Блок слайда
	slide: '...'
	
	// Стрелка переключения на предыдущий слайд
	arrowLeft: '...'
	
	// Стрелка переключения на следующий слайд
	arrowRight: '...'
	
	// Элемент переключения по имеющимся слайдам
	label: '...'
}
```

### Методы

```javascript
let slider = new PipUI.Slider('#slider');

slider.getID() // Вернет уникальный идентификатор слайдера

slider.setOptions(object) // Изменить опции слайдера

slider.getOptions() // Получить опции слайдера

slider.update(callback) // Обновить слайдер
// Параметр callback является приоритетной функцией обратного
// вызова перед аналогичной из объекта опций

slider.setSlide(index, callback) // Изменить слайд на указанный
// Параметр index - целое число, начиная от 0
// Параметр callback является приоритетной функцией обратного
// вызова перед функцией changeCallback из объекта опций

slider.next(callback) // Изменить слайд на следующий
// Параметр callback является приоритетной функцией обратного
// вызова перед функцией changeCallback из объекта опций

slider.prev(callback) // Изменить слайд на предыдущий
// Параметр callback является приоритетной функцией обратного
// вызова перед функцией changeCallback из объекта опций

slider.pause(callback) // Поставить слайдер на паузу
// Параметр callback является приоритетной функцией обратного
// вызова перед аналогичной из объекта опций

slider.resume(callback) // Запустить слайдер после паузы
// Параметр callback является приоритетной функцией обратного
// вызова перед аналогичной из объекта опций

slider.play(delay, clear, callback) // Запустить слайдер с доп. параметрами
// Параметр delay указывает задержку переключения
// Параметр clear очищает предыдущие параметры
// Параметр callback является приоритетной функцией обратного
// вызова перед аналогичной из объекта опций
```

### События

<table><thead><tr><th width="201.33333333333331">Триггер</th><th width="413">Описание</th><th>Инициатор</th></tr></thead><tbody><tr><td>update-slider-pipui</td><td>Срабатывает при обновлении слайдера</td><td>.slider</td></tr><tr><td>change-slider-pipui</td><td>Срабатывает при изменении слайда</td><td>.slider</td></tr><tr><td>pause-slider-pipui</td><td>Срабатывает при выставлении паузы</td><td>.slider</td></tr><tr><td>resume-slider-pipui</td><td>Срабатывает при запуске после паузы</td><td>.slider</td></tr><tr><td>play-slider-pipui</td><td>Срабатывает при запуске слайдера(обычно после паузы с определенной задержкой)</td><td>.slider</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://v2-0-0.pipui.ru/components/slider.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
