fix position .visually-hidden with :focus
[ryf-theme.git] / js / tooltip.js
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);