flashgrid 3.2.1 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3b5bb59cfc4399618e852ba8c74e560c7ad2ea32
4
- data.tar.gz: cd389cd460ed316e0fa55b0d2d8ecc998d442776
3
+ metadata.gz: 30927f439da1c0f4a5972e27e9260fc9d2a76f6c
4
+ data.tar.gz: f7c6d592f41e1c436fa89c2345708a0aa1761e9a
5
5
  SHA512:
6
- metadata.gz: 16749ef4478940b5545a4a948822b0e7a5b8df1235dc575b3cd3bbd1beaaa634d2fe0de5f1647fdfc971cfe1d853a2c900238885a00c1566bbc21a06441d7bcf
7
- data.tar.gz: aab9c0bbf80bf9aa97a66bd6dff3dc02d2e2ed252635615762af77f8259fb9a928da153f3eb44f2da1ef85b844eef157bf9b06f1c56ecd72dfbc0afe27e7ef6d
6
+ metadata.gz: bfb98838ed6930a4272e823ebaa71dede8ebf9640ab82b333373378bc096ae3bf0c921eaf7a96305e2eebb88860cf50d9f05432ddc5c3bdff07e399e738d5065
7
+ data.tar.gz: 19e4e88dd1f1286b59130fdb59955d94097a894e676ed12dece5656ca9252bb7c6112c1b3cfca49e3700e3dd6caf989d4f0bb683641ba934c19e6c1c069dede8
data/README.md CHANGED
@@ -55,7 +55,7 @@ Add the CSS files you want to include:
55
55
  *= require progress.css
56
56
  *= require reset.css (place before any files)
57
57
  *= require spinner.css
58
- *= require switch.css
58
+ *= require swoggle.css
59
59
  *= require table.css
60
60
  *= require timepicker.css
61
61
  *= require tooltip.css
@@ -81,7 +81,7 @@ Add the JS files you want to include:
81
81
  //= require modal.js
82
82
  //= require popover.js (place after tooltip)
83
83
  //= require scrollspy.js
84
- //= require switch.js
84
+ //= require swoggle.js
85
85
  //= require tab.js
86
86
  //= require tablespy.js
87
87
  //= require time_picker.js
@@ -1,3 +1,3 @@
1
1
  module Flashgrid
2
- VERSION = "3.2.1"
2
+ VERSION = "3.3.0"
3
3
  end
@@ -19,7 +19,7 @@
19
19
  this.checkPosition()
20
20
  }
21
21
 
22
- Affix.VERSION = '3.2.0'
22
+ Affix.VERSION = '3.3.0'
23
23
 
24
24
  Affix.RESET = 'affix affix-top affix-bottom'
25
25
 
@@ -9,7 +9,7 @@
9
9
  $(el).on('click', dismiss, this.close)
10
10
  }
11
11
 
12
- Alert.VERSION = '3.2.0'
12
+ Alert.VERSION = '3.3.0'
13
13
 
14
14
  Alert.TRANSITION_DURATION = 150
15
15
 
@@ -1,82 +1,42 @@
1
1
  (function ($, window, document, undefined) {
2
-
3
- // Function-level strict mode syntax
4
2
  'use strict';
5
3
 
6
- $.fn.animateCSS = function (effect, delay, callback) {
7
-
8
- // Return this to maintain chainability
9
- return this.each(function () {
10
-
11
- // Cache $(this) for speed and compression
12
- var $this = $(this),
13
- transitionEnd = "webkitAnimationEnd oanimationend msAnimationEnd animationend",
14
- animated = "animated",
15
- visibility = "visibility",
16
- visible = "visible",
17
- hidden = "hidden";
18
-
19
- // Create a function we can call later
20
- function run() {
21
-
22
- // Add the animation effect with classes
23
- $this.addClass( animated + " " + effect);
24
-
25
- // Check if the elemenr has been hidden to start with
26
- if ($this.css( visibility ) === hidden) {
27
-
28
- // If it has, show it (after the class has been added)
29
- $this.css( visibility, visible);
30
-
31
- }
32
-
33
- // If the element is hidden
34
- if ($this.is(":" + hidden)) {
35
-
36
- // Show it
37
- $this.show();
38
-
39
- }
40
-
41
- // Event triggered when the animation has finished
42
- $this.bind( transitionEnd, function () {
43
-
44
- // Remove the classes so they can be added again later
45
- $this.removeClass(animated + " " + effect);
46
-
47
- // Add a callback event
48
- if (typeof callback === "function") {
49
-
50
- // Execute the callback
51
- callback.call(this);
52
-
53
- // Unbind the event handlers
54
- $this.unbind( transitionEnd );
55
-
56
- }
57
-
58
- });
59
-
60
- }
61
-
62
- // Check if delay exists or if it"s a callback
63
- if (!delay || typeof delay === "function") {
64
-
65
- // If it"s a callback, move it to callback so we can call it later
66
- callback = delay;
67
-
68
- // Run the animation (without delay)
69
- run();
70
-
71
- } else {
72
-
73
- // Start a counter so we can delay the animation if required
74
- setTimeout( run, delay );
75
-
76
- }
77
-
4
+ $.fn.animateCSS = function (effect, delay, callback) {
5
+ return this.each(function () {
6
+ var $this = $(this),
7
+ transitionEnd = "webkitAnimationEnd oanimationend msAnimationEnd animationend",
8
+ animated = "animated",
9
+ visibility = "visibility",
10
+ visible = "visible",
11
+ hidden = "hidden";
12
+
13
+ function run() {
14
+ $this.addClass( animated + " " + effect);
15
+
16
+ if ($this.css( visibility ) === hidden) {
17
+ $this.css( visibility, visible);
18
+ };
19
+
20
+ if ($this.is(":" + hidden)) {
21
+ $this.show();
22
+ };
23
+
24
+ $this.bind( transitionEnd, function () {
25
+ $this.removeClass(animated + " " + effect);
26
+
27
+ if (typeof callback === "function") {
28
+ callback.call(this);
29
+ $this.unbind( transitionEnd );
30
+ };
78
31
  });
79
-
80
- };
81
-
32
+ };
33
+
34
+ if (!delay || typeof delay === "function") {
35
+ callback = delay;
36
+ run();
37
+ } else {
38
+ setTimeout( run, delay );
39
+ };
40
+ });
41
+ };
82
42
  })(jQuery, window, document);
@@ -10,7 +10,7 @@
10
10
  this.isLoading = false
11
11
  }
12
12
 
13
- Button.VERSION = '3.2.0'
13
+ Button.VERSION = '3.3.0'
14
14
 
15
15
  Button.DEFAULTS = {
16
16
  loadingText: 'loading...'
@@ -26,10 +26,10 @@
26
26
 
27
27
  if (data.resetText == null) $el.data('resetText', $el[val]())
28
28
 
29
- $el[val](data[state] == null ? this.options[state] : data[state])
30
-
31
29
  // push to event loop to allow forms to submit
32
30
  setTimeout($.proxy(function () {
31
+ $el[val](data[state] == null ? this.options[state] : data[state])
32
+
33
33
  if (state == 'loadingText') {
34
34
  this.isLoading = true
35
35
  $el.addClass(d).attr(d, d)
@@ -51,6 +51,8 @@
51
51
  else $parent.find('.active').removeClass('active')
52
52
  }
53
53
  if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
54
+ } else {
55
+ this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
54
56
  }
55
57
 
56
58
  if (changed) this.$element.toggleClass('active')
@@ -99,7 +101,7 @@
99
101
  e.preventDefault()
100
102
  })
101
103
  .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
102
- $(e.target).closest('.btn').toggleClass('focus', e.type == 'focus')
104
+ $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
103
105
  })
104
106
 
105
107
  }(jQuery);
@@ -21,7 +21,7 @@
21
21
  .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
22
22
  }
23
23
 
24
- Carousel.VERSION = '3.2.0'
24
+ Carousel.VERSION = '3.3.0'
25
25
 
26
26
  Carousel.TRANSITION_DURATION = 600
27
27
 
@@ -33,6 +33,7 @@
33
33
  }
34
34
 
35
35
  Carousel.prototype.keydown = function (e) {
36
+ if (/input|textarea/i.test(e.target.tagName)) return
36
37
  switch (e.which) {
37
38
  case 37: this.prev(); break
38
39
  case 39: this.next(); break
@@ -198,7 +199,7 @@
198
199
  // CAROUSEL DATA-API
199
200
  // =================
200
201
 
201
- $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
202
+ var clickHandler = function (e) {
202
203
  var href
203
204
  var $this = $(this)
204
205
  var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
@@ -214,7 +215,11 @@
214
215
  }
215
216
 
216
217
  e.preventDefault()
217
- })
218
+ }
219
+
220
+ $(document)
221
+ .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
222
+ .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
218
223
 
219
224
  $(window).on('load', function () {
220
225
  $('[data-ride="carousel"]').each(function () {
@@ -7,18 +7,25 @@
7
7
  var Collapse = function (element, options) {
8
8
  this.$element = $(element)
9
9
  this.options = $.extend({}, Collapse.DEFAULTS, options)
10
+ this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]')
10
11
  this.transitioning = null
11
12
 
12
- if (this.options.parent) this.$parent = $(this.options.parent)
13
+ if (this.options.parent) {
14
+ this.$parent = this.getParent()
15
+ } else {
16
+ this.addAriaAndCollapsedClass(this.$element, this.$trigger)
17
+ }
18
+
13
19
  if (this.options.toggle) this.toggle()
14
20
  }
15
21
 
16
- Collapse.VERSION = '3.2.0'
22
+ Collapse.VERSION = '3.3.0'
17
23
 
18
24
  Collapse.TRANSITION_DURATION = 350
19
25
 
20
26
  Collapse.DEFAULTS = {
21
- toggle: true
27
+ toggle: true,
28
+ trigger: '[data-toggle="collapse"]'
22
29
  }
23
30
 
24
31
  Collapse.prototype.dimension = function () {
@@ -53,6 +60,10 @@
53
60
  .addClass('collapsing')[dimension](0)
54
61
  .attr('aria-expanded', true)
55
62
 
63
+ this.$trigger
64
+ .removeClass('collapsed')
65
+ .attr('aria-expanded', true)
66
+
56
67
  this.transitioning = 1
57
68
 
58
69
  var complete = function () {
@@ -89,6 +100,10 @@
89
100
  .removeClass('collapse in')
90
101
  .attr('aria-expanded', false)
91
102
 
103
+ this.$trigger
104
+ .addClass('collapsed')
105
+ .attr('aria-expanded', false)
106
+
92
107
  this.transitioning = 1
93
108
 
94
109
  var complete = function () {
@@ -111,6 +126,33 @@
111
126
  this[this.$element.hasClass('in') ? 'hide' : 'show']()
112
127
  }
113
128
 
129
+ Collapse.prototype.getParent = function () {
130
+ return $(this.options.parent)
131
+ .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
132
+ .each($.proxy(function (i, element) {
133
+ var $element = $(element)
134
+ this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
135
+ }, this))
136
+ .end()
137
+ }
138
+
139
+ Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
140
+ var isOpen = $element.hasClass('in')
141
+
142
+ $element.attr('aria-expanded', isOpen)
143
+ $trigger
144
+ .toggleClass('collapsed', !isOpen)
145
+ .attr('aria-expanded', isOpen)
146
+ }
147
+
148
+ function getTargetFromTrigger($trigger) {
149
+ var href
150
+ var target = $trigger.attr('data-target')
151
+ || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
152
+
153
+ return $(target)
154
+ }
155
+
114
156
 
115
157
  // COLLAPSE PLUGIN DEFINITION
116
158
  // ==========================
@@ -146,22 +188,13 @@
146
188
  // =================
147
189
 
148
190
  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
149
- var href
150
191
  var $this = $(this)
151
- var target = $this.attr('data-target')
152
- || e.preventDefault()
153
- || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
154
- var $target = $(target)
192
+
193
+ if (!$this.attr('data-target')) e.preventDefault()
194
+
195
+ var $target = getTargetFromTrigger($this)
155
196
  var data = $target.data('bs.collapse')
156
- var option = data ? 'toggle' : $this.data()
157
- var parent = $this.attr('data-parent')
158
- var $parent = parent && $(parent)
159
-
160
- if (!data || !data.transitioning) {
161
- if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed').attr('aria-expanded', false)
162
- var isCollapsed = $target.hasClass('in')
163
- $this.toggleClass('collapsed', isCollapsed).attr('aria-expanded', !isCollapsed)
164
- }
197
+ var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this })
165
198
 
166
199
  Plugin.call($target, option)
167
200
  })
@@ -10,7 +10,7 @@
10
10
  $(element).on('click.bs.dropdown', this.toggle)
11
11
  }
12
12
 
13
- Dropdown.VERSION = '3.2.0'
13
+ Dropdown.VERSION = '3.3.0'
14
14
 
15
15
  Dropdown.prototype.toggle = function (e) {
16
16
  var $this = $(this)
@@ -68,7 +68,7 @@
68
68
 
69
69
  if (!$items.length) return
70
70
 
71
- var index = $items.index($items.filter(':focus'))
71
+ var index = $items.index(e.target)
72
72
 
73
73
  if (e.which == 38 && index > 0) index-- // up
74
74
  if (e.which == 40 && index < $items.length - 1) index++ // down
@@ -145,6 +145,8 @@
145
145
  .on('click.bs.dropdown.data-api', clearMenus)
146
146
  .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
147
147
  .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
148
- .on('keydown.bs.dropdown.data-api', toggle + ', [role="menu"], [role="listbox"]', Dropdown.prototype.keydown)
148
+ .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
149
+ .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
150
+ .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
149
151
 
150
152
  }(jQuery);
@@ -21,10 +21,7 @@
21
21
  }
22
22
  }
23
23
 
24
- Modal.VERSION = '3.2.0'
25
-
26
- Modal.TRANSITION_DURATION = 300
27
- Modal.BACKDROP_TRANSITION_DURATION = 150
24
+ Modal.VERSION = '3.3.0'
28
25
 
29
26
  Modal.DEFAULTS = {
30
27
  backdrop: true,
@@ -82,7 +79,7 @@
82
79
  .one('bsTransitionEnd', function () {
83
80
  that.$element.trigger('focus').trigger(e)
84
81
  })
85
- .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
82
+ .emulateTransitionEnd(300) :
86
83
  that.$element.trigger('focus').trigger(e)
87
84
  })
88
85
  }
@@ -98,6 +95,9 @@
98
95
 
99
96
  this.isShown = false
100
97
 
98
+ this.$body.removeClass('modal-open')
99
+
100
+ this.resetScrollbar()
101
101
  this.escape()
102
102
 
103
103
  $(document).off('focusin.bs.modal')
@@ -110,7 +110,7 @@
110
110
  $.support.transition && this.$element.hasClass('fade') ?
111
111
  this.$element
112
112
  .one('bsTransitionEnd', $.proxy(this.hideModal, this))
113
- .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
113
+ .emulateTransitionEnd(300) :
114
114
  this.hideModal()
115
115
  }
116
116
 
@@ -126,11 +126,11 @@
126
126
 
127
127
  Modal.prototype.escape = function () {
128
128
  if (this.isShown && this.options.keyboard) {
129
- this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
129
+ this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
130
130
  e.which == 27 && this.hide()
131
131
  }, this))
132
132
  } else if (!this.isShown) {
133
- this.$element.off('keydown.dismiss.bs.modal')
133
+ this.$element.off('keyup.dismiss.bs.modal')
134
134
  }
135
135
  }
136
136
 
@@ -138,8 +138,6 @@
138
138
  var that = this
139
139
  this.$element.hide()
140
140
  this.backdrop(function () {
141
- that.$body.removeClass('modal-open')
142
- that.resetScrollbar()
143
141
  that.$element.trigger('hidden.bs.modal')
144
142
  })
145
143
  }
@@ -157,13 +155,14 @@
157
155
  var doAnimate = $.support.transition && animate
158
156
 
159
157
  this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
160
- .prependTo(this.$element)
161
- .on('click.dismiss.bs.modal', $.proxy(function (e) {
162
- if (e.target !== e.currentTarget) return
163
- this.options.backdrop == 'static'
164
- ? this.$element[0].focus.call(this.$element[0])
165
- : this.hide.call(this)
166
- }, this))
158
+ .appendTo(this.$body)
159
+
160
+ this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
161
+ if (e.target !== e.currentTarget) return
162
+ this.options.backdrop == 'static'
163
+ ? this.$element[0].focus.call(this.$element[0])
164
+ : this.hide.call(this)
165
+ }, this))
167
166
 
168
167
  if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
169
168
 
@@ -174,7 +173,7 @@
174
173
  doAnimate ?
175
174
  this.$backdrop
176
175
  .one('bsTransitionEnd', callback)
177
- .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
176
+ .emulateTransitionEnd(150) :
178
177
  callback()
179
178
 
180
179
  } else if (!this.isShown && this.$backdrop) {
@@ -187,7 +186,7 @@
187
186
  $.support.transition && this.$element.hasClass('fade') ?
188
187
  this.$backdrop
189
188
  .one('bsTransitionEnd', callbackRemove)
190
- .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
189
+ .emulateTransitionEnd(150) :
191
190
  callbackRemove()
192
191
 
193
192
  } else if (callback) {
@@ -196,7 +195,8 @@
196
195
  }
197
196
 
198
197
  Modal.prototype.checkScrollbar = function () {
199
- this.scrollbarWidth = this.measureScrollbar()
198
+ if (document.body.clientWidth >= window.innerWidth) return
199
+ this.scrollbarWidth = this.scrollbarWidth || this.measureScrollbar()
200
200
  }
201
201
 
202
202
  Modal.prototype.setScrollbar = function () {
@@ -209,7 +209,6 @@
209
209
  }
210
210
 
211
211
  Modal.prototype.measureScrollbar = function () { // thx walsh
212
- if (document.body.clientWidth >= window.innerWidth) return 0
213
212
  var scrollDiv = document.createElement('div')
214
213
  scrollDiv.className = 'modal-scrollbar-measure'
215
214
  this.$body.append(scrollDiv)