UNPKG

41.4 kBSCSSView Raw
1@function encodecolor($string) {
2 @if $string == null {
3 @return "";
4 }
5
6 @if type-of($string) == "color" {
7 $hex: str-slice(ie-hex-str($string), 4);
8 $string: unquote("#{$hex}");
9 }
10 $string: "%23" + $string;
11
12 @return $string;
13}
14
15@mixin bottom-border($color) {
16 border-bottom: 1px solid $color;
17 box-sizing: border-box;
18}
19
20@mixin grid-cell($height, $padding) {
21 line-height: $height;
22 padding-left: $padding;
23 padding-right: $padding;
24}
25
26@mixin icon-background($params, $icon) {
27 $size: map-get($params, "icon-size");
28 $color: map-get($params, "foreground-color");
29
30 background-color: transparent;
31 background-image: url("#{map-get($params, "icons-path")}#{$icon}.svg?color1=#{encodecolor(map-get($params, "icon-color"))}&color2=#{encodecolor(map-get($params, "alt-icon-color"))}");
32 background-position: center;
33 background-repeat: no-repeat;
34 background-size: $size $size;
35 height: $size;
36 opacity: map-get($params, "icon-opacity");
37 width: $size;
38}
39
40@mixin colorful-icon($path, $icon, $color, $altColor) {
41 background-image: url("#{map-get($params, "icons-path")}#{$icon}.svg?color1=#{encodecolor($color)}&color2=#{encodecolor($altColor)}");
42}
43
44@mixin card($params) {
45 @extend %card !optional;
46
47 background: map-get($params, "card-background-color");
48 border-radius: map-get($params, "card-radius");
49 box-shadow: map-get($params, "card-shadow");
50 padding: map-get($params, "grid-size");
51}
52
53@mixin textbox($params) {
54 $border-color: map-get($params, "border-color");
55 $foreground-color: map-get($params, "foreground-color");
56 $grid-size: map-get($params, "grid-size");
57 $primary-color: map-get($params, "primary-color");
58 $placeholder-color: map-get($params, "disabled-foreground-color");
59 $focused-border: map-get($params, "focused-textbox-border");
60 $input-border-width: map-get($params, "input-border-width");
61 $input-bottom-border: map-get($params, "input-bottom-border");
62
63 @if map-get($params, "customize-inputs") {
64 background: transparent;
65 box-sizing: border-box;
66 color: $foreground-color;
67 font-family: inherit;
68 font-size: inherit;
69 height: map-get($params, "input-height");
70 padding-bottom: $grid-size;
71
72 @if $input-border-width {
73 border-width: $input-border-width;
74 }
75
76 @if $input-bottom-border {
77 border-bottom: $input-bottom-border;
78 }
79
80 &:focus {
81 @if $focused-border {
82 border-bottom: $focused-border;
83 outline: none;
84 padding-bottom: $grid-size - 1;
85 }
86 }
87
88 &::placeholder {
89 color: $placeholder-color;
90 }
91 }
92}
93
94@mixin regular-button($color, $background-color, $text-transform) {
95 appearance: none;
96 background-color: $background-color;
97 border: 0;
98 color: $color;
99 font-family: inherit;
100 font-size: inherit;
101 margin: 0;
102 padding: 0;
103 text-transform: $text-transform;
104}
105
106@mixin hide-text {
107 overflow: hidden;
108 text-indent: 100%;
109}
110
111@mixin ag-grid-theme($params) {
112 $grid-size: map-get($params, "grid-size");
113 $icon-size: map-get($params, "icon-size");
114 $header-icon-size: map-get($params, "header-icon-size");
115 $row-height: map-get($params, "row-height");
116 $header-height: map-get($params, "header-height");
117 $virtual-item-height: map-get($params, "virtual-item-height");
118 $rich-select-item-height: map-get($params, "rich-select-item-height");
119 $cell-horizontal-padding: map-get($params, "cell-horizontal-padding");
120
121 $icons-path: map-get($params, "icons-path");
122
123 $font-family: map-get($params, "font-family");
124 $font-size: map-get($params, "font-size");
125 $font-weight: map-get($params, "font-weight");
126
127 $secondary-font-family: map-get($params, "secondary-font-family");
128 $secondary-font-size: map-get($params, "secondary-font-size");
129 $secondary-font-weight: map-get($params, "secondary-font-weight");
130
131 $foreground-color: map-get($params, "foreground-color");
132 $foreground-opacity: map-get($params, "foreground-opacity");
133
134 $secondary-foreground-color-opacity: map-get($params, "secondary-foreground-color-opacity");
135 $secondary-foreground-color: map-get($params, "secondary-foreground-color");
136
137 $disabled-foreground-color-opacity: map-get($params, "disabled-foreground-color-opacity");
138 $disabled-foreground-color: map-get($params, "disabled-foreground-color");
139
140 $background-color: map-get($params, "background-color");
141 $border-color: map-get($params, "border-color");
142
143 $button-background-color: map-get($params, "button-background-color");
144
145 $cell-data-changed-color: map-get($params, "cell-data-changed-color");
146
147 $chip-background-color: map-get($params, "chip-background-color");
148
149 $editor-background-color-color: map-get($params, "editor-background-color-color");
150
151 $range-selection-background-color: map-get($params, "range-selection-background-color");
152 $range-selection-highlight-color: map-get($params, "range-selection-highlight-color");
153
154 $header-background-color: map-get($params, "header-background-color");
155 $panel-background-color: map-get($params, "panel-background-color");
156 $tool-panel-background-color: map-get($params, "tool-panel-background-color");
157
158 $accent-color: map-get($params, "accent-color");
159 $primary-color: map-get($params, "primary-color");
160 $hover-color: map-get($params, "hover-color");
161 $selected-color: map-get($params, "selected-color");
162
163 $icon-opacity: map-get($params, "icon-opacity");
164 $button-text-transform: map-get($params, "button-text-transform");
165 $card-radius: map-get($params, "card-radius");
166 $card-shadow: map-get($params, "card-shadow");
167 $focused-textbox-border: map-get($params, "focused-textbox-border");
168
169 $value-change-delta-up-color: map-get($params, "value-change-delta-up-color");
170 $value-change-delta-down-color: map-get($params, "value-change-delta-down-color");
171 $value-change-value-highlight-background-color: map-get($params, "value-change-value-highlight-background-color");
172 $toolpanel-indent-size: map-get($params, "toolpanel-indent-size");
173 $row-group-indent-size: map-get($params, "row-group-indent-size");
174 $row-floating-background-color: map-get($params, "row-floating-background-color");
175
176 ////////////////////////////////////////
177 // Chinese wall of inline vars over
178 ////////////////////////////////////////
179
180 $font: $font-weight $font-size $font-family;
181 $secondary-font: $secondary-font-weight $secondary-font-size $secondary-font-family;
182
183 background-color: $background-color;
184 color: $foreground-color;
185 font: $font;
186
187 // indentation loop
188 @for $i from 1 to 50 {
189 .ag-ltr .ag-toolpanel-indent-#{$i} {
190 padding-left: $i * $toolpanel-indent-size;
191 }
192
193 .ag-rtl .ag-toolpanel-indent-#{$i} {
194 padding-right: $i * $toolpanel-indent-size;
195 }
196
197 .ag-ltr .ag-row-group-indent-#{$i} {
198 padding-left: $i * $row-group-indent-size;
199 }
200
201 .ag-rtl .ag-row-group-indent-#{$i} {
202 padding-right: $i * $row-group-indent-size;
203 }
204 }
205
206 .ag-ltr .ag-row-group-leaf-indent {
207 margin-left: $icon-size + $grid-size * 3;
208 }
209
210 .ag-rtl .ag-row-group-leaf-indent {
211 margin-right: $icon-size + $grid-size * 3;
212 }
213
214 // we use rtl and ltr below, even though it's the same style, so it propertly
215 .ag-rtl .ag-cell-first-right-pinned {
216 border-left: 1px solid $border-color;
217 }
218
219 .ag-ltr .ag-cell-first-right-pinned {
220 border-left: 1px solid $border-color;
221 }
222
223 .ag-rtl .ag-cell-last-left-pinned {
224 border-right: 1px solid $border-color;
225 }
226
227 .ag-ltr .ag-cell-last-left-pinned {
228 border-right: 1px solid $border-color;
229 }
230
231 // used by the animateShowChangedCellRenderer
232 .ag-value-change-delta {
233 padding-right: 2px;
234 }
235
236 .ag-value-change-delta-up {
237 color: $value-change-delta-up-color;
238 }
239
240 .ag-value-change-delta-down {
241 color: $value-change-delta-down-color;
242 }
243
244 .ag-value-change-value {
245 background-color: transparent;
246 border-radius: 1px;
247 padding-left: 1px;
248 padding-right: 1px;
249 transition: background-color 1s;
250 }
251
252 .ag-value-change-value-highlight {
253 background-color: $value-change-value-highlight-background-color;
254 transition: background-color 0.1s;
255 }
256
257 ////////////////////////////////////////
258 // Basic layout
259 ////////////////////////////////////////
260 .ag-header {
261 @if $header-background-color {
262 background-color: $header-background-color;
263 }
264
265 color: $secondary-foreground-color;
266 font: $secondary-font;
267 }
268
269 .ag-header-row {
270 @include bottom-border($border-color);
271 }
272
273 .ag-row {
274 @include bottom-border($border-color);
275 }
276
277 @if map-get($params, "odd-row-background-color") {
278 .ag-row-odd {
279 background-color: map-get($params, "odd-row-background-color");
280 }
281
282 .ag-row-even {
283 background-color: map-get($params, "background-color");
284 }
285 }
286
287 .ag-row-hover {
288 background-color: $hover-color;
289 }
290
291 .ag-numeric-cell {
292 text-align: right;
293 }
294
295 .ag-header-cell-label {
296 display: flex;
297 float: left;
298 height: 100%;
299 width: calc(100% - #{$icon-size});
300
301 span {
302 height: 100%;
303 }
304
305 & > span {
306 float: left;
307 }
308
309 .ag-header-icon {
310 background-position-y: $grid-size * 2.5;
311 background-size: $header-icon-size $header-icon-size;
312 height: 100%;
313 margin: 0;
314 margin-left: $grid-size;
315 opacity: $foreground-opacity;
316 }
317
318 .ag-header-cell-text {
319 overflow: hidden;
320 text-overflow: ellipsis;
321 white-space: nowrap;
322 }
323 }
324
325 .ag-numeric-header {
326 .ag-header-cell-label {
327 flex-direction: row-reverse;
328 float: right;
329
330 & > span {
331 float: right;
332 }
333 }
334
335 .ag-header-cell-menu-button {
336 float: left;
337 }
338 }
339
340 .ag-header-group-text {
341 overflow: hidden;
342 text-overflow: ellipsis;
343 white-space: nowrap;
344 }
345
346 .ag-header-cell,
347 .ag-header-group-cell {
348 @include grid-cell($header-height, $cell-horizontal-padding);
349 }
350
351 .ag-cell {
352 @include grid-cell($row-height - 2, $cell-horizontal-padding);
353
354 // adjust for transparent border
355 border: 1px solid transparent;
356 padding-left: $cell-horizontal-padding - 1px;
357 padding-right: $cell-horizontal-padding - 1px;
358 }
359
360 .ag-row-drag {
361 @include icon-background($params, "grip");
362
363 background-position-x: left;
364 background-position-y: $grid-size / 2 + 2px;
365 float: left;
366 height: 100%;
367 width: $icon-size + $grid-size * 3;
368 }
369
370 .ag-column-drag {
371 @include icon-background($params, "grip");
372
373 background-position-x: left;
374 background-position-y: $grid-size !important;
375 height: 100%;
376 min-width: $icon-size + $grid-size;
377 }
378
379 .ag-row-dragging {
380 opacity: 0.5;
381 // very bad putting z-index in here, we have avoided it everywhere else in the grid,
382 // however feel it's a minor issue - as it's only a temporary thing while row is dragging,
383 // - it's unlikely user will have something on top of the grid while also moving a row in
384 // the grid.
385 z-index: 10000;
386 }
387
388 ////////////////////////////////////////
389 // Navigation
390 ////////////////////////////////////////
391
392 // we do this twice, .ag-ltr and .ag-rtl,
393 // so that it gets preference over the pinned
394 // section borders (which would otherwise have
395 // more granular css selectors which would get
396 // precedence over these). this way, this gets
397 // precedence as it's further down the file
398 // and equal weighted selectors.
399 .ag-ltr .ag-cell-focus {
400 border: 1px solid $primary-color;
401 outline: initial;
402 }
403 .ag-rtl .ag-cell-focus {
404 border: 1px solid $primary-color;
405 outline: initial;
406 }
407
408 ////////////////////////////////////////
409 // Resizing
410 ////////////////////////////////////////
411 .ag-header-cell-resize {
412 position: absolute;
413 right: -($grid-size);
414 width: $grid-size * 2;
415 z-index: 4;
416
417 &::after {
418 border-right: 1px solid $border-color;
419 box-sizing: content-box;
420 content: "resize";
421 display: block;
422 height: $header-height - $grid-size * 4;
423 margin-top: $grid-size * 2;
424 overflow: hidden;
425 text-indent: $grid-size;
426 width: $grid-size;
427 }
428 }
429
430 ////////////////////////////////////////
431 // Icons
432 ////////////////////////////////////////
433 $icons: aggregation arrows asc checkbox-checked-readonly checkbox-checked checkbox-indeterminate-readonly checkbox-indeterminate checkbox-unchecked-readonly checkbox-unchecked
434 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
435 small-right small-up small-down tick cross tree-open tree-closed tree-indeterminate;
436
437 @each $icon in $icons {
438 .ag-icon-#{$icon} {
439 @include icon-background($params, "#{$icon}");
440
441 display: inline-block;
442 }
443 }
444
445 .ag-header-cell-menu-button .ag-icon-menu {
446 display: block;
447 height: $header-height;
448 }
449
450 .ag-icon-checkbox-checked:empty {
451 @include colorful-icon($icons-path, "checkbox-checked", $accent-color, map-get($params, "alt-icon-color"));
452 }
453
454 ////////////////////////////////////////
455 // Context Menu
456 ////////////////////////////////////////
457 .ag-menu {
458 @include card($params);
459
460 padding: 0;
461 z-index: 5;
462
463 .ag-menu-list {
464 cursor: default;
465 margin-bottom: $grid-size;
466 margin-top: $grid-size;
467 width: 100%;
468 }
469
470 .ag-menu-option {
471 line-height: $grid-size * 4;
472 padding-left: $grid-size * 2;
473 padding-right: $grid-size * 2;
474
475 & > span {
476 display: table-cell;
477 vertical-align: middle;
478 }
479 }
480
481 .ag-menu-option-active {
482 background: $hover-color;
483 }
484
485 .ag-menu-option-disabled {
486 opacity: 0.5;
487 }
488
489 .ag-menu-option-icon {
490 padding-left: $grid-size;
491 padding-right: $grid-size;
492
493 span {
494 height: $icon-size;
495 line-height: 0;
496 margin-top: $grid-size;
497 }
498 }
499
500 .ag-menu-option-shortcut {
501 padding-left: $grid-size * 2;
502 }
503
504 .ag-menu-separator {
505 margin-left: -$grid-size;
506
507 & > span {
508 background-image: url("data:image/svg+xml;utf8,<svg width='1' height='#{$grid-size * 2}' viewBox='0 0 1 #{$grid-size * 2}' xmlns='http://www.w3.org/2000/svg'> <line x1='0' y1='#{$grid-size}' x2='1' y2='#{$grid-size}' stroke-width='1' stroke='#{$border-color}'/> </svg>");
509 height: $grid-size * 2;
510 }
511 }
512
513 .ag-menu-option-popup-pointer {
514 width: $icon-size + $grid-size * 2;
515 }
516 }
517
518 ////////////////////////////////////////
519 // Column Reordering
520 ////////////////////////////////////////
521 &.ag-dnd-ghost {
522 @include card($params);
523
524 border: 1px solid $border-color;
525 color: $secondary-foreground-color;
526 font: $secondary-font;
527 height: $header-height !important;
528 line-height: $header-height;
529 margin: 0;
530 padding: 0 $grid-size * 2;
531 transform: translateY($grid-size * 2);
532 z-index: 5;
533
534 span,
535 div {
536 float: left;
537 height: 100%;
538 margin: 0;
539 padding: 0;
540 }
541
542 .ag-dnd-ghost-icon {
543 margin-right: $grid-size;
544 opacity: $foreground-opacity;
545 }
546 }
547
548 $full-width-tabs: map-get($params, "full-width-tabs");
549
550 ////////////////////////////////////////
551 // Column Filter
552 ////////////////////////////////////////
553 .ag-tab-header {
554 background: $panel-background-color;
555 min-width: 220px;
556 width: 100%;
557
558 @if $full-width-tabs {
559 display: table;
560 }
561
562 .ag-tab {
563 @extend %tab !optional;
564
565 border-bottom: 2px solid transparent;
566 height: $grid-size * 4;
567 text-align: center;
568 vertical-align: middle;
569
570 @if $full-width-tabs {
571 display: table-cell;
572 }
573
574 &.ag-tab-selected {
575 @extend %selected-tab !optional;
576
577 $icons: filter columns menu;
578
579 @each $icon in $icons {
580 .ag-icon-#{$icon} {
581 @include colorful-icon($icons-path, $icon, $primary-color, map-get($params, "alt-icon-color"));
582
583 display: inline-block;
584 }
585 }
586 }
587 }
588 }
589
590 .ag-tab-body {
591 padding: $grid-size 0;
592
593 // string filter type
594 .ag-filter-select {
595 margin: $grid-size;
596 width: calc(100% - #{$grid-size * 2});
597 }
598
599 .ag-menu-list {
600 margin-bottom: 0;
601 margin-top: 0;
602
603 & > div:first-child > span {
604 padding-top: 0;
605 }
606
607 & > div:last-child > span {
608 padding-bottom: 0;
609 }
610
611 & > div:last-child > .ag-menu-option-popup-pointer {
612 background-position-y: 0;
613 }
614 }
615 }
616
617 // string filter type
618 .ag-filter-select {
619 margin: $grid-size;
620 width: calc(100% - #{$grid-size * 2});
621 }
622
623 ////////////////////////////////////////
624 // Value Set Filter
625 ////////////////////////////////////////
626 .ag-filter {
627 input[type="radio"] {
628 margin: 0 3px 0 6px;
629 width: 12px;
630 height: 17px;
631 vertical-align: top;
632 }
633
634 input[type="text"],
635 input[type="date"] {
636 @include textbox($params);
637
638 padding-left: $grid-size;
639 }
640
641 label {
642 display: block;
643 padding-left: $grid-size;
644 }
645
646 .ag-set-filter-list {
647 height: $virtual-item-height * 6.5;
648 padding-top: $grid-size;
649 }
650
651 .ag-filter-header-container {
652 box-sizing: border-box;
653 height: $virtual-item-height;
654 }
655
656 .ag-filter-header-container:nth-child(2) {
657 border-bottom: 1px solid $border-color;
658 }
659
660 .ag-filter-checkbox {
661 float: left;
662 height: $virtual-item-height;
663 margin-right: $grid-size;
664 padding-top: $grid-size / 2;
665 }
666
667 .ag-filter-value {
668 height: $virtual-item-height;
669 line-height: $grid-size * 3.5; // hate this
670 }
671
672 .ag-filter-apply-panel {
673 display: flex;
674 justify-content: flex-end;
675 padding: $grid-size;
676 padding-top: $grid-size * 2;
677
678 button {
679 @if map-get($params, "customize-buttons") {
680 @include regular-button($primary-color, $button-background-color, $button-text-transform);
681 }
682 }
683
684 button + button {
685 margin-left: $grid-size * 2;
686 }
687 }
688 }
689
690 ////////////////////////////////////////
691 // Column selector
692 ////////////////////////////////////////
693 .ag-column-select-panel {
694 .ag-column-select-column-group,
695 .ag-column-select-column {
696 height: $grid-size * 4;
697 line-height: $grid-size * 4;
698 margin-left: 0;
699
700 span {
701 float: left;
702 height: 100%;
703 }
704
705 .ag-column-select-indent {
706 width: $grid-size * 2;
707 }
708
709 .ag-column-select-checkbox,
710 .ag-column-group-icons {
711 margin-left: $grid-size;
712 margin-right: $grid-size;
713 }
714 }
715
716 .ag-column-container {
717 padding-top: $grid-size;
718 }
719
720 .ag-column-select-column.ag-toolpanel-add-group-indent {
721 margin-left: $icon-size + $grid-size * 2;
722 }
723 }
724
725 ////////////////////////////////////////
726 // Tool panel
727 ////////////////////////////////////////
728 .ag-column-tool-panel {
729 display: flex;
730 }
731
732 .ag-filter-body {
733 flex-grow: 1;
734 flex-shrink: 1;
735 padding-right: $grid-size;
736 }
737
738 .ag-column-tool-panel-item {
739 button {
740 font-family: $font-family;
741 font-size: $font-size;
742 height: 100%;
743 }
744 }
745
746 .ag-filter-filter {
747 margin-bottom: $grid-size;
748 }
749
750 .ag-column-select-header {
751 border-bottom: 1px solid $border-color;
752 box-sizing: border-box;
753 height: $header-height;
754 padding-top: $grid-size;
755
756 label {
757 display: block;
758 padding-left: $grid-size;
759
760 .ag-filter-checkbox {
761 float: left;
762 margin-right: $grid-size;
763 }
764 }
765
766 .ag-column-tool-panel a {
767 margin: 0 $grid-size;
768 padding-top: $grid-size / 2;
769 }
770 }
771
772 .ag-group-child-count::before {
773 content: " ";
774 }
775
776 .ag-column-panel {
777 border-right: 0;
778
779 .ag-pivot-mode {
780 border-bottom: 1px solid $border-color;
781 box-sizing: border-box;
782 height: $header-height;
783 line-height: $header-height;
784
785 span {
786 float: left;
787 height: 100%;
788 }
789
790 .ag-pivot-mode-select {
791 margin-left: $grid-size;
792
793 .ag-checkbox-label {
794 margin-left: $grid-size;
795 }
796 }
797 }
798
799 .ag-column-select-panel {
800 border-bottom: 1px solid $border-color;
801 padding-bottom: $grid-size - 1; // absorb the bottom border;
802 padding-top: 0;
803 }
804
805 $group-height: $grid-size * 5;
806
807 .ag-column-drop {
808 border-bottom: 1px solid $border-color;
809 clear: both;
810 overflow: auto;
811 padding: $grid-size 0;
812 padding-bottom: $grid-size * 2;
813
814 .ag-icon {
815 float: left;
816 height: $group-height;
817 margin: 0 $grid-size;
818 }
819
820 .ag-column-drop-title {
821 clear: right;
822 float: left;
823 height: $group-height;
824 line-height: $group-height;
825 width: calc(100% - #{$icon-size + $grid-size * 2});
826 }
827
828 .ag-column-drop-empty-message {
829 clear: both;
830 color: $disabled-foreground-color;
831 font: $secondary-font;
832 line-height: $grid-size * 2;
833 padding-left: $grid-size * 4;
834 padding-right: $grid-size;
835 }
836
837 &:last-child {
838 border-bottom: 0;
839 }
840 }
841 }
842
843 ////////////////////////////////////////
844 // Sorting
845 ////////////////////////////////////////
846 .ag-filter-icon:empty {
847 @include icon-background($params, "filter");
848 }
849
850 .ag-sort-ascending-icon:empty {
851 @include icon-background($params, "asc");
852 }
853
854 .ag-sort-descending-icon:empty {
855 @include icon-background($params, "desc");
856 }
857
858 .ag-sort-none-icon:empty {
859 @include icon-background($params, "none");
860 }
861
862 .ag-numeric-header .ag-header-cell-label .ag-header-icon {
863 margin-left: 0;
864 margin-right: $grid-size;
865 }
866
867 ////////////////////////////////////////
868 // Pagination
869 ////////////////////////////////////////
870 .ag-paging-panel {
871 align-items: center;
872 border-top: 1px solid $border-color;
873 color: $secondary-foreground-color;
874 display: flex;
875 height: $header-height;
876 justify-content: flex-end;
877 padding: 0 $cell-horizontal-padding;
878
879 & > span {
880 margin-left: $grid-size * 4;
881 }
882 }
883
884 @if map-get($params, "use-icons-for-pager-buttons") {
885 $buttonIcons: (btFirst: first, btPrevious: previous, btLast: last, btNext: next);
886 $rtlButtonIcons: (btFirst: last, btPrevious: next, btLast: first, btNext: previous);
887
888 @each $ref, $icon in $buttonIcons {
889 button[ref="#{$ref}"] {
890 @include icon-background($params, $icon);
891 @include hide-text;
892
893 appearance: none;
894 border: 0;
895 opacity: $secondary-foreground-color-opacity;
896 padding: 0;
897
898 &[disabled] {
899 opacity: $disabled-foreground-color-opacity;
900 }
901 }
902 }
903
904 @each $ref, $icon in $rtlButtonIcons {
905 .ag-rtl button[ref="#{$ref}"] {
906 @include icon-background($params, $icon);
907 }
908 }
909 }
910
911 ////////////////////////////////////////
912 // Selection
913 ////////////////////////////////////////
914 .ag-row-selected {
915 background-color: $selected-color;
916 }
917
918 .ag-cell-range-selected:not(.ag-cell-focus) {
919 background-color: $range-selection-background-color;
920 }
921
922 ////////////////////////////////////////
923 // Editing
924 ////////////////////////////////////////
925 .ag-cell-inline-editing {
926 @include card($params);
927
928 background: $editor-background-color-color;
929 height: $row-height + $grid-size * 3;
930 line-height: normal;
931 padding: $cell-horizontal-padding;
932 z-index: 2;
933
934 input[type="text"],
935 input[type="tel"],
936 input[type="date"],
937 input[type="datetime-local"] {
938 @include textbox($params);
939 }
940
941 select {
942 height: auto;
943 }
944 }
945
946 .ag-popup-editor {
947 @include card($params);
948
949 background: $editor-background-color-color;
950 padding: 0;
951 z-index: 1;
952
953 .ag-large-textarea textarea {
954 @include textbox($params);
955
956 height: auto;
957 padding: $cell-horizontal-padding;
958 }
959 }
960
961 ////////////////////////////////////////
962 // Rich Select
963 ////////////////////////////////////////
964 .ag-rich-select {
965 background-color: $editor-background-color-color;
966 background-image: url("#{$icons-path}tree-open.svg?color1=#{encodecolor(map-get($params, "icon-color"))}");
967 background-position-x: calc(100% - #{$grid-size});
968 background-position-y: $grid-size * 2;
969 background-repeat: no-repeat;
970
971 .ag-rich-select-list {
972 height: $row-height * 6.5; // intentional
973 }
974
975 .ag-rich-select-value {
976 height: $row-height;
977 line-height: $row-height;
978 padding-left: $cell-horizontal-padding;
979 }
980
981 .ag-virtual-list-item {
982 cursor: default;
983 height: $rich-select-item-height;
984 line-height: $rich-select-item-height;
985
986 &:hover {
987 background-color: $hover-color;
988 }
989 }
990
991 .ag-rich-select-row {
992 padding-left: $cell-horizontal-padding;
993 }
994
995 .ag-rich-select-row-selected {
996 background-color: $selected-color;
997 }
998 }
999
1000 ////////////////////////////////////////
1001 // Floating filter
1002 ////////////////////////////////////////
1003 .ag-floating-filter-body {
1004 float: left;
1005 height: 100%;
1006 margin-right: 0;
1007 width: calc(100% - #{$icon-size + $grid-size * 2});
1008
1009 input {
1010 box-sizing: border-box;
1011
1012 @include textbox($params);
1013 }
1014 }
1015
1016 .ag-floating-filter-full-body {
1017 input {
1018 box-sizing: border-box;
1019
1020 @include textbox($params);
1021 }
1022 }
1023
1024 .ag-floating-filter-button {
1025 float: right;
1026 line-height: $icon-size;
1027 margin-top: $grid-size * 2.5;
1028
1029 button {
1030 appearance: none;
1031 background: transparent;
1032 border: 0;
1033 height: $icon-size;
1034 padding: 0;
1035 width: $icon-size;
1036 }
1037 }
1038
1039 .ag-cell-label-container {
1040 height: 100%;
1041 }
1042
1043 ////////////////////////////////////////
1044 // Expanding headers
1045 ////////////////////////////////////////
1046 .ag-header-group-cell-label {
1047 height: 100%;
1048
1049 span {
1050 float: left;
1051 height: 100%;
1052 }
1053 }
1054
1055 ////////////////////////////////////////
1056 // Header checkbox selection
1057 ////////////////////////////////////////
1058 .ag-header-select-all {
1059 height: 100%;
1060 margin-right: $cell-horizontal-padding;
1061
1062 span {
1063 height: 100%;
1064 }
1065 }
1066
1067 .ag-header-select-all:not(.ag-hidden) + .ag-cell-label-container {
1068 float: left;
1069 width: calc(100% - #{$icon-size} - #{$cell-horizontal-padding});
1070 }
1071
1072 ////////////////////////////////////////
1073 // Selection checkbox
1074 ////////////////////////////////////////
1075 .ag-selection-checkbox,
1076 .ag-group-expanded,
1077 .ag-group-contracted {
1078 span {
1079 margin-right: $cell-horizontal-padding;
1080 }
1081 }
1082
1083 .ag-selection-checkbox span {
1084 position: relative;
1085 top: $grid-size / 2;
1086 }
1087
1088 .ag-group-expanded {
1089 .ag-icon-contracted:empty {
1090 @include icon-background($params, "tree-open");
1091 }
1092 }
1093
1094 ////////////////////////////////////////
1095 // Column drop
1096 ////////////////////////////////////////
1097 .ag-column-drop-horizontal {
1098 background-color: $panel-background-color;
1099 height: $row-height;
1100 line-height: $grid-size * 4;
1101 padding-left: $cell-horizontal-padding;
1102
1103 // nasty fix for inline-block approach with half-width.
1104 &.ag-width-half {
1105 margin-bottom: -3px;
1106 }
1107
1108 span {
1109 float: left;
1110 height: 100%;
1111 }
1112
1113 & > div:first-child {
1114 float: left;
1115 height: 100%;
1116 }
1117
1118 .ag-icon-group,
1119 .ag-icon-pivot {
1120 margin-right: $cell-horizontal-padding;
1121 }
1122
1123 .ag-right-arrow {
1124 @include icon-background($params, "right");
1125 }
1126
1127 .ag-left-arrow {
1128 @include icon-background($params, "left");
1129 }
1130
1131 .ag-left-arrow,
1132 .ag-right-arrow {
1133 @include hide-text;
1134
1135 height: 100%;
1136 margin: 0 $grid-size;
1137 opacity: $secondary-foreground-color-opacity;
1138 }
1139
1140 .ag-column-drop-empty-message {
1141 height: 100%;
1142 line-height: $row-height;
1143 opacity: $disabled-foreground-color-opacity;
1144 }
1145 }
1146
1147 .ag-column-drop-cell {
1148 background: $chip-background-color;
1149 border-radius: $grid-size * 4;
1150 box-sizing: border-box;
1151 height: $grid-size * 4 !important;
1152 margin-top: $grid-size;
1153 padding: 0 $grid-size / 2;
1154
1155 .ag-column-drop-cell-text {
1156 height: 100%;
1157 line-height: $grid-size * 4;
1158 margin: 0 $grid-size;
1159 }
1160
1161 .ag-column-drop-cell-button {
1162 @include icon-background($params, "cancel");
1163 @include hide-text;
1164 min-width: $grid-size * 4;
1165
1166 height: 100%;
1167 margin: 0 $grid-size / 2;
1168 opacity: $secondary-foreground-color-opacity;
1169
1170 &:hover {
1171 opacity: $foreground-opacity;
1172 }
1173 }
1174
1175 .ag-column-drag {
1176 margin-left: $grid-size * 2;
1177 margin-top: $grid-size / 2;
1178 width: $icon-size;
1179 }
1180 }
1181
1182 .ag-select-agg-func-popup {
1183 @include card($params);
1184
1185 background: $background-color;
1186 height: $grid-size * 5 * 3.5;
1187 padding: 0;
1188
1189 .ag-virtual-list-item {
1190 cursor: default;
1191 line-height: $grid-size * 5;
1192 padding-left: $grid-size * 2;
1193 }
1194
1195 .ag-virtual-list-item:hover {
1196 background-color: map-get($params, "menu-option-active-color");
1197 }
1198 }
1199
1200 .ag-set-filter-list,
1201 .ag-menu-column-select-wrapper {
1202 width: auto;
1203 }
1204
1205 .ag-column-drop-vertical > .ag-column-drop-cell {
1206 float: left;
1207 margin-bottom: $grid-size;
1208 margin-left: $grid-size;
1209 margin-top: 0;
1210 }
1211
1212 // cell data changed
1213 .ag-cell-data-changed {
1214 background-color: $value-change-value-highlight-background-color !important;
1215 }
1216
1217 .ag-cell-data-changed-animation {
1218 background-color: transparent;
1219 transition: background-color 1s;
1220 }
1221
1222 .ag-row-stub {
1223 background-color: map-get($params, "row-stub-background-color");
1224 }
1225
1226 .ag-stub-cell {
1227 padding-left: $cell-horizontal-padding;
1228 padding-top: $grid-size;
1229
1230 .ag-loading-icon {
1231 float: left;
1232 height: 100%;
1233 }
1234
1235 .ag-loading-text {
1236 float: left;
1237 height: 100%;
1238 margin-left: $grid-size;
1239 margin-top: $grid-size;
1240 }
1241 }
1242
1243 .ag-floating-top {
1244 background-color: $row-floating-background-color;
1245
1246 .ag-row {
1247 background-color: $row-floating-background-color;
1248 }
1249 }
1250
1251 .ag-floating-bottom {
1252 background-color: $row-floating-background-color;
1253 }
1254
1255 ////////////////////////////////////////
1256 // Right-To-Left
1257 ////////////////////////////////////////
1258 .ag-rtl {
1259 .ag-numeric-cell {
1260 text-align: left;
1261 }
1262
1263 .ag-header-cell-menu-button {
1264 float: left;
1265 }
1266
1267 .ag-header-cell-label {
1268 float: right;
1269 width: calc(100% - #{$icon-size});
1270
1271 & > span {
1272 float: right;
1273 }
1274
1275 .ag-header-icon {
1276 margin-top: 2px;
1277 }
1278 }
1279
1280 .ag-numeric-header {
1281 .ag-header-cell-menu-button {
1282 float: right;
1283 }
1284
1285 .ag-header-cell-label {
1286 float: left;
1287
1288 & > span {
1289 float: left;
1290 }
1291 }
1292 }
1293
1294 .ag-column-panel {
1295 .ag-pivot-mode {
1296 span {
1297 float: right;
1298 }
1299
1300 .ag-pivot-mode-select {
1301 margin-right: $grid-size;
1302
1303 .ag-checkbox-label {
1304 margin-right: $grid-size;
1305 }
1306 }
1307 }
1308
1309 .ag-column-drop {
1310 .ag-icon {
1311 float: right;
1312 }
1313
1314 .ag-column-drop-title {
1315 clear: left;
1316 float: right;
1317 }
1318
1319 .ag-column-drop-empty-message {
1320 padding-left: $grid-size;
1321 padding-right: $grid-size * 4;
1322 }
1323 }
1324 }
1325
1326 .ag-filter-checkbox {
1327 float: right;
1328 margin-left: $grid-size;
1329 }
1330
1331 .ag-column-select-panel {
1332 .ag-column-select-column-group,
1333 .ag-column-select-column {
1334 span {
1335 float: right;
1336 }
1337
1338 .ag-column-select-checkbox,
1339 .ag-column-group-icons {
1340 margin-left: $grid-size;
1341 margin-right: $grid-size;
1342 }
1343 }
1344
1345 .ag-column-select-column.ag-toolpanel-add-group-indent {
1346 margin-left: 0;
1347 margin-right: $icon-size + $grid-size * 2;
1348 }
1349 }
1350
1351 .ag-icon-tree-closed {
1352 @include icon-background($params, "contracted");
1353 }
1354
1355 .ag-header-group-cell-label {
1356 height: 100%;
1357
1358 span {
1359 float: right;
1360 height: 100%;
1361 }
1362 }
1363
1364 .ag-header-select-all:not(.ag-hidden) + .ag-cell-label-container {
1365 float: right;
1366 }
1367
1368 .ag-header-select-all {
1369 margin-left: $cell-horizontal-padding;
1370 margin-right: 0;
1371 }
1372
1373 .ag-selection-checkbox,
1374 .ag-group-expanded,
1375 .ag-group-contracted {
1376 span {
1377 margin-left: $cell-horizontal-padding;
1378 margin-right: 0;
1379 }
1380 }
1381
1382 .ag-column-drop-horizontal {
1383 padding-right: $cell-horizontal-padding;
1384
1385 span {
1386 float: right;
1387 }
1388
1389 & > div:first-child {
1390 float: right;
1391 }
1392
1393 .ag-icon-group,
1394 .ag-icon-pivot {
1395 margin-left: $cell-horizontal-padding;
1396 margin-right: 0;
1397 }
1398
1399 .ag-right-arrow {
1400 @include icon-background($params, "right");
1401
1402 height: 100%;
1403 }
1404
1405 .ag-left-arrow {
1406 @include icon-background($params, "left");
1407
1408 height: 100%;
1409 }
1410 }
1411
1412 .ag-floating-filter-body {
1413 float: right;
1414 margin-left: 0;
1415 }
1416
1417 .ag-floating-filter-button {
1418 float: left;
1419 }
1420
1421 .ag-header .ag-header-cell-resize {
1422 left: -$grid-size;
1423 right: auto;
1424 }
1425
1426 .ag-header .ag-header-cell-resize::after {
1427 border-left: 1px solid $border-color;
1428 border-right: 0;
1429 }
1430
1431 .ag-column-select-header .ag-filter-body {
1432 margin-left: $grid-size;
1433 margin-right: 0;
1434 }
1435
1436 .ag-column-drag {
1437 background-position-x: right;
1438 }
1439 }
1440
1441 .ag-status-bar {
1442 background: $background-color;
1443 border: 1px solid $border-color;
1444 border-top: 0;
1445 color: $disabled-foreground-color;
1446 display: flex;
1447 font: $secondary-font;
1448 justify-content: flex-end;
1449 padding: $grid-size * 2 $grid-size * 4;
1450
1451 .ag-status-bar-item {
1452 margin-right: $grid-size * 2;
1453
1454 span:nth-child(1)::after {
1455 content: ":";
1456 }
1457
1458 span:nth-child(2) {
1459 color: $foreground-color;
1460 }
1461 }
1462 }
1463
1464 .ag-details-row {
1465 box-sizing: border-box;
1466 padding: $grid-size * 5;
1467 }
1468
1469 .ag-overlay-loading-wrapper {
1470 background-color: rgba(255, 255, 255, 0.5);
1471 }
1472
1473 .ag-overlay-loading-center {
1474 @include card($params);
1475 }
1476
1477 .ag-tool-panel {
1478 background-color: $tool-panel-background-color;
1479 border-right: 1px solid $border-color;
1480 border-top: 1px solid $border-color;
1481
1482 .ag-side-buttons {
1483 border-bottom: 1px solid $border-color;
1484
1485 button {
1486 background: transparent;
1487 border: 0;
1488 border-right: 1px solid $border-color;
1489 color: $foreground-color;
1490 height: 20px;
1491 }
1492 }
1493
1494 .ag-panel-container {
1495 border-right: 1px solid $border-color;
1496 box-sizing: border-box;
1497 }
1498
1499 &.full-width .ag-panel-container {
1500 border-right: 0;
1501 }
1502
1503 .ag-column-drop {
1504 min-height: 50px;
1505 }
1506 }
1507
1508 .ag-rtl .ag-tool-panel {
1509 .ag-panel-container {
1510 border-left: 1px solid $border-color;
1511 border-right: 0;
1512 }
1513
1514 &.full-width .ag-panel-container {
1515 border-left: 0;
1516 }
1517
1518 .ag-side-buttons button {
1519 border-left: 1px solid $border-color;
1520 border-right: 0;
1521 }
1522 }
1523
1524 .ag-column-name-filter {
1525 @include textbox($params);
1526
1527 box-sizing: border-box;
1528 width: 100%;
1529 }
1530
1531 $exported: (
1532 autoSizePadding: $grid-size * 3,
1533 headerHeight: $header-height,
1534 groupPaddingSize: $grid-size * 3 + $icon-size,
1535 footerPaddingAddition: $grid-size * 4,
1536 virtualItemHeight: $virtual-item-height,
1537 aggFuncPopupHeight: $virtual-item-height * 3.5,
1538 checkboxIndentWidth: $grid-size + $icon-size,
1539 leafNodePadding: $grid-size * 3,
1540 rowHeight: $row-height,
1541 gridSize: $grid-size,
1542 iconSize: $icon-size
1543 );
1544
1545 $json-list: ();
1546
1547 @each $name, $value in $exported {
1548 $json-list: append($json-list, unquote('"#{$name}": "#{$value}"'), comma);
1549 }
1550
1551 .sass-variables::after {
1552 content: "{ #{$json-list} }";
1553 display: none;
1554 }
1555}