• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

atinc / ngx-tethys / 2bb461f1-51aa-4bcb-8006-30243e37cb19

16 May 2025 03:32AM UTC coverage: 90.253% (-0.02%) from 90.272%
2bb461f1-51aa-4bcb-8006-30243e37cb19

Pull #3360

circleci

invalid-email-address
fix: fix type
Pull Request #3360: refactor(grid): migration signal #TINFR-1474

5609 of 6876 branches covered (81.57%)

Branch coverage included in aggregate %.

30 of 31 new or added lines in 5 files covered. (96.77%)

11 existing lines in 5 files now uncovered.

13400 of 14186 relevant lines covered (94.46%)

919.97 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

82.76
/src/grid/thy-row.directive.ts
1
import { Directive, OnChanges, OnInit, AfterViewInit, OnDestroy, ChangeDetectionStrategy, input } from '@angular/core';
2
import { ReplaySubject } from 'rxjs';
3
import { isString } from 'ngx-tethys/util';
4
import { useHostRenderer } from '@tethys/cdk/dom';
5

6
export type ThyRowJustify = 'start' | 'end' | 'center' | 'space-around' | 'space-between';
7
export type ThyRowAlign = 'top' | 'middle' | 'bottom';
8
export interface ThyGutterType {
9
    xs?: number;
10
    sm?: number;
11
    md?: number;
12
    lg?: number;
1✔
13
    xl?: number;
14
    xxl?: number;
4✔
15
}
4✔
16

4✔
17
/**
18
 * 栅格行指令
19
 * @name thyRow
4✔
20
 * @order 30
21
 */
22
@Directive({
4✔
23
    selector: '[thyRow]',
24
    host: {
25
        class: 'thy-row'
8✔
26
    }
8✔
27
})
8✔
28
export class ThyRowDirective implements OnInit, OnChanges {
2✔
29
    /**
30
     * 栅格的间距
8✔
31
     */
1✔
32
    readonly thyGutter = input<ThyGutterType | number>(undefined);
1✔
33

34
    public actualGutter$ = new ReplaySubject<[number, number]>(1);
8!
UNCOV
35

×
UNCOV
36
    private hostRenderer = useHostRenderer();
×
37

38
    constructor() {}
39

40
    ngOnInit() {
8✔
41
        this.setGutterStyle();
8!
42
    }
×
43

44
    ngOnChanges() {
8✔
45
        this.setGutterStyle();
46
    }
1✔
47

1✔
48
    private setGutterStyle() {
49
        const [horizontalGutter, verticalGutter] = this.getGutter();
50
        this.actualGutter$.next([horizontalGutter, verticalGutter]);
51
        const renderGutter = (name: string, gutter: number) => {
1✔
52
            this.hostRenderer.setStyle(name, `-${gutter / 2}px`);
53
        };
54
        if (horizontalGutter > 0) {
55
            renderGutter('margin-left', horizontalGutter);
56
            renderGutter('margin-right', horizontalGutter);
57
        }
58
        if (verticalGutter > 0) {
59
            renderGutter('margin-top', verticalGutter);
60
            renderGutter('margin-bottom', verticalGutter);
61
        }
62
    }
63

64
    private getGutter() {
65
        const thyGutter = this.thyGutter();
66
        if (isString(thyGutter)) {
67
            throw Error(`thyGutter value can not be string type`);
68
        }
69
        return [thyGutter as number, 0];
70
    }
71
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc