atomiks / tippyjs

Tooltip, popover, dropdown, and menu library
https://atomiks.github.io/tippyjs/
MIT License
11.78k stars 517 forks source link

`onTrigger` is not triggered. #1110

Open brijsiyag opened 1 year ago

brijsiyag commented 1 year ago

Bug description

onTrigger is not triggered when a Tippy instance is disabled in delegate, but onUntrigger works fine.

Expected behavior

When a Tippy instance is disabled in delegate, onTrigger should still be triggered when the trigger event occurs on the element.

Actual behavior

onTrigger is not triggered when a Tippy instance is disabled in delegate, even though the trigger event occurs on the element. onUntrigger works as expected when the mouse leaves the element.

Steps to reproduce

tippy.delegate('element', {
  content: 'Hello, World!',
  delay: [300, 20],
  onTrigger: (instance, event) => {
    console.log('onTrigger');
  },
  onUntrigger: (instance, event) => {
    console.log('onUntrigger');
  },
  onCreate: (instance) => {
    instance.disable();
    setTimeout(() => {
        instance.enable();
    }, 10000);
  }
});

Now observe mouseenter and mouseleave events.

MikeDabrowski commented 1 year ago

I got the same issue while trying to build something to hide tooltips on not-truncated texts. And I was not using 'delegate'.

onTrigger: (instance: Instance, event: Event) => {
        if (this.isTruncated) {
          instance.enable();
        } else {
          instance.disable();
        }
        this.tooltipOptions?.onTrigger?.(instance, event);
      },