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

willmendesneto / ngx-feature-toggle / #1010

pending completion
#1010

push

snyk-bot
fix: upgrade zone.js from 0.11.5 to 0.12.0

Snyk has created this PR to upgrade zone.js from 0.11.5 to 0.12.0.

See this package in npm:
https://www.npmjs.com/package/zone.js

See this project in Snyk:
https://app.snyk.io/org/willmendesneto/project/486f5426-06e0-4cbf-8382-8b38e5a4e6a1?utm_source=github&utm_medium=referral&page=upgrade-pr

26 of 32 branches covered (81.25%)

Branch coverage included in aggregate %.

43 of 48 relevant lines covered (89.58%)

19.98 hits per line

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

76.47
/projects/ngx-feature-toggle/src/lib/ngx-feature-toggle.directive.ts
1
import {
2
  Directive,
3
  Input,
4
  OnInit,
5
  TemplateRef,
6
  ViewContainerRef,
7
  DoCheck,
8
  isDevMode,
9
} from '@angular/core';
10

11
import { isOn } from 'feature-toggle-service';
12

13
@Directive({
14
  // tslint:disable-next-line: directive-selector
15
  selector: '[featureToggle]',
16
})
17
export class FeatureToggleDirective implements OnInit, DoCheck {
1✔
18
  @Input() public featureToggle: string[] | string;
1✔
19
  private isOn = false;
46✔
20

21
  constructor(
22
    private templateRef: TemplateRef<any>,
46✔
23
    private viewContainer: ViewContainerRef
46✔
24
  ) {}
25

26
  ngOnInit() {
27
    if (!this.featureToggle) {
46!
28
      throw new Error('Attribute `featureToggle` should not be null or empty');
×
29
    }
30
    this.shouldRender();
46✔
31
  }
32

33
  ngDoCheck() {
34
    if (this.isOn !== this.isOnCheck(this.featureToggle)) {
47✔
35
      this.shouldRender();
1✔
36
    }
37
  }
38

39
  private shouldRender() {
40
    this.isOn = this.isOnCheck(this.featureToggle);
47✔
41
    if (this.isOn) {
47✔
42
      this.viewContainer.createEmbeddedView(this.templateRef);
23✔
43
    } else {
44
      this.viewContainer.clear();
24✔
45
    }
46
  }
47

48
  isOnCheck(featureToggle: string[] | string) {
49
    if (typeof featureToggle !== 'string' && !Array.isArray(featureToggle)) {
94!
50
      if (isDevMode()) {
×
51
        console.error(
×
52
          '`NgxFeatureToggle`: `featureToggle` should receive an array or an string as a value.'
53
        );
54
      }
55
      return false;
×
56
    }
57

58
    return ([].concat(featureToggle) as string[]).every((toggle) =>
94✔
59
      toggle[0] === '!' ? !isOn(toggle.replace('!', '')) : isOn(toggle)
122✔
60
    );
61
  }
62
}
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