UNPKG

17.6 kBSCSSView Raw
1@charset "UTF-8";
2
3@import "../core/index-noreset.scss";
4@import "scss/variable";
5@import "./rtl.scss";
6
7
8#{$upload-prefix} {
9 @include box-sizing;
10
11 &-inner {
12 &.#{$css-prefix}hidden {
13 display: none;
14 }
15 outline: 0;
16 display: inline-block;
17 }
18
19 &-list {
20 overflow: hidden;
21 @include box-sizing;
22 }
23
24 &-list-item {
25 position: relative;
26 &.#{$css-prefix}hidden {
27 display: none;
28 }
29 }
30
31 &-list-item-name {
32 text-decoration: none;
33 }
34
35 &.#{$css-prefix}disabled {
36 border-color: $upload-disable-border-color !important;
37 color: $upload-disable-text-color !important;
38
39 .#{$css-prefix}icon-close {
40 cursor: not-allowed !important;
41 }
42
43 #{$upload-prefix}-inner * {
44 color: $upload-disable-text-color !important;
45 border-color: $upload-disable-border-color !important;
46 cursor: not-allowed !important;
47 }
48 }
49}
50
51#{$upload-prefix}-list-text {
52 #{$upload-prefix}-list-item {
53 background-color: $upload-text-list-bg-color;
54 // top-bottom s-1 left $upload-text-list-padding-left-right
55 padding: $s-1 $upload-text-list-padding-left-right;
56 // righrt: icon size + icon paddinng left-right
57 padding-right: calc(#{$upload-text-list-close-icon-right} * 2 + #{$upload-text-list-close-icon-size});
58 height: $upload-text-list-height;
59 // line-height = height - padding-top-bottom
60 line-height: calc(#{$upload-text-list-height} - #{$s-2});
61 font-size: $upload-text-list-font-size;
62 overflow: hidden;
63 transition: all $motion-duration-immediately $motion-linear;
64 border-radius: $upload-text-list-corner;
65
66 &:not(:last-child) {
67 margin-bottom: 4px;
68 }
69
70 &-op {
71 position: absolute;
72 top: 0;
73 right: $upload-text-list-close-icon-right;
74 }
75
76 .#{$css-prefix}icon-close {
77 color: $upload-text-list-close-icon-color;
78 cursor: pointer;
79 text-align: center;
80 transition: all $motion-duration-immediately $motion-linear;
81 line-height: $upload-text-list-height;
82 @include icon-size($upload-text-list-close-icon-size);
83 }
84
85 &:hover {
86 background-color: $upload-text-list-bg-color-hover;
87 .#{$css-prefix}icon {
88 color: $upload-text-list-close-icon-color-hover;
89 }
90 }
91 &-name-wrap {
92 text-overflow: ellipsis;
93 white-space: nowrap;
94 overflow: hidden;
95 margin-right: 4px;
96 }
97 &-name {
98 color: $upload-text-list-name-font-color;
99 transition: all $motion-duration-immediately $motion-linear;
100 }
101
102 &-size {
103 color: $upload-text-list-size-font-color;
104 margin-left: 8px;
105 }
106 &-uploading {
107 // uploading state, two line display
108 // so line-height = height / 2 - padding-top;
109 line-height: calc(#{$upload-text-list-height} / 2 - #{$s-1});
110 .#{$css-prefix}upload-list-item-progress {
111 line-height: 0;
112 padding-top: calc((#{$upload-text-list-height} / 2 - #{$s-1} - #{$upload-text-list-progressbar-height}) / 2);
113 padding-bottom: calc((#{$upload-text-list-height} / 2 - #{$s-1} - #{$upload-text-list-progressbar-height}) / 2);
114 .#{$css-prefix}progress-line-underlay {
115 height: $upload-text-list-progressbar-height;
116 }
117 .#{$css-prefix}progress-line-overlay {
118 height: $upload-text-list-progressbar-height;
119 margin-top: calc(0px - (#{$upload-text-list-progressbar-height} / 2));
120 }
121 }
122 }
123 &-done {
124 // 行高 = 高度 - 上下padding
125 line-height: calc(#{$upload-text-list-height} - #{$s-2});
126 }
127 &-done:hover .#{$css-prefix}upload-list-item-name {
128 color: $upload-text-list-name-font-color-hover;
129 }
130 &-done:hover .#{$css-prefix}upload-list-item-size {
131 color: $upload-text-list-size-font-color-hover;
132 }
133 &-error {
134 /* stylelint-disable declaration-no-important */
135 background-color: $upload-text-list-bg-color-error !important;
136 &#{$upload-prefix}-list-item-error-with-msg {
137 // error state with error msg, we need they are display at two line
138 // so line-height = height / 2 - padding-top;
139 line-height: calc(#{$upload-text-list-height} / 2 - #{$s-1});
140 }
141 &-msg {
142 text-overflow: ellipsis;
143 white-space: nowrap;
144 overflow: hidden;
145 color: $upload-text-list-error-text-color;
146 }
147 }
148 }
149}
150
151#{$upload-prefix}-list-image {
152 .#{$css-prefix}upload-list-item {
153 box-sizing: content-box;
154 border: $upload-image-list-item-border-width solid $upload-image-list-item-border-color;
155 background-color: $upload-image-list-item-bg-color;
156 padding: $upload-image-list-item-padding;
157 height: $upload-image-list-item-picture-size;
158 line-height: $upload-image-list-item-picture-size;
159 font-size: $upload-image-list-item-font-size;
160 transition: all $motion-duration-immediately $motion-linear;
161 overflow: hidden;
162 border-radius: $upload-card-list-corner;
163
164 &:not(:last-child) {
165 margin-bottom: 4px;
166 }
167 @include clearfix();
168
169 &-op {
170 float: right;
171 margin-right: 4px;
172 }
173
174 .#{$css-prefix}icon-close {
175 cursor: pointer;
176 color: $upload-image-list-close-icon-color;
177 text-align: center;
178
179 @include icon-size($upload-image-list-close-icon-size);
180 }
181
182 &:hover {
183 border-color: $upload-image-list-item-border-color-hover;
184
185 .#{$css-prefix}icon-close {
186 color: $upload-image-list-close-icon-color-hover;
187 }
188 }
189
190 &-name {
191 display: block;
192 color: $upload-text-list-name-font-color;
193 // leave spaces for thumbnail
194 margin-left: calc(#{$upload-image-list-item-picture-size} + #{$upload-image-list-item-padding});
195 // leave spaces for close icon
196 margin-right: calc(#{$upload-image-list-close-icon-size} + #{$upload-image-list-close-icon-right} * 2);
197 text-overflow: ellipsis;
198 white-space: nowrap;
199 overflow: hidden;
200 transition: all $motion-duration-immediately $motion-linear;
201 }
202
203 &-size {
204 color: $upload-text-list-size-font-color;
205 margin-left: 8px;
206 }
207
208 &-done:hover .#{$css-prefix}upload-list-item-name {
209 color: $upload-text-list-name-font-color-hover;
210 }
211 &-done:hover .#{$css-prefix}upload-list-item-size {
212 color: $upload-text-list-size-font-color-hover;
213 }
214
215 $thumbnail-margin-right: $s-2 !default;
216 @if (get-compiling-value($upload-image-list-item-padding) > get-compiling-value($s-2)) {
217 $thumbnail-margin-right: $upload-image-list-item-padding;
218 }
219 &-thumbnail {
220 float: left;
221 width: $upload-image-list-item-picture-size;
222 height: $upload-image-list-item-picture-size;
223 color: $upload-image-list-item-thumbnail-font-color;
224 border: $upload-image-list-item-picture-border-width solid $upload-image-list-item-picture-border-color;
225 border-radius: $upload-image-list-item-picture-corner;
226 background-color: $upload-image-list-item-picture-background-color;
227 margin-right: $thumbnail-margin-right;
228 vertical-align: middle;
229 text-align: center;
230 overflow: hidden;
231 box-sizing: border-box;
232
233 img {
234 width: 100%;
235 height: 100%;
236 }
237
238 .#{$css-prefix}icon {
239 display: block;
240 margin: 0;
241 line-height: $upload-image-list-item-picture-size;
242
243 @include icon-size($upload-image-list-item-picture-icon-size);
244 }
245 }
246
247 &-error {
248 border-color: $upload-image-list-item-border-color-error !important;
249 background-color: $upload-image-list-item-error-bg-color;
250 }
251
252 &-uploading {
253 background-color: $upload-image-list-item-uploading-bg-color;
254 #{$upload-prefix}-list-item-name {
255 height: calc(#{$upload-image-list-item-picture-size} / 2);
256 line-height: calc(#{$upload-image-list-item-picture-size} / 2);
257 }
258 #{$upload-prefix}-list-item-progress {
259 // 左边 把 thumbnail 的空间空出来
260 margin-left: calc(#{$upload-image-list-item-picture-size} + #{$thumbnail-margin-right});
261 // 右边边 把 icon 的空间空出来
262 margin-right: calc(#{$upload-image-list-close-icon-size} + #{$upload-image-list-close-icon-right} * 2);
263 line-height: 0;
264 padding-top: calc((#{$upload-image-list-item-picture-size} / 2 - #{$upload-image-list-progressbar-height}) / 2);
265 padding-bottom: calc((#{$upload-image-list-item-picture-size} / 2 - #{$upload-image-list-progressbar-height}) / 2);
266
267 .#{$css-prefix}progress-line-underlay {
268 height: $upload-image-list-progressbar-height;
269 }
270 .#{$css-prefix}progress-line-overlay {
271 height: $upload-image-list-progressbar-height;
272 margin-top: calc(0px - (#{$upload-image-list-progressbar-height} / 2));
273 }
274 }
275 }
276 &-error-with-msg {
277 #{$upload-prefix}-list-item-name,
278 #{$upload-prefix}-list-item-error-msg {
279 height: calc(#{$upload-image-list-item-picture-size} / 2);
280 line-height: calc(#{$upload-image-list-item-picture-size} / 2);
281 }
282 #{$upload-prefix}-list-item-error-msg {
283 // 左边 把 thumbnail 的空间空出来
284 margin-left: calc(#{$upload-image-list-item-picture-size} + #{$thumbnail-margin-right});
285 // 右边边 把 icon 的空间空出来
286 margin-right: calc(#{$upload-image-list-close-icon-size} + #{$upload-image-list-close-icon-right} * 2);
287 color: $upload-text-list-error-text-color;
288 text-overflow: ellipsis;
289 white-space: nowrap;
290 overflow: hidden;
291 }
292 }
293 }
294}
295
296#{$upload-prefix}-list-card {
297 display: inline-block;
298 .#{$css-prefix}upload-list-item {
299 vertical-align: middle;
300 float: left;
301
302 &:not(:last-child) {
303 margin-right: $upload-card-list-margin-right;
304 }
305
306 &-wrapper {
307 position: relative;
308 border: 1px solid $upload-card-list-border-color;
309 width: $upload-card-size;
310 height: $upload-card-size;
311 padding: $upload-card-list-padding;
312 background-color: $upload-card-list-bg-color;
313 border-radius: $upload-card-border-radius;
314 overflow: hidden;
315 }
316
317 &-thumbnail {
318 text-align: center;
319 width: 100%;
320 height: 100%;
321 color: $upload-card-list-thumbnail-font-color;
322 font-size: $upload-card-list-thumbnail-font-size;
323
324 img {
325 max-width: 100%;
326 max-height: 100%;
327 position: absolute;
328 top: 0;
329 right: 0;
330 bottom: 0;
331 left: 0;
332 margin: auto;
333
334 &:focus {
335 outline: 0;
336 }
337 }
338
339 .#{$css-prefix}icon {
340 width: 100%;
341 @include icon-size($upload-card-list-thumbnail-icon-size);
342 }
343 }
344
345 &-handler {
346 margin-top: calc((#{$upload-card-size} - 74px) / 2);
347 .#{$css-prefix}icon-cry {
348 margin-top: 10px;
349 }
350 }
351
352 &-name {
353 display: block;
354 width: $upload-card-size;
355 text-align: center;
356 margin-top: $upload-card-list-name-margin-top;
357 font-size: $upload-card-list-name-font-size;
358 color: $upload-card-list-name-font-color;
359 text-overflow: ellipsis;
360 white-space: nowrap;
361 overflow: hidden;
362 }
363
364 &-progress {
365 position: absolute;
366 font-size: 0;
367 bottom: 0;
368 left: 0;
369 width: 100%;
370 .#{$css-prefix}progress-line-underlay {
371 border-radius: 0;
372 height: $upload-card-list-progressbar-height;
373 }
374 .#{$css-prefix}progress-line-overlay {
375 border-radius: 0;
376 height: $upload-card-list-progressbar-height;
377 margin-top: calc((0px - #{($upload-card-list-progressbar-height)} / 2));
378 }
379 }
380
381 &-uploading .#{$css-prefix}upload-list-item-wrapper {
382 background-color: $upload-card-list-uploading-bg-color;
383 }
384
385 &:hover {
386 .#{$css-prefix}upload-tool {
387 opacity: .8;
388 }
389 }
390
391 .#{$css-prefix}upload-tool {
392 position: absolute;
393 z-index: 1;
394 background-color: rgba(get-compiling-value($upload-select-card-tool-bg-color), $upload-select-card-tool-bg-opacity);
395 transition: all $motion-duration-immediately $motion-linear;
396 opacity: 0;
397 width: 100%;
398 height: $upload-select-card-tool-height;
399 left: 0;
400 bottom: 0;
401 display: flex;
402
403 .#{$css-prefix}icon {
404 line-height: $upload-select-card-tool-height;
405 color: $color-white;
406 @include icon-size($upload-select-card-tool-icon-size);
407 cursor: pointer;
408 }
409
410 &-item {
411 width: 100%;
412 text-align: center;
413
414 &:not(:last-child) {
415 border-right: 1px solid $color-white;
416 }
417 }
418
419 &-reupload {
420 display: inline-block;
421 }
422 }
423
424 #{$upload-prefix}-card {
425 display: flex;
426 flex-direction: column;
427 justify-content: center;
428 }
429
430 &-error .#{$css-prefix}upload-list-item-wrapper {
431 border-color: $upload-card-list-border-color-error;
432 }
433 }
434
435 &#{$upload-prefix}-ie9 .#{$css-prefix}upload-tool {
436 display: table;
437 &-item {
438 display: table-cell;
439 width: 1%;
440 }
441 }
442 &#{$upload-prefix}-ie9 #{$upload-prefix}-card {
443 display: table-cell;
444 }
445}
446
447#{$upload-prefix}-card {
448 border: 1px $upload-card-border-style $upload-card-border-color;
449 width: $upload-card-size;
450 height: $upload-card-size;
451 background-color: $upload-card-bg-color;
452 text-align: center;
453 cursor: pointer;
454 transition: border-color $motion-duration-immediately $motion-linear;
455 display: table-cell;
456 vertical-align: middle;
457 border-radius: $upload-card-border-radius;
458
459 .#{$css-prefix}icon {
460 color: $upload-card-icon-color;
461 @include icon-size($upload-card-add-icon-size);
462 }
463
464 .#{$css-prefix}upload-add-icon {
465 &::before {
466 content: $upload-card-add-icon;
467 }
468 }
469
470 .#{$css-prefix}upload-text {
471 font-size: $upload-card-add-text-size;
472 margin-top: $upload-card-add-text-margin-top;
473 color: $upload-card-font-color;
474 outline: none;
475 }
476
477 &:hover {
478 border-color: $upload-card-hover-border-color;
479 .#{$css-prefix}icon {
480 color: $upload-card-hover-font-color;
481 }
482 .#{$css-prefix}upload-text {
483 color: $upload-card-hover-font-color;
484 }
485 }
486}
487
488#{$upload-prefix}-dragable {
489 #{$upload-prefix}-inner {
490 display: block;
491 }
492
493 #{$upload-prefix}-drag {
494 border: 1px dashed $upload-drag-zone-border-color;
495 transition: border-color $motion-duration-immediately $motion-linear;
496 cursor: pointer;
497 border-radius: $upload-drag-zone-corner;
498 background-color: $upload-drag-zone-bg-color;
499 text-align: center;
500 margin-bottom: $s-1;
501
502 &-icon {
503 margin: $s-5 0 0;
504 color: $upload-drag-zone-upload-icon-color;
505
506 #{$upload-prefix}-drag-upload-icon::before {
507 content: $upload-drag-zone-upload-icon;
508 font-size: $upload-drag-zone-icon-size;
509 }
510 }
511
512 &-text {
513 margin: $s-3 0 0;
514 font-size: $upload-drag-zone-font-size;
515 color: $upload-drag-zone-upload-normal-title-color;
516 }
517 &-hint {
518 margin: $s-1 0 $s-5;
519 font-size: $upload-drag-zone-hint-font-size;
520 color: $upload-drag-zone-upload-normal-hint-color;
521 }
522 &-over {
523 border-color: $upload-drag-zone-over-border-color;
524 }
525 }
526}
527