react-ui-basics 0.0.194 → 0.0.195

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.
package/Table.d.ts CHANGED
@@ -81,7 +81,7 @@ export interface EditingState<T> {
81
81
  focused: boolean;
82
82
  }
83
83
  declare class Table<T> extends Component<TableProps<T>, TableState<T>> {
84
- startEditing: (item: T, columnIndex: number, value?: any, focused?: boolean) => void;
84
+ startEditing: (item: T, rowIndex: number, columnIndex: number, value?: any, focused?: boolean) => void;
85
85
  finishEditing: () => void;
86
86
  getEditingState: () => EditingState<T>;
87
87
  constructor(properties: any);
package/bundle.css CHANGED
@@ -1,10 +1,194 @@
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;
165
+ }
166
+
167
+ .DropFileInput {
168
+ flex-grow: 1;
169
+ }
170
+
171
+ .DropFileInput .Dropzone {
172
+ border: 1px dashed #808080;
173
+ padding: 12px;
174
+ display: flex;
175
+ flex-flow: row nowrap;
176
+ justify-content: center;
177
+ align-items: center;
178
+ color: gray;
179
+ cursor: pointer;
180
+ border-radius: 3px;
181
+ font-weight: normal;
182
+ line-height: 22px;
183
+ font-size: 14px;
184
+ color: #7E7E7E;
185
+ max-width: 100%;
186
+ word-break: break-all;
187
+ word-break: break-word;
188
+ }
189
+
190
+ .DropFileInput .Dropzone .icon.withText {
191
+ margin-right: 10px;
8
192
  }
9
193
 
10
194
  .AutocompleteSelect {
@@ -302,186 +486,42 @@
302
486
  position: absolute;
303
487
  }
304
488
 
305
- .Button {
306
- position: relative;
307
- min-width: 64px;
308
- min-height: 36px;
309
- height: 24px;
310
- margin: 0px;
311
- padding: 0px 16px;
312
- border: none;
313
- outline: none;
314
- font-size: 14px;
315
- font-weight: 500;
316
- letter-spacing: 1.25px;
317
- background: #dfdfdf;
318
- text-transform: uppercase;
319
- font-family: Roboto, sans-serif;
320
- -webkit-tap-highlight-color: transparent;
321
- display: inline-flex;
322
- justify-content: center;
323
- align-items: center;
324
- cursor: pointer;
325
- overflow: hidden;
326
- user-select: none;
327
- border-radius: 3px;
328
- transition: all 0.2s ease;
489
+ .CircleProgress {
490
+ width: 48px;
491
+ height: 48px;
329
492
  }
330
493
 
331
- .Button.flat {
332
- background-color: transparent;
494
+ .CircleProgress .line {
495
+ stroke-width: 2px;
496
+ stroke: black;
497
+ stroke-linecap: square;
498
+ fill: none;
499
+ transition: stroke-dashoffset 0.2s ease;
333
500
  }
334
501
 
335
- .Button.flat:hover {
336
- background-color: rgba(0, 0, 0, 0.05);
502
+ .animated {
503
+ transition: opacity 250ms ease;
504
+ opacity: 0;
337
505
  }
338
506
 
339
- .Button.green {
340
- background-color: #43a047;
341
- color: white;
507
+ .animated.mounting, .animated.mounted {
508
+ opacity: 1;
342
509
  }
343
510
 
344
- .Button.green:hover {
345
- background-color: #3b8e3f;
511
+ .Checkbox {
512
+ position: relative;
513
+ white-space: pre;
346
514
  }
347
515
 
348
- .Button.blue {
349
- background-color: #039be5;
350
- color: white;
516
+ .Checkbox *, .Checkbox *:before, .Checkbox *:after {
517
+ box-sizing: border-box;
351
518
  }
352
519
 
353
- .Button.blue:hover {
354
- background-color: #038acc;
355
- }
356
-
357
- .Button.red {
358
- background-color: #e53935;
359
- color: white;
360
- }
361
-
362
- .Button.red:hover {
363
- background-color: #e2231e;
364
- }
365
-
366
- .Button.black {
367
- background-color: #1e252d;
368
- color: white;
369
- }
370
-
371
- .Button.black:hover {
372
- background-color: #14181e;
373
- }
374
-
375
- .Button.gray {
376
- background: #D9D9D9;
377
- color: #999999;
378
- }
379
-
380
- .Button.gray:hover {
381
- background-color: #cccccc;
382
- }
383
-
384
- .Button.small {
385
- padding: 0px 8px;
386
- min-height: 16px;
387
- min-width: 16px;
388
- }
389
-
390
- .Button > .material-icons {
391
- margin-right: 10px;
392
- }
393
-
394
- .Button.round {
395
- padding: 0px;
396
- min-width: 36px;
397
- border-radius: 50%;
398
- }
399
-
400
- .Button.round > .material-icons {
401
- margin: 0px;
402
- }
403
-
404
- .Button .ripple {
405
- position: absolute;
406
- background: rgba(0, 0, 0, 0.1);
407
- border-radius: 100%;
408
- transform: scale(0);
409
- pointer-events: none;
410
- transition: opacity 0.2s ease-out;
411
- }
412
-
413
- .Button .ripple.show {
414
- animation: ripple 0.35s ease-out;
415
- }
416
-
417
- .Button:active .ripple.showed {
418
- opacity: 1;
419
- }
420
-
421
- .Button:focus .ripple.focused {
422
- opacity: 1;
423
- transition: opacity 0.2s ease-out, transform 0.2s ease-out;
424
- transform: scale(1);
425
- animation: resize 1.25s ease-out infinite;
426
- animation-delay: 0.2s;
427
- animation-direction: alternate;
428
- }
429
-
430
- .Button .ripple.showed {
431
- transform: scale(2);
432
- opacity: 0;
433
- }
434
-
435
- @keyframes ripple {
436
- to {
437
- transform: scale(2);
438
- }
439
- }
440
- @keyframes resize {
441
- to {
442
- transform: scale(0.9);
443
- }
444
- }
445
- .Button.raised {
446
- transition: color 0.2s ease-out, background-color 0.2s ease-out, box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
447
- }
448
-
449
- .Button.raised:hover {
450
- box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.25);
451
- }
452
-
453
- .Button.raised:active {
454
- box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.35);
455
- }
456
-
457
- .Button.disabled {
458
- box-shadow: none;
459
- background: #D9D9D9;
460
- color: #999999;
461
- }
462
-
463
- .Button.disabled:hover {
464
- background-color: #cccccc;
465
- }
466
-
467
- .Button::-moz-focus-inner {
468
- border: 0;
469
- }
470
-
471
- .Checkbox {
472
- position: relative;
473
- white-space: pre;
474
- }
475
-
476
- .Checkbox *, .Checkbox *:before, .Checkbox *:after {
477
- box-sizing: border-box;
478
- }
479
-
480
- .Checkbox label {
481
- font-family: Roboto, sans-serif;
482
- font-size: 14px;
483
- color: #1e252d;
484
- cursor: pointer;
520
+ .Checkbox label {
521
+ font-family: Roboto, sans-serif;
522
+ font-size: 14px;
523
+ color: #1e252d;
524
+ cursor: pointer;
485
525
  }
486
526
 
487
527
  .Checkbox label:before, .Checkbox label:after {
@@ -535,131 +575,6 @@
535
575
  background: rgba(0, 0, 0, 0.26);
536
576
  }
537
577
 
538
- .FilteredList {
539
- max-height: 250px;
540
- position: relative;
541
- }
542
-
543
- .FilteredList.popup {
544
- padding: 0;
545
- visibility: hidden;
546
- position: absolute;
547
- background: white;
548
- z-index: 4;
549
- 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);
550
- transition: all 0.2s ease-out;
551
- top: calc(100% + 4px);
552
- opacity: 0;
553
- border-radius: 2px;
554
- }
555
-
556
- .FilteredList.popup.visible {
557
- opacity: 1;
558
- visibility: visible;
559
- }
560
-
561
- .FilteredList.portal {
562
- transition: opacity 0.2s ease-out;
563
- }
564
-
565
- .FilteredList.inline {
566
- max-height: 225px;
567
- margin-top: 5px;
568
- }
569
-
570
- .FilteredList .child {
571
- display: flex;
572
- flex-flow: row nowrap;
573
- align-items: center;
574
- white-space: nowrap;
575
- font-size: 14px;
576
- color: rgb(34, 34, 34);
577
- height: 30px;
578
- padding: 5px 10px;
579
- padding-right: 15px;
580
- cursor: pointer;
581
- overflow: hidden;
582
- transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
583
- border-left: 5px solid #4AC263;
584
- padding-left: 15px;
585
- margin-left: -5px;
586
- }
587
-
588
- .FilteredList .child.hidden {
589
- height: 0 !important;
590
- padding: 0 !important;
591
- }
592
-
593
- .FilteredList .child.selected {
594
- background-color: #F0F0F0;
595
- padding-left: 10px;
596
- margin-left: 0px;
597
- }
598
-
599
- .FilteredList .child.active {
600
- background-color: rgb(238, 238, 238);
601
- }
602
-
603
- .FilteredList .child {
604
- margin-top: 8px;
605
- }
606
-
607
- .FilteredList .child.hidden {
608
- margin-top: 0;
609
- }
610
-
611
- .FilteredList .child:not(.hidden) ~ .child {
612
- margin-top: 0;
613
- }
614
-
615
- .FilteredList .child:not(.hidden) ~ .child:last-child {
616
- margin-bottom: 8px;
617
- }
618
-
619
- .FilteredList .child:not(.hidden):last-child {
620
- margin-bottom: 8px;
621
- }
622
-
623
- .DropFileInput {
624
- flex-grow: 1;
625
- }
626
-
627
- .DropFileInput .Dropzone {
628
- border: 1px dashed #808080;
629
- padding: 12px;
630
- display: flex;
631
- flex-flow: row nowrap;
632
- justify-content: center;
633
- align-items: center;
634
- color: gray;
635
- cursor: pointer;
636
- border-radius: 3px;
637
- font-weight: normal;
638
- line-height: 22px;
639
- font-size: 14px;
640
- color: #7E7E7E;
641
- max-width: 100%;
642
- word-break: break-all;
643
- word-break: break-word;
644
- }
645
-
646
- .DropFileInput .Dropzone .icon.withText {
647
- margin-right: 10px;
648
- }
649
-
650
- .CircleProgress {
651
- width: 48px;
652
- height: 48px;
653
- }
654
-
655
- .CircleProgress .line {
656
- stroke-width: 2px;
657
- stroke: black;
658
- stroke-linecap: square;
659
- fill: none;
660
- transition: stroke-dashoffset 0.2s ease;
661
- }
662
-
663
578
  .DialogModal {
664
579
  overflow: hidden;
665
580
  }
@@ -688,102 +603,18 @@
688
603
  color: rgba(0, 0, 0, 0.54);
689
604
  font-size: 1rem;
690
605
  line-height: 1.5rem;
691
- font-weight: 400;
692
- letter-spacing: 0.03125em;
693
- margin-top: 20px;
694
- padding: 0 24px 24px;
695
- }
696
-
697
- .Dialog > div.row {
698
- margin-bottom: 15px;
699
- }
700
-
701
- .Dialog > div.row:last-child {
702
- margin-bottom: 0;
703
- }
704
-
705
- .Button.FloatingActionButton {
706
- position: absolute;
707
- right: 16px;
708
- bottom: 16px;
709
- width: 56px;
710
- height: 56px;
711
- padding: 16px;
712
- transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
713
- }
714
-
715
- .Button.FloatingActionButton.raised {
716
- 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);
717
- }
718
-
719
- .Button.FloatingActionButton.mini {
720
- width: 40px;
721
- height: 40px;
722
- padding: 8px;
723
- }
724
-
725
- .Button.FloatingActionButton.hidden {
726
- bottom: -100px;
727
- }
728
-
729
- .Dropzone {
730
- position: relative;
731
- }
732
-
733
- .Dropzone > .overlay {
734
- position: absolute;
735
- left: 0;
736
- right: 0;
737
- top: 0;
738
- bottom: 0;
739
- background-color: #38ADC4;
740
- z-index: 1;
741
- opacity: 0;
742
- transition: all 0.2s ease;
743
- transition-delay: 100ms;
744
- visibility: hidden;
745
- display: flex;
746
- justify-content: center;
747
- align-items: center;
748
- }
749
-
750
- .Dropzone > .overlay .drop {
751
- border-radius: 4px;
752
- border: 1px dashed #FFFFFF;
753
- position: absolute;
754
- top: 18px;
755
- left: 18px;
756
- right: 18px;
757
- bottom: 18px;
758
- display: flex;
759
- justify-content: center;
760
- align-items: center;
761
- font-weight: 500;
762
- font-size: 18px;
763
- color: #FFFFFF;
764
- }
765
-
766
- .Dropzone.dragging > .overlay {
767
- opacity: 0.7;
768
- visibility: visible;
769
- transition-delay: 0s;
606
+ font-weight: 400;
607
+ letter-spacing: 0.03125em;
608
+ margin-top: 20px;
609
+ padding: 0 24px 24px;
770
610
  }
771
611
 
772
- .Dropzone.dragging > * {
773
- pointer-events: none;
612
+ .Dialog > div.row {
613
+ margin-bottom: 15px;
774
614
  }
775
615
 
776
- .Dropzone > input.file {
777
- position: absolute;
778
- left: 0;
779
- right: 0;
780
- top: 0;
781
- bottom: 0;
782
- width: 100%;
783
- height: 100%;
784
- opacity: 0;
785
- cursor: pointer;
786
- z-index: 1;
616
+ .Dialog > div.row:last-child {
617
+ margin-bottom: 0;
787
618
  }
788
619
 
789
620
  .FormUploadProgress {
@@ -855,74 +686,109 @@
855
686
  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
856
687
  }
857
688
 
858
- .Modal {
859
- display: block;
860
- position: fixed;
861
- top: 0;
689
+ .Dropzone {
690
+ position: relative;
691
+ }
692
+
693
+ .Dropzone > .overlay {
694
+ position: absolute;
862
695
  left: 0;
863
696
  right: 0;
864
- bottom: 100%;
865
- overflow-y: scroll;
866
- transition: bottom 0ms linear;
867
- transition-delay: 0.2s;
697
+ top: 0;
698
+ bottom: 0;
699
+ background-color: #38ADC4;
700
+ z-index: 1;
701
+ opacity: 0;
702
+ transition: all 0.2s ease;
703
+ transition-delay: 100ms;
704
+ visibility: hidden;
705
+ display: flex;
706
+ justify-content: center;
707
+ align-items: center;
868
708
  }
869
709
 
870
- .Modal.show {
710
+ .Dropzone > .overlay .drop {
711
+ border-radius: 4px;
712
+ border: 1px dashed #FFFFFF;
713
+ position: absolute;
714
+ top: 18px;
715
+ left: 18px;
716
+ right: 18px;
717
+ bottom: 18px;
718
+ display: flex;
719
+ justify-content: center;
720
+ align-items: center;
721
+ font-weight: 500;
722
+ font-size: 18px;
723
+ color: #FFFFFF;
724
+ }
725
+
726
+ .Dropzone.dragging > .overlay {
727
+ opacity: 0.7;
728
+ visibility: visible;
871
729
  transition-delay: 0s;
872
- bottom: 0;
873
730
  }
874
731
 
875
- .Modal > .overlay {
876
- position: fixed;
877
- top: 0;
878
- bottom: 100%;
879
- left: 0;
880
- right: 0;
881
- transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
882
- opacity: 0;
883
- background-color: black;
732
+ .Dropzone.dragging > * {
884
733
  pointer-events: none;
885
734
  }
886
735
 
887
- .Modal > .overlay.show {
888
- opacity: 0.5;
736
+ .Dropzone > input.file {
737
+ position: absolute;
738
+ left: 0;
739
+ right: 0;
740
+ top: 0;
889
741
  bottom: 0;
742
+ width: 100%;
743
+ height: 100%;
744
+ opacity: 0;
745
+ cursor: pointer;
746
+ z-index: 1;
890
747
  }
891
748
 
892
- .Modal > .content {
749
+ .Snackbar {
750
+ transform: translateX(-50%);
751
+ overflow: hidden;
752
+ background-color: #323232;
753
+ padding: 14px 24px 14px 24px;
754
+ color: #fff;
755
+ min-width: 288px;
756
+ max-width: 568px;
757
+ position: fixed;
758
+ bottom: -50px;
893
759
  left: 50%;
894
- top: 10vh;
895
- margin-bottom: 10vh;
896
- font-size: 16px;
897
- padding: 0;
760
+ display: flex;
761
+ flex-wrap: nowrap;
762
+ align-items: center;
898
763
  opacity: 0;
899
- transition: opacity 0.25s ease, transform 0.25s ease;
900
- transform: scaleY(0) translateY(-200px) translateX(-50%);
901
- transform-origin: top;
902
- position: absolute;
903
- border-radius: 2px;
904
- box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.3);
764
+ transition: bottom 0.25s ease, opacity 0.2s ease;
765
+ border-radius: 4px;
766
+ box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
905
767
  }
906
768
 
907
- .Modal > .content.show {
769
+ .Snackbar.shown {
770
+ bottom: 15px;
908
771
  opacity: 1;
909
- transform: scaleY(1) translateY(0px) translateX(-50%);
910
772
  }
911
773
 
912
- .Modal > .content > .Scrollable {
913
- overflow: visible;
914
- max-height: 80vh;
774
+ .Snackbar .message {
775
+ overflow: hidden;
776
+ line-height: 1.2em;
777
+ min-height: 1.2em;
778
+ max-height: 2.4em;
779
+ flex: 1;
915
780
  }
916
781
 
917
- .Modal > .content > .Scrollable > .viewport {
918
- min-width: 10px;
919
- min-height: 10px;
782
+ .Snackbar .action {
783
+ text-transform: uppercase;
784
+ font-weight: bold;
785
+ margin-left: 48px;
786
+ color: #bf3727;
920
787
  }
921
788
 
922
- .Modal > .content > .Button.close {
923
- top: 10px;
924
- right: 10px;
925
- position: absolute;
789
+ .Snackbar .action a {
790
+ text-decoration: none;
791
+ color: #bf3727;
926
792
  }
927
793
 
928
794
  .Scrollable {
@@ -1020,86 +886,113 @@
1020
886
  will-change: left;
1021
887
  }
1022
888
 
1023
- .Switch {
1024
- display: inline-flex;
1025
- padding-top: 5px;
889
+ .FilteredList {
890
+ max-height: 250px;
891
+ position: relative;
1026
892
  }
1027
893
 
1028
- .Switch .switch-input {
1029
- display: none;
894
+ .FilteredList.popup {
895
+ padding: 0;
896
+ visibility: hidden;
897
+ position: absolute;
898
+ background: white;
899
+ z-index: 4;
900
+ 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);
901
+ transition: all 0.2s ease-out;
902
+ top: calc(100% + 4px);
903
+ opacity: 0;
904
+ border-radius: 2px;
1030
905
  }
1031
906
 
1032
- .Switch .switch-label {
1033
- position: relative;
1034
- display: inline-flex;
907
+ .FilteredList.popup.visible {
908
+ opacity: 1;
909
+ visibility: visible;
910
+ }
911
+
912
+ .FilteredList.portal {
913
+ transition: opacity 0.2s ease-out;
914
+ }
915
+
916
+ .FilteredList.inline {
917
+ max-height: 225px;
918
+ margin-top: 5px;
919
+ }
920
+
921
+ .FilteredList .child {
922
+ display: flex;
923
+ flex-flow: row nowrap;
1035
924
  align-items: center;
1036
- min-width: 38px;
1037
- height: 24px;
925
+ white-space: nowrap;
926
+ font-size: 14px;
927
+ color: rgb(34, 34, 34);
928
+ height: 30px;
929
+ padding: 5px 10px;
930
+ padding-right: 15px;
1038
931
  cursor: pointer;
1039
- font-weight: 500;
1040
- text-align: left;
1041
- user-select: none;
1042
- margin: 0;
1043
- padding: 0;
1044
- padding-left: 44px;
1045
- box-sizing: border-box;
932
+ overflow: hidden;
933
+ transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
934
+ border-left: 5px solid #4AC263;
935
+ padding-left: 15px;
936
+ margin-left: -5px;
1046
937
  }
1047
938
 
1048
- .Switch .switch-label:before, .Switch .switch-label:after {
1049
- content: "";
1050
- box-sizing: border-box;
1051
- position: absolute;
1052
- margin: 0;
1053
- outline: 0;
1054
- top: 50%;
1055
- transform: translate(0, -50%);
1056
- transition: all 0.3s ease;
939
+ .FilteredList .child.hidden {
940
+ height: 0 !important;
941
+ padding: 0 !important;
1057
942
  }
1058
943
 
1059
- .Switch .switch-label:before {
1060
- left: 1px;
1061
- width: 34px;
1062
- height: 14px;
1063
- background-color: #9E9E9E;
1064
- border-radius: 8px;
944
+ .FilteredList .child.selected {
945
+ background-color: #F0F0F0;
946
+ padding-left: 10px;
947
+ margin-left: 0px;
1065
948
  }
1066
949
 
1067
- .Switch .switch-label:after {
1068
- left: 0;
1069
- width: 20px;
1070
- height: 20px;
1071
- background-color: #FAFAFA;
1072
- border-radius: 50%;
1073
- 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);
950
+ .FilteredList .child.active {
951
+ background-color: rgb(238, 238, 238);
1074
952
  }
1075
953
 
1076
- .Switch .switch-label .toggle--on {
1077
- display: none;
954
+ .FilteredList .child {
955
+ margin-top: 8px;
1078
956
  }
1079
957
 
1080
- .Switch .switch-label .toggle--off {
1081
- display: inline-block;
958
+ .FilteredList .child.hidden {
959
+ margin-top: 0;
1082
960
  }
1083
961
 
1084
- .Switch .switch-label .label {
1085
- margin-right: 5px;
962
+ .FilteredList .child:not(.hidden) ~ .child {
963
+ margin-top: 0;
1086
964
  }
1087
965
 
1088
- .Switch .switch-input:checked + .switch-label:before {
1089
- background-color: #A5D6A7;
966
+ .FilteredList .child:not(.hidden) ~ .child:last-child {
967
+ margin-bottom: 8px;
968
+ }
969
+
970
+ .FilteredList .child:not(.hidden):last-child {
971
+ margin-bottom: 8px;
972
+ }
973
+
974
+ .Button.FloatingActionButton {
975
+ position: absolute;
976
+ right: 16px;
977
+ bottom: 16px;
978
+ width: 56px;
979
+ height: 56px;
980
+ padding: 16px;
981
+ transition: bottom 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1090
982
  }
1091
983
 
1092
- .Switch .switch-input:checked + .switch-label:after {
1093
- background-color: #4CAF50;
1094
- transform: translate(80%, -50%);
984
+ .Button.FloatingActionButton.raised {
985
+ 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);
1095
986
  }
1096
987
 
1097
- .Switch .switch-input:checked + .switch-label .toggle--on {
1098
- display: inline-block;
988
+ .Button.FloatingActionButton.mini {
989
+ width: 40px;
990
+ height: 40px;
991
+ padding: 8px;
1099
992
  }
1100
993
 
1101
- .Switch .switch-input:checked + .switch-label .toggle--off {
1102
- display: none;
994
+ .Button.FloatingActionButton.hidden {
995
+ bottom: -100px;
1103
996
  }
1104
997
 
1105
998
  .ImageGallery {
@@ -1374,6 +1267,76 @@
1374
1267
  margin-left: 4px;
1375
1268
  }
1376
1269
 
1270
+ .Modal {
1271
+ display: block;
1272
+ position: fixed;
1273
+ top: 0;
1274
+ left: 0;
1275
+ right: 0;
1276
+ bottom: 100%;
1277
+ overflow-y: scroll;
1278
+ transition: bottom 0ms linear;
1279
+ transition-delay: 0.2s;
1280
+ }
1281
+
1282
+ .Modal.show {
1283
+ transition-delay: 0s;
1284
+ bottom: 0;
1285
+ }
1286
+
1287
+ .Modal > .overlay {
1288
+ position: fixed;
1289
+ top: 0;
1290
+ bottom: 100%;
1291
+ left: 0;
1292
+ right: 0;
1293
+ transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1294
+ opacity: 0;
1295
+ background-color: black;
1296
+ pointer-events: none;
1297
+ }
1298
+
1299
+ .Modal > .overlay.show {
1300
+ opacity: 0.5;
1301
+ bottom: 0;
1302
+ }
1303
+
1304
+ .Modal > .content {
1305
+ left: 50%;
1306
+ top: 10vh;
1307
+ margin-bottom: 10vh;
1308
+ font-size: 16px;
1309
+ padding: 0;
1310
+ opacity: 0;
1311
+ transition: opacity 0.25s ease, transform 0.25s ease;
1312
+ transform: scaleY(0) translateY(-200px) translateX(-50%);
1313
+ transform-origin: top;
1314
+ position: absolute;
1315
+ border-radius: 2px;
1316
+ box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.3);
1317
+ }
1318
+
1319
+ .Modal > .content.show {
1320
+ opacity: 1;
1321
+ transform: scaleY(1) translateY(0px) translateX(-50%);
1322
+ }
1323
+
1324
+ .Modal > .content > .Scrollable {
1325
+ overflow: visible;
1326
+ max-height: 80vh;
1327
+ }
1328
+
1329
+ .Modal > .content > .Scrollable > .viewport {
1330
+ min-width: 10px;
1331
+ min-height: 10px;
1332
+ }
1333
+
1334
+ .Modal > .content > .Button.close {
1335
+ top: 10px;
1336
+ right: 10px;
1337
+ position: absolute;
1338
+ }
1339
+
1377
1340
  .TextField {
1378
1341
  position: relative;
1379
1342
  width: 100%;
@@ -1517,6 +1480,106 @@
1517
1480
  animation-name: shake;
1518
1481
  }
1519
1482
 
1483
+ .DNDContainer .DroppableList .Draggable {
1484
+ transform: unset;
1485
+ transition: unset;
1486
+ opacity: 1;
1487
+ }
1488
+
1489
+ .DNDContainer .DroppableList .Draggable.dragged {
1490
+ transition: unset !important;
1491
+ }
1492
+
1493
+ .DNDContainer .DroppableList.hover .Draggable {
1494
+ transition: transform 0.2s ease-in;
1495
+ }
1496
+
1497
+ .DNDContainer .DroppableList.resetting .Draggable {
1498
+ transition: transform 0.1s ease-in;
1499
+ }
1500
+
1501
+ .Switch {
1502
+ display: inline-flex;
1503
+ padding-top: 5px;
1504
+ }
1505
+
1506
+ .Switch .switch-input {
1507
+ display: none;
1508
+ }
1509
+
1510
+ .Switch .switch-label {
1511
+ position: relative;
1512
+ display: inline-flex;
1513
+ align-items: center;
1514
+ min-width: 38px;
1515
+ height: 24px;
1516
+ cursor: pointer;
1517
+ font-weight: 500;
1518
+ text-align: left;
1519
+ user-select: none;
1520
+ margin: 0;
1521
+ padding: 0;
1522
+ padding-left: 44px;
1523
+ box-sizing: border-box;
1524
+ }
1525
+
1526
+ .Switch .switch-label:before, .Switch .switch-label:after {
1527
+ content: "";
1528
+ box-sizing: border-box;
1529
+ position: absolute;
1530
+ margin: 0;
1531
+ outline: 0;
1532
+ top: 50%;
1533
+ transform: translate(0, -50%);
1534
+ transition: all 0.3s ease;
1535
+ }
1536
+
1537
+ .Switch .switch-label:before {
1538
+ left: 1px;
1539
+ width: 34px;
1540
+ height: 14px;
1541
+ background-color: #9E9E9E;
1542
+ border-radius: 8px;
1543
+ }
1544
+
1545
+ .Switch .switch-label:after {
1546
+ left: 0;
1547
+ width: 20px;
1548
+ height: 20px;
1549
+ background-color: #FAFAFA;
1550
+ border-radius: 50%;
1551
+ 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);
1552
+ }
1553
+
1554
+ .Switch .switch-label .toggle--on {
1555
+ display: none;
1556
+ }
1557
+
1558
+ .Switch .switch-label .toggle--off {
1559
+ display: inline-block;
1560
+ }
1561
+
1562
+ .Switch .switch-label .label {
1563
+ margin-right: 5px;
1564
+ }
1565
+
1566
+ .Switch .switch-input:checked + .switch-label:before {
1567
+ background-color: #A5D6A7;
1568
+ }
1569
+
1570
+ .Switch .switch-input:checked + .switch-label:after {
1571
+ background-color: #4CAF50;
1572
+ transform: translate(80%, -50%);
1573
+ }
1574
+
1575
+ .Switch .switch-input:checked + .switch-label .toggle--on {
1576
+ display: inline-block;
1577
+ }
1578
+
1579
+ .Switch .switch-input:checked + .switch-label .toggle--off {
1580
+ display: none;
1581
+ }
1582
+
1520
1583
  .SpinningProgress {
1521
1584
  width: 48px;
1522
1585
  height: 48px;
@@ -1570,69 +1633,6 @@
1570
1633
  stroke-dashoffset: -53px;
1571
1634
  }
1572
1635
  }
1573
- .Snackbar {
1574
- transform: translateX(-50%);
1575
- overflow: hidden;
1576
- background-color: #323232;
1577
- padding: 14px 24px 14px 24px;
1578
- color: #fff;
1579
- min-width: 288px;
1580
- max-width: 568px;
1581
- position: fixed;
1582
- bottom: -50px;
1583
- left: 50%;
1584
- display: flex;
1585
- flex-wrap: nowrap;
1586
- align-items: center;
1587
- opacity: 0;
1588
- transition: bottom 0.25s ease, opacity 0.2s ease;
1589
- border-radius: 4px;
1590
- box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
1591
- }
1592
-
1593
- .Snackbar.shown {
1594
- bottom: 15px;
1595
- opacity: 1;
1596
- }
1597
-
1598
- .Snackbar .message {
1599
- overflow: hidden;
1600
- line-height: 1.2em;
1601
- min-height: 1.2em;
1602
- max-height: 2.4em;
1603
- flex: 1;
1604
- }
1605
-
1606
- .Snackbar .action {
1607
- text-transform: uppercase;
1608
- font-weight: bold;
1609
- margin-left: 48px;
1610
- color: #bf3727;
1611
- }
1612
-
1613
- .Snackbar .action a {
1614
- text-decoration: none;
1615
- color: #bf3727;
1616
- }
1617
-
1618
- .DNDContainer .DroppableList .Draggable {
1619
- transform: unset;
1620
- transition: unset;
1621
- opacity: 1;
1622
- }
1623
-
1624
- .DNDContainer .DroppableList .Draggable.dragged {
1625
- transition: unset !important;
1626
- }
1627
-
1628
- .DNDContainer .DroppableList.hover .Draggable {
1629
- transition: transform 0.2s ease-in;
1630
- }
1631
-
1632
- .DNDContainer .DroppableList.resetting .Draggable {
1633
- transition: transform 0.1s ease-in;
1634
- }
1635
-
1636
1636
  .CalendarMonthView {
1637
1637
  display: flex;
1638
1638
  flex-flow: column nowrap;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-ui-basics",
3
- "version": "0.0.194",
3
+ "version": "0.0.195",
4
4
  "description": "",
5
5
  "module": "index.js",
6
6
  "_main": "index.cjs.js",
package/src/Table.tsx CHANGED
@@ -115,7 +115,7 @@ export interface EditingState<T> {
115
115
  }
116
116
 
117
117
  class Table<T> extends Component<TableProps<T>, TableState<T>> {
118
- startEditing: (item: T, columnIndex: number, value?, focused?: boolean) => void;
118
+ startEditing: (item: T, rowIndex: number, columnIndex: number, value?, focused?: boolean) => void;
119
119
  finishEditing: () => void;
120
120
  getEditingState: () => EditingState<T>;
121
121