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

atinc / ngx-tethys / 68ef226c-f83e-44c1-b8ed-e420a83c5d84

28 May 2025 10:31AM UTC coverage: 10.352% (-80.0%) from 90.316%
68ef226c-f83e-44c1-b8ed-e420a83c5d84

Pull #3460

circleci

pubuzhixing8
chore: xxx
Pull Request #3460: refactor(icon): migrate signal input #TINFR-1476

132 of 6823 branches covered (1.93%)

Branch coverage included in aggregate %.

10 of 14 new or added lines in 1 file covered. (71.43%)

11648 existing lines in 344 files now uncovered.

2078 of 14525 relevant lines covered (14.31%)

6.69 hits per line

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

13.79
/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;
UNCOV
14
    xxl?: number;
×
UNCOV
15
}
×
UNCOV
16

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

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

×
36
    private hostRenderer = useHostRenderer();
×
37

38
    constructor() {}
39

UNCOV
40
    ngOnInit() {
×
UNCOV
41
        this.setGutterStyle();
×
42
    }
×
43

UNCOV
44
    ngOnChanges() {
×
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