Project

General

Profile

1
$dropify-width:            100% !default;
2
$dropify-height:           200px !default;
3
$dropify-font-family:      "Roboto", "Helvetica Neue", "Helvetica", "Arial" !default;
4
$dropify-font-size:        14px !default;
5
$dropify-line-height:      22px !default;
6
$dropify-text-color:       #727272 !default;
7
$dropify-icon-color:       rgba(0, 0, 0, 0.26) !default;
8
$dropify-background:       #fff !default;
9
$dropify-border-size:      1px !default;
10
$dropify-border-color:     #e0e0e0 !default;
11
$dropify-infos-background: transparentize(#000, 0.3) !default;
12
$dropify-infos-color:      #fff !default;
13
$dropify-clear-color:      #e53935 !default;
14
$dropify-error-color:      #e53935 !default;
15
$dropify-stripes:          #F6F6F6 !default;
16
$dropify-font-path:        "../fonts" !default;
17
$dropify-loader-size:      20px !default;
18
$dropify-loader-border:    1px !default;
19
$dropify-loader-fill:      #CCC !default;
20
$dropify-loader-trace:     #777 !default;
21

    
22

    
23
@import "dropify-font";
24

    
25
.dropify-wrapper {
26
    &,
27
    > * {
28
        box-sizing: border-box;
29
    }
30
    display: block;
31
    position: relative;
32
    cursor: pointer;
33
    overflow: hidden;
34
    width: $dropify-width;
35
    max-width: 100%;
36
    height: $dropify-height;
37
    padding: 0;
38
    font-family: $dropify-font-family;
39
    font-size: $dropify-font-size;
40
    line-height: $dropify-line-height;
41
    color: $dropify-text-color;
42
    background-color: $dropify-background;
43
    background-image: none;
44
    text-align: center;
45
    border: $dropify-border-size solid $dropify-border-color;
46
    box-sizing: border-box;
47
    &:hover {
48
        background-size: 30px 30px;
49
        background-image: linear-gradient(
50
            -45deg,
51
            $dropify-stripes 25%,
52
            transparent      25%,
53
            transparent      50%,
54
            $dropify-stripes 50%,
55
            $dropify-stripes 75%,
56
            transparent      75%,
57
            transparent
58
        );
59
        animation: stripes 2s linear infinite;
60
    }
61
    &.has-preview {
62
        .dropify-clear {
63
            display: block;
64
        }
65
    }
66
    &.has-error {
67
        .dropify-message span.file-icon {
68
            color: $dropify-clear-color;
69
        }
70
        .dropify-message .dropify-error {
71
            display: block;
72
        }
73
    }
74
    &.disabled {
75
        input {
76
            cursor: not-allowed;
77
        }
78
        &:hover {
79
            background-image: none;
80
            animation: none;
81
        }
82
        .dropify-message {
83
            opacity: 0.5;
84
            text-decoration: line-through;
85
        }
86
        .dropify-infos-message {
87
            display: none;
88
        }
89
    }
90
    input {
91
        position: absolute;
92
        top: 0;
93
        right: 0;
94
        bottom: 0;
95
        left: 0;
96
        height: 100%;
97
        width: 100%;
98
        opacity: 0;
99
        cursor: pointer;
100
        z-index: 5;
101
    }
102
    .dropify-message {
103
        position: relative;
104
        top: 50%;
105
        transform: translateY(-50%);
106
        span.file-icon {
107
            //@extend .dropify-font;
108
            //@extend .dropify-font-upload;
109
            font-size: 42px;
110
            color: $dropify-icon-color;
111
        }
112
        p {
113
            margin: 5px 0 0 0;
114
            &.dropify-error {
115
                color: $dropify-error-color;
116
                display: none;
117
            }
118
        }
119
    }
120
    .dropify-clear {
121
        cursor: pointer;
122
        display: none;
123
        position: absolute;
124
        opacity: 0;
125
        z-index: 7;
126
        top: 10px;
127
        right: 10px;
128
        text-transform: uppercase;
129
        font-family: $dropify-font-family;
130
        font-size: 11px;
131
        padding: 6px 12px;
132
        font-weight: bold;
133
        color: #fff !important;
134
        transition: all 0.15s linear;
135
        border: none;
136
        background: $dropify-clear-color;
137
        &:hover {
138
            text-decoration: underline;
139
        }
140
    }
141
    .dropify-preview {
142
        display: none;
143
        position: absolute;
144
        z-index: 1;
145
        background-color: $dropify-background;
146
        padding: 5px;
147
        width: 100%;
148
        height: 100%;
149
        top: 0;
150
        right: 0;
151
        bottom: 0;
152
        left: 0;
153
        overflow: hidden;
154
        text-align: center;
155
        .dropify-render {
156
            img {
157
                top: 50%;
158
                transform: translate(0, -50%);
159
                position: relative;
160
                max-width: 100%;
161
                max-height: 100%;
162
                background-color: $dropify-background;
163
                transition: border-color 0.15s linear;
164
            }
165
            i {
166
                font-size: 70px;
167
                top: 50%;
168
                left: 50%;
169
                transform: translate(-50%, -50%);
170
                position: absolute;
171
                color: #777;
172
            }
173
            .dropify-extension {
174
                position: absolute;
175
                top: 50%;
176
                left: 50%;
177
                transform: translate(-50%, -50%);
178
                margin-top: 10px;
179
                text-transform: uppercase;
180
                font-weight: 900;
181
                letter-spacing: -0.03em;
182
                font-size: 13px;
183
                width: 42px;
184
                white-space: nowrap;
185
                overflow: hidden;
186
                text-overflow: ellipsis;
187
            }
188
        }
189
        .dropify-infos {
190
            position: absolute;
191
            left: 0;
192
            top: 0;
193
            right: 0;
194
            bottom: 0;
195
            z-index: 3;
196
            background: $dropify-infos-background;
197
            opacity: 0;
198
            transition: opacity 0.15s linear;
199
            .dropify-infos-inner {
200
                position: absolute;
201
                top: 50%;
202
                transform: translate(0, -40%);
203
                backface-visibility: hidden;
204
                width: 100%;
205
                padding: 0 20px;
206
                transition: all 0.2s ease;
207
                p {
208
                    padding: 0;
209
                    margin: 0;
210
                    position: relative;
211
                    width: 100%;
212
                    white-space: nowrap;
213
                    overflow: hidden;
214
                    text-overflow: ellipsis;
215
                    color: $dropify-infos-color;
216
                    text-align: center;
217
                    line-height: 25px;
218
                    &.dropify-filename {
219
                        font-weight: bold;
220
                        span.file-icon {
221
                            //@extend .dropify-font;
222
                            //@extend .dropify-font-empty;
223
                            margin-right: 2px;
224
                        }
225
                    }
226
                    &.dropify-infos-message {
227
                        margin-top: 15px;
228
                        padding-top: 15px;
229
                        font-size: 13px;
230
                        position: relative;
231
                        opacity: 0.8;
232
                        &::before {
233
                            content: '';
234
                            position: absolute;
235
                            top: 0;
236
                            left: 50%;
237
                            transform: translate(-50%, 0);
238
                            background: $dropify-infos-color;
239
                            width: 30px;
240
                            height: 2px;
241
                        }
242
                    }
243
                }
244
            }
245
        }
246
    }
247
    &:hover {
248
        .dropify-clear {
249
            opacity: 1;
250
        }
251
        .dropify-preview {
252
            .dropify-infos {
253
                opacity: 1;
254

    
255
                .dropify-infos-inner {
256
                    margin-top: -5px;
257
                }
258
            }
259
        }
260
        &:hover {
261
            .dropify-errors-container {
262
                visibility: visible;
263
                opacity: 1;
264
                transition-delay: 0s;
265
            }
266
        }
267
    }
268
    &.touch-fallback {
269
        height: auto !important;
270
        &:hover {
271
            background-image: none;
272
            animation: none;
273
        }
274
        .dropify-preview {
275
            position: relative;
276
            padding: 0;
277
             .dropify-render {
278
                display: block;
279
                position: relative;
280
                .dropify-font-file {
281
                    position: relative;
282
                    transform: translate(0, 0);
283
                    top: 0;
284
                    left: 0;
285
                    &::before {
286
                        margin-top: 30px;
287
                        margin-bottom: 30px;
288
                    }
289
                }
290
                img {
291
                    position: relative;
292
                    transform: translate(0, 0);
293
                }
294
            }
295
            .dropify-infos {
296
                position: relative;
297
                opacity: 1;
298
                background: transparent;
299
                .dropify-infos-inner {
300
                    position: relative;
301
                    top: 0;
302
                    transform: translate(0, 0);
303
                    padding: 5px 10px;
304
                    box-sizing: border-box;
305
                    p {
306
                        padding: 0;
307
                        margin: 0;
308
                        position: relative;
309
                        width: 100%;
310
                        white-space: nowrap;
311
                        overflow: hidden;
312
                        text-overflow: ellipsis;
313
                        color: $dropify-text-color;
314
                        text-align: left;
315
                        line-height: 20px;
316
                        &.dropify-filename {
317
                            font-weight: bold;
318
                            padding-top: 4px;
319
                            span.file-icon {
320
                                margin-right: 0;
321
                            }
322
                        }
323
                        &.dropify-infos-message {
324
                            margin-top: 0;
325
                            padding-top: 0;
326
                            font-size: 11px;
327
                            position: relative;
328
                            opacity: 1;
329
                            &::before {
330
                                display: none;
331
                            }
332
                        }
333
                    }
334
                }
335
            }
336
        }
337
        .dropify-message {
338
            transform: translate(0, 0);
339
            padding: 40px 0;
340
        }
341
        .dropify-clear {
342
            //top: auto;
343
            //bottom: 23px;
344
            opacity: 1;
345
            border-color: transparentize($dropify-text-color, 0.3);
346
            color: $dropify-text-color;
347
            z-index: 100;
348
        }
349
        &.has-preview {
350
            .dropify-message {
351
                display: none;
352
            }
353
        }
354
        &:hover {
355
            .dropify-preview {
356
                .dropify-infos {
357
                    .dropify-infos-inner {
358
                        margin-top: 0;
359
                    }
360
                }
361
            }
362
        }
363
    }
364

    
365
    .dropify-loader {
366
        position: absolute;
367
        top: 15px;
368
        right: 15px;
369
        display: none;
370
        z-index: 9;
371

    
372
        &::after {
373
            display: block;
374
            position: relative;
375
            width: $dropify-loader-size;
376
            height: $dropify-loader-size;
377
            animation: rotate 0.6s linear infinite;
378
            border-radius: 100%;
379
            border-top: $dropify-loader-border solid $dropify-loader-fill;
380
            border-bottom: $dropify-loader-border solid $dropify-loader-trace;
381
            border-left: $dropify-loader-border solid $dropify-loader-fill;
382
            border-right: $dropify-loader-border solid $dropify-loader-trace;
383
            content: '';
384
        }
385
    }
386

    
387
    .dropify-errors-container {
388
        position: absolute;
389
        left: 0;
390
        top: 0;
391
        right: 0;
392
        bottom: 0;
393
        z-index: 3;
394
        background: transparentize($dropify-error-color, 0.2);
395
        text-align: left;
396
        visibility: hidden;
397
        opacity: 0;
398
        transition: visibility 0s linear 0.15s,opacity 0.15s linear;
399
        ul {
400
            padding: 10px 20px;
401
            margin: 0;
402
            position: absolute;
403
            left: 0;
404
            top: 50%;
405
            transform: translateY(-50%);
406
            li {
407
                margin-left: 40px;
408
                color: #FFF;
409
                font-weight: bold;
410
            }
411
        }
412
        &.visible {
413
            visibility: visible;
414
            opacity: 1;
415
            transition-delay: 0s;
416
        }
417
    }
418
    & ~ .dropify-errors-container {
419
        ul {
420
            padding: 0;
421
            margin: 15px 0;
422

    
423
            li {
424
                margin-left: 20px;
425
                color: $dropify-error-color;
426
                font-weight: bold;
427
            }
428
        }
429
    }
430

    
431
}
432

    
433
@keyframes stripes {
434
  from { background-position: 0 0; }
435
  to   { background-position: 60px 30px; }
436
}
437

    
438
@keyframes rotate {
439
    0% {
440
        transform: rotateZ(-360deg);
441
    }
442
    100% {
443
        transform: rotateZ(0deg);
444
    }
445
}
(2-2/2)