spiderfw 0.6.39 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG +2 -0
  3. data/Rakefile +4 -3
  4. data/VERSION +1 -1
  5. data/apps/core/admin/public/css/sass/admin.css +61 -12
  6. data/apps/core/admin/public/sass/admin.scss +51 -0
  7. data/apps/core/admin/views/login.layout.shtml +1 -1
  8. data/apps/core/components/assets.rb +34 -2
  9. data/apps/core/components/po/it/spider_components.po +2 -2
  10. data/apps/core/components/public/bootstrap/scss/_aggiunte_bootstrap_3.scss +54 -0
  11. data/apps/core/components/public/bootstrap/scss/_pagination.scss +1 -1
  12. data/apps/core/components/public/bootstrap/scss/_variables.scss +2 -0
  13. data/apps/core/components/public/bootstrap/scss/bootstrap.css +48 -2
  14. data/apps/core/components/public/bootstrap/scss/bootstrap.scss +4 -1
  15. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.eot +0 -0
  16. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.svg +272 -213
  17. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.ttf +0 -0
  18. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.woff +0 -0
  19. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.woff2 +0 -0
  20. data/apps/core/components/public/bootstrap_3/js/affix.js +48 -26
  21. data/apps/core/components/public/bootstrap_3/js/alert.js +8 -6
  22. data/apps/core/components/public/bootstrap_3/js/button.js +27 -17
  23. data/apps/core/components/public/bootstrap_3/js/carousel.js +66 -39
  24. data/apps/core/components/public/bootstrap_3/js/collapse.js +73 -42
  25. data/apps/core/components/public/bootstrap_3/js/dropdown.js +54 -40
  26. data/apps/core/components/public/bootstrap_3/js/modal.js +102 -42
  27. data/apps/core/components/public/bootstrap_3/js/popover.js +6 -11
  28. data/apps/core/components/public/bootstrap_3/js/scrollspy.js +47 -33
  29. data/apps/core/components/public/bootstrap_3/js/tab.js +48 -21
  30. data/apps/core/components/public/bootstrap_3/js/tooltip.js +118 -60
  31. data/apps/core/components/public/bootstrap_3/js/transition.js +15 -4
  32. data/apps/core/components/public/bootstrap_3/scss/_alerts.scss +8 -2
  33. data/apps/core/components/public/bootstrap_3/scss/_badges.scss +14 -3
  34. data/apps/core/components/public/bootstrap_3/scss/_button-groups.scss +23 -19
  35. data/apps/core/components/public/bootstrap_3/scss/_buttons.scss +22 -13
  36. data/apps/core/components/public/bootstrap_3/scss/_carousel.scss +28 -2
  37. data/apps/core/components/public/bootstrap_3/scss/_close.scss +1 -0
  38. data/apps/core/components/public/bootstrap_3/scss/_code.scss +7 -0
  39. data/apps/core/components/public/bootstrap_3/scss/_component-animations.scss +3 -1
  40. data/apps/core/components/public/bootstrap_3/scss/_dropdowns.scss +11 -9
  41. data/apps/core/components/public/bootstrap_3/scss/_forms.scss +190 -68
  42. data/apps/core/components/public/bootstrap_3/scss/_glyphicons.scss +83 -13
  43. data/apps/core/components/public/bootstrap_3/scss/_grid.scss +4 -4
  44. data/apps/core/components/public/bootstrap_3/scss/_input-groups.scss +1 -0
  45. data/apps/core/components/public/bootstrap_3/scss/_jumbotron.scss +8 -4
  46. data/apps/core/components/public/bootstrap_3/scss/_list-group.scss +13 -12
  47. data/apps/core/components/public/bootstrap_3/scss/_media.scss +40 -30
  48. data/apps/core/components/public/bootstrap_3/scss/_mixins.scss +1 -0
  49. data/apps/core/components/public/bootstrap_3/scss/_modals.scss +7 -4
  50. data/apps/core/components/public/bootstrap_3/scss/_navbar.scss +36 -32
  51. data/apps/core/components/public/bootstrap_3/scss/_navs.scss +3 -3
  52. data/apps/core/components/public/bootstrap_3/scss/_normalize.scss +12 -13
  53. data/apps/core/components/public/bootstrap_3/scss/_pager.scss +2 -3
  54. data/apps/core/components/public/bootstrap_3/scss/_pagination.scss +4 -3
  55. data/apps/core/components/public/bootstrap_3/scss/_panels.scss +38 -7
  56. data/apps/core/components/public/bootstrap_3/scss/_popovers.scss +5 -7
  57. data/apps/core/components/public/bootstrap_3/scss/_print.scss +96 -96
  58. data/apps/core/components/public/bootstrap_3/scss/_progress-bars.scss +20 -22
  59. data/apps/core/components/public/bootstrap_3/scss/_responsive-embed.scss +10 -9
  60. data/apps/core/components/public/bootstrap_3/scss/_responsive-utilities.scss +8 -3
  61. data/apps/core/components/public/bootstrap_3/scss/_scaffolding.scss +15 -4
  62. data/apps/core/components/public/bootstrap_3/scss/_tables.scss +15 -14
  63. data/apps/core/components/public/bootstrap_3/scss/_theme.scss +57 -13
  64. data/apps/core/components/public/bootstrap_3/scss/_thumbnails.scss +2 -2
  65. data/apps/core/components/public/bootstrap_3/scss/_tooltip.scss +13 -7
  66. data/apps/core/components/public/bootstrap_3/scss/_type.scss +21 -21
  67. data/apps/core/components/public/bootstrap_3/scss/_utilities.scss +3 -4
  68. data/apps/core/components/public/bootstrap_3/scss/_variables.scss +54 -32
  69. data/apps/core/components/public/bootstrap_3/scss/bootstrap.css +8772 -0
  70. data/apps/core/components/public/bootstrap_3/scss/bootstrap.scss +6 -0
  71. data/apps/core/components/public/bootstrap_3/scss/mixins/_background-variant.scss +2 -1
  72. data/apps/core/components/public/bootstrap_3/scss/mixins/_buttons.scss +19 -1
  73. data/apps/core/components/public/bootstrap_3/scss/mixins/_forms.scss +5 -1
  74. data/apps/core/components/public/bootstrap_3/scss/mixins/_gradients.scss +1 -1
  75. data/apps/core/components/public/bootstrap_3/scss/mixins/_grid-framework.scss +4 -10
  76. data/apps/core/components/public/bootstrap_3/scss/mixins/_grid.scss +7 -7
  77. data/apps/core/components/public/bootstrap_3/scss/mixins/_hide-text.scss +3 -3
  78. data/apps/core/components/public/bootstrap_3/scss/mixins/_labels.scss +1 -1
  79. data/apps/core/components/public/bootstrap_3/scss/mixins/_list-group.scss +3 -2
  80. data/apps/core/components/public/bootstrap_3/scss/mixins/_opacity.scss +1 -1
  81. data/apps/core/components/public/bootstrap_3/scss/mixins/_pagination.scss +2 -1
  82. data/apps/core/components/public/bootstrap_3/scss/mixins/_panels.scss +4 -0
  83. data/apps/core/components/public/bootstrap_3/scss/mixins/_progress-bar.scss +3 -1
  84. data/apps/core/components/public/bootstrap_3/scss/mixins/_reset-text.scss +18 -0
  85. data/apps/core/components/public/bootstrap_3/scss/mixins/_responsive-visibility.scss +1 -1
  86. data/apps/core/components/public/bootstrap_3/scss/mixins/_text-emphasis.scss +2 -1
  87. data/apps/core/components/public/bootstrap_3/scss/mixins/_vendor-prefixes.scss +11 -13
  88. data/apps/core/components/public/css/table_base.css +46 -1
  89. data/apps/core/components/public/fontawesome_4/fonts/font-awesome/fontawesome-webfont.eot +0 -0
  90. data/apps/core/components/public/fontawesome_4/fonts/font-awesome/fontawesome-webfont.svg +565 -0
  91. data/apps/core/components/public/fontawesome_4/fonts/font-awesome/fontawesome-webfont.ttf +0 -0
  92. data/apps/core/components/public/fontawesome_4/fonts/font-awesome/fontawesome-webfont.woff +0 -0
  93. data/apps/core/components/public/fontawesome_4/fonts/font-awesome/fontawesome-webfont.woff2 +0 -0
  94. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome.css +2893 -0
  95. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_animated.scss +34 -0
  96. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_bordered-pulled.scss +16 -0
  97. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_core.scss +12 -0
  98. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_extras.scss +44 -0
  99. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_fixed-width.scss +6 -0
  100. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_icons.scss +596 -0
  101. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_larger.scss +13 -0
  102. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_list.scss +19 -0
  103. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_mixins.scss +26 -0
  104. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_path.scss +14 -0
  105. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_rotated-flipped.scss +20 -0
  106. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_stacked.scss +20 -0
  107. data/apps/core/components/public/fontawesome_4/stylesheets/font-awesome/_variables.scss +608 -0
  108. data/apps/core/components/public/fontawesome_4/stylesheets/font_awesome.css +2893 -0
  109. data/apps/core/components/public/fontawesome_4/stylesheets/font_awesome.scss +17 -0
  110. data/apps/core/components/public/js/paginatore.js +307 -0
  111. data/apps/core/components/public/js/spin.js +399 -0
  112. data/apps/core/components/public/mmenu/js/jquery.mmenu.js +133 -0
  113. data/apps/core/components/public/mmenu/scss/extensions/_jquery.mmenu.borderstyle.scss +33 -0
  114. data/apps/core/components/public/mmenu/scss/extensions/_jquery.mmenu.effects.scss +199 -0
  115. data/apps/core/components/public/mmenu/scss/extensions/_jquery.mmenu.fullscreen.scss +24 -0
  116. data/apps/core/components/public/mmenu/scss/extensions/_jquery.mmenu.iconbar.scss +26 -0
  117. data/apps/core/components/public/mmenu/scss/extensions/_jquery.mmenu.multiline.scss +15 -0
  118. data/apps/core/components/public/mmenu/scss/extensions/_jquery.mmenu.pagedim.scss +36 -0
  119. data/apps/core/components/public/mmenu/scss/extensions/_jquery.mmenu.pageshadow.scss +36 -0
  120. data/apps/core/components/public/mmenu/scss/extensions/_jquery.mmenu.positioning.scss +87 -0
  121. data/apps/core/components/public/mmenu/scss/extensions/_jquery.mmenu.themes.scss +76 -0
  122. data/apps/core/components/public/mmenu/scss/extensions/_jquery.mmenu.tileview.scss +98 -0
  123. data/apps/core/components/public/mmenu/scss/extensions/_jquery.mmenu.widescreen.scss +61 -0
  124. data/apps/core/components/public/mmenu/scss/inc/_colors.scss +175 -0
  125. data/apps/core/components/public/mmenu/scss/inc/_mixins.scss +135 -0
  126. data/apps/core/components/public/mmenu/scss/inc/_sizing.scss +86 -0
  127. data/apps/core/components/public/mmenu/scss/inc/_variables.scss +61 -0
  128. data/apps/core/components/public/mmenu/scss/jquery.mmenu.scss +478 -0
  129. data/apps/core/components/widgets/table/table.rb +7 -0
  130. data/apps/core/components/widgets/table/table.shtml +50 -17
  131. data/apps/core/forms/tags/row.erb +1 -1
  132. data/lib/spiderfw/cmd/cmd.rb +2 -0
  133. data/lib/spiderfw/cmd/commands/assets.rb +12 -0
  134. data/lib/spiderfw/controller/mixins/visual.rb +1 -0
  135. data/lib/spiderfw/create.rb +0 -1
  136. data/lib/spiderfw/i18n/gettext.rb +33 -0
  137. data/lib/spiderfw/i18n/javascript_parser.rb +2 -2
  138. data/lib/spiderfw/i18n/shtml_parser.rb +2 -2
  139. data/lib/spiderfw/model/model.rb +2 -1
  140. data/lib/spiderfw/setup/app_manager.rb +8 -0
  141. data/lib/spiderfw/spider.rb +9 -1
  142. data/lib/spiderfw/templates/layout.rb +47 -39
  143. data/lib/spiderfw/templates/template.rb +12 -4
  144. metadata +46 -1
@@ -11,7 +11,7 @@ fieldset {
11
11
  padding: 0;
12
12
  margin: 0;
13
13
  border: 0;
14
- // Chrome and Firefox set a `min-width: -webkit-min-content;` on fieldsets,
14
+ // Chrome and Firefox set a `min-width: min-content;` on fieldsets,
15
15
  // so we reset that to ensure it behaves more like a standard block element.
16
16
  // See https://github.com/twbs/bootstrap/issues/12359.
17
17
  min-width: 0;
@@ -56,7 +56,6 @@ input[type="checkbox"] {
56
56
  line-height: normal;
57
57
  }
58
58
 
59
- // Set the height of file controls to match text inputs
60
59
  input[type="file"] {
61
60
  display: block;
62
61
  }
@@ -77,7 +76,7 @@ select[size] {
77
76
  input[type="file"]:focus,
78
77
  input[type="radio"]:focus,
79
78
  input[type="checkbox"]:focus {
80
- @include tab-focus();
79
+ @include tab-focus;
81
80
  }
82
81
 
83
82
  // Adjust output element
@@ -123,15 +122,15 @@ output {
123
122
  background-color: $input-bg;
124
123
  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
125
124
  border: 1px solid $input-border;
126
- border-radius: $input-border-radius;
125
+ 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
126
  @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
128
127
  @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);
129
128
 
130
129
  // Customize the `:focus` state to imitate native WebKit styles.
131
- @include form-control-focus();
130
+ @include form-control-focus;
132
131
 
133
132
  // Placeholder
134
- @include placeholder();
133
+ @include placeholder;
135
134
 
136
135
  // Disabled and read-only inputs
137
136
  //
@@ -141,9 +140,13 @@ output {
141
140
  &[disabled],
142
141
  &[readonly],
143
142
  fieldset[disabled] & {
144
- cursor: not-allowed;
145
143
  background-color: $input-bg-disabled;
146
- opacity: 1; // iOS fix for unreadable disabled content
144
+ opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
145
+ }
146
+
147
+ &[disabled],
148
+ fieldset[disabled] & {
149
+ cursor: $cursor-disabled;
147
150
  }
148
151
 
149
152
  // [converter] extracted textarea& to textarea.form-control
@@ -170,24 +173,30 @@ input[type="search"] {
170
173
  // Special styles for iOS temporal inputs
171
174
  //
172
175
  // 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};
176
+ // text within the input to become vertically misaligned. As a workaround, we
177
+ // set a pixel line-height that matches the given height of the input, but only
178
+ // for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
179
+ //
180
+ // Note that as of 8.3, iOS doesn't support `datetime` or `week`.
181
+
182
+ @media screen and (-webkit-min-device-pixel-ratio: 0) {
183
+ input[type="date"],
184
+ input[type="time"],
185
+ input[type="datetime-local"],
186
+ input[type="month"] {
187
+ &.form-control {
188
+ line-height: $input-height-base;
189
+ }
185
190
 
186
- &.input-sm {
187
- line-height: $input-height-small;
188
- }
189
- &.input-lg {
190
- line-height: $input-height-large;
191
+ &.input-sm,
192
+ .input-group-sm & {
193
+ line-height: $input-height-small;
194
+ }
195
+
196
+ &.input-lg,
197
+ .input-group-lg & {
198
+ line-height: $input-height-large;
199
+ }
191
200
  }
192
201
  }
193
202
 
@@ -198,7 +207,7 @@ input[type="month"] {
198
207
  // horizontal forms, use the predefined grid classes.
199
208
 
200
209
  .form-group {
201
- margin-bottom: 15px;
210
+ margin-bottom: $form-group-margin-bottom;
202
211
  }
203
212
 
204
213
 
@@ -208,12 +217,13 @@ input[type="month"] {
208
217
 
209
218
  .radio,
210
219
  .checkbox {
220
+ position: relative;
211
221
  display: block;
212
- min-height: $line-height-computed; // clear the floating input if there is no label text
213
222
  margin-top: 10px;
214
223
  margin-bottom: 10px;
215
224
 
216
225
  label {
226
+ min-height: $line-height-computed; // Ensure the input doesn't jump when there is no text
217
227
  padding-left: 20px;
218
228
  margin-bottom: 0;
219
229
  font-weight: normal;
@@ -224,9 +234,11 @@ input[type="month"] {
224
234
  .radio-inline input[type="radio"],
225
235
  .checkbox input[type="checkbox"],
226
236
  .checkbox-inline input[type="checkbox"] {
227
- float: left;
237
+ position: absolute;
228
238
  margin-left: -20px;
239
+ margin-top: 4px \9;
229
240
  }
241
+
230
242
  .radio + .radio,
231
243
  .checkbox + .checkbox {
232
244
  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
@@ -235,6 +247,7 @@ input[type="month"] {
235
247
  // Radios and checkboxes on same line
236
248
  .radio-inline,
237
249
  .checkbox-inline {
250
+ position: relative;
238
251
  display: inline-block;
239
252
  padding-left: 20px;
240
253
  margin-bottom: 0;
@@ -249,17 +262,54 @@ input[type="month"] {
249
262
  }
250
263
 
251
264
  // Apply same disabled cursor tweak as for inputs
265
+ // Some special care is needed because <label>s don't inherit their parent's `cursor`.
252
266
  //
253
267
  // Note: Neither radios nor checkboxes can be readonly.
254
268
  input[type="radio"],
255
- input[type="checkbox"],
256
- .radio,
269
+ input[type="checkbox"] {
270
+ &[disabled],
271
+ &.disabled,
272
+ fieldset[disabled] & {
273
+ cursor: $cursor-disabled;
274
+ }
275
+ }
276
+ // These classes are used directly on <label>s
257
277
  .radio-inline,
258
- .checkbox,
259
278
  .checkbox-inline {
260
- &[disabled],
279
+ &.disabled,
280
+ fieldset[disabled] & {
281
+ cursor: $cursor-disabled;
282
+ }
283
+ }
284
+ // These classes are used on elements with <label> descendants
285
+ .radio,
286
+ .checkbox {
287
+ &.disabled,
261
288
  fieldset[disabled] & {
262
- cursor: not-allowed;
289
+ label {
290
+ cursor: $cursor-disabled;
291
+ }
292
+ }
293
+ }
294
+
295
+
296
+ // Static form control text
297
+ //
298
+ // Apply class to a `p` element to make any string of text align with labels in
299
+ // a horizontal form layout.
300
+
301
+ .form-control-static {
302
+ // Size it appropriately next to real form controls
303
+ padding-top: ($padding-base-vertical + 1);
304
+ padding-bottom: ($padding-base-vertical + 1);
305
+ // Remove default margin from `p`
306
+ margin-bottom: 0;
307
+ min-height: ($line-height-computed + $font-size-base);
308
+
309
+ &.input-lg,
310
+ &.input-sm {
311
+ padding-left: 0;
312
+ padding-right: 0;
263
313
  }
264
314
  }
265
315
 
@@ -268,10 +318,61 @@ input[type="checkbox"],
268
318
  //
269
319
  // Build on `.form-control` with modifier classes to decrease or increase the
270
320
  // height and font-size of form controls.
321
+ //
322
+ // The `.form-group-* form-control` variations are sadly duplicated to avoid the
323
+ // issue documented in https://github.com/twbs/bootstrap/issues/15074.
271
324
 
272
- @include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);
325
+ @include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $input-border-radius-small);
326
+ .form-group-sm {
327
+ .form-control {
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
+ border-radius: $input-border-radius-small;
333
+ }
334
+ select.form-control {
335
+ height: $input-height-small;
336
+ line-height: $input-height-small;
337
+ }
338
+ textarea.form-control,
339
+ select[multiple].form-control {
340
+ height: auto;
341
+ }
342
+ .form-control-static {
343
+ height: $input-height-small;
344
+ min-height: ($line-height-computed + $font-size-small);
345
+ padding: ($padding-small-vertical + 1) $padding-small-horizontal;
346
+ font-size: $font-size-small;
347
+ line-height: $line-height-small;
348
+ }
349
+ }
273
350
 
274
- @include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);
351
+ @include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $input-border-radius-large);
352
+ .form-group-lg {
353
+ .form-control {
354
+ height: $input-height-large;
355
+ padding: $padding-large-vertical $padding-large-horizontal;
356
+ font-size: $font-size-large;
357
+ line-height: $line-height-large;
358
+ border-radius: $input-border-radius-large;
359
+ }
360
+ select.form-control {
361
+ height: $input-height-large;
362
+ line-height: $input-height-large;
363
+ }
364
+ textarea.form-control,
365
+ select[multiple].form-control {
366
+ height: auto;
367
+ }
368
+ .form-control-static {
369
+ height: $input-height-large;
370
+ min-height: ($line-height-computed + $font-size-large);
371
+ padding: ($padding-large-vertical + 1) $padding-large-horizontal;
372
+ font-size: $font-size-large;
373
+ line-height: $line-height-large;
374
+ }
375
+ }
275
376
 
276
377
 
277
378
  // Form control feedback states
@@ -290,7 +391,7 @@ input[type="checkbox"],
290
391
  // Feedback icon (requires .glyphicon classes)
291
392
  .form-control-feedback {
292
393
  position: absolute;
293
- top: ($line-height-computed + 5); // Height of the `label` and its margin
394
+ top: 0;
294
395
  right: 0;
295
396
  z-index: 2; // Ensure icon is above input groups
296
397
  display: block;
@@ -298,13 +399,18 @@ input[type="checkbox"],
298
399
  height: $input-height-base;
299
400
  line-height: $input-height-base;
300
401
  text-align: center;
402
+ pointer-events: none;
301
403
  }
302
- .input-lg + .form-control-feedback {
404
+ .input-lg + .form-control-feedback,
405
+ .input-group-lg + .form-control-feedback,
406
+ .form-group-lg .form-control + .form-control-feedback {
303
407
  width: $input-height-large;
304
408
  height: $input-height-large;
305
409
  line-height: $input-height-large;
306
410
  }
307
- .input-sm + .form-control-feedback {
411
+ .input-sm + .form-control-feedback,
412
+ .input-group-sm + .form-control-feedback,
413
+ .form-group-sm .form-control + .form-control-feedback {
308
414
  width: $input-height-small;
309
415
  height: $input-height-small;
310
416
  line-height: $input-height-small;
@@ -321,20 +427,15 @@ input[type="checkbox"],
321
427
  @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
322
428
  }
323
429
 
430
+ // Reposition feedback icon if input has visible label above
431
+ .has-feedback label {
324
432
 
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`
433
+ & ~ .form-control-feedback {
434
+ top: ($line-height-computed + 5); // Height of the `label` and its margin
435
+ }
436
+ &.sr-only ~ .form-control-feedback {
437
+ top: 0;
438
+ }
338
439
  }
339
440
 
340
441
 
@@ -351,7 +452,6 @@ input[type="checkbox"],
351
452
  }
352
453
 
353
454
 
354
-
355
455
  // Inline forms
356
456
  //
357
457
  // Make forms appear inline(-block) by adding the `.form-inline` class. Inline
@@ -363,7 +463,8 @@ input[type="checkbox"],
363
463
  //
364
464
  // Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
365
465
 
366
- .form-inline {
466
+ // [converter] extracted from `.form-inline` for libsass compatibility
467
+ @mixin form-inline {
367
468
 
368
469
  // Kick in the inline
369
470
  @media (min-width: $screen-sm-min) {
@@ -381,6 +482,11 @@ input[type="checkbox"],
381
482
  vertical-align: middle;
382
483
  }
383
484
 
485
+ // Make static controls behave like regular ones
486
+ .form-control-static {
487
+ display: inline-block;
488
+ }
489
+
384
490
  .input-group {
385
491
  display: inline-table;
386
492
  vertical-align: middle;
@@ -403,8 +509,7 @@ input[type="checkbox"],
403
509
  }
404
510
 
405
511
  // 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).
512
+ // then undo the floating of radios and checkboxes to match.
408
513
  .radio,
409
514
  .checkbox {
410
515
  display: inline-block;
@@ -418,19 +523,21 @@ input[type="checkbox"],
418
523
  }
419
524
  .radio input[type="radio"],
420
525
  .checkbox input[type="checkbox"] {
421
- float: none;
526
+ position: relative;
422
527
  margin-left: 0;
423
528
  }
424
529
 
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.
530
+ // Re-override the feedback icon.
429
531
  .has-feedback .form-control-feedback {
430
532
  top: 0;
431
533
  }
432
534
  }
433
535
  }
536
+ // [converter] extracted as `@mixin form-inline` for libsass compatibility
537
+ .form-inline {
538
+ @include form-inline;
539
+ }
540
+
434
541
 
435
542
 
436
543
  // Horizontal forms
@@ -460,12 +567,7 @@ input[type="checkbox"],
460
567
 
461
568
  // Make form groups behave like rows
462
569
  .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);
570
+ @include make-row;
469
571
  }
470
572
 
471
573
  // Reset spacing and right align labels, but scope to media queries so that
@@ -483,7 +585,27 @@ input[type="checkbox"],
483
585
  // Reposition the icon because it's now within a grid column and columns have
484
586
  // `position: relative;` on them. Also accounts for the grid gutter padding.
485
587
  .has-feedback .form-control-feedback {
486
- top: 0;
487
- right: ($grid-gutter-width / 2);
588
+ right: floor(($grid-gutter-width / 2));
589
+ }
590
+
591
+ // Form group sizes
592
+ //
593
+ // Quick utility class for applying `.input-lg` and `.input-sm` styles to the
594
+ // inputs and labels within a `.form-group`.
595
+ .form-group-lg {
596
+ @media (min-width: $screen-sm-min) {
597
+ .control-label {
598
+ padding-top: (($padding-large-vertical * $line-height-large) + 1);
599
+ font-size: $font-size-large;
600
+ }
601
+ }
602
+ }
603
+ .form-group-sm {
604
+ @media (min-width: $screen-sm-min) {
605
+ .control-label {
606
+ padding-top: ($padding-small-vertical + 1);
607
+ font-size: $font-size-small;
608
+ }
609
+ }
488
610
  }
489
611
  }
@@ -1,7 +1,3 @@
1
- //= depend_on_asset "bootstrap/glyphicons-halflings-regular.eot"
2
- //= depend_on_asset "bootstrap/glyphicons-halflings-regular.svg"
3
- //= depend_on_asset "bootstrap/glyphicons-halflings-regular.ttf"
4
- //= depend_on_asset "bootstrap/glyphicons-halflings-regular.woff"
5
1
  //
6
2
  // Glyphicons for Bootstrap
7
3
  //
@@ -11,14 +7,17 @@
11
7
  //
12
8
  // <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a>
13
9
 
14
- // Import the fonts
15
- @font-face {
16
- font-family: 'Glyphicons Halflings';
17
- src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot'), '#{$icon-font-path}#{$icon-font-name}.eot'));
18
- src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot?#iefix'), '#{$icon-font-path}#{$icon-font-name}.eot?#iefix')) format('embedded-opentype'),
19
- url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff'), '#{$icon-font-path}#{$icon-font-name}.woff')) format('woff'),
20
- url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.ttf'), '#{$icon-font-path}#{$icon-font-name}.ttf')) format('truetype'),
21
- url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}'), '#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}')) format('svg');
10
+ @at-root {
11
+ // Import the fonts
12
+ @font-face {
13
+ font-family: 'Glyphicons Halflings';
14
+ src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot'), '#{$icon-font-path}#{$icon-font-name}.eot'));
15
+ src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot?#iefix'), '#{$icon-font-path}#{$icon-font-name}.eot?#iefix')) format('embedded-opentype'),
16
+ url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff2'), '#{$icon-font-path}#{$icon-font-name}.woff2')) format('woff2'),
17
+ url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff'), '#{$icon-font-path}#{$icon-font-name}.woff')) format('woff'),
18
+ url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.ttf'), '#{$icon-font-path}#{$icon-font-name}.ttf')) format('truetype'),
19
+ url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}'), '#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}')) format('svg');
20
+ }
22
21
  }
23
22
 
24
23
  // Catchall baseclass
@@ -37,7 +36,8 @@
37
36
  // Individual icons
38
37
  .glyphicon-asterisk { &:before { content: "\2a"; } }
39
38
  .glyphicon-plus { &:before { content: "\2b"; } }
40
- .glyphicon-euro { &:before { content: "\20ac"; } }
39
+ .glyphicon-euro,
40
+ .glyphicon-eur { &:before { content: "\20ac"; } }
41
41
  .glyphicon-minus { &:before { content: "\2212"; } }
42
42
  .glyphicon-cloud { &:before { content: "\2601"; } }
43
43
  .glyphicon-envelope { &:before { content: "\2709"; } }
@@ -235,3 +235,73 @@
235
235
  .glyphicon-cloud-upload { &:before { content: "\e198"; } }
236
236
  .glyphicon-tree-conifer { &:before { content: "\e199"; } }
237
237
  .glyphicon-tree-deciduous { &:before { content: "\e200"; } }
238
+ .glyphicon-cd { &:before { content: "\e201"; } }
239
+ .glyphicon-save-file { &:before { content: "\e202"; } }
240
+ .glyphicon-open-file { &:before { content: "\e203"; } }
241
+ .glyphicon-level-up { &:before { content: "\e204"; } }
242
+ .glyphicon-copy { &:before { content: "\e205"; } }
243
+ .glyphicon-paste { &:before { content: "\e206"; } }
244
+ // The following 2 Glyphicons are omitted for the time being because
245
+ // they currently use Unicode codepoints that are outside the
246
+ // Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle
247
+ // non-BMP codepoints in CSS string escapes, and thus can't display these two icons.
248
+ // Notably, the bug affects some older versions of the Android Browser.
249
+ // More info: https://github.com/twbs/bootstrap/issues/10106
250
+ // .glyphicon-door { &:before { content: "\1f6aa"; } }
251
+ // .glyphicon-key { &:before { content: "\1f511"; } }
252
+ .glyphicon-alert { &:before { content: "\e209"; } }
253
+ .glyphicon-equalizer { &:before { content: "\e210"; } }
254
+ .glyphicon-king { &:before { content: "\e211"; } }
255
+ .glyphicon-queen { &:before { content: "\e212"; } }
256
+ .glyphicon-pawn { &:before { content: "\e213"; } }
257
+ .glyphicon-bishop { &:before { content: "\e214"; } }
258
+ .glyphicon-knight { &:before { content: "\e215"; } }
259
+ .glyphicon-baby-formula { &:before { content: "\e216"; } }
260
+ .glyphicon-tent { &:before { content: "\26fa"; } }
261
+ .glyphicon-blackboard { &:before { content: "\e218"; } }
262
+ .glyphicon-bed { &:before { content: "\e219"; } }
263
+ .glyphicon-apple { &:before { content: "\f8ff"; } }
264
+ .glyphicon-erase { &:before { content: "\e221"; } }
265
+ .glyphicon-hourglass { &:before { content: "\231b"; } }
266
+ .glyphicon-lamp { &:before { content: "\e223"; } }
267
+ .glyphicon-duplicate { &:before { content: "\e224"; } }
268
+ .glyphicon-piggy-bank { &:before { content: "\e225"; } }
269
+ .glyphicon-scissors { &:before { content: "\e226"; } }
270
+ .glyphicon-bitcoin { &:before { content: "\e227"; } }
271
+ .glyphicon-btc { &:before { content: "\e227"; } }
272
+ .glyphicon-xbt { &:before { content: "\e227"; } }
273
+ .glyphicon-yen { &:before { content: "\00a5"; } }
274
+ .glyphicon-jpy { &:before { content: "\00a5"; } }
275
+ .glyphicon-ruble { &:before { content: "\20bd"; } }
276
+ .glyphicon-rub { &:before { content: "\20bd"; } }
277
+ .glyphicon-scale { &:before { content: "\e230"; } }
278
+ .glyphicon-ice-lolly { &:before { content: "\e231"; } }
279
+ .glyphicon-ice-lolly-tasted { &:before { content: "\e232"; } }
280
+ .glyphicon-education { &:before { content: "\e233"; } }
281
+ .glyphicon-option-horizontal { &:before { content: "\e234"; } }
282
+ .glyphicon-option-vertical { &:before { content: "\e235"; } }
283
+ .glyphicon-menu-hamburger { &:before { content: "\e236"; } }
284
+ .glyphicon-modal-window { &:before { content: "\e237"; } }
285
+ .glyphicon-oil { &:before { content: "\e238"; } }
286
+ .glyphicon-grain { &:before { content: "\e239"; } }
287
+ .glyphicon-sunglasses { &:before { content: "\e240"; } }
288
+ .glyphicon-text-size { &:before { content: "\e241"; } }
289
+ .glyphicon-text-color { &:before { content: "\e242"; } }
290
+ .glyphicon-text-background { &:before { content: "\e243"; } }
291
+ .glyphicon-object-align-top { &:before { content: "\e244"; } }
292
+ .glyphicon-object-align-bottom { &:before { content: "\e245"; } }
293
+ .glyphicon-object-align-horizontal{ &:before { content: "\e246"; } }
294
+ .glyphicon-object-align-left { &:before { content: "\e247"; } }
295
+ .glyphicon-object-align-vertical { &:before { content: "\e248"; } }
296
+ .glyphicon-object-align-right { &:before { content: "\e249"; } }
297
+ .glyphicon-triangle-right { &:before { content: "\e250"; } }
298
+ .glyphicon-triangle-left { &:before { content: "\e251"; } }
299
+ .glyphicon-triangle-bottom { &:before { content: "\e252"; } }
300
+ .glyphicon-triangle-top { &:before { content: "\e253"; } }
301
+ .glyphicon-console { &:before { content: "\e254"; } }
302
+ .glyphicon-superscript { &:before { content: "\e255"; } }
303
+ .glyphicon-subscript { &:before { content: "\e256"; } }
304
+ .glyphicon-menu-left { &:before { content: "\e257"; } }
305
+ .glyphicon-menu-right { &:before { content: "\e258"; } }
306
+ .glyphicon-menu-down { &:before { content: "\e259"; } }
307
+ .glyphicon-menu-up { &:before { content: "\e260"; } }