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

atinc / ngx-tethys / d9ae709b-3c27-4b69-b125-b8b80b54f90b

pending completion
d9ae709b-3c27-4b69-b125-b8b80b54f90b

Pull #2757

circleci

mengshuicmq
fix: fix code review
Pull Request #2757: feat(color-picker): color-picker support disabled (#INFR-8645)

98 of 6315 branches covered (1.55%)

Branch coverage included in aggregate %.

1 of 1 new or added line in 1 file covered. (100.0%)

2392 of 13661 relevant lines covered (17.51%)

83.12 hits per line

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

16.67
/src/grid/thy-row.directive.ts
1
import { Directive, Input, OnChanges, OnInit, AfterViewInit, OnDestroy } from '@angular/core';
2
import { ReplaySubject } from 'rxjs';
3
import { mixinUnsubscribe, MixinBase, Constructor, ThyUnsubscribe } from 'ngx-tethys/core';
4
import { isString } from 'ngx-tethys/util';
5
import { useHostRenderer } from '@tethys/cdk/dom';
6

7
export type ThyRowJustify = 'start' | 'end' | 'center' | 'space-around' | 'space-between';
1✔
8
export type ThyRowAlign = 'top' | 'middle' | 'bottom';
9

10
const _MixinBase: Constructor<ThyUnsubscribe> & typeof MixinBase = mixinUnsubscribe(MixinBase);
11

12
/**
1✔
13
 * 栅格行指令
14
 * @name thyRow
×
15
 */
×
16
@Directive({
×
17
    selector: '[thyRow]',
18
    host: {
19
        class: 'thy-row'
×
20
    },
21
    standalone: true
22
})
×
23
export class ThyRowDirective extends _MixinBase implements OnInit, OnChanges, AfterViewInit, OnDestroy {
24
    /**
25
     * 栅格的间距
26
     */
×
27
    @Input() thyGutter: number | { xs?: number; sm?: number; md?: number; lg?: number; xl?: number; xxl?: number };
×
28

×
29
    public actualGutter$ = new ReplaySubject<[number, number]>(1);
×
30

31
    private hostRenderer = useHostRenderer();
×
32

×
33
    constructor() {
×
34
        super();
35
    }
×
36

×
37
    ngOnInit() {
×
38
        this._setGutterStyle();
39
    }
40

41
    ngOnChanges() {
×
42
        this._setGutterStyle();
×
43
    }
44

×
45
    ngAfterViewInit(): void {}
46

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

63
    private _getGutter() {
64
        if (isString(this.thyGutter)) {
65
            throw Error(`thyGutter value can not be string type`);
66
        }
67
        return [this.thyGutter as number, 0];
68
    }
69

70
    ngOnDestroy(): void {
71
        super.ngOnDestroy();
72
    }
73
}
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