compass-bootstrap 0.1.2 → 0.1.3
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.
- data/.gitignore +4 -0
- data/README.mkdn +112 -21
- data/lib/compass-bootstrap.rb +6 -1
- data/lib/compass-bootstrap/rails.rb +7 -0
- data/lib/compass-bootstrap/rails/engine.rb +7 -0
- data/lib/compass-bootstrap/version.rb +1 -1
- data/stylesheets/compass-bootstrap/_compass_bootstrap.scss +5 -2
- data/stylesheets/compass-bootstrap/_forms.scss +139 -67
- data/stylesheets/compass-bootstrap/_mixins.scss +210 -0
- data/stylesheets/compass-bootstrap/_patterns.scss +331 -146
- data/stylesheets/compass-bootstrap/_reset.scss +6 -2
- data/stylesheets/compass-bootstrap/_scaffolding.scss +89 -62
- data/stylesheets/compass-bootstrap/_tables.scss +35 -12
- data/stylesheets/compass-bootstrap/_type.scss +7 -8
- data/stylesheets/compass-bootstrap/_variables.scss +60 -0
- data/vendor/assets/javascripts/bootstrap-alerts.js +104 -0
- data/vendor/assets/javascripts/bootstrap-dropdown.js +50 -0
- data/vendor/assets/javascripts/bootstrap-modal.js +227 -0
- data/vendor/assets/javascripts/bootstrap-popover.js +77 -0
- data/vendor/assets/javascripts/bootstrap-scrollspy.js +105 -0
- data/vendor/assets/javascripts/bootstrap-tabs.js +62 -0
- data/vendor/assets/javascripts/bootstrap-twipsy.js +307 -0
- data/vendor/assets/stylesheets/compass-bootstrap/_compass_bootstrap.scss +29 -0
- data/{templates → vendor/assets/stylesheets}/compass-bootstrap/_forms.scss +139 -67
- data/vendor/assets/stylesheets/compass-bootstrap/_mixins.scss +210 -0
- data/{templates → vendor/assets/stylesheets}/compass-bootstrap/_patterns.scss +331 -146
- data/{templates → vendor/assets/stylesheets}/compass-bootstrap/_reset.scss +6 -2
- data/vendor/assets/stylesheets/compass-bootstrap/_scaffolding.scss +137 -0
- data/{templates → vendor/assets/stylesheets}/compass-bootstrap/_tables.scss +35 -12
- data/{templates → vendor/assets/stylesheets}/compass-bootstrap/_type.scss +7 -8
- data/vendor/assets/stylesheets/compass-bootstrap/_variables.scss +60 -0
- data/{templates → vendor/assets/stylesheets}/compass-bootstrap/compass_bootstrap.scss +5 -2
- data/vendor/assets/stylesheets/compass-bootstrap/manifest.rb +20 -0
- metadata +50 -61
- data/stylesheets/compass-bootstrap/_preboot.scss +0 -276
- data/templates/compass-bootstrap/_preboot.scss +0 -292
- data/templates/compass-bootstrap/_scaffolding.scss +0 -110
- data/templates/compass-bootstrap/manifest.rb +0 -12
@@ -0,0 +1,62 @@
|
|
1
|
+
/* ========================================================
|
2
|
+
* bootstrap-tabs.js v1.3.0
|
3
|
+
* http://twitter.github.com/bootstrap/javascript.html#tabs
|
4
|
+
* ========================================================
|
5
|
+
* Copyright 2011 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
|
+
function activate ( element, container ) {
|
24
|
+
container.find('.active').removeClass('active')
|
25
|
+
element.addClass('active')
|
26
|
+
}
|
27
|
+
|
28
|
+
function tab( e ) {
|
29
|
+
var $this = $(this)
|
30
|
+
, href = $this.attr('href')
|
31
|
+
, $ul = $(e.liveFired)
|
32
|
+
, $controlled
|
33
|
+
|
34
|
+
if (/^#\w+/.test(href)) {
|
35
|
+
e.preventDefault()
|
36
|
+
|
37
|
+
if ($this.hasClass('active')) {
|
38
|
+
return
|
39
|
+
}
|
40
|
+
|
41
|
+
$href = $(href)
|
42
|
+
|
43
|
+
activate($this.parent('li'), $ul)
|
44
|
+
activate($href, $href.parent())
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
|
49
|
+
/* TABS/PILLS PLUGIN DEFINITION
|
50
|
+
* ============================ */
|
51
|
+
|
52
|
+
$.fn.tabs = $.fn.pills = function ( selector ) {
|
53
|
+
return this.each(function () {
|
54
|
+
$(this).delegate(selector || '.tabs li > a, .pills > li > a', 'click', tab)
|
55
|
+
})
|
56
|
+
}
|
57
|
+
|
58
|
+
$(document).ready(function () {
|
59
|
+
$('body').tabs('ul[data-tabs] li > a, ul[data-pills] > li > a')
|
60
|
+
})
|
61
|
+
|
62
|
+
})( window.jQuery || window.ender )
|
@@ -0,0 +1,307 @@
|
|
1
|
+
/* ==========================================================
|
2
|
+
* bootstrap-twipsy.js v1.3.0
|
3
|
+
* http://twitter.github.com/bootstrap/javascript.html#twipsy
|
4
|
+
* Adapted from the original jQuery.tipsy by Jason Frame
|
5
|
+
* ==========================================================
|
6
|
+
* Copyright 2011 Twitter, Inc.
|
7
|
+
*
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
* you may not use this file except in compliance with the License.
|
10
|
+
* You may obtain a copy of the License at
|
11
|
+
*
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
*
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
* See the License for the specific language governing permissions and
|
18
|
+
* limitations under the License.
|
19
|
+
* ========================================================== */
|
20
|
+
|
21
|
+
|
22
|
+
(function( $ ) {
|
23
|
+
|
24
|
+
/* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
|
25
|
+
* ======================================================= */
|
26
|
+
|
27
|
+
var transitionEnd
|
28
|
+
|
29
|
+
$(document).ready(function () {
|
30
|
+
|
31
|
+
$.support.transition = (function () {
|
32
|
+
var thisBody = document.body || document.documentElement
|
33
|
+
, thisStyle = thisBody.style
|
34
|
+
, support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
|
35
|
+
return support
|
36
|
+
})()
|
37
|
+
|
38
|
+
// set CSS transition event type
|
39
|
+
if ( $.support.transition ) {
|
40
|
+
transitionEnd = "TransitionEnd"
|
41
|
+
if ( $.browser.webkit ) {
|
42
|
+
transitionEnd = "webkitTransitionEnd"
|
43
|
+
} else if ( $.browser.mozilla ) {
|
44
|
+
transitionEnd = "transitionend"
|
45
|
+
} else if ( $.browser.opera ) {
|
46
|
+
transitionEnd = "oTransitionEnd"
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
})
|
51
|
+
|
52
|
+
|
53
|
+
/* TWIPSY PUBLIC CLASS DEFINITION
|
54
|
+
* ============================== */
|
55
|
+
|
56
|
+
var Twipsy = function ( element, options ) {
|
57
|
+
this.$element = $(element)
|
58
|
+
this.options = options
|
59
|
+
this.enabled = true
|
60
|
+
this.fixTitle()
|
61
|
+
}
|
62
|
+
|
63
|
+
Twipsy.prototype = {
|
64
|
+
|
65
|
+
show: function() {
|
66
|
+
var pos
|
67
|
+
, actualWidth
|
68
|
+
, actualHeight
|
69
|
+
, placement
|
70
|
+
, $tip
|
71
|
+
, tp
|
72
|
+
|
73
|
+
if (this.getTitle() && this.enabled) {
|
74
|
+
$tip = this.tip()
|
75
|
+
this.setContent()
|
76
|
+
|
77
|
+
if (this.options.animate) {
|
78
|
+
$tip.addClass('fade')
|
79
|
+
}
|
80
|
+
|
81
|
+
$tip
|
82
|
+
.remove()
|
83
|
+
.css({ top: 0, left: 0, display: 'block' })
|
84
|
+
.prependTo(document.body)
|
85
|
+
|
86
|
+
pos = $.extend({}, this.$element.offset(), {
|
87
|
+
width: this.$element[0].offsetWidth
|
88
|
+
, height: this.$element[0].offsetHeight
|
89
|
+
})
|
90
|
+
|
91
|
+
actualWidth = $tip[0].offsetWidth
|
92
|
+
actualHeight = $tip[0].offsetHeight
|
93
|
+
placement = _.maybeCall(this.options.placement, this.$element[0])
|
94
|
+
|
95
|
+
switch (placement) {
|
96
|
+
case 'below':
|
97
|
+
tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}
|
98
|
+
break
|
99
|
+
case 'above':
|
100
|
+
tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}
|
101
|
+
break
|
102
|
+
case 'left':
|
103
|
+
tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset}
|
104
|
+
break
|
105
|
+
case 'right':
|
106
|
+
tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset}
|
107
|
+
break
|
108
|
+
}
|
109
|
+
|
110
|
+
$tip
|
111
|
+
.css(tp)
|
112
|
+
.addClass(placement)
|
113
|
+
.addClass('in')
|
114
|
+
}
|
115
|
+
}
|
116
|
+
|
117
|
+
, setContent: function () {
|
118
|
+
var $tip = this.tip()
|
119
|
+
$tip.find('.twipsy-inner')[this.options.html ? 'html' : 'text'](this.getTitle())
|
120
|
+
$tip[0].className = 'twipsy'
|
121
|
+
}
|
122
|
+
|
123
|
+
, hide: function() {
|
124
|
+
var that = this
|
125
|
+
, $tip = this.tip()
|
126
|
+
|
127
|
+
$tip.removeClass('in')
|
128
|
+
|
129
|
+
function removeElement () {
|
130
|
+
$tip.remove()
|
131
|
+
}
|
132
|
+
|
133
|
+
$.support.transition && this.$tip.hasClass('fade') ?
|
134
|
+
$tip.bind(transitionEnd, removeElement) :
|
135
|
+
removeElement()
|
136
|
+
}
|
137
|
+
|
138
|
+
, fixTitle: function() {
|
139
|
+
var $e = this.$element
|
140
|
+
if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
|
141
|
+
$e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
|
142
|
+
}
|
143
|
+
}
|
144
|
+
|
145
|
+
, getTitle: function() {
|
146
|
+
var title
|
147
|
+
, $e = this.$element
|
148
|
+
, o = this.options
|
149
|
+
|
150
|
+
this.fixTitle()
|
151
|
+
|
152
|
+
if (typeof o.title == 'string') {
|
153
|
+
title = $e.attr(o.title == 'title' ? 'data-original-title' : o.title)
|
154
|
+
} else if (typeof o.title == 'function') {
|
155
|
+
title = o.title.call($e[0])
|
156
|
+
}
|
157
|
+
|
158
|
+
title = ('' + title).replace(/(^\s*|\s*$)/, "")
|
159
|
+
|
160
|
+
return title || o.fallback
|
161
|
+
}
|
162
|
+
|
163
|
+
, tip: function() {
|
164
|
+
if (!this.$tip) {
|
165
|
+
this.$tip = $('<div class="twipsy" />').html('<div class="twipsy-arrow"></div><div class="twipsy-inner"></div>')
|
166
|
+
}
|
167
|
+
return this.$tip
|
168
|
+
}
|
169
|
+
|
170
|
+
, validate: function() {
|
171
|
+
if (!this.$element[0].parentNode) {
|
172
|
+
this.hide()
|
173
|
+
this.$element = null
|
174
|
+
this.options = null
|
175
|
+
}
|
176
|
+
}
|
177
|
+
|
178
|
+
, enable: function() {
|
179
|
+
this.enabled = true
|
180
|
+
}
|
181
|
+
|
182
|
+
, disable: function() {
|
183
|
+
this.enabled = false
|
184
|
+
}
|
185
|
+
|
186
|
+
, toggleEnabled: function() {
|
187
|
+
this.enabled = !this.enabled
|
188
|
+
}
|
189
|
+
|
190
|
+
}
|
191
|
+
|
192
|
+
|
193
|
+
/* TWIPSY PRIVATE METHODS
|
194
|
+
* ====================== */
|
195
|
+
|
196
|
+
var _ = {
|
197
|
+
|
198
|
+
maybeCall: function ( thing, ctx ) {
|
199
|
+
return (typeof thing == 'function') ? (thing.call(ctx)) : thing
|
200
|
+
}
|
201
|
+
|
202
|
+
}
|
203
|
+
|
204
|
+
|
205
|
+
/* TWIPSY PLUGIN DEFINITION
|
206
|
+
* ======================== */
|
207
|
+
|
208
|
+
$.fn.twipsy = function (options) {
|
209
|
+
$.fn.twipsy.initWith.call(this, options, Twipsy, 'twipsy')
|
210
|
+
return this
|
211
|
+
}
|
212
|
+
|
213
|
+
$.fn.twipsy.initWith = function (options, Constructor, name) {
|
214
|
+
var twipsy
|
215
|
+
, binder
|
216
|
+
, eventIn
|
217
|
+
, eventOut
|
218
|
+
|
219
|
+
if (options === true) {
|
220
|
+
return this.data(name)
|
221
|
+
} else if (typeof options == 'string') {
|
222
|
+
twipsy = this.data(name)
|
223
|
+
if (twipsy) {
|
224
|
+
twipsy[options]()
|
225
|
+
}
|
226
|
+
return this
|
227
|
+
}
|
228
|
+
|
229
|
+
options = $.extend({}, $.fn[name].defaults, options)
|
230
|
+
|
231
|
+
function get(ele) {
|
232
|
+
var twipsy = $.data(ele, name)
|
233
|
+
|
234
|
+
if (!twipsy) {
|
235
|
+
twipsy = new Constructor(ele, $.fn.twipsy.elementOptions(ele, options))
|
236
|
+
$.data(ele, name, twipsy)
|
237
|
+
}
|
238
|
+
|
239
|
+
return twipsy
|
240
|
+
}
|
241
|
+
|
242
|
+
function enter() {
|
243
|
+
var twipsy = get(this)
|
244
|
+
twipsy.hoverState = 'in'
|
245
|
+
|
246
|
+
if (options.delayIn == 0) {
|
247
|
+
twipsy.show()
|
248
|
+
} else {
|
249
|
+
twipsy.fixTitle()
|
250
|
+
setTimeout(function() {
|
251
|
+
if (twipsy.hoverState == 'in') {
|
252
|
+
twipsy.show()
|
253
|
+
}
|
254
|
+
}, options.delayIn)
|
255
|
+
}
|
256
|
+
}
|
257
|
+
|
258
|
+
function leave() {
|
259
|
+
var twipsy = get(this)
|
260
|
+
twipsy.hoverState = 'out'
|
261
|
+
if (options.delayOut == 0) {
|
262
|
+
twipsy.hide()
|
263
|
+
} else {
|
264
|
+
setTimeout(function() {
|
265
|
+
if (twipsy.hoverState == 'out') {
|
266
|
+
twipsy.hide()
|
267
|
+
}
|
268
|
+
}, options.delayOut)
|
269
|
+
}
|
270
|
+
}
|
271
|
+
|
272
|
+
if (!options.live) {
|
273
|
+
this.each(function() {
|
274
|
+
get(this)
|
275
|
+
})
|
276
|
+
}
|
277
|
+
|
278
|
+
if (options.trigger != 'manual') {
|
279
|
+
binder = options.live ? 'live' : 'bind'
|
280
|
+
eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus'
|
281
|
+
eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'
|
282
|
+
this[binder](eventIn, enter)[binder](eventOut, leave)
|
283
|
+
}
|
284
|
+
|
285
|
+
return this
|
286
|
+
}
|
287
|
+
|
288
|
+
$.fn.twipsy.Twipsy = Twipsy
|
289
|
+
|
290
|
+
$.fn.twipsy.defaults = {
|
291
|
+
animate: true
|
292
|
+
, delayIn: 0
|
293
|
+
, delayOut: 0
|
294
|
+
, fallback: ''
|
295
|
+
, placement: 'above'
|
296
|
+
, html: false
|
297
|
+
, live: false
|
298
|
+
, offset: 0
|
299
|
+
, title: 'title'
|
300
|
+
, trigger: 'hover'
|
301
|
+
}
|
302
|
+
|
303
|
+
$.fn.twipsy.elementOptions = function(ele, options) {
|
304
|
+
return $.metadata ? $.extend({}, options, $(ele).metadata()) : options
|
305
|
+
}
|
306
|
+
|
307
|
+
})( window.jQuery || window.ender )
|
@@ -0,0 +1,29 @@
|
|
1
|
+
/*!
|
2
|
+
* this is a port to SCSS version of the bootstrap less
|
3
|
+
|
4
|
+
* ==========================================
|
5
|
+
* Bootstrap @VERSION
|
6
|
+
*
|
7
|
+
* Copyright 2011 Twitter, Inc
|
8
|
+
* Licensed under the Apache License v2.0
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
12
|
+
* Date: @DATE
|
13
|
+
*/
|
14
|
+
|
15
|
+
// CSS Reset
|
16
|
+
@import "reset.scss";
|
17
|
+
|
18
|
+
// Core
|
19
|
+
@import "variables.scss"; // Modify this for custom colors, font-sizes, etc
|
20
|
+
@import "mixins.scss";
|
21
|
+
|
22
|
+
// Grid system and page structure
|
23
|
+
@import "scaffolding.scss";
|
24
|
+
|
25
|
+
// Styled patterns and elements
|
26
|
+
@import "type.scss";
|
27
|
+
@import "forms.scss";
|
28
|
+
@import "tables.scss";
|
29
|
+
@import "patterns.scss";
|
@@ -16,18 +16,19 @@ fieldset {
|
|
16
16
|
padding-top: $baseline;
|
17
17
|
legend {
|
18
18
|
display: block;
|
19
|
-
|
20
|
-
font-size:
|
19
|
+
padding-left: 150px;
|
20
|
+
font-size: $basefont * 1.5;
|
21
21
|
line-height: 1;
|
22
|
-
*margin: 0 0 5px 145px; /* IE6-7 */
|
23
|
-
*line-height: 1.5; /* IE6-7 */
|
24
22
|
color: $grayDark;
|
23
|
+
*padding: 0 0 5px 145px; /* IE6-7 */
|
24
|
+
*line-height: 1.5; /* IE6-7 */
|
25
25
|
}
|
26
26
|
}
|
27
27
|
|
28
28
|
// Parent element that clears floats and wraps labels and fields together
|
29
29
|
form .clearfix {
|
30
30
|
margin-bottom: $baseline;
|
31
|
+
@include clearfix();
|
31
32
|
}
|
32
33
|
|
33
34
|
// Set font for forms
|
@@ -35,14 +36,14 @@ label,
|
|
35
36
|
input,
|
36
37
|
select,
|
37
38
|
textarea {
|
38
|
-
@include sans-serif(normal,13px,normal);
|
39
|
+
@include font-sans-serif(normal,13px,normal);
|
39
40
|
}
|
40
41
|
|
41
42
|
// Float labels left
|
42
43
|
label {
|
43
44
|
padding-top: 6px;
|
44
|
-
font-size:
|
45
|
-
line-height:
|
45
|
+
font-size: $basefont;
|
46
|
+
line-height: $baseline;
|
46
47
|
float: left;
|
47
48
|
width: 130px;
|
48
49
|
text-align: right;
|
@@ -50,7 +51,7 @@ label {
|
|
50
51
|
}
|
51
52
|
|
52
53
|
// Shift over the inside div to align all label's relevant content
|
53
|
-
|
54
|
+
form .input {
|
54
55
|
margin-left: 150px;
|
55
56
|
}
|
56
57
|
|
@@ -69,7 +70,7 @@ select,
|
|
69
70
|
width: 210px;
|
70
71
|
height: $baseline;
|
71
72
|
padding: 4px;
|
72
|
-
font-size:
|
73
|
+
font-size: $basefont;
|
73
74
|
line-height: $baseline;
|
74
75
|
color: $gray;
|
75
76
|
border: 1px solid #ccc;
|
@@ -89,11 +90,11 @@ input[type=radio] {
|
|
89
90
|
}
|
90
91
|
|
91
92
|
input[type=file] {
|
92
|
-
background-color:
|
93
|
+
background-color: $white;
|
93
94
|
padding: initial;
|
94
95
|
border: initial;
|
95
96
|
line-height: initial;
|
96
|
-
@include
|
97
|
+
@include box-shadow(none);
|
97
98
|
}
|
98
99
|
|
99
100
|
input[type=button],
|
@@ -105,19 +106,27 @@ input[type=submit] {
|
|
105
106
|
|
106
107
|
select,
|
107
108
|
input[type=file] {
|
108
|
-
height: $baseline * 1.5;
|
109
|
+
height: $baseline * 1.5; // In IE7, the height of the select element cannot be changed by height, only font-size
|
109
110
|
line-height: $baseline * 1.5;
|
111
|
+
*margin-top: 4px; /* For IE7, add top margin to align select with labels */
|
112
|
+
}
|
113
|
+
|
114
|
+
// Make multiple select elements height not fixed
|
115
|
+
select[multiple] {
|
116
|
+
height: inherit;
|
110
117
|
}
|
111
118
|
|
112
119
|
textarea {
|
113
120
|
height: auto;
|
114
121
|
}
|
115
122
|
|
123
|
+
// For text that needs to appear as an input but should not be an input
|
116
124
|
.uneditable-input {
|
117
|
-
background-color:
|
125
|
+
background-color: $white;
|
118
126
|
display: block;
|
119
|
-
border-color: #
|
120
|
-
@include
|
127
|
+
border-color: #eee;
|
128
|
+
@include box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
|
129
|
+
cursor: not-allowed;
|
121
130
|
}
|
122
131
|
|
123
132
|
// Placeholder text gets special styles; can't be bundled together though for some reason
|
@@ -130,21 +139,27 @@ textarea {
|
|
130
139
|
|
131
140
|
// Focus states
|
132
141
|
input,
|
133
|
-
|
142
|
+
textarea {
|
134
143
|
$transition: border linear .2s, box-shadow linear .2s;
|
135
144
|
@include transition($transition);
|
136
|
-
@include
|
145
|
+
@include box-shadow(inset 0 1px 3px rgba(0,0,0,.1));
|
137
146
|
}
|
138
147
|
input:focus,
|
139
148
|
textarea:focus {
|
140
|
-
outline:
|
149
|
+
outline: 0;
|
141
150
|
border-color: rgba(82,168,236,.8);
|
142
151
|
$shadow: inset 0 1px 3px rgba(0,0,0,.1), 0 0 8px rgba(82,168,236,.6);
|
143
|
-
@include
|
152
|
+
@include box-shadow($shadow);
|
153
|
+
}
|
154
|
+
input[type=file]:focus,
|
155
|
+
input[type=checkbox]:focus,
|
156
|
+
select:focus {
|
157
|
+
@include box-shadow(none); // override for file inputs
|
158
|
+
outline: 1px dotted #666; // Selet elements don't get box-shadow styles, so instead we do outline
|
144
159
|
}
|
145
160
|
|
146
161
|
// Error styles
|
147
|
-
form div.error {
|
162
|
+
form div.clearfix.error {
|
148
163
|
background: lighten($red, 57%);
|
149
164
|
padding: 10px 0;
|
150
165
|
margin: -10px 0 10px;
|
@@ -158,10 +173,10 @@ form div.error {
|
|
158
173
|
input,
|
159
174
|
textarea {
|
160
175
|
border-color: $error-text;
|
161
|
-
@include
|
176
|
+
@include box-shadow(0 0 3px rgba(171,41,32,.25));
|
162
177
|
&:focus {
|
163
178
|
border-color: darken($error-text, 10%);
|
164
|
-
@include
|
179
|
+
@include box-shadow(0 0 6px rgba(171,41,32,.5));
|
165
180
|
}
|
166
181
|
}
|
167
182
|
.input-prepend,
|
@@ -175,35 +190,87 @@ form div.error {
|
|
175
190
|
}
|
176
191
|
|
177
192
|
// Form element sizes
|
178
|
-
.input-
|
193
|
+
// TODO v2: remove duplication here and just stick to .input-[size] in light of adding .spanN sizes
|
194
|
+
.input-mini,
|
195
|
+
input.mini,
|
196
|
+
textarea.mini,
|
197
|
+
select.mini {
|
179
198
|
width: 60px;
|
180
199
|
}
|
181
|
-
.input-small,
|
200
|
+
.input-small,
|
201
|
+
input.small,
|
202
|
+
textarea.small,
|
203
|
+
select.small {
|
182
204
|
width: 90px;
|
183
205
|
}
|
184
|
-
.input-medium,
|
206
|
+
.input-medium,
|
207
|
+
input.medium,
|
208
|
+
textarea.medium,
|
209
|
+
select.medium {
|
185
210
|
width: 150px;
|
186
211
|
}
|
187
|
-
.input-large,
|
212
|
+
.input-large,
|
213
|
+
input.large,
|
214
|
+
textarea.large,
|
215
|
+
select.large {
|
188
216
|
width: 210px;
|
189
217
|
}
|
190
|
-
.input-xlarge,
|
218
|
+
.input-xlarge,
|
219
|
+
input.xlarge,
|
220
|
+
textarea.xlarge,
|
221
|
+
select.xlarge {
|
191
222
|
width: 270px;
|
192
223
|
}
|
193
|
-
.input-xxlarge,
|
224
|
+
.input-xxlarge,
|
225
|
+
input.xxlarge,
|
226
|
+
textarea.xxlarge,
|
227
|
+
select.xxlarge {
|
194
228
|
width: 530px;
|
195
229
|
}
|
196
230
|
textarea.xxlarge {
|
197
|
-
overflow-y:
|
231
|
+
overflow-y: auto;
|
198
232
|
}
|
199
233
|
|
200
|
-
//
|
201
|
-
input
|
202
|
-
|
203
|
-
|
204
|
-
|
234
|
+
// Grid style input sizes
|
235
|
+
// This is a duplication of the main grid .columns() mixin, but subtracts 10px to account for input padding and border
|
236
|
+
@mixin formColumns($columnSpan: 1) {
|
237
|
+
display: inline-block;
|
238
|
+
float: none;
|
239
|
+
width: (($gridColumnWidth - 10) * $columnSpan) + (($gridColumnWidth - 10) * ($columnSpan - 1));
|
240
|
+
margin-left: 0;
|
241
|
+
}
|
242
|
+
input,
|
243
|
+
textarea,
|
244
|
+
select {
|
245
|
+
// Default columns
|
246
|
+
&.span1 { @include formColumns(1); }
|
247
|
+
&.span2 { @include formColumns(2); }
|
248
|
+
&.span3 { @include formColumns(3); }
|
249
|
+
&.span4 { @include formColumns(4); }
|
250
|
+
&.span5 { @include formColumns(5); }
|
251
|
+
&.span6 { @include formColumns(6); }
|
252
|
+
&.span7 { @include formColumns(7); }
|
253
|
+
&.span8 { @include formColumns(8); }
|
254
|
+
&.span9 { @include formColumns(9); }
|
255
|
+
&.span10 { @include formColumns(10); }
|
256
|
+
&.span11 { @include formColumns(11); }
|
257
|
+
&.span12 { @include formColumns(12); }
|
258
|
+
&.span13 { @include formColumns(13); }
|
259
|
+
&.span14 { @include formColumns(14); }
|
260
|
+
&.span15 { @include formColumns(15); }
|
261
|
+
&.span16 { @include formColumns(16); }
|
262
|
+
}
|
263
|
+
|
264
|
+
// Disabled and read-only inputs
|
265
|
+
input[disabled],
|
266
|
+
select[disabled],
|
267
|
+
textarea[disabled],
|
268
|
+
input[readonly],
|
269
|
+
select[readonly],
|
270
|
+
textarea[readonly] {
|
271
|
+
background-color: #f5f5f5;
|
205
272
|
border-color: #ddd;
|
206
|
-
|
273
|
+
cursor: not-allowed;
|
207
274
|
}
|
208
275
|
|
209
276
|
// Actions (the buttons)
|
@@ -228,7 +295,7 @@ input.disabled {
|
|
228
295
|
// Help Text
|
229
296
|
.help-inline,
|
230
297
|
.help-block {
|
231
|
-
font-size:
|
298
|
+
font-size: $basefont - 2;
|
232
299
|
line-height: $baseline;
|
233
300
|
color: $grayLight;
|
234
301
|
}
|
@@ -268,20 +335,22 @@ input.disabled {
|
|
268
335
|
@include border-radius(0 3px 3px 0);
|
269
336
|
}
|
270
337
|
.add-on {
|
338
|
+
position: relative;
|
271
339
|
background: #f5f5f5;
|
340
|
+
border: 1px solid #ccc;
|
341
|
+
z-index: 2;
|
272
342
|
float: left;
|
273
343
|
display: block;
|
274
344
|
width: auto;
|
275
345
|
min-width: 16px;
|
346
|
+
height: 18px;
|
276
347
|
padding: 4px 4px 4px 5px;
|
277
|
-
|
348
|
+
margin-right: -1px;
|
278
349
|
font-weight: normal;
|
279
350
|
line-height: 18px;
|
280
|
-
|
351
|
+
color: $grayLight;
|
281
352
|
text-align: center;
|
282
|
-
text-shadow: 0 1px 0
|
283
|
-
border: 1px solid #ccc;
|
284
|
-
border-right-width: 0;
|
353
|
+
text-shadow: 0 1px 0 $white;
|
285
354
|
@include border-radius(3px 0 0 3px);
|
286
355
|
}
|
287
356
|
.active {
|
@@ -301,8 +370,8 @@ input.disabled {
|
|
301
370
|
}
|
302
371
|
.add-on {
|
303
372
|
@include border-radius(0 3px 3px 0);
|
304
|
-
|
305
|
-
|
373
|
+
margin-right: 0;
|
374
|
+
margin-left: -1px;
|
306
375
|
}
|
307
376
|
}
|
308
377
|
|
@@ -314,31 +383,34 @@ input.disabled {
|
|
314
383
|
display: block;
|
315
384
|
padding: 0;
|
316
385
|
width: 100%;
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
small {
|
329
|
-
font-size: 12px;
|
330
|
-
font-weight: normal;
|
331
|
-
}
|
332
|
-
}
|
333
|
-
ul.inputs-list {
|
334
|
-
margin-left: 25px;
|
335
|
-
margin-bottom: 10px;
|
336
|
-
padding-top: 0;
|
386
|
+
}
|
387
|
+
label {
|
388
|
+
display: block;
|
389
|
+
float: none;
|
390
|
+
width: auto;
|
391
|
+
padding: 0;
|
392
|
+
line-height: $baseline;
|
393
|
+
text-align: left;
|
394
|
+
white-space: normal;
|
395
|
+
strong {
|
396
|
+
color: $gray;
|
337
397
|
}
|
338
|
-
|
339
|
-
|
398
|
+
small {
|
399
|
+
font-size: $basefont - 2;
|
400
|
+
font-weight: normal;
|
340
401
|
}
|
341
402
|
}
|
403
|
+
.inputs-list {
|
404
|
+
margin-left: 25px;
|
405
|
+
margin-bottom: 10px;
|
406
|
+
padding-top: 0;
|
407
|
+
}
|
408
|
+
&:first-child {
|
409
|
+
padding-top: 6px;
|
410
|
+
}
|
411
|
+
li + li {
|
412
|
+
padding-top: 2px;
|
413
|
+
}
|
342
414
|
input[type=radio],
|
343
415
|
input[type=checkbox] {
|
344
416
|
margin-bottom: 0;
|
@@ -352,7 +424,7 @@ input.disabled {
|
|
352
424
|
padding-top: $baseline / 2;
|
353
425
|
}
|
354
426
|
legend {
|
355
|
-
|
427
|
+
padding-left: 0;
|
356
428
|
}
|
357
429
|
label {
|
358
430
|
display: block;
|
@@ -379,7 +451,7 @@ input.disabled {
|
|
379
451
|
}
|
380
452
|
}
|
381
453
|
}
|
382
|
-
div.error {
|
454
|
+
div.clearfix.error {
|
383
455
|
padding-top: 10px;
|
384
456
|
padding-bottom: 10px;
|
385
457
|
padding-left: 10px;
|