#fullcalendar #tippyjs
Вопрос:
У меня есть Tippy.js интегрирован в FullCalendar.js календарь. При перетаскивании события в календарь всплывающие подсказки становятся сумасшедшими, теряя ссылку на событие, которое его вызвало.
Я думаю, проблема в том, что я создаю экземпляр Tippy (всплывающая подсказка) внутри eventDidMount
крючка, и это вызывается при перетаскивании каждый раз, когда событие перетаскивания привязывается к ячейке календаря, и именно поэтому в процессе оно вызывает множество подсказок.
У Fullcalendar есть крючок eventDragStart(eventInfo)
, но я не знаю, как добраться до прикрепленного экземпляра tippy, чтобы скрыть его. Или я должен вообще запретить создание всплывающей подсказки при перетаскивании?
//Other FullCalendar Initialization
...
eventDidMount: function(info) {
tippy(info.el, {
interactive: true,
delay: 300,
theme: 'light-border',
maxWidth: 400,
allowHTML: true,
appendTo: document.getElementById('mainContent'),
content(reference) {
//Tooltip content
return tempRendered;
},
});
}
eventDragStart(info){
//I SUPPOSE HERE I SHOULD DO SOMETHING TO HIDE THE TIPPY TOOLTIP
}
Есть какие-нибудь идеи?
Ответ №1:
Что ж, я наконец-то нашел способ исправить это в FullCalendar, а не в Типпи.
Я установил _isDragging
свойство для события внутри крючка eventDragStart:
eventDragStart: function(info) {
calendarInstance.getEventById(info.event.id).setExtendedProp( "_isDragging", true );
},
Таким образом, я могу проверить этот флаг внутри eventDidMount
крючка и предотвратить создание всплывающей подсказки Tippy.
eventDidMount: function(info) {
const isDragging =
calendarInstance.getEventById(info.event.id).extendedProps._isDragging;
if (isDragging != null amp;amp; isDragging) {
return;
}
...
// Tippy Init
},
ВАЖНО:
Я устанавливаю свойство _isDragging непосредственно для экземпляра события внутри экземпляра календаря, потому что в аргументах info.event, которые получают эти крючки, нет свойств, созданных на лету. Или, по крайней мере, я не нашел способа заставить это работать.