Code coverage report for app/utils/bootstrap_reopen.js

Statements: 19.05% (8 / 42)      Branches: 0% (0 / 30)      Functions: 14.29% (1 / 7)      Lines: 21.05% (8 / 38)      Ignored: none     

All files » app/utils/ » bootstrap_reopen.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89    1                                                     1                                   1                           1                                         1 1 1     1  
'use strict';
 
;require.register("utils/bootstrap_reopen", function (exports, require, module) {
  /**
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
 
  /**
   * This file contains patched methods for twitter bootstrap.js
   */
 
  /**
   * Fixes error when <code>destroy</code> method called more than one time.
   * For more info check https://github.com/twbs/bootstrap/issues/20511
   */
  $.fn.tooltip.Constructor.prototype.destroy = function () {
    var that = this;
    clearTimeout(this.timeout);
    this.hide(function () {
      if (that.$element !== null) {
        that.$element.off('.' + that.type).removeData('bs.' + that.type);
      }
      if (that.$tip) {
        that.$tip.detach();
      }
      that.$tip = null;
      that.$arrow = null;
      that.$viewport = null;
      that.$element = null;
    });
  };
 
  // function required for clearMenus
  var getParent = function getParent($this) {
    var selector = $this.attr('data-target');
 
    if (!selector) {
      selector = $this.attr('href');
      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, ''); // strip for ie7;
    }
 
    var $parent = selector && $(selector);
 
    return $parent && $parent.length ? $parent : $this.parent();
  };
 
  // new exclusion added, clicking on elements with class checkbox-label should be ignored to close dropdown
  var clearMenus = function clearMenus(e) {
    if (e && e.which === 3) return;
    $('.dropdown-backdrop').remove();
    $('[data-toggle="dropdown"]').each(function () {
      var $this = $(this);
      var $parent = getParent($this);
      var relatedTarget = { relatedTarget: this };
 
      if (!$parent.hasClass('open')) return;
 
      if (e && e.type == 'click' && (/input|textarea/i.test(e.target.tagName) || e.target.className.contains('checkbox-label')) && $.contains($parent[0], e.target)) return;
 
      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget));
 
      if (e.isDefaultPrevented()) return;
 
      $this.attr('aria-expanded', 'false');
      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget));
    });
  };
 
  $(document).off('click.bs.dropdown.data-api');
  $(document).on('click.bs.dropdown.data-api', clearMenus);
  $(document).on('click.bs.dropdown.data-api', '.dropdown form', function (e) {
    e.stopPropagation();
  });
  $(document).on('click.bs.dropdown.data-api', '[data-toggle="dropdown"]', $.fn.dropdown.Constructor.prototype.toggle);
});