PageSourceSearch

https://portal.ifrj.edu.br/sites/all/themes/bootstrap/js/bootstrap.js?soylkp

js ifrj.edu.br collected 2026-09-24 09:59:12 UTC 5,571 bytes, 166 lines download raw bytes

1/**
2 * @file
3 * bootstrap.js
4 *
5 * Provides general enhancements and fixes to Bootstrap's JS files.
6 */
7
8var Drupal = Drupal || {};
9
10(function($, Drupal){
11  "use strict";
12
13  Drupal.behaviors.bootstrap = {
14    attach: function(context) {
15      // Provide some Bootstrap tab/Drupal integration.
16      $(context).find('.tabbable').once('bootstrap-tabs', function () {
17        var $wrapper = $(this);
18        var $tabs = $wrapper.find('.nav-tabs');
19        var $content = $wrapper.find('.tab-content');
20        var borderRadius = parseInt($content.css('borderBottomRightRadius'), 10);
21        var bootstrapTabResize = function() {
22          if ($wrapper.hasClass('tabs-left') || $wrapper.hasClass('tabs-right')) {
23            $content.css('min-height', $tabs.outerHeight());
24          }
25        };
26        // Add min-height on content for left and right tabs.
27        bootstrapTabResize();
28        // Detect tab switch.
29        if ($wrapper.hasClass('tabs-left') || $wrapper.hasClass('tabs-right')) {
30          $tabs.on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) {
31            bootstrapTabResize();
32            if ($wrapper.hasClass('tabs-left')) {
33              if ($(e.target).parent().is(':first-child')) {
34                $content.css('borderTopLeftRadius', '0');
35              }
36              else {
37                $content.css('borderTopLeftRadius', borderRadius + 'px');
38              }
39            }
40            else {
41              if ($(e.target).parent().is(':first-child')) {
42                $content.css('borderTopRightRadius', '0');
43              }
44              else {
45                $content.css('borderTopRightRadius', borderRadius + 'px');
46              }
47            }
48          });
49        }
50      });
51    }
52  };
53
54  /**
55   * Bootstrap Popovers.
56   */
57  Drupal.behaviors.bootstrapPopovers = {
58    attach: function (context, settings) {
59      if (settings.bootstrap && settings.bootstrap.popoverEnabled) {
60        var elements = $(context).find('[data-toggle="popover"]').toArray();
61        for (var i = 0; i < elements.length; i++) {
62          var $element = $(elements[i]);
63          var options = $.extend(true, {}, settings.bootstrap.popoverOptions, $element.data());
64          $element.popover(options);
65        }
66      }
67    }
68  };
69
70  /**
71   * Bootstrap Tooltips.
72   */
73  Drupal.behaviors.bootstrapTooltips = {
74    attach: function (context, settings) {
75      if (settings.bootstrap && settings.bootstrap.tooltipEnabled) {
76        var elements = $(context).find('[data-toggle="tooltip"]').toArray();
77        for (var i = 0; i < elements.length; i++) {
78          var $element = $(elements[i]);
79          var options = $.extend(true, {}, settings.bootstrap.tooltipOptions, $element.data());
80          $element.tooltip(options);
81        }
82      }
83    }
84  };
85
86  /**
87   * Anchor fixes.
88   */
89  var $scrollableElement = $();
90  Drupal.behaviors.bootstrapAnchors = {
91    attach: function(context, settings) {
92      var i, elements = ['html', 'body'];
93      if (!$scrollableElement.length) {
94        for (i = 0; i < elements.length; i++) {
95          var $element = $(elements[i]);
96          if ($element.scrollTop() > 0) {
97            $scrollableElement = $element;
98            break;
99          }
100          else {
101            $element.scrollTop(1);
102            if ($element.scrollTop() > 0) {
103              $element.scrollTop(0);
104              $scrollableElement = $element;
105              break;
106            }
107          }
108        }
109      }
110      if (!settings.bootstrap || !settings.bootstrap.anchorsFix) {
111        return;
112      }
113      var anchors = $(context).find('a').toArray();
114      for (i = 0; i < anchors.length; i++) {
115        if (!anchors[i].scrollTo) {
116          this.bootstrapAnchor(anchors[i]);
117        }
118      }
119      $scrollableElement.once('bootstrap-anchors', function () {
120        $scrollableElement.on('click.bootstrap-anchors', 'a[href*="#"]:not([data-toggle],[data-target])', function(e) {
121          this.scrollTo(e);
122        });
123      });
124    },
125    bootstrapAnchor: function (element) {
126      element.validAnchor = element.nodeName === 'A' && (location.hostname === element.hostname || !element.hostname) && element.hash.replace(/#/,'').length;
127      element.scrollTo = function(event) {
128        var attr = 'id';
129        var $target = $(element.hash);
130        if (!$target.length) {
131          attr = 'name';
132          $target = $('[name="' + element.hash.replace('#', '') + '"');
133        }
134        var offset = $target.offset().top - parseInt($scrollableElement.css('paddingTop'), 10) - parseInt($scrollableElement.css('marginTop'), 10);
135        if (this.validAnchor && $target.length && offset > 0) {
136          if (event) {
137            event.preventDefault();
138          }
139          var $fakeAnchor = $('<div/>')
140            .addClass('element-invisible')
141            .attr(attr, $target.attr(attr))
142            .css({
143              position: 'absolute',
144              top: offset + 'px',
145              zIndex: -1000
146            })
147            .appendTo(document);
148          $target.removeAttr(attr);
149          var complete = function () {
150            location.hash = element.hash;
151            $fakeAnchor.remove();
152            $target.attr(attr, element.hash.replace('#', ''));
153          };
154          if (Drupal.settings.bootstrap.anchorsSmoothScrolling) {
155            $scrollableElement.animate({ scrollTop: offset, avoidTransforms: true }, 400, complete);
156          }
157          else {
158            $scrollableElement.scrollTop(offset);
159            complete();
160          }
161        }
162      };
163    }
164  };
165
166})(jQuery, Drupal);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.