apx-docs-theme 0.1.7 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/footer.html +8 -9
  3. data/_includes/head.html +20 -9
  4. data/_includes/js_files.html +21 -3
  5. data/_includes/navbar.html +28 -0
  6. data/_includes/sidebar.html +43 -0
  7. data/_layouts/default.html +10 -10
  8. data/_layouts/docs.html +12 -20
  9. data/_sass/bootstrap/_alert.scss +51 -0
  10. data/_sass/bootstrap/_badge.scss +53 -0
  11. data/_sass/bootstrap/_breadcrumb.scss +41 -0
  12. data/_sass/bootstrap/_button-group.scss +163 -0
  13. data/_sass/bootstrap/_buttons.scss +73 -101
  14. data/_sass/bootstrap/_card.scss +310 -0
  15. data/_sass/bootstrap/_carousel.scss +130 -202
  16. data/_sass/bootstrap/_close.scss +23 -15
  17. data/_sass/bootstrap/_code.scss +15 -36
  18. data/_sass/bootstrap/_custom-forms.scss +507 -0
  19. data/_sass/bootstrap/_dropdown.scss +191 -0
  20. data/_sass/bootstrap/_forms.scss +215 -498
  21. data/_sass/bootstrap/_functions.scss +86 -0
  22. data/_sass/bootstrap/_grid.scss +29 -61
  23. data/_sass/bootstrap/_images.scss +42 -0
  24. data/_sass/bootstrap/_input-group.scss +193 -0
  25. data/_sass/bootstrap/_jumbotron.scss +9 -47
  26. data/_sass/bootstrap/_list-group.scss +70 -79
  27. data/_sass/bootstrap/_media.scss +3 -61
  28. data/_sass/bootstrap/_mixins.scss +19 -18
  29. data/_sass/bootstrap/_modal.scss +186 -0
  30. data/_sass/bootstrap/_nav.scss +120 -0
  31. data/_sass/bootstrap/_navbar.scss +192 -555
  32. data/_sass/bootstrap/_pagination.scss +59 -70
  33. data/_sass/bootstrap/_popover.scss +183 -0
  34. data/_sass/bootstrap/_print.scss +89 -49
  35. data/_sass/bootstrap/_progress.scss +34 -0
  36. data/_sass/bootstrap/_reboot.scss +462 -0
  37. data/_sass/bootstrap/_root.scss +19 -0
  38. data/_sass/bootstrap/_spinners.scss +53 -0
  39. data/_sass/bootstrap/_tables.scss +119 -166
  40. data/_sass/bootstrap/_toasts.scss +43 -0
  41. data/_sass/bootstrap/_tooltip.scss +93 -79
  42. data/_sass/bootstrap/_transitions.scss +22 -0
  43. data/_sass/bootstrap/_type.scss +66 -239
  44. data/_sass/bootstrap/_utilities.scss +16 -55
  45. data/_sass/bootstrap/_variables.scss +926 -709
  46. data/_sass/bootstrap/bootstrap-grid.scss +29 -0
  47. data/_sass/bootstrap/bootstrap-reboot.scss +12 -0
  48. data/_sass/bootstrap/bootstrap.scss +44 -0
  49. data/_sass/bootstrap/mixins/_alert.scss +13 -0
  50. data/_sass/bootstrap/mixins/_background-variant.scss +14 -5
  51. data/_sass/bootstrap/mixins/_badge.scss +11 -0
  52. data/_sass/bootstrap/mixins/_border-radius.scss +25 -8
  53. data/_sass/bootstrap/mixins/_box-shadow.scss +5 -0
  54. data/_sass/bootstrap/mixins/_breakpoints.scss +123 -0
  55. data/_sass/bootstrap/mixins/_buttons.scss +86 -40
  56. data/_sass/bootstrap/mixins/_caret.scss +62 -0
  57. data/_sass/bootstrap/mixins/_clearfix.scss +3 -18
  58. data/_sass/bootstrap/mixins/_float.scss +11 -0
  59. data/_sass/bootstrap/mixins/_forms.scss +176 -66
  60. data/_sass/bootstrap/mixins/_gradients.scss +17 -30
  61. data/_sass/bootstrap/mixins/_grid-framework.scss +51 -66
  62. data/_sass/bootstrap/mixins/_grid.scss +34 -105
  63. data/_sass/bootstrap/mixins/_hover.scss +37 -0
  64. data/_sass/bootstrap/mixins/_image.scss +18 -15
  65. data/_sass/bootstrap/mixins/_list-group.scss +10 -21
  66. data/_sass/bootstrap/mixins/_lists.scss +7 -0
  67. data/_sass/bootstrap/mixins/_nav-divider.scss +4 -4
  68. data/_sass/bootstrap/mixins/_pagination.scss +10 -12
  69. data/_sass/bootstrap/mixins/_reset-text.scss +7 -8
  70. data/_sass/bootstrap/mixins/_resize.scss +1 -1
  71. data/_sass/bootstrap/mixins/_screen-reader.scss +33 -0
  72. data/_sass/bootstrap/mixins/_size.scss +1 -5
  73. data/_sass/bootstrap/mixins/_table-row.scss +26 -15
  74. data/_sass/bootstrap/mixins/_text-emphasis.scss +7 -5
  75. data/_sass/bootstrap/mixins/_text-hide.scss +13 -0
  76. data/_sass/bootstrap/mixins/{_text-overflow.scss → _text-truncate.scss} +2 -2
  77. data/_sass/bootstrap/mixins/_transition.scss +16 -0
  78. data/_sass/bootstrap/mixins/_visibility.scss +7 -0
  79. data/_sass/bootstrap/utilities/_align.scss +8 -0
  80. data/_sass/bootstrap/utilities/_background.scss +19 -0
  81. data/_sass/bootstrap/utilities/_borders.scss +63 -0
  82. data/_sass/bootstrap/utilities/_clearfix.scss +3 -0
  83. data/_sass/bootstrap/utilities/_display.scss +38 -0
  84. data/_sass/bootstrap/utilities/_embed.scss +39 -0
  85. data/_sass/bootstrap/utilities/_flex.scss +51 -0
  86. data/_sass/bootstrap/utilities/_float.scss +9 -0
  87. data/_sass/bootstrap/utilities/_overflow.scss +5 -0
  88. data/_sass/bootstrap/utilities/_position.scss +32 -0
  89. data/_sass/bootstrap/utilities/_screenreaders.scss +11 -0
  90. data/_sass/bootstrap/utilities/_shadows.scss +6 -0
  91. data/_sass/bootstrap/utilities/_sizing.scss +20 -0
  92. data/_sass/bootstrap/utilities/_spacing.scss +73 -0
  93. data/_sass/bootstrap/utilities/_text.scss +67 -0
  94. data/_sass/bootstrap/utilities/_visibility.scss +11 -0
  95. data/_sass/markdown/code.scss +65 -0
  96. data/_sass/markdown/color-system.scss +114 -0
  97. data/_sass/markdown/images.scss +119 -0
  98. data/_sass/markdown/markdown-body.scss +103 -0
  99. data/_sass/markdown/markdown.scss +15 -0
  100. data/_sass/rouge.scss +209 -0
  101. data/_sass/theme.scss +35 -0
  102. data/_sass/{_typeahead.scss → typeahead.scss} +0 -0
  103. data/assets/css/main.scss +1 -90
  104. data/assets/img/{bg.jpg → jumbotron.jpg} +0 -0
  105. data/assets/js/bootstrap.min.js +6 -6
  106. data/assets/js/jquery-3.3.1.min.js +2 -0
  107. data/assets/js/main.js +2 -1
  108. data/assets/js/search.json +11 -0
  109. data/assets/js/typeahead.bundle.js +2621 -0
  110. data/assets/js/typeahead.bundle.min.js +4 -4
  111. metadata +81 -50
  112. data/_includes/pages_nav.html +0 -40
  113. data/_includes/topnav.html +0 -37
  114. data/_sass/_bootstrap.scss +0 -56
  115. data/_sass/_syntax-highlighting.scss +0 -71
  116. data/_sass/bootstrap/_alerts.scss +0 -73
  117. data/_sass/bootstrap/_badges.scss +0 -68
  118. data/_sass/bootstrap/_breadcrumbs.scss +0 -28
  119. data/_sass/bootstrap/_button-groups.scss +0 -244
  120. data/_sass/bootstrap/_component-animations.scss +0 -37
  121. data/_sass/bootstrap/_dropdowns.scss +0 -216
  122. data/_sass/bootstrap/_glyphicons.scss +0 -307
  123. data/_sass/bootstrap/_input-groups.scss +0 -171
  124. data/_sass/bootstrap/_labels.scss +0 -66
  125. data/_sass/bootstrap/_modals.scss +0 -150
  126. data/_sass/bootstrap/_navs.scss +0 -242
  127. data/_sass/bootstrap/_normalize.scss +0 -424
  128. data/_sass/bootstrap/_pager.scss +0 -54
  129. data/_sass/bootstrap/_panels.scss +0 -271
  130. data/_sass/bootstrap/_popovers.scss +0 -131
  131. data/_sass/bootstrap/_progress-bars.scss +0 -87
  132. data/_sass/bootstrap/_responsive-embed.scss +0 -35
  133. data/_sass/bootstrap/_responsive-utilities.scss +0 -179
  134. data/_sass/bootstrap/_scaffolding.scss +0 -161
  135. data/_sass/bootstrap/_theme.scss +0 -291
  136. data/_sass/bootstrap/_thumbnails.scss +0 -38
  137. data/_sass/bootstrap/_wells.scss +0 -29
  138. data/_sass/bootstrap/mixins/_alerts.scss +0 -14
  139. data/_sass/bootstrap/mixins/_center-block.scss +0 -7
  140. data/_sass/bootstrap/mixins/_hide-text.scss +0 -21
  141. data/_sass/bootstrap/mixins/_labels.scss +0 -12
  142. data/_sass/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  143. data/_sass/bootstrap/mixins/_opacity.scss +0 -8
  144. data/_sass/bootstrap/mixins/_panels.scss +0 -24
  145. data/_sass/bootstrap/mixins/_progress-bar.scss +0 -10
  146. data/_sass/bootstrap/mixins/_reset-filter.scss +0 -8
  147. data/_sass/bootstrap/mixins/_responsive-visibility.scss +0 -21
  148. data/_sass/bootstrap/mixins/_tab-focus.scss +0 -9
  149. data/_sass/bootstrap/mixins/_vendor-prefixes.scss +0 -222
  150. data/assets/css/font-awesome.min.css +0 -4
  151. data/assets/fonts/FontAwesome.otf +0 -0
  152. data/assets/fonts/fontawesome-webfont.eot +0 -0
  153. data/assets/fonts/fontawesome-webfont.svg +0 -2671
  154. data/assets/fonts/fontawesome-webfont.ttf +0 -0
  155. data/assets/fonts/fontawesome-webfont.woff +0 -0
  156. data/assets/fonts/fontawesome-webfont.woff2 +0 -0
@@ -0,0 +1,191 @@
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
+ @each $breakpoint in map-keys($grid-breakpoints) {
37
+ @include media-breakpoint-up($breakpoint) {
38
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
39
+
40
+ .dropdown-menu#{$infix}-right {
41
+ right: 0;
42
+ left: auto;
43
+ }
44
+ }
45
+ }
46
+
47
+ @each $breakpoint in map-keys($grid-breakpoints) {
48
+ @include media-breakpoint-up($breakpoint) {
49
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
50
+
51
+ .dropdown-menu#{$infix}-left {
52
+ right: auto;
53
+ left: 0;
54
+ }
55
+ }
56
+ }
57
+
58
+ // Allow for dropdowns to go bottom up (aka, dropup-menu)
59
+ // Just add .dropup after the standard .dropdown class and you're set.
60
+ .dropup {
61
+ .dropdown-menu {
62
+ top: auto;
63
+ bottom: 100%;
64
+ margin-top: 0;
65
+ margin-bottom: $dropdown-spacer;
66
+ }
67
+
68
+ .dropdown-toggle {
69
+ @include caret(up);
70
+ }
71
+ }
72
+
73
+ .dropright {
74
+ .dropdown-menu {
75
+ top: 0;
76
+ right: auto;
77
+ left: 100%;
78
+ margin-top: 0;
79
+ margin-left: $dropdown-spacer;
80
+ }
81
+
82
+ .dropdown-toggle {
83
+ @include caret(right);
84
+ &::after {
85
+ vertical-align: 0;
86
+ }
87
+ }
88
+ }
89
+
90
+ .dropleft {
91
+ .dropdown-menu {
92
+ top: 0;
93
+ right: 100%;
94
+ left: auto;
95
+ margin-top: 0;
96
+ margin-right: $dropdown-spacer;
97
+ }
98
+
99
+ .dropdown-toggle {
100
+ @include caret(left);
101
+ &::before {
102
+ vertical-align: 0;
103
+ }
104
+ }
105
+ }
106
+
107
+ // When enabled Popper.js, reset basic dropdown position
108
+ // stylelint-disable-next-line no-duplicate-selectors
109
+ .dropdown-menu {
110
+ &[x-placement^="top"],
111
+ &[x-placement^="right"],
112
+ &[x-placement^="bottom"],
113
+ &[x-placement^="left"] {
114
+ right: auto;
115
+ bottom: auto;
116
+ }
117
+ }
118
+
119
+ // Dividers (basically an `<hr>`) within the dropdown
120
+ .dropdown-divider {
121
+ @include nav-divider($dropdown-divider-bg);
122
+ }
123
+
124
+ // Links, buttons, and more within the dropdown menu
125
+ //
126
+ // `<button>`-specific styles are denoted with `// For <button>s`
127
+ .dropdown-item {
128
+ display: block;
129
+ width: 100%; // For `<button>`s
130
+ padding: $dropdown-item-padding-y $dropdown-item-padding-x;
131
+ clear: both;
132
+ font-weight: $font-weight-normal;
133
+ color: $dropdown-link-color;
134
+ text-align: inherit; // For `<button>`s
135
+ white-space: nowrap; // prevent links from randomly breaking onto new lines
136
+ background-color: transparent; // For `<button>`s
137
+ border: 0; // For `<button>`s
138
+
139
+ &:first-child {
140
+ @include border-top-radius($dropdown-inner-border-radius);
141
+ }
142
+
143
+ &:last-child {
144
+ @include border-bottom-radius($dropdown-inner-border-radius);
145
+ }
146
+
147
+ @include hover-focus {
148
+ color: $dropdown-link-hover-color;
149
+ text-decoration: none;
150
+ @include gradient-bg($dropdown-link-hover-bg);
151
+ }
152
+
153
+ &.active,
154
+ &:active {
155
+ color: $dropdown-link-active-color;
156
+ text-decoration: none;
157
+ @include gradient-bg($dropdown-link-active-bg);
158
+ }
159
+
160
+ &.disabled,
161
+ &:disabled {
162
+ color: $dropdown-link-disabled-color;
163
+ pointer-events: none;
164
+ background-color: transparent;
165
+ // Remove CSS gradients if they're enabled
166
+ @if $enable-gradients {
167
+ background-image: none;
168
+ }
169
+ }
170
+ }
171
+
172
+ .dropdown-menu.show {
173
+ display: block;
174
+ }
175
+
176
+ // Dropdown section headers
177
+ .dropdown-header {
178
+ display: block;
179
+ padding: $dropdown-padding-y $dropdown-item-padding-x;
180
+ margin-bottom: 0; // for use with heading elements
181
+ font-size: $font-size-sm;
182
+ color: $dropdown-header-color;
183
+ white-space: nowrap; // as with > li > a
184
+ }
185
+
186
+ // Dropdown text
187
+ .dropdown-item-text {
188
+ display: block;
189
+ padding: $dropdown-item-padding-y $dropdown-item-padding-x;
190
+ color: $dropdown-link-color;
191
+ }
@@ -1,141 +1,48 @@
1
- //
2
- // Forms
3
- // --------------------------------------------------
4
-
1
+ // stylelint-disable selector-no-qualifying-type
5
2
 
6
- // Normalize non-controls
7
3
  //
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
4
+ // Textual form controls
41
5
  //
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
-
91
-
92
- // Common form controls
93
- //
94
- // Shared size and type resets for form controls. Apply `.form-control` to any
95
- // of the following form controls:
96
- //
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;
119
- font-size: $font-size-base;
120
- line-height: $line-height-base;
10
+ height: $input-height;
11
+ padding: $input-padding-y $input-padding-x;
12
+ font-size: $input-font-size;
13
+ font-weight: $input-font-weight;
14
+ line-height: $input-line-height;
121
15
  color: $input-color;
122
16
  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;
17
+ background-clip: padding-box;
18
+ border: $input-border-width solid $input-border-color;
19
+
20
+ // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
21
+ @if $enable-rounded {
22
+ // Manually use the if/else instead of the mixin to account for iOS override
23
+ border-radius: $input-border-radius;
24
+ } @else {
25
+ // Otherwise undo the iOS default
26
+ border-radius: 0;
27
+ }
131
28
 
132
- // Placeholder
133
- @include placeholder;
29
+ @include box-shadow($input-box-shadow);
30
+ @include transition($input-transition);
134
31
 
135
32
  // Unstyle the caret on `<select>`s in IE10+.
136
33
  &::-ms-expand {
137
- border: 0;
138
34
  background-color: transparent;
35
+ border: 0;
36
+ }
37
+
38
+ // Customize the `:focus` state to imitate native WebKit styles.
39
+ @include form-control-focus();
40
+
41
+ // Placeholder
42
+ &::placeholder {
43
+ color: $input-placeholder-color;
44
+ // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
45
+ opacity: 1;
139
46
  }
140
47
 
141
48
  // Disabled and read-only inputs
@@ -143,320 +50,206 @@ output {
143
50
  // HTML5 says that controls under a fieldset > legend:first-child won't be
144
51
  // disabled if the fieldset is disabled. Due to implementation difficulty, we
145
52
  // 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
53
+ &:disabled,
54
+ &[readonly] {
55
+ background-color: $input-disabled-bg;
56
+ // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
57
+ opacity: 1;
151
58
  }
59
+ }
152
60
 
153
- &[disabled],
154
- fieldset[disabled] & {
155
- cursor: $cursor-disabled;
61
+ select.form-control {
62
+ &:focus::-ms-value {
63
+ // Suppress the nested default white text on blue background highlight given to
64
+ // the selected option text when the (still closed) <select> receives focus
65
+ // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to
66
+ // match the appearance of the native widget.
67
+ // See https://github.com/twbs/bootstrap/issues/19398.
68
+ color: $input-color;
69
+ background-color: $input-bg;
156
70
  }
157
-
158
- // [converter] extracted textarea& to textarea.form-control
159
71
  }
160
72
 
161
- // Reset height for `textarea`s
162
- textarea.form-control {
163
- height: auto;
73
+ // Make file inputs better match text inputs by forcing them to new lines.
74
+ .form-control-file,
75
+ .form-control-range {
76
+ display: block;
77
+ width: 100%;
164
78
  }
165
79
 
166
80
 
167
- // Search inputs in iOS
168
81
  //
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.
82
+ // Labels
83
+ //
173
84
 
174
- input[type="search"] {
175
- -webkit-appearance: none;
85
+ // For use with horizontal and inline forms, when you need the label (or legend)
86
+ // text to align with the form controls.
87
+ .col-form-label {
88
+ padding-top: calc(#{$input-padding-y} + #{$input-border-width});
89
+ padding-bottom: calc(#{$input-padding-y} + #{$input-border-width});
90
+ margin-bottom: 0; // Override the `<label>/<legend>` default
91
+ font-size: inherit; // Override the `<legend>` default
92
+ line-height: $input-line-height;
176
93
  }
177
94
 
95
+ .col-form-label-lg {
96
+ padding-top: calc(#{$input-padding-y-lg} + #{$input-border-width});
97
+ padding-bottom: calc(#{$input-padding-y-lg} + #{$input-border-width});
98
+ font-size: $input-font-size-lg;
99
+ line-height: $input-line-height-lg;
100
+ }
178
101
 
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
- }
102
+ .col-form-label-sm {
103
+ padding-top: calc(#{$input-padding-y-sm} + #{$input-border-width});
104
+ padding-bottom: calc(#{$input-padding-y-sm} + #{$input-border-width});
105
+ font-size: $input-font-size-sm;
106
+ line-height: $input-line-height-sm;
207
107
  }
208
108
 
209
109
 
210
- // Form groups
110
+ // Readonly controls as plain text
211
111
  //
212
- // Designed to help with the organization and spacing of vertical forms. For
213
- // horizontal forms, use the predefined grid classes.
112
+ // Apply class to a readonly input to make it appear like regular plain
113
+ // text (without any border, background color, focus indicator)
214
114
 
215
- .form-group {
216
- margin-bottom: $form-group-margin-bottom;
115
+ .form-control-plaintext {
116
+ display: block;
117
+ width: 100%;
118
+ padding-top: $input-padding-y;
119
+ padding-bottom: $input-padding-y;
120
+ margin-bottom: 0; // match inputs if this class comes on inputs with default margins
121
+ line-height: $input-line-height;
122
+ color: $input-plaintext-color;
123
+ background-color: transparent;
124
+ border: solid transparent;
125
+ border-width: $input-border-width 0;
126
+
127
+ &.form-control-sm,
128
+ &.form-control-lg {
129
+ padding-right: 0;
130
+ padding-left: 0;
131
+ }
217
132
  }
218
133
 
219
134
 
220
- // Checkboxes and radios
135
+ // Form control sizing
221
136
  //
222
- // Indent the labels to position radios/checkboxes as hanging controls.
137
+ // Build on `.form-control` with modifier classes to decrease or increase the
138
+ // height and font-size of form controls.
139
+ //
140
+ // Repeated in `_input_group.scss` to avoid Sass extend issues.
223
141
 
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;
142
+ .form-control-sm {
143
+ height: $input-height-sm;
144
+ padding: $input-padding-y-sm $input-padding-x-sm;
145
+ font-size: $input-font-size-sm;
146
+ line-height: $input-line-height-sm;
147
+ @include border-radius($input-border-radius-sm);
246
148
  }
247
149
 
248
- .radio + .radio,
249
- .checkbox + .checkbox {
250
- margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
150
+ .form-control-lg {
151
+ height: $input-height-lg;
152
+ padding: $input-padding-y-lg $input-padding-x-lg;
153
+ font-size: $input-font-size-lg;
154
+ line-height: $input-line-height-lg;
155
+ @include border-radius($input-border-radius-lg);
251
156
  }
252
157
 
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;
158
+ // stylelint-disable-next-line no-duplicate-selectors
159
+ select.form-control {
160
+ &[size],
161
+ &[multiple] {
162
+ height: auto;
163
+ }
263
164
  }
264
- .radio-inline + .radio-inline,
265
- .checkbox-inline + .checkbox-inline {
266
- margin-top: 0;
267
- margin-left: 10px; // space out consecutive inline controls
165
+
166
+ // stylelint-disable-next-line no-duplicate-selectors
167
+ textarea.form-control {
168
+ height: auto;
268
169
  }
269
170
 
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`.
171
+ // Form groups
272
172
  //
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
- }
173
+ // Designed to help with the organization and spacing of vertical forms. For
174
+ // horizontal forms, use the predefined grid classes.
300
175
 
176
+ .form-group {
177
+ margin-bottom: $form-group-margin-bottom;
178
+ }
301
179
 
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
- }
180
+ .form-text {
181
+ display: block;
182
+ margin-top: $form-text-margin-top;
320
183
  }
321
184
 
322
185
 
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.
186
+ // Form grid
327
187
  //
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;
188
+ // Special replacement for our grid system's `.row` for tighter form layouts.
189
+
190
+ .form-row {
191
+ display: flex;
192
+ flex-wrap: wrap;
193
+ margin-right: -$form-grid-gutter-width / 2;
194
+ margin-left: -$form-grid-gutter-width / 2;
195
+
196
+ > .col,
197
+ > [class*="col-"] {
198
+ padding-right: $form-grid-gutter-width / 2;
199
+ padding-left: $form-grid-gutter-width / 2;
380
200
  }
381
201
  }
382
202
 
383
203
 
384
- // Form control feedback states
204
+ // Checkboxes and radios
385
205
  //
386
- // Apply contextual and semantic states to individual form controls.
206
+ // Indent the labels to position radios/checkboxes as hanging controls.
387
207
 
388
- .has-feedback {
389
- // Enable absolute positioning
208
+ .form-check {
390
209
  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
210
  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;
211
+ padding-left: $form-check-input-gutter;
423
212
  }
424
213
 
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);
214
+ .form-check-input {
215
+ position: absolute;
216
+ margin-top: $form-check-input-margin-y;
217
+ margin-left: -$form-check-input-gutter;
218
+
219
+ &:disabled ~ .form-check-label {
220
+ color: $text-muted;
221
+ }
431
222
  }
432
- .has-error {
433
- @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
223
+
224
+ .form-check-label {
225
+ margin-bottom: 0; // Override default `<label>` bottom margin
434
226
  }
435
227
 
436
- // Reposition feedback icon if input has visible label above
437
- .has-feedback label {
228
+ .form-check-inline {
229
+ display: inline-flex;
230
+ align-items: center;
231
+ padding-left: 0; // Override base .form-check
232
+ margin-right: $form-check-inline-margin-x;
438
233
 
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;
234
+ // Undo .form-check-input defaults and add some `margin-right`.
235
+ .form-check-input {
236
+ position: static;
237
+ margin-top: 0;
238
+ margin-right: $form-check-inline-input-margin-x;
239
+ margin-left: 0;
444
240
  }
445
241
  }
446
242
 
447
243
 
448
- // Help text
244
+ // Form validation
449
245
  //
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
- }
246
+ // Provide feedback to users when form field values are valid or invalid. Works
247
+ // primarily for client-side validation via scoped `:invalid` and `:valid`
248
+ // pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
249
+ // server side validation.
459
250
 
251
+ @include form-validation-state("valid", $form-feedback-valid-color);
252
+ @include form-validation-state("invalid", $form-feedback-invalid-color);
460
253
 
461
254
  // Inline forms
462
255
  //
@@ -466,22 +259,38 @@ input[type="checkbox"] {
466
259
  //
467
260
  // Requires wrapping inputs and labels with `.form-group` for proper display of
468
261
  // 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
262
 
472
- // [converter] extracted from `.form-inline` for libsass compatibility
473
- @mixin form-inline {
263
+ .form-inline {
264
+ display: flex;
265
+ flex-flow: row wrap;
266
+ align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)
267
+
268
+ // Because we use flex, the initial sizing of checkboxes is collapsed and
269
+ // doesn't occupy the full-width (which is what we want for xs grid tier),
270
+ // so we force that here.
271
+ .form-check {
272
+ width: 100%;
273
+ }
474
274
 
475
275
  // Kick in the inline
476
- @media (min-width: $screen-sm-min) {
276
+ @include media-breakpoint-up(sm) {
277
+ label {
278
+ display: flex;
279
+ align-items: center;
280
+ justify-content: center;
281
+ margin-bottom: 0;
282
+ }
283
+
477
284
  // Inline-block all the things for "inline"
478
285
  .form-group {
479
- display: inline-block;
286
+ display: flex;
287
+ flex: 0 0 auto;
288
+ flex-flow: row wrap;
289
+ align-items: center;
480
290
  margin-bottom: 0;
481
- vertical-align: middle;
482
291
  }
483
292
 
484
- // In navbar-form, allow folks to *not* use `.form-group`
293
+ // Allow folks to *not* use `.form-group`
485
294
  .form-control {
486
295
  display: inline-block;
487
296
  width: auto; // Prevent labels from stacking above inputs in `.form-group`
@@ -489,129 +298,37 @@ input[type="checkbox"] {
489
298
  }
490
299
 
491
300
  // Make static controls behave like regular ones
492
- .form-control-static {
301
+ .form-control-plaintext {
493
302
  display: inline-block;
494
303
  }
495
304
 
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;
305
+ .input-group,
306
+ .custom-select {
307
+ width: auto;
515
308
  }
516
309
 
517
310
  // Remove default margin on radios/checkboxes that were used for stacking, and
518
311
  // 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
- }
312
+ .form-check {
313
+ display: flex;
314
+ align-items: center;
315
+ justify-content: center;
316
+ width: auto;
317
+ padding-left: 0;
529
318
  }
530
- .radio input[type="radio"],
531
- .checkbox input[type="checkbox"] {
319
+ .form-check-input {
532
320
  position: relative;
321
+ margin-top: 0;
322
+ margin-right: $form-check-input-margin-x;
533
323
  margin-left: 0;
534
324
  }
535
325
 
536
- // Re-override the feedback icon.
537
- .has-feedback .form-control-feedback {
538
- top: 0;
326
+ .custom-control {
327
+ align-items: center;
328
+ justify-content: center;
539
329
  }
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;
330
+ .custom-control-label {
584
331
  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
332
  }
616
333
  }
617
334
  }