bootstrap3-wip-rails 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +54 -0
  6. data/Rakefile +1 -0
  7. data/bootstrap3-wip-rails.gemspec +25 -0
  8. data/lib/assets/javascripts/bootstrap.js +14 -0
  9. data/lib/bootstrap3/wip/rails.rb +10 -0
  10. data/lib/bootstrap3/wip/rails/version.rb +7 -0
  11. data/vendor/assets/images/glyphiconshalflings-regular.eot +0 -0
  12. data/vendor/assets/images/glyphiconshalflings-regular.otf +0 -0
  13. data/vendor/assets/images/glyphiconshalflings-regular.svg +175 -0
  14. data/vendor/assets/images/glyphiconshalflings-regular.ttf +0 -0
  15. data/vendor/assets/images/glyphiconshalflings-regular.woff +0 -0
  16. data/vendor/assets/javascripts/bootstrap-affix.js +117 -0
  17. data/vendor/assets/javascripts/bootstrap-alert.js +99 -0
  18. data/vendor/assets/javascripts/bootstrap-button.js +105 -0
  19. data/vendor/assets/javascripts/bootstrap-carousel.js +207 -0
  20. data/vendor/assets/javascripts/bootstrap-collapse.js +167 -0
  21. data/vendor/assets/javascripts/bootstrap-dropdown.js +165 -0
  22. data/vendor/assets/javascripts/bootstrap-modal.js +251 -0
  23. data/vendor/assets/javascripts/bootstrap-popover.js +114 -0
  24. data/vendor/assets/javascripts/bootstrap-scrollspy.js +162 -0
  25. data/vendor/assets/javascripts/bootstrap-tab.js +144 -0
  26. data/vendor/assets/javascripts/bootstrap-tooltip.js +361 -0
  27. data/vendor/assets/javascripts/bootstrap-transition.js +60 -0
  28. data/vendor/assets/javascripts/bootstrap-typeahead.js +335 -0
  29. data/vendor/assets/stylesheets/accordion.less +34 -0
  30. data/vendor/assets/stylesheets/alerts.less +97 -0
  31. data/vendor/assets/stylesheets/badges.less +58 -0
  32. data/vendor/assets/stylesheets/bootstrap.less +64 -0
  33. data/vendor/assets/stylesheets/breadcrumbs.less +28 -0
  34. data/vendor/assets/stylesheets/button-groups.less +166 -0
  35. data/vendor/assets/stylesheets/buttons.less +175 -0
  36. data/vendor/assets/stylesheets/carousel.less +191 -0
  37. data/vendor/assets/stylesheets/close.less +33 -0
  38. data/vendor/assets/stylesheets/code.less +61 -0
  39. data/vendor/assets/stylesheets/component-animations.less +32 -0
  40. data/vendor/assets/stylesheets/dropdowns.less +223 -0
  41. data/vendor/assets/stylesheets/forms.less +553 -0
  42. data/vendor/assets/stylesheets/glyphicons.less +200 -0
  43. data/vendor/assets/stylesheets/grid.less +57 -0
  44. data/vendor/assets/stylesheets/jumbotron.less +32 -0
  45. data/vendor/assets/stylesheets/labels.less +46 -0
  46. data/vendor/assets/stylesheets/list-group.less +96 -0
  47. data/vendor/assets/stylesheets/media.less +54 -0
  48. data/vendor/assets/stylesheets/mixins.less +551 -0
  49. data/vendor/assets/stylesheets/modals.less +137 -0
  50. data/vendor/assets/stylesheets/navbar.less +389 -0
  51. data/vendor/assets/stylesheets/navs.less +283 -0
  52. data/vendor/assets/stylesheets/normalize.less +396 -0
  53. data/vendor/assets/stylesheets/pager.less +54 -0
  54. data/vendor/assets/stylesheets/pagination.less +100 -0
  55. data/vendor/assets/stylesheets/panels.less +86 -0
  56. data/vendor/assets/stylesheets/popovers.less +133 -0
  57. data/vendor/assets/stylesheets/print.less +74 -0
  58. data/vendor/assets/stylesheets/progress-bars.less +118 -0
  59. data/vendor/assets/stylesheets/responsive-utilities.less +59 -0
  60. data/vendor/assets/stylesheets/scaffolding.less +91 -0
  61. data/vendor/assets/stylesheets/tables.less +241 -0
  62. data/vendor/assets/stylesheets/thumbnails.less +42 -0
  63. data/vendor/assets/stylesheets/tooltip.less +71 -0
  64. data/vendor/assets/stylesheets/type.less +253 -0
  65. data/vendor/assets/stylesheets/utilities.less +42 -0
  66. data/vendor/assets/stylesheets/variables.less +354 -0
  67. data/vendor/assets/stylesheets/wells.less +29 -0
  68. metadata +166 -0
@@ -0,0 +1,60 @@
1
+ /* ===================================================
2
+ * bootstrap-transition.js v3.0.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#transitions
4
+ * ===================================================
5
+ * Copyright 2012 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ========================================================== */
19
+
20
+
21
+ !function ($) {
22
+
23
+ "use strict"; // jshint ;_;
24
+
25
+
26
+ /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
27
+ * ======================================================= */
28
+
29
+ $(function () {
30
+
31
+ $.support.transition = (function () {
32
+
33
+ var transitionEnd = (function () {
34
+
35
+ var el = document.createElement('bootstrap')
36
+ , transEndEventNames = {
37
+ 'WebkitTransition' : 'webkitTransitionEnd'
38
+ , 'MozTransition' : 'transitionend'
39
+ , 'OTransition' : 'oTransitionEnd otransitionend'
40
+ , 'transition' : 'transitionend'
41
+ }
42
+ , name
43
+
44
+ for (name in transEndEventNames){
45
+ if (el.style[name] !== undefined) {
46
+ return transEndEventNames[name]
47
+ }
48
+ }
49
+
50
+ }())
51
+
52
+ return transitionEnd && {
53
+ end: transitionEnd
54
+ }
55
+
56
+ })()
57
+
58
+ })
59
+
60
+ }(window.jQuery);
@@ -0,0 +1,335 @@
1
+ /* =============================================================
2
+ * bootstrap-typeahead.js v3.0.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
4
+ * =============================================================
5
+ * Copyright 2012 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ============================================================ */
19
+
20
+
21
+ !function($){
22
+
23
+ "use strict"; // jshint ;_;
24
+
25
+
26
+ /* TYPEAHEAD PUBLIC CLASS DEFINITION
27
+ * ================================= */
28
+
29
+ var Typeahead = function (element, options) {
30
+ this.$element = $(element)
31
+ this.options = $.extend({}, $.fn.typeahead.defaults, options)
32
+ this.matcher = this.options.matcher || this.matcher
33
+ this.sorter = this.options.sorter || this.sorter
34
+ this.highlighter = this.options.highlighter || this.highlighter
35
+ this.updater = this.options.updater || this.updater
36
+ this.source = this.options.source
37
+ this.$menu = $(this.options.menu)
38
+ this.shown = false
39
+ this.listen()
40
+ }
41
+
42
+ Typeahead.prototype = {
43
+
44
+ constructor: Typeahead
45
+
46
+ , select: function () {
47
+ var val = this.$menu.find('.active').attr('data-value')
48
+ this.$element
49
+ .val(this.updater(val))
50
+ .change()
51
+ return this.hide()
52
+ }
53
+
54
+ , updater: function (item) {
55
+ return item
56
+ }
57
+
58
+ , show: function () {
59
+ var pos = $.extend({}, this.$element.position(), {
60
+ height: this.$element[0].offsetHeight
61
+ })
62
+
63
+ this.$menu
64
+ .insertAfter(this.$element)
65
+ .css({
66
+ top: pos.top + pos.height
67
+ , left: pos.left
68
+ })
69
+ .show()
70
+
71
+ this.shown = true
72
+ return this
73
+ }
74
+
75
+ , hide: function () {
76
+ this.$menu.hide()
77
+ this.shown = false
78
+ return this
79
+ }
80
+
81
+ , lookup: function (event) {
82
+ var items
83
+
84
+ this.query = this.$element.val()
85
+
86
+ if (!this.query || this.query.length < this.options.minLength) {
87
+ return this.shown ? this.hide() : this
88
+ }
89
+
90
+ items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
91
+
92
+ return items ? this.process(items) : this
93
+ }
94
+
95
+ , process: function (items) {
96
+ var that = this
97
+
98
+ items = $.grep(items, function (item) {
99
+ return that.matcher(item)
100
+ })
101
+
102
+ items = this.sorter(items)
103
+
104
+ if (!items.length) {
105
+ return this.shown ? this.hide() : this
106
+ }
107
+
108
+ return this.render(items.slice(0, this.options.items)).show()
109
+ }
110
+
111
+ , matcher: function (item) {
112
+ return ~item.toLowerCase().indexOf(this.query.toLowerCase())
113
+ }
114
+
115
+ , sorter: function (items) {
116
+ var beginswith = []
117
+ , caseSensitive = []
118
+ , caseInsensitive = []
119
+ , item
120
+
121
+ while (item = items.shift()) {
122
+ if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
123
+ else if (~item.indexOf(this.query)) caseSensitive.push(item)
124
+ else caseInsensitive.push(item)
125
+ }
126
+
127
+ return beginswith.concat(caseSensitive, caseInsensitive)
128
+ }
129
+
130
+ , highlighter: function (item) {
131
+ var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
132
+ return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
133
+ return '<strong>' + match + '</strong>'
134
+ })
135
+ }
136
+
137
+ , render: function (items) {
138
+ var that = this
139
+
140
+ items = $(items).map(function (i, item) {
141
+ i = $(that.options.item).attr('data-value', item)
142
+ i.find('a').html(that.highlighter(item))
143
+ return i[0]
144
+ })
145
+
146
+ items.first().addClass('active')
147
+ this.$menu.html(items)
148
+ return this
149
+ }
150
+
151
+ , next: function (event) {
152
+ var active = this.$menu.find('.active').removeClass('active')
153
+ , next = active.next()
154
+
155
+ if (!next.length) {
156
+ next = $(this.$menu.find('li')[0])
157
+ }
158
+
159
+ next.addClass('active')
160
+ }
161
+
162
+ , prev: function (event) {
163
+ var active = this.$menu.find('.active').removeClass('active')
164
+ , prev = active.prev()
165
+
166
+ if (!prev.length) {
167
+ prev = this.$menu.find('li').last()
168
+ }
169
+
170
+ prev.addClass('active')
171
+ }
172
+
173
+ , listen: function () {
174
+ this.$element
175
+ .on('focus', $.proxy(this.focus, this))
176
+ .on('blur', $.proxy(this.blur, this))
177
+ .on('keypress', $.proxy(this.keypress, this))
178
+ .on('keyup', $.proxy(this.keyup, this))
179
+
180
+ if (this.eventSupported('keydown')) {
181
+ this.$element.on('keydown', $.proxy(this.keydown, this))
182
+ }
183
+
184
+ this.$menu
185
+ .on('click', $.proxy(this.click, this))
186
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
187
+ .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
188
+ }
189
+
190
+ , eventSupported: function(eventName) {
191
+ var isSupported = eventName in this.$element
192
+ if (!isSupported) {
193
+ this.$element.setAttribute(eventName, 'return;')
194
+ isSupported = typeof this.$element[eventName] === 'function'
195
+ }
196
+ return isSupported
197
+ }
198
+
199
+ , move: function (e) {
200
+ if (!this.shown) return
201
+
202
+ switch(e.keyCode) {
203
+ case 9: // tab
204
+ case 13: // enter
205
+ case 27: // escape
206
+ e.preventDefault()
207
+ break
208
+
209
+ case 38: // up arrow
210
+ e.preventDefault()
211
+ this.prev()
212
+ break
213
+
214
+ case 40: // down arrow
215
+ e.preventDefault()
216
+ this.next()
217
+ break
218
+ }
219
+
220
+ e.stopPropagation()
221
+ }
222
+
223
+ , keydown: function (e) {
224
+ this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27])
225
+ this.move(e)
226
+ }
227
+
228
+ , keypress: function (e) {
229
+ if (this.suppressKeyPressRepeat) return
230
+ this.move(e)
231
+ }
232
+
233
+ , keyup: function (e) {
234
+ switch(e.keyCode) {
235
+ case 40: // down arrow
236
+ case 38: // up arrow
237
+ case 16: // shift
238
+ case 17: // ctrl
239
+ case 18: // alt
240
+ break
241
+
242
+ case 9: // tab
243
+ case 13: // enter
244
+ if (!this.shown) return
245
+ this.select()
246
+ break
247
+
248
+ case 27: // escape
249
+ if (!this.shown) return
250
+ this.hide()
251
+ break
252
+
253
+ default:
254
+ this.lookup()
255
+ }
256
+
257
+ e.stopPropagation()
258
+ e.preventDefault()
259
+ }
260
+
261
+ , focus: function (e) {
262
+ this.focused = true
263
+ }
264
+
265
+ , blur: function (e) {
266
+ this.focused = false
267
+ if (!this.mousedover && this.shown) this.hide()
268
+ }
269
+
270
+ , click: function (e) {
271
+ e.stopPropagation()
272
+ e.preventDefault()
273
+ this.select()
274
+ this.$element.focus()
275
+ }
276
+
277
+ , mouseenter: function (e) {
278
+ this.mousedover = true
279
+ this.$menu.find('.active').removeClass('active')
280
+ $(e.currentTarget).addClass('active')
281
+ }
282
+
283
+ , mouseleave: function (e) {
284
+ this.mousedover = false
285
+ if (!this.focused && this.shown) this.hide()
286
+ }
287
+
288
+ }
289
+
290
+
291
+ /* TYPEAHEAD PLUGIN DEFINITION
292
+ * =========================== */
293
+
294
+ var old = $.fn.typeahead
295
+
296
+ $.fn.typeahead = function (option) {
297
+ return this.each(function () {
298
+ var $this = $(this)
299
+ , data = $this.data('typeahead')
300
+ , options = typeof option == 'object' && option
301
+ if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
302
+ if (typeof option == 'string') data[option]()
303
+ })
304
+ }
305
+
306
+ $.fn.typeahead.defaults = {
307
+ source: []
308
+ , items: 8
309
+ , menu: '<ul class="typeahead dropdown-menu"></ul>'
310
+ , item: '<li><a href="#"></a></li>'
311
+ , minLength: 1
312
+ }
313
+
314
+ $.fn.typeahead.Constructor = Typeahead
315
+
316
+
317
+ /* TYPEAHEAD NO CONFLICT
318
+ * =================== */
319
+
320
+ $.fn.typeahead.noConflict = function () {
321
+ $.fn.typeahead = old
322
+ return this
323
+ }
324
+
325
+
326
+ /* TYPEAHEAD DATA-API
327
+ * ================== */
328
+
329
+ $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
330
+ var $this = $(this)
331
+ if ($this.data('typeahead')) return
332
+ $this.typeahead($this.data())
333
+ })
334
+
335
+ }(window.jQuery);
@@ -0,0 +1,34 @@
1
+ //
2
+ // Accordion
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Parent container
7
+ .accordion {
8
+ margin-bottom: @line-height-base;
9
+ }
10
+
11
+ // Group == heading + body
12
+ .accordion-group {
13
+ margin-bottom: 2px;
14
+ border: 1px solid #e5e5e5;
15
+ border-radius: @border-radius-base;
16
+ }
17
+ .accordion-heading {
18
+ border-bottom: 0;
19
+ }
20
+ .accordion-heading .accordion-toggle {
21
+ display: block;
22
+ padding: 8px 15px;
23
+ }
24
+
25
+ // General toggle styles
26
+ .accordion-toggle {
27
+ cursor: pointer;
28
+ }
29
+
30
+ // Inner needs the styles because you can't animate properly with any styles on the element
31
+ .accordion-inner {
32
+ padding: 9px 15px;
33
+ border-top: 1px solid #e5e5e5;
34
+ }
@@ -0,0 +1,97 @@
1
+ //
2
+ // Alerts
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Base styles
7
+ // -------------------------
8
+
9
+ .alert {
10
+ padding: 8px 35px 8px 14px;
11
+ margin-bottom: @line-height-base;
12
+ color: @state-warning-text;
13
+ background-color: @state-warning-bg;
14
+ border: 1px solid @state-warning-border;
15
+ border-radius: @border-radius-base;
16
+
17
+ // Headings for larger alerts
18
+ h4 {
19
+ margin-top: 0;
20
+ // Specified for the h4 to prevent conflicts of changing @headingsColor
21
+ color: inherit;
22
+ }
23
+ // Match the hr to the border of the alert
24
+ hr {
25
+ border-top-color: darken(@state-warning-border, 5%);
26
+ }
27
+ // Inherit color for immediate links and bolden them some
28
+ > a,
29
+ > p > a {
30
+ font-weight: 500;
31
+ color: darken(@state-warning-text, 10%);
32
+ }
33
+
34
+ // Adjust close link position
35
+ .close {
36
+ position: relative;
37
+ top: -2px;
38
+ right: -21px;
39
+ color: inherit;
40
+ }
41
+ }
42
+
43
+ // Alternate styles
44
+ // -------------------------
45
+
46
+ .alert-success {
47
+ background-color: @state-success-bg;
48
+ border-color: @state-success-border;
49
+ color: @state-success-text;
50
+ hr {
51
+ border-top-color: darken(@state-success-border, 5%);
52
+ }
53
+ > a,
54
+ > p > a {
55
+ color: darken(@state-success-text, 10%);
56
+ }
57
+ }
58
+ .alert-danger,
59
+ .alert-error {
60
+ background-color: @state-danger-bg;
61
+ border-color: @state-danger-border;
62
+ color: @state-danger-text;
63
+ hr {
64
+ border-top-color: darken(@state-danger-border, 5%);
65
+ }
66
+ > a,
67
+ > p > a {
68
+ color: darken(@state-danger-text, 10%);
69
+ }
70
+ }
71
+ .alert-info {
72
+ background-color: @state-info-bg;
73
+ border-color: @state-info-border;
74
+ color: @state-info-text;
75
+ hr {
76
+ border-top-color: darken(@state-info-border, 5%);
77
+ }
78
+ > a,
79
+ > p > a {
80
+ color: darken(@state-info-text, 10%);
81
+ }
82
+ }
83
+
84
+ // Block alerts
85
+ // -------------------------
86
+
87
+ .alert-block {
88
+ padding-top: 14px;
89
+ padding-bottom: 14px;
90
+ }
91
+ .alert-block > p,
92
+ .alert-block > ul {
93
+ margin-bottom: 0;
94
+ }
95
+ .alert-block p + p {
96
+ margin-top: 5px;
97
+ }