{"version":3,"file":"my-assessments-library.mjs","sources":["../../../projects/my-library/src/lib/my-library.service.ts","../../../projects/my-library/src/lib/services/rest.service.ts","../../../projects/my-library/src/lib/services/filterOption.ts","../../../projects/my-library/src/lib/services/loader.service.ts","../../../projects/my-library/src/lib/components/mat-dialog/mat-dialog.component.ts","../../../projects/my-library/src/lib/components/mat-dialog/mat-dialog.component.html","../../../projects/my-library/src/lib/services/common.service.ts","../../../projects/my-library/src/lib/services/formly-api.service.ts","../../../projects/my-library/src/lib/components/claim-new-assess/claim-new-assess.component.ts","../../../projects/my-library/src/lib/components/claim-new-assess/claim-new-assess.component.html","../../../projects/my-library/src/lib/components/view-all/view-all.component.ts","../../../projects/my-library/src/lib/components/view-all/view-all.component.html","../../../projects/my-library/src/lib/components/loader/loader.component.ts","../../../projects/my-library/src/lib/components/loader/loader.component.html","../../../projects/my-library/src/lib/components/message/message.component.ts","../../../projects/my-library/src/lib/components/message/message.component.html","../../../projects/my-library/src/lib/components/formly-form/formly-form.component.ts","../../../projects/my-library/src/lib/components/formly-form/formly-form.component.html","../../../projects/my-library/src/lib/components/formly-view/formly-view.component.ts","../../../projects/my-library/src/lib/components/formly-view/formly-view.component.html","../../../projects/my-library/src/lib/my-library.component.ts","../../../projects/my-library/src/lib/my-library.component.html","../../../projects/my-library/src/lib/components/view/view.component.ts","../../../projects/my-library/src/lib/components/view/view.component.html","../../../projects/my-library/src/lib/formlyFormcontrols/formlyFieldTypes/quillConfiguration.ts","../../../projects/my-library/src/lib/formlyFormcontrols/wrappers/tooltip.wrapper.ts","../../../projects/my-library/src/lib/formlyFormcontrols/wrappers/tooltip.wrapper.html","../../../projects/my-library/src/lib/formlyFormcontrols/formlyFieldTypes/quill-editor.ts","../../../projects/my-library/src/lib/assessment-module/assessment.module.ts","../../../projects/my-library/src/public-api.ts","../../../projects/my-library/src/my-assessments-library.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class MyLibraryService {\r\n\r\n  constructor() { }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class RestService {\r\n\r\n\r\n  environment: any;\r\n  token: any;\r\n\r\n\r\n\r\n  constructor(\r\n    private http: HttpClient,\r\n  ) {\r\n  }\r\n\r\n\r\n  postCoreBaseData<T>(data: T, url: string, headers?: any): Observable<any> {\r\n    \r\n    let options = {\r\n      headers: new HttpHeaders({\r\n        'Content-Type': 'application/json',\r\n        'Authorization': `Bearer ${headers ?? this.token}`\r\n      }),\r\n    };\r\n    console.log(options)\r\n    if (url.startsWith('https://')) {\r\n      return this.http.post<any>(url, data, options).pipe(map((response) => {\r\n        if (response.rcode == 500) {\r\n          return null;\r\n        }\r\n        return response;\r\n      })\r\n      );\r\n    } else {\r\n      return this.http.post<any>(`${this.environment.InsuranceCoreAPIBaseURL}` + url, data, options).pipe(map((response) => {\r\n        if (response.rcode == 500) {\r\n          return null;\r\n        }\r\n        return response;\r\n      })\r\n      );\r\n    }\r\n  }\r\n\r\n\r\n  postUATData<T>(data: T, url: string, headers?: any): Observable<any> {\r\n    console.log(headers)\r\n    console.log(headers,'acbacbshjkcbsh bjhsdb')\r\n    let options = {\r\n      headers: new HttpHeaders({\r\n        'Content-Type': 'application/json',\r\n        'Authorization': `Bearer ${headers ?? this.token}`\r\n      }),\r\n    };\r\n    if (url.startsWith('https://')) {\r\n      return this.http.post<any>(url, data, options).pipe(\r\n        map((response) => {\r\n          if (response.rcode == 500) {\r\n            return null;\r\n          }\r\n          return response;\r\n        })\r\n      );\r\n    } else {\r\n      return this.http.post<any>(`${this.environment.UADAPIBaseURL}` + url, data, options).pipe(\r\n        map((response) => {\r\n          if (response.rcode == 500) {\r\n            return null;\r\n          }\r\n          return response;\r\n        })\r\n      );\r\n    }\r\n  }\r\n\r\n\r\n  postProductConfigData<T>(\r\n    data: T,\r\n    url: string,\r\n    headers?: any\r\n  ): Observable<any> {\r\n    let options = {\r\n      headers: new HttpHeaders({\r\n        'Content-Type': 'application/json',\r\n        'Authorization': `Bearer ${headers ?? this.token}`\r\n      }),\r\n    };\r\n    if (url.startsWith('https://')) {\r\n      return this.http.post<any>(url, data, options).pipe(\r\n        map((response) => {\r\n          if (response.rcode == 500) {\r\n            return null;\r\n          }\r\n          return response;\r\n        })\r\n      );\r\n    } else {\r\n      return this.http\r\n        .post<any>(`${this.environment.productConfigURL}` + url, data, options)\r\n        .pipe(\r\n          map((response) => {\r\n            if (response.rcode == 500) {\r\n              return null;\r\n            }\r\n            return response;\r\n          })\r\n        );\r\n    }\r\n  }\r\n\r\n  postData<T>(data: T, url: string, headers?: any): Observable<any> {\r\n    let options = {\r\n      headers: new HttpHeaders({\r\n        'Content-Type': 'application/json',\r\n        'Authorization': `Bearer ${headers ?? this.token}`\r\n      }),\r\n    };\r\n    if (url.startsWith('https://')) {\r\n      return this.http.post<any>(url, data, options).pipe(\r\n        map((response) => {\r\n          if (response.rcode == 500) {\r\n            return null;\r\n          }\r\n\r\n\r\n          return response;\r\n        })\r\n      );\r\n    } else {\r\n      return this.http.post<any>(`${this.environment.baseURL}` + url, data, options).pipe(\r\n        map((response) => {\r\n          if (response.rcode == 500) {\r\n            return null;\r\n          }\r\n          return response;\r\n        })\r\n      );\r\n    }\r\n  }\r\n\r\n\r\n  getEnv(env: any) {\r\n    this.environment = env.environment;\r\n    this.token = env.token\r\n    return\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n    name: 'filterOptions'\r\n})\r\nexport class FilterOptionsPipe implements PipeTransform {\r\n    transform(options: any[], searchTerm: string, searchProperty: string): any[] {\r\n        if (!options || !searchTerm) {\r\n            return options;\r\n        }\r\n\r\n        searchTerm = searchTerm.toLowerCase().trim();\r\n\r\n        return options.filter(option => {\r\n            if (option && option.hasOwnProperty(searchProperty) && option[searchProperty]) {\r\n                return option[searchProperty].toLowerCase().includes(searchTerm);\r\n            }\r\n            return false;\r\n        });\r\n    }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class LoaderService {\r\n  private loadingSubject = new BehaviorSubject<boolean>(false);\r\n  loading$ = this.loadingSubject.asObservable();\r\n\r\n  constructor() {}\r\n\r\n  show() {\r\n    this.loadingSubject.next(true);\r\n  }\r\n\r\n  hide() {\r\n    this.loadingSubject.next(false);\r\n  }\r\n}\r\n","import { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { AfterViewInit, Component, ElementRef, Inject } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n@Component({\r\n  selector: 'app-mat-dialog',\r\n  templateUrl: './mat-dialog.component.html',\r\n  styleUrls: ['./mat-dialog.component.scss'],\r\n})\r\nexport class MatDialogComponent implements AfterViewInit {\r\n  trnID: string;\r\n  textMessage: string;\r\n  fileValueJson: any;\r\n  excelDataAsJson: any;\r\n  inputJsonAPI: any;\r\n  arrayName: any;\r\n  resendCountdown: number = 0;\r\n  resendTimer: any;\r\n  timer!: number;\r\n  remainingTime!: number;\r\n  timeRemaining_percent!: number;\r\n  intervalId: any;\r\n  productId!: string;\r\n  premiumCategoryID!: string;\r\n  reasoninput: any = ''\r\n  allocationErrorss: boolean = false;\r\n  termsChecked: boolean = false;\r\n  variantCopyForm: FormGroup;\r\n  submitted: boolean = false;\r\n  comments: string = '';\r\n  deleteCommentForm: FormGroup;\r\n  deleteCommentFormSubmitted: boolean = false;\r\n  selectedDate!: Date;\r\n  minDate: Date;\r\n  maxDate: Date;\r\n  agreedToDelete: boolean = false;\r\n  constructor(\r\n    public dialogRef: MatDialogRef<MatDialogComponent>,\r\n    public loader: LoaderService,\r\n    public fb: FormBuilder,\r\n    public translate: TranslateService,\r\n    private el: ElementRef,\r\n    @Inject(MAT_DIALOG_DATA) public data: any,\r\n    private breakpointObserver: BreakpointObserver,\r\n  ) {\r\n    this.textMessage = data.errorMessage;\r\n    this.trnID = data.trnID ? data.trnID : null;\r\n    if (data.yesNoPopup) {\r\n      this.startResendTimer();\r\n    }\r\n    this.variantCopyForm = this.fb.group({\r\n      variant: ['', Validators.required],\r\n    });\r\n\r\n    this.deleteCommentForm = this.fb.group({\r\n      comment: ['', Validators.required],\r\n    });\r\n\r\n    setTimeout(() => {\r\n      this.removeAriaOwns();\r\n    }, 400);\r\n    this.minDate = new Date(data.details?.policyStartDate);\r\n    this.maxDate = new Date(data.details?.policyEndDate);\r\n    console.log(this.data?.details)\r\n  }\r\n\r\n\r\n  close() {\r\n    this.dialogRef.close(true);\r\n  }\r\n  closeNull() {\r\n    this.dialogRef.close(null);\r\n  }\r\n  ngAfterViewInit() {\r\n    this.removeAriaOwns();\r\n  }\r\n\r\n  removeAriaOwns() {\r\n    const element = this.el.nativeElement.querySelectorAll('.mat-form-field-label');\r\n    element.forEach((el: any) => {\r\n      if (el && el.hasAttribute('aria-owns')) {\r\n        el.removeAttribute('aria-owns');\r\n      }\r\n    })\r\n\r\n  }\r\n  onNoClick(): void {\r\n    this.dialogRef.close();\r\n  }\r\n\r\n  yesScreen() {\r\n    this.dialogRef.close(false);\r\n  }\r\n\r\n  yes() {\r\n    this.dialogRef.close(false);\r\n    if (this.data.yesNoPopup) {\r\n      this.stopCountdownTimer();\r\n    }\r\n    this.dialogRef.close(false);\r\n  }\r\n  CLOSE() {\r\n    this.dialogRef.close('');\r\n  }\r\n\r\n  YES() {\r\n    if (this.data.yesNoPopup) {\r\n      this.stopCountdownTimer();\r\n    }\r\n    let val = this.reasoninput.trim();\r\n    if (val !== '') {\r\n      this.dialogRef.close(val);\r\n    } else {\r\n      this.allocationErrorss = true;\r\n    }\r\n  }\r\n\r\n  stopCountdownTimer() {\r\n    clearInterval(this.intervalId);\r\n  }\r\n\r\n  startResendTimer() {\r\n    this.resendCountdown = 30;\r\n    this.timer = this.resendCountdown;\r\n    this.remainingTime = this.timer;\r\n    this.timeRemaining_percent = (this.remainingTime / this.timer) * 100;\r\n    this.intervalId = setInterval(() => {\r\n      this.remainingTime--;\r\n      this.timeRemaining_percent = (this.remainingTime / this.timer) * 100;\r\n      if (this.remainingTime <= 0) {\r\n        this.stopCountdownTimer();\r\n      }\r\n    }, 1000);\r\n  }\r\n  handleEnteredValue() {\r\n    this.allocationErrorss = false;\r\n  }\r\n  submitVariant() {\r\n    this.variantCopyForm.markAllAsTouched();\r\n    this.submitted = true;\r\n    if (this.variantCopyForm.invalid) {\r\n      return;\r\n    }\r\n    this.dialogRef.close(this.variantCopyForm.value.variant)\r\n  }\r\n  onCommentSubmit() {\r\n    this.dialogRef.close(this.comments)\r\n  }\r\n  onCancel() {\r\n    // Close the dialog without any action\r\n    this.dialogRef.close();\r\n  }\r\n\r\n  submitDeleteCommentForm() {\r\n    this.deleteCommentFormSubmitted = true;\r\n    if (this.deleteCommentForm.valid) {\r\n      this.dialogRef.close(this.deleteCommentForm.value.comment);\r\n    }\r\n  }\r\n  isDesktop(): boolean {\r\n    return this.breakpointObserver.isMatched('(min-width: 768px)');\r\n  }\r\n  isMobile(): boolean {\r\n    return this.breakpointObserver.isMatched('(max-width: 767px)');\r\n  }\r\n  getKeys(obj: any): { key: string, value: any }[] {\r\n    if (!obj) {\r\n      return [];\r\n    }\r\n    return Object.keys(obj).map(key => ({ key, value: obj[key] }));\r\n  }\r\n  getRecordValue(key: string): string {\r\n    if (this.data.record) {\r\n      return this.data.record[key] || null;\r\n    }\r\n    return '-';\r\n  }\r\n\r\n  changeTaxTypeYes() {\r\n    let resObj: any = {\r\n      isChanged: true,\r\n    }\r\n    this.dialogRef.close(resObj);\r\n  }\r\n\r\n  changeTaxTypeNo() {\r\n    let resObj: any = {\r\n      isChanged: false,\r\n    }\r\n    this.dialogRef.close(resObj);\r\n  }\r\n  onConfirm(): void {\r\n    this.dialogRef.close({ selectedDate: this.selectedDate, agreedToDelete: this.agreedToDelete });\r\n  }\r\n\r\n  yesButtonMD() {\r\n    this.dialogRef.close(true);\r\n  }\r\n  noButtonMD() {\r\n    this.dialogRef.close(false);\r\n  }\r\n}\r\n\r\n\r\n","<div *ngIf=\"data.success==true\">\r\n    <div class=\"col-12 text-center\">\r\n        <div class=\"text-success m-2\">\r\n            <em class=\"fa fa-check-circle font-size-25px\"></em>\r\n        </div>\r\n        <p class=\"text-sucess font-size-15px\" [ngClass]=\"{'mb-1' : data.trnID != null}\" innerHTML=\"{{textMessage}}\"></p>\r\n        <div class=\"\" *ngIf=\"data.trnID != null\">\r\n            <p class=\"text-center\"> Transaction Reference Number is <strong>{{trnID}}</strong> </p>\r\n        </div>\r\n        <button class=\"btn btnc\" (click)=\"close()\"><em class=\"fa fa-thumbs-up fa-fw\"></em> {{'ok'|translate}}</button>\r\n    </div>\r\n</div>\r\n<div *ngIf=\"data.secondary==true\">\r\n    <div class=\"col-12 text-center\">\r\n        <div class=\"text-secondary  m-2\">\r\n            <em class=\"fa fa-exclamation-triangle font-size-25px\"></em>\r\n        </div>\r\n        <p [ngClass]=\"{'mb-1' : data.trnID != null}\">{{textMessage}}</p>\r\n        <button class=\"btn btn-cancel\" (click)=\"close()\"><em class=\"fa fa-thumbs-up fa-fw\"></em>\r\n            {{'ok'|translate}}</button>\r\n    </div>\r\n</div>\r\n<div *ngIf=\"data.error==true\">\r\n    <div class=\"col-12 text-center\">\r\n        <div class=\"text-danger m-2\">\r\n            <em class=\"fa fa-exclamation-triangle font-size-25px\"></em>\r\n        </div>\r\n        <p class=\"text-danger\" innerHtml=\"{{textMessage}}\"></p>\r\n        <div class=\"\" *ngIf=\"data.trnID != null\">\r\n            <h6 class=\"text-center\"> Transaction Reference Number is <strong>{{trnID}}</strong> </h6>\r\n        </div>\r\n        <button class=\"btn btnreset btnc\" (click)=\"close()\"><em class=\"fa fa-thumbs-up fa-fw\"></em>\r\n            {{'ok'|translate}}</button>\r\n    </div>\r\n</div>\r\n\r\n<div *ngIf=\"data.yesOrNoPopup\">\r\n    <div class=\"col-12 text-center\">\r\n        <p [innerHTML]=\"data.errorMessage\"></p>\r\n        <button class=\"btn btnreset m-2\" (click)=\"close()\"><em class=\"fa fa-times fa-fw\"></em> {{'No' |\r\n            translate}}</button>\r\n        <button class=\"btn btnc m-2\" (click)=\"yes()\"><em class=\"fa fa-check fa-fw\"></em> {{'Yes' | translate}}</button>\r\n\r\n    </div>\r\n</div>\r\n\r\n<div *ngIf=\"data.delete\">\r\n    <div class=\"col-12 text-center\">\r\n        <p [innerHTML]=\"data.confirmMessage\"></p>\r\n        <button class=\"btn btnreset m-2\" (click)=\"close()\"><em class=\"fa fa-times fa-fw\"></em> {{'No' |\r\n            translate}}</button>\r\n        <button class=\"btn btnc m-2\" (click)=\"yesScreen()\"><em class=\"fa fa-check fa-fw\"></em> {{'Yes' |\r\n            translate}}</button>\r\n\r\n    </div>\r\n</div>\r\n\r\n\r\n<div *ngIf=\"data.infoMessage==true\">\r\n    <div class=\"col-12 text-center\">\r\n        <div class=\"text-success m-2\">\r\n            <em class=\"fa fa-info-circle font-size-25px\"></em>\r\n        </div>\r\n        <p class=\"text-sucess\" [ngClass]=\"{'mb-1' : data.trnID != null}\" innerHTML=\"{{textMessage}}\"></p>\r\n        <button class=\"btn btnc\" (click)=\"close()\"><em class=\"fa fa-thumbs-up fa-fw\"></em> {{'ok'|translate}}</button>\r\n    </div>\r\n</div>\r\n\r\n\r\n<div *ngIf=\"data.message=='SUCCESS'\">\r\n    <div class=\"col-12 text-center\">\r\n        <div class=\"text-success m-2\">\r\n            <em class=\"fa fa-check-circle font-size-25px\"></em>\r\n        </div>\r\n        <p class=\"text-sucess\" [ngClass]=\"{'mb-1' : data.trnID != null}\" innerHTML=\"{{data.errorMessage}}\"></p>\r\n        <div class=\"\" *ngIf=\"data.trnID != null\">\r\n            <h6 class=\"text-center\"> Transaction Reference Number is <strong>{{data.trnID}}</strong> </h6>\r\n        </div>\r\n        <button class=\"btn btnc\" (click)=\"close()\"><em class=\"fa fa-thumbs-up fa-fw\"></em> {{'ok'|translate}}</button>\r\n    </div>\r\n</div>\r\n\r\n\r\n\r\n<div *ngIf=\"data.tokenExpired==true\">\r\n    <div class=\"col-12 text-center\">\r\n        <div class=\"text-warning m-2\">\r\n            <em class=\"fa fa-exclamation-triangle aria-hidden= true font-size-25px\"></em>\r\n        </div>\r\n        <p class=\"text-sucess\" [ngClass]=\"{'mb-1' : data.trnID != null}\" innerHTML=\"{{textMessage}}\"></p>\r\n        <div class=\"\" *ngIf=\"data.trnID != null\">\r\n            <h6 class=\"text-center\"> Transaction Reference Number is <strong>{{trnID}}</strong> </h6>\r\n        </div>\r\n        <button class=\"btn btnc\" (click)=\"close()\"><em class=\"fa fa-thumbs-up fa-fw\"></em> {{'ok'|translate}}</button>\r\n    </div>\r\n</div>\r\n\r\n\r\n\r\n<div *ngIf=\"data.yesNoPopup\" class=\"p-3\">\r\n    <div class=\"col-12 \">\r\n        <p [innerHTML]=\"data.errorMessage\"></p>\r\n\r\n        <div class=\"col-md-12 col-lg-12 col-xl-12 col-xs-12 col-sm-12 row mb-2 mt-3\">\r\n            <div class=\"col-12 col-md-4 col-form-div text-right mb-2\"><strong>{{'Comments' |translate}}<span\r\n                        class=\"text-danger\">*</span>&nbsp;&nbsp;:</strong>\r\n            </div>\r\n            <div class=\"col-12 col-md-8 mb-2 \">\r\n                <textarea class=\"form-control\" [(ngModel)]=\"reasoninput\" (ngModelChange)=\"handleEnteredValue()\"\r\n                    placeholder=\"{{'Comments' |translate}}\" col=\"100\" row=\"100\"></textarea>\r\n                <div><span *ngIf=\"allocationErrorss\" class=\"text-danger\">{{'Enter_commentsRequired'|translate}}</span>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <div class=\"d-flex justify-content-center\">\r\n            <button class=\"btn btnreset m-2\" (click)=\"CLOSE()\"><em class=\"fa fa-times fa-fw\"></em> {{'No' |\r\n                translate}}</button>\r\n            <button class=\"btn btnc m-2\" (click)=\"YES()\"><em class=\"fa fa-check fa-fw\"></em> {{'Yes' |\r\n                translate}}</button>\r\n        </div>\r\n\r\n    </div>\r\n</div>\r\n\r\n<div *ngIf=\"data.isBuyPolicyYesorNo\">\r\n    <div class=\"col-12 text-center\">\r\n        <div class=\"col-12\">\r\n            <h2>Confirmation</h2>\r\n        </div>\r\n\r\n        <h3 [innerHTML]=\"data.errorMessage\"></h3>\r\n        <button class=\"btn btnreset m-2\" (click)=\"close()\"><em class=\"fa fa-times fa-fw\"></em> {{'No' |\r\n            translate}}</button>\r\n        <button class=\"btn btnc m-2\" (click)=\"yes()\"><em class=\"fa fa-check fa-fw\"></em> {{'Yes' | translate}}</button>\r\n\r\n    </div>\r\n</div>\r\n\r\n<div *ngIf=\"data.termsView\">\r\n    <div class=\"col-12\">\r\n        <p class=\"text-center\"> {{'Terms_and_Conditions_will_come_soon'|translate}}</p>\r\n        <div class=\"\">\r\n            <mat-checkbox [(ngModel)]=\"termsChecked\">\r\n                {{ 'termsAndCondition' | translate}}\r\n            </mat-checkbox>\r\n        </div>\r\n        <div class=\"text-center mt-2\">\r\n            <button class=\"btn btnNewCancel mx-1\" (click)=\"CLOSE()\"><em class=\"fa fa-times fa-fw\"></em> {{'Cancel' |\r\n                translate}}</button>\r\n            <button class=\"btn btnPC mx-1\" *ngIf=\"termsChecked\" (click)=\"close()\"><em\r\n                    class=\"fa fa-thumbs-up fa-fw\"></em> {{'submit'|translate}}</button>\r\n        </div>\r\n    </div>\r\n</div>\r\n<div *ngIf=\"data.notAllow==true\">\r\n    <div class=\"col-12 text-center\">\r\n\r\n        <div>\r\n            <h6 class=\"text-center\"> {{'configured_fields_not_able_to_reversed'|translate}}</h6>\r\n        </div>\r\n        <button class=\"btn btnc\" (click)=\"close()\"><em class=\"fa fa-thumbs-up fa-fw\"></em> {{'ok'|translate}}</button>\r\n    </div>\r\n</div>\r\n\r\n<div *ngIf=\"data.dateOverLap==true\">\r\n    <div class=\"col-12 text-center\">\r\n        <div class=\"text-danger m-2\">\r\n            <em class=\"fa fa-exclamation-triangle font-size-25px\"></em>\r\n        </div>\r\n\r\n        <div>\r\n            <h6 class=\"text-center\">{{data.errorMessage}}</h6>\r\n        </div>\r\n        <button class=\"btn btnreset btnc\" (click)=\"close()\"><em class=\"fa fa-thumbs-up fa-fw\"></em>\r\n            {{'ok'|translate}}</button>\r\n    </div>\r\n</div>\r\n<div *ngIf=\"data.isResultValid==true\">\r\n    <div class=\"col-12 text-center\">\r\n        <div class=\"text-danger m-2\">\r\n            <em class=\"fa fa-exclamation-triangle font-size-25px\"></em>\r\n        </div>\r\n\r\n        <div>\r\n            <h6 class=\"text-center\">{{data.errorMessage}}</h6>\r\n        </div>\r\n        <button class=\"btn btnreset btnc\" type=\"reset\" (click)=\"close()\"><em class=\"fa fa-thumbs-up fa-fw\"></em>\r\n            {{'ok'|translate}}</button>\r\n    </div>\r\n</div>\r\n<div *ngIf=\"data.quotationInvalid==true\">\r\n    <div class=\"col-12 text-center\">\r\n        <div class=\"text-danger m-2\">\r\n            <em class=\"fa fa-exclamation-triangle font-size-25px\"></em>\r\n        </div>\r\n\r\n        <div>\r\n            <h6 class=\"text-center\">{{data.errorMessage}}</h6>\r\n        </div>\r\n        <button class=\"btn btn-cancel btnc\" type=\"button\" (click)=\"close()\"><em class=\"fa fa-pencil fa-fw\"></em>\r\n            {{'click_here_to_edit'|translate}}</button>\r\n    </div>\r\n</div>\r\n<div *ngIf=\"data.isBenefitCopy\">\r\n    <form [formGroup]=\"variantCopyForm\">\r\n        <h6 class=\"text-center\"> {{'Select' | translate}} {{'variant' | translate}} </h6>\r\n        <div class=\"form-group\">\r\n            <mat-form-field class=\"input-wrapper\" floatLabel=\"always\">\r\n                <label>\r\n                    <mat-label for=\"objNum\">\r\n                        <span class=\"\">{{'variant' | translate}}</span>\r\n                        <span class=\"required-icon\">*</span>\r\n                    </mat-label>\r\n                </label>\r\n                <mat-select formControlName=\"variant\" placeholder=\"{{'Select'  |translate}} {{'variant' | translate}}\">\r\n                    <mat-option *ngFor=\"let primary of data.variants\" [value]=\"primary\">\r\n                        {{ primary.variantName }}\r\n                    </mat-option>\r\n                </mat-select>\r\n            </mat-form-field>\r\n            <mat-error class=\"error-message m-0 pb-2\"\r\n                *ngIf=\"variantCopyForm.get('variant')?.invalid && (variantCopyForm.get('variant')?.dirty || variantCopyForm.get('variant')?.touched) && submitted\">\r\n                <div *ngIf=\"variantCopyForm.get('variant')?.errors?.['required']\">{{ 'variantIsRequired' | translate }}\r\n                </div>\r\n            </mat-error>\r\n        </div>\r\n        <div class=\"d-flex justify-content-center mt-2\">\r\n            <button class=\"btn btnreset m-2\" (click)=\"CLOSE()\"><em class=\"fa fa-times fa-fw\"></em> {{'Cancel' |\r\n                translate}}</button>\r\n            <button class=\"btn btnc m-2\" (click)=\"submitVariant()\"><em class=\"fa fa-check fa-fw\"></em> {{'Submit' |\r\n                translate}}</button>\r\n        </div>\r\n    </form>\r\n</div>\r\n<div *ngIf=\"data.isComment\">\r\n    <form>\r\n        <h3 class=\"my-2 text-center\">{{'Enter_Comments'|translate}}</h3>\r\n        <mat-form-field appearance=\"fill\">\r\n            <textarea matInput placeholder=\"Enter your comments\" name=\"comments\" [(ngModel)]=\"comments\"\r\n                required></textarea>\r\n        </mat-form-field>\r\n        <div class=\"text-center\">\r\n            <button class=\"btn btn-cancel m-1\" type=\"button\" (click)=\"onCancel()\">{{'Cancel'|translate}}</button>\r\n            <button class=\"btn btnc m-1\" type=\"submit\" (click)=\"onCommentSubmit()\"\r\n                [disabled]=\"comments == ''\">{{'submit'|translate}}</button>\r\n        </div>\r\n    </form>\r\n</div>\r\n<div *ngIf=\"data.isEndorsementChanges\">\r\n    <div class=\"float-right\">\r\n        <span class=\"\" (click)=\"close()\" title=\"{{'Close' | translate}}\"><em\r\n                class=\"fa fa-2xl fa-times-circle\"></em></span>\r\n\r\n    </div>\r\n    <div class=\"row \">\r\n        <div class=\"col-md-10\">\r\n            <p class=\"text-afrisureRed fn-22 fw-600  \">{{data.element?.pZEndorsementType}}\r\n                {{data.element?.endorsementNumber ? ( '(' + data.element?.endorsementNumber + ')' ): '' }} </p>\r\n        </div>\r\n\r\n    </div>\r\n    <hr class=\"text-hr my-2 mt-2\">\r\n    <form>\r\n        <h4 class=\"text-center\"></h4>\r\n        <div class=\"table-responsive\" [hidden]=\"data.changes.length==0\">\r\n            <table mat-table [dataSource]=\"data.changes\" class=\"mat-elevation-z8 commonTable mt-3\">\r\n                <!-- S.No Column -->\r\n                <ng-container matColumnDef=\"S.No\">\r\n                    <th mat-header-cell *matHeaderCellDef class=\"text-center\">{{ 'S.No' | translate }}</th>\r\n                    <td mat-cell *matCellDef=\"let element; let i = index\" class=\"text-center\">{{ i + 1 }}</td>\r\n                </ng-container>\r\n\r\n\r\n                <ng-container matColumnDef=\"pZEndorsementType\">\r\n                    <th mat-header-cell *matHeaderCellDef class=\"text-center\">\r\n                        {{ 'endorsementType' | translate }}\r\n\r\n                    </th>\r\n                    <td mat-cell *matCellDef=\"let element\">\r\n                        {{ element.pZEndorsementType }}</td>\r\n                </ng-container>\r\n\r\n                <ng-container matColumnDef=\"sServiceAmount\">\r\n                    <th mat-header-cell *matHeaderCellDef class=\"text-center\">\r\n                        <span>{{ 'amount' | translate }}</span>\r\n\r\n                    </th>\r\n                    <td mat-cell *matCellDef=\"let element\" class=\"text-right\">{{ element.sServiceAmount }}</td>\r\n                </ng-container>\r\n                <tr mat-header-row *matHeaderRowDef=\"['pZEndorsementType','sServiceAmount']\"></tr>\r\n                <tr mat-row *matRowDef=\"let row; columns: ['pZEndorsementType','sServiceAmount'];\"></tr>\r\n            </table>\r\n\r\n        </div>\r\n        <div class=\"d-sm-block mt-2 alert alert-danger text-center\" *ngIf=\"data.changes.length==0\">\r\n            <p class=\"alertmsg mb-1\">{{\"no_data_found\"|translate}}</p>\r\n        </div>\r\n        <div class=\"text-center\" *ngIf=\"data.changes.length != 0\">\r\n            <button class=\"btn btnNewCancel m-1\" type=\"button\" (click)=\"close()\">{{'Cancel'|translate}}</button>\r\n        </div>\r\n    </form>\r\n</div>\r\n<div *ngIf=\"data.isDeleteCommentForm\">\r\n    <div class=\"col-12 \">\r\n        <form [formGroup]=\"deleteCommentForm\">\r\n            <h3 class=\"my-2 text-center\">Are you sure you want to delete {{data.taxName}}</h3>\r\n\r\n            <div class=\"col-md-12 col-lg-12 col-xl-12 col-xs-12 col-sm-12 row mb-2 mt-3\">\r\n                <div class=\"col-12 col-md-4 col-form-div text-right mb-2\">\r\n                    <strong>{{'Comments' |translate}}<span class=\"text-danger\">*</span>&nbsp;&nbsp;:</strong>\r\n                </div>\r\n                <div class=\"col-12 col-md-8 mb-2 \">\r\n                    <textarea class=\"form-control\" formControlName=\"comment\" placeholder=\"{{'Comments' |translate}}\"\r\n                        col=\"100\" row=\"100\"></textarea>\r\n                    <span class=\"text-danger\"\r\n                        *ngIf=\"deleteCommentFormSubmitted && deleteCommentForm.get('comment')?.hasError('required')\">\r\n                        <span>\r\n                            {{'Enter_commentsRequired'|translate}}\r\n                        </span>\r\n                    </span>\r\n                </div>\r\n            </div>\r\n            <div class=\"text-center\">\r\n                <button class=\"btn btnreset m-2\" type=\"button\" (click)=\"onCancel()\"><em class=\"fa fa-times fa-fw\"></em>\r\n                    {{'No' |translate}}</button>\r\n                <button class=\"btn btnc m-2\" type=\"submit\" (click)=\"submitDeleteCommentForm()\"><em\r\n                        class=\"fa fa-check fa-fw\"></em> {{'Yes' | translate}}</button>\r\n            </div>\r\n\r\n        </form>\r\n    </div>\r\n</div>\r\n<div *ngIf=\"data.isNotEligible\">\r\n    <form>\r\n        <div class=\"float-right\">\r\n            <button class=\"btn btn-cancel btn-sm \" (click)=\"close()\" title=\"{{'Close' | translate}}\"><em\r\n                    class=\"fa fa-times\"></em></button>&nbsp;\r\n        </div>\r\n        <h3 class=\"text-center title-text\">{{data.element?.productUniqueName}}</h3>\r\n        <div *ngFor=\"let key of  data.uniqueIdentifierValue\" class=\"row mb-2 \">\r\n            <div class=\"font-weight-bold\"\r\n                [ngClass]=\"{'col-md-6 col-sm-6 ': true, 'text-right': isDesktop(), ' col-xs-6': true, 'text-left': isMobile()}\">\r\n                {{data.getUniqueParameter[key] | translate}}&nbsp;&nbsp;&nbsp;:</div>\r\n            <div class=\" col-md-6  col-sm-6 col-xs-6 text-left\" [ngClass]=\"{'p-0': isDesktop(),'pl-1': isMobile()}\">\r\n                {{ getRecordValue(key)||'-' }}\r\n            </div>\r\n        </div>\r\n        <div class=\"d-flex mt-3 reasonBox mb-0\" *ngIf=\"data.changes && data.changes.length != 0\">\r\n            <ul class=\"mb-0\">\r\n                <li *ngFor=\"let change of data.changes\"> {{change.reasonTextForNotBeingEligible}} </li>\r\n            </ul>\r\n        </div>\r\n\r\n\r\n        <div class=\"\" [hidden]=\"data?.changes?.length==0\">\r\n\r\n        </div>\r\n        <div class=\"text-center mt-3\">\r\n            <button class=\"btn btn-cancel btn-sm m-1\" type=\"button\" (click)=\"close()\"><em\r\n                    class=\"fa fa-times-circle\"></em> {{'Cancel'|translate}}</button>\r\n        </div>\r\n    </form>\r\n</div>\r\n<div *ngIf=\"data.mergeQuote==true\">\r\n    <div class=\"col-12 text-center\">\r\n        <div class=\"text-danger m-2\">\r\n            <em class=\"fa fa-exclamation-triangle font-size-25px\"></em>\r\n        </div>\r\n        <div class=\"\" *ngFor=\"let message of data.errors\">\r\n            <p class=\"text-danger\" innerHtml=\"{{message}}\"></p>\r\n        </div>\r\n\r\n        <div class=\"\" *ngIf=\"data.trnID != null\">\r\n            <h6 class=\"text-center\"> Transaction Reference Number is <strong>{{trnID}}</strong> </h6>\r\n        </div>\r\n        <button class=\"btn btnreset btnc\" (click)=\"close()\"><em class=\"fa fa-thumbs-up fa-fw\"></em>\r\n            {{'ok'|translate}}</button>\r\n    </div>\r\n</div>\r\n<div class=\"\" *ngIf=\"data.isConfirmWithDate\">\r\n    <h2 class=\"text-afrisureRed text-center\">Confirm Delete</h2>\r\n    <div class=\" mb-3\">\r\n\r\n        <mat-form-field class=\"input-wrapper\" floatLabel=\"always\">\r\n            <label>\r\n                <mat-label for=\"date\">\r\n                    <span class=\"\">{{ 'Select Date' | translate}}</span>\r\n                    <span class=\"required-icon\">*</span>\r\n                </mat-label>\r\n            </label>\r\n            <input matInput (click)=\"picker.open()\" [matDatepicker]=\"picker\" placeholder=\"Choose a date\" [min]=\"minDate\"\r\n                [max]=\"maxDate\" [(ngModel)]=\"selectedDate\">\r\n            <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n            <mat-datepicker #picker></mat-datepicker>\r\n        </mat-form-field>\r\n    </div>\r\n    <div class=\"mb-3\">\r\n        <mat-checkbox [(ngModel)]=\"agreedToDelete\">I agree to delete</mat-checkbox>\r\n    </div>\r\n    <div class=\"text-center my-2\">\r\n        <button class=\"btn btn-cancel mx-1\" (click)=\"onCancel()\">Cancel</button>\r\n        <button class=\"btn btnc mx-1\" [disabled]=\"!selectedDate  || !agreedToDelete\"\r\n            (click)=\"onConfirm()\">Confirm</button>\r\n    </div>\r\n</div>\r\n\r\n<div *ngIf=\"data.policyFormErr\">\r\n    <div class=\"col-12\">\r\n        <div class=\" text-center text-danger m-2\">\r\n            <em class=\"fa fa-exclamation-triangle font-size-25px\"></em>\r\n        </div>\r\n        <ul class=\"text-danger\">\r\n            <li class=\"text-danger\" *ngFor=\"let message of data.errors\" innerHtml=\"{{message.errorText}}\"></li>\r\n        </ul>\r\n        <div class=\" text-center\">\r\n            <button class=\"btn btnreset btnc\" (click)=\"close()\"><em class=\"fa fa-thumbs-up fa-fw\"></em>\r\n                {{'ok'|translate}}</button>\r\n        </div>\r\n\r\n    </div>\r\n</div>\r\n\r\n<div *ngIf=\"data.confirmMDCreation\">\r\n    <div class=\"col-12 text-center\">\r\n        <p [innerHTML]=\"data.errorMessage\"></p>\r\n        <button class=\"btn btnreset m-2\" (click)=\"noButtonMD()\"><em class=\"fa fa-times fa-fw\"></em> {{'No' |\r\n            translate}}</button>\r\n        <button class=\"btn btnc m-2\" (click)=\"yesButtonMD()\"><em class=\"fa fa-check fa-fw\"></em> {{'Yes' |\r\n            translate}}</button>\r\n    </div>\r\n</div>\r\n\r\n<div *ngIf=\"data.mDResponse\">\r\n    <div class=\"col-12 text-center\">\r\n        <p class=\"text-center\"> <strong>Reference ID : {{data.transactionRef}}</strong> </p>\r\n        <p [innerHTML]=\"data.errorMessage\"></p>\r\n        <button class=\"btn btnc m-2\" (click)=\"yesButtonMD()\"><em class=\"fa fa-check fa-fw\"></em> {{'OK' |\r\n            translate}}</button>\r\n    </div>\r\n</div>\r\n\r\n<div *ngIf=\"data.isMissingData\">\r\n    <form>\r\n        <div class=\"text-center\">\r\n            <h5>{{'missingDataTitle' | translate}}</h5>\r\n        </div>\r\n        <div class=\"mt-3 reasonBox\" *ngIf=\"data.changes && data.changes.length != 0\">\r\n            <ul class=\"mb-0\">\r\n                <li *ngFor=\"let change of data.changes\"> {{change.errorMessage}} </li>\r\n            </ul>\r\n        </div>\r\n\r\n        <div class=\"text-center mt-3\">\r\n            <button class=\"btn btn-cancel btn-sm m-1\" type=\"button\" (click)=\"close()\"><em\r\n                    class=\"fa fa-times-circle\"></em> {{'Cancel'|translate}}</button>\r\n        </div>\r\n    </form>\r\n</div>\r\n<div *ngIf=\"data.askingForSelect==true\">\r\n    <div class=\"col-12 text-center\">\r\n        <div class=\"text-afrisureRed m-2\">\r\n            <em class=\"fa fa-info-circle font-size-25px\"></em>\r\n        </div>\r\n        <p class=\"\" innerHtml=\"{{textMessage}}\"></p>\r\n\r\n        <button class=\"btn btnreset btn-sm btnc\" (click)=\"close()\"><em class=\"fa fa-thumbs-up fa-fw\"></em>\r\n            {{'ok'|translate}}</button>\r\n    </div>\r\n</div>\r\n<div *ngIf=\"data.buyPolicyYesorNo\">\r\n    <div class=\"float-right\">\r\n        <span class=\"\" (click)=\"closeNull()\" title=\"{{'Close' | translate}}\">\r\n            <em class=\"fa fa-times-circle font-size-large\"></em>\r\n        </span>\r\n    </div>\r\n\r\n    <div class=\"col-12 text-center mt-4\">\r\n        <p [innerHTML]=\"data.errorMessage\"></p>\r\n        <button class=\"btn btnreset m-2\" (click)=\"close()\"><em class=\"fa fa-times fa-fw\"></em> {{'No' |\r\n            translate}}</button>\r\n        <button class=\"btn btnc m-2\" (click)=\"yes()\"><em class=\"fa fa-check fa-fw\"></em> {{'Yes' | translate}}</button>\r\n\r\n    </div>\r\n</div>\r\n<div *ngIf=\"data.isRejectClaim\">\r\n    <div class=\"col-12 \">\r\n        <div class=\"text-danger m-2 text-center\">\r\n            <em class=\"fa fa-exclamation-triangle font-size-25px\"></em>\r\n        </div>\r\n\r\n        <form [formGroup]=\"deleteCommentForm\">\r\n            <h3 class=\"my-2 text-center\">Are you sure you want to reject?</h3>\r\n\r\n            <div class=\"col-md-12 col-lg-12 col-xl-12 col-xs-12 col-sm-12 row mb-2 mt-3\">\r\n                <div class=\"col-12 col-md-4 col-form-div text-right mb-2\">\r\n                    <strong>{{'Comments' |translate}}<span class=\"text-danger\">*</span>&nbsp;&nbsp;:</strong>\r\n                </div>\r\n                <div class=\"col-12 col-md-8 mb-2 \">\r\n                    <textarea class=\"form-control\" formControlName=\"comment\" placeholder=\"{{'Comments' |translate}}\"\r\n                        col=\"100\" row=\"100\"></textarea>\r\n                    <span class=\"text-danger\"\r\n                        *ngIf=\"deleteCommentFormSubmitted && deleteCommentForm.get('comment')?.hasError('required')\">\r\n                        <span>\r\n                            {{'Enter_commentsRequired'|translate}}\r\n                        </span>\r\n                    </span>\r\n                </div>\r\n            </div>\r\n            <div class=\"text-center\">\r\n                <button class=\"btn btnreset m-2\" type=\"button\" (click)=\"onCancel()\"><em class=\"fa fa-times fa-fw\"></em>\r\n                    {{'No' |translate}}</button>\r\n                <button class=\"btn btnc m-2\" type=\"submit\" (click)=\"submitDeleteCommentForm()\"><em\r\n                        class=\"fa fa-check fa-fw\"></em> {{'Yes' | translate}}</button>\r\n            </div>\r\n\r\n        </form>\r\n    </div>\r\n</div>\r\n\r\n\r\n<div *ngIf=\"data.isProposalNotEligible\">\r\n    <form>\r\n        <div class=\"text-center\">\r\n            <h5>{{'Not Eligible Reasons' | translate}}</h5>\r\n        </div>\r\n        <div class=\"mt-3 reasonBox\" *ngIf=\"data.getAllNotEligibleReasons && data.getAllNotEligibleReasons.length != 0\">\r\n\r\n            <ul class=\"text-danger mb-0\" [hidden]=\"data?.getAllNotEligibleReasons?.length==0\"\r\n                *ngFor=\"let item of data?.getAllNotEligibleReasons\">\r\n                <li>{{item.reasonTextForNotBeingEligible}} <span\r\n                        class=\"text-danger\">{{item.reasonCodeForNotBeingEligible ? ' - ' +\r\n                        item.reasonCodeForNotBeingEligible:''}}</span> </li>\r\n            </ul>\r\n        </div>\r\n\r\n        <div class=\"text-center mt-3\">\r\n            <button class=\"btn btn-cancel btn-sm m-1\" type=\"button\" (click)=\"close()\"><em class=\"fa fa-thumbs-up\"></em>\r\n                {{'ok'|translate}}</button>\r\n        </div>\r\n    </form>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n// import { MatDialogComponent } from '../components/dialog-box/mat-dialog/mat-dialog.component';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { LoaderService } from './loader.service';\r\nimport { MatDialogComponent } from '../components/mat-dialog/mat-dialog.component';\r\n// import { loaderWithContentService } from './loaderWithContent.service';\r\n// import { CalculatorLoaderService } from './calculator-loader.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CommonService {\r\n  private isCompletedMain = new BehaviorSubject<any>({ isCompleted: false, index: -1 });\r\n  isCompleted = this.isCompletedMain.asObservable();\r\n  constructor(\r\n    private dialog: MatDialog,\r\n    private translate: TranslateService,\r\n    private loader: LoaderService,\r\n    // private loaderWithCnt : loaderWithContentService,\r\n    // private calculatorLoader : CalculatorLoaderService\r\n  ) { }\r\n\r\n  apiErrorMessageDialog(trnID: any, errorCode: string) {\r\n    let errorMessage = this.translate.instant(errorCode);\r\n    const dialogRef = this.dialog.open(MatDialogComponent, {\r\n      panelClass: ['dialog-responsive'],\r\n      disableClose: true,\r\n      data: { error: true, trnID, errorMessage }\r\n    });\r\n    dialogRef.afterClosed().subscribe();\r\n  }\r\n\r\n  handleStatusError(error: any): void {\r\n    this.loader.hide();\r\n    // this.loaderWithCnt.hide();\r\n    // this.calculatorLoader.hide();\r\n    if (error && error.error &&\r\n      error.error.rcode !== 401 &&\r\n      error.error.rcode !== 403 &&\r\n      error.error.rcode !== 404 &&\r\n      error.error.rcode !== 500\r\n    ) {\r\n      const errorCode = error.error.rmsg ? error.error.rmsg[0] ? error.error?.rmsg[0]?.errorCode : 'ERROR' : 'Cors';\r\n      let errorMessage = this.translate.instant(errorCode);\r\n\r\n      console.error('Error Receiving data:', error);\r\n      if (errorMessage == errorCode) {\r\n        errorMessage = this.translate.instant('customErrMsg');\r\n      }\r\n      if(errorMessage == 'Cors'){\r\n        errorMessage = this.translate.instant('corsMessage');\r\n      }\r\n      const _dialogRef = this.dialog.open(MatDialogComponent, {\r\n        width: '50VW',\r\n        disableClose: true,\r\n        data: {\r\n          panelClass: ['dialog-responsive'],\r\n          disableClose: true,\r\n          error: true, trnID: error.error.transactionRef, errorMessage\r\n        },\r\n      });\r\n\r\n      _dialogRef.afterClosed().subscribe();\r\n    }\r\n  }\r\n  handleRcodeError(data: any): void {\r\n    this.loader.hide();\r\n    // this.loaderWithCnt.hide();\r\n    // this.calculatorLoader.hide();\r\n    const errorCode = data.rmsg[0]?.errorCode ?? 'ERROR';\r\n    let errorMessage = this.translate.instant(errorCode);\r\n\r\n    console.error('Error Receiving data:', data);\r\n    if (errorMessage == errorCode) {\r\n      errorMessage = this.translate.instant('customErrMsg');\r\n    }\r\n  \r\n    const dialogRef = this.dialog.open(MatDialogComponent, {\r\n      panelClass: ['dialog-responsive'],\r\n      disableClose: true,\r\n      data: {\r\n        error: true,\r\n        trnID: data.transactionRef,\r\n        errorMessage,\r\n      },\r\n    });\r\n\r\n    dialogRef.afterClosed().subscribe();\r\n  }\r\n  checkStatusErrors(error: any) {\r\n    this.loader.hide();\r\n    // this.loaderWithCnt.hide();\r\n    // this.calculatorLoader.hide();\r\n    if (error && error.error &&\r\n      error.error.rcode !== 401 &&\r\n      error.error.rcode !== 403 &&\r\n      error.error.rcode !== 404 &&\r\n      error.error.rcode !== 500\r\n    ) {\r\n      this.handleStatusError(error);\r\n    }\r\n\r\n  }\r\n\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nimport { MatDialog } from '@angular/material/dialog';\r\n// import { LoaderService } from './loader.service';\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\nimport { DatePipe } from '@angular/common';\r\n// import moment from 'moment';\r\nimport { CommonService } from './common.service';\r\nimport { Observable } from 'rxjs';\r\nimport { RestService } from './rest.service';\r\nimport { LoaderService } from './loader.service';\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class FormlyApiService {\r\n    private restService: RestService;\r\n\r\n    masterData: any;\r\n    regex: any;\r\n    masterDataCate: any[] = [];\r\n    firstData: any[] = [];\r\n    isSection: boolean = false;\r\n    validCondition = true;\r\n    isRepeat: boolean = false;\r\n    isNormal: boolean = false;\r\n    wholeData: any;\r\n    valueChanges: boolean = false;\r\n    params: any;\r\n    categoryParams: any\r\n    form = new FormGroup({});\r\n    wholeDataCategory: any;\r\n    fields: any = [];\r\n    myFields: any;\r\n    myModel: any = {};\r\n    anymodel: any = {};\r\n    model: any = {};\r\n    formG !: FormGroup;\r\n    ngOnInit() {\r\n\r\n    }\r\n    constructor(\r\n        private translate: TranslateService,\r\n        private commonService: CommonService,\r\n        private apiService: RestService,\r\n        public dialog: MatDialog,\r\n        private loader: LoaderService,\r\n\r\n    ) {\r\n        this.restService = apiService;\r\n    }\r\n    first(data: any, model: any) {\r\n        this.isRepeat = false;\r\n        this.validCondition = true;\r\n        this.firstData = data\r\n        if (this.firstData[0]?.fieldGroup) {\r\n            //grid part\r\n            this.firstData[0].fieldGroup?.forEach((currentfields: any) => {\r\n\r\n\r\n                if (currentfields.hasOwnProperty('fieldGroup') && currentfields.hasOwnProperty('type')) {\r\n\r\n                    currentfields.fieldGroup?.forEach((step: any) => {\r\n                        // step.fieldGroup.forEach((stepper:any)=>{\r\n                        const gridIndex = step?.fieldGroup?.findIndex((a: any) => a?.templateOptions?.isOnloadAPICall && (a?.templateOptions?.categoryID == \"\" || a?.templateOptions?.categoryID == null || !a.templateOptions?.hasOwnProperty('categoryID')));\r\n                        let gridPart = step?.fieldGroup[gridIndex];\r\n                        if (gridPart) {\r\n                            this.getMasterData(gridPart);\r\n                        }\r\n                        const gridCateIndex = step?.fieldGroup?.findIndex((a: any) => a?.templateOptions?.isOnloadAPICall && a?.templateOptions?.categoryID != \"\" && a?.templateOptions?.categoryID != null);\r\n                        let gridPartCate = step?.fieldGroup[gridCateIndex];\r\n                        if (gridPartCate) {\r\n                            this.getMasterDataCate(gridPartCate);\r\n                        }\r\n                    })\r\n                    // })\r\n\r\n                }\r\n            })\r\n\r\n            let isMatchingItemsCalled = false;\r\n            for (const currentfields of this.firstData[0]?.fieldGroup) {\r\n                // if(currentfields.hasOwnProperty('templateOptions')&&)\r\n\r\n                let matchingItems: any[];\r\n                if (currentfields.hasOwnProperty('templateOptions') && currentfields.hasOwnProperty('fieldGroup') && !currentfields.hasOwnProperty('type')) {\r\n                    currentfields.fieldGroup?.forEach((a: any) => {\r\n                        if (a.type == 'grid' && a.templateOptions.hasOwnProperty('innerModel')) {\r\n                            if (a.templateOptions.label == \"Availability details\") {\r\n                                model[a.key] = a.templateOptions.innerModel.availabilityJson\r\n                            }\r\n                            else {\r\n                                model[a.key] = [\r\n                                    a.templateOptions.innerModel\r\n                                ]\r\n                            }\r\n                        }\r\n                    })\r\n                    currentfields.fieldGroup[0].fieldArray.fieldGroup.forEach((a: any) => {\r\n                        if (a.templateOptions?.isOnloadAPICall && (a.templateOptions?.categoryID == \"\" || a.templateOptions?.categoryID == null || !a.templateOptions?.hasOwnProperty('categoryID'))) {\r\n                            this.getMasterData(a);\r\n                        }\r\n                        else if (a.templateOptions?.isOnloadAPICall && a.templateOptions?.categoryID != \"\" && a.templateOptions?.categoryID != null) {\r\n                            this.getMasterDataCateGrid(a);\r\n                        }\r\n                    })\r\n\r\n\r\n                }\r\n                if (currentfields.hasOwnProperty('templateOptions') && !currentfields.hasOwnProperty('fieldGroup')) {\r\n                    if (!isMatchingItemsCalled) {\r\n                        matchingItems = this.firstData[0].fieldGroup\r\n                            .filter((a: any) => a.templateOptions?.isOnloadAPICall && (a.templateOptions?.categoryID === \"\" || a.templateOptions?.categoryID === null || !a.templateOptions?.hasOwnProperty('categoryID')));\r\n\r\n                        if (matchingItems.length != 0) {\r\n                            this.processMatchingItems(matchingItems);\r\n                            isMatchingItemsCalled = true;\r\n                        }\r\n\r\n                        const indexCat = this.firstData[0].fieldGroup.findIndex((a: any) => a.templateOptions?.isOnloadAPICall && a.templateOptions?.categoryID != \"\" && a.templateOptions?.categoryID != null);\r\n                        let normalPartCat = this.firstData[0].fieldGroup[indexCat];\r\n                        this.processNormalCase(normalPartCat);\r\n                        isMatchingItemsCalled = true;\r\n                    }\r\n                }\r\n                else if (!this.isSection && !currentfields.hasOwnProperty('templateOptions') && currentfields.hasOwnProperty('fieldGroup')) {\r\n                    matchingItems = currentfields.fieldGroup\r\n                        .filter((a: any) => a.templateOptions?.isOnloadAPICall && (a.templateOptions?.categoryID === \"\" || a.templateOptions?.categoryID === null || !a.templateOptions?.hasOwnProperty('categoryID')));\r\n\r\n                    if (matchingItems.length != 0) {\r\n                        this.processMatchingItems(matchingItems);\r\n                    }\r\n\r\n                    const secIndexCat = currentfields.fieldGroup.findIndex((a: any) => a.templateOptions?.isOnloadAPICall && a.templateOptions?.categoryID != \"\" && a.templateOptions?.categoryID != null);\r\n                    let sectionPartCat = currentfields.fieldGroup[secIndexCat];\r\n                    this.processNormalCase(sectionPartCat);\r\n                }\r\n                else if (!this.isRepeat && currentfields.type == 'repeat') {\r\n                    if (!currentfields.props?.hasOwnProperty('isAddBtn')) {\r\n                        currentfields.props = currentfields.props || {};\r\n                        currentfields.props.isAddBtn = false; // or set to any desired default value\r\n                    }\r\n                    currentfields.fieldArray.fieldGroup.forEach((a: any) => {\r\n                        if (a.templateOptions?.isOnloadAPICall && (a.templateOptions?.categoryID == \"\" || a.templateOptions?.categoryID == null || !a.templateOptions?.hasOwnProperty('categoryID'))) {\r\n                            this.getMasterData(a);\r\n                        }\r\n                        else if (a.templateOptions?.isOnloadAPICall && a.templateOptions?.categoryID != \"\" && a.templateOptions?.categoryID != null) {\r\n                            this.getMasterDataCate(a);\r\n                        }\r\n                    })\r\n                }\r\n                else if (!this.isRepeat && currentfields.hasOwnProperty('templateOptions') && currentfields.hasOwnProperty('fieldGroup') && !currentfields.hasOwnProperty('type')) {\r\n                    // const reaIndex = currentfields.fieldArray?.fieldGroup?.findIndex((a: any) => a.templateOptions?.isOnloadAPICall && a.templateOptions?.categoryID == \"\");\r\n                    matchingItems = currentfields.fieldGroup[0].fieldArray.fieldGroup?.filter((a: any) => a.templateOptions?.isOnloadAPICall && (a.templateOptions?.categoryID === \"\" || a.templateOptions?.categoryID === null || !a.templateOptions?.hasOwnProperty('categoryID')));\r\n\r\n                    if (matchingItems?.length != 0) {\r\n                        this.processMatchingItems(matchingItems);\r\n                    }\r\n                    const reaIndexCat = currentfields.fieldGroup[0].fieldArray.fieldGroup?.findIndex((a: any) => a.templateOptions?.isOnloadAPICall && a.templateOptions?.categoryID != \"\" && a.templateOptions?.categoryID != null);\r\n                    let repeatPartCat = currentfields.fieldGroup[0].fieldArray.fieldGroup[reaIndexCat];\r\n                    if (repeatPartCat) {\r\n                        this.getMasterDataCate(repeatPartCat);\r\n                        this.isRepeat = true;\r\n                    }\r\n                    else if (matchingItems == undefined) {\r\n                        this.isRepeat = false;\r\n                    }\r\n                    // if (this.isRepeat) {\r\n                    //   break;\r\n                    // }\r\n                }\r\n                //stepper in section part\r\n                if (currentfields.type == 'stepper') {\r\n                    currentfields.fieldGroup.forEach((s: any) => {\r\n                        s.fieldGroup.forEach((p: any) => {\r\n                            if (p.hasOwnProperty('fieldGroup')) {\r\n                                const stepIndex = p?.fieldGroup?.findIndex((a: any) => a.templateOptions?.isOnloadAPICall && (a.templateOptions?.categoryID == \"\" || a.templateOptions?.categoryID == null) || !a.templateOptions?.hasOwnProperty('categoryID'));\r\n                                let stepPart = p?.fieldGroup[stepIndex];\r\n                                if (stepPart) {\r\n                                    this.getMasterData(stepPart);\r\n                                }\r\n                                const stepIndexCat = p?.fieldGroup.findIndex((a: any) => a.templateOptions?.isOnloadAPICall && a.templateOptions?.categoryID != \"\" && a.templateOptions?.categoryID != null);\r\n                                let stepPartCat = p?.fieldGroup[stepIndexCat];\r\n                                if (stepPartCat) {\r\n                                    this.getMasterDataCate(stepPartCat);\r\n                                }\r\n                            }\r\n                        })\r\n                    })\r\n\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n\r\n    assignValuesToFieldOptions(field: any, data: any): void {\r\n        this.masterData = this.getPropertyValue(data, field.templateOptions.rObjData);\r\n        field.templateOptions.options = this.masterData;\r\n        console.log(\"fields\", field.templateOptions.options)\r\n    }\r\n\r\n\r\n    getMasterData(field: any) {\r\n        if (field?.templateOptions?.isOnloadAPICall == true && field?.templateOptions?.apiUrl != \"\") {\r\n            field.templateOptions['apiUrl']?.replace(\"%22\", \"\");\r\n            field.templateOptions['apiUrl']?.replace(\",\", \"\");\r\n            field.templateOptions['apiUrl']?.replace(/\",$/, \"\");\r\n            if (!field.templateOptions.isParameterNeed) {\r\n                this.params = {}\r\n            }\r\n            else {\r\n                // this.params={\r\n                //   [field.templateOptions.parameterKey]:field.templateOptions.parameterValue\r\n                // }\r\n                const parameter = field.templateOptions.parameter;\r\n                this.params = JSON.parse(parameter);\r\n            }\r\n            // let methodName: any;\r\n\r\n            type ApiServiceMethods = {\r\n                postData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postUATData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postProductConfigData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postCoreBaseData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n            };\r\n\r\n            let methodName: keyof ApiServiceMethods | undefined;\r\n\r\n            if (field?.templateOptions?.baseApiUrlType == 'base' || !field?.templateOptions?.hasOwnProperty('baseApiUrlType') || field?.templateOptions?.baseApiUrlType == null) {\r\n                methodName = 'postData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'uad') {\r\n                methodName = 'postUATData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'product_config') {\r\n                methodName = 'postProductConfigData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'core') {\r\n                methodName = 'postCoreBaseData'\r\n            }\r\n            if (methodName) {\r\n                this.apiService[methodName](this.params, field.templateOptions.apiUrl?.trim()).subscribe((data: any) => {\r\n                    if (data.rcode === 200) {\r\n                        this.wholeData = data;\r\n                        this.assignValuesToFieldOptions(field, this.wholeData);\r\n                    }\r\n                    else {\r\n                        this.commonService.handleRcodeError(data)\r\n                    }\r\n                },\r\n                    (error: any) => {\r\n                        this.commonService.handleStatusError(error);\r\n                    }\r\n                );\r\n            }\r\n        }\r\n    }\r\n    getMasterDataCate(field: any) {\r\n        if (field?.templateOptions?.isOnloadAPICall == true && field?.templateOptions?.apiUrl != \"\") {\r\n            field.templateOptions['apiUrl'].replace(\"%22\", \"\");\r\n            field.templateOptions['apiUrl'].replace(\",\", \"\");\r\n            field.templateOptions['apiUrl'].replace(/\",$/, \"\");\r\n            if (!field.templateOptions.isParameterNeed) {\r\n                this.categoryParams = {}\r\n            }\r\n            else {\r\n                // this.categoryParams={\r\n                //   [field.templateOptions.parameterKey]:field.templateOptions.parameterValue\r\n                // }\r\n                const parameter = field.templateOptions.parameter;\r\n                this.categoryParams = JSON.parse(parameter);\r\n            }\r\n\r\n\r\n\r\n            type ApiServiceMethods = {\r\n                postData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postUATData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postProductConfigData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postCoreBaseData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n            };\r\n\r\n            let methodName: keyof ApiServiceMethods | undefined;\r\n\r\n            if (field?.templateOptions?.baseApiUrlType == 'base' || !field?.templateOptions?.hasOwnProperty('baseApiUrlType') || field?.templateOptions?.baseApiUrlType == null) {\r\n                methodName = 'postData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'uad') {\r\n                methodName = 'postUATData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'product_config') {\r\n                methodName = 'postProductConfigData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'core') {\r\n                methodName = 'postCoreBaseData'\r\n            }\r\n            if (methodName) {\r\n                this.restService[methodName](this.categoryParams, field.templateOptions.apiUrl.trim()).subscribe((data: any) => {\r\n                    if (data.rcode === 200) {\r\n                        this.wholeDataCategory = data;\r\n                        // this.masterDataCate = this.getPropertyValue(data, field.templateOptions.rObjData);\r\n                    }\r\n                    else {\r\n                        this.commonService.handleRcodeError(data)\r\n                    }\r\n                },\r\n                    (error: any) => {\r\n                        this.commonService.handleStatusError(error);\r\n                    }\r\n                );\r\n            }\r\n        }\r\n    }\r\n    getMasterDataCateGrid(field: any) {\r\n        if (field?.templateOptions?.isOnloadAPICall == true && field?.templateOptions?.apiUrl != \"\") {\r\n            field.templateOptions['apiUrl'].replace(\"%22\", \"\");\r\n            field.templateOptions['apiUrl'].replace(\",\", \"\");\r\n            field.templateOptions['apiUrl'].replace(/\",$/, \"\");\r\n            if (!field.templateOptions.isParameterNeed) {\r\n                this.categoryParams = {}\r\n            }\r\n            else {\r\n                // this.categoryParams={\r\n                //   [field.templateOptions.parameterKey]:field.templateOptions.parameterValue\r\n                // }\r\n                const parameter = field.templateOptions.parameter;\r\n                this.categoryParams = JSON.parse(parameter);\r\n            }\r\n            // let methodName: any;\r\n\r\n            type ApiServiceMethods = {\r\n                postData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postUATData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postProductConfigData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postCoreBaseData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n            };\r\n\r\n            let methodName: keyof ApiServiceMethods | undefined;\r\n\r\n            if (field?.templateOptions?.baseApiUrlType == 'base' || !field?.templateOptions?.hasOwnProperty('baseApiUrlType') || field?.templateOptions?.baseApiUrlType == null) {\r\n                methodName = 'postData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'uad') {\r\n                methodName = 'postUATData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'product_config') {\r\n                methodName = 'postProductConfigData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'core') {\r\n                methodName = 'postCoreBaseData'\r\n            }\r\n            if (methodName) {\r\n                this.restService[methodName](this.categoryParams, field.templateOptions.apiUrl.trim()).subscribe((data) => {\r\n                    if (data.rcode === 200) {\r\n                        this.wholeDataCategory = data;\r\n                        // this.masterDataCate = this.getPropertyValue(data, field.templateOptions.rObjData);\r\n                        this.masterDataCate = this.getPropertyValue(this.wholeDataCategory, field.templateOptions.rObjData);\r\n                        this.filterDropdownData(field)\r\n                    }\r\n                    else {\r\n                        this.commonService.handleRcodeError(data)\r\n                    }\r\n                },\r\n                    (error: any) => {\r\n                        this.commonService.handleStatusError(error);\r\n                    }\r\n                );\r\n            }\r\n        }\r\n    }\r\n    translatePart(currentfields: any) {\r\n        if (currentfields.templateOptions) {\r\n            currentfields.templateOptions.label = this.translate?.instant(currentfields?.templateOptions?.label);\r\n            if (currentfields.templateOptions.required) {\r\n                currentfields.validation.messages.required = this.translate?.instant(currentfields.templateOptions.label) + this.translate?.instant('is_required');\r\n            }\r\n            if (currentfields.templateOptions.hasOwnProperty('pattern') && currentfields.validation?.messages?.pattern != null) {\r\n                currentfields.validation.messages.pattern = this.translate?.instant(currentfields.templateOptions.label) + this.translate?.instant('is_invalid');\r\n            }\r\n            if (currentfields.templateOptions.hasOwnProperty('minLength') && currentfields.validation?.messages?.minLength != null) {\r\n                currentfields.validation.messages.minLength = this.translate?.instant(currentfields.templateOptions.label) + this.translate?.instant('should_have_at_least') + currentfields.templateOptions.minLength + this.translate?.instant('characters');\r\n            }\r\n            if (currentfields.templateOptions.hasOwnProperty('maxLength') && currentfields.validation?.messages?.maxLength != null) {\r\n                currentfields.validation.messages.maxLength = this.translate?.instant(currentfields.templateOptions.label) + this.translate?.instant('should_not_exceed') + currentfields.templateOptions.maxLength + this.translate?.instant('characters');\r\n            }\r\n            if (currentfields.templateOptions.hasOwnProperty('tooltip')) {\r\n                if (!!currentfields.templateOptions.tooltip) {\r\n                    currentfields.templateOptions.tooltip = this.translate?.instant(currentfields.templateOptions.tooltip);\r\n                }\r\n            }\r\n            if (!currentfields.wrappers || currentfields.wrappers == null) {\r\n                currentfields.wrappers = [\"tooltip-icon\"];\r\n            }\r\n            if (currentfields?.templateOptions?.placeholder?.includes('Enter')) {\r\n                currentfields.templateOptions.placeholder = this.translate?.instant('enter') + ' ' + this.translate?.instant(currentfields.templateOptions.label)\r\n            }\r\n            if (currentfields?.templateOptions?.placeholder?.includes('Select')) {\r\n                currentfields.templateOptions.placeholder = this.translate?.instant('select') + ' ' + this.translate?.instant(currentfields.templateOptions.label)\r\n            }\r\n        }\r\n    }\r\n    getdata() {\r\n        // setTimeout(() => {\r\n        //   //this.loader.hide();\r\n        // },1000);\r\n        this.fields = this.firstData;\r\n        if (this.fields && this.fields[0] && this.fields[0].fieldGroup) {\r\n            setTimeout(() => {\r\n                this.fields[0].fieldGroup?.forEach((currentfields: any) => {\r\n                    if (currentfields?.props?.grid) {\r\n                        currentfields.fieldGroup[0].fieldArray.fieldGroup?.forEach((grid: any) => {\r\n                            // if (grid && grid?.templateOptions?.isOnloadAPICall) {\r\n                            //   // if (grid.templateOptions.categoryID != \"\"&&grid.templateOptions.categoryID != null) {\r\n                            //   //   this.masterDataCate = this.getPropertyValue(this.wholeDataCategory, grid.templateOptions.rObjData);\r\n                            //   //   this.filterDropdownData(grid)\r\n                            //   // }\r\n                            //   // else if (grid.templateOptions.categoryID == \"\"||grid.templateOptions.categoryID == null||!grid.templateOptions.hasOwnProperty('categoryID')) {\r\n                            //   //   this.masterData = this.getPropertyValue(this.wholeData, grid.templateOptions.rObjData);\r\n                            //   //   grid.templateOptions.options = this.masterData;\r\n                            //   // }\r\n                            // }\r\n                            if (grid && grid.type == \"datepicker\") {\r\n                                this.dateFormat(grid)\r\n                            }\r\n                        })\r\n\r\n                    }\r\n                    if (currentfields && !currentfields?.props?.grid && currentfields.hasOwnProperty('templateOptions') && currentfields.type != 'stepper' && currentfields.type != 'repeat' && currentfields?.wrappers[0] != 'panel') {\r\n                        this.translatePart(currentfields)\r\n                        if (currentfields?.expressionProperties && Object.keys(currentfields.expressionProperties).length > 0) {\r\n                            currentfields.templateOptions.expression = currentfields.expressionProperties\r\n                        }\r\n                        if (currentfields?.type === 'datepicker') {\r\n                            this.dateFormat(currentfields)\r\n                        }\r\n                        if (currentfields?.type === 'date-time-picker') {\r\n                            //this.formatDate(currentfields)\r\n                        }\r\n                        if (currentfields?.templateOptions?.isOnloadAPICall) {\r\n                            if (currentfields.templateOptions.categoryID != \"\" && currentfields.templateOptions.categoryID != null) {\r\n                                this.masterDataCate = this.getPropertyValue(this.wholeDataCategory, currentfields.templateOptions.rObjData);\r\n                                this.filterDropdownData(currentfields)\r\n                            }\r\n                            // else if (currentfields?.templateOptions.categoryID == \"\"||currentfields?.templateOptions.categoryID == null||currentfields?.templateOptions.hasOwnProperty('categoryID')) {\r\n                            //   this.masterData = this.getPropertyValue(this.wholeData, currentfields.templateOptions.rObjData);\r\n                            //   currentfields.templateOptions.options = this.masterData;\r\n                            // }\r\n                        }\r\n                        if (!currentfields?.templateOptions?.isOnloadAPICall && currentfields?.templateOptions?.hasOwnProperty('isOnloadAPICall')) {\r\n\r\n                            // if (currentfields.templateOptions.categoryID != \"\") {\r\n                            //   this.masterDataCate = this.getPropertyValue(this.wholeDataCategory, currentfields.templateOptions.rObjData);\r\n                            //   this.filterDropdownData(currentfields)\r\n                            // }\r\n\r\n                            // else if (currentfields?.templateOptions.categoryID == \"\") {\r\n                            //   this.masterData = this.getPropertyValue(this.wholeData, currentfields.templateOptions.rObjData);\r\n                            //   currentfields.templateOptions.options = this.masterData;\r\n                            // }\r\n                            let val = currentfields?.templateOptions.cascadingParentControl\r\n                            let parentField = this.fields[0].fieldGroup.find((a: any) => a.key == val);\r\n                            if (parentField) {\r\n                                if (parentField?.defaultValue != \"\" && parentField?.defaultValue != undefined && parentField?.defaultValue != null) {\r\n                                    this.hideClass(currentfields, parentField?.defaultValue)\r\n                                    this.cascadeApiCallEdit(currentfields, parentField?.defaultValue)\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                    }\r\n                    else if (currentfields?.wrappers[0] == 'panel') {\r\n                        currentfields.props.label = this.translate.instant(currentfields?.props?.label);\r\n\r\n                        currentfields.fieldGroup?.forEach((a: any) => {\r\n                            this.translatePart(a)\r\n                            if (a?.expressionProperties && Object.keys(a.expressionProperties).length > 0) {\r\n                                if (a.hasOwnProperty('templateOptions')) {\r\n                                    a.templateOptions.expression = a.expressionProperties\r\n                                }\r\n                            }\r\n                            if (a?.type === 'datepicker') {\r\n                                this.dateFormat(a)\r\n                            }\r\n                            if (a?.type === 'date-time-picker') {\r\n                                //this.formatDate(a)\r\n                            }\r\n                            if (a && a?.templateOptions?.isOnloadAPICall) {\r\n                                if (a.templateOptions.categoryID != \"\" && a.templateOptions.categoryID != null) {\r\n                                    this.masterDataCate = this.getPropertyValue(this.wholeDataCategory, a.templateOptions.rObjData);\r\n                                    this.filterDropdownData(a)\r\n                                }\r\n\r\n                                // else if (a?.templateOptions.categoryID == \"\"||a?.templateOptions.categoryID == null||a?.templateOptions.hasOwnProperty('categoryID')) {\r\n                                //   this.masterData = this.getPropertyValue(this.wholeData, a.templateOptions.rObjData);\r\n                                //   a.templateOptions.options = this.masterData;\r\n                                // }\r\n                            }\r\n                            if (!a?.templateOptions?.isOnloadAPICall && a?.templateOptions?.hasOwnProperty('isOnloadAPICall')) {\r\n                                // if (currentfields.templateOptions.categoryID != \"\") {\r\n                                //   this.masterDataCate = this.getPropertyValue(this.wholeDataCategory, currentfields.templateOptions.rObjData);\r\n                                //   this.filterDropdownData(currentfields)\r\n                                // }\r\n\r\n                                // else if (currentfields?.templateOptions.categoryID == \"\") {\r\n                                //   this.masterData = this.getPropertyValue(this.wholeData, currentfields.templateOptions.rObjData);\r\n                                //   currentfields.templateOptions.options = this.masterData;\r\n                                // }\r\n                                let val = a?.templateOptions.cascadingParentControl\r\n                                let parentField = currentfields.fieldGroup.find((a: any) => a.key == val);\r\n                                if (parentField) {\r\n                                    if (parentField?.defaultValue != \"\" && parentField?.defaultValue != undefined && parentField?.defaultValue != null) {\r\n                                        this.hideClass(a, parentField?.defaultValue)\r\n                                        this.cascadeApiCallEdit(a, parentField?.defaultValue)\r\n                                    }\r\n                                }\r\n                            }\r\n                        });\r\n                    }\r\n                    else if (currentfields.type == 'stepper') {\r\n                        currentfields.fieldGroup.forEach((step: any) => {\r\n                            step.fieldGroup.forEach((stepper: any) => {\r\n                                if (!stepper.hasOwnProperty('fieldGroup')) {\r\n                                    this.translatePart(stepper)\r\n                                    if (stepper?.type === 'datepicker') {\r\n                                        this.dateFormat(stepper)\r\n                                    }\r\n                                    if (stepper && stepper?.templateOptions?.isOnloadAPICall) {\r\n                                        if (stepper.templateOptions.categoryID != \"\" && stepper.templateOptions.categoryID != null) {\r\n                                            this.masterDataCate = this.getPropertyValue(this.wholeDataCategory, stepper.templateOptions.rObjData);\r\n                                            this.filterDropdownData(stepper)\r\n                                        }\r\n                                        else if (stepper?.templateOptions.categoryID == \"\" || stepper?.templateOptions.categoryID == null || stepper?.templateOptions.hasOwnProperty('categoryID')) {\r\n                                            this.masterData = this.getPropertyValue(this.wholeData, stepper.templateOptions.rObjData);\r\n                                            stepper.templateOptions.options = this.masterData;\r\n                                        }\r\n                                    }\r\n                                }\r\n                                else if (stepper.hasOwnProperty('fieldGroup')) {\r\n                                    stepper.fieldGroup.forEach((steps: any) => {\r\n                                        this.translatePart(steps)\r\n                                        if (steps?.type === 'datepicker') {\r\n                                            this.dateFormat(steps)\r\n                                        }\r\n                                        if (steps && steps?.templateOptions?.isOnloadAPICall) {\r\n                                            if (steps.templateOptions.categoryID != \"\" && steps.templateOptions.categoryID != null) {\r\n                                                this.masterDataCate = this.getPropertyValue(this.wholeDataCategory, steps.templateOptions.rObjData);\r\n                                                this.filterDropdownData(steps)\r\n                                            }\r\n                                            else if (steps?.templateOptions.categoryID == \"\" || steps?.templateOptions.categoryID == null || steps?.templateOptions.hasOwnProperty('categoryID')) {\r\n                                                this.masterData = this.getPropertyValue(this.wholeData, steps.templateOptions.rObjData);\r\n                                                steps.templateOptions.options = this.masterData;\r\n                                            }\r\n                                        }\r\n                                    })\r\n                                }\r\n                            })\r\n                        })\r\n                    }\r\n                    else if (currentfields.type == 'repeat') {\r\n\r\n                        // Handle repeat fields\r\n                        currentfields.props.label = this.translate?.instant(currentfields?.props?.label);\r\n                        currentfields.fieldGroup.forEach((faField: any, index: number) => {\r\n                            faField.fieldGroup.forEach((b: any) => {\r\n                                this.translatePart(b);\r\n                                if (b?.expressionProperties && Object.keys(b.expressionProperties).length > 0) {\r\n                                    b.hideProp = b.expressionProperties.hide\r\n                                    b.expressionProperties.hide = \"true\"\r\n                                }\r\n                                if (b?.type === 'datepicker') {\r\n                                    this.dateFormat(b)\r\n                                }\r\n                                if (b && b?.templateOptions?.isOnloadAPICall) {\r\n                                    if (b.templateOptions.categoryID != \"\" && b.templateOptions.categoryID != null) {\r\n                                        this.masterDataCate = this.getPropertyValue(this.wholeDataCategory, b.templateOptions.rObjData);\r\n                                        this.filterDropdownData(b)\r\n                                    }\r\n\r\n                                    // else if (b.templateOptions.categoryID == \"\"||b.templateOptions.categoryID == null||!b.templateOptions.hasOwnProperty('categoryID')) {\r\n                                    //   this.masterData = this.getPropertyValue(this.wholeData, b.templateOptions.rObjData);\r\n                                    //   b.templateOptions.options = this.masterData;\r\n                                    // }\r\n                                }\r\n                                if (!b?.templateOptions?.isOnloadAPICall) {\r\n                                    let val = b?.templateOptions.cascadingParentControl\r\n                                    let parentField = currentfields.fieldArray?.fieldGroup.find((a: any) => a.key == val);\r\n                                    if (parentField) {\r\n                                        if (parentField?.defaultValue != \"\" && parentField?.defaultValue != undefined && parentField?.defaultValue != null) {\r\n                                            this.hideClass(b, parentField?.defaultValue)\r\n                                            this.cascadeApiCallEdit(b, parentField?.defaultValue)\r\n                                        }\r\n                                    }\r\n                                }\r\n                            })\r\n                        })\r\n                    }\r\n                });\r\n            });\r\n\r\n            setTimeout(() => {\r\n                this.loader.hide() \r\n            }, 500);\r\n        }\r\n        return this.fields\r\n\r\n    }\r\n    hideClass(currentField: any, selectedValue: any) {\r\n        if (currentField.templateOptions.hasOwnProperty('expression')) {\r\n\r\n\r\n            if (currentField?.templateOptions?.expression?.className?.includes(\"'\")) {\r\n                this.regex = /model\\.(\\w+)\\s*!==\\s*'([^']+)'/;\r\n            }\r\n            else if (!currentField?.templateOptions?.expression?.className?.includes(\"'\")) {\r\n                this.regex = /model\\.(\\w+)\\s*!==\\s*([^'\"\\s]+)?/;\r\n            }\r\n            let data = currentField.templateOptions?.expression?.className\r\n            let matches = this.regex.exec(data);\r\n            if (matches && matches.length === 3) {\r\n                currentField.hideName = matches[1];\r\n                currentField.hideValue = matches[2];\r\n            }\r\n            if (selectedValue == currentField.hideValue) {\r\n                currentField.className = \"col-md-12\"\r\n\r\n\r\n            }\r\n            else {\r\n                currentField.className = \"d-none\"\r\n            }\r\n        }\r\n    }\r\n    dateChange(type: any, count: any) {\r\n        const dateObj = new Date();\r\n        if (type?.includes('date')) {\r\n            dateObj.setDate(dateObj.getDate() + (type?.includes('forward') ? count : -count));\r\n        }\r\n        else if (type?.includes('month')) {\r\n            dateObj.setMonth(dateObj.getMonth() + (type?.includes('forward') ? count : -count));\r\n        }\r\n        else if (type?.includes('year')) {\r\n            dateObj.setFullYear(dateObj.getFullYear() + (type?.includes('forward') ? count : -count));\r\n        }\r\n        return dateObj;\r\n    }\r\n    dateFormat(currentField: any) {\r\n        if (currentField?.templateOptions?.dateMinType != null) {\r\n            currentField.templateOptions.datepickerOptions.min = this.dateChange(currentField?.templateOptions.dateMinType, parseInt(currentField.templateOptions.countMin))\r\n        }\r\n        if (currentField?.templateOptions?.dateMaxType != null) {\r\n            currentField.templateOptions.datepickerOptions.max = this.dateChange(currentField.templateOptions.dateMaxType, parseInt(currentField.templateOptions.countMax))\r\n        }\r\n    }\r\n    filterDropdownData(field: any) {\r\n        const categoryID = field.templateOptions?.['categoryID'];\r\n        if (categoryID && field.templateOptions?.['isOnloadAPICall']) {\r\n            const filteredData = this.masterDataCate?.filter((item: any) => item.mdCategoryID === categoryID);\r\n            if (field && field.templateOptions && field.templateOptions?.options) {\r\n                field.templateOptions.options = filteredData;\r\n            }\r\n        }\r\n    }\r\n    getPropertyValue(obj: any, propertyPath: string): any {\r\n        if (propertyPath && obj) {\r\n            const properties = propertyPath.split('.');\r\n            for (const prop of properties) {\r\n                if (prop in obj) {\r\n                    obj = obj[prop];\r\n                } else {\r\n                    return null; // Property not found\r\n                }\r\n            }\r\n\r\n            return obj;\r\n        }\r\n    }\r\n    processNormalCase(normalPart: any): void {\r\n        if (normalPart) {\r\n            this.getMasterDataCate(normalPart);\r\n            this.isNormal = true;\r\n        } else {\r\n            this.isNormal = false;\r\n        }\r\n    }\r\n\r\n    processRepeatCase(repeatPart: any): void {\r\n        if (repeatPart) {\r\n            this.getMasterData(repeatPart);\r\n            this.isRepeat = true;\r\n        } else {\r\n            this.isRepeat = false;\r\n        }\r\n    }\r\n    processMatchingItems(matchingItems: any[]): void {\r\n        // Check if all items have the same apiUrl\r\n        const sameApiUrl = matchingItems?.every((item, index, array) =>\r\n            index === 0 || (item?.templateOptions?.apiUrl === array[index - 1]?.templateOptions?.apiUrl && item?.templateOptions?.rObj === array[index - 1]?.templateOptions?.rObjData)\r\n        );\r\n\r\n        if (sameApiUrl) {\r\n            // Call getMasterData only once\r\n            this.getMasterData(matchingItems[0]);\r\n        } else {\r\n            // If apiUrl is not the same for all items, call getMasterData for each item\r\n            matchingItems?.forEach((item: any) => {\r\n                this.getMasterData(item);\r\n            });\r\n        }\r\n    }\r\n\r\n    validations(fields: any, form: FormGroup) {\r\n        this.form = form\r\n        this.fields = fields;\r\n        setTimeout(() => {\r\n            for (const fieldGroup of this.fields) {\r\n                // Handle nested field groups\r\n                fieldGroup.fieldGroup?.forEach((a: any) => {\r\n                    if (a.fieldGroup && a.type != 'repeat') {\r\n                        a.fieldGroup.forEach((a: any) => {\r\n                            this.clearValidation(a)\r\n                            if (a?.expressionProperties && Object.keys(a.expressionProperties).length > 0) {\r\n                                const className = a.expressionProperties?.className\r\n\r\n                                // Split the className string by '?'\r\n                                const parts = className?.split('?');\r\n\r\n                                // parts[0] will contain the condition part before '?'\r\n                                if (parts) {\r\n                                    const conditionPart = parts[0]?.trim();\r\n                                    if (conditionPart?.includes(\"'\")) {\r\n                                        this.regex = /model\\.(\\w+)\\s*!==\\s*'([^']+)'/;\r\n                                    }\r\n                                    else if (!conditionPart?.includes(\"'\")) {\r\n                                        this.regex = /model\\.(\\w+)\\s*!==\\s*([^'\"\\s]+)?/;\r\n                                    }\r\n\r\n                                }\r\n\r\n\r\n\r\n                                let data = a.expressionProperties?.className\r\n                                let matches = this.regex?.exec(data);\r\n                                if (matches && matches.length === 3) {\r\n                                    a.hideName = matches[1];\r\n                                    a.hideValue = matches[2];\r\n                                }\r\n\r\n                                const changeFieldControl = this.form?.get(a.hideName) as FormControl;\r\n\r\n                                if (changeFieldControl) {\r\n\r\n                                    changeFieldControl.valueChanges.subscribe((selectedValue: any) => {\r\n                                        if (this.validCondition) {\r\n                                            if (selectedValue) {\r\n                                                if (selectedValue == a.hideValue) {\r\n                                                    const fieldControl: any = this.form?.get(a.key) as FormControl;\r\n                                                    fieldControl.setValue(null);\r\n                                                    a.defaultValue = null;\r\n                                                    a.templateOptions?.customControl?.setValue(null)\r\n                                                    fieldControl.defaultValue = null;\r\n                                                    if (fieldControl) {\r\n                                                        if (fieldControl?.isValidation == true) {\r\n                                                            fieldControl.isValidation = false;\r\n                                                            fieldControl.addValidators(Validators.required);\r\n                                                            fieldControl.updateValueAndValidity();\r\n                                                        }\r\n                                                    }\r\n                                                }\r\n                                                else {\r\n                                                    const fieldNullControl: any = this.form?.get(a.key) as FormControl;\r\n                                                    fieldNullControl.setValue(null);\r\n                                                    a.defaultValue = null;\r\n                                                    fieldNullControl.defaultValue = null;\r\n                                                    a.templateOptions?.customControl?.setValue(null)\r\n                                                    if (fieldNullControl) {\r\n                                                        if (fieldNullControl?.errors?.required) {\r\n                                                            fieldNullControl.isValidation = true;\r\n                                                            fieldNullControl.clearValidators();\r\n                                                            // fieldNullControl.setValue(null);\r\n                                                            // a.defaultValue=null;\r\n                                                            // fieldNullControl.defaultValue=null\r\n                                                            fieldNullControl.updateValueAndValidity();\r\n\r\n                                                        }\r\n\r\n                                                    }\r\n                                                }\r\n                                            }\r\n                                        }\r\n                                    });\r\n                                }\r\n                            }\r\n                        })\r\n                    }\r\n                    else if ((!a.hasOwnProperty('fieldGroup') && a.hasOwnProperty('templateOptions')) || a.type == 'repeat') {\r\n                        this.clearValidation(a)\r\n                        if (a?.expressionProperties && Object.keys(a.expressionProperties).length > 0) {\r\n                            const className = a.expressionProperties?.className\r\n\r\n                            // Split the className string by '?'\r\n                            const parts = className?.split('?');\r\n\r\n                            // parts[0] will contain the condition part before '?'\r\n                            if (parts) {\r\n                                const conditionPart = parts[0]?.trim();\r\n                                if (conditionPart?.includes(\"'\")) {\r\n                                    this.regex = /model\\.(\\w+)\\s*!==\\s*'([^']+)'/;\r\n                                }\r\n                                else if (!conditionPart?.includes(\"'\")) {\r\n                                    this.regex = /model\\.(\\w+)\\s*!==\\s*([^'\"\\s]+)?/;\r\n                                }\r\n\r\n                            }\r\n\r\n\r\n\r\n                            let data = a.expressionProperties?.className\r\n                            let matches = this.regex?.exec(data);\r\n                            if (matches && matches.length === 3) {\r\n                                a.hideName = matches[1];\r\n                                a.hideValue = matches[2];\r\n                            }\r\n\r\n                            const changeFieldControl = this.form?.get(a.hideName) as FormControl;\r\n\r\n                            if (changeFieldControl) {\r\n\r\n                                changeFieldControl.valueChanges.subscribe((selectedValue: any) => {\r\n                                    if (this.validCondition) {\r\n                                        if (selectedValue) {\r\n                                            if (selectedValue == a.hideValue) {\r\n                                                const fieldControl: any = this.form?.get(a.key) as FormControl;\r\n                                                fieldControl.setValue(null);\r\n                                                a.defaultValue = null;\r\n                                                a.templateOptions?.customControl?.setValue(null)\r\n                                                fieldControl.defaultValue = null;\r\n                                                if (fieldControl) {\r\n                                                    if (fieldControl?.isValidation == true) {\r\n                                                        fieldControl.isValidation = false;\r\n                                                        fieldControl.addValidators(Validators.required);\r\n                                                        fieldControl.updateValueAndValidity();\r\n                                                    }\r\n                                                }\r\n                                            }\r\n                                            else {\r\n                                                const fieldNullControl: any = this.form?.get(a.key) as FormControl;\r\n                                                fieldNullControl.setValue(null);\r\n                                                a.defaultValue = null;\r\n                                                fieldNullControl.defaultValue = null;\r\n                                                a.templateOptions?.customControl?.setValue(null)\r\n                                                if (fieldNullControl) {\r\n                                                    if (fieldNullControl?.errors?.required) {\r\n                                                        fieldNullControl.isValidation = true;\r\n                                                        fieldNullControl.clearValidators();\r\n                                                        // fieldNullControl.setValue(null);\r\n                                                        // a.defaultValue=null;\r\n                                                        // fieldNullControl.defaultValue=null\r\n                                                        fieldNullControl.updateValueAndValidity();\r\n\r\n                                                    }\r\n\r\n                                                }\r\n                                            }\r\n                                        }\r\n                                    }\r\n                                });\r\n                            }\r\n                        }\r\n                    }\r\n                    // if ( field.hasOwnProperty('templateOptions') && field.templateOptions.grid) {\r\n                    //   this.patchFieldGridValue(field);\r\n\r\n                    // }\r\n                })\r\n            }\r\n            // this.fields[0]?.fieldGroup?.forEach((a: any) => {\r\n            //   this.clearValidation(a)\r\n            //   if (a?.expressionProperties && Object.keys(a.expressionProperties).length > 0) {\r\n            //     const className = a.expressionProperties?.className\r\n\r\n            //     // Split the className string by '?'\r\n            //     const parts = className?.split('?');\r\n\r\n            //     // parts[0] will contain the condition part before '?'\r\n            //     if (parts) {\r\n            //       const conditionPart = parts[0]?.trim();\r\n            //       if (conditionPart?.includes(\"'\")) {\r\n            //         this.regex = /model\\.(\\w+)\\s*!==\\s*'([^']+)'/;\r\n            //       }\r\n            //       else if (!conditionPart?.includes(\"'\")) {\r\n            //         this.regex = /model\\.(\\w+)\\s*!==\\s*([^'\"\\s]+)?/;\r\n            //       }\r\n\r\n            //     }\r\n\r\n\r\n\r\n            //     let data = a.expressionProperties?.className\r\n            //     let matches = this.regex?.exec(data);\r\n            //     if (matches && matches.length === 3) {\r\n            //       a.hideName = matches[1];\r\n            //       a.hideValue = matches[2];\r\n            //     }\r\n\r\n            //     const changeFieldControl = this.form?.get(a.hideName) as FormControl;\r\n\r\n            //     if (changeFieldControl) {\r\n\r\n            //       changeFieldControl.valueChanges.subscribe((selectedValue: any) => {\r\n            //         if (this.validCondition) {\r\n            //           if (selectedValue) {\r\n            //             if (selectedValue == a.hideValue) {\r\n            //               const fieldControl: any = this.form?.get(a.key) as FormControl;\r\n            //               fieldControl.setValue(null);\r\n            //               a.defaultValue = null;\r\n            //               a.templateOptions?.customControl?.setValue(null)\r\n            //               fieldControl.defaultValue = null;\r\n            //               if (fieldControl) {\r\n            //                 if (fieldControl?.isValidation == true) {\r\n            //                   fieldControl.isValidation = false;\r\n            //                   fieldControl.addValidators(Validators.required);\r\n            //                   fieldControl.updateValueAndValidity();\r\n            //                 }\r\n            //               }\r\n            //             }\r\n            //             else {\r\n            //               const fieldNullControl: any = this.form?.get(a.key) as FormControl;\r\n            //               fieldNullControl.setValue(null);\r\n            //               a.defaultValue = null;\r\n            //               fieldNullControl.defaultValue = null;\r\n            //               a.templateOptions?.customControl?.setValue(null)\r\n            //               if (fieldNullControl) {\r\n            //                 if (fieldNullControl?.errors?.required) {\r\n            //                   fieldNullControl.isValidation = true;\r\n            //                   fieldNullControl.clearValidators();\r\n            //                   // fieldNullControl.setValue(null);\r\n            //                   // a.defaultValue=null;\r\n            //                   // fieldNullControl.defaultValue=null\r\n            //                   fieldNullControl.updateValueAndValidity();\r\n\r\n            //                 }\r\n\r\n            //               }\r\n            //             }\r\n            //           }\r\n            //         }\r\n            //       });\r\n            //     }\r\n            //   }\r\n            // })\r\n            console.log(form)\r\n        }, 1000);\r\n    }\r\n\r\n    clearValidation(a: any) {\r\n        if (a.className == \"d-none\") {\r\n            const currentNoneData: any = a?.key;\r\n            const currentNoneControl: any = this.form?.get(currentNoneData) as FormControl;\r\n            if (currentNoneControl) {\r\n                currentNoneControl.setValue(null);\r\n                a?.templateOptions?.customControl?.setValue(null);\r\n                a.defaultValue = null;\r\n                currentNoneControl.defaultValue = null;\r\n                if (currentNoneControl?.errors?.required) {\r\n                    currentNoneControl.isValidation = true;\r\n                    currentNoneControl.clearValidators();\r\n                    currentNoneControl.updateValueAndValidity();\r\n                }\r\n            }\r\n        }\r\n        if (a.className == \"form-field\") {\r\n            const currentFieldData: any = a?.key;\r\n            const currentFieldControl: any = this.form?.get(currentFieldData) as FormControl;\r\n            if (currentFieldControl) {\r\n                if (currentFieldControl?.isValidation == true) {\r\n                    currentFieldControl.isValidation = false;\r\n                    currentFieldControl.addValidators(Validators.required);\r\n                    currentFieldControl.updateValueAndValidity();\r\n                }\r\n            }\r\n        }\r\n\r\n    }\r\n    checkTypes(fields: any, form: FormGroup) {\r\n        this.form = form\r\n        this.fields = fields;\r\n        if (this.fields?.[0]?.fieldGroup) {\r\n            this.fields[0].fieldGroup.forEach((currentfields: any) => {\r\n                if (currentfields?.hasOwnProperty('templateOptions') && (!currentfields.hasOwnProperty('fieldGroup') || currentfields.fieldGroup == null)) {\r\n                    if (!currentfields?.templateOptions?.isOnloadAPICall && currentfields.templateOptions?.hasOwnProperty('isOnloadAPICall')) {\r\n                        this.valueChanges = true;\r\n                        this.configureCascadingField(currentfields, this.fields[0].fieldGroup);\r\n                    }\r\n                    if (currentfields?.templateOptions?.isPrePopulate) {\r\n                        this.valueChanges = true;\r\n                        this.prePopulateField(currentfields);\r\n                    }\r\n                    if (currentfields?.type == 'datepicker') {\r\n                        this.valueChanges = true;\r\n                        this.configureCascadingField(currentfields, this.fields[0].fieldGroup);\r\n                    }\r\n\r\n                }\r\n                if (!currentfields.hasOwnProperty('type') && currentfields.hasOwnProperty('templateOptions') && currentfields.hasOwnProperty('fieldGroup') && currentfields.templateOptions.label !== \"Availability details\") {\r\n                    currentfields.fieldGroup[0].fieldArray.fieldGroup.forEach((grid: any) => {\r\n                        if (grid && grid?.templateOptions.hasOwnProperty('isOnloadAPICall')) {\r\n                            if (!grid?.templateOptions.isOnloadAPICall) {\r\n                                this.valueChanges = true;\r\n                                this.configureCascadingGridFormArrayField(grid, currentfields?.fieldGroup[0]);\r\n                            }\r\n                        }\r\n                        if (grid && grid.type == \"datepicker\") {\r\n                            this.configureCascadingGridFormArrayField(grid, currentfields?.fieldGroup[0]);\r\n\r\n                        }\r\n                    })\r\n                }\r\n                else if (!currentfields.hasOwnProperty('templateOptions') && currentfields.hasOwnProperty('fieldGroup') && !currentfields.hasOwnProperty('type')) {\r\n                    currentfields.fieldGroup.forEach((a: any) => {\r\n\r\n                        if (a && !a.templateOptions?.isOnloadAPICall) {\r\n                            this.valueChanges = true;\r\n                            this.configureCascadingField(a, currentfields.fieldGroup);\r\n                        }\r\n                        if (a && a.type == \"datepicker\") {\r\n                            this.valueChanges = true;\r\n                            this.configureCascadingField(a, currentfields.fieldGroup);\r\n                        }\r\n                    });\r\n                }\r\n                else if (currentfields.type == 'stepper') {\r\n\r\n                    currentfields.fieldGroup.forEach((step: any) => {\r\n                        step.fieldGroup.forEach((stepper: any) => {\r\n                            if (stepper.hasOwnProperty('fieldGroup')) {\r\n                                stepper.fieldGroup.forEach((steps: any) => {\r\n                                    if (steps && !steps?.templateOptions?.isOnloadAPICall) {\r\n                                        this.valueChanges = true;\r\n                                        this.configureCascadingField(steps, stepper.fieldGroup);\r\n                                    }\r\n                                })\r\n                            }\r\n                            else if (!stepper.hasOwnProperty('fieldGroup')) {\r\n                                if (stepper && !stepper?.templateOptions?.isOnloadAPICall) {\r\n                                    this.valueChanges = true;\r\n                                    this.configureCascadingField(stepper, step.fieldGroup);\r\n                                }\r\n                            }\r\n                        })\r\n                    })\r\n                }\r\n                else if (currentfields?.type == 'repeat') {\r\n\r\n                    currentfields.fieldArray.fieldGroup.forEach((b: any) => {\r\n                        if (b && !b.templateOptions.isOnloadAPICall) {\r\n                            this.valueChanges = true;\r\n                            this.configureCascadingFormArrayField(b, currentfields);\r\n                        }\r\n                        if (b && b.type == \"datepicker\") {\r\n                            this.valueChanges = true;\r\n                            this.configureCascadingFormArrayField(b, currentfields);\r\n                        }\r\n                    });\r\n                }\r\n\r\n\r\n            });\r\n            //this.loader.hide();\r\n        }\r\n    }\r\n    getBoolean() {\r\n        return this.valueChanges\r\n    }\r\n    prePopulateField(field: any) {\r\n\r\n        field.hooks = {\r\n            onInit: (currentFields: any) => {\r\n                if (currentFields) {\r\n                    const handleField = (currentField: any) => {\r\n                        const currentFieldData: any = currentFields?.key;\r\n                        const currentFieldControl = this.form?.get(currentFieldData) as FormControl;\r\n                        if (currentFieldControl) {\r\n                            currentFieldControl.valueChanges.subscribe((selectedValue) => {\r\n                                if (this.valueChanges) {\r\n                                    this.cascadeApiCall(currentField, selectedValue)\r\n                                }\r\n                            })\r\n                        }\r\n                    };\r\n                    handleField(currentFields); // Call handleField with the currentFields\r\n                }\r\n            },\r\n        };\r\n    }\r\n    configureCascadingField(field: any, wholeData: any) {\r\n\r\n\r\n        field.hooks = {\r\n            onInit: (currentFields: any) => {\r\n                if (currentFields) {\r\n                    const handleField = (currentField: any) => {\r\n                        const findData: any = wholeData?.find((a: any) => a['key'] == currentField.templateOptions['cascadingParentControl']);\r\n                        const currentFieldData: any = findData?.key;\r\n                        const currentFieldControl = this.form?.get(currentFieldData) as FormControl;\r\n\r\n                        if (currentFieldControl) {\r\n                            currentFieldControl.valueChanges.subscribe((selectedValue) => {\r\n                                if (this.valueChanges) {\r\n                                    if (selectedValue && selectedValue != \"\") {\r\n                                        if (findData?.templateOptions?.expression?.className !== currentField?.templateOptions?.expression?.className) {\r\n                                            this.hideClass(currentField, selectedValue)\r\n                                        }\r\n                                        this.cascadeApiCall(currentField, selectedValue)\r\n                                    }\r\n                                }\r\n                            })\r\n                        }\r\n                        //   const preKey:any=\"VehicleRegistrationNumber\"\r\n                        //   const preControl=this.form?.get(preKey) as FormControl;\r\n                        //  if(preControl){\r\n                        //   preControl.valueChanges.subscribe((selectedValue) => {\r\n\r\n                        //     if(this.valueChanges){\r\n\r\n                        //     if(currentField.key==\"VehicleCubicCapacity\"){\r\n                        //         if(currentField.key==\"VehicleCubicCapacity\"){\r\n                        //       currentField.defaultValue=selectedValue;\r\n                        //       currentField.formControl.setValue(selectedValue);\r\n                        //       currentField.templateOptions.customControl.setValue(selectedValue);\r\n                        //       console.log('pre',currentField)\r\n                        //     }\r\n                        //     }\r\n                        //   }\r\n                        //   })\r\n                        //  }\r\n                        //   if (currentField.templateOptions.hasOwnProperty('cascadingParentControl')&&!currentField.expressionProperties){\r\n                        //   const findData: any = wholeData?.find((a: any) => a['key'] == currentField.templateOptions['cascadingParentControl']);\r\n                        //   const currentFieldData: any = findData?.key;\r\n                        //   console.log('form',this.form)\r\n                        //   const currentFieldControl = this.form?.get(currentFieldData) as FormControl;\r\n                        //   if (currentFieldControl) {\r\n                        //     currentFieldControl.valueChanges.subscribe((selectedValue) => {\r\n                        //       if(this.valueChanges){\r\n                        //       this.cascadeApiCall(currentField, selectedValue)\r\n                        //       }\r\n                        //     })\r\n                        //   }\r\n                        // }\r\n                        // if (currentField.templateOptions.hasOwnProperty('cascadingParentControl')&&currentField.expressionProperties){\r\n                        //   const findData: any = wholeData?.find((a: any) => a['key'] == currentField.templateOptions['cascadingParentControl']);\r\n                        //   const currentFieldData: any = findData?.key;\r\n                        //   console.log('form',this.form)\r\n                        //   const currentFieldControl = this.form?.get(currentFieldData) as FormControl;\r\n                        //   if (currentFieldControl) {\r\n                        //     currentFieldControl.valueChanges.subscribe((selectedValue) => {\r\n                        //       if(this.valueChanges){\r\n                        //       this.hideCascadeApiCall(currentField, selectedValue)\r\n                        //       }\r\n                        //     })\r\n                        //   }\r\n                        // }\r\n                        if (currentField.type === 'datepicker') {\r\n                            if (currentField.templateOptions.isDependency) {\r\n                                const findDate: any = wholeData?.find((a: any) => a['key'] == currentField.templateOptions['dateParentControl']);\r\n                                const currentFieldDate: any = findDate?.key;\r\n                                const currentFieldDateControl = this.form?.get(currentFieldDate) as FormControl;\r\n                                if (currentFieldDateControl) {\r\n                                    this.formatDate(currentFieldDateControl, currentField)\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                    };\r\n                    handleField(currentFields); // Call handleField with the currentFields\r\n                }\r\n            },\r\n        };\r\n    }\r\n    date(type: any, count: any, value: any) {\r\n        const dateObj = new Date(value);\r\n        if (type?.includes('date')) {\r\n            dateObj.setDate(dateObj.getDate() + (type?.includes('forward') ? count : -count));\r\n        }\r\n        else if (type?.includes('month')) {\r\n            dateObj.setMonth(dateObj.getMonth() + (type?.includes('forward') ? count : -count));\r\n            dateObj.setDate(dateObj.getDate() - 1);\r\n        }\r\n        else if (type?.includes('year')) {\r\n            dateObj.setFullYear(dateObj.getFullYear() + (type?.includes('forward') ? count : -count));\r\n            dateObj.setDate(dateObj.getDate() - 1);\r\n        }\r\n        return dateObj;\r\n    }\r\n\r\n\r\n\r\n    formatDate(currentFieldDateControl: any, currentField: any) {\r\n        let isFirstTime = true;  // A flag to track whether it's the first time or not\r\n\r\n        currentFieldDateControl.valueChanges.subscribe((selectedValue: any) => {\r\n            currentField.templateOptions.readOnly = false;\r\n\r\n            // Check if it's the first time before setting null\r\n            if (!isFirstTime) {\r\n                currentField.formControl.setValue(null);  // Set null after the first time\r\n                currentField?.templateOptions?.customControl?.setValue(null);\r\n            }\r\n\r\n            // After the first change, reset the flag\r\n            isFirstTime = false;\r\n\r\n\r\n            // Handle the dependent date logic\r\n            if (currentField.templateOptions.dateTypeMinDepent !== \"\" && currentField.templateOptions.dateTypeMinDepent !== null) {\r\n                currentField.templateOptions.datepickerOptions.min = this.date(\r\n                    currentField.templateOptions.dateTypeMinDepent,\r\n                    parseInt(currentField.templateOptions.countMinDepent),\r\n                    selectedValue\r\n                );\r\n            }\r\n\r\n            if (currentField.templateOptions.dateTypeMaxDepent !== \"\" && currentField.templateOptions.dateTypeMaxDepent !== null) {\r\n                currentField.templateOptions.datepickerOptions.max = this.date(\r\n                    currentField.templateOptions.dateTypeMaxDepent,\r\n                    parseInt(currentField.templateOptions.countMaxDepent),\r\n                    selectedValue\r\n                );\r\n            }\r\n        });\r\n    }\r\n\r\n    configureCascadingFormArrayField(field: any, wholeData: any) {\r\n        field.hooks = {\r\n            onInit: (currentFields: any) => {\r\n                if (currentFields) {\r\n                    const handleField = (currentField: any) => {\r\n                        const formSubmissionData = this.fields;\r\n                        formSubmissionData.forEach((fieldGroup: any) => {\r\n                            if (fieldGroup.fieldGroup) {\r\n                                fieldGroup.fieldGroup.forEach((field: any) => {\r\n                                    if (field.type === \"repeat\") {\r\n                                        field.fieldGroup.forEach((faField: any, faFieldIndex: number) => {\r\n                                            faField.fieldGroup.forEach((fagField: any) => {\r\n                                                if (fagField.templateOptions.hasOwnProperty('cascadingParentControl')) {\r\n                                                    const findData: any = faField.fieldGroup?.find((a: any) => a['key'] == fagField.templateOptions['cascadingParentControl']);\r\n                                                    const currentArrayFieldData: any = findData?.key;\r\n                                                    const currentArrayFieldControl = ((this.form?.get(wholeData.key) as FormArray).at(faFieldIndex) as FormArray).get(currentArrayFieldData) as FormControl;\r\n                                                    if (currentArrayFieldControl) {\r\n\r\n                                                        currentArrayFieldControl.valueChanges.subscribe((selectedValue: any) => {\r\n\r\n                                                            if (this.valueChanges) {\r\n                                                                if (selectedValue && selectedValue != \"\") {\r\n                                                                    this.cascadeApiCall(fagField, selectedValue)\r\n                                                                }\r\n                                                            }\r\n                                                        })\r\n                                                    }\r\n                                                }\r\n                                                if (fagField.type === 'datepicker') {\r\n                                                    if (fagField.templateOptions.isDependency) {\r\n                                                        let findDate: any = faField.fieldGroup?.find((a: any) => a['key'] == fagField.templateOptions['dateParentControl']);\r\n                                                        let currentFieldDate: any = findDate?.key;\r\n                                                        let currentArrayFieldDateControl = ((this.form?.get(wholeData.key) as FormArray).at(faFieldIndex) as FormArray).get(currentFieldDate) as FormControl;\r\n                                                        if (currentArrayFieldDateControl) {\r\n                                                            this.formatDate(currentArrayFieldDateControl, fagField)\r\n                                                        }\r\n                                                    }\r\n                                                }\r\n                                                if (fagField.hasOwnProperty('hideProp')) {\r\n                                                    // let data =fagField?.hideProp\r\n                                                    // if (data?.includes(\"'\")) {\r\n                                                    //   this.regex =  /model\\.(\\w+)\\s*!==\\s*'([^']+)'/;\r\n                                                    //   }\r\n                                                    //   else if(!data?.includes(\"'\")){\r\n                                                    //     this.regex = /model\\.(\\w+)\\s*!==\\s*([^'\"\\s]+)?/;\r\n                                                    //   }\r\n                                                    //   let matches = this.regex.exec(data);\r\n                                                    //   if (matches && matches.length === 3) {\r\n                                                    //     fagField.hideName = matches[1];\r\n                                                    //     fagField.hideValue = matches[2];\r\n                                                    //   }\r\n                                                    //   const findHide: any = faField.fieldGroup?.find((a: any) => a['key'] == fagField.hideName);\r\n                                                    //   const currentArrayFieldHide: any = findHide?.key;\r\n                                                    //   console.log(currentArrayFieldHide)\r\n                                                    //   const currentArrayFieldHideControl = ((this.form.get(wholeData.key) as FormArray).at(faFieldIndex) as FormArray).get(currentArrayFieldHide) as FormControl;\r\n                                                    //   console.log(currentArrayFieldHideControl)\r\n                                                    //   if (currentArrayFieldHideControl) {\r\n                                                    //     currentArrayFieldHideControl.valueChanges.subscribe((selectedValue: any) => {\r\n                                                    //       fagField.hide = fagField.hideValue == selectedValue ? false : true\r\n                                                    //     })\r\n                                                    //   }\r\n                                                    let conditionsArray = this.parseConditions(fagField?.hideProp);\r\n                                                    conditionsArray.forEach((data: any) => {\r\n                                                        const findHide: any = faField.fieldGroup?.find((a: any) => a['key'] == data.controlName);\r\n                                                        const currentArrayFieldHide: any = findHide?.key;\r\n                                                        console.log(currentArrayFieldHide)\r\n                                                        const currentArrayFieldHideControl = ((this.form?.get(wholeData.key) as FormArray).at(faFieldIndex) as FormArray).get(currentArrayFieldHide) as FormControl;\r\n\r\n                                                        if (currentArrayFieldHideControl) {\r\n                                                            currentArrayFieldHideControl.valueChanges.subscribe((selectedValue: any) => {\r\n                                                                // Convert selectedValue to a string for comparison\r\n                                                                let stringValue = selectedValue.toString();\r\n\r\n                                                                // Find if the selectedValue exists in conditionsArray\r\n                                                                let findVal = conditionsArray.find((a: any) => a.value === stringValue);\r\n                                                                if (!fagField.hide && findVal) {\r\n                                                                    fagField.hide = false;\r\n                                                                }\r\n                                                                else if (!fagField.hide && findVal == undefined) {\r\n                                                                    fagField.hide = false;\r\n                                                                }\r\n                                                                else if (fagField.hide && findVal) {\r\n                                                                    fagField.hide = false;\r\n                                                                }\r\n                                                                else {\r\n                                                                    fagField.hide = true;\r\n                                                                }\r\n                                                            });\r\n                                                        }\r\n                                                    })\r\n\r\n                                                }\r\n                                            })\r\n                                        })\r\n                                    }\r\n                                })\r\n                            }\r\n\r\n                        })\r\n                    };\r\n\r\n                    handleField(currentFields);\r\n                }\r\n            },\r\n        };\r\n    }\r\n    configureCascadingGridFormArrayField(field: any, wholeData: any) {\r\n        field.hooks = {\r\n            onInit: (currentFields: any) => {\r\n                if (currentFields) {\r\n                    const handleField = (currentField: any) => {\r\n                        if (this.fields[0].fieldGroup) {\r\n                            this.fields[0].fieldGroup.forEach((a: any, i: any) => {\r\n                                if (a.templateOptions.label !== \"Availability details\") {\r\n                                    if (a?.fieldGroup?.[0]?.fieldGroup) {\r\n                                        a.fieldGroup[0]?.fieldGroup.forEach((faField: any, faFieldIndex: number) => {\r\n                                            if (faField.fieldGroup) {\r\n                                                faField.fieldGroup.forEach((grid: any) => {\r\n                                                    grid.stop = false;\r\n                                                    if (grid.templateOptions.hasOwnProperty('cascadingParentControl')) {\r\n                                                        const findGridData: any = faField.fieldGroup?.find((a: any) => a['key'] == grid.templateOptions['cascadingParentControl']);\r\n                                                        const currentArrayGridFieldData: any = findGridData?.key;\r\n                                                        const currentArrayGridFieldControl = ((this.form?.get(wholeData.key) as FormArray).at(faFieldIndex) as FormArray).get(currentArrayGridFieldData) as FormControl;\r\n                                                        if (currentArrayGridFieldControl) {\r\n                                                            currentArrayGridFieldControl.valueChanges.subscribe((selectedValue: any) => {\r\n\r\n                                                                // if (!grid.stop) {\r\n                                                                if (this.valueChanges) {\r\n                                                                    if (selectedValue && selectedValue != \"\") {\r\n                                                                        this.cascadeApiCall(grid, selectedValue)\r\n                                                                    }\r\n                                                                }\r\n                                                                // }\r\n                                                                grid.stop = true;\r\n                                                            })\r\n                                                        }\r\n                                                    }\r\n                                                    if (grid.type === 'datepicker') {\r\n                                                        if (grid.templateOptions.isDependency) {\r\n                                                            let findDate: any = faField.fieldGroup?.find((a: any) => a['key'] == grid.templateOptions['dateParentControl']);\r\n                                                            let currentFieldDate: any = findDate?.key;\r\n                                                            let currentArrayFieldDateControl = ((this.form?.get(wholeData.key) as FormArray).at(faFieldIndex) as FormArray).get(currentFieldDate) as FormControl;\r\n                                                            if (currentArrayFieldDateControl) {\r\n                                                                this.formatDate(currentArrayFieldDateControl, grid)\r\n                                                            }\r\n                                                        }\r\n                                                    }\r\n                                                })\r\n                                            }\r\n                                        })\r\n                                    }\r\n\r\n                                }\r\n                            })\r\n                        }\r\n                    };\r\n\r\n                    handleField(currentFields);\r\n                }\r\n            },\r\n        };\r\n    }\r\n    parseConditions(data: any) {\r\n        // Split the condition part from the rest\r\n        let conditionsPart = data.split('?')[0];\r\n\r\n        // Split into individual conditions\r\n        let rawConditions = conditionsPart.split('&&').map((cond: any) => cond.trim());\r\n\r\n        // Map to desired format\r\n        let conditions = rawConditions.map((cond: any) => {\r\n            // Remove \"model.\" and split by \"!==\"\r\n            let [controlName, value] = cond.replace('model.', '').split('!== ').map((part: any) => part.trim());\r\n\r\n            // Handle boolean values\r\n            // value = value === 'true' ? true : (value === 'false' ? false : value);\r\n            value = value === \"true\" || value === \"false\" ? value : value?.slice(1, -1);\r\n            // Return condition object\r\n            return { controlName, value };\r\n        });\r\n\r\n        // Filter out invalid conditions if necessary\r\n        return conditions.filter((cond: any) => cond.controlName && cond.value !== undefined);\r\n    }\r\n    cascadeApiCall(field: any, value: any) {\r\n        if (field.className !== 'd-none') {\r\n            if (field?.templateOptions?.hasOwnProperty('isMultipleParameter')) {\r\n                if (field.templateOptions.isMultipleParameter) {\r\n                    const parameter = field.templateOptions.cascadingParameter;\r\n                    this.params = JSON.parse(parameter);\r\n                    if (field?.templateOptions?.inputParameter != \"\") {\r\n                        this.params[field.templateOptions.inputParameter] = value\r\n                    }\r\n                }\r\n                else {\r\n                    const inputParameterKey = Object.keys(field.templateOptions).find(key =>\r\n                        key.toLowerCase() === 'inputparameter'\r\n                    );\r\n\r\n                    if (inputParameterKey) {\r\n                        this.params = {\r\n                            [field.templateOptions[inputParameterKey]]: value\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            else {\r\n                const inputParameterKey = Object.keys(field.templateOptions).find(key =>\r\n                    key.toLowerCase() === 'inputparameter'\r\n                );\r\n\r\n                if (inputParameterKey) {\r\n                    this.params = {\r\n                        [field.templateOptions[inputParameterKey]]: value\r\n                    }\r\n                }\r\n            }\r\n            this.loader.show();\r\n            field.templateOptions['apiUrl']?.replace(\"%22\", \"\");\r\n            field.templateOptions['apiUrl']?.replace(\",\", \"\");\r\n            // let methodName: any;\r\n\r\n            type ApiServiceMethods = {\r\n                postData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postUATData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postProductConfigData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postCoreBaseData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n            };\r\n\r\n            let methodName: keyof ApiServiceMethods | undefined;\r\n\r\n            if (field?.templateOptions?.baseApiUrlType == 'base' || !field?.templateOptions?.hasOwnProperty('baseApiUrlType') || field?.templateOptions?.baseApiUrlType == null) {\r\n                methodName = 'postData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'uad') {\r\n                methodName = 'postUATData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'product_config') {\r\n                methodName = 'postProductConfigData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'core') {\r\n                methodName = 'postCoreBaseData'\r\n            }\r\n            if (methodName) {\r\n                this.restService[methodName](this.params, field.templateOptions['apiUrl'].trim()).subscribe(\r\n                    (data: any) => {\r\n                        if (data.rcode === 200) {\r\n                            let cascadeData: any = this.getPropertyValue(data, field.templateOptions['rObjData']);\r\n                            field.templateOptions.options = cascadeData;\r\n                            field.templateOptions.placeholder = \"Select \" + field.templateOptions.label;\r\n                            // field.className=\"\";\r\n                            field.formControl.setValue(null);\r\n                            field.defaultValue = null\r\n                            field?.templateOptions?.customControl?.setValue(null);\r\n                            this.loader.hide();\r\n                            //  setTimeout(() => {\r\n                            //   //this.loader.hide();\r\n                            //  }, 3000);\r\n                        } else {\r\n                            this.commonService.handleRcodeError(data)\r\n                        }\r\n                    },\r\n                    (error: any) => {\r\n                        this.commonService.handleStatusError(error);\r\n                    }\r\n                );\r\n            }\r\n        }\r\n    }\r\n    prePopulateApiCall(field: any, value: any) {\r\n        if (field.className !== 'd-none') {\r\n            const inputParameterKey = Object.keys(field.templateOptions).find(key =>\r\n                key.toLowerCase() === 'inputparameter'\r\n            );\r\n\r\n            if (inputParameterKey) {\r\n                this.params = {\r\n                    [field.templateOptions[inputParameterKey]]: value\r\n                }\r\n            }\r\n\r\n            this.loader.show();\r\n            field.templateOptions['apiUrl']?.replace(\"%22\", \"\");\r\n            field.templateOptions['apiUrl']?.replace(\",\", \"\");\r\n\r\n\r\n\r\n            // let methodName: any;\r\n\r\n            type ApiServiceMethods = {\r\n                postData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postUATData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postProductConfigData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postCoreBaseData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n            };\r\n\r\n            let methodName: keyof ApiServiceMethods | undefined;\r\n            if (field?.templateOptions?.baseApiUrlType == 'base' || !field?.templateOptions?.hasOwnProperty('baseApiUrlType') || field?.templateOptions?.baseApiUrlType == null) {\r\n                methodName = 'postData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'uad') {\r\n                methodName = 'postUATData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'product_config') {\r\n                methodName = 'postProductConfigData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'core') {\r\n                methodName = 'postCoreBaseData'\r\n            }\r\n            if (methodName) {\r\n                this.restService[methodName](this.params, field.templateOptions['apiUrl'].trim()).subscribe(\r\n                    (data: any) => {\r\n                        if (data.rcode === 200) {\r\n                            let cascadeData: any = this.getPropertyValue(data, field.templateOptions['rObjData']);\r\n\r\n                        } else {\r\n                            this.commonService.handleRcodeError(data)\r\n                        }\r\n                    },\r\n                    (error: any) => {\r\n                        this.commonService.handleStatusError(error);\r\n                    }\r\n                );\r\n            }\r\n        }\r\n    }\r\n    // hideCascadeApiCall(field: any, value: any) {\r\n    //   if(field?.templateOptions?.hasOwnProperty('isMultipleParameter')){\r\n    //     if(field.templateOptions.isMultipleParameter){\r\n    //       const parameter = field.templateOptions.cascadingParameter;\r\n    //       this.params = JSON.parse(parameter);\r\n    //       if(field?.templateOptions?.inputParameter!=\"\"){\r\n    //         this.params[field.templateOptions.inputParameter]= value\r\n    //       }\r\n    //      }\r\n    //      else{\r\n    //       const inputParameterKey = Object.keys(field.templateOptions).find(key =>\r\n    //         key.toLowerCase() === 'inputparameter'\r\n    //       );\r\n\r\n    //       if (inputParameterKey) {\r\n    //         this.params = {\r\n    //           [field.templateOptions[inputParameterKey]]: value\r\n    //         }\r\n    //       }\r\n    //     }\r\n    //   }\r\n\r\n    //  else{\r\n    //   const inputParameterKey = Object.keys(field.templateOptions).find(key =>\r\n    //     key.toLowerCase() === 'inputparameter'\r\n    //   );\r\n\r\n    //   if (inputParameterKey) {\r\n    //     this.params = {\r\n    //       [field.templateOptions[inputParameterKey]]: value\r\n    //     }\r\n    //   }\r\n    //  }\r\n    //   //this.loader.show();\r\n    //   field.templateOptions['apiUrl']?.replace(\"%22\", \"\");\r\n    //   field.templateOptions['apiUrl']?.replace(\",\", \"\");\r\n    //   let methodName:any;\r\n    //     if(field?.templateOptions?.baseApiUrlType=='base'||!field?.templateOptions?.hasOwnProperty('baseApiUrlType')||field?.templateOptions?.baseApiUrlType==null){\r\n    //       methodName='postData'\r\n    //     }\r\n    //     if(field?.templateOptions?.baseApiUrlType=='uad'){\r\n    //       methodName='postUATData'\r\n    //     }\r\n    //     if(field?.templateOptions?.baseApiUrlType=='product_config'){\r\n    //       methodName='postProductConfigData'\r\n    //     }\r\n    //     this.restService[methodName](this.params, field.templateOptions['apiUrl'].trim()).subscribe(\r\n    //     (data) => {\r\n    //       if (data.rcode === 200) {\r\n    //         let cascadeData: any = this.getPropertyValue(data, field.templateOptions['rObjData']);\r\n    //         field.templateOptions.options = cascadeData;\r\n\r\n    //        setTimeout(() => {\r\n    //         //this.loader.hide();\r\n    //        }, 2000);\r\n    //       } else {\r\n    //         this.commonService.handleRcodeError(data)\r\n    //       }\r\n    //     },\r\n    //     (error) => {\r\n    //       this.commonService.handleStatusError(error);\r\n    //     }\r\n    //   );\r\n\r\n    // }\r\n    cascadeApiCallEdit(field: any, value: any) {\r\n        if (field.className !== 'd-none') {\r\n            if (field?.templateOptions?.hasOwnProperty('isMultipleParameter')) {\r\n                if (field.templateOptions.isMultipleParameter) {\r\n                    const parameter = field.templateOptions.cascadingParameter;\r\n                    this.params = JSON.parse(parameter);\r\n                    if (field?.templateOptions?.inputParameter != \"\") {\r\n                        this.params[field.templateOptions.inputParameter] = value\r\n                    }\r\n                }\r\n                else {\r\n                    const inputParameterKey = Object.keys(field.templateOptions).find(key =>\r\n                        key.toLowerCase() === 'inputparameter'\r\n                    );\r\n\r\n                    if (inputParameterKey) {\r\n                        this.params = {\r\n                            [field.templateOptions[inputParameterKey]]: value\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            else {\r\n                const inputParameterKey = Object.keys(field.templateOptions).find(key =>\r\n                    key.toLowerCase() === 'inputparameter'\r\n                );\r\n\r\n                if (inputParameterKey) {\r\n                    this.params = {\r\n                        [field.templateOptions[inputParameterKey]]: value\r\n                    }\r\n                }\r\n            }\r\n            //this.loader.show();\r\n            field.templateOptions['apiUrl']?.replace(\"%22\", \"\");\r\n            field.templateOptions['apiUrl']?.replace(\",\", \"\");\r\n            // let methodName: any;\r\n\r\n\r\n            type ApiServiceMethods = {\r\n                postData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postUATData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postProductConfigData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n                postCoreBaseData: <T>(data: T, url: string, headers?: any) => Observable<any>;\r\n            };\r\n\r\n            let methodName: keyof ApiServiceMethods | undefined;\r\n\r\n            if (field?.templateOptions?.baseApiUrlType == 'base' || !field?.templateOptions?.hasOwnProperty('baseApiUrlType') || field?.templateOptions?.baseApiUrlType == null) {\r\n                methodName = 'postData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'uad') {\r\n                methodName = 'postUATData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'product_config') {\r\n                methodName = 'postProductConfigData'\r\n            }\r\n            else if (field?.templateOptions?.baseApiUrlType == 'core') {\r\n                methodName = 'postCoreBaseData'\r\n            }\r\n            if (methodName) {\r\n                this.restService[methodName](this.params, field.templateOptions['apiUrl']?.trim()).subscribe(\r\n                    (data: any) => {\r\n                        if (data.rcode === 200) {\r\n                            let cascadeData: any = this.getPropertyValue(data, field.templateOptions['rObjData']);\r\n                            field.templateOptions.options = cascadeData;\r\n                            field.formControl.valueChanges.subscribe((a: any) => {\r\n                                if (a?.length == 0 || a == null || a == undefined) {\r\n\r\n                                    field.templateOptions.placeholder = \"Select \" + field.templateOptions.label;\r\n                                    field.className = \"\"\r\n                                }\r\n\r\n                            })\r\n\r\n                            if (field.defaultValue == null || field.defaultValue == undefined || field.defaultValue.length == 0) {\r\n                                field.templateOptions.placeholder = \"Select \" + field.templateOptions.label;\r\n                                field.className = \"\"\r\n                            }\r\n                            if (Array.isArray(field.defaultValue) && field.defaultValue.length > 0) {\r\n                                field.className = 'apply-black-placeholder';\r\n                                let filteredArray = field.templateOptions.options.filter((item: any) => field.defaultValue.includes(item[field.templateOptions.valueProp]));\r\n                                let titles = filteredArray.map((item: any) => item[field.templateOptions.labelProp]);\r\n                                let output = titles.join(\", \");\r\n                                field.templateOptions.placeholder = output;\r\n                            }\r\n                            else if ((field.defaultValue != null || field.defaultValue != undefined) && field.defaultValue.length > 0) {\r\n                                let findData = field?.templateOptions?.options?.find((a: any) => a[field.templateOptions.valueProp] == field.defaultValue);\r\n                                field.templateOptions.placeholder = findData[field.templateOptions.labelProp];\r\n                                field.className = 'apply-black-placeholder';\r\n\r\n                            }\r\n                            // //this.loader.hide();\r\n                            setTimeout(() => {\r\n                                this.loader.hide();\r\n                            });\r\n                        } else {\r\n                            this.commonService.handleRcodeError(data)\r\n                        }\r\n                    },\r\n                    (error: any) => {\r\n                        this.commonService.handleStatusError(error);\r\n                    }\r\n                );\r\n            }\r\n        }\r\n    }\r\n    default(field: any) {\r\n        if (field.type == 'checkbox') {\r\n            field.defaultValue = false;\r\n            field.formControl.patchValue(false);\r\n        }\r\n    }\r\n    // filterDropdownDataview(field: any, model : any, myModel : any,anymodel : any,currentField?:any, index?: number) {\r\n    //   if (!anymodel) {\r\n    //     anymodel = {};\r\n    //   }\r\n    //   const key = currentField ? currentField.key : field.key;\r\n    //   const label = field.props?.labelProp ?? 'label';\r\n    //   const valueProp = field.props?.valueProp;\r\n    //   const options = field.props?.options;\r\n    //   const value = model[key];\r\n\r\n    //   if (field.props?.isAmount) {\r\n    //     const key = field.key;\r\n    //     const value = model[key];\r\n    //     // Check if the value in the model is a valid number\r\n    //     if (!isNaN(Number(value)) && model[key] != null) {\r\n    //       // Format the number based on the user's locale\r\n    //       const formattedAmount = new Intl.NumberFormat(undefined, {\r\n    //         minimumFractionDigits: 2,\r\n    //         maximumFractionDigits: 2,\r\n    //       }).format(parseFloat(value));\r\n    //       // Update the value in the model\r\n    //       model[key] = formattedAmount;\r\n    //     }\r\n\r\n\r\n    //     console.log(field.props)\r\n    //   }\r\n    //   if(currentField && index != undefined && index > -1) {\r\n    //     let modelKI = model[key][index];\r\n    //     let itemVal = modelKI[field.key];\r\n    //    // let itemValueArray: any[] = [];\r\n    //     let itemKeyValue:any = {};\r\n    //     if(anymodel[key] && anymodel[key].length > -1 && anymodel[key].length == (index + 1)) {\r\n    //       itemKeyValue = anymodel[key][index]\r\n    //     } else if(anymodel[key] && anymodel[key].length > -1 && anymodel[key].length != (index + 1)) {\r\n    //       anymodel[key].push([]);\r\n    //       itemKeyValue = anymodel[key][index];\r\n    //     } else {\r\n    //       anymodel[key] = []\r\n    //     }\r\n    //     if (modelKI && options && options.length >= 2 && !field.props.multiple) {\r\n    //       // const filter = options.find((item: any) => Object.values(item).includes(itemVal));\r\n    //       const filter = options.find((item: any) => item[valueProp] == itemVal);\r\n    //       let val = filter[label];\r\n    //       // if(itemValueArray[index]) {\r\n    //       //   itemValueArray[index][field.key] = val\r\n    //       // } else {\r\n    //       //   itemKeyValue[field.key] = val\r\n    //       //   itemValueArray.push(itemKeyValue)\r\n    //       // }\r\n    //       itemKeyValue[field.key] = val\r\n    //       anymodel[key][index] = itemKeyValue;\r\n    //     } else if (modelKI && options && options.length === 1) {\r\n    //       let val = options?.map((obj: any) => obj[label]) || [];\r\n    //       // if(itemValueArray[index]) {\r\n    //       //   itemValueArray[index][field.key] = val\r\n    //       // } else {\r\n    //       //   itemKeyValue[field.key] = val\r\n    //       //   itemValueArray.push(itemKeyValue)\r\n    //       // }\r\n    //       itemKeyValue[field.key] = val\r\n    //       anymodel[key][index] = itemKeyValue;\r\n    //     }\r\n    //     if (modelKI &&  field.props.multiple) {\r\n    //       let valueFromKey = modelKI[field.key];\r\n    //       // let filteredOptions = options.filter((obj: any) => {\r\n    //       //   return value.some((valueItem: any) => Object.values(obj).includes(valueItem));\r\n    //       // });\r\n    //       let filteredOptions = options.filter((obj: any) => {\r\n    //         return valueFromKey.some((valueItem: any) => valueItem === obj[valueProp]);\r\n    //       });\r\n    //       let key1Values = filteredOptions.map((obj: any) => obj[label]);\r\n    //       // this.anymodel[key] = key1Values\r\n    //       // if(itemValueArray[index]) {\r\n    //       //   itemValueArray[index][field.key] =  key1Values.join(',')\r\n    //       // } else {\r\n    //       //   itemKeyValue[field.key] =  key1Values.join(',')\r\n    //       //   itemValueArray.push(itemKeyValue)\r\n    //       // }\r\n    //       itemKeyValue[field.key] =  key1Values.join(',')\r\n    //       anymodel[key][index] = itemKeyValue;\r\n    //     }\r\n    //   } else {\r\n    //     if (model[key] && options && options.length >= 2 && !field.props.multiple) {\r\n    //       const filter = options.find((item: any) => Object.values(item).includes(value));\r\n    //       let val = filter[label];\r\n    //       anymodel[key] = val;\r\n    //     } else if (model[key] && options && options.length === 1) {\r\n    //       let val = options?.map((obj: any) => obj[label]) || [];\r\n    //       anymodel[key] = val ? val[0] : null;\r\n    //     }\r\n    //     if (model[key] &&  field.props.multiple) {\r\n    //       let valueFromKey = model[field.key];\r\n    //        // let filteredOptions = options.filter((obj: any) => {\r\n    //       //   return value.some((valueItem: any) => Object.values(obj).includes(valueItem));\r\n    //       // });\r\n    //       let filteredOptions = options.filter((obj: any) => {\r\n    //         return valueFromKey.some((valueItem: any) => valueItem === obj[valueProp]);\r\n    //       });\r\n    //       let key1Values = filteredOptions.map((obj: any) => obj[label]);\r\n    //       anymodel[key] = key1Values\r\n    //     }\r\n    //   }\r\n    //   if (model) {\r\n    //     let val = model[key]\r\n    //     if (val === 'true' || val === 'false') {\r\n    //       let booleanA = JSON.parse(val.toLowerCase());\r\n    //       anymodel[key] = booleanA\r\n    //       return anymodel[key]\r\n    //     }\r\n    //   }\r\n    //   myModel = { ...model, ...anymodel }\r\n    // }\r\n\r\n    // convertToViewJSON(field : any , model , myFields : any, form : any, myModel : any,anymodel : any) {\r\n    //   field.forEach((currentField: any) => {\r\n    //     if (currentField.type == 'datepicker') {\r\n    //       const fieldName = currentField.key; // Assuming key represents the property name in model\r\n    //       const fieldValue = model[fieldName];\r\n    //       if (fieldValue instanceof Date) {\r\n    //         model[fieldName] = format(fieldValue, 'dd-MMM-yyyy', { locale: enGB });\r\n    //       }\r\n    //     }\r\n    //     let fileWrapper = currentField.wrappers?.find((item: string) => item == 'multi-file-upload')\r\n    //     if(fileWrapper) {\r\n    //       currentField.type = 'view-upload-file',\r\n    //       currentField.templateOptions.files = [];\r\n    //       let uploadedFiles: any[] = form.controls[currentField.key].value?.attachmentID;\r\n    //       if(uploadedFiles?.length > 0) {\r\n    //         uploadedFiles.forEach(file => {\r\n    //           currentField.templateOptions.files.push({\r\n    //             \"fileName\": file.fileName,\r\n    //             \"href\": file.uploadedURL\r\n    //           })\r\n    //         })\r\n    //       }\r\n    //     }\r\n    //   });\r\n\r\n    //   myFields = field.map((field: any) => ({ ...field, type: field.type === 'repeat' ? 'repeat' : field.type == 'view-upload-file' ? 'view-upload-file': 'input', props: { ...(field.props || {}), disabled: true, required: false } }));\r\n    //   myFields.forEach((currentfields: any) => {\r\n    //     const handleField = (field: any) => {\r\n    //       this.filterDropdownDataview(field,model, myModel,anymodel);\r\n    //     };\r\n    //     if (currentfields.fieldGroup && currentfields.type != 'repeat') {\r\n    //       currentfields.fieldGroup.forEach(handleField);\r\n    //     } else if (currentfields?.fieldArray?.fieldGroup  && currentfields.type == 'repeat') {\r\n    //       currentfields?.fieldGroup.forEach((fieldInArray: any, index: number) => {\r\n    //         //fieldInArray?.fieldGroup.forEach(handleField)\r\n    //         fieldInArray.fieldGroup.forEach((item: any) => {\r\n    //           this.filterDropdownDataview(item,model, myModel,anymodel, currentfields, index,)\r\n    //         })\r\n    //       });\r\n    //     } else {\r\n    //       handleField(currentfields);\r\n    //     }\r\n    //   });\r\n    //   myModel = { ...model, ...anymodel }\r\n    //   return { myModel: myModel, myFields: myFields , form : form ,  model : model , anymodel : anymodel};\r\n    // }\r\n    setValueNull(obj: any) {\r\n        for (const prop in obj) {\r\n            if (obj.hasOwnProperty(prop) && obj[prop] === '' || obj[prop] === 'NaN') {\r\n                obj[prop] = null;\r\n            }\r\n        }\r\n        return obj\r\n    }\r\n    valueChangesFalse() {\r\n        this.valueChanges = false\r\n    }\r\n    valueChangesTrue() {\r\n        this.valueChanges = true\r\n    }\r\n\r\n    viewFormArray(field: any): any {\r\n        let matchingLabel = field;\r\n        let key = matchingLabel.key;\r\n        let labelValue;\r\n        if (matchingLabel?.props) {\r\n            labelValue = matchingLabel ? matchingLabel.props.label : key.charAt(0).toUpperCase() + key.slice(1);\r\n        } else if (matchingLabel?.templateOptions) {\r\n            labelValue = matchingLabel ? matchingLabel.templateOptions.label : key.charAt(0).toUpperCase() + key.slice(1);\r\n        } else {\r\n            labelValue = key.charAt(0).toUpperCase() + key.slice(1);\r\n        }\r\n        let defaultValue;\r\n        let value = matchingLabel.formControl.value;\r\n        if (value === false) {\r\n            defaultValue = 'No';\r\n        } else if (value === true) {\r\n            defaultValue = 'Yes';\r\n        } else {\r\n            defaultValue = value || '-';\r\n        }\r\n        if (matchingLabel?.type == 'datepicker' || matchingLabel?.type == 'date') {\r\n\r\n            const fieldValue = matchingLabel.formControl.value;\r\n            if (fieldValue) {\r\n                // const dateObject = moment(fieldValue);\r\n                const dateObject = fieldValue;\r\n                defaultValue = dateObject.format('DD-MMM-YYYY');\r\n            }\r\n        }\r\n        if (matchingLabel?.type == 'date-time-picker') {\r\n\r\n            const fieldValue = matchingLabel.formControl.value;\r\n            defaultValue = this.convertDateFormat(fieldValue);\r\n        }\r\n        if (matchingLabel?.type != 'repeat') {\r\n            let templateOptions: any = {\r\n                label: labelValue,\r\n                disabled: true,\r\n            }\r\n            if (matchingLabel?.type == 'view-upload-file') {\r\n                templateOptions['files'] = matchingLabel.templateOptions.files\r\n            }\r\n            return {\r\n                key,\r\n                defaultValue,\r\n                type: matchingLabel?.type == 'view-upload-file' ? matchingLabel?.type : 'input',\r\n                templateOptions: templateOptions,\r\n                wrappers: ['tooltip-icon'],\r\n                className: \"col-md-12\",\r\n            };\r\n        } else {\r\n            // Handle the case when type is 'repeat'\r\n            // For example:\r\n            return null\r\n        }\r\n    }\r\n\r\n    // convertFormFields(filteredModel:any, field: any, myModel : any ,customModel?: any): any {\r\n    //   return Object.keys(filteredModel).map(key => {\r\n    //     const matchingLabel = field.find((mapping: any) => mapping.key === key);\r\n    //     const unMatchingLabel = field.find((mapping: any) => mapping.key !== key);\r\n    //     console.log('unMatchingLabel',unMatchingLabel)\r\n    //     let labelValue: string = '';\r\n    //     if(matchingLabel?.props) {\r\n    //       labelValue = matchingLabel ? matchingLabel.props.label : key.charAt(0).toUpperCase() + key.slice(1);\r\n    //     } \r\n    //     else if (matchingLabel?.templateOptions){\r\n    //       labelValue = matchingLabel ? matchingLabel.templateOptions.label : key.charAt(0).toUpperCase() + key.slice(1);\r\n    //     } \r\n    //     else {\r\n    //       labelValue = key.charAt(0).toUpperCase() + key.slice(1);\r\n    //     }\r\n    //     let defaultValue;\r\n    //     let value = customModel ? customModel[key] : myModel[key];\r\n    //     if (value === false) {\r\n    //       defaultValue = 'No';\r\n    //     } else if (value === true) {\r\n    //       defaultValue = 'Yes';\r\n    //     } else {\r\n    //       defaultValue = value || '-';\r\n    //     }\r\n    //     if (matchingLabel?.type == 'datepicker' || matchingLabel?.type=='date') {\r\n    //       const fieldName = matchingLabel.key; // Assuming key represents the property name in model\r\n    //       const fieldValue = this.model[fieldName];\r\n    //       // if  (typeof(fieldValue ==' Date')) {\r\n    //       //   defaultValue = format(fieldValue, 'dd-MMM-yyyy', { locale: enGB });\r\n    //       // }\r\n    //       if(fieldValue){\r\n    //         const dateObject = moment(fieldValue);\r\n    //         defaultValue = dateObject.format('DD-MMM-YYYY');\r\n    //       }\r\n    //     }\r\n\r\n    //     if (matchingLabel?.type == 'date-time-picker') {\r\n    //       const fieldName = matchingLabel.key; // Assuming key represents the property name in model\r\n    //       const fieldValue = this.model[fieldName];\r\n    //       defaultValue = this.convertDateFormat(fieldValue);\r\n\r\n    //     }\r\n    //     // if (matchingLabel?.wrappers?.[0] == 'phone-number') {\r\n    //     //         const fieldName = matchingLabel.key; // Assuming key represents the property name in model\r\n    //     //     const phoneNumberObj = this.model[fieldName]; // Access the nested object\r\n    //     //     if (phoneNumberObj && phoneNumberObj.countryCode && phoneNumberObj.phone) {\r\n    //     //       const countryCode = phoneNumberObj.countryCode;\r\n    //     //       const phoneNumber = phoneNumberObj.phone;\r\n\r\n    //     //       // Concatenate country code and phone number\r\n    //     //       const formattedPhoneNumber = `${countryCode} - ${phoneNumber}`;\r\n    //     //        defaultValue=formattedPhoneNumber\r\n    //     //       console.log(formattedPhoneNumber);\r\n    //     //     } else {\r\n    //     //       console.error(`Invalid data structure for ${fieldName}`);\r\n    //     //     }\r\n    //     //   }\r\n\r\n    //   //   if (matchingLabel === undefined) {\r\n    //   //     let fieldGroups = field.map((fieldGroup: any) => {\r\n    //   //       if(fieldGroup?.wrappers[0]==\"panel\"){\r\n    //   //         fieldGroup.fieldGroup.forEach((fieldGroupInArray: any, index: number) => {\r\n    //   //           // let groupModel = myModel[matchingLabel.key][index];\r\n    //   //           // let filteredModel = Object.entries(groupModel).reduce((acc: any, [key, value]) => {\r\n    //   //           //   if (value !== null) {\r\n    //   //           //     acc[key] = value;\r\n    //   //           //   }\r\n    //   //           //   return acc;\r\n    //   //           // }, {});\r\n    //   //             fieldGroupInArray = this.convertFormFields(filteredModel, fieldGroup.fieldGroup, myModel);\r\n    //   //         });\r\n    //   //       }\r\n    //   //         let fieldGroupItem = {\r\n    //   //             fieldGroupClassName: \"sections row\",\r\n    //   //             props: {\r\n    //   //                 label: field?.props?.label,\r\n    //   //             },\r\n    //   //             wrappers: ['panel'],\r\n    //   //             fieldGroup: fieldGroup.fieldGroup\r\n    //   //         };\r\n\r\n    //   //         return fieldGroupItem;\r\n    //   //     });\r\n\r\n    //   //     console.log('section', fieldGroups);\r\n    //   //     return fieldGroups;\r\n    //   // }\r\n\r\n    //     if(matchingLabel?.type != 'repeat') {\r\n    //       let templateOptions:any = {\r\n    //         label: labelValue,\r\n    //         disabled: true,\r\n    //       }\r\n    //       if(matchingLabel?.type == 'view-upload-file') {\r\n    //         templateOptions['files'] = matchingLabel.templateOptions.files\r\n    //       }\r\n    //       return {\r\n    //         key,\r\n    //         defaultValue,\r\n    //         type: matchingLabel?.type == 'view-upload-file' ? matchingLabel?.type : 'input',\r\n    //         templateOptions: templateOptions,\r\n    //         wrappers: ['tooltip-icon'],\r\n    //         className: \"col-md-12\",\r\n    //       };\r\n    //     } \r\n    //     else {\r\n    //       let fieldFormArray = matchingLabel.fieldArray;\r\n    //       let fieldGroups = matchingLabel.fieldGroup;\r\n    //       fieldGroups.forEach((fieldGroupInArray:any, index: number) => {\r\n    //         let fieldGroupItem = fieldGroupInArray.fieldGroup;\r\n    //         let groupModel = myModel[matchingLabel.key][index];\r\n    //         let filteredModel = Object.entries(groupModel).reduce((acc: any, [key, value]) => {\r\n    //           if (value !== null) {\r\n    //             acc[key] = value;\r\n    //           }\r\n    //           return acc;\r\n    //         }, {});\r\n    //         fieldGroupInArray.fieldGroup = this.convertFormFields(filteredModel, fieldGroupItem,myModel, groupModel);\r\n    //       })\r\n    //       fieldFormArray.fieldGroup = fieldGroups[0]\r\n    //       let fieldGroupItem = {\r\n    //         key,\r\n    //         defaultValue,\r\n    //         type: 'repeat',\r\n    //         isView: true,\r\n    //         fieldArray: fieldFormArray,\r\n    //         fieldGroup: fieldGroups,\r\n    //         wrappers: ['tooltip-icon'],\r\n    //         className: \"col-md-12\",\r\n    //       }\r\n    //       return fieldGroupItem;\r\n    //       //return matchingLabel\r\n    //     }\r\n    //   })\r\n    // }\r\n    convertFormFields(filteredModel: any, field: any, myModel: any, customModel?: any): any {\r\n        return field\r\n            .filter((a: any) => a.key !== \"submitApiUrl\") // Filter out objects with key \"submitApiUrl\"\r\n            .map((a: any, index: any) => {\r\n                if (!a.hasOwnProperty('fieldGroup') && a.hasOwnProperty('templateOptions')) {\r\n                    return this.viewFormArray(a);\r\n                }\r\n                if (a.fieldGroup && a.type != 'repeat') {\r\n                    return {\r\n                        fieldGroupClassName: \"sections row\",\r\n                        props: {\r\n                            label: a?.props?.label,\r\n                        },\r\n                        wrappers: ['panel'],\r\n                        fieldGroup: a.fieldGroup.map((nestedNormal: any) => {\r\n                            return this.viewFormArray(nestedNormal); // Return the result of viewMap\r\n                        }),\r\n                    };\r\n                } else if (a.fieldGroup && a.type == 'repeat') {\r\n                    let fieldFormArray = a.fieldArray;\r\n                    let fieldGroups = a.fieldGroup.map((fieldGroupInArray: any, index: number) => {\r\n                        return {\r\n                            fieldGroup: fieldGroupInArray.fieldGroup.map((item: any) => {\r\n                                return this.viewFormArray(item); // Collect the return values\r\n                            }),\r\n                        };\r\n                    });\r\n                    fieldFormArray.fieldGroup = fieldGroups;\r\n                    return {\r\n                        key: a.key,\r\n                        defaultValue: '',\r\n                        type: 'repeat',\r\n                        isView: true,\r\n                        fieldArray: fieldFormArray,\r\n                        wrappers: ['tooltip-icon'],\r\n                        className: \"col-md-12\",\r\n                    };\r\n                } else {\r\n                    return null; // Return null for unwanted objects\r\n                }\r\n            })\r\n            .filter((item: any) => item !== null); // Filter out the null objects\r\n    }\r\n\r\n\r\n    //   viewMap(matchingLabel: any,myModel : any ,customModel?: any) {\r\n    //     let key = matchingLabel.key;\r\n    //     let labelValue;\r\n    //     if (matchingLabel?.props) {\r\n    //         labelValue = matchingLabel ? matchingLabel.props.label : key.charAt(0).toUpperCase() + key.slice(1);\r\n    //     }\r\n    //     else if (matchingLabel?.templateOptions) {\r\n    //         labelValue = matchingLabel ? matchingLabel.templateOptions.label : key.charAt(0).toUpperCase() + key.slice(1);\r\n    //     }\r\n    //     else {\r\n    //         labelValue = key.charAt(0).toUpperCase() + key.slice(1);\r\n    //     }\r\n    //     let defaultValue;\r\n    //         let value = customModel ? customModel[key] : myModel[key];\r\n    //         if (value === false) {\r\n    //           defaultValue = 'No';\r\n    //         } else if (value === true) {\r\n    //           defaultValue = 'Yes';\r\n    //         } else {\r\n    //           defaultValue = value || '-';\r\n    //         }\r\n    //     if (matchingLabel?.type == 'datepicker' || matchingLabel?.type == 'date') {\r\n    //         const fieldName = matchingLabel.key;\r\n    //         const fieldValue = this.model[fieldName];\r\n    //         if (fieldValue) {\r\n    //             const dateObject = moment(fieldValue);\r\n    //             defaultValue = dateObject.format('DD-MMM-YYYY');\r\n    //         }\r\n    //     }\r\n    //     if (matchingLabel?.type == 'date-time-picker') {\r\n    //         const fieldName = matchingLabel.key;\r\n    //         const fieldValue = this.model[fieldName];\r\n    //         defaultValue = this.convertDateFormat(fieldValue);\r\n    //     }\r\n    //     if (matchingLabel?.type != 'repeat') {\r\n    //         let templateOptions: any = {\r\n    //             label: labelValue,\r\n    //             disabled: true,\r\n    //         };\r\n    //         if (matchingLabel?.type == 'view-upload-file') {\r\n    //             templateOptions['files'] = matchingLabel.templateOptions.files;\r\n    //         }\r\n    //         return {\r\n    //             key,\r\n    //             defaultValue,\r\n    //             type: matchingLabel?.type == 'view-upload-file' ? matchingLabel?.type : 'input',\r\n    //             templateOptions: templateOptions,\r\n    //             wrappers: ['tooltip-icon'],\r\n    //             className: \"col-md-12\",\r\n    //         };\r\n    //     }\r\n    //     // If none of the previous conditions match, return a default value or handle the case accordingly.\r\n    //     return null; // or provide a default value or throw an error\r\n    // }\r\n\r\n    // convertFormFields(filteredModel:any, field: any, myModel : any ,customModel?: any): any {\r\n    //   return Object.keys(filteredModel).map(key => {\r\n    //     const matchingLabel = field.find((mapping: any) => mapping.key === key);\r\n    //     const unMatchingLabel = field.find((mapping: any) => mapping.key !== key);\r\n    //     console.log('unMatchingLabel',unMatchingLabel)\r\n    //     let labelValue: string = '';\r\n    //     if(matchingLabel?.props) {\r\n    //       labelValue = matchingLabel ? matchingLabel.props.label : key.charAt(0).toUpperCase() + key.slice(1);\r\n    //     } \r\n    //     else if (matchingLabel?.templateOptions){\r\n    //       labelValue = matchingLabel ? matchingLabel.templateOptions.label : key.charAt(0).toUpperCase() + key.slice(1);\r\n    //     } \r\n    //     else {\r\n    //       labelValue = key.charAt(0).toUpperCase() + key.slice(1);\r\n    //     }\r\n    //     let defaultValue;\r\n    //     let value = customModel ? customModel[key] : myModel[key];\r\n    //     if (value === false) {\r\n    //       defaultValue = 'No';\r\n    //     } else if (value === true) {\r\n    //       defaultValue = 'Yes';\r\n    //     } else {\r\n    //       defaultValue = value || '-';\r\n    //     }\r\n    //     if (matchingLabel?.type == 'datepicker' || matchingLabel?.type=='date') {\r\n    //       const fieldName = matchingLabel.key; // Assuming key represents the property name in model\r\n    //       const fieldValue = this.model[fieldName];\r\n    //       // if  (typeof(fieldValue ==' Date')) {\r\n    //       //   defaultValue = format(fieldValue, 'dd-MMM-yyyy', { locale: enGB });\r\n    //       // }\r\n    //       if(fieldValue){\r\n    //         const dateObject = moment(fieldValue);\r\n    //         defaultValue = dateObject.format('DD-MMM-YYYY');\r\n    //       }\r\n    //     }\r\n\r\n    //     if (matchingLabel?.type == 'date-time-picker') {\r\n    //       const fieldName = matchingLabel.key; // Assuming key represents the property name in model\r\n    //       const fieldValue = this.model[fieldName];\r\n    //       defaultValue = this.convertDateFormat(fieldValue);\r\n\r\n    //     }\r\n\r\n    //     if(matchingLabel?.type != 'repeat') {\r\n    //       let templateOptions:any = {\r\n    //         label: labelValue,\r\n    //         disabled: true,\r\n    //       }\r\n    //       if(matchingLabel?.type == 'view-upload-file') {\r\n    //         templateOptions['files'] = matchingLabel.templateOptions.files\r\n    //       }\r\n    //       return {\r\n    //         key,\r\n    //         defaultValue,\r\n    //         type: matchingLabel?.type == 'view-upload-file' ? matchingLabel?.type : 'input',\r\n    //         templateOptions: templateOptions,\r\n    //         wrappers: ['tooltip-icon'],\r\n    //         className: \"col-md-12\",\r\n    //       };\r\n    //     } \r\n    //     else {\r\n    //       let fieldFormArray = matchingLabel.fieldArray;\r\n    //       let fieldGroups = matchingLabel.fieldGroup;\r\n    //       fieldGroups.forEach((fieldGroupInArray:any, index: number) => {\r\n    //         let fieldGroupItem = fieldGroupInArray.fieldGroup;\r\n    //         let groupModel = myModel[matchingLabel.key][index];\r\n    //         let filteredModel = Object.entries(groupModel).reduce((acc: any, [key, value]) => {\r\n    //           if (value !== null) {\r\n    //             acc[key] = value;\r\n    //           }\r\n    //           return acc;\r\n    //         }, {});\r\n    //         fieldGroupInArray.fieldGroup = this.convertFormFields(filteredModel, fieldGroupItem,myModel, groupModel);\r\n    //       })\r\n    //       fieldFormArray.fieldGroup = fieldGroups[0]\r\n    //       let fieldGroupItem = {\r\n    //         key,\r\n    //         defaultValue,\r\n    //         type: 'repeat',\r\n    //         isView: true,\r\n    //         fieldArray: fieldFormArray,\r\n    //         fieldGroup: fieldGroups,\r\n    //         wrappers: ['tooltip-icon'],\r\n    //         className: \"col-md-12\",\r\n    //       }\r\n    //       return fieldGroupItem;\r\n    //       //return matchingLabel\r\n    //     }\r\n    //   })\r\n    // }\r\n    filterDropdownDataview(field: any) {\r\n        // if (!this.anymodel) {\r\n        //   this.anymodel = {};\r\n        // }\r\n        // const key = currentField ? currentField.key : field.key;\r\n        const label = field.props?.labelProp ?? 'label';\r\n        const valueProp = field.props?.valueProp ?? 'value';\r\n        const options = field.props?.options;\r\n        const value = field.formControl.value\r\n        if (field.props?.isAmount) {\r\n            // const key = field.key;\r\n            const value = field.formControl.value;\r\n            // Check if the value in the model is a valid number\r\n            if (!isNaN(Number(value)) && field.formControl.value != null) {\r\n                // Format the number based on the user's locale\r\n                const formattedAmount = new Intl.NumberFormat(undefined, {\r\n                    minimumFractionDigits: 2,\r\n                    maximumFractionDigits: 2,\r\n                }).format(parseFloat(value));\r\n                // Update the value in the model\r\n                field.formControl.setValue(formattedAmount);\r\n            }\r\n\r\n        }\r\n        // if (currentField && index != undefined && index > -1) {\r\n        //   let model = this.model[key][index];\r\n        //   let itemVal = model[field.key];\r\n        //   // let itemValueArray: any[] = [];\r\n        //   let itemKeyValue: any = {};\r\n        //   if (this.anymodel[key] && this.anymodel[key].length > -1 && this.anymodel[key].length == (index + 1)) {\r\n        //     itemKeyValue = this.anymodel[key][index]\r\n        //   } else if (this.anymodel[key] && this.anymodel[key].length > -1 && this.anymodel[key].length != (index + 1)) {\r\n        //     this.anymodel[key].push([]);\r\n        //     itemKeyValue = this.anymodel[key][index];\r\n\r\n        //   }\r\n        //   //  else {\r\n        //   //   this.anymodel[key] = []\r\n        //   // }\r\n        //   if (model && options && options.length >= 2 && !field.props.multiple) {\r\n        //     // const filter = options.find((item: any) => Object.values(item).includes(itemVal));\r\n        //     const filter = options.find((item: any) => item[valueProp] == itemVal);\r\n        //     if(label&&filter){\r\n        //     let val = filter[label];\r\n        //     // if(itemValueArray[index]) {\r\n        //     //   itemValueArray[index][field.key] = val\r\n        //     // } else {\r\n        //     //   itemKeyValue[field.key] = val\r\n        //     //   itemValueArray.push(itemKeyValue)\r\n        //     // }\r\n        //     itemKeyValue[field.key] = val\r\n        //     this.anymodel[key][index] = itemKeyValue;\r\n        //     }\r\n        //   } else if (model && options && options.length === 1) {\r\n        //     let val = options?.map((obj: any) => obj[label]) || [];\r\n        //     // if(itemValueArray[index]) {\r\n        //     //   itemValueArray[index][field.key] = val\r\n        //     // } else {\r\n        //     //   itemKeyValue[field.key] = val\r\n        //     //   itemValueArray.push(itemKeyValue)\r\n        //     // }\r\n        //     itemKeyValue[field.key] = val\r\n        //     this.anymodel[key][index] = itemKeyValue;\r\n        //   }\r\n        //   if (model && field.props.multiple) {\r\n        //     let valueFromKey = model[field.key];\r\n        //     // let filteredOptions = options.filter((obj: any) => {\r\n        //     //   return value.some((valueItem: any) => Object.values(obj).includes(valueItem));\r\n        //     // });\r\n        //     let filteredOptions;\r\n        //     if(valueFromKey){\r\n        //     filteredOptions = options.filter((obj: any) => {\r\n        //       return valueFromKey.some((valueItem: any) => valueItem === obj[valueProp]);\r\n        //     });\r\n        //   }\r\n        //   if(filteredOptions){\r\n        //     let key1Values = filteredOptions.map((obj: any) => obj[label]);\r\n        //     // this.anymodel[key] = key1Values\r\n        //     // if(itemValueArray[index]) {\r\n        //     //   itemValueArray[index][field.key] =  key1Values.join(',')\r\n        //     // } else {\r\n        //     //   itemKeyValue[field.key] =  key1Values.join(',')\r\n        //     //   itemValueArray.push(itemKeyValue)\r\n        //     // }\r\n        //     itemKeyValue[field.key] = key1Values.join(',')\r\n        //     this.anymodel[key][index] = itemKeyValue;\r\n        //   }\r\n        // }\r\n        // } \r\n        // else {\r\n        if (field.formControl.value && options && options.length >= 2 && !field.props.multiple) {\r\n            const filter = options.find((item: any) => Object.values(item).includes(value));\r\n            let val\r\n            if (filter) {\r\n                val = filter[label];\r\n                this.valueChanges = false;\r\n                this.validCondition = false;\r\n                this.getBoolean();\r\n                field.formControl.setValue(val);\r\n            }\r\n        } else if (field.formControl.value && options && options.length === 1 && !field.props.multiple) {\r\n            let val = options?.map((obj: any) => obj[label]) || [];\r\n            this.valueChanges = false;\r\n            this.validCondition = false;\r\n            this.getBoolean();\r\n            field.formControl.setValue(val ? val[0] : null)\r\n        }\r\n        if (field.formControl.value && field.props.multiple) {\r\n            if (field.formControl.value.length > 0) {\r\n                let matchingLabels: any = [];\r\n                options.forEach((item: any) => {\r\n                    if (field.formControl.value.includes(item[valueProp])) {\r\n                        matchingLabels.push(item[label]);\r\n                    }\r\n                });\r\n                this.valueChanges = false;\r\n                this.validCondition = false;\r\n                this.getBoolean();\r\n                field.formControl.setValue(matchingLabels.join(', '))\r\n            }\r\n            else {\r\n                this.valueChanges = false;\r\n                this.validCondition = false;\r\n                this.getBoolean();\r\n                field.formControl.setValue('-')\r\n            }\r\n        }\r\n        // }\r\n        // if (this.model) {\r\n        //   let val = this.model[key]\r\n        if (field.formControl.value === 'true' || field.formControl.value === 'false') {\r\n            let booleanA = JSON.parse(field.formControl.value.toLowerCase());\r\n            this.valueChanges = false;\r\n            this.validCondition = false;\r\n            this.getBoolean();\r\n            field.formControl.setValue(booleanA)\r\n            return field.formControl.value\r\n        }\r\n        // else{\r\n        //   this.anymodel[key]= this.model[key]\r\n        //   return this.anymodel[key]\r\n\r\n        // }\r\n        // }\r\n        // this.myModel = { ...this.model, ...this.anymodel }\r\n    }\r\n    typeChange(currentField: any) {\r\n        // if (currentField.type == 'datepicker') {\r\n        //   const fieldName = currentField.key; // Assuming key represents the property name in model\r\n        //   const fieldValue = currentField.formControl.value\r\n        //   if (fieldValue instanceof Date) {\r\n        //     currentField.formControl.setValue(format(fieldValue, 'dd-MMM-yyyy', { locale: enGB }));\r\n        //   }\r\n        // }\r\n        if (currentField.type == 'date-time-picker') {\r\n            const fieldName = currentField.key; // Assuming key represents the property name in model\r\n            const fieldValue = currentField.formControl.value\r\n            currentField.formControl.setValue(this.convertDateFormat(fieldValue));\r\n\r\n        }\r\n        let fileWrapper = currentField.wrappers?.find((item: string) => item == 'multi-file-upload')\r\n        if (fileWrapper) {\r\n            currentField.type = 'view-upload-file',\r\n                currentField.templateOptions.files = [];\r\n            if (!!currentField.formControl.value) {\r\n                let uploadedFiles: any[] = currentField.formControl.value.attachmentID;\r\n                if (uploadedFiles?.length > 0) {\r\n                    uploadedFiles.forEach(file => {\r\n                        currentField.templateOptions.files.push({\r\n                            \"fileName\": file.fileName,\r\n                            \"href\": file.uploadedURL\r\n                        })\r\n                    })\r\n                }\r\n            }\r\n        }\r\n    }\r\n    // convertToViewJSON(field : any , model : any, myFields : any, form : any, myModel : any,anymodel : any) {\r\n    //   this.myFields = myFields;\r\n    //   this.formG = form;\r\n    //   this.myModel = myModel;\r\n    //   this.anymodel = anymodel;\r\n    //   this.model = model;\r\n    //   field.forEach((currentField: any) => {\r\n    //     if (currentField.type == 'datepicker') {\r\n    //       const fieldName = currentField.key; // Assuming key represents the property name in model\r\n    //       const fieldValue = this.model[fieldName];\r\n    //       if (fieldValue instanceof Date) {\r\n    //         this.model[fieldName] = format(fieldValue, 'dd-MMM-yyyy', { locale: enGB });\r\n    //       }\r\n    //     }\r\n    //     if (currentField.type == 'date-time-picker') {\r\n    //       const fieldName = currentField.key; // Assuming key represents the property name in model\r\n    //       const fieldValue = this.model[fieldName];\r\n    //       this.model[fieldName] = this.convertDateFormat(fieldValue);\r\n\r\n    //     }\r\n    //     let fileWrapper = currentField.wrappers?.find((item: string) => item == 'multi-file-upload')\r\n    //     if (fileWrapper) {\r\n    //       currentField.type = 'view-upload-file',\r\n    //         currentField.templateOptions.files = [];\r\n    //       if (!!this.formG.controls[currentField.key].value) {\r\n    //         let uploadedFiles: any[] = this.formG.controls[currentField.key].value.attachmentID;\r\n    //         if (uploadedFiles?.length > 0) {\r\n    //           uploadedFiles.forEach(file => {\r\n    //             currentField.templateOptions.files.push({\r\n    //               \"fileName\": file.fileName,\r\n    //               \"href\": file.uploadedURL\r\n    //             })\r\n    //           })\r\n    //         }\r\n    //       }\r\n    //     }\r\n    //   });\r\n\r\n    //   this.myFields = field.map((field: any) => ({ ...field, type: field.type === 'repeat' || 'view-upload-file' ? field.type : 'input', props: { ...(field.props || {}), disabled: true, required: false } }));\r\n    //   this.myFields.forEach((currentfields: any) => {\r\n    //     const handleField = (field: any) => {\r\n    //       this.filterDropdownDataview(field);\r\n    //     };\r\n    //     if (currentfields.fieldGroup && currentfields.type != 'repeat') {\r\n    //       currentfields.fieldGroup.forEach(handleField);\r\n    //     } else if (currentfields?.fieldArray?.fieldGroup && currentfields.type == 'repeat') {\r\n    //       currentfields?.fieldGroup.forEach((fieldInArray: any, index: number) => {\r\n    //         //fieldInArray?.fieldGroup.forEach(handleField)\r\n    //         fieldInArray.fieldGroup.forEach((item: any) => {\r\n    //           this.filterDropdownDataview(item, currentfields, index)\r\n    //         })\r\n    //       });\r\n    //     } else {\r\n    //       handleField(currentfields);\r\n    //     }\r\n    //   });\r\n    //   this.myModel = { ...this.model, ...this.anymodel }\r\n    //   return { myModel: this.myModel, myFields: this.myFields , form : this.formG ,  model : this.model , anymodel : this.anymodel};\r\n    // }\r\n    convertToViewJSON(field: any, model: any, myFields: any, form: any, myModel: any, anymodel: any) {\r\n        this.myFields = myFields;\r\n        this.formG = form;\r\n        this.myModel = myModel;\r\n        this.anymodel = anymodel;\r\n        this.model = model;\r\n        field.forEach((a: any) => {\r\n            if (!a.hasOwnProperty('fieldGroup') && a.hasOwnProperty('templateOptions')) {\r\n                this.typeChange(a);\r\n                this.filterDropdownDataview(a);\r\n            }\r\n            if (a.fieldGroup && a.type != 'repeat') {\r\n                a.fieldGroup.forEach((b: any, index: any) => {\r\n                    this.typeChange(b);\r\n                    this.filterDropdownDataview(b)\r\n                })\r\n            }\r\n            if (a.fieldGroup && a.type == 'repeat') {\r\n\r\n                let fieldGroups = a.fieldGroup;\r\n                fieldGroups.forEach((fieldGroupInArray: any, index: number) => {\r\n                    // let fieldGroupItem = fieldGroupInArray.fieldGroup;\r\n\r\n                    // fieldGroupInArray.fieldGroup = this.viewFormArray(filteredModel, fieldGroupItem,myModel, groupModel);\r\n\r\n                    fieldGroupInArray.fieldGroup.forEach((c: any) => {\r\n                        this.typeChange(c);\r\n                        this.filterDropdownDataview(c)\r\n                    })\r\n                })\r\n            }\r\n\r\n\r\n        });\r\n        this.myFields = field;\r\n        console.log('field', this.myFields)\r\n        // this.myFields = field.map((field: any) => ({ ...field, type: field.type === 'repeat' || 'view-upload-file' ? field.type : 'input', props: { ...(field.props || {}), disabled: true, required: false } }));\r\n        // this.myFields[0].fieldGroup.forEach((currentfields: any) => {\r\n        //   const handleField = (field: any) => {\r\n        //     this.filterDropdownDataview(field);\r\n        //   };\r\n        //   if (currentfields.fieldGroup && currentfields.type != 'repeat') {\r\n        //     currentfields.fieldGroup.forEach(handleField);\r\n        //   } else if (currentfields?.fieldArray?.fieldGroup && currentfields.type == 'repeat') {\r\n        //     currentfields?.fieldGroup.forEach((fieldInArray: any, index: number) => {\r\n        //       //fieldInArray?.fieldGroup.forEach(handleField)\r\n        //       fieldInArray.fieldGroup.forEach((item: any) => {\r\n        //         this.filterDropdownDataview(item, currentfields, index)\r\n        //       })\r\n        //     });\r\n        //   } else {\r\n        //     handleField(currentfields);\r\n        //   }\r\n        // });\r\n        this.myModel = { ...this.model, ...this.anymodel }\r\n        return { myModel: this.myModel, myFields: this.myFields, form: this.formG, model: this.model, anymodel: this.anymodel };\r\n    }\r\n    convertDateFormat(inputDateString: string): string {\r\n        // const inputDate = new Date(inputDateString);\r\n        // Parse the input date string into a Date object\r\n        const d = new Date(inputDateString);\r\n\r\n        // Adjust the date object to account for timezone offset\r\n        const inputDate = new Date(d.getTime() - (d.getTimezoneOffset() * 60000));\r\n\r\n        // Extract the date and time components\r\n        const year = inputDate.getFullYear();\r\n        const month = (inputDate.getMonth() + 1).toString().padStart(2, '0'); // Month is zero-indexed\r\n        const day = inputDate.getDate().toString().padStart(2, '0');\r\n        const hours = inputDate.getHours().toString().padStart(2, '0');\r\n        const minutes = inputDate.getMinutes().toString().padStart(2, '0');\r\n        const seconds = inputDate.getSeconds().toString().padStart(2, '0');\r\n\r\n        // Create the desired formatted string\r\n        const formattedDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\r\n\r\n        return formattedDate;\r\n    }\r\n\r\n    formSubmissionData(formSubmissionData: any, formValue: any) {\r\n\r\n        formSubmissionData.forEach((a: any) => {\r\n\r\n            if ((!a.hasOwnProperty('fieldGroup') && a.hasOwnProperty('templateOptions')) || (a.fieldGroup && a.type == 'repeat')) {\r\n                this.fieldsConversation(a, formValue)\r\n            }\r\n            if (a.fieldGroup && a.type != 'repeat') {\r\n                a.fieldGroup.forEach((b: any) => {\r\n                    this.fieldsConversation(b, formValue)\r\n                })\r\n\r\n            }\r\n            if (a.hasOwnProperty('templateOptions') && a.templateOptions.grid) {\r\n                // a.fieldGroup.forEach((b:any)=>{\r\n                this.fieldsAggridConversation(a, formValue)\r\n                // })\r\n            }\r\n\r\n        });\r\n        delete formValue.submitApiUrl;\r\n        return formValue;\r\n    }\r\n    fieldsAggridConversation(field: any, newFormValue: any) {\r\n        let agKey = field.fieldGroup[0].key\r\n        field.fieldGroup[0].fieldGroup.forEach((faField: any, faFieldIndex: number) => {\r\n            faField.fieldGroup.forEach((fagField: any) => {\r\n                if (fagField.type === 'select' && !(fagField?.props.hasOwnProperty('multiple') && fagField.props.multiple)) {\r\n                    const key = fagField.key;\r\n                    let labelProp = fagField.props.labelProp ?? \"label\";\r\n                    const extractedKey = key.replace(/(ID|MDID|id)\\b$/, '');\r\n                    // newFormValue[field.key].forEach((faKey: any) => {\r\n                    //   if(fagField.formControl.value!=undefined&&fagField.formControl.value!=null&&fagField.formControl.value!=\"\"){\r\n                    //   const selectedOptions = fagField.props.options.find((option: any) => Object.values(option).includes(faKey[key]));\r\n                    //   const labelValues = selectedOptions ? selectedOptions[labelProp] : '';\r\n                    //   faKey[extractedKey] = labelValues;\r\n                    //   }\r\n                    //   else{\r\n                    //     faKey[extractedKey] =null;\r\n                    //     faKey[key] =null;\r\n                    //   }\r\n                    // });\r\n\r\n                    if (newFormValue[agKey][faFieldIndex][key] != undefined && newFormValue[agKey][faFieldIndex][key] != null && newFormValue[agKey][faFieldIndex][key] != \"\") {\r\n                        const selectedOptions = fagField.props.options.find((option: any) => Object.values(option).includes(newFormValue[agKey][faFieldIndex][key]));\r\n                        const labelValues = selectedOptions ? selectedOptions[labelProp] : '';\r\n                        newFormValue[agKey][faFieldIndex][extractedKey] = labelValues;\r\n                    }\r\n                    else {\r\n                        newFormValue[agKey][faFieldIndex][extractedKey] = null;\r\n                        newFormValue[agKey][faFieldIndex][key] = null;\r\n                    }\r\n\r\n                }\r\n                else if (fagField.type === 'select' && (fagField?.props.hasOwnProperty('multiple') && fagField.props.multiple)) {\r\n                    const key = fagField.key;\r\n                    let labelProp = fagField.props.labelProp ?? 'label';\r\n                    let selectedValues = newFormValue[agKey][faFieldIndex][key];\r\n                    let valProp = fagField.props.valueProp ?? 'value';\r\n                    const filteredProducts = fagField?.props.options\r\n                        .filter((product: any) => selectedValues?.includes(product[valProp]))\r\n                        .map((product: any) => ({ id: product[valProp], text: product[labelProp] }));\r\n                    newFormValue[agKey][faFieldIndex][key] = filteredProducts || [];\r\n                }\r\n                else if (field.type === 'datepicker') {\r\n                    const key = fagField.key;\r\n                    const extractedKey = fagField.key + \"FormattedDate\"\r\n                    const fieldValue = fagField.formControl.value;\r\n                    if (fieldValue) {\r\n                        // const dateObject = moment(fieldValue);\r\n                        const dateObject = fieldValue;\r\n                        newFormValue[agKey][faFieldIndex][extractedKey] = dateObject.format('DD-MMM-YYYY');\r\n                    }\r\n                    else {\r\n                        newFormValue[agKey][faFieldIndex][extractedKey] = null;\r\n                        newFormValue[agKey][faFieldIndex][key] = fagField.formControl.value\r\n                    }\r\n                }\r\n                else if (fagField.type === 'radio') {\r\n                    let key = fagField.key;\r\n                    let val = newFormValue[field.key][faFieldIndex][key];\r\n                    if (typeof val === 'string') {\r\n                        if (val.toLowerCase() === 'true' || val.toLowerCase() === 'false') {\r\n                            let booleanA = JSON.parse(val.toLowerCase());\r\n                            newFormValue[agKey][faFieldIndex][key] = booleanA;\r\n                        }\r\n                        else {\r\n                            const key = fagField.key;\r\n                            let labelProp = fagField.props.labelProp ?? 'label';\r\n                            const extractedKey = key.replace(/(ID|MDI|id)\\b$/, '');\r\n                            // let model = this.model;\r\n                            if (fagField.formControl.value != undefined && fagField.formControl.value != null && fagField.formControl.value != \"\") {\r\n                                const selectedOptions = fagField.templateOptions.options.find((option: any) => Object.values(option).includes(fagField.formControl.value));\r\n                                const labelValues = selectedOptions ? selectedOptions[labelProp] : '';\r\n                                newFormValue[agKey][faFieldIndex][extractedKey] = labelValues;\r\n                            }\r\n                            else {\r\n                                newFormValue[agKey][faFieldIndex][extractedKey] = null;\r\n                                newFormValue[agKey][faFieldIndex][key] = null;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (val == undefined) {\r\n                        const key = fagField.key;\r\n                        const extractedKey = key.replace(/(ID|MDID|id)\\b$/, '');\r\n                        newFormValue[agKey][faFieldIndex][extractedKey] = null;\r\n                        newFormValue[agKey][faFieldIndex][key] = null;\r\n                    }\r\n                }\r\n                else {\r\n                    const key = fagField.key;\r\n                    if (field.formControl.value == undefined) {\r\n                        newFormValue[key] = null\r\n                    }\r\n                    else if (field.formControl.value == \"\") {\r\n                        newFormValue[key] = null\r\n                    }\r\n                    else if (field.formControl.value == null) {\r\n                        newFormValue[key] = null\r\n                    }\r\n                }\r\n            });\r\n            // if (faField.type === 'select' && !(faField?.templateOptions?.hasOwnProperty('multiple') && faField.templateOptions?.multiple)) {\r\n            //   const key = faField.key;\r\n            //   let labelProp = faField.templateOptions.labelProp;\r\n            //   const extractedKey = key.replace(/(ID|MDID)\\b$/, '');\r\n            //   newFormValue[field.key].forEach((faKey: any) => {\r\n            //     const selectedOptions = faField.templateOptions.options.find((option: any) => Object.values(option).includes(faKey[key]));\r\n            //     const labelValues = selectedOptions ? selectedOptions[labelProp] : '';\r\n            //     faKey[extractedKey] = labelValues;\r\n            //   });\r\n            // }\r\n            // else if (faField.type === 'select' && (faField?.templateOptions?.hasOwnProperty('multiple') && faField.templateOptions?.multiple)) {\r\n            //   const key = faField.key;\r\n            //   let labelProp = faField.templateOptions.labelProp;\r\n            //   let selectedValues = newFormValue[field.key][faFieldIndex][key];\r\n            //   let valProp = faField.templateOptions.valueProp;\r\n            //   const filteredProducts = faField.templateOptions.options\r\n            //     .filter((product: any) => selectedValues.includes(product[valProp]))\r\n            //     .map((product: any) => ({ id: product[valProp], text: product[labelProp] }));\r\n            //   newFormValue[field.key][faFieldIndex][key] = filteredProducts || [];\r\n            // }\r\n        })\r\n    }\r\n    fieldsConversation(field: any, newFormValue: any) {\r\n        // if (field.hasOwnProperty('templateOptions')) {\r\n        //   this.formlyApiService.default(field)\r\n        // }\r\n        // if (field.type == 'formly-group') {\r\n        //   field.fieldGroup.forEach((section: any) => {\r\n        //     this.formlyApiService.default(section)\r\n        //   })\r\n        // }\r\n        if (field.type === 'select' && !field.props.multiple) {\r\n            const key = field.key;\r\n            let labelProp = field.props.labelProp ?? \"label\";\r\n            const extractedKey = key.replace(/(ID|MDID|id)\\b$/, '');\r\n            // let model = this.model;\r\n            if (field.formControl.value != undefined && field.formControl.value != null && field.formControl.value != \"\") {\r\n                const selectedOptions = field.templateOptions.options?.find((option: any) => Object.values(option).includes(field.formControl.value));\r\n                // const labelValues = selectedOptions ? selectedOptions[labelProp] : '';\r\n                const labelValues = selectedOptions ? selectedOptions[labelProp] : null;\r\n                newFormValue[extractedKey] = labelValues;\r\n            }\r\n            else {\r\n                newFormValue[key] = null\r\n                newFormValue[extractedKey] = null;\r\n            }\r\n        }\r\n        else if (field.type === 'select' && field.props.multiple) {\r\n            let labelProp = field.props.labelProp ?? \"label\";\r\n            let selectedValues = newFormValue[field.key];\r\n            let valProp = field.props.valueProp ?? \"value\";\r\n            const filteredProducts = field.props.options\r\n                .filter((product: any) => selectedValues?.includes(product[valProp]))\r\n                .map((product: any) => ({ id: product[valProp], text: product[labelProp] }));\r\n            newFormValue[field.key] = filteredProducts || [];\r\n        }\r\n        else if (field.type === 'datepicker') {\r\n            const key = field.key;\r\n            const extractedKey = field.key + \"FormattedDate\"\r\n            // const fieldValue = this.convertDateFormat(field.formControl.value);\r\n            const fieldValue = field.formControl.value ? this.convertDateFormat(field.formControl.value) : field.formControl.value;\r\n\r\n            if (fieldValue) {\r\n                // const dateObject = moment(fieldValue);\r\n                const dateObject = fieldValue;\r\n                newFormValue[extractedKey] = dateObject.format('DD-MMM-YYYY');\r\n                newFormValue[key] = fieldValue;\r\n            }\r\n            else {\r\n                newFormValue[extractedKey] = null;\r\n                newFormValue[key] = null\r\n            }\r\n        }\r\n        else if (field.type === \"repeat\") {\r\n            //this.default(field)\r\n            field.fieldGroup.forEach((faField: any, faFieldIndex: number) => {\r\n                faField.fieldGroup.forEach((fagField: any) => {\r\n                    if (fagField.type === 'select' && !(fagField?.props.hasOwnProperty('multiple') && fagField.props.multiple)) {\r\n                        const key = fagField.key;\r\n                        let labelProp = fagField.props.labelProp ?? \"label\";\r\n                        const extractedKey = key.replace(/(ID|MDID|id)\\b$/, '');\r\n                        // newFormValue[field.key].forEach((faKey: any) => {\r\n                        //   if(fagField.formControl.value!=undefined&&fagField.formControl.value!=null&&fagField.formControl.value!=\"\"){\r\n                        //   const selectedOptions = fagField.props.options.find((option: any) => Object.values(option).includes(faKey[key]));\r\n                        //   const labelValues = selectedOptions ? selectedOptions[labelProp] : '';\r\n                        //   faKey[extractedKey] = labelValues;\r\n                        //   }\r\n                        //   else{\r\n                        //     faKey[extractedKey] =null;\r\n                        //     faKey[key] =null;\r\n                        //   }\r\n                        // });\r\n\r\n                        if (newFormValue[field.key][faFieldIndex][key] != undefined && newFormValue[field.key][faFieldIndex][key] != null && newFormValue[field.key][faFieldIndex][key] != \"\") {\r\n                            const selectedOptions = fagField.props.options.find((option: any) => Object.values(option).includes(newFormValue[field.key][faFieldIndex][key]));\r\n                            const labelValues = selectedOptions ? selectedOptions[labelProp] : '';\r\n                            newFormValue[field.key][faFieldIndex][extractedKey] = labelValues;\r\n                        }\r\n                        else {\r\n                            newFormValue[field.key][faFieldIndex][extractedKey] = null;\r\n                            newFormValue[field.key][faFieldIndex][key] = null;\r\n                        }\r\n\r\n                    }\r\n                    else if (fagField.type === 'select' && (fagField?.props.hasOwnProperty('multiple') && fagField.props.multiple)) {\r\n                        const key = fagField.key;\r\n                        let labelProp = fagField.props.labelProp ?? 'label';\r\n                        let selectedValues = newFormValue[field.key][faFieldIndex][key];\r\n                        let valProp = fagField.props.valueProp ?? 'value';\r\n                        const filteredProducts = fagField?.props.options\r\n                            .filter((product: any) => selectedValues?.includes(product[valProp]))\r\n                            .map((product: any) => ({ id: product[valProp], text: product[labelProp] }));\r\n                        newFormValue[field.key][faFieldIndex][key] = filteredProducts || [];\r\n                    }\r\n                    else if (field.type === 'datepicker') {\r\n                        const key = fagField.key;\r\n                        const extractedKey = fagField.key + \"FormattedDate\"\r\n                        const fieldValue = fagField.formControl.value;\r\n                        if (fieldValue) {\r\n                            // const dateObject = moment(fieldValue);\r\n                            const dateObject = fieldValue;\r\n                            newFormValue[field.key][faFieldIndex][extractedKey] = dateObject.format('DD-MMM-YYYY');\r\n                        }\r\n                        else {\r\n                            newFormValue[field.key][faFieldIndex][extractedKey] = null;\r\n                            newFormValue[field.key][faFieldIndex][key] = fagField.formControl.value\r\n                        }\r\n                    }\r\n                    else if (fagField.type === 'radio') {\r\n                        let key = fagField.key;\r\n                        let val = newFormValue[field.key][faFieldIndex][key];\r\n                        if (typeof val === 'string') {\r\n                            if (val.toLowerCase() === 'true' || val.toLowerCase() === 'false') {\r\n                                let booleanA = JSON.parse(val.toLowerCase());\r\n                                newFormValue[field.key][faFieldIndex][key] = booleanA;\r\n                            }\r\n                            else {\r\n                                const key = fagField.key;\r\n                                let labelProp = fagField.props.labelProp ?? 'label';\r\n                                const extractedKey = key.replace(/(ID|MDI|id)\\b$/, '');\r\n                                // let model = this.model;\r\n                                if (fagField.formControl.value != undefined && fagField.formControl.value != null && fagField.formControl.value != \"\") {\r\n                                    const selectedOptions = fagField.templateOptions.options.find((option: any) => Object.values(option).includes(fagField.formControl.value));\r\n                                    const labelValues = selectedOptions ? selectedOptions[labelProp] : '';\r\n                                    newFormValue[field.key][faFieldIndex][extractedKey] = labelValues;\r\n                                }\r\n                                else {\r\n                                    newFormValue[field.key][faFieldIndex][extractedKey] = null;\r\n                                    newFormValue[field.key][faFieldIndex][key] = null;\r\n                                }\r\n                            }\r\n                        }\r\n                        if (val == undefined) {\r\n                            const key = fagField.key;\r\n                            const extractedKey = key.replace(/(ID|MDID|id)\\b$/, '');\r\n                            newFormValue[field.key][faFieldIndex][extractedKey] = null;\r\n                            newFormValue[field.key][faFieldIndex][key] = null;\r\n                        }\r\n                    }\r\n                    else {\r\n                        const key = fagField.key;\r\n                        if (field.formControl.value == undefined) {\r\n                            newFormValue[key] = null\r\n                        }\r\n                        else if (field.formControl.value == \"\") {\r\n                            newFormValue[key] = null\r\n                        }\r\n                        else if (field.formControl.value == null) {\r\n                            newFormValue[key] = null\r\n                        }\r\n                    }\r\n                });\r\n                // if (faField.type === 'select' && !(faField?.templateOptions?.hasOwnProperty('multiple') && faField.templateOptions?.multiple)) {\r\n                //   const key = faField.key;\r\n                //   let labelProp = faField.templateOptions.labelProp;\r\n                //   const extractedKey = key.replace(/(ID|MDID)\\b$/, '');\r\n                //   newFormValue[field.key].forEach((faKey: any) => {\r\n                //     const selectedOptions = faField.templateOptions.options.find((option: any) => Object.values(option).includes(faKey[key]));\r\n                //     const labelValues = selectedOptions ? selectedOptions[labelProp] : '';\r\n                //     faKey[extractedKey] = labelValues;\r\n                //   });\r\n                // }\r\n                // else if (faField.type === 'select' && (faField?.templateOptions?.hasOwnProperty('multiple') && faField.templateOptions?.multiple)) {\r\n                //   const key = faField.key;\r\n                //   let labelProp = faField.templateOptions.labelProp;\r\n                //   let selectedValues = newFormValue[field.key][faFieldIndex][key];\r\n                //   let valProp = faField.templateOptions.valueProp;\r\n                //   const filteredProducts = faField.templateOptions.options\r\n                //     .filter((product: any) => selectedValues.includes(product[valProp]))\r\n                //     .map((product: any) => ({ id: product[valProp], text: product[labelProp] }));\r\n                //   newFormValue[field.key][faFieldIndex][key] = filteredProducts || [];\r\n                // }\r\n            })\r\n        }\r\n        else if (field.type === 'radio') {\r\n            let key = field.key;\r\n            let val = newFormValue[key];\r\n            if (typeof val === 'string') {\r\n                if (val.toLowerCase() === 'true' || val.toLowerCase() === 'false') {\r\n                    let booleanA = JSON.parse(val.toLowerCase());\r\n                    newFormValue[key] = booleanA;\r\n                }\r\n                else {\r\n                    const key = field.key;\r\n                    let labelProp = field.props.labelProp ?? 'label';\r\n                    const extractedKey = key.replace(/(ID|MDID|id)\\b$/, '');\r\n                    // let model = this.model;\r\n                    if (field.formControl.value != undefined && field.formControl.value != null && field.formControl.value != \"\") {\r\n                        const selectedOptions = field.templateOptions.options.find((option: any) => Object.values(option).includes(field.formControl.value));\r\n                        const labelValues = selectedOptions ? selectedOptions[labelProp] : '';\r\n                        newFormValue[extractedKey] = labelValues;\r\n                    }\r\n                    else {\r\n                        newFormValue[key] = null\r\n                        newFormValue[extractedKey] = null;\r\n                    }\r\n                }\r\n            }\r\n            if (val == undefined) {\r\n                const key = field.key;\r\n                const extractedKey = key.replace(/(ID|MDID|id)\\b$/, '');\r\n                newFormValue[key] = null\r\n                newFormValue[extractedKey] = null;\r\n            }\r\n        }\r\n        else if (field.type === 'checkbox') {\r\n            let key = field.key;\r\n            if (field.formControl.value == undefined) {\r\n                newFormValue[key] = false;\r\n            }\r\n            else {\r\n                newFormValue[key] = field.formControl.value;\r\n            }\r\n        }\r\n        else {\r\n            const key = field.key;\r\n            if (field.formControl.value == undefined) {\r\n                newFormValue[key] = null\r\n            }\r\n            else if (field.formControl.value == \"\") {\r\n                newFormValue[key] = null\r\n            }\r\n            else if (field.formControl.value == null) {\r\n                newFormValue[key] = null\r\n            }\r\n        }\r\n\r\n\r\n    }\r\n    patchRepeatFieldValue(field: any, values: any, key: any, i: any) {\r\n\r\n        if (field.templateOptions.label) {\r\n            field.templateOptions.label = this.translate.instant(field?.templateOptions?.label);\r\n        }\r\n        let dateField = field.key + \"FormattedDate\"\r\n        if (field.type == 'view-upload-file') {\r\n            field.templateOptions.files = [];\r\n            let uploadedFiles: any[] = values[key][i][field.key]?.attachmentID;\r\n            if (uploadedFiles?.length > 0) {\r\n                uploadedFiles.forEach(file => {\r\n                    field.templateOptions.files.push({\r\n                        \"fileName\": file.fileName,\r\n                        \"href\": file.uploadedURL\r\n                    })\r\n                })\r\n            }\r\n            field.defaultValue = values[key][i][field.key];\r\n        }\r\n        else if (values[dateField]) {\r\n            // let value = field.key.replace(\"MDID\", \"\");\r\n            field.defaultValue = values[key][i][dateField] ? values[key][i][dateField] : \"-\";\r\n        }\r\n        else if (field.key.trim().includes(\"MDID\") && !Array.isArray(values[key][i][field.key])) {\r\n            let value = field.key.replace(/(MDID)\\b$/, '');\r\n            field.defaultValue = values[key][i][value] ? values[key][i][value] : \"-\";\r\n        }\r\n        else if (field.key.trim().includes(\"ID\") && !Array.isArray(values[key][i][field.key])) {\r\n            let value = field.key.replace(/(ID)\\b$/, '');\r\n            field.defaultValue = values[key][i][value] ? values[key][i][value] : \"-\";\r\n        }\r\n        // else if (field.key.trim().includes(\"id\") && !Array.isArray(values[key][i][field.key])) {\r\n        //   let value = field.key.replace(/(id)\\b$/, '');\r\n        //   field.defaultValue = values[key][i][value] ? values[key][i][value] : \"-\";\r\n        // }\r\n        else if (field.templateOptions?.isAmount || field.templateOptions?.isCommaSeparation) {\r\n            // const key = field.key;\r\n            const value = values[key][i][field.key];\r\n            // Check if the value in the model is a valid number\r\n            if (!isNaN(Number(value)) && values[key][i][field.key] != null) {\r\n                // Format the number based on the user's locale\r\n                const formattedAmount = new Intl.NumberFormat(undefined, {\r\n                    minimumFractionDigits: 2,\r\n                    maximumFractionDigits: 2,\r\n                }).format(parseFloat(value));\r\n                field.defaultValue = formattedAmount ? formattedAmount : \"-\"\r\n            }\r\n        }\r\n        else if (Array.isArray(values[key][i][field.key]) && values[key][i][field.key]?.length > 0) {\r\n            let concatenatedText = values[key][i][field.key]?.map((item: any) => item.text).join(\", \");\r\n            field.defaultValue = concatenatedText ? concatenatedText : \"-\";\r\n        }\r\n\r\n        // else{\r\n        //   field.defaultValue= values[key][i][field.key] !=null ? values[key][i][field.key] : '-';\r\n        // }\r\n        else {\r\n            if (typeof values[key][i][field.key] === 'boolean') {\r\n                field.defaultValue = values[key][i][field.key] ? 'Yes' : 'No';\r\n            } else {\r\n                field.defaultValue = values[key][i][field.key] != null ? values[key][i][field.key] : '-';\r\n            }\r\n\r\n        }\r\n\r\n    }\r\n    patchGridFieldValue(field: any, values: any, key: any, i: any, model: any) {\r\n        if (field.templateOptions.label) {\r\n            field.templateOptions.label = this.translate.instant(field?.templateOptions?.label);\r\n        }\r\n        let dateField = field.key + \"FormattedDate\"\r\n        // if (field.type == 'view-upload-file') {        \r\n        //   field.templateOptions.files = [];\r\n        //   let uploadedFiles: any[] = values[key][i][field.key]?.attachmentID;\r\n        //   if (uploadedFiles?.length > 0) {\r\n        //     uploadedFiles.forEach(file => {\r\n        //       field.templateOptions.files.push({\r\n        //         \"fileName\": file.fileName,\r\n        //         \"href\": file.uploadedURL\r\n        //       })\r\n        //     })\r\n        //   }\r\n        //   field.defaultValue=values[key][i][field.key];\r\n        //   field.formControl.setValue(values[key][i][field.key])\r\n        // }\r\n        if (values[dateField]) {\r\n            // let value = field.key.replace(\"MDID\", \"\");\r\n            field.defaultValue = values[key][i][dateField] ? values[key][i][dateField] : \"-\";\r\n            model[key][i][field.key] = values[key][i][dateField] ? values[key][i][dateField] : \"-\";\r\n        }\r\n        else if (field.key.trim().includes(\"MDID\") && !Array.isArray(values[key][i][field.key])) {\r\n            let value = field.key.replace(/(MDID)\\b$/, '');\r\n            field.defaultValue = values[key][i][value] ? values[key][i][value] : \"-\";\r\n            model[key][i][field.key] = values[key][i][value] ? values[key][i][value] : \"-\";\r\n\r\n        }\r\n        else if (field.key.trim().includes(\"ID\") && !Array.isArray(values[key][i][field.key])) {\r\n            let value = field.key.replace(/(ID)\\b$/, '');\r\n            field.defaultValue = values[key][i][value] ? values[key][i][value] : \"-\";\r\n            model[key][i][field.key] = values[key][i][value] ? values[key][i][value] : \"-\";\r\n\r\n        }\r\n        // else if (field.key.trim().includes(\"id\") && !Array.isArray(values[key][i][field.key])) {\r\n        //   let value = field.key.replace(/(id)\\b$/, '');\r\n        //   field.defaultValue = values[key][i][value] ? values[key][i][value] : \"-\";\r\n        //   model[key][i][field.key] = values[key][i][value] ? values[key][i][value] : \"-\";\r\n        // }\r\n        else if (field.templateOptions?.isAmount || field.templateOptions?.isCommaSeparation) {\r\n            // const key = field.key;\r\n            const value = values[key][i][field.key];\r\n            // Check if the value in the model is a valid number\r\n            if (!isNaN(Number(value)) && values[key][i][field.key] != null) {\r\n                // Format the number based on the user's locale\r\n                const formattedAmount = new Intl.NumberFormat(undefined, {\r\n                    minimumFractionDigits: 2,\r\n                    maximumFractionDigits: 2,\r\n                }).format(parseFloat(value));\r\n                field.defaultValue = formattedAmount ? formattedAmount : \"-\"\r\n                model[key][i][field.key] = formattedAmount ? formattedAmount : \"-\"\r\n            }\r\n        }\r\n        else if (Array.isArray(values[key][i][field.key]) && values[key][i][field.key]?.length > 0) {\r\n            let concatenatedText = values[key][i][field.key]?.map((item: any) => item.text).join(\", \");\r\n            field.defaultValue = concatenatedText ? concatenatedText : \"-\";\r\n            model[key][i][field.key] = concatenatedText ? concatenatedText : \"-\";\r\n        }\r\n\r\n        // else{\r\n        //   field.defaultValue= values[key][i][field.key] !=null ? values[key][i][field.key] : '-';\r\n        // }\r\n        else {\r\n            if (typeof values[key][i][field.key] === 'boolean') {\r\n                field.defaultValue = values[key][i][field.key] ? 'Yes' : 'No';\r\n                model[key][i][field.key] = values[key][i][field.key] ? 'Yes' : 'No';\r\n            } else {\r\n                field.defaultValue = values[key][i][field.key] != null ? values[key][i][field.key] : '-';\r\n                model[key][i][field.key] = values[key][i][field.key] != null ? values[key][i][field.key] : '-';\r\n            }\r\n\r\n        }\r\n\r\n    }\r\n    // Method to patch individual field values\r\n    patchFieldValue(field: any, values: any) {\r\n        field.templateOptions.label = this.translate.instant(field?.templateOptions?.label);\r\n        let dateField = field.key + \"FormattedDate\"\r\n        if (field.type == 'view-upload-file') {\r\n            field.templateOptions.files = [];\r\n            let uploadedFiles: any[] = values[field.key]?.attachmentID;\r\n            if (uploadedFiles?.length > 0) {\r\n                uploadedFiles.forEach(file => {\r\n                    field.templateOptions.files.push({\r\n                        \"fileName\": file.fileName,\r\n                        \"href\": file.uploadedURL\r\n                    })\r\n                })\r\n            }\r\n            field.defaultValue = values[field.key];\r\n        }\r\n        else if (values[dateField]) {\r\n            // let value = field.key.replace(\"MDID\", \"\");\r\n            field.defaultValue = values[dateField] ? values[dateField] : \"-\";\r\n        }\r\n        else if (field.key.trim().includes(\"MDID\") && !Array.isArray(values[field.key])) {\r\n            let value = field.key.replace(/(MDID)\\b$/, '');\r\n            field.defaultValue = value ? values[value] : \"-\";\r\n        }\r\n        else if (Array.isArray(values[field.key]) && values[field.key].length > 0 && field.key != 'availabilityJson') {\r\n\r\n            let concatenatedText = values[field.key]?.map((item: any) => item.text).join(\", \");\r\n            field.defaultValue = concatenatedText ? concatenatedText : \"-\";\r\n        }\r\n        else if (field.key.trim().includes(\"ID\") && !Array.isArray(values[field.key])) {\r\n            let value = field.key.replace(/(ID)\\b$/, '');\r\n            field.defaultValue = values[value] ? values[value] : \"-\";\r\n        }\r\n        // else if (field.key.trim().includes(\"id\") && !Array.isArray(values[field.key])) {\r\n        //   let value = field.key.replace(/(id)\\b$/, '');\r\n        //   field.defaultValue = values[value] ? values[value] : \"-\";\r\n        // }\r\n        else if (field.templateOptions?.isAmount || field.templateOptions?.isCommaSeparation) {\r\n            // const key = field.key;\r\n            const value = values[field.key];\r\n            // Check if the value in the model is a valid number\r\n            if (!isNaN(Number(value)) && values[field.key] != null) {\r\n                // Format the number based on the user's locale\r\n                const formattedAmount = new Intl.NumberFormat(undefined, {\r\n                    minimumFractionDigits: 2,\r\n                    maximumFractionDigits: 2,\r\n                }).format(parseFloat(value));\r\n                field.defaultValue = formattedAmount ? formattedAmount : \"-\"\r\n            }\r\n            else {\r\n                field.defaultValue = values[value] ? values[value] : \"-\";\r\n            }\r\n        }\r\n\r\n        else if (field.key == 'availabilityJson') {\r\n            field.defaultValue = values[field.key]\r\n        }\r\n        else {\r\n            if (typeof values[field.key] === 'boolean') {\r\n                field.defaultValue = values[field.key] ? 'Yes' : 'No';\r\n            } else {\r\n                field.defaultValue = values[field.key] != null ? values[field.key] : '-';\r\n            }\r\n\r\n        }\r\n\r\n\r\n    }\r\n    scrollToFirstInvalidField(form: any) {\r\n        const invalidFields = this.findInvalidControls(form);\r\n        console.log('invalid', invalidFields)\r\n        if (invalidFields.length > 0) {\r\n            const invalidElement = document.querySelector(`[id=\"${invalidFields[0]}\"]`);\r\n            if (invalidElement) {\r\n                invalidElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n                // invalidElement.focus();\r\n            }\r\n        }\r\n    }\r\n    findInvalidControls(formGroup: FormGroup): string[] {\r\n        const invalidControls = [];\r\n        const controls = formGroup.controls;\r\n        for (const name in controls) {\r\n            if (controls[name].invalid) {\r\n                invalidControls.push(name);\r\n            }\r\n        }\r\n        return invalidControls;\r\n    }\r\n\r\n\r\n    markAllFieldsAsTouched(form: FormGroup | FormArray) {\r\n        if (form instanceof FormGroup) {\r\n            Object.keys(form.controls).forEach(key => {\r\n                const control: any = form.get(key);\r\n\r\n                if (control instanceof FormGroup || control instanceof FormArray) {\r\n                    // Recursively mark controls inside FormGroup or FormArray\r\n                    this.markAllFieldsAsTouched(control);\r\n                } else {\r\n                    this.loader.hide();\r\n                    control.markAsTouched();\r\n                    control.markAsDirty();\r\n                    control.updateValueAndValidity();\r\n                }\r\n            });\r\n        } else if (form instanceof FormArray) {\r\n            form.controls.forEach((arrayControl) => {\r\n                if (arrayControl instanceof FormGroup || arrayControl instanceof FormArray) {\r\n                    // Recursively mark controls inside FormArray or FormGroup\r\n                    this.markAllFieldsAsTouched(arrayControl);\r\n                } else {\r\n                    this.loader.hide();\r\n                    arrayControl.markAsTouched();\r\n                    arrayControl.markAsDirty();\r\n                    arrayControl.updateValueAndValidity();\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    markFieldsAsTouched(form: any) {\r\n\r\n        Object.keys(form.controls).forEach(key => {\r\n            const control: any = form.get(key);\r\n\r\n            if (control && (control.value === null || control.value === undefined)) {\r\n                control.setValue(null); // Set value to 0 if the value is null\r\n                control.markAsTouched();\r\n                control.markAsDirty();\r\n                form.controls[key].updateValueAndValidity();\r\n            }\r\n            if (control && control.value === null && (control.defaultValue === null || control.defaultValue === undefined)) {\r\n                control.markAsDirty();\r\n                control.markAsTouched();\r\n                control.defaultValue === null; // Set value to 0 if the value is null\r\n                // form.controls[key].updateValueAndValidity();\r\n            }\r\n            // if(control?.errors?.invalidDate){\r\n            //   control.mara\r\n            //   control.markAsDirty();\r\n            //   control.markAsTouched();\r\n            // }\r\n        });\r\n\r\n    }\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { RestService } from '../../services/rest.service';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { CommonService } from '../../services/common.service';\r\n\r\n@Component({\r\n  selector: 'lib-claim-new-assess',\r\n  templateUrl: './claim-new-assess.component.html',\r\n  styleUrl: './claim-new-assess.component.scss'\r\n})\r\nexport class ClaimNewAssessComponent {\r\n\r\n\r\n  assessmentList: any[] = [\r\n    {\r\n      taskName: \"Blood Test\",\r\n      id: 'gfetr74t554-sdfsduhf'\r\n    },\r\n    {\r\n      taskName: \"General Physical Examination\",\r\n      id: 'gfetr74tde54-sdfsduhf'\r\n    }\r\n  ]\r\n  assessmentForm !: FormGroup;\r\n  assignForm!: FormGroup;\r\n  isSubmitted: boolean = false;\r\n  allowedAssessors!: any[];\r\n  internalClaimUsers: any[] = [];\r\n  serviceProviders: any[] = []\r\n  isAssigned!: boolean;\r\n  assignedAssessor!: null;\r\n  submitted: boolean = false;\r\n\r\n  constructor(private fb: FormBuilder,\r\n    private restService: RestService,\r\n    private loader: LoaderService,\r\n    private commonService: CommonService,\r\n    private dialog: MatDialog,\r\n    public dialogRef: MatDialogRef<ClaimNewAssessComponent>,\r\n    @Inject(MAT_DIALOG_DATA) public data: any) { }\r\n  ngOnInit(): void {\r\n    this.assessmentForm = this.fb.group({\r\n      assessments: [null, Validators.required],\r\n      countryFltr: ['']\r\n    })\r\n    this.assignForm = this.fb.group({\r\n      assignedTo: [null, Validators.required],\r\n      internalClaimUser: [null],\r\n      serviceProvider: [null],\r\n      // assessments: [null, Validators.required],\r\n      countryFltr: ['']\r\n    });\r\n    // this.assignForm.get('assignedTo').valueChanges.subscribe(value => {\r\n    //   this.updateValidators(value);\r\n    // });\r\n    if (this.data.isAssignAss) {\r\n      this.getAssessment();\r\n    }\r\n  }\r\n  close() {\r\n    this.dialogRef.close();\r\n  }\r\n  submit() {\r\n    this.assessmentForm.markAllAsTouched();\r\n    this.isSubmitted = true;\r\n    if (this.assessmentForm.invalid) {\r\n      return;\r\n    }\r\n    this.dialogRef.close();\r\n  }\r\n  assignSubmit() {\r\n    this.assignForm.markAllAsTouched();\r\n    this.isSubmitted = true;\r\n    if (this.assignForm.invalid) {\r\n      return;\r\n    }\r\n    this.dialogRef.close();\r\n  }\r\n  updateValidators(assignedTo: number) {\r\n    const internalClaimUserControl: any = this.assignForm.get('internalClaimUser');\r\n    const serviceProviderControl: any = this.assignForm.get('serviceProvider');\r\n\r\n    if (assignedTo == 30) {\r\n      // If 'Internal Claim User' is selected, set 'internalClaimUser' as required and clear 'serviceProvider'\r\n      internalClaimUserControl.setValidators([Validators.required]);\r\n      serviceProviderControl.clearValidators();\r\n      serviceProviderControl.setValue(null); // clear value if it was selected before\r\n    } else if (assignedTo == 40) {\r\n      // If 'Service Provider' is selected, set 'serviceProvider' as required and clear 'internalClaimUser'\r\n      serviceProviderControl.setValidators([Validators.required]);\r\n      internalClaimUserControl.clearValidators();\r\n      internalClaimUserControl.setValue(null); // clear value if it was selected before\r\n    } else {\r\n      // If 'Self' is selected, clear validators for both 'internalClaimUser' and 'serviceProvider'\r\n      internalClaimUserControl.clearValidators();\r\n      serviceProviderControl.clearValidators();\r\n      internalClaimUserControl.setValue(null); // clear values\r\n      serviceProviderControl.setValue(null);\r\n    }\r\n\r\n    // Update validation status for the form controls\r\n    internalClaimUserControl.updateValueAndValidity();\r\n    serviceProviderControl.updateValueAndValidity();\r\n  }\r\n  getAssessment() {\r\n    let params = {\r\n      \"objectActionRequirementID\": this.data.objID\r\n    }\r\n    this.loader.show();\r\n    this.restService.postCoreBaseData(params, 'api/admin/ObjectTask/GetTask').subscribe(\r\n      {\r\n        next: (data: any) => {\r\n          if (data.rcode == 200) {\r\n            this.loader.hide();\r\n            this.assignedAssessor = data.rObj.assignedAssessor;\r\n            if (this.assignedAssessor == null) {\r\n              this.allowedAssessors = data.rObj.allowedAssessors;\r\n              if (this.allowedAssessors.length === 1) {\r\n                this.assignForm.patchValue({\r\n                  assignedTo: this.allowedAssessors[0].assessorTypeID\r\n                });\r\n              }\r\n              this.getInternalUsers();\r\n            }\r\n            else {\r\n              this.isAssigned = true;\r\n            }\r\n\r\n          }\r\n          else {\r\n\r\n            this.commonService.handleRcodeError(data)\r\n          }\r\n\r\n        },\r\n        error: (error: any) => {\r\n          this.commonService.checkStatusErrors(error)\r\n\r\n        }\r\n      })\r\n  }\r\n  getInternalUsers() {\r\n    let params = {\r\n      \"objectActionRequirementID\": this.data.objID\r\n    }\r\n    this.loader.show();\r\n    this.restService.postCoreBaseData(params, 'api/admin/ObjectTask/FetchTaskInternalUsers').subscribe(\r\n      {\r\n        next: (data: any) => {\r\n          if (data.rcode == 200) {\r\n            this.internalClaimUsers = data.rObj.fetchTaskInternalUsers\r\n            this.loader.hide();\r\n            this.getServiceProviders();\r\n          }\r\n          else {\r\n\r\n            this.commonService.handleRcodeError(data)\r\n          }\r\n\r\n        },\r\n        error: (error: any) => {\r\n          this.commonService.checkStatusErrors(error)\r\n\r\n        }\r\n      })\r\n  }\r\n  getServiceProviders() {\r\n    let params = {\r\n      \"objectActionRequirementID\": this.data.objID\r\n    }\r\n    this.loader.show();\r\n    this.restService.postCoreBaseData(params, 'api/admin/ObjectTask/FetchTaskServiceProviders').subscribe(\r\n      {\r\n        next: (data: any) => {\r\n          if (data.rcode == 200) {\r\n            this.serviceProviders = data.rObj.fetchTaskServiceProviders\r\n            this.loader.hide();\r\n          }\r\n          else {\r\n\r\n            this.commonService.handleRcodeError(data)\r\n          }\r\n\r\n        },\r\n        error: (error: any) => {\r\n          this.commonService.checkStatusErrors(error)\r\n        }\r\n      })\r\n  }\r\n  submitForm(): void {\r\n    this.assignForm.markAllAsTouched();\r\n    this.isSubmitted = true;\r\n    if (this.assignForm.invalid) {\r\n      return;\r\n    }\r\n    let assignedTo = this.assignForm.get('assignedTo')?.value == 30 ? this.assignForm.get('internalUser')?.value?.fullName : this.assignForm.get('serviceProvider')?.value?.orgName;\r\n    let assignedToID = this.assignForm.get('assignedTo')?.value == 30 ? this.assignForm.get('internalUser')?.value?.userID : this.assignForm.get('serviceProvider')?.value?.orgGroupID;\r\n    let params = {\r\n      \"objectActionRequirementID\": this.data.objID,\r\n      \"assessorTypeID\": this.assignForm.get('assignedTo')?.value,\r\n      \"assignedToID\": assignedToID ?? null,\r\n      \"assignedTo\": assignedTo ?? null,\r\n      \"comments\": null\r\n    }\r\n    this.insertAssignedAss(params);\r\n  }\r\n  insertAssignedAss(params: any) {\r\n    this.loader.show();\r\n    this.restService.postCoreBaseData(params, 'api/admin/ObjectTask/InsertAssignedAssessor').subscribe(\r\n      {\r\n        next: (data: any) => {\r\n          if (data.rcode == 200) {\r\n            this.loader.hide();\r\n            this.dialogRef.close(true);\r\n          }\r\n          else {\r\n            this.commonService.handleRcodeError(data)\r\n          }\r\n\r\n        },\r\n        error: (error: any) => {\r\n          this.commonService.checkStatusErrors(error)\r\n        }\r\n      })\r\n  }\r\n}\r\n","<div *ngIf=\"data.isAddNewAss\">\r\n\r\n    <div class=\"float-right\">\r\n        <span class=\"\" (click)=\"close()\" title=\"{{'Close' |translate }}\"><em\r\n                class=\"fa fa-2xl fa-times-circle\"></em></span>\r\n\r\n    </div>\r\n    <div class=\"row \">\r\n        <div class=\"col-md-10\">\r\n            <p class=\"text-afrisureRed fn-22 fw-600  \">{{ 'Add New Assessment'|translate }} </p>\r\n        </div>\r\n\r\n    </div>\r\n    <hr class=\"text-hr my-2 mt-2\">\r\n    <form [formGroup]=\"assessmentForm\">\r\n        <div class=\"col-12 col-sm-12 col-md-12 col-lg-12\">\r\n            <mat-form-field class=\"input-wrapper\" floatLabel=\"always\">\r\n                <label class=\"pb-2\">\r\n                    <mat-label for=\"objNum\">\r\n                        <span class=\"\">{{'Assessments'|translate }}</span>\r\n                        <span class=\"required-icon\">*</span>\r\n                    </mat-label>\r\n                </label>\r\n                <mat-select formControlName=\"assessments\" placeholder=\"{{'Select'  }} {{'Assessments'  }}\" multiple>\r\n                    <mat-option>\r\n                        <ngx-mat-select-search [placeholderLabel]=\"'search'  \" noEntriesFoundLabel=\"'No data found'\"\r\n                            #searchInput formControlName='countryFltr'></ngx-mat-select-search>\r\n                    </mat-option>\r\n                    <!-- <mat-option *ngFor=\"let inter of assessmentList | filterOptions:  searchInput?.value : 'taskName'\"\r\n                        [value]=\"inter\">\r\n                        {{ inter.taskName }}\r\n                    </mat-option> -->\r\n                    <!-- <mat-option *ngFor=\"let inter of assessmentList \" [value]=\"inter\">\r\n                        {{ inter.taskName }}\r\n                    </mat-option> -->\r\n                    <mat-option\r\n                        *ngFor=\"let inter of assessmentList | filterOptions: (searchInput?.value ?? '') : 'taskName'\"\r\n                        [value]=\"inter\">\r\n                        {{ inter.taskName }}\r\n                    </mat-option>\r\n                </mat-select>\r\n\r\n            </mat-form-field>\r\n            <div>\r\n                <mat-error class=\"smallfont mt-1\"\r\n                    *ngIf=\"isSubmitted && assessmentForm?.get('assessments')?.errors?.['required']\">\r\n                    {{'Please select assessments'|translate}}\r\n                </mat-error>\r\n            </div>\r\n\r\n        </div>\r\n        <div class=\"text-center mt-3\">\r\n            <button type=\"button\" class=\"btn btnc btn-c\" (click)=\"submit()\">{{ 'submit'|translate }}</button>\r\n        </div>\r\n    </form>\r\n</div>\r\n\r\n<div *ngIf=\"data.isAssignAss\">\r\n\r\n    <div class=\"float-right\">\r\n        <span class=\"\" (click)=\"close()\" title=\"{{'Close'  }}\"><em class=\"fa fa-2xl fa-times-circle\"></em></span>\r\n\r\n    </div>\r\n    <div class=\"row \">\r\n        <div class=\"col-md-10\">\r\n            <p class=\"text-afrisureRed fn-22 fw-600  \">{{ 'Assign Assessment'|translate }} </p>\r\n        </div>\r\n\r\n    </div>\r\n    <hr class=\"text-hr my-2 mt-2\">\r\n    <form [formGroup]=\"assignForm\">\r\n        <div class=\"row col-md-8 col-lg-8 col-sm-12 m-auto\">\r\n\r\n            <!-- Assigned To Radio Buttons -->\r\n            <div class=\"form-group mt-2\">\r\n                <mat-label>{{ \"Assigned To\"|translate }}</mat-label>\r\n\r\n                <mat-radio-group formControlName=\"assignedTo\" class=\"mt-2 d-block\">\r\n                    <!-- <mat-radio-button [value]=\"1\">{{ 'Internal Claim User' }}</mat-radio-button>\r\n                    <mat-radio-button [value]=\"2\">{{ 'Service Provider' }}</mat-radio-button>\r\n                    <mat-radio-button [value]=\"3\">{{ 'Self' }}</mat-radio-button> -->\r\n                    <mat-radio-button class=\"mb-2\" *ngFor=\"let assessor of allowedAssessors\"\r\n                        [value]=\"assessor?.assessorTypeID\">\r\n                        {{ assessor.assessorTypeName }}\r\n                    </mat-radio-button>\r\n                </mat-radio-group>\r\n                <mat-error class=\"smallfont mt-1\"\r\n                    *ngIf=\"isSubmitted && assignForm?.get('assignedTo')?.errors?.['required']\">\r\n                    {{'pleaseSelectThisField'|translate}}\r\n                </mat-error>\r\n            </div>\r\n\r\n            <!-- Internal Claim User Dropdown (when selected) -->\r\n            <div *ngIf=\"assessmentForm.get('assignedTo')?.value == 30\" class=\"form-group mb-1\">\r\n                <mat-form-field class=\"input-wrapper\" floatLabel=\"always\">\r\n                    <label class=\"pb-2\">\r\n                        <mat-label for=\"objNum\">\r\n                            <span class=\"\">{{'Internal Claim User'|translate }}</span>\r\n                            <span class=\"required-icon\">*</span>\r\n                        </mat-label>\r\n                    </label>\r\n                    <mat-select formControlName=\"internalClaimUser\" placeholder=\"Select Internal Claim User\">\r\n                        <mat-option *ngFor=\"let user of internalClaimUsers\" [value]=\"user\">\r\n                            {{ user.fullName }}\r\n                        </mat-option>\r\n                    </mat-select>\r\n                </mat-form-field>\r\n                <mat-error class=\"smallfont mt-1\"\r\n                    *ngIf=\"isSubmitted && assignForm?.get('internalClaimUser')?.errors?.['required']\">\r\n                    {{'Please select assessments'|translate}}\r\n                </mat-error>\r\n            </div>\r\n\r\n            <!-- Service Provider Dropdown (when selected) -->\r\n            <div *ngIf=\"assignForm.get('assignedTo')?.value == 40\" class=\"form-group mb-1\">\r\n\r\n                <mat-form-field class=\"input-wrapper\" floatLabel=\"always\">\r\n                    <label class=\"pb-2\">\r\n                        <mat-label for=\"objNum\">\r\n                            <span class=\"\">{{'Service Provider'|translate }}</span>\r\n                            <span class=\"required-icon\">*</span>\r\n                        </mat-label>\r\n                    </label>\r\n                    <mat-select formControlName=\"serviceProvider\" placeholder=\"Select Service Provider\">\r\n                        <mat-option *ngFor=\"let provider of serviceProviders\" [value]=\"provider\">\r\n                            {{ provider.orgName }}\r\n                        </mat-option>\r\n                    </mat-select>\r\n                </mat-form-field>\r\n                <!-- <mat-error class=\"smallfont mt-1\"\r\n                    *ngIf=\"isSubmitted && assignForm.get('serviceProvider')?.errors?.['required']\">\r\n                    {{'Please select service provider.'}}\r\n                </mat-error> -->\r\n                <mat-error class=\"smallfont mt-1\"\r\n                    *ngIf=\"isSubmitted && assignForm.get('serviceProvider')?.errors?.['required']\">\r\n                    {{'Please select service provider'|translate}}\r\n                </mat-error>\r\n\r\n            </div>\r\n\r\n            <!-- Select Assessment (common for all options) -->\r\n            <!-- <div class=\"form-group mb-2\" *ngIf=\"assignForm.get('assignedTo').value\">\r\n                <mat-form-field class=\"input-wrapper\" floatLabel=\"always\">\r\n                    <label class=\"pb-2\">\r\n                        <mat-label for=\"objNum\">\r\n                            <span class=\"\">{{'Assessments'  }}</span>\r\n                            <span class=\"required-icon\">*</span>\r\n                        </mat-label>\r\n                    </label>\r\n                    <mat-select formControlName=\"assessments\"\r\n                        placeholder=\"{{'Select'  }} {{'Assessments'  }}\" multiple>\r\n                        <mat-option>\r\n                            <ngx-mat-select-search [placeholderLabel]=\"'search'  \"\r\n                                noEntriesFoundLabel=\"'No data found'\" #searchInput\r\n                                formControlName='countryFltr'></ngx-mat-select-search>\r\n                        </mat-option>\r\n                        <mat-option\r\n                            *ngFor=\"let inter of assessmentList  filterOptions:  searchInput.value : 'taskName'\"\r\n                            [value]=\"inter\">\r\n                            {{ inter.taskName }}\r\n                        </mat-option>\r\n                    </mat-select>\r\n\r\n                </mat-form-field>\r\n                <mat-error class=\"smallfont mt-1\"\r\n                    *ngIf=\"isSubmitted && assignForm?.get('assessments')?.errors?.required\">\r\n                    {{'Please select assessments.'}}\r\n                </mat-error>\r\n            </div> -->\r\n\r\n            <!-- Submit Button -->\r\n            <div class=\"text-center mt-2\">\r\n                <button type=\"button\" class=\"btn btnc\" (click)=\"submitForm()\">{{\"Submit\"|translate}} </button>\r\n            </div>\r\n        </div>\r\n    </form>\r\n</div>","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { RestService } from '../../services/rest.service';\r\nimport { Router } from '@angular/router';\r\nimport { ClaimNewAssessComponent } from '../claim-new-assess/claim-new-assess.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { CommonService } from '../../services/common.service';\r\n\r\n@Component({\r\n  selector: 'lib-view-all',\r\n  templateUrl: './view-all.component.html',\r\n  styleUrl: './view-all.component.scss'\r\n})\r\nexport class ViewAllComponent {\r\n\r\n  @Input() claimID: any;\r\n  @Input() token: any\r\n  @Input() environment: any;\r\n  @Input() customGuidColumn1: any;\r\n\r\n\r\n  dataSource = new MatTableDataSource<any>();;\r\n  displayedColumns: string[] = ['S.No', 'coverageText', 'requirement', 'assignedOn', 'dueDate', 'elapsedTimeMinutes', 'slaMinutes', 'statusText', 'actions'];\r\n\r\n  @ViewChild(MatPaginator) paginator!: MatPaginator;\r\n  @ViewChild(MatSort) sort!: MatSort;\r\n  @Output() goView = new EventEmitter<any>();\r\n  pageSize = 10;\r\n  pageIndex = 0;\r\n  totalRecords: any = 0;\r\n  beforeLoad: boolean = false;\r\n\r\n\r\n\r\n\r\n  constructor(\r\n    private restService: RestService,\r\n    private router: Router,\r\n    private dialog: MatDialog,\r\n    private translate: TranslateService,\r\n    private loader: LoaderService,\r\n    private commonService: CommonService,\r\n\r\n  ) { }\r\n  ngOnInit(): void {\r\n    this.translate.setDefaultLang('en');\r\n    this.translate.use('en');\r\n    this.fetchData();\r\n    console.log(this.token, 'dbfkwbcjkwek toke')\r\n  }\r\n\r\n\r\n\r\n\r\n\r\n  fetchData() {\r\n    // Fetch data from your service\r\n    let params = {\r\n      \"objectID\": this.claimID ?? null\r\n    };\r\n    this.loader.show();\r\n    this.restService.postCoreBaseData(params, 'api/admin/ObjectTask/GetObjectActionRequirements', this.token).subscribe(\r\n      (data: any) => {\r\n        if (data.rcode === 200) {\r\n          this.dataSource = new MatTableDataSource(data.rObj.objectRequirements);\r\n          this.dataSource.sortingDataAccessor = (item: any, property: string) => {\r\n            if (property === 'uPTS') {\r\n              return new Date(item.uPTS).getTime();\r\n            }\r\n            return item[property];\r\n          };\r\n          this.beforeLoad = true;\r\n          this.dataSource.paginator = this.paginator;\r\n          this.dataSource.sort = this.sort;\r\n          this.loader.hide();\r\n        } else {\r\n          this.commonService.handleRcodeError(data)\r\n        }\r\n      },\r\n      (error: any) => {\r\n        this.commonService.handleStatusError(error);\r\n\r\n      }\r\n    );\r\n  }\r\n\r\n\r\n\r\n\r\n  goToView(element: any) {\r\n    // this.router.navigate([`/claim-manage/single-claim-process/${this.claimID}/assessment-view/${element.objectActionRequirementID}`])\r\n\r\n    this.goView.emit(element)\r\n  }\r\n  goBack() {\r\n    history.back();\r\n  }\r\n  addNewAss() {\r\n    const dialogRef = this.dialog.open(ClaimNewAssessComponent, {\r\n      width: '60vw',\r\n      disableClose: true,\r\n      autoFocus: false,\r\n      data: {\r\n        isAddNewAss: true\r\n      }\r\n    });\r\n    dialogRef.afterClosed().subscribe(result => {\r\n      if (result) {\r\n\r\n      }\r\n    });\r\n  }\r\n  assignAss(element: any) {\r\n    const dialogRef = this.dialog.open(ClaimNewAssessComponent, {\r\n      width: '60vw',\r\n      disableClose: true,\r\n      autoFocus: false,\r\n      data: {\r\n        isAssignAss: true,\r\n        objID: element.objectActionRequirementID,\r\n\r\n      }\r\n    });\r\n    dialogRef.afterClosed().subscribe(result => {\r\n      if (result) {\r\n        this.fetchData();\r\n      }\r\n    });\r\n  }\r\n\r\n  data(event: any) {\r\n\r\n  }\r\n}\r\n","<div>\r\n\r\n    <div class=\"\" [hidden]=\"!beforeLoad\">\r\n        <div class=\"row mb-3 align-items-center\">\r\n            <div class=\"col-md-6\">\r\n                <label class=\"title text-afrisureRed\">{{'assessments'|translate }}</label>\r\n            </div>\r\n            <div class=\"col-md-6 pt-1 text-right\">\r\n                <button class=\"btn btn-sm btnc mx-1\" (click)=\"addNewAss()\"><em class=\"fas fa-plus fa-fw\"></em> {{\r\n                    'assessment'|translate }} </button>\r\n                <!-- <button class=\"btn btn-sm btnc mx-1\" (click)=\"assignAss()\">{{ 'Assign Assessment'   }} </button> -->\r\n\r\n            </div>\r\n        </div>\r\n        <div class=\"container\" [hidden]=\"!beforeLoad\">\r\n            <div class=\"my-2\">\r\n\r\n                <div class=\"table-responsive\" [hidden]=\"dataSource.data.length == 0\">\r\n                    <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8 mt-3\">\r\n\r\n                        <ng-container matColumnDef=\"S.No\">\r\n                            <th mat-header-cell *matHeaderCellDef class=\"text-center\">{{ 'sNo'|translate }}</th>\r\n                            <td mat-cell *matCellDef=\"let element; let i = index\" class=\"text-center\">{{ i + 1 }}</td>\r\n                        </ng-container>\r\n                        <ng-container matColumnDef=\"coverageText\">\r\n                            <th mat-header-cell *matHeaderCellDef class=\"text-center\">\r\n                                {{ 'coverage'|translate }}\r\n                            </th>\r\n                            <td mat-cell *matCellDef=\"let element\" class=\"text-truncate\">{{ element.coverageText??'-' }}\r\n                            </td>\r\n                        </ng-container>\r\n                        <ng-container matColumnDef=\"requirement\">\r\n                            <th mat-header-cell *matHeaderCellDef class=\"text-center\">\r\n                                {{ 'assignmentName'|translate }}\r\n                            </th>\r\n                            <td mat-cell *matCellDef=\"let element\" class=\"text-truncate\">{{ element.requirement??'-' }}\r\n                            </td>\r\n                        </ng-container>\r\n                        <ng-container matColumnDef=\"assigneeType\">\r\n                            <th mat-header-cell *matHeaderCellDef class=\"text-center\">\r\n                                {{ 'assigneeType'|translate }}\r\n                            </th>\r\n                            <td mat-cell *matCellDef=\"let element\" class=\"text-truncate\">{{ element.assigneeType??'-' }}\r\n                            </td>\r\n                        </ng-container>\r\n                        <ng-container matColumnDef=\"assignedOn\">\r\n                            <th mat-header-cell *matHeaderCellDef class=\"text-center\">\r\n                                {{ 'assignedDateTime'|translate }}\r\n                            </th>\r\n                            <td mat-cell *matCellDef=\"let element\" class=\"text-truncate\">{{ element.assignedOn??'-' }}\r\n                            </td>\r\n                        </ng-container>\r\n                        <ng-container matColumnDef=\"dueDate\">\r\n                            <th mat-header-cell *matHeaderCellDef class=\"text-center\">\r\n                                {{ 'targetCompletionDateTime'|translate }}\r\n                            </th>\r\n                            <td mat-cell *matCellDef=\"let element\" class=\"text-truncate\">{{ element.dueDate??'-' }}</td>\r\n                        </ng-container>\r\n                        <ng-container matColumnDef=\"elapsedTimeMinutes\">\r\n                            <th mat-header-cell *matHeaderCellDef class=\"text-center\">\r\n                                {{ 'elapsedTime'|translate }}<br>(Minutes)\r\n                            </th>\r\n                            <td mat-cell *matCellDef=\"let element\" class=\"text-truncate\">{{\r\n                                element.elapsedTimeMinutes??'-' }}</td>\r\n                        </ng-container>\r\n                        <ng-container matColumnDef=\"slaMinutes\">\r\n                            <th mat-header-cell *matHeaderCellDef class=\"text-center\">\r\n                                {{ 'actualCompletionTime'|translate }}<br>(Minutes)\r\n                            </th>\r\n                            <td mat-cell *matCellDef=\"let element\" class=\"text-end\">{{ element.slaMinutes??'-' }}\r\n                            </td>\r\n                        </ng-container>\r\n                        <ng-container matColumnDef=\"statusText\">\r\n                            <th mat-header-cell *matHeaderCellDef class=\"text-center\">\r\n                                {{ 'status'|translate }}\r\n                            </th>\r\n                            <td mat-cell *matCellDef=\"let element\" class=\"text-truncate\">{{ element.statusText??'-' }}\r\n                            </td>\r\n                        </ng-container>\r\n                        <ng-container matColumnDef=\"actions\">\r\n                            <th mat-header-cell *matHeaderCellDef class=\"text-center\">\r\n                                {{ 'actions'|translate }}\r\n                            </th>\r\n                            <td mat-cell *matCellDef=\"let element\" class=\"text-center\">\r\n                                <em class=\"fas fa-eye pointer mx-1\" *ngIf=\"element.assignedOn != null\"\r\n                                    (click)=\"goToView(element)\" title=\"{{ 'view'|translate   }}\"></em>\r\n                                <em class=\"fa fa-tasks pointer mx-1\" *ngIf=\"element.assignedOn == null\"\r\n                                    title=\"{{ 'Assign Assessment'|translate   }}\" (click)=\"assignAss(element)\"></em>\r\n                            </td>\r\n                        </ng-container>\r\n\r\n                        <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n                        <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n                    </table>\r\n                </div>\r\n\r\n                <div class=\"my-2\">\r\n                    <mat-paginator [hidden]=\"dataSource.data.length == 0\" [length]=\"dataSource.data.length\"\r\n                        [pageSizeOptions]=\"[10, 25, 100, 250, 500, 1000]\" showFirstLastButtons></mat-paginator>\r\n                </div>\r\n            </div>\r\n            <section *ngIf=\"dataSource.data.length == 0\">\r\n                <div class=\"d-sm-block mt-2 alert alert-light container text-center\">\r\n                    <p class=\"alertmsg mb-1\">{{ 'noAssessmentsAvailable'|translate }}</p>\r\n                </div>\r\n            </section>\r\n        </div>\r\n    </div>\r\n</div>","import { Component } from '@angular/core';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n@Component({\r\n  selector: 'lib-loader',\r\n  templateUrl: './loader.component.html',\r\n  styleUrl: './loader.component.scss'\r\n})\r\nexport class LoaderComponent {\r\n\r\n  loading$: any\r\n  constructor(private loaderService: LoaderService) {\r\n    this.loading$ = this.loaderService.loading$;\r\n  }\r\n}\r\n\r\n","<div *ngIf=\"loading$ | async\" class=\"overlay\">\r\n    <div class=\"loader\">\r\n      <div class=\"spinner\"></div>\r\n    </div>\r\n  </div>","import { Component, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n  selector: 'lib-message',\r\n  templateUrl: './message.component.html',\r\n  styleUrl: './message.component.scss'\r\n})\r\nexport class MessageComponent {\r\n\r\n  constructor(@Inject(MAT_DIALOG_DATA) public data: any, public dialogRef: MatDialogRef<MessageComponent>, private router: Router) { }\r\n\r\n\r\n  home() {\r\n    this.router.navigate(['home']);\r\n    this.dialogRef.close();\r\n  }\r\n  create() {\r\n    this.router.navigate(['create/create-module-config']);\r\n    this.dialogRef.close();\r\n  }\r\n  close() {\r\n    this.dialogRef.close();\r\n  }\r\n  view() {\r\n    this.router.navigate(['view/view-all-screen-configs']);\r\n    this.dialogRef.close();\r\n  }\r\n  configureBenefits() {\r\n    this.dialogRef.close(true);\r\n  }\r\n  cancel() {\r\n    this.dialogRef.close(false)\r\n  }\r\n}\r\n","<div class=\"container\" *ngIf=\"data.create\">\r\n    <div class=\"text-center\">\r\n        <h3>{{'Configuration_is_saved_successfully'|translate}}</h3>\r\n    </div>\r\n    <div class=\"text-center p-1\">\r\n        <button type=\"submit\" class=\"btn btn-success me-3 my-1 submit-button\" (click)=\"home()\"><em\r\n                class=\"fa fa-home\"></em> {{'Home'|translate}}</button>\r\n        &nbsp;\r\n        <button type=\"submit\" class=\"btn btn-success me-3 my-1 submit-button\"\r\n            (click)=\"create()\">{{'Create_Another_Form'|translate}}</button>\r\n    </div>\r\n</div>\r\n<div class=\"container\" *ngIf=\"data.benefitMapping\">\r\n    <div class=\"text-center\">\r\n        <h3>Benefit(s) mapped to the product <strong>{{data.productName}}</strong> successfully.</h3>\r\n    </div>\r\n    <div class=\"text-center p-1\">\r\n        <button class=\"btn btnNewCancel btn-sm\" (click)=\"close()\">{{'cancel'|translate}}</button>\r\n        &nbsp;\r\n        <button type=\"submit\" class=\"btn btnPC btn-sm submit-button\"\r\n            (click)=\"configureBenefits()\">{{'configure_benefits'|translate}}</button>\r\n    </div>\r\n</div>\r\n<div class=\"container\" *ngIf=\"data.edit\">\r\n    <div class=\"text-center\">\r\n        <h3>{{'Configuration_is_updated_successfully'|translate}}</h3>\r\n    </div>\r\n    <div class=\"text-center p-1\">\r\n        <button type=\"submit\" class=\"btn btn-success me-3 my-1 submit-button\" (click)=\"view()\"><em\r\n                class=\"fa fa-home\"></em> {{'Close'|translate}}</button>\r\n    </div>\r\n</div>\r\n<div class=\"container\" *ngIf=\"data.api\">\r\n    <div class=\"text-center\">\r\n        <h3>\r\n            {{'Configuration_JSON_is_not_found'|translate}}\r\n        </h3>\r\n    </div>\r\n    <div class=\"text-center p-1\">\r\n        <button type=\"submit\" class=\"btn btn-success me-3 my-1 submit-button\" (click)=\"close()\">\r\n            {{'Close'|translate}}</button>\r\n\r\n    </div>\r\n</div>\r\n\r\n<div class=\"container\" *ngIf=\"data.apiRiskInfo\">\r\n    <div class=\"text-center\">\r\n        <h3>\r\n            {{'Risk_Information_is_not_found'|translate}}\r\n        </h3>\r\n    </div>\r\n    <div class=\"text-center p-1\">\r\n        <button type=\"submit\" class=\"btn btn-success me-3 my-1 submit-button\" (click)=\"close()\">\r\n            {{'Close'|translate}}</button>\r\n\r\n    </div>\r\n</div>\r\n\r\n\r\n<div class=\"container\" *ngIf=\"data.sent\">\r\n    <div class=\"text-center\">\r\n        <h3>\r\n            {{'resend_success' | translate}}&nbsp; <span class=\"text-primary\">{{data.emailID}}</span>\r\n        </h3>\r\n    </div>\r\n    <div class=\"text-center p-1\">\r\n        <button type=\"submit\" class=\"btn btn-success me-3 my-1 submit-button\" (click)=\"close()\"> {{'ok' |\r\n            translate}}</button>\r\n    </div>\r\n</div>\r\n\r\n<div class=\"container\" *ngIf=\"data.userAction\">\r\n    <div class=\"text-center\">\r\n        <h3 *ngIf=\"data.userAction == 'blocked'\">{{'user_blocked' | translate}}</h3>\r\n        <h3 *ngIf=\"data.userAction == 'unblocked'\">{{'user_unblocked' | translate}}</h3>\r\n        <h3 *ngIf=\"data.userAction == 'unLock'\">{{'user_unlock' | translate}}</h3>\r\n        <h3 *ngIf=\"data.userAction == 'deactivate'\">{{'user_deactivate' | translate}}</h3>\r\n    </div>\r\n    <div class=\"text-center p-1\">\r\n        <button type=\"submit\" class=\"btn btn-success me-3 my-1 submit-button\" (click)=\"close()\"> {{'ok' |\r\n            translate}}</button>\r\n    </div>\r\n</div>","import { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { Component, Input, OnInit, SimpleChanges } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormlyFieldConfig, FormlyFormOptions } from '@ngx-formly/core';\r\nimport { CommonService } from '../../services/common.service';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { RestService } from '../../services/rest.service';\r\nimport { FormlyApiService } from '../../services/formly-api.service';\r\nimport { MessageComponent } from '../message/message.component';\r\n\r\n\r\n\r\n\r\n@Component({\r\n  selector: 'lib-formly-form',\r\n  templateUrl: './formly-form.component.html',\r\n  styleUrl: './formly-form.component.scss'\r\n})\r\nexport class FormlyFormComponent implements OnInit {\r\n  // fields!: FormlyFieldConfig[];\r\n\r\n  // form = new FormGroup({});\r\n  // model = {}; // For form values\r\n\r\n  // @Input() form: FormGroup = new FormGroup({});\r\n  // @Input() model: any = {}; // Ensure model is an object\r\n  // @Input() fields: FormlyFieldConfig[] = [];\r\n  // ngOnInit(): void {\r\n  //   this.fields = [\r\n  //     {\r\n  //       key: 'inputField',\r\n  //       type: 'input',  // Input field type\r\n  //       templateOptions: {\r\n  //         label: 'Input Field',\r\n  //         placeholder: 'Enter text',\r\n  //         required: true,\r\n  //       },\r\n  //     },\r\n  //     {\r\n  //       key: 'selectField',\r\n  //       type: 'select',  // Select dropdown field\r\n  //       templateOptions: {\r\n  //         label: 'Select Field',\r\n  //         options: [\r\n  //           { label: 'Option 1', value: 'option1' },\r\n  //           { label: 'Option 2', value: 'option2' },\r\n  //           { label: 'Option 3', value: 'option3' },\r\n  //         ],\r\n  //         required: true,\r\n  //       },\r\n  //     },\r\n  //     {\r\n  //       key: 'checkboxField',\r\n  //       type: 'checkbox',  // Checkbox field\r\n  //       templateOptions: {\r\n  //         label: 'Agree to terms',\r\n  //         required: true,\r\n  //       },\r\n  //     },\r\n  //     {\r\n  //       key: 'multiSelectField',\r\n  //       type: 'multi-select',  // Multi-select field\r\n  //       templateOptions: {\r\n  //         label: 'Select multiple options',\r\n  //         options: [\r\n  //           { label: 'Option 1', value: 'option1' },\r\n  //           { label: 'Option 2', value: 'option2' },\r\n  //           { label: 'Option 3', value: 'option3' },\r\n  //         ],\r\n  //       },\r\n  //     },\r\n  //     {\r\n  //       key: 'dateField',\r\n  //       type: 'datepicker',  // Datepicker field\r\n  //       templateOptions: {\r\n  //         label: 'Select Date',\r\n  //         required: true,\r\n  //       },\r\n  //     },\r\n  //     {\r\n  //       key: 'textareaField',\r\n  //       type: 'textarea',  // Textarea field\r\n  //       templateOptions: {\r\n  //         label: 'Textarea Field',\r\n  //         placeholder: 'Enter long text',\r\n  //         rows: 3,\r\n  //       },\r\n  //     },\r\n  //   ];\r\n  // }\r\n\r\n\r\n\r\n\r\n  // submit() {\r\n  //   let val = this.form.value;\r\n\r\n  //   console.log(val)\r\n  // }\r\n\r\n\r\n\r\n\r\n\r\n  ngOnInit(): void {\r\n    \r\n    this.getApiData();\r\n  }\r\n\r\n\r\n\r\n\r\n\r\n  @Input() customGuidColumn1: any;\r\n  @Input() token: any;\r\n  // customGuidColumn1: any = '02c120ae-7336-42e1-92b2-3ce39849d881'\r\n  formlyFields: FormlyFieldConfig[] = [];\r\n  form!: FormGroup;\r\n  myForm!: FormGroup;\r\n  isOnloadApiCallCompleted = false;\r\n  model: any = {};\r\n  myModel: any = {};\r\n  params: any;\r\n  yModel: any = {};\r\n  options: FormlyFormOptions = {};\r\n  myOptions: FormlyFormOptions = {};\r\n  screenConfigID: any;\r\n  employeeID: any;\r\n  fields: FormlyFieldConfig[] = [];\r\n  firstData: any = [];\r\n  masterData: MasterData[] = [];\r\n  isNormal = false;\r\n  isSection = false;\r\n  isRepeat = false;\r\n  anymodel: any;\r\n  regex: any;\r\n  myFields: any;\r\n  anyForm: any = {};\r\n  paramsFormVaild: boolean = false;\r\n  constructor(\r\n    private formlyApiService: FormlyApiService,\r\n    private dialog: MatDialog,\r\n    private restService: RestService,\r\n    private route: ActivatedRoute,\r\n    public loader: LoaderService,\r\n    private breakpointObserver: BreakpointObserver,\r\n    private router: Router,\r\n    private formBuilder: FormBuilder,\r\n    private commonService: CommonService\r\n  ) {\r\n    this.route.params.subscribe((routeParams: any) => {\r\n      this.screenConfigID = routeParams.screenConfigID;\r\n      this.employeeID = routeParams.employeeID;\r\n      // this.loader.show();\r\n      // this.getApiData();\r\n    });\r\n    this.form = this.formBuilder.group({});\r\n\r\n    this.fields = [];\r\n    this.model = {};\r\n    this.options = {};\r\n    // this.getApiData();\r\n\r\n  }\r\n\r\n  ngOnChanges(change: SimpleChanges) {\r\n    // if (change['customGuidColumn1'].currentValue && change.customGuidColumn1.currentValue?.length > 0) {\r\n    //   this.customGuidColumn1 = change.customGuidColumn1.currentValue;\r\n    if (change['customGuidColumn1']?.currentValue && change['customGuidColumn1'].currentValue?.length > 0) {\r\n      this.customGuidColumn1 = change['customGuidColumn1'].currentValue;\r\n      this.fields = [];\r\n      this.model = {};\r\n      this.options = {};\r\n      \r\n\r\n\r\n    }\r\n  }\r\n  submitJSON() {\r\n    this.fields[0].fieldGroup?.forEach((a: any) => {\r\n      this.formlyApiService.clearValidation(a);\r\n      if (a.type === 'date-time-picker') {\r\n        let format = a.formControl.value;\r\n        a.formControl.setValue(this.convertDateFormat(format));\r\n      }\r\n    });\r\n\r\n    if (this.form.invalid) {\r\n      // return;\r\n      this.formlyApiService.markAllFieldsAsTouched(this.form);\r\n      this.formlyApiService.scrollToFirstInvalidField(this.form);\r\n    } else {\r\n      //this.convertToViewJSON();\r\n      let formValue = JSON.parse(JSON.stringify(this.form.value));\r\n      const result = this.formlyApiService.convertToViewJSON(\r\n        this.fields[0].fieldGroup,\r\n        this.model,\r\n        this.myFields,\r\n        this.form,\r\n        this.myModel,\r\n        this.anymodel\r\n      );\r\n      this.myFields = result.myFields;\r\n      this.myModel = result.myModel;\r\n      this.form = result.form;\r\n      this.model = result.model;\r\n      this.anymodel = result.anymodel;\r\n      // If model value have empty string or NaN value set as Null\r\n      this.model = this.formlyApiService.setValueNull(this.model);\r\n      this.form.patchValue(this.formlyApiService.setValueNull(this.form.value));\r\n\r\n      const newFormValue = this.formlyApiService.formSubmissionData(\r\n        this.fields,\r\n        formValue\r\n      );\r\n\r\n      let params: any = newFormValue;\r\n      params['screenConfigID'] = this.screenConfigID;\r\n      if (!!this.employeeID) {\r\n        params['employeeID'] = this.employeeID;\r\n      }\r\n      let filteredModel = Object.entries(this.model).reduce(\r\n        (acc: any, [key, value]) => {\r\n          if (value !== null && value !== 'NaN' && value !== '') {\r\n            acc[key] = value;\r\n          }\r\n          return acc;\r\n        },\r\n        {}\r\n      );\r\n      let convertfield = this.myFields;\r\n\r\n      this.myFields = this.formlyApiService.convertFormFields(\r\n        filteredModel,\r\n        convertfield,\r\n        this.myModel\r\n      );\r\n      params['formJson'] = JSON.stringify({ filed: this.myFields });\r\n      this.params = {};\r\n      this.paramsFormVaild = true;\r\n      this.params = params\r\n\r\n    }\r\n  }\r\n  fieldsConversation(field: any, newFormValue: any) {\r\n    if (field.hasOwnProperty('templateOptions')) {\r\n      this.formlyApiService.default(field);\r\n    }\r\n    if (field.type == 'formly-group') {\r\n      field.fieldGroup.forEach((section: any) => {\r\n        this.formlyApiService.default(section);\r\n      });\r\n    }\r\n    if (field.type === 'select' && !field.props.multiple) {\r\n      const key = field.key;\r\n      let labelProp = field.props.labelProp;\r\n      const extractedKey = key.replace(/(ID|MDID)\\b$/, '');\r\n      let model = this.model;\r\n      const selectedOptions = field.templateOptions.options.find(\r\n        (option: any) => Object.values(option).includes(model[key])\r\n      );\r\n      const labelValues = selectedOptions ? selectedOptions[labelProp] : '';\r\n      newFormValue[extractedKey] = labelValues;\r\n    } else if (field.type === 'select' && field.props.multiple) {\r\n      let labelProp = field.props.labelProp;\r\n      let selectedValues = newFormValue[field.key];\r\n      let valProp = field.props.valueProp;\r\n      const filteredProducts = field.props.options\r\n        .filter((product: any) => selectedValues?.includes(product[valProp]))\r\n        .map((product: any) => ({\r\n          id: product[valProp],\r\n          text: product[labelProp],\r\n        }));\r\n      newFormValue[field.key] = filteredProducts || [];\r\n    } else if (field.type === 'repeat') {\r\n      field.fieldGroup.forEach((faField: any, faFieldIndex: number) => {\r\n        faField.fieldGroup.forEach((fagField: any) => {\r\n          if (\r\n            fagField.type === 'select' &&\r\n            !(\r\n              fagField?.props.hasOwnProperty('multiple') &&\r\n              fagField.props.multiple\r\n            )\r\n          ) {\r\n            const key = fagField.key;\r\n            let labelProp = fagField.props.labelProp;\r\n            const extractedKey = key.replace(/(ID|MDID)\\b$/, '');\r\n            newFormValue[field.key].forEach((faKey: any) => {\r\n              const selectedOptions = fagField.props.options.find(\r\n                (option: any) => Object.values(option).includes(faKey[key])\r\n              );\r\n              const labelValues = selectedOptions\r\n                ? selectedOptions[labelProp]\r\n                : '';\r\n              faKey[extractedKey] = labelValues;\r\n            });\r\n          } else if (\r\n            fagField.type === 'select' &&\r\n            fagField?.props.hasOwnProperty('multiple') &&\r\n            fagField.props.multiple\r\n          ) {\r\n            const key = fagField.key;\r\n            let labelProp = fagField.props.labelProp;\r\n            let selectedValues = newFormValue[field.key][faFieldIndex][key];\r\n            let valProp = fagField.props.valueProp;\r\n            const filteredProducts = fagField.props.options\r\n              .filter((product: any) =>\r\n                selectedValues?.includes(product[valProp])\r\n              )\r\n              .map((product: any) => ({\r\n                id: product[valProp],\r\n                text: product[labelProp],\r\n              }));\r\n            newFormValue[field.key][faFieldIndex][key] = filteredProducts || [];\r\n          }\r\n        });\r\n      });\r\n    } else if (field.type === 'radio') {\r\n      let key = field.key;\r\n      let val = newFormValue[key];\r\n      if (typeof val === 'string') {\r\n        if (val.toLowerCase() === 'true' || val.toLowerCase() === 'false') {\r\n          let booleanA = JSON.parse(val.toLowerCase());\r\n          newFormValue[key] = booleanA;\r\n        } else {\r\n          const key = field.key;\r\n          let labelProp = field.props.labelProp ?? 'label';\r\n          const extractedKey = key.replace(/(ID|MDID)\\b$/, '');\r\n          let model = this.model;\r\n          const selectedOptions = field.templateOptions.options.find(\r\n            (option: any) => Object.values(option).includes(model[key])\r\n          );\r\n          const labelValues = selectedOptions ? selectedOptions[labelProp] : '';\r\n          newFormValue[extractedKey] = labelValues;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  convertFormFields(filteredModel: any, field: any, customModel?: any): any {\r\n    return Object.keys(filteredModel).map((key) => {\r\n      const matchingLabel = field.find((mapping: any) => mapping.key === key);\r\n      let labelValue: string = '';\r\n      if (matchingLabel?.props) {\r\n        labelValue = matchingLabel\r\n          ? matchingLabel.props.label\r\n          : key.charAt(0).toUpperCase() + key.slice(1);\r\n      } else if (matchingLabel?.templateOptions) {\r\n        labelValue = matchingLabel\r\n          ? matchingLabel.templateOptions.label\r\n          : key.charAt(0).toUpperCase() + key.slice(1);\r\n      } else {\r\n        labelValue = key.charAt(0).toUpperCase() + key.slice(1);\r\n      }\r\n      let defaultValue;\r\n      let value = customModel ? customModel[key] : this.myModel[key];\r\n      if (value === false) {\r\n        defaultValue = 'No';\r\n      } else if (value === true) {\r\n        defaultValue = 'Yes';\r\n      } else {\r\n        defaultValue = value || '-';\r\n      }\r\n      if (matchingLabel?.type != 'repeat') {\r\n        let templateOptions: any = {\r\n          label: labelValue,\r\n          disabled: true,\r\n        };\r\n        if (matchingLabel?.type == 'view-upload-file') {\r\n          templateOptions['files'] = matchingLabel.templateOptions.files;\r\n        }\r\n        return {\r\n          key,\r\n          defaultValue,\r\n          type:\r\n            matchingLabel?.type == 'view-upload-file'\r\n              ? matchingLabel?.type\r\n              : 'input',\r\n          templateOptions: templateOptions,\r\n          wrappers: ['tooltip-icon'],\r\n          className: 'col-md-12',\r\n        };\r\n      } else {\r\n        let fieldFormArray = matchingLabel.fieldArray;\r\n        let fieldGroups = matchingLabel.fieldGroup;\r\n        fieldGroups.forEach((fieldGroupInArray: any, index: number) => {\r\n          let fieldGroupItem = fieldGroupInArray.fieldGroup;\r\n          let groupModel = this.myModel[matchingLabel.key][index];\r\n          let filteredModel = Object.entries(groupModel).reduce(\r\n            (acc: any, [key, value]) => {\r\n              if (value !== null) {\r\n                acc[key] = value;\r\n              }\r\n              return acc;\r\n            },\r\n            {}\r\n          );\r\n          fieldGroupInArray.fieldGroup = this.convertFormFields(\r\n            filteredModel,\r\n            fieldGroupItem,\r\n            groupModel\r\n          );\r\n        });\r\n        fieldFormArray.fieldGroup = fieldGroups[0];\r\n        let fieldGroupItem = {\r\n          key,\r\n          defaultValue,\r\n          type: 'repeat',\r\n          isView: true,\r\n          fieldArray: fieldFormArray,\r\n          fieldGroup: fieldGroups,\r\n          wrappers: ['tooltip-icon'],\r\n          className: 'col-md-12',\r\n        };\r\n        return fieldGroupItem;\r\n        //return matchingLabel\r\n      }\r\n    });\r\n  }\r\n\r\n  // If model value have empty string or NaN value set as Null\r\n\r\n  setValueNull(obj: any) {\r\n    for (const prop in obj) {\r\n      if (\r\n        (obj.hasOwnProperty(prop) && obj[prop] === '') ||\r\n        obj[prop] === 'NaN'\r\n      ) {\r\n        obj[prop] = null;\r\n      }\r\n    }\r\n    return obj;\r\n  }\r\n  getApiData() {\r\n    let params = {\r\n      \"templateID\": this.customGuidColumn1 ?? null,\r\n      \"tempVersionID\": null,\r\n      \"masterJsonID\": null,\r\n      \"functionalityID\": null,\r\n      \"isJsonNeed\": true\r\n    };\r\n    this.loader.show();\r\n    this.fields = [];\r\n    this.firstData = [];\r\n    this.model = {};\r\n    this.form?.markAsUntouched();\r\n    this.form = this.formBuilder.group({});\r\n    this.restService\r\n      .postUATData(\r\n        params,\r\n        'api/digital/core/MasterJson/FetchObjectTemplateVersion', this.token\r\n\r\n      )\r\n      .subscribe(\r\n        (data: any) => {\r\n          if (data.rcode === 200) {\r\n            // this.loader.hide();\r\n            if (data.rObj.configurationJson == '') {\r\n              this.dialog.open(MessageComponent, {\r\n                panelClass: ['dialog-responsive'],\r\n                disableClose: true,\r\n                data: { api: true },\r\n              });\r\n            }\r\n            let dataObj = data.rObj.templateJsons[0].createJson;\r\n\r\n            this.firstData = JSON.parse(dataObj);\r\n            this.formlyApiService.first(this.firstData, this.model);\r\n            setTimeout(() => {\r\n              this.fields = this.formlyApiService.getdata();\r\n              this.formlyFields = JSON.parse(JSON.stringify(this.fields));\r\n              this.formlyApiService.checkTypes(this.fields, this.form);\r\n              this.formlyApiService.validations(this.fields, this.form);\r\n            }, 3500);\r\n          } else {\r\n            this.loader.hide();\r\n            console.error(data.rmsg[0].errorText);\r\n          }\r\n        },\r\n        (error: any) => {\r\n          this.loader.hide();\r\n          console.error(error);\r\n        }\r\n      );\r\n  }\r\n  filterDropdownDataview(field: any, currentField?: any, index?: number) {\r\n    if (!this.anymodel) {\r\n      this.anymodel = {};\r\n    }\r\n    const key = currentField ? currentField.key : field.key;\r\n    const label = field.props?.labelProp;\r\n    const valueProp = field.props?.valueProp;\r\n    const options = field.props?.options;\r\n    const value = this.model[key];\r\n\r\n    if (field.props?.isAmount) {\r\n      const key = field.key;\r\n      const value = this.model[key];\r\n      // Check if the value in the model is a valid number\r\n      if (!isNaN(Number(value)) && this.model[key] != null) {\r\n        // Format the number based on the user's locale\r\n        const formattedAmount = new Intl.NumberFormat(undefined, {\r\n          minimumFractionDigits: 2,\r\n          maximumFractionDigits: 2,\r\n        }).format(parseFloat(value));\r\n        this.model[key] = formattedAmount;\r\n      }\r\n\r\n      \r\n    }\r\n    if (currentField && index != undefined && index > -1) {\r\n      let model = this.model[key][index];\r\n      let itemVal = model[field.key];\r\n      let itemKeyValue: any = {};\r\n      if (\r\n        this.anymodel[key] &&\r\n        this.anymodel[key].length > -1 &&\r\n        this.anymodel[key].length == index + 1\r\n      ) {\r\n        itemKeyValue = this.anymodel[key][index];\r\n      } else if (\r\n        this.anymodel[key] &&\r\n        this.anymodel[key].length > -1 &&\r\n        this.anymodel[key].length != index + 1\r\n      ) {\r\n        this.anymodel[key].push([]);\r\n        itemKeyValue = this.anymodel[key][index];\r\n      } else {\r\n        this.anymodel[key] = [];\r\n      }\r\n      if (model && options && options.length >= 2 && !field.props.multiple) {\r\n\r\n        const filter = options.find((item: any) => item[valueProp] == itemVal);\r\n        let val = filter[label];\r\n\r\n        itemKeyValue[field.key] = val;\r\n        this.anymodel[key][index] = itemKeyValue;\r\n      } else if (model && options && options.length === 1) {\r\n        let val = options?.map((obj: any) => obj[label]) || [];\r\n        itemKeyValue[field.key] = val;\r\n        this.anymodel[key][index] = itemKeyValue;\r\n      }\r\n      if (model && field.props.multiple) {\r\n        let valueFromKey = model[field.key];\r\n        let filteredOptions = options.filter((obj: any) => {\r\n          return valueFromKey.some(\r\n            (valueItem: any) => valueItem === obj[valueProp]\r\n          );\r\n        });\r\n        let key1Values = filteredOptions.map((obj: any) => obj[label]);\r\n        itemKeyValue[field.key] = key1Values.join(',');\r\n        this.anymodel[key][index] = itemKeyValue;\r\n      }\r\n    } else {\r\n      if (\r\n        this.model[key] &&\r\n        options &&\r\n        options.length >= 2 &&\r\n        !field.props.multiple\r\n      ) {\r\n        const filter = options.find((item: any) =>\r\n          Object.values(item).includes(value)\r\n        );\r\n        let val;\r\n        if (filter) {\r\n          val = filter[label];\r\n          this.anymodel[key] = val;\r\n        }\r\n      } else if (this.model[key] && options && options.length === 1) {\r\n        let val = options?.map((obj: any) => obj[label]) || [];\r\n        this.anymodel[key] = val ? val[0] : null;\r\n      }\r\n      if (this.model[key] && field.props.multiple) {\r\n        let valueFromKey = this.model[field.key];\r\n        // let filteredOptions = options.filter((obj: any) => {\r\n        //   return value.some((valueItem: any) => Object.values(obj).includes(valueItem));\r\n        // });\r\n        let filteredOptions = options.filter((obj: any) => {\r\n          return valueFromKey.some(\r\n            (valueItem: any) => valueItem === obj[valueProp]\r\n          );\r\n        });\r\n        let key1Values = filteredOptions.map((obj: any) => obj[label]);\r\n        this.anymodel[key] = key1Values;\r\n      }\r\n    }\r\n    if (this.model) {\r\n      let val = this.model[key];\r\n      if (val === 'true' || val === 'false') {\r\n        let booleanA = JSON.parse(val.toLowerCase());\r\n        this.anymodel[key] = booleanA;\r\n        return this.anymodel[key];\r\n      }\r\n    }\r\n    this.myModel = { ...this.model, ...this.anymodel };\r\n  }\r\n\r\n  convertToViewJSON() {\r\n    let field: any = this.fields[0].fieldGroup;\r\n\r\n    field.forEach((currentField: any) => {\r\n      if (currentField.type == 'datepicker') {\r\n        const fieldName = currentField.key;\r\n        const fieldValue = this.model[fieldName];\r\n        if (fieldValue instanceof Date) {\r\n          this.model[fieldName] = fieldValue\r\n          // this.model[fieldName] = format(fieldValue, 'dd-MMM-yyyy', {\r\n          //   locale: enGB,\r\n          // });\r\n        }\r\n      }\r\n      if (currentField.type == 'date-time-picker') {\r\n        const fieldName = currentField.key;\r\n        const fieldValue = this.model[fieldName];\r\n        this.model[fieldName] = this.convertDateFormat(fieldValue);\r\n      }\r\n      let fileWrapper = currentField.wrappers?.find(\r\n        (item: string) => item == 'multi-file-upload'\r\n      );\r\n      if (fileWrapper) {\r\n        (currentField.type = 'view-upload-file'),\r\n          (currentField.templateOptions.files = []);\r\n        if (!!this.form.controls[currentField.key].value) {\r\n          let uploadedFiles: any[] =\r\n            this.form.controls[currentField.key].value.attachmentID;\r\n          if (uploadedFiles?.length > 0) {\r\n            uploadedFiles.forEach((file) => {\r\n              currentField.templateOptions.files.push({\r\n                fileName: file.fileName,\r\n                href: file.uploadedURL,\r\n              });\r\n            });\r\n          }\r\n        }\r\n      }\r\n    });\r\n\r\n    this.myFields = field.map((field: any) => ({\r\n      ...field,\r\n      type:\r\n        field.type === 'repeat' || 'view-upload-file' ? field.type : 'input',\r\n      props: { ...(field.props || {}), disabled: true, required: false },\r\n    }));\r\n    this.myFields.forEach((currentfields: any) => {\r\n      const handleField = (field: any) => {\r\n        this.filterDropdownDataview(field);\r\n      };\r\n      if (currentfields.fieldGroup && currentfields.type != 'repeat') {\r\n        currentfields.fieldGroup.forEach(handleField);\r\n      } else if (\r\n        currentfields?.fieldArray?.fieldGroup &&\r\n        currentfields.type == 'repeat'\r\n      ) {\r\n        currentfields?.fieldGroup.forEach(\r\n          (fieldInArray: any, index: number) => {\r\n            fieldInArray.fieldGroup.forEach((item: any) => {\r\n              this.filterDropdownDataview(item, currentfields, index);\r\n            });\r\n          }\r\n        );\r\n      } else {\r\n        handleField(currentfields);\r\n      }\r\n    });\r\n    this.myModel = { ...this.model, ...this.anymodel };\r\n  }\r\n\r\n  setBreadCrumbs(url: string, title: string) {\r\n    let existingBC = sessionStorage.getItem('breadCrumbs');\r\n    let newBreadCrumbs = this.generateBreadcrumbs(existingBC, title, url);\r\n    sessionStorage.setItem('breadCrumbs', newBreadCrumbs);\r\n  }\r\n\r\n  generateBreadcrumbs(\r\n    existingBC: string | null,\r\n    objName: string,\r\n    url: string\r\n  ): string {\r\n    let adminSection = existingBC ? existingBC.split(' / ')[1] : '';\r\n    let defaultTitle = existingBC ? existingBC.split(' / ')[2] : '';\r\n    let title = objName ?? defaultTitle;\r\n    if (url.includes('raci')) {\r\n      return `${adminSection} / ${title} / RACI`;\r\n    } else if (url.includes('address-info')) {\r\n      return `${adminSection} / ${title} / Address Info`;\r\n    } else if (url.includes('communication-methods')) {\r\n      return `${adminSection} / ${title} / Communication Methods`;\r\n    } else if (url.includes('Geo')) {\r\n      return `${adminSection} / ${title} / Geographical details`;\r\n    } else if (url.includes('document-upload')) {\r\n      return `${adminSection} / ${title} / Document upload`;\r\n    } else if (url.includes('Pay')) {\r\n      return `${adminSection} / ${title} / Payment Methods`;\r\n    } else if (url.includes('document-upload-variant2')) {\r\n      return `${adminSection} / ${title} / Document upload V2`;\r\n    } else if (url.includes('marketing-notification')) {\r\n      return `${adminSection} / ${title} / Marketing Notification`;\r\n    } else if (url.includes('key-person-details')) {\r\n      return `${adminSection} / ${title} / Key Personnel Details`;\r\n    } else if (url.includes('cta')) {\r\n      return `${adminSection} / ${title} / CTA`;\r\n    } else if (url.includes('comment')) {\r\n      return `${adminSection} / ${title} / Comments`;\r\n    } else if (url.includes('Heirarchical')) {\r\n      return `${adminSection} / ${title} / Heirarchical Data`;\r\n    } else if (url.includes('address-info-and-communication-methods')) {\r\n      return `${adminSection} / ${title} / Address Info and Communication Methods`;\r\n    }\r\n    return '';\r\n  }\r\n\r\n  resetForm() {\r\n    this.fields = [];\r\n    this.form.reset();\r\n    this.model = {};\r\n    this.options = {};\r\n  }\r\n  isDesktop(): boolean {\r\n    return this.breakpointObserver.isMatched('(max-width: 767px)');\r\n  }\r\n\r\n  convertDateFormat(inputDateString: string): string {\r\n    // Parse the input date string into a Date object\r\n    const inputDate = new Date(inputDateString);\r\n\r\n    // Extract the date and time components\r\n    const year = inputDate.getFullYear();\r\n    const month = (inputDate.getMonth() + 1).toString().padStart(2, '0'); // Month is zero-indexed\r\n    const day = inputDate.getDate().toString().padStart(2, '0');\r\n    const hours = inputDate.getHours().toString().padStart(2, '0');\r\n    const minutes = inputDate.getMinutes().toString().padStart(2, '0');\r\n    const seconds = inputDate.getSeconds().toString().padStart(2, '0');\r\n\r\n    // Create the desired formatted string\r\n    const formattedDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\r\n\r\n    return formattedDate;\r\n  }\r\n  formSetValue() {\r\n    if (this.fields[0]?.fieldGroup) {\r\n      this.fields[0].fieldGroup.forEach((a: any) => {\r\n        if (\r\n          !a.hasOwnProperty('fieldGroup') &&\r\n          a.hasOwnProperty('templateOptions')\r\n        ) {\r\n          this.patchPreviousValue(a);\r\n        }\r\n        if (a.fieldGroup && a.type != 'repeat') {\r\n          a.fieldGroup.forEach((b: any) => {\r\n            this.patchPreviousValue(b);\r\n          });\r\n        }\r\n        if (a.type == 'repeat') {\r\n          a.fieldGroup.forEach((group: any) => {\r\n            group.fieldGroup.forEach((field: any) => {\r\n              this.patchPreviousValue(field);\r\n            });\r\n          });\r\n          a.fieldArray.fieldGroup = a.fieldGroup;\r\n        }\r\n      });\r\n    }\r\n  }\r\n  patchPreviousValue(field: any) {\r\n    const label = field.templateOptions?.labelProp ?? 'label';\r\n    const valueProp = field.templateOptions?.valueProp ?? 'value';\r\n    const options = field.templateOptions?.options;\r\n    const value = field.formControl.value;\r\n    if (\r\n      (field.type == 'select' || field.type == 'radio') &&\r\n      !field.templateOptions.multiple &&\r\n      options?.length > 0 &&\r\n      value\r\n    ) {\r\n      const filter = options.find((item: any) =>\r\n        Object.values(item).includes(value)\r\n      );\r\n      let val;\r\n      if (filter) {\r\n        val = filter[valueProp];\r\n        field.formControl.setValue(val);\r\n        \r\n      }\r\n    } else if (\r\n      field.type == 'select' &&\r\n      field.templateOptions.multiple &&\r\n      options?.length > 0 &&\r\n      value\r\n    ) {\r\n      let splitArrayLabel = field.formControl.value.split(', ');\r\n\r\n      let result = options.map((obj: any) => {\r\n        let index = splitArrayLabel.indexOf(obj[label]);\r\n        return index !== -1 ? obj[valueProp] : null;\r\n      });\r\n      let data = result.filter((a: any) => a != null);\r\n      field.formControl.setValue(data);\r\n    } else if (field.templateOptions.isAmount && value) {\r\n      let formattedAmount = field.formControl.value.replace(/[\\,\\.]/g, '');\r\n      field.formControl.setValue(formattedAmount);\r\n    }\r\n  }\r\n  formVaild() {\r\n    return this.form\r\n  }\r\n\r\n  submit() {\r\n    let val = this.form.value\r\n   \r\n  }\r\n}\r\nexport class MasterData {\r\n  \"masterDataID\": string;\r\n  \"mdCategoryID\": number;\r\n  \"mdTitle\": string;\r\n  \"mdDesc\": string;\r\n  \"mdValue\": string | null;\r\n  \"iconURL\": string | null;\r\n  \"regExValidation\": string | null;\r\n  \"parentMasterDataID\"?: string | null;\r\n  \"isCustomTag\"?: boolean | null;\r\n}","<!-- <form [formGroup]=\"form\">\r\n    <formly-form [form]=\"form\" [model]=\"model\" [fields]=\"fields\"></formly-form>\r\n\r\n    <div class=\"text-center\">\r\n        <button class=\"btn btn-primary\" (click)=\"submit()\">Submit</button>\r\n    </div>\r\n</form> -->\r\n\r\n\r\n<p class=\"d-flex justify-content-center\">{{ 'test' | translate }}</p>\r\n\r\n<button class=\"btn btnc\">ewwefwef</button>\r\n\r\n\r\n\r\n<div class=\"container\" *ngIf=\"fields.length>0\">\r\n    <div>\r\n        <form [formGroup]=\"form\">\r\n            <formly-form [model]=\"model\" [fields]=\"fields\" [options]=\"options\" [form]=\"form\"></formly-form>\r\n        </form>\r\n    </div>\r\n\r\n    <div class=\"d-flex justify-content-center\">\r\n        <button class=\"btn btnc\" (click)=\"submit()\">{{'SUbmit'|translate}}</button>\r\n\r\n    </div>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { CommonService } from '../../services/common.service';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { RestService } from '../../services/rest.service';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { FormlyFormOptions } from '@ngx-formly/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { FormlyApiService } from '../../services/formly-api.service';\r\n\r\n@Component({\r\n  selector: 'lib-formly-view',\r\n  templateUrl: './formly-view.component.html',\r\n  styleUrls: ['./formly-view.component.scss']\r\n})\r\nexport class FormlyViewComponent implements OnInit {\r\n  timelineEvents: any[] = [];\r\n  formData = [\r\n    { memberKeyAttributeText: 'Assessment Name', memberKeyAttributeDisplayValue: 'Driving License' },\r\n    { memberKeyAttributeText: 'Assessment Type', memberKeyAttributeDisplayValue: 'Self' },\r\n    { memberKeyAttributeText: 'Status', memberKeyAttributeDisplayValue: 'Completed' },\r\n    { memberKeyAttributeText: 'SLA Time', memberKeyAttributeDisplayValue: '150 mins' },\r\n    { memberKeyAttributeText: 'Assigned Date', memberKeyAttributeDisplayValue: '21/03/2022  8.02am' }\r\n  ]\r\n  @Input() claimID: any;\r\n  @Input() objID: any;\r\n  taskData: any;\r\n  formJson: any;\r\n  form !: FormGroup;\r\n  model: any = {\r\n  };\r\n  options: FormlyFormOptions = {};\r\n  screenConfigID: any;\r\n  fields: any[] = [];\r\n  claimDetails: any;\r\n  isAssign!: boolean;\r\n  isReAssign!: boolean;\r\n  createFormJson: any;\r\n  @Output() goToAss = new EventEmitter<any>();\r\n  constructor(\r\n    private dialog: MatDialog,\r\n    private loader: LoaderService,\r\n    private restService: RestService,\r\n    private router: Router,\r\n    private commonService: CommonService,\r\n    private route: ActivatedRoute,\r\n    private translate: TranslateService,\r\n    private fb: FormBuilder,\r\n    private formlyApiService: FormlyApiService\r\n  ) {\r\n\r\n\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.form = this.fb.group({});\r\n    this.getTask();\r\n\r\n    console.log(this.claimID, 'claimID')\r\n    console.log(this.objID, 'objID')\r\n  }\r\n  goBack() {\r\n    history.back();\r\n  }\r\n  goToPopup(forWhat: string) {\r\n    // const dialogRef = this.dialog.open(ClaimAssessmentsPopupComponent, {\r\n    //   width: '60vw',\r\n    //   maxHeight: '70vh',\r\n    //   height: 'inherit',\r\n    //   disableClose: true,\r\n    //   autoFocus: false,\r\n    //   data: {\r\n    //     isEnquiry: forWhat == \"ENQ\",\r\n    //     isAssign: forWhat == \"ASS\",\r\n    //     isReassign: forWhat == \"REASS\",\r\n    //     objID : this.taskData.objectActionRequirementID,\r\n    //     claimDetails : this.claimDetails\r\n    //   }\r\n    // });\r\n    // dialogRef.afterClosed().subscribe(result => {\r\n    //   if (result) {\r\n    //     this.getTask();\r\n    //   }\r\n    // });\r\n  }\r\n  getTask() {\r\n    this.isReAssign = false;\r\n    this.isAssign = false;\r\n    let params = {\r\n      objectActionRequirementID: this.objID\r\n    }\r\n\r\n    this.loader.show();\r\n    this.restService.postCoreBaseData(params, 'api/admin/ObjectTask/GetTask').subscribe({\r\n      next: (data) => {\r\n\r\n        if (data.rcode === 200) {\r\n\r\n          this.taskData = data.rObj.taskData;\r\n\r\n          this.createFormJson = data.rObj.screenConfig\r\n\r\n          if (this.taskData?.isCompleted) {\r\n            this.isReAssign = true;\r\n            // let information = data.rObj.completedTaskDetails.information;\r\n            this.formJson = JSON.parse(data.rObj.emptyViewJson);\r\n            let information = data.rObj.completedTaskDetails.information;\r\n            if (data.rObj.emptyViewJson) {\r\n              this.formJson = JSON.parse(data.rObj.emptyViewJson);\r\n              let fields = this.formJson?.filed;\r\n              // console.log(this.formJson,'viewJSon');\r\n              this.patchFormValues(fields, information);\r\n            } else {\r\n              this.loader.hide();\r\n            }\r\n\r\n          } else {\r\n            if (this.taskData.assignedOn == null) {\r\n              this.isAssign = true;\r\n            } else {\r\n              this.isReAssign = true;\r\n              this.isAssign = false;\r\n            }\r\n            this.loader.hide();\r\n          }\r\n          this.getClaim();\r\n        } else {\r\n          this.loader.hide();\r\n          this.commonService.handleRcodeError(data);\r\n        }\r\n      },\r\n      error: (error) => {\r\n        this.loader.hide();\r\n        this.commonService.handleStatusError(error)\r\n      }\r\n    }\r\n    );\r\n  }\r\n  getClaim() {\r\n    // Fetch data from your service\r\n    let params = {\r\n      \"claimID\": this.claimID\r\n    };\r\n    this.restService.postCoreBaseData(params, 'api/prodconfig/claim/GetClaim')\r\n      .subscribe(\r\n        (data) => {\r\n          if (data.rcode === 200) {\r\n            this.claimDetails = data.rObj.getClaim;\r\n          } else {\r\n            this.commonService.handleRcodeError(data)\r\n          }\r\n        },\r\n        (error) => {\r\n          this.commonService.handleStatusError(error);\r\n\r\n        }\r\n      );\r\n  }\r\n  patchFormValues(form: any, values: any) {\r\n\r\n    for (const fieldGroup of form) {\r\n      // Handle nested field groups\r\n      for (const field of fieldGroup.fieldGroup) {\r\n        if (field.fieldGroup && field.type != 'repeat') {\r\n          field.fieldGroup.forEach((section: any) => {\r\n            this.formlyApiService.patchFieldValue(section, values);\r\n          })\r\n        } else if ((!field.hasOwnProperty('fieldGroup') && field.hasOwnProperty('templateOptions')) || field.type == 'repeat') {\r\n          // Patch individual fields\r\n          this.formlyApiService.patchFieldValue(field, values);\r\n        }\r\n        // if ( field.hasOwnProperty('templateOptions') && field.templateOptions.grid) {\r\n        //   this.patchFieldGridValue(field, values,i);\r\n\r\n        // }\r\n      }\r\n    }\r\n\r\n    this.fields = form;\r\n    this.loader.hide();\r\n  }\r\n  patchFieldValue(field: any, values: any) {\r\n    field.templateOptions.label = this.translate.instant(field?.templateOptions?.label);\r\n    if (field.type == 'view-upload-file') {\r\n      field.templateOptions.files = [];\r\n      let uploadedFiles: any[] = values[field.key]?.attachmentID;\r\n      if (uploadedFiles?.length > 0) {\r\n        uploadedFiles.forEach(file => {\r\n          field.templateOptions.files.push({\r\n            \"fileName\": file.fileName,\r\n            \"href\": file.uploadedURL\r\n          })\r\n        })\r\n      }\r\n      field.defaultValue = values[field.key];\r\n    }\r\n    else if (field.key.trim().includes(\"MDID\")) {\r\n      let value = field.key.replace(\"MDID\", \"\");\r\n      field.defaultValue = value ? values[value] : \"-\";\r\n    }\r\n    else if (field.key.trim().includes(\"ID\")) {\r\n      let value = field.key.replace(\"ID\", \"\");\r\n      field.defaultValue = value ? values[value] : \"-\";\r\n    }\r\n    else if (Array.isArray(values[field.key]) && values[field.key].length > 0) {\r\n\r\n      let concatenatedText = values[field.key]?.map((item: any) => item.text).join(\", \");\r\n      field.defaultValue = concatenatedText ? concatenatedText : \"-\";\r\n    }\r\n\r\n    else {\r\n      if (typeof values[field.key] === 'boolean') {\r\n        field.defaultValue = values[field.key] ? 'Yes' : 'No';\r\n      } else {\r\n        field.defaultValue = values[field.key] != null ? values[field.key] : '-';\r\n      }\r\n\r\n    }\r\n\r\n\r\n  }\r\n  goToAssessment() {\r\n    this.goToAss.emit();\r\n  }\r\n}\r\n","<div class=\"\" *ngIf=\"isReAssign\">\r\n    <div class=\"row mb-3\">\r\n        <div class=\"col-md-5\">\r\n            <label class=\"title text-afrisureRed\">\r\n                <!-- <em class=\"fa fa-chevron-left fa-fw\" (click)=\"goBack()\"></em>  -->\r\n                {{'assessment' | translate}}{{taskData?.requirement ? ' -' + taskData?.requirement : ''}}</label>\r\n        </div>\r\n        <div class=\"col-md-7 text-right\">\r\n            <button class=\"btn btnc btn-sm enquiryBtns\" (click)=\"goToPopup('ENQ')\"><em class=\"fas fa-search fa-fw\"></em>\r\n                {{'enquiry' | translate}}</button>\r\n            <!-- <button class=\"btn btnc btn-sm enquiryBtns\" (click)=\"goToPopup('ASS')\" *ngIf=\"taskData?.assignedOn == null\"><em class=\"fas fa-tasks fa-fw\"></em> Assign Assessment</button> -->\r\n            <button class=\"btn btnc btn-sm enquiryBtns\" (click)=\"goToPopup('REASS')\"\r\n                *ngIf=\"taskData?.assignedOn != null && taskData?.completedOn == null\"><em\r\n                    class=\"fas fa-user-plus fa-fw\"></em> {{'reAssignAssessment' | translate}}</button>\r\n            <button class=\"btn btnc btn-sm enquiryBtns\" (click)=\"goToAssessment()\"><em\r\n                    class=\"fas fa-arrow-left fa-fw\"></em> {{'back' | translate}}</button>\r\n        </div>\r\n    </div>\r\n    <div class=\"row\">\r\n        <div class=\"col-md-4 col-left\">\r\n            <!-- <h4>{{'assessmentTimeline' | translate}}</h4> -->\r\n            <!-- <ul class=\"timeline\">\r\n                <li *ngFor=\"let child of timelineEvents\" [class.completed]=\"child.isCompleted\">\r\n                    <a href=\"javascript:void(0)\" class=\"font-size15px font-weight-500\" [ngClass]=\"{'menuItemActive' : child.objectActionRequirementID == objectActionRequirementID}\" >\r\n                       <span innerHTML=\"{{ child.requirement }}\"></span> <em *ngIf=\"child.objectActionRequirementID == objectActionRequirementID\"\r\n                        class=\"fa-solid fa-caret-right angleIcon\"></em> \r\n    \r\n                    </a>\r\n                    <div class=\"mt-2 font-size13px italic\">\r\n                        <div *ngIf=\"child.isCompleted && child.completedBy\">\r\n                            <p class=\"mb-1\"><span>{{ 'completedBy' | translate }}</span> : <span>{{ child.completedBy }}</span></p>\r\n                            <p><span>{{ 'completedOn' | translate }}</span> : <span>{{ child.completedOn??' - ' }}</span></p>\r\n                        </div>\r\n                        <div *ngIf=\"!child.isCompleted && child.assignedTo\">\r\n                            <p class=\"mb-1\">\r\n                                <span>{{ 'assignedTo' | translate }}</span> : <span>{{ child.assignedTo }}</span>\r\n                    \r\n                            </p>\r\n                            <p>\r\n                                <span>{{ 'assignedOn' | translate }}</span> : <span>{{ child.assignedOn??' - ' }}</span>\r\n                            </p>\r\n                        </div>\r\n                    </div>\r\n                  \r\n            </ul> -->\r\n            <ul class=\"timeline\">\r\n                <li [class.completed]=\"taskData?.isCompleted\">\r\n                    <a href=\"javascript:void(0)\" class=\"font-size15px font-weight-500\"\r\n                        [ngClass]=\"{'menuItemActive' : taskData?.objectActionRequirementID === taskData?.objectActionRequirementID}\">\r\n                        <span>{{ taskData?.requirement }}</span>\r\n                        <em *ngIf=\"taskData?.objectActionRequirementID === taskData?.objectActionRequirementID\"\r\n                            class=\"fa-solid fa-caret-right angleIcon\"></em>\r\n                    </a>\r\n                    <div class=\"mt-2 font-size13px italic\">\r\n                        <!-- Display completed info if task is completed -->\r\n                        <div *ngIf=\"taskData?.isCompleted && taskData?.completedBy\">\r\n                            <p class=\"mb-1\">\r\n                                <span>{{ 'completedBy' | translate }}</span> : <span>{{ taskData?.completedBy }}</span>\r\n                            </p>\r\n                            <p>\r\n                                <span>{{ 'completedOn' | translate }}</span> : <span>{{ taskData?.completedOn ?? ' - '\r\n                                    }}</span>\r\n                            </p>\r\n                        </div>\r\n                        <!-- Display assigned info if task is not completed -->\r\n                        <div *ngIf=\"!taskData?.isCompleted && taskData?.assignedTo\">\r\n                            <p class=\"mb-1\">\r\n                                <span>{{ 'assignedTo' | translate }}</span> : <span>{{ taskData?.assignedTo }}</span>\r\n                            </p>\r\n                            <p>\r\n                                <span>{{ 'assignedOn' | translate }}</span> : <span>{{ taskData?.assignedOn ?? ' - '\r\n                                    }}</span>\r\n                            </p>\r\n                        </div>\r\n                    </div>\r\n                </li>\r\n            </ul>\r\n\r\n        </div>\r\n        <div class=\"col-md-8 col-right\">\r\n            <section class=\"col-md- m-auto p-2\">\r\n                <!-- <div *ngFor=\"let field of formData\" class=\"mt-2\">\r\n                    <div class=\"row\">\r\n                      <div class=\"col-md-6 col-sm-6 text-right\" *ngIf=\"field.memberKeyAttributeText\">\r\n                        <strong>{{ field.memberKeyAttributeText }}</strong>&nbsp;&nbsp;&nbsp;:\r\n                      </div>\r\n                      <div class=\"col-md-6 col-sm-6 text-left\" *ngIf=\"field.memberKeyAttributeText\">\r\n                        <span>{{ field.memberKeyAttributeDisplayValue ?? '-' }}</span>\r\n                      </div>\r\n                    </div>\r\n                  </div> -->\r\n                <div class=\"mt-2\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-6 col-sm-6 text-right p-0\">\r\n                            <strong>{{'assessorType' | translate}}</strong>&nbsp;&nbsp;&nbsp;&nbsp;:\r\n                        </div>\r\n                        <div class=\"col-md-6 col-sm-6 text-left\">\r\n                            <span>{{ taskData?.isCompleted ? taskData?.completedAssessorTypeName ?? '-' :\r\n                                taskData?.assessorTypeName ?? '-' }}</span>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div class=\"row mt-2\">\r\n                        <div class=\"col-md-6 col-sm-6 text-right p-0\">\r\n                            <strong>{{'status' | translate}}</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:\r\n                        </div>\r\n                        <div class=\"col-md-6 col-sm-6 text-left\">\r\n                            <span>{{ taskData?.statusText ?? '-' }}</span>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div class=\"row mt-2\">\r\n                        <div class=\"col-md-6 col-sm-6 text-right p-0\">\r\n                            <strong>{{'sLATime' | translate}}</strong>&nbsp;&nbsp;&nbsp;&nbsp;:\r\n                        </div>\r\n                        <div class=\"col-md-6 col-sm-6 text-left\">\r\n                            <span>{{ taskData?.slaMinutes ? taskData?.slaMinutes + ' mins' : '-' }}</span>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div class=\"row mt-2\">\r\n                        <div class=\"col-md-6 col-sm-6 text-right p-0\">\r\n                            <strong>{{'assignedDate' | translate}}</strong>&nbsp;&nbsp;&nbsp;&nbsp;:\r\n                        </div>\r\n                        <div class=\"col-md-6 col-sm-6 text-left\">\r\n                            <span>{{ taskData?.assignedOn ?? '-' }}</span>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"col-md-12 col-right mb-2\" *ngIf=\"taskData?.isCompleted\">\r\n                    <section class=\"col-md-12 m-auto p-2\">\r\n                        <!-- <h4 class=\"text-center\">{{taskData?.requirement}}</h4> -->\r\n                        <form [formGroup]=\"form\">\r\n                            <formly-form [model]=\"model\" [fields]=\"fields\" [options]=\"options\"\r\n                                [form]=\"form\"></formly-form>\r\n                        </form>\r\n\r\n                    </section>\r\n                </div>\r\n            </section>\r\n        </div>\r\n    </div>\r\n</div>\r\n<div class=\"\" *ngIf=\"isAssign\">\r\n    <!-- <app-claim-user-assessment [claimDetails]=\"claimDetails\" [objID]=\"taskData.objectActionRequirementID\"\r\n        (assigned)=\"getTask()\" [createFormJson]=\"createFormJson\"\r\n        (goToAss)=\"goToAssessment()\"></app-claim-user-assessment> -->\r\n</div>","import { Component, Input, input } from '@angular/core';\r\nimport { RestService } from './services/rest.service';\r\n\r\n@Component({\r\n  selector: 'lib-my-library',\r\n  templateUrl: './my-library.component.html',\r\n  styleUrls: ['./my-library.component.scss']\r\n})\r\n\r\n\r\nexport class MyLibraryComponent {\r\n  @Input() claimID: any;\r\n  @Input() environment: any;\r\n  @Input() token: any;\r\n  @Input() customGuidColumn1: any;\r\n  @Input() objID: any;\r\n\r\n  viewAll: boolean = false;\r\n  viewPage: boolean = false;\r\n  viewAllPage: boolean = false;\r\n\r\n  constructor(\r\n    private restservice: RestService\r\n  ) { }\r\n\r\n\r\n  ngOnInit(): void {\r\n    console.log(this.token)\r\n    let env;\r\n    this.restservice.getEnv(\r\n      env = {\r\n        environment: this.environment,\r\n        token: this.token\r\n      });\r\n    if (this.claimID) {\r\n      this.viewAll = true;\r\n      this.viewAllPage = true;\r\n    }\r\n\r\n  }\r\n  goToAssessmentView(event: any) {\r\n    if (event) {\r\n      this.objID = event;\r\n      this.viewAll = false;\r\n      this.viewPage = true;\r\n    }\r\n  }\r\n\r\n  goView(event: any) {\r\n    this.viewPage = false;\r\n    this.viewAll = true;\r\n  }\r\n}\r\n","<lib-view-all [claimID]=\"claimID\" [token]=\"token\" [customGuidColumn1]=\"customGuidColumn1\"\r\n    (goView)=\"goView($event)\"></lib-view-all>\r\n<!-- <lib-assessment-view *ngIf=\"viewPage\" [claimID]=\"claimID\" [objID]=\"objID\"></lib-assessment-view> -->\r\n\r\n\r\n\r\n<lib-formly-form *ngIf=\"viewAllPage\" [customGuidColumn1]=\"customGuidColumn1\" [token]=\"token\"></lib-formly-form>\r\n\r\n<lib-formly-view [claimID]=\"claimID\" [objID]=\"objID\"></lib-formly-view>\r\n\r\n<lib-loader></lib-loader>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'lib-view',\r\n  templateUrl: './view.component.html',\r\n  styleUrl: './view.component.scss'\r\n})\r\nexport class ViewComponent {\r\n\r\n}\r\n","<p>view works!</p>\r\n","export const QuillConfiguration = {\r\n    toolbar: [\r\n        ['bold', 'italic', 'underline', 'strike'],\r\n        ['blockquote', 'code-block'],\r\n        [{ list: 'ordered' }, { list: 'bullet' }],\r\n        [{ header: [1, 2, 3, 4, 5, 6, false] }],\r\n        [{ color: [] }, { background: [] }],\r\n        ['link'],\r\n        ['image'],  // Add the 'image' option for inserting images\r\n        ['video'],  // Add the 'video' option for inserting videos\r\n        ['formula'],  // Add the 'formula' option for mathematical formulas\r\n        ['align'],  // Add the 'align' option for text alignment\r\n        [{ script: 'sub' }, { script: 'super' }],  // Subscript and Superscript\r\n        [{ 'indent': '-1' }, { 'indent': '+1' }],\r\n        ['indent', { direction: 'rtl' }],  // Right-to-left text direction\r\n        ['clean'],\r\n    ]\r\n\r\n}","import {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  OnInit,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n  forwardRef,\r\n} from '@angular/core';\r\nimport { FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\r\nimport { MatDatepicker, MatDatepickerInput } from '@angular/material/datepicker';\r\nimport { FieldWrapper, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport moment from 'moment';\r\n\r\nimport { FormlyApiService } from '../../services/formly-api.service';\r\nimport { QuillConfiguration } from '../formlyFieldTypes/quillConfiguration';\r\n\r\n@Component({\r\n  selector: 'app-tooltip-wrapper',\r\n  templateUrl: './tooltip.wrapper.html',\r\n  styles: [\r\n    `\r\n      /* .mat-icon-button i,\r\n       .mat-icon-button .mat-icon {\r\n         line-height: 14px !important;\r\n       } */\r\n      .radio {\r\n        color: gray;\r\n      }\r\n      .icon {\r\n        font-size: 14px;\r\n        margin-left: 5px;\r\n        color: #817c7c;\r\n      }\r\n      .mat-radio {\r\n        color: #817c7c;\r\n      }\r\n     \r\n      .mat-mdc-form-field-subscript-wrapper {\r\n        line-height: 0px !important;\r\n      }\r\n      .formly-tooltip-wrapper.invalid-field\r\n        .mat-mdc-radio-group\r\n        .mat-mdc-radio-button\r\n        .mdc-radio__background\r\n        .mdc-radio__outer-circle\r\n        .mdc-checkbox__background {\r\n        border-color: red !important;\r\n      }\r\n      .invalid-field {\r\n        .mdc-text-field--filled:not(.mdc-text-field--disabled)\r\n          .mdc-line-ripple::before {\r\n          border-color: red !important;\r\n        }\r\n        .mdc-text-field--filled:not(.mdc-text-field--disabled)\r\n          .mdc-line-ripple::after {\r\n          border-bottom-color: red !important;\r\n        }\r\n        .mat-mdc-radio-button\r\n          .mdc-radio:hover\r\n          .mdc-radio__native-control:not([disabled])\r\n          ~ .mdc-radio__background\r\n          .mdc-radio__outer-circle {\r\n          border-color: red !important;\r\n        }\r\n        .mat-mdc-radio-button .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{\r\n          border-color: red !important;\r\n        }\r\n      }\r\n      .input-wrapper mat-form-field {\r\n        margin-bottom: -20px !important; /* Adjust the margin as needed */\r\n        .mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control {\r\n          font-size: 14px !important;\r\n        }\r\n        .mat-mdc-select-trigger {\r\n          font-size: 14px !important;\r\n        }\r\n        .mdc-text-field--filled {\r\n          background-color: inherit !important;\r\n        }\r\n        .mdc-text-field--filled:hover {\r\n          background-color: inherit !important;\r\n        }\r\n        .mat-mdc-form-field-focus-overlay {\r\n          background-color: inherit !important;\r\n        }\r\n        .mat-mdc-form-field-infix {\r\n          padding-top: 12px !important;\r\n          padding-bottom: 4px !important;\r\n        }\r\n      }\r\n      .mat-select-search-clear {\r\n        .mat-icon {\r\n          overflow: visible !important;\r\n        }\r\n      }\r\n      .mat-datepicker-toggle .mat-mdc-icon-button.mat-mdc-button-base {\r\n        --mdc-icon-button-state-layer-size: 35px !important;\r\n        padding: 8px !important;\r\n      }\r\n     \r\n\r\n      .space {\r\n        padding-top: 1.25em;\r\n      }\r\n\r\n      .error-message {\r\n        color: #f44336;\r\n        font-size: 11px;\r\n      }\r\n      .required-icon {\r\n        color: #ff5722;\r\n      }\r\n      .tooltipIcon {\r\n        font-size: 14px;\r\n        margin-left: 3px;\r\n        color: #817c7c;\r\n        margin-bottom: 0.5px;\r\n      }\r\n      .tooltipValueIcon {\r\n        font-size: 16.2px;\r\n        margin-left: 3px;\r\n        color: #817c7c;\r\n      }\r\n      .formly-tooltip-wrapper mat-label {\r\n        font-size: 16px;\r\n        color: rgba(0, 0, 0, 0.54);\r\n      }\r\n\r\n      .mat-mdc-checkbox .mat-internal-form-field {\r\n        font-size: 16px !important;\r\n        color: #0000008a !important;\r\n      }\r\n      .mat-mdc-radio-button .mat-internal-form-field {\r\n        font-size: 15px !important;\r\n        color: #0000008a !important;\r\n      }\r\n      .valueIcon {\r\n        margin-bottom: 6px !important;\r\n      }\r\n      .custom-select-panel {\r\n        margin-bottom: 6.5%;\r\n      }\r\n      ::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled) {\r\n        background-color: none !important;\r\n      }\r\n      .mat-datetimepicker-calendar-content {\r\n        background: white !important;\r\n      }\r\n      .mat-datetimepicker-calendar-header {\r\n        background: #3f51b5 !important;\r\n        color: white !important;\r\n      }\r\n\r\n      .mat-datetimepicker-calendar[mode='auto'] {\r\n        display: flex;\r\n        width: 400px !important;\r\n        height: 260px !important;\r\n      }\r\n\r\n      .mat-datetimepicker-clock-cell.mat-datetimepicker-clock-cell-selected[_ngcontent-ldo-c447] {\r\n        color: #446ab1 !important;\r\n      }\r\n\r\n      .mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not(\r\n          [class*='mat-elevation-z']\r\n        ),\r\n      .mat-button-toggle-group-appearance-standard:not(\r\n          [class*='mat-elevation-z']\r\n        ) {\r\n        width: 100%;\r\n        height: 40px;\r\n      }\r\n\r\n      .mat-icon {\r\n        width: 20px !important;\r\n      }\r\n      .material-icons {\r\n        font-size: 20px !important;\r\n      }\r\n\r\n      .mat-mdc-icon-button svg {\r\n        --mdc-icon-button-icon-size: 20px !important;\r\n      }\r\n    `,\r\n  ],\r\n  encapsulation: ViewEncapsulation.None,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => TooltipIconWrapperComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class TooltipIconWrapperComponent\r\n  extends FieldWrapper\r\n  implements OnInit, AfterViewInit {\r\n  customControl = new FormControl();\r\n  quillConfiguration = QuillConfiguration;\r\n  isGrid = false;\r\n  optionsArray: any;\r\n  minDate: Date | null = null; // Set your minDate value\r\n  maxDate: Date | null = null; // Set your maxDate value\r\n  disabled = false; // Set disabled status\r\n  showSpinners = true; // Adjust as needed\r\n  showSeconds = false; // Adjust as needed\r\n  stepHour = 1; // Adjust as needed\r\n  stepMinute = 1; // Adjust as needed\r\n  stepSecond = 1; // Adjust as needed\r\n  touchUi = false; // Adjust as needed\r\n  color = 'primary'; // Adjust as needed\r\n  enableMeridian = false; // Adjust as needed\r\n  disableMinute = false; // Adjust as needed\r\n  hideTime = false; // Adjust as needed\r\n  @ViewChild('picker') pickerFixed?: any;\r\n  @ViewChild('searchInput') searchInput: any;\r\n  fields: FormlyFieldConfig[] = [];\r\n  getOptions() {\r\n    this.optionsArray = this.field.props?.options || [];\r\n    return this.optionsArray;\r\n  }\r\n  // restrictInput(event: KeyboardEvent) {\r\n  //   // const pattern = /[0-9.]/;\r\n\r\n  //   const field = this.field;\r\n  //   field.templateOptions.isDecimalAllowed = true;\r\n  //   const pattern = field.templateOptions.isDecimalAllowed ? /^[0-9.]*$/ : /^[0-9]*$/;\r\n  //   const inputChar = String.fromCharCode(event.keyCode);\r\n\r\n  //   // Prevent non-numeric and non-dot characters during typing\r\n  //   if (!pattern.test(inputChar) && event.keyCode !== 8) { // Allow backspace\r\n  //     event.preventDefault();\r\n  //   }\r\n  // }\r\n  @ViewChild('picker') picker!: MatDatepicker<Date>;\r\n  onDateInput(event: any) {\r\n    if (this.field.formControl) {\r\n      this.field.formControl.markAsTouched();\r\n    }\r\n\r\n    const format = 'DD/MM/YYYY';\r\n    const inputValue = event.target.value;\r\n    const isValidDate = moment(inputValue, format, true).isValid();\r\n\r\n    if (isValidDate) {\r\n\r\n      const date = this.parseDateFromString(inputValue);\r\n      // const date = inputValue;\r\n\r\n      let minVal = null;\r\n      let maxVal = null;\r\n      if (this.field?.templateOptions) {\r\n        if (this.field?.templateOptions['datepickerOptions'].min != null) {\r\n          minVal = this.field?.templateOptions['datepickerOptions'].min\r\n        }\r\n        if (this.field?.templateOptions['datepickerOptions'].max != null) {\r\n          maxVal = this.field?.templateOptions['datepickerOptions'].max\r\n        }\r\n\r\n      }\r\n\r\n\r\n\r\n      // If the entered value is a valid date\r\n      if (date) {\r\n\r\n\r\n        // Parse input date and min/max dates, stripping time by using moment and native Date\r\n        const dateVal = moment(date, 'DD/MM/YYYY').startOf('day');\r\n        const minDate = moment(minVal).startOf('day');\r\n        const maxDate = moment(maxVal).startOf('day');\r\n\r\n\r\n        if ((minDate || maxDate) && (dateVal < minDate || dateVal > maxDate)) {\r\n          if (this.field.formControl && this.field.templateOptions) {\r\n            this.field.formControl.setValue(date); // Set the valid date to form control\r\n            this.field.templateOptions['customControl'].setValue(date)\r\n            this.field.formControl.setErrors({ invalidDate: true }); // Set error if it's invalid\r\n            this.field.templateOptions['customControl'].setErrors({ invalidDate: true }); // Set error if it's invalid\r\n          }\r\n\r\n        }\r\n        else {\r\n          if (this.field.formControl && this.field?.templateOptions) {\r\n            this.field.formControl.setValue(date); // Set the valid date to form control\r\n            this.field.templateOptions['customControl'].setValue(date)\r\n          }\r\n\r\n          // this.picker.select(date); // Update the date picker with the selected date\r\n        }\r\n      }\r\n    } else {\r\n      if (this.field.formControl && this.field?.templateOptions) {\r\n        this.field.formControl.setErrors({ invalidDate: true }); // Set error if it's invalid\r\n        this.field.templateOptions['customControl'].setErrors({ invalidDate: true }); // Set error if it's invalid\r\n      }\r\n    }\r\n\r\n  }\r\n\r\n\r\n\r\n  // Helper function to parse \"dd/MM/yyyy\" format\r\n  parseDateFromString(dateString: string): Date | null {\r\n    const parts = dateString.split('/');\r\n\r\n    if (parts.length === 3) {\r\n      const day = parseInt(parts[0], 10);\r\n      const month = parseInt(parts[1], 10) - 1; // Months are zero-based in JavaScript Date\r\n      const year = parseInt(parts[2], 10);\r\n\r\n      const date = new Date(year, month, day);\r\n\r\n      // Check if the date is valid (i.e., not NaN)\r\n      if (!isNaN(date.getTime())) {\r\n        return date;\r\n      }\r\n    }\r\n\r\n    return null; // Return null if invalid\r\n  }\r\n\r\n\r\n\r\n  restrictInput(event: KeyboardEvent) {\r\n\r\n    const field: any = this.field; // Assuming you have access to `field` in this context\r\n    const inputChar = String.fromCharCode(event.keyCode);\r\n\r\n    // Check if the current value already contains a decimal point\r\n    const currentValue = field.formControl.value || '';\r\n\r\n    // Create a pattern based on whether decimals are allowed\r\n    const pattern = field.templateOptions.isDecimalAllowed\r\n      ? /^[0-9.]*$/\r\n      : /^[0-9]*$/;\r\n\r\n    // Prevent non-numeric characters during typing\r\n    if (!pattern.test(inputChar) && event.keyCode !== 8) { // Allow backspace\r\n      event.preventDefault();\r\n    }\r\n\r\n    // Prevent more than one decimal point if decimals are allowed\r\n    if (field.templateOptions.isDecimalAllowed && inputChar === '.') {\r\n      if (currentValue.includes('.')) {\r\n        event.preventDefault();\r\n      }\r\n    }\r\n  }\r\n\r\n  restrictPaste(event: ClipboardEvent) {\r\n    const clipboardData = event.clipboardData || (window as any).clipboardData;\r\n    const pastedData = clipboardData.getData('text');\r\n\r\n    // Replace all valid characters (numbers and dots), then check if anything is left.\r\n    // If there's any invalid character, prevent the paste.\r\n    if (/[^0-9.]/.test(pastedData)) {\r\n      event.preventDefault();  // Block the paste\r\n    }\r\n  }\r\n\r\n  restrictDatePaste(event: ClipboardEvent) {\r\n    const clipboardData = event.clipboardData || (window as any).clipboardData;\r\n    const pastedData = clipboardData.getData('text');\r\n\r\n    // Regular expression for DD/MM/YYYY format\r\n    const datePattern = /^([0-2]\\d|3[01])\\/(0\\d|1[0-2])\\/\\d{4}$/;\r\n\r\n    // Test the pasted data against the date pattern\r\n    if (!datePattern.test(pastedData)) {\r\n      event.preventDefault();  // Block the paste if it doesn't match DD/MM/YYYY\r\n    }\r\n  }\r\n\r\n\r\n  formatInput(formControl: any): void {\r\n    let input = formControl.value;\r\n\r\n    // Check if it's a number and convert it to a string\r\n    input = input ? input.toString() : '';\r\n\r\n    // Remove all commas from input to keep unformatted value for validation\r\n    let unformattedValue\r\n    if (this.field.templateOptions) {\r\n      unformattedValue = this.field.templateOptions['isDecimalAllowed'] == true ? input.replace(/[^0-9.]/g, '') : input.replace(/[^0-9]/g, '');\r\n    }\r\n    // Prepare an array to hold validators\r\n    const validatorsArray = [];\r\n\r\n\r\n    if (this.field.templateOptions?.required) {\r\n      validatorsArray.push(Validators.required);\r\n    }\r\n\r\n\r\n\r\n\r\n    // Check if input is non-empty\r\n    if (unformattedValue.length > 0) {\r\n      // Check and add min validator if applicable\r\n      if (this.field?.templateOptions?.min !== undefined && this.field.templateOptions.min !== null && this.field.templateOptions.hasOwnProperty('min')) {\r\n        validatorsArray.push(Validators.min(this.field.templateOptions.min));\r\n      }\r\n\r\n      // Check and add max validator if applicable\r\n      if (this.field?.templateOptions?.max !== undefined && this.field.templateOptions.max !== null && this.field.templateOptions.hasOwnProperty('max')) {\r\n        validatorsArray.push(Validators.max(this.field.templateOptions.max));\r\n      }\r\n\r\n      // Apply both validators at once\r\n      formControl.setValidators(validatorsArray);\r\n      this.field.templateOptions?.['customControl'].setValidators(validatorsArray);\r\n    } else {\r\n      // If the input is empty, clear the validators\r\n      formControl.clearValidators();\r\n      if (this.field.templateOptions) {\r\n        this.field.templateOptions['customControl'].clearValidators();\r\n      }\r\n\r\n    }\r\n\r\n    if (this.field.templateOptions) {\r\n      formControl.setValidators(validatorsArray);\r\n      this.field.templateOptions['customControl'].setValidators(validatorsArray);\r\n\r\n\r\n      // Set raw value to the form control\r\n      formControl?.setValue(unformattedValue, { emitEvent: false });\r\n      this.field.templateOptions['customControl'].setValue(unformattedValue, { emitEvent: false });\r\n      formControl.updateValueAndValidity(); // Revalidate after setting/clearing validators\r\n      this.field.templateOptions['customControl'].updateValueAndValidity();\r\n\r\n    }\r\n    let key: any = this.field.key;\r\n\r\n\r\n    if (this.field.templateOptions) {\r\n      if (this.field.templateOptions['isCommaSeparation']) {\r\n        // Apply the comma format for display purpose\r\n        const formattedInput = this.formatNumber(unformattedValue);\r\n        (document.getElementById(key) as HTMLInputElement).value = formattedInput;\r\n      }\r\n    }\r\n\r\n\r\n  }\r\n\r\n  // Formatting method for adding commas\r\n  formatNumber(value: string): string {\r\n    if (!value) return '';  // Handle empty value\r\n    const parts = value.split('.');\r\n    parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n    return parts.join('.');\r\n  }\r\n\r\n  // Method to patch value and apply formatting\r\n\r\n  //use blur method to send comma values\r\n  finalizeInput() {\r\n    let value = this.field.formControl?.value;\r\n\r\n    // Remove commas for validation purposes\r\n    const unformattedValue = value.replace(/,/g, '');\r\n    this.field.formControl?.updateValueAndValidity();\r\n\r\n    // Reformat the input with commas for display\r\n    const formattedInput = this.formatNumber(unformattedValue)\r\n\r\n    // Set the final formatted value into the form control\r\n    this.field.formControl?.setValue(formattedInput, { emitEvent: false });\r\n  }\r\n  //indian format\r\n  // formatNumber(value: string): string {\r\n  //   const parts = value.split('.');\r\n  //   parts[0] = this.formatIndianNumber(parts[0]);\r\n  //   return parts.join('.');\r\n  // }\r\n\r\n  // formatIndianNumber(value: string): string {\r\n  //   let lastThree = value.substring(value.length - 3);\r\n  //   const otherNumbers = value.substring(0, value.length - 3);\r\n  //   if (otherNumbers !== '') {\r\n  //     lastThree = ',' + lastThree;\r\n  //   }\r\n  //   const formattedNumber = otherNumbers.replace(/\\B(?=(\\d{2})+(?!\\d))/g, ',') + lastThree;\r\n  //   return formattedNumber;\r\n  // }\r\n  ngOnInit() {\r\n    // this.fields = this.formlyApiService.getdata();\r\n    if (this.field?.props) {\r\n      this.field.props['customControl'] = new FormControl();\r\n    }\r\n\r\n    setTimeout(() => {\r\n      if (this.field?.type == \"number\" && this.field?.defaultValue) {\r\n        this.formatInput(this.field.formControl)\r\n      }\r\n    }, 0);\r\n\r\n\r\n    let isRequired = this.field?.templateOptions?.required;\r\n\r\n    if (isRequired) {\r\n      if (this.field?.formControl) {\r\n        this.field.formControl.statusChanges.subscribe((status) => {\r\n          if (this.field.formControl && this.field.formControl.touched) {\r\n            this.cdr.detectChanges();\r\n          }\r\n        });\r\n      }\r\n    }\r\n\r\n    if (this.field.props) {\r\n      this.field.props['customControl'] = new FormControl({\r\n        value: null,\r\n        disabled: this.getDisable() || this.getReadonly(),\r\n      });\r\n    }\r\n\r\n\r\n    if (this.field.defaultValue != null || this.field.defaultValue != undefined) {\r\n\r\n      if (this.field['type'] === 'radio') {\r\n        let defaultvalue = this.field.defaultValue;\r\n        if (typeof defaultvalue === 'boolean') {\r\n          this.field.formControl?.setValue(\r\n            this.field.defaultValue === true ? 'true' : 'false'\r\n          );\r\n          this.field.props?.['customControl']?.setValue(\r\n            this.field.defaultValue === true ? 'true' : 'false'\r\n          );\r\n        } else {\r\n          this.field.formControl?.setValue(this.field.defaultValue);\r\n          this.field.props?.['customControl'].patchValue(\r\n            this.field.defaultValue ?? ''\r\n          );\r\n        }\r\n      } else {\r\n        this.field.props?.['customControl'].patchValue(\r\n          this.field.defaultValue ?? ''\r\n        );\r\n      }\r\n    }\r\n\r\n    this.field.props?.['customControl'].valueChanges.subscribe((value: any) => {\r\n      this.field.formControl?.setValue(value); // Update the actual Formly control's value\r\n      this.field.defaultValue = value\r\n    });\r\n\r\n\r\n    if (!this.field?.validation?.messages?.['invalidDate'] && this.field.type == \"datepicker\") {\r\n      let key = this.field?.props?.label\r\n      this.field.validation = {\r\n        messages: {\r\n          invalidDate: key ? `${key} is invalid` : 'The date you entered is invalid. Please correct it.',\r\n        }\r\n      }\r\n    }\r\n\r\n  }\r\n  constructor(public el: ElementRef, private cdr: ChangeDetectorRef, private formlyApiService: FormlyApiService) {\r\n    super();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    setTimeout(() => {\r\n      // this.checkAutofill();\r\n    }, 500); // Delay to allow autofill to be applied\r\n    this.removeAriaOwns();\r\n  }\r\n  // ngAfterViewInit() {\r\n  //   setTimeout(() => {\r\n  //     this.checkAutofill();\r\n  //   }, 500); // Delay to allow autofill to be applied\r\n  //   this.removeAriaOwns();\r\n  // }\r\n\r\n  // checkAutofill() {\r\n  //   const key: any = this.field.key;\r\n  //   const inputElement = document.getElementById(key) as HTMLInputElement;\r\n  //   const autofillValue = inputElement?.value;\r\n\r\n  //   if (autofillValue) {\r\n  //     this.formatInput(this.field.formControl);\r\n  //   }\r\n  // }\r\n\r\n\r\n  removeAriaOwns() {\r\n    // const parentElement = this.el.nativeElement.parentElement;\r\n    const element = this.el.nativeElement.querySelectorAll(\r\n      '.mat-form-field-label'\r\n    );\r\n\r\n    element.forEach((el: any) => {\r\n      if (el && el.hasAttribute('aria-owns')) {\r\n        el.removeAttribute('aria-owns');\r\n      }\r\n    });\r\n  }\r\n\r\n  getTemplateOptionsValidators(): any {\r\n    const validators: Validators[] = [];\r\n\r\n    if (this.props.required) {\r\n      validators.push(Validators.required);\r\n    }\r\n\r\n    if (this.props.pattern) {\r\n      validators.push(Validators.pattern(this.props.pattern));\r\n    }\r\n\r\n    if (this.props.minLength) {\r\n      validators.push(Validators.minLength(this.props.minLength));\r\n    }\r\n\r\n    if (this.props.maxLength) {\r\n      validators.push(Validators.maxLength(this.props.maxLength));\r\n    }\r\n    return validators;\r\n  }\r\n\r\n  getFirstErrorMessage(errors: any) {\r\n    if (errors) {\r\n      const firstErrorKey = Object.keys(errors)[0];\r\n      return this.field.validation?.messages?.[firstErrorKey] ?? '';\r\n    }\r\n    return '';\r\n  }\r\n\r\n  getMinDate() {\r\n    return this.field.props?.['datepickerOptions']?.min;\r\n  }\r\n\r\n  getMaxDate() {\r\n    return this.field.props?.['datepickerOptions']?.max;\r\n  }\r\n\r\n  getReadonly() {\r\n    return !!this.field.props?.['readOnly'];\r\n  }\r\n\r\n  getDisable() {\r\n    // return !!this.field.props?.readOnly;\r\n    return !!this.field.props?.disabled;\r\n  }\r\n\r\n  onDropdownOpened(opened: boolean): void {\r\n    if (opened) {\r\n      // Delay to ensure the searchInput is available\r\n      setTimeout(() => {\r\n        if (this.searchInput && this.searchInput.nativeElement) {\r\n          this.searchInput.nativeElement.removeAttribute('inert');\r\n          this.searchInput.nativeElement.focus();\r\n        }\r\n      }, 0);\r\n    } else {\r\n      if (this.searchInput && this.searchInput.nativeElement) {\r\n        this.searchInput.nativeElement.setAttribute('inert', '');\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div class=\"formly-tooltip-wrapper\" [ngClass]=\"{\r\n    'invalid-field':\r\n      field.formControl?.invalid && field.formControl?.touched\r\n  }\">\r\n    <label *ngIf=\"\r\n      field.type !== 'select' &&\r\n      field.type !== 'input' &&\r\n      field.type !== 'textarea' &&\r\n      field.type !== 'radio' &&\r\n      field.type !== 'number' &&\r\n      field.type !== 'datepicker' &&\r\n      field.type !== 'date-time-picker' &&\r\n      field.type != 'checkbox' &&\r\n      field.type !== 'quill-editor'\r\n    \" class=\"space\">\r\n        <mat-label>\r\n            <span class=\"label\"><span><em *ngIf=\"to?.['labelIcon']\" class=\"fa {{ to?.['labelIcon'] || '' }}\"></em>\r\n                    {{ to.label }}</span>\r\n                <span *ngIf=\"to.required\" class=\"required-icon\">*</span>\r\n            </span>\r\n\r\n            <mat-icon *ngIf=\"to['tooltip']\" matTooltip=\"{{ to['tooltip'] }}\" class=\"tooltipIcon\"\r\n                matTooltipPosition=\"right\">help</mat-icon>\r\n        </mat-label> </label><br *ngIf=\"\r\n      field.type !== 'select' &&\r\n      field.type !== 'input' &&\r\n      field.type !== 'radio' &&\r\n      field.type !== 'textarea' &&\r\n      field.type !== 'number' &&\r\n      field.type !== 'datepicker' &&\r\n      field.type !== 'date-time-picker' &&\r\n      field.type !== 'quill-editor' &&\r\n      field.type !== 'checkbox'\r\n    \" />\r\n\r\n    <!-- <ng-container #fieldComponent></ng-container> -->\r\n    <ng-container *ngIf=\"\r\n      field.type !== 'select' &&\r\n        field.type !== 'input' &&\r\n        field.type !== 'radio' &&\r\n        field.type !== 'textarea' &&\r\n        field.type !== 'number' &&\r\n        field.type !== 'datepicker' &&\r\n        field.type !== 'date-time-picker' &&\r\n        field.type !== 'quill-editor';\r\n      else selectField\r\n    \">\r\n        <div *ngIf=\"field.type != 'checkbox'; else customField\">\r\n            <ng-container #fieldComponent></ng-container>\r\n        </div>\r\n        <ng-template #customField>\r\n            <mat-checkbox id=\"{{ field.key }}\" class=\"formly-field-mat-checkbox mt-3\"\r\n                [formControl]=\"field.templateOptions?.['customControl']\"><span><span><em *ngIf=\"to?.['labelIcon']\"\r\n                            class=\"fa {{ to?.['labelIcon'] || '' }}\"></em>\r\n                        {{ to.label }}</span>\r\n                    <span *ngIf=\"to.required\" class=\"required-icon\">*</span>\r\n                </span>\r\n\r\n                <mat-icon *ngIf=\"to['tooltip']\" matTooltip=\"{{ to['tooltip'] }}\" class=\"tooltipIcon\"\r\n                    matTooltipPosition=\"right\">help</mat-icon></mat-checkbox>\r\n        </ng-template>\r\n        <div class=\"error-message py-1\" *ngIf=\"showError && !to?.['grid']\">\r\n            <mat-error *ngIf=\"field.formControl?.errors\">\r\n                {{ getFirstErrorMessage(field.formControl?.errors) }}\r\n            </mat-error>\r\n        </div>\r\n    </ng-container>\r\n\r\n    <ng-template #selectField>\r\n        <div *ngIf=\"field.type === 'select'\" class=\"input-wrapper\">\r\n            <mat-form-field style=\"width:100%\" floatLabel=\"always\">\r\n                <label>\r\n                    <mat-label>\r\n                        <span class=\"label\"><span><em *ngIf=\"to['labelIcon']\"\r\n                                    class=\"fa {{ to['labelIcon'] || '' }}\"></em>\r\n                                {{ to.label }}</span>\r\n                            <span *ngIf=\"to.required\" class=\"required-icon\">*</span></span>\r\n                        <mat-icon *ngIf=\"to['tooltip']\" matTooltip=\"{{ to['tooltip'] }}\" class=\"tooltipIcon\"\r\n                            matTooltipPosition=\"right\">help</mat-icon>\r\n                    </mat-label>\r\n                </label>\r\n                <mat-select id=\"{{ field.key }}\" *ngIf=\"!to['isOnloadAPICall']\" multiple=\"{{\r\n            to.hasOwnProperty('multiple') && to['multiple'] == true\r\n              ? true\r\n              : false\r\n          }}\" [formControl]=\"field.templateOptions?.['customControl']\" [placeholder]=\"to.placeholder??''\"\r\n                    panelClass=\"custom-select-panel\" [disabled]=\"getDisable()\" (click)=\"getOptions()\"\r\n                    (openedChange)=\"onDropdownOpened($event)\" [disabled]=\"getReadonly() || getDisable()\">\r\n                    @if( getOptions().length != 0){\r\n                    <mat-option>\r\n                        <ngx-mat-select-search #searchInput [placeholderLabel]=\"'search_placehoalder' | translate\"\r\n                            noEntriesFoundLabel=\"'No data found'\"></ngx-mat-select-search>\r\n                    </mat-option>\r\n                    <mat-option *ngFor=\"\r\n              let option of getOptions()\r\n                | filterOptions\r\n                  : searchInput.value\r\n                  : (to['labelProp'] ? to['labelProp'] : 'label')\r\n            \" [value]=\"option[to['valueProp'] ? to['valueProp'] : 'value']\"><span><em\r\n                                class=\"fa {{ option.icon }}\"></em>\r\n                            {{ option[to['labelProp'] ? to['labelProp'] : 'label'] }}</span>\r\n                        <span *ngIf=\"\r\n                option['isValueTooltipNeed'] &&\r\n                option['valueTooltipText'] != ''\r\n              \">\r\n                            <mat-icon *ngIf=\"option['valueTooltipType'] == 'plain'\"\r\n                                matTooltip=\"{{ option['valueTooltipText'] }}\" class=\"tooltipValueIcon valueIcon\"\r\n                                matTooltipPosition=\"right\">help</mat-icon>\r\n                            <ng-container *ngIf=\"option['valueTooltipType'] == 'html'\">\r\n                                <em class=\"fas fa-question-circle icon\" [ngbTooltip]=\"htmlContent\" #t=\"ngbTooltip\"\r\n                                    (click)=\"t.open(); $event.stopPropagation()\" triggers=\"mouseenter\"\r\n                                    tooltipClass=\"my-custom-class\" placement=\"right\"></em>\r\n\r\n                                <ng-template #htmlContent class=\"ml-4\">\r\n                                    <div [innerHTML]=\"option['valueTooltipText']\"></div>\r\n                                </ng-template>\r\n                            </ng-container>\r\n                        </span>\r\n                    </mat-option>\r\n                    }@else{\r\n                    <mat-option> No Data Found </mat-option>\r\n                    }\r\n                </mat-select>\r\n                <mat-select *ngIf=\"to['isOnloadAPICall']\" multiple=\"{{\r\n            to.hasOwnProperty('multiple') && to['multiple'] == true\r\n              ? true\r\n              : false\r\n          }}\" disableOptionCentering id=\"{{ field?.key }}\" [formControl]=\"field?.templateOptions?.['customControl']\"\r\n                    [placeholder]=\"to.placeholder??''\" [disabled]=\"getDisable()\" panelClass=\"custom-select-panel\"\r\n                    (click)=\"getOptions()\" [disabled]=\"getReadonly() || getDisable()\"\r\n                    (openedChange)=\"onDropdownOpened($event)\">\r\n                    @if( getOptions().length != 0){\r\n                    <mat-option>\r\n                        <ngx-mat-select-search #searchInput [placeholderLabel]=\"'search_placehoalder' | translate\"\r\n                            noEntriesFoundLabel=\"'No data found'\"></ngx-mat-select-search>\r\n                    </mat-option>\r\n                    <mat-option *ngFor=\"\r\n              let option of getOptions()\r\n                | filterOptions\r\n                  : searchInput.value\r\n                  : (to['labelProp'] ? to['labelProp'] : 'label')\r\n            \" [value]=\"option[to['valueProp'] ? to['valueProp'] : 'value']\"><span><em\r\n                                class=\"fa {{ option.icon }}\"></em>\r\n                            {{ option[to['labelProp'] ? to['labelProp'] : 'label'] }}</span>\r\n                        <span *ngIf=\"\r\n                option['isValueTooltipNeed'] &&\r\n                option['valueTooltipText'] != ''\r\n              \">\r\n                            <mat-icon *ngIf=\"option['valueTooltipType'] == 'plain'\"\r\n                                matTooltip=\"{{ option['valueTooltipText'] }}\" class=\"tooltipValueIcon valueIcon\"\r\n                                matTooltipPosition=\"right\">help</mat-icon>\r\n                            <ng-container *ngIf=\"option['valueTooltipType'] == 'html'\">\r\n                                <em class=\"fas fa-question-circle icon\" [ngbTooltip]=\"htmlContent\" #t=\"ngbTooltip\"\r\n                                    (click)=\"t.open(); $event.stopPropagation()\" triggers=\"mouseenter\"\r\n                                    tooltipClass=\"my-custom-class\" placement=\"right\"></em>\r\n\r\n                                <ng-template #htmlContent class=\"ml-4\">\r\n                                    <div [innerHTML]=\"option['valueTooltipText']\"></div>\r\n                                </ng-template>\r\n                            </ng-container>\r\n                        </span>\r\n                    </mat-option>\r\n                    }@else{\r\n                    <mat-option> No Data Found </mat-option>\r\n                    }\r\n                </mat-select>\r\n            </mat-form-field>\r\n            <div class=\"error-message py-1\" *ngIf=\"showError\">\r\n                <mat-error *ngIf=\"field.formControl?.errors\">\r\n                    {{ getFirstErrorMessage(field.formControl?.errors) }}\r\n                </mat-error>\r\n            </div>\r\n        </div>\r\n\r\n        <div *ngIf=\"field.type === 'input'\" class=\"input-wrapper\">\r\n            <mat-form-field style=\"width:100%\" floatLabel=\"always\" [ngClass]=\"{\r\n          'mat-form-field-disabled': getDisable() || getReadonly(),\r\n          'mat-form-field-invalid':\r\n            field.formControl?.invalid &&\r\n            (field.formControl?.dirty || field.formControl?.touched),\r\n          '': !getDisable() || !getReadonly()\r\n        }\">\r\n                <label>\r\n                    <mat-label>\r\n                        <span class=\"label\"><span><em *ngIf=\"to['labelIcon']\"\r\n                                    class=\"fa {{ to['labelIcon'] || '' }}\"></em>\r\n                                {{ to.label }}</span>\r\n                            <span *ngIf=\"to.required\" class=\"required-icon\">*</span></span>\r\n                        <mat-icon *ngIf=\"to['tooltip']\" matTooltip=\"{{ to['tooltip'] }}\" class=\"tooltipIcon\"\r\n                            matTooltipPosition=\"right\">help</mat-icon>\r\n                    </mat-label>\r\n                </label>\r\n\r\n                <input matInput id=\"{{ field.key }}\" placeholder=\"{{ to.placeholder }}\" *ngIf=\"!to['type']\"\r\n                    [disabled]=\"true\" [formControl]=\"field.templateOptions?.['customControl']\"\r\n                    [readonly]=\"getReadonly() || getDisable()\" />\r\n                <input matInput id=\"{{ field.key }}\" type=\"text\" placeholder=\"{{ to.placeholder }}\"\r\n                    *ngIf=\"to['type'] == 'text'\" [formControl]=\"field.templateOptions?.['customControl']\"\r\n                    [readonly]=\"getReadonly() || getDisable()\" />\r\n                <input matInput id=\"{{ field.key }}\" type=\"date\" placeholder=\"{{ to.placeholder }}\"\r\n                    *ngIf=\"to['type'] == 'date'\" [formControl]=\"field.templateOptions?.['customControl']\"\r\n                    [readonly]=\"getReadonly() || getDisable()\" />\r\n                <input matInput id=\"{{ field.key }}\" type=\"password\" placeholder=\"{{ to.placeholder }}\"\r\n                    *ngIf=\"to['type'] == 'password'\" [formControl]=\"field.templateOptions?.['customControl']\"\r\n                    [readonly]=\"getReadonly() || getDisable()\" />\r\n                <input matInput type=\"time\" id=\"{{ field.key }}\" placeholder=\"{{ to.placeholder }}\"\r\n                    *ngIf=\"to['type'] == 'time'\" [formControl]=\"field.templateOptions?.['customControl']\"\r\n                    [readonly]=\"getReadonly() || getDisable()\" />\r\n            </mat-form-field>\r\n            <div class=\"error-message py-1\" *ngIf=\"showError\">\r\n                <mat-error *ngIf=\"field.formControl?.errors\">\r\n                    {{ getFirstErrorMessage(field.formControl?.errors) }}\r\n                </mat-error>\r\n            </div>\r\n        </div>\r\n\r\n        <div *ngIf=\"field.type === 'textarea'\" class=\"input-wrapper\">\r\n            <mat-form-field style=\"width:100%\" floatLabel=\"always\" [ngClass]=\"{\r\n          'mat-form-field-disabled': getDisable() || getReadonly(),\r\n          'mat-form-field-invalid':\r\n            field.formControl?.invalid &&\r\n            (field.formControl?.dirty || field.formControl?.touched),\r\n          '': !getDisable() || !getReadonly()\r\n        }\">\r\n                <label>\r\n                    <mat-label>\r\n                        <span class=\"label\"><span><em *ngIf=\"to['labelIcon']\"\r\n                                    class=\"fa {{ to['labelIcon'] || '' }}\"></em>\r\n                                {{ to.label }}</span>\r\n                            <span *ngIf=\"to.required\" class=\"required-icon\">*</span></span>\r\n                        <mat-icon *ngIf=\"to['tooltip']\" matTooltip=\"{{ to['tooltip'] }}\" class=\"tooltipIcon\"\r\n                            matTooltipPosition=\"right\">help</mat-icon>\r\n                    </mat-label>\r\n                </label>\r\n                <textarea matInput id=\"{{ field?.key }}\" placeholder=\"{{ to.placeholder }}\"\r\n                    [formControl]=\"field.templateOptions?.['customControl']\"></textarea>\r\n            </mat-form-field>\r\n            <div class=\"error-message py-1\" *ngIf=\"showError\">\r\n                <mat-error *ngIf=\"field.formControl?.errors\">\r\n                    {{ getFirstErrorMessage(field.formControl?.errors) }}\r\n                </mat-error>\r\n            </div>\r\n        </div>\r\n        <div *ngIf=\"field.type === 'number'\" class=\"input-wrapper\">\r\n            <mat-form-field style=\"width:100%\" floatLabel=\"always\" [ngClass]=\"{\r\n          'mat-form-field-disabled': getDisable() || getReadonly(),\r\n          'mat-form-field-invalid':\r\n            field.formControl?.invalid &&\r\n            (field.formControl?.dirty || field.formControl?.touched),\r\n          '': !getDisable() || !getReadonly()\r\n        }\">\r\n                <label>\r\n                    <mat-label>\r\n                        <span class=\"label\">{{ to.label }}\r\n                            <span *ngIf=\"to.required\" class=\"required-icon\">*</span></span>\r\n                        <mat-icon *ngIf=\"to['tooltip']\" matTooltip=\"{{ to['tooltip'] }}\" class=\"tooltipIcon\"\r\n                            matTooltipPosition=\"right\">help</mat-icon>\r\n                    </mat-label>\r\n                </label>\r\n                <input matInput id=\"{{ field?.key }}\" [formControl]=\"field?.templateOptions?.['customControl']\"\r\n                    placeholder=\"{{ to.placeholder }}\" (keypress)=\"restrictInput($event)\"\r\n                    (input)=\"formatInput(field.formControl)\" (paste)=\"restrictPaste($event)\"\r\n                    (change)=\"formatInput(field.formControl)\" />\r\n            </mat-form-field>\r\n            <div class=\"error-message py-1\" *ngIf=\"showError\">\r\n                <mat-error *ngIf=\"field.formControl?.errors\">\r\n                    {{ getFirstErrorMessage(field.formControl?.errors) }}\r\n                </mat-error>\r\n            </div>\r\n        </div>\r\n        <div *ngIf=\"field.type === 'datepicker'\" class=\"input-wrapper\">\r\n            <mat-form-field style=\"width:100%\" floatLabel=\"always\" [ngClass]=\"{\r\n          'mat-form-field-disabled': getDisable() || getReadonly(),\r\n          'mat-form-field-invalid':\r\n            field.formControl?.invalid &&\r\n            (field.formControl?.dirty || field.formControl?.touched),\r\n          '': !getDisable() || !getReadonly()\r\n        }\">\r\n                <label>\r\n                    <mat-label>\r\n                        <span class=\"label\"><span><em *ngIf=\"to['labelIcon']\"\r\n                                    class=\"fa {{ to['labelIcon'] || '' }}\"></em>\r\n                                {{ to.label }}</span>\r\n                            <span *ngIf=\"to.required\" class=\"required-icon\">*</span></span>\r\n\r\n                        <mat-icon *ngIf=\"to['tooltip']\" matTooltip=\"{{ to['tooltip'] }}\" class=\"tooltipIcon\"\r\n                            matTooltipPosition=\"right\">help</mat-icon>\r\n                    </mat-label>\r\n                </label>\r\n                <input matInput id=\"{{ field.key }}\" [matDatepicker]=\"picker\" [min]=\"getMinDate()\" [max]=\"getMaxDate()\"\r\n                    [disabled]=\"getReadonly()\" [formControl]=\"field.templateOptions?.['customControl']\"\r\n                    placeholder=\"Choose date\" (click)=\"picker.open()\" (input)=\"onDateInput($event)\"\r\n                    (paste)=\"restrictDatePaste($event)\" />\r\n                <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n                <mat-datepicker #picker></mat-datepicker>\r\n            </mat-form-field>\r\n            <div class=\"error-message py-1\" *ngIf=\"showError\">\r\n                <mat-error *ngIf=\"field.formControl?.errors\">\r\n                    {{ getFirstErrorMessage(field.formControl?.errors) }}\r\n                </mat-error>\r\n            </div>\r\n        </div>\r\n\r\n        <div *ngIf=\"field.type === 'date-time-picker'\" class=\"input-wrapper\">\r\n            <mat-form-field style=\"width:100%;height:fit-content\" floatLabel=\"always\">\r\n                <label>\r\n                    <mat-label>\r\n                        <span class=\"label\"><span><em *ngIf=\"to['labelIcon']\"\r\n                                    class=\"fa {{ to['labelIcon'] || '' }}\"></em>\r\n                                {{ to.label }}</span>\r\n                            <span *ngIf=\"to.required\" class=\"required-icon\">*</span></span>\r\n\r\n                        <mat-icon *ngIf=\"to['tooltip']\" matTooltip=\"{{ to['tooltip'] }}\" class=\"tooltipIcon\"\r\n                            matTooltipPosition=\"right\">help</mat-icon>\r\n                    </mat-label>\r\n                </label>\r\n                <mat-datetimepicker-toggle [for]=\"datePicker\" matSuffix></mat-datetimepicker-toggle>\r\n                <mat-datetimepicker #datePicker type=\"datetime\" [openOnFocus]=\"true\" [timeInterval]=\"5\">\r\n                </mat-datetimepicker>\r\n                <input matInput id=\"{{ field?.key }}\" [formControl]=\"field?.templateOptions?.['customControl']\"\r\n                    id=\"datetime\" (click)=\"datePicker.open()\" (input)=\"datePicker.open()\"\r\n                    placeholder=\"Choose Date & Time\" [matDatetimepicker]=\"datePicker\" [max]=\"maxDate\" [min]=\"minDate\"\r\n                    autocomplete=\"false\" />\r\n                <!-- <input\r\n          matInput\r\n          id=\"{{ field.key }}\"\r\n          [ngxMatDatetimePicker]=\"picker\"\r\n          placeholder=\"Choose a date\"\r\n          [formControl]=\"field.templateOptions['customControl']\"\r\n          [min]=\"minDate\"\r\n          [max]=\"maxDate\"\r\n          (click)=\"pickerFixed.open()\"\r\n        />\r\n        <mat-datepicker-toggle\r\n          matSuffix\r\n          [for]=\"pickerFixed\"\r\n        ></mat-datepicker-toggle>\r\n        <ngx-mat-datetime-picker\r\n          #picker\r\n          [showSpinners]=\"showSpinners\"\r\n          [showSeconds]=\"showSeconds\"\r\n          [stepHour]=\"stepHour\"\r\n          [stepMinute]=\"stepMinute\"\r\n          [stepSecond]=\"stepSecond\"\r\n          [touchUi]=\"touchUi\"\r\n          [enableMeridian]=\"enableMeridian\"\r\n          [disableMinute]=\"disableMinute\"\r\n          [hideTime]=\"hideTime\"\r\n        >\r\n        </ngx-mat-datetime-picker> -->\r\n            </mat-form-field>\r\n\r\n            <div class=\"error-message py-1\" *ngIf=\"showError\">\r\n                <mat-error *ngIf=\"field.formControl?.errors\">\r\n                    {{ getFirstErrorMessage(field.formControl?.errors) }}\r\n                </mat-error>\r\n            </div>\r\n        </div>\r\n\r\n        <div *ngIf=\"field.type === 'quill-editor'\" class=\"input-wrapper mt-3\">\r\n            <label>\r\n                <mat-label>\r\n                    <span class=\"label\"><span><em *ngIf=\"to['labelIcon']\" class=\"fa {{ to['labelIcon'] || '' }}\"></em>\r\n                            {{ to.label }}</span>\r\n                        <span *ngIf=\"to.required\" class=\"required-icon\">*</span></span>\r\n\r\n                    <mat-icon *ngIf=\"to['tooltip']\" matTooltip=\"{{ to['tooltip'] }}\" class=\"tooltipIcon\"\r\n                        matTooltipPosition=\"right\">help</mat-icon>\r\n                </mat-label>\r\n            </label>\r\n            <quill-editor [styles]=\"{ height: '120px' }\" class=\"content-editor\" id=\"{{ field.key }}\"\r\n                [modules]=\"quillConfiguration\" [placeholder]=\"props['placeholder']??''\" [readOnly]=\"to['readOnly']\"\r\n                [formControl]=\"field.templateOptions?.['customControl']\"></quill-editor>\r\n            <div class=\"error-message py-1\" *ngIf=\"showError\">\r\n                <mat-error *ngIf=\"field.formControl?.errors\">\r\n                    {{ getFirstErrorMessage(field.formControl?.errors) }}\r\n                </mat-error>\r\n            </div>\r\n        </div>\r\n    </ng-template>\r\n    <div *ngIf=\"field.type === 'radio'\" class=\"input-wrapper mt-3\">\r\n        <label>\r\n            <mat-label>\r\n                <span class=\"label\">\r\n                    <span>\r\n                        <em *ngIf=\"to['labelIcon']\" class=\"fa {{ to['labelIcon'] || '' }}\"></em>\r\n                        {{ to.label }}\r\n                    </span>\r\n                    <span *ngIf=\"to.required\" class=\"required-icon\">*</span>\r\n                </span>\r\n            </mat-label>\r\n            <mat-icon *ngIf=\"to['tooltip']\" matTooltip=\"{{ to['tooltip'] }}\" class=\"tooltipIcon\"\r\n                matTooltipPosition=\"right\">help</mat-icon>\r\n        </label>\r\n        <br />\r\n        <mat-radio-group id=\"{{ field?.key }}\" [formControl]=\"field?.templateOptions?.['customControl']\">\r\n            @for(option of getOptions(); track option){\r\n            <mat-radio-button class=\"mat-radio\" [value]=\"option[to['valueProp'] ? to['valueProp'] : 'value']\">\r\n                <span>\r\n                    <em class=\"fa {{ option.icon }}\"></em>\r\n                    {{ option[to['labelProp'] ? to['labelProp'] : 'label'] }}\r\n                    <span *ngIf=\"\r\n              option['isValueTooltipNeed'] &&\r\n              option['valueTooltipText'] != ''\r\n            \">\r\n                        <mat-icon *ngIf=\"option['valueTooltipType'] == 'plain'\"\r\n                            matTooltip=\"{{ option['valueTooltipText'] }}\" class=\"tooltipValueIcon\"\r\n                            matTooltipPosition=\"right\">help</mat-icon>\r\n                        <ng-container *ngIf=\"option['valueTooltipType'] == 'html'\">\r\n                            <em class=\"fas fa-question-circle icon\" [ngbTooltip]=\"htmlContent\" #t=\"ngbTooltip\"\r\n                                (click)=\"t.open(); $event.stopPropagation()\" triggers=\"mouseenter\"\r\n                                tooltipClass=\"my-custom-class\" placement=\"right\"></em>\r\n\r\n                            <ng-template #htmlContent class=\"ml-4\">\r\n                                <div [innerHTML]=\"option['valueTooltipText']\"></div>\r\n                            </ng-template>\r\n                        </ng-container>\r\n                    </span>\r\n                </span>\r\n            </mat-radio-button>\r\n            }\r\n        </mat-radio-group>\r\n        <!-- <div class=\"error-message\" *ngIf=\"showError\">\r\n            <mat-error *ngIf=\"field.formControl?hasError('errors')\">\r\n                {{ getFirstErrorMessage(field.formControl?.hasError('errors')) }}\r\n            </mat-error>\r\n        </div> -->\r\n\r\n        <div class=\"error-message\" *ngIf=\"showError\">\r\n            <mat-error *ngIf=\"field.formControl?.hasError('errors')\">\r\n                {{ getFirstErrorMessage(field.formControl?.hasError('errors')) }}\r\n            </mat-error>\r\n        </div>\r\n\r\n    </div>\r\n</div>","// custom-quill-editor.component.ts\r\nimport { Component } from '@angular/core';\r\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\r\nimport { QuillConfiguration } from './quillConfiguration';\r\n// import { QuillConfiguration } from 'src/app/components/models/quillConfiguration';\r\n\r\n\r\n@Component({\r\n  selector: 'app-custom-quill-editor',\r\n  template: `\r\n  <div class = \"my-3\">\r\n  <label class=\"pb-1\"><mat-label>{{props['label']}} <mat-icon *ngIf=\"to['tooltip']\"\r\n                  matTooltip=\"{{ to['tooltip'] }}\"\r\n                  class=\"tooltip-icon \"\r\n                  matTooltipPosition=\"right\"\r\n                  >help</mat-icon></mat-label></label>\r\n    <quill-editor\r\n        [formlyAttributes]=\"field\" \r\n        [styles]=\"{'height': '120px'}\"\r\n        class=\"content-editor\"\r\n        [modules]=\"quillConfiguration\"\r\n        [placeholder]=\"props['placeholder']??''\"\r\n        [(ngModel)]=\"editorValue\"\r\n        [readOnly]=\"to['disabled']??false\"\r\n        [formControl]=\"formControl\" [formlyAttributes]=\"field\"  \r\n    ></quill-editor>\r\n  </div>\r\n  `,\r\n})\r\nexport class CustomQuillEditorComponent extends FieldType<FieldTypeConfig>  {\r\n\r\n  quillOptions = {\r\n    // Configure Quill options here\r\n  };\r\n  quillConfiguration = QuillConfiguration;\r\n  editorValue: string = '';\r\n  ngOnInit() {\r\n    if (this.field.formControl) {\r\n      this.editorValue = this.field.formControl.value || '';\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MyLibraryComponent } from '../my-library.component';\r\nimport { ViewAllComponent } from '../components/view-all/view-all.component';\r\nimport { ViewComponent } from '../components/view/view.component';\r\nimport { ClaimNewAssessComponent } from '../components/claim-new-assess/claim-new-assess.component';\r\nimport { RestService } from '../services/rest.service';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { NgxMatSelectSearchModule } from 'ngx-mat-select-search';\r\nimport { FilterOptionsPipe } from '../services/filterOption';\r\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { LoaderService } from '../services/loader.service';\r\nimport { LoaderComponent } from '../../public-api';\r\nimport { CommonService } from '../services/common.service';\r\nimport { MatDialogComponent } from '../components/mat-dialog/mat-dialog.component';\r\nimport { MatNativeDateModule, MatOptionModule } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FormlyFormComponent } from '../components/formly-form/formly-form.component';\r\n\r\nexport function HttpLoaderFactory(http: HttpClient) {\r\n  // return new TranslateHttpLoader(http, './assets/i18n/', '.json');\r\n  return new TranslateHttpLoader(http, '/assets/my-library-assests/i18n/', '.json');\r\n}\r\n\r\n\r\nimport { FormlyModule } from '@ngx-formly/core';\r\nimport { FormlyMaterialModule } from '@ngx-formly/material';\r\nimport { FormlyApiService } from '../services/formly-api.service';\r\nimport { MessageComponent } from '../components/message/message.component';\r\nimport { FormlyViewComponent } from '../components/formly-view/formly-view.component';\r\n// import { TooltipIconWrapperComponent } from '../formlyFormcontrols/wrappers/tooltip.wrapper';\r\n// import { GridTypeComponent } from '../formlyFormcontrols/formlyFieldTypes/grid.type';\r\n// import { CustomQuillEditorComponent } from '../formlyFormcontrols/formlyFieldTypes/quill-editor';\r\n// import { RepeatTypeComponent } from '../formlyFormcontrols/formlyFieldTypes/repeat';\r\n// import { ViewUploadedFileComponent } from '../formlyFormcontrols/formlyFieldTypes/view-uploaded-file';\r\n// import { PanelFieldWrapper } from '../formlyFormcontrols/wrappers/formly-wrapper';\r\n// import { MultipleFileUploadWrapper } from '../formlyFormcontrols/wrappers/multi-file-upload-wrapper';\r\n// import { CommonLabelWrapperComponent } from '../formlyFormcontrols/wrappers/phone-number.wrapper';\r\n// import { TooltipIconWrapperComponent } from '../formlyFormcontrols/wrappers/tooltip.wrapper';\r\nimport { NgbModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { FormlyBootstrapModule } from \"@ngx-formly/bootstrap\";\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { MatIcon, MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { TooltipIconWrapperComponent } from '../formlyFormcontrols/wrappers/tooltip.wrapper';\r\nimport { CustomQuillEditorComponent } from '../formlyFormcontrols/formlyFieldTypes/quill-editor';\r\nimport { QuillModule } from 'ngx-quill';\r\n\r\nimport { MatDatetimepickerModule, MatNativeDatetimeModule } from '@mat-datetimepicker/core';\r\nimport { provideAnimations } from '@angular/platform-browser/animations';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\n\r\n\r\n// export function translateFactory(http: HttpClient) {\r\n//   return new TranslateHttpLoader(http, 'assets/i18n/', '.json');\r\n// }\r\n@NgModule({\r\n  declarations: [\r\n    MyLibraryComponent,\r\n    ViewAllComponent,\r\n    ViewComponent,\r\n    ClaimNewAssessComponent,\r\n    FilterOptionsPipe,\r\n    LoaderComponent,\r\n    MatDialogComponent,\r\n    FormlyFormComponent,\r\n    MessageComponent,\r\n    FormlyViewComponent,\r\n    TooltipIconWrapperComponent,\r\n    CustomQuillEditorComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    HttpClientModule,\r\n    MatSortModule,\r\n    MatButtonModule,\r\n    MatIconModule,\r\n    MatTableModule,\r\n    MatPaginatorModule,\r\n    MatDialogModule,\r\n    ReactiveFormsModule,\r\n    MatFormFieldModule,\r\n    MatSelectModule,\r\n    MatRadioModule,\r\n    MatDatepickerModule,\r\n    MatInputModule,\r\n    MatNativeDateModule,\r\n    NgxMatSelectSearchModule,\r\n    TranslateModule.forRoot({\r\n      loader: {\r\n        provide: TranslateLoader,\r\n        useFactory: HttpLoaderFactory,\r\n        deps: [HttpClient],\r\n      },\r\n    }),\r\n\r\n\r\n    // FormlyModule.forRoot(),\r\n\r\n    QuillModule.forRoot(),\r\n    FormlyModule.forRoot({\r\n      validationMessages: [{ name: 'required', message: 'This field is required' }],\r\n      types: [\r\n        { name: 'quill-editor', component: CustomQuillEditorComponent },\r\n      ],\r\n      wrappers: [\r\n\r\n        { name: 'tooltip-icon', component: TooltipIconWrapperComponent },\r\n\r\n      ],\r\n    }),\r\n    NgbModule,\r\n    FormlyMaterialModule,\r\n    NgbTooltipModule,\r\n    FormlyBootstrapModule,\r\n    MatButtonModule,\r\n    MatOptionModule,\r\n    MatSelectModule,\r\n    NgxMatSelectSearchModule,\r\n    MatFormFieldModule,\r\n    MatInputModule,\r\n    MatTooltipModule,\r\n    MatIconModule,\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n    // MatIcon,\r\n    // MatTooltip,\r\n    // MatCheckbox\r\n\r\n    MatDatetimepickerModule,\r\n    MatNativeDatetimeModule,\r\n\r\n  ],\r\n  providers: [\r\n    RestService,\r\n    LoaderService,\r\n    CommonService,\r\n    FormlyApiService,\r\n    provideAnimations()\r\n\r\n  ],\r\n  exports: [\r\n    MyLibraryComponent,\r\n    ViewAllComponent,\r\n    ViewComponent,\r\n    ClaimNewAssessComponent,\r\n    FilterOptionsPipe,\r\n    LoaderComponent,\r\n    MatDialogComponent,\r\n    FormlyFormComponent,\r\n    MessageComponent,\r\n    FormlyViewComponent,\r\n\r\n    // Formly\r\n    FormlyModule,\r\n    FormlyMaterialModule,\r\n    // TooltipIconWrapperComponent,\r\n    FormlyMaterialModule,\r\n    NgbTooltipModule,\r\n    FormlyBootstrapModule,\r\n    MatButtonModule,\r\n    MatOptionModule,\r\n    MatSelectModule,\r\n    NgxMatSelectSearchModule,\r\n    MatFormFieldModule,\r\n    MatInputModule,\r\n    MatTooltipModule,\r\n    MatIconModule,\r\n    MatDialogModule,\r\n\r\n\r\n\r\n    // MatIcon,\r\n    // MatTooltip,\r\n    // MatCheckbox\r\n    MatDatepickerModule,\r\n    MatInputModule,\r\n    MatNativeDateModule,\r\n    MatDatetimepickerModule,\r\n    MatNativeDatetimeModule,\r\n\r\n\r\n\r\n  ]\r\n})\r\nexport class AssessmentModule {\r\n}\r\n","/*\r\n * Public API Surface of my-library\r\n */\r\n\r\n\r\n// Service\r\n\r\nexport * from './lib/my-library.service';\r\nexport * from './lib/services/rest.service';\r\nexport * from './lib/services/filterOption';\r\nexport * from './lib/services/common.service';\r\nexport * from './lib/services/loader.service';\r\nexport * from './lib/services/formly-api.service';\r\n\r\n// module\r\n\r\nexport * from './lib/assessment-module/assessment.module';\r\n\r\n// component\r\n\r\nexport * from './lib/my-library.component';\r\nexport * from './lib/components/view-all/view-all.component';\r\nexport * from './lib/components/view/view.component';\r\nexport * from './lib/components/claim-new-assess/claim-new-assess.component';\r\nexport * from './lib/components/loader/loader.component';\r\nexport * from './lib/components/mat-dialog/mat-dialog.component';\r\nexport * from './lib/components/formly-form/formly-form.component';\r\nexport * from './lib/components/message/message.component';\r\nexport * from './lib/components/formly-view/formly-view.component';\r\n\r\n// filter pipe\r\n\r\nexport * from './lib/services/filterOption';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i6","i1","i2","i3.LoaderService","i2.CommonService","i3.RestService","i4","i5.LoaderService","i7","i8","i9","i10","i11","i12","i13.FilterOptionsPipe","i1.RestService","i3","i6.CommonService","i1.LoaderService","i1.FormlyApiService","i8.CommonService","i2.LoaderService","i5.CommonService","i8.FormlyApiService","i3.ViewAllComponent","i4.LoaderComponent","i5.FormlyFormComponent","i6.FormlyViewComponent","i5","i16","i17.FilterOptionsPipe"],"mappings":"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"}