Mercurial > nebulaweb3
comparison default/assets/scss/vendors/bootstrap/_custom-forms.scss @ 0:1d038bc9b3d2 default tip
Up:default
author | Liny <dev@neowd.com> |
---|---|
date | Sat, 31 May 2025 09:21:51 +0800 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1d038bc9b3d2 |
---|---|
1 // scss-lint:disable PropertyCount, VendorPrefix | |
2 | |
3 // Embedded icons from Open Iconic. | |
4 // Released under MIT and copyright 2014 Waybury. | |
5 // https://useiconic.com/open | |
6 | |
7 | |
8 // Checkboxes and radios | |
9 // | |
10 // Base class takes care of all the key behavioral aspects. | |
11 | |
12 .custom-control { | |
13 position: relative; | |
14 display: inline-flex; | |
15 min-height: (1rem * $line-height-base); | |
16 padding-left: $custom-control-gutter; | |
17 margin-right: $custom-control-spacer-x; | |
18 } | |
19 | |
20 .custom-control-input { | |
21 position: absolute; | |
22 z-index: -1; // Put the input behind the label so it doesn't overlay text | |
23 opacity: 0; | |
24 | |
25 &:checked ~ .custom-control-indicator { | |
26 color: $custom-control-indicator-checked-color; | |
27 background-color: $custom-control-indicator-checked-bg; | |
28 @include box-shadow($custom-control-indicator-checked-box-shadow); | |
29 } | |
30 | |
31 &:focus ~ .custom-control-indicator { | |
32 // the mixin is not used here to make sure there is feedback | |
33 box-shadow: $custom-control-indicator-focus-box-shadow; | |
34 } | |
35 | |
36 &:active ~ .custom-control-indicator { | |
37 color: $custom-control-indicator-active-color; | |
38 background-color: $custom-control-indicator-active-bg; | |
39 @include box-shadow($custom-control-indicator-active-box-shadow); | |
40 } | |
41 | |
42 &:disabled { | |
43 ~ .custom-control-indicator { | |
44 background-color: $custom-control-indicator-disabled-bg; | |
45 } | |
46 | |
47 ~ .custom-control-description { | |
48 color: $custom-control-description-disabled-color; | |
49 } | |
50 } | |
51 } | |
52 | |
53 // Custom indicator | |
54 // | |
55 // Generates a shadow element to create our makeshift checkbox/radio background. | |
56 | |
57 .custom-control-indicator { | |
58 position: absolute; | |
59 top: (($line-height-base - $custom-control-indicator-size) / 2); | |
60 left: 0; | |
61 display: block; | |
62 width: $custom-control-indicator-size; | |
63 height: $custom-control-indicator-size; | |
64 pointer-events: none; | |
65 user-select: none; | |
66 background-color: $custom-control-indicator-bg; | |
67 background-repeat: no-repeat; | |
68 background-position: center center; | |
69 background-size: $custom-control-indicator-bg-size; | |
70 @include box-shadow($custom-control-indicator-box-shadow); | |
71 } | |
72 | |
73 // Checkboxes | |
74 // | |
75 // Tweak just a few things for checkboxes. | |
76 | |
77 .custom-checkbox { | |
78 .custom-control-indicator { | |
79 @include border-radius($custom-checkbox-indicator-border-radius); | |
80 } | |
81 | |
82 .custom-control-input:checked ~ .custom-control-indicator { | |
83 background-image: $custom-checkbox-indicator-icon-checked; | |
84 } | |
85 | |
86 .custom-control-input:indeterminate ~ .custom-control-indicator { | |
87 background-color: $custom-checkbox-indicator-indeterminate-bg; | |
88 background-image: $custom-checkbox-indicator-icon-indeterminate; | |
89 @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow); | |
90 } | |
91 } | |
92 | |
93 // Radios | |
94 // | |
95 // Tweak just a few things for radios. | |
96 | |
97 .custom-radio { | |
98 .custom-control-indicator { | |
99 border-radius: $custom-radio-indicator-border-radius; | |
100 } | |
101 | |
102 .custom-control-input:checked ~ .custom-control-indicator { | |
103 background-image: $custom-radio-indicator-icon-checked; | |
104 } | |
105 } | |
106 | |
107 | |
108 // Layout options | |
109 // | |
110 // By default radios and checkboxes are `inline-block` with no additional spacing | |
111 // set. Use these optional classes to tweak the layout. | |
112 | |
113 .custom-controls-stacked { | |
114 display: flex; | |
115 flex-direction: column; | |
116 | |
117 .custom-control { | |
118 margin-bottom: $custom-control-spacer-y; | |
119 | |
120 + .custom-control { | |
121 margin-left: 0; | |
122 } | |
123 } | |
124 } | |
125 | |
126 | |
127 // Select | |
128 // | |
129 // Replaces the browser default select with a custom one, mostly pulled from | |
130 // http://primercss.io. | |
131 // | |
132 | |
133 .custom-select { | |
134 display: inline-block; | |
135 max-width: 100%; | |
136 height: $input-height; | |
137 padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x; | |
138 line-height: $custom-select-line-height; | |
139 color: $custom-select-color; | |
140 vertical-align: middle; | |
141 background: $custom-select-bg $custom-select-indicator no-repeat right $custom-select-padding-x center; | |
142 background-size: $custom-select-bg-size; | |
143 border: $custom-select-border-width solid $custom-select-border-color; | |
144 @if $enable-rounded { | |
145 border-radius: $custom-select-border-radius; | |
146 } @else { | |
147 border-radius: 0; | |
148 } | |
149 appearance: none; | |
150 | |
151 &:focus { | |
152 border-color: $custom-select-focus-border-color; | |
153 outline: none; | |
154 @include box-shadow($custom-select-focus-box-shadow); | |
155 | |
156 &::-ms-value { | |
157 // For visual consistency with other platforms/browsers, | |
158 // supress the default white text on blue background highlight given to | |
159 // the selected option text when the (still closed) <select> receives focus | |
160 // in IE and (under certain conditions) Edge. | |
161 // See https://github.com/twbs/bootstrap/issues/19398. | |
162 color: $input-color; | |
163 background-color: $input-bg; | |
164 } | |
165 } | |
166 | |
167 &:disabled { | |
168 color: $custom-select-disabled-color; | |
169 background-color: $custom-select-disabled-bg; | |
170 } | |
171 | |
172 // Hides the default caret in IE11 | |
173 &::-ms-expand { | |
174 opacity: 0; | |
175 } | |
176 } | |
177 | |
178 .custom-select-sm { | |
179 height: $custom-select-height-sm; | |
180 padding-top: $custom-select-padding-y; | |
181 padding-bottom: $custom-select-padding-y; | |
182 font-size: $custom-select-font-size-sm; | |
183 } | |
184 | |
185 | |
186 // File | |
187 // | |
188 // Custom file input. | |
189 | |
190 .custom-file { | |
191 position: relative; | |
192 display: inline-block; | |
193 max-width: 100%; | |
194 height: $custom-file-height; | |
195 margin-bottom: 0; | |
196 } | |
197 | |
198 .custom-file-input { | |
199 min-width: $custom-file-width; | |
200 max-width: 100%; | |
201 height: $custom-file-height; | |
202 margin: 0; | |
203 opacity: 0; | |
204 | |
205 &:focus ~ .custom-file-control { | |
206 @include box-shadow($custom-file-focus-box-shadow); | |
207 } | |
208 } | |
209 | |
210 .custom-file-control { | |
211 position: absolute; | |
212 top: 0; | |
213 right: 0; | |
214 left: 0; | |
215 z-index: 5; | |
216 height: $custom-file-height; | |
217 padding: $custom-file-padding-x $custom-file-padding-y; | |
218 line-height: $custom-file-line-height; | |
219 color: $custom-file-color; | |
220 pointer-events: none; | |
221 user-select: none; | |
222 background-color: $custom-file-bg; | |
223 border: $custom-file-border-width solid $custom-file-border-color; | |
224 @include border-radius($custom-file-border-radius); | |
225 @include box-shadow($custom-file-box-shadow); | |
226 | |
227 @each $lang, $text in map-get($custom-file-text, placeholder) { | |
228 &:lang(#{$lang}):empty::after { | |
229 content: $text; | |
230 } | |
231 } | |
232 | |
233 &::before { | |
234 position: absolute; | |
235 top: -$custom-file-border-width; | |
236 right: -$custom-file-border-width; | |
237 bottom: -$custom-file-border-width; | |
238 z-index: 6; | |
239 display: block; | |
240 height: $custom-file-height; | |
241 padding: $custom-file-padding-x $custom-file-padding-y; | |
242 line-height: $custom-file-line-height; | |
243 color: $custom-file-button-color; | |
244 background-color: $custom-file-button-bg; | |
245 border: $custom-file-border-width solid $custom-file-border-color; | |
246 @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0); | |
247 } | |
248 | |
249 @each $lang, $text in map-get($custom-file-text, button-label) { | |
250 &:lang(#{$lang})::before { | |
251 content: $text; | |
252 } | |
253 } | |
254 } |