All files / projects/requisition-management/src/app/pages/requisition-detail/requisition-reject-dialog requisition-reject-dialog.component.ts

82.6% Statements 19/23
50% Branches 4/8
71.42% Functions 5/7
82.6% Lines 19/23

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 92 93 94 95 96 97 98 99 100 101 102 103 104 1052x                 2x 2x     2x                             2x       3x   3x 3x                   3x     3x       3x                                               2x 1x 1x 1x     1x 1x                     1x 1x                  
import {
  ChangeDetectionStrategy,
  Component,
  EventEmitter,
  OnInit,
  Output,
  TemplateRef,
  ViewChild,
} from '@angular/core';
import { FormGroup } from '@angular/forms';
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
import { FormlyFieldConfig } from '@ngx-formly/core';
 
import { markAsDirtyRecursive } from 'ish-shared/forms/utils/form-utils';
 
/**
 * The Wishlist Reject Approval Dialog shows the modal to reject a requisition.
 *
 * @example
 * <ish-requisition-reject-dialog
    (submitRejectRequisition)="rejectRequisition($event)">
   </ish-requisition-reject-dialog>
 */
@Component({
  selector: 'ish-requisition-reject-dialog',
  templateUrl: './requisition-reject-dialog.component.html',
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class RequisitionRejectDialogComponent implements OnInit {
  /**
   * Emits the reject event with the reject comment.
   */
  @Output() submitRejectRequisition = new EventEmitter<string>();
 
  rejectForm = new FormGroup({});
  private submitted = false;
  fields: FormlyFieldConfig[];
 
  /**
   *  A reference to the current modal.
   */
  modal: NgbModalRef;
 
  @ViewChild('modal') modalTemplate: TemplateRef<unknown>;
 
  constructor(private ngbModal: NgbModal) {}
 
  ngOnInit() {
    this.initForm();
  }
 
  private initForm() {
    this.fields = [
      {
        key: 'comment',
        type: 'ish-textarea-field',
        props: {
          label: 'approval.rejectform.add_a_comment.label',
          required: true,
          maxLength: 1000,
          rows: 4,
          labelClass: 'col-12',
          fieldClass: 'col-12',
          hideRequiredMarker: true,
        },
        validation: {
          messages: {
            required: 'approval.rejectform.invalid_comment.error',
          },
        },
      },
    ];
  }
 
  /** Emits the reject comment data, when the form was valid. */
  submitForm() {
    if (this.rejectForm.invalid) {
      this.submitted = true;
      markAsDirtyRecursive(this.rejectForm);
      return;
    }
 
    this.submitRejectRequisition.emit(this.rejectForm.get('comment').value);
    this.hide();
  }
 
  /** Opens the modal. */
  show() {
    this.rejectForm.reset();
    this.modal = this.ngbModal.open(this.modalTemplate);
  }
 
  /** Close the modal. */
  hide() {
    this.submitted = false;
    Iif (this.modal) {
      this.modal.close();
    }
  }
 
  get formDisabled() {
    return this.rejectForm.invalid && this.submitted;
  }
}