bastion 0.1.14 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (234) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/javascripts/bastion/bastion.module.js +7 -5
  3. data/app/assets/javascripts/bastion/components/bst-alert.directive.js +8 -37
  4. data/app/assets/javascripts/bastion/components/bst-alerts.directive.js +67 -0
  5. data/app/assets/javascripts/bastion/components/bst-container-scroll.directive.js +2 -7
  6. data/app/assets/javascripts/bastion/components/bst-table.directive.js +2 -2
  7. data/app/assets/javascripts/bastion/components/views/bst-alert.html +17 -5
  8. data/app/assets/javascripts/bastion/components/views/bst-alerts.html +6 -0
  9. data/app/assets/javascripts/bastion/components/views/bst-dropdown.html +1 -1
  10. data/app/assets/javascripts/bastion/components/views/bst-edit-add-item.html +1 -1
  11. data/app/assets/javascripts/bastion/components/views/bst-edit-add-remove-cancel.html +1 -1
  12. data/app/assets/javascripts/bastion/components/views/bst-edit-multiselect.html +1 -1
  13. data/app/assets/javascripts/bastion/components/views/bst-edit-save-cancel.html +1 -1
  14. data/app/assets/javascripts/bastion/components/views/bst-edit.html +2 -2
  15. data/app/assets/javascripts/bastion/components/views/bst-menu.html +1 -1
  16. data/app/assets/javascripts/bastion/components/views/bst-modal.html +1 -1
  17. data/app/assets/javascripts/bastion/components/views/bst-save-control.html +1 -1
  18. data/app/assets/javascripts/bastion/components/views/current-tasks.html +1 -1
  19. data/app/assets/javascripts/bastion/features/bst-feature-flag.directive.js +1 -1
  20. data/app/assets/javascripts/bastion/layouts/details-nutupane.html +4 -4
  21. data/app/assets/javascripts/bastion/layouts/nutupane.html +12 -8
  22. data/app/assets/stylesheets/bastion/bastion.less +6 -5
  23. data/app/assets/stylesheets/bastion/nutupane.less +14 -10
  24. data/app/assets/stylesheets/bastion/overrides.less +6 -2
  25. data/app/assets/stylesheets/bastion/variables.less +1 -0
  26. data/app/views/bastion/layouts/application.html.erb +5 -3
  27. data/bower.json +25 -20
  28. data/grunt/bower.js +2 -6
  29. data/lib/bastion/version.rb +1 -1
  30. data/test/components/bst-alert.directive.test.js +8 -40
  31. data/test/components/bst-alerts.directive.test.js +84 -0
  32. data/test/components/bst-container-scroll.directive.test.js +1 -14
  33. data/test/components/bst-edit.directive.test.js +1 -1
  34. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.eot +0 -0
  35. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.svg +47 -47
  36. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  37. data/vendor/assets/fonts/bastion/bootstrap/glyphicons-halflings-regular.woff +0 -0
  38. data/vendor/assets/fonts/bastion/font-awesome/FontAwesome.otf +0 -0
  39. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.eot +0 -0
  40. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.svg +471 -366
  41. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.ttf +0 -0
  42. data/vendor/assets/fonts/bastion/font-awesome/fontawesome-webfont.woff +0 -0
  43. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Bold-webfont.eot +0 -0
  44. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Bold-webfont.svg +1830 -0
  45. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Bold-webfont.ttf +0 -0
  46. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Bold-webfont.woff +0 -0
  47. data/vendor/assets/fonts/bastion/patternfly/OpenSans-BoldItalic-webfont.eot +0 -0
  48. data/vendor/assets/fonts/bastion/patternfly/OpenSans-BoldItalic-webfont.svg +1830 -0
  49. data/vendor/assets/fonts/bastion/patternfly/OpenSans-BoldItalic-webfont.ttf +0 -0
  50. data/vendor/assets/fonts/bastion/patternfly/OpenSans-BoldItalic-webfont.woff +0 -0
  51. data/vendor/assets/fonts/bastion/patternfly/OpenSans-ExtraBold-webfont.eot +0 -0
  52. data/vendor/assets/fonts/bastion/patternfly/OpenSans-ExtraBold-webfont.svg +1830 -0
  53. data/vendor/assets/fonts/bastion/patternfly/OpenSans-ExtraBold-webfont.ttf +0 -0
  54. data/vendor/assets/fonts/bastion/patternfly/OpenSans-ExtraBold-webfont.woff +0 -0
  55. data/vendor/assets/fonts/bastion/patternfly/OpenSans-ExtraBoldItalic-webfont.eot +0 -0
  56. data/vendor/assets/fonts/bastion/patternfly/OpenSans-ExtraBoldItalic-webfont.svg +1830 -0
  57. data/vendor/assets/fonts/bastion/patternfly/OpenSans-ExtraBoldItalic-webfont.ttf +0 -0
  58. data/vendor/assets/fonts/bastion/patternfly/OpenSans-ExtraBoldItalic-webfont.woff +0 -0
  59. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Italic-webfont.eot +0 -0
  60. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Italic-webfont.svg +1830 -0
  61. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Italic-webfont.ttf +0 -0
  62. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Italic-webfont.woff +0 -0
  63. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Light-webfont.eot +0 -0
  64. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Light-webfont.svg +1831 -0
  65. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Light-webfont.ttf +0 -0
  66. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Light-webfont.woff +0 -0
  67. data/vendor/assets/fonts/bastion/patternfly/OpenSans-LightItalic-webfont.eot +0 -0
  68. data/vendor/assets/fonts/bastion/patternfly/OpenSans-LightItalic-webfont.svg +1835 -0
  69. data/vendor/assets/fonts/bastion/patternfly/OpenSans-LightItalic-webfont.ttf +0 -0
  70. data/vendor/assets/fonts/bastion/patternfly/OpenSans-LightItalic-webfont.woff +0 -0
  71. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Regular-webfont.eot +0 -0
  72. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Regular-webfont.svg +1831 -0
  73. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Regular-webfont.ttf +0 -0
  74. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Regular-webfont.woff +0 -0
  75. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Semibold-webfont.eot +0 -0
  76. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Semibold-webfont.svg +1830 -0
  77. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Semibold-webfont.ttf +0 -0
  78. data/vendor/assets/fonts/bastion/patternfly/OpenSans-Semibold-webfont.woff +0 -0
  79. data/vendor/assets/fonts/bastion/patternfly/OpenSans-SemiboldItalic-webfont.eot +0 -0
  80. data/vendor/assets/fonts/bastion/patternfly/OpenSans-SemiboldItalic-webfont.svg +1830 -0
  81. data/vendor/assets/fonts/bastion/patternfly/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  82. data/vendor/assets/fonts/bastion/patternfly/OpenSans-SemiboldItalic-webfont.woff +0 -0
  83. data/vendor/assets/fonts/bastion/patternfly/PatternFlyIcons-webfont.eot +0 -0
  84. data/vendor/assets/fonts/bastion/patternfly/PatternFlyIcons-webfont.svg +37 -0
  85. data/vendor/assets/fonts/bastion/patternfly/PatternFlyIcons-webfont.ttf +0 -0
  86. data/vendor/assets/fonts/bastion/patternfly/PatternFlyIcons-webfont.woff +0 -0
  87. data/vendor/assets/javascripts/bastion/ngUpload/ng-upload.js +20 -19
  88. data/vendor/assets/stylesheets/bastion/bootstrap/badges.less +4 -0
  89. data/vendor/assets/stylesheets/bastion/bootstrap/breadcrumbs.less +4 -1
  90. data/vendor/assets/stylesheets/bastion/bootstrap/button-groups.less +13 -14
  91. data/vendor/assets/stylesheets/bastion/bootstrap/buttons.less +14 -10
  92. data/vendor/assets/stylesheets/bastion/bootstrap/carousel.less +3 -3
  93. data/vendor/assets/stylesheets/bastion/bootstrap/code.less +10 -0
  94. data/vendor/assets/stylesheets/bastion/bootstrap/dropdowns.less +28 -2
  95. data/vendor/assets/stylesheets/bastion/bootstrap/forms.less +104 -41
  96. data/vendor/assets/stylesheets/bastion/bootstrap/glyphicons.less +1 -5
  97. data/vendor/assets/stylesheets/bastion/bootstrap/grid.less +30 -25
  98. data/vendor/assets/stylesheets/bastion/bootstrap/input-groups.less +44 -18
  99. data/vendor/assets/stylesheets/bastion/bootstrap/jumbotron.less +3 -5
  100. data/vendor/assets/stylesheets/bastion/bootstrap/list-group.less +25 -3
  101. data/vendor/assets/stylesheets/bastion/bootstrap/mixins.less +147 -63
  102. data/vendor/assets/stylesheets/bastion/bootstrap/modals.less +18 -8
  103. data/vendor/assets/stylesheets/bastion/bootstrap/navbar.less +24 -20
  104. data/vendor/assets/stylesheets/bastion/bootstrap/navs.less +2 -2
  105. data/vendor/assets/stylesheets/bastion/bootstrap/normalize.less +139 -122
  106. data/vendor/assets/stylesheets/bastion/bootstrap/pager.less +5 -5
  107. data/vendor/assets/stylesheets/bastion/bootstrap/pagination.less +6 -3
  108. data/vendor/assets/stylesheets/bastion/bootstrap/panels.less +106 -47
  109. data/vendor/assets/stylesheets/bastion/bootstrap/popovers.less +11 -11
  110. data/vendor/assets/stylesheets/bastion/bootstrap/print.less +0 -4
  111. data/vendor/assets/stylesheets/bastion/bootstrap/responsive-utilities.less +15 -132
  112. data/vendor/assets/stylesheets/bastion/bootstrap/scaffolding.less +17 -2
  113. data/vendor/assets/stylesheets/bastion/bootstrap/tables.less +3 -1
  114. data/vendor/assets/stylesheets/bastion/bootstrap/theme.less +1 -1
  115. data/vendor/assets/stylesheets/bastion/bootstrap/thumbnails.less +1 -1
  116. data/vendor/assets/stylesheets/bastion/bootstrap/tooltip.less +1 -1
  117. data/vendor/assets/stylesheets/bastion/bootstrap/type.less +79 -67
  118. data/vendor/assets/stylesheets/bastion/bootstrap/variables.less +364 -177
  119. data/vendor/assets/stylesheets/bastion/bootstrap/wells.less +1 -1
  120. data/vendor/assets/stylesheets/bastion/font-awesome/less/bordered-pulled.less +16 -0
  121. data/vendor/assets/stylesheets/bastion/font-awesome/less/core.less +8 -126
  122. data/vendor/assets/stylesheets/bastion/font-awesome/less/extras.less +2 -93
  123. data/vendor/assets/stylesheets/bastion/font-awesome/less/fixed-width.less +6 -0
  124. data/vendor/assets/stylesheets/bastion/font-awesome/less/font-awesome.less +9 -25
  125. data/vendor/assets/stylesheets/bastion/font-awesome/less/icons.less +549 -378
  126. data/vendor/assets/stylesheets/bastion/font-awesome/less/larger.less +13 -0
  127. data/vendor/assets/stylesheets/bastion/font-awesome/less/list.less +19 -0
  128. data/vendor/assets/stylesheets/bastion/font-awesome/less/mixins.less +16 -39
  129. data/vendor/assets/stylesheets/bastion/font-awesome/less/path.less +6 -6
  130. data/vendor/assets/stylesheets/bastion/font-awesome/less/rotated-flipped.less +20 -0
  131. data/vendor/assets/stylesheets/bastion/font-awesome/less/spinning.less +29 -0
  132. data/vendor/assets/stylesheets/bastion/font-awesome/less/stacked.less +20 -0
  133. data/vendor/assets/stylesheets/bastion/font-awesome/less/variables.less +557 -731
  134. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_bordered-pulled.scss +16 -0
  135. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_core.scss +8 -126
  136. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_extras.scss +9 -58
  137. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_fixed-width.scss +6 -0
  138. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_icons.scss +550 -379
  139. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_larger.scss +13 -0
  140. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_list.scss +19 -0
  141. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_mixins.scss +16 -39
  142. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_path.scss +6 -6
  143. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_rotated-flipped.scss +20 -0
  144. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_spinning.scss +29 -0
  145. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_stacked.scss +20 -0
  146. data/vendor/assets/stylesheets/bastion/font-awesome/scss/_variables.scss +557 -730
  147. data/vendor/assets/stylesheets/bastion/font-awesome/scss/font-awesome.scss +9 -25
  148. data/vendor/assets/stylesheets/bastion/patternfly/alerts.less +29 -0
  149. data/vendor/assets/stylesheets/bastion/patternfly/badges.less +11 -0
  150. data/vendor/assets/stylesheets/bastion/patternfly/bootstrap-combobox.less +27 -0
  151. data/vendor/assets/stylesheets/bastion/patternfly/bootstrap-select.less +67 -0
  152. data/vendor/assets/stylesheets/bastion/patternfly/bootstrap-treeview.less +37 -0
  153. data/vendor/assets/stylesheets/bastion/patternfly/breadcrumbs.less +20 -0
  154. data/vendor/assets/stylesheets/bastion/{rcue → patternfly}/buttons.less +4 -0
  155. data/vendor/assets/stylesheets/bastion/patternfly/close.less +13 -0
  156. data/vendor/assets/stylesheets/bastion/patternfly/datatables.less +221 -0
  157. data/vendor/assets/stylesheets/bastion/patternfly/dropdowns.less +145 -0
  158. data/vendor/assets/stylesheets/bastion/{rcue → patternfly}/fonts.less +4 -2
  159. data/vendor/assets/stylesheets/bastion/{rcue → patternfly}/forms.less +7 -4
  160. data/vendor/assets/stylesheets/bastion/patternfly/icons.less +130 -0
  161. data/vendor/assets/stylesheets/bastion/patternfly/infotip.less +149 -0
  162. data/vendor/assets/stylesheets/bastion/patternfly/labels.less +12 -0
  163. data/vendor/assets/stylesheets/bastion/patternfly/list-group.less +18 -0
  164. data/vendor/assets/stylesheets/bastion/patternfly/login.less +121 -0
  165. data/vendor/assets/stylesheets/bastion/patternfly/mixins.less +81 -0
  166. data/vendor/assets/stylesheets/bastion/patternfly/modals.less +38 -0
  167. data/vendor/assets/stylesheets/bastion/patternfly/navbar.less +501 -0
  168. data/vendor/assets/stylesheets/bastion/patternfly/pager.less +72 -0
  169. data/vendor/assets/stylesheets/bastion/patternfly/pagination.less +64 -0
  170. data/vendor/assets/stylesheets/bastion/patternfly/panels.less +57 -0
  171. data/vendor/assets/stylesheets/bastion/patternfly/patternfly.less +42 -0
  172. data/vendor/assets/stylesheets/bastion/patternfly/popovers.less +32 -0
  173. data/vendor/assets/stylesheets/bastion/patternfly/progress-bars.less +87 -0
  174. data/vendor/assets/stylesheets/bastion/patternfly/search.less +65 -0
  175. data/vendor/assets/stylesheets/bastion/patternfly/sidebar.less +174 -0
  176. data/vendor/assets/stylesheets/bastion/patternfly/spinner.less +62 -0
  177. data/vendor/assets/stylesheets/bastion/patternfly/tables.less +74 -0
  178. data/vendor/assets/stylesheets/bastion/patternfly/tabs.less +118 -0
  179. data/vendor/assets/stylesheets/bastion/patternfly/tooltip.less +16 -0
  180. data/vendor/assets/stylesheets/bastion/patternfly/type.less +24 -0
  181. data/vendor/assets/stylesheets/bastion/patternfly/variables.less +219 -0
  182. metadata +98 -57
  183. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.eot +0 -0
  184. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.svg +0 -146
  185. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.ttf +0 -0
  186. data/vendor/assets/fonts/bastion/rcue/OpenSans-Bold-webfont.woff +0 -0
  187. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.eot +0 -0
  188. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.svg +0 -146
  189. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.ttf +0 -0
  190. data/vendor/assets/fonts/bastion/rcue/OpenSans-BoldItalic-webfont.woff +0 -0
  191. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.eot +0 -0
  192. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.svg +0 -146
  193. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.ttf +0 -0
  194. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBold-webfont.woff +0 -0
  195. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.eot +0 -0
  196. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.svg +0 -146
  197. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.ttf +0 -0
  198. data/vendor/assets/fonts/bastion/rcue/OpenSans-ExtraBoldItalic-webfont.woff +0 -0
  199. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.eot +0 -0
  200. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.svg +0 -146
  201. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.ttf +0 -0
  202. data/vendor/assets/fonts/bastion/rcue/OpenSans-Italic-webfont.woff +0 -0
  203. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.eot +0 -0
  204. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.svg +0 -146
  205. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.ttf +0 -0
  206. data/vendor/assets/fonts/bastion/rcue/OpenSans-Light-webfont.woff +0 -0
  207. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.eot +0 -0
  208. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.svg +0 -146
  209. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.ttf +0 -0
  210. data/vendor/assets/fonts/bastion/rcue/OpenSans-LightItalic-webfont.woff +0 -0
  211. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.eot +0 -0
  212. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.svg +0 -146
  213. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.ttf +0 -0
  214. data/vendor/assets/fonts/bastion/rcue/OpenSans-Regular-webfont.woff +0 -0
  215. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.eot +0 -0
  216. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.svg +0 -146
  217. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.ttf +0 -0
  218. data/vendor/assets/fonts/bastion/rcue/OpenSans-Semibold-webfont.woff +0 -0
  219. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.eot +0 -0
  220. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.svg +0 -146
  221. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  222. data/vendor/assets/fonts/bastion/rcue/OpenSans-SemiboldItalic-webfont.woff +0 -0
  223. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.eot +0 -0
  224. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.svg +0 -454
  225. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.ttf +0 -0
  226. data/vendor/assets/fonts/bastion/rcue/Overpass-Bold-webfont.woff +0 -0
  227. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.eot +0 -0
  228. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.svg +0 -454
  229. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.ttf +0 -0
  230. data/vendor/assets/fonts/bastion/rcue/Overpass-Regular-webfont.woff +0 -0
  231. data/vendor/assets/stylesheets/bastion/rcue/mixins.less +0 -50
  232. data/vendor/assets/stylesheets/bastion/rcue/navbar.less +0 -481
  233. data/vendor/assets/stylesheets/bastion/rcue/rcue.less +0 -15
  234. data/vendor/assets/stylesheets/bastion/rcue/variables.less +0 -47
@@ -11,6 +11,10 @@ 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,
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;
14
18
  }
15
19
 
16
20
  legend {
@@ -33,6 +37,10 @@ label {
33
37
 
34
38
 
35
39
  // Normalize form controls
40
+ //
41
+ // While most of our form styles require extra classes, some basic normalization
42
+ // is required to ensure optimum display with or without those classes to better
43
+ // address browser inconsistencies.
36
44
 
37
45
  // Override content-box in Normalize (* isn't specific enough)
38
46
  input[type="search"] {
@@ -47,41 +55,30 @@ input[type="checkbox"] {
47
55
  line-height: normal;
48
56
  }
49
57
 
50
- // Set the height of select and file controls to match text inputs
58
+ // Set the height of file controls to match text inputs
51
59
  input[type="file"] {
52
60
  display: block;
53
61
  }
54
62
 
63
+ // Make range inputs behave like textual form controls
64
+ input[type="range"] {
65
+ display: block;
66
+ width: 100%;
67
+ }
68
+
55
69
  // Make multiple select elements height not fixed
56
70
  select[multiple],
57
71
  select[size] {
58
72
  height: auto;
59
73
  }
60
74
 
61
- // Fix optgroup Firefox bug per https://github.com/twbs/bootstrap/issues/7611
62
- select optgroup {
63
- font-size: inherit;
64
- font-style: inherit;
65
- font-family: inherit;
66
- }
67
-
68
- // Focus for select, file, radio, and checkbox
75
+ // Focus for file, radio, and checkbox
69
76
  input[type="file"]:focus,
70
77
  input[type="radio"]:focus,
71
78
  input[type="checkbox"]:focus {
72
79
  .tab-focus();
73
80
  }
74
81
 
75
- // Fix for Chrome number input
76
- // Setting certain font-sizes causes the `I` bar to appear on hover of the bottom increment button.
77
- // See https://github.com/twbs/bootstrap/issues/8350 for more.
78
- input[type="number"] {
79
- &::-webkit-outer-spin-button,
80
- &::-webkit-inner-spin-button {
81
- height: auto;
82
- }
83
- }
84
-
85
82
  // Adjust output element
86
83
  output {
87
84
  display: block;
@@ -89,7 +86,6 @@ output {
89
86
  font-size: @font-size-base;
90
87
  line-height: @line-height-base;
91
88
  color: @input-color;
92
- vertical-align: middle;
93
89
  }
94
90
 
95
91
 
@@ -123,7 +119,6 @@ output {
123
119
  font-size: @font-size-base;
124
120
  line-height: @line-height-base;
125
121
  color: @input-color;
126
- vertical-align: middle;
127
122
  background-color: @input-bg;
128
123
  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
129
124
  border: 1px solid @input-border;
@@ -135,20 +130,19 @@ output {
135
130
  .form-control-focus();
136
131
 
137
132
  // Placeholder
138
- //
139
- // Placeholder text gets special styles because when browsers invalidate entire
140
- // lines if it doesn't understand a selector/
141
133
  .placeholder();
142
134
 
143
135
  // Disabled and read-only inputs
144
- // Note: HTML5 says that controls under a fieldset > legend:first-child won't
145
- // be disabled if the fieldset is disabled. Due to implementation difficulty,
146
- // we don't honor that edge case; we style them as disabled anyway.
136
+ //
137
+ // HTML5 says that controls under a fieldset > legend:first-child won't be
138
+ // disabled if the fieldset is disabled. Due to implementation difficulty, we
139
+ // don't honor that edge case; we style them as disabled anyway.
147
140
  &[disabled],
148
141
  &[readonly],
149
142
  fieldset[disabled] & {
150
143
  cursor: not-allowed;
151
144
  background-color: @input-bg-disabled;
145
+ opacity: 1; // iOS fix for unreadable disabled content
152
146
  }
153
147
 
154
148
  // Reset height for `textarea`s
@@ -158,6 +152,28 @@ output {
158
152
  }
159
153
 
160
154
 
155
+ // Search inputs in iOS
156
+ //
157
+ // This overrides the extra rounded corners on search inputs in iOS so that our
158
+ // `.form-control` class can properly style them. Note that this cannot simply
159
+ // be added to `.form-control` as it's not specific enough. For details, see
160
+ // https://github.com/twbs/bootstrap/issues/11586.
161
+
162
+ input[type="search"] {
163
+ -webkit-appearance: none;
164
+ }
165
+
166
+
167
+ // Special styles for iOS date input
168
+ //
169
+ // In Mobile Safari, date inputs require a pixel line-height that matches the
170
+ // given height of the input.
171
+
172
+ input[type="date"] {
173
+ line-height: @input-height-base;
174
+ }
175
+
176
+
161
177
  // Form groups
162
178
  //
163
179
  // Designed to help with the organization and spacing of vertical forms. For
@@ -179,10 +195,8 @@ output {
179
195
  margin-top: 10px;
180
196
  margin-bottom: 10px;
181
197
  padding-left: 20px;
182
- vertical-align: middle;
183
198
  label {
184
199
  display: inline;
185
- margin-bottom: 0;
186
200
  font-weight: normal;
187
201
  cursor: pointer;
188
202
  }
@@ -230,7 +244,12 @@ input[type="checkbox"],
230
244
  }
231
245
  }
232
246
 
247
+
233
248
  // Form control sizing
249
+ //
250
+ // Build on `.form-control` with modifier classes to decrease or increase the
251
+ // height and font-size of form controls.
252
+
234
253
  .input-sm {
235
254
  .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
236
255
  }
@@ -244,18 +263,38 @@ input[type="checkbox"],
244
263
  //
245
264
  // Apply contextual and semantic states to individual form controls.
246
265
 
247
- // Warning
266
+ .has-feedback {
267
+ // Enable absolute positioning
268
+ position: relative;
269
+
270
+ // Ensure icons don't overlap text
271
+ .form-control {
272
+ padding-right: (@input-height-base * 1.25);
273
+ }
274
+
275
+ // Feedback icon (requires .glyphicon classes)
276
+ .form-control-feedback {
277
+ position: absolute;
278
+ top: (@line-height-computed + 5); // Height of the `label` and its margin
279
+ right: 0;
280
+ display: block;
281
+ width: @input-height-base;
282
+ height: @input-height-base;
283
+ line-height: @input-height-base;
284
+ text-align: center;
285
+ }
286
+ }
287
+
288
+ // Feedback states
289
+ .has-success {
290
+ .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);
291
+ }
248
292
  .has-warning {
249
293
  .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);
250
294
  }
251
- // Error
252
295
  .has-error {
253
296
  .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);
254
297
  }
255
- // Success
256
- .has-success {
257
- .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);
258
- }
259
298
 
260
299
 
261
300
  // Static form control text
@@ -296,9 +335,9 @@ input[type="checkbox"],
296
335
  .form-inline {
297
336
 
298
337
  // Kick in the inline
299
- @media (min-width: @screen-sm) {
338
+ @media (min-width: @screen-sm-min) {
300
339
  // Inline-block all the things for "inline"
301
- .form-group {
340
+ .form-group {
302
341
  display: inline-block;
303
342
  margin-bottom: 0;
304
343
  vertical-align: middle;
@@ -307,11 +346,17 @@ input[type="checkbox"],
307
346
  // In navbar-form, allow folks to *not* use `.form-group`
308
347
  .form-control {
309
348
  display: inline-block;
349
+ width: auto; // Prevent labels from stacking above inputs in `.form-group`
350
+ vertical-align: middle;
351
+ }
352
+ // Input groups need that 100% width though
353
+ .input-group > .form-control {
354
+ width: 100%;
310
355
  }
311
356
 
312
- // Override `width: 100%;` when not within a `.form-group`
313
- select.form-control {
314
- width: auto;
357
+ .control-label {
358
+ margin-bottom: 0;
359
+ vertical-align: middle;
315
360
  }
316
361
 
317
362
  // Remove default margin on radios/checkboxes that were used for stacking, and
@@ -323,12 +368,21 @@ input[type="checkbox"],
323
368
  margin-top: 0;
324
369
  margin-bottom: 0;
325
370
  padding-left: 0;
371
+ vertical-align: middle;
326
372
  }
327
373
  .radio input[type="radio"],
328
374
  .checkbox input[type="checkbox"] {
329
375
  float: none;
330
376
  margin-left: 0;
331
377
  }
378
+
379
+ // Validation states
380
+ //
381
+ // Reposition the icon because it's now within a grid column and columns have
382
+ // `position: relative;` on them. Also accounts for the grid gutter padding.
383
+ .has-feedback .form-control-feedback {
384
+ top: 0;
385
+ }
332
386
  }
333
387
  }
334
388
 
@@ -354,7 +408,7 @@ input[type="checkbox"],
354
408
  // and other content below items
355
409
  .radio,
356
410
  .checkbox {
357
- min-height: @line-height-computed + (@padding-base-vertical + 1);
411
+ min-height: (@line-height-computed + (@padding-base-vertical + 1));
358
412
  }
359
413
 
360
414
  // Make form groups behave like rows
@@ -372,4 +426,13 @@ input[type="checkbox"],
372
426
  text-align: right;
373
427
  }
374
428
  }
429
+
430
+ // Validation states
431
+ //
432
+ // Reposition the icon because it's now within a grid column and columns have
433
+ // `position: relative;` on them. Also accounts for the grid gutter padding.
434
+ .has-feedback .form-control-feedback {
435
+ top: 0;
436
+ right: (@grid-gutter-width / 2);
437
+ }
375
438
  }
@@ -14,7 +14,7 @@
14
14
  src: ~"url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype')",
15
15
  ~"url('@{icon-font-path}@{icon-font-name}.woff') format('woff')",
16
16
  ~"url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype')",
17
- ~"url('@{icon-font-path}@{icon-font-name}.svg#glyphicons-halflingsregular') format('svg')";
17
+ ~"url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg')";
18
18
  }
19
19
 
20
20
  // Catchall baseclass
@@ -28,10 +28,6 @@
28
28
  line-height: 1;
29
29
  -webkit-font-smoothing: antialiased;
30
30
  -moz-osx-font-smoothing: grayscale;
31
-
32
- &:empty {
33
- width: 1em;
34
- }
35
31
  }
36
32
 
37
33
  // Individual icons
@@ -2,14 +2,18 @@
2
2
  // Grid system
3
3
  // --------------------------------------------------
4
4
 
5
- // Set the container width, and override it for fixed navbars in media queries
5
+
6
+ // Container widths
7
+ //
8
+ // Set the container width, and override it for fixed navbars in media queries.
9
+
6
10
  .container {
7
11
  .container-fixed();
8
12
 
9
- @media (min-width: @screen-sm) {
13
+ @media (min-width: @screen-sm-min) {
10
14
  width: @container-sm;
11
15
  }
12
- @media (min-width: @screen-md) {
16
+ @media (min-width: @screen-md-min) {
13
17
  width: @container-md;
14
18
  }
15
19
  @media (min-width: @screen-lg-min) {
@@ -17,12 +21,30 @@
17
21
  }
18
22
  }
19
23
 
20
- // mobile first defaults
24
+
25
+ // Fluid container
26
+ //
27
+ // Utilizes the mixin meant for fixed width containers, but without any defined
28
+ // width for fluid, full width layouts.
29
+
30
+ .container-fluid {
31
+ .container-fixed();
32
+ }
33
+
34
+
35
+ // Row
36
+ //
37
+ // Rows contain and clear the floats of your columns.
38
+
21
39
  .row {
22
40
  .make-row();
23
41
  }
24
42
 
43
+
44
+ // Columns
45
+ //
25
46
  // Common styles for small and large grid columns
47
+
26
48
  .make-grid-columns();
27
49
 
28
50
 
@@ -31,11 +53,7 @@
31
53
  // Columns, offsets, pushes, and pulls for extra small devices like
32
54
  // smartphones.
33
55
 
34
- .make-grid-columns-float(xs);
35
- .make-grid(@grid-columns, xs, width);
36
- .make-grid(@grid-columns, xs, pull);
37
- .make-grid(@grid-columns, xs, push);
38
- .make-grid(@grid-columns, xs, offset);
56
+ .make-grid(xs);
39
57
 
40
58
 
41
59
  // Small grid
@@ -44,11 +62,7 @@
44
62
  // to tablets.
45
63
 
46
64
  @media (min-width: @screen-sm-min) {
47
- .make-grid-columns-float(sm);
48
- .make-grid(@grid-columns, sm, width);
49
- .make-grid(@grid-columns, sm, pull);
50
- .make-grid(@grid-columns, sm, push);
51
- .make-grid(@grid-columns, sm, offset);
65
+ .make-grid(sm);
52
66
  }
53
67
 
54
68
 
@@ -57,11 +71,7 @@
57
71
  // Columns, offsets, pushes, and pulls for the desktop device range.
58
72
 
59
73
  @media (min-width: @screen-md-min) {
60
- .make-grid-columns-float(md);
61
- .make-grid(@grid-columns, md, width);
62
- .make-grid(@grid-columns, md, pull);
63
- .make-grid(@grid-columns, md, push);
64
- .make-grid(@grid-columns, md, offset);
74
+ .make-grid(md);
65
75
  }
66
76
 
67
77
 
@@ -70,10 +80,5 @@
70
80
  // Columns, offsets, pushes, and pulls for the large desktop device range.
71
81
 
72
82
  @media (min-width: @screen-lg-min) {
73
- .make-grid-columns-float(lg);
74
- .make-grid(@grid-columns, lg, width);
75
- .make-grid(@grid-columns, lg, pull);
76
- .make-grid(@grid-columns, lg, push);
77
- .make-grid(@grid-columns, lg, offset);
83
+ .make-grid(lg);
78
84
  }
79
-
@@ -17,6 +17,16 @@
17
17
  }
18
18
 
19
19
  .form-control {
20
+ // Ensure that the input is always above the *appended* addon button for
21
+ // proper border colors.
22
+ position: relative;
23
+ z-index: 2;
24
+
25
+ // IE9 fubars the placeholder attribute in text inputs and the arrows on
26
+ // select elements in input groups. To fix it, we float the input. Details:
27
+ // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855
28
+ float: left;
29
+
20
30
  width: 100%;
21
31
  margin-bottom: 0;
22
32
  }
@@ -90,8 +100,10 @@
90
100
  .input-group .form-control:first-child,
91
101
  .input-group-addon:first-child,
92
102
  .input-group-btn:first-child > .btn,
103
+ .input-group-btn:first-child > .btn-group > .btn,
93
104
  .input-group-btn:first-child > .dropdown-toggle,
94
- .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
105
+ .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
106
+ .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
95
107
  .border-right-radius(0);
96
108
  }
97
109
  .input-group-addon:first-child {
@@ -100,8 +112,10 @@
100
112
  .input-group .form-control:last-child,
101
113
  .input-group-addon:last-child,
102
114
  .input-group-btn:last-child > .btn,
115
+ .input-group-btn:last-child > .btn-group > .btn,
103
116
  .input-group-btn:last-child > .dropdown-toggle,
104
- .input-group-btn:first-child > .btn:not(:first-child) {
117
+ .input-group-btn:first-child > .btn:not(:first-child),
118
+ .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
105
119
  .border-left-radius(0);
106
120
  }
107
121
  .input-group-addon:last-child {
@@ -112,25 +126,37 @@
112
126
  // -------------------------
113
127
  .input-group-btn {
114
128
  position: relative;
129
+ // Jankily prevent input button groups from wrapping with `white-space` and
130
+ // `font-size` in combination with `inline-block` on buttons.
131
+ font-size: 0;
115
132
  white-space: nowrap;
116
133
 
117
- // Negative margin to only have a 1px border between the two
118
- &:first-child > .btn {
119
- margin-right: -1px;
120
- }
121
- &:last-child > .btn {
122
- margin-left: -1px;
134
+ // Negative margin for spacing, position for bringing hovered/focused/actived
135
+ // element above the siblings.
136
+ > .btn {
137
+ position: relative;
138
+ + .btn {
139
+ margin-left: -1px;
140
+ }
141
+ // Bring the "active" button to the front
142
+ &:hover,
143
+ &:focus,
144
+ &:active {
145
+ z-index: 2;
146
+ }
123
147
  }
124
- }
125
- .input-group-btn > .btn {
126
- position: relative;
127
- // Jankily prevent input button groups from wrapping
128
- + .btn {
129
- margin-left: -4px;
148
+
149
+ // Negative margin to only have a 1px border between the two
150
+ &:first-child {
151
+ > .btn,
152
+ > .btn-group {
153
+ margin-right: -1px;
154
+ }
130
155
  }
131
- // Bring the "active" button to the front
132
- &:hover,
133
- &:active {
134
- z-index: 2;
156
+ &:last-child {
157
+ > .btn,
158
+ > .btn-group {
159
+ margin-left: -1px;
160
+ }
135
161
  }
136
162
  }
@@ -6,19 +6,17 @@
6
6
  .jumbotron {
7
7
  padding: @jumbotron-padding;
8
8
  margin-bottom: @jumbotron-padding;
9
- font-size: @jumbotron-font-size;
10
- font-weight: 200;
11
- line-height: (@line-height-base * 1.5);
12
9
  color: @jumbotron-color;
13
10
  background-color: @jumbotron-bg;
14
11
 
15
12
  h1,
16
13
  .h1 {
17
- line-height: 1;
18
14
  color: @jumbotron-heading-color;
19
15
  }
20
16
  p {
21
- line-height: 1.4;
17
+ margin-bottom: (@jumbotron-padding / 2);
18
+ font-size: @jumbotron-font-size;
19
+ font-weight: 200;
22
20
  }
23
21
 
24
22
  .container & {
@@ -2,17 +2,21 @@
2
2
  // List groups
3
3
  // --------------------------------------------------
4
4
 
5
+
5
6
  // Base class
6
7
  //
7
8
  // Easily usable on <ul>, <ol>, or <div>.
9
+
8
10
  .list-group {
9
11
  // No need to set list-style: none; since .list-group-item is block level
10
12
  margin-bottom: 20px;
11
13
  padding-left: 0; // reset padding because ul and ol
12
14
  }
13
15
 
16
+
14
17
  // Individual list items
15
- // -------------------------
18
+ //
19
+ // Use on `li`s or `div`s within the `.list-group` parent.
16
20
 
17
21
  .list-group-item {
18
22
  position: relative;
@@ -41,7 +45,12 @@
41
45
  }
42
46
  }
43
47
 
48
+
44
49
  // Linked list items
50
+ //
51
+ // Use anchor elements instead of `li`s or `div`s to create linked list items.
52
+ // Includes an extra `.active` modifier class for showing selected items.
53
+
45
54
  a.list-group-item {
46
55
  color: @list-group-link-color;
47
56
 
@@ -70,13 +79,26 @@ a.list-group-item {
70
79
  color: inherit;
71
80
  }
72
81
  .list-group-item-text {
73
- color: lighten(@list-group-active-bg, 40%);
82
+ color: @list-group-active-text-color;
74
83
  }
75
84
  }
76
85
  }
77
86
 
87
+
88
+ // Contextual variants
89
+ //
90
+ // Add modifier classes to change text and background color on individual items.
91
+ // Organizationally, this must come after the `:hover` states.
92
+
93
+ .list-group-item-variant(success; @state-success-bg; @state-success-text);
94
+ .list-group-item-variant(info; @state-info-bg; @state-info-text);
95
+ .list-group-item-variant(warning; @state-warning-bg; @state-warning-text);
96
+ .list-group-item-variant(danger; @state-danger-bg; @state-danger-text);
97
+
98
+
78
99
  // Custom content options
79
- // -------------------------
100
+ //
101
+ // Extra classes for creating well-formatted content within `.list-group-item`s.
80
102
 
81
103
  .list-group-item-heading {
82
104
  margin-top: 0;