60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
/**
|
|
* @file
|
|
* Bootstrap Tooltips.
|
|
*/
|
|
|
|
var Drupal = Drupal || {};
|
|
|
|
(function ($, Drupal, Bootstrap) {
|
|
"use strict";
|
|
|
|
/**
|
|
* Extend the Bootstrap Tooltip plugin constructor class.
|
|
*/
|
|
Bootstrap.extendPlugin('tooltip', function (settings) {
|
|
return {
|
|
DEFAULTS: {
|
|
animation: !!settings.tooltip_animation,
|
|
enabled: settings.tooltip_enabled,
|
|
html: !!settings.tooltip_html,
|
|
placement: settings.tooltip_placement,
|
|
selector: settings.tooltip_selector,
|
|
trigger: settings.tooltip_trigger,
|
|
delay: parseInt(settings.tooltip_delay, 10),
|
|
container: settings.tooltip_container
|
|
}
|
|
};
|
|
});
|
|
|
|
/**
|
|
* Bootstrap Tooltips.
|
|
*
|
|
* @todo This should really be properly delegated if selector option is set.
|
|
*/
|
|
Drupal.behaviors.bootstrapTooltips = {
|
|
attach: function (context) {
|
|
// Immediately return if tooltips are not available.
|
|
if (!$.fn.tooltip || !$.fn.tooltip.Constructor.DEFAULTS.enabled) {
|
|
return;
|
|
}
|
|
|
|
var elements = $(context).find('[data-toggle="tooltip"]').toArray();
|
|
for (var i = 0; i < elements.length; i++) {
|
|
var $element = $(elements[i]);
|
|
var options = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, $element.data());
|
|
$element.tooltip(options);
|
|
}
|
|
},
|
|
detach: function (context) {
|
|
// Immediately return if tooltips are not available.
|
|
if (!$.fn.tooltip || !$.fn.tooltip.Constructor.DEFAULTS.enabled) {
|
|
return;
|
|
}
|
|
|
|
// Destroy all tooltips.
|
|
$(context).find('[data-toggle="tooltip"]').tooltip('destroy');
|
|
}
|
|
};
|
|
|
|
})(window.jQuery, window.Drupal, window.Drupal.bootstrap);
|