rails_admin 0.6.5 → 0.6.6

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 (133) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +99 -74
  3. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +48 -55
  4. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +70 -65
  5. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +163 -147
  6. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +117 -114
  7. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +89 -107
  8. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +208 -175
  9. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +77 -78
  10. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +137 -129
  11. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +85 -101
  12. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +364 -268
  13. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +51 -52
  14. data/app/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +1782 -335
  15. data/app/assets/javascripts/rails_admin/ra.filter-box.js +1 -1
  16. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +3 -3
  17. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +1 -1
  18. data/app/assets/javascripts/rails_admin/ra.remote-form.js +6 -2
  19. data/app/assets/stylesheets/rails_admin/base/theming.scss +34 -14
  20. data/app/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +47 -58
  21. data/app/assets/stylesheets/rails_admin/bootstrap/_badges.scss +57 -0
  22. data/app/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +12 -10
  23. data/app/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +163 -152
  24. data/app/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +98 -169
  25. data/app/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +151 -66
  26. data/app/assets/stylesheets/rails_admin/bootstrap/_close.scss +11 -8
  27. data/app/assets/stylesheets/rails_admin/bootstrap/_code.scss +36 -29
  28. data/app/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +16 -3
  29. data/app/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +115 -148
  30. data/app/assets/stylesheets/rails_admin/bootstrap/_forms.scss +396 -547
  31. data/app/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +237 -0
  32. data/app/assets/stylesheets/rails_admin/bootstrap/_grid.scss +74 -11
  33. data/app/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +166 -0
  34. data/app/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +48 -0
  35. data/app/assets/stylesheets/rails_admin/bootstrap/_labels.scss +66 -0
  36. data/app/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +131 -0
  37. data/app/assets/stylesheets/rails_admin/bootstrap/_media.scss +8 -7
  38. data/app/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +36 -693
  39. data/app/assets/stylesheets/rails_admin/bootstrap/_modals.scss +108 -53
  40. data/app/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +545 -383
  41. data/app/assets/stylesheets/rails_admin/bootstrap/_navs.scss +191 -358
  42. data/app/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +425 -0
  43. data/app/assets/stylesheets/rails_admin/bootstrap/_pager.scss +45 -33
  44. data/app/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +70 -105
  45. data/app/assets/stylesheets/rails_admin/bootstrap/_panels.scss +243 -0
  46. data/app/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +61 -61
  47. data/app/assets/stylesheets/rails_admin/bootstrap/_print.scss +101 -0
  48. data/app/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +56 -73
  49. data/app/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +34 -0
  50. data/app/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +150 -50
  51. data/app/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +120 -23
  52. data/app/assets/stylesheets/rails_admin/bootstrap/_tables.scss +168 -170
  53. data/app/assets/stylesheets/rails_admin/bootstrap/_theme.scss +258 -0
  54. data/app/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +27 -42
  55. data/app/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +49 -24
  56. data/app/assets/stylesheets/rails_admin/bootstrap/_type.scss +200 -143
  57. data/app/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +33 -21
  58. data/app/assets/stylesheets/rails_admin/bootstrap/_variables.scss +764 -215
  59. data/app/assets/stylesheets/rails_admin/bootstrap/_wells.scss +7 -7
  60. data/app/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +47 -60
  61. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +14 -0
  62. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +11 -0
  63. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +18 -0
  64. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +50 -0
  65. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +7 -0
  66. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +22 -0
  67. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +84 -0
  68. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +58 -0
  69. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +81 -0
  70. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +122 -0
  71. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +21 -0
  72. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +34 -0
  73. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +12 -0
  74. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +31 -0
  75. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +10 -0
  76. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +9 -0
  77. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +8 -0
  78. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +23 -0
  79. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +24 -0
  80. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +10 -0
  81. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +8 -0
  82. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +6 -0
  83. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +21 -0
  84. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +10 -0
  85. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +9 -0
  86. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +28 -0
  87. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +11 -0
  88. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_text-overflow.scss +8 -0
  89. data/app/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +219 -0
  90. data/app/assets/stylesheets/rails_admin/ra.calendar-additions.scss +17 -0
  91. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +9 -5
  92. data/app/helpers/rails_admin/application_helper.rb +20 -19
  93. data/app/helpers/rails_admin/form_builder.rb +14 -11
  94. data/app/views/kaminari/twitter-bootstrap/_paginator.html.haml +8 -9
  95. data/app/views/layouts/rails_admin/_navigation.html.haml +5 -5
  96. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +1 -1
  97. data/app/views/layouts/rails_admin/application.html.haml +9 -8
  98. data/app/views/layouts/rails_admin/pjax.html.haml +4 -3
  99. data/app/views/rails_admin/main/_form_datetime.html.haml +2 -1
  100. data/app/views/rails_admin/main/_form_field.html.haml +1 -1
  101. data/app/views/rails_admin/main/_form_text.html.haml +1 -1
  102. data/app/views/rails_admin/main/_submit_buttons.html.haml +1 -0
  103. data/app/views/rails_admin/main/dashboard.html.haml +1 -1
  104. data/app/views/rails_admin/main/export.html.haml +19 -16
  105. data/app/views/rails_admin/main/index.html.haml +11 -7
  106. data/app/views/rails_admin/main/show.html.haml +1 -1
  107. data/lib/rails_admin/adapters/active_record.rb +2 -2
  108. data/lib/rails_admin/adapters/mongoid/property.rb +1 -1
  109. data/lib/rails_admin/config/actions/bulk_delete.rb +0 -1
  110. data/lib/rails_admin/config/actions/edit.rb +0 -2
  111. data/lib/rails_admin/config/actions/export.rb +0 -2
  112. data/lib/rails_admin/config/actions/index.rb +0 -3
  113. data/lib/rails_admin/config/actions/new.rb +0 -2
  114. data/lib/rails_admin/config/configurable.rb +1 -1
  115. data/lib/rails_admin/config/fields/base.rb +9 -0
  116. data/lib/rails_admin/config/fields/factories/enum.rb +2 -3
  117. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +4 -0
  118. data/lib/rails_admin/config/model.rb +2 -1
  119. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +2 -2
  120. data/lib/rails_admin/support/csv_converter.rb +22 -42
  121. data/lib/rails_admin/version.rb +1 -1
  122. metadata +59 -18
  123. data/app/assets/stylesheets/rails_admin/bootstrap/_accordion.scss +0 -34
  124. data/app/assets/stylesheets/rails_admin/bootstrap/_hero-unit.scss +0 -25
  125. data/app/assets/stylesheets/rails_admin/bootstrap/_labels-badges.scss +0 -83
  126. data/app/assets/stylesheets/rails_admin/bootstrap/_layouts.scss +0 -16
  127. data/app/assets/stylesheets/rails_admin/bootstrap/_reset.scss +0 -216
  128. data/app/assets/stylesheets/rails_admin/bootstrap/_responsive-1200px-min.scss +0 -28
  129. data/app/assets/stylesheets/rails_admin/bootstrap/_responsive-767px-max.scss +0 -193
  130. data/app/assets/stylesheets/rails_admin/bootstrap/_responsive-768px-979px.scss +0 -19
  131. data/app/assets/stylesheets/rails_admin/bootstrap/_responsive-navbar.scss +0 -189
  132. data/app/assets/stylesheets/rails_admin/bootstrap/_sprites.scss +0 -197
  133. data/app/assets/stylesheets/rails_admin/bootstrap/responsive.scss +0 -48
@@ -3,167 +3,68 @@
3
3
  // --------------------------------------------------
4
4
 
5
5
 
6
- // GENERAL STYLES
7
- // --------------
8
-
9
- // Make all forms have space below them
10
- form {
11
- margin: 0 0 $baseLineHeight;
12
- }
6
+ // Normalize non-controls
7
+ //
8
+ // Restyle and baseline non-control form elements.
13
9
 
14
10
  fieldset {
15
11
  padding: 0;
16
12
  margin: 0;
17
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
18
  }
19
19
 
20
- // Groups of fields with labels on top (legends)
21
20
  legend {
22
21
  display: block;
23
22
  width: 100%;
24
23
  padding: 0;
25
- margin-bottom: $baseLineHeight;
26
- font-size: $baseFontSize * 1.5;
27
- line-height: $baseLineHeight * 2;
28
- color: $grayDark;
24
+ margin-bottom: $line-height-computed;
25
+ font-size: ($font-size-base * 1.5);
26
+ line-height: inherit;
27
+ color: $legend-color;
29
28
  border: 0;
30
- border-bottom: 1px solid #e5e5e5;
31
-
32
- // Small
33
- small {
34
- font-size: $baseLineHeight * .75;
35
- color: $grayLight;
36
- }
37
- }
38
-
39
- // Set font for forms
40
- label,
41
- input,
42
- button,
43
- select,
44
- textarea {
45
- @include font-shorthand($baseFontSize, normal, $baseLineHeight); // Set size, weight, line-height here
46
- }
47
- input,
48
- button,
49
- select,
50
- textarea {
51
- font-family: $baseFontFamily; // And only set font-family here for those that need it (note the missing label element)
29
+ border-bottom: 1px solid $legend-border-color;
52
30
  }
53
31
 
54
- // Identify controls by their labels
55
32
  label {
56
- display: block;
33
+ display: inline-block;
34
+ max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)
57
35
  margin-bottom: 5px;
36
+ font-weight: bold;
58
37
  }
59
38
 
60
- // Form controls
61
- // -------------------------
62
39
 
63
- // Shared size and type resets
64
- select,
65
- textarea,
66
- input[type="text"],
67
- input[type="password"],
68
- input[type="datetime"],
69
- input[type="datetime-local"],
70
- input[type="date"],
71
- input[type="month"],
72
- input[type="time"],
73
- input[type="week"],
74
- input[type="number"],
75
- input[type="email"],
76
- input[type="url"],
77
- input[type="search"],
78
- input[type="tel"],
79
- input[type="color"],
80
- .uneditable-input {
81
- display: inline-block;
82
- height: $baseLineHeight;
83
- padding: 4px 6px;
84
- margin-bottom: $baseLineHeight / 2;;
85
- font-size: $baseFontSize;
86
- line-height: $baseLineHeight;
87
- color: $gray;
88
- @include border-radius($inputBorderRadius);
89
- vertical-align: middle;
90
- }
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.
91
45
 
92
- // Reset appearance properties for textual inputs and textarea
93
- // Declare width for legacy (can't be on input[type=*] selectors or it's too specific)
94
- input,
95
- textarea,
96
- .uneditable-input {
97
- width: 206px; // plus 12px padding and 2px border
98
- }
99
- // Reset height since textareas have rows
100
- textarea {
101
- height: auto;
102
- }
103
- // Everything else
104
- textarea,
105
- input[type="text"],
106
- input[type="password"],
107
- input[type="datetime"],
108
- input[type="datetime-local"],
109
- input[type="date"],
110
- input[type="month"],
111
- input[type="time"],
112
- input[type="week"],
113
- input[type="number"],
114
- input[type="email"],
115
- input[type="url"],
116
- input[type="search"],
117
- input[type="tel"],
118
- input[type="color"],
119
- .uneditable-input {
120
- background-color: $inputBackground;
121
- border: 1px solid $inputBorder;
122
- @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
123
- @include transition(border linear .2s, box-shadow linear .2s);
124
-
125
- // Focus state
126
- &:focus {
127
- border-color: rgba(82,168,236,.8);
128
- outline: 0;
129
- outline: thin dotted \9; /* IE6-9 */
130
- @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6));
131
- }
46
+ // Override content-box in Normalize (* isn't specific enough)
47
+ input[type="search"] {
48
+ @include box-sizing(border-box);
132
49
  }
133
50
 
134
51
  // Position radios and checkboxes better
135
52
  input[type="radio"],
136
53
  input[type="checkbox"] {
137
54
  margin: 4px 0 0;
138
- *margin-top: 0; /* IE7 */
139
- margin-top: 1px \9; /* IE8-9 */
55
+ margin-top: 1px \9; // IE8-9
140
56
  line-height: normal;
141
57
  }
142
58
 
143
- // Reset width of input images, buttons, radios, checkboxes
144
- input[type="file"],
145
- input[type="image"],
146
- input[type="submit"],
147
- input[type="reset"],
148
- input[type="button"],
149
- input[type="radio"],
150
- input[type="checkbox"] {
151
- width: auto; // Override of generic input selector
152
- }
153
-
154
- // Set the height of select and file controls to match text inputs
155
- select,
59
+ // Set the height of file controls to match text inputs
156
60
  input[type="file"] {
157
- height: $inputHeight; /* In IE7, the height of the select element cannot be changed by height, only font-size */
158
- *margin-top: 4px; /* For IE7, add top margin to align select with labels */
159
- line-height: $inputHeight;
61
+ display: block;
160
62
  }
161
63
 
162
- // Make select elements obey height by applying a border
163
- select {
164
- width: 220px; // default input width + 10px of padding that doesn't get applied
165
- border: 1px solid $inputBorder;
166
- background-color: $inputBackground; // Chrome on Linux and Mobile Safari need background-color
64
+ // Make range inputs behave like textual form controls
65
+ input[type="range"] {
66
+ display: block;
67
+ width: 100%;
167
68
  }
168
69
 
169
70
  // Make multiple select elements height not fixed
@@ -172,518 +73,466 @@ select[size] {
172
73
  height: auto;
173
74
  }
174
75
 
175
- // Focus for select, file, radio, and checkbox
176
- select:focus,
76
+ // Focus for file, radio, and checkbox
177
77
  input[type="file"]:focus,
178
78
  input[type="radio"]:focus,
179
79
  input[type="checkbox"]:focus {
180
80
  @include tab-focus();
181
81
  }
182
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
+
183
92
 
184
- // Uneditable inputs
185
- // -------------------------
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);
186
129
 
187
- // Make uneditable inputs look inactive
188
- .uneditable-input,
189
- .uneditable-textarea {
190
- color: $grayLight;
191
- background-color: darken($inputBackground, 1%);
192
- border-color: $inputBorder;
193
- @include box-shadow(inset 0 1px 2px rgba(0,0,0,.025));
194
- cursor: not-allowed;
195
- }
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
+ }
196
148
 
197
- // For text that needs to appear as an input but should not be an input
198
- .uneditable-input {
199
- overflow: hidden; // prevent text from wrapping, but still cut it off like an input does
200
- white-space: nowrap;
149
+ // [converter] extracted textarea& to textarea.form-control
201
150
  }
202
151
 
203
- // Make uneditable textareas behave like a textarea
204
- .uneditable-textarea {
205
- width: auto;
152
+ // Reset height for `textarea`s
153
+ textarea.form-control {
206
154
  height: auto;
207
155
  }
208
156
 
209
157
 
210
- // Placeholder
211
- // -------------------------
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.
212
164
 
213
- // Placeholder text gets special styles because when browsers invalidate entire lines if it doesn't understand a selector
214
- input,
215
- textarea {
216
- @include placeholder();
165
+ input[type="search"] {
166
+ -webkit-appearance: none;
217
167
  }
218
168
 
219
169
 
220
- // CHECKBOXES & RADIOS
221
- // -------------------
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.
222
208
 
223
- // Indent the labels to position radios/checkboxes as hanging
224
209
  .radio,
225
210
  .checkbox {
226
- min-height: $baseLineHeight; // clear the floating input if there is no label text
227
- padding-left: 20px;
211
+ position: relative;
212
+ display: block;
213
+ min-height: $line-height-computed; // clear the floating input if there is no label text
214
+ margin-top: 10px;
215
+ margin-bottom: 10px;
216
+
217
+ label {
218
+ padding-left: 20px;
219
+ margin-bottom: 0;
220
+ font-weight: normal;
221
+ cursor: pointer;
222
+ }
228
223
  }
229
224
  .radio input[type="radio"],
230
- .checkbox input[type="checkbox"] {
231
- float: left;
225
+ .radio-inline input[type="radio"],
226
+ .checkbox input[type="checkbox"],
227
+ .checkbox-inline input[type="checkbox"] {
228
+ position: absolute;
232
229
  margin-left: -20px;
230
+ margin-top: 4px \9;
233
231
  }
234
232
 
235
- // Move the options list down to align with labels
236
- .controls > .radio:first-child,
237
- .controls > .checkbox:first-child {
238
- padding-top: 5px; // has to be padding because margin collaspes
233
+ .radio + .radio,
234
+ .checkbox + .checkbox {
235
+ margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
239
236
  }
240
237
 
241
238
  // Radios and checkboxes on same line
242
- // TODO v3: Convert .inline to .control-inline
243
- .radio.inline,
244
- .checkbox.inline {
239
+ .radio-inline,
240
+ .checkbox-inline {
245
241
  display: inline-block;
246
- padding-top: 5px;
242
+ padding-left: 20px;
247
243
  margin-bottom: 0;
248
244
  vertical-align: middle;
245
+ font-weight: normal;
246
+ cursor: pointer;
249
247
  }
250
- .radio.inline + .radio.inline,
251
- .checkbox.inline + .checkbox.inline {
248
+ .radio-inline + .radio-inline,
249
+ .checkbox-inline + .checkbox-inline {
250
+ margin-top: 0;
252
251
  margin-left: 10px; // space out consecutive inline controls
253
252
  }
254
253
 
255
-
256
-
257
- // INPUT SIZES
258
- // -----------
259
-
260
- // General classes for quick sizes
261
- .input-mini { width: 60px; }
262
- .input-small { width: 90px; }
263
- .input-medium { width: 150px; }
264
- .input-large { width: 210px; }
265
- .input-xlarge { width: 270px; }
266
- .input-xxlarge { width: 530px; }
267
-
268
- // Grid style input sizes
269
- input[class*="span"],
270
- select[class*="span"],
271
- textarea[class*="span"],
272
- .uneditable-input[class*="span"],
273
- // Redeclare since the fluid row class is more specific
274
- .row-fluid input[class*="span"],
275
- .row-fluid select[class*="span"],
276
- .row-fluid textarea[class*="span"],
277
- .row-fluid .uneditable-input[class*="span"] {
278
- float: none;
279
- margin-left: 0;
280
- }
281
- // Ensure input-prepend/append never wraps
282
- .input-append input[class*="span"],
283
- .input-append .uneditable-input[class*="span"],
284
- .input-prepend input[class*="span"],
285
- .input-prepend .uneditable-input[class*="span"],
286
- .row-fluid input[class*="span"],
287
- .row-fluid select[class*="span"],
288
- .row-fluid textarea[class*="span"],
289
- .row-fluid .uneditable-input[class*="span"],
290
- .row-fluid .input-prepend [class*="span"],
291
- .row-fluid .input-append [class*="span"] {
292
- display: inline-block;
293
- }
294
-
295
-
296
-
297
- // GRID SIZING FOR INPUTS
298
- // ----------------------
299
-
300
- // Grid sizes
301
- @include grid-input($gridColumnWidth, $gridGutterWidth);
302
-
303
- // Control row for multiple inputs per line
304
- .controls-row {
305
- @include clearfix(); // Clear the float from controls
254
+ // Apply same disabled cursor tweak as for inputs
255
+ // Some special care is needed because <label>s don't inherit their parent's `cursor`.
256
+ //
257
+ // Note: Neither radios nor checkboxes can be readonly.
258
+ input[type="radio"],
259
+ input[type="checkbox"] {
260
+ &[disabled],
261
+ &.disabled,
262
+ fieldset[disabled] & {
263
+ cursor: not-allowed;
264
+ }
306
265
  }
307
-
308
- // Float to collapse white-space for proper grid alignment
309
- .controls-row [class*="span"],
310
- // Redeclare the fluid grid collapse since we undo the float for inputs
311
- .row-fluid .controls-row [class*="span"] {
312
- float: left;
266
+ // These classes are used directly on <label>s
267
+ .radio-inline,
268
+ .checkbox-inline {
269
+ &.disabled,
270
+ fieldset[disabled] & {
271
+ cursor: not-allowed;
272
+ }
313
273
  }
314
- // Explicity set top padding on all checkboxes/radios, not just first-child
315
- .controls-row .checkbox[class*="span"],
316
- .controls-row .radio[class*="span"] {
317
- padding-top: 5px;
274
+ // These classes are used on elements with <label> descendants
275
+ .radio,
276
+ .checkbox {
277
+ &.disabled,
278
+ fieldset[disabled] & {
279
+ label {
280
+ cursor: not-allowed;
281
+ }
282
+ }
318
283
  }
319
284
 
320
285
 
286
+ // Static form control text
287
+ //
288
+ // Apply class to a `p` element to make any string of text align with labels in
289
+ // a horizontal form layout.
290
+
291
+ .form-control-static {
292
+ // Size it appropriately next to real form controls
293
+ padding-top: ($padding-base-vertical + 1);
294
+ padding-bottom: ($padding-base-vertical + 1);
295
+ // Remove default margin from `p`
296
+ margin-bottom: 0;
321
297
 
298
+ &.input-lg,
299
+ &.input-sm {
300
+ padding-left: 0;
301
+ padding-right: 0;
302
+ }
303
+ }
322
304
 
323
- // DISABLED STATE
324
- // --------------
325
305
 
326
- // Disabled and read-only inputs
327
- input[disabled],
328
- select[disabled],
329
- textarea[disabled],
330
- input[readonly],
331
- select[readonly],
332
- textarea[readonly] {
333
- cursor: not-allowed;
334
- background-color: $inputDisabledBackground;
335
- }
336
- // Explicitly reset the colors here
337
- input[type="radio"][disabled],
338
- input[type="checkbox"][disabled],
339
- input[type="radio"][readonly],
340
- input[type="checkbox"][readonly] {
341
- background-color: transparent;
342
- }
306
+ // Form control sizing
307
+ //
308
+ // Build on `.form-control` with modifier classes to decrease or increase the
309
+ // height and font-size of form controls.
310
+
311
+ @include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);
343
312
 
313
+ @include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);
344
314
 
345
315
 
316
+ // Form control feedback states
317
+ //
318
+ // Apply contextual and semantic states to individual form controls.
346
319
 
347
- // FORM FIELD FEEDBACK STATES
348
- // --------------------------
320
+ .has-feedback {
321
+ // Enable absolute positioning
322
+ position: relative;
349
323
 
350
- // Warning
351
- .control-group.warning {
352
- @include formFieldState($warningText, $warningText, $warningBackground);
324
+ // Ensure icons don't overlap text
325
+ .form-control {
326
+ padding-right: ($input-height-base * 1.25);
327
+ }
353
328
  }
354
- // Error
355
- .control-group.error {
356
- @include formFieldState($errorText, $errorText, $errorBackground);
329
+ // Feedback icon (requires .glyphicon classes)
330
+ .form-control-feedback {
331
+ position: absolute;
332
+ top: ($line-height-computed + 5); // Height of the `label` and its margin
333
+ right: 0;
334
+ z-index: 2; // Ensure icon is above input groups
335
+ display: block;
336
+ width: $input-height-base;
337
+ height: $input-height-base;
338
+ line-height: $input-height-base;
339
+ text-align: center;
357
340
  }
358
- // Success
359
- .control-group.success {
360
- @include formFieldState($successText, $successText, $successBackground);
341
+ .input-lg + .form-control-feedback {
342
+ width: $input-height-large;
343
+ height: $input-height-large;
344
+ line-height: $input-height-large;
361
345
  }
362
- // Info
363
- .control-group.info {
364
- @include formFieldState($infoText, $infoText, $infoBackground);
346
+ .input-sm + .form-control-feedback {
347
+ width: $input-height-small;
348
+ height: $input-height-small;
349
+ line-height: $input-height-small;
365
350
  }
366
351
 
367
- // HTML5 invalid states
368
- // Shares styles with the .control-group.error above
369
- input:focus:invalid,
370
- textarea:focus:invalid,
371
- select:focus:invalid {
372
- color: #b94a48;
373
- border-color: #ee5f5b;
374
- &:focus {
375
- border-color: darken(#ee5f5b, 10%);
376
- @include box-shadow(0 0 6px lighten(#ee5f5b, 20%));
377
- }
352
+ // Feedback states
353
+ .has-success {
354
+ @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
378
355
  }
379
-
380
-
381
-
382
- // FORM ACTIONS
383
- // ------------
384
-
385
- .form-actions {
386
- padding: ($baseLineHeight - 1) 20px $baseLineHeight;
387
- margin-top: $baseLineHeight;
388
- margin-bottom: $baseLineHeight;
389
- background-color: $formActionsBackground;
390
- border-top: 1px solid #e5e5e5;
391
- @include clearfix(); // Adding clearfix to allow for .pull-right button containers
356
+ .has-warning {
357
+ @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
358
+ }
359
+ .has-error {
360
+ @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
392
361
  }
393
362
 
394
363
 
364
+ // Reposition feedback icon if label is hidden with "screenreader only" state
365
+ .has-feedback label.sr-only ~ .form-control-feedback {
366
+ top: 0;
367
+ }
395
368
 
396
- // HELP TEXT
397
- // ---------
398
369
 
399
- .help-block,
400
- .help-inline {
401
- color: lighten($textColor, 15%); // lighten the text some for contrast
402
- }
370
+ // Help text
371
+ //
372
+ // Apply to any element you wish to create light text for placement immediately
373
+ // below a form control. Use for general help, formatting, or instructional text.
403
374
 
404
375
  .help-block {
405
376
  display: block; // account for any element using help-block
406
- margin-bottom: $baseLineHeight / 2;
377
+ margin-top: 5px;
378
+ margin-bottom: 10px;
379
+ color: lighten($text-color, 25%); // lighten the text some for contrast
407
380
  }
408
381
 
409
- .help-inline {
410
- display: inline-block;
411
- @include ie7-inline-block();
412
- vertical-align: middle;
413
- padding-left: 5px;
414
- }
415
382
 
416
383
 
384
+ // Inline forms
385
+ //
386
+ // Make forms appear inline(-block) by adding the `.form-inline` class. Inline
387
+ // forms begin stacked on extra small (mobile) devices and then go inline when
388
+ // viewports reach <768px.
389
+ //
390
+ // Requires wrapping inputs and labels with `.form-group` for proper display of
391
+ // default HTML form controls and our custom form controls (e.g., input groups).
392
+ //
393
+ // Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
417
394
 
418
- // INPUT GROUPS
419
- // ------------
395
+ .form-inline {
420
396
 
421
- // Allow us to put symbols and text within the input field for a cleaner look
422
- .input-append,
423
- .input-prepend {
424
- display: inline-block;
425
- margin-bottom: $baseLineHeight / 2;
426
- vertical-align: middle;
427
- font-size: 0; // white space collapse hack
428
- white-space: nowrap; // Prevent span and input from separating
429
-
430
- // Reset the white space collapse hack
431
- input,
432
- select,
433
- .uneditable-input,
434
- .dropdown-menu,
435
- .popover {
436
- font-size: $baseFontSize;
437
- }
397
+ // Kick in the inline
398
+ @media (min-width: $screen-sm-min) {
399
+ // Inline-block all the things for "inline"
400
+ .form-group {
401
+ display: inline-block;
402
+ margin-bottom: 0;
403
+ vertical-align: middle;
404
+ }
438
405
 
439
- input,
440
- select,
441
- .uneditable-input {
442
- position: relative; // placed here by default so that on :focus we can place the input above the .add-on for full border and box-shadow goodness
443
- margin-bottom: 0; // prevent bottom margin from screwing up alignment in stacked forms
444
- *margin-left: 0;
445
- vertical-align: top;
446
- @include border-radius(0 $inputBorderRadius $inputBorderRadius 0);
447
- // Make input on top when focused so blue border and shadow always show
448
- &:focus {
449
- z-index: 2;
406
+ // In navbar-form, allow folks to *not* use `.form-group`
407
+ .form-control {
408
+ display: inline-block;
409
+ width: auto; // Prevent labels from stacking above inputs in `.form-group`
410
+ vertical-align: middle;
450
411
  }
451
- }
452
- .add-on {
453
- display: inline-block;
454
- width: auto;
455
- height: $baseLineHeight;
456
- min-width: 16px;
457
- padding: 4px 5px;
458
- font-size: $baseFontSize;
459
- font-weight: normal;
460
- line-height: $baseLineHeight;
461
- text-align: center;
462
- text-shadow: 0 1px 0 $white;
463
- background-color: $grayLighter;
464
- border: 1px solid #ccc;
465
- }
466
- .add-on,
467
- .btn,
468
- .btn-group > .dropdown-toggle {
469
- vertical-align: top;
470
- @include border-radius(0);
471
- }
472
- .active {
473
- background-color: lighten($green, 30);
474
- border-color: $green;
475
- }
476
- }
477
412
 
478
- .input-prepend {
479
- .add-on,
480
- .btn {
481
- margin-right: -1px;
482
- }
483
- .add-on:first-child,
484
- .btn:first-child {
485
- // FYI, `.btn:first-child` accounts for a button group that's prepended
486
- @include border-radius($inputBorderRadius 0 0 $inputBorderRadius);
487
- }
488
- }
413
+ .input-group {
414
+ display: inline-table;
415
+ vertical-align: middle;
489
416
 
490
- .input-append {
491
- input,
492
- select,
493
- .uneditable-input {
494
- @include border-radius($inputBorderRadius 0 0 $inputBorderRadius);
495
- + .btn-group .btn:last-child {
496
- @include border-radius(0 $inputBorderRadius $inputBorderRadius 0);
417
+ .input-group-addon,
418
+ .input-group-btn,
419
+ .form-control {
420
+ width: auto;
421
+ }
497
422
  }
498
- }
499
- .add-on,
500
- .btn,
501
- .btn-group {
502
- margin-left: -1px;
503
- }
504
- .add-on:last-child,
505
- .btn:last-child,
506
- .btn-group:last-child > .dropdown-toggle {
507
- @include border-radius(0 $inputBorderRadius $inputBorderRadius 0);
508
- }
509
- }
510
423
 
511
- // Remove all border-radius for inputs with both prepend and append
512
- .input-prepend.input-append {
513
- input,
514
- select,
515
- .uneditable-input {
516
- @include border-radius(0);
517
- + .btn-group .btn {
518
- @include border-radius(0 $inputBorderRadius $inputBorderRadius 0);
424
+ // Input groups need that 100% width though
425
+ .input-group > .form-control {
426
+ width: 100%;
519
427
  }
520
- }
521
- .add-on:first-child,
522
- .btn:first-child {
523
- margin-right: -1px;
524
- @include border-radius($inputBorderRadius 0 0 $inputBorderRadius);
525
- }
526
- .add-on:last-child,
527
- .btn:last-child {
528
- margin-left: -1px;
529
- @include border-radius(0 $inputBorderRadius $inputBorderRadius 0);
530
- }
531
- .btn-group:first-child {
532
- margin-left: 0;
533
- }
534
- }
535
-
536
-
537
-
538
428
 
539
- // SEARCH FORM
540
- // -----------
429
+ .control-label {
430
+ margin-bottom: 0;
431
+ vertical-align: middle;
432
+ }
541
433
 
542
- input.search-query {
543
- padding-right: 14px;
544
- padding-right: 4px \9;
545
- padding-left: 14px;
546
- padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */
547
- margin-bottom: 0; // Remove the default margin on all inputs
548
- @include border-radius(15px);
549
- }
434
+ // Remove default margin on radios/checkboxes that were used for stacking, and
435
+ // then undo the floating of radios and checkboxes to match (which also avoids
436
+ // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).
437
+ .radio,
438
+ .checkbox {
439
+ display: inline-block;
440
+ margin-top: 0;
441
+ margin-bottom: 0;
442
+ vertical-align: middle;
443
+
444
+ label {
445
+ padding-left: 0;
446
+ }
447
+ }
448
+ .radio input[type="radio"],
449
+ .checkbox input[type="checkbox"] {
450
+ position: relative;
451
+ margin-left: 0;
452
+ }
550
453
 
551
- /* Allow for input prepend/append in search forms */
552
- .form-search .input-append .search-query,
553
- .form-search .input-prepend .search-query {
554
- @include border-radius(0); // Override due to specificity
555
- }
556
- .form-search .input-append .search-query {
557
- @include border-radius(14px 0 0 14px);
558
- }
559
- .form-search .input-append .btn {
560
- @include border-radius(0 14px 14px 0);
561
- }
562
- .form-search .input-prepend .search-query {
563
- @include border-radius(0 14px 14px 0);
564
- }
565
- .form-search .input-prepend .btn {
566
- @include border-radius(14px 0 0 14px);
454
+ // Validation states
455
+ //
456
+ // Reposition the icon because it's now within a grid column and columns have
457
+ // `position: relative;` on them. Also accounts for the grid gutter padding.
458
+ .has-feedback .form-control-feedback {
459
+ top: 0;
460
+ }
461
+ }
567
462
  }
568
463
 
569
464
 
465
+ // Horizontal forms
466
+ //
467
+ // Horizontal forms are built on grid classes and allow you to create forms with
468
+ // labels on the left and inputs on the right.
570
469
 
571
-
572
- // HORIZONTAL & VERTICAL FORMS
573
- // ---------------------------
574
-
575
- // Common properties
576
- // -----------------
577
-
578
- .form-search,
579
- .form-inline,
580
470
  .form-horizontal {
581
- input,
582
- textarea,
583
- select,
584
- .help-inline,
585
- .uneditable-input,
586
- .input-prepend,
587
- .input-append {
588
- display: inline-block;
589
- @include ie7-inline-block();
471
+
472
+ // Consistent vertical alignment of radios and checkboxes
473
+ //
474
+ // Labels also get some reset styles, but that is scoped to a media query below.
475
+ .radio,
476
+ .checkbox,
477
+ .radio-inline,
478
+ .checkbox-inline {
479
+ margin-top: 0;
590
480
  margin-bottom: 0;
591
- vertical-align: middle;
481
+ padding-top: ($padding-base-vertical + 1); // Default padding plus a border
592
482
  }
593
- // Re-hide hidden elements due to specifity
594
- .hide {
595
- display: none;
483
+ // Account for padding we're adding to ensure the alignment and of help text
484
+ // and other content below items
485
+ .radio,
486
+ .checkbox {
487
+ min-height: ($line-height-computed + ($padding-base-vertical + 1));
596
488
  }
597
- }
598
- .form-search label,
599
- .form-inline label,
600
- .form-search .btn-group,
601
- .form-inline .btn-group {
602
- display: inline-block;
603
- }
604
- // Remove margin for input-prepend/-append
605
- .form-search .input-append,
606
- .form-inline .input-append,
607
- .form-search .input-prepend,
608
- .form-inline .input-prepend {
609
- margin-bottom: 0;
610
- }
611
- // Inline checkbox/radio labels (remove padding on left)
612
- .form-search .radio,
613
- .form-search .checkbox,
614
- .form-inline .radio,
615
- .form-inline .checkbox {
616
- padding-left: 0;
617
- margin-bottom: 0;
618
- vertical-align: middle;
619
- }
620
- // Remove float and margin, set to inline-block
621
- .form-search .radio input[type="radio"],
622
- .form-search .checkbox input[type="checkbox"],
623
- .form-inline .radio input[type="radio"],
624
- .form-inline .checkbox input[type="checkbox"] {
625
- float: left;
626
- margin-right: 3px;
627
- margin-left: 0;
628
- }
629
-
630
-
631
- // Margin to space out fieldsets
632
- .control-group {
633
- margin-bottom: $baseLineHeight / 2;
634
- }
635
-
636
- // Legend collapses margin, so next element is responsible for spacing
637
- legend + .control-group {
638
- margin-top: $baseLineHeight;
639
- -webkit-margin-top-collapse: separate;
640
- }
641
-
642
- // Horizontal-specific styles
643
- // --------------------------
644
489
 
645
- .form-horizontal {
646
- // Increase spacing between groups
647
- .control-group {
648
- margin-bottom: $baseLineHeight;
649
- @include clearfix();
490
+ // Make form groups behave like rows
491
+ .form-group {
492
+ @include make-row();
650
493
  }
651
- // Float the labels left
652
- .control-label {
653
- float: left;
654
- width: $horizontalComponentOffset - 20;
655
- padding-top: 5px;
656
- text-align: right;
657
- }
658
- // Move over all input controls and content
659
- .controls {
660
- // Super jank IE7 fix to ensure the inputs in .input-append and input-prepend
661
- // don't inherit the margin of the parent, in this case .controls
662
- *display: inline-block;
663
- *padding-left: 20px;
664
- margin-left: $horizontalComponentOffset;
665
- *margin-left: 0;
666
- &:first-child {
667
- *padding-left: $horizontalComponentOffset;
494
+
495
+ // Reset spacing and right align labels, but scope to media queries so that
496
+ // labels on narrow viewports stack the same as a default form example.
497
+ @media (min-width: $screen-sm-min) {
498
+ .control-label {
499
+ text-align: right;
500
+ margin-bottom: 0;
501
+ padding-top: ($padding-base-vertical + 1); // Default padding plus a border
668
502
  }
669
503
  }
670
- // Remove bottom margin on block level help text since that's accounted for on .control-group
671
- .help-block {
672
- margin-bottom: 0;
504
+
505
+ // Validation states
506
+ //
507
+ // Reposition the icon because it's now within a grid column and columns have
508
+ // `position: relative;` on them. Also accounts for the grid gutter padding.
509
+ .has-feedback .form-control-feedback {
510
+ top: 0;
511
+ right: ($grid-gutter-width / 2);
673
512
  }
674
- // And apply it only to .help-block instances that follow a form control
675
- input,
676
- select,
677
- textarea,
678
- .uneditable-input,
679
- .input-prepend,
680
- .input-append {
681
- + .help-block {
682
- margin-top: $baseLineHeight / 2;
513
+
514
+ // Form group sizes
515
+ //
516
+ // Quick utility class for applying `.input-lg` and `.input-sm` styles to the
517
+ // inputs and labels within a `.form-group`.
518
+ .form-group-lg {
519
+ @media (min-width: $screen-sm-min) {
520
+ .control-label {
521
+ padding-top: (($padding-large-vertical * $line-height-large) + 1);
522
+ }
523
+ }
524
+ .form-control {
525
+ @extend .input-lg;
683
526
  }
684
527
  }
685
- // Move over buttons in .form-actions to align with .controls
686
- .form-actions {
687
- padding-left: $horizontalComponentOffset;
528
+ .form-group-sm {
529
+ @media (min-width: $screen-sm-min) {
530
+ .control-label {
531
+ padding-top: ($padding-small-vertical + 1);
532
+ }
533
+ }
534
+ .form-control {
535
+ @extend .input-sm;
536
+ }
688
537
  }
689
538
  }