В Tippy.js singleton группа позволяет объединить несколько тултипов, чтобы управлять их поведением централизованно. Вместо того чтобы создавать отдельные экземпляры тултипов для каждого элемента, singleton позволяет показывать только один тултип из группы одновременно, что упрощает управление состоянием и анимацией.
Для начала необходимо создать отдельные тултипы:
import tippy, { createSingleton } from 'tippy.js';
const tooltips = tippy('.tooltip', {
content(reference) {
return reference.getAttribute('data-tooltip');
},
animation: 'scale',
theme: 'light',
duration: [300, 250]
});
Здесь создаются тултипы для всех элементов с классом
.tooltip. Каждому тултипу назначается контент из атрибута
data-tooltip, а также анимация и тема.
После создания обычных тултипов можно объединить их в singleton:
const singletonTooltip = createSingleton(tooltips, {
delay: 100,
moveTransition: 'transform 0.2s ease-out',
theme: 'light-border'
});
tooltips — массив экземпляров Tippy.delay — задержка появления и скрытия тултипа.moveTransition — CSS-анимация перемещения тултипа.theme — общая тема для всей группы.Параметры singleton-а позволяют гибко управлять всей группой:
[появление, скрытие]
или число. Позволяет синхронизировать скорость показа и скрытия всех
тултипов.const singletonTooltip = createSingleton(tooltips, {
delay: [200, 150],
placement: 'top',
animation: 'shift-away',
interactive: true,
theme: 'dark'
});
Даже после создания singleton можно изменять содержимое отдельных тултипов:
tooltips[0].setContent('Новый контент для первого элемента');
singletonTooltip.setProps({ moveTransition: 'transform 0.3s ease-in-out' });
setContent обновляет текст конкретного тултипа.setProps изменяет параметры всего singleton-а.Singleton поддерживает события, идентичные обычным тултипам:
onShow(instance) – вызывается при появлении
тултипа.onHide(instance) – вызывается при скрытии тултипа.onTrigger(instance) – срабатывает при активации
элемента.singletonTooltip.setProps({
onShow(instance) {
console.log('Показывается тултип для', instance.reference);
},
onHide(instance) {
console.log('Скрывается тултип для', instance.reference);
}
});
События передают конкретный экземпляр тултипа, что позволяет различать элементы внутри группы.
Если на страницу добавляются новые элементы, можно:
setInstances:const newTooltip = tippy('#new-element', { content: 'Новый элемент' });
singletonTooltip.setInstances([...tooltips, newTooltip]);
Теперь новый элемент автоматически управляется как часть singleton-а.
interactive: true, если внутри тултипа есть
кликабельные элементы.moveTransition для плавного перемещения
тултипа между элементами.Singleton в Tippy.js упрощает управление множеством подсказок, обеспечивая единый стиль, синхронное поведение и плавные переходы между элементами группы.