Fullcalendar предотвращает постоянство триггеров eventDidMount при перетаскивании

#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, которые получают эти крючки, нет свойств, созданных на лету. Или, по крайней мере, я не нашел способа заставить это работать.