annotate default/assets/scss/vendors/bootstrap/_forms.scss @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
1 // scss-lint:disable QualifyingElement, VendorPrefix
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
2
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
3 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
4 // Textual form controls
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
5 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
6
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
7 .form-control {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
8 display: block;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
9 width: 100%;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10 // // Make inputs at least the height of their button counterpart (base line-height + padding + border)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11 // height: $input-height;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12 padding: $input-btn-padding-y $input-btn-padding-x;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13 font-size: $font-size-base;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 line-height: $input-btn-line-height;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15 color: $input-color;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16 background-color: $input-bg;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17 // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 background-image: none;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19 background-clip: padding-box;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20 border: $input-btn-border-width solid $input-border-color;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22 // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23 @if $enable-rounded {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24 // Manually use the if/else instead of the mixin to account for iOS override
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25 border-radius: $input-border-radius;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26 } @else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27 // Otherwise undo the iOS default
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28 border-radius: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31 @include box-shadow($input-box-shadow);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32 @include transition($input-transition);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34 // Unstyle the caret on `<select>`s in IE10+.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35 &::-ms-expand {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 background-color: transparent;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37 border: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40 // Customize the `:focus` state to imitate native WebKit styles.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41 @include form-control-focus();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43 // Placeholder
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44 &::placeholder {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45 color: $input-placeholder-color;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46 // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 opacity: 1;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50 // Disabled and read-only inputs
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52 // HTML5 says that controls under a fieldset > legend:first-child won't be
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53 // disabled if the fieldset is disabled. Due to implementation difficulty, we
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54 // don't honor that edge case; we style them as disabled anyway.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
55 &:disabled,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
56 &[readonly] {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
57 background-color: $input-disabled-bg;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
58 // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
59 opacity: 1;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
60 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63 select.form-control {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64 &:not([size]):not([multiple]) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65 height: $input-height;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68 &:focus::-ms-value {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
69 // Suppress the nested default white text on blue background highlight given to
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
70 // the selected option text when the (still closed) <select> receives focus
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
71 // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
72 // match the appearance of the native widget.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
73 // See https://github.com/twbs/bootstrap/issues/19398.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
74 color: $input-color;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
75 background-color: $input-bg;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
76 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
77 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
78
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
79 // Make file inputs better match text inputs by forcing them to new lines.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
80 .form-control-file,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
81 .form-control-range {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
82 display: block;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
83 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
84
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
85
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
86 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
87 // Labels
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
88 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
89
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
90 // For use with horizontal and inline forms, when you need the label text to
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
91 // align with the form controls.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
92 .col-form-label {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
93 padding-top: calc(#{$input-btn-padding-y} - #{$input-btn-border-width} * 2);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
94 padding-bottom: calc(#{$input-btn-padding-y} - #{$input-btn-border-width} * 2);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
95 margin-bottom: 0; // Override the `<label>` default
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
96 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
97
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
98 .col-form-label-lg {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
99 padding-top: calc(#{$input-btn-padding-y-lg} - #{$input-btn-border-width} * 2);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
100 padding-bottom: calc(#{$input-btn-padding-y-lg} - #{$input-btn-border-width} * 2);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
101 font-size: $font-size-lg;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
102 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
103
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
104 .col-form-label-sm {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
105 padding-top: calc(#{$input-btn-padding-y-sm} - #{$input-btn-border-width} * 2);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
106 padding-bottom: calc(#{$input-btn-padding-y-sm} - #{$input-btn-border-width} * 2);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
107 font-size: $font-size-sm;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
108 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
109
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
110
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
111 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
112 // Legends
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
113 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
114
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
115 // For use with horizontal and inline forms, when you need the legend text to
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
116 // be the same size as regular labels, and to align with the form controls.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
117 .col-form-legend {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
118 padding-top: $input-btn-padding-y;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
119 padding-bottom: $input-btn-padding-y;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
120 margin-bottom: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
121 font-size: $font-size-base;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
122 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
123
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
124
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
125 // Readonly controls as plain text
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
126 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
127 // Apply class to a readonly input to make it appear like regular plain
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
128 // text (without any border, background color, focus indicator)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
129
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
130 .form-control-plaintext {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
131 padding-top: $input-btn-padding-y;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
132 padding-bottom: $input-btn-padding-y;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
133 margin-bottom: 0; // match inputs if this class comes on inputs with default margins
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
134 line-height: $input-btn-line-height;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
135 border: solid transparent;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
136 border-width: $input-btn-border-width 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
137
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
138 &.form-control-sm,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
139 &.form-control-lg {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
140 padding-right: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
141 padding-left: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
142 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
143 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
144
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
145
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
146 // Form control sizing
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
147 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
148 // Build on `.form-control` with modifier classes to decrease or increase the
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
149 // height and font-size of form controls.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
150 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
151 // The `.form-group-* form-control` variations are sadly duplicated to avoid the
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
152 // issue documented in https://github.com/twbs/bootstrap/issues/15074.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
153
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
154 .form-control-sm {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
155 padding: $input-btn-padding-y-sm $input-btn-padding-x-sm;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
156 font-size: $font-size-sm;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
157 line-height: $input-btn-line-height-sm;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
158 @include border-radius($input-border-radius-sm);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
159 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
160
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
161 select.form-control-sm {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
162 &:not([size]):not([multiple]) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
163 height: $input-height-sm;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
164 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
165 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
166
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
167 .form-control-lg {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
168 padding: $input-btn-padding-y-lg $input-btn-padding-x-lg;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
169 font-size: $font-size-lg;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
170 line-height: $input-btn-line-height-lg;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
171 @include border-radius($input-border-radius-lg);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
172 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
173
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
174 select.form-control-lg {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
175 &:not([size]):not([multiple]) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
176 height: $input-height-lg;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
177 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
178 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
179
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
180
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
181 // Form groups
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
182 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
183 // Designed to help with the organization and spacing of vertical forms. For
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
184 // horizontal forms, use the predefined grid classes.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
185
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
186 .form-group {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
187 margin-bottom: $form-group-margin-bottom;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
188 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
189
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
190 .form-text {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
191 display: block;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
192 margin-top: $form-text-margin-top;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
193 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
194
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
195
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
196 // Form grid
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
197 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
198 // Special replacement for our grid system's `.row` for tighter form layouts.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
199
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
200 .form-row {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
201 display: flex;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
202 flex-wrap: wrap;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
203 margin-right: -5px;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
204 margin-left: -5px;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
205
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
206 > .col,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
207 > [class*="col-"] {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
208 padding-right: 5px;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
209 padding-left: 5px;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
210 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
211 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
212
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
213
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
214 // Checkboxes and radios
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
215 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
216 // Indent the labels to position radios/checkboxes as hanging controls.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
217
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
218 .form-check {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
219 position: relative;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
220 display: block;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
221 margin-bottom: $form-check-margin-bottom;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
222
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
223 &.disabled {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
224 .form-check-label {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
225 color: $text-muted;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
226 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
227 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
228 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
229
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
230 .form-check-label {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
231 padding-left: $form-check-input-gutter;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
232 margin-bottom: 0; // Override default `<label>` bottom margin
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
233 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
234
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
235 .form-check-input {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
236 position: absolute;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
237 margin-top: $form-check-input-margin-y;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
238 margin-left: -$form-check-input-gutter;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
239
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
240 &:only-child {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
241 position: static;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
242 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
243 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
244
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
245 // Radios and checkboxes on same line
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
246 .form-check-inline {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
247 display: inline-block;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
248
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
249 .form-check-label {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
250 vertical-align: middle;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
251 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
252
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
253 + .form-check-inline {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
254 margin-left: $form-check-inline-margin-x;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
255 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
256 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
257
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
258
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
259 // Form validation
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
260 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
261 // Provide feedback to users when form field values are valid or invalid. Works
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
262 // primarily for client-side validation via scoped `:invalid` and `:valid`
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
263 // pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
264 // server side validation.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
265
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
266 .invalid-feedback {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
267 display: none;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
268 margin-top: .25rem;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
269 font-size: .875rem;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
270 color: $form-feedback-invalid-color;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
271 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
272
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
273 .invalid-tooltip {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
274 position: absolute;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
275 top: 100%;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
276 z-index: 5;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
277 display: none;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
278 width: 250px;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
279 padding: .5rem;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
280 margin-top: .1rem;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
281 font-size: .875rem;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
282 line-height: 1;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
283 color: #fff;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
284 background-color: rgba($form-feedback-invalid-color,.8);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
285 border-radius: .2rem;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
286 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
287
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
288 @include form-validation-state("valid", $form-feedback-valid-color);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
289 @include form-validation-state("invalid", $form-feedback-invalid-color);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
290
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
291 // Inline forms
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
292 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
293 // Make forms appear inline(-block) by adding the `.form-inline` class. Inline
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
294 // forms begin stacked on extra small (mobile) devices and then go inline when
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
295 // viewports reach <768px.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
296 //
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
297 // Requires wrapping inputs and labels with `.form-group` for proper display of
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
298 // default HTML form controls and our custom form controls (e.g., input groups).
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
299
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
300 .form-inline {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
301 display: flex;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
302 flex-flow: row wrap;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
303 align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
304
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
305 // Because we use flex, the initial sizing of checkboxes is collapsed and
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
306 // doesn't occupy the full-width (which is what we want for xs grid tier),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
307 // so we force that here.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
308 .form-check {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
309 width: 100%;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
310 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
311
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
312 // Kick in the inline
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
313 @include media-breakpoint-up(sm) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
314 label {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
315 display: flex;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
316 align-items: center;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
317 justify-content: center;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
318 margin-bottom: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
319 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
320
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
321 // Inline-block all the things for "inline"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
322 .form-group {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
323 display: flex;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
324 flex: 0 0 auto;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
325 flex-flow: row wrap;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
326 align-items: center;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
327 margin-bottom: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
328 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
329
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
330 // Allow folks to *not* use `.form-group`
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
331 .form-control {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
332 display: inline-block;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
333 width: auto; // Prevent labels from stacking above inputs in `.form-group`
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
334 vertical-align: middle;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
335 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
336
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
337 // Make static controls behave like regular ones
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
338 .form-control-plaintext {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
339 display: inline-block;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
340 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
341
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
342 .input-group {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
343 width: auto;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
344 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
345
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
346 .form-control-label {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
347 margin-bottom: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
348 vertical-align: middle;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
349 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
350
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
351 // Remove default margin on radios/checkboxes that were used for stacking, and
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
352 // then undo the floating of radios and checkboxes to match.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
353 .form-check {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
354 display: flex;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
355 align-items: center;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
356 justify-content: center;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
357 width: auto;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
358 margin-top: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
359 margin-bottom: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
360 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
361 .form-check-label {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
362 padding-left: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
363 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
364 .form-check-input {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
365 position: relative;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
366 margin-top: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
367 margin-right: $form-check-input-margin-x;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
368 margin-left: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
369 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
370
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
371 // Custom form controls
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
372 .custom-control {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
373 display: flex;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
374 align-items: center;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
375 justify-content: center;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
376 padding-left: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
377 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
378 .custom-control-indicator {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
379 position: static;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
380 display: inline-block;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
381 margin-right: $form-check-input-margin-x; // Flexbox alignment means we lose our HTML space here, so we compensate.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
382 vertical-align: text-bottom;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
383 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
384
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
385 // Re-override the feedback icon.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
386 .has-feedback .form-control-feedback {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
387 top: 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
388 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
389 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
390 }