linaro-jekyll-theme 1.3 → 4.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (339) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.txt +1 -1
  3. data/README.md +19 -50
  4. data/_config.yml +192 -0
  5. data/_data/footer.yml +27 -107
  6. data/_data/nav.yml +72 -61
  7. data/_data/picture.yml +151 -0
  8. data/_data/universal_nav.yml +22 -0
  9. data/_includes/blog/authors_posts.html +37 -0
  10. data/_includes/blog/blog_filler_element.html +21 -0
  11. data/_includes/blog/display_latest_posts.html +119 -0
  12. data/_includes/blog/disqus_comments.html +24 -0
  13. data/_includes/blog/latest_posts.html +11 -0
  14. data/_includes/blog/pagination.html +37 -0
  15. data/_includes/blog/post_search.html +11 -0
  16. data/_includes/blog/post_series.html +28 -0
  17. data/_includes/blog/post_sidebar.html +74 -0
  18. data/_includes/blog/read_time.html +7 -0
  19. data/_includes/components/breadcrumb.html +37 -0
  20. data/_includes/components/carousel_header.html +15 -0
  21. data/_includes/components/cookie_manager.html +72 -0
  22. data/_includes/components/css.html +8 -0
  23. data/_includes/components/github_edit.html +34 -0
  24. data/_includes/components/head.html +65 -0
  25. data/_includes/components/http2.html +57 -0
  26. data/_includes/components/javascript.html +10 -0
  27. data/_includes/components/jumbotron.html +82 -0
  28. data/_includes/components/linaro_404.html +16 -0
  29. data/_includes/components/schema.html +1 -0
  30. data/_includes/components/sidebar.html +55 -0
  31. data/_includes/examples/custom_include.html +10 -0
  32. data/_includes/examples/custom_include_row.html +562 -0
  33. data/_includes/flow/blocks.html +73 -0
  34. data/_includes/flow/button.html +6 -0
  35. data/_includes/flow/buttons.html +5 -0
  36. data/_includes/flow/call-to-action-banner.html +8 -0
  37. data/_includes/flow/collapse.html +21 -0
  38. data/_includes/flow/container_row.html +11 -0
  39. data/_includes/flow/feature_block.html +41 -0
  40. data/_includes/flow/flow_inner.html +29 -0
  41. data/_includes/flow/full_width_row.html +5 -0
  42. data/_includes/flow/image.html +12 -0
  43. data/_includes/flow/members-section.html +24 -0
  44. data/_includes/flow/slider.html +25 -0
  45. data/_includes/flow/slider_row.html +3 -0
  46. data/_includes/flow/tabbed_content.html +21 -0
  47. data/_includes/flow/text.html +3 -0
  48. data/_includes/flow/title.html +3 -0
  49. data/_includes/footer/footer.html +29 -0
  50. data/_includes/image.html +15 -4
  51. data/_includes/js_bundles/app.html +4 -0
  52. data/_includes/js_bundles/vendor.html +13 -0
  53. data/_includes/media.html +4 -4
  54. data/_includes/nav/brand.html +3 -0
  55. data/_includes/nav/nav.html +133 -0
  56. data/_includes/nav/universal_nav.html +36 -0
  57. data/_includes/social_media_icons.html +24 -0
  58. data/_includes/sticky-tab-bar.html +61 -0
  59. data/_includes/youtube.html +74 -6
  60. data/_layouts/author.html +61 -0
  61. data/_layouts/base.html +14 -0
  62. data/_layouts/default.html +2 -18
  63. data/_layouts/flow.html +33 -0
  64. data/_layouts/page.html +5 -0
  65. data/_layouts/post.html +56 -133
  66. data/{_layouts/about.html → _sass/app/blog.scss} +0 -0
  67. data/_sass/app/custom.scss +1 -0
  68. data/_sass/app/overrides.scss +43 -0
  69. data/_sass/app/search.scss +51 -0
  70. data/_sass/blog.scss +3 -0
  71. data/_sass/bootstrap/_alert.scss +51 -0
  72. data/_sass/bootstrap/_badge.scss +47 -0
  73. data/_sass/bootstrap/_breadcrumb.scss +41 -0
  74. data/_sass/bootstrap/_button-group.scss +172 -0
  75. data/_sass/bootstrap/_buttons.scss +75 -100
  76. data/_sass/bootstrap/_card.scss +301 -0
  77. data/_sass/bootstrap/_carousel.scss +161 -195
  78. data/_sass/bootstrap/_close.scss +15 -16
  79. data/_sass/bootstrap/_code.scss +15 -36
  80. data/_sass/bootstrap/_custom-forms.scss +433 -0
  81. data/_sass/bootstrap/_dropdown.scss +166 -0
  82. data/_sass/bootstrap/_forms.scss +213 -497
  83. data/_sass/bootstrap/_functions.scss +86 -0
  84. data/_sass/bootstrap/_grid.scss +29 -61
  85. data/_sass/bootstrap/_images.scss +42 -0
  86. data/_sass/bootstrap/_input-group.scss +173 -0
  87. data/_sass/bootstrap/_jumbotron.scss +9 -47
  88. data/_sass/bootstrap/_list-group.scss +64 -79
  89. data/_sass/bootstrap/_media.scss +3 -61
  90. data/_sass/bootstrap/_mixins.scss +19 -18
  91. data/_sass/bootstrap/_modal.scss +180 -0
  92. data/_sass/bootstrap/_nav.scss +118 -0
  93. data/_sass/bootstrap/_navbar.scss +192 -555
  94. data/_sass/bootstrap/_pagination.scss +59 -70
  95. data/_sass/bootstrap/_popover.scss +183 -0
  96. data/_sass/bootstrap/_print.scss +89 -49
  97. data/_sass/bootstrap/_progress.scss +34 -0
  98. data/_sass/bootstrap/_reboot.scss +483 -0
  99. data/_sass/bootstrap/_root.scss +19 -0
  100. data/_sass/bootstrap/_tables.scss +119 -166
  101. data/_sass/bootstrap/_tooltip.scss +93 -79
  102. data/_sass/bootstrap/_transitions.scss +22 -0
  103. data/_sass/bootstrap/_type.scss +66 -239
  104. data/_sass/bootstrap/_utilities.scss +15 -55
  105. data/_sass/bootstrap/_variables.scss +782 -727
  106. data/_sass/bootstrap/bootstrap-grid.scss +32 -0
  107. data/_sass/bootstrap/bootstrap-reboot.scss +12 -0
  108. data/_sass/bootstrap/bootstrap.scss +42 -0
  109. data/_sass/bootstrap/mixins/_alert.scss +13 -0
  110. data/_sass/bootstrap/mixins/_background-variant.scss +14 -5
  111. data/_sass/bootstrap/mixins/_badge.scss +12 -0
  112. data/_sass/bootstrap/mixins/_border-radius.scss +25 -8
  113. data/_sass/bootstrap/mixins/_box-shadow.scss +5 -0
  114. data/_sass/bootstrap/mixins/_breakpoints.scss +123 -0
  115. data/_sass/bootstrap/mixins/_buttons.scss +84 -40
  116. data/_sass/bootstrap/mixins/_caret.scss +66 -0
  117. data/_sass/bootstrap/mixins/_clearfix.scss +3 -18
  118. data/_sass/bootstrap/mixins/_float.scss +11 -0
  119. data/_sass/bootstrap/mixins/_forms.scss +125 -66
  120. data/_sass/bootstrap/mixins/_gradients.scss +17 -30
  121. data/_sass/bootstrap/mixins/_grid-framework.scss +52 -66
  122. data/_sass/bootstrap/mixins/_grid.scss +37 -107
  123. data/_sass/bootstrap/mixins/_hover.scss +37 -0
  124. data/_sass/bootstrap/mixins/_image.scss +18 -15
  125. data/_sass/bootstrap/mixins/_list-group.scss +10 -21
  126. data/_sass/bootstrap/mixins/_lists.scss +7 -0
  127. data/_sass/bootstrap/mixins/_nav-divider.scss +4 -4
  128. data/_sass/bootstrap/mixins/_pagination.scss +10 -12
  129. data/_sass/bootstrap/mixins/_reset-text.scss +7 -8
  130. data/_sass/bootstrap/mixins/_resize.scss +1 -1
  131. data/_sass/bootstrap/mixins/_screen-reader.scss +33 -0
  132. data/_sass/bootstrap/mixins/_size.scss +1 -5
  133. data/_sass/bootstrap/mixins/_table-row.scss +16 -14
  134. data/_sass/bootstrap/mixins/_text-emphasis.scss +7 -5
  135. data/_sass/bootstrap/mixins/_text-hide.scss +13 -0
  136. data/_sass/bootstrap/mixins/{_text-overflow.scss → _text-truncate.scss} +2 -2
  137. data/_sass/bootstrap/mixins/_transition.scss +13 -0
  138. data/_sass/bootstrap/mixins/_visibility.scss +7 -0
  139. data/_sass/bootstrap/utilities/_align.scss +8 -0
  140. data/_sass/bootstrap/utilities/_background.scss +19 -0
  141. data/_sass/bootstrap/utilities/_borders.scss +59 -0
  142. data/_sass/bootstrap/utilities/_clearfix.scss +3 -0
  143. data/_sass/bootstrap/utilities/_display.scss +38 -0
  144. data/_sass/bootstrap/{_responsive-embed.scss → utilities/_embed.scss} +26 -9
  145. data/_sass/bootstrap/utilities/_flex.scss +51 -0
  146. data/_sass/bootstrap/utilities/_float.scss +9 -0
  147. data/_sass/bootstrap/utilities/_position.scss +37 -0
  148. data/_sass/bootstrap/utilities/_screenreaders.scss +11 -0
  149. data/_sass/bootstrap/utilities/_shadows.scss +6 -0
  150. data/_sass/bootstrap/utilities/_sizing.scss +12 -0
  151. data/_sass/bootstrap/utilities/_spacing.scss +51 -0
  152. data/_sass/bootstrap/utilities/_text.scss +58 -0
  153. data/_sass/bootstrap/utilities/_visibility.scss +11 -0
  154. data/_sass/core.scss +15 -0
  155. data/_sass/core/blog.scss +242 -327
  156. data/_sass/core/bootstrap-multiselect.scss +1 -0
  157. data/_sass/core/breadcrumb.scss +16 -88
  158. data/_sass/core/carousel-header.scss +91 -0
  159. data/_sass/core/carousel-styles.scss +1 -0
  160. data/_sass/core/carousel.scss +188 -28
  161. data/_sass/core/cookies.scss +200 -0
  162. data/_sass/core/error.scss +190 -0
  163. data/_sass/core/featherlight.scss +158 -0
  164. data/_sass/core/flow.scss +94 -0
  165. data/_sass/core/fontello.scss +91 -0
  166. data/_sass/core/footer.scss +60 -132
  167. data/_sass/core/jumbotron.scss +105 -0
  168. data/_sass/core/navbar.scss +241 -0
  169. data/_sass/core/normalize.scss +358 -0
  170. data/_sass/core/syntax.scss +65 -62
  171. data/_sass/core/theme.scss +49 -440
  172. data/assets/css/main.scss +12 -18
  173. data/assets/fonts/fontello/fontello.eot +0 -0
  174. data/assets/fonts/fontello/fontello.svg +94 -0
  175. data/assets/fonts/fontello/fontello.ttf +0 -0
  176. data/assets/fonts/fontello/fontello.woff +0 -0
  177. data/assets/fonts/fontello/fontello.woff2 +0 -0
  178. data/assets/fonts/{lato-regular → lato}/LICENSE.txt +0 -0
  179. data/assets/fonts/{lato-regular → lato}/Lato-regular.eot +0 -0
  180. data/assets/fonts/{lato-regular → lato}/Lato-regular.svg +0 -0
  181. data/assets/fonts/{lato-regular → lato}/Lato-regular.ttf +0 -0
  182. data/assets/fonts/{lato-regular → lato}/Lato-regular.woff +0 -0
  183. data/assets/fonts/{lato-regular → lato}/Lato-regular.woff2 +0 -0
  184. data/assets/images/{Linaro-Logo_standard.svg → Linaro-Logo.svg} +0 -0
  185. data/assets/images/Linaro-Sprinkle.png +0 -0
  186. data/assets/images/Linaro-logo-white.png +0 -0
  187. data/assets/images/{avatar-placeholder.png → avatar-placeholder.jpg} +0 -0
  188. data/assets/images/breadcrumb-image.jpg +0 -0
  189. data/assets/images/clipboard.svg +3 -0
  190. data/{_sass/core/forms.scss → assets/js/app/custom.js} +0 -0
  191. data/assets/js/app/main.js +360 -96
  192. data/assets/js/bootstrap.js.map +1 -0
  193. data/assets/js/popper.min.js.map +1 -0
  194. data/assets/js/vendor/_popper.js +5 -0
  195. data/assets/js/vendor/bootstrap.js +6 -0
  196. data/assets/js/vendor/clipboard.min.js +7 -0
  197. data/assets/js/vendor/featherlight.js +641 -0
  198. data/assets/js/vendor/jquery.cookie.js +120 -0
  199. data/assets/js/vendor/jquery.ihavecookies.js +271 -0
  200. data/assets/js/vendor/jquery.js +10364 -0
  201. data/assets/js/vendor/lazysizes.js +698 -0
  202. data/assets/js/vendor/ls.unveilhooks.js +145 -0
  203. data/assets/js/vendor/owl.carousel.js +3907 -0
  204. data/assets/js/vendor/simple-jekyll-search.min.js +278 -0
  205. data/assets/json/posts.json +28 -0
  206. data/robots.txt +2 -2
  207. metadata +205 -260
  208. data/_data/authors.yml +0 -7
  209. data/_data/company.yml +0 -29
  210. data/_data/linaro.yml +0 -4
  211. data/_data/members_db.yaml +0 -115
  212. data/_data/news.yaml +0 -230
  213. data/_data/sub-nav-stacked.yml +0 -67
  214. data/_data/sub-nav.yml +0 -61
  215. data/_includes/_theme-includes/_blog/pagination.html +0 -39
  216. data/_includes/_theme-includes/_footer/footer.html +0 -85
  217. data/_includes/_theme-includes/_head/head.html +0 -35
  218. data/_includes/_theme-includes/_navigation/nav.html +0 -128
  219. data/_includes/_theme-includes/_navigation/stacked-nav.html +0 -20
  220. data/_includes/_theme-includes/_navigation/tabbed-nav.html +0 -35
  221. data/_includes/_theme-includes/_page-structure/breadcrumb.html +0 -101
  222. data/_includes/_theme-includes/_page-structure/home-hero-shape.html +0 -34
  223. data/_includes/_theme-includes/_page-structure/home-hero.html +0 -23
  224. data/_includes/_theme-includes/_page-structure/shape-divider.html +0 -12
  225. data/_includes/_theme-includes/_script-includes/css.html +0 -40
  226. data/_includes/_theme-includes/_script-includes/google-analytics/script.html +0 -10
  227. data/_includes/_theme-includes/_script-includes/gtm/gtm-noscript.html +0 -5
  228. data/_includes/_theme-includes/_script-includes/gtm/gtm-script.html +0 -9
  229. data/_includes/_theme-includes/_script-includes/javascript.html +0 -50
  230. data/_includes/_theme-includes/_third-party/disqus.html +0 -14
  231. data/_includes/_theme-includes/_third-party/mailchimp-homepage.html +0 -33
  232. data/_includes/_theme-includes/members.html +0 -63
  233. data/_includes/base.html +0 -14
  234. data/_includes/owl-carousel-homepage.html +0 -103
  235. data/_layouts/accessory-display-page.html +0 -88
  236. data/_layouts/blog-breadcrumbless.html +0 -49
  237. data/_layouts/blog.html +0 -56
  238. data/_layouts/contact.html +0 -10
  239. data/_layouts/default-empty.html +0 -11
  240. data/_layouts/default-no-sub-nav.html +0 -15
  241. data/_layouts/default-plain.html +0 -16
  242. data/_layouts/default-stacked-breadcrumb.html +0 -23
  243. data/_layouts/default-stacked.html +0 -22
  244. data/_layouts/empty.html +0 -10
  245. data/_layouts/fluid-no-sub-nav.html +0 -11
  246. data/_layouts/fluid.html +0 -15
  247. data/_layouts/home-shape.html +0 -18
  248. data/_layouts/home.html +0 -18
  249. data/_layouts/product-display-page.html +0 -262
  250. data/_layouts/project-display-page.html +0 -28
  251. data/_layouts/redirect.html +0 -11
  252. data/_sass/_bootstrap-compass.scss +0 -9
  253. data/_sass/_bootstrap-mincer.scss +0 -19
  254. data/_sass/_bootstrap-sprockets.scss +0 -9
  255. data/_sass/_bootstrap.scss +0 -56
  256. data/_sass/bootstrap/_alerts.scss +0 -73
  257. data/_sass/bootstrap/_badges.scss +0 -68
  258. data/_sass/bootstrap/_breadcrumbs.scss +0 -28
  259. data/_sass/bootstrap/_button-groups.scss +0 -244
  260. data/_sass/bootstrap/_component-animations.scss +0 -37
  261. data/_sass/bootstrap/_dropdowns.scss +0 -216
  262. data/_sass/bootstrap/_glyphicons.scss +0 -307
  263. data/_sass/bootstrap/_input-groups.scss +0 -171
  264. data/_sass/bootstrap/_labels.scss +0 -66
  265. data/_sass/bootstrap/_modals.scss +0 -150
  266. data/_sass/bootstrap/_navs.scss +0 -242
  267. data/_sass/bootstrap/_normalize.scss +0 -424
  268. data/_sass/bootstrap/_pager.scss +0 -54
  269. data/_sass/bootstrap/_panels.scss +0 -271
  270. data/_sass/bootstrap/_popovers.scss +0 -131
  271. data/_sass/bootstrap/_progress-bars.scss +0 -87
  272. data/_sass/bootstrap/_responsive-utilities.scss +0 -179
  273. data/_sass/bootstrap/_scaffolding.scss +0 -161
  274. data/_sass/bootstrap/_theme.scss +0 -291
  275. data/_sass/bootstrap/_thumbnails.scss +0 -38
  276. data/_sass/bootstrap/_wells.scss +0 -29
  277. data/_sass/bootstrap/mixins/_alerts.scss +0 -14
  278. data/_sass/bootstrap/mixins/_center-block.scss +0 -7
  279. data/_sass/bootstrap/mixins/_hide-text.scss +0 -21
  280. data/_sass/bootstrap/mixins/_labels.scss +0 -12
  281. data/_sass/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  282. data/_sass/bootstrap/mixins/_opacity.scss +0 -8
  283. data/_sass/bootstrap/mixins/_panels.scss +0 -24
  284. data/_sass/bootstrap/mixins/_progress-bar.scss +0 -10
  285. data/_sass/bootstrap/mixins/_reset-filter.scss +0 -8
  286. data/_sass/bootstrap/mixins/_responsive-visibility.scss +0 -21
  287. data/_sass/bootstrap/mixins/_tab-focus.scss +0 -9
  288. data/_sass/bootstrap/mixins/_vendor-prefixes.scss +0 -222
  289. data/_sass/core/animations.scss +0 -125
  290. data/_sass/core/cookieconsent.scss +0 -42
  291. data/_sass/core/custom.scss +0 -3
  292. data/_sass/core/fa.scss +0 -2336
  293. data/_sass/core/flipclock.scss +0 -435
  294. data/_sass/core/font-awesome.min.scss +0 -4
  295. data/_sass/core/fonts.scss +0 -7
  296. data/_sass/core/homepage.scss +0 -45
  297. data/_sass/core/lightbox.scss +0 -213
  298. data/_sass/core/nav.scss +0 -723
  299. data/_sass/core/old-search.scss +0 -239
  300. data/_sass/core/openhours.scss +0 -51
  301. data/_sass/core/products.scss +0 -221
  302. data/_sass/core/projects.scss +0 -32
  303. data/_sass/core/social-media-icons.scss +0 -71
  304. data/_sass/core/tables.scss +0 -125
  305. data/_sass/core/youtube.scss +0 -65
  306. data/_sass/custom.scss +0 -0
  307. data/assets/fonts/fontawesome-webfont.eot +0 -0
  308. data/assets/fonts/fontawesome-webfont.svg +0 -2671
  309. data/assets/fonts/fontawesome-webfont.ttf +0 -0
  310. data/assets/fonts/fontawesome-webfont.woff +0 -0
  311. data/assets/fonts/fontawesome-webfont.woff2 +0 -0
  312. data/assets/fonts/fontello.eot +0 -0
  313. data/assets/fonts/fontello.svg +0 -44
  314. data/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  315. data/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  316. data/assets/fonts/glyphicons-halflings-regular.woff2 +0 -0
  317. data/assets/images/96boards-Logo.svg +0 -1
  318. data/assets/images/Linaro-Logo_light.png +0 -0
  319. data/assets/images/Linaro-Sprinkle.svg +0 -13
  320. data/assets/images/background-image.jpg +0 -0
  321. data/assets/images/banner.jpg +0 -0
  322. data/assets/images/css3.png +0 -0
  323. data/assets/images/html5.png +0 -0
  324. data/assets/images/jekyll.svg +0 -1
  325. data/assets/images/js.jpeg +0 -0
  326. data/assets/images/placeholder.png +0 -0
  327. data/assets/js/app/search.js +0 -41
  328. data/assets/js/app/sticky.js +0 -76
  329. data/assets/js/app/tables.js +0 -8
  330. data/assets/js/vendor/bootstrap.min.js +0 -7
  331. data/assets/js/vendor/cognito-forms.js +0 -150
  332. data/assets/js/vendor/cookieconsent.min.js +0 -8
  333. data/assets/js/vendor/flipclock.min.js +0 -35
  334. data/assets/js/vendor/jquery.min.js +0 -4
  335. data/assets/js/vendor/lazysizes.min.js +0 -2
  336. data/assets/js/vendor/lightbox.min.js +0 -14
  337. data/assets/js/vendor/loadCSS.js +0 -79
  338. data/assets/js/vendor/mc-validate.js +0 -14
  339. data/assets/js/vendor/owl.carousel.min.js +0 -27
@@ -0,0 +1,166 @@
1
+ // The dropdown wrapper (`<div>`)
2
+ .dropup,
3
+ .dropright,
4
+ .dropdown,
5
+ .dropleft {
6
+ position: relative;
7
+ }
8
+
9
+ .dropdown-toggle {
10
+ // Generate the caret automatically
11
+ @include caret;
12
+ }
13
+
14
+ // The dropdown menu
15
+ .dropdown-menu {
16
+ position: absolute;
17
+ top: 100%;
18
+ left: 0;
19
+ z-index: $zindex-dropdown;
20
+ display: none; // none by default, but block on "open" of the menu
21
+ float: left;
22
+ min-width: $dropdown-min-width;
23
+ padding: $dropdown-padding-y 0;
24
+ margin: $dropdown-spacer 0 0; // override default ul
25
+ font-size: $font-size-base; // Redeclare because nesting can cause inheritance issues
26
+ color: $body-color;
27
+ text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
28
+ list-style: none;
29
+ background-color: $dropdown-bg;
30
+ background-clip: padding-box;
31
+ border: $dropdown-border-width solid $dropdown-border-color;
32
+ @include border-radius($dropdown-border-radius);
33
+ @include box-shadow($dropdown-box-shadow);
34
+ }
35
+
36
+ .dropdown-menu-right {
37
+ right: 0;
38
+ left: auto;
39
+ }
40
+
41
+ // Allow for dropdowns to go bottom up (aka, dropup-menu)
42
+ // Just add .dropup after the standard .dropdown class and you're set.
43
+ .dropup {
44
+ .dropdown-menu {
45
+ top: auto;
46
+ bottom: 100%;
47
+ margin-top: 0;
48
+ margin-bottom: $dropdown-spacer;
49
+ }
50
+
51
+ .dropdown-toggle {
52
+ @include caret(up);
53
+ }
54
+ }
55
+
56
+ .dropright {
57
+ .dropdown-menu {
58
+ top: 0;
59
+ right: auto;
60
+ left: 100%;
61
+ margin-top: 0;
62
+ margin-left: $dropdown-spacer;
63
+ }
64
+
65
+ .dropdown-toggle {
66
+ @include caret(right);
67
+ &::after {
68
+ vertical-align: 0;
69
+ }
70
+ }
71
+ }
72
+
73
+ .dropleft {
74
+ .dropdown-menu {
75
+ top: 0;
76
+ right: 100%;
77
+ left: auto;
78
+ margin-top: 0;
79
+ margin-right: $dropdown-spacer;
80
+ }
81
+
82
+ .dropdown-toggle {
83
+ @include caret(left);
84
+ &::before {
85
+ vertical-align: 0;
86
+ }
87
+ }
88
+ }
89
+
90
+ // When enabled Popper.js, reset basic dropdown position
91
+ // stylelint-disable no-duplicate-selectors
92
+ .dropdown-menu {
93
+ &[x-placement^="top"],
94
+ &[x-placement^="right"],
95
+ &[x-placement^="bottom"],
96
+ &[x-placement^="left"] {
97
+ right: auto;
98
+ bottom: auto;
99
+ }
100
+ }
101
+ // stylelint-enable no-duplicate-selectors
102
+
103
+ // Dividers (basically an `<hr>`) within the dropdown
104
+ .dropdown-divider {
105
+ @include nav-divider($dropdown-divider-bg);
106
+ }
107
+
108
+ // Links, buttons, and more within the dropdown menu
109
+ //
110
+ // `<button>`-specific styles are denoted with `// For <button>s`
111
+ .dropdown-item {
112
+ display: block;
113
+ width: 100%; // For `<button>`s
114
+ padding: $dropdown-item-padding-y $dropdown-item-padding-x;
115
+ clear: both;
116
+ font-weight: $font-weight-normal;
117
+ color: $dropdown-link-color;
118
+ text-align: inherit; // For `<button>`s
119
+ white-space: nowrap; // prevent links from randomly breaking onto new lines
120
+ background-color: transparent; // For `<button>`s
121
+ border: 0; // For `<button>`s
122
+
123
+ @include hover-focus {
124
+ color: $dropdown-link-hover-color;
125
+ text-decoration: none;
126
+ @include gradient-bg($dropdown-link-hover-bg);
127
+ }
128
+
129
+ &.active,
130
+ &:active {
131
+ color: $dropdown-link-active-color;
132
+ text-decoration: none;
133
+ @include gradient-bg($dropdown-link-active-bg);
134
+ }
135
+
136
+ &.disabled,
137
+ &:disabled {
138
+ color: $dropdown-link-disabled-color;
139
+ background-color: transparent;
140
+ // Remove CSS gradients if they're enabled
141
+ @if $enable-gradients {
142
+ background-image: none;
143
+ }
144
+ }
145
+ }
146
+
147
+ .dropdown-menu.show {
148
+ display: block;
149
+ }
150
+
151
+ // Dropdown section headers
152
+ .dropdown-header {
153
+ display: block;
154
+ padding: $dropdown-padding-y $dropdown-item-padding-x;
155
+ margin-bottom: 0; // for use with heading elements
156
+ font-size: $font-size-sm;
157
+ color: $dropdown-header-color;
158
+ white-space: nowrap; // as with > li > a
159
+ }
160
+
161
+ // Dropdown text
162
+ .dropdown-item-text {
163
+ display: block;
164
+ padding: $dropdown-item-padding-y $dropdown-item-padding-x;
165
+ color: $dropdown-link-color;
166
+ }
@@ -1,141 +1,47 @@
1
- //
2
- // Forms
3
- // --------------------------------------------------
4
-
5
-
6
- // Normalize non-controls
7
- //
8
- // Restyle and baseline non-control form elements.
9
-
10
- fieldset {
11
- padding: 0;
12
- margin: 0;
13
- border: 0;
14
- // Chrome and Firefox set a `min-width: min-content;` on fieldsets,
15
- // so we reset that to ensure it behaves more like a standard block element.
16
- // See https://github.com/twbs/bootstrap/issues/12359.
17
- min-width: 0;
18
- }
19
-
20
- legend {
21
- display: block;
22
- width: 100%;
23
- padding: 0;
24
- margin-bottom: $line-height-computed;
25
- font-size: ($font-size-base * 1.5);
26
- line-height: inherit;
27
- color: $legend-color;
28
- border: 0;
29
- border-bottom: 1px solid $legend-border-color;
30
- }
31
-
32
- label {
33
- display: inline-block;
34
- max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)
35
- margin-bottom: 5px;
36
- font-weight: bold;
37
- }
38
-
39
-
40
- // Normalize form controls
41
- //
42
- // While most of our form styles require extra classes, some basic normalization
43
- // is required to ensure optimum display with or without those classes to better
44
- // address browser inconsistencies.
45
-
46
- // Override content-box in Normalize (* isn't specific enough)
47
- input[type="search"] {
48
- @include box-sizing(border-box);
49
- }
50
-
51
- // Position radios and checkboxes better
52
- input[type="radio"],
53
- input[type="checkbox"] {
54
- margin: 4px 0 0;
55
- margin-top: 1px \9; // IE8-9
56
- line-height: normal;
57
- }
58
-
59
- input[type="file"] {
60
- display: block;
61
- }
62
-
63
- // Make range inputs behave like textual form controls
64
- input[type="range"] {
65
- display: block;
66
- width: 100%;
67
- }
68
-
69
- // Make multiple select elements height not fixed
70
- select[multiple],
71
- select[size] {
72
- height: auto;
73
- }
74
-
75
- // Focus for file, radio, and checkbox
76
- input[type="file"]:focus,
77
- input[type="radio"]:focus,
78
- input[type="checkbox"]:focus {
79
- @include tab-focus;
80
- }
81
-
82
- // Adjust output element
83
- output {
84
- display: block;
85
- padding-top: ($padding-base-vertical + 1);
86
- font-size: $font-size-base;
87
- line-height: $line-height-base;
88
- color: $input-color;
89
- }
90
-
1
+ // stylelint-disable selector-no-qualifying-type
91
2
 
92
- // Common form controls
93
3
  //
94
- // Shared size and type resets for form controls. Apply `.form-control` to any
95
- // of the following form controls:
4
+ // Textual form controls
96
5
  //
97
- // select
98
- // textarea
99
- // input[type="text"]
100
- // input[type="password"]
101
- // input[type="datetime"]
102
- // input[type="datetime-local"]
103
- // input[type="date"]
104
- // input[type="month"]
105
- // input[type="time"]
106
- // input[type="week"]
107
- // input[type="number"]
108
- // input[type="email"]
109
- // input[type="url"]
110
- // input[type="search"]
111
- // input[type="tel"]
112
- // input[type="color"]
113
6
 
114
7
  .form-control {
115
8
  display: block;
116
9
  width: 100%;
117
- height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
118
- padding: $padding-base-vertical $padding-base-horizontal;
10
+ height: $input-height;
11
+ padding: $input-padding-y $input-padding-x;
119
12
  font-size: $font-size-base;
120
- line-height: $line-height-base;
13
+ line-height: $input-line-height;
121
14
  color: $input-color;
122
15
  background-color: $input-bg;
123
- background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
124
- border: 1px solid $input-border;
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.
126
- @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
127
- @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);
128
-
129
- // Customize the `:focus` state to imitate native WebKit styles.
130
- @include form-control-focus;
16
+ background-clip: padding-box;
17
+ border: $input-border-width solid $input-border-color;
18
+
19
+ // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
20
+ @if $enable-rounded {
21
+ // Manually use the if/else instead of the mixin to account for iOS override
22
+ border-radius: $input-border-radius;
23
+ } @else {
24
+ // Otherwise undo the iOS default
25
+ border-radius: 0;
26
+ }
131
27
 
132
- // Placeholder
133
- @include placeholder;
28
+ @include box-shadow($input-box-shadow);
29
+ @include transition($input-transition);
134
30
 
135
31
  // Unstyle the caret on `<select>`s in IE10+.
136
32
  &::-ms-expand {
137
- border: 0;
138
33
  background-color: transparent;
34
+ border: 0;
35
+ }
36
+
37
+ // Customize the `:focus` state to imitate native WebKit styles.
38
+ @include form-control-focus();
39
+
40
+ // Placeholder
41
+ &::placeholder {
42
+ color: $input-placeholder-color;
43
+ // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
44
+ opacity: 1;
139
45
  }
140
46
 
141
47
  // Disabled and read-only inputs
@@ -143,320 +49,206 @@ output {
143
49
  // HTML5 says that controls under a fieldset > legend:first-child won't be
144
50
  // disabled if the fieldset is disabled. Due to implementation difficulty, we
145
51
  // don't honor that edge case; we style them as disabled anyway.
146
- &[disabled],
147
- &[readonly],
148
- fieldset[disabled] & {
149
- background-color: $input-bg-disabled;
150
- opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
52
+ &:disabled,
53
+ &[readonly] {
54
+ background-color: $input-disabled-bg;
55
+ // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
56
+ opacity: 1;
151
57
  }
58
+ }
152
59
 
153
- &[disabled],
154
- fieldset[disabled] & {
155
- cursor: $cursor-disabled;
60
+ select.form-control {
61
+ &:focus::-ms-value {
62
+ // Suppress the nested default white text on blue background highlight given to
63
+ // the selected option text when the (still closed) <select> receives focus
64
+ // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to
65
+ // match the appearance of the native widget.
66
+ // See https://github.com/twbs/bootstrap/issues/19398.
67
+ color: $input-color;
68
+ background-color: $input-bg;
156
69
  }
157
-
158
- // [converter] extracted textarea& to textarea.form-control
159
70
  }
160
71
 
161
- // Reset height for `textarea`s
162
- textarea.form-control {
163
- height: auto;
72
+ // Make file inputs better match text inputs by forcing them to new lines.
73
+ .form-control-file,
74
+ .form-control-range {
75
+ display: block;
76
+ width: 100%;
164
77
  }
165
78
 
166
79
 
167
- // Search inputs in iOS
168
80
  //
169
- // This overrides the extra rounded corners on search inputs in iOS so that our
170
- // `.form-control` class can properly style them. Note that this cannot simply
171
- // be added to `.form-control` as it's not specific enough. For details, see
172
- // https://github.com/twbs/bootstrap/issues/11586.
81
+ // Labels
82
+ //
173
83
 
174
- input[type="search"] {
175
- -webkit-appearance: none;
84
+ // For use with horizontal and inline forms, when you need the label (or legend)
85
+ // text to align with the form controls.
86
+ .col-form-label {
87
+ padding-top: calc(#{$input-padding-y} + #{$input-border-width});
88
+ padding-bottom: calc(#{$input-padding-y} + #{$input-border-width});
89
+ margin-bottom: 0; // Override the `<label>/<legend>` default
90
+ font-size: inherit; // Override the `<legend>` default
91
+ line-height: $input-line-height;
176
92
  }
177
93
 
94
+ .col-form-label-lg {
95
+ padding-top: calc(#{$input-padding-y-lg} + #{$input-border-width});
96
+ padding-bottom: calc(#{$input-padding-y-lg} + #{$input-border-width});
97
+ font-size: $font-size-lg;
98
+ line-height: $input-line-height-lg;
99
+ }
178
100
 
179
- // Special styles for iOS temporal inputs
180
- //
181
- // In Mobile Safari, setting `display: block` on temporal inputs causes the
182
- // text within the input to become vertically misaligned. As a workaround, we
183
- // set a pixel line-height that matches the given height of the input, but only
184
- // for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
185
- //
186
- // Note that as of 9.3, iOS doesn't support `week`.
187
-
188
- @media screen and (-webkit-min-device-pixel-ratio: 0) {
189
- input[type="date"],
190
- input[type="time"],
191
- input[type="datetime-local"],
192
- input[type="month"] {
193
- &.form-control {
194
- line-height: $input-height-base;
195
- }
196
-
197
- &.input-sm,
198
- .input-group-sm & {
199
- line-height: $input-height-small;
200
- }
201
-
202
- &.input-lg,
203
- .input-group-lg & {
204
- line-height: $input-height-large;
205
- }
206
- }
101
+ .col-form-label-sm {
102
+ padding-top: calc(#{$input-padding-y-sm} + #{$input-border-width});
103
+ padding-bottom: calc(#{$input-padding-y-sm} + #{$input-border-width});
104
+ font-size: $font-size-sm;
105
+ line-height: $input-line-height-sm;
207
106
  }
208
107
 
209
108
 
210
- // Form groups
109
+ // Readonly controls as plain text
211
110
  //
212
- // Designed to help with the organization and spacing of vertical forms. For
213
- // horizontal forms, use the predefined grid classes.
111
+ // Apply class to a readonly input to make it appear like regular plain
112
+ // text (without any border, background color, focus indicator)
214
113
 
215
- .form-group {
216
- margin-bottom: $form-group-margin-bottom;
114
+ .form-control-plaintext {
115
+ display: block;
116
+ width: 100%;
117
+ padding-top: $input-padding-y;
118
+ padding-bottom: $input-padding-y;
119
+ margin-bottom: 0; // match inputs if this class comes on inputs with default margins
120
+ line-height: $input-line-height;
121
+ color: $input-plaintext-color;
122
+ background-color: transparent;
123
+ border: solid transparent;
124
+ border-width: $input-border-width 0;
125
+
126
+ &.form-control-sm,
127
+ &.form-control-lg {
128
+ padding-right: 0;
129
+ padding-left: 0;
130
+ }
217
131
  }
218
132
 
219
133
 
220
- // Checkboxes and radios
134
+ // Form control sizing
221
135
  //
222
- // Indent the labels to position radios/checkboxes as hanging controls.
136
+ // Build on `.form-control` with modifier classes to decrease or increase the
137
+ // height and font-size of form controls.
138
+ //
139
+ // Repeated in `_input_group.scss` to avoid Sass extend issues.
223
140
 
224
- .radio,
225
- .checkbox {
226
- position: relative;
227
- display: block;
228
- margin-top: 10px;
229
- margin-bottom: 10px;
230
-
231
- label {
232
- min-height: $line-height-computed; // Ensure the input doesn't jump when there is no text
233
- padding-left: 20px;
234
- margin-bottom: 0;
235
- font-weight: normal;
236
- cursor: pointer;
237
- }
238
- }
239
- .radio input[type="radio"],
240
- .radio-inline input[type="radio"],
241
- .checkbox input[type="checkbox"],
242
- .checkbox-inline input[type="checkbox"] {
243
- position: absolute;
244
- margin-left: -20px;
245
- margin-top: 4px \9;
141
+ .form-control-sm {
142
+ height: $input-height-sm;
143
+ padding: $input-padding-y-sm $input-padding-x-sm;
144
+ font-size: $font-size-sm;
145
+ line-height: $input-line-height-sm;
146
+ @include border-radius($input-border-radius-sm);
246
147
  }
247
148
 
248
- .radio + .radio,
249
- .checkbox + .checkbox {
250
- margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
149
+ .form-control-lg {
150
+ height: $input-height-lg;
151
+ padding: $input-padding-y-lg $input-padding-x-lg;
152
+ font-size: $font-size-lg;
153
+ line-height: $input-line-height-lg;
154
+ @include border-radius($input-border-radius-lg);
251
155
  }
252
156
 
253
- // Radios and checkboxes on same line
254
- .radio-inline,
255
- .checkbox-inline {
256
- position: relative;
257
- display: inline-block;
258
- padding-left: 20px;
259
- margin-bottom: 0;
260
- vertical-align: middle;
261
- font-weight: normal;
262
- cursor: pointer;
157
+ // stylelint-disable no-duplicate-selectors
158
+ select.form-control {
159
+ &[size],
160
+ &[multiple] {
161
+ height: auto;
162
+ }
263
163
  }
264
- .radio-inline + .radio-inline,
265
- .checkbox-inline + .checkbox-inline {
266
- margin-top: 0;
267
- margin-left: 10px; // space out consecutive inline controls
164
+
165
+ textarea.form-control {
166
+ height: auto;
268
167
  }
168
+ // stylelint-enable no-duplicate-selectors
269
169
 
270
- // Apply same disabled cursor tweak as for inputs
271
- // Some special care is needed because <label>s don't inherit their parent's `cursor`.
170
+ // Form groups
272
171
  //
273
- // Note: Neither radios nor checkboxes can be readonly.
274
- input[type="radio"],
275
- input[type="checkbox"] {
276
- &[disabled],
277
- &.disabled,
278
- fieldset[disabled] & {
279
- cursor: $cursor-disabled;
280
- }
281
- }
282
- // These classes are used directly on <label>s
283
- .radio-inline,
284
- .checkbox-inline {
285
- &.disabled,
286
- fieldset[disabled] & {
287
- cursor: $cursor-disabled;
288
- }
289
- }
290
- // These classes are used on elements with <label> descendants
291
- .radio,
292
- .checkbox {
293
- &.disabled,
294
- fieldset[disabled] & {
295
- label {
296
- cursor: $cursor-disabled;
297
- }
298
- }
299
- }
172
+ // Designed to help with the organization and spacing of vertical forms. For
173
+ // horizontal forms, use the predefined grid classes.
300
174
 
175
+ .form-group {
176
+ margin-bottom: $form-group-margin-bottom;
177
+ }
301
178
 
302
- // Static form control text
303
- //
304
- // Apply class to a `p` element to make any string of text align with labels in
305
- // a horizontal form layout.
306
-
307
- .form-control-static {
308
- // Size it appropriately next to real form controls
309
- padding-top: ($padding-base-vertical + 1);
310
- padding-bottom: ($padding-base-vertical + 1);
311
- // Remove default margin from `p`
312
- margin-bottom: 0;
313
- min-height: ($line-height-computed + $font-size-base);
314
-
315
- &.input-lg,
316
- &.input-sm {
317
- padding-left: 0;
318
- padding-right: 0;
319
- }
179
+ .form-text {
180
+ display: block;
181
+ margin-top: $form-text-margin-top;
320
182
  }
321
183
 
322
184
 
323
- // Form control sizing
324
- //
325
- // Build on `.form-control` with modifier classes to decrease or increase the
326
- // height and font-size of form controls.
185
+ // Form grid
327
186
  //
328
- // The `.form-group-* form-control` variations are sadly duplicated to avoid the
329
- // issue documented in https://github.com/twbs/bootstrap/issues/15074.
330
-
331
- @include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $input-border-radius-small);
332
- .form-group-sm {
333
- .form-control {
334
- height: $input-height-small;
335
- padding: $padding-small-vertical $padding-small-horizontal;
336
- font-size: $font-size-small;
337
- line-height: $line-height-small;
338
- border-radius: $input-border-radius-small;
339
- }
340
- select.form-control {
341
- height: $input-height-small;
342
- line-height: $input-height-small;
343
- }
344
- textarea.form-control,
345
- select[multiple].form-control {
346
- height: auto;
347
- }
348
- .form-control-static {
349
- height: $input-height-small;
350
- min-height: ($line-height-computed + $font-size-small);
351
- padding: ($padding-small-vertical + 1) $padding-small-horizontal;
352
- font-size: $font-size-small;
353
- line-height: $line-height-small;
354
- }
355
- }
356
-
357
- @include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $input-border-radius-large);
358
- .form-group-lg {
359
- .form-control {
360
- height: $input-height-large;
361
- padding: $padding-large-vertical $padding-large-horizontal;
362
- font-size: $font-size-large;
363
- line-height: $line-height-large;
364
- border-radius: $input-border-radius-large;
365
- }
366
- select.form-control {
367
- height: $input-height-large;
368
- line-height: $input-height-large;
369
- }
370
- textarea.form-control,
371
- select[multiple].form-control {
372
- height: auto;
373
- }
374
- .form-control-static {
375
- height: $input-height-large;
376
- min-height: ($line-height-computed + $font-size-large);
377
- padding: ($padding-large-vertical + 1) $padding-large-horizontal;
378
- font-size: $font-size-large;
379
- line-height: $line-height-large;
187
+ // Special replacement for our grid system's `.row` for tighter form layouts.
188
+
189
+ .form-row {
190
+ display: flex;
191
+ flex-wrap: wrap;
192
+ margin-right: -5px;
193
+ margin-left: -5px;
194
+
195
+ > .col,
196
+ > [class*="col-"] {
197
+ padding-right: 5px;
198
+ padding-left: 5px;
380
199
  }
381
200
  }
382
201
 
383
202
 
384
- // Form control feedback states
203
+ // Checkboxes and radios
385
204
  //
386
- // Apply contextual and semantic states to individual form controls.
205
+ // Indent the labels to position radios/checkboxes as hanging controls.
387
206
 
388
- .has-feedback {
389
- // Enable absolute positioning
207
+ .form-check {
390
208
  position: relative;
391
-
392
- // Ensure icons don't overlap text
393
- .form-control {
394
- padding-right: ($input-height-base * 1.25);
395
- }
396
- }
397
- // Feedback icon (requires .glyphicon classes)
398
- .form-control-feedback {
399
- position: absolute;
400
- top: 0;
401
- right: 0;
402
- z-index: 2; // Ensure icon is above input groups
403
209
  display: block;
404
- width: $input-height-base;
405
- height: $input-height-base;
406
- line-height: $input-height-base;
407
- text-align: center;
408
- pointer-events: none;
409
- }
410
- .input-lg + .form-control-feedback,
411
- .input-group-lg + .form-control-feedback,
412
- .form-group-lg .form-control + .form-control-feedback {
413
- width: $input-height-large;
414
- height: $input-height-large;
415
- line-height: $input-height-large;
416
- }
417
- .input-sm + .form-control-feedback,
418
- .input-group-sm + .form-control-feedback,
419
- .form-group-sm .form-control + .form-control-feedback {
420
- width: $input-height-small;
421
- height: $input-height-small;
422
- line-height: $input-height-small;
210
+ padding-left: $form-check-input-gutter;
423
211
  }
424
212
 
425
- // Feedback states
426
- .has-success {
427
- @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
428
- }
429
- .has-warning {
430
- @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
213
+ .form-check-input {
214
+ position: absolute;
215
+ margin-top: $form-check-input-margin-y;
216
+ margin-left: -$form-check-input-gutter;
217
+
218
+ &:disabled ~ .form-check-label {
219
+ color: $text-muted;
220
+ }
431
221
  }
432
- .has-error {
433
- @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
222
+
223
+ .form-check-label {
224
+ margin-bottom: 0; // Override default `<label>` bottom margin
434
225
  }
435
226
 
436
- // Reposition feedback icon if input has visible label above
437
- .has-feedback label {
227
+ .form-check-inline {
228
+ display: inline-flex;
229
+ align-items: center;
230
+ padding-left: 0; // Override base .form-check
231
+ margin-right: $form-check-inline-margin-x;
438
232
 
439
- & ~ .form-control-feedback {
440
- top: ($line-height-computed + 5); // Height of the `label` and its margin
441
- }
442
- &.sr-only ~ .form-control-feedback {
443
- top: 0;
233
+ // Undo .form-check-input defaults and add some `margin-right`.
234
+ .form-check-input {
235
+ position: static;
236
+ margin-top: 0;
237
+ margin-right: $form-check-inline-input-margin-x;
238
+ margin-left: 0;
444
239
  }
445
240
  }
446
241
 
447
242
 
448
- // Help text
243
+ // Form validation
449
244
  //
450
- // Apply to any element you wish to create light text for placement immediately
451
- // below a form control. Use for general help, formatting, or instructional text.
452
-
453
- .help-block {
454
- display: block; // account for any element using help-block
455
- margin-top: 5px;
456
- margin-bottom: 10px;
457
- color: lighten($text-color, 25%); // lighten the text some for contrast
458
- }
245
+ // Provide feedback to users when form field values are valid or invalid. Works
246
+ // primarily for client-side validation via scoped `:invalid` and `:valid`
247
+ // pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
248
+ // server side validation.
459
249
 
250
+ @include form-validation-state("valid", $form-feedback-valid-color);
251
+ @include form-validation-state("invalid", $form-feedback-invalid-color);
460
252
 
461
253
  // Inline forms
462
254
  //
@@ -466,22 +258,38 @@ input[type="checkbox"] {
466
258
  //
467
259
  // Requires wrapping inputs and labels with `.form-group` for proper display of
468
260
  // default HTML form controls and our custom form controls (e.g., input groups).
469
- //
470
- // Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
471
261
 
472
- // [converter] extracted from `.form-inline` for libsass compatibility
473
- @mixin form-inline {
262
+ .form-inline {
263
+ display: flex;
264
+ flex-flow: row wrap;
265
+ align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)
266
+
267
+ // Because we use flex, the initial sizing of checkboxes is collapsed and
268
+ // doesn't occupy the full-width (which is what we want for xs grid tier),
269
+ // so we force that here.
270
+ .form-check {
271
+ width: 100%;
272
+ }
474
273
 
475
274
  // Kick in the inline
476
- @media (min-width: $screen-sm-min) {
275
+ @include media-breakpoint-up(sm) {
276
+ label {
277
+ display: flex;
278
+ align-items: center;
279
+ justify-content: center;
280
+ margin-bottom: 0;
281
+ }
282
+
477
283
  // Inline-block all the things for "inline"
478
284
  .form-group {
479
- display: inline-block;
285
+ display: flex;
286
+ flex: 0 0 auto;
287
+ flex-flow: row wrap;
288
+ align-items: center;
480
289
  margin-bottom: 0;
481
- vertical-align: middle;
482
290
  }
483
291
 
484
- // In navbar-form, allow folks to *not* use `.form-group`
292
+ // Allow folks to *not* use `.form-group`
485
293
  .form-control {
486
294
  display: inline-block;
487
295
  width: auto; // Prevent labels from stacking above inputs in `.form-group`
@@ -489,129 +297,37 @@ input[type="checkbox"] {
489
297
  }
490
298
 
491
299
  // Make static controls behave like regular ones
492
- .form-control-static {
300
+ .form-control-plaintext {
493
301
  display: inline-block;
494
302
  }
495
303
 
496
- .input-group {
497
- display: inline-table;
498
- vertical-align: middle;
499
-
500
- .input-group-addon,
501
- .input-group-btn,
502
- .form-control {
503
- width: auto;
504
- }
505
- }
506
-
507
- // Input groups need that 100% width though
508
- .input-group > .form-control {
509
- width: 100%;
510
- }
511
-
512
- .control-label {
513
- margin-bottom: 0;
514
- vertical-align: middle;
304
+ .input-group,
305
+ .custom-select {
306
+ width: auto;
515
307
  }
516
308
 
517
309
  // Remove default margin on radios/checkboxes that were used for stacking, and
518
310
  // then undo the floating of radios and checkboxes to match.
519
- .radio,
520
- .checkbox {
521
- display: inline-block;
522
- margin-top: 0;
523
- margin-bottom: 0;
524
- vertical-align: middle;
525
-
526
- label {
527
- padding-left: 0;
528
- }
311
+ .form-check {
312
+ display: flex;
313
+ align-items: center;
314
+ justify-content: center;
315
+ width: auto;
316
+ padding-left: 0;
529
317
  }
530
- .radio input[type="radio"],
531
- .checkbox input[type="checkbox"] {
318
+ .form-check-input {
532
319
  position: relative;
320
+ margin-top: 0;
321
+ margin-right: $form-check-input-margin-x;
533
322
  margin-left: 0;
534
323
  }
535
324
 
536
- // Re-override the feedback icon.
537
- .has-feedback .form-control-feedback {
538
- top: 0;
325
+ .custom-control {
326
+ align-items: center;
327
+ justify-content: center;
539
328
  }
540
- }
541
- }
542
- // [converter] extracted as `@mixin form-inline` for libsass compatibility
543
- .form-inline {
544
- @include form-inline;
545
- }
546
-
547
-
548
-
549
- // Horizontal forms
550
- //
551
- // Horizontal forms are built on grid classes and allow you to create forms with
552
- // labels on the left and inputs on the right.
553
-
554
- .form-horizontal {
555
-
556
- // Consistent vertical alignment of radios and checkboxes
557
- //
558
- // Labels also get some reset styles, but that is scoped to a media query below.
559
- .radio,
560
- .checkbox,
561
- .radio-inline,
562
- .checkbox-inline {
563
- margin-top: 0;
564
- margin-bottom: 0;
565
- padding-top: ($padding-base-vertical + 1); // Default padding plus a border
566
- }
567
- // Account for padding we're adding to ensure the alignment and of help text
568
- // and other content below items
569
- .radio,
570
- .checkbox {
571
- min-height: ($line-height-computed + ($padding-base-vertical + 1));
572
- }
573
-
574
- // Make form groups behave like rows
575
- .form-group {
576
- @include make-row;
577
- }
578
-
579
- // Reset spacing and right align labels, but scope to media queries so that
580
- // labels on narrow viewports stack the same as a default form example.
581
- @media (min-width: $screen-sm-min) {
582
- .control-label {
583
- text-align: right;
329
+ .custom-control-label {
584
330
  margin-bottom: 0;
585
- padding-top: ($padding-base-vertical + 1); // Default padding plus a border
586
- }
587
- }
588
-
589
- // Validation states
590
- //
591
- // Reposition the icon because it's now within a grid column and columns have
592
- // `position: relative;` on them. Also accounts for the grid gutter padding.
593
- .has-feedback .form-control-feedback {
594
- right: floor(($grid-gutter-width / 2));
595
- }
596
-
597
- // Form group sizes
598
- //
599
- // Quick utility class for applying `.input-lg` and `.input-sm` styles to the
600
- // inputs and labels within a `.form-group`.
601
- .form-group-lg {
602
- @media (min-width: $screen-sm-min) {
603
- .control-label {
604
- padding-top: ($padding-large-vertical + 1);
605
- font-size: $font-size-large;
606
- }
607
- }
608
- }
609
- .form-group-sm {
610
- @media (min-width: $screen-sm-min) {
611
- .control-label {
612
- padding-top: ($padding-small-vertical + 1);
613
- font-size: $font-size-small;
614
- }
615
331
  }
616
332
  }
617
333
  }