react-ui-basics 0.0.211 → 0.0.213

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 (50) 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/CircleProgress.d.ts +0 -1
  9. package/Dialog.js +1 -13
  10. package/Dialog.js.map +1 -1
  11. package/Dropzone.js +1 -13
  12. package/Dropzone.js.map +1 -1
  13. package/FormUploadProgress.js +1 -12
  14. package/FormUploadProgress.js.map +1 -1
  15. package/ImageGallery.js +7 -7
  16. package/ImageGallery.js.map +1 -1
  17. package/MaterialIcon.d.ts +0 -1
  18. package/Modal.js +1 -8
  19. package/Modal.js.map +1 -1
  20. package/Scrollable.js +2 -14
  21. package/Scrollable.js.map +1 -1
  22. package/Size.d.ts +0 -1
  23. package/SpinningProgress.d.ts +0 -1
  24. package/TextField.js +1 -23
  25. package/TextField.js.map +1 -1
  26. package/Tools.d.ts +1 -0
  27. package/Tools.js +2 -1
  28. package/Tools.js.map +1 -1
  29. package/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  30. package/bundle.css +736 -736
  31. package/package.json +3 -1
  32. package/router/Link.js +1 -6
  33. package/router/Link.js.map +1 -1
  34. package/router/NavLink.js +0 -3
  35. package/router/NavLink.js.map +1 -1
  36. package/router/Route.js +1 -8
  37. package/router/Route.js.map +1 -1
  38. package/src/Tools.ts +2 -0
  39. package/src/store/{ProxyTools.test.js → ProxyTools.test.ts} +11 -1
  40. package/src/store/ProxyTools.ts +85 -0
  41. package/src/store/Store.test.js +86 -0
  42. package/src/store/Store.ts +55 -33
  43. package/store/ProxyTools.d.ts +1 -0
  44. package/store/ProxyTools.js +72 -61
  45. package/store/ProxyTools.js.map +1 -1
  46. package/store/ProxyTools.test.d.ts +1 -0
  47. package/store/Store.d.ts +6 -7
  48. package/store/Store.js +44 -26
  49. package/store/Store.js.map +1 -1
  50. package/src/store/ProxyTools.js +0 -89
package/bundle.css CHANGED
@@ -1,10 +1,167 @@
1
- .animated {
2
- transition: opacity 250ms ease;
3
- opacity: 0;
1
+ .Button {
2
+ position: relative;
3
+ min-width: 64px;
4
+ min-height: 36px;
5
+ height: 24px;
6
+ margin: 0px;
7
+ padding: 0px 16px;
8
+ border: none;
9
+ outline: none;
10
+ font-size: 14px;
11
+ font-weight: 500;
12
+ letter-spacing: 1.25px;
13
+ background: #dfdfdf;
14
+ text-transform: uppercase;
15
+ font-family: Roboto, sans-serif;
16
+ -webkit-tap-highlight-color: transparent;
17
+ display: inline-flex;
18
+ justify-content: center;
19
+ align-items: center;
20
+ cursor: pointer;
21
+ overflow: hidden;
22
+ user-select: none;
23
+ border-radius: 3px;
24
+ transition: all 0.2s ease;
4
25
  }
5
26
 
6
- .animated.mounting, .animated.mounted {
27
+ .Button.flat {
28
+ background-color: transparent;
29
+ }
30
+
31
+ .Button.flat:hover {
32
+ background-color: rgba(0, 0, 0, 0.05);
33
+ }
34
+
35
+ .Button.green {
36
+ background-color: #43a047;
37
+ color: white;
38
+ }
39
+
40
+ .Button.green:hover {
41
+ background-color: #3b8e3f;
42
+ }
43
+
44
+ .Button.blue {
45
+ background-color: #039be5;
46
+ color: white;
47
+ }
48
+
49
+ .Button.blue:hover {
50
+ background-color: #038acc;
51
+ }
52
+
53
+ .Button.red {
54
+ background-color: #e53935;
55
+ color: white;
56
+ }
57
+
58
+ .Button.red:hover {
59
+ background-color: #e2231e;
60
+ }
61
+
62
+ .Button.black {
63
+ background-color: #1e252d;
64
+ color: white;
65
+ }
66
+
67
+ .Button.black:hover {
68
+ background-color: #14181e;
69
+ }
70
+
71
+ .Button.gray {
72
+ background: #D9D9D9;
73
+ color: #999999;
74
+ }
75
+
76
+ .Button.gray:hover {
77
+ background-color: #cccccc;
78
+ }
79
+
80
+ .Button.small {
81
+ padding: 0px 8px;
82
+ min-height: 16px;
83
+ min-width: 16px;
84
+ }
85
+
86
+ .Button > .material-icons {
87
+ margin-right: 10px;
88
+ }
89
+
90
+ .Button.round {
91
+ padding: 0px;
92
+ min-width: 36px;
93
+ border-radius: 50%;
94
+ }
95
+
96
+ .Button.round > .material-icons {
97
+ margin: 0px;
98
+ }
99
+
100
+ .Button .ripple {
101
+ position: absolute;
102
+ background: rgba(0, 0, 0, 0.1);
103
+ border-radius: 100%;
104
+ transform: scale(0);
105
+ pointer-events: none;
106
+ transition: opacity 0.2s ease-out;
107
+ }
108
+
109
+ .Button .ripple.show {
110
+ animation: ripple 0.35s ease-out;
111
+ }
112
+
113
+ .Button:active .ripple.showed {
114
+ opacity: 1;
115
+ }
116
+
117
+ .Button:focus .ripple.focused {
7
118
  opacity: 1;
119
+ transition: opacity 0.2s ease-out, transform 0.2s ease-out;
120
+ transform: scale(1);
121
+ animation: resize 1.25s ease-out infinite;
122
+ animation-delay: 0.2s;
123
+ animation-direction: alternate;
124
+ }
125
+
126
+ .Button .ripple.showed {
127
+ transform: scale(2);
128
+ opacity: 0;
129
+ }
130
+
131
+ @keyframes ripple {
132
+ to {
133
+ transform: scale(2);
134
+ }
135
+ }
136
+ @keyframes resize {
137
+ to {
138
+ transform: scale(0.9);
139
+ }
140
+ }
141
+ .Button.raised {
142
+ transition: color 0.2s ease-out, background-color 0.2s ease-out, box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
143
+ }
144
+
145
+ .Button.raised:hover {
146
+ box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.25);
147
+ }
148
+
149
+ .Button.raised:active {
150
+ box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.35);
151
+ }
152
+
153
+ .Button.disabled {
154
+ box-shadow: none;
155
+ background: #D9D9D9;
156
+ color: #999999;
157
+ }
158
+
159
+ .Button.disabled:hover {
160
+ background-color: #cccccc;
161
+ }
162
+
163
+ .Button::-moz-focus-inner {
164
+ border: 0;
8
165
  }
9
166
 
10
167
  .AutocompleteSelect {
@@ -302,230 +459,140 @@
302
459
  position: absolute;
303
460
  }
304
461
 
305
- .Dropzone {
306
- position: relative;
462
+ .animated {
463
+ transition: opacity 250ms ease;
464
+ opacity: 0;
307
465
  }
308
466
 
309
- .Dropzone > .overlay {
310
- position: absolute;
311
- left: 0;
312
- right: 0;
313
- top: 0;
314
- bottom: 0;
315
- background-color: #38ADC4;
316
- z-index: 1;
317
- opacity: 0;
318
- transition: all 0.2s ease;
319
- transition-delay: 100ms;
320
- visibility: hidden;
321
- display: flex;
322
- justify-content: center;
323
- align-items: center;
467
+ .animated.mounting, .animated.mounted {
468
+ opacity: 1;
324
469
  }
325
470
 
326
- .Dropzone > .overlay .drop {
327
- border-radius: 4px;
328
- border: 1px dashed #FFFFFF;
329
- position: absolute;
330
- top: 18px;
331
- left: 18px;
332
- right: 18px;
333
- bottom: 18px;
334
- display: flex;
335
- justify-content: center;
336
- align-items: center;
337
- font-weight: 500;
338
- font-size: 18px;
339
- color: #FFFFFF;
471
+ .DialogModal {
472
+ overflow: hidden;
340
473
  }
341
474
 
342
- .Dropzone.dragging > .overlay {
343
- opacity: 0.7;
344
- visibility: visible;
345
- transition-delay: 0s;
475
+ .DialogModal .content {
476
+ top: 20vh;
346
477
  }
347
478
 
348
- .Dropzone.dragging > * {
349
- pointer-events: none;
479
+ .Dialog {
480
+ background-color: white;
481
+ min-width: 460px;
482
+ max-width: 40vw;
483
+ padding: 15px;
350
484
  }
351
485
 
352
- .Dropzone > input.file {
353
- position: absolute;
354
- left: 0;
355
- right: 0;
356
- top: 0;
357
- bottom: 0;
358
- width: 100%;
359
- height: 100%;
360
- opacity: 0;
361
- cursor: pointer;
362
- z-index: 1;
486
+ .Dialog .title {
487
+ margin-bottom: 15px;
488
+ padding: 20px 50px 0px 30px;
489
+ font-size: 1.25rem;
490
+ line-height: 2rem;
491
+ font-weight: 400;
492
+ letter-spacing: 0.0125em;
363
493
  }
364
494
 
365
- .Button {
495
+ .Dialog .description {
496
+ color: rgba(0, 0, 0, 0.54);
497
+ font-size: 1rem;
498
+ line-height: 1.5rem;
499
+ font-weight: 400;
500
+ letter-spacing: 0.03125em;
501
+ margin-top: 20px;
502
+ padding: 0 24px 24px;
503
+ }
504
+
505
+ .Dialog > div.row {
506
+ margin-bottom: 15px;
507
+ }
508
+
509
+ .Dialog > div.row:last-child {
510
+ margin-bottom: 0;
511
+ }
512
+
513
+ .FilteredList {
514
+ max-height: 250px;
366
515
  position: relative;
367
- min-width: 64px;
368
- min-height: 36px;
369
- height: 24px;
370
- margin: 0px;
371
- padding: 0px 16px;
372
- border: none;
373
- outline: none;
374
- font-size: 14px;
375
- font-weight: 500;
376
- letter-spacing: 1.25px;
377
- background: #dfdfdf;
378
- text-transform: uppercase;
379
- font-family: Roboto, sans-serif;
380
- -webkit-tap-highlight-color: transparent;
381
- display: inline-flex;
382
- justify-content: center;
383
- align-items: center;
384
- cursor: pointer;
385
- overflow: hidden;
386
- user-select: none;
387
- border-radius: 3px;
388
- transition: all 0.2s ease;
389
- }
390
-
391
- .Button.flat {
392
- background-color: transparent;
393
- }
394
-
395
- .Button.flat:hover {
396
- background-color: rgba(0, 0, 0, 0.05);
397
- }
398
-
399
- .Button.green {
400
- background-color: #43a047;
401
- color: white;
402
- }
403
-
404
- .Button.green:hover {
405
- background-color: #3b8e3f;
406
- }
407
-
408
- .Button.blue {
409
- background-color: #039be5;
410
- color: white;
411
- }
412
-
413
- .Button.blue:hover {
414
- background-color: #038acc;
415
- }
416
-
417
- .Button.red {
418
- background-color: #e53935;
419
- color: white;
420
- }
421
-
422
- .Button.red:hover {
423
- background-color: #e2231e;
424
516
  }
425
517
 
426
- .Button.black {
427
- background-color: #1e252d;
428
- color: white;
429
- }
430
-
431
- .Button.black:hover {
432
- background-color: #14181e;
433
- }
434
-
435
- .Button.gray {
436
- background: #D9D9D9;
437
- color: #999999;
438
- }
439
-
440
- .Button.gray:hover {
441
- background-color: #cccccc;
442
- }
443
-
444
- .Button.small {
445
- padding: 0px 8px;
446
- min-height: 16px;
447
- min-width: 16px;
448
- }
449
-
450
- .Button > .material-icons {
451
- margin-right: 10px;
452
- }
453
-
454
- .Button.round {
455
- padding: 0px;
456
- min-width: 36px;
457
- border-radius: 50%;
518
+ .FilteredList.popup {
519
+ padding: 0;
520
+ visibility: hidden;
521
+ position: absolute;
522
+ background: white;
523
+ z-index: 4;
524
+ 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);
525
+ transition: all 0.2s ease-out;
526
+ top: calc(100% + 4px);
527
+ opacity: 0;
528
+ border-radius: 2px;
458
529
  }
459
530
 
460
- .Button.round > .material-icons {
461
- margin: 0px;
531
+ .FilteredList.popup.visible {
532
+ opacity: 1;
533
+ visibility: visible;
462
534
  }
463
535
 
464
- .Button .ripple {
465
- position: absolute;
466
- background: rgba(0, 0, 0, 0.1);
467
- border-radius: 100%;
468
- transform: scale(0);
469
- pointer-events: none;
536
+ .FilteredList.portal {
470
537
  transition: opacity 0.2s ease-out;
471
538
  }
472
539
 
473
- .Button .ripple.show {
474
- animation: ripple 0.35s ease-out;
540
+ .FilteredList.inline {
541
+ max-height: 225px;
542
+ margin-top: 5px;
475
543
  }
476
544
 
477
- .Button:active .ripple.showed {
478
- opacity: 1;
545
+ .FilteredList .child {
546
+ display: flex;
547
+ flex-flow: row nowrap;
548
+ align-items: center;
549
+ white-space: nowrap;
550
+ font-size: 14px;
551
+ color: rgb(34, 34, 34);
552
+ height: 30px;
553
+ padding: 5px 10px;
554
+ padding-right: 15px;
555
+ cursor: pointer;
556
+ overflow: hidden;
557
+ transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
558
+ border-left: 5px solid #4AC263;
559
+ padding-left: 15px;
560
+ margin-left: -5px;
479
561
  }
480
562
 
481
- .Button:focus .ripple.focused {
482
- opacity: 1;
483
- transition: opacity 0.2s ease-out, transform 0.2s ease-out;
484
- transform: scale(1);
485
- animation: resize 1.25s ease-out infinite;
486
- animation-delay: 0.2s;
487
- animation-direction: alternate;
563
+ .FilteredList .child.hidden {
564
+ height: 0 !important;
565
+ padding: 0 !important;
488
566
  }
489
567
 
490
- .Button .ripple.showed {
491
- transform: scale(2);
492
- opacity: 0;
568
+ .FilteredList .child.selected {
569
+ background-color: #F0F0F0;
570
+ padding-left: 10px;
571
+ margin-left: 0px;
493
572
  }
494
573
 
495
- @keyframes ripple {
496
- to {
497
- transform: scale(2);
498
- }
499
- }
500
- @keyframes resize {
501
- to {
502
- transform: scale(0.9);
503
- }
504
- }
505
- .Button.raised {
506
- transition: color 0.2s ease-out, background-color 0.2s ease-out, box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
574
+ .FilteredList .child.active {
575
+ background-color: rgb(238, 238, 238);
507
576
  }
508
577
 
509
- .Button.raised:hover {
510
- box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.25);
578
+ .FilteredList .child {
579
+ margin-top: 8px;
511
580
  }
512
581
 
513
- .Button.raised:active {
514
- box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.35);
582
+ .FilteredList .child.hidden {
583
+ margin-top: 0;
515
584
  }
516
585
 
517
- .Button.disabled {
518
- box-shadow: none;
519
- background: #D9D9D9;
520
- color: #999999;
586
+ .FilteredList .child:not(.hidden) ~ .child {
587
+ margin-top: 0;
521
588
  }
522
589
 
523
- .Button.disabled:hover {
524
- background-color: #cccccc;
590
+ .FilteredList .child:not(.hidden) ~ .child:last-child {
591
+ margin-bottom: 8px;
525
592
  }
526
593
 
527
- .Button::-moz-focus-inner {
528
- border: 0;
594
+ .FilteredList .child:not(.hidden):last-child {
595
+ margin-bottom: 8px;
529
596
  }
530
597
 
531
598
  .FormUploadProgress {
@@ -597,131 +664,64 @@
597
664
  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
598
665
  }
599
666
 
600
- .FilteredList {
601
- max-height: 250px;
667
+ .Dropzone {
602
668
  position: relative;
603
669
  }
604
670
 
605
- .FilteredList.popup {
606
- padding: 0;
607
- visibility: hidden;
671
+ .Dropzone > .overlay {
608
672
  position: absolute;
609
- background: white;
610
- z-index: 4;
611
- 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);
612
- transition: all 0.2s ease-out;
613
- top: calc(100% + 4px);
673
+ left: 0;
674
+ right: 0;
675
+ top: 0;
676
+ bottom: 0;
677
+ background-color: #38ADC4;
678
+ z-index: 1;
614
679
  opacity: 0;
615
- border-radius: 2px;
616
- }
617
-
618
- .FilteredList.popup.visible {
619
- opacity: 1;
620
- visibility: visible;
621
- }
622
-
623
- .FilteredList.portal {
624
- transition: opacity 0.2s ease-out;
625
- }
626
-
627
- .FilteredList.inline {
628
- max-height: 225px;
629
- margin-top: 5px;
630
- }
631
-
632
- .FilteredList .child {
680
+ transition: all 0.2s ease;
681
+ transition-delay: 100ms;
682
+ visibility: hidden;
633
683
  display: flex;
634
- flex-flow: row nowrap;
684
+ justify-content: center;
635
685
  align-items: center;
636
- white-space: nowrap;
637
- font-size: 14px;
638
- color: rgb(34, 34, 34);
639
- height: 30px;
640
- padding: 5px 10px;
641
- padding-right: 15px;
642
- cursor: pointer;
643
- overflow: hidden;
644
- transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
645
- border-left: 5px solid #4AC263;
646
- padding-left: 15px;
647
- margin-left: -5px;
648
- }
649
-
650
- .FilteredList .child.hidden {
651
- height: 0 !important;
652
- padding: 0 !important;
653
- }
654
-
655
- .FilteredList .child.selected {
656
- background-color: #F0F0F0;
657
- padding-left: 10px;
658
- margin-left: 0px;
659
- }
660
-
661
- .FilteredList .child.active {
662
- background-color: rgb(238, 238, 238);
663
- }
664
-
665
- .FilteredList .child {
666
- margin-top: 8px;
667
- }
668
-
669
- .FilteredList .child.hidden {
670
- margin-top: 0;
671
- }
672
-
673
- .FilteredList .child:not(.hidden) ~ .child {
674
- margin-top: 0;
675
- }
676
-
677
- .FilteredList .child:not(.hidden) ~ .child:last-child {
678
- margin-bottom: 8px;
679
- }
680
-
681
- .FilteredList .child:not(.hidden):last-child {
682
- margin-bottom: 8px;
683
- }
684
-
685
- .DialogModal {
686
- overflow: hidden;
687
- }
688
-
689
- .DialogModal .content {
690
- top: 20vh;
691
- }
692
-
693
- .Dialog {
694
- background-color: white;
695
- min-width: 460px;
696
- max-width: 40vw;
697
- padding: 15px;
698
686
  }
699
687
 
700
- .Dialog .title {
701
- margin-bottom: 15px;
702
- padding: 20px 50px 0px 30px;
703
- font-size: 1.25rem;
704
- line-height: 2rem;
705
- font-weight: 400;
706
- letter-spacing: 0.0125em;
688
+ .Dropzone > .overlay .drop {
689
+ border-radius: 4px;
690
+ border: 1px dashed #FFFFFF;
691
+ position: absolute;
692
+ top: 18px;
693
+ left: 18px;
694
+ right: 18px;
695
+ bottom: 18px;
696
+ display: flex;
697
+ justify-content: center;
698
+ align-items: center;
699
+ font-weight: 500;
700
+ font-size: 18px;
701
+ color: #FFFFFF;
707
702
  }
708
703
 
709
- .Dialog .description {
710
- color: rgba(0, 0, 0, 0.54);
711
- font-size: 1rem;
712
- line-height: 1.5rem;
713
- font-weight: 400;
714
- letter-spacing: 0.03125em;
715
- margin-top: 20px;
716
- padding: 0 24px 24px;
704
+ .Dropzone.dragging > .overlay {
705
+ opacity: 0.7;
706
+ visibility: visible;
707
+ transition-delay: 0s;
717
708
  }
718
709
 
719
- .Dialog > div.row {
720
- margin-bottom: 15px;
710
+ .Dropzone.dragging > * {
711
+ pointer-events: none;
721
712
  }
722
713
 
723
- .Dialog > div.row:last-child {
724
- margin-bottom: 0;
714
+ .Dropzone > input.file {
715
+ position: absolute;
716
+ left: 0;
717
+ right: 0;
718
+ top: 0;
719
+ bottom: 0;
720
+ width: 100%;
721
+ height: 100%;
722
+ opacity: 0;
723
+ cursor: pointer;
724
+ z-index: 1;
725
725
  }
726
726
 
727
727
  .Scrollable {
@@ -765,205 +765,132 @@
765
765
  max-height: unset;
766
766
  }
767
767
 
768
- .Scrollable.without-scroll > .viewport {
769
- padding-right: 0;
770
- margin-right: 0;
771
- }
772
-
773
- .Scrollable.without-scroll > .scrollbar {
774
- visibility: hidden;
775
- }
776
-
777
- .Scrollable .scrollbar {
778
- position: absolute;
779
- right: 0px;
780
- top: 0px;
781
- width: 5px;
782
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
783
- transition-delay: 0.5s;
784
- z-index: 1;
785
- }
786
-
787
- .Scrollable .scrollbar.auto, .Scrollable .scrollbar.hidden {
788
- opacity: 0;
789
- }
790
-
791
- .Scrollable .scrollbar .thumb {
792
- background-color: rgba(0, 0, 0, 0.3);
793
- width: 5px;
794
- position: absolute;
795
- right: 0px;
796
- top: 0px;
797
- user-select: none;
798
- will-change: top;
799
- border-radius: 2px;
800
- }
801
-
802
- .Scrollable .scrollbar .thumb:hover {
803
- background-color: rgba(0, 0, 0, 0.5);
804
- }
805
-
806
- .Scrollable .scrollbar .thumb:active {
807
- background-color: rgba(0, 0, 0, 0.7);
808
- }
809
-
810
- .Scrollable .scrollbar.horizontal {
811
- left: 0px;
812
- right: 0px;
813
- height: 5px;
814
- bottom: 0;
815
- width: unset;
816
- top: unset;
817
- }
818
-
819
- .Scrollable .scrollbar.horizontal .thumb {
820
- height: 5px;
821
- left: 0px;
822
- bottom: 0px;
823
- will-change: left;
824
- }
825
-
826
- .TextField {
827
- position: relative;
828
- width: 100%;
829
- }
830
-
831
- .TextField > label {
832
- font-family: Roboto, sans-serif;
833
- color: rgba(0, 0, 0, 0.3);
834
- font-size: 16px;
835
- position: absolute;
836
- left: 0px;
837
- top: 16px;
838
- margin-top: -16px;
839
- transition: all 0.2s ease;
840
- user-select: none;
841
- cursor: text;
842
- }
843
-
844
- .TextField > input {
845
- font-family: Roboto, sans-serif;
846
- color: #1e252d;
847
- height: 19px;
848
- font-size: 16px;
849
- width: 100%;
850
- border: 0px;
851
- padding-bottom: 4px;
852
- padding-top: 0;
853
- outline-color: rgba(0, 0, 0, 0);
854
- }
855
-
856
- .TextField > input:focus {
857
- outline: none;
858
- }
859
-
860
- .TextField > input:disabled {
861
- color: gray;
862
- background-color: white;
863
- }
864
-
865
- .TextField > input:disabled + .border {
866
- height: 0px;
867
- border-bottom: 2px dotted rgb(224, 224, 224);
868
- }
869
-
870
- .TextField > input::placeholder {
871
- font-family: Roboto, sans-serif;
872
- color: rgba(0, 0, 0, 0.3);
873
- opacity: 1;
874
- }
875
-
876
- .TextField > .border {
877
- border-bottom: 1px solid rgb(224, 224, 224);
878
- height: 1px;
879
- position: relative;
768
+ .Scrollable.without-scroll > .viewport {
769
+ padding-right: 0;
770
+ margin-right: 0;
880
771
  }
881
772
 
882
- .TextField > .border .line {
883
- left: 50%;
884
- width: 0;
885
- height: 2px;
886
- min-height: 2px;
887
- background-color: rgb(0, 188, 212);
888
- transition: all 0.2s ease;
773
+ .Scrollable.without-scroll > .scrollbar {
774
+ visibility: hidden;
775
+ }
776
+
777
+ .Scrollable .scrollbar {
889
778
  position: absolute;
779
+ right: 0px;
780
+ top: 0px;
781
+ width: 5px;
782
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
783
+ transition-delay: 0.5s;
784
+ z-index: 1;
890
785
  }
891
786
 
892
- .TextField > .error {
893
- text-align: left;
894
- font-size: 10px;
895
- min-height: 0;
896
- line-height: 14px;
897
- color: rgb(244, 67, 54);
898
- visibility: hidden;
787
+ .Scrollable .scrollbar.auto, .Scrollable .scrollbar.hidden {
899
788
  opacity: 0;
900
- transition: all 0.2s ease;
901
789
  }
902
790
 
903
- .TextField.focused > label, .TextField.withValue > label {
904
- top: 4px;
905
- font-size: 12px;
906
- line-height: 14px;
791
+ .Scrollable .scrollbar .thumb {
792
+ background-color: rgba(0, 0, 0, 0.3);
793
+ width: 5px;
794
+ position: absolute;
795
+ right: 0px;
796
+ top: 0px;
797
+ user-select: none;
798
+ will-change: top;
799
+ border-radius: 2px;
907
800
  }
908
801
 
909
- .TextField.errored > .error {
910
- visibility: visible;
911
- opacity: 1;
802
+ .Scrollable .scrollbar .thumb:hover {
803
+ background-color: rgba(0, 0, 0, 0.5);
912
804
  }
913
805
 
914
- .TextField.errored > .border {
915
- border-bottom-color: rgb(244, 67, 54);
806
+ .Scrollable .scrollbar .thumb:active {
807
+ background-color: rgba(0, 0, 0, 0.7);
916
808
  }
917
809
 
918
- .TextField.errored > label {
919
- color: rgb(244, 67, 54);
810
+ .Scrollable .scrollbar.horizontal {
811
+ left: 0px;
812
+ right: 0px;
813
+ height: 5px;
814
+ bottom: 0;
815
+ width: unset;
816
+ top: unset;
920
817
  }
921
818
 
922
- .TextField.focused > label {
923
- color: rgb(0, 188, 212);
819
+ .Scrollable .scrollbar.horizontal .thumb {
820
+ height: 5px;
821
+ left: 0px;
822
+ bottom: 0px;
823
+ will-change: left;
924
824
  }
925
825
 
926
- .TextField.focused > .border .line {
826
+ .Modal {
827
+ display: block;
828
+ position: fixed;
829
+ top: 0;
927
830
  left: 0;
928
- width: 100%;
831
+ right: 0;
832
+ bottom: 100%;
833
+ overflow-y: scroll;
834
+ transition: bottom 0ms linear;
835
+ transition-delay: 0.2s;
929
836
  }
930
837
 
931
- .TextField.disabled label, .TextField.disabled input {
932
- cursor: not-allowed;
838
+ .Modal.show {
839
+ transition-delay: 0s;
840
+ bottom: 0;
933
841
  }
934
842
 
935
- .TextField.withLabel {
936
- margin-top: 15px;
843
+ .Modal > .overlay {
844
+ position: fixed;
845
+ top: 0;
846
+ bottom: 100%;
847
+ left: 0;
848
+ right: 0;
849
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
850
+ opacity: 0;
851
+ background-color: black;
852
+ pointer-events: none;
937
853
  }
938
854
 
939
- .TextField input::-webkit-contacts-auto-fill-button {
940
- visibility: hidden;
941
- display: none !important;
942
- pointer-events: none;
855
+ .Modal > .overlay.show {
856
+ opacity: 0.5;
857
+ bottom: 0;
858
+ }
859
+
860
+ .Modal > .content {
861
+ left: 50%;
862
+ top: 10vh;
863
+ margin-bottom: 10vh;
864
+ font-size: 16px;
865
+ padding: 0;
866
+ opacity: 0;
867
+ transition: opacity 0.25s ease, transform 0.25s ease;
868
+ transform: scaleY(0) translateY(-200px) translateX(-50%);
869
+ transform-origin: top;
943
870
  position: absolute;
944
- right: 0;
871
+ border-radius: 2px;
872
+ box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.3);
945
873
  }
946
874
 
947
- .TextField input:-webkit-autofill {
948
- -webkit-box-shadow: inset 0 0 0px 9999px white;
875
+ .Modal > .content.show {
876
+ opacity: 1;
877
+ transform: scaleY(1) translateY(0px) translateX(-50%);
949
878
  }
950
879
 
951
- @keyframes shake {
952
- 0%, 100% {
953
- transform: translateX(0);
954
- }
955
- 20%, 60% {
956
- transform: translateX(-5px);
957
- }
958
- 40%, 80% {
959
- transform: translateX(5px);
960
- }
880
+ .Modal > .content > .Scrollable {
881
+ overflow: visible;
882
+ max-height: 80vh;
961
883
  }
962
- .TextField .shake {
963
- animation-duration: 0.5s;
964
- animation-fill-mode: both;
965
- animation-timing-function: ease-in-out;
966
- animation-name: shake;
884
+
885
+ .Modal > .content > .Scrollable > .viewport {
886
+ min-width: 10px;
887
+ min-height: 10px;
888
+ }
889
+
890
+ .Modal > .content > .Button.close {
891
+ top: 10px;
892
+ right: 10px;
893
+ position: absolute;
967
894
  }
968
895
 
969
896
  .ImageGallery {
@@ -1201,92 +1128,165 @@
1201
1128
  font-size: 24px;
1202
1129
  }
1203
1130
 
1204
- .Modal {
1205
- display: block;
1206
- position: fixed;
1207
- top: 0;
1208
- left: 0;
1209
- right: 0;
1210
- bottom: 100%;
1211
- overflow-y: scroll;
1212
- transition: bottom 0ms linear;
1213
- transition-delay: 0.2s;
1131
+ .DNDContainer .DroppableList .Draggable {
1132
+ transform: unset;
1133
+ transition: unset;
1134
+ opacity: 1;
1135
+ }
1136
+
1137
+ .DNDContainer .DroppableList .Draggable.dragged {
1138
+ transition: unset !important;
1139
+ }
1140
+
1141
+ .DNDContainer .DroppableList.hover .Draggable {
1142
+ transition: transform 0.2s ease-in;
1143
+ }
1144
+
1145
+ .DNDContainer .DroppableList.resetting .Draggable {
1146
+ transition: transform 0.1s ease-in;
1147
+ }
1148
+
1149
+ .TextField {
1150
+ position: relative;
1151
+ width: 100%;
1152
+ }
1153
+
1154
+ .TextField > label {
1155
+ font-family: Roboto, sans-serif;
1156
+ color: rgba(0, 0, 0, 0.3);
1157
+ font-size: 16px;
1158
+ position: absolute;
1159
+ left: 0px;
1160
+ top: 16px;
1161
+ margin-top: -16px;
1162
+ transition: all 0.2s ease;
1163
+ user-select: none;
1164
+ cursor: text;
1165
+ }
1166
+
1167
+ .TextField > input {
1168
+ font-family: Roboto, sans-serif;
1169
+ color: #1e252d;
1170
+ height: 19px;
1171
+ font-size: 16px;
1172
+ width: 100%;
1173
+ border: 0px;
1174
+ padding-bottom: 4px;
1175
+ padding-top: 0;
1176
+ outline-color: rgba(0, 0, 0, 0);
1177
+ }
1178
+
1179
+ .TextField > input:focus {
1180
+ outline: none;
1181
+ }
1182
+
1183
+ .TextField > input:disabled {
1184
+ color: gray;
1185
+ background-color: white;
1186
+ }
1187
+
1188
+ .TextField > input:disabled + .border {
1189
+ height: 0px;
1190
+ border-bottom: 2px dotted rgb(224, 224, 224);
1191
+ }
1192
+
1193
+ .TextField > input::placeholder {
1194
+ font-family: Roboto, sans-serif;
1195
+ color: rgba(0, 0, 0, 0.3);
1196
+ opacity: 1;
1197
+ }
1198
+
1199
+ .TextField > .border {
1200
+ border-bottom: 1px solid rgb(224, 224, 224);
1201
+ height: 1px;
1202
+ position: relative;
1203
+ }
1204
+
1205
+ .TextField > .border .line {
1206
+ left: 50%;
1207
+ width: 0;
1208
+ height: 2px;
1209
+ min-height: 2px;
1210
+ background-color: rgb(0, 188, 212);
1211
+ transition: all 0.2s ease;
1212
+ position: absolute;
1213
+ }
1214
+
1215
+ .TextField > .error {
1216
+ text-align: left;
1217
+ font-size: 10px;
1218
+ min-height: 0;
1219
+ line-height: 14px;
1220
+ color: rgb(244, 67, 54);
1221
+ visibility: hidden;
1222
+ opacity: 0;
1223
+ transition: all 0.2s ease;
1214
1224
  }
1215
1225
 
1216
- .Modal.show {
1217
- transition-delay: 0s;
1218
- bottom: 0;
1226
+ .TextField.focused > label, .TextField.withValue > label {
1227
+ top: 4px;
1228
+ font-size: 12px;
1229
+ line-height: 14px;
1219
1230
  }
1220
1231
 
1221
- .Modal > .overlay {
1222
- position: fixed;
1223
- top: 0;
1224
- bottom: 100%;
1225
- left: 0;
1226
- right: 0;
1227
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1228
- opacity: 0;
1229
- background-color: black;
1230
- pointer-events: none;
1232
+ .TextField.errored > .error {
1233
+ visibility: visible;
1234
+ opacity: 1;
1231
1235
  }
1232
1236
 
1233
- .Modal > .overlay.show {
1234
- opacity: 0.5;
1235
- bottom: 0;
1237
+ .TextField.errored > .border {
1238
+ border-bottom-color: rgb(244, 67, 54);
1236
1239
  }
1237
1240
 
1238
- .Modal > .content {
1239
- left: 50%;
1240
- top: 10vh;
1241
- margin-bottom: 10vh;
1242
- font-size: 16px;
1243
- padding: 0;
1244
- opacity: 0;
1245
- transition: opacity 0.25s ease, transform 0.25s ease;
1246
- transform: scaleY(0) translateY(-200px) translateX(-50%);
1247
- transform-origin: top;
1248
- position: absolute;
1249
- border-radius: 2px;
1250
- box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.3);
1241
+ .TextField.errored > label {
1242
+ color: rgb(244, 67, 54);
1251
1243
  }
1252
1244
 
1253
- .Modal > .content.show {
1254
- opacity: 1;
1255
- transform: scaleY(1) translateY(0px) translateX(-50%);
1245
+ .TextField.focused > label {
1246
+ color: rgb(0, 188, 212);
1256
1247
  }
1257
1248
 
1258
- .Modal > .content > .Scrollable {
1259
- overflow: visible;
1260
- max-height: 80vh;
1249
+ .TextField.focused > .border .line {
1250
+ left: 0;
1251
+ width: 100%;
1261
1252
  }
1262
1253
 
1263
- .Modal > .content > .Scrollable > .viewport {
1264
- min-width: 10px;
1265
- min-height: 10px;
1254
+ .TextField.disabled label, .TextField.disabled input {
1255
+ cursor: not-allowed;
1266
1256
  }
1267
1257
 
1268
- .Modal > .content > .Button.close {
1269
- top: 10px;
1270
- right: 10px;
1271
- position: absolute;
1258
+ .TextField.withLabel {
1259
+ margin-top: 15px;
1272
1260
  }
1273
1261
 
1274
- .DNDContainer .DroppableList .Draggable {
1275
- transform: unset;
1276
- transition: unset;
1277
- opacity: 1;
1262
+ .TextField input::-webkit-contacts-auto-fill-button {
1263
+ visibility: hidden;
1264
+ display: none !important;
1265
+ pointer-events: none;
1266
+ position: absolute;
1267
+ right: 0;
1278
1268
  }
1279
1269
 
1280
- .DNDContainer .DroppableList .Draggable.dragged {
1281
- transition: unset !important;
1270
+ .TextField input:-webkit-autofill {
1271
+ -webkit-box-shadow: inset 0 0 0px 9999px white;
1282
1272
  }
1283
1273
 
1284
- .DNDContainer .DroppableList.hover .Draggable {
1285
- transition: transform 0.2s ease-in;
1274
+ @keyframes shake {
1275
+ 0%, 100% {
1276
+ transform: translateX(0);
1277
+ }
1278
+ 20%, 60% {
1279
+ transform: translateX(-5px);
1280
+ }
1281
+ 40%, 80% {
1282
+ transform: translateX(5px);
1283
+ }
1286
1284
  }
1287
-
1288
- .DNDContainer .DroppableList.resetting .Draggable {
1289
- transition: transform 0.1s ease-in;
1285
+ .TextField .shake {
1286
+ animation-duration: 0.5s;
1287
+ animation-fill-mode: both;
1288
+ animation-timing-function: ease-in-out;
1289
+ animation-name: shake;
1290
1290
  }
1291
1291
 
1292
1292
  .CalendarMonthView {
@@ -1314,6 +1314,73 @@
1314
1314
  height: 100%;
1315
1315
  }
1316
1316
 
1317
+ .Checkbox {
1318
+ position: relative;
1319
+ white-space: pre;
1320
+ }
1321
+
1322
+ .Checkbox *, .Checkbox *:before, .Checkbox *:after {
1323
+ box-sizing: border-box;
1324
+ }
1325
+
1326
+ .Checkbox label {
1327
+ font-family: Roboto, sans-serif;
1328
+ font-size: 14px;
1329
+ color: #1e252d;
1330
+ cursor: pointer;
1331
+ }
1332
+
1333
+ .Checkbox label:before, .Checkbox label:after {
1334
+ content: "";
1335
+ position: absolute;
1336
+ left: 0;
1337
+ top: 0;
1338
+ }
1339
+
1340
+ .Checkbox label:before {
1341
+ width: 20px;
1342
+ height: 20px;
1343
+ background: #fff;
1344
+ border: 2px solid #252525;
1345
+ border-radius: 2px;
1346
+ cursor: pointer;
1347
+ transition: background 0.3s;
1348
+ }
1349
+
1350
+ .Checkbox input[type=checkbox] {
1351
+ outline: 0;
1352
+ margin-right: 10px;
1353
+ visibility: hidden;
1354
+ }
1355
+
1356
+ .Checkbox input[type=checkbox]:checked + label:before {
1357
+ background: #4AC263;
1358
+ border: none;
1359
+ }
1360
+
1361
+ .Checkbox input[type=checkbox]:checked + label:after {
1362
+ transform: rotate(-45deg);
1363
+ top: 6px;
1364
+ left: 4px;
1365
+ width: 12px;
1366
+ height: 6px;
1367
+ border: 2px solid #fff;
1368
+ border-top-style: none;
1369
+ border-right-style: none;
1370
+ }
1371
+
1372
+ .Checkbox input[type=checkbox]:disabled + label {
1373
+ color: gray;
1374
+ }
1375
+
1376
+ .Checkbox input[type=checkbox]:disabled + label:before {
1377
+ border-color: rgba(0, 0, 0, 0.26);
1378
+ }
1379
+
1380
+ .Checkbox input[type=checkbox]:disabled:checked + label:before {
1381
+ background: rgba(0, 0, 0, 0.26);
1382
+ }
1383
+
1317
1384
  .DatePicker {
1318
1385
  position: relative;
1319
1386
  }
@@ -1457,145 +1524,52 @@
1457
1524
  }
1458
1525
 
1459
1526
  .DNDContainer .Draggable.copy {
1460
- position: absolute;
1461
- box-sizing: border-box;
1462
- will-change: transform;
1463
- opacity: 0;
1464
- }
1465
-
1466
- .DNDContainer .Draggable.dragged {
1467
- z-index: 10;
1468
- }
1469
-
1470
- .DNDContainer .overlay {
1471
- position: absolute;
1472
- top: 0;
1473
- left: 0;
1474
- right: 0;
1475
- bottom: 0;
1476
- pointer-events: none;
1477
- }
1478
-
1479
- .Checkbox {
1480
- position: relative;
1481
- white-space: pre;
1482
- }
1483
-
1484
- .Checkbox *, .Checkbox *:before, .Checkbox *:after {
1485
- box-sizing: border-box;
1486
- }
1487
-
1488
- .Checkbox label {
1489
- font-family: Roboto, sans-serif;
1490
- font-size: 14px;
1491
- color: #1e252d;
1492
- cursor: pointer;
1493
- }
1494
-
1495
- .Checkbox label:before, .Checkbox label:after {
1496
- content: "";
1497
- position: absolute;
1498
- left: 0;
1499
- top: 0;
1500
- }
1501
-
1502
- .Checkbox label:before {
1503
- width: 20px;
1504
- height: 20px;
1505
- background: #fff;
1506
- border: 2px solid #252525;
1507
- border-radius: 2px;
1508
- cursor: pointer;
1509
- transition: background 0.3s;
1510
- }
1511
-
1512
- .Checkbox input[type=checkbox] {
1513
- outline: 0;
1514
- margin-right: 10px;
1515
- visibility: hidden;
1516
- }
1517
-
1518
- .Checkbox input[type=checkbox]:checked + label:before {
1519
- background: #4AC263;
1520
- border: none;
1521
- }
1522
-
1523
- .Checkbox input[type=checkbox]:checked + label:after {
1524
- transform: rotate(-45deg);
1525
- top: 6px;
1526
- left: 4px;
1527
- width: 12px;
1528
- height: 6px;
1529
- border: 2px solid #fff;
1530
- border-top-style: none;
1531
- border-right-style: none;
1532
- }
1533
-
1534
- .Checkbox input[type=checkbox]:disabled + label {
1535
- color: gray;
1536
- }
1537
-
1538
- .Checkbox input[type=checkbox]:disabled + label:before {
1539
- border-color: rgba(0, 0, 0, 0.26);
1540
- }
1541
-
1542
- .Checkbox input[type=checkbox]:disabled:checked + label:before {
1543
- background: rgba(0, 0, 0, 0.26);
1544
- }
1545
-
1546
- .SpinningProgress {
1547
- width: 48px;
1548
- height: 48px;
1549
- position: relative;
1550
- margin: 0 auto;
1527
+ position: absolute;
1528
+ box-sizing: border-box;
1529
+ will-change: transform;
1530
+ opacity: 0;
1551
1531
  }
1552
1532
 
1553
- .SpinningProgress:before {
1554
- content: "";
1555
- display: block;
1556
- padding-top: 100%;
1533
+ .DNDContainer .Draggable.dragged {
1534
+ z-index: 10;
1557
1535
  }
1558
1536
 
1559
- .SpinningProgress .circular {
1560
- animation: rotate 2s linear infinite;
1561
- height: 100%;
1562
- transform-origin: center center;
1563
- width: 100%;
1537
+ .DNDContainer .overlay {
1564
1538
  position: absolute;
1565
1539
  top: 0;
1566
- bottom: 0;
1567
1540
  left: 0;
1568
1541
  right: 0;
1569
- margin: auto;
1542
+ bottom: 0;
1543
+ pointer-events: none;
1570
1544
  }
1571
1545
 
1572
- .SpinningProgress .line {
1573
- stroke: black;
1574
- stroke-width: 2px;
1575
- stroke-dasharray: 1, 96;
1576
- stroke-dashoffset: 0;
1577
- animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
1546
+ .DropFileInput {
1547
+ flex-grow: 1;
1578
1548
  }
1579
1549
 
1580
- @keyframes rotate {
1581
- 100% {
1582
- transform: rotate(360deg);
1583
- }
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;
1584
1567
  }
1585
- @keyframes dash {
1586
- 0% {
1587
- stroke-dasharray: 1, 96;
1588
- stroke-dashoffset: 0;
1589
- }
1590
- 50% {
1591
- stroke-dasharray: 43, 96;
1592
- stroke-dashoffset: -17px;
1593
- }
1594
- 100% {
1595
- stroke-dasharray: 43, 96;
1596
- stroke-dashoffset: -53px;
1597
- }
1568
+
1569
+ .DropFileInput .Dropzone .icon.withText {
1570
+ margin-right: 10px;
1598
1571
  }
1572
+
1599
1573
  .ModalMenu {
1600
1574
  position: absolute;
1601
1575
  top: 10px;
@@ -1633,31 +1607,73 @@
1633
1607
  margin-left: 4px;
1634
1608
  }
1635
1609
 
1636
- .DropFileInput {
1637
- flex-grow: 1;
1610
+ .Button.FloatingActionButton {
1611
+ position: absolute;
1612
+ right: 16px;
1613
+ bottom: 16px;
1614
+ width: 56px;
1615
+ height: 56px;
1616
+ padding: 16px;
1617
+ transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1638
1618
  }
1639
1619
 
1640
- .DropFileInput .Dropzone {
1641
- border: 1px dashed #808080;
1642
- padding: 12px;
1620
+ .Button.FloatingActionButton.raised {
1621
+ 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);
1622
+ }
1623
+
1624
+ .Button.FloatingActionButton.mini {
1625
+ width: 40px;
1626
+ height: 40px;
1627
+ padding: 8px;
1628
+ }
1629
+
1630
+ .Button.FloatingActionButton.hidden {
1631
+ bottom: -100px;
1632
+ }
1633
+
1634
+ .Snackbar {
1635
+ transform: translateX(-50%);
1636
+ overflow: hidden;
1637
+ background-color: #323232;
1638
+ padding: 14px 24px 14px 24px;
1639
+ color: #fff;
1640
+ min-width: 288px;
1641
+ max-width: 568px;
1642
+ position: fixed;
1643
+ bottom: -50px;
1644
+ left: 50%;
1643
1645
  display: flex;
1644
- flex-flow: row nowrap;
1645
- justify-content: center;
1646
+ flex-wrap: nowrap;
1646
1647
  align-items: center;
1647
- color: gray;
1648
- cursor: pointer;
1649
- border-radius: 3px;
1650
- font-weight: normal;
1651
- line-height: 22px;
1652
- font-size: 14px;
1653
- color: #7E7E7E;
1654
- max-width: 100%;
1655
- word-break: break-all;
1656
- word-break: break-word;
1648
+ opacity: 0;
1649
+ transition: bottom 0.25s ease, opacity 0.2s ease;
1650
+ border-radius: 4px;
1651
+ box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
1657
1652
  }
1658
1653
 
1659
- .DropFileInput .Dropzone .icon.withText {
1660
- margin-right: 10px;
1654
+ .Snackbar.shown {
1655
+ bottom: 15px;
1656
+ opacity: 1;
1657
+ }
1658
+
1659
+ .Snackbar .message {
1660
+ overflow: hidden;
1661
+ line-height: 1.2em;
1662
+ min-height: 1.2em;
1663
+ max-height: 2.4em;
1664
+ flex: 1;
1665
+ }
1666
+
1667
+ .Snackbar .action {
1668
+ text-transform: uppercase;
1669
+ font-weight: bold;
1670
+ margin-left: 48px;
1671
+ color: #bf3727;
1672
+ }
1673
+
1674
+ .Snackbar .action a {
1675
+ text-decoration: none;
1676
+ color: #bf3727;
1661
1677
  }
1662
1678
 
1663
1679
  .Switch {
@@ -1742,73 +1758,65 @@
1742
1758
  display: none;
1743
1759
  }
1744
1760
 
1745
- .Button.FloatingActionButton {
1746
- position: absolute;
1747
- right: 16px;
1748
- bottom: 16px;
1749
- width: 56px;
1750
- height: 56px;
1751
- padding: 16px;
1752
- transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1753
- }
1754
-
1755
- .Button.FloatingActionButton.raised {
1756
- 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);
1761
+ .SpinningProgress {
1762
+ width: 48px;
1763
+ height: 48px;
1764
+ position: relative;
1765
+ margin: 0 auto;
1757
1766
  }
1758
1767
 
1759
- .Button.FloatingActionButton.mini {
1760
- width: 40px;
1761
- height: 40px;
1762
- padding: 8px;
1768
+ .SpinningProgress:before {
1769
+ content: "";
1770
+ display: block;
1771
+ padding-top: 100%;
1763
1772
  }
1764
1773
 
1765
- .Button.FloatingActionButton.hidden {
1766
- bottom: -100px;
1774
+ .SpinningProgress .circular {
1775
+ animation: rotate 2s linear infinite;
1776
+ height: 100%;
1777
+ transform-origin: center center;
1778
+ width: 100%;
1779
+ position: absolute;
1780
+ top: 0;
1781
+ bottom: 0;
1782
+ left: 0;
1783
+ right: 0;
1784
+ margin: auto;
1767
1785
  }
1768
1786
 
1769
- .Snackbar {
1770
- transform: translateX(-50%);
1771
- overflow: hidden;
1772
- background-color: #323232;
1773
- padding: 14px 24px 14px 24px;
1774
- color: #fff;
1775
- min-width: 288px;
1776
- max-width: 568px;
1777
- position: fixed;
1778
- bottom: -50px;
1779
- left: 50%;
1780
- display: flex;
1781
- flex-wrap: nowrap;
1782
- align-items: center;
1783
- opacity: 0;
1784
- transition: bottom 0.25s ease, opacity 0.2s ease;
1785
- border-radius: 4px;
1786
- box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
1787
+ .SpinningProgress .line {
1788
+ stroke: black;
1789
+ stroke-width: 2px;
1790
+ stroke-dasharray: 1, 96;
1791
+ stroke-dashoffset: 0;
1792
+ animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
1787
1793
  }
1788
1794
 
1789
- .Snackbar.shown {
1790
- bottom: 15px;
1791
- opacity: 1;
1795
+ @keyframes rotate {
1796
+ 100% {
1797
+ transform: rotate(360deg);
1798
+ }
1792
1799
  }
1793
-
1794
- .Snackbar .message {
1795
- overflow: hidden;
1796
- line-height: 1.2em;
1797
- min-height: 1.2em;
1798
- max-height: 2.4em;
1799
- flex: 1;
1800
+ @keyframes dash {
1801
+ 0% {
1802
+ stroke-dasharray: 1, 96;
1803
+ stroke-dashoffset: 0;
1804
+ }
1805
+ 50% {
1806
+ stroke-dasharray: 43, 96;
1807
+ stroke-dashoffset: -17px;
1808
+ }
1809
+ 100% {
1810
+ stroke-dasharray: 43, 96;
1811
+ stroke-dashoffset: -53px;
1812
+ }
1800
1813
  }
1801
-
1802
- .Snackbar .action {
1803
- text-transform: uppercase;
1804
- font-weight: bold;
1805
- margin-left: 48px;
1806
- color: #bf3727;
1814
+ .ScrollableTable .Scrollable .scrollbar {
1815
+ top: 56px;
1807
1816
  }
1808
1817
 
1809
- .Snackbar .action a {
1810
- text-decoration: none;
1811
- color: #bf3727;
1818
+ .ScrollableTable .Table {
1819
+ position: static;
1812
1820
  }
1813
1821
 
1814
1822
  .Table {
@@ -1931,12 +1939,4 @@
1931
1939
 
1932
1940
  .Table .editable > .AutocompleteSelect > .selected > .DummyChild {
1933
1941
  margin: 0;
1934
- }
1935
-
1936
- .ScrollableTable .Scrollable .scrollbar {
1937
- top: 56px;
1938
- }
1939
-
1940
- .ScrollableTable .Table {
1941
- position: static;
1942
1942
  }