Commit | Line | Data |
---|---|---|
1e7a45c4 VSB |
1 | /** |
2 | * @file | |
3 | * Bootstrap Tooltips. | |
4 | */ | |
5 | ||
6 | var Drupal = Drupal || {}; | |
7 | ||
8 | (function ($, Drupal, Bootstrap) { | |
9 | "use strict"; | |
10 | ||
11 | /** | |
12 | * Extend the Bootstrap Tooltip plugin constructor class. | |
13 | */ | |
14 | Bootstrap.extendPlugin('tooltip', function (settings) { | |
15 | return { | |
16 | DEFAULTS: { | |
17 | animation: !!settings.tooltip_animation, | |
18 | enabled: settings.tooltip_enabled, | |
19 | html: !!settings.tooltip_html, | |
20 | placement: settings.tooltip_placement, | |
21 | selector: settings.tooltip_selector, | |
22 | trigger: settings.tooltip_trigger, | |
23 | delay: parseInt(settings.tooltip_delay, 10), | |
24 | container: settings.tooltip_container | |
25 | } | |
26 | }; | |
27 | }); | |
28 | ||
29 | /** | |
30 | * Bootstrap Tooltips. | |
31 | * | |
32 | * @todo This should really be properly delegated if selector option is set. | |
33 | */ | |
34 | Drupal.behaviors.bootstrapTooltips = { | |
35 | attach: function (context) { | |
36 | // Immediately return if tooltips are not available. | |
37 | if (!$.fn.tooltip || !$.fn.tooltip.Constructor.DEFAULTS.enabled) { | |
38 | return; | |
39 | } | |
40 | ||
41 | var elements = $(context).find('[data-toggle="tooltip"]').toArray(); | |
42 | for (var i = 0; i < elements.length; i++) { | |
43 | var $element = $(elements[i]); | |
44 | var options = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, $element.data()); | |
45 | $element.tooltip(options); | |
46 | } | |
47 | }, | |
48 | detach: function (context) { | |
49 | // Immediately return if tooltips are not available. | |
50 | if (!$.fn.tooltip || !$.fn.tooltip.Constructor.DEFAULTS.enabled) { | |
51 | return; | |
52 | } | |
53 | ||
54 | // Destroy all tooltips. | |
55 | $(context).find('[data-toggle="tooltip"]').tooltip('destroy'); | |
56 | } | |
57 | }; | |
58 | ||
59 | })(window.jQuery, window.Drupal, window.Drupal.bootstrap); |