90 lines
2.2 KiB
JavaScript
90 lines
2.2 KiB
JavaScript
var WPMLCore = WPMLCore || {};
|
|
|
|
WPMLCore.Tooltip = function (element) {
|
|
this.trigger = element;
|
|
this.content = this.trigger.html(this.trigger.html()).text();
|
|
this.edge = 'bottom';
|
|
this.align = 'left';
|
|
this.margin_left = '-54px';
|
|
|
|
if (!this.content) {
|
|
this.content = this.decodeEntities(this.trigger.data('content'));
|
|
}
|
|
|
|
if (this.trigger.data('edge')) {
|
|
this.edge = this.trigger.data('edge');
|
|
}
|
|
|
|
if (this.trigger.data('align')) {
|
|
this.align = this.trigger.data('align');
|
|
}
|
|
|
|
if (this.trigger.data('margin_left')) {
|
|
this.margin_left = this.trigger.data('margin_left');
|
|
}
|
|
|
|
this.trigger.empty();
|
|
this.trigger.click(jQuery.proxy(this.onTriggerClick, this));
|
|
};
|
|
|
|
WPMLCore.Tooltip.prototype = {
|
|
open: function () {
|
|
if (this.trigger.length && this.content) {
|
|
this.trigger.addClass('js-wpml-active-tooltip');
|
|
this.trigger.pointer({
|
|
pointerClass: 'js-wpml-tooltip',
|
|
content: this.content,
|
|
position: {
|
|
edge: this.edge,
|
|
align: this.align
|
|
},
|
|
show: jQuery.proxy(this.onShow, this),
|
|
close: this.onClose,
|
|
buttons: this.buttons
|
|
|
|
}).pointer('open');
|
|
}
|
|
},
|
|
onShow: function (event, t) {
|
|
t.pointer.css('marginLeft', this.margin_left);
|
|
},
|
|
onClose: function (event, t) {
|
|
t.pointer.css('marginLeft', '0');
|
|
},
|
|
onTriggerClick: function (e) {
|
|
e.preventDefault();
|
|
this.open();
|
|
},
|
|
buttons: function (event, t) {
|
|
var button = jQuery('<a class="close" href="#"> </a>');
|
|
|
|
return button.on('click.pointer', function (e) {
|
|
e.preventDefault();
|
|
t.element.pointer('close');
|
|
});
|
|
},
|
|
decodeEntities: function (encodedString) {
|
|
var textArea = document.createElement('textarea');
|
|
textArea.innerHTML = encodedString;
|
|
return textArea.value;
|
|
}
|
|
};
|
|
|
|
WPMLCore.initializeTooltips = function() {
|
|
"use strict";
|
|
|
|
var tooltips = jQuery('.js-wpml-tooltip-open'), tooltip = {};
|
|
|
|
tooltips.each(function (index, element) {
|
|
tooltip = new WPMLCore.Tooltip(jQuery(element));
|
|
});
|
|
|
|
};
|
|
|
|
(function () {
|
|
'use strict';
|
|
|
|
jQuery(function () {
|
|
WPMLCore.initializeTooltips();
|
|
});
|
|
}()); |