gitlab-org--gitlab-foss/app/assets/javascripts/shared/popover.js

34 lines
849 B
JavaScript
Raw Normal View History

2018-03-23 19:13:54 +00:00
import $ from 'jquery';
2018-03-26 17:46:42 +00:00
import { debounce } from 'underscore';
2018-03-23 19:13:54 +00:00
2018-03-26 17:46:42 +00:00
export function togglePopover(show) {
const isAlreadyShown = this.hasClass('js-popover-show');
if ((show && isAlreadyShown) || (!show && !isAlreadyShown)) {
return false;
2018-03-21 18:23:33 +00:00
}
2018-03-26 17:46:42 +00:00
this.popover(show ? 'show' : 'hide');
this.toggleClass('disable-animation js-popover-show', show);
2018-03-21 18:23:33 +00:00
2018-03-26 17:46:42 +00:00
return true;
}
2018-03-21 18:23:33 +00:00
2018-03-26 17:46:42 +00:00
export function mouseleave() {
if (!$('.popover:hover').length > 0) {
const $popover = $(this);
togglePopover.call($popover, false);
2018-03-21 18:23:33 +00:00
}
2018-03-26 17:46:42 +00:00
}
2018-03-21 18:23:33 +00:00
2018-03-26 17:46:42 +00:00
export function mouseenter() {
const $popover = $(this);
2018-03-21 18:23:33 +00:00
2018-03-26 17:46:42 +00:00
const showedPopover = togglePopover.call($popover, true);
if (showedPopover) {
$('.popover')
.on('mouseleave', mouseleave.bind($popover));
2018-03-21 18:23:33 +00:00
}
}
2018-03-26 17:46:42 +00:00
export function debouncedMouseleave(debounceTimeout = 300) {
return debounce(mouseleave, debounceTimeout);
}