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

34 lines
839 B
JavaScript
Raw Normal View History

2018-03-23 19:13:54 +00:00
import $ from 'jquery';
import { debounce } from 'lodash';
2018-03-23 19:13:54 +00:00
2018-03-26 17:46:42 +00:00
export function togglePopover(show) {
2018-04-15 15:35:32 +00:00
const isAlreadyShown = this.hasClass('js-popover-show');
2018-03-26 17:46:42 +00:00
if ((show && isAlreadyShown) || (!show && !isAlreadyShown)) {
return false;
2018-03-21 18:23:33 +00:00
}
2018-04-15 15:35:32 +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) {
2018-03-27 17:17:36 +00:00
$('.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);
2018-03-27 15:15:18 +00:00
}