apx-docs-theme 0.1.7 → 0.1.15

Sign up to get free protection for your applications and to get access to all the features.
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
  }