compass-bootstrap-rails 0.1.3.3 → 0.1.4.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.
@@ -1,5 +1,5 @@
1
1
  /* =========================================================
2
- * bootstrap-modal.js v1.3.0
2
+ * bootstrap-modal.js v1.4.0
3
3
  * http://twitter.github.com/bootstrap/javascript.html#modal
4
4
  * =========================================================
5
5
  * Copyright 2011 Twitter, Inc.
@@ -18,7 +18,9 @@
18
18
  * ========================================================= */
19
19
 
20
20
 
21
- (function( $ ){
21
+ !function( $ ){
22
+
23
+ "use strict"
22
24
 
23
25
  /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
24
26
  * ======================================================= */
@@ -53,16 +55,12 @@
53
55
  * ============================= */
54
56
 
55
57
  var Modal = function ( content, options ) {
56
- this.settings = $.extend({}, $.fn.modal.defaults)
58
+ this.settings = $.extend({}, $.fn.modal.defaults, options)
57
59
  this.$element = $(content)
58
60
  .delegate('.close', 'click.modal', $.proxy(this.hide, this))
59
61
 
60
- if ( options ) {
61
- $.extend( this.settings, options )
62
-
63
- if ( options.show ) {
64
- this.show()
65
- }
62
+ if ( this.settings.show ) {
63
+ this.show()
66
64
  }
67
65
 
68
66
  return this
@@ -81,15 +79,22 @@
81
79
 
82
80
  escape.call(this)
83
81
  backdrop.call(this, function () {
82
+ var transition = $.support.transition && that.$element.hasClass('fade')
83
+
84
84
  that.$element
85
85
  .appendTo(document.body)
86
86
  .show()
87
87
 
88
- setTimeout(function () {
89
- that.$element
90
- .addClass('in')
91
- .trigger('shown')
92
- }, 1)
88
+ if (transition) {
89
+ that.$element[0].offsetWidth // force reflow
90
+ }
91
+
92
+ that.$element.addClass('in')
93
+
94
+ transition ?
95
+ that.$element.one(transitionEnd, function () { that.$element.trigger('shown') }) :
96
+ that.$element.trigger('shown')
97
+
93
98
  })
94
99
 
95
100
  return this
@@ -98,6 +103,10 @@
98
103
  , hide: function (e) {
99
104
  e && e.preventDefault()
100
105
 
106
+ if ( !this.isShown ) {
107
+ return this
108
+ }
109
+
101
110
  var that = this
102
111
  this.isShown = false
103
112
 
@@ -107,17 +116,9 @@
107
116
  .trigger('hide')
108
117
  .removeClass('in')
109
118
 
110
- function removeElement () {
111
- that.$element
112
- .hide()
113
- .trigger('hidden')
114
-
115
- backdrop.call(that)
116
- }
117
-
118
119
  $.support.transition && this.$element.hasClass('fade') ?
119
- this.$element.one(transitionEnd, removeElement) :
120
- removeElement()
120
+ hideWithTransition.call(this) :
121
+ hideModal.call(this)
121
122
 
122
123
  return this
123
124
  }
@@ -128,46 +129,78 @@
128
129
  /* MODAL PRIVATE METHODS
129
130
  * ===================== */
130
131
 
132
+ function hideWithTransition() {
133
+ // firefox drops transitionEnd events :{o
134
+ var that = this
135
+ , timeout = setTimeout(function () {
136
+ that.$element.unbind(transitionEnd)
137
+ hideModal.call(that)
138
+ }, 500)
139
+
140
+ this.$element.one(transitionEnd, function () {
141
+ clearTimeout(timeout)
142
+ hideModal.call(that)
143
+ })
144
+ }
145
+
146
+ function hideModal (that) {
147
+ this.$element
148
+ .hide()
149
+ .trigger('hidden')
150
+
151
+ backdrop.call(this)
152
+ }
153
+
131
154
  function backdrop ( callback ) {
132
155
  var that = this
133
156
  , animate = this.$element.hasClass('fade') ? 'fade' : ''
134
157
  if ( this.isShown && this.settings.backdrop ) {
158
+ var doAnimate = $.support.transition && animate
159
+
135
160
  this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
136
- .click($.proxy(this.hide, this))
137
161
  .appendTo(document.body)
138
162
 
139
- setTimeout(function () {
140
- that.$backdrop && that.$backdrop.addClass('in')
141
- $.support.transition && that.$backdrop.hasClass('fade') ?
142
- that.$backdrop.one(transitionEnd, callback) :
143
- callback()
144
- })
145
- } else if ( !this.isShown && this.$backdrop ) {
146
- this.$backdrop.removeClass('in')
163
+ if ( this.settings.backdrop != 'static' ) {
164
+ this.$backdrop.click($.proxy(this.hide, this))
165
+ }
147
166
 
148
- function removeElement() {
149
- that.$backdrop.remove()
150
- that.$backdrop = null
167
+ if ( doAnimate ) {
168
+ this.$backdrop[0].offsetWidth // force reflow
151
169
  }
152
170
 
171
+ this.$backdrop.addClass('in')
172
+
173
+ doAnimate ?
174
+ this.$backdrop.one(transitionEnd, callback) :
175
+ callback()
176
+
177
+ } else if ( !this.isShown && this.$backdrop ) {
178
+ this.$backdrop.removeClass('in')
179
+
153
180
  $.support.transition && this.$element.hasClass('fade')?
154
- this.$backdrop.one(transitionEnd, removeElement) :
155
- removeElement()
181
+ this.$backdrop.one(transitionEnd, $.proxy(removeBackdrop, this)) :
182
+ removeBackdrop.call(this)
183
+
156
184
  } else if ( callback ) {
157
185
  callback()
158
186
  }
159
187
  }
160
188
 
189
+ function removeBackdrop() {
190
+ this.$backdrop.remove()
191
+ this.$backdrop = null
192
+ }
193
+
161
194
  function escape() {
162
195
  var that = this
163
196
  if ( this.isShown && this.settings.keyboard ) {
164
- $('body').bind('keyup.modal', function ( e ) {
197
+ $(document).bind('keyup.modal', function ( e ) {
165
198
  if ( e.which == 27 ) {
166
199
  that.hide()
167
200
  }
168
201
  })
169
202
  } else if ( !this.isShown ) {
170
- $('body').unbind('keyup.modal')
203
+ $(document).unbind('keyup.modal')
171
204
  }
172
205
  }
173
206
 
@@ -209,7 +242,7 @@
209
242
  $.fn.modal.defaults = {
210
243
  backdrop: false
211
244
  , keyboard: false
212
- , show: true
245
+ , show: false
213
246
  }
214
247
 
215
248
 
@@ -224,4 +257,4 @@
224
257
  })
225
258
  })
226
259
 
227
- })( window.jQuery || window.ender )
260
+ }( window.jQuery || window.ender );
@@ -1,5 +1,5 @@
1
1
  /* ===========================================================
2
- * bootstrap-popover.js v1.3.0
2
+ * bootstrap-popover.js v1.4.0
3
3
  * http://twitter.github.com/bootstrap/javascript.html#popover
4
4
  * ===========================================================
5
5
  * Copyright 2011 Twitter, Inc.
@@ -18,7 +18,9 @@
18
18
  * =========================================================== */
19
19
 
20
20
 
21
- (function( $ ) {
21
+ !function( $ ) {
22
+
23
+ "use strict"
22
24
 
23
25
  var Popover = function ( element, options ) {
24
26
  this.$element = $(element)
@@ -39,13 +41,17 @@
39
41
  $tip[0].className = 'popover'
40
42
  }
41
43
 
44
+ , hasContent: function () {
45
+ return this.getTitle() || this.getContent()
46
+ }
47
+
42
48
  , getContent: function () {
43
- var contentvar
49
+ var content
44
50
  , $e = this.$element
45
51
  , o = this.options
46
52
 
47
53
  if (typeof this.options.content == 'string') {
48
- content = $e.attr(o.content)
54
+ content = this.options.content
49
55
  } else if (typeof this.options.content == 'function') {
50
56
  content = this.options.content.call(this.$element[0])
51
57
  }
@@ -55,7 +61,7 @@
55
61
  , tip: function() {
56
62
  if (!this.$tip) {
57
63
  this.$tip = $('<div class="popover" />')
58
- .html('<div class="arrow"></div><div class="inner"><h3 class="title"></h3><div class="content"><p></p></div></div>')
64
+ .html(this.options.template)
59
65
  }
60
66
  return this.$tip
61
67
  }
@@ -72,6 +78,9 @@
72
78
  return this
73
79
  }
74
80
 
75
- $.fn.popover.defaults = $.extend({} , $.fn.twipsy.defaults, { content: 'data-content', placement: 'right'})
81
+ $.fn.popover.defaults = $.extend({} , $.fn.twipsy.defaults, {
82
+ placement: 'right'
83
+ , template: '<div class="arrow"></div><div class="inner"><h3 class="title"></h3><div class="content"><p></p></div></div>'
84
+ })
76
85
 
77
- })( window.jQuery || window.ender )
86
+ }( window.jQuery || window.ender );
@@ -1,5 +1,5 @@
1
1
  /* =============================================================
2
- * bootstrap-scrollspy.js v1.3.0
2
+ * bootstrap-scrollspy.js v1.4.0
3
3
  * http://twitter.github.com/bootstrap/javascript.html#scrollspy
4
4
  * =============================================================
5
5
  * Copyright 2011 Twitter, Inc.
@@ -20,6 +20,8 @@
20
20
 
21
21
  !function ( $ ) {
22
22
 
23
+ "use strict"
24
+
23
25
  var $window = $(window)
24
26
 
25
27
  function ScrollSpy( topbar, selector ) {
@@ -102,4 +104,4 @@
102
104
  $('body').scrollSpy('[data-scrollspy] li > a')
103
105
  })
104
106
 
105
- }( window.jQuery || window.ender )
107
+ }( window.jQuery || window.ender );
@@ -1,5 +1,5 @@
1
1
  /* ========================================================
2
- * bootstrap-tabs.js v1.3.0
2
+ * bootstrap-tabs.js v1.4.0
3
3
  * http://twitter.github.com/bootstrap/javascript.html#tabs
4
4
  * ========================================================
5
5
  * Copyright 2011 Twitter, Inc.
@@ -18,30 +18,48 @@
18
18
  * ======================================================== */
19
19
 
20
20
 
21
- (function( $ ){
21
+ !function( $ ){
22
+
23
+ "use strict"
22
24
 
23
25
  function activate ( element, container ) {
24
- container.find('.active').removeClass('active')
26
+ container
27
+ .find('> .active')
28
+ .removeClass('active')
29
+ .find('> .dropdown-menu > .active')
30
+ .removeClass('active')
31
+
25
32
  element.addClass('active')
33
+
34
+ if ( element.parent('.dropdown-menu') ) {
35
+ element.closest('li.dropdown').addClass('active')
36
+ }
26
37
  }
27
38
 
28
39
  function tab( e ) {
29
40
  var $this = $(this)
41
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
30
42
  , href = $this.attr('href')
31
- , $ul = $(e.liveFired)
32
- , $controlled
43
+ , previous
44
+ , $href
33
45
 
34
- if (/^#\w+/.test(href)) {
46
+ if ( /^#\w+/.test(href) ) {
35
47
  e.preventDefault()
36
48
 
37
- if ($this.hasClass('active')) {
49
+ if ( $this.parent('li').hasClass('active') ) {
38
50
  return
39
51
  }
40
52
 
53
+ previous = $ul.find('.active a').last()[0]
41
54
  $href = $(href)
42
55
 
43
56
  activate($this.parent('li'), $ul)
44
57
  activate($href, $href.parent())
58
+
59
+ $this.trigger({
60
+ type: 'change'
61
+ , relatedTarget: previous
62
+ })
45
63
  }
46
64
  }
47
65
 
@@ -59,4 +77,4 @@
59
77
  $('body').tabs('ul[data-tabs] li > a, ul[data-pills] > li > a')
60
78
  })
61
79
 
62
- })( window.jQuery || window.ender )
80
+ }( window.jQuery || window.ender );
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================
2
- * bootstrap-twipsy.js v1.3.0
2
+ * bootstrap-twipsy.js v1.4.0
3
3
  * http://twitter.github.com/bootstrap/javascript.html#twipsy
4
4
  * Adapted from the original jQuery.tipsy by Jason Frame
5
5
  * ==========================================================
@@ -19,7 +19,9 @@
19
19
  * ========================================================== */
20
20
 
21
21
 
22
- (function( $ ) {
22
+ !function( $ ) {
23
+
24
+ "use strict"
23
25
 
24
26
  /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
25
27
  * ======================================================= */
@@ -70,7 +72,7 @@
70
72
  , $tip
71
73
  , tp
72
74
 
73
- if (this.getTitle() && this.enabled) {
75
+ if (this.hasContent() && this.enabled) {
74
76
  $tip = this.tip()
75
77
  this.setContent()
76
78
 
@@ -90,7 +92,8 @@
90
92
 
91
93
  actualWidth = $tip[0].offsetWidth
92
94
  actualHeight = $tip[0].offsetHeight
93
- placement = _.maybeCall(this.options.placement, this.$element[0])
95
+
96
+ placement = maybeCall(this.options.placement, this, [ $tip[0], this.$element[0] ])
94
97
 
95
98
  switch (placement) {
96
99
  case 'below':
@@ -142,6 +145,10 @@
142
145
  }
143
146
  }
144
147
 
148
+ , hasContent: function () {
149
+ return this.getTitle()
150
+ }
151
+
145
152
  , getTitle: function() {
146
153
  var title
147
154
  , $e = this.$element
@@ -162,7 +169,7 @@
162
169
 
163
170
  , tip: function() {
164
171
  if (!this.$tip) {
165
- this.$tip = $('<div class="twipsy" />').html('<div class="twipsy-arrow"></div><div class="twipsy-inner"></div>')
172
+ this.$tip = $('<div class="twipsy" />').html(this.options.template)
166
173
  }
167
174
  return this.$tip
168
175
  }
@@ -193,15 +200,10 @@
193
200
  /* TWIPSY PRIVATE METHODS
194
201
  * ====================== */
195
202
 
196
- var _ = {
197
-
198
- maybeCall: function ( thing, ctx ) {
199
- return (typeof thing == 'function') ? (thing.call(ctx)) : thing
200
- }
201
-
203
+ function maybeCall ( thing, ctx, args ) {
204
+ return typeof thing == 'function' ? thing.apply(ctx, args) : thing
202
205
  }
203
206
 
204
-
205
207
  /* TWIPSY PLUGIN DEFINITION
206
208
  * ======================== */
207
209
 
@@ -298,10 +300,11 @@
298
300
  , offset: 0
299
301
  , title: 'title'
300
302
  , trigger: 'hover'
303
+ , template: '<div class="twipsy-arrow"></div><div class="twipsy-inner"></div>'
301
304
  }
302
305
 
303
306
  $.fn.twipsy.elementOptions = function(ele, options) {
304
- return $.metadata ? $.extend({}, options, $(ele).metadata()) : options
307
+ return $.extend({}, options, $(ele).data())
305
308
  }
306
309
 
307
- })( window.jQuery || window.ender )
310
+ }( window.jQuery || window.ender );
@@ -36,7 +36,7 @@ label,
36
36
  input,
37
37
  select,
38
38
  textarea {
39
- @include font-sans-serif(normal,13px,normal);
39
+ @include sans-serif(normal,13px,normal);
40
40
  }
41
41
 
42
42
  // Float labels left
@@ -77,6 +77,11 @@ select,
77
77
  @include border-radius(3px);
78
78
  }
79
79
 
80
+ /* remove padding from select */
81
+ select {
82
+ padding: initial;
83
+ }
84
+
80
85
  /* mini reset for non-html5 file types */
81
86
  input[type=checkbox],
82
87
  input[type=radio] {
@@ -107,6 +112,7 @@ input[type=submit] {
107
112
  select,
108
113
  input[type=file] {
109
114
  height: $baseline * 1.5; // In IE7, the height of the select element cannot be changed by height, only font-size
115
+ *height: auto; // Reset for IE7
110
116
  line-height: $baseline * 1.5;
111
117
  *margin-top: 4px; /* For IE7, add top margin to align select with labels */
112
118
  }
@@ -114,6 +120,7 @@ input[type=file] {
114
120
  // Make multiple select elements height not fixed
115
121
  select[multiple] {
116
122
  height: inherit;
123
+ background-color: $white; // Fixes Chromium bug of unreadable items
117
124
  }
118
125
 
119
126
  textarea {
@@ -158,36 +165,47 @@ select:focus {
158
165
  outline: 1px dotted #666; // Selet elements don't get box-shadow styles, so instead we do outline
159
166
  }
160
167
 
161
- // Error styles
162
- form div.clearfix.error {
163
- background: lighten($red, 57%);
164
- padding: 10px 0;
165
- margin: -10px 0 10px;
166
- @include border-radius(4px);
167
- $error-text: desaturate(lighten($red, 25%), 25%);
168
+ /* FORM FIELD FEEDBACK STATES
169
+ -------------------------- */
170
+
171
+ // Mixin for form field states
172
+ @mixin formFieldState($textColor: #555, $borderColor: #ccc, $backgroundColor: #f5f5f5) {
173
+ // Set the text color
168
174
  > label,
169
- span.help-inline,
170
- span.help-block {
171
- color: $red;
175
+ .help-block,
176
+ .help-inline {
177
+ color: $textColor;
172
178
  }
179
+ // Style inputs accordingly
173
180
  input,
174
181
  textarea {
175
- border-color: $error-text;
176
- @include box-shadow(0 0 3px rgba(171,41,32,.25));
182
+ color: $textColor;
183
+ border-color: $borderColor;
177
184
  &:focus {
178
- border-color: darken($error-text, 10%);
179
- @include box-shadow(0 0 6px rgba(171,41,32,.5));
185
+ border-color: darken($borderColor, 10%);
186
+ .box-shadow(0 0 6px lighten($borderColor, 20%);
180
187
  }
181
188
  }
182
- .input-prepend,
183
- .input-append {
184
- span.add-on {
185
- background: lighten($red, 50%);
186
- border-color: $error-text;
187
- color: darken($error-text, 10%);
188
- }
189
+ // Give a small background color for input-prepend/-append
190
+ .input-prepend .add-on,
191
+ .input-append .add-on {
192
+ color: $textColor;
193
+ background-color: $backgroundColor;
194
+ border-color: $textColor;
189
195
  }
190
196
  }
197
+ // Error
198
+ form .clearfix.error {
199
+ @include formFieldState(#b94a48, #ee5f5b, lighten(#ee5f5b, 30%));
200
+ }
201
+ // Warning
202
+ form .clearfix.warning {
203
+ @include formFieldState(#c09853, #ccae64, lighten(#CCAE64, 5%));
204
+ }
205
+ // Success
206
+ form .clearfix.success {
207
+ @include formFieldState(#468847, #57a957, lighten(#57a957, 30%));
208
+ }
191
209
 
192
210
  // Form element sizes
193
211
  // TODO v2: remove duplication here and just stick to .input-[size] in light of adding .spanN sizes
@@ -236,12 +254,11 @@ textarea.xxlarge {
236
254
  @mixin formColumns($columnSpan: 1) {
237
255
  display: inline-block;
238
256
  float: none;
239
- width: (($gridColumnWidth - 10) * $columnSpan) + (($gridColumnWidth - 10) * ($columnSpan - 1));
257
+ width: (($gridColumnWidth) * $columnSpan) + ($gridGutterWidth * ($columnSpan - 1)) - 10;
240
258
  margin-left: 0;
241
259
  }
242
260
  input,
243
- textarea,
244
- select {
261
+ textarea {
245
262
  // Default columns
246
263
  &.span1 { @include formColumns(1); }
247
264
  &.span2 { @include formColumns(2); }
@@ -293,9 +310,10 @@ textarea[readonly] {
293
310
  }
294
311
 
295
312
  // Help Text
313
+ // TODO: Do we need to set basefont and baseline here?
296
314
  .help-inline,
297
315
  .help-block {
298
- font-size: $basefont - 2;
316
+ font-size: $basefont;
299
317
  line-height: $baseline;
300
318
  color: $grayLight;
301
319
  }
@@ -314,15 +332,6 @@ textarea[readonly] {
314
332
  // Inline Fields (input fields that appear as inline objects
315
333
  .inline-inputs {
316
334
  color: $gray;
317
- span, input {
318
- display: inline-block;
319
- }
320
- input.mini {
321
- width: 60px;
322
- }
323
- input.small {
324
- width: 90px;
325
- }
326
335
  span {
327
336
  padding: 0 2px 0 1px;
328
337
  }
@@ -389,6 +398,7 @@ textarea[readonly] {
389
398
  float: none;
390
399
  width: auto;
391
400
  padding: 0;
401
+ margin-left: 20px;
392
402
  line-height: $baseline;
393
403
  text-align: left;
394
404
  white-space: normal;
@@ -414,6 +424,8 @@ textarea[readonly] {
414
424
  input[type=radio],
415
425
  input[type=checkbox] {
416
426
  margin-bottom: 0;
427
+ margin-left: -20px;
428
+ float: left;
417
429
  }
418
430
  }
419
431