You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import $ from 'jquery';
|
|
|
|
import { AutoloadPage } from 'vj/misc/Page';
|
|
|
|
import Tooltip from './Tooltip';
|
|
|
|
|
|
|
|
function getClosestTooltipElement(element) {
|
|
|
|
const MAX_DEPTH = 3;
|
|
|
|
for (let i = 0, e = element; i < MAX_DEPTH && e !== null && e !== document; e = e.parentNode, i++) {
|
|
|
|
if (e.getAttribute('data-tooltip')) {
|
|
|
|
return e;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
const tooltipPage = new AutoloadPage('tooltipPage', () => {
|
|
|
|
$(document).on('mouseover', (e) => {
|
|
|
|
const element = getClosestTooltipElement(e.target);
|
|
|
|
if (!element) return;
|
|
|
|
const $element = $(element);
|
|
|
|
const options = {};
|
|
|
|
if ($element.attr('data-tooltip-pos')) {
|
|
|
|
options.position = $element.attr('data-tooltip-pos');
|
|
|
|
}
|
|
|
|
const tooltip = Tooltip.getOrConstruct($element, options);
|
|
|
|
tooltip.open();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
export default tooltipPage;
|