Tooltipster, как популярная библиотека для создания всплывающих подсказок в JavaScript, претерпела значительные изменения в своём API с версии 4.x до версии 5.x. Эти изменения затрагивают как способ инициализации тултипов, так и методы управления их поведением. Рассмотрим ключевые моменты подробно.
Ранее (v4.x) использовался подход:
$('.tooltip').tooltipster({
animation: 'fade',
delay: 200,
theme: 'tooltipster-light'
});
Теперь (v5.x) инициализация строго ориентирована на объектный синтаксис и цепочки методов. Опции стали более строгими и модульными:
import Tooltipster from 'tooltipster';
const instance = Tooltipster.create(document.querySelector('.tooltip'), {
animation: 'fade',
delay: 200,
theme: 'tooltipster-light'
});
Особенности:
Tooltipster.create.TooltipsterContent, TooltipsterAnimation.API прежних версий включало методы вида:
$('.tooltip').tooltipster('open');
$('.tooltip').tooltipster('content', 'Новый контент');
В новой версии методы стали объектно-ориентированными:
const instance = Tooltipster.get(document.querySelector('.tooltip'));
instance.open();
instance.content('Новый контент');
instance.close();
Ключевые изменения:
content() теперь возвращает и устанавливает
содержимое без необходимости дополнительных аргументов для получения
текущего контента (instance.content() возвращает текущий
контент).enable(), disable(),
destroy() остались, но требуют прямого обращения к
экземпляру тултипа..on() и .off() экземпляра, без передачи
строковых команд через jQuery.В версии 5.x добавлена расширенная поддержка анимаций через CSS-классы и кастомные темы:
const instance = Tooltipster.create('.tooltip', {
animation: 'slide',
theme: ['tooltipster-light', 'custom-theme'],
interactive: true
});
Особенности:
interactive позволяет тултипу оставаться открытым
при наведении мыши на содержимое тултипа.Ранее события выглядели так:
$('.tooltip').on('beforeOpen', function() {
console.log('Тултип открывается');
});
Теперь используется объектный подход:
const instance = Tooltipster.create('.tooltip');
instance.on('beforeOpen', () => {
console.log('Тултип открывается');
});
instance.off('beforeOpen');
Изменения:
{instance, origin, content}.event.preventDefault() внутри callback.Tooltipster 5.x добавляет встроенную поддержку асинхронного контента:
const instance = Tooltipster.create('.tooltip', {
content: 'Загрузка...',
});
instance.content(new Promise(resolve => {
setTimeout(() => {
resolve('Данные загружены');
}, 1000);
}));
Особенности:
content().Некоторые методы v4.x больше не поддерживаются:
'open',
'close', 'content') полностью заменены на
методы экземпляра.$.tooltipster() больше
не применяется.functionBefore и functionReady
заменены на события beforeOpen и ready.Основные шаги:
Tooltipster.create()
вместо jQuery..on() экземпляра.theme теперь массив,
animation поддерживает кастомные CSS-классы).functionBefore.Эти изменения делают API Tooltipster более модульным, объектно-ориентированным и подходящим для современного JavaScript, минимизируя зависимость от jQuery и упрощая интеграцию с фреймворками и динамическими приложениями.