Skip to content

Tour ​

Компонент тура для пошагового руководства пользователя по интерфейсу. Выделяет целевые элементы и отображает инструкции по шагам.

Установка ​

bash
npx @capsuleui/core add Tour

Использование ​

Базовый тур ​

html
<button id="my-button">Нажми меня</button>

<capsule-tour id="my-tour">
  <capsule-tour-step
    value="1"
    target="#my-button"
    position="bottom"
  >
    <h3>Добро пожаловать!</h3>
    <p>Это ваша главная кнопка</p>
    <button onclick="document.getElementById('my-tour').next()">Далее</button>
  </capsule-tour-step>
</capsule-tour>

<script>
  // Начать тур
  document.getElementById('my-tour').start();
</script>

Варианты позиционирования ​

Шаг тура может быть позиционирован относительно целевого элемента:

  • top - Сверху от цели
  • bottom - Снизу от цели (по умолчанию)
  • left - Слева от цели
  • right - Справа от цели
html
<capsule-tour-step
  value="1"
  target="#element"
  position="top"
>
  <!-- Контент -->
</capsule-tour-step>

Программное управление ​

Управляйте туром с помощью JavaScript API:

html
<capsule-tour id="my-tour">
  <capsule-tour-step
    value="1"
    target="#button1"
    >Шаг 1</capsule-tour-step
  >
  <capsule-tour-step
    value="2"
    target="#button2"
    >Шаг 2</capsule-tour-step
  >
  <capsule-tour-step
    value="3"
    target="#button3"
    >Шаг 3</capsule-tour-step
  >
</capsule-tour>

<script>
  const tour = document.getElementById('my-tour');

  // Начать тур
  tour.start();

  // Навигация
  tour.next(); // Перейти к следующему шагу
  tour.prev(); // Перейти к предыдущему шагу
  tour.goToStep(2); // Перейти к конкретному шагу
  tour.skip(); // Пропустить/закрыть тур

  // Проверка состояния
  tour.isActive(); // Возвращает true, если тур активен
  tour.getCurrentStep(); // Возвращает номер текущего шага
  tour.getTotalSteps(); // Возвращает общее количество шагов
</script>

Атрибуты ​

capsule-tour ​

АтрибутТипПо умолчаниюОписание
valuenumber—Номер текущего активного шага (начиная с 1). Если пустое или невалидное, тур скрыт

capsule-tour-step ​

АтрибутТипПо умолчаниюОписание
valuenumber—Номер шага (начиная с 1)
targetstring—CSS селектор целевого элемента
positionstringbottomПозиция относительно цели: top, bottom, left, right

Методы ​

start() ​

Начать тур с первого шага.

javascript
tour.start();

next() ​

Перейти к следующему шагу.

javascript
tour.next(); // Возвращает true, если перешел, false если уже на последнем шаге

prev() ​

Перейти к предыдущему шагу.

javascript
tour.prev(); // Возвращает true, если перешел, false если уже на первом шаге

skip() ​

Пропустить/закрыть тур.

javascript
tour.skip();

goToStep(stepNumber) ​

Перейти к конкретному шагу.

javascript
tour.goToStep(2); // Перейти к шагу 2

getCurrentStep() ​

Получить номер текущего шага.

javascript
const step = tour.getCurrentStep(); // Возвращает число или null

getTotalSteps() ​

Получить общее количество шагов.

javascript
const total = tour.getTotalSteps(); // Возвращает число

isActive() ​

Проверить, активен ли тур сейчас.

javascript
if (tour.isActive()) {
  console.log('Тур активен');
}

Стилизация ​

Тур автоматически добавляет класс tour-active к целевым элементам. Настройте эффект подсветки:

css
/* Настройте эффект подсветки */
.tour-active {
  position: relative;
  z-index: 9998;
}

.tour-active::before {
  content: '';
  position: absolute;
  top: -4px;
  left: -4px;
  right: -4px;
  bottom: -4px;
  border: 2px solid var(--capsule-color-primary);
  border-radius: var(--capsule-radius);
  pointer-events: none;
}

Настройте внешний вид шага:

css
capsule-tour-step {
  background: white;
  border-radius: 8px;
  padding: 1rem;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

Поведение ​

  • Автоскролл: Тур автоматически прокручивает страницу, чтобы показать целевые элементы, включая вложенные прокручиваемые контейнеры
  • Автопозиционирование: Шаги автоматически позиционируются относительно целей с учетом границ viewport
  • Overlay: Целевые элементы получают класс tour-active для удобной стилизации
  • Скрыт по умолчанию: Тур скрыт, когда value пустое, null или невалидное

Released under the MIT License.