Blame view

app/bower_components/bootstrap/js/collapse.js 5.85 KB
f986e111b   TRUONG   add libs
1
  /* ========================================================================
87c93a029   Dang YoungWorld   add modal
2
   * Bootstrap: collapse.js v3.3.7
f986e111b   TRUONG   add libs
3
4
   * http://getbootstrap.com/javascript/#collapse
   * ========================================================================
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
  /* jshint latedef: false */
f986e111b   TRUONG   add libs
9

87c93a029   Dang YoungWorld   add modal
10
11
  +function ($) {
    'use strict';
f986e111b   TRUONG   add libs
12
13
14
15
16
17
18
  
    // COLLAPSE PUBLIC CLASS DEFINITION
    // ================================
  
    var Collapse = function (element, options) {
      this.$element      = $(element)
      this.options       = $.extend({}, Collapse.DEFAULTS, options)
87c93a029   Dang YoungWorld   add modal
19
20
      this.$trigger      = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
                             '[data-toggle="collapse"][data-target="#' + element.id + '"]')
f986e111b   TRUONG   add libs
21
      this.transitioning = null
87c93a029   Dang YoungWorld   add modal
22
23
24
25
26
      if (this.options.parent) {
        this.$parent = this.getParent()
      } else {
        this.addAriaAndCollapsedClass(this.$element, this.$trigger)
      }
f986e111b   TRUONG   add libs
27
28
      if (this.options.toggle) this.toggle()
    }
87c93a029   Dang YoungWorld   add modal
29
30
31
    Collapse.VERSION  = '3.3.7'
  
    Collapse.TRANSITION_DURATION = 350
f986e111b   TRUONG   add libs
32
33
34
35
36
37
38
39
40
41
42
    Collapse.DEFAULTS = {
      toggle: true
    }
  
    Collapse.prototype.dimension = function () {
      var hasWidth = this.$element.hasClass('width')
      return hasWidth ? 'width' : 'height'
    }
  
    Collapse.prototype.show = function () {
      if (this.transitioning || this.$element.hasClass('in')) return
87c93a029   Dang YoungWorld   add modal
43
44
45
46
47
48
49
      var activesData
      var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
  
      if (actives && actives.length) {
        activesData = actives.data('bs.collapse')
        if (activesData && activesData.transitioning) return
      }
f986e111b   TRUONG   add libs
50
51
52
      var startEvent = $.Event('show.bs.collapse')
      this.$element.trigger(startEvent)
      if (startEvent.isDefaultPrevented()) return
f986e111b   TRUONG   add libs
53
      if (actives && actives.length) {
87c93a029   Dang YoungWorld   add modal
54
55
        Plugin.call(actives, 'hide')
        activesData || actives.data('bs.collapse', null)
f986e111b   TRUONG   add libs
56
57
58
59
60
61
      }
  
      var dimension = this.dimension()
  
      this.$element
        .removeClass('collapse')
87c93a029   Dang YoungWorld   add modal
62
63
64
65
66
67
        .addClass('collapsing')[dimension](0)
        .attr('aria-expanded', true)
  
      this.$trigger
        .removeClass('collapsed')
        .attr('aria-expanded', true)
f986e111b   TRUONG   add libs
68
69
70
71
72
73
  
      this.transitioning = 1
  
      var complete = function () {
        this.$element
          .removeClass('collapsing')
87c93a029   Dang YoungWorld   add modal
74
          .addClass('collapse in')[dimension]('')
f986e111b   TRUONG   add libs
75
        this.transitioning = 0
87c93a029   Dang YoungWorld   add modal
76
77
        this.$element
          .trigger('shown.bs.collapse')
f986e111b   TRUONG   add libs
78
79
80
81
82
83
84
      }
  
      if (!$.support.transition) return complete.call(this)
  
      var scrollSize = $.camelCase(['scroll', dimension].join('-'))
  
      this.$element
87c93a029   Dang YoungWorld   add modal
85
86
        .one('bsTransitionEnd', $.proxy(complete, this))
        .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
f986e111b   TRUONG   add libs
87
88
89
90
91
92
93
94
95
96
    }
  
    Collapse.prototype.hide = function () {
      if (this.transitioning || !this.$element.hasClass('in')) return
  
      var startEvent = $.Event('hide.bs.collapse')
      this.$element.trigger(startEvent)
      if (startEvent.isDefaultPrevented()) return
  
      var dimension = this.dimension()
87c93a029   Dang YoungWorld   add modal
97
      this.$element[dimension](this.$element[dimension]())[0].offsetHeight
f986e111b   TRUONG   add libs
98
99
100
  
      this.$element
        .addClass('collapsing')
87c93a029   Dang YoungWorld   add modal
101
102
103
104
105
106
        .removeClass('collapse in')
        .attr('aria-expanded', false)
  
      this.$trigger
        .addClass('collapsed')
        .attr('aria-expanded', false)
f986e111b   TRUONG   add libs
107
108
109
110
111
112
  
      this.transitioning = 1
  
      var complete = function () {
        this.transitioning = 0
        this.$element
f986e111b   TRUONG   add libs
113
114
          .removeClass('collapsing')
          .addClass('collapse')
87c93a029   Dang YoungWorld   add modal
115
          .trigger('hidden.bs.collapse')
f986e111b   TRUONG   add libs
116
117
118
119
120
121
      }
  
      if (!$.support.transition) return complete.call(this)
  
      this.$element
        [dimension](0)
87c93a029   Dang YoungWorld   add modal
122
123
        .one('bsTransitionEnd', $.proxy(complete, this))
        .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
f986e111b   TRUONG   add libs
124
125
126
127
128
    }
  
    Collapse.prototype.toggle = function () {
      this[this.$element.hasClass('in') ? 'hide' : 'show']()
    }
87c93a029   Dang YoungWorld   add modal
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
    Collapse.prototype.getParent = function () {
      return $(this.options.parent)
        .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
        .each($.proxy(function (i, element) {
          var $element = $(element)
          this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
        }, this))
        .end()
    }
  
    Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
      var isOpen = $element.hasClass('in')
  
      $element.attr('aria-expanded', isOpen)
      $trigger
        .toggleClass('collapsed', !isOpen)
        .attr('aria-expanded', isOpen)
    }
  
    function getTargetFromTrigger($trigger) {
      var href
      var target = $trigger.attr('data-target')
        || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
  
      return $(target)
    }
f986e111b   TRUONG   add libs
155
156
157
  
    // COLLAPSE PLUGIN DEFINITION
    // ==========================
87c93a029   Dang YoungWorld   add modal
158
    function Plugin(option) {
f986e111b   TRUONG   add libs
159
160
161
162
      return this.each(function () {
        var $this   = $(this)
        var data    = $this.data('bs.collapse')
        var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
87c93a029   Dang YoungWorld   add modal
163
        if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
f986e111b   TRUONG   add libs
164
165
166
167
        if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
        if (typeof option == 'string') data[option]()
      })
    }
87c93a029   Dang YoungWorld   add modal
168
169
170
    var old = $.fn.collapse
  
    $.fn.collapse             = Plugin
f986e111b   TRUONG   add libs
171
172
173
174
175
176
177
178
179
180
181
182
183
184
    $.fn.collapse.Constructor = Collapse
  
  
    // COLLAPSE NO CONFLICT
    // ====================
  
    $.fn.collapse.noConflict = function () {
      $.fn.collapse = old
      return this
    }
  
  
    // COLLAPSE DATA-API
    // =================
87c93a029   Dang YoungWorld   add modal
185
186
187
188
189
190
    $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
      var $this   = $(this)
  
      if (!$this.attr('data-target')) e.preventDefault()
  
      var $target = getTargetFromTrigger($this)
f986e111b   TRUONG   add libs
191
192
      var data    = $target.data('bs.collapse')
      var option  = data ? 'toggle' : $this.data()
f986e111b   TRUONG   add libs
193

87c93a029   Dang YoungWorld   add modal
194
      Plugin.call($target, option)
f986e111b   TRUONG   add libs
195
196
197
    })
  
  }(jQuery);