Tippy.js предоставляет мощную систему глобальных обработчиков (global event handlers), позволяющую управлять поведением всех тултипов на странице одновременно. Глобальные обработчики особенно полезны, когда необходимо задать единый стандарт взаимодействия для множества тултипов или интегрировать их с пользовательскими событиями и логикой интерфейса.
Глобальные обработчики подключаются через метод
tippy.setDefaultProps(). Этот метод позволяет задать
общие свойства, которые будут применяться ко всем
создаваемым тултипам, если не указано иное на уровне конкретного
экземпляра.
tippy.setDefaultProps({
delay: [100, 300],
arrow: true,
theme: 'light-border',
});
В этом примере:
delay: [100, 300] — устанавливает задержку показа 100
мс и скрытия 300 мс для всех тултипов.arrow: true — включает стрелку у всех тултипов.theme: 'light-border' — задаёт светлую тему с
обводкой.Tippy.js поддерживает ряд событий, которые можно использовать как глобальные хуки:
onShow(instance) — вызывается перед отображением
тултипа.onShown(instance) — после отображения.onHide(instance) — перед скрытием.onHidden(instance) — после скрытия.onMount(instance) — когда тултип добавлен в DOM.onTrigger(instance, event) — срабатывает при
инициирующем событии.Для задания глобального обработчика используют
tippy.setDefaultProps() с указанием нужного события:
tippy.setDefaultProps({
onShow(instance) {
console.log(`Показывается тултип с контентом: ${instance.props.content}`);
},
onHide(instance) {
console.log(`Скрывается тултип с контентом: ${instance.props.content}`);
}
});
Эти функции будут применяться ко всем новым тултипам на странице, но их можно переопределить на уровне конкретного экземпляра.
Tippy.js поддерживает делегирование (delegation), что позволяет создавать тултипы на элементах, которые динамически добавляются в DOM. Глобальные обработчики тесно связаны с делегированными тултипами, так как можно задавать стандартное поведение для любых селекторов:
tippy.delegate(document.body, {
target: '.tooltip',
content(reference) {
return reference.getAttribute('data-tooltip');
},
delay: [200, 200],
onShow(instance) {
console.log(`Делегированный тултип: ${instance.props.content}`);
}
});
Здесь:
target: '.tooltip' — селектор для элементов, к которым
будет применяться тултип.content(reference) — функция для динамического
определения контента.onShow применяются ко всем
делегированным тултипам.Если необходимо изменить глобальные обработчики после того, как
тултипы уже созданы, можно использовать
tippy.setDefaultProps() повторно. Новые тултипы будут
использовать обновленные значения, а существующие — останутся без
изменений:
tippy.setDefaultProps({
theme: 'dark',
onShow(instance) {
console.log(`Новый глобальный обработчик для: ${instance.props.content}`);
}
});
Для обновления уже созданного тултипа можно вызвать метод
.setProps() на конкретном экземпляре:
const tip = tippy('#myButton', { content: 'Старый контент' });
tip[0].setProps({ content: 'Обновленный контент', theme: 'dark' });
setDefaultProps, применяются к новым тултипам, но не
изменяют существующие.onShow
и onHide позволяют вести статистику взаимодействий.Использование глобальных обработчиков в Tippy.js позволяет создавать согласованное и гибкое поведение тултипов, облегчает поддержку большого количества компонентов и интеграцию с динамическим контентом.