react-ui-basics 0.0.159 → 0.0.160

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 (81) hide show
  1. package/Animated.js +5 -3
  2. package/AutocompleteSelect.js +17 -17
  3. package/Button.js +14 -14
  4. package/Checkbox.js +2 -2
  5. package/CircleProgress.js +2 -2
  6. package/CommonFields.js +21 -16
  7. package/DNDContainer.js +29 -29
  8. package/DNDDraggable.js +1 -1
  9. package/DNDDroppable.js +1 -1
  10. package/Dialog.js +2 -2
  11. package/DropFileInput.js +1 -1
  12. package/DroppableHorizontalList.js +17 -17
  13. package/DroppableList.js +17 -17
  14. package/Dropzone.js +8 -8
  15. package/FilteredList.js +13 -13
  16. package/FloatingActionButton.js +1 -1
  17. package/FormUploadProgress.js +2 -2
  18. package/ImageGallery.js +94 -94
  19. package/MaterialIcon.js +1 -1
  20. package/Modal.js +6 -6
  21. package/ModalMenu.js +4 -4
  22. package/ReactConstants.js +6 -1
  23. package/ReactCreateElement.js +1 -1
  24. package/ReadyListener.js +1 -1
  25. package/Scrollable.js +36 -36
  26. package/ScrollableTable.js +1 -1
  27. package/Size.js +3 -3
  28. package/Snackbar.js +1 -1
  29. package/SpinningProgress.js +1 -1
  30. package/Switch.js +2 -2
  31. package/Table.js +13 -13
  32. package/TextField.js +6 -6
  33. package/Tools.d.ts +1 -0
  34. package/Tools.js +13 -13
  35. package/_virtual/_commonjsHelpers.js +1 -1
  36. package/_virtual/_react.js +1 -1
  37. package/_virtual/react-jsx-runtime.development.js +1 -1
  38. package/bundle.css +759 -759
  39. package/index.js +8 -7
  40. package/package.json +1 -1
  41. package/router/HistoryTools.js +1 -1
  42. package/router/Link.js +1 -1
  43. package/router/NavLink.js +1 -1
  44. package/router/Route.js +9 -9
  45. package/router/index.js +1 -1
  46. package/store/ProxyTools.js +1 -1
  47. package/store/Store.js +1 -1
  48. package/Animated.js.map +0 -1
  49. package/AutocompleteSelect.js.map +0 -1
  50. package/Button.js.map +0 -1
  51. package/Checkbox.js.map +0 -1
  52. package/CircleProgress.js.map +0 -1
  53. package/CommonFields.js.map +0 -1
  54. package/DNDContainer.js.map +0 -1
  55. package/DNDDraggable.js.map +0 -1
  56. package/DNDDroppable.js.map +0 -1
  57. package/Dialog.js.map +0 -1
  58. package/DropFileInput.js.map +0 -1
  59. package/DroppableHorizontalList.js.map +0 -1
  60. package/DroppableList.js.map +0 -1
  61. package/Dropzone.js.map +0 -1
  62. package/FilteredList.js.map +0 -1
  63. package/FloatingActionButton.js.map +0 -1
  64. package/FormUploadProgress.js.map +0 -1
  65. package/ImageGallery.js.map +0 -1
  66. package/MaterialIcon.js.map +0 -1
  67. package/Modal.js.map +0 -1
  68. package/ModalMenu.js.map +0 -1
  69. package/ReactConstants.js.map +0 -1
  70. package/ReactCreateElement.js.map +0 -1
  71. package/ReadyListener.js.map +0 -1
  72. package/Scrollable.js.map +0 -1
  73. package/ScrollableTable.js.map +0 -1
  74. package/Size.js.map +0 -1
  75. package/Snackbar.js.map +0 -1
  76. package/SpinningProgress.js.map +0 -1
  77. package/Switch.js.map +0 -1
  78. package/Table.js.map +0 -1
  79. package/TextField.js.map +0 -1
  80. package/Tools.js.map +0 -1
  81. package/index.js.map +0 -1
package/bundle.css CHANGED
@@ -1,16 +1,3 @@
1
- .CircleProgress {
2
- width: 48px;
3
- height: 48px;
4
- }
5
-
6
- .CircleProgress .line {
7
- stroke-width: 2px;
8
- stroke: black;
9
- stroke-linecap: square;
10
- fill: none;
11
- transition: stroke-dashoffset 0.2s ease;
12
- }
13
-
14
1
  .Button {
15
2
  position: relative;
16
3
  min-width: 64px;
@@ -176,71 +163,59 @@
176
163
  border: 0;
177
164
  }
178
165
 
179
- .Checkbox {
180
- position: relative;
181
- white-space: pre;
182
- }
183
-
184
- .Checkbox *, .Checkbox *:before, .Checkbox *:after {
185
- box-sizing: border-box;
186
- }
187
-
188
- .Checkbox label {
189
- font-family: Roboto, sans-serif;
190
- font-size: 14px;
191
- color: #1e252d;
192
- cursor: pointer;
166
+ .DialogModal {
167
+ overflow: hidden;
193
168
  }
194
169
 
195
- .Checkbox label:before, .Checkbox label:after {
196
- content: "";
197
- position: absolute;
198
- left: 0;
199
- top: 0;
170
+ .DialogModal .content {
171
+ top: 20vh;
200
172
  }
201
173
 
202
- .Checkbox label:before {
203
- width: 20px;
204
- height: 20px;
205
- background: #fff;
206
- border: 2px solid #252525;
207
- border-radius: 2px;
208
- cursor: pointer;
209
- transition: background 0.3s;
174
+ .Dialog {
175
+ background-color: white;
176
+ min-width: 460px;
177
+ max-width: 40vw;
178
+ padding: 15px;
210
179
  }
211
180
 
212
- .Checkbox input[type=checkbox] {
213
- outline: 0;
214
- margin-right: 10px;
215
- visibility: hidden;
181
+ .Dialog .title {
182
+ margin-bottom: 15px;
183
+ padding: 20px 50px 0px 30px;
184
+ font-size: 1.25rem;
185
+ line-height: 2rem;
186
+ font-weight: 400;
187
+ letter-spacing: 0.0125em;
216
188
  }
217
189
 
218
- .Checkbox input[type=checkbox]:checked + label:before {
219
- background: #4AC263;
220
- border: none;
190
+ .Dialog .description {
191
+ color: rgba(0, 0, 0, 0.54);
192
+ font-size: 1rem;
193
+ line-height: 1.5rem;
194
+ font-weight: 400;
195
+ letter-spacing: 0.03125em;
196
+ margin-top: 20px;
197
+ padding: 0 24px 24px;
221
198
  }
222
199
 
223
- .Checkbox input[type=checkbox]:checked + label:after {
224
- transform: rotate(-45deg);
225
- top: 6px;
226
- left: 4px;
227
- width: 12px;
228
- height: 6px;
229
- border: 2px solid #fff;
230
- border-top-style: none;
231
- border-right-style: none;
200
+ .Dialog > div.row {
201
+ margin-bottom: 15px;
232
202
  }
233
203
 
234
- .Checkbox input[type=checkbox]:disabled + label {
235
- color: gray;
204
+ .Dialog > div.row:last-child {
205
+ margin-bottom: 0;
236
206
  }
237
207
 
238
- .Checkbox input[type=checkbox]:disabled + label:before {
239
- border-color: rgba(0, 0, 0, 0.26);
208
+ .CircleProgress {
209
+ width: 48px;
210
+ height: 48px;
240
211
  }
241
212
 
242
- .Checkbox input[type=checkbox]:disabled:checked + label:before {
243
- background: rgba(0, 0, 0, 0.26);
213
+ .CircleProgress .line {
214
+ stroke-width: 2px;
215
+ stroke: black;
216
+ stroke-linecap: square;
217
+ fill: none;
218
+ transition: stroke-dashoffset 0.2s ease;
244
219
  }
245
220
 
246
221
  .AutocompleteSelect {
@@ -538,78 +513,98 @@
538
513
  position: absolute;
539
514
  }
540
515
 
541
- .DNDContainer {
542
- position: relative;
516
+ .DropFileInput {
517
+ flex-grow: 1;
543
518
  }
544
519
 
545
- .DNDContainer .Draggable[draggable=true], .DNDContainer .Draggable [draggable=true] {
520
+ .DropFileInput .Dropzone {
521
+ border: 1px dashed #808080;
522
+ padding: 12px;
523
+ display: flex;
524
+ flex-flow: row nowrap;
525
+ justify-content: center;
526
+ align-items: center;
527
+ color: gray;
546
528
  cursor: pointer;
529
+ border-radius: 3px;
530
+ font-weight: normal;
531
+ line-height: 22px;
532
+ font-size: 14px;
533
+ color: #7E7E7E;
534
+ max-width: 100%;
535
+ word-break: break-all;
536
+ word-break: break-word;
547
537
  }
548
538
 
549
- .DNDContainer .Draggable.placeholder {
550
- opacity: 0.2;
539
+ .DropFileInput .Dropzone .icon.withText {
540
+ margin-right: 10px;
551
541
  }
552
542
 
553
- .DNDContainer .Draggable.copy {
554
- position: absolute;
543
+ .Checkbox {
544
+ position: relative;
545
+ white-space: pre;
546
+ }
547
+
548
+ .Checkbox *, .Checkbox *:before, .Checkbox *:after {
555
549
  box-sizing: border-box;
556
- will-change: transform;
557
- opacity: 0;
558
550
  }
559
551
 
560
- .DNDContainer .Draggable.dragged {
561
- z-index: 10;
552
+ .Checkbox label {
553
+ font-family: Roboto, sans-serif;
554
+ font-size: 14px;
555
+ color: #1e252d;
556
+ cursor: pointer;
562
557
  }
563
558
 
564
- .DNDContainer .overlay {
559
+ .Checkbox label:before, .Checkbox label:after {
560
+ content: "";
565
561
  position: absolute;
566
- top: 0;
567
562
  left: 0;
568
- right: 0;
569
- bottom: 0;
570
- pointer-events: none;
563
+ top: 0;
571
564
  }
572
565
 
573
- .DialogModal {
574
- overflow: hidden;
566
+ .Checkbox label:before {
567
+ width: 20px;
568
+ height: 20px;
569
+ background: #fff;
570
+ border: 2px solid #252525;
571
+ border-radius: 2px;
572
+ cursor: pointer;
573
+ transition: background 0.3s;
575
574
  }
576
575
 
577
- .DialogModal .content {
578
- top: 20vh;
576
+ .Checkbox input[type=checkbox] {
577
+ outline: 0;
578
+ margin-right: 10px;
579
+ visibility: hidden;
579
580
  }
580
581
 
581
- .Dialog {
582
- background-color: white;
583
- min-width: 460px;
584
- max-width: 40vw;
585
- padding: 15px;
582
+ .Checkbox input[type=checkbox]:checked + label:before {
583
+ background: #4AC263;
584
+ border: none;
586
585
  }
587
586
 
588
- .Dialog .title {
589
- margin-bottom: 15px;
590
- padding: 20px 50px 0px 30px;
591
- font-size: 1.25rem;
592
- line-height: 2rem;
593
- font-weight: 400;
594
- letter-spacing: 0.0125em;
587
+ .Checkbox input[type=checkbox]:checked + label:after {
588
+ transform: rotate(-45deg);
589
+ top: 6px;
590
+ left: 4px;
591
+ width: 12px;
592
+ height: 6px;
593
+ border: 2px solid #fff;
594
+ border-top-style: none;
595
+ border-right-style: none;
595
596
  }
596
597
 
597
- .Dialog .description {
598
- color: rgba(0, 0, 0, 0.54);
599
- font-size: 1rem;
600
- line-height: 1.5rem;
601
- font-weight: 400;
602
- letter-spacing: 0.03125em;
603
- margin-top: 20px;
604
- padding: 0 24px 24px;
598
+ .Checkbox input[type=checkbox]:disabled + label {
599
+ color: gray;
605
600
  }
606
601
 
607
- .Dialog > div.row {
608
- margin-bottom: 15px;
602
+ .Checkbox input[type=checkbox]:disabled + label:before {
603
+ border-color: rgba(0, 0, 0, 0.26);
609
604
  }
610
605
 
611
- .Dialog > div.row:last-child {
612
- margin-bottom: 0;
606
+ .Checkbox input[type=checkbox]:disabled:checked + label:before {
607
+ background: rgba(0, 0, 0, 0.26);
613
608
  }
614
609
 
615
610
  .animated {
@@ -621,145 +616,88 @@
621
616
  opacity: 1;
622
617
  }
623
618
 
624
- .FilteredList {
625
- max-height: 250px;
619
+ .Dropzone {
626
620
  position: relative;
627
621
  }
628
622
 
629
- .FilteredList.popup {
630
- padding: 0;
631
- visibility: hidden;
623
+ .Dropzone > .overlay {
632
624
  position: absolute;
633
- background: white;
634
- z-index: 4;
635
- 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);
636
- transition: all 0.2s ease-out;
637
- top: calc(100% + 4px);
625
+ left: 0;
626
+ right: 0;
627
+ top: 0;
628
+ bottom: 0;
629
+ background-color: #38ADC4;
630
+ z-index: 1;
638
631
  opacity: 0;
639
- border-radius: 2px;
632
+ transition: all 0.2s ease;
633
+ transition-delay: 100ms;
634
+ visibility: hidden;
635
+ display: flex;
636
+ justify-content: center;
637
+ align-items: center;
640
638
  }
641
639
 
642
- .FilteredList.popup.visible {
643
- opacity: 1;
644
- visibility: visible;
640
+ .Dropzone > .overlay .drop {
641
+ border-radius: 4px;
642
+ border: 1px dashed #FFFFFF;
643
+ position: absolute;
644
+ top: 18px;
645
+ left: 18px;
646
+ right: 18px;
647
+ bottom: 18px;
648
+ display: flex;
649
+ justify-content: center;
650
+ align-items: center;
651
+ font-weight: 500;
652
+ font-size: 18px;
653
+ color: #FFFFFF;
645
654
  }
646
655
 
647
- .FilteredList.inline {
648
- max-height: 225px;
649
- margin-top: 5px;
656
+ .Dropzone.dragging > .overlay {
657
+ opacity: 0.7;
658
+ visibility: visible;
659
+ transition-delay: 0s;
650
660
  }
651
661
 
652
- .FilteredList .child {
653
- display: flex;
654
- flex-flow: row nowrap;
655
- align-items: center;
656
- white-space: nowrap;
657
- font-size: 14px;
658
- color: #222222;
659
- height: 30px;
660
- padding: 5px 10px;
661
- padding-right: 15px;
662
- cursor: pointer;
663
- overflow: hidden;
664
- transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
665
- border-left: 5px solid #4AC263;
666
- padding-left: 15px;
667
- margin-left: -5px;
668
- }
669
-
670
- .FilteredList .child.hidden {
671
- height: 0 !important;
672
- padding: 0 !important;
673
- }
674
-
675
- .FilteredList .child.selected {
676
- background-color: #F0F0F0;
677
- padding-left: 10px;
678
- margin-left: 0px;
679
- }
680
-
681
- .FilteredList .child.active {
682
- background-color: #eeeeee;
683
- }
684
-
685
- .FilteredList .child {
686
- margin-top: 8px;
687
- }
688
-
689
- .FilteredList .child.hidden {
690
- margin-top: 0;
691
- }
692
-
693
- .FilteredList .child:not(.hidden) ~ .child {
694
- margin-top: 0;
695
- }
696
-
697
- .FilteredList .child:not(.hidden) ~ .child:last-child {
698
- margin-bottom: 8px;
699
- }
700
-
701
- .FilteredList .child:not(.hidden):last-child {
702
- margin-bottom: 8px;
703
- }
704
-
705
- .Dropzone {
706
- position: relative;
662
+ .Dropzone.dragging > * {
663
+ pointer-events: none;
707
664
  }
708
665
 
709
- .Dropzone > .overlay {
666
+ .Dropzone > input.file {
710
667
  position: absolute;
711
668
  left: 0;
712
669
  right: 0;
713
670
  top: 0;
714
671
  bottom: 0;
715
- background-color: #38ADC4;
716
- z-index: 1;
672
+ width: 100%;
673
+ height: 100%;
717
674
  opacity: 0;
718
- transition: all 0.2s ease;
719
- transition-delay: 100ms;
720
- visibility: hidden;
721
- display: flex;
722
- justify-content: center;
723
- align-items: center;
675
+ cursor: pointer;
676
+ z-index: 1;
724
677
  }
725
678
 
726
- .Dropzone > .overlay .drop {
727
- border-radius: 4px;
728
- border: 1px dashed #FFFFFF;
679
+ .Button.FloatingActionButton {
729
680
  position: absolute;
730
- top: 18px;
731
- left: 18px;
732
- right: 18px;
733
- bottom: 18px;
734
- display: flex;
735
- justify-content: center;
736
- align-items: center;
737
- font-weight: 500;
738
- font-size: 18px;
739
- color: #FFFFFF;
681
+ right: 16px;
682
+ bottom: 16px;
683
+ width: 56px;
684
+ height: 56px;
685
+ padding: 16px;
686
+ transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
740
687
  }
741
688
 
742
- .Dropzone.dragging > .overlay {
743
- opacity: 0.7;
744
- visibility: visible;
745
- transition-delay: 0s;
689
+ .Button.FloatingActionButton.raised {
690
+ 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);
746
691
  }
747
692
 
748
- .Dropzone.dragging > * {
749
- pointer-events: none;
693
+ .Button.FloatingActionButton.mini {
694
+ width: 40px;
695
+ height: 40px;
696
+ padding: 8px;
750
697
  }
751
698
 
752
- .Dropzone > input.file {
753
- position: absolute;
754
- left: 0;
755
- right: 0;
756
- top: 0;
757
- bottom: 0;
758
- width: 100%;
759
- height: 100%;
760
- opacity: 0;
761
- cursor: pointer;
762
- z-index: 1;
699
+ .Button.FloatingActionButton.hidden {
700
+ bottom: -100px;
763
701
  }
764
702
 
765
703
  .FormUploadProgress {
@@ -831,698 +769,736 @@
831
769
  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
832
770
  }
833
771
 
834
- .DropFileInput {
835
- flex-grow: 1;
772
+ .DNDContainer {
773
+ position: relative;
836
774
  }
837
775
 
838
- .DropFileInput .Dropzone {
839
- border: 1px dashed #808080;
840
- padding: 12px;
841
- display: flex;
842
- flex-flow: row nowrap;
843
- justify-content: center;
844
- align-items: center;
845
- color: gray;
776
+ .DNDContainer .Draggable[draggable=true], .DNDContainer .Draggable [draggable=true] {
846
777
  cursor: pointer;
847
- border-radius: 3px;
848
- font-weight: normal;
849
- line-height: 22px;
850
- font-size: 14px;
851
- color: #7E7E7E;
852
- max-width: 100%;
853
- word-break: break-all;
854
- word-break: break-word;
855
778
  }
856
779
 
857
- .DropFileInput .Dropzone .icon.withText {
858
- margin-right: 10px;
780
+ .DNDContainer .Draggable.placeholder {
781
+ opacity: 0.2;
859
782
  }
860
783
 
861
- .ModalMenu {
784
+ .DNDContainer .Draggable.copy {
862
785
  position: absolute;
863
- top: 10px;
864
- right: 50px;
786
+ box-sizing: border-box;
787
+ will-change: transform;
788
+ opacity: 0;
865
789
  }
866
790
 
867
- .ModalMenu .material-icons {
868
- color: #818181;
791
+ .DNDContainer .Draggable.dragged {
792
+ z-index: 10;
869
793
  }
870
794
 
871
- .ModalMenu .Button.animated {
795
+ .DNDContainer .overlay {
872
796
  position: absolute;
873
- transition: opacity 150ms ease-in, right 200ms ease-in;
874
- opacity: 0;
875
- right: 0;
876
797
  top: 0;
798
+ left: 0;
799
+ right: 0;
800
+ bottom: 0;
801
+ pointer-events: none;
877
802
  }
878
803
 
879
- .ModalMenu .Button.animated.mounting, .ModalMenu .Button.animated.mounted {
880
- opacity: 1;
804
+ .ImageGallery {
805
+ position: fixed;
806
+ top: 0;
807
+ left: 0;
808
+ bottom: 0;
809
+ right: 0;
810
+ z-index: 1000;
811
+ background-color: rgba(0, 0, 0, 0.01);
812
+ user-select: none;
881
813
  }
882
814
 
883
- .ModalMenu .Button.animated.unmounting {
884
- transition: opacity 100ms ease-out, right 200ms ease-out;
815
+ .ImageGallery:focus {
816
+ outline-width: 0px;
885
817
  }
886
818
 
887
- .ModalMenu .Button.active {
888
- background: #EBEBEB;
819
+ .ImageGallery.animated {
820
+ transition: background-color 0.25s ease;
821
+ opacity: 1;
889
822
  }
890
823
 
891
- .ModalMenu .separator {
892
- height: 24px;
893
- width: 1px;
894
- background-color: #D9D9D9;
895
- margin-left: 4px;
824
+ .ImageGallery.mounting, .ImageGallery.mounted {
825
+ background-color: rgba(0, 0, 0, 0.8);
896
826
  }
897
827
 
898
- .Switch {
899
- display: inline-flex;
900
- padding-top: 5px;
828
+ .ImageGallery .image {
829
+ position: absolute;
830
+ cursor: grab;
901
831
  }
902
832
 
903
- .Switch .switch-input {
833
+ .ImageGallery .image .counter {
904
834
  display: none;
905
835
  }
906
836
 
907
- .Switch .switch-label {
908
- position: relative;
909
- display: inline-flex;
910
- align-items: center;
911
- min-width: 38px;
912
- height: 24px;
913
- cursor: pointer;
914
- font-weight: 500;
915
- text-align: left;
916
- user-select: none;
917
- margin: 0;
918
- padding: 0;
919
- padding-left: 44px;
920
- box-sizing: border-box;
837
+ .ImageGallery .image img {
838
+ border-radius: 4px;
839
+ max-width: 100%;
840
+ min-width: 100%;
921
841
  }
922
842
 
923
- .Switch .switch-label:before, .Switch .switch-label:after {
924
- content: "";
925
- box-sizing: border-box;
926
- position: absolute;
927
- margin: 0;
928
- outline: 0;
929
- top: 50%;
930
- transform: translate(0, -50%);
931
- transition: all 0.3s ease;
843
+ .ImageGallery .image.animated {
844
+ transition: top 0.25s ease, left 0.25s ease, width 0.25s ease, height 0.25s ease, opacity 0.25s ease;
845
+ will-change: top, left, width, height, opacity;
932
846
  }
933
847
 
934
- .Switch .switch-label:before {
935
- left: 1px;
936
- width: 34px;
937
- height: 14px;
938
- background-color: #9E9E9E;
939
- border-radius: 8px;
848
+ .ImageGallery .image.animated.mounting, .ImageGallery .image.animated.mounted, .ImageGallery .image.animated.unmounting {
849
+ opacity: 1;
940
850
  }
941
851
 
942
- .Switch .switch-label:after {
943
- left: 0;
944
- width: 20px;
945
- height: 20px;
946
- background-color: #FAFAFA;
947
- border-radius: 50%;
948
- 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);
852
+ .ImageGallery .image.zoomed {
853
+ text-align: center;
854
+ overflow: hidden;
949
855
  }
950
856
 
951
- .Switch .switch-label .toggle--on {
952
- display: none;
857
+ .ImageGallery .image.dragging {
858
+ transition: none;
859
+ cursor: move;
953
860
  }
954
861
 
955
- .Switch .switch-label .toggle--off {
956
- display: inline-block;
862
+ .ImageGallery .image .close {
863
+ position: absolute;
864
+ top: -18px;
865
+ right: -18px;
957
866
  }
958
867
 
959
- .Switch .switch-label .label {
960
- margin-right: 5px;
868
+ .ImageGallery .image .spinner {
869
+ position: absolute;
870
+ top: 0;
871
+ bottom: 0;
872
+ left: 0;
873
+ right: 0;
874
+ background: rgba(0, 0, 0, 0.65);
961
875
  }
962
876
 
963
- .Switch .switch-input:checked + .switch-label:before {
964
- background-color: #A5D6A7;
877
+ .ImageGallery .image .spinner .SpinningProgress {
878
+ position: absolute;
879
+ top: 50%;
880
+ left: 50%;
881
+ margin-left: -24px;
882
+ margin-top: -24px;
965
883
  }
966
884
 
967
- .Switch .switch-input:checked + .switch-label:after {
968
- background-color: #4CAF50;
969
- transform: translate(80%, -50%);
885
+ .ImageGallery .image .spinner .SpinningProgress .line {
886
+ stroke: #2196F3;
970
887
  }
971
888
 
972
- .Switch .switch-input:checked + .switch-label .toggle--on {
973
- display: inline-block;
889
+ .ImageGallery .Button.animated {
890
+ transition: all 0.25s ease;
891
+ opacity: 0;
892
+ transform: scale(0);
974
893
  }
975
894
 
976
- .Switch .switch-input:checked + .switch-label .toggle--off {
977
- display: none;
895
+ .ImageGallery .Button.animated.mounted, .ImageGallery .Button.animated.mounting {
896
+ opacity: 1;
897
+ transform: scale(1);
978
898
  }
979
899
 
980
- .SpinningProgress {
981
- width: 48px;
982
- height: 48px;
983
- position: relative;
984
- margin: 0 auto;
900
+ .ImageGallery .Button {
901
+ color: white;
902
+ background: rgba(0, 0, 0, 0.4);
985
903
  }
986
904
 
987
- .SpinningProgress:before {
988
- content: "";
989
- display: block;
990
- padding-top: 100%;
905
+ .ImageGallery .Button:hover {
906
+ background: rgba(0, 0, 0, 0.7);
991
907
  }
992
908
 
993
- .SpinningProgress .circular {
994
- animation: rotate 2s linear infinite;
995
- height: 100%;
996
- transform-origin: center center;
997
- width: 100%;
909
+ .ImageGallery > .arrow {
998
910
  position: absolute;
999
- top: 0;
1000
- bottom: 0;
1001
- left: 0;
1002
- right: 0;
1003
- margin: auto;
911
+ top: 50%;
912
+ height: 76px;
913
+ width: 76px;
914
+ margin-top: -38px;
1004
915
  }
1005
916
 
1006
- .SpinningProgress .line {
1007
- stroke: black;
1008
- stroke-width: 2px;
1009
- stroke-dasharray: 1, 96;
1010
- stroke-dashoffset: 0;
1011
- animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
917
+ .ImageGallery > .arrow.left {
918
+ left: 5%;
1012
919
  }
1013
920
 
1014
- @keyframes rotate {
1015
- 100% {
1016
- transform: rotate(360deg);
1017
- }
921
+ .ImageGallery > .arrow.right {
922
+ right: 5%;
1018
923
  }
1019
- @keyframes dash {
1020
- 0% {
1021
- stroke-dasharray: 1, 96;
1022
- stroke-dashoffset: 0;
1023
- }
1024
- 50% {
1025
- stroke-dasharray: 43, 96;
1026
- stroke-dashoffset: -17px;
1027
- }
1028
- 100% {
1029
- stroke-dasharray: 43, 96;
1030
- stroke-dashoffset: -53px;
1031
- }
924
+
925
+ .ImageGallery > .arrow .material-icons {
926
+ font-size: 40px;
1032
927
  }
1033
- .Snackbar {
928
+
929
+ .ImageGallery .counter {
930
+ position: absolute;
931
+ top: 10px;
932
+ left: 10px;
933
+ color: white;
934
+ font-size: 13px;
935
+ }
936
+
937
+ .ImageGallery .previews {
938
+ height: 80px;
939
+ position: absolute;
940
+ bottom: 15px;
941
+ left: 50%;
1034
942
  transform: translateX(-50%);
943
+ padding: 0 45px;
944
+ }
945
+
946
+ .ImageGallery .previews .viewport {
1035
947
  overflow: hidden;
1036
- background-color: #323232;
1037
- padding: 14px 24px 14px 24px;
1038
- color: #fff;
1039
- min-width: 288px;
1040
- max-width: 568px;
1041
- position: fixed;
1042
- bottom: -50px;
1043
- left: 50%;
1044
- display: flex;
1045
- flex-wrap: nowrap;
1046
- align-items: center;
1047
- opacity: 0;
1048
- transition: bottom 0.25s ease, opacity 0.2s ease;
1049
- border-radius: 4px;
1050
- box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
948
+ position: relative;
949
+ height: 100%;
1051
950
  }
1052
951
 
1053
- .Snackbar.shown {
1054
- bottom: 15px;
1055
- opacity: 1;
952
+ .ImageGallery .previews .container {
953
+ position: relative;
954
+ display: flex;
955
+ flex-flow: row nowrap;
956
+ height: 100%;
957
+ transition: left 0.25s ease;
1056
958
  }
1057
959
 
1058
- .Snackbar .message {
960
+ .ImageGallery .previews .preview {
961
+ position: relative;
962
+ height: 100%;
963
+ display: inline-block;
964
+ width: 106.66px;
1059
965
  overflow: hidden;
1060
- line-height: 1.2em;
1061
- min-height: 1.2em;
1062
- max-height: 2.4em;
1063
- flex: 1;
966
+ margin-left: 12px;
967
+ border-radius: 2px;
968
+ cursor: pointer;
969
+ box-sizing: border-box;
1064
970
  }
1065
971
 
1066
- .Snackbar .action {
1067
- text-transform: uppercase;
1068
- font-weight: bold;
1069
- margin-left: 48px;
1070
- color: #bf3727;
972
+ .ImageGallery .previews .preview:first-child {
973
+ margin-left: 0;
1071
974
  }
1072
975
 
1073
- .Snackbar .action a {
1074
- text-decoration: none;
1075
- color: #bf3727;
976
+ .ImageGallery .previews .preview > .border {
977
+ position: absolute;
978
+ bottom: 0;
979
+ width: 100%;
980
+ height: 3px;
1076
981
  }
1077
982
 
1078
- .Modal {
1079
- display: block;
1080
- position: fixed;
983
+ .ImageGallery .previews .preview > .border .line {
984
+ left: 50%;
985
+ width: 0;
986
+ height: 3px;
987
+ min-height: 3px;
988
+ background-color: #4AC263;
989
+ transition: all 0.2s ease;
990
+ position: absolute;
991
+ }
992
+
993
+ .ImageGallery .previews .preview:after {
994
+ content: "";
995
+ position: absolute;
1081
996
  top: 0;
1082
- left: 0;
1083
997
  right: 0;
1084
- bottom: 100%;
1085
- overflow-y: scroll;
1086
- transition: bottom 0ms linear;
1087
- transition-delay: 0.2s;
998
+ bottom: 0;
999
+ left: 0;
1000
+ background: rgba(0, 0, 0, 0.35);
1001
+ transition: background 0.2s ease;
1088
1002
  }
1089
1003
 
1090
- .Modal.show {
1091
- transition-delay: 0s;
1092
- bottom: 0;
1004
+ .ImageGallery .previews .preview:hover:after {
1005
+ background: rgba(0, 0, 0, 0.1);
1093
1006
  }
1094
1007
 
1095
- .Modal > .overlay {
1096
- position: fixed;
1097
- top: 0;
1098
- bottom: 100%;
1008
+ .ImageGallery .previews .preview.selected .border .line {
1099
1009
  left: 0;
1100
- right: 0;
1101
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1102
- opacity: 0;
1103
- background-color: black;
1104
- pointer-events: none;
1010
+ width: 100%;
1105
1011
  }
1106
1012
 
1107
- .Modal > .overlay.show {
1108
- opacity: 0.5;
1109
- bottom: 0;
1013
+ .ImageGallery .previews .preview.selected:after {
1014
+ background: rgba(0, 0, 0, 0);
1110
1015
  }
1111
1016
 
1112
- .Modal > .content {
1113
- left: 50%;
1114
- top: 10vh;
1115
- margin-bottom: 10vh;
1116
- font-size: 16px;
1117
- padding: 0;
1118
- opacity: 0;
1119
- transition: opacity 0.25s ease, transform 0.25s ease;
1120
- transform: scaleY(0) translateY(-200px) translateX(-50%);
1121
- transform-origin: top;
1017
+ .ImageGallery .previews > .arrow {
1122
1018
  position: absolute;
1123
- border-radius: 2px;
1124
- box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.3);
1019
+ top: 50%;
1020
+ height: 30px;
1021
+ width: 30px;
1022
+ min-width: 30px;
1023
+ min-height: 30px;
1024
+ margin-top: -15px;
1125
1025
  }
1126
1026
 
1127
- .Modal > .content.show {
1128
- opacity: 1;
1129
- transform: scaleY(1) translateY(0px) translateX(-50%);
1027
+ .ImageGallery .previews > .arrow.left {
1028
+ left: 0;
1130
1029
  }
1131
1030
 
1132
- .Modal > .content > .Scrollable {
1133
- overflow: visible;
1134
- max-height: 80vh;
1031
+ .ImageGallery .previews > .arrow.right {
1032
+ right: 0;
1135
1033
  }
1136
1034
 
1137
- .Modal > .content > .Scrollable > .viewport {
1138
- min-width: 10px;
1139
- min-height: 10px;
1035
+ .ImageGallery .previews > .arrow .material-icons {
1036
+ font-size: 24px;
1140
1037
  }
1141
1038
 
1142
- .Modal > .content > .Button.close {
1143
- top: 10px;
1144
- right: 10px;
1039
+ .FilteredList {
1040
+ max-height: 250px;
1041
+ position: relative;
1042
+ }
1043
+
1044
+ .FilteredList.popup {
1045
+ padding: 0;
1046
+ visibility: hidden;
1145
1047
  position: absolute;
1048
+ background: white;
1049
+ z-index: 4;
1050
+ 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);
1051
+ transition: all 0.2s ease-out;
1052
+ top: calc(100% + 4px);
1053
+ opacity: 0;
1054
+ border-radius: 2px;
1146
1055
  }
1147
1056
 
1148
- .TextField {
1149
- position: relative;
1150
- width: 100%;
1057
+ .FilteredList.popup.visible {
1058
+ opacity: 1;
1059
+ visibility: visible;
1151
1060
  }
1152
1061
 
1153
- .TextField > label {
1154
- font-family: Roboto, sans-serif;
1155
- color: rgba(0, 0, 0, 0.3);
1156
- font-size: 16px;
1157
- position: absolute;
1158
- left: 0px;
1159
- top: 16px;
1160
- margin-top: -16px;
1161
- transition: all 0.2s ease;
1162
- user-select: none;
1163
- cursor: text;
1062
+ .FilteredList.inline {
1063
+ max-height: 225px;
1064
+ margin-top: 5px;
1164
1065
  }
1165
1066
 
1166
- .TextField > input {
1167
- font-family: Roboto, sans-serif;
1168
- color: #1e252d;
1169
- height: 19px;
1170
- font-size: 16px;
1171
- width: 100%;
1172
- border: 0px;
1173
- padding-bottom: 4px;
1174
- padding-top: 0;
1175
- outline-color: rgba(0, 0, 0, 0);
1067
+ .FilteredList .child {
1068
+ display: flex;
1069
+ flex-flow: row nowrap;
1070
+ align-items: center;
1071
+ white-space: nowrap;
1072
+ font-size: 14px;
1073
+ color: #222222;
1074
+ height: 30px;
1075
+ padding: 5px 10px;
1076
+ padding-right: 15px;
1077
+ cursor: pointer;
1078
+ overflow: hidden;
1079
+ transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1080
+ border-left: 5px solid #4AC263;
1081
+ padding-left: 15px;
1082
+ margin-left: -5px;
1176
1083
  }
1177
1084
 
1178
- .TextField > input:focus {
1179
- outline: none;
1085
+ .FilteredList .child.hidden {
1086
+ height: 0 !important;
1087
+ padding: 0 !important;
1180
1088
  }
1181
1089
 
1182
- .TextField > input:disabled {
1183
- color: gray;
1184
- background-color: white;
1090
+ .FilteredList .child.selected {
1091
+ background-color: #F0F0F0;
1092
+ padding-left: 10px;
1093
+ margin-left: 0px;
1185
1094
  }
1186
1095
 
1187
- .TextField > input:disabled + .border {
1188
- height: 0px;
1189
- border-bottom: 2px dotted #e0e0e0;
1096
+ .FilteredList .child.active {
1097
+ background-color: #eeeeee;
1190
1098
  }
1191
1099
 
1192
- .TextField > input::placeholder {
1193
- font-family: Roboto, sans-serif;
1194
- color: rgba(0, 0, 0, 0.3);
1195
- opacity: 1;
1100
+ .FilteredList .child {
1101
+ margin-top: 8px;
1196
1102
  }
1197
1103
 
1198
- .TextField > .border {
1199
- border-bottom: 1px solid #e0e0e0;
1200
- height: 1px;
1201
- position: relative;
1104
+ .FilteredList .child.hidden {
1105
+ margin-top: 0;
1202
1106
  }
1203
1107
 
1204
- .TextField > .border .line {
1205
- left: 50%;
1206
- width: 0;
1207
- height: 2px;
1208
- min-height: 2px;
1209
- background-color: #00bcd4;
1210
- transition: all 0.2s ease;
1211
- position: absolute;
1108
+ .FilteredList .child:not(.hidden) ~ .child {
1109
+ margin-top: 0;
1212
1110
  }
1213
1111
 
1214
- .TextField > .error {
1215
- text-align: left;
1216
- font-size: 10px;
1217
- min-height: 0;
1218
- line-height: 14px;
1219
- color: #f44336;
1220
- visibility: hidden;
1221
- opacity: 0;
1222
- transition: all 0.2s ease;
1112
+ .FilteredList .child:not(.hidden) ~ .child:last-child {
1113
+ margin-bottom: 8px;
1223
1114
  }
1224
1115
 
1225
- .TextField.focused > label, .TextField.withValue > label {
1226
- top: 4px;
1227
- font-size: 12px;
1228
- line-height: 14px;
1116
+ .FilteredList .child:not(.hidden):last-child {
1117
+ margin-bottom: 8px;
1229
1118
  }
1230
1119
 
1231
- .TextField.errored > .error {
1232
- visibility: visible;
1233
- opacity: 1;
1120
+ .ModalMenu {
1121
+ position: absolute;
1122
+ top: 10px;
1123
+ right: 50px;
1234
1124
  }
1235
1125
 
1236
- .TextField.errored > .border {
1237
- border-bottom-color: #f44336;
1126
+ .ModalMenu .material-icons {
1127
+ color: #818181;
1238
1128
  }
1239
1129
 
1240
- .TextField.errored > label {
1241
- color: #f44336;
1130
+ .ModalMenu .Button.animated {
1131
+ position: absolute;
1132
+ transition: opacity 150ms ease-in, right 200ms ease-in;
1133
+ opacity: 0;
1134
+ right: 0;
1135
+ top: 0;
1242
1136
  }
1243
1137
 
1244
- .TextField.focused > label {
1245
- color: #00bcd4;
1138
+ .ModalMenu .Button.animated.mounting, .ModalMenu .Button.animated.mounted {
1139
+ opacity: 1;
1246
1140
  }
1247
1141
 
1248
- .TextField.focused > .border .line {
1249
- left: 0;
1250
- width: 100%;
1142
+ .ModalMenu .Button.animated.unmounting {
1143
+ transition: opacity 100ms ease-out, right 200ms ease-out;
1251
1144
  }
1252
1145
 
1253
- .TextField.disabled label, .TextField.disabled input {
1254
- cursor: not-allowed;
1146
+ .ModalMenu .Button.active {
1147
+ background: #EBEBEB;
1255
1148
  }
1256
1149
 
1257
- .TextField.withLabel {
1258
- margin-top: 15px;
1150
+ .ModalMenu .separator {
1151
+ height: 24px;
1152
+ width: 1px;
1153
+ background-color: #D9D9D9;
1154
+ margin-left: 4px;
1259
1155
  }
1260
1156
 
1261
- .TextField input::-webkit-contacts-auto-fill-button {
1262
- visibility: hidden;
1263
- display: none !important;
1264
- pointer-events: none;
1265
- position: absolute;
1266
- right: 0;
1157
+ .Scrollable {
1158
+ max-height: 250px;
1159
+ max-width: 250px;
1160
+ padding-right: 5px;
1161
+ position: relative;
1162
+ display: flex;
1163
+ flex-flow: column;
1164
+ align-items: stretch;
1165
+ overflow: hidden;
1267
1166
  }
1268
1167
 
1269
- .TextField input:-webkit-autofill {
1270
- -webkit-box-shadow: inset 0 0 0px 9999px white;
1168
+ .Scrollable:hover > .scrollbar.auto {
1169
+ transition-delay: 0s;
1170
+ opacity: 1;
1271
1171
  }
1272
1172
 
1273
- @keyframes shake {
1274
- 0%, 100% {
1275
- transform: translateX(0);
1276
- }
1277
- 20%, 60% {
1278
- transform: translateX(-5px);
1279
- }
1280
- 40%, 80% {
1281
- transform: translateX(5px);
1282
- }
1173
+ .Scrollable .viewport {
1174
+ overflow-y: scroll;
1175
+ overflow-x: scroll;
1176
+ max-height: 100%;
1177
+ scroll-behavior: smooth;
1178
+ scrollbar-width: none;
1283
1179
  }
1284
- .TextField .shake {
1285
- animation-duration: 0.5s;
1286
- animation-fill-mode: both;
1287
- animation-timing-function: ease-in-out;
1288
- animation-name: shake;
1180
+
1181
+ .Scrollable .viewport::-webkit-scrollbar {
1182
+ display: none;
1289
1183
  }
1290
1184
 
1291
- .ImageGallery {
1292
- position: fixed;
1293
- top: 0;
1294
- left: 0;
1295
- bottom: 0;
1296
- right: 0;
1297
- z-index: 1000;
1298
- background-color: rgba(0, 0, 0, 0.01);
1299
- user-select: none;
1185
+ .Scrollable.without-scroll-horizontal {
1186
+ max-width: unset;
1300
1187
  }
1301
1188
 
1302
- .ImageGallery:focus {
1303
- outline-width: 0px;
1189
+ .Scrollable.without-scroll {
1190
+ padding-right: 0;
1191
+ max-height: unset;
1304
1192
  }
1305
1193
 
1306
- .ImageGallery.animated {
1307
- transition: background-color 0.25s ease;
1308
- opacity: 1;
1194
+ .Scrollable.without-scroll > .viewport {
1195
+ padding-right: 0;
1196
+ margin-right: 0;
1309
1197
  }
1310
1198
 
1311
- .ImageGallery.mounting, .ImageGallery.mounted {
1312
- background-color: rgba(0, 0, 0, 0.8);
1199
+ .Scrollable.without-scroll > .scrollbar {
1200
+ visibility: hidden;
1313
1201
  }
1314
1202
 
1315
- .ImageGallery .image {
1203
+ .Scrollable .scrollbar {
1316
1204
  position: absolute;
1317
- cursor: grab;
1205
+ right: 0px;
1206
+ top: 0px;
1207
+ width: 5px;
1208
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1209
+ transition-delay: 0.5s;
1210
+ z-index: 1;
1318
1211
  }
1319
1212
 
1320
- .ImageGallery .image .counter {
1321
- display: none;
1213
+ .Scrollable .scrollbar.auto, .Scrollable .scrollbar.hidden {
1214
+ opacity: 0;
1215
+ }
1216
+
1217
+ .Scrollable .scrollbar .thumb {
1218
+ background-color: rgba(0, 0, 0, 0.3);
1219
+ width: 5px;
1220
+ position: absolute;
1221
+ right: 0px;
1222
+ top: 0px;
1223
+ user-select: none;
1224
+ will-change: top;
1225
+ border-radius: 2px;
1322
1226
  }
1323
1227
 
1324
- .ImageGallery .image img {
1325
- border-radius: 4px;
1326
- max-width: 100%;
1327
- min-width: 100%;
1228
+ .Scrollable .scrollbar .thumb:hover {
1229
+ background-color: rgba(0, 0, 0, 0.5);
1328
1230
  }
1329
1231
 
1330
- .ImageGallery .image.animated {
1331
- transition: top 0.25s ease, left 0.25s ease, width 0.25s ease, height 0.25s ease, opacity 0.25s ease;
1332
- will-change: top, left, width, height, opacity;
1232
+ .Scrollable .scrollbar .thumb:active {
1233
+ background-color: rgba(0, 0, 0, 0.7);
1333
1234
  }
1334
1235
 
1335
- .ImageGallery .image.animated.mounting, .ImageGallery .image.animated.mounted, .ImageGallery .image.animated.unmounting {
1336
- opacity: 1;
1236
+ .Scrollable .scrollbar.horizontal {
1237
+ left: 0px;
1238
+ right: 0px;
1239
+ height: 5px;
1240
+ bottom: 0;
1241
+ width: unset;
1242
+ top: unset;
1337
1243
  }
1338
1244
 
1339
- .ImageGallery .image.zoomed {
1340
- text-align: center;
1341
- overflow: hidden;
1245
+ .Scrollable .scrollbar.horizontal .thumb {
1246
+ height: 5px;
1247
+ left: 0px;
1248
+ bottom: 0px;
1249
+ will-change: left;
1342
1250
  }
1343
1251
 
1344
- .ImageGallery .image.dragging {
1345
- transition: none;
1346
- cursor: move;
1252
+ .Modal {
1253
+ display: block;
1254
+ position: fixed;
1255
+ top: 0;
1256
+ left: 0;
1257
+ right: 0;
1258
+ bottom: 100%;
1259
+ overflow-y: scroll;
1260
+ transition: bottom 0ms linear;
1261
+ transition-delay: 0.2s;
1347
1262
  }
1348
1263
 
1349
- .ImageGallery .image .close {
1350
- position: absolute;
1351
- top: -18px;
1352
- right: -18px;
1264
+ .Modal.show {
1265
+ transition-delay: 0s;
1266
+ bottom: 0;
1353
1267
  }
1354
1268
 
1355
- .ImageGallery .image .spinner {
1356
- position: absolute;
1269
+ .Modal > .overlay {
1270
+ position: fixed;
1357
1271
  top: 0;
1358
- bottom: 0;
1272
+ bottom: 100%;
1359
1273
  left: 0;
1360
1274
  right: 0;
1361
- background: rgba(0, 0, 0, 0.65);
1362
- }
1363
-
1364
- .ImageGallery .image .spinner .SpinningProgress {
1365
- position: absolute;
1366
- top: 50%;
1367
- left: 50%;
1368
- margin-left: -24px;
1369
- margin-top: -24px;
1275
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1276
+ opacity: 0;
1277
+ background-color: black;
1278
+ pointer-events: none;
1370
1279
  }
1371
1280
 
1372
- .ImageGallery .image .spinner .SpinningProgress .line {
1373
- stroke: #2196F3;
1281
+ .Modal > .overlay.show {
1282
+ opacity: 0.5;
1283
+ bottom: 0;
1374
1284
  }
1375
1285
 
1376
- .ImageGallery .Button.animated {
1377
- transition: all 0.25s ease;
1286
+ .Modal > .content {
1287
+ left: 50%;
1288
+ top: 10vh;
1289
+ margin-bottom: 10vh;
1290
+ font-size: 16px;
1291
+ padding: 0;
1378
1292
  opacity: 0;
1379
- transform: scale(0);
1293
+ transition: opacity 0.25s ease, transform 0.25s ease;
1294
+ transform: scaleY(0) translateY(-200px) translateX(-50%);
1295
+ transform-origin: top;
1296
+ position: absolute;
1297
+ border-radius: 2px;
1298
+ box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.3);
1380
1299
  }
1381
1300
 
1382
- .ImageGallery .Button.animated.mounted, .ImageGallery .Button.animated.mounting {
1301
+ .Modal > .content.show {
1383
1302
  opacity: 1;
1384
- transform: scale(1);
1303
+ transform: scaleY(1) translateY(0px) translateX(-50%);
1385
1304
  }
1386
1305
 
1387
- .ImageGallery .Button {
1388
- color: white;
1389
- background: rgba(0, 0, 0, 0.4);
1306
+ .Modal > .content > .Scrollable {
1307
+ overflow: visible;
1308
+ max-height: 80vh;
1390
1309
  }
1391
1310
 
1392
- .ImageGallery .Button:hover {
1393
- background: rgba(0, 0, 0, 0.7);
1311
+ .Modal > .content > .Scrollable > .viewport {
1312
+ min-width: 10px;
1313
+ min-height: 10px;
1394
1314
  }
1395
1315
 
1396
- .ImageGallery > .arrow {
1316
+ .Modal > .content > .Button.close {
1317
+ top: 10px;
1318
+ right: 10px;
1397
1319
  position: absolute;
1398
- top: 50%;
1399
- height: 76px;
1400
- width: 76px;
1401
- margin-top: -38px;
1402
1320
  }
1403
1321
 
1404
- .ImageGallery > .arrow.left {
1405
- left: 5%;
1322
+ .Snackbar {
1323
+ transform: translateX(-50%);
1324
+ overflow: hidden;
1325
+ background-color: #323232;
1326
+ padding: 14px 24px 14px 24px;
1327
+ color: #fff;
1328
+ min-width: 288px;
1329
+ max-width: 568px;
1330
+ position: fixed;
1331
+ bottom: -50px;
1332
+ left: 50%;
1333
+ display: flex;
1334
+ flex-wrap: nowrap;
1335
+ align-items: center;
1336
+ opacity: 0;
1337
+ transition: bottom 0.25s ease, opacity 0.2s ease;
1338
+ border-radius: 4px;
1339
+ box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
1406
1340
  }
1407
1341
 
1408
- .ImageGallery > .arrow.right {
1409
- right: 5%;
1342
+ .Snackbar.shown {
1343
+ bottom: 15px;
1344
+ opacity: 1;
1410
1345
  }
1411
1346
 
1412
- .ImageGallery > .arrow .material-icons {
1413
- font-size: 40px;
1347
+ .Snackbar .message {
1348
+ overflow: hidden;
1349
+ line-height: 1.2em;
1350
+ min-height: 1.2em;
1351
+ max-height: 2.4em;
1352
+ flex: 1;
1414
1353
  }
1415
1354
 
1416
- .ImageGallery .counter {
1417
- position: absolute;
1418
- top: 10px;
1419
- left: 10px;
1420
- color: white;
1421
- font-size: 13px;
1355
+ .Snackbar .action {
1356
+ text-transform: uppercase;
1357
+ font-weight: bold;
1358
+ margin-left: 48px;
1359
+ color: #bf3727;
1422
1360
  }
1423
1361
 
1424
- .ImageGallery .previews {
1425
- height: 80px;
1426
- position: absolute;
1427
- bottom: 15px;
1428
- left: 50%;
1429
- transform: translateX(-50%);
1430
- padding: 0 45px;
1362
+ .Snackbar .action a {
1363
+ text-decoration: none;
1364
+ color: #bf3727;
1431
1365
  }
1432
1366
 
1433
- .ImageGallery .previews .viewport {
1434
- overflow: hidden;
1435
- position: relative;
1436
- height: 100%;
1367
+ .Switch {
1368
+ display: inline-flex;
1369
+ padding-top: 5px;
1437
1370
  }
1438
1371
 
1439
- .ImageGallery .previews .container {
1440
- position: relative;
1441
- display: flex;
1442
- flex-flow: row nowrap;
1443
- height: 100%;
1444
- transition: left 0.25s ease;
1372
+ .Switch .switch-input {
1373
+ display: none;
1445
1374
  }
1446
1375
 
1447
- .ImageGallery .previews .preview {
1376
+ .Switch .switch-label {
1448
1377
  position: relative;
1449
- height: 100%;
1450
- display: inline-block;
1451
- width: 106.66px;
1452
- overflow: hidden;
1453
- margin-left: 12px;
1454
- border-radius: 2px;
1378
+ display: inline-flex;
1379
+ align-items: center;
1380
+ min-width: 38px;
1381
+ height: 24px;
1455
1382
  cursor: pointer;
1383
+ font-weight: 500;
1384
+ text-align: left;
1385
+ user-select: none;
1386
+ margin: 0;
1387
+ padding: 0;
1388
+ padding-left: 44px;
1456
1389
  box-sizing: border-box;
1457
1390
  }
1458
1391
 
1459
- .ImageGallery .previews .preview:first-child {
1460
- margin-left: 0;
1461
- }
1462
-
1463
- .ImageGallery .previews .preview > .border {
1392
+ .Switch .switch-label:before, .Switch .switch-label:after {
1393
+ content: "";
1394
+ box-sizing: border-box;
1464
1395
  position: absolute;
1465
- bottom: 0;
1466
- width: 100%;
1467
- height: 3px;
1396
+ margin: 0;
1397
+ outline: 0;
1398
+ top: 50%;
1399
+ transform: translate(0, -50%);
1400
+ transition: all 0.3s ease;
1468
1401
  }
1469
1402
 
1470
- .ImageGallery .previews .preview > .border .line {
1471
- left: 50%;
1472
- width: 0;
1473
- height: 3px;
1474
- min-height: 3px;
1475
- background-color: #4AC263;
1476
- transition: all 0.2s ease;
1477
- position: absolute;
1403
+ .Switch .switch-label:before {
1404
+ left: 1px;
1405
+ width: 34px;
1406
+ height: 14px;
1407
+ background-color: #9E9E9E;
1408
+ border-radius: 8px;
1478
1409
  }
1479
1410
 
1480
- .ImageGallery .previews .preview:after {
1481
- content: "";
1482
- position: absolute;
1483
- top: 0;
1484
- right: 0;
1485
- bottom: 0;
1411
+ .Switch .switch-label:after {
1486
1412
  left: 0;
1487
- background: rgba(0, 0, 0, 0.35);
1488
- transition: background 0.2s ease;
1413
+ width: 20px;
1414
+ height: 20px;
1415
+ background-color: #FAFAFA;
1416
+ border-radius: 50%;
1417
+ 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);
1418
+ }
1419
+
1420
+ .Switch .switch-label .toggle--on {
1421
+ display: none;
1422
+ }
1423
+
1424
+ .Switch .switch-label .toggle--off {
1425
+ display: inline-block;
1426
+ }
1427
+
1428
+ .Switch .switch-label .label {
1429
+ margin-right: 5px;
1489
1430
  }
1490
1431
 
1491
- .ImageGallery .previews .preview:hover:after {
1492
- background: rgba(0, 0, 0, 0.1);
1432
+ .Switch .switch-input:checked + .switch-label:before {
1433
+ background-color: #A5D6A7;
1493
1434
  }
1494
1435
 
1495
- .ImageGallery .previews .preview.selected .border .line {
1496
- left: 0;
1497
- width: 100%;
1436
+ .Switch .switch-input:checked + .switch-label:after {
1437
+ background-color: #4CAF50;
1438
+ transform: translate(80%, -50%);
1498
1439
  }
1499
1440
 
1500
- .ImageGallery .previews .preview.selected:after {
1501
- background: rgba(0, 0, 0, 0);
1441
+ .Switch .switch-input:checked + .switch-label .toggle--on {
1442
+ display: inline-block;
1502
1443
  }
1503
1444
 
1504
- .ImageGallery .previews > .arrow {
1505
- position: absolute;
1506
- top: 50%;
1507
- height: 30px;
1508
- width: 30px;
1509
- min-width: 30px;
1510
- min-height: 30px;
1511
- margin-top: -15px;
1445
+ .Switch .switch-input:checked + .switch-label .toggle--off {
1446
+ display: none;
1512
1447
  }
1513
1448
 
1514
- .ImageGallery .previews > .arrow.left {
1515
- left: 0;
1449
+ .SpinningProgress {
1450
+ width: 48px;
1451
+ height: 48px;
1452
+ position: relative;
1453
+ margin: 0 auto;
1516
1454
  }
1517
1455
 
1518
- .ImageGallery .previews > .arrow.right {
1456
+ .SpinningProgress:before {
1457
+ content: "";
1458
+ display: block;
1459
+ padding-top: 100%;
1460
+ }
1461
+
1462
+ .SpinningProgress .circular {
1463
+ animation: rotate 2s linear infinite;
1464
+ height: 100%;
1465
+ transform-origin: center center;
1466
+ width: 100%;
1467
+ position: absolute;
1468
+ top: 0;
1469
+ bottom: 0;
1470
+ left: 0;
1519
1471
  right: 0;
1472
+ margin: auto;
1520
1473
  }
1521
1474
 
1522
- .ImageGallery .previews > .arrow .material-icons {
1523
- font-size: 24px;
1475
+ .SpinningProgress .line {
1476
+ stroke: black;
1477
+ stroke-width: 2px;
1478
+ stroke-dasharray: 1, 96;
1479
+ stroke-dashoffset: 0;
1480
+ animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
1524
1481
  }
1525
1482
 
1483
+ @keyframes rotate {
1484
+ 100% {
1485
+ transform: rotate(360deg);
1486
+ }
1487
+ }
1488
+ @keyframes dash {
1489
+ 0% {
1490
+ stroke-dasharray: 1, 96;
1491
+ stroke-dashoffset: 0;
1492
+ }
1493
+ 50% {
1494
+ stroke-dasharray: 43, 96;
1495
+ stroke-dashoffset: -17px;
1496
+ }
1497
+ 100% {
1498
+ stroke-dasharray: 43, 96;
1499
+ stroke-dashoffset: -53px;
1500
+ }
1501
+ }
1526
1502
  .DNDContainer .DroppableList .Draggable {
1527
1503
  transform: unset;
1528
1504
  transition: unset;
@@ -1541,123 +1517,147 @@
1541
1517
  transition: transform 0.1s ease-in;
1542
1518
  }
1543
1519
 
1544
- .Scrollable {
1545
- max-height: 250px;
1546
- max-width: 250px;
1547
- padding-right: 5px;
1520
+ .TextField {
1548
1521
  position: relative;
1549
- display: flex;
1550
- flex-flow: column;
1551
- align-items: stretch;
1552
- overflow: hidden;
1522
+ width: 100%;
1553
1523
  }
1554
1524
 
1555
- .Scrollable:hover > .scrollbar.auto {
1556
- transition-delay: 0s;
1557
- opacity: 1;
1525
+ .TextField > label {
1526
+ font-family: Roboto, sans-serif;
1527
+ color: rgba(0, 0, 0, 0.3);
1528
+ font-size: 16px;
1529
+ position: absolute;
1530
+ left: 0px;
1531
+ top: 16px;
1532
+ margin-top: -16px;
1533
+ transition: all 0.2s ease;
1534
+ user-select: none;
1535
+ cursor: text;
1558
1536
  }
1559
1537
 
1560
- .Scrollable .viewport {
1561
- overflow-y: scroll;
1562
- overflow-x: scroll;
1563
- max-height: 100%;
1564
- scroll-behavior: smooth;
1565
- scrollbar-width: none;
1538
+ .TextField > input {
1539
+ font-family: Roboto, sans-serif;
1540
+ color: #1e252d;
1541
+ height: 19px;
1542
+ font-size: 16px;
1543
+ width: 100%;
1544
+ border: 0px;
1545
+ padding-bottom: 4px;
1546
+ padding-top: 0;
1547
+ outline-color: rgba(0, 0, 0, 0);
1566
1548
  }
1567
1549
 
1568
- .Scrollable .viewport::-webkit-scrollbar {
1569
- display: none;
1550
+ .TextField > input:focus {
1551
+ outline: none;
1570
1552
  }
1571
1553
 
1572
- .Scrollable.without-scroll-horizontal {
1573
- max-width: unset;
1554
+ .TextField > input:disabled {
1555
+ color: gray;
1556
+ background-color: white;
1574
1557
  }
1575
1558
 
1576
- .Scrollable.without-scroll {
1577
- padding-right: 0;
1578
- max-height: unset;
1559
+ .TextField > input:disabled + .border {
1560
+ height: 0px;
1561
+ border-bottom: 2px dotted #e0e0e0;
1579
1562
  }
1580
1563
 
1581
- .Scrollable.without-scroll > .viewport {
1582
- padding-right: 0;
1583
- margin-right: 0;
1564
+ .TextField > input::placeholder {
1565
+ font-family: Roboto, sans-serif;
1566
+ color: rgba(0, 0, 0, 0.3);
1567
+ opacity: 1;
1584
1568
  }
1585
1569
 
1586
- .Scrollable.without-scroll > .scrollbar {
1587
- visibility: hidden;
1570
+ .TextField > .border {
1571
+ border-bottom: 1px solid #e0e0e0;
1572
+ height: 1px;
1573
+ position: relative;
1588
1574
  }
1589
1575
 
1590
- .Scrollable .scrollbar {
1576
+ .TextField > .border .line {
1577
+ left: 50%;
1578
+ width: 0;
1579
+ height: 2px;
1580
+ min-height: 2px;
1581
+ background-color: #00bcd4;
1582
+ transition: all 0.2s ease;
1591
1583
  position: absolute;
1592
- right: 0px;
1593
- top: 0px;
1594
- width: 5px;
1595
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1596
- transition-delay: 0.5s;
1597
- z-index: 1;
1598
1584
  }
1599
1585
 
1600
- .Scrollable .scrollbar.auto, .Scrollable .scrollbar.hidden {
1586
+ .TextField > .error {
1587
+ text-align: left;
1588
+ font-size: 10px;
1589
+ min-height: 0;
1590
+ line-height: 14px;
1591
+ color: #f44336;
1592
+ visibility: hidden;
1601
1593
  opacity: 0;
1594
+ transition: all 0.2s ease;
1602
1595
  }
1603
1596
 
1604
- .Scrollable .scrollbar .thumb {
1605
- background-color: rgba(0, 0, 0, 0.3);
1606
- width: 5px;
1607
- position: absolute;
1608
- right: 0px;
1609
- top: 0px;
1610
- user-select: none;
1611
- will-change: top;
1612
- border-radius: 2px;
1597
+ .TextField.focused > label, .TextField.withValue > label {
1598
+ top: 4px;
1599
+ font-size: 12px;
1600
+ line-height: 14px;
1613
1601
  }
1614
1602
 
1615
- .Scrollable .scrollbar .thumb:hover {
1616
- background-color: rgba(0, 0, 0, 0.5);
1603
+ .TextField.errored > .error {
1604
+ visibility: visible;
1605
+ opacity: 1;
1617
1606
  }
1618
1607
 
1619
- .Scrollable .scrollbar .thumb:active {
1620
- background-color: rgba(0, 0, 0, 0.7);
1608
+ .TextField.errored > .border {
1609
+ border-bottom-color: #f44336;
1621
1610
  }
1622
1611
 
1623
- .Scrollable .scrollbar.horizontal {
1624
- left: 0px;
1625
- right: 0px;
1626
- height: 5px;
1627
- bottom: 0;
1628
- width: unset;
1629
- top: unset;
1612
+ .TextField.errored > label {
1613
+ color: #f44336;
1630
1614
  }
1631
1615
 
1632
- .Scrollable .scrollbar.horizontal .thumb {
1633
- height: 5px;
1634
- left: 0px;
1635
- bottom: 0px;
1636
- will-change: left;
1616
+ .TextField.focused > label {
1617
+ color: #00bcd4;
1637
1618
  }
1638
1619
 
1639
- .Button.FloatingActionButton {
1640
- position: absolute;
1641
- right: 16px;
1642
- bottom: 16px;
1643
- width: 56px;
1644
- height: 56px;
1645
- padding: 16px;
1646
- transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1620
+ .TextField.focused > .border .line {
1621
+ left: 0;
1622
+ width: 100%;
1647
1623
  }
1648
1624
 
1649
- .Button.FloatingActionButton.raised {
1650
- 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);
1625
+ .TextField.disabled label, .TextField.disabled input {
1626
+ cursor: not-allowed;
1651
1627
  }
1652
1628
 
1653
- .Button.FloatingActionButton.mini {
1654
- width: 40px;
1655
- height: 40px;
1656
- padding: 8px;
1629
+ .TextField.withLabel {
1630
+ margin-top: 15px;
1657
1631
  }
1658
1632
 
1659
- .Button.FloatingActionButton.hidden {
1660
- bottom: -100px;
1633
+ .TextField input::-webkit-contacts-auto-fill-button {
1634
+ visibility: hidden;
1635
+ display: none !important;
1636
+ pointer-events: none;
1637
+ position: absolute;
1638
+ right: 0;
1639
+ }
1640
+
1641
+ .TextField input:-webkit-autofill {
1642
+ -webkit-box-shadow: inset 0 0 0px 9999px white;
1643
+ }
1644
+
1645
+ @keyframes shake {
1646
+ 0%, 100% {
1647
+ transform: translateX(0);
1648
+ }
1649
+ 20%, 60% {
1650
+ transform: translateX(-5px);
1651
+ }
1652
+ 40%, 80% {
1653
+ transform: translateX(5px);
1654
+ }
1655
+ }
1656
+ .TextField .shake {
1657
+ animation-duration: 0.5s;
1658
+ animation-fill-mode: both;
1659
+ animation-timing-function: ease-in-out;
1660
+ animation-name: shake;
1661
1661
  }
1662
1662
 
1663
1663
  .Table {