spiderfw 0.6.30 → 0.6.31

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +15 -7
  2. data/CHANGELOG +11 -0
  3. data/VERSION +1 -1
  4. data/apps/app_server/config/options.rb +1 -1
  5. data/apps/core/auth/controllers/login_controller.rb +3 -0
  6. data/apps/core/components/assets.rb +61 -3
  7. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.eot +0 -0
  8. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.svg +229 -0
  9. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.ttf +0 -0
  10. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.woff +0 -0
  11. data/apps/core/components/public/bootstrap_3/js/affix.js +140 -0
  12. data/apps/core/components/public/bootstrap_3/js/alert.js +92 -0
  13. data/apps/core/components/public/bootstrap_3/js/button.js +110 -0
  14. data/apps/core/components/public/bootstrap_3/js/carousel.js +210 -0
  15. data/apps/core/components/public/bootstrap_3/js/collapse.js +180 -0
  16. data/apps/core/components/public/bootstrap_3/js/dropdown.js +151 -0
  17. data/apps/core/components/public/bootstrap_3/js/modal.js +277 -0
  18. data/apps/core/components/public/bootstrap_3/js/popover.js +113 -0
  19. data/apps/core/components/public/bootstrap_3/js/scrollspy.js +158 -0
  20. data/apps/core/components/public/bootstrap_3/js/tab.js +128 -0
  21. data/apps/core/components/public/bootstrap_3/js/tooltip.js +456 -0
  22. data/apps/core/components/public/bootstrap_3/js/transition.js +48 -0
  23. data/apps/core/components/public/bootstrap_3/scss/_alerts.scss +67 -0
  24. data/apps/core/components/public/bootstrap_3/scss/_badges.scss +57 -0
  25. data/apps/core/components/public/bootstrap_3/scss/_breadcrumbs.scss +26 -0
  26. data/apps/core/components/public/bootstrap_3/scss/_button-groups.scss +240 -0
  27. data/apps/core/components/public/bootstrap_3/scss/_buttons.scss +159 -0
  28. data/apps/core/components/public/bootstrap_3/scss/_carousel.scss +243 -0
  29. data/apps/core/components/public/bootstrap_3/scss/_close.scss +35 -0
  30. data/apps/core/components/public/bootstrap_3/scss/_code.scss +62 -0
  31. data/apps/core/components/public/bootstrap_3/scss/_component-animations.scss +35 -0
  32. data/apps/core/components/public/bootstrap_3/scss/_dropdowns.scss +214 -0
  33. data/apps/core/components/public/bootstrap_3/scss/_forms.scss +489 -0
  34. data/apps/core/components/public/bootstrap_3/scss/_glyphicons.scss +237 -0
  35. data/apps/core/components/public/bootstrap_3/scss/_grid.scss +84 -0
  36. data/apps/core/components/public/bootstrap_3/scss/_input-groups.scss +166 -0
  37. data/apps/core/components/public/bootstrap_3/scss/_jumbotron.scss +48 -0
  38. data/apps/core/components/public/bootstrap_3/scss/_labels.scss +66 -0
  39. data/apps/core/components/public/bootstrap_3/scss/_list-group.scss +129 -0
  40. data/apps/core/components/public/bootstrap_3/scss/_media.scss +56 -0
  41. data/apps/core/components/public/bootstrap_3/scss/_mixins.scss +39 -0
  42. data/apps/core/components/public/bootstrap_3/scss/_modals.scss +147 -0
  43. data/apps/core/components/public/bootstrap_3/scss/_navbar.scss +658 -0
  44. data/apps/core/components/public/bootstrap_3/scss/_navs.scss +242 -0
  45. data/apps/core/components/public/bootstrap_3/scss/_normalize.scss +425 -0
  46. data/apps/core/components/public/bootstrap_3/scss/_pager.scss +55 -0
  47. data/apps/core/components/public/bootstrap_3/scss/_pagination.scss +88 -0
  48. data/apps/core/components/public/bootstrap_3/scss/_panels.scss +240 -0
  49. data/apps/core/components/public/bootstrap_3/scss/_popovers.scss +133 -0
  50. data/apps/core/components/public/bootstrap_3/scss/_print.scss +101 -0
  51. data/apps/core/components/public/bootstrap_3/scss/_progress-bars.scss +89 -0
  52. data/apps/core/components/public/bootstrap_3/scss/_responsive-embed.scss +34 -0
  53. data/apps/core/components/public/bootstrap_3/scss/_responsive-utilities.scss +174 -0
  54. data/apps/core/components/public/bootstrap_3/scss/_scaffolding.scss +150 -0
  55. data/apps/core/components/public/bootstrap_3/scss/_tables.scss +233 -0
  56. data/apps/core/components/public/bootstrap_3/scss/_theme.scss +247 -0
  57. data/apps/core/components/public/bootstrap_3/scss/_thumbnails.scss +38 -0
  58. data/apps/core/components/public/bootstrap_3/scss/_tooltip.scss +95 -0
  59. data/apps/core/components/public/bootstrap_3/scss/_type.scss +298 -0
  60. data/apps/core/components/public/bootstrap_3/scss/_utilities.scss +56 -0
  61. data/apps/core/components/public/bootstrap_3/scss/_variables.scss +853 -0
  62. data/apps/core/components/public/bootstrap_3/scss/_wells.scss +29 -0
  63. data/apps/core/components/public/bootstrap_3/scss/bootstrap.scss +50 -0
  64. data/apps/core/components/public/bootstrap_3/scss/mixins/_alerts.scss +14 -0
  65. data/apps/core/components/public/bootstrap_3/scss/mixins/_background-variant.scss +11 -0
  66. data/apps/core/components/public/bootstrap_3/scss/mixins/_border-radius.scss +18 -0
  67. data/apps/core/components/public/bootstrap_3/scss/mixins/_buttons.scss +50 -0
  68. data/apps/core/components/public/bootstrap_3/scss/mixins/_center-block.scss +7 -0
  69. data/apps/core/components/public/bootstrap_3/scss/mixins/_clearfix.scss +22 -0
  70. data/apps/core/components/public/bootstrap_3/scss/mixins/_forms.scss +84 -0
  71. data/apps/core/components/public/bootstrap_3/scss/mixins/_gradients.scss +58 -0
  72. data/apps/core/components/public/bootstrap_3/scss/mixins/_grid-framework.scss +87 -0
  73. data/apps/core/components/public/bootstrap_3/scss/mixins/_grid.scss +122 -0
  74. data/apps/core/components/public/bootstrap_3/scss/mixins/_hide-text.scss +21 -0
  75. data/apps/core/components/public/bootstrap_3/scss/mixins/_image.scss +33 -0
  76. data/apps/core/components/public/bootstrap_3/scss/mixins/_labels.scss +12 -0
  77. data/apps/core/components/public/bootstrap_3/scss/mixins/_list-group.scss +31 -0
  78. data/apps/core/components/public/bootstrap_3/scss/mixins/_nav-divider.scss +10 -0
  79. data/apps/core/components/public/bootstrap_3/scss/mixins/_nav-vertical-align.scss +9 -0
  80. data/apps/core/components/public/bootstrap_3/scss/mixins/_opacity.scss +8 -0
  81. data/apps/core/components/public/bootstrap_3/scss/mixins/_pagination.scss +23 -0
  82. data/apps/core/components/public/bootstrap_3/scss/mixins/_panels.scss +20 -0
  83. data/apps/core/components/public/bootstrap_3/scss/mixins/_progress-bar.scss +8 -0
  84. data/apps/core/components/public/bootstrap_3/scss/mixins/_reset-filter.scss +8 -0
  85. data/apps/core/components/public/bootstrap_3/scss/mixins/_resize.scss +6 -0
  86. data/apps/core/components/public/bootstrap_3/scss/mixins/_responsive-visibility.scss +21 -0
  87. data/apps/core/components/public/bootstrap_3/scss/mixins/_size.scss +10 -0
  88. data/apps/core/components/public/bootstrap_3/scss/mixins/_tab-focus.scss +9 -0
  89. data/apps/core/components/public/bootstrap_3/scss/mixins/_table-row.scss +28 -0
  90. data/apps/core/components/public/bootstrap_3/scss/mixins/_text-emphasis.scss +11 -0
  91. data/apps/core/components/public/bootstrap_3/scss/mixins/_text-overflow.scss +8 -0
  92. data/apps/core/components/public/bootstrap_3/scss/mixins/_vendor-prefixes.scss +224 -0
  93. data/apps/core/components/public/js/jquery/plugins/bsmselect/js/jquery.bsmselect.js +1 -1
  94. data/apps/core/components/widgets/month_calendar/month_calendar.shtml +3 -3
  95. data/apps/core/components/widgets/table/table.rb +6 -2
  96. data/apps/core/components/widgets/table/table.shtml +4 -4
  97. data/apps/core/forms/widgets/form/form.rb +1 -1
  98. data/apps/core/forms/widgets/inputs/select/select.rb +13 -2
  99. data/apps/messenger/lib/backends/mobyt.rb +6 -2
  100. data/apps/messenger/lib/backends/skebby.rb +1 -1
  101. data/apps/webdav/controllers/webdav_controller.rb +16 -7
  102. data/lib/spiderfw/controller/http_controller.rb +4 -1
  103. data/lib/spiderfw/env.rb +0 -1
  104. data/lib/spiderfw/http/adapters/rack.rb +3 -1
  105. data/lib/spiderfw/model/base_model.rb +7 -3
  106. data/lib/spiderfw/model/storage/connection_pool.rb +6 -2
  107. data/lib/spiderfw/model/storage/db/db_storage.rb +25 -9
  108. data/lib/spiderfw/site.rb +1 -1
  109. metadata +308 -149
@@ -0,0 +1,489 @@
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: -webkit-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
+ @include 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
+ @include 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;
127
+ @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
128
+ @include 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
+ @include form-control-focus();
132
+
133
+ // Placeholder
134
+ @include 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
+ cursor: not-allowed;
145
+ background-color: $input-bg-disabled;
146
+ opacity: 1; // iOS fix for unreadable disabled content
147
+ }
148
+
149
+ // [converter] extracted textarea& to textarea.form-control
150
+ }
151
+
152
+ // Reset height for `textarea`s
153
+ textarea.form-control {
154
+ height: auto;
155
+ }
156
+
157
+
158
+ // Search inputs in iOS
159
+ //
160
+ // This overrides the extra rounded corners on search inputs in iOS so that our
161
+ // `.form-control` class can properly style them. Note that this cannot simply
162
+ // be added to `.form-control` as it's not specific enough. For details, see
163
+ // https://github.com/twbs/bootstrap/issues/11586.
164
+
165
+ input[type="search"] {
166
+ -webkit-appearance: none;
167
+ }
168
+
169
+
170
+ // Special styles for iOS temporal inputs
171
+ //
172
+ // In Mobile Safari, setting `display: block` on temporal inputs causes the
173
+ // text within the input to become vertically misaligned.
174
+ // As a workaround, we set a pixel line-height that matches the
175
+ // given height of the input. Since this fucks up everything else, we have to
176
+ // appropriately reset it for Internet Explorer and the size variations.
177
+
178
+ input[type="date"],
179
+ input[type="time"],
180
+ input[type="datetime-local"],
181
+ input[type="month"] {
182
+ line-height: $input-height-base;
183
+ // IE8+ misaligns the text within date inputs, so we reset
184
+ line-height: $line-height-base #{\0};
185
+
186
+ &.input-sm {
187
+ line-height: $input-height-small;
188
+ }
189
+ &.input-lg {
190
+ line-height: $input-height-large;
191
+ }
192
+ }
193
+
194
+
195
+ // Form groups
196
+ //
197
+ // Designed to help with the organization and spacing of vertical forms. For
198
+ // horizontal forms, use the predefined grid classes.
199
+
200
+ .form-group {
201
+ margin-bottom: 15px;
202
+ }
203
+
204
+
205
+ // Checkboxes and radios
206
+ //
207
+ // Indent the labels to position radios/checkboxes as hanging controls.
208
+
209
+ .radio,
210
+ .checkbox {
211
+ display: block;
212
+ min-height: $line-height-computed; // clear the floating input if there is no label text
213
+ margin-top: 10px;
214
+ margin-bottom: 10px;
215
+
216
+ label {
217
+ padding-left: 20px;
218
+ margin-bottom: 0;
219
+ font-weight: normal;
220
+ cursor: pointer;
221
+ }
222
+ }
223
+ .radio input[type="radio"],
224
+ .radio-inline input[type="radio"],
225
+ .checkbox input[type="checkbox"],
226
+ .checkbox-inline input[type="checkbox"] {
227
+ float: left;
228
+ margin-left: -20px;
229
+ }
230
+ .radio + .radio,
231
+ .checkbox + .checkbox {
232
+ margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
233
+ }
234
+
235
+ // Radios and checkboxes on same line
236
+ .radio-inline,
237
+ .checkbox-inline {
238
+ display: inline-block;
239
+ padding-left: 20px;
240
+ margin-bottom: 0;
241
+ vertical-align: middle;
242
+ font-weight: normal;
243
+ cursor: pointer;
244
+ }
245
+ .radio-inline + .radio-inline,
246
+ .checkbox-inline + .checkbox-inline {
247
+ margin-top: 0;
248
+ margin-left: 10px; // space out consecutive inline controls
249
+ }
250
+
251
+ // Apply same disabled cursor tweak as for inputs
252
+ //
253
+ // Note: Neither radios nor checkboxes can be readonly.
254
+ input[type="radio"],
255
+ input[type="checkbox"],
256
+ .radio,
257
+ .radio-inline,
258
+ .checkbox,
259
+ .checkbox-inline {
260
+ &[disabled],
261
+ fieldset[disabled] & {
262
+ cursor: not-allowed;
263
+ }
264
+ }
265
+
266
+
267
+ // Form control sizing
268
+ //
269
+ // Build on `.form-control` with modifier classes to decrease or increase the
270
+ // height and font-size of form controls.
271
+
272
+ @include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);
273
+
274
+ @include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);
275
+
276
+
277
+ // Form control feedback states
278
+ //
279
+ // Apply contextual and semantic states to individual form controls.
280
+
281
+ .has-feedback {
282
+ // Enable absolute positioning
283
+ position: relative;
284
+
285
+ // Ensure icons don't overlap text
286
+ .form-control {
287
+ padding-right: ($input-height-base * 1.25);
288
+ }
289
+ }
290
+ // Feedback icon (requires .glyphicon classes)
291
+ .form-control-feedback {
292
+ position: absolute;
293
+ top: ($line-height-computed + 5); // Height of the `label` and its margin
294
+ right: 0;
295
+ z-index: 2; // Ensure icon is above input groups
296
+ display: block;
297
+ width: $input-height-base;
298
+ height: $input-height-base;
299
+ line-height: $input-height-base;
300
+ text-align: center;
301
+ }
302
+ .input-lg + .form-control-feedback {
303
+ width: $input-height-large;
304
+ height: $input-height-large;
305
+ line-height: $input-height-large;
306
+ }
307
+ .input-sm + .form-control-feedback {
308
+ width: $input-height-small;
309
+ height: $input-height-small;
310
+ line-height: $input-height-small;
311
+ }
312
+
313
+ // Feedback states
314
+ .has-success {
315
+ @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
316
+ }
317
+ .has-warning {
318
+ @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
319
+ }
320
+ .has-error {
321
+ @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
322
+ }
323
+
324
+
325
+ // Reposition feedback icon if label is hidden with "screenreader only" state
326
+ .has-feedback label.sr-only ~ .form-control-feedback {
327
+ top: 0;
328
+ }
329
+
330
+
331
+ // Static form control text
332
+ //
333
+ // Apply class to a `p` element to make any string of text align with labels in
334
+ // a horizontal form layout.
335
+
336
+ .form-control-static {
337
+ margin-bottom: 0; // Remove default margin from `p`
338
+ }
339
+
340
+
341
+ // Help text
342
+ //
343
+ // Apply to any element you wish to create light text for placement immediately
344
+ // below a form control. Use for general help, formatting, or instructional text.
345
+
346
+ .help-block {
347
+ display: block; // account for any element using help-block
348
+ margin-top: 5px;
349
+ margin-bottom: 10px;
350
+ color: lighten($text-color, 25%); // lighten the text some for contrast
351
+ }
352
+
353
+
354
+
355
+ // Inline forms
356
+ //
357
+ // Make forms appear inline(-block) by adding the `.form-inline` class. Inline
358
+ // forms begin stacked on extra small (mobile) devices and then go inline when
359
+ // viewports reach <768px.
360
+ //
361
+ // Requires wrapping inputs and labels with `.form-group` for proper display of
362
+ // default HTML form controls and our custom form controls (e.g., input groups).
363
+ //
364
+ // Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
365
+
366
+ .form-inline {
367
+
368
+ // Kick in the inline
369
+ @media (min-width: $screen-sm-min) {
370
+ // Inline-block all the things for "inline"
371
+ .form-group {
372
+ display: inline-block;
373
+ margin-bottom: 0;
374
+ vertical-align: middle;
375
+ }
376
+
377
+ // In navbar-form, allow folks to *not* use `.form-group`
378
+ .form-control {
379
+ display: inline-block;
380
+ width: auto; // Prevent labels from stacking above inputs in `.form-group`
381
+ vertical-align: middle;
382
+ }
383
+
384
+ .input-group {
385
+ display: inline-table;
386
+ vertical-align: middle;
387
+
388
+ .input-group-addon,
389
+ .input-group-btn,
390
+ .form-control {
391
+ width: auto;
392
+ }
393
+ }
394
+
395
+ // Input groups need that 100% width though
396
+ .input-group > .form-control {
397
+ width: 100%;
398
+ }
399
+
400
+ .control-label {
401
+ margin-bottom: 0;
402
+ vertical-align: middle;
403
+ }
404
+
405
+ // Remove default margin on radios/checkboxes that were used for stacking, and
406
+ // then undo the floating of radios and checkboxes to match (which also avoids
407
+ // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).
408
+ .radio,
409
+ .checkbox {
410
+ display: inline-block;
411
+ margin-top: 0;
412
+ margin-bottom: 0;
413
+ vertical-align: middle;
414
+
415
+ label {
416
+ padding-left: 0;
417
+ }
418
+ }
419
+ .radio input[type="radio"],
420
+ .checkbox input[type="checkbox"] {
421
+ float: none;
422
+ margin-left: 0;
423
+ }
424
+
425
+ // Validation states
426
+ //
427
+ // Reposition the icon because it's now within a grid column and columns have
428
+ // `position: relative;` on them. Also accounts for the grid gutter padding.
429
+ .has-feedback .form-control-feedback {
430
+ top: 0;
431
+ }
432
+ }
433
+ }
434
+
435
+
436
+ // Horizontal forms
437
+ //
438
+ // Horizontal forms are built on grid classes and allow you to create forms with
439
+ // labels on the left and inputs on the right.
440
+
441
+ .form-horizontal {
442
+
443
+ // Consistent vertical alignment of radios and checkboxes
444
+ //
445
+ // Labels also get some reset styles, but that is scoped to a media query below.
446
+ .radio,
447
+ .checkbox,
448
+ .radio-inline,
449
+ .checkbox-inline {
450
+ margin-top: 0;
451
+ margin-bottom: 0;
452
+ padding-top: ($padding-base-vertical + 1); // Default padding plus a border
453
+ }
454
+ // Account for padding we're adding to ensure the alignment and of help text
455
+ // and other content below items
456
+ .radio,
457
+ .checkbox {
458
+ min-height: ($line-height-computed + ($padding-base-vertical + 1));
459
+ }
460
+
461
+ // Make form groups behave like rows
462
+ .form-group {
463
+ @include make-row();
464
+ }
465
+
466
+ .form-control-static {
467
+ padding-top: ($padding-base-vertical + 1);
468
+ padding-bottom: ($padding-base-vertical + 1);
469
+ }
470
+
471
+ // Reset spacing and right align labels, but scope to media queries so that
472
+ // labels on narrow viewports stack the same as a default form example.
473
+ @media (min-width: $screen-sm-min) {
474
+ .control-label {
475
+ text-align: right;
476
+ margin-bottom: 0;
477
+ padding-top: ($padding-base-vertical + 1); // Default padding plus a border
478
+ }
479
+ }
480
+
481
+ // Validation states
482
+ //
483
+ // Reposition the icon because it's now within a grid column and columns have
484
+ // `position: relative;` on them. Also accounts for the grid gutter padding.
485
+ .has-feedback .form-control-feedback {
486
+ top: 0;
487
+ right: ($grid-gutter-width / 2);
488
+ }
489
+ }