UNPKG

20.7 kBSCSSView Raw
1// if we don't do this, then the width and height of the grid would be ignored,
2// as there is no default display for the element ag-grid-a2 (as it's not a natural dom element)
3ag-grid-angular {
4 display: block;
5}
6
7ag-grid-ng2 {
8 display: block;
9}
10
11ag-grid {
12 display: block;
13}
14
15ag-grid-polymer {
16 display: block;
17}
18
19ag-grid-aurelia {
20 display: block;
21}
22
23.ag-rtl {
24 //text-align right
25 direction: rtl;
26}
27
28.ag-ltr {
29 //text-align left
30 direction: ltr;
31}
32
33.ag-select-agg-func-popup {
34 position: absolute;
35}
36
37// when we drag the mouse in ag-Grid, this class gets added / removed from the body, so that
38// the mouse isn't selecting text when dragging.
39.ag-body-no-select {
40 user-select: none;
41}
42
43.ag-root-wrapper {
44 position: relative; // set to relative, so absolute popups appear relative to this
45}
46
47.ag-root-wrapper.ag-layout-normal {
48 height: 100%;
49 display: flex;
50 flex-direction: column;
51}
52
53.ag-root-wrapper-body {
54 display: flex;
55 flex-direction: row;
56}
57
58.ag-layout-normal.ag-root-wrapper-body {
59 flex-grow: 1;
60 height: 0px;
61 min-height: 0px;
62}
63
64.ag-root {
65 box-sizing: border-box;
66 overflow: hidden; // was getting some 'should be there' scrolls, this sorts it out
67 position: relative; // set to relative, so absolute popups appear relative to this
68 display: inline-block;
69 width: 0px;
70 min-width: 0px;
71 flex: 1;
72}
73
74.ag-layout-normal.ag-root {
75 height: 100%;
76 display: flex;
77 flex-direction: column;
78}
79
80.ag-font-style {
81 cursor: default;
82 user-select: none; // disable user mouse selection
83}
84
85.ag-popup-backdrop {
86 height: 100%;
87 left: 0;
88 position: fixed;
89 top: 0;
90 width: 100%;
91}
92
93.ag-header {
94 box-sizing: border-box;
95 //overflow: hidden;
96 white-space: nowrap;
97 width: 100%;
98 display: flex;
99}
100
101.ag-pinned-left-header {
102 box-sizing: border-box;
103 display: inline-block;
104 height: 100%;
105 overflow: hidden;
106}
107
108.ag-pinned-right-header {
109 box-sizing: border-box;
110 display: inline-block;
111 height: 100%;
112 overflow: hidden;
113}
114
115.ag-header-viewport {
116 box-sizing: border-box;
117 height: 100%;
118 overflow: hidden;
119 width: 0px;
120 min-width: 0px;
121 flex: 1;
122}
123
124.ag-header-row {
125 position: absolute;
126}
127
128.ag-header-container {
129 box-sizing: border-box;
130 height: 100%;
131 position: relative;
132 white-space: nowrap;
133}
134
135.ag-header-overlay {
136 display: block;
137 position: absolute;
138}
139
140.ag-header-cell {
141 box-sizing: border-box;
142 display: inline-block;
143 height: 100%;
144 position: absolute;
145 vertical-align: bottom;
146 //float left // safari doesn't align if we don't float
147}
148
149.ag-floating-filter {
150 box-sizing: border-box;
151 display: inline-block;
152 position: absolute;
153}
154
155.ag-floating-filter-body {
156 height: 20px;
157 margin-right: 25px;
158}
159
160.ag-floating-filter-full-body {
161 height: 20px;
162 width: 100%;
163}
164
165.ag-floating-filter-input {
166 width: 100%;
167}
168
169.ag-floating-filter-input:read-only {
170 background-color: #eee;
171}
172
173.ag-floating-filter-menu {
174 position: absolute;
175 user-select: none;
176}
177// the ghost header cell doesn't live inside the grid, it's parent is the body element,
178// so we cannot style using standard themes. hence we break the rules, and style it here
179.ag-dnd-ghost {
180 background: #e5e5e5;
181 border: 1px solid black;
182 box-sizing: border-box;
183 cursor: move;
184 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
185 font-size: 14px;
186 line-height: 1.4;
187 overflow: hidden;
188 padding: 3px;
189 position: absolute;
190 text-overflow: ellipsis;
191 user-select: none;
192 //img
193 // vertical-align: middle;
194 // border: 0px;
195}
196
197.ag-dnd-ghost-icon {
198 display: inline-block;
199 float: left;
200 padding: 2px;
201}
202
203.ag-dnd-ghost-label {
204 display: inline-block;
205}
206
207.ag-header-group-cell {
208 box-sizing: border-box;
209 display: inline-block;
210 height: 100%;
211 overflow: hidden;
212 position: absolute;
213 text-overflow: ellipsis;
214 //float: left // safari doesn't align if we don't float
215}
216// we needed to have display of table-cell below,
217// as with inline-block, the layout messed up in Safari (not problems in the others).
218.ag-header-group-cell-label {
219 overflow: hidden;
220 text-overflow: ellipsis;
221 display: flex;
222}
223
224.ag-header-cell-label {
225 overflow: hidden;
226 text-overflow: ellipsis;
227}
228
229.ag-header-cell-resize {
230 cursor: col-resize;
231 height: 100%;
232 width: 4px;
233}
234
235.ag-ltr .ag-header-cell-resize {
236 float: right;
237}
238
239.ag-ltr .ag-pinned-right-header .ag-header-cell-resize {
240 float: left;
241}
242
243.ag-rtl .ag-header-cell-resize {
244 float: left;
245}
246
247.ag-rtl .ag-pinned-left-header .ag-header-cell-resize {
248 float: right;
249}
250
251.ag-ltr .ag-header-select-all {
252 float: left;
253}
254
255.ag-rtl .ag-header-select-all {
256 float: right;
257}
258
259.ag-header-expand-icon {
260 padding-left: 4px;
261}
262
263.ag-header-cell-menu-button {
264 float: right;
265}
266
267.ag-overlay {
268 height: 100%;
269 left: 0;
270 pointer-events: none;
271 position: absolute;
272 top: 0;
273 width: 100%;
274}
275
276.ag-overlay-panel {
277 display: table;
278 height: 100%;
279 pointer-events: none;
280 width: 100%;
281}
282
283.ag-overlay-wrapper {
284 display: table-cell;
285 text-align: center;
286 vertical-align: middle;
287}
288
289.ag-column-panel {
290 display: flex;
291 overflow-y: auto;
292}
293
294.ag-column-panel-center {
295 display: flex;
296 min-height: 400px;
297 flex-direction: column;
298 flex-grow: 1;
299 overflow-x: hidden;
300 max-height: 100vh;
301}
302
303// for when auto height is used but there is no row data
304.ag-layout-auto-height.ag-body-container {
305 min-height: 50px;
306}
307
308// for when auto height is used but there is no row data
309.ag-layout-auto-height.ag-overlay-no-rows-wrapper {
310 padding-top: 30px;
311}
312
313
314.ag-body {
315 box-sizing: border-box;
316 display: flex;
317 position: relative; // needed so rows translate is relative to this container
318}
319
320.ag-layout-normal.ag-body {
321 flex: 1;
322 height: 0px; // that's the min height, 'flex 1' then extends it to take all available space
323 min-height: 0px; // min-height needed for firefox
324}
325
326// we want the pinned left to always be on the left, and the pinned right
327// always to be on the right. hence we do row-reverse for rtl, otherwise having
328// RTL applied will reverse the order of the flex layout (and invert what's left and right)
329.ag-rtl .ag-body { flex-direction: row-reverse; }
330.ag-ltr .ag-body { flex-direction: row; }
331
332.ag-rtl .ag-floating-top { flex-direction: row-reverse; }
333.ag-ltr .ag-floating-top { flex-direction: row; }
334
335// we don't want right and left pinned flipped when doing RTL
336.ag-ltr .ag-header { flex-direction: row; }
337.ag-rtl .ag-header { flex-direction: row-reverse; }
338
339.ag-floating-top {
340 box-sizing: border-box;
341 overflow: hidden;
342 white-space: nowrap;
343 width: 100%;
344 position: relative;
345 display: flex;
346}
347
348.ag-pinned-left-floating-top {
349 box-sizing: border-box;
350 display: inline-block;
351 overflow: hidden;
352 position: relative; // otherwise the % width of children is not relative to this element
353}
354
355.ag-pinned-right-floating-top {
356 box-sizing: border-box;
357 display: inline-block;
358 overflow: hidden;
359 position: relative; // otherwise the % width of children is not relative to this element
360}
361
362.ag-floating-top-viewport {
363 box-sizing: border-box;
364 overflow: hidden;
365 width: 0px;
366 min-width: 0px;
367 flex: 1;
368}
369
370.ag-layout-normal.ag-floating-top-viewport {
371 height: 100%;
372}
373
374.ag-floating-top-container {
375 box-sizing: border-box;
376 position: relative;
377 white-space: nowrap;
378}
379
380.ag-floating-bottom {
381 box-sizing: border-box;
382 overflow: hidden;
383 white-space: nowrap;
384 width: 100%;
385 position: relative;
386 display: flex;
387}
388
389.ag-pinned-left-floating-bottom {
390 box-sizing: border-box;
391 display: inline-block;
392 overflow: hidden;
393 position: relative; // otherwise the % width of children is not relative to this element
394}
395
396.ag-pinned-right-floating-bottom {
397 box-sizing: border-box;
398 display: inline-block;
399 overflow: hidden;
400 position: relative; // otherwise the % width of children is not relative to this element
401}
402
403.ag-floating-bottom-viewport {
404 box-sizing: border-box;
405 overflow: hidden;
406 flex: 1;
407 width: 0px;
408 min-width: 0px;
409}
410
411.ag-floating-bottom-container {
412 box-sizing: border-box;
413 position: relative;
414 white-space: nowrap;
415}
416
417.ag-pinned-left-cols-container {
418 display: inline-block;
419 position: relative;
420}
421
422.ag-pinned-right-cols-viewport {
423 height: 100%;
424 overflow-x: hidden;
425 overflow-y: auto;
426}
427
428.ag-pinned-left-cols-viewport {
429 height: 100%;
430 overflow-x: hidden;
431 overflow-y: auto;
432}
433
434.ag-pinned-right-cols-container {
435 display: inline-block;
436 position: relative;
437}
438
439.ag-pinned-left-cols-viewport-wrapper {
440 height: 100%;
441 overflow: hidden;
442}
443
444.ag-body-viewport-wrapper {
445 height: 100%;
446 width: 0px; // mind width, flex grows the center to fit
447 min-width: 0px; // width didn't do the trick in firefox, so needed min-width also
448 flex: 1;
449 overflow: hidden;
450}
451
452.ag-body-viewport {
453 overflow-x: auto;
454 overflow-y: auto; // if we are pinning to the right, overflow y will be hidden
455}
456
457.ag-layout-normal.ag-body-viewport {
458 height: 100%;
459}
460
461.ag-full-width-viewport-wrapper {
462 height: 100%;
463 width: 100%;
464 display: inline-block;
465 pointer-events: none;
466 overflow: hidden;
467 position: absolute;
468 top: 0px;
469 left: 0px;
470 box-sizing: border-box;
471}
472
473.ag-full-width-viewport {
474 box-sizing: border-box;
475 height: 100%;
476 // because the full width container is an overlay over the rest of the grid, we cannot
477 // have it consume mouse events, otherwise no mouse events would be allowed on the
478 // rest of the grid
479 pointer-events: none;
480 overflow-x: hidden;
481 overflow-y: auto;
482}
483
484.ag-full-width-container {
485 // if we don't put this in, the RHS will overflow into the viewports margin,
486 // no idea why, trial and error
487 overflow: hidden;
488 position: relative;
489 width: 100%;
490}
491
492.ag-floating-bottom-full-width-container {
493 display: inline;
494 height: 100%;
495 left: 0;
496 overflow: hidden;
497 pointer-events: none;
498 position: absolute;
499 top: 0;
500 width: 100%;
501}
502
503.ag-floating-top-full-width-container {
504 display: inline;
505 height: 100%;
506 left: 0;
507 overflow: hidden;
508 pointer-events: none;
509 position: absolute;
510 top: 0;
511 width: 100%;
512}
513
514.ag-full-width-row {
515 overflow: hidden;
516 // turn events back on, as we removed them in the parent
517 pointer-events: all;
518}
519
520.ag-body-container {
521 display: inline-block;
522 margin-bottom: -2px;
523 position: relative;
524}
525
526// for animations, allows rows to slide up and down,
527.ag-row-animation .ag-row {
528 transition: transform 0.4s, top 0.4s, height 0.4s, background-color 0.1s, opacity 0.2s;
529}
530
531.ag-row-no-animation .ag-row {
532 transition: background-color 0.1s;
533}
534
535.ag-row {
536 box-sizing: border-box;
537 position: absolute;
538 white-space: nowrap;
539 width: 100%;
540}
541
542.ag-column-moving {
543 .ag-cell {
544 transition: left 0.2s;
545 }
546
547 .ag-header-cell {
548 transition: left 0.2s;
549 }
550
551 .ag-header-group-cell {
552 transition: left 0.2s, width 0.2s;
553 }
554}
555
556.ag-column-drop {
557 box-sizing: border-box;
558 width: 100%;
559}
560
561.ag-column-drop-vertical {
562 display: flex;
563 flex-direction: column;
564 flex-grow: 1;
565 height: 50px;
566 overflow: hidden;
567
568 .ag-column-drop-list {
569 flex-grow: 1;
570 height: 20px;
571 overflow-x: auto;
572 }
573
574 .ag-column-drop-cell {
575 display: flex;
576
577 .ag-column-drop-cell-text {
578 overflow: hidden;
579 flex: 1;
580 text-overflow: ellipsis;
581 white-space: nowrap;
582 }
583 }
584
585 .ag-column-drop-empty-message {
586 display: block;
587 }
588
589 .ag-column-drop-cell-button {
590 line-height: 16px;
591 }
592}
593
594.ag-ltr .ag-column-drop-vertical .ag-column-drop-cell-button {
595 float: right;
596}
597
598.ag-rtl .ag-column-drop-vertical .ag-column-drop-cell-button {
599 float: left;
600}
601
602.ag-column-drop-horizontal {
603 white-space: nowrap;
604 overflow: hidden;
605
606 .ag-column-drop-cell {
607 display: inline-block;
608 }
609
610 .ag-column-drop-empty-message {
611 display: inline-block;
612 }
613
614 .ag-column-drop-list {
615 height: 100%;
616 }
617}
618
619.ag-cell {
620 box-sizing: border-box;
621 display: inline-block;
622 overflow: hidden;
623 // this float was needed for layout in safari, without it, when images were used (eg country flags),
624 // then the layout was broken
625 //float: left
626 position: absolute;
627 text-overflow: ellipsis;
628 white-space: nowrap;
629}
630
631.ag-cell-with-height {
632 height: 100%;
633}
634
635// this is used by the animateShowChangeCellRenderer. it is arguable that this belongs in the themes,
636// however it is not tied to color, only placement and visiblity, which is behaviour and not style,
637// thus belongs here, besides it doesn't change wih the themes
638.ag-value-slide-out {
639 margin-right: 5px;
640 opacity: 1;
641 transition: opacity 3s, margin-right 3s; // as value fades, it also moves to the left via the margin setting
642 transition-timing-function: linear;
643}
644
645.ag-value-slide-out-end {
646 margin-right: 10px;
647 opacity: 0;
648}
649
650.ag-opacity-zero {
651 opacity: 0;
652}
653
654.ag-cell-edit-input {
655 height: 100%;
656 width: 100%;
657}
658
659.ag-group-cell-entire-row {
660 box-sizing: border-box;
661 display: inline-block;
662 height: 100%;
663 overflow: hidden;
664 text-overflow: ellipsis;
665 white-space: nowrap;
666 //position: absolute // took this out because of https://github.com/ag-grid/angular-grid/issues/115
667 width: 100%;
668}
669
670.ag-footer-cell-entire-row {
671 box-sizing: border-box;
672 display: inline-block;
673 height: 100%;
674 overflow: hidden;
675 text-overflow: ellipsis;
676 white-space: nowrap;
677 //position: absolute // took this out because of https://github.com/ag-grid/angular-grid/issues/115
678 width: 100%;
679}
680
681.ag-popup-editor {
682 position: absolute;
683 user-select: none;
684}
685
686.ag-menu {
687 max-height: 100%;
688 overflow-y: auto;
689 position: absolute;
690 user-select: none;
691}
692
693.ag-menu-column-select-wrapper {
694 height: 300px;
695 overflow: auto;
696 width: 200px;
697}
698
699.ag-menu-list {
700 border-collapse: collapse;
701 display: table;
702}
703
704.ag-menu-option {
705 display: table-row;
706}
707
708.ag-menu-option-text {
709 display: table-cell;
710}
711
712.ag-menu-option-shortcut {
713 display: table-cell;
714}
715
716.ag-menu-option-icon {
717 display: table-cell;
718}
719
720.ag-menu-option-popup-pointer {
721 display: table-cell;
722}
723
724.ag-menu-separator {
725 display: table-row;
726}
727
728.ag-menu-separator-cell {
729 display: table-cell;
730}
731
732.ag-filter {
733}
734//z-index: 100
735
736.ag-virtual-list-viewport {
737 height: 100%;
738 overflow-x: auto;
739 width: 100%;
740}
741
742.ag-virtual-list-container {
743 overflow: hidden;
744 position: relative;
745}
746
747.ag-rich-select {
748 cursor: default;
749 outline: none;
750}
751
752.ag-rich-select-row {
753 white-space: nowrap;
754}
755
756.ag-rich-select-list {
757 height: 200px;
758 width: 200px;
759}
760
761.ag-set-filter-list {
762 height: 200px;
763 width: 200px;
764}
765
766.ag-set-filter-item {
767 overflow: hidden;
768 text-overflow: ellipsis;
769 white-space: nowrap;
770}
771
772.ag-virtual-list-item {
773 position: absolute;
774 width: 100%;
775
776 span:empty:not(.ag-icon) {
777 border-left: 1px solid transparent;
778 }
779}
780
781.ag-filter-filter {
782 box-sizing: border-box;
783 width: 100%;
784}
785
786.ag-floating-filter-body {
787 input {
788 height: 19px;
789 margin: 0;
790 width: 100%;
791 }
792}
793
794.ag-floating-filter-full-body {
795 input {
796 height: 19px;
797 margin: 0;
798 width: 100%;
799 }
800}
801
802.ag-filter-select {
803 margin: 4px 4px 0 4px;
804 width: 110px;
805}
806
807.ag-paging-panel {
808}
809
810.ag-list-selection {
811 cursor: default;
812 user-select: none;
813}
814
815.ag-column-panel {
816 box-sizing: border-box;
817 cursor: default;
818 user-select: none;
819 width: 200px;
820}
821
822.ag-column-container {
823 flex-grow: 1;
824 height: 50px;
825 overflow: auto;
826}
827
828.ag-column-select-indent {
829 display: inline-block;
830}
831
832.ag-ltr .ag-column-select-column {
833 margin-left: 16px;
834}
835
836.ag-rtl .ag-column-select-column {
837 margin-right: 16px;
838}
839
840.ag-column-select-column,
841.ag-column-select-column-group {
842 align-items: stretch;
843 display: flex;
844 flex-direction: row;
845 flex-wrap: nowrap;
846 text-overflow: ellipsis;
847 white-space: nowrap;
848
849 .ag-column-select-label,
850 .ag-column-select-column-group-label {
851 flex-grow: 1;
852 flex-shrink: 1;
853 overflow: hidden;
854 text-overflow: ellipsis;
855 }
856
857 .ag-column-drag {
858 min-width: 16px;
859 flex-grow: 0;
860 flex-shrink: 0;
861 }
862}
863
864.ag-column-select-panel {
865 display: flex;
866 flex-direction: column;
867 overflow: hidden;
868}
869
870.ag-tool-panel .ag-column-select-panel {
871 flex-grow: 4;
872}
873
874.ag-tool-panel-horizontal-resize {
875 cursor: col-resize;
876 height: 100%;
877 position: absolute;
878 top: 0;
879 width: 5px;
880 z-index: 1;
881}
882
883.ag-rtl .ag-tool-panel-horizontal-resize {
884 float: right;
885 transform: translateX(3px);
886}
887
888.ag-ltr .ag-tool-panel-horizontal-resize {
889 float: left;
890 transform: translateX(-3px);
891}
892
893.ag-menu-column-select-wrapper .ag-column-select-panel {
894 height: 100%;
895}
896
897.ag-hidden {
898 display: none !important;
899}
900
901.ag-visibility-hidden {
902 visibility: hidden !important;
903}
904
905.ag-faded {
906 opacity: 0.3;
907}
908
909.ag-width-half {
910 display: inline-block;
911 width: 50%;
912}
913//.ag-tool-panel-container
914// user-select: none;
915// cursor: default;
916// width: 200px;
917// setting shake class to an item will give it a left ot right animation
918// used for the 'left' and 'rigth' arrows when dragging columns and scrolling
919.ag-shake-left-to-right {
920 animation-direction: alternate;
921 animation-duration: 0.2s;
922 animation-iteration-count: infinite;
923 animation-name: ag-shake-left-to-right;
924}
925
926@keyframes ag-shake-left-to-right {
927 from {
928 padding-left: 6px;
929 padding-right: 2px;
930 }
931
932 to {
933 padding-left: 2px;
934 padding-right: 6px;
935 }
936}
937
938$icons-path: "./icons/" !default;
939
940@if variable-exists(ag-icons-path) {
941 $icons-path: $ag-icons-path;
942}
943
944$ag-icons-filter: "initial" !default;
945
946@mixin icon-background($icon) {
947 background: transparent url("#{$icons-path}#{$icon}.svg") center no-repeat;
948 background-size: 12px 12px;
949 filter: $ag-icons-filter;
950 height: 12px;
951 width: 12px;
952}
953
954/* icons are used outside of the grid root (in the ghost) */
955$icons: aggregation arrows asc checkbox-checked-readonly checkbox-checked checkbox-indeterminate-readonly checkbox-indeterminate checkbox-unchecked-readonly checkbox-unchecked
956 column columns contracted copy cut desc expanded eye-slash eye filter group indeterminate left loading menu minus none not-allowed paste pin pivot plus right small-left
957 small-right small-up small-down tick cross tree-open tree-closed tree-indeterminate;
958
959@each $icon in $icons {
960 .ag-icon-#{$icon} {
961 display: inline-block;
962
963 @include icon-background("#{$icon}");
964 }
965}
966
967.loading-filter {
968 background-color: #e6e6e6;
969 height: 100%;
970 padding: 5px;
971 position: absolute;
972 top: 34px;
973 width: 100%;
974 z-index: 1;
975}
976
977.ag-details-row {
978 height: 100%;
979 width: 100%;
980}
981
982.ag-details-grid {
983 height: 100%;
984 width: 100%;
985}
986
987.ag-column-select-header {
988 display: flex;
989 flex-direction: row;
990}
991
992$toolpanel-indent-size: 10px !default;
993$row-group-indent-size: 10px !default;
994
995// Default values for themes that do not use the mixins
996@for $i from 1 to 50 {
997 .ag-ltr .ag-toolpanel-indent-#{$i} {
998 padding-left: $i * $toolpanel-indent-size;
999 }
1000
1001 .ag-rtl .ag-toolpanel-indent-#{$i} {
1002 padding-right: $i * $toolpanel-indent-size;
1003 }
1004
1005 .ag-ltr .ag-row-group-indent-#{$i} {
1006 padding-left: $i * $row-group-indent-size;
1007 }
1008
1009 .ag-rtl .ag-row-group-indent-#{$i} {
1010 padding-right: $i * $row-group-indent-size;
1011 }
1012}
1013
1014.ag-tool-panel {
1015 display: flex;
1016 flex-direction: row-reverse;
1017 box-sizing: border-box;
1018
1019 .ag-side-buttons {
1020 width: 20px;
1021
1022 button {
1023 display: block;
1024 transform: rotate(90deg) translateY(-20px);
1025 transform-origin: left top 0;
1026 white-space: nowrap;
1027 outline: none;
1028 }
1029 }
1030
1031 .panel-container {
1032 width: 180px;
1033 }
1034
1035 &.full-width .panel-container {
1036 width: 200px;
1037 }
1038}
1039
1040.ag-rtl .ag-tool-panel {
1041 .ag-side-buttons {
1042 button {
1043 transform: rotate(-90deg) translatex(20px);
1044 transform-origin: right bottom 0;
1045 }
1046 }
1047}
1048
1049.ag-row-inline-editing {
1050 z-index: 1;
1051}