summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/shared/popover.js
blob: 3fc03553bdd41756ebded8552864d815c315efce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import $ from 'jquery';
import _ from 'underscore';

export function togglePopover(show) {
  const isAlreadyShown = this.hasClass('js-popover-show');
  if ((show && isAlreadyShown) || (!show && !isAlreadyShown)) {
    return false;
  }
  this.popover(show ? 'show' : 'hide');
  this.toggleClass('disable-animation js-popover-show', show);

  return true;
}

export function mouseleave() {
  if (!$('.popover:hover').length > 0) {
    const $popover = $(this);
    togglePopover.call($popover, false);
  }
}

export function mouseenter() {
  const $popover = $(this);

  const showedPopover = togglePopover.call($popover, true);
  if (showedPopover) {
    $('.popover').on('mouseleave', mouseleave.bind($popover));
  }
}

export function debouncedMouseleave(debounceTimeout = 300) {
  return _.debounce(mouseleave, debounceTimeout);
}