В библиотеке Tippy.js хук onHide
является одним из ключевых жизненных циклов тултипа и отвечает за
обработку момента, когда всплывающая подсказка закрывается. Его
использование позволяет выполнять действия сразу после того, как тултип
перестаёт быть видимым, например, анимацию исчезновения, очистку данных
или запуск сторонних функций.
onHide принимает одну функцию обратного вызова с одним
аргументом — объектом instance, представляющим текущий
тултип:
tippy(targetElement, {
content: 'Пример тултипа',
onHide(instance) {
console.log('Тултип скрыт', instance);
}
});
reference,
popper, state, props и методам
управления (hide(), show(),
destroy()).Срабатывание после начала скрытия
onHide вызывается после того, как инициировано скрытие
тултипа, но до завершения анимации, если она настроена через
animation.
Взаимодействие с preventDefault()
Внутри onHide можно отменить скрытие, используя метод
instance.hide() в комбинации с проверкой условий.
Например:
tippy(targetElement, {
content: 'Подтверждение',
onHide(instance) {
if (!confirm('Закрыть тултип?')) {
return false; // предотвращает скрытие
}
}
});
Важно: для правильного предотвращения скрытия следует использовать версию Tippy.js с поддержкой
onHideкак функции с возвратомfalse. В старых версиях это может не работать.
instance.state можно получить текущее состояние видимости
тултипа:tippy(targetElement, {
onHide(instance) {
if (instance.state.isVisible) {
console.log('Тултип ещё видим');
} else {
console.log('Тултип уже скрыт');
}
}
});
При настройке анимации через animation и
duration хук onHide полезен для синхронизации
действий с моментом завершения скрытия:
tippy(targetElement, {
content: 'Анимация скрытия',
animation: 'scale',
duration: 500,
onHide(instance) {
console.log('Анимация завершена, тултип скрыт');
}
});
onHide вызывается после запуска
анимации, а не после её завершения. Для точного отслеживания
конца анимации можно использовать onHidden.tippy(targetElement, {
content: document.createElement('div'),
allowHTML: true,
onHide(instance) {
instance.setContent(''); // очищаем содержимое
}
});
tippy(targetElement, {
content: 'Информация',
onHide(instance) {
console.log(`Тултип для элемента ${instance.reference.id} был закрыт`);
}
});
tippy(targetElement, {
content: 'Интерактивный тултип',
interactive: true,
onHide(instance) {
someAnalytics.track('tooltip_hidden', { id: instance.reference.id });
}
});
onShow — вызывается до отображения
тултипа. Используется совместно для контроля полного жизненного
цикла.onHidden — срабатывает после того, как
тултип полностью скрыт и анимация завершена. Отличие от
onHide: onHide запускается в момент
инициирования скрытия, а onHidden — после
завершения процесса.Пример комбинирования:
tippy(targetElement, {
onHide(instance) {
console.log('Начало скрытия');
},
onHidden(instance) {
console.log('Тултип полностью скрыт');
}
});
onHide вместо onHidden, чтобы
избежать задержек.onHide совместно с
animation и duration.instance.state позволяет создавать условные
действия при скрытии тултипа, делая поведение интерфейса более
гибким.onHide обеспечивает мощный контроль над моментом
закрытия тултипа и его состоянием, позволяя интегрировать Tippy.js в
сложные интерфейсы с динамическим содержимым и анимациями.