toronto 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (217) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.travis.yml +8 -0
  4. data/Gemfile +28 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.md +179 -0
  7. data/Rakefile +147 -0
  8. data/lib/generators/toronto/install/install_generator.rb +68 -0
  9. data/lib/generators/toronto/install/templates/assets/stylesheets/bootstrap-variables.less +861 -0
  10. data/lib/generators/toronto/install/templates/assets/stylesheets/bootstrap-variables.scss +866 -0
  11. data/lib/generators/toronto/install/templates/assets/stylesheets/starter.css +22 -0
  12. data/lib/generators/toronto/install/templates/assets/stylesheets/starter.less +23 -0
  13. data/lib/generators/toronto/install/templates/assets/stylesheets/starter.scss +23 -0
  14. data/lib/generators/toronto/install/templates/config/initializers/locales.rb +4 -0
  15. data/lib/generators/toronto/install/templates/form_builders/form_builder/_form.html.erb +39 -0
  16. data/lib/generators/toronto/install/templates/form_builders/form_builder/_form.html.haml +26 -0
  17. data/lib/generators/toronto/install/templates/form_builders/form_builder/_form.html.slim +21 -0
  18. data/lib/generators/toronto/install/templates/helpers/menu_helper.rb +7 -0
  19. data/lib/generators/toronto/install/templates/layouts/starter.html.erb +57 -0
  20. data/lib/generators/toronto/install/templates/layouts/starter.html.haml +48 -0
  21. data/lib/generators/toronto/install/templates/layouts/starter.html.slim +53 -0
  22. data/lib/generators/toronto/install/templates/lib/rails/generators/haml/scaffold/scaffold_generator.rb +51 -0
  23. data/lib/generators/toronto/install/templates/lib/templates/erb/controller/view.html.erb +4 -0
  24. data/lib/generators/toronto/install/templates/lib/templates/erb/scaffold/edit.html.erb +13 -0
  25. data/lib/generators/toronto/install/templates/lib/templates/erb/scaffold/index.html.erb +33 -0
  26. data/lib/generators/toronto/install/templates/lib/templates/erb/scaffold/new.html.erb +9 -0
  27. data/lib/generators/toronto/install/templates/lib/templates/erb/scaffold/show.html.erb +19 -0
  28. data/lib/generators/toronto/install/templates/lib/templates/haml/controller/view.html.haml +3 -0
  29. data/lib/generators/toronto/install/templates/lib/templates/haml/scaffold/edit.html.haml +10 -0
  30. data/lib/generators/toronto/install/templates/lib/templates/haml/scaffold/en.yml +23 -0
  31. data/lib/generators/toronto/install/templates/lib/templates/haml/scaffold/fr.yml +23 -0
  32. data/lib/generators/toronto/install/templates/lib/templates/haml/scaffold/index.html.haml +30 -0
  33. data/lib/generators/toronto/install/templates/lib/templates/haml/scaffold/new.html.haml +7 -0
  34. data/lib/generators/toronto/install/templates/lib/templates/haml/scaffold/show.html.haml +18 -0
  35. data/lib/generators/toronto/install/templates/lib/templates/slim/controller/view.html.slim +5 -0
  36. data/lib/generators/toronto/install/templates/lib/templates/slim/scaffold/edit.html.slim +12 -0
  37. data/lib/generators/toronto/install/templates/lib/templates/slim/scaffold/index.html.slim +31 -0
  38. data/lib/generators/toronto/install/templates/lib/templates/slim/scaffold/new.html.slim +9 -0
  39. data/lib/generators/toronto/install/templates/lib/templates/slim/scaffold/show.html.slim +16 -0
  40. data/lib/toronto/version.rb +3 -0
  41. data/lib/toronto.rb +22 -0
  42. data/readme-template.md.erb +163 -0
  43. data/test/dummy/Rakefile +7 -0
  44. data/test/dummy/app/assets/javascripts/application.js +13 -0
  45. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  46. data/test/dummy/config/application.rb +68 -0
  47. data/test/dummy/config/boot.rb +6 -0
  48. data/test/dummy/config/environment.rb +5 -0
  49. data/test/dummy/config/environments/test.rb +39 -0
  50. data/test/dummy/config.ru +4 -0
  51. data/test/generators/bootstrap/install_generator_test.rb +104 -0
  52. data/test/test_helper.rb +7 -0
  53. data/toronto.gemspec +30 -0
  54. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
  55. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +288 -0
  56. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  57. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  58. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  59. data/vendor/assets/javascripts/bootstrap/affix.js +162 -0
  60. data/vendor/assets/javascripts/bootstrap/alert.js +94 -0
  61. data/vendor/assets/javascripts/bootstrap/button.js +116 -0
  62. data/vendor/assets/javascripts/bootstrap/carousel.js +237 -0
  63. data/vendor/assets/javascripts/bootstrap/collapse.js +211 -0
  64. data/vendor/assets/javascripts/bootstrap/dropdown.js +161 -0
  65. data/vendor/assets/javascripts/bootstrap/modal.js +339 -0
  66. data/vendor/assets/javascripts/bootstrap/popover.js +108 -0
  67. data/vendor/assets/javascripts/bootstrap/scrollspy.js +172 -0
  68. data/vendor/assets/javascripts/bootstrap/tab.js +153 -0
  69. data/vendor/assets/javascripts/bootstrap/tooltip.js +476 -0
  70. data/vendor/assets/javascripts/bootstrap/transition.js +59 -0
  71. data/vendor/assets/javascripts/bootstrap.js +12 -0
  72. data/vendor/assets/stylesheets/bootstrap.css.erb +6584 -0
  73. data/vendor/assets/stylesheets/bootstrap.css.map +1 -0
  74. data/vendor/twitter/bootstrap/less/alerts.less +73 -0
  75. data/vendor/twitter/bootstrap/less/badges.less +66 -0
  76. data/vendor/twitter/bootstrap/less/bootstrap.less +50 -0
  77. data/vendor/twitter/bootstrap/less/breadcrumbs.less +26 -0
  78. data/vendor/twitter/bootstrap/less/button-groups.less +243 -0
  79. data/vendor/twitter/bootstrap/less/buttons.less +160 -0
  80. data/vendor/twitter/bootstrap/less/carousel.less +269 -0
  81. data/vendor/twitter/bootstrap/less/close.less +34 -0
  82. data/vendor/twitter/bootstrap/less/code.less +69 -0
  83. data/vendor/twitter/bootstrap/less/component-animations.less +33 -0
  84. data/vendor/twitter/bootstrap/less/dropdowns.less +214 -0
  85. data/vendor/twitter/bootstrap/less/forms.less +574 -0
  86. data/vendor/twitter/bootstrap/less/glyphicons.less +305 -0
  87. data/vendor/twitter/bootstrap/less/grid.less +84 -0
  88. data/vendor/twitter/bootstrap/less/input-groups.less +166 -0
  89. data/vendor/twitter/bootstrap/less/jumbotron.less +50 -0
  90. data/vendor/twitter/bootstrap/less/labels.less +64 -0
  91. data/vendor/twitter/bootstrap/less/list-group.less +124 -0
  92. data/vendor/twitter/bootstrap/less/media.less +61 -0
  93. data/vendor/twitter/bootstrap/less/mixins/alerts.less +14 -0
  94. data/vendor/twitter/bootstrap/less/mixins/background-variant.less +8 -0
  95. data/vendor/twitter/bootstrap/less/mixins/border-radius.less +18 -0
  96. data/vendor/twitter/bootstrap/less/mixins/buttons.less +52 -0
  97. data/vendor/twitter/bootstrap/less/mixins/center-block.less +7 -0
  98. data/vendor/twitter/bootstrap/less/mixins/clearfix.less +22 -0
  99. data/vendor/twitter/bootstrap/less/mixins/forms.less +85 -0
  100. data/vendor/twitter/bootstrap/less/mixins/gradients.less +59 -0
  101. data/vendor/twitter/bootstrap/less/mixins/grid-framework.less +91 -0
  102. data/vendor/twitter/bootstrap/less/mixins/grid.less +122 -0
  103. data/vendor/twitter/bootstrap/less/mixins/hide-text.less +21 -0
  104. data/vendor/twitter/bootstrap/less/mixins/image.less +33 -0
  105. data/vendor/twitter/bootstrap/less/mixins/labels.less +12 -0
  106. data/vendor/twitter/bootstrap/less/mixins/list-group.less +29 -0
  107. data/vendor/twitter/bootstrap/less/mixins/nav-divider.less +10 -0
  108. data/vendor/twitter/bootstrap/less/mixins/nav-vertical-align.less +9 -0
  109. data/vendor/twitter/bootstrap/less/mixins/opacity.less +8 -0
  110. data/vendor/twitter/bootstrap/less/mixins/pagination.less +23 -0
  111. data/vendor/twitter/bootstrap/less/mixins/panels.less +24 -0
  112. data/vendor/twitter/bootstrap/less/mixins/progress-bar.less +10 -0
  113. data/vendor/twitter/bootstrap/less/mixins/reset-filter.less +8 -0
  114. data/vendor/twitter/bootstrap/less/mixins/resize.less +6 -0
  115. data/vendor/twitter/bootstrap/less/mixins/responsive-visibility.less +15 -0
  116. data/vendor/twitter/bootstrap/less/mixins/size.less +10 -0
  117. data/vendor/twitter/bootstrap/less/mixins/tab-focus.less +9 -0
  118. data/vendor/twitter/bootstrap/less/mixins/table-row.less +28 -0
  119. data/vendor/twitter/bootstrap/less/mixins/text-emphasis.less +8 -0
  120. data/vendor/twitter/bootstrap/less/mixins/text-overflow.less +8 -0
  121. data/vendor/twitter/bootstrap/less/mixins/vendor-prefixes.less +227 -0
  122. data/vendor/twitter/bootstrap/less/mixins.less +39 -0
  123. data/vendor/twitter/bootstrap/less/modals.less +150 -0
  124. data/vendor/twitter/bootstrap/less/navbar.less +660 -0
  125. data/vendor/twitter/bootstrap/less/navs.less +242 -0
  126. data/vendor/twitter/bootstrap/less/normalize.less +427 -0
  127. data/vendor/twitter/bootstrap/less/pager.less +54 -0
  128. data/vendor/twitter/bootstrap/less/pagination.less +88 -0
  129. data/vendor/twitter/bootstrap/less/panels.less +265 -0
  130. data/vendor/twitter/bootstrap/less/popovers.less +135 -0
  131. data/vendor/twitter/bootstrap/less/print.less +107 -0
  132. data/vendor/twitter/bootstrap/less/progress-bars.less +87 -0
  133. data/vendor/twitter/bootstrap/less/responsive-embed.less +35 -0
  134. data/vendor/twitter/bootstrap/less/responsive-utilities.less +194 -0
  135. data/vendor/twitter/bootstrap/less/scaffolding.less +162 -0
  136. data/vendor/twitter/bootstrap/less/tables.less +234 -0
  137. data/vendor/twitter/bootstrap/less/theme.less +273 -0
  138. data/vendor/twitter/bootstrap/less/thumbnails.less +36 -0
  139. data/vendor/twitter/bootstrap/less/tooltip.less +102 -0
  140. data/vendor/twitter/bootstrap/less/type.less +302 -0
  141. data/vendor/twitter/bootstrap/less/utilities.less +55 -0
  142. data/vendor/twitter/bootstrap/less/variables.less +861 -0
  143. data/vendor/twitter/bootstrap/less/wells.less +29 -0
  144. data/vendor/twitter/bootstrap/sass/_bootstrap-compass.scss +9 -0
  145. data/vendor/twitter/bootstrap/sass/_bootstrap-mincer.scss +19 -0
  146. data/vendor/twitter/bootstrap/sass/_bootstrap-sprockets.scss +9 -0
  147. data/vendor/twitter/bootstrap/sass/_bootstrap.scss +50 -0
  148. data/vendor/twitter/bootstrap/sass/bootstrap/_alerts.scss +73 -0
  149. data/vendor/twitter/bootstrap/sass/bootstrap/_badges.scss +68 -0
  150. data/vendor/twitter/bootstrap/sass/bootstrap/_breadcrumbs.scss +26 -0
  151. data/vendor/twitter/bootstrap/sass/bootstrap/_button-groups.scss +243 -0
  152. data/vendor/twitter/bootstrap/sass/bootstrap/_buttons.scss +160 -0
  153. data/vendor/twitter/bootstrap/sass/bootstrap/_carousel.scss +269 -0
  154. data/vendor/twitter/bootstrap/sass/bootstrap/_close.scss +36 -0
  155. data/vendor/twitter/bootstrap/sass/bootstrap/_code.scss +69 -0
  156. data/vendor/twitter/bootstrap/sass/bootstrap/_component-animations.scss +37 -0
  157. data/vendor/twitter/bootstrap/sass/bootstrap/_dropdowns.scss +214 -0
  158. data/vendor/twitter/bootstrap/sass/bootstrap/_forms.scss +578 -0
  159. data/vendor/twitter/bootstrap/sass/bootstrap/_glyphicons.scss +305 -0
  160. data/vendor/twitter/bootstrap/sass/bootstrap/_grid.scss +84 -0
  161. data/vendor/twitter/bootstrap/sass/bootstrap/_input-groups.scss +166 -0
  162. data/vendor/twitter/bootstrap/sass/bootstrap/_jumbotron.scss +50 -0
  163. data/vendor/twitter/bootstrap/sass/bootstrap/_labels.scss +66 -0
  164. data/vendor/twitter/bootstrap/sass/bootstrap/_list-group.scss +124 -0
  165. data/vendor/twitter/bootstrap/sass/bootstrap/_media.scss +61 -0
  166. data/vendor/twitter/bootstrap/sass/bootstrap/_mixins.scss +39 -0
  167. data/vendor/twitter/bootstrap/sass/bootstrap/_modals.scss +150 -0
  168. data/vendor/twitter/bootstrap/sass/bootstrap/_navbar.scss +662 -0
  169. data/vendor/twitter/bootstrap/sass/bootstrap/_navs.scss +242 -0
  170. data/vendor/twitter/bootstrap/sass/bootstrap/_normalize.scss +427 -0
  171. data/vendor/twitter/bootstrap/sass/bootstrap/_pager.scss +54 -0
  172. data/vendor/twitter/bootstrap/sass/bootstrap/_pagination.scss +88 -0
  173. data/vendor/twitter/bootstrap/sass/bootstrap/_panels.scss +265 -0
  174. data/vendor/twitter/bootstrap/sass/bootstrap/_popovers.scss +135 -0
  175. data/vendor/twitter/bootstrap/sass/bootstrap/_print.scss +107 -0
  176. data/vendor/twitter/bootstrap/sass/bootstrap/_progress-bars.scss +87 -0
  177. data/vendor/twitter/bootstrap/sass/bootstrap/_responsive-embed.scss +35 -0
  178. data/vendor/twitter/bootstrap/sass/bootstrap/_responsive-utilities.scss +177 -0
  179. data/vendor/twitter/bootstrap/sass/bootstrap/_scaffolding.scss +162 -0
  180. data/vendor/twitter/bootstrap/sass/bootstrap/_tables.scss +234 -0
  181. data/vendor/twitter/bootstrap/sass/bootstrap/_theme.scss +273 -0
  182. data/vendor/twitter/bootstrap/sass/bootstrap/_thumbnails.scss +38 -0
  183. data/vendor/twitter/bootstrap/sass/bootstrap/_tooltip.scss +102 -0
  184. data/vendor/twitter/bootstrap/sass/bootstrap/_type.scss +298 -0
  185. data/vendor/twitter/bootstrap/sass/bootstrap/_utilities.scss +55 -0
  186. data/vendor/twitter/bootstrap/sass/bootstrap/_variables.scss +866 -0
  187. data/vendor/twitter/bootstrap/sass/bootstrap/_wells.scss +29 -0
  188. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_alerts.scss +14 -0
  189. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_background-variant.scss +11 -0
  190. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_border-radius.scss +18 -0
  191. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_buttons.scss +52 -0
  192. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_center-block.scss +7 -0
  193. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_clearfix.scss +22 -0
  194. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_forms.scss +88 -0
  195. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_gradients.scss +58 -0
  196. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_grid-framework.scss +81 -0
  197. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_grid.scss +122 -0
  198. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_hide-text.scss +21 -0
  199. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_image.scss +33 -0
  200. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_labels.scss +12 -0
  201. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_list-group.scss +31 -0
  202. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_nav-divider.scss +10 -0
  203. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_nav-vertical-align.scss +9 -0
  204. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_opacity.scss +8 -0
  205. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_pagination.scss +23 -0
  206. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_panels.scss +24 -0
  207. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_progress-bar.scss +10 -0
  208. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_reset-filter.scss +8 -0
  209. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_resize.scss +6 -0
  210. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_responsive-visibility.scss +21 -0
  211. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_size.scss +10 -0
  212. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_tab-focus.scss +9 -0
  213. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_table-row.scss +28 -0
  214. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_text-emphasis.scss +11 -0
  215. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_text-overflow.scss +8 -0
  216. data/vendor/twitter/bootstrap/sass/bootstrap/mixins/_vendor-prefixes.scss +222 -0
  217. metadata +312 -0
@@ -0,0 +1,574 @@
1
+ //
2
+ // Forms
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Normalize non-controls
7
+ //
8
+ // Restyle and baseline non-control form elements.
9
+
10
+ fieldset {
11
+ padding: 0;
12
+ margin: 0;
13
+ border: 0;
14
+ // Chrome and Firefox set a `min-width: min-content;` on fieldsets,
15
+ // so we reset that to ensure it behaves more like a standard block element.
16
+ // See https://github.com/twbs/bootstrap/issues/12359.
17
+ min-width: 0;
18
+ }
19
+
20
+ legend {
21
+ display: block;
22
+ width: 100%;
23
+ padding: 0;
24
+ margin-bottom: @line-height-computed;
25
+ font-size: (@font-size-base * 1.5);
26
+ line-height: inherit;
27
+ color: @legend-color;
28
+ border: 0;
29
+ border-bottom: 1px solid @legend-border-color;
30
+ }
31
+
32
+ label {
33
+ display: inline-block;
34
+ max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)
35
+ margin-bottom: 5px;
36
+ font-weight: bold;
37
+ }
38
+
39
+
40
+ // Normalize form controls
41
+ //
42
+ // While most of our form styles require extra classes, some basic normalization
43
+ // is required to ensure optimum display with or without those classes to better
44
+ // address browser inconsistencies.
45
+
46
+ // Override content-box in Normalize (* isn't specific enough)
47
+ input[type="search"] {
48
+ .box-sizing(border-box);
49
+ }
50
+
51
+ // Position radios and checkboxes better
52
+ input[type="radio"],
53
+ input[type="checkbox"] {
54
+ margin: 4px 0 0;
55
+ margin-top: 1px \9; // IE8-9
56
+ line-height: normal;
57
+ }
58
+
59
+ // Set the height of file controls to match text inputs
60
+ input[type="file"] {
61
+ display: block;
62
+ }
63
+
64
+ // Make range inputs behave like textual form controls
65
+ input[type="range"] {
66
+ display: block;
67
+ width: 100%;
68
+ }
69
+
70
+ // Make multiple select elements height not fixed
71
+ select[multiple],
72
+ select[size] {
73
+ height: auto;
74
+ }
75
+
76
+ // Focus for file, radio, and checkbox
77
+ input[type="file"]:focus,
78
+ input[type="radio"]:focus,
79
+ input[type="checkbox"]:focus {
80
+ .tab-focus();
81
+ }
82
+
83
+ // Adjust output element
84
+ output {
85
+ display: block;
86
+ padding-top: (@padding-base-vertical + 1);
87
+ font-size: @font-size-base;
88
+ line-height: @line-height-base;
89
+ color: @input-color;
90
+ }
91
+
92
+
93
+ // Common form controls
94
+ //
95
+ // Shared size and type resets for form controls. Apply `.form-control` to any
96
+ // of the following form controls:
97
+ //
98
+ // select
99
+ // textarea
100
+ // input[type="text"]
101
+ // input[type="password"]
102
+ // input[type="datetime"]
103
+ // input[type="datetime-local"]
104
+ // input[type="date"]
105
+ // input[type="month"]
106
+ // input[type="time"]
107
+ // input[type="week"]
108
+ // input[type="number"]
109
+ // input[type="email"]
110
+ // input[type="url"]
111
+ // input[type="search"]
112
+ // input[type="tel"]
113
+ // input[type="color"]
114
+
115
+ .form-control {
116
+ display: block;
117
+ width: 100%;
118
+ height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
119
+ padding: @padding-base-vertical @padding-base-horizontal;
120
+ font-size: @font-size-base;
121
+ line-height: @line-height-base;
122
+ color: @input-color;
123
+ background-color: @input-bg;
124
+ background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
125
+ border: 1px solid @input-border;
126
+ border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.
127
+ .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
128
+ .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s");
129
+
130
+ // Customize the `:focus` state to imitate native WebKit styles.
131
+ .form-control-focus();
132
+
133
+ // Placeholder
134
+ .placeholder();
135
+
136
+ // Disabled and read-only inputs
137
+ //
138
+ // HTML5 says that controls under a fieldset > legend:first-child won't be
139
+ // disabled if the fieldset is disabled. Due to implementation difficulty, we
140
+ // don't honor that edge case; we style them as disabled anyway.
141
+ &[disabled],
142
+ &[readonly],
143
+ fieldset[disabled] & {
144
+ background-color: @input-bg-disabled;
145
+ opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
146
+ }
147
+
148
+ &[disabled],
149
+ fieldset[disabled] & {
150
+ cursor: @cursor-disabled;
151
+ }
152
+
153
+ // Reset height for `textarea`s
154
+ textarea& {
155
+ height: auto;
156
+ }
157
+ }
158
+
159
+
160
+ // Search inputs in iOS
161
+ //
162
+ // This overrides the extra rounded corners on search inputs in iOS so that our
163
+ // `.form-control` class can properly style them. Note that this cannot simply
164
+ // be added to `.form-control` as it's not specific enough. For details, see
165
+ // https://github.com/twbs/bootstrap/issues/11586.
166
+
167
+ input[type="search"] {
168
+ -webkit-appearance: none;
169
+ }
170
+
171
+
172
+ // Special styles for iOS temporal inputs
173
+ //
174
+ // In Mobile Safari, setting `display: block` on temporal inputs causes the
175
+ // text within the input to become vertically misaligned. As a workaround, we
176
+ // set a pixel line-height that matches the given height of the input, but only
177
+ // for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
178
+
179
+ @media screen and (-webkit-min-device-pixel-ratio: 0) {
180
+ input[type="date"],
181
+ input[type="time"],
182
+ input[type="datetime-local"],
183
+ input[type="month"] {
184
+ line-height: @input-height-base;
185
+
186
+ &.input-sm,
187
+ .input-group-sm & {
188
+ line-height: @input-height-small;
189
+ }
190
+
191
+ &.input-lg,
192
+ .input-group-lg & {
193
+ line-height: @input-height-large;
194
+ }
195
+ }
196
+ }
197
+
198
+
199
+ // Form groups
200
+ //
201
+ // Designed to help with the organization and spacing of vertical forms. For
202
+ // horizontal forms, use the predefined grid classes.
203
+
204
+ .form-group {
205
+ margin-bottom: @form-group-margin-bottom;
206
+ }
207
+
208
+
209
+ // Checkboxes and radios
210
+ //
211
+ // Indent the labels to position radios/checkboxes as hanging controls.
212
+
213
+ .radio,
214
+ .checkbox {
215
+ position: relative;
216
+ display: block;
217
+ margin-top: 10px;
218
+ margin-bottom: 10px;
219
+
220
+ label {
221
+ min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text
222
+ padding-left: 20px;
223
+ margin-bottom: 0;
224
+ font-weight: normal;
225
+ cursor: pointer;
226
+ }
227
+ }
228
+ .radio input[type="radio"],
229
+ .radio-inline input[type="radio"],
230
+ .checkbox input[type="checkbox"],
231
+ .checkbox-inline input[type="checkbox"] {
232
+ position: absolute;
233
+ margin-left: -20px;
234
+ margin-top: 4px \9;
235
+ }
236
+
237
+ .radio + .radio,
238
+ .checkbox + .checkbox {
239
+ margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
240
+ }
241
+
242
+ // Radios and checkboxes on same line
243
+ .radio-inline,
244
+ .checkbox-inline {
245
+ position: relative;
246
+ display: inline-block;
247
+ padding-left: 20px;
248
+ margin-bottom: 0;
249
+ vertical-align: middle;
250
+ font-weight: normal;
251
+ cursor: pointer;
252
+ }
253
+ .radio-inline + .radio-inline,
254
+ .checkbox-inline + .checkbox-inline {
255
+ margin-top: 0;
256
+ margin-left: 10px; // space out consecutive inline controls
257
+ }
258
+
259
+ // Apply same disabled cursor tweak as for inputs
260
+ // Some special care is needed because <label>s don't inherit their parent's `cursor`.
261
+ //
262
+ // Note: Neither radios nor checkboxes can be readonly.
263
+ input[type="radio"],
264
+ input[type="checkbox"] {
265
+ &[disabled],
266
+ &.disabled,
267
+ fieldset[disabled] & {
268
+ cursor: @cursor-disabled;
269
+ }
270
+ }
271
+ // These classes are used directly on <label>s
272
+ .radio-inline,
273
+ .checkbox-inline {
274
+ &.disabled,
275
+ fieldset[disabled] & {
276
+ cursor: @cursor-disabled;
277
+ }
278
+ }
279
+ // These classes are used on elements with <label> descendants
280
+ .radio,
281
+ .checkbox {
282
+ &.disabled,
283
+ fieldset[disabled] & {
284
+ label {
285
+ cursor: @cursor-disabled;
286
+ }
287
+ }
288
+ }
289
+
290
+
291
+ // Static form control text
292
+ //
293
+ // Apply class to a `p` element to make any string of text align with labels in
294
+ // a horizontal form layout.
295
+
296
+ .form-control-static {
297
+ // Size it appropriately next to real form controls
298
+ padding-top: (@padding-base-vertical + 1);
299
+ padding-bottom: (@padding-base-vertical + 1);
300
+ // Remove default margin from `p`
301
+ margin-bottom: 0;
302
+ min-height: (@line-height-computed + @font-size-base);
303
+
304
+ &.input-lg,
305
+ &.input-sm {
306
+ padding-left: 0;
307
+ padding-right: 0;
308
+ }
309
+ }
310
+
311
+
312
+ // Form control sizing
313
+ //
314
+ // Build on `.form-control` with modifier classes to decrease or increase the
315
+ // height and font-size of form controls.
316
+ //
317
+ // The `.form-group-* form-control` variations are sadly duplicated to avoid the
318
+ // issue documented in https://github.com/twbs/bootstrap/issues/15074.
319
+
320
+ .input-sm {
321
+ .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);
322
+ }
323
+ .form-group-sm {
324
+ .form-control {
325
+ .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);
326
+ }
327
+ .form-control-static {
328
+ height: @input-height-small;
329
+ padding: @padding-small-vertical @padding-small-horizontal;
330
+ font-size: @font-size-small;
331
+ line-height: @line-height-small;
332
+ min-height: (@line-height-computed + @font-size-small);
333
+ }
334
+ }
335
+
336
+ .input-lg {
337
+ .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);
338
+ }
339
+ .form-group-lg {
340
+ .form-control {
341
+ .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);
342
+ }
343
+ .form-control-static {
344
+ height: @input-height-large;
345
+ padding: @padding-large-vertical @padding-large-horizontal;
346
+ font-size: @font-size-large;
347
+ line-height: @line-height-large;
348
+ min-height: (@line-height-computed + @font-size-large);
349
+ }
350
+ }
351
+
352
+
353
+ // Form control feedback states
354
+ //
355
+ // Apply contextual and semantic states to individual form controls.
356
+
357
+ .has-feedback {
358
+ // Enable absolute positioning
359
+ position: relative;
360
+
361
+ // Ensure icons don't overlap text
362
+ .form-control {
363
+ padding-right: (@input-height-base * 1.25);
364
+ }
365
+ }
366
+ // Feedback icon (requires .glyphicon classes)
367
+ .form-control-feedback {
368
+ position: absolute;
369
+ top: 0;
370
+ right: 0;
371
+ z-index: 2; // Ensure icon is above input groups
372
+ display: block;
373
+ width: @input-height-base;
374
+ height: @input-height-base;
375
+ line-height: @input-height-base;
376
+ text-align: center;
377
+ pointer-events: none;
378
+ }
379
+ .input-lg + .form-control-feedback {
380
+ width: @input-height-large;
381
+ height: @input-height-large;
382
+ line-height: @input-height-large;
383
+ }
384
+ .input-sm + .form-control-feedback {
385
+ width: @input-height-small;
386
+ height: @input-height-small;
387
+ line-height: @input-height-small;
388
+ }
389
+
390
+ // Feedback states
391
+ .has-success {
392
+ .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);
393
+ }
394
+ .has-warning {
395
+ .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);
396
+ }
397
+ .has-error {
398
+ .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);
399
+ }
400
+
401
+ // Reposition feedback icon if input has visible label above
402
+ .has-feedback label {
403
+
404
+ & ~ .form-control-feedback {
405
+ top: (@line-height-computed + 5); // Height of the `label` and its margin
406
+ }
407
+ &.sr-only ~ .form-control-feedback {
408
+ top: 0;
409
+ }
410
+ }
411
+
412
+
413
+ // Help text
414
+ //
415
+ // Apply to any element you wish to create light text for placement immediately
416
+ // below a form control. Use for general help, formatting, or instructional text.
417
+
418
+ .help-block {
419
+ display: block; // account for any element using help-block
420
+ margin-top: 5px;
421
+ margin-bottom: 10px;
422
+ color: lighten(@text-color, 25%); // lighten the text some for contrast
423
+ }
424
+
425
+
426
+ // Inline forms
427
+ //
428
+ // Make forms appear inline(-block) by adding the `.form-inline` class. Inline
429
+ // forms begin stacked on extra small (mobile) devices and then go inline when
430
+ // viewports reach <768px.
431
+ //
432
+ // Requires wrapping inputs and labels with `.form-group` for proper display of
433
+ // default HTML form controls and our custom form controls (e.g., input groups).
434
+ //
435
+ // Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
436
+
437
+ .form-inline {
438
+
439
+ // Kick in the inline
440
+ @media (min-width: @screen-sm-min) {
441
+ // Inline-block all the things for "inline"
442
+ .form-group {
443
+ display: inline-block;
444
+ margin-bottom: 0;
445
+ vertical-align: middle;
446
+ }
447
+
448
+ // In navbar-form, allow folks to *not* use `.form-group`
449
+ .form-control {
450
+ display: inline-block;
451
+ width: auto; // Prevent labels from stacking above inputs in `.form-group`
452
+ vertical-align: middle;
453
+ }
454
+
455
+ // Make static controls behave like regular ones
456
+ .form-control-static {
457
+ display: inline-block;
458
+ }
459
+
460
+ .input-group {
461
+ display: inline-table;
462
+ vertical-align: middle;
463
+
464
+ .input-group-addon,
465
+ .input-group-btn,
466
+ .form-control {
467
+ width: auto;
468
+ }
469
+ }
470
+
471
+ // Input groups need that 100% width though
472
+ .input-group > .form-control {
473
+ width: 100%;
474
+ }
475
+
476
+ .control-label {
477
+ margin-bottom: 0;
478
+ vertical-align: middle;
479
+ }
480
+
481
+ // Remove default margin on radios/checkboxes that were used for stacking, and
482
+ // then undo the floating of radios and checkboxes to match.
483
+ .radio,
484
+ .checkbox {
485
+ display: inline-block;
486
+ margin-top: 0;
487
+ margin-bottom: 0;
488
+ vertical-align: middle;
489
+
490
+ label {
491
+ padding-left: 0;
492
+ }
493
+ }
494
+ .radio input[type="radio"],
495
+ .checkbox input[type="checkbox"] {
496
+ position: relative;
497
+ margin-left: 0;
498
+ }
499
+
500
+ // Re-override the feedback icon.
501
+ .has-feedback .form-control-feedback {
502
+ top: 0;
503
+ }
504
+ }
505
+ }
506
+
507
+
508
+ // Horizontal forms
509
+ //
510
+ // Horizontal forms are built on grid classes and allow you to create forms with
511
+ // labels on the left and inputs on the right.
512
+
513
+ .form-horizontal {
514
+
515
+ // Consistent vertical alignment of radios and checkboxes
516
+ //
517
+ // Labels also get some reset styles, but that is scoped to a media query below.
518
+ .radio,
519
+ .checkbox,
520
+ .radio-inline,
521
+ .checkbox-inline {
522
+ margin-top: 0;
523
+ margin-bottom: 0;
524
+ padding-top: (@padding-base-vertical + 1); // Default padding plus a border
525
+ }
526
+ // Account for padding we're adding to ensure the alignment and of help text
527
+ // and other content below items
528
+ .radio,
529
+ .checkbox {
530
+ min-height: (@line-height-computed + (@padding-base-vertical + 1));
531
+ }
532
+
533
+ // Make form groups behave like rows
534
+ .form-group {
535
+ .make-row();
536
+ }
537
+
538
+ // Reset spacing and right align labels, but scope to media queries so that
539
+ // labels on narrow viewports stack the same as a default form example.
540
+ @media (min-width: @screen-sm-min) {
541
+ .control-label {
542
+ text-align: right;
543
+ margin-bottom: 0;
544
+ padding-top: (@padding-base-vertical + 1); // Default padding plus a border
545
+ }
546
+ }
547
+
548
+ // Validation states
549
+ //
550
+ // Reposition the icon because it's now within a grid column and columns have
551
+ // `position: relative;` on them. Also accounts for the grid gutter padding.
552
+ .has-feedback .form-control-feedback {
553
+ right: (@grid-gutter-width / 2);
554
+ }
555
+
556
+ // Form group sizes
557
+ //
558
+ // Quick utility class for applying `.input-lg` and `.input-sm` styles to the
559
+ // inputs and labels within a `.form-group`.
560
+ .form-group-lg {
561
+ @media (min-width: @screen-sm-min) {
562
+ .control-label {
563
+ padding-top: ((@padding-large-vertical * @line-height-large) + 1);
564
+ }
565
+ }
566
+ }
567
+ .form-group-sm {
568
+ @media (min-width: @screen-sm-min) {
569
+ .control-label {
570
+ padding-top: (@padding-small-vertical + 1);
571
+ }
572
+ }
573
+ }
574
+ }