All files / src/app/extensions/quoting/exports/lazy-product-add-to-quote lazy-product-add-to-quote.component.ts

20.83% Statements 5/24
0% Branches 0/4
0% Functions 0/8
19.04% Lines 4/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 923x                             3x 3x                   3x                                                                                                                                  
import {
  ChangeDetectionStrategy,
  Component,
  createNgModule,
  OnInit,
  ViewChild,
  ViewContainerRef,
  Injector,
  ComponentRef,
  Input,
  OnChanges,
  inject,
  DestroyRef,
} from '@angular/core';
 
import { FeatureToggleService } from 'ish-core/feature-toggle.module';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
 
import type { ProductAddToQuoteComponent as OriginalComponent } from '../../shared/product-add-to-quote/product-add-to-quote.component';
 
@Component({
  selector: 'ish-lazy-product-add-to-quote',
  standalone: false,
  templateUrl: './lazy-product-add-to-quote.component.html',
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class LazyProductAddToQuoteComponent implements OnInit, OnChanges {
  /*
   * WARNING!
   *
   * This file was automatically generated!
   * It should be updated using:
   *
   * ng g lazy-component extensions/quoting/shared/product-add-to-quote/product-add-to-quote.component.ts
   *
   */
 
  @ViewChild('anchor', { read: ViewContainerRef, static: true }) anchor: ViewContainerRef;
 
  @Input() displayType: OriginalComponent['displayType'];
 
  @Input() cssClass: OriginalComponent['cssClass'];
 
  @Input() ariaHidden: OriginalComponent['ariaHidden'];
 
  private component: ComponentRef<OriginalComponent>;
  private destroyRef = inject(DestroyRef);
 
  constructor(
    private featureToggleService: FeatureToggleService,
    private injector: Injector
  ) {}
 
  ngOnInit() {
    this.featureToggleService
      .enabled$('quoting')
      .pipe(takeUntilDestroyed(this.destroyRef))
      .subscribe(async enabled => {
        if (enabled) {
          await this.renderComponent();
        } else {
          this.anchor.clear();
        }
      });
  }
 
  private async renderComponent() {
    const module = await import(`../../quoting.module`).then(m => m.QuotingModule);
 
    const { ProductAddToQuoteComponent: originalComponent } =
      await import('../../shared/product-add-to-quote/product-add-to-quote.component');
 
    const ngModuleRef = createNgModule(module, this.injector);
 
    this.component = this.anchor.createComponent(originalComponent, { ngModuleRef });
 
    this.ngOnChanges();
 
    this.component.changeDetectorRef.markForCheck();
  }
 
  ngOnChanges() {
    if (this.component) {
      this.component.setInput('displayType', this.displayType);
 
      this.component.setInput('cssClass', this.cssClass);
 
      this.component.setInput('ariaHidden', this.ariaHidden);
    }
  }
}