react-ui-basics 0.0.212 → 0.0.214

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/Animated.js +2 -6
  2. package/Animated.js.map +1 -1
  3. package/AutocompleteSelect.js +1 -5
  4. package/AutocompleteSelect.js.map +1 -1
  5. package/Button.js +1 -15
  6. package/Button.js.map +1 -1
  7. package/CalendarMonthView.d.ts +0 -1
  8. package/Checkbox.d.ts +2 -2
  9. package/CircleProgress.d.ts +0 -1
  10. package/Dialog.js +1 -13
  11. package/Dialog.js.map +1 -1
  12. package/DropFileInput.d.ts +2 -2
  13. package/Dropzone.d.ts +18 -0
  14. package/Dropzone.js +70 -119
  15. package/Dropzone.js.map +1 -1
  16. package/FormUploadProgress.js +1 -12
  17. package/FormUploadProgress.js.map +1 -1
  18. package/ImageGallery.js +7 -7
  19. package/ImageGallery.js.map +1 -1
  20. package/MaterialIcon.d.ts +0 -1
  21. package/Modal.js +1 -8
  22. package/Modal.js.map +1 -1
  23. package/Scrollable.js +2 -14
  24. package/Scrollable.js.map +1 -1
  25. package/Size.d.ts +0 -1
  26. package/SpinningProgress.d.ts +0 -1
  27. package/TextField.js +1 -23
  28. package/TextField.js.map +1 -1
  29. package/bundle.css +857 -857
  30. package/package.json +3 -1
  31. package/router/Link.js +1 -6
  32. package/router/Link.js.map +1 -1
  33. package/router/NavLink.js +0 -3
  34. package/router/NavLink.js.map +1 -1
  35. package/router/Route.js +1 -8
  36. package/router/Route.js.map +1 -1
  37. package/src/Checkbox.tsx +2 -2
  38. package/src/DropFileInput.tsx +1 -1
  39. package/src/{Dropzone.js → Dropzone.tsx} +33 -33
  40. package/src/store/{ProxyTools.test.js → ProxyTools.test.ts} +1 -1
  41. package/src/store/Store.test.js +86 -0
  42. package/src/store/Store.ts +30 -18
  43. package/store/ProxyTools.test.d.ts +1 -0
  44. package/store/Store.d.ts +2 -1
  45. package/store/Store.js +28 -14
  46. package/store/Store.js.map +1 -1
package/bundle.css CHANGED
@@ -1,3 +1,178 @@
1
+ .animated {
2
+ transition: opacity 250ms ease;
3
+ opacity: 0;
4
+ }
5
+
6
+ .animated.mounting, .animated.mounted {
7
+ opacity: 1;
8
+ }
9
+
10
+ .Button {
11
+ position: relative;
12
+ min-width: 64px;
13
+ min-height: 36px;
14
+ height: 24px;
15
+ margin: 0px;
16
+ padding: 0px 16px;
17
+ border: none;
18
+ outline: none;
19
+ font-size: 14px;
20
+ font-weight: 500;
21
+ letter-spacing: 1.25px;
22
+ background: #dfdfdf;
23
+ text-transform: uppercase;
24
+ font-family: Roboto, sans-serif;
25
+ -webkit-tap-highlight-color: transparent;
26
+ display: inline-flex;
27
+ justify-content: center;
28
+ align-items: center;
29
+ cursor: pointer;
30
+ overflow: hidden;
31
+ user-select: none;
32
+ border-radius: 3px;
33
+ transition: all 0.2s ease;
34
+ }
35
+
36
+ .Button.flat {
37
+ background-color: transparent;
38
+ }
39
+
40
+ .Button.flat:hover {
41
+ background-color: rgba(0, 0, 0, 0.05);
42
+ }
43
+
44
+ .Button.green {
45
+ background-color: #43a047;
46
+ color: white;
47
+ }
48
+
49
+ .Button.green:hover {
50
+ background-color: #3b8e3f;
51
+ }
52
+
53
+ .Button.blue {
54
+ background-color: #039be5;
55
+ color: white;
56
+ }
57
+
58
+ .Button.blue:hover {
59
+ background-color: #038acc;
60
+ }
61
+
62
+ .Button.red {
63
+ background-color: #e53935;
64
+ color: white;
65
+ }
66
+
67
+ .Button.red:hover {
68
+ background-color: #e2231e;
69
+ }
70
+
71
+ .Button.black {
72
+ background-color: #1e252d;
73
+ color: white;
74
+ }
75
+
76
+ .Button.black:hover {
77
+ background-color: #14181e;
78
+ }
79
+
80
+ .Button.gray {
81
+ background: #D9D9D9;
82
+ color: #999999;
83
+ }
84
+
85
+ .Button.gray:hover {
86
+ background-color: #cccccc;
87
+ }
88
+
89
+ .Button.small {
90
+ padding: 0px 8px;
91
+ min-height: 16px;
92
+ min-width: 16px;
93
+ }
94
+
95
+ .Button > .material-icons {
96
+ margin-right: 10px;
97
+ }
98
+
99
+ .Button.round {
100
+ padding: 0px;
101
+ min-width: 36px;
102
+ border-radius: 50%;
103
+ }
104
+
105
+ .Button.round > .material-icons {
106
+ margin: 0px;
107
+ }
108
+
109
+ .Button .ripple {
110
+ position: absolute;
111
+ background: rgba(0, 0, 0, 0.1);
112
+ border-radius: 100%;
113
+ transform: scale(0);
114
+ pointer-events: none;
115
+ transition: opacity 0.2s ease-out;
116
+ }
117
+
118
+ .Button .ripple.show {
119
+ animation: ripple 0.35s ease-out;
120
+ }
121
+
122
+ .Button:active .ripple.showed {
123
+ opacity: 1;
124
+ }
125
+
126
+ .Button:focus .ripple.focused {
127
+ opacity: 1;
128
+ transition: opacity 0.2s ease-out, transform 0.2s ease-out;
129
+ transform: scale(1);
130
+ animation: resize 1.25s ease-out infinite;
131
+ animation-delay: 0.2s;
132
+ animation-direction: alternate;
133
+ }
134
+
135
+ .Button .ripple.showed {
136
+ transform: scale(2);
137
+ opacity: 0;
138
+ }
139
+
140
+ @keyframes ripple {
141
+ to {
142
+ transform: scale(2);
143
+ }
144
+ }
145
+ @keyframes resize {
146
+ to {
147
+ transform: scale(0.9);
148
+ }
149
+ }
150
+ .Button.raised {
151
+ transition: color 0.2s ease-out, background-color 0.2s ease-out, box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
152
+ }
153
+
154
+ .Button.raised:hover {
155
+ box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.25);
156
+ }
157
+
158
+ .Button.raised:active {
159
+ box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.35);
160
+ }
161
+
162
+ .Button.disabled {
163
+ box-shadow: none;
164
+ background: #D9D9D9;
165
+ color: #999999;
166
+ }
167
+
168
+ .Button.disabled:hover {
169
+ background-color: #cccccc;
170
+ }
171
+
172
+ .Button::-moz-focus-inner {
173
+ border: 0;
174
+ }
175
+
1
176
  .AutocompleteSelect {
2
177
  display: inline-flex;
3
178
  flex-flow: column;
@@ -293,294 +468,59 @@
293
468
  position: absolute;
294
469
  }
295
470
 
296
- .Button {
471
+ .FilteredList {
472
+ max-height: 250px;
297
473
  position: relative;
298
- min-width: 64px;
299
- min-height: 36px;
300
- height: 24px;
301
- margin: 0px;
302
- padding: 0px 16px;
303
- border: none;
304
- outline: none;
305
- font-size: 14px;
306
- font-weight: 500;
307
- letter-spacing: 1.25px;
308
- background: #dfdfdf;
309
- text-transform: uppercase;
310
- font-family: Roboto, sans-serif;
311
- -webkit-tap-highlight-color: transparent;
312
- display: inline-flex;
313
- justify-content: center;
314
- align-items: center;
315
- cursor: pointer;
316
- overflow: hidden;
317
- user-select: none;
318
- border-radius: 3px;
319
- transition: all 0.2s ease;
320
474
  }
321
475
 
322
- .Button.flat {
323
- background-color: transparent;
476
+ .FilteredList.popup {
477
+ padding: 0;
478
+ visibility: hidden;
479
+ position: absolute;
480
+ background: white;
481
+ z-index: 4;
482
+ box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
483
+ transition: all 0.2s ease-out;
484
+ top: calc(100% + 4px);
485
+ opacity: 0;
486
+ border-radius: 2px;
324
487
  }
325
488
 
326
- .Button.flat:hover {
327
- background-color: rgba(0, 0, 0, 0.05);
489
+ .FilteredList.popup.visible {
490
+ opacity: 1;
491
+ visibility: visible;
328
492
  }
329
493
 
330
- .Button.green {
331
- background-color: #43a047;
332
- color: white;
494
+ .FilteredList.portal {
495
+ transition: opacity 0.2s ease-out;
333
496
  }
334
497
 
335
- .Button.green:hover {
336
- background-color: #3b8e3f;
498
+ .FilteredList.inline {
499
+ max-height: 225px;
500
+ margin-top: 5px;
337
501
  }
338
502
 
339
- .Button.blue {
340
- background-color: #039be5;
341
- color: white;
503
+ .FilteredList .child {
504
+ display: flex;
505
+ flex-flow: row nowrap;
506
+ align-items: center;
507
+ white-space: nowrap;
508
+ font-size: 14px;
509
+ color: rgb(34, 34, 34);
510
+ height: 30px;
511
+ padding: 5px 10px;
512
+ padding-right: 15px;
513
+ cursor: pointer;
514
+ overflow: hidden;
515
+ transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
516
+ border-left: 5px solid #4AC263;
517
+ padding-left: 15px;
518
+ margin-left: -5px;
342
519
  }
343
520
 
344
- .Button.blue:hover {
345
- background-color: #038acc;
346
- }
347
-
348
- .Button.red {
349
- background-color: #e53935;
350
- color: white;
351
- }
352
-
353
- .Button.red:hover {
354
- background-color: #e2231e;
355
- }
356
-
357
- .Button.black {
358
- background-color: #1e252d;
359
- color: white;
360
- }
361
-
362
- .Button.black:hover {
363
- background-color: #14181e;
364
- }
365
-
366
- .Button.gray {
367
- background: #D9D9D9;
368
- color: #999999;
369
- }
370
-
371
- .Button.gray:hover {
372
- background-color: #cccccc;
373
- }
374
-
375
- .Button.small {
376
- padding: 0px 8px;
377
- min-height: 16px;
378
- min-width: 16px;
379
- }
380
-
381
- .Button > .material-icons {
382
- margin-right: 10px;
383
- }
384
-
385
- .Button.round {
386
- padding: 0px;
387
- min-width: 36px;
388
- border-radius: 50%;
389
- }
390
-
391
- .Button.round > .material-icons {
392
- margin: 0px;
393
- }
394
-
395
- .Button .ripple {
396
- position: absolute;
397
- background: rgba(0, 0, 0, 0.1);
398
- border-radius: 100%;
399
- transform: scale(0);
400
- pointer-events: none;
401
- transition: opacity 0.2s ease-out;
402
- }
403
-
404
- .Button .ripple.show {
405
- animation: ripple 0.35s ease-out;
406
- }
407
-
408
- .Button:active .ripple.showed {
409
- opacity: 1;
410
- }
411
-
412
- .Button:focus .ripple.focused {
413
- opacity: 1;
414
- transition: opacity 0.2s ease-out, transform 0.2s ease-out;
415
- transform: scale(1);
416
- animation: resize 1.25s ease-out infinite;
417
- animation-delay: 0.2s;
418
- animation-direction: alternate;
419
- }
420
-
421
- .Button .ripple.showed {
422
- transform: scale(2);
423
- opacity: 0;
424
- }
425
-
426
- @keyframes ripple {
427
- to {
428
- transform: scale(2);
429
- }
430
- }
431
- @keyframes resize {
432
- to {
433
- transform: scale(0.9);
434
- }
435
- }
436
- .Button.raised {
437
- transition: color 0.2s ease-out, background-color 0.2s ease-out, box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
438
- }
439
-
440
- .Button.raised:hover {
441
- box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.25);
442
- }
443
-
444
- .Button.raised:active {
445
- box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.35);
446
- }
447
-
448
- .Button.disabled {
449
- box-shadow: none;
450
- background: #D9D9D9;
451
- color: #999999;
452
- }
453
-
454
- .Button.disabled:hover {
455
- background-color: #cccccc;
456
- }
457
-
458
- .Button::-moz-focus-inner {
459
- border: 0;
460
- }
461
-
462
- .animated {
463
- transition: opacity 250ms ease;
464
- opacity: 0;
465
- }
466
-
467
- .animated.mounting, .animated.mounted {
468
- opacity: 1;
469
- }
470
-
471
- .Dropzone {
472
- position: relative;
473
- }
474
-
475
- .Dropzone > .overlay {
476
- position: absolute;
477
- left: 0;
478
- right: 0;
479
- top: 0;
480
- bottom: 0;
481
- background-color: #38ADC4;
482
- z-index: 1;
483
- opacity: 0;
484
- transition: all 0.2s ease;
485
- transition-delay: 100ms;
486
- visibility: hidden;
487
- display: flex;
488
- justify-content: center;
489
- align-items: center;
490
- }
491
-
492
- .Dropzone > .overlay .drop {
493
- border-radius: 4px;
494
- border: 1px dashed #FFFFFF;
495
- position: absolute;
496
- top: 18px;
497
- left: 18px;
498
- right: 18px;
499
- bottom: 18px;
500
- display: flex;
501
- justify-content: center;
502
- align-items: center;
503
- font-weight: 500;
504
- font-size: 18px;
505
- color: #FFFFFF;
506
- }
507
-
508
- .Dropzone.dragging > .overlay {
509
- opacity: 0.7;
510
- visibility: visible;
511
- transition-delay: 0s;
512
- }
513
-
514
- .Dropzone.dragging > * {
515
- pointer-events: none;
516
- }
517
-
518
- .Dropzone > input.file {
519
- position: absolute;
520
- left: 0;
521
- right: 0;
522
- top: 0;
523
- bottom: 0;
524
- width: 100%;
525
- height: 100%;
526
- opacity: 0;
527
- cursor: pointer;
528
- z-index: 1;
529
- }
530
-
531
- .FilteredList {
532
- max-height: 250px;
533
- position: relative;
534
- }
535
-
536
- .FilteredList.popup {
537
- padding: 0;
538
- visibility: hidden;
539
- position: absolute;
540
- background: white;
541
- z-index: 4;
542
- box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
543
- transition: all 0.2s ease-out;
544
- top: calc(100% + 4px);
545
- opacity: 0;
546
- border-radius: 2px;
547
- }
548
-
549
- .FilteredList.popup.visible {
550
- opacity: 1;
551
- visibility: visible;
552
- }
553
-
554
- .FilteredList.portal {
555
- transition: opacity 0.2s ease-out;
556
- }
557
-
558
- .FilteredList.inline {
559
- max-height: 225px;
560
- margin-top: 5px;
561
- }
562
-
563
- .FilteredList .child {
564
- display: flex;
565
- flex-flow: row nowrap;
566
- align-items: center;
567
- white-space: nowrap;
568
- font-size: 14px;
569
- color: rgb(34, 34, 34);
570
- height: 30px;
571
- padding: 5px 10px;
572
- padding-right: 15px;
573
- cursor: pointer;
574
- overflow: hidden;
575
- transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
576
- border-left: 5px solid #4AC263;
577
- padding-left: 15px;
578
- margin-left: -5px;
579
- }
580
-
581
- .FilteredList .child.hidden {
582
- height: 0 !important;
583
- padding: 0 !important;
521
+ .FilteredList .child.hidden {
522
+ height: 0 !important;
523
+ padding: 0 !important;
584
524
  }
585
525
 
586
526
  .FilteredList .child.selected {
@@ -655,316 +595,239 @@
655
595
  margin-bottom: 0;
656
596
  }
657
597
 
658
- .Scrollable {
659
- max-height: 250px;
660
- max-width: 250px;
661
- padding-right: 5px;
662
- position: relative;
663
- display: flex;
664
- flex-flow: column;
665
- align-items: stretch;
666
- overflow: hidden;
598
+ .ImageGallery {
599
+ position: fixed;
600
+ top: 0;
601
+ left: 0;
602
+ bottom: 0;
603
+ right: 0;
604
+ z-index: 1000;
605
+ background-color: rgba(0, 0, 0, 0.01);
606
+ user-select: none;
667
607
  }
668
608
 
669
- .Scrollable:hover > .scrollbar.auto {
670
- transition-delay: 0s;
671
- opacity: 1;
672
- }
673
-
674
- .Scrollable .viewport {
675
- overflow-y: scroll;
676
- overflow-x: scroll;
677
- max-height: 100%;
678
- scroll-behavior: smooth;
679
- scrollbar-width: none;
680
- }
681
-
682
- .Scrollable .viewport::-webkit-scrollbar {
683
- display: none;
684
- }
685
-
686
- .Scrollable.without-scroll-horizontal {
687
- max-width: unset;
688
- }
689
-
690
- .Scrollable.undefined-horizontal {
691
- max-width: unset;
609
+ .ImageGallery:focus {
610
+ outline-width: 0px;
692
611
  }
693
612
 
694
- .Scrollable.without-scroll {
695
- padding-right: 0;
696
- max-height: unset;
613
+ .ImageGallery.animated {
614
+ transition: background-color 0.25s ease;
615
+ opacity: 1;
697
616
  }
698
617
 
699
- .Scrollable.without-scroll > .viewport {
700
- padding-right: 0;
701
- margin-right: 0;
618
+ .ImageGallery.mounting, .ImageGallery.mounted {
619
+ background-color: rgba(0, 0, 0, 0.8);
702
620
  }
703
621
 
704
- .Scrollable.without-scroll > .scrollbar {
705
- visibility: hidden;
622
+ .ImageGallery .image {
623
+ position: absolute;
624
+ cursor: grab;
706
625
  }
707
626
 
708
- .Scrollable .scrollbar {
709
- position: absolute;
710
- right: 0px;
711
- top: 0px;
712
- width: 5px;
713
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
714
- transition-delay: 0.5s;
715
- z-index: 1;
627
+ .ImageGallery .image .counter {
628
+ display: none;
716
629
  }
717
630
 
718
- .Scrollable .scrollbar.auto, .Scrollable .scrollbar.hidden {
719
- opacity: 0;
631
+ .ImageGallery .image img {
632
+ border-radius: 4px;
633
+ max-width: 100%;
634
+ min-width: 100%;
720
635
  }
721
636
 
722
- .Scrollable .scrollbar .thumb {
723
- background-color: rgba(0, 0, 0, 0.3);
724
- width: 5px;
725
- position: absolute;
726
- right: 0px;
727
- top: 0px;
728
- user-select: none;
729
- will-change: top;
730
- border-radius: 2px;
637
+ .ImageGallery .image.animated {
638
+ transition: top 0.25s ease, left 0.25s ease, width 0.25s ease, height 0.25s ease, opacity 0.25s ease;
639
+ will-change: top, left, width, height, opacity;
731
640
  }
732
641
 
733
- .Scrollable .scrollbar .thumb:hover {
734
- background-color: rgba(0, 0, 0, 0.5);
642
+ .ImageGallery .image.animated.mounting, .ImageGallery .image.animated.mounted, .ImageGallery .image.animated.unmounting {
643
+ opacity: 1;
735
644
  }
736
645
 
737
- .Scrollable .scrollbar .thumb:active {
738
- background-color: rgba(0, 0, 0, 0.7);
646
+ .ImageGallery .image.zoomed {
647
+ text-align: center;
648
+ overflow: hidden;
739
649
  }
740
650
 
741
- .Scrollable .scrollbar.horizontal {
742
- left: 0px;
743
- right: 0px;
744
- height: 5px;
745
- bottom: 0;
746
- width: unset;
747
- top: unset;
651
+ .ImageGallery .image.dragging {
652
+ transition: none;
653
+ cursor: move;
748
654
  }
749
655
 
750
- .Scrollable .scrollbar.horizontal .thumb {
751
- height: 5px;
752
- left: 0px;
753
- bottom: 0px;
754
- will-change: left;
656
+ .ImageGallery .image .close {
657
+ position: absolute;
658
+ top: -18px;
659
+ right: -18px;
755
660
  }
756
661
 
757
- .Modal {
758
- display: block;
759
- position: fixed;
662
+ .ImageGallery .image .spinner {
663
+ position: absolute;
760
664
  top: 0;
665
+ bottom: 0;
761
666
  left: 0;
762
667
  right: 0;
763
- bottom: 100%;
764
- overflow-y: scroll;
765
- transition: bottom 0ms linear;
766
- transition-delay: 0.2s;
767
- }
768
-
769
- .Modal.show {
770
- transition-delay: 0s;
771
- bottom: 0;
668
+ background: rgba(0, 0, 0, 0.65);
772
669
  }
773
670
 
774
- .Modal > .overlay {
775
- position: fixed;
776
- top: 0;
777
- bottom: 100%;
778
- left: 0;
779
- right: 0;
780
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
781
- opacity: 0;
782
- background-color: black;
783
- pointer-events: none;
671
+ .ImageGallery .image .spinner .SpinningProgress {
672
+ position: absolute;
673
+ top: 50%;
674
+ left: 50%;
675
+ margin-left: -24px;
676
+ margin-top: -24px;
784
677
  }
785
678
 
786
- .Modal > .overlay.show {
787
- opacity: 0.5;
788
- bottom: 0;
679
+ .ImageGallery .image .spinner .SpinningProgress .line {
680
+ stroke: #2196F3;
789
681
  }
790
682
 
791
- .Modal > .content {
792
- left: 50%;
793
- top: 10vh;
794
- margin-bottom: 10vh;
795
- font-size: 16px;
796
- padding: 0;
683
+ .ImageGallery .Button.animated {
684
+ transition: all 0.25s ease;
797
685
  opacity: 0;
798
- transition: opacity 0.25s ease, transform 0.25s ease;
799
- transform: scaleY(0) translateY(-200px) translateX(-50%);
800
- transform-origin: top;
801
- position: absolute;
802
- border-radius: 2px;
803
- box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.3);
686
+ transform: scale(0);
804
687
  }
805
688
 
806
- .Modal > .content.show {
689
+ .ImageGallery .Button.animated.mounted, .ImageGallery .Button.animated.mounting {
807
690
  opacity: 1;
808
- transform: scaleY(1) translateY(0px) translateX(-50%);
691
+ transform: scale(1);
809
692
  }
810
693
 
811
- .Modal > .content > .Scrollable {
812
- overflow: visible;
813
- max-height: 80vh;
694
+ .ImageGallery .Button {
695
+ color: white;
696
+ background: rgba(0, 0, 0, 0.4);
814
697
  }
815
698
 
816
- .Modal > .content > .Scrollable > .viewport {
817
- min-width: 10px;
818
- min-height: 10px;
699
+ .ImageGallery .Button:hover {
700
+ background: rgba(0, 0, 0, 0.7);
819
701
  }
820
702
 
821
- .Modal > .content > .Button.close {
822
- top: 10px;
823
- right: 10px;
703
+ .ImageGallery > .arrow {
824
704
  position: absolute;
705
+ top: 50%;
706
+ height: 76px;
707
+ width: 76px;
708
+ margin-top: -38px;
825
709
  }
826
710
 
827
- .TextField {
828
- position: relative;
829
- width: 100%;
711
+ .ImageGallery > .arrow.left {
712
+ left: 5%;
830
713
  }
831
714
 
832
- .TextField > label {
833
- font-family: Roboto, sans-serif;
834
- color: rgba(0, 0, 0, 0.3);
835
- font-size: 16px;
836
- position: absolute;
837
- left: 0px;
838
- top: 16px;
839
- margin-top: -16px;
840
- transition: all 0.2s ease;
841
- user-select: none;
842
- cursor: text;
715
+ .ImageGallery > .arrow.right {
716
+ right: 5%;
843
717
  }
844
718
 
845
- .TextField > input {
846
- font-family: Roboto, sans-serif;
847
- color: #1e252d;
848
- height: 19px;
849
- font-size: 16px;
850
- width: 100%;
851
- border: 0px;
852
- padding-bottom: 4px;
853
- padding-top: 0;
854
- outline-color: rgba(0, 0, 0, 0);
719
+ .ImageGallery > .arrow .material-icons {
720
+ font-size: 40px;
855
721
  }
856
722
 
857
- .TextField > input:focus {
858
- outline: none;
723
+ .ImageGallery .counter {
724
+ position: absolute;
725
+ top: 10px;
726
+ left: 10px;
727
+ color: white;
728
+ font-size: 13px;
859
729
  }
860
730
 
861
- .TextField > input:disabled {
862
- color: gray;
863
- background-color: white;
731
+ .ImageGallery .previews {
732
+ height: 80px;
733
+ position: absolute;
734
+ bottom: 15px;
735
+ left: 50%;
736
+ transform: translateX(-50%);
737
+ padding: 0 45px;
864
738
  }
865
739
 
866
- .TextField > input:disabled + .border {
867
- height: 0px;
868
- border-bottom: 2px dotted rgb(224, 224, 224);
740
+ .ImageGallery .previews .viewport {
741
+ overflow: hidden;
742
+ position: relative;
743
+ height: 100%;
869
744
  }
870
745
 
871
- .TextField > input::placeholder {
872
- font-family: Roboto, sans-serif;
873
- color: rgba(0, 0, 0, 0.3);
874
- opacity: 1;
746
+ .ImageGallery .previews .container {
747
+ position: relative;
748
+ display: flex;
749
+ flex-flow: row nowrap;
750
+ height: 100%;
751
+ transition: left 0.25s ease;
875
752
  }
876
753
 
877
- .TextField > .border {
878
- border-bottom: 1px solid rgb(224, 224, 224);
879
- height: 1px;
754
+ .ImageGallery .previews .preview {
880
755
  position: relative;
756
+ height: 100%;
757
+ display: inline-block;
758
+ width: 106.66px;
759
+ overflow: hidden;
760
+ margin-left: 12px;
761
+ border-radius: 2px;
762
+ cursor: pointer;
763
+ box-sizing: border-box;
881
764
  }
882
765
 
883
- .TextField > .border .line {
884
- left: 50%;
885
- width: 0;
886
- height: 2px;
887
- min-height: 2px;
888
- background-color: rgb(0, 188, 212);
889
- transition: all 0.2s ease;
890
- position: absolute;
766
+ .ImageGallery .previews .preview:first-child {
767
+ margin-left: 0;
891
768
  }
892
769
 
893
- .TextField > .error {
894
- text-align: left;
895
- font-size: 10px;
896
- min-height: 0;
897
- line-height: 14px;
898
- color: rgb(244, 67, 54);
899
- visibility: hidden;
900
- opacity: 0;
901
- transition: all 0.2s ease;
902
- }
903
-
904
- .TextField.focused > label, .TextField.withValue > label {
905
- top: 4px;
906
- font-size: 12px;
907
- line-height: 14px;
908
- }
909
-
910
- .TextField.errored > .error {
911
- visibility: visible;
912
- opacity: 1;
770
+ .ImageGallery .previews .preview > .border {
771
+ position: absolute;
772
+ bottom: 0;
773
+ width: 100%;
774
+ height: 3px;
913
775
  }
914
776
 
915
- .TextField.errored > .border {
916
- border-bottom-color: rgb(244, 67, 54);
777
+ .ImageGallery .previews .preview > .border .line {
778
+ left: 50%;
779
+ width: 0;
780
+ height: 3px;
781
+ min-height: 3px;
782
+ background-color: #4AC263;
783
+ transition: all 0.2s ease;
784
+ position: absolute;
917
785
  }
918
786
 
919
- .TextField.errored > label {
920
- color: rgb(244, 67, 54);
787
+ .ImageGallery .previews .preview:after {
788
+ content: "";
789
+ position: absolute;
790
+ top: 0;
791
+ right: 0;
792
+ bottom: 0;
793
+ left: 0;
794
+ background: rgba(0, 0, 0, 0.35);
795
+ transition: background 0.2s ease;
921
796
  }
922
797
 
923
- .TextField.focused > label {
924
- color: rgb(0, 188, 212);
798
+ .ImageGallery .previews .preview:hover:after {
799
+ background: rgba(0, 0, 0, 0.1);
925
800
  }
926
801
 
927
- .TextField.focused > .border .line {
802
+ .ImageGallery .previews .preview.selected .border .line {
928
803
  left: 0;
929
804
  width: 100%;
930
805
  }
931
806
 
932
- .TextField.disabled label, .TextField.disabled input {
933
- cursor: not-allowed;
934
- }
935
-
936
- .TextField.withLabel {
937
- margin-top: 15px;
807
+ .ImageGallery .previews .preview.selected:after {
808
+ background: rgba(0, 0, 0, 0);
938
809
  }
939
810
 
940
- .TextField input::-webkit-contacts-auto-fill-button {
941
- visibility: hidden;
942
- display: none !important;
943
- pointer-events: none;
811
+ .ImageGallery .previews > .arrow {
944
812
  position: absolute;
945
- right: 0;
813
+ top: 50%;
814
+ height: 30px;
815
+ width: 30px;
816
+ min-width: 30px;
817
+ min-height: 30px;
818
+ margin-top: -15px;
946
819
  }
947
820
 
948
- .TextField input:-webkit-autofill {
949
- -webkit-box-shadow: inset 0 0 0px 9999px white;
821
+ .ImageGallery .previews > .arrow.left {
822
+ left: 0;
950
823
  }
951
824
 
952
- @keyframes shake {
953
- 0%, 100% {
954
- transform: translateX(0);
955
- }
956
- 20%, 60% {
957
- transform: translateX(-5px);
958
- }
959
- 40%, 80% {
960
- transform: translateX(5px);
961
- }
825
+ .ImageGallery .previews > .arrow.right {
826
+ right: 0;
962
827
  }
963
- .TextField .shake {
964
- animation-duration: 0.5s;
965
- animation-fill-mode: both;
966
- animation-timing-function: ease-in-out;
967
- animation-name: shake;
828
+
829
+ .ImageGallery .previews > .arrow .material-icons {
830
+ font-size: 24px;
968
831
  }
969
832
 
970
833
  .FormUploadProgress {
@@ -1036,239 +899,316 @@
1036
899
  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
1037
900
  }
1038
901
 
1039
- .ImageGallery {
1040
- position: fixed;
1041
- top: 0;
1042
- left: 0;
1043
- bottom: 0;
1044
- right: 0;
1045
- z-index: 1000;
1046
- background-color: rgba(0, 0, 0, 0.01);
1047
- user-select: none;
902
+ .Scrollable {
903
+ max-height: 250px;
904
+ max-width: 250px;
905
+ padding-right: 5px;
906
+ position: relative;
907
+ display: flex;
908
+ flex-flow: column;
909
+ align-items: stretch;
910
+ overflow: hidden;
1048
911
  }
1049
912
 
1050
- .ImageGallery:focus {
1051
- outline-width: 0px;
913
+ .Scrollable:hover > .scrollbar.auto {
914
+ transition-delay: 0s;
915
+ opacity: 1;
1052
916
  }
1053
917
 
1054
- .ImageGallery.animated {
1055
- transition: background-color 0.25s ease;
1056
- opacity: 1;
918
+ .Scrollable .viewport {
919
+ overflow-y: scroll;
920
+ overflow-x: scroll;
921
+ max-height: 100%;
922
+ scroll-behavior: smooth;
923
+ scrollbar-width: none;
1057
924
  }
1058
925
 
1059
- .ImageGallery.mounting, .ImageGallery.mounted {
1060
- background-color: rgba(0, 0, 0, 0.8);
926
+ .Scrollable .viewport::-webkit-scrollbar {
927
+ display: none;
1061
928
  }
1062
929
 
1063
- .ImageGallery .image {
1064
- position: absolute;
1065
- cursor: grab;
930
+ .Scrollable.without-scroll-horizontal {
931
+ max-width: unset;
1066
932
  }
1067
933
 
1068
- .ImageGallery .image .counter {
1069
- display: none;
934
+ .Scrollable.undefined-horizontal {
935
+ max-width: unset;
1070
936
  }
1071
937
 
1072
- .ImageGallery .image img {
1073
- border-radius: 4px;
1074
- max-width: 100%;
1075
- min-width: 100%;
938
+ .Scrollable.without-scroll {
939
+ padding-right: 0;
940
+ max-height: unset;
1076
941
  }
1077
942
 
1078
- .ImageGallery .image.animated {
1079
- transition: top 0.25s ease, left 0.25s ease, width 0.25s ease, height 0.25s ease, opacity 0.25s ease;
1080
- will-change: top, left, width, height, opacity;
943
+ .Scrollable.without-scroll > .viewport {
944
+ padding-right: 0;
945
+ margin-right: 0;
1081
946
  }
1082
947
 
1083
- .ImageGallery .image.animated.mounting, .ImageGallery .image.animated.mounted, .ImageGallery .image.animated.unmounting {
1084
- opacity: 1;
948
+ .Scrollable.without-scroll > .scrollbar {
949
+ visibility: hidden;
1085
950
  }
1086
951
 
1087
- .ImageGallery .image.zoomed {
1088
- text-align: center;
1089
- overflow: hidden;
952
+ .Scrollable .scrollbar {
953
+ position: absolute;
954
+ right: 0px;
955
+ top: 0px;
956
+ width: 5px;
957
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
958
+ transition-delay: 0.5s;
959
+ z-index: 1;
1090
960
  }
1091
961
 
1092
- .ImageGallery .image.dragging {
1093
- transition: none;
1094
- cursor: move;
962
+ .Scrollable .scrollbar.auto, .Scrollable .scrollbar.hidden {
963
+ opacity: 0;
1095
964
  }
1096
965
 
1097
- .ImageGallery .image .close {
966
+ .Scrollable .scrollbar .thumb {
967
+ background-color: rgba(0, 0, 0, 0.3);
968
+ width: 5px;
1098
969
  position: absolute;
1099
- top: -18px;
1100
- right: -18px;
970
+ right: 0px;
971
+ top: 0px;
972
+ user-select: none;
973
+ will-change: top;
974
+ border-radius: 2px;
1101
975
  }
1102
976
 
1103
- .ImageGallery .image .spinner {
1104
- position: absolute;
1105
- top: 0;
977
+ .Scrollable .scrollbar .thumb:hover {
978
+ background-color: rgba(0, 0, 0, 0.5);
979
+ }
980
+
981
+ .Scrollable .scrollbar .thumb:active {
982
+ background-color: rgba(0, 0, 0, 0.7);
983
+ }
984
+
985
+ .Scrollable .scrollbar.horizontal {
986
+ left: 0px;
987
+ right: 0px;
988
+ height: 5px;
1106
989
  bottom: 0;
1107
- left: 0;
1108
- right: 0;
1109
- background: rgba(0, 0, 0, 0.65);
990
+ width: unset;
991
+ top: unset;
1110
992
  }
1111
993
 
1112
- .ImageGallery .image .spinner .SpinningProgress {
994
+ .Scrollable .scrollbar.horizontal .thumb {
995
+ height: 5px;
996
+ left: 0px;
997
+ bottom: 0px;
998
+ will-change: left;
999
+ }
1000
+
1001
+ .TextField {
1002
+ position: relative;
1003
+ width: 100%;
1004
+ }
1005
+
1006
+ .TextField > label {
1007
+ font-family: Roboto, sans-serif;
1008
+ color: rgba(0, 0, 0, 0.3);
1009
+ font-size: 16px;
1113
1010
  position: absolute;
1114
- top: 50%;
1115
- left: 50%;
1116
- margin-left: -24px;
1117
- margin-top: -24px;
1011
+ left: 0px;
1012
+ top: 16px;
1013
+ margin-top: -16px;
1014
+ transition: all 0.2s ease;
1015
+ user-select: none;
1016
+ cursor: text;
1118
1017
  }
1119
1018
 
1120
- .ImageGallery .image .spinner .SpinningProgress .line {
1121
- stroke: #2196F3;
1019
+ .TextField > input {
1020
+ font-family: Roboto, sans-serif;
1021
+ color: #1e252d;
1022
+ height: 19px;
1023
+ font-size: 16px;
1024
+ width: 100%;
1025
+ border: 0px;
1026
+ padding-bottom: 4px;
1027
+ padding-top: 0;
1028
+ outline-color: rgba(0, 0, 0, 0);
1122
1029
  }
1123
1030
 
1124
- .ImageGallery .Button.animated {
1125
- transition: all 0.25s ease;
1126
- opacity: 0;
1127
- transform: scale(0);
1031
+ .TextField > input:focus {
1032
+ outline: none;
1128
1033
  }
1129
1034
 
1130
- .ImageGallery .Button.animated.mounted, .ImageGallery .Button.animated.mounting {
1131
- opacity: 1;
1132
- transform: scale(1);
1035
+ .TextField > input:disabled {
1036
+ color: gray;
1037
+ background-color: white;
1133
1038
  }
1134
1039
 
1135
- .ImageGallery .Button {
1136
- color: white;
1137
- background: rgba(0, 0, 0, 0.4);
1040
+ .TextField > input:disabled + .border {
1041
+ height: 0px;
1042
+ border-bottom: 2px dotted rgb(224, 224, 224);
1138
1043
  }
1139
1044
 
1140
- .ImageGallery .Button:hover {
1141
- background: rgba(0, 0, 0, 0.7);
1045
+ .TextField > input::placeholder {
1046
+ font-family: Roboto, sans-serif;
1047
+ color: rgba(0, 0, 0, 0.3);
1048
+ opacity: 1;
1142
1049
  }
1143
1050
 
1144
- .ImageGallery > .arrow {
1051
+ .TextField > .border {
1052
+ border-bottom: 1px solid rgb(224, 224, 224);
1053
+ height: 1px;
1054
+ position: relative;
1055
+ }
1056
+
1057
+ .TextField > .border .line {
1058
+ left: 50%;
1059
+ width: 0;
1060
+ height: 2px;
1061
+ min-height: 2px;
1062
+ background-color: rgb(0, 188, 212);
1063
+ transition: all 0.2s ease;
1145
1064
  position: absolute;
1146
- top: 50%;
1147
- height: 76px;
1148
- width: 76px;
1149
- margin-top: -38px;
1150
1065
  }
1151
1066
 
1152
- .ImageGallery > .arrow.left {
1153
- left: 5%;
1067
+ .TextField > .error {
1068
+ text-align: left;
1069
+ font-size: 10px;
1070
+ min-height: 0;
1071
+ line-height: 14px;
1072
+ color: rgb(244, 67, 54);
1073
+ visibility: hidden;
1074
+ opacity: 0;
1075
+ transition: all 0.2s ease;
1154
1076
  }
1155
1077
 
1156
- .ImageGallery > .arrow.right {
1157
- right: 5%;
1078
+ .TextField.focused > label, .TextField.withValue > label {
1079
+ top: 4px;
1080
+ font-size: 12px;
1081
+ line-height: 14px;
1158
1082
  }
1159
1083
 
1160
- .ImageGallery > .arrow .material-icons {
1161
- font-size: 40px;
1084
+ .TextField.errored > .error {
1085
+ visibility: visible;
1086
+ opacity: 1;
1162
1087
  }
1163
1088
 
1164
- .ImageGallery .counter {
1165
- position: absolute;
1166
- top: 10px;
1167
- left: 10px;
1168
- color: white;
1169
- font-size: 13px;
1089
+ .TextField.errored > .border {
1090
+ border-bottom-color: rgb(244, 67, 54);
1170
1091
  }
1171
1092
 
1172
- .ImageGallery .previews {
1173
- height: 80px;
1174
- position: absolute;
1175
- bottom: 15px;
1176
- left: 50%;
1177
- transform: translateX(-50%);
1178
- padding: 0 45px;
1093
+ .TextField.errored > label {
1094
+ color: rgb(244, 67, 54);
1179
1095
  }
1180
1096
 
1181
- .ImageGallery .previews .viewport {
1182
- overflow: hidden;
1183
- position: relative;
1184
- height: 100%;
1097
+ .TextField.focused > label {
1098
+ color: rgb(0, 188, 212);
1185
1099
  }
1186
1100
 
1187
- .ImageGallery .previews .container {
1188
- position: relative;
1189
- display: flex;
1190
- flex-flow: row nowrap;
1191
- height: 100%;
1192
- transition: left 0.25s ease;
1101
+ .TextField.focused > .border .line {
1102
+ left: 0;
1103
+ width: 100%;
1193
1104
  }
1194
1105
 
1195
- .ImageGallery .previews .preview {
1196
- position: relative;
1197
- height: 100%;
1198
- display: inline-block;
1199
- width: 106.66px;
1200
- overflow: hidden;
1201
- margin-left: 12px;
1202
- border-radius: 2px;
1203
- cursor: pointer;
1204
- box-sizing: border-box;
1106
+ .TextField.disabled label, .TextField.disabled input {
1107
+ cursor: not-allowed;
1205
1108
  }
1206
1109
 
1207
- .ImageGallery .previews .preview:first-child {
1208
- margin-left: 0;
1110
+ .TextField.withLabel {
1111
+ margin-top: 15px;
1209
1112
  }
1210
1113
 
1211
- .ImageGallery .previews .preview > .border {
1114
+ .TextField input::-webkit-contacts-auto-fill-button {
1115
+ visibility: hidden;
1116
+ display: none !important;
1117
+ pointer-events: none;
1212
1118
  position: absolute;
1213
- bottom: 0;
1214
- width: 100%;
1215
- height: 3px;
1119
+ right: 0;
1216
1120
  }
1217
1121
 
1218
- .ImageGallery .previews .preview > .border .line {
1219
- left: 50%;
1220
- width: 0;
1221
- height: 3px;
1222
- min-height: 3px;
1223
- background-color: #4AC263;
1224
- transition: all 0.2s ease;
1225
- position: absolute;
1122
+ .TextField input:-webkit-autofill {
1123
+ -webkit-box-shadow: inset 0 0 0px 9999px white;
1226
1124
  }
1227
1125
 
1228
- .ImageGallery .previews .preview:after {
1229
- content: "";
1230
- position: absolute;
1126
+ @keyframes shake {
1127
+ 0%, 100% {
1128
+ transform: translateX(0);
1129
+ }
1130
+ 20%, 60% {
1131
+ transform: translateX(-5px);
1132
+ }
1133
+ 40%, 80% {
1134
+ transform: translateX(5px);
1135
+ }
1136
+ }
1137
+ .TextField .shake {
1138
+ animation-duration: 0.5s;
1139
+ animation-fill-mode: both;
1140
+ animation-timing-function: ease-in-out;
1141
+ animation-name: shake;
1142
+ }
1143
+
1144
+ .Modal {
1145
+ display: block;
1146
+ position: fixed;
1231
1147
  top: 0;
1232
- right: 0;
1233
- bottom: 0;
1234
1148
  left: 0;
1235
- background: rgba(0, 0, 0, 0.35);
1236
- transition: background 0.2s ease;
1149
+ right: 0;
1150
+ bottom: 100%;
1151
+ overflow-y: scroll;
1152
+ transition: bottom 0ms linear;
1153
+ transition-delay: 0.2s;
1237
1154
  }
1238
1155
 
1239
- .ImageGallery .previews .preview:hover:after {
1240
- background: rgba(0, 0, 0, 0.1);
1156
+ .Modal.show {
1157
+ transition-delay: 0s;
1158
+ bottom: 0;
1241
1159
  }
1242
1160
 
1243
- .ImageGallery .previews .preview.selected .border .line {
1161
+ .Modal > .overlay {
1162
+ position: fixed;
1163
+ top: 0;
1164
+ bottom: 100%;
1244
1165
  left: 0;
1245
- width: 100%;
1166
+ right: 0;
1167
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1168
+ opacity: 0;
1169
+ background-color: black;
1170
+ pointer-events: none;
1246
1171
  }
1247
1172
 
1248
- .ImageGallery .previews .preview.selected:after {
1249
- background: rgba(0, 0, 0, 0);
1173
+ .Modal > .overlay.show {
1174
+ opacity: 0.5;
1175
+ bottom: 0;
1176
+ }
1177
+
1178
+ .Modal > .content {
1179
+ left: 50%;
1180
+ top: 10vh;
1181
+ margin-bottom: 10vh;
1182
+ font-size: 16px;
1183
+ padding: 0;
1184
+ opacity: 0;
1185
+ transition: opacity 0.25s ease, transform 0.25s ease;
1186
+ transform: scaleY(0) translateY(-200px) translateX(-50%);
1187
+ transform-origin: top;
1188
+ position: absolute;
1189
+ border-radius: 2px;
1190
+ box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.3);
1250
1191
  }
1251
1192
 
1252
- .ImageGallery .previews > .arrow {
1253
- position: absolute;
1254
- top: 50%;
1255
- height: 30px;
1256
- width: 30px;
1257
- min-width: 30px;
1258
- min-height: 30px;
1259
- margin-top: -15px;
1193
+ .Modal > .content.show {
1194
+ opacity: 1;
1195
+ transform: scaleY(1) translateY(0px) translateX(-50%);
1260
1196
  }
1261
1197
 
1262
- .ImageGallery .previews > .arrow.left {
1263
- left: 0;
1198
+ .Modal > .content > .Scrollable {
1199
+ overflow: visible;
1200
+ max-height: 80vh;
1264
1201
  }
1265
1202
 
1266
- .ImageGallery .previews > .arrow.right {
1267
- right: 0;
1203
+ .Modal > .content > .Scrollable > .viewport {
1204
+ min-width: 10px;
1205
+ min-height: 10px;
1268
1206
  }
1269
1207
 
1270
- .ImageGallery .previews > .arrow .material-icons {
1271
- font-size: 24px;
1208
+ .Modal > .content > .Button.close {
1209
+ top: 10px;
1210
+ right: 10px;
1211
+ position: absolute;
1272
1212
  }
1273
1213
 
1274
1214
  .DNDContainer .DroppableList .Draggable {
@@ -1314,6 +1254,19 @@
1314
1254
  height: 100%;
1315
1255
  }
1316
1256
 
1257
+ .CircleProgress {
1258
+ width: 48px;
1259
+ height: 48px;
1260
+ }
1261
+
1262
+ .CircleProgress .line {
1263
+ stroke-width: 2px;
1264
+ stroke: black;
1265
+ stroke-linecap: square;
1266
+ fill: none;
1267
+ transition: stroke-dashoffset 0.2s ease;
1268
+ }
1269
+
1317
1270
  .Checkbox {
1318
1271
  position: relative;
1319
1272
  white-space: pre;
@@ -1381,6 +1334,38 @@
1381
1334
  background: rgba(0, 0, 0, 0.26);
1382
1335
  }
1383
1336
 
1337
+ .DNDContainer {
1338
+ position: relative;
1339
+ }
1340
+
1341
+ .DNDContainer .Draggable[draggable=true], .DNDContainer .Draggable [draggable=true] {
1342
+ cursor: pointer;
1343
+ }
1344
+
1345
+ .DNDContainer .Draggable.placeholder {
1346
+ opacity: 0.2;
1347
+ }
1348
+
1349
+ .DNDContainer .Draggable.copy {
1350
+ position: absolute;
1351
+ box-sizing: border-box;
1352
+ will-change: transform;
1353
+ opacity: 0;
1354
+ }
1355
+
1356
+ .DNDContainer .Draggable.dragged {
1357
+ z-index: 10;
1358
+ }
1359
+
1360
+ .DNDContainer .overlay {
1361
+ position: absolute;
1362
+ top: 0;
1363
+ left: 0;
1364
+ right: 0;
1365
+ bottom: 0;
1366
+ pointer-events: none;
1367
+ }
1368
+
1384
1369
  .DatePicker {
1385
1370
  position: relative;
1386
1371
  }
@@ -1498,113 +1483,250 @@
1498
1483
  background-color: #51adf6;
1499
1484
  }
1500
1485
 
1501
- .DNDContainer {
1486
+ .Dropzone {
1502
1487
  position: relative;
1503
1488
  }
1504
1489
 
1505
- .DNDContainer .Draggable[draggable=true], .DNDContainer .Draggable [draggable=true] {
1506
- cursor: pointer;
1490
+ .Dropzone > .overlay {
1491
+ position: absolute;
1492
+ left: 0;
1493
+ right: 0;
1494
+ top: 0;
1495
+ bottom: 0;
1496
+ background-color: #38ADC4;
1497
+ z-index: 1;
1498
+ opacity: 0;
1499
+ transition: all 0.2s ease;
1500
+ transition-delay: 100ms;
1501
+ visibility: hidden;
1502
+ display: flex;
1503
+ justify-content: center;
1504
+ align-items: center;
1507
1505
  }
1508
1506
 
1509
- .DNDContainer .Draggable.placeholder {
1510
- opacity: 0.2;
1507
+ .Dropzone > .overlay .drop {
1508
+ border-radius: 4px;
1509
+ border: 1px dashed #FFFFFF;
1510
+ position: absolute;
1511
+ top: 18px;
1512
+ left: 18px;
1513
+ right: 18px;
1514
+ bottom: 18px;
1515
+ display: flex;
1516
+ justify-content: center;
1517
+ align-items: center;
1518
+ font-weight: 500;
1519
+ font-size: 18px;
1520
+ color: #FFFFFF;
1511
1521
  }
1512
1522
 
1513
- .DNDContainer .Draggable.copy {
1514
- position: absolute;
1515
- box-sizing: border-box;
1516
- will-change: transform;
1517
- opacity: 0;
1523
+ .Dropzone.dragging > .overlay {
1524
+ opacity: 0.7;
1525
+ visibility: visible;
1526
+ transition-delay: 0s;
1518
1527
  }
1519
1528
 
1520
- .DNDContainer .Draggable.dragged {
1521
- z-index: 10;
1529
+ .Dropzone.dragging > * {
1530
+ pointer-events: none;
1522
1531
  }
1523
1532
 
1524
- .DNDContainer .overlay {
1533
+ .Dropzone > input.file {
1525
1534
  position: absolute;
1526
- top: 0;
1527
1535
  left: 0;
1528
1536
  right: 0;
1537
+ top: 0;
1529
1538
  bottom: 0;
1530
- pointer-events: none;
1539
+ width: 100%;
1540
+ height: 100%;
1541
+ opacity: 0;
1542
+ cursor: pointer;
1543
+ z-index: 1;
1531
1544
  }
1532
1545
 
1533
- .ModalMenu {
1546
+ .DropFileInput {
1547
+ flex-grow: 1;
1548
+ }
1549
+
1550
+ .DropFileInput .Dropzone {
1551
+ border: 1px dashed #808080;
1552
+ padding: 12px;
1553
+ display: flex;
1554
+ flex-flow: row nowrap;
1555
+ justify-content: center;
1556
+ align-items: center;
1557
+ color: gray;
1558
+ cursor: pointer;
1559
+ border-radius: 3px;
1560
+ font-weight: normal;
1561
+ line-height: 22px;
1562
+ font-size: 14px;
1563
+ color: #7E7E7E;
1564
+ max-width: 100%;
1565
+ word-break: break-all;
1566
+ word-break: break-word;
1567
+ }
1568
+
1569
+ .DropFileInput .Dropzone .icon.withText {
1570
+ margin-right: 10px;
1571
+ }
1572
+
1573
+ .Button.FloatingActionButton {
1534
1574
  position: absolute;
1535
- top: 10px;
1536
- right: 50px;
1575
+ right: 16px;
1576
+ bottom: 16px;
1577
+ width: 56px;
1578
+ height: 56px;
1579
+ padding: 16px;
1580
+ transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1537
1581
  }
1538
1582
 
1539
- .ModalMenu .material-icons {
1540
- color: #818181;
1583
+ .Button.FloatingActionButton.raised {
1584
+ transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s ease-out, background-color 0.2s ease-out, box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
1541
1585
  }
1542
1586
 
1543
- .ModalMenu .Button.animated {
1587
+ .Button.FloatingActionButton.mini {
1588
+ width: 40px;
1589
+ height: 40px;
1590
+ padding: 8px;
1591
+ }
1592
+
1593
+ .Button.FloatingActionButton.hidden {
1594
+ bottom: -100px;
1595
+ }
1596
+
1597
+ .Switch {
1598
+ display: inline-flex;
1599
+ padding-top: 5px;
1600
+ }
1601
+
1602
+ .Switch .switch-input {
1603
+ display: none;
1604
+ }
1605
+
1606
+ .Switch .switch-label {
1607
+ position: relative;
1608
+ display: inline-flex;
1609
+ align-items: center;
1610
+ min-width: 38px;
1611
+ height: 24px;
1612
+ cursor: pointer;
1613
+ font-weight: 500;
1614
+ text-align: left;
1615
+ user-select: none;
1616
+ margin: 0;
1617
+ padding: 0;
1618
+ padding-left: 44px;
1619
+ box-sizing: border-box;
1620
+ }
1621
+
1622
+ .Switch .switch-label:before, .Switch .switch-label:after {
1623
+ content: "";
1624
+ box-sizing: border-box;
1544
1625
  position: absolute;
1545
- transition: opacity 150ms ease-in, right 200ms ease-in;
1546
- opacity: 0;
1547
- right: 0;
1548
- top: 0;
1626
+ margin: 0;
1627
+ outline: 0;
1628
+ top: 50%;
1629
+ transform: translate(0, -50%);
1630
+ transition: all 0.3s ease;
1549
1631
  }
1550
1632
 
1551
- .ModalMenu .Button.animated.mounting, .ModalMenu .Button.animated.mounted {
1552
- opacity: 1;
1633
+ .Switch .switch-label:before {
1634
+ left: 1px;
1635
+ width: 34px;
1636
+ height: 14px;
1637
+ background-color: #9E9E9E;
1638
+ border-radius: 8px;
1639
+ }
1640
+
1641
+ .Switch .switch-label:after {
1642
+ left: 0;
1643
+ width: 20px;
1644
+ height: 20px;
1645
+ background-color: #FAFAFA;
1646
+ border-radius: 50%;
1647
+ box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.14), 0 2px 2px 0 rgba(0, 0, 0, 0.098), 0 1px 5px 0 rgba(0, 0, 0, 0.084);
1648
+ }
1649
+
1650
+ .Switch .switch-label .toggle--on {
1651
+ display: none;
1652
+ }
1653
+
1654
+ .Switch .switch-label .toggle--off {
1655
+ display: inline-block;
1656
+ }
1657
+
1658
+ .Switch .switch-label .label {
1659
+ margin-right: 5px;
1553
1660
  }
1554
1661
 
1555
- .ModalMenu .Button.animated.unmounting {
1556
- transition: opacity 100ms ease-out, right 200ms ease-out;
1662
+ .Switch .switch-input:checked + .switch-label:before {
1663
+ background-color: #A5D6A7;
1557
1664
  }
1558
1665
 
1559
- .ModalMenu .Button.active {
1560
- background: #EBEBEB;
1666
+ .Switch .switch-input:checked + .switch-label:after {
1667
+ background-color: #4CAF50;
1668
+ transform: translate(80%, -50%);
1561
1669
  }
1562
1670
 
1563
- .ModalMenu .separator {
1564
- height: 24px;
1565
- width: 1px;
1566
- background-color: #D9D9D9;
1567
- margin-left: 4px;
1671
+ .Switch .switch-input:checked + .switch-label .toggle--on {
1672
+ display: inline-block;
1568
1673
  }
1569
1674
 
1570
- .DropFileInput {
1571
- flex-grow: 1;
1675
+ .Switch .switch-input:checked + .switch-label .toggle--off {
1676
+ display: none;
1572
1677
  }
1573
1678
 
1574
- .DropFileInput .Dropzone {
1575
- border: 1px dashed #808080;
1576
- padding: 12px;
1679
+ .Snackbar {
1680
+ transform: translateX(-50%);
1681
+ overflow: hidden;
1682
+ background-color: #323232;
1683
+ padding: 14px 24px 14px 24px;
1684
+ color: #fff;
1685
+ min-width: 288px;
1686
+ max-width: 568px;
1687
+ position: fixed;
1688
+ bottom: -50px;
1689
+ left: 50%;
1577
1690
  display: flex;
1578
- flex-flow: row nowrap;
1579
- justify-content: center;
1691
+ flex-wrap: nowrap;
1580
1692
  align-items: center;
1581
- color: gray;
1582
- cursor: pointer;
1583
- border-radius: 3px;
1584
- font-weight: normal;
1585
- line-height: 22px;
1586
- font-size: 14px;
1587
- color: #7E7E7E;
1588
- max-width: 100%;
1589
- word-break: break-all;
1590
- word-break: break-word;
1693
+ opacity: 0;
1694
+ transition: bottom 0.25s ease, opacity 0.2s ease;
1695
+ border-radius: 4px;
1696
+ box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
1591
1697
  }
1592
1698
 
1593
- .DropFileInput .Dropzone .icon.withText {
1594
- margin-right: 10px;
1699
+ .Snackbar.shown {
1700
+ bottom: 15px;
1701
+ opacity: 1;
1595
1702
  }
1596
1703
 
1597
- .CircleProgress {
1598
- width: 48px;
1599
- height: 48px;
1704
+ .Snackbar .message {
1705
+ overflow: hidden;
1706
+ line-height: 1.2em;
1707
+ min-height: 1.2em;
1708
+ max-height: 2.4em;
1709
+ flex: 1;
1600
1710
  }
1601
1711
 
1602
- .CircleProgress .line {
1603
- stroke-width: 2px;
1604
- stroke: black;
1605
- stroke-linecap: square;
1606
- fill: none;
1607
- transition: stroke-dashoffset 0.2s ease;
1712
+ .Snackbar .action {
1713
+ text-transform: uppercase;
1714
+ font-weight: bold;
1715
+ margin-left: 48px;
1716
+ color: #bf3727;
1717
+ }
1718
+
1719
+ .Snackbar .action a {
1720
+ text-decoration: none;
1721
+ color: #bf3727;
1722
+ }
1723
+
1724
+ .ScrollableTable .Scrollable .scrollbar {
1725
+ top: 56px;
1726
+ }
1727
+
1728
+ .ScrollableTable .Table {
1729
+ position: static;
1608
1730
  }
1609
1731
 
1610
1732
  .SpinningProgress {
@@ -1660,75 +1782,6 @@
1660
1782
  stroke-dashoffset: -53px;
1661
1783
  }
1662
1784
  }
1663
- .Button.FloatingActionButton {
1664
- position: absolute;
1665
- right: 16px;
1666
- bottom: 16px;
1667
- width: 56px;
1668
- height: 56px;
1669
- padding: 16px;
1670
- transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1671
- }
1672
-
1673
- .Button.FloatingActionButton.raised {
1674
- transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s ease-out, background-color 0.2s ease-out, box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
1675
- }
1676
-
1677
- .Button.FloatingActionButton.mini {
1678
- width: 40px;
1679
- height: 40px;
1680
- padding: 8px;
1681
- }
1682
-
1683
- .Button.FloatingActionButton.hidden {
1684
- bottom: -100px;
1685
- }
1686
-
1687
- .Snackbar {
1688
- transform: translateX(-50%);
1689
- overflow: hidden;
1690
- background-color: #323232;
1691
- padding: 14px 24px 14px 24px;
1692
- color: #fff;
1693
- min-width: 288px;
1694
- max-width: 568px;
1695
- position: fixed;
1696
- bottom: -50px;
1697
- left: 50%;
1698
- display: flex;
1699
- flex-wrap: nowrap;
1700
- align-items: center;
1701
- opacity: 0;
1702
- transition: bottom 0.25s ease, opacity 0.2s ease;
1703
- border-radius: 4px;
1704
- box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
1705
- }
1706
-
1707
- .Snackbar.shown {
1708
- bottom: 15px;
1709
- opacity: 1;
1710
- }
1711
-
1712
- .Snackbar .message {
1713
- overflow: hidden;
1714
- line-height: 1.2em;
1715
- min-height: 1.2em;
1716
- max-height: 2.4em;
1717
- flex: 1;
1718
- }
1719
-
1720
- .Snackbar .action {
1721
- text-transform: uppercase;
1722
- font-weight: bold;
1723
- margin-left: 48px;
1724
- color: #bf3727;
1725
- }
1726
-
1727
- .Snackbar .action a {
1728
- text-decoration: none;
1729
- color: #bf3727;
1730
- }
1731
-
1732
1785
  .Table {
1733
1786
  font-family: Roboto, sans-serif;
1734
1787
  font-size: 14px;
@@ -1851,92 +1904,39 @@
1851
1904
  margin: 0;
1852
1905
  }
1853
1906
 
1854
- .Switch {
1855
- display: inline-flex;
1856
- padding-top: 5px;
1857
- }
1858
-
1859
- .Switch .switch-input {
1860
- display: none;
1861
- }
1862
-
1863
- .Switch .switch-label {
1864
- position: relative;
1865
- display: inline-flex;
1866
- align-items: center;
1867
- min-width: 38px;
1868
- height: 24px;
1869
- cursor: pointer;
1870
- font-weight: 500;
1871
- text-align: left;
1872
- user-select: none;
1873
- margin: 0;
1874
- padding: 0;
1875
- padding-left: 44px;
1876
- box-sizing: border-box;
1877
- }
1878
-
1879
- .Switch .switch-label:before, .Switch .switch-label:after {
1880
- content: "";
1881
- box-sizing: border-box;
1907
+ .ModalMenu {
1882
1908
  position: absolute;
1883
- margin: 0;
1884
- outline: 0;
1885
- top: 50%;
1886
- transform: translate(0, -50%);
1887
- transition: all 0.3s ease;
1888
- }
1889
-
1890
- .Switch .switch-label:before {
1891
- left: 1px;
1892
- width: 34px;
1893
- height: 14px;
1894
- background-color: #9E9E9E;
1895
- border-radius: 8px;
1896
- }
1897
-
1898
- .Switch .switch-label:after {
1899
- left: 0;
1900
- width: 20px;
1901
- height: 20px;
1902
- background-color: #FAFAFA;
1903
- border-radius: 50%;
1904
- box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.14), 0 2px 2px 0 rgba(0, 0, 0, 0.098), 0 1px 5px 0 rgba(0, 0, 0, 0.084);
1905
- }
1906
-
1907
- .Switch .switch-label .toggle--on {
1908
- display: none;
1909
- }
1910
-
1911
- .Switch .switch-label .toggle--off {
1912
- display: inline-block;
1913
- }
1914
-
1915
- .Switch .switch-label .label {
1916
- margin-right: 5px;
1909
+ top: 10px;
1910
+ right: 50px;
1917
1911
  }
1918
1912
 
1919
- .Switch .switch-input:checked + .switch-label:before {
1920
- background-color: #A5D6A7;
1913
+ .ModalMenu .material-icons {
1914
+ color: #818181;
1921
1915
  }
1922
1916
 
1923
- .Switch .switch-input:checked + .switch-label:after {
1924
- background-color: #4CAF50;
1925
- transform: translate(80%, -50%);
1917
+ .ModalMenu .Button.animated {
1918
+ position: absolute;
1919
+ transition: opacity 150ms ease-in, right 200ms ease-in;
1920
+ opacity: 0;
1921
+ right: 0;
1922
+ top: 0;
1926
1923
  }
1927
1924
 
1928
- .Switch .switch-input:checked + .switch-label .toggle--on {
1929
- display: inline-block;
1925
+ .ModalMenu .Button.animated.mounting, .ModalMenu .Button.animated.mounted {
1926
+ opacity: 1;
1930
1927
  }
1931
1928
 
1932
- .Switch .switch-input:checked + .switch-label .toggle--off {
1933
- display: none;
1929
+ .ModalMenu .Button.animated.unmounting {
1930
+ transition: opacity 100ms ease-out, right 200ms ease-out;
1934
1931
  }
1935
1932
 
1936
- .ScrollableTable .Scrollable .scrollbar {
1937
- top: 56px;
1933
+ .ModalMenu .Button.active {
1934
+ background: #EBEBEB;
1938
1935
  }
1939
1936
 
1940
- .ScrollableTable .Table {
1941
- position: static;
1937
+ .ModalMenu .separator {
1938
+ height: 24px;
1939
+ width: 1px;
1940
+ background-color: #D9D9D9;
1941
+ margin-left: 4px;
1942
1942
  }