anjlab-bootstrap-rails 3.0.0.0.alpha1 → 3.0.0.rc1

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +14 -27
  3. data/Rakefile +11 -35
  4. data/{vendor → app}/assets/javascripts/twitter/bootstrap.js +6 -6
  5. data/{vendor → app}/assets/javascripts/twitter/bootstrap/affix.js +9 -3
  6. data/{vendor → app}/assets/javascripts/twitter/bootstrap/alert.js +4 -2
  7. data/{vendor → app}/assets/javascripts/twitter/bootstrap/button.js +6 -4
  8. data/{vendor → app}/assets/javascripts/twitter/bootstrap/carousel.js +22 -12
  9. data/{vendor → app}/assets/javascripts/twitter/bootstrap/collapse.js +69 -43
  10. data/{vendor → app}/assets/javascripts/twitter/bootstrap/dropdown.js +22 -13
  11. data/{vendor → app}/assets/javascripts/twitter/bootstrap/modal.js +37 -38
  12. data/{vendor → app}/assets/javascripts/twitter/bootstrap/popover.js +11 -5
  13. data/{vendor → app}/assets/javascripts/twitter/bootstrap/scrollspy.js +6 -4
  14. data/{vendor → app}/assets/javascripts/twitter/bootstrap/tab.js +4 -2
  15. data/{vendor → app}/assets/javascripts/twitter/bootstrap/tooltip.js +49 -38
  16. data/{vendor → app}/assets/javascripts/twitter/bootstrap/transition.js +10 -1
  17. data/{vendor → app}/assets/stylesheets/twitter/bootstrap.scss +0 -0
  18. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_accordion.scss +7 -10
  19. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_alerts.scss +11 -34
  20. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_badges.scss +8 -15
  21. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_bootstrap.scss +0 -1
  22. data/app/assets/stylesheets/twitter/bootstrap/_breadcrumbs.scss +23 -0
  23. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_button-groups.scss +23 -22
  24. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_buttons.scss +21 -24
  25. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_carousel.scss +46 -32
  26. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_close.scss +3 -3
  27. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_code.scss +6 -12
  28. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_component-animations.scss +10 -4
  29. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_dropdowns.scss +46 -101
  30. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_forms.scss +139 -179
  31. data/app/assets/stylesheets/twitter/bootstrap/_grid.scss +155 -0
  32. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_jumbotron.scss +1 -4
  33. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_labels.scss +7 -31
  34. data/app/assets/stylesheets/twitter/bootstrap/_list-group.scss +89 -0
  35. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_media.scss +8 -6
  36. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_mixins.scss +152 -131
  37. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_modals.scss +11 -12
  38. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_navbar.scss +90 -66
  39. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_navs.scss +56 -68
  40. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_normalize.scss +0 -0
  41. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_pager.scss +4 -3
  42. data/app/assets/stylesheets/twitter/bootstrap/_pagination.scss +108 -0
  43. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_panels.scss +8 -2
  44. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_popovers.scss +22 -20
  45. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_print.scss +26 -0
  46. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_progress-bars.scss +5 -18
  47. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_responsive-utilities.scss +25 -25
  48. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_scaffolding.scss +24 -8
  49. data/app/assets/stylesheets/twitter/bootstrap/_tables.scss +211 -0
  50. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_thumbnails.scss +2 -3
  51. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_tooltip.scss +26 -2
  52. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_type.scss +31 -49
  53. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_utilities.scss +0 -0
  54. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_variables.scss +201 -54
  55. data/{vendor → app}/assets/stylesheets/twitter/bootstrap/_wells.scss +0 -0
  56. data/bootstrap-rails.gemspec +0 -1
  57. data/lib/bootstrap-rails/version.rb +1 -1
  58. metadata +54 -60
  59. data/vendor/assets/fonts/twitter/glyphiconshalflings-regular.eot +0 -0
  60. data/vendor/assets/fonts/twitter/glyphiconshalflings-regular.otf +0 -0
  61. data/vendor/assets/fonts/twitter/glyphiconshalflings-regular.svg +0 -175
  62. data/vendor/assets/fonts/twitter/glyphiconshalflings-regular.ttf +0 -0
  63. data/vendor/assets/fonts/twitter/glyphiconshalflings-regular.woff +0 -0
  64. data/vendor/assets/stylesheets/twitter/bootstrap/_breadcrumbs.scss +0 -28
  65. data/vendor/assets/stylesheets/twitter/bootstrap/_glyphicons.scss +0 -200
  66. data/vendor/assets/stylesheets/twitter/bootstrap/_grid.scss +0 -65
  67. data/vendor/assets/stylesheets/twitter/bootstrap/_list-group.scss +0 -96
  68. data/vendor/assets/stylesheets/twitter/bootstrap/_pagination.scss +0 -87
  69. data/vendor/assets/stylesheets/twitter/bootstrap/_tables.scss +0 -242
@@ -8,13 +8,13 @@
8
8
  font-size: ($font-size-base * 1.5);
9
9
  font-weight: bold;
10
10
  line-height: 1;
11
- color: #000;
12
- text-shadow: 0 1px 0 rgba(255,255,255,1);
11
+ color: $close-color;
12
+ text-shadow: $close-text-shadow;
13
13
  @include opacity(.2);
14
14
 
15
15
  &:hover,
16
16
  &:focus {
17
- color: #000;
17
+ color: $close-color;
18
18
  text-decoration: none;
19
19
  cursor: pointer;
20
20
  @include opacity(.5);
@@ -6,20 +6,17 @@
6
6
  // Inline and block code styles
7
7
  code,
8
8
  pre {
9
- padding: 0 3px 2px;
10
9
  font-family: $font-family-monospace;
11
- font-size: ($font-size-base - 2);
12
- color: $gray-dark;
13
- border-radius: 4px;
14
10
  }
15
11
 
16
12
  // Inline code
17
13
  code {
18
14
  padding: 2px 4px;
19
15
  font-size: 90%;
20
- color: #c7254e;
21
- background-color: #f9f2f4;
16
+ color: $code-color;
17
+ background-color: $code-bg;
22
18
  white-space: nowrap;
19
+ border-radius: 4px;
23
20
  }
24
21
 
25
22
  // Blocks of code
@@ -31,11 +28,9 @@ pre {
31
28
  line-height: $line-height-base;
32
29
  word-break: break-all;
33
30
  word-wrap: break-word;
34
- white-space: pre;
35
- white-space: pre-wrap;
36
- background-color: #f5f5f5;
37
- border: 1px solid #ccc; // IE8 fallback
38
- border: 1px solid rgba(0,0,0,.15);
31
+ color: $gray-dark;
32
+ background-color: $pre-bg;
33
+ border: 1px solid $pre-border-color;
39
34
  border-radius: $border-radius-base;
40
35
 
41
36
  // Make prettyprint styles more spaced out for readability
@@ -47,7 +42,6 @@ pre {
47
42
  code {
48
43
  padding: 0;
49
44
  color: inherit;
50
- white-space: pre;
51
45
  white-space: pre-wrap;
52
46
  background-color: transparent;
53
47
  border: 0;
@@ -2,6 +2,10 @@
2
2
  // Component animations
3
3
  // --------------------------------------------------
4
4
 
5
+ // Heads up!
6
+ //
7
+ // We don't use the `.opacity()` mixin here since it causes a bug with text
8
+ // fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.
5
9
 
6
10
  .fade {
7
11
  opacity: 0;
@@ -12,12 +16,14 @@
12
16
  }
13
17
 
14
18
  .collapse {
19
+ display: none;
20
+ &.in {
21
+ display: block;
22
+ }
23
+ }
24
+ .collapsing {
15
25
  position: relative;
16
26
  height: 0;
17
27
  overflow: hidden;
18
28
  @include transition(height .35s ease);
19
-
20
- &.in {
21
- height: auto;
22
- }
23
29
  }
@@ -11,7 +11,7 @@
11
11
  height: 0;
12
12
  margin-left: 2px;
13
13
  vertical-align: middle;
14
- border-top: 4px solid #000;
14
+ border-top: 4px solid $dropdown-caret-color;
15
15
  border-right: 4px solid transparent;
16
16
  border-left: 4px solid transparent;
17
17
  content: "";
@@ -31,7 +31,7 @@
31
31
  margin: 2px 0 0; // override default ul
32
32
  list-style: none;
33
33
  background-color: $dropdown-bg;
34
- border: 1px solid #ccc; // IE8 fallback
34
+ border: 1px solid $dropdown-fallback-border; // IE8 fallback
35
35
  border: 1px solid $dropdown-border;
36
36
  border-radius: $border-radius-base;
37
37
  @include box-shadow(0 6px 12px rgba(0,0,0,.175));
@@ -45,7 +45,7 @@
45
45
 
46
46
  // Dividers (basically an hr) within the dropdown
47
47
  .divider {
48
- @include nav-divider($dropdown-divider-top, $dropdown-divider-bottom);
48
+ @include nav-divider($dropdown-divider-bg);
49
49
  }
50
50
 
51
51
  // Links within the dropdown menu
@@ -62,42 +62,48 @@
62
62
 
63
63
  // Hover/Focus state
64
64
  // -----------
65
- .dropdown-menu > li > a:hover,
66
- .dropdown-menu > li > a:focus,
67
- .dropdown-submenu:hover > a,
68
- .dropdown-submenu:focus > a {
69
- text-decoration: none;
70
- color: $dropdown-link-hover-color;
71
- @include gradient-vertical($dropdown-link-hover-bg, darken($dropdown-link-hover-bg, 5%));
65
+ .dropdown-menu > li > a {
66
+ &:hover,
67
+ &:focus {
68
+ text-decoration: none;
69
+ color: $dropdown-link-hover-color;
70
+ @include gradient-vertical($start-color: $dropdown-link-hover-bg, $end-color: darken($dropdown-link-hover-bg, 5%));
71
+ }
72
72
  }
73
73
 
74
74
  // Active state
75
75
  // ------------
76
- .dropdown-menu > .active > a,
77
- .dropdown-menu > .active > a:hover,
78
- .dropdown-menu > .active > a:focus {
79
- color: $dropdown-link-active-color;
80
- text-decoration: none;
81
- outline: 0;
82
- @include gradient-vertical($dropdown-link-active-bg, darken($dropdown-link-active-bg, 5%));
76
+ .dropdown-menu > .active > a {
77
+ &,
78
+ &:hover,
79
+ &:focus {
80
+ color: $dropdown-link-active-color;
81
+ text-decoration: none;
82
+ outline: 0;
83
+ @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%));
84
+ }
83
85
  }
84
86
 
85
87
  // Disabled state
86
88
  // --------------
87
89
  // Gray out text and ensure the hover/focus state remains gray
88
- .dropdown-menu > .disabled > a,
89
- .dropdown-menu > .disabled > a:hover,
90
- .dropdown-menu > .disabled > a:focus {
91
- color: $gray-light;
90
+ .dropdown-menu > .disabled > a {
91
+ &,
92
+ &:hover,
93
+ &:focus {
94
+ color: $gray-light;
95
+ }
92
96
  }
93
97
  // Nuke hover/focus effects
94
- .dropdown-menu > .disabled > a:hover,
95
- .dropdown-menu > .disabled > a:focus {
96
- text-decoration: none;
97
- background-color: transparent;
98
- background-image: none; // Remove CSS gradient
99
- @include reset-filter();
100
- cursor: default;
98
+ .dropdown-menu > .disabled > a {
99
+ &:hover,
100
+ &:focus {
101
+ text-decoration: none;
102
+ background-color: transparent;
103
+ background-image: none; // Remove CSS gradient
104
+ @include reset-filter();
105
+ cursor: not-allowed;
106
+ }
101
107
  }
102
108
 
103
109
  // Open state for the dropdown
@@ -114,6 +120,17 @@
114
120
  }
115
121
  }
116
122
 
123
+ // Dropdown section headers
124
+ // ---------------------------
125
+ .dropdown-header {
126
+ display: block;
127
+ padding: 3px 20px;
128
+ font-size: $font-size-small;
129
+ line-height: $line-height-base;
130
+ color: $gray-light;
131
+ }
132
+
133
+
117
134
 
118
135
  // Backdrop to catch body clicks on mobile, etc.
119
136
  // ---------------------------
@@ -142,7 +159,7 @@
142
159
  // Reverse the caret
143
160
  .caret {
144
161
  border-top: 0;
145
- border-bottom: 4px solid #000;
162
+ border-bottom: 4px solid $dropdown-caret-color;
146
163
  content: "";
147
164
  }
148
165
  // Different positioning for bottom up menu
@@ -152,75 +169,3 @@
152
169
  margin-bottom: 1px;
153
170
  }
154
171
  }
155
-
156
- // Sub menus
157
- // ---------------------------
158
- .dropdown-submenu {
159
- position: relative;
160
- }
161
- // Default dropdowns
162
- .dropdown-submenu > .dropdown-menu {
163
- top: 0;
164
- left: 100%;
165
- margin-top: -6px;
166
- margin-left: -1px;
167
- border-top-left-radius: 0; // Nuke the closest corner as appropriate
168
- }
169
- .dropdown-submenu:hover > .dropdown-menu {
170
- display: block;
171
- }
172
-
173
- // Dropups
174
- .dropup .dropdown-submenu > .dropdown-menu {
175
- top: auto;
176
- bottom: 0;
177
- margin-top: 0;
178
- margin-bottom: -2px;
179
- border-bottom-left-radius: 0; // Nuke the closest corner as appropriate
180
- }
181
-
182
- // Caret to indicate there is a submenu
183
- .dropdown-submenu > a:after {
184
- display: block;
185
- content: " ";
186
- float: right;
187
- width: 0;
188
- height: 0;
189
- border-color: transparent;
190
- border-style: solid;
191
- border-width: 5px 0 5px 5px;
192
- border-left-color: darken($dropdown-bg, 20%);
193
- margin-top: 5px;
194
- margin-right: -10px;
195
- }
196
- .dropdown-submenu:hover > a:after {
197
- border-left-color: $dropdown-link-hover-color;
198
- }
199
-
200
- // Left aligned submenus
201
- .dropdown-submenu.pull-left {
202
- // Undo the float
203
- // Yes, this is awkward since .pull-left adds a float, but it sticks to our conventions elsewhere.
204
- float: none;
205
-
206
- // Positioning the submenu
207
- > .dropdown-menu {
208
- left: -100%;
209
- margin-left: 10px;
210
- border-top-right-radius: 0; // Remove the rounded corner here
211
- }
212
- }
213
-
214
- // Tweak nav headers
215
- // ---------------------------
216
- // Increase padding from 15px to 20px on sides
217
- .dropdown .dropdown-menu .nav-header {
218
- padding-left: 20px;
219
- padding-right: 20px;
220
- }
221
-
222
- // Typeahead
223
- // ---------------------------
224
- .typeahead {
225
- z-index: 1051;
226
- }
@@ -3,12 +3,9 @@
3
3
  // --------------------------------------------------
4
4
 
5
5
 
6
- // Non-controls
7
- // -------------------------
8
-
9
- form {
10
- margin: 0;
11
- }
6
+ // Normalize non-controls
7
+ //
8
+ // Restyle and baseline non-control form elements.
12
9
 
13
10
  fieldset {
14
11
  padding: 0;
@@ -25,7 +22,7 @@ legend {
25
22
  line-height: inherit;
26
23
  color: $gray-dark;
27
24
  border: 0;
28
- border-bottom: 1px solid #e5e5e5;
25
+ border-bottom: 1px solid $legend-border-color;
29
26
  }
30
27
 
31
28
  label {
@@ -34,75 +31,14 @@ label {
34
31
  font-weight: bold;
35
32
  }
36
33
 
37
- // Form controls
38
- // -------------------------
39
-
40
- // Shared size and type resets
41
- select,
42
- textarea,
43
- input[type="text"],
44
- input[type="password"],
45
- input[type="datetime"],
46
- input[type="datetime-local"],
47
- input[type="date"],
48
- input[type="month"],
49
- input[type="time"],
50
- input[type="week"],
51
- input[type="number"],
52
- input[type="email"],
53
- input[type="url"],
54
- input[type="search"],
55
- input[type="tel"],
56
- input[type="color"] {
57
- display: block;
58
- min-height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
59
- padding: $padding-base-vertical $padding-base-horizontal;
60
- font-size: $font-size-base;
61
- line-height: $line-height-base;
62
- color: $gray;
63
- vertical-align: middle;
64
- background-color: $input-bg;
65
- border: 1px solid $input-border;
66
- border-radius: $input-border-radius;
67
- @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
68
- @include transition((border-color ease-in-out .15s, box-shadow ease-in-out .15s));
69
-
70
- &:focus {
71
- border-color: rgba(82,168,236,.8);
72
- outline: 0;
73
- @include box-shadow((inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)));
74
- }
75
- }
76
34
 
77
- // Reset appearance properties for textual inputs and textarea
78
- // Can't be on input[type=*] selectors or it's too specific
79
- input,
80
- select,
81
- textarea {
82
- width: 100%;
83
- }
84
-
85
- // Reset width of input images, buttons, radios, checkboxes
86
- input[type="file"],
87
- input[type="image"],
88
- input[type="submit"],
89
- input[type="reset"],
90
- input[type="button"],
91
- input[type="radio"],
92
- input[type="checkbox"] {
93
- width: auto; // Override of generic input selector
94
- }
35
+ // Normalize form controls
95
36
 
96
37
  // Override content-box in Normalize (* isn't specific enough)
97
38
  input[type="search"] {
98
39
  @include box-sizing(border-box);
99
40
  }
100
41
 
101
- // Reset height since textareas have rows
102
- textarea {
103
- height: auto;
104
- }
105
-
106
42
  // Position radios and checkboxes better
107
43
  input[type="radio"],
108
44
  input[type="checkbox"] {
@@ -112,10 +48,8 @@ input[type="checkbox"] {
112
48
  }
113
49
 
114
50
  // Set the height of select and file controls to match text inputs
115
- select,
116
51
  input[type="file"] {
117
- height: $input-height-base; /* In IE7, the height of the select element cannot be changed by height, only font-size. TODO: Check if this is still needed when dropping IE7 support */
118
- line-height: $input-height-base;
52
+ display: block;
119
53
  }
120
54
 
121
55
  // Make multiple select elements height not fixed
@@ -124,7 +58,7 @@ select[size] {
124
58
  height: auto;
125
59
  }
126
60
 
127
- // Fix optgroup Firefox bug per https://github.com/twitter/bootstrap/issues/7611
61
+ // Fix optgroup Firefox bug per https://github.com/twbs/bootstrap/issues/7611
128
62
  select optgroup {
129
63
  font-size: inherit;
130
64
  font-style: inherit;
@@ -138,21 +72,101 @@ input[type="checkbox"]:focus {
138
72
  @include tab-focus();
139
73
  }
140
74
 
75
+ // Fix for Chrome number input
76
+ // Setting certain font-sizes causes the `I` bar to appear on hover of the bottom increment button.
77
+ // See https://github.com/twbs/bootstrap/issues/8350 for more.
78
+ input[type="number"] {
79
+ &::-webkit-outer-spin-button,
80
+ &::-webkit-inner-spin-button {
81
+ height: auto;
82
+ }
83
+ }
141
84
 
142
- // Placeholder
143
- // -------------------------
144
85
 
145
- // Placeholder text gets special styles because when browsers invalidate entire lines if it doesn't understand a selector
146
- input,
147
- textarea {
86
+ // Placeholder
87
+ //
88
+ // Placeholder text gets special styles because when browsers invalidate entire
89
+ // lines if it doesn't understand a selector/
90
+ .form-control {
148
91
  @include placeholder();
149
92
  }
150
93
 
151
94
 
152
- // CHECKBOXES & RADIOS
153
- // -------------------
95
+ // Common form controls
96
+ //
97
+ // Shared size and type resets for form controls. Apply `.form-control` to any
98
+ // of the following form controls:
99
+ //
100
+ // select
101
+ // textarea
102
+ // input[type="text"]
103
+ // input[type="password"]
104
+ // input[type="datetime"]
105
+ // input[type="datetime-local"]
106
+ // input[type="date"]
107
+ // input[type="month"]
108
+ // input[type="time"]
109
+ // input[type="week"]
110
+ // input[type="number"]
111
+ // input[type="email"]
112
+ // input[type="url"]
113
+ // input[type="search"]
114
+ // input[type="tel"]
115
+ // input[type="color"]
116
+
117
+ .form-control {
118
+ display: block;
119
+ width: 100%;
120
+ height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
121
+ padding: $padding-base-vertical $padding-base-horizontal;
122
+ font-size: $font-size-base;
123
+ line-height: $line-height-base;
124
+ color: $gray;
125
+ vertical-align: middle;
126
+ background-color: $input-bg;
127
+ border: 1px solid $input-border;
128
+ border-radius: $input-border-radius;
129
+ @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
130
+ @include transition((border-color ease-in-out .15s, box-shadow ease-in-out .15s));
131
+
132
+ &:focus {
133
+ border-color: rgba(82,168,236,.8);
134
+ outline: 0;
135
+ @include box-shadow((inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)));
136
+ }
137
+ }
138
+
139
+ // Disabled and read-only inputs
140
+ // Note: HTML5 says that inputs under a fieldset > legend:first-child won't be
141
+ // disabled if the fieldset is disabled. Due to implementation difficulty,
142
+ // we don't honor that edge case; we style them as disabled anyway.
143
+ .form-control[disabled],
144
+ .form-control[readonly],
145
+ fieldset[disabled] .form-control {
146
+ cursor: not-allowed;
147
+ background-color: $input-bg-disabled;
148
+ }
149
+
150
+ // Reset height for `textarea`s
151
+ textarea.form-control {
152
+ height: auto;
153
+ }
154
+
155
+
156
+ // Form groups
157
+ //
158
+ // Designed to help with the organization and spacing of vertical forms. For
159
+ // horizontal forms, use the predefined grid classes.
160
+
161
+ .form-group {
162
+ margin-bottom: 15px;
163
+ }
164
+
165
+
166
+ // Checkboxes and radios
167
+ //
168
+ // Indent the labels to position radios/checkboxes as hanging controls.
154
169
 
155
- // Indent the labels to position radios/checkboxes as hanging
156
170
  .radio,
157
171
  .checkbox {
158
172
  display: block;
@@ -180,19 +194,10 @@ textarea {
180
194
  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
181
195
  }
182
196
 
183
- /*
184
- // Move the options list down to align with labels
185
- .controls > .radio:first-child,
186
- .controls > .checkbox:first-child {
187
- padding-top: 5px; // has to be padding because margin collaspes
188
- }
189
- */
190
-
191
197
  // Radios and checkboxes on same line
192
198
  .radio-inline,
193
199
  .checkbox-inline {
194
200
  display: inline-block;
195
- // padding-top: 5px;
196
201
  padding-left: 20px;
197
202
  margin-bottom: 0;
198
203
  vertical-align: middle;
@@ -207,104 +212,60 @@ textarea {
207
212
 
208
213
 
209
214
 
210
- // INPUT SIZES
211
- // -----------
215
+ // Form control sizing
216
+ //
217
+ // Relative text size, padding, and border-radii changes for form controls. For
218
+ // horizontal sizing, wrap controls in the predefined grid classes. `<select>`
219
+ // element gets special love because it's special, and that's a fact!
212
220
 
213
- select,
214
- textarea,
215
- input[type="text"],
216
- input[type="password"],
217
- input[type="datetime"],
218
- input[type="datetime-local"],
219
- input[type="date"],
220
- input[type="month"],
221
- input[type="time"],
222
- input[type="week"],
223
- input[type="number"],
224
- input[type="email"],
225
- input[type="url"],
226
- input[type="search"],
227
- input[type="tel"],
228
- input[type="color"] {
221
+ .form-control {
229
222
  &.input-large {
223
+ height: $input-height-large;
230
224
  padding: $padding-large-vertical $padding-large-horizontal;
231
225
  font-size: $font-size-large;
232
226
  border-radius: $border-radius-large;
233
227
  }
234
228
  &.input-small {
235
- min-height: $input-height-small;
229
+ height: $input-height-small;
236
230
  padding: $padding-small-vertical $padding-small-horizontal;
237
231
  font-size: $font-size-small;
238
232
  border-radius: $border-radius-small;
239
233
  }
240
234
  }
241
-
242
-
243
- // DISABLED STATE
244
- // --------------
245
-
246
- // Disabled and read-only inputs
247
- // Note: HTML5 says that inputs under a fieldset > legend:first-child won't be
248
- // disabled if the fieldset is disabled. Due to implementation difficulty,
249
- // we don't honor that edge case; we style them as disabled anyway.
250
- input,
251
- select,
252
- textarea {
253
- &[disabled],
254
- &[readonly],
255
- fieldset[disabled] & {
256
- cursor: not-allowed;
257
- background-color: $input-bg-disabled;
235
+ select {
236
+ &.input-large {
237
+ height: $input-height-large;
238
+ line-height: $input-height-large;
258
239
  }
259
- }
260
- // Explicitly reset the colors here
261
- input[type="radio"],
262
- input[type="checkbox"] {
263
- &[disabled],
264
- &[readonly],
265
- fieldset[disabled] & {
266
- background-color: transparent;
240
+ &.input-small {
241
+ height: $input-height-small;
242
+ line-height: $input-height-small;
267
243
  }
268
244
  }
269
245
 
270
246
 
271
-
272
-
273
- // FORM FIELD FEEDBACK STATES
274
- // --------------------------
247
+ // Form control feedback states
248
+ //
249
+ // Apply contextual and semantic states to individual form controls.
275
250
 
276
251
  // Warning
277
252
  .has-warning {
278
- @include form-field-validation($state-warning-text, $state-warning-text, $state-warning-bg);
253
+ @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
279
254
  }
280
255
  // Error
281
256
  .has-error {
282
- @include form-field-validation($state-danger-text, $state-danger-text, $state-danger-bg);
257
+ @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
283
258
  }
284
259
  // Success
285
260
  .has-success {
286
- @include form-field-validation($state-success-text, $state-success-text, $state-success-bg);
261
+ @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
287
262
  }
288
263
 
289
- // HTML5 invalid states
290
- // Shares styles with the .control-group.error above
291
- input:focus:invalid,
292
- textarea:focus:invalid,
293
- select:focus:invalid {
294
- color: #b94a48;
295
- border-color: #ee5f5b;
296
- &:focus {
297
- border-color: darken(#ee5f5b, 10%);
298
- $shadow: 0 0 6px lighten(#ee5f5b, 20%);
299
- @include box-shadow($shadow);
300
- }
301
- }
302
-
303
-
304
-
305
264
 
306
- // HELP TEXT
307
- // ---------
265
+ // Help text
266
+ //
267
+ // Apply to any element you wish to create light text for placement immediately
268
+ // below a form control. Use for general help, formatting, or instructional text.
308
269
 
309
270
  .help-block {
310
271
  display: block; // account for any element using help-block
@@ -322,6 +283,7 @@ select:focus:invalid {
322
283
  // -------------------------
323
284
  .input-group {
324
285
  display: table;
286
+ border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
325
287
 
326
288
  // Undo padding and float of grid classes
327
289
  &.col {
@@ -330,8 +292,7 @@ select:focus:invalid {
330
292
  padding-right: 0;
331
293
  }
332
294
 
333
- input,
334
- select {
295
+ .form-control {
335
296
  width: 100%;
336
297
  margin-bottom: 0;
337
298
  }
@@ -341,7 +302,7 @@ select:focus:invalid {
341
302
  // -------------------------
342
303
  .input-group-addon,
343
304
  .input-group-btn,
344
- .input-group input {
305
+ .input-group .form-control {
345
306
  display: table-cell;
346
307
 
347
308
  &:not(:first-child):not(:last-child) {
@@ -352,6 +313,7 @@ select:focus:invalid {
352
313
  .input-group-addon,
353
314
  .input-group-btn {
354
315
  width: 1%;
316
+ white-space: nowrap;
355
317
  vertical-align: middle; // Match the inputs
356
318
  }
357
319
 
@@ -359,14 +321,13 @@ select:focus:invalid {
359
321
  // -------------------------
360
322
  .input-group-addon {
361
323
  @include box-sizing(border-box);
362
- padding: 6px 8px;
324
+ padding: $padding-base-vertical $padding-base-horizontal;
363
325
  font-size: $font-size-base;
364
326
  font-weight: normal;
365
327
  line-height: $line-height-base;
366
328
  text-align: center;
367
- text-shadow: 0 1px 0 #fff;
368
329
  background-color: $gray-lighter;
369
- border: 1px solid #ccc;
330
+ border: 1px solid $input-group-addon-border-color;
370
331
  border-radius: $border-radius-base;
371
332
 
372
333
  &.input-small {
@@ -382,7 +343,7 @@ select:focus:invalid {
382
343
  }
383
344
 
384
345
  // Reset rounded corners
385
- .input-group input:first-child,
346
+ .input-group .form-control:first-child,
386
347
  .input-group-addon:first-child,
387
348
  .input-group-btn:first-child > .btn,
388
349
  .input-group-btn:first-child > .dropdown-toggle,
@@ -392,7 +353,7 @@ select:focus:invalid {
392
353
  .input-group-addon:first-child {
393
354
  border-right: 0;
394
355
  }
395
- .input-group input:last-child,
356
+ .input-group .form-control:last-child,
396
357
  .input-group-addon:last-child,
397
358
  .input-group-btn:last-child > .btn,
398
359
  .input-group-btn:last-child > .dropdown-toggle,
@@ -411,9 +372,9 @@ select:focus:invalid {
411
372
  }
412
373
  .input-group-btn > .btn {
413
374
  position: relative;
414
- float: left; // Collapse white-space
375
+ // Jankily prevent input button groups from wrapping
415
376
  + .btn {
416
- margin-left: -1px;
377
+ margin-left: -4px;
417
378
  }
418
379
  // Bring the "active" button to the front
419
380
  &:hover,
@@ -427,9 +388,7 @@ select:focus:invalid {
427
388
  // --------------------------------------------------
428
389
 
429
390
  @mixin form-inline {
430
- input,
431
- select,
432
- textarea,
391
+ .form-control,
433
392
  .radio,
434
393
  .checkbox {
435
394
  display: inline-block;
@@ -447,17 +406,18 @@ select:focus:invalid {
447
406
  // --------------------------------------------------
448
407
  // Horizontal forms are built on grid classes.
449
408
 
409
+ .form-horizontal .control-label {
410
+ padding-top: 6px;
411
+ }
412
+
450
413
  .form-horizontal {
451
- .row + .row {
452
- margin-top: 15px;
453
- }
454
- .control-label {
455
- padding-top: 6px;
414
+ .form-group {
415
+ @include make-row();
456
416
  }
457
417
  }
458
418
 
459
- // Only right aline form labels here when the columns stop stacking
460
- @media (min-width: 768px) {
419
+ // Only right align form labels here when the columns stop stacking
420
+ @media (min-width: $screen-tablet) {
461
421
  .form-horizontal .control-label {
462
422
  text-align: right;
463
423
  }