flashgrid 1.3.0 → 2.0.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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -2
  3. data/lib/flashgrid/version.rb +1 -1
  4. data/vendor/assets/javascripts/alert.js +2 -1
  5. data/vendor/assets/javascripts/animation.js +82 -0
  6. data/vendor/assets/javascripts/button.js +99 -0
  7. data/vendor/assets/javascripts/carousel.js +199 -0
  8. data/vendor/assets/javascripts/date_picker.js +1645 -1645
  9. data/vendor/assets/javascripts/hoverdown.js +93 -0
  10. data/vendor/assets/javascripts/scrollspy.js +146 -0
  11. data/vendor/assets/stylesheets/alert.css.scss +3 -3
  12. data/vendor/assets/stylesheets/animation.css.scss +2319 -0
  13. data/vendor/assets/stylesheets/breadcrumb.css.scss +2 -5
  14. data/vendor/assets/stylesheets/button.css.scss +106 -113
  15. data/vendor/assets/stylesheets/carousel.css.scss +148 -0
  16. data/vendor/assets/stylesheets/collapse.css.scss +2 -2
  17. data/vendor/assets/stylesheets/datepicker.css.scss +2 -4
  18. data/vendor/assets/stylesheets/dropdown.css.scss +6 -6
  19. data/vendor/assets/stylesheets/footer.css.scss +31 -4
  20. data/vendor/assets/stylesheets/form.css.scss +55 -24
  21. data/vendor/assets/stylesheets/header.css.scss +11 -4
  22. data/vendor/assets/stylesheets/icon.css.scss +10 -10
  23. data/vendor/assets/stylesheets/label_and_badge.css.scss +1 -1
  24. data/vendor/assets/stylesheets/list.css.scss +34 -15
  25. data/vendor/assets/stylesheets/modal.css.scss +12 -14
  26. data/vendor/assets/stylesheets/{tab.css.scss → nav_and_tab.css.scss} +20 -16
  27. data/vendor/assets/stylesheets/pagination.css.scss +1 -1
  28. data/vendor/assets/stylesheets/popover.css.scss +3 -3
  29. data/vendor/assets/stylesheets/progress.css.scss +1 -1
  30. data/vendor/assets/stylesheets/reset.css.scss +5 -8
  31. data/vendor/assets/stylesheets/switch.css.scss +24 -13
  32. data/vendor/assets/stylesheets/table.css.scss +10 -10
  33. data/vendor/assets/stylesheets/timepicker.css.scss +11 -11
  34. data/vendor/assets/stylesheets/trunk.css.scss +9 -23
  35. metadata +10 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34247f90580e7bf8a087eafe6690e8c63d19e1b2
4
- data.tar.gz: 407ebac546e27b9a5783e5edc57dffc9410781d8
3
+ metadata.gz: 383e3f0560bb9164b92e6a772ef9db039b4a8c59
4
+ data.tar.gz: a6f7ad0da921dd17243e62619837131f15391a15
5
5
  SHA512:
6
- metadata.gz: 5bb4cf5ccb161846689ec89c799675be3135b652d54b9a3e56558ccc63ac5d31be32a7e425f32a2a433a06206196698d3ad526815dd231f1c0cab6dc4f31d577
7
- data.tar.gz: 7f3183f8d4e6fcdc42279a0cefed5719869f7d93b8f15a6e6ef59194dbd4e833e22af683a0a670a54b35de5fece0252dc97c0e1b1597e9c77e4a7087b95a21dd
6
+ metadata.gz: 8bebe56ddc186155f2044d832e0ccfef91376049d341a6ee81b9a0acff35a02c18f978b59e439a809552e9d493fc5c4b03d79ed5a30ed808c8ac3ee122e97efd
7
+ data.tar.gz: 91a445e7e47ef0694495825764557cc4dd11d135bccc7fa4d8eac1f9f52006801cf7423058cef29b8dc52aa259eb3c5c13f9419888862c812738067f850ef7b3
data/README.md CHANGED
@@ -26,8 +26,10 @@ Add the CSS files you want to include:
26
26
  *= require ad.css
27
27
  *= require affix.css
28
28
  *= require alert.css
29
+ *= require animation.css
29
30
  *= require breadcrumb.css
30
31
  *= require button.css
32
+ *= require carousel.css
31
33
  *= require code.css
32
34
  *= require collapse.css
33
35
  *= require datepicker.css
@@ -43,6 +45,7 @@ Add the CSS files you want to include:
43
45
  *= require list.css
44
46
  *= require map.css
45
47
  *= require modal.css
48
+ *= require nav_and_tab.css
46
49
  *= require pagination.css
47
50
  *= require panel.css
48
51
  *= require placeholder.css
@@ -50,7 +53,6 @@ Add the CSS files you want to include:
50
53
  *= require progress.css
51
54
  *= require reset.css (place before any files)
52
55
  *= require switch.css
53
- *= require tab.css
54
56
  *= require table.css
55
57
  *= require timepicker.css
56
58
  *= require tooltip.css
@@ -64,16 +66,21 @@ Add the JS files you want to include:
64
66
  ```ruby
65
67
  //= require affix.js
66
68
  //= require alert.js
69
+ //= require animation.js
70
+ //= require button.js
71
+ //= require carousel.js
67
72
  //= require collapse.js
68
73
  //= require date_picker.js
69
74
  //= require dropdown.js
70
75
  //= require file_input.js
76
+ //= require hoverdown.js
71
77
  //= require map.js
72
78
  //= require modal.js
79
+ //= require popover.js (place after tooltip)
80
+ //= require scrollspy.js
73
81
  //= require switch.js
74
82
  //= require tab.js
75
83
  //= require time_picker.js
76
84
  //= require tooltip.js
77
- //= require popover.js
78
85
  //= require transition.js
79
86
  ```
@@ -1,3 +1,3 @@
1
1
  module Flashgrid
2
- VERSION = "1.3.0"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -33,7 +33,8 @@
33
33
  $parent.removeClass('in')
34
34
 
35
35
  function removeElement() {
36
- $parent.trigger('closed.bs.alert').remove()
36
+ // detach from parent, fire event then clean up data
37
+ $parent.detach().trigger('closed.bs.alert').remove()
37
38
  }
38
39
 
39
40
  $.support.transition && $parent.hasClass('fade') ?
@@ -0,0 +1,82 @@
1
+ (function ($, window, document, undefined) {
2
+
3
+ // Function-level strict mode syntax
4
+ 'use strict';
5
+
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
+
78
+ });
79
+
80
+ };
81
+
82
+ })(jQuery, window, document);
@@ -0,0 +1,99 @@
1
+ +function ($) {
2
+ 'use strict';
3
+
4
+ // BUTTON PUBLIC CLASS DEFINITION
5
+ // ==============================
6
+
7
+ var Button = function (element, options) {
8
+ this.$element = $(element)
9
+ this.options = $.extend({}, Button.DEFAULTS, options)
10
+ this.isLoading = false
11
+ }
12
+
13
+ Button.DEFAULTS = {
14
+ loadingText: 'loading...'
15
+ }
16
+
17
+ Button.prototype.setState = function (state) {
18
+ var d = 'disabled'
19
+ var $el = this.$element
20
+ var val = $el.is('input') ? 'val' : 'html'
21
+ var data = $el.data()
22
+
23
+ state = state + 'Text'
24
+
25
+ if (data.resetText == null) $el.data('resetText', $el[val]())
26
+
27
+ $el[val](data[state] == null ? this.options[state] : data[state])
28
+
29
+ // push to event loop to allow forms to submit
30
+ setTimeout($.proxy(function () {
31
+ if (state == 'loadingText') {
32
+ this.isLoading = true
33
+ $el.addClass(d).attr(d, d)
34
+ } else if (this.isLoading) {
35
+ this.isLoading = false
36
+ $el.removeClass(d).removeAttr(d)
37
+ }
38
+ }, this), 0)
39
+ }
40
+
41
+ Button.prototype.toggle = function () {
42
+ var changed = true
43
+ var $parent = this.$element.closest('[data-toggle="buttons"]')
44
+
45
+ if ($parent.length) {
46
+ var $input = this.$element.find('input')
47
+ if ($input.prop('type') == 'radio') {
48
+ if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
49
+ else $parent.find('.active').removeClass('active')
50
+ }
51
+ if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
52
+ }
53
+
54
+ if (changed) this.$element.toggleClass('active')
55
+ }
56
+
57
+
58
+ // BUTTON PLUGIN DEFINITION
59
+ // ========================
60
+
61
+ function Plugin(option) {
62
+ return this.each(function () {
63
+ var $this = $(this)
64
+ var data = $this.data('bs.button')
65
+ var options = typeof option == 'object' && option
66
+
67
+ if (!data) $this.data('bs.button', (data = new Button(this, options)))
68
+
69
+ if (option == 'toggle') data.toggle()
70
+ else if (option) data.setState(option)
71
+ })
72
+ }
73
+
74
+ var old = $.fn.button
75
+
76
+ $.fn.button = Plugin
77
+ $.fn.button.Constructor = Button
78
+
79
+
80
+ // BUTTON NO CONFLICT
81
+ // ==================
82
+
83
+ $.fn.button.noConflict = function () {
84
+ $.fn.button = old
85
+ return this
86
+ }
87
+
88
+
89
+ // BUTTON DATA-API
90
+ // ===============
91
+
92
+ $(document).on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
93
+ var $btn = $(e.target)
94
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
95
+ Plugin.call($btn, 'toggle')
96
+ e.preventDefault()
97
+ })
98
+
99
+ }(jQuery);
@@ -0,0 +1,199 @@
1
+ +function ($) {
2
+ 'use strict';
3
+
4
+ // CAROUSEL CLASS DEFINITION
5
+ // =========================
6
+
7
+ var Carousel = function (element, options) {
8
+ this.$element = $(element)
9
+ this.$indicators = this.$element.find('.carousel-indicators')
10
+ this.options = options
11
+ this.paused =
12
+ this.sliding =
13
+ this.interval =
14
+ this.$active =
15
+ this.$items = null
16
+
17
+ this.options.pause == 'hover' && this.$element
18
+ .on('mouseenter', $.proxy(this.pause, this))
19
+ .on('mouseleave', $.proxy(this.cycle, this))
20
+ }
21
+
22
+ Carousel.DEFAULTS = {
23
+ interval: 5000,
24
+ pause: 'hover',
25
+ wrap: true
26
+ }
27
+
28
+ Carousel.prototype.cycle = function (e) {
29
+ e || (this.paused = false)
30
+
31
+ this.interval && clearInterval(this.interval)
32
+
33
+ this.options.interval
34
+ && !this.paused
35
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
36
+
37
+ return this
38
+ }
39
+
40
+ Carousel.prototype.getActiveIndex = function () {
41
+ this.$active = this.$element.find('.item.active')
42
+ this.$items = this.$active.parent().children('.item')
43
+
44
+ return this.$items.index(this.$active)
45
+ }
46
+
47
+ Carousel.prototype.to = function (pos) {
48
+ var that = this
49
+ var activeIndex = this.getActiveIndex()
50
+
51
+ if (pos > (this.$items.length - 1) || pos < 0) return
52
+
53
+ if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
54
+ if (activeIndex == pos) return this.pause().cycle()
55
+
56
+ return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
57
+ }
58
+
59
+ Carousel.prototype.pause = function (e) {
60
+ e || (this.paused = true)
61
+
62
+ if (this.$element.find('.next, .prev').length && $.support.transition) {
63
+ this.$element.trigger($.support.transition.end)
64
+ this.cycle(true)
65
+ }
66
+
67
+ this.interval = clearInterval(this.interval)
68
+
69
+ return this
70
+ }
71
+
72
+ Carousel.prototype.next = function () {
73
+ if (this.sliding) return
74
+ return this.slide('next')
75
+ }
76
+
77
+ Carousel.prototype.prev = function () {
78
+ if (this.sliding) return
79
+ return this.slide('prev')
80
+ }
81
+
82
+ Carousel.prototype.slide = function (type, next) {
83
+ var $active = this.$element.find('.item.active')
84
+ var $next = next || $active[type]()
85
+ var isCycling = this.interval
86
+ var direction = type == 'next' ? 'left' : 'right'
87
+ var fallback = type == 'next' ? 'first' : 'last'
88
+ var that = this
89
+
90
+ if (!$next.length) {
91
+ if (!this.options.wrap) return
92
+ $next = this.$element.find('.item')[fallback]()
93
+ }
94
+
95
+ if ($next.hasClass('active')) return this.sliding = false
96
+
97
+ var relatedTarget = $next[0]
98
+ var slideEvent = $.Event('slide.bs.carousel', { relatedTarget: relatedTarget, direction: direction })
99
+ this.$element.trigger(slideEvent)
100
+ if (slideEvent.isDefaultPrevented()) return
101
+
102
+ this.sliding = true
103
+
104
+ isCycling && this.pause()
105
+
106
+ if (this.$indicators.length) {
107
+ this.$indicators.find('.active').removeClass('active')
108
+ this.$element.one('slid.bs.carousel', function () { // yes, "slid"
109
+ var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
110
+ $nextIndicator && $nextIndicator.addClass('active')
111
+ })
112
+ }
113
+
114
+ var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
115
+ if ($.support.transition && this.$element.hasClass('slide')) {
116
+ $next.addClass(type)
117
+ $next[0].offsetWidth // force reflow
118
+ $active.addClass(direction)
119
+ $next.addClass(direction)
120
+ $active
121
+ .one($.support.transition.end, function () {
122
+ $next.removeClass([type, direction].join(' ')).addClass('active')
123
+ $active.removeClass(['active', direction].join(' '))
124
+ that.sliding = false
125
+ setTimeout(function () { that.$element.trigger(slidEvent) }, 0)
126
+ })
127
+ .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
128
+ } else {
129
+ $active.removeClass('active')
130
+ $next.addClass('active')
131
+ this.sliding = false
132
+ this.$element.trigger(slidEvent)
133
+ }
134
+
135
+ isCycling && this.cycle()
136
+
137
+ return this
138
+ }
139
+
140
+
141
+ // CAROUSEL PLUGIN DEFINITION
142
+ // ==========================
143
+
144
+ function Plugin(option) {
145
+ return this.each(function () {
146
+ var $this = $(this)
147
+ var data = $this.data('bs.carousel')
148
+ var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
149
+ var action = typeof option == 'string' ? option : options.slide
150
+
151
+ if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
152
+ if (typeof option == 'number') data.to(option)
153
+ else if (action) data[action]()
154
+ else if (options.interval) data.pause().cycle()
155
+ })
156
+ }
157
+
158
+ var old = $.fn.carousel
159
+
160
+ $.fn.carousel = Plugin
161
+ $.fn.carousel.Constructor = Carousel
162
+
163
+
164
+ // CAROUSEL NO CONFLICT
165
+ // ====================
166
+
167
+ $.fn.carousel.noConflict = function () {
168
+ $.fn.carousel = old
169
+ return this
170
+ }
171
+
172
+
173
+ // CAROUSEL DATA-API
174
+ // =================
175
+
176
+ $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
177
+ var $this = $(this), href
178
+ var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
179
+ var options = $.extend({}, $target.data(), $this.data())
180
+ var slideIndex = $this.attr('data-slide-to')
181
+ if (slideIndex) options.interval = false
182
+
183
+ Plugin.call($target, options)
184
+
185
+ if (slideIndex = $this.attr('data-slide-to')) {
186
+ $target.data('bs.carousel').to(slideIndex)
187
+ }
188
+
189
+ e.preventDefault()
190
+ })
191
+
192
+ $(window).on('load', function () {
193
+ $('[data-ride="carousel"]').each(function () {
194
+ var $carousel = $(this)
195
+ Plugin.call($carousel, $carousel.data())
196
+ })
197
+ })
198
+
199
+ }(jQuery);