Blame view

app/bower_components/bootstrap/js/dropdown.js 4.63 KB
f986e111b   TRUONG   add libs
1
  /* ========================================================================
87c93a029   Dang YoungWorld   add modal
2
   * Bootstrap: dropdown.js v3.3.7
f986e111b   TRUONG   add libs
3
4
   * http://getbootstrap.com/javascript/#dropdowns
   * ========================================================================
87c93a029   Dang YoungWorld   add modal
5
6
   * Copyright 2011-2016 Twitter, Inc.
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
f986e111b   TRUONG   add libs
7
   * ======================================================================== */
87c93a029   Dang YoungWorld   add modal
8
9
  +function ($) {
    'use strict';
f986e111b   TRUONG   add libs
10
11
12
13
14
  
    // DROPDOWN CLASS DEFINITION
    // =========================
  
    var backdrop = '.dropdown-backdrop'
87c93a029   Dang YoungWorld   add modal
15
    var toggle   = '[data-toggle="dropdown"]'
f986e111b   TRUONG   add libs
16
17
18
    var Dropdown = function (element) {
      $(element).on('click.bs.dropdown', this.toggle)
    }
87c93a029   Dang YoungWorld   add modal
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
    Dropdown.VERSION = '3.3.7'
  
    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()
    }
  
    function clearMenus(e) {
      if (e && e.which === 3) return
      $(backdrop).remove()
      $(toggle).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) && $.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))
      })
    }
f986e111b   TRUONG   add libs
54
55
56
57
58
59
60
61
62
63
64
65
66
    Dropdown.prototype.toggle = function (e) {
      var $this = $(this)
  
      if ($this.is('.disabled, :disabled')) return
  
      var $parent  = getParent($this)
      var isActive = $parent.hasClass('open')
  
      clearMenus()
  
      if (!isActive) {
        if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
          // if mobile we use a backdrop because click events don't delegate
87c93a029   Dang YoungWorld   add modal
67
68
69
70
          $(document.createElement('div'))
            .addClass('dropdown-backdrop')
            .insertAfter($(this))
            .on('click', clearMenus)
f986e111b   TRUONG   add libs
71
        }
87c93a029   Dang YoungWorld   add modal
72
73
        var relatedTarget = { relatedTarget: this }
        $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
f986e111b   TRUONG   add libs
74
75
  
        if (e.isDefaultPrevented()) return
87c93a029   Dang YoungWorld   add modal
76
77
78
        $this
          .trigger('focus')
          .attr('aria-expanded', 'true')
f986e111b   TRUONG   add libs
79
80
        $parent
          .toggleClass('open')
87c93a029   Dang YoungWorld   add modal
81
          .trigger($.Event('shown.bs.dropdown', relatedTarget))
f986e111b   TRUONG   add libs
82
83
84
85
86
87
      }
  
      return false
    }
  
    Dropdown.prototype.keydown = function (e) {
87c93a029   Dang YoungWorld   add modal
88
      if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
f986e111b   TRUONG   add libs
89
90
91
92
93
94
95
96
97
98
  
      var $this = $(this)
  
      e.preventDefault()
      e.stopPropagation()
  
      if ($this.is('.disabled, :disabled')) return
  
      var $parent  = getParent($this)
      var isActive = $parent.hasClass('open')
87c93a029   Dang YoungWorld   add modal
99
100
101
      if (!isActive && e.which != 27 || isActive && e.which == 27) {
        if (e.which == 27) $parent.find(toggle).trigger('focus')
        return $this.trigger('click')
f986e111b   TRUONG   add libs
102
      }
87c93a029   Dang YoungWorld   add modal
103
104
      var desc = ' li:not(.disabled):visible a'
      var $items = $parent.find('.dropdown-menu' + desc)
f986e111b   TRUONG   add libs
105
106
  
      if (!$items.length) return
87c93a029   Dang YoungWorld   add modal
107
      var index = $items.index(e.target)
f986e111b   TRUONG   add libs
108

87c93a029   Dang YoungWorld   add modal
109
110
111
      if (e.which == 38 && index > 0)                 index--         // up
      if (e.which == 40 && index < $items.length - 1) index++         // down
      if (!~index)                                    index = 0
f986e111b   TRUONG   add libs
112

87c93a029   Dang YoungWorld   add modal
113
      $items.eq(index).trigger('focus')
f986e111b   TRUONG   add libs
114
115
116
117
118
    }
  
  
    // DROPDOWN PLUGIN DEFINITION
    // ==========================
87c93a029   Dang YoungWorld   add modal
119
    function Plugin(option) {
f986e111b   TRUONG   add libs
120
121
122
123
124
125
126
127
      return this.each(function () {
        var $this = $(this)
        var data  = $this.data('bs.dropdown')
  
        if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
        if (typeof option == 'string') data[option].call($this)
      })
    }
87c93a029   Dang YoungWorld   add modal
128
129
130
    var old = $.fn.dropdown
  
    $.fn.dropdown             = Plugin
f986e111b   TRUONG   add libs
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
    $.fn.dropdown.Constructor = Dropdown
  
  
    // DROPDOWN NO CONFLICT
    // ====================
  
    $.fn.dropdown.noConflict = function () {
      $.fn.dropdown = old
      return this
    }
  
  
    // APPLY TO STANDARD DROPDOWN ELEMENTS
    // ===================================
  
    $(document)
      .on('click.bs.dropdown.data-api', clearMenus)
      .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
87c93a029   Dang YoungWorld   add modal
149
150
151
      .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
      .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
      .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
f986e111b   TRUONG   add libs
152
153
  
  }(jQuery);