{"version":3,"file":"piserve-tech-form-builder.mjs","sources":["../../../projects/form-builder/src/lib/form-builder.service.ts","../../../projects/form-builder/src/form-creation/emitters/emitter.component.ts","../../../projects/form-builder/src/form-creation/emitters/emitter.component.html","../../../projects/form-builder/src/form-creation/form-builder.constants.ts","../../../projects/form-builder/src/services/data.service.ts","../../../projects/form-builder/src/form-creation/transalation/transalation.component.ts","../../../projects/form-builder/src/form-creation/transalation/transalation.component.html","../../../projects/form-builder/src/shared/confirmation-modal/confirmation-modal.component.ts","../../../projects/form-builder/src/shared/confirmation-modal/confirmation-modal.component.html","../../../projects/form-builder/src/shared/constants.ts","../../../projects/form-builder/src/form-creation/webhooks/webhooks.component.ts","../../../projects/form-builder/src/form-creation/webhooks/webhooks.component.html","../../../projects/form-builder/src/services/edit-state-service.service.ts","../../../projects/form-builder/src/shared/validation-failed-modal/validation-failed-modal.component.ts","../../../projects/form-builder/src/shared/validation-failed-modal/validation-failed-modal.component.html","../../../projects/form-builder/src/services/auth.service.ts","../../../projects/form-builder/src/services/api.service.ts","../../../projects/form-builder/src/services/validation.service.ts","../../../projects/form-builder/src/shared/element-id-modal/element-id-modal.component.ts","../../../projects/form-builder/src/shared/element-id-modal/element-id-modal.component.html","../../../projects/form-builder/src/services/shared.service.ts","../../../projects/form-builder/src/shared/when-clause-modal/when-clause-modal.component.ts","../../../projects/form-builder/src/shared/when-clause-modal/when-clause-modal.component.html","../../../projects/form-builder/src/form-fields/number-fields/type-number.component.ts","../../../projects/form-builder/src/form-fields/number-fields/type-number.component.html","../../../projects/form-builder/src/form-fields/dropDown-fields/drop-down.component.ts","../../../projects/form-builder/src/form-fields/dropDown-fields/drop-down.component.html","../../../projects/form-builder/src/form-fields/text-fields/textbox.component.ts","../../../projects/form-builder/src/form-fields/text-fields/textbox.component.html","../../../projects/form-builder/src/form-fields/file-picker-fields/file-picker-fields.component.ts","../../../projects/form-builder/src/form-fields/file-picker-fields/file-picker-fields.component.html","../../../projects/form-builder/src/form-fields/signature-fields/signature-fields.component.ts","../../../projects/form-builder/src/form-fields/signature-fields/signature-fields.component.html","../../../projects/form-builder/src/form-fields/slider-fields/slider-fields.component.ts","../../../projects/form-builder/src/form-fields/slider-fields/slider-fields.component.html","../../../projects/form-builder/src/form-fields/location-fields/location-fields.component.ts","../../../projects/form-builder/src/form-fields/location-fields/location-fields.component.html","../../../projects/form-builder/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.ts","../../../projects/form-builder/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.html","../../../projects/form-builder/src/form-fields/text-area-fields/text-area-fields.component.ts","../../../projects/form-builder/src/form-fields/text-area-fields/text-area-fields.component.html","../../../projects/form-builder/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.ts","../../../projects/form-builder/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.html","../../../projects/form-builder/src/form-fields/password-fields/password-fields.component.ts","../../../projects/form-builder/src/form-fields/password-fields/password-fields.component.html","../../../projects/form-builder/src/services/country.service.ts","../../../projects/form-builder/src/form-fields/mobile-fields/mobile-fields.component.ts","../../../projects/form-builder/src/form-fields/mobile-fields/mobile-fields.component.html","../../../projects/form-builder/src/form-fields/url-fields/url-fields.component.ts","../../../projects/form-builder/src/form-fields/url-fields/url-fields.component.html","../../../projects/form-builder/src/form-fields/mail-fields/mail-fields.component.ts","../../../projects/form-builder/src/form-fields/mail-fields/mail-fields.component.html","../../../projects/form-builder/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.ts","../../../projects/form-builder/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.html","../../../projects/form-builder/src/form-fields/date-time-fields/date-time-fields.component.ts","../../../projects/form-builder/src/form-fields/date-time-fields/date-time-fields.component.html","../../../projects/form-builder/src/form-fields/aggregate-function/aggregate-function.component.ts","../../../projects/form-builder/src/form-fields/aggregate-function/aggregate-function.component.html","../../../projects/form-builder/src/form-fields/currency-fields/currency-fields.component.ts","../../../projects/form-builder/src/form-fields/currency-fields/currency-fields.component.html","../../../projects/form-builder/src/form-fields/hidden-fields/hidden-fields.component.ts","../../../projects/form-builder/src/form-fields/hidden-fields/hidden-fields.component.html","../../../projects/form-builder/src/form-fields/iframe-fields/iframe-fields.component.ts","../../../projects/form-builder/src/form-fields/iframe-fields/iframe-fields.component.html","../../../projects/form-builder/src/form-field-properties/text-field-properties/text-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/text-field-properties/text-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/date-picker-field-properties/date-picker-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/date-picker-field-properties/date-picker-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/drop-down-fields-properties/drop-down-fields-properties.component.ts","../../../projects/form-builder/src/form-field-properties/drop-down-fields-properties/drop-down-fields-properties.component.html","../../../projects/form-builder/src/form-field-properties/file-picker-field-properties/file-picker-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/file-picker-field-properties/file-picker-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/signature-field-properties/signature-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/signature-field-properties/signature-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/slider-field-properties/slider-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/slider-field-properties/slider-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/location-field-properties/location-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/location-field-properties/location-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/terms-and-condition-field-properties/terms-and-condition-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/terms-and-condition-field-properties/terms-and-condition-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/toggle-switch-field-properties/toggle-switch-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/toggle-switch-field-properties/toggle-switch-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/selection-matrix-field-properties/selection-matrix-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/selection-matrix-field-properties/selection-matrix-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/text-area-field-properties/text-area-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/text-area-field-properties/text-area-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/rich-text-area-field-properties/rich-text-area-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/rich-text-area-field-properties/rich-text-area-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/password-field-properties/password-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/password-field-properties/password-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/mobile-field-properties/mobile-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/mobile-field-properties/mobile-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/url-field-properties/url-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/url-field-properties/url-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/mail-field-properties/mail-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/mail-field-properties/mail-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/number-field-properties/number-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/number-field-properties/number-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/check-box-field-properties/check-box-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/check-box-field-properties/check-box-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/sub-form-field-properties/sub-form-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/sub-form-field-properties/sub-form-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/radio-button-field-properties/radio-button-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/radio-button-field-properties/radio-button-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/currency-field-properties/currency-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/currency-field-properties/currency-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/iframe-field-properties/iframe-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/iframe-field-properties/iframe-field-properties.component.html","../../../projects/form-builder/src/section-creation/section/section.component.ts","../../../projects/form-builder/src/section-creation/section/section.component.html","../../../projects/form-builder/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.ts","../../../projects/form-builder/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.html","../../../projects/form-builder/src/childs/child-section/child-section.component.ts","../../../projects/form-builder/src/childs/child-section/child-section.component.html","../../../projects/form-builder/src/childs/child-add-form/child-add-form.component.ts","../../../projects/form-builder/src/childs/child-add-form/child-add-form.component.html","../../../projects/form-builder/src/childs/recursive-question/recursive-question.component.ts","../../../projects/form-builder/src/childs/recursive-question/recursive-question.component.html","../../../projects/form-builder/src/preview-form-fields/mail-fields/mail-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/mail-fields/mail-fields.component.html","../../../projects/form-builder/src/preview-form-fields/mobile-fields/mobile-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/mobile-fields/mobile-fields.component.html","../../../projects/form-builder/src/preview-form-fields/number-fields/number-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/number-fields/number-fields.component.html","../../../projects/form-builder/src/preview-form-fields/rich-text-editor-fields/rich-text-editor-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/rich-text-editor-fields/rich-text-editor-fields.component.html","../../../projects/form-builder/src/preview-form-fields/text-area-fields/text-area-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/text-area-fields/text-area-fields.component.html","../../../projects/form-builder/src/preview-form-fields/text-fields/text-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/text-fields/text-fields.component.html","../../../projects/form-builder/src/preview-form-fields/url-fields/url-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/url-fields/url-fields.component.html","../../../projects/form-builder/src/form-preview/multiple-subform/multiple-subform.component.ts","../../../projects/form-builder/src/form-preview/multiple-subform/multiple-subform.component.html","../../../projects/form-builder/src/section-creation/subform-default-records/subform-default-records.component.ts","../../../projects/form-builder/src/section-creation/subform-default-records/subform-default-records.component.html","../../../projects/form-builder/src/section-creation/add-form/add-form.component.ts","../../../projects/form-builder/src/section-creation/add-form/add-form.component.html","../../../projects/form-builder/src/section-creation/multi-field-questions/multi-field-questions.component.ts","../../../projects/form-builder/src/section-creation/multi-field-questions/multi-field-questions.component.html","../../../projects/form-builder/src/preview-form-fields/section-fields/section-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/section-fields/section-fields.component.html","../../../projects/form-builder/src/preview-form-fields/check-box-fields/check-box-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/check-box-fields/check-box-fields.component.html","../../../projects/form-builder/src/preview-form-fields/date-time-fields/date-time-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/date-time-fields/date-time-fields.component.html","../../../projects/form-builder/src/preview-form-fields/drop-down-fields/drop-down-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/drop-down-fields/drop-down-fields.component.html","../../../projects/form-builder/src/preview-form-fields/file-picker-fields/file-picker-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/file-picker-fields/file-picker-fields.component.html","../../../projects/form-builder/src/preview-form-fields/password-fields/password-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/password-fields/password-fields.component.html","../../../projects/form-builder/src/preview-form-fields/radio-button-fields/radio-button-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/radio-button-fields/radio-button-fields.component.html","../../../projects/form-builder/src/preview-form-fields/selection-matrix-fields/selection-matrix-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/selection-matrix-fields/selection-matrix-fields.component.html","../../../projects/form-builder/src/preview-form-fields/slider-fields/slider-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/slider-fields/slider-fields.component.html","../../../projects/form-builder/src/preview-form-fields/terms-and-condition-fields/terms-and-condition-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/terms-and-condition-fields/terms-and-condition-fields.component.html","../../../projects/form-builder/src/preview-form-fields/toggle-switch-fields/toggle-switch-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/toggle-switch-fields/toggle-switch-fields.component.html","../../../projects/form-builder/src/preview-form-fields/aggregate-function-fields/aggregate-function-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/aggregate-function-fields/aggregate-function-fields.component.html","../../../projects/form-builder/src/preview-form-fields/currency-fields/currency-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/currency-fields/currency-fields.component.html","../../../projects/form-builder/src/preview-form-fields/iframe-fields/iframe-fields.component.ts","../../../projects/form-builder/src/preview-form-fields/iframe-fields/iframe-fields.component.html","../../../projects/form-builder/src/form-preview/shared-form-element/shared-form-element.component.ts","../../../projects/form-builder/src/form-preview/shared-form-element/shared-form-element.component.html","../../../projects/form-builder/src/form-preview/recursive-element/recursive-element.component.ts","../../../projects/form-builder/src/form-preview/recursive-element/recursive-element.component.html","../../../projects/form-builder/src/form-preview/child-logic/child-logic.component.ts","../../../projects/form-builder/src/form-preview/child-logic/child-logic.component.html","../../../projects/form-builder/src/form-preview/preview-questions/preview-questions.component.ts","../../../projects/form-builder/src/form-preview/preview-questions/preview-questions.component.html","../../../projects/form-builder/src/form-preview/sub-form/sub-form.component.ts","../../../projects/form-builder/src/form-preview/sub-form/sub-form.component.html","../../../projects/form-builder/src/form-preview/question-group/question-group.component.ts","../../../projects/form-builder/src/form-preview/question-group/question-group.component.html","../../../projects/form-builder/src/form-preview/multi-field-questions/multi-field-questions.component.ts","../../../projects/form-builder/src/form-preview/multi-field-questions/multi-field-questions.component.html","../../../projects/form-builder/src/form-preview/drag-and-drop/drag-and-drop.component.ts","../../../projects/form-builder/src/form-preview/drag-and-drop/drag-and-drop.component.html","../../../projects/form-builder/src/question-group/question-group/question-group.component.ts","../../../projects/form-builder/src/question-group/question-group/question-group.component.html","../../../projects/form-builder/src/form-fields/question-logic/question-logic.component.ts","../../../projects/form-builder/src/form-fields/question-logic/question-logic.component.html","../../../projects/form-builder/src/form-creation/create-form/create-form.component.ts","../../../projects/form-builder/src/form-creation/create-form/create-form.component.html","../../../projects/form-builder/src/lib/form-builder.component.ts","../../../projects/form-builder/src/form-fields/check-box-fields/check-box-fields.component.ts","../../../projects/form-builder/src/form-fields/check-box-fields/check-box-fields.component.html","../../../projects/form-builder/src/form-fields/radio-button-fields/radio-button-fields.component.ts","../../../projects/form-builder/src/form-fields/radio-button-fields/radio-button-fields.component.html","../../../projects/form-builder/src/form-fields/form-fields.module.ts","../../../projects/form-builder/src/lib/form-builder-routing.module.ts","../../../projects/form-builder/src/form-field-properties/aggregate-field-properties/aggregate-field-properties.component.ts","../../../projects/form-builder/src/form-field-properties/aggregate-field-properties/aggregate-field-properties.component.html","../../../projects/form-builder/src/form-field-properties/form-field-properties.module.ts","../../../projects/form-builder/src/preview-form-fields/preview-form-fields.module.ts","../../../projects/form-builder/src/form-preview/form-preview.module.ts","../../../projects/form-builder/src/childs/childs.module.ts","../../../projects/form-builder/src/section-creation/section-creation.module.ts","../../../projects/form-builder/src/question-group/question-group.module.ts","../../../projects/form-builder/src/form-creation/form-creation.module.ts","../../../projects/form-builder/src/lib/form-builder.module.ts","../../../projects/form-builder/src/public-api.ts","../../../projects/form-builder/src/piserve-tech-form-builder.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FormBuilderService {\n\n  constructor() { }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n  selector: 'app-emitter',\n  templateUrl: './emitter.component.html',\n  styleUrls: ['./emitter.component.scss'],\n})\nexport class EmitterComponent {\n  emitters:any;\n  translations:any;\n  selectQuestions:any;\n  formStatus: string = '';\n  constructor(\n    @Inject(MAT_DIALOG_DATA) public data: any,\n    private dialogRef: MatDialogRef<EmitterComponent>\n  ) {\n    this.emitters = data.emitters;\n    this.translations = data.translations;\n    this.selectQuestions = this.translations\n      ?.filter(\n        (item: { language: string; entityType: string; attribute: string }) =>\n          item.language === 'eng' &&\n          item.entityType == 'QUESTION' &&\n          item.attribute == 'NAME'\n      )\n      .map((item: { translatedText: any; elementId: any }) => ({\n        label: item.translatedText,\n        value: item.elementId,\n      }));\n      this.formStatus = data.formStatus;\n  }\n  ngOnInit(): void {\n  }\n\n  onQuestionChange(emitter: any, selectedQuestionId: string) {\n    // Update the emitter's questionId\n    emitter.questionId = selectedQuestionId;\n  \n    // Check if it's valid — i.e., exists in selectQuestions\n    const isValid = this.selectQuestions.some((q:any) => q.value === selectedQuestionId);\n  \n    // Reset conflict if valid\n    emitter.isConflict = !isValid;\n  }\n\n\n\n  closeModal() {\n    this.dialogRef.close();\n  }\n\n  saveConfiguration() {\n    this.dialogRef.close(this.emitters);\n  }\n}\n","<div class=\"modalBody\">\n    <div class=\"modalHeader\">\n      <div class=\"title-div\">\n        <p class=\"title\">Emitters</p>\n      </div>\n      <div class=\"header-btn\">\n        <img\n          (click)=\"closeModal()\"\n          src=\"/assets/icons/close-icon.svg\"\n          alt=\"Close Sidebar Icon\"\n        />\n      </div>\n    </div>\n    <div class=\"modal-body\"\n    [ngClass]=\"{'disable-published':formStatus === 'PUBLISHED'}\">\n      <div\n        class=\"emitter-row\"\n        *ngFor=\"let emitter of emitters; let i = index\"\n        [ngClass]=\"{ highlight: emitter.isConflict }\"\n      >\n        <div class=\"row mb-3\">\n          <div class=\"col-md-4\">\n            <label>Key Name</label>\n            <p>{{ emitter.keyName }}</p>\n          </div>\n    \n          <div class=\"col-md-4\">\n            <label>Value Source</label>\n            <p>{{ emitter.valueSource }}</p>\n          </div>\n    \n          <div class=\"col-md-4\">\n            <label>Value</label>\n    \n            <!-- CUSTOM_INPUT: show editable input -->\n            <input\n              *ngIf=\"emitter.valueSource === 'CUSTOM_INPUT'\"\n              type=\"text\"\n              [(ngModel)]=\"emitter.inputValue\"\n              class=\"form-control\"\n              placeholder=\"Enter value\"\n            />\n    \n            <!-- QUESTION: show dropdown -->\n            <select\n              *ngIf=\"emitter.valueSource === 'QUESTION'\"\n              [(ngModel)]=\"emitter.questionId\"\n              (ngModelChange)=\"onQuestionChange(emitter, $event)\"\n              class=\"form-control\"\n            >\n              <option [ngValue]=\"null\" disabled>Select a question</option>\n              <option\n                *ngFor=\"let q of selectQuestions\"\n                [ngValue]=\"q.value\"\n              >\n                {{ q.label }}\n              </option>\n            </select>\n          </div>\n        </div>\n      </div>\n      <div *ngIf=\"emitters?.length==0 || emitters==undefined\">\n        <p class=\"text-center\">\n          No Emitters configured for this form\n        </p>\n      </div>\n    </div>\n    \n    <div class=\"modalFooter\" [ngClass]=\"{'disable-published':formStatus === 'PUBLISHED'}\">\n      <div class=\"footer-btn\">\n        <button type=\"button\" (click)=\"saveConfiguration()\">OK</button>\n      </div>\n    </div>\n</div>\n","import { Translations } from \"./form-builder.model\";\n\nexport const TRANSLATIONS: Translations[] = [\n    {\n      elementId: '',\n      language: 'eng',\n      entityType: 'QUESTION',\n      translatedText: 'email',\n      attribute: ''\n    },\n  ];\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DataService {\n\n  constructor() { }\n\n  private dataSubject = new BehaviorSubject<string>('');\n  public apiUrl$: Observable<string> = this.dataSubject.asObservable();\n  private formId = new Subject<any>();\n  private selectQuestion = new Subject<any>();\n  private pageId = new Subject<any>();\n  private logicQuestion = new Subject<any>();\n  private Question = new Subject<any>();\n  private logicId = new BehaviorSubject<any>(null);\n  private subformId = new BehaviorSubject<any>(null);\n  private transalation = new Subject<any>();\n  private subForm = new Subject<any>();\n  private subFormQuestionDeleted = new Subject<any>();\n  private multiField = new Subject<any>();\n  private multiFieldId = new BehaviorSubject<any>(null);\n  private subFormQuestion = new Subject<any>();\n  private subFormSections = new Subject<any>();\n  private deleteSections = new Subject<any>();\n  private subFormDelete = new Subject<any>();\n  private pages = new Subject<any>();\n  private file = new Subject<any>();\n  private languages = new BehaviorSubject<any>(['eng']);\n  private id = new Subject<any>();\n  private subFormQuestionDelete = new Subject<any>();\n  private minSelectionValueSource = new Subject<number>();\n  private childSubForm = new Subject<any>();\n  private subFormNewQuestion = new Subject<any>();\n  private focusQuestion = new Subject<any>();\n  minSelectionValue$ = this.minSelectionValueSource.asObservable();\n  private copiedQuestionSubject = new Subject<any>();\n  copiedQuestion$ = this.copiedQuestionSubject.asObservable();\n  private copiedSubformSubject = new Subject<any>();\n  copiedSubform$ = this.copiedSubformSubject.asObservable();\n\n  private changeSubject = new BehaviorSubject<boolean>(false);\n  public isChanged$ = this.changeSubject.asObservable();\n\n  sendData(data: any) {\n    this.formId.next(data);\n  }\n  getData() {\n    return this.formId.asObservable();\n  }\n  sendQuestion(data: any) {\n    this.selectQuestion.next(data);\n  }\n  getQuestion() {\n    return this.selectQuestion.asObservable();\n  }\n  setApiUrl(data: string): void {\n    this.dataSubject.next(data);\n  }\n  sendLogicQuestion(data: any) {\n    this.logicQuestion.next(data);\n  }\n  getLogicQuestion() {\n    return this.logicQuestion.asObservable();\n  }\n  sendPageId(data: any) {\n    this.pageId.next(data);\n  }\n  getPageId() {\n    return this.pageId.asObservable();\n  }\n  sendChildQuestions(data: any) {\n    this.Question.next(data);\n  }\n  getChilQuestions() {\n    return this.Question.asObservable();\n  }\n  sendLogicId(data: any) {\n    this.logicId.next(data);\n  }\n  getLogicId() {\n    return this.logicId.asObservable();\n  }\n  //subform\n  sendSubformQuestions(data: any) {\n    this.subForm.next(data);\n  }\n  getSubformQuestions() {\n    return this.subForm.asObservable();\n  }\n  sendSubformQuestionDeleted(data:any){\n    this.subFormQuestionDeleted.next(data);\n  }\n  getSubformQuestionDeleted(){\n    return this.subFormQuestionDeleted.asObservable();\n  }\n  sendSubformId(data: any) {\n    this.subformId.next(data);\n  }\n  getSubformId() {\n    return this.subformId.asObservable();\n  }\n  sendTransalation(data: any) {\n    this.transalation.next(data);\n  }\n  getTransalation() {\n    return this.transalation.asObservable();\n  }\n  sendsubFormQuestionDelete(data: any) {\n    this.subFormQuestionDelete.next(data);\n  }\n  getsubFormQuestionDelete() {\n    return this.subFormQuestionDelete.asObservable();\n  }\n  addNewSubFormQuestions(data: any) {\n    this.subFormQuestion.next(data);\n  }\n  getNewSubFormQuestions() {\n    return this.subFormQuestion.asObservable();\n  }\n  addSubFormSections(data: any) {\n    this.subFormSections.next(data);\n  }\n  getSubFormSections() {\n    return this.subFormSections.asObservable();\n  }\n  sendSection(data: any) {\n    this.deleteSections.next(data);\n  }\n  getSection() {\n    return this.deleteSections.asObservable();\n  }\n  sendSubFormDelete(data: any) {\n    this.subFormDelete.next(data);\n  }\n  getSubFormDelete() {\n    return this.subFormDelete.asObservable();\n  }\n  sendPages(data: any) {\n    this.pages.next(data);\n  }\n  getPages() {\n    return this.pages.asObservable();\n  }\n  sendFile(data: any) {\n    this.file.next(data);\n  }\n  getFile() {\n    return this.file.asObservable();\n  }\n  sendLanguages(data: any) {\n    this.languages.next(data);\n  }\n  getLanguages() {\n    return this.languages.asObservable();\n  }\n  sendId(data: any) {\n    this.id.next(data);\n  }\n  getID() {\n    return this.id.asObservable();\n  }\n  getAllLocalStorage(): { label: string, value: any, image: string }[] {\n    return Array.from(Array(localStorage.length).keys())\n      .map(i => {\n        const key = localStorage.key(i);\n        return key ? { label: key, value: key, image: '' } : null;\n      })\n      .filter(item => item !== null) as { label: string, value: any, image: string }[];\n  }\n  getAllSessionStorage(): { label: string, value: any, image: string }[] {\n    return Array.from(Array(sessionStorage.length).keys())\n      .map(i => {\n        const key = sessionStorage.key(i);\n        return key ? { label: key, value: sessionStorage.getItem(key), image: '' } : null;\n      })\n      .filter(item => item !== null) as { label: string, value: any, image: string }[];\n  }\n  setMinSelectionValue(value: number) {\n    this.minSelectionValueSource.next(value);\n  }\n\n  //multifield\n  sendMultiFieldQuestions(data: any) {\n    this.multiField.next(data);\n  }\n  getMultiFieldQuestions() {\n    return this.multiField.asObservable();\n  }\n  sendMultiFieldId(data: any) {\n    this.multiFieldId.next(data);\n  }\n  getMultiFieldId() {\n    return this.multiFieldId.asObservable();\n  }\n\n\n  getChildSubform(){\n    return this.childSubForm.asObservable();\n  }\n\n  sendChildSubform(data: any){\n    this.childSubForm.next(data);\n  }\n\n  //New question under the subform\n  addSubFormNewQuestion(data: any) {\n    this.subFormNewQuestion.next(data);\n  }\n  getSubFormNewQuestion() {\n    return this.subFormNewQuestion.asObservable();\n  }\n\n  emitChangeStatus(status: boolean) {\n    this.changeSubject.next(status);\n  }\n\n  sendCopiedQuestion(copiedQuestion: any) {\n    this.copiedQuestionSubject.next(copiedQuestion);\n  }\n\n  sendCopiedSubform(copiedSubform: any) {\n    this.copiedSubformSubject.next(copiedSubform);\n  }\n\n  // focus question\n\n  sendFocusQuestion(focusQuestion: any) {\n    this.focusQuestion.next(focusQuestion);\n  }\n  getFocusQuestion() {\n    return this.focusQuestion.asObservable();\n  } \n\n\n  private nameRegistry: Record<string, number> = {};\n\n  private testNameMap = new Map<string, string>();\n\n  getStableTestName(type: string, id: string): string {\n    if (this.testNameMap.has(id)) {\n      const existingName = this.testNameMap.get(id)!;\n      const existingType = existingName.replace(/-\\d+$/, '');\n      // If the existing type matches the incoming one, return as-is\n      if (existingType === type) {\n        return existingName;\n      }\n    }\n  \n    // Otherwise generate a new name and store it\n    const count = (this.nameRegistry[type] = (this.nameRegistry[type] || 0) + 1);\n    const name = `${type}-${count}`;\n    this.testNameMap.set(id, name);\n    return name;\n  }\n\n  cleanup(): void {\n    this.testNameMap.clear();\n    this.nameRegistry = {}; // Optionally reset this too\n  }\n\n  private openMenuIdSource = new BehaviorSubject<string | null>(null);\n  openMenuId$ = this.openMenuIdSource.asObservable();\n\n  setOpenMenuId(id: string | null) {\n    this.openMenuIdSource.next(id);\n  }\n\n}\n","import { Component, Inject, ElementRef } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DataService } from '../../services/data.service';\nimport { TRANSLATIONS } from '../form-builder.constants';\nimport {\n  Translations,\n  ActionButton,\n  CountryInfo,\n  GroupedData,\n} from '../form-builder.model';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n  selector: 'lib-transalation',\n  templateUrl: './transalation.component.html',\n  styleUrls: ['./transalation.component.scss'],\n})\nexport class TransalationComponent {\n  selectedCountryNames: any = [];\n  questionStates: boolean[] = [];\n  selectedItems: any[] = [];\n  countryNames: any = [];\n  currentPage: number = 0;\n  isLastPage: boolean = false;\n  isFirstPage: boolean = false;\n  size: number = 30;\n  flag: boolean = true;\n  buttons: ActionButton[] = [\n    {\n      label: 'Edit',\n      icon: 'fa-sharp fa-solid fa-pen-to-square',\n      color: 'green',\n      action: () => this.editTable(),\n    },\n    {\n      label: 'Delete',\n      icon: 'fa fa-trash',\n      color: 'red',\n      action: () => this.deleteTable(),\n    },\n  ];\n  translations: Translations[] = TRANSLATIONS;\n  languages: any;\n  DispalyLanguages: any;\n  groupedData: any = [];\n  loading: boolean = false;\n  sortedIds: any[];\n  sanitizedContent: SafeHtml = '';\n  formStatus: string = '';\n  constructor(\n    private sanitizer: DomSanitizer,\n    @Inject(MAT_DIALOG_DATA) public data: any,\n    private dataservice: DataService,\n    private elementRef: ElementRef,\n    private dialogRef: MatDialogRef<TransalationComponent>\n  ) {\n    this.translations = [...this.data.translations];\n    this.DispalyLanguages = ['English'];\n    this.languages = this.data.languages ? this.data.languages : ['eng'];\n    this.sortedIds = data.sortedIds;\n    this.formStatus = data.formStatus;\n  }\n\n  ngOnInit(): void {\n    this.groupData();\n    this.mergeTranslations();\n    this.countryNames = [{ value: 'ar', label: 'Arabic', image: '' }];\n    this.selectedItems = [];\n    this.selectedItems = [\n      ...this.selectedItems,\n      ...this.filterCountriesByValues(this.countryNames, this.languages),\n    ];\n  }\n\n  // getCountry(page: any, size: any, key: any) {\n  //   this.ApiService.getLanguage(page, size, key).subscribe((data) => {\n  //     this.isLastPage = data.result.last;\n  //     this.isFirstPage = data.result.first;\n\n  //     const newItems = this.transformCountries(data.result.content);\n\n  //     if (this.currentPage > 0) {\n  //       this.countryNames = [\n  //         ...(this.flag === false ? newItems : this.countryNames),\n  //         ...newItems.filter(item => !this.countryNames.some((existing: any) => existing.value === item.value)) // Avoid duplicates\n  //       ];\n  //     } else {\n  //       this.countryNames = [\n  //         ...newItems.filter(item => !this.countryNames.some((existing: any) => existing.value === item.value)), // Avoid duplicates\n  //         ...(this.flag === false ? newItems : this.countryNames),\n  //       ];\n  //     }\n\n  //     this.updateSelectedCountry();\n  //   });\n  // }\n\n  updateSelectedCountry() {\n    this.DispalyLanguages = ['English'];\n    this.selectedItems.forEach((item) => {\n      const selectedLanguage = item.value;\n      this.DispalyLanguages.push(item.label);\n      if (!this.languages.includes(selectedLanguage)) {\n        const filteredData = this.translations.filter(\n          (item) => item.language === 'eng'\n        );\n        const selectedLanguageTranslation = filteredData.map((element) => {\n          if (\n            ['SELECTION_MATRIX_COLUMN', 'SELECTION_MATRIX_LABEL'].includes(\n              element.attribute\n            )\n          ) {\n            return {\n              ...element,\n              language: selectedLanguage,\n              translatedText: this.isParsableJSON(element.translatedText)\n                ? Array(JSON.parse(element.translatedText).length).fill('')\n                : '',\n            };\n          }\n          return {\n            ...element,\n            language: selectedLanguage,\n            translatedText: '',\n          };\n        });\n        this.translations = [\n          ...this.translations,\n          ...selectedLanguageTranslation,\n        ];\n        this.languages.push(selectedLanguage);\n        this.dataservice.sendLanguages(this.languages);\n        this.uniqueData();\n        this.mergeTranslations();\n      }\n    });\n    if (this.selectedItems.length === 0) {\n      const language = 'eng';\n      this.translations = this.translations.filter((item) =>\n        language.includes(item.language)\n      );\n      this.languages = [language];\n      this.dataservice.sendLanguages(this.languages);\n      this.uniqueData();\n      this.mergeTranslations();\n    }\n  }\n\n  uniqueData(): void {\n    this.translations = this.translations.filter((item, index, self) => {\n      if (item.attribute === 'HELP_TEXT' || item.attribute === 'PLACEHOLDER') {\n        return (\n          index ===\n          self.findIndex(\n            (t) =>\n              t.elementId === item.elementId &&\n              t.language === item.language &&\n              t.attribute === item.attribute\n          )\n        );\n      }\n      return true;\n    });\n  }\n\n  filterCountriesByValues(data: any[], values: string[]): any[] {\n    return data.filter((item) => values.includes(item.value));\n  }\n  openQuestion(index: any) {\n    this.questionStates[index] = !this.questionStates[index];\n    // Close all other question blocks\n    for (let i = 0; i < this.questionStates.length; i++) {\n      if (i !== index) {\n        this.questionStates[i] = false;\n      }\n    }\n  }\n  closeModal() {\n    this.dialogRef.close(this.languages);\n  }\n\n  groupData() {\n    const translations = this.translations;\n    // const sortedData = translations.sort((a, b) => {\n    //   return (\n    //     this.sortedIds.indexOf(a.elementId) -\n    //     this.sortedIds.indexOf(b.elementId)\n    //   );\n    // });\n    const groupedData: GroupedData[] = translations.reduce<GroupedData[]>(\n      (acc, obj) => {\n        const index = acc.findIndex((item) => item.elementId === obj.elementId);\n        if (index !== -1) {\n          acc[index].items.push(obj);\n        } else {\n          acc.push({ elementId: obj.elementId, items: [obj] });\n        }\n        return acc;\n      },\n      []\n    );\n    const reorderedArray = groupedData.map((obj) => {\n      obj.items.sort((a, b) => {\n        const order = ['NAME', 'PLACEHOLDER', 'HELP_TEXT']; // Define the desired order\n        // Get the index of attribute in the order array\n        const indexA = order.indexOf(a.attribute);\n        const indexB = order.indexOf(b.attribute);\n        // Compare the indexes to determine the order\n        if (indexA === -1 && indexB === -1) {\n          return 0; // If both attributes are not in the order array, maintain the current order\n        } else if (indexA === -1) {\n          return 1; // If only attribute B is not in the order array, move attribute A up\n        } else if (indexB === -1) {\n          return -1; // If only attribute A is not in the order array, move attribute B up\n        } else {\n          return indexA - indexB; // Compare the indexes if both attributes are in the order array\n        }\n      });\n      return obj;\n    });\n    this.groupedData = reorderedArray;\n  }\n  mergeTranslations(): any[] {\n    const mergedTranslations: { [key: string]: any } = {};\n    const orderedKeys: string[] = [];\n    this.translations.forEach((translation) => {\n      const key = `${translation.elementId}-${translation.attribute}`;\n      if (!mergedTranslations[key]) {\n        mergedTranslations[key] = {\n          elementId: translation.elementId,\n          items: [],\n        };\n      }\n      let item = mergedTranslations[key].items?.find(\n        (item: any) => item.attribute === translation.attribute\n      );\n      if (!item) {\n        item = {\n          ...translation,\n          language: [translation.language],\n          translatedText: [\n            'SELECTION_MATRIX_COLUMN',\n            'SELECTION_MATRIX_LABEL',\n          ].includes(translation.attribute)\n            ? this.isParsableJSON(translation.translatedText)\n              ? [JSON.parse(translation.translatedText)]\n              : [[translation.translatedText]]\n            : [translation.translatedText],\n        };\n        mergedTranslations[key].items.push(item);\n        if (!orderedKeys.includes(translation.elementId)) {\n          orderedKeys.push(translation.elementId);\n        }\n      } else {\n        const langIndex = this.languages.indexOf(translation.language);\n        if (langIndex >= 0) {\n          if (\n            ['SELECTION_MATRIX_COLUMN', 'SELECTION_MATRIX_LABEL'].includes(\n              translation.attribute\n            )\n          ) {\n            if (!item.translatedText[langIndex]) {\n              item.translatedText[langIndex] = [];\n            }\n\n            if (this.isParsableJSON(translation.translatedText)) {\n              item.translatedText[langIndex] = JSON.parse(\n                translation.translatedText\n              );\n            } else {\n              item.translatedText[langIndex].push(translation.translatedText);\n            }\n          } else {\n            item.translatedText.push(translation.translatedText);\n          }\n        }\n        if (!item.language.includes(translation.language)) {\n          item.language.push(translation.language);\n          if (\n            ['SELECTION_MATRIX_COLUMN', 'SELECTION_MATRIX_LABEL'].includes(\n              translation.attribute\n            )\n          ) {\n            if (this.isParsableJSON(translation.translatedText)) {\n              item.translatedText[langIndex] = JSON.parse(\n                translation.translatedText\n              );\n            } else {\n              //item.translatedText[langIndex] = Array(item.translatedText[0].length).fill('');\n\n              if (!item.translatedText[langIndex][0]) {\n                item.translatedText[langIndex] = Array(1).fill('');\n              }\n            }\n          } else {\n            item.translatedText.push('');\n          }\n        }\n      }\n    });\n    const groupedData = this.orderData(\n      this.createItemsArray(mergedTranslations)\n    );\n    \n    this.groupedData = orderedKeys\n      .map((key) => {\n        return groupedData.find((item: any) => item.elementId === key);\n      })\n      .filter(Boolean);\n    return Object.values(mergedTranslations);\n  }\n\n  createItemsArray(data: any): any[] {\n    const array: any[] = [];\n    for (const key in data) {\n      if (data.hasOwnProperty(key)) {\n        array.push(data[key]);\n      }\n    }\n    return array;\n  }\n  orderData(data: any[]): any[] {\n    // Define the desired order of attributes\n    const order = [\n      'NAME',\n      'DESCRIPTION',\n      'SELECTION_MATRIX_LABEL',\n      'SELECTION_MATRIX_COLUMN',\n      'PLACEHOLDER',\n      'HELP_TEXT',\n    ];\n\n    // Remove empty strings from translatedText and duplicates from language\n    data.forEach((element) => {\n      element.items.forEach(\n        (item: {\n          translatedText: any[];\n          language: Iterable<unknown> | null | undefined;\n        }) => {\n          if (Array.isArray(item.language)) {\n            item.language = [...new Set(item.language)];\n          }\n        }\n      );\n    });\n\n    // Sort the data based on the order of attributes\n    const attributeSort = data.sort(\n      (a, b) =>\n        order.indexOf(a.items[0].attribute) -\n        order.indexOf(b.items[0].attribute)\n    );\n    const sortedData = attributeSort.sort(\n      (a: any, b: any) =>\n        this.sortedIds.indexOf(a.elementId) -\n        this.sortedIds.indexOf(b.elementId)\n    );\n\n    // Flatten the items array and group by elementId\n    const loopableData = sortedData.reduce((acc, curr) => {\n      curr.items.forEach(\n        (item: {\n          entityType: any;\n          language: any;\n          attribute: any;\n          translatedText: any;\n        }) => {\n          acc.push({\n            elementId: curr.elementId,\n            entityType: item.entityType,\n            language: item.language,\n            attribute: item.attribute,\n            translatedText: item.translatedText,\n          });\n        }\n      );\n      return acc;\n    }, []);\n\n    const groupedData = loopableData.reduce(\n      (acc: { elementId: any; items: any[] }[], curr: { elementId: any }) => {\n        const existingObject = acc?.find(\n          (obj) => obj.elementId === curr.elementId\n        );\n        if (existingObject) {\n          existingObject.items.push(curr);\n        } else {\n          acc.push({\n            elementId: curr.elementId,\n            items: [curr],\n          });\n        }\n        return acc;\n      },\n      []\n    );\n    return groupedData;\n  }\n  updateLanguageValue(k: number) {}\n  private isParsableJSON(value: any): boolean {\n    if (typeof value !== 'string') return false;\n    try {\n      const parsed = JSON.parse(value);\n      return (\n        typeof parsed === 'object' ||\n        Array.isArray(parsed) ||\n        typeof parsed === 'string'\n      );\n    } catch {\n      return false;\n    }\n  }\n  print() {\n    let data = this.transformArray(this.groupedData);\n  }\n  transformArray(inputArray: any) {\n    let translations: any = [];\n\n    inputArray.forEach((item: { items: any[] }) => {\n      item.items.forEach((subItem) => {\n        subItem.translatedText.forEach((trans: any) => {\n          let translation = {\n            elementId: subItem.elementId,\n            entityType: subItem.entityType,\n            language: this.languages[subItem.translatedText.indexOf(trans)],\n            attribute: subItem.attribute,\n            translatedText: trans,\n          };\n          translations.push(translation);\n        });\n      });\n    });\n    return translations.filter((item: { language: any }) => item.language);\n  }\n  save() {\n    let updatedData = this.transformArray(this.groupedData);\n    const formData = updatedData.filter((a: any) => a.entityType === 'FORM');\n    const data = updatedData.map((item: any) => {\n      if (\n        item.attribute === 'SELECTION_MATRIX_COLUMN' ||\n        (item.attribute === 'SELECTION_MATRIX_LABEL' &&\n          Array.isArray(item.translatedText))\n      ) {\n        return {\n          ...item,\n          translatedText: JSON.stringify(item.translatedText),\n        };\n      }\n      return item;\n    });\n\n    if (formData.length !== this.languages.length) {\n      const existingLanguages = formData.map((item: any) => item.language);\n      const missingLanguages = this.languages.filter(\n        (lang: any) => !existingLanguages.includes(lang)\n      );\n      missingLanguages.forEach((lang: any) => {\n        const newObject = { ...data[0], language: lang, translatedText: ' ' };\n        data.push(newObject);\n      });\n    }\n    this.dataservice.sendLanguages(this.languages);\n    this.dataservice.sendTransalation(data);\n    this.closeModal();\n  }\n\n  handleKeyDown(event: KeyboardEvent) {\n    if (event.key === 'Enter') {\n      const inputField =\n        this.elementRef.nativeElement.querySelector('#textField');\n      const inputValue = inputField.value.trim();\n      if (inputValue !== '') {\n        this.updateSelectedCountry();\n      }\n    }\n  }\n\n  editTable() {}\n\n  deleteTable() {}\n\n  transformCountries(data: any[]): CountryInfo[] {\n    const transformedCountries: CountryInfo[] = data.flatMap((country) =>\n      Object.entries(country.languages)\n        .filter(([key, value]) => value)\n        .map(([key, value]) => ({\n          value: key,\n          label: country.name + ' ' + value,\n          image: country.flag,\n        }))\n    );\n\n    return transformedCountries;\n  }\n\n  extractLanguages(data: any[]): string[] {\n    const languages: string[] = [];\n\n    data.forEach((item) => {\n      if (item.language) {\n        languages.push(item.language);\n      }\n    });\n\n    return languages;\n  }\n\n  // search(searchTerm: any) {\n  //   this.flag = true;\n  //   if (searchTerm == '') {\n  //     this.getCountry(0, this.size, '');\n  //   }\n  //   else {\n  //     this.flag = false;\n  //     this.getCountry(0, this.size, searchTerm);\n  //   }\n  // }\n\n  // dropdownScroll(event: any): void {\n  //   const element = event.target;\n  //   if (!this.isLastPage && this.flag === true) {\n  //     if (Math.floor(element.scrollHeight - element.scrollTop) <= element.clientHeight) {\n  //       this.loadMoreData();\n  //     }\n\n  //   }\n  //   if (!this.isFirstPage && element.scrollTop <= 150 && this.flag === true) {\n  //     this.loadPreviousData();\n  //   }\n  // }\n\n  // loadMoreData() {\n  //   setTimeout(() => {\n  //     this.currentPage++;\n  //     if (this.currentPage >= 0) {\n  //       this.getCountry(this.currentPage, this.size, \"\");\n  //     }\n  //   }, 0);\n  // }\n\n  // loadPreviousData() {\n  //   setTimeout(() => {\n  //     this.currentPage--;\n  //     if (this.currentPage >= 0) {\n  //       this.getCountry(this.currentPage, this.size, \"\");\n  //     }\n  //   }, 0);\n  // }\n\n  isFirstRow(index: number): boolean {\n    return index === 0; // Assuming `0` is the index for the first row\n  }\n\n  trackByIndex(index: number, obj: any): any {\n    return index;\n  }\n\n  sanitizeHtml(content: string): SafeHtml {\n    return this.sanitizer.bypassSecurityTrustHtml(content);\n  }\n}\n","<div class=\"modalBody\">\n  <div class=\"header-btn\">\n    <img\n      (click)=\"closeModal()\"\n      src=\"/assets/icons/close-sidebar-mark-icon.svg\"\n      alt=\"Close Sidebar Icon\"\n    />\n  </div>\n  <div class=\"header-container\">\n    <h2 class=\"header\">Translation</h2>\n  </div>\n  <div class=\"questionContainer\"\n  [ngClass]=\"{'disable-published':formStatus === 'PUBLISHED'}\">\n    <div class=\"modalHeader\">\n      <div class=\"label-select-container col-6\">\n        <label class=\"labelDropDown\" for=\"Fonts\" (click)=\"print()\"\n          >Languages</label\n        >\n        <lib-dropdown\n          [placeholder]=\"'Select font'\"\n          [items]=\"countryNames\"\n          [multiple]=\"true\"\n          [(selectedItems)]=\"selectedItems\"\n          [placeholder]=\"'Select Items'\"\n          (selectedItemsChange)=\"updateSelectedCountry()\"\n        ></lib-dropdown>\n      </div>\n    </div>\n\n    <label class=\"labelDropDown\" for=\"Fonts\">Selected Languages</label>\n    <div class=\"table\">\n      <div class=\"grid-container\">\n        <div class=\"input-row countries\">\n          <!-- Render labels for each unique language in the translation -->\n          <ng-container *ngFor=\"let lang of DispalyLanguages; let i = index\">\n            <label class=\"queLabel subText\" for=\"input{{ i + 1 }}\">{{\n              lang\n            }}</label>\n          </ng-container>\n        </div>\n      </div>\n      <div class=\"scrollTable\">\n        <div\n          class=\"questionBlock-div\"\n          *ngFor=\"let translation of groupedData; let i = index\"\n        >\n          <div *ngFor=\"let data of translation.items\">\n            <div class=\"questionBlock-header\">\n              <div class=\"grid-container\" *ngIf=\"data.attribute == 'NAME'\">\n                <div class=\"input-row\">\n                  <div\n                    *ngIf=\"data.attribute == 'NAME'\"\n                    class=\"down-arrow\"\n                    (click)=\"openQuestion(i)\"\n                    [ngClass]=\"{\n                      opened: questionStates[i],\n                      closed: !questionStates[i]\n                    }\"\n                  >\n                    <img\n                      src=\"/assets/icons/down-arrow-gray-icon.svg\"\n                      alt=\"Down arrow Icon\"\n                    />\n                  </div>\n                  <div\n                    *ngIf=\"data.attribute == 'NAME'\"\n                    class=\"up-arrow\"\n                    (click)=\"openQuestion(i)\"\n                    [ngClass]=\"{\n                      opened: questionStates[i],\n                      closed: !questionStates[i]\n                    }\"\n                  >\n                    <img src=\"/assets/icons/upArrow.png\" alt=\"Up arrow Icon\" />\n                  </div>\n                  <div class=\"question\" *ngIf=\"data.entityType == 'QUESTION'\">\n                    <p>Q</p>\n                  </div>\n                  <div class=\"question\" *ngIf=\"data.entityType == 'SECTION'\">\n                    <p>Se</p>\n                  </div>\n                  <div class=\"question\" *ngIf=\"data.entityType == 'FORM'\">\n                    <p>F</p>\n                  </div>\n                  <div class=\"question\" *ngIf=\"data.entityType == 'PAGE'\">\n                    <p>P</p>\n                  </div>\n                  <div class=\"question\" *ngIf=\"data.entityType == 'SUBFORM'\">\n                    <p>SF</p>\n                  </div>\n                  <div class=\"gap\"></div>\n                  <div *ngFor=\"let item of languages; let k = index\">\n                    <input\n                      class=\"inputBox\"\n                      type=\"text\"\n                      id=\"input1\"\n                      name=\"input1\"\n                      [(ngModel)]=\"data.translatedText[k]\"\n                      (ngModelChange)=\"updateLanguageValue(k)\"\n                      [attr.readonly]=\"isFirstRow(k) ? true : null\"\n                      [ngStyle]=\"{\n                        'background-color': isFirstRow(k)\n                          ? '#d3d3d369'\n                          : 'white'\n                      }\"\n                    />\n                  </div>\n                  <div class=\"gap\"></div>\n                </div>\n              </div>\n            </div>\n\n            <div\n              *ngIf=\"data.attribute != 'NAME'\"\n              class=\"questionBlocks\"\n              [ngClass]=\"{\n                opened: questionStates[i],\n                closed: !questionStates[i]\n              }\"\n            >\n              <div class=\"grid-container openedGrid\">\n                <div class=\"input-row\">\n                  <div class=\"question\">\n                    <p></p>\n                  </div>\n                  <div class=\"column-container second\">\n                    <div class=\"column\">\n                      <p class=\"subText\">{{ data.attribute }}</p>\n                    </div>\n                    <div class=\"input-row-container\">\n                      <ng-container\n                        *ngIf=\"\n                          data.attribute === 'SELECTION_MATRIX_COLUMN' ||\n                            data.attribute === 'SELECTION_MATRIX_LABEL';\n                          else otherAttribute\n                        \"\n                      >\n                        <div\n                          *ngFor=\"\n                            let item of languages;\n                            let k = index;\n                            trackBy: trackByIndex\n                          \"\n                          class=\"grid-layout\"\n                        >\n                          <ng-container\n                            *ngFor=\"\n                              let text of data.translatedText[k].length > 0\n                                ? data.translatedText[k]\n                                : [data.translatedText[k]];\n                              let i = index;\n                              trackBy: trackByIndex\n                            \"\n                          >\n                            <input\n                              [attr.readonly]=\"isFirstRow(k) ? true : null\"\n                              [ngStyle]=\"{\n                                'background-color': isFirstRow(k)\n                                  ? '#d3d3d369'\n                                  : 'white'\n                              }\"\n                              class=\"inputBox\"\n                              type=\"text\"\n                              id=\"input1\"\n                              name=\"input1\"\n                              [(ngModel)]=\"data.translatedText[k][i]\"\n                              (ngModelChange)=\"updateLanguageValue(k)\"\n                            />\n                          </ng-container>\n                        </div>\n                      </ng-container>\n                      <ng-template #otherAttribute>\n                        <div\n                          *ngFor=\"\n                            let item of languages;\n                            let k = index;\n                            trackBy: trackByIndex\n                          \"\n                        >\n                          <ng-container\n                            *ngIf=\"\n                              data.attribute === 'DESCRIPTION';\n                              else notDesc\n                            \"\n                          >\n                            <div\n                              [attr.readonly]=\"isFirstRow(k) ? true : null\"\n                              [ngStyle]=\"{\n                                'background-color': isFirstRow(k)\n                                  ? '#d3d3d369'\n                                  : 'white'\n                              }\"\n                              class=\"inputBox desc-box\"\n                              *ngIf=\"k === 0; else otherLang\"\n                              [innerHTML]=\"sanitizeHtml(data.translatedText[k])\"\n                            ></div>\n                            <ng-template #otherLang>\n                              <input\n                                class=\"inputBox\"\n                                type=\"text\"\n                                id=\"input1\"\n                                name=\"input1\"\n                                [(ngModel)]=\"data.translatedText[k]\"\n                                (ngModelChange)=\"updateLanguageValue(k)\"\n                              />\n                            </ng-template>\n                          </ng-container>\n                          <ng-template #notDesc>\n                            <input\n                              class=\"inputBox\"\n                              type=\"text\"\n                              id=\"input1\"\n                              name=\"input1\"\n                              [(ngModel)]=\"data.translatedText[k]\"\n                              (ngModelChange)=\"updateLanguageValue(k)\"\n                            />\n                          </ng-template>\n                        </div>\n                      </ng-template>\n                    </div>\n                  </div>\n                </div>\n                <br />\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n      <div class=\"d-flex mt-3 mb-5 justify-content-end\">\n        <button class=\"btn btn-primary submitBtn\" (click)=\"save()\">Save</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n  selector: 'lib-confirmation-modal',\n  templateUrl: './confirmation-modal.component.html',\n  styleUrls: ['./confirmation-modal.component.scss']\n})\nexport class ConfirmationModalComponent {\n  constructor(@Inject(MAT_DIALOG_DATA) public data: any,\n  public dialogRef: MatDialogRef<ConfirmationModalComponent>){\n    this.messageHeader=data.messageHeader;\n   this.message=data.message;\n  }\n\n  message:string='';\n  messageHeader:string='';\n  closeModal() {\n    this.dialogRef.close();\n  }\n}\n","\n<div class=\"\" id=\"checkdeleteModal\" tabindex=\"-1\">\n    <div class=\"modal-dialog\">\n      <div class=\"modal-content\">\n        <div class=\"modalHeader\">\n          <div class=\"title-div\">\n          </div>\n          <div class=\"header-btn\">\n              <img (click)=\"closeModal()\" src=\"/assets/icons/close-sidebar-mark-icon.svg\" alt=\"Close Sidebar Icon\">          \n          </div>\n      </div>\n        <div class=\"modalBody\">\n          <div class=\"row text-center\">\n              <img class=\"delete-icon\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\"> \n              <p class=\"delete-confirm\">{{messageHeader}}</p>\n              <p class=\"delete-dialog\">{{message}}</p>\n          </div>\n        </div>\n        <div class=\"modalFooter\">\n          <div class=\"footer-btn \">\n          <button type=\"button\" class=\"delete-btn\"\n          (click)=\"dialogRef.close(true)\"\n         >Delete</button>\n          <button class=\"cancel-btn\"\n          (click)=\"dialogRef.close(false)\"\n          type=\"button\">\n              Cancel\n          </button>\n        </div>\n        </div>\n      </div>\n    </div>\n  </div>","// src/app/constants.ts\n\nexport const CONSTANTS = {\n  COMPARISON_OPTIONS: [\n    { label: 'Less than', value: '<' },\n    { label: 'Greater than', value: '>' },\n    { label: 'Equal', value: '=' },\n    { label: 'Less than or equal', value: '<=' },\n    { label: 'Greater than or equal', value: '>=' },\n    { label: 'Not equal', value: '!=' }\n  ],\n\n  FILE_COMPARISON: [\n    { label: 'File count less than', value: '<' },\n    { label: 'File count greater than', value: '>' },\n    { label: 'File count equal', value: '=' },\n    { label: 'File count not equal', value: '!=' }\n  ],\n\n  HIDDEN_FIELD_COMPARISON: [\n    { label: 'Equal', value: '=' },\n    { label: 'Not equal', value: '!=' },\n  ],\n\n  DROPDOWN_COMPARISON: [\n    { label: 'Equal', value: '=' },\n    { label: 'Not equal', value: '!=' },\n    { label: 'In', value: 'IN' },\n    { label: 'Not in', value: 'NOT IN' }\n  ],\n\n  TEXT_COMPARISON: [\n    { label: 'Equal', value: '=' },\n    { label: 'Not equal', value: '!=' },\n    { label: 'Contains', value: 'LIKE' },\n    { label: 'Not contains', value: 'NOT LIKE' },\n    { label: 'Begin with', value: 'BEGIN WITH' },\n    { label: 'End with', value: 'END WITH' }\n  ],\n\n  VALUE_FROM: [\n    {\n      label: \"Select question\",\n      value: \"QUESTION\"\n    },\n    {\n      label: \"Cuexport const stom input\",\n      value: \"CUSTOM_INPUT\"\n    },\n    {\n      label: \"Calculate\",\n      value: \"CALCULATE\"\n    }\n  ],\n\n  hiddenFieldUpdateOptions:[\n    {\n      label: \"Save\",\n      value: \"SAVE\",\n      image: ''\n    },\n    {\n      label: \"Update\",\n      value: \"UPDATE\",\n      image: ''\n    },\n    {\n      label: \"Both\",\n      value: \"BOTH\",\n      image: ''\n    }\n  ],\n\n  webhooks: [\n    {\n      webhookUrlType:'INTERNAL',\n      requestType: '',\n      url: '',\n      isConflict:true,\n      headers: [\n        {\n          keyName: '',\n          valueSource: '',\n          questionId: '',\n          inputValue: '',\n          isConflict:true\n        },\n      ],\n      params: [\n        {\n          keyName: '',\n          valueSource: '',\n          questionId: '',\n          inputValue: '',\n          isConflict:true\n        },\n      ],\n      pathVariables: [\n        {\n          keyName: '',\n          valueSource: '',\n          questionId: '',\n          inputValue: '',\n          isConflict:true\n        },\n      ],\n      requestBodies: [\n        {\n          keyName: '',\n          valueSource: '',\n          questionId: '',\n          inputValue: '',\n          isConflict:true\n        },\n      ],\n    },\n  ],\n\n  dateOptions: [\n    {\n      label: 'Custom',\n      value: 'CUSTOM',\n      image: '',\n    },\n    {\n      label: 'Current date',\n      value: 'CURRENT_DATE',\n      image: '',\n    },\n  ],\n\n  timeOptions: [\n    {\n      label: 'Custom',\n      value: 'CUSTOM',\n      image: '',\n    },\n    {\n      label: 'Current time',\n      value: 'CURRENT_TIME',\n      image: '',\n    },\n  ],\n\n  timeFormate: [\n    {\n      value: '12',\n      label: '12 Hr',\n      image: '',\n    },\n    {\n      value: '24',\n      label: '24 Hr',\n      image: '',\n    },\n  ],\n\n  dateFormats: [\n    {\n      value: 'DD/MM/YYYY',\n      label: 'DD/MM/YYYY',\n      image: '',\n    },\n    {\n      value: 'DD-MM-YYYY',\n      label: 'DD-MM-YYYY',\n      image: '',\n    },\n    {\n      value: 'YYYY/DD/MM',\n      label: 'YYYY/DD/MM',\n      image: '',\n    },\n    {\n      value: 'YYYY-DD-MM',\n      label: 'YYYY-DD-MM',\n      image: '',\n    },\n  ],\n\n  monthYearFormats: [\n    {\n      \"value\": \"MM/YYYY\",\n      \"label\": \"MM/YYYY\",\n      \"image\": \"\"\n    },\n    {\n      \"value\": \"MM-YYYY\",\n      \"label\": \"MM-YYYY\",\n      \"image\": \"\"\n    },\n    {\n      \"value\": \"YYYY/MM\",\n      \"label\": \"YYYY/MM\",\n      \"image\": \"\"\n    },\n    {\n      \"value\": \"YYYY-MM\",\n      \"label\": \"YYYY-MM\",\n      \"image\": \"\"\n    }\n  ],\n\n  fileSizes: [\n    { value: 'MB', label: 'MB', image: '' },\n    { value: 'KB', label: 'KB', image: '' }\n  ],\n\n  fileTypes: [\n    { value: 'image/png', label: 'PNG', image: '' },\n    { value: 'image/jpeg', label: 'JPEG', image: '' },\n    { value: 'application/pdf', label: 'PDF', image: '' },\n    { value: 'application/msword', label: 'WORD', image: '' },\n    { value: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', label: 'DOC', image: '' },\n  ],\n\n  textfieldOptions: [\n    {\n      label: 'Numbers only',\n      value: 'Numbers only',\n      image:''\n    },\n    {\n      label: 'Alphanumeric',\n      value: 'Alphanumeric',\n      image:''\n    },\n    {\n      label: 'Allow all',\n      value: 'Allow all',\n      image:''\n    },\n  ],\n\n  fontFamily: [\n    {\n      label: 'Verdana',\n      value: 'Verdana',\n      image:''\n    },\n    {\n      label: 'Tahoma',\n      value: 'Tahoma',\n      image:''\n    },\n    {\n      label: 'Georgia',\n      value: 'Georgia',\n      image:''\n    },\n    {\n      label: 'Poppins',\n      value: 'Poppins',\n      image:''\n    },\n    {\n      label: 'Garamond',\n      value: 'Garamond',\n      image:''\n    },\n  ],\n\n  fontSize: [\n    {\n      label: '18',\n      value: '18',\n      image:''\n    },\n    {\n      label: '20',\n      value: '20',\n      image:''\n    },\n    {\n      label: '22',\n      value: '22',\n      image:''\n    },\n    {\n      label: '24',\n      value: '24',\n      image:''\n    },\n    {\n      label: '26',\n      value: '26',\n      image:''\n    },\n  ],\n\n  tables: [\n    {\n      \"label\":'states',\n      \"value\":'states',\n      \"image\":''\n    },\n    {\n      \"label\":'cities',\n      \"value\":'',\n      \"image\":''\n    }\n  ],\n\n  dropDownConditions: [\n    { label: 'In', value: 'IN', image: '' },\n    { label: 'Greater than', value: '>', image: '' },\n    { label: 'Less than', value: '<', image: '' },\n    { label: 'Is not null', value: 'IS NOT NULL', image: '' },\n    { label: 'End with', value: 'END WITH', image: '' },\n    { label: 'Not contains', value: 'NOT LIKE', image: '' },\n    { label: 'Less than or equal', value: '<=', image: '' },\n    { label: 'Greater than or equal', value: '>=', image: '' },\n    { label: 'Equal', value: '=', image: '' },\n    { label: 'Begin with', value: 'BEGIN WITH', image: '' },\n    { label: 'Contains', value: 'LIKE', image: '' },\n    { label: 'Not equal', value: '!=', image: '' },\n    { label: 'Not in', value: 'NOT IN', image: '' },\n    { label: 'Is null', value: 'IS NULL', image: '' }\n  ],\n\n  options: [\n    'Custom Options', \n    'Load from lookup data', \n    'Load from data base', \n    'Load from API'\n  ],\n\n  logicalOperator: [\n    {\n      label: 'AND',\n      value: 'AND',\n      image: ''\n    },\n    {\n      label: 'OR',\n      value: 'OR',\n      image: ''\n    }\n  ],\n\n  valueSource: [\n    {\n      label: 'CUSTOM_INPUT',\n      value: 'CUSTOM_INPUT',\n      image: ''\n    },\n    {\n      label: 'QUESTION',\n      value: 'QUESTION',\n      image: ''\n    }\n  ],\n\n  fieldStructure: [\n    { \n      image: '', \n      label: '', \n      value: '' \n    }\n  ],\n\n  rowsValues: [\n    { \n      keyName: \"\", \n      valueSource: \"CUSTOM_INPUT\", \n      inputValue: \"\" \n    }\n  ],\n\n  selctedValues: [\n    { image: '', \n      label: 'Custom value', \n      value: 'CUSTOM_INPUT' \n    }\n  ],\n\n  valueSources: [\n    { image: '', label: 'Custom value', value: 'CUSTOM_INPUT' },\n    { image: '', label: 'Select Question', value: 'QUESTION' },\n    { image: '', label: 'Local storage', value: 'LOCAL_STORAGE' },\n    { image: '', label: 'Session storage', value: 'SESSION_STORAGE' },\n    { image: '', label: 'Selected Values', value: 'SELECTED_VALUES'},\n    { image: '', label: 'Search String', value: 'SEARCH_STRING'}\n  ],\n\n  paramsValueSources: [\n    { image: '', label: 'Custom value', value: 'CUSTOM_INPUT' },\n    { image: '', label: 'Select Question', value: 'QUESTION' },\n    { image: '', label: 'Local storage', value: 'LOCAL_STORAGE' },\n    { image: '', label: 'Session storage', value: 'SESSION_STORAGE' },\n    { image: '', label: 'Page Index', value: 'PAGE_INDEX' },\n    { image: '', label: 'Page Size', value: 'PAGE_SIZE' },\n    { image: '', label: 'Selected Values', value: 'SELECTED_VALUES'},\n    { image: '', label: 'Search String', value: 'SEARCH_STRING'}\n  ],\n\n  pathVariableValueSources: [\n    { image: '', label: 'Custom value', value: 'CUSTOM_INPUT' },\n    { image: '', label: 'Select Question', value: 'QUESTION' },\n    { image: '', label: 'Local storage', value: 'LOCAL_STORAGE' },\n    { image: '', label: 'Session storage', value: 'SESSION_STORAGE' },\n  ],\n\n\n  hiddenFieldValueSource: [\n    { image: '', label: 'Custom value', value: 'CUSTOM_INPUT' },\n    { image: '', label: 'Local storage', value: 'LOCAL_STORAGE' },\n    { image: '', label: 'Session storage', value: 'SESSION_STORAGE' },\n    { image: '', label: 'Predefined Variable', value: 'PREDEFINED_VARIABLE'}\n  ],\n\n  translations: [\n    {\n      attribute: \"NAME\",\n      elementId: \"1913b947-2771-4dad-ab8e-8fd92d40d20c\",\n      entityType: \"QUESTION\",\n      language: \"eng\",\n      translatedText: \"\"\n    },\n    {\n      attribute: \"HELP_TEXT\",\n      elementId: \"1913b947-2771-4dad-ab8e-8fd92d40d20c\",\n      entityType: \"QUESTION\",\n      language: \"eng\",\n      translatedText: \"\"\n    }\n  ],\n\n  dragAndDropRows: [\n    {\n      row:1,\n      columns: [\n        {\n          content:'Item 1',\n          columnSpan: 3,\n          dragDisabled: false,\n        },\n        {\n          content:'Item 2',\n          columnSpan: 7,\n          dragDisabled: false,\n        },\n        {\n          content:'',\n          columnSpan: 1,\n          dragDisabled: true,\n        },\n        {\n          content:'Item 2',\n          columnSpan: 1,\n          dragDisabled: false,\n        }\n      ]\n    },\n    {\n      row:2,\n      columns: [\n        {\n          content:'Item 3',\n          columnSpan: 12,\n          dragDisabled: false,\n        }\n      ]\n    },\n    {\n      row:3,\n      columns: [\n        {\n          content:'Item 4',\n          columnSpan: 6,\n          dragDisabled: false,\n        },\n        {\n          content:'Item 5',\n          columnSpan: 6,\n          dragDisabled: false,\n        }\n      ]\n    },\n    {\n      row:4,\n      columns: [\n        {\n          content:'Item 6',\n          columnSpan: 7,\n          dragDisabled: false,\n        },\n        {\n          content:'',\n          columnSpan:2,\n          dragDisabled:true\n        },\n        {\n          content:'Item 7',\n          columnSpan: 1,\n          dragDisabled: false,\n        },\n        {\n          content:'Item 8',\n          columnSpan:2,\n          dragDisabled: false,\n  \n        }\n      ]\n    },\n  ],\n\n  formElements: [\n    {\n      elementType: 'TEXT_BOX',\n      appearance: {\n        fontSize: 22,\n        textAlign: '',\n        font: 'Poppins',\n        underline: false,\n        bold: false,\n        italics: false,\n        placeholder: '',\n        defaultValue: '',\n      },\n      validation: {\n        validationType: null,\n        regex: '',\n        validation: '',\n      },\n    },\n    {\n      elementType: 'TEXT_AREA',\n      appearance: {\n        fontSize: 22,\n        textAlign: '',\n        font: 'Poppins',\n        underline: false,\n        bold: false,\n        italics: false,\n        placeholder: '',\n        defaultValue: '',\n        numberOfRows: '',\n      },\n      validation: {\n        limitedCharacters: false,\n        count: 0,\n      },\n    },\n    {\n      elementType: 'EMAIL',\n      appearance: {\n        placeholder: '',\n      },\n      validation: {\n        regularExpression: '',\n        expectedDomains: '',\n      },\n    },\n    {\n      elementType: 'PASSWORD',\n      appearance: {\n        confirmPassword: false,\n        viewButton: false,\n        displayStrong: false,\n      },\n      validation: {\n        minLength: null,\n        maxLength: null,\n        requireLowercaseLetters: false,\n        requireUppercaseLetters: false,\n        requireNumbers: false,\n        requireSpecialCharacters: false,\n        allowedSpecialCharacters: '',\n      },\n    },\n    {\n      elementType: 'MOBILE',\n      appearance: {\n        displayCountryCode: true,\n        displayFlag: true,\n        displayCode: true,\n        showCountryName: false,\n        beautifyNumbers: false,\n        placeholder: '',\n      },\n      validation: {\n        countryWiseValidation: false,\n        restrictCountry: false,\n        allowedCountries: [],\n        blockedCountries: [],\n      },\n    },\n    {\n      elementType: 'RICH_TEXT_EDITOR',\n      appearance: {\n        numberOfRows: null,\n      },\n      validation: {\n        limitedCharacters: false,\n        count: null,\n      },\n    },\n    {\n      elementType: 'NUMBER',\n      appearance: {\n        upAndDownButton: false,\n        allowNegativeValues: false,\n        placeholder: '',\n      },\n      validation: {\n        min: null,\n        max: null,\n      },\n    },\n    {\n      elementType: 'URL',\n      appearance: {\n        showPreviewButton: false,\n        placeholder: '',\n      },\n      validation: {},\n    },\n    {\n      elementType: 'DROP_DOWN',\n      appearance: {\n        selectionType: 'SINGLE',\n      },\n      validation: {\n        minimumSelection: null,\n        maximumSelection: null,\n      },\n      option: {\n        optionType: '',\n        lookupTable: '',\n        customOptions: [],\n        database: {\n          tableName: \"\",\n          valueField: \"\",\n          labelField: \"\",\n          criteria: [{\n            field: \"\",\n            condition: \"\",\n            valueSource: \"\",\n            inputValue: \"\",\n            logicalOperator: \"\"\n          }]\n        },\n        api: {\n          external: true,\n          url: \"\",\n          valueField: \"\",\n          labelField: \"\",\n          pathToValue: \"\",\n          pathVariables: [{\n            keyName: \"\",\n            valueSource: \"\",\n            inputValue: \"\"\n          }],\n          headers: [{\n            keyName: \"\",\n            valueSource: \"\",\n            inputValue: \"\"\n          }],\n          params: [{\n            keyName: \"\",\n            valueSource: \"\",\n            inputValue: \"\"\n          }]\n        }\n      },\n    },\n    {\n      elementType: 'FILE_PICKER',\n      appearance: {\n        dragAndDrop: false,\n        previewUploadedFiles: false,\n        multiFileUploads: false,\n      },\n      validation: {\n        fileTypes: [],\n        fileSize: null,\n        fileSizeUnit: '',\n      },\n    },\n    {\n      elementType: 'DATE_TIME',\n      appearance: {\n        dateType: '',\n        format: '',\n      },\n      validation: {\n        minDateOption: '',\n        minDate: '',\n        maxDateOption: '',\n        maxDate: '',\n      },\n    },\n    {\n      elementType: 'TOGGLE_SWITCH',\n      appearance: {\n        labelOnValue: '',\n        labelOffValue: '',\n        labelOnColor: '',\n        labelOffColor: '',\n        selectionColorOnRequired: false,\n        selectionColorOffRequired: false,\n        selectionColorRequired: false\n      },\n      validation: {\n        buttonColour: '',\n      },\n    },\n    {\n      elementType: 'SELECTION_MATRIX',\n      appearance: {\n        selectionColorRequired: false,\n        selectionColor: '',\n      },\n      validation: {\n        minSelectionRequired: false,\n        minSelectionValue: '',\n      },\n    },\n    {\n      elementType: 'TERMS_AND_CONDITION',\n      appearance: {\n        showAcceptButton: false,\n      },\n      validation: {\n        preventFromProceedingWithoutAgree: false,\n      },\n      termsAndCondition: {\n        termsAndConditionType: \"\",\n        value: ''\n      }\n    },\n    {\n      elementType: 'LOCATION',\n      appearance: {\n        setCurrentPosition: false,\n        defaultZoomLevel: null,\n        allowFullScreen: false,\n        latitude: '',\n        longitude: '',\n      },\n      validation: {\n        regionBoundary: false,\n        region: '',\n      },\n    },\n    {\n      elementType: 'SIGNATURE',\n      appearance: {\n        canvasOption: '',\n      },\n      validation: {\n        maxFileSize: null,\n        minFileSize: null,\n      },\n    },\n    {\n      elementType: 'CHECK_BOX',\n      appearance: {\n        selectionType: 'SINGLE',\n      },\n      validation: {\n        minimumSelection: null,\n        maximumSelection: null,\n      },\n      option: {\n        optionType: '',\n        lookupTable: '',\n        customOptions: [],\n        database: {\n          tableName: \"\",\n          valueField: \"\",\n          labelField: \"\",\n          criteria: [{\n            field: \"\",\n            condition: \"\",\n            valueSource: \"\",\n            inputValue: \"\",\n            logicalOperator: \"\"\n          }]\n        },\n        api: {\n          external: true,\n          url: \"\",\n          valueField: \"\",\n          labelField: \"\",\n          pathToValue: \"\",\n          pathVariables: [{\n            keyName: \"\",\n            valueSource: \"\",\n            inputValue: \"\"\n          }],\n          headers: [{\n            keyName: \"\",\n            valueSource: \"\",\n            inputValue: \"\"\n          }],\n          params: [{\n            keyName: \"\",\n            valueSource: \"\",\n            inputValue: \"\"\n          }]\n        }\n      },\n    },\n    {\n      elementType: 'RADIO_BUTTON',\n      appearance: {\n        changeButtonColor: false,\n        color: '',\n      },\n      validation: {},\n      option: {\n        optionType: '',\n        lookupTable: '',\n        customOptions: [],\n        database: {\n          tableName: \"\",\n          valueField: \"\",\n          labelField: \"\",\n          criteria: [{\n            field: \"\",\n            condition: \"\",\n            valueSource: \"\",\n            inputValue: \"\",\n            logicalOperator: \"\"\n          }]\n        },\n        api: {\n          external: true,\n          url: \"\",\n          valueField: \"\",\n          labelField: \"\",\n          pathToValue: \"\",\n          pathVariables: [{\n            keyName: \"\",\n            valueSource: \"\",\n            inputValue: \"\"\n          }],\n          headers: [{\n            keyName: \"\",\n            valueSource: \"\",\n            inputValue: \"\"\n          }],\n          params: [{\n            keyName: \"\",\n            valueSource: \"\",\n            inputValue: \"\"\n          }]\n        }\n      },\n    },\n    {\n      elementType: 'SLIDER',\n      appearance: {\n        minValue: null,\n        maxValue: null,\n        stepValue: null,\n        changeSliderColor: false,\n        sliderColor: '',\n      },\n      validation: {},\n    },\n  ],\n\n  questionProperties: [\n    { a: '' }, \n    { b: '' }, \n    { c: '' }\n  ],\n};\n\nexport const selectedQuestionDropDownFormElement = {\n  elementType: 'DROP_DOWN',\n  appearance: {\n    selectionType: 'SINGLE',\n  },\n  validation: {\n    minimumSelection: null,\n    maximumSelection: null,\n  },\n  option: {\n    optionType: '',\n    lookupTable: '',\n    customOptions: [],\n    database: {\n      tableName: \"\",\n      valueField: \"\",\n      labelField: \"\",\n      criteria: [{\n        field: \"\",\n        condition: \"\",\n        valueSource: \"\",\n        inputValue: \"\",\n        logicalOperator: \"\"\n      }]\n    },\n    api: {\n      external: true,\n      url: \"\",\n      valueField: \"\",\n      labelField: \"\",\n      pathToValue: \"\",\n      pathVariables: [{\n        keyName: \"\",\n        valueSource: \"\",\n        inputValue: \"\"\n      }],\n      headers: [{\n        keyName: \"\",\n        valueSource: \"\",\n        inputValue: \"\"\n      }],\n      params: [{\n        keyName: \"\",\n        valueSource: \"\",\n        inputValue: \"\"\n      }]\n    }\n  },\n}\n\nexport const selectedQuestionRadioFormElement = {\n  elementType: 'RADIO_BUTTON',\n  appearance: {\n    selectionType: 'SINGLE',\n  },\n  validation: {\n    minimumSelection: null,\n    maximumSelection: null,\n  },\n  option: {\n    optionType: '',\n    lookupTable: '',\n    customOptions: [],\n    database: {\n      tableName: \"\",\n      valueField: \"\",\n      labelField: \"\",\n      criteria: [{\n        field: \"\",\n        condition: \"\",\n        valueSource: \"\",\n        inputValue: \"\",\n        logicalOperator: \"\"\n      }]\n    },\n    api: {\n      external: true,\n      url: \"\",\n      valueField: \"\",\n      labelField: \"\",\n      pathToValue: \"\",\n      pathVariables: [{\n        keyName: \"\",\n        valueSource: \"\",\n        inputValue: \"\"\n      }],\n      headers: [{\n        keyName: \"\",\n        valueSource: \"\",\n        inputValue: \"\"\n      }],\n      params: [{\n        keyName: \"\",\n        valueSource: \"\",\n        inputValue: \"\"\n      }]\n    }\n  },\n}\n\nexport const selectedQuestionCheckoboxFormElement = {\n  elementType: 'CHECK_BOX',\n  appearance: {\n    selectionType: 'SINGLE',\n  },\n  validation: {\n    minimumSelection: null,\n    maximumSelection: null,\n  },\n  option: {\n    optionType: '',\n    lookupTable: '',\n    customOptions: [],\n    database: {\n      tableName: \"\",\n      valueField: \"\",\n      labelField: \"\",\n      criteria: [{\n        field: \"\",\n        condition: \"\",\n        valueSource: \"\",\n        inputValue: \"\",\n        logicalOperator: \"\"\n      }]\n    },\n    api: {\n      external: true,\n      url: \"\",\n      valueField: \"\",\n      labelField: \"\",\n      pathToValue: \"\",\n      pathVariables: [{\n        keyName: \"\",\n        valueSource: \"\",\n        inputValue: \"\"\n      }],\n      headers: [{\n        keyName: \"\",\n        valueSource: \"\",\n        inputValue: \"\"\n      }],\n      params: [{\n        keyName: \"\",\n        valueSource: \"\",\n        inputValue: \"\"\n      }]\n    }\n  },\n}\n\n\n\nexport interface ValidationError {\n  id: string;\n  message: string;\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ToastrService } from 'ngx-toastr';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-webhooks',\n  templateUrl: './webhooks.component.html',\n  styleUrls: ['./webhooks.component.scss'],\n})\nexport class WebhooksComponent {\n  constructor(\n    @Inject(MAT_DIALOG_DATA) public data: any,\n    private dialogRef: MatDialogRef<WebhooksComponent>,\n    private toastr: ToastrService\n  ) {\n    if (data.webhooks?.length > 0) {\n      this.webhooks = data.webhooks.map((webhook: any) => ({\n        ...webhook,\n        opened: false,\n        headersOpened: false,\n        paramsOpened: false,\n        pathVariablesOpened: false,\n        requestBodyOpened: false,\n      }));\n    }\n    this.translations = data.translations;\n    this.selectQuestions = this.translations\n      ?.filter(\n        (item: { language: string; entityType: string; attribute: string }) =>\n          item.language === 'eng' &&\n          item.entityType == 'QUESTION' &&\n          item.attribute == 'NAME'\n      )\n      .map((item: { translatedText: any; elementId: any }) => ({\n        label: item.translatedText,\n        value: item.elementId,\n      }));\n      this.formStatus = data.formStatus;\n  }\n\n  selectQuestions: any = [];\n  translations: any = [];\n\n  valueFrom = CONSTANTS.VALUE_FROM;\n\n  webhooks: any;\n\n  webhooksOpened: boolean = false;\n  apiHeaderOpened: boolean = false;\n  apiParameterOpened: boolean = false;\n  pathVariablesOpened: boolean = false;\n  requestBodyOpened: boolean = false;\n  formStatus: string = '';\n\n  closeModal() {\n    this.dialogRef.close();\n  }\n\n  addHeaders() {\n    if (!this.webhooks[0].headers) {\n      this.webhooks[0].headers = [];\n    }\n    this.webhooks[0].headers.push({\n      keyName: '',\n      valueSource: '',\n      questionId: '',\n      inputValue: '',\n      isConflict: true,\n    });\n  }\n\n  addParams() {\n    if (!this.webhooks[0].params) {\n      this.webhooks[0].params = [];\n    }\n    this.webhooks[0].params.push({\n      keyName: '',\n      valueSource: '',\n      questionId: '',\n      inputValue: '',\n      isConflict: true,\n    });\n  }\n\n  addPathVariables() {\n    if (!this.webhooks[0].pathVariables) {\n      this.webhooks[0].pathVariables = [];\n    }\n    this.webhooks[0].pathVariables.push({\n      keyName: '',\n      valueSource: '',\n      questionId: '',\n      inputValue: '',\n      isConflict: true,\n    });\n  }\n\n  addRequestBodies() {\n    if (!this.webhooks[0].requestBodies) {\n      this.webhooks[0].requestBodies = [];\n    }\n    this.webhooks[0].requestBodies.push({\n      keyName: '',\n      valueSource: '',\n      questionId: '',\n      inputValue: '',\n      isConflict: true,\n    });\n  }\n\n  deleteItem(i: number, value: string) {\n    if (value == 'header') {\n      this.webhooks[0].headers.splice(i, 1);\n    } else if (value == 'params') {\n      this.webhooks[0].params.splice(i, 1);\n    } else if (value == 'variables') {\n      this.webhooks[0].pathVariables.splice(i, 1);\n    } else if (value == 'body') {\n      this.webhooks[0].requestBodies.splice(i, 1);\n    }\n  }\n  saveWebhooks() {\n    this.webhooks?.forEach((webhook: any) => {\n      webhook.requestBodies = this.getRequestBodiesData(webhook.requestBodies);\n      webhook.isConflict = this.hasConflictInWebhook(webhook);\n\n      delete webhook.opened;\n      delete webhook.headersOpened;\n      delete webhook.paramsOpened;\n      delete webhook.pathVariablesOpened;\n      delete webhook.requestBodyOpened;\n    });\n    this.dialogRef.close(this.webhooks);\n  }\n\n  getRequestBodiesData(requestBodies: any): void {\n    return requestBodies?.map((rb: any) => {\n      if (rb.valueSource === 'QUESTION') {\n        return {\n          ...rb,\n          questionId: rb.questionId || rb.inputValue,\n        };\n      }\n      return rb;\n    });\n  }\n\n  openWebhooks() {\n    this.webhooksOpened = !this.webhooksOpened;\n  }\n\n  openApiHeader() {\n    this.apiHeaderOpened = !this.apiHeaderOpened;\n  }\n\n  openApiParameter() {\n    this.apiParameterOpened = !this.apiParameterOpened;\n  }\n\n  openPathVariable() {\n    this.pathVariablesOpened = !this.pathVariablesOpened;\n  }\n\n  openRequestBody() {\n    this.requestBodyOpened = !this.requestBodyOpened;\n  }\n\n  hasConflictInWebhook(webhook: any): boolean {\n    if (!webhook) {\n      return false;\n    }\n\n    // Check if any of the `headers`, `params`, `pathVariables`, or `requestBodies` have conflict\n    const hasConflictInHeaders = webhook.headers?.some(\n      (header: any) => header.isConflict\n    );\n    const hasConflictInParams = webhook.params?.some(\n      (param: any) => param.isConflict\n    );\n    const hasConflictInPathVariables = webhook.pathVariables?.some(\n      (pathVar: any) => pathVar.isConflict\n    );\n    const hasConflictInRequestBodies = webhook.requestBodies?.some(\n      (body: any) => body.isConflict\n    );\n\n    // Return true if any of the nested elements have conflict\n    return (\n      hasConflictInHeaders ||\n      hasConflictInParams ||\n      hasConflictInPathVariables ||\n      hasConflictInRequestBodies\n    );\n  }\n\n  hasAnyWebhookConflict(webhook: any): boolean {\n    // if (!webhooks || !webhooks.length) {\n    //   return false; // No webhooks to check\n    // }\n\n    // Check if any webhook in the array has a conflict\n    return this.hasConflictInWebhook(webhook);\n  }\n\n  hasAnyRequestBodyWithoutConflict(webhook: any): boolean {\n    if (!webhook || !webhook.requestBodies || !webhook.requestBodies.length) {\n      return false;\n    }\n\n    return webhook.requestBodies.some((body: any) => body.isConflict);\n  }\n\n  hasAnyPathVariableWithoutConflict(webhook: any): boolean {\n    if (!webhook || !webhook.pathVariables || !webhook.pathVariables.length) {\n      return false;\n    }\n\n    return webhook.pathVariables.some((path: any) => path.isConflict);\n  }\n\n  hasAnyParameterWithoutConflict(webhook: any): boolean {\n    if (!webhook || !webhook.params || !webhook.params.length) {\n      return false;\n    }\n\n    return webhook.params.some((param: any) => param.isConflict);\n  }\n\n  hasAnyHeadersWithoutConflict(webhook: any): boolean {\n    if (!webhook || !webhook.headers || !webhook.headers.length) {\n      return false;\n    }\n\n    return webhook.headers.some((header: any) => header.isConflict);\n  }\n\n  changeRequestBodyValue(body: any, data?: any) {\n    if (body.questionId || body.inputValue) {\n      body.questionId = body.inputValue = data?.value;\n      body.isConflict = false;\n    }\n  }\n\n  changePathVariableValue(variable: any, data?: any) {\n    if (variable.questionId || variable.inputValue) {\n      variable.questionId = variable.inputValue = data?.value;\n      variable.isConflict = false;\n    }\n  }\n\n  changeParamValue(param: any, data?: any) {\n    if (param.questionId || param.inputValue) {\n      param.questionId = param.inputValue = data?.value;\n      param.isConflict = false;\n    }\n  }\n\n  changeHeaderValue(header: any, data?: any) {\n    if (header.questionId || header.inputValue) {\n      header.questionId = header.inputValue = data?.value;\n      header.isConflict = false;\n    }\n  }\n\n  toggleWebhook(index: number): void {\n    this.webhooks[index].opened = !this.webhooks[index].opened;\n  }\n\n  toggleHeaders(index: number) {\n    this.webhooks[index].headersOpened = !this.webhooks[index].headersOpened;\n  }\n\n  toggleParams(index: number) {\n    this.webhooks[index].paramsOpened = !this.webhooks[index].paramsOpened;\n  }\n\n  togglePathVariables(index: number) {\n    this.webhooks[index].pathVariablesOpened =\n      !this.webhooks[index].pathVariablesOpened;\n  }\n\n  toggleRequestBody(index: number) {\n    this.webhooks[index].requestBodyOpened =\n      !this.webhooks[index].requestBodyOpened;\n  }\n}\n","<div class=\"modalBody\">\n  <div class=\"modalHeader\">\n    <div class=\"title-div\">\n      <p class=\"title\">Webhooks</p>\n    </div>\n    <div class=\"header-btn\">\n      <img\n        src=\"/assets/icons/close-icon.svg\"\n        alt=\"Close Icon\"\n        (click)=\"closeModal()\"\n      />\n    </div>\n  </div>\n  <div class=\"modal-body\"\n  [ngClass]=\"{'disable-published':formStatus === 'PUBLISHED'}\">\n    <div\n      class=\"formLabels row mb-3\"\n      *ngFor=\"let webhook of webhooks; let i = index\"\n      [ngClass]=\"{ highlight: hasAnyWebhookConflict(webhook) }\"\n    >\n      <div class=\"webhooksHeader\" (click)=\"toggleWebhook(i)\">\n        <p>{{ webhook.webhookName }}</p>\n        <div\n          class=\"down-arrow\"\n          [ngClass]=\"{ opened: webhook.opened, closed: !webhook.opened }\"\n        >\n          <img\n            src=\"assets/icons/down-arrow-gray-icon.svg\"\n            alt=\"Down Arrow Icon\"\n          />\n        </div>\n        <div\n          class=\"up-arrow\"\n          [ngClass]=\"{ opened: webhook.opened, closed: !webhook.opened }\"\n        >\n          <img src=\"assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n        </div>\n      </div>\n      <div\n        class=\"appearances\"\n        [ngClass]=\"{ opened: webhook.opened, closed: !webhook.opened }\"\n      >\n        <div class=\"form-controls col-12 d-flex justify-content-end row\">\n          <div class=\"col-3\">\n            <p>Request Type</p>\n          </div>\n          <div class=\"col-6\">\n            <p>API URL</p>\n          </div>\n          <div class=\"col-3\">\n            <p>URL Type</p>\n          </div>\n        </div>\n        <div class=\"form-controls col-12 mb-5 row\">\n          <div class=\"col-3\">\n            <p class=\"webhookValue\">{{ webhook.requestType }}</p>\n          </div>\n          <div class=\"col-6\">\n            <p class=\"webhookValue\">{{ webhook.url }}</p>\n          </div>\n          <div class=\"col-3\">\n            <p class=\"webhookValue\">{{ webhook.webhookUrlType }}</p>\n          </div>\n        </div>\n        <div\n          class=\"form-controls apiHeader header col-12 mb-5\"\n          [ngClass]=\"{\n            highlight:\n              webhooks &&\n              webhooks.length &&\n              hasAnyHeadersWithoutConflict(webhook)\n          }\"\n        >\n          <div class=\"webhooksHeader\" (click)=\"toggleHeaders(i)\">\n            <p>Headers</p>\n            <div\n              class=\"down-arrow\"\n              [ngClass]=\"{\n                opened: webhook.headersOpened,\n                closed: !webhook.headersOpened\n              }\"\n            >\n              <img\n                src=\"assets/icons/down-arrow-gray-icon.svg\"\n                alt=\"Down Arrow Icon\"\n              />\n            </div>\n            <div\n              class=\"up-arrow\"\n              [ngClass]=\"{\n                opened: webhook.headersOpened,\n                closed: !webhook.headersOpened\n              }\"\n            >\n              <img src=\"assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n            </div>\n          </div>\n\n          <div\n            class=\"appearances\"\n            [ngClass]=\"{\n              opened: webhook.headersOpened,\n              closed: !webhook.headersOpened\n            }\"\n          >\n            <div class=\"row ms-2\">\n              <div class=\"col-4 mb-4\">Name</div>\n              <div class=\"col-4 mb-4\">Value from</div>\n              <div class=\"col-3 mb-4\">Value</div>\n              <div class=\"col-1 mb-4 p-0\"></div>\n            </div>\n            <div\n              class=\"row mb-4 ms-2\"\n              *ngFor=\"let header of webhook.headers; let i = index\"\n            >\n              <div class=\"col-4\">\n                <p class=\"webhookValue\">{{ header.keyName }}</p>\n              </div>\n              <div class=\"col-4\">\n                <p class=\"webhookValue\">{{ header.valueSource }}</p>\n              </div>\n              <div class=\"col-3\" *ngIf=\"header.valueSource == 'QUESTION'\">\n                <mat-select\n                  [(value)]=\"header.questionId || header.inputValue\"\n                  (selectionChange)=\"changeHeaderValue(header, $event)\"\n                  class=\"form-select header\"\n                  [ngClass]=\"{ highlight: header.isConflict }\"\n                >\n                  <mat-option\n                    *ngFor=\"let question of selectQuestions\"\n                    [value]=\"question.value\"\n                  >\n                    {{ question.label }}\n                  </mat-option>\n                </mat-select>\n              </div>\n              <div\n                class=\"col-3\"\n                *ngIf=\"\n                  header.valueSource == 'CUSTOM_INPUT' ||\n                  header.valueSource == ''\n                \"\n              >\n                <input\n                  type=\"text\"\n                  class=\"form-control header\"\n                  [(ngModel)]=\"header.inputValue\"\n                  (ngModelChange)=\"changeHeaderValue(header)\"\n                  [ngClass]=\"{ highlight: header.isConflict }\"\n                />\n              </div>\n              <div class=\"col-1 d-flex justify-content-end\"></div>\n            </div>\n          </div>\n        </div>\n\n        <div\n          class=\"form-controls apiHeader parameter col-12 mb-5\"\n          [ngClass]=\"{\n            highlight:\n              webhooks &&\n              webhooks.length &&\n              hasAnyParameterWithoutConflict(webhook)\n          }\"\n        >\n          <div class=\"webhooksHeader\" (click)=\"toggleParams(i)\">\n            <p>Parameters</p>\n            <div\n              class=\"down-arrow\"\n              [ngClass]=\"{\n                opened: webhook.paramsOpened,\n                closed: !webhook.paramsOpened\n              }\"\n            >\n              <img\n                src=\"assets/icons/down-arrow-gray-icon.svg\"\n                alt=\"Down Arrow Icon\"\n              />\n            </div>\n            <div\n              class=\"up-arrow\"\n              [ngClass]=\"{\n                opened: webhook.paramsOpened,\n                closed: !webhook.paramsOpened\n              }\"\n            >\n              <img src=\"assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n            </div>\n          </div>\n          <div\n            class=\"appearances\"\n            [ngClass]=\"{\n              opened: webhook.paramsOpened,\n              closed: !webhook.paramsOpened\n            }\"\n          >\n            <div class=\"row ms-2\">\n              <div class=\"col-4 mb-4\">Name</div>\n              <div class=\"col-4 mb-4\">Value from</div>\n              <div class=\"col-3 mb-4\">Value</div>\n              <div class=\"col-1 mb-4 p-0\"></div>\n            </div>\n            <div\n              class=\"row mb-4 ms-2\"\n              *ngFor=\"let param of webhook.params; let i = index\"\n            >\n              <div class=\"col-4\">\n                <p class=\"webhookValue\">{{ param.keyName }}</p>\n              </div>\n              <div class=\"col-4\">\n                <p class=\"webhookValue\">{{ param.valueSource }}</p>\n              </div>\n              <div class=\"col-3\" *ngIf=\"param.valueSource == 'QUESTION'\">\n                <mat-select\n                  [(value)]=\"param.questionId || param.inputValue\"\n                  (selectionChange)=\"changeParamValue(param, $event)\"\n                  class=\"form-select param\"\n                  [ngClass]=\"{ highlight: param.isConflict }\"\n                >\n                  <mat-option\n                    *ngFor=\"let question of selectQuestions\"\n                    [value]=\"question.value\"\n                  >\n                    {{ question.label }}\n                  </mat-option>\n                </mat-select>\n              </div>\n              <div\n                class=\"col-3\"\n                *ngIf=\"\n                  param.valueSource == 'CUSTOM_INPUT' || param.valueSource == ''\n                \"\n              >\n                <input\n                  type=\"text\"\n                  class=\"form-control parameter\"\n                  [(ngModel)]=\"param.inputValue\"\n                  (ngModelChange)=\"changeParamValue(param)\"\n                  [ngClass]=\"{ highlight: param.isConflict }\"\n                />\n              </div>\n              <div class=\"col-1 d-flex justify-content-end\"></div>\n            </div>\n          </div>\n        </div>\n\n        <div\n          class=\"form-controls apiHeader pathVariable col-12 mb-5\"\n          [ngClass]=\"{\n            highlight:\n              webhooks &&\n              webhooks.length &&\n              hasAnyPathVariableWithoutConflict(webhook)\n          }\"\n        >\n          <div class=\"webhooksHeader\" (click)=\"togglePathVariables(i)\">\n            <p>Path Variables</p>\n            <div\n              class=\"down-arrow\"\n              [ngClass]=\"{\n                opened: webhook.pathVariablesOpened,\n                closed: !webhook.pathVariablesOpened\n              }\"\n            >\n              <img\n                src=\"assets/icons/down-arrow-gray-icon.svg\"\n                alt=\"Down Arrow Icon\"\n              />\n            </div>\n            <div\n              class=\"up-arrow\"\n              [ngClass]=\"{\n                opened: webhook.pathVariablesOpened,\n                closed: !webhook.pathVariablesOpened\n              }\"\n            >\n              <img src=\"assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n            </div>\n          </div>\n\n          <div\n            class=\"appearances\"\n            [ngClass]=\"{\n              opened: webhook.pathVariablesOpened,\n              closed: !webhook.pathVariablesOpened\n            }\"\n          >\n            <div class=\"row ms-2\">\n              <div class=\"col-4 mb-4\">Name</div>\n              <div class=\"col-4 mb-4\">Value from</div>\n              <div class=\"col-3 mb-4\">Value</div>\n              <div class=\"col-1 mb-4 p-0\"></div>\n            </div>\n            <div\n              class=\"row mb-4 ms-2\"\n              *ngFor=\"let variable of webhook.pathVariables; let i = index\"\n            >\n              <div class=\"col-4\">\n                <p class=\"webhookValue\">{{ variable.keyName }}</p>\n              </div>\n              <div class=\"col-4\">\n                <p class=\"webhookValue\">{{ variable.valueSource }}</p>\n              </div>\n              <div class=\"col-3\" *ngIf=\"variable.valueSource == 'QUESTION'\">\n                <mat-select\n                  [(value)]=\"variable.questionId || variable.inputValue\"\n                  (selectionChange)=\"changePathVariableValue(variable, $event)\"\n                  class=\"form-select pathVariable\"\n                  [ngClass]=\"{ highlight: variable.isConflict }\"\n                >\n                  <mat-option\n                    *ngFor=\"let question of selectQuestions\"\n                    [value]=\"question.value\"\n                  >\n                    {{ question.label }}\n                  </mat-option>\n                </mat-select>\n              </div>\n              <div\n                class=\"col-3\"\n                *ngIf=\"\n                  variable.valueSource == 'CUSTOM_INPUT' ||\n                  variable.valueSource == ''\n                \"\n              >\n                <input\n                  type=\"text\"\n                  class=\"form-control pathVariable\"\n                  [(ngModel)]=\"variable.inputValue\"\n                  (ngModelChange)=\"changePathVariableValue(variable)\"\n                  [ngClass]=\"{ highlight: variable.isConflict }\"\n                />\n              </div>\n              <div class=\"col-1 d-flex justify-content-end\"></div>\n            </div>\n          </div>\n        </div>\n\n        <div\n          class=\"form-controls apiHeader requestBody col-12 mb-5\"\n          [ngClass]=\"{\n            highlight:\n              webhooks &&\n              webhooks.length &&\n              hasAnyRequestBodyWithoutConflict(webhook)\n          }\"\n        >\n          <div class=\"webhooksHeader\" (click)=\"toggleRequestBody(i)\">\n            <p>Request Body</p>\n            <div\n              class=\"down-arrow\"\n              [ngClass]=\"{\n                opened: webhook.requestBodyOpened,\n                closed: !webhook.requestBodyOpened\n              }\"\n            >\n              <img\n                src=\"assets/icons/down-arrow-gray-icon.svg\"\n                alt=\"Down Arrow Icon\"\n              />\n            </div>\n            <div\n              class=\"up-arrow\"\n              [ngClass]=\"{\n                opened: webhook.requestBodyOpened,\n                closed: !webhook.requestBodyOpened\n              }\"\n            >\n              <img src=\"assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n            </div>\n          </div>\n\n          <div\n            class=\"appearances\"\n            [ngClass]=\"{\n              opened: webhook.requestBodyOpened,\n              closed: !webhook.requestBodyOpened\n            }\"\n          >\n            <div class=\"row ms-2\">\n              <div class=\"col-4 mb-4\">Name</div>\n              <div class=\"col-4 mb-4\">Value from</div>\n              <div class=\"col-3 mb-4\">Value</div>\n              <div class=\"col-1 mb-4 p-0\"></div>\n            </div>\n            <div\n              class=\"row mb-4 ms-2\"\n              *ngFor=\"let body of webhook.requestBodies; let i = index\"\n            >\n              <div class=\"col-4\">\n                <p class=\"webhookValue\">{{ body.keyName }}</p>\n              </div>\n              <div class=\"col-4\">\n                <p class=\"webhookValue\">{{ body.valueSource }}</p>\n              </div>\n              <div class=\"col-3\" *ngIf=\"body.valueSource == 'QUESTION'\">\n                <mat-select\n                  [(value)]=\"body.questionId || body.inputValue\"\n                  (selectionChange)=\"changeRequestBodyValue(body, $event)\"\n                  class=\"form-select requestBody\"\n                  [ngClass]=\"{ highlight: body.isConflict }\"\n                >\n                  <mat-option\n                    *ngFor=\"let question of selectQuestions\"\n                    [value]=\"question.value\"\n                  >\n                    <span class=\"option-text\">{{ question.label }}</span>\n                  </mat-option>\n                </mat-select>\n              </div>\n              <div\n                class=\"col-3\"\n                *ngIf=\"\n                  body.valueSource == 'CUSTOM_INPUT' || body.valueSource == ''\n                \"\n              >\n                <input\n                  type=\"text\"\n                  class=\"form-control requestBody\"\n                  [(ngModel)]=\"body.inputValue\"\n                  (ngModelChange)=\"changeRequestBodyValue(body)\"\n                  [ngClass]=\"{ highlight: body.isConflict }\"\n                />\n              </div>\n              <div class=\"col-1 d-flex justify-content-end\"></div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div *ngIf=\"webhooks?.length==0 || webhooks==undefined\">\n      <p class=\"text-center\">\n        No Webhooks configured for this form\n      </p>\n    </div>\n\n    <div class=\"footer-btn d-flex justify-content-end\">\n      <button type=\"submit\" (click)=\"saveWebhooks()\">Ok</button>\n    </div>\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class EditStateServiceService {\n\n  constructor() { }\n  private invalidQuestions: {[key: string]: {message: string}} = {};\n\n  setInvalid(questionId: string, message: string) {\n    this.invalidQuestions[questionId] = {message};\n  }\n\n  removeInvalid(questionId: string) {\n    delete this.invalidQuestions[questionId];\n  }\n\n\n  getErrorMessage(questionId: string): boolean  {\n    return questionId in this.invalidQuestions;\n  }\n}\n","import { Component, ElementRef, HostListener, Inject, ViewChild } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ValidationError } from '../constants';\nimport { EditStateServiceService } from '../../services/edit-state-service.service';\n\n\n\n\n\n@Component({\n  selector: 'lib-validation-failed-modal',\n  templateUrl: './validation-failed-modal.component.html',\n  styleUrls: ['./validation-failed-modal.component.scss']\n})\nexport class ValidationFailedModalComponent {\n\n\n  constructor(\n    private editStateService: EditStateServiceService,\n    @Inject(MAT_DIALOG_DATA) public data: any,\n  public dialogRef: MatDialogRef<ValidationFailedModalComponent>,\n){\n  this.dialogIssues = data.dialogIssues || [];\n  this.isPublish = data.isPublish || false;\n\n  const hasDuplicateIdIssue = this.dialogIssues.some(issue =>\n    issue.message?.toLowerCase().includes('duplicate customelementids') ||\n    issue.message?.toLowerCase().includes('please provide a valid when clause')\n  );\n\n  if (hasDuplicateIdIssue) {\n    this.isPublish = true;\n  }\n  }\n  dialogIssues: ValidationError[] = [];\n  isPublish: boolean = false;\n  message:string='';\n  messageHeader:string='';\n  isMouseInsideChild = false;\n  retryCount: number = 0;\n  maxRetries:number = 5;\n  private debounceTimer: any;\n  @ViewChild('modalBody', { static: false }) modalBody!: ElementRef;\n  closeModal() {\n    this.dialogRef.close();\n  }\n\n  @HostListener('wheel', ['$event'])\n  onMouseWheel(event: WheelEvent) {\n    if (this.isMouseInsideChild && this.modalBody) {\n        const scrollElement = this.modalBody.nativeElement;\n        const delta = event.deltaY || -event.detail;\n\n        scrollElement.scrollTop += delta * 0.3;\n\n        const atTop = scrollElement.scrollTop === 0 && delta < 0;\n        const atBottom =\n          scrollElement.scrollHeight - scrollElement.scrollTop === scrollElement.clientHeight && delta > 0;\n\n        if (atTop || atBottom) {\n          event.stopPropagation();\n        }\n      }\n      event.preventDefault();\n    }\n\n    onMouseEnterChild() {\n      this.isMouseInsideChild = true;\n    }\n\n    // Mouse leaves the child div, allow the parent to scroll\n    onMouseLeaveChild() {\n      this.isMouseInsideChild = false;\n    }\n\n    async navigateToErrorMeddage(event: string) {\n      this.dialogRef.close();\n\n      const elementId = `question-${event}`;\n      this.editStateService.setInvalid(elementId,\"\");\n      this.retryCount = 0;\n      this.maxRetries = 10; // Increased from default\n      await this.scrollToElementWithRetry(elementId);\n  }\n\n  private async scrollToElementWithRetry(elementId: string): Promise<void> {\n      this.retryCount++;\n      const element = document.getElementById(elementId);\n\n      if (element) {\n          // Check if element is visible\n          if (element.offsetParent === null) {\n              console.warn('Element exists but is not visible');\n          }\n          requestAnimationFrame(() => this.scrollAndFocus(element));\n          return;\n      }\n\n      if (this.retryCount < this.maxRetries) {\n          await new Promise(resolve => setTimeout(resolve, 200)); // Increased delay\n          return this.scrollToElementWithRetry(elementId);\n      }\n\n      console.error(`Element ${elementId} not found after ${this.maxRetries} attempts`);\n      // Optionally throw an error here if you want calling code to handle the failure\n  }\n\n  private scrollAndFocus(element: HTMLElement) {\n    // First try standard method\n    element.scrollIntoView({\n        behavior: 'smooth',\n        block: 'center',\n        inline: 'nearest'\n    });\n\n    // Fallback: Direct window scroll calculation\n    setTimeout(() => {\n        const rect = element.getBoundingClientRect();\n        const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n        const elementTop = rect.top + scrollTop;\n        const offset = window.innerHeight / 2; // Center of viewport\n\n        window.scrollTo({\n            top: elementTop - offset,\n            behavior: 'smooth'\n        });\n    }, 100);\n\n\n    setTimeout(() => {\n        const focusable = element.querySelector(\n            'input, select, textarea, button, [tabindex]:not([tabindex=\"-1\"])'\n        ) as HTMLElement;\n        focusable?.focus();\n    }, 500);\n\n\n}\n\n  // Helper to debug scroll containers\n  private findScrollableParents(element: HTMLElement): HTMLElement[] {\n      const parents: HTMLElement[] = [];\n      let current = element.parentElement;\n\n      while (current) {\n          const style = getComputedStyle(current);\n          if (style.overflowY === 'auto' || style.overflowY === 'scroll') {\n              parents.push(current);\n          }\n          current = current.parentElement;\n      }\n\n      return parents;\n  }\n\n    // private fallbackScroll() {\n    //   const pageElement = document.querySelector(`.page-${this.currentPageIndex}`);\n    //   pageElement?.scrollIntoView({ behavior: 'auto' });\n    // }\n\n    // private debounce(func: () => void, delay: number) {\n    //   clearTimeout(this.debounceTimer);\n    //   this.debounceTimer = setTimeout(func, delay);\n    // }\n  }\n\n\n","\n<div class=\"\" id=\"checkdeleteModal\" tabindex=\"-1\" (mouseenter)=\"onMouseEnterChild()\" (mouseleave)=\"onMouseLeaveChild()\">\n    <div class=\"modal-dialog\">\n      <div class=\"modal-content\">\n        <div class=\"modalHeader\">\n            <div class=\"header-btn\">\n                <img (click)=\"closeModal()\" src=\"/assets/icons/close-sidebar-mark-icon.svg\" alt=\"Close Sidebar Icon\">\n            </div>\n          <div class=\"title-div\">\n            {{ isPublish ? 'Some Issues Found' : 'Some Issues Found – Do You Want to Proceed?' }}\n          </div>\n\n      </div>\n        <div class=\"modalBody\" #modalBody>\n          <div class=\"row error-messages\">\n            <div class=\"error-message\" *ngFor=\"let issue of dialogIssues\"    (click)=\"navigateToErrorMeddage(issue.id)\">\n                <p>{{ issue.message }}</p>\n                <p  class=\"icon\"><i class=\"bi bi-arrow-right\"></i></p>\n              </div>\n          </div>\n        </div>\n        <div class=\"modalFooter\" *ngIf=\"!isPublish\">\n          <div class=\"footer-btn \">\n          <button type=\"button\" class=\"delete-btn\"\n          (click)=\"dialogRef.close(false)\"\n         >cancel</button>\n          <button class=\"cancel-btn\"\n          (click)=\"dialogRef.close(true)\"\n          type=\"button\">\n              Ignore and Save\n          </button>\n        </div>\n        </div>\n      </div>\n    </div>\n  </div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AuthService {\n\n  constructor() { }\n\n  private headerSubject=new BehaviorSubject<any>({});\n  public header$: Observable<any> = this.headerSubject.asObservable();\n\n  setHeader(data:any){\n    this.headerSubject.next(data);\n  }\n}","// api.service.ts\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { DataService } from './data.service';\nimport { AuthService } from './auth.service';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ApiService {\n  constructor(\n    private http: HttpClient,\n    private dataService: DataService,\n    private authService: AuthService\n  ) {\n    this.dataService.apiUrl$.subscribe((data) => {\n      this.baseUrl = data;\n    });\n\n    this.authService.header$.subscribe((data) => {\n      this.header = data;\n    });\n  }\n  private baseUrl: string = '';\n  header: any = {};\n\n  getFormData(formId: any): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    // Make the HTTP GET request with the options\n    return this.http.get<any>(this.baseUrl + `/api/forms/${formId}`, options);\n  }\n\n  getDuplicateFormData(formId: any): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    // Make the HTTP GET request with the options\n    return this.http.get<any>(this.baseUrl + `/api/forms/create-duplicate/${formId}`, options);\n  }\n\n  \n  getFormById(formId: string): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    return this.http.get<any>(this.baseUrl + `/api/forms/${formId}`, {\n      headers: headers,\n    });\n  }\n  updateForm(formId: string, formData: FormData): Observable<any> {\n    const headers = new HttpHeaders({\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n  \n    // Make the HTTP PUT request with the options\n    return this.http.put<any>(this.baseUrl + `/api/forms/${formId}`, formData, {\n      headers: headers,\n    });\n  }\n  postForm(formData: any): Observable<any> { \n    const headers = new HttpHeaders({\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n  \n    return this.http.post<any>(this.baseUrl + '/api/forms', formData, {\n      headers: headers,\n    });\n  }\n\n  deleteForm(formId: string): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const options = {\n      headers: headers,\n    };\n    return this.http.delete<any>(this.baseUrl + `/api/forms/${formId}`, {\n      headers: headers,\n    });\n  }\n\n  publishForm(moduleName:string,formId:string){\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const options = {\n      headers: headers,\n    };\n    return this.http.patch<any>(this.baseUrl + `/api/forms/${moduleName}/${formId}/publish`,options);\n  }\n  getTables(): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    \n    return this.http.get<any>(this.baseUrl + '/api/load-from-db/tables', options);\n  }\n  getTableData(tableName:string): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    \n    return this.http.get<any>(this.baseUrl + `/api/load-from-db/tables/${tableName}/fields`, options);\n  }\n  saveLookUp(data: any): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = JSON.stringify(data);\n    // Make the HTTP GET request with the options\n    return this.http.post<any>(this.baseUrl + `/api/lookup`, body, {\n      headers: headers,\n    });\n  }\n  getLookUpTable(size: number, page: number, search: string ): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const params = new HttpParams()\n    .set('size', size.toString())\n    .set('page', page.toString())\n    .set('search', search);\n\n  const options = {\n    headers: headers,\n    params: params,\n  };\n    \n    return this.http.get<any>(this.baseUrl + '/api/lookup', options);\n\n  }\n  getLookUpTableData(name:any): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    \n    return this.http.get<any>(this.baseUrl + `/api/lookup/${name}`, options);\n\n  }\n\n  getLookUpTableDataById(id:any): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    \n    return this.http.get<any>(this.baseUrl + `/api/lookup/uuid/${id}`, options);\n\n  }\n\n  updateLookUp(data: any,id:any): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = JSON.stringify(data);\n    // Make the HTTP GET request with the options\n    return this.http.put<any>(this.baseUrl + `/api/lookup/${id}`, body, {\n      headers: headers,\n    });\n  }\n  getInternalApi(data: any,url:any): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    // Make the HTTP GET request with the options\n    return this.http.get<any>(this.baseUrl + url, options);\n  }\n\n  getModules(){\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n\n    const options = {\n      headers: headers,\n    };\n\n    return this.http.get(this.baseUrl + '/api/forms/modules')\n  }\n  getContries(page:any,size:any,key:any): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    return this.http.get<any>(`${this.baseUrl}/api/public/json/country?searchKey=${encodeURIComponent(key)}&page=${page}&size=${size}`, options);\n  }\n  getLanguage(page:any,size:any,key:any): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    \n    return this.http.get<any>(`${this.baseUrl}/api/public/json/language?searchKey=${key}&page=${page}&size=${size}`, options);\n  }\n  previewFile(url: any): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser,\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    const fileUrl = url;\n    const encodedFileUrl = encodeURIComponent(fileUrl);\n    const fullUrl = `?url=${encodedFileUrl}`;\n    return this.http.get<any>(this.baseUrl + `/api/cdn/preview${fullUrl}`, options);\n  }\n\n  getWebhooks(moduleName:string){\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, // Add any authorization token if required\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    return this.http.get(`${this.baseUrl}/api/forms/${moduleName}/form-initialization`,options);\n  }\n\n\n  fetchDataFromDatabase(database: any) {\n    const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n    return this.http.post<any>(`${this.baseUrl}/api/load-from-db`, database, {\n      headers,\n    });\n  }\n\n  fetchDataFromLookup(tableName: string) {\n    return this.http.get<any>(`${this.baseUrl}/api/public/lookup/${tableName}`);\n  }\n\n  fetchDataFromExternalAPI(apiConfig: any, selectedValues: any[] = []): Observable<any> {\n  \n    // ✅ Check if pagination exists\n    const hasPagination =\n      apiConfig.params?.some((p: any) => p.valueSource === 'PAGE_INDEX') &&\n      apiConfig.params?.some((p: any) => p.valueSource === 'PAGE_SIZE');\n\n  \n    // ---------------------- HEADERS ----------------------\n    let headers = new HttpHeaders();\n    if (apiConfig.headers) {\n      apiConfig.headers.forEach((header: any) => {\n        if (header.keyName && header.inputValue) {\n          if (header.valueSource === 'SELECTED_VALUES' && hasPagination) {\n            if (selectedValues.length > 0) {\n              if (header.inputValue === 'SINGLE_VALUE') {\n                headers = headers.set(header.keyName, selectedValues[0]);\n              } else if (header.inputValue === 'ARRAY_OF_VALUES') {\n                headers = headers.set(header.keyName, selectedValues.join(','));\n              }\n            }\n          } else {\n            if (header.keyName.toLowerCase() === 'authorization') {\n              headers = headers.set(header.keyName, 'Bearer ' + header.inputValue);\n            } else {\n              headers = headers.set(header.keyName, header.inputValue);\n            }\n          }\n        }\n      });\n    }\n  \n    // ---------------------- PARAMS ----------------------\n    let params = new HttpParams();\n    if (apiConfig.params) {\n      apiConfig.params.forEach((param: any) => {\n        if (param.keyName && param.inputValue) {\n          if (param.valueSource === 'SELECTED_VALUES' && hasPagination) {\n            if (selectedValues.length > 0) {\n              if (param.inputValue === 'SINGLE_VALUE') {\n                params = params.set(param.keyName, selectedValues[0]);\n              } else if (param.inputValue === 'ARRAY_OF_VALUES') {\n                selectedValues.forEach((val) => {\n                  params = params.append(param.keyName, val); // multiple values\n                });\n              }\n            }\n          } else {\n            params = params.set(param.keyName, param.inputValue);\n          }\n        }\n      });\n    }\n  \n    // ---------------------- PATH VARIABLES ----------------------\n    let url = apiConfig.url;\n    if (apiConfig.pathVariables) {\n      apiConfig.pathVariables.forEach((pathVar: any) => {\n        if (pathVar.keyName && pathVar.inputValue) {\n          url = url.replace(`{${pathVar.keyName}}`, pathVar.inputValue);\n        }\n      });\n    }\n  \n    // ---------------------- FINAL CALL ----------------------\n    return this.http.get<any>(url, { headers, params });\n  }\n\n  getModuleById(moduleId: string) {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, \n    });\n    return this.http.get<any>(this.baseUrl + `/api/modules/${moduleId}`, {\n      headers: headers,\n    });\n  }\n\n  getPredefinedVariables(){\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, \n    });\n    return this.http.get<any>(this.baseUrl + `/api/public/predefined-variables`);\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ValidationService {\n\n  constructor() { }\n\n\n  isValidFormula(formula: string): boolean {\n    const uuidRegex = /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}/;\n    const numberRegex = /\\d+(\\.\\d+)?/;\n    const operatorRegex = /[+\\-*/]/;\n    const parenRegex = /[()]/;\n  \n    // Tokenize: Split by space (or smarter: regex for UUIDs, numbers, operators, brackets)\n    const tokenPattern = new RegExp(\n      `(${uuidRegex.source})|(${numberRegex.source})|(${operatorRegex.source})|(${parenRegex.source})`,\n      'g'\n    );\n  \n    const tokens = formula.match(tokenPattern);\n    if (!tokens) return false; // No tokens at all\n  \n    // Check balanced parentheses\n    let balance = 0;\n    for (const token of tokens) {\n      if (token === '(') balance++;\n      if (token === ')') balance--;\n      if (balance < 0) return false; // Closing before opening\n    }\n    if (balance !== 0) return false;\n  \n    // Validate token sequence\n    const typeOf = (token: string) => {\n      if (uuidRegex.test(token)) return 'uuid';\n      if (numberRegex.test(token)) return 'number';\n      if (operatorRegex.test(token)) return 'operator';\n      if (token === '(') return 'lparen';\n      if (token === ')') return 'rparen';\n      return 'unknown';\n    };\n  \n    let prevType = 'operator'; // Allow formulas starting with ( or value\n  \n    for (const token of tokens) {\n      const currType = typeOf(token);\n  \n      if (currType === 'unknown') return false;\n  \n      if (\n        (prevType === 'uuid' || prevType === 'number' || prevType === 'rparen') &&\n        (currType === 'uuid' || currType === 'number' || currType === 'lparen')\n      ) {\n        return false; // Missing operator\n      }\n  \n      if (\n        (prevType === 'operator' || prevType === 'lparen') &&\n        (currType === 'operator' || currType === 'rparen')\n      ) {\n        return false; // Missing value\n      }\n  \n      prevType = currType;\n    }\n  \n    // Formula must not end with an operator or open parenthesis\n    if (prevType === 'operator' || prevType === 'lparen') return false;\n  \n    return true;\n  }\n}","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n  selector: 'lib-element-id-modal',\n  templateUrl: './element-id-modal.component.html',\n  styleUrls: ['./element-id-modal.component.scss'],\n})\nexport class ElementIdModalComponent {\n  element: any;\n  pages: any;\n  customElementId: string = '';\n  isDuplicate: boolean = false;\n  errorMessage: string = '';\n\n  // Unique id of the element being edited (stable internal id)\n  private currentUniqueId: string | null = null;\n\n  constructor(\n    @Inject(MAT_DIALOG_DATA) public data: any,\n    public dialogRef: MatDialogRef<ElementIdModalComponent>\n  ) {\n    this.element = data.element;\n    this.pages = data.pages || [];\n    // Use the element's internal id (not the elementId) to identify it uniquely\n    this.currentUniqueId =\n      this.element?.element?.id || this.element?.id || null;\n    this.customElementId = (\n      this.element?.element?.customElementId ||\n      this.element?.customElementId ||\n      ''\n    ).trim();\n  }\n\n  ngOnInit() {\n    // initial check if needed\n  }\n\n  updateElementId() {\n    // Allow only: letters, numbers, hyphens, underscores\n    const validPattern = /^[a-zA-Z0-9_-]*$/;\n\n    // sanitize input: remove invalid characters and trim\n    if (!validPattern.test(this.customElementId)) {\n      this.customElementId = this.customElementId.replace(\n        /[^a-zA-Z0-9_-]/g,\n        ''\n      );\n    }\n    this.customElementId = this.customElementId.trim();\n\n    // Check duplicates\n  }\n\n  /** Collects { elementId, uniqueId } for every element in the pages recursively */\n  private collectAllElementEntries(): Array<{\n    elementId: string;\n    uniqueId: string | null;\n  }> {\n    const entries: Array<{ elementId: string; uniqueId: string | null }> = [];\n\n    const traverse = (node: any) => {\n      if (!node) return;\n\n      // node can be either the wrapper { entityType, element } or direct element shape depending on your structure\n      const wrapper = node.element ? node : { element: node };\n      const el = wrapper;\n\n      if (el) {\n        const elemId = (el.elementId || el.customElementId || '')\n          .toString()\n          .trim();\n        const uniqueId = el.element.id || wrapper.id || null;\n\n        if (elemId) {\n          entries.push({ elementId: elemId, uniqueId });\n        }\n\n        // recurse childLogics -> formElements inside each logic\n        el.element.childLogics?.forEach((logic: any) => {\n          logic?.formElements?.forEach((child: any) => traverse(child));\n        });\n\n        // recurse nested formElements (subform, question group, multifield)\n        (el.element.formElements || []).forEach((nested: any) => traverse(nested));\n      }\n    };\n\n    (this.pages || []).forEach((page: any) => {\n      (page.formElements || []).forEach((fe: any) => traverse(fe));\n    });\n\n    return entries;\n  }\n\n  /** Checks whether customElementId exists on any other element (excluding currentUniqueId) */\n  private checkDuplicateElementId() {\n    this.isDuplicate = false;\n    this.errorMessage = '';\n\n    const idToCheck = (this.customElementId || '').trim();\n    if (!idToCheck) {\n      // nothing to check\n      return;\n    }\n\n    const allEntries = this.collectAllElementEntries();\n\n    // Option: make duplicate check case-insensitive by normalizing both sides:\n    // const normalizedToCheck = idToCheck.toLowerCase();\n    // const isDuplicate = allEntries.some(e => e.elementId.toLowerCase() === normalizedToCheck && e.uniqueId !== this.currentUniqueId);\n\n    const isDuplicate = allEntries.some(\n      (e) => e.elementId === idToCheck && e.uniqueId !== this.currentUniqueId\n    );\n\n    if (isDuplicate) {\n      this.isDuplicate = true;\n      this.errorMessage = `The Element ID \"${idToCheck}\" is already in use. Please enter a unique ID.`;\n    } else {\n      this.isDuplicate = false;\n      this.errorMessage = '';\n    }\n  }\n\n  saveElementId() {\n    // Update element (optional)\n    this.element.customElementId = this.customElementId;\n\n    this.dialogRef.close(this.element)\n  }\n\n  closeModal() {\n    this.dialogRef.close();\n  }\n}\n","<div class=\"fbModal\">\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <button class=\"element-modal-close\">\n        <img\n          src=\"/assets/icons/close-sidebar-mark-icon.svg\"\n          class=\"svg-model\"\n          (click)=\"closeModal()\"\n        />\n      </button>\n    </div>\n    <div class=\"fbModalTitle\">Add Element ID</div>\n    <div class=\"element-id-input-container\">\n      <p>Element ID</p>\n      <input\n        class=\"element-id-input\"\n        type=\"text\"\n        placeholder=\"Enter Here...\"\n        [(ngModel)]=\"customElementId\"\n        (ngModelChange)=\"updateElementId()\"\n        [ngClass]=\"{ 'invalid-input': isDuplicate }\"\n      />\n      <div *ngIf=\"isDuplicate\" class=\"error-message\">\n        {{ errorMessage }}\n      </div>\n    </div>\n    <div class=\"mt-3\">\n      <span class=\"element-id-message\">\n        Enter a unique identifier for this element. This ID can be used to\n        retrieve or reference data through APIs. Only alphanumeric characters,\n        hyphens (-), and underscores (_) are allowed. Spaces are not permitted.\n      </span>\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn\">\n        <button\n          type=\"button\"\n          [disabled]=\"isDuplicate \"\n          [ngClass]=\"{ 'disabled-btn': isDuplicate  }\"\n          (click)=\"saveElementId()\"\n        >\n          OK\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SharedService {\n\n  constructor() { }\n\n  extractAllQuestions = (\n    pages: any,\n    excludeElementId?: string\n  ): { id: string; label: string; elementType: string }[] => {\n    const allQuestions: any[] = [];\n\n    const traverseElement = (element: any) => {\n      if (!element || !element.entityType) return;\n\n      // Handle QUESTION\n      if (element.entityType === 'QUESTION' && element.element?.formElement) {\n        if (!excludeElementId || element.element.id !== excludeElementId) {\n          allQuestions.push({\n            id: element.element.id,\n            label:\n              element.element.label ||\n              element.element.question ||\n              element.element.formElement?.questionLabel ||\n              `Question (${element.element.id})`,\n            elementType: element.element.formElement.elementType,\n          });\n        }\n      }\n\n      // Handle SUBFORM / QUESTION_GROUP / MULTIFIELD recursively\n      if (\n        (element.entityType === 'SUBFORM' ||\n        element.entityType === 'QUESTION_GROUP' ||\n        element.entityType === 'MULTIFIELD') && excludeElementId != element.element.id\n      ) {\n        traverseSubForm(element.element);\n      }\n\n      if(element.element.id != excludeElementId){\n        // Handle nested child logics (if any)\n        element.element?.childLogics?.forEach((logic: any) => {\n          logic?.formElements?.forEach((child: any) => traverseElement(child));\n        });\n      }\n    };\n\n    const traverseSubForm = (subForm: any) => {\n      if (!subForm?.formElements) return;\n      subForm.formElements.forEach((el: any) => traverseElement(el));\n    };\n\n    // Start traversal from pages\n    pages?.forEach((page: any) => {\n      page?.formElements?.forEach((element: any) => traverseElement(element));\n    });\n\n    return allQuestions;\n  };\n}","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { CONSTANTS } from '../constants';\nimport { SharedService } from '../../services/shared.service';\n\n@Component({\n  selector: 'lib-when-clause-modal',\n  templateUrl: './when-clause-modal.component.html',\n  styleUrls: ['./when-clause-modal.component.scss'],\n})\nexport class WhenClauseModalComponent {\n  element: any;\n  pages: any;\n  activate: boolean = false;\n  logicalOperators = CONSTANTS.logicalOperator;\n  whenClause: any = [\n    {\n      questionid: '',\n      condition: '',\n      value: '',\n    },\n  ];\n  filteredAllQuestions: any;\n  questionOptions: any;\n  selectedActions: any[] = [];\n  conditions: any[][] = [];\n  selectedQuestions: any[][] = [];\n  selectedLogic: any[][] = [];\n  selectedCondition: any[][] = [];\n  numberComparison = CONSTANTS.COMPARISON_OPTIONS;\n  textComparison = CONSTANTS.TEXT_COMPARISON;\n  dropdownComparison = CONSTANTS.DROPDOWN_COMPARISON;\n  fileComparison = CONSTANTS.FILE_COMPARISON;\n  hiddenFieldComparison = CONSTANTS.HIDDEN_FIELD_COMPARISON;\n  actionOptions: any[] = [];\n\n  questionActionOptions: any = [\n    {\n      label: 'Show',\n      value: 'SHOW',\n    },\n    {\n      label: 'Hide',\n      value: 'HIDE',\n    },\n    {\n      label: 'Mark as required',\n      value: 'MARK_AS_REQUIRED',\n    },\n    {\n      label: 'Mark as optional',\n      value: 'MARK_AS_OPTIONAL',\n    },\n  ];\n\n  elementActionOptions: any = [\n    {\n      label: 'Show',\n      value: 'SHOW',\n    },\n    {\n      label: 'Hide',\n      value: 'HIDE',\n    },\n  ];\n\n  constructor(\n    private sharedService: SharedService,\n    @Inject(MAT_DIALOG_DATA) public data: any,\n    public dialogRef: MatDialogRef<WhenClauseModalComponent>\n  ) {\n    this.element = data.element;\n    this.pages = data.pages || [];\n  }\n\n  ngOnInit() {\n    if (this.element.entityType === 'QUESTION') {\n      this.actionOptions = this.questionActionOptions;\n    } else {\n      this.actionOptions = this.elementActionOptions;\n    }\n    const allQuestions = this.sharedService.extractAllQuestions(\n      this.pages,\n      this.element?.element?.id\n    );\n\n    // ✅ Allowed element types\n    const allowedTypes = [\n      'TEXT_BOX',\n      'NUMBER',\n      'DROP_DOWN',\n      'CHECK_BOX',\n      'RADIO_BUTTON',\n      'FILE_PICKER',\n      'TEXT_AREA',\n      'HIDDEN_FIELD', \n    ];\n\n    this.filteredAllQuestions = allQuestions.filter((q) =>\n      allowedTypes.includes(q.elementType)\n    );\n\n    // ✅ Filter and map to dropdown options\n    this.questionOptions = allQuestions\n      .filter((q) => allowedTypes.includes(q.elementType))\n      .map((q) => ({\n        label: q.label,\n        value: q.id,\n      }));\n      const actions = this.element?.whenClause?.whenClauseActions?.[0] ?? [];\n      this.selectedActions = this.actionOptions.filter(opt => (actions || []).includes(opt.value));\n\n    if (\n      this.element.whenClause &&\n      this.element.whenClause?.whenClauseCondition?.length > 0\n    ) {\n      this.assignWhenClause();\n    } else {\n      this.selectedQuestions.push([]);\n      this.selectedLogic.push([]);\n      this.selectedCondition.push([]);\n    }\n  }\n\n  closeModal() {\n    this.dialogRef.close();\n  }\n\n  addMoreClause(index?: number) {\n    const newClause = {\n      logic: '',\n      questionid: '',\n      condition: '',\n      value: '',\n    };\n\n    // Add new clause in the main whenClause array\n    if (index !== undefined && index >= 0) {\n      this.whenClause.splice(index + 1, 0, newClause);\n\n      // Insert corresponding placeholders in selected arrays\n      this.selectedQuestions.splice(index + 1, 0, []);\n      this.selectedLogic.splice(index + 1, 0, []);\n      this.selectedCondition.splice(index + 1, 0, []);\n    } else {\n      this.whenClause.push(newClause);\n\n      // Push corresponding placeholders\n      this.selectedQuestions.push([]);\n      this.selectedLogic.push([]);\n      this.selectedCondition.push([]);\n    }\n  }\n\n  deleteClause(index: number) {\n    if (this.whenClause.length > 1) {\n      this.whenClause.splice(index, 1);\n\n      // Remove corresponding entries from selected arrays\n      if (this.selectedQuestions[index]) {\n        this.selectedQuestions.splice(index, 1);\n      }\n      if (this.selectedLogic[index]) {\n        this.selectedLogic.splice(index, 1);\n      }\n      if (this.selectedCondition[index]) {\n        this.selectedCondition.splice(index, 1);\n      }\n      if (this.conditions[index]) {\n        this.conditions.splice(index, 1);\n      }\n    }\n  }\n\n  updateQuestion(index: number) {\n    if (!this.selectedQuestions[index]?.[0]) return;\n\n    const selectedValue = this.selectedQuestions[index][0].value;\n    this.whenClause[index].questionid = selectedValue;\n\n    // After setting question, update condition options\n    this.populateConditions(index, selectedValue);\n\n    this.selectedCondition[index] = [];\n    this.whenClause[index].condition = '';\n  }\n\n  populateConditions(index: number, questionId: string) {\n    const selectedQuestion = this.filteredAllQuestions.find(\n      (q: any) => q.id === questionId\n    );\n\n    if (!selectedQuestion) return;\n\n    switch (selectedQuestion.elementType) {\n      case 'TEXT_BOX':\n      case 'TEXT_AREA':\n        this.conditions[index] = this.textComparison;\n        break;\n      case 'NUMBER':\n        this.conditions[index] = this.numberComparison;\n        break;\n      case 'DROP_DOWN':\n      case 'CHECK_BOX':\n      case 'RADIO_BUTTON':\n        this.conditions[index] = this.dropdownComparison;\n        break;\n      case 'FILE_PICKER':\n        this.conditions[index] = this.fileComparison;\n        break;\n      case 'HIDDEN_FIELD':\n        this.conditions[index] = this.hiddenFieldComparison;\n        break;\n      default:\n        this.conditions[index] = [];\n    }\n  }\n\n  updateLogic(index: number) {\n    this.whenClause[index].logic = this.selectedLogic[index][0].value;\n  }\n\n  updateCondition(index: number) {\n    this.whenClause[index].condition = this.selectedCondition[index][0].value;\n  }\n\n  assignWhenClause() {\n    const saved = this.element.whenClause;\n    this.activate = saved.activate || false;\n\n    this.whenClause = [];\n    this.selectedQuestions = [];\n    this.selectedLogic = [];\n    this.selectedCondition = [];\n    this.conditions = [];\n\n    saved.whenClauseCondition.forEach((clause: any, index: number) => {\n      // Reconstruct the clause\n      this.whenClause.push({\n        logic: clause.logic || '',\n        questionid: clause.questionid || '',\n        condition: clause.condition || '',\n        value: clause.value || '',\n      });\n\n      // Match question dropdown selection\n      const matchedQuestion = this.questionOptions.find(\n        (opt: any) => opt.value === clause.questionid\n      );\n      this.selectedQuestions.push(matchedQuestion ? [matchedQuestion] : []);\n\n      // Match logic dropdown selection (skip for first clause)\n      const matchedLogic = this.logicalOperators.find(\n        (opt: any) => opt.value === clause.logic\n      );\n      this.selectedLogic.push(matchedLogic ? [matchedLogic] : []);\n\n      // 🧠 Populate condition options based on question type\n      const selectedQuestion = this.filteredAllQuestions.find(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (selectedQuestion) {\n        switch (selectedQuestion.elementType) {\n          case 'TEXT_BOX':\n          case 'TEXT_AREA':\n            this.conditions[index] = this.textComparison;\n            break;\n          case 'NUMBER':\n            this.conditions[index] = this.numberComparison;\n            break;\n          case 'DROP_DOWN':\n          case 'CHECK_BOX':\n          case 'RADIO_BUTTON':\n            this.conditions[index] = this.dropdownComparison;\n            break;\n          case 'FILE_PICKER':\n            this.conditions[index] = this.fileComparison;\n            break;\n          case 'HIDDEN_FIELD':\n            this.conditions[index] = this.hiddenFieldComparison;\n            break;\n          default:\n            this.conditions[index] = [];\n        }\n      } else {\n        this.conditions[index] = [];\n      }\n\n      // 🎯 Match the saved condition in dropdown\n      const matchedCondition = this.conditions[index]?.find(\n        (opt: any) => opt.value === clause.condition\n      );\n      this.selectedCondition.push(matchedCondition ? [matchedCondition] : []);\n    });\n  }\n\n  saveWhenClause() {\n    const isValid = this.isFullWhenClauseValid();\n\n    if (isValid) {\n      const actionValues = this.selectedActions.map((x) => x.value);\n      // Bind only if fully valid\n      this.element.whenClause = {\n        activate: this.activate,\n        whenClauseActions: actionValues,\n        whenClauseCondition: this.whenClause,\n      };\n    } else {\n      // Do not bind – set empty whenClause\n      this.element.whenClause = {\n        activate: false,\n        whenClauseCondition: [],\n      };\n    }\n\n    this.dialogRef.close(this.element);\n  }\n\n  clearWhenClause() {\n    // Reset main clause list\n    this.whenClause = [\n      {\n        questionid: '',\n        condition: '',\n        value: '',\n      },\n    ];\n\n    // Reset all selected arrays\n    this.selectedQuestions = [[]];\n    this.selectedLogic = [[]];\n    this.selectedCondition = [[]];\n    this.selectedActions = [];\n\n    // Reset populated condition options\n    this.conditions = [[]];\n\n    // Disable activate toggle if needed\n    this.activate = false;\n  }\n\n  isWhenClauseValid(): boolean {\n    const len = this.whenClause.length;\n\n    // Case 1: WhenClause has only one row\n    if (len === 1) {\n      const clause = this.whenClause[0];\n\n      const questionEmpty = !clause.questionid || clause.questionid === '';\n      const conditionEmpty = !clause.condition || clause.condition === '';\n\n      const allEmpty = questionEmpty && conditionEmpty ;\n      const allFilled = !questionEmpty && !conditionEmpty;\n\n      // ✔ return true if all empty OR all filled\n      // ❌ return false if partially filled\n      return allEmpty || allFilled;\n    }\n\n    // Case 2: More than one row\n    if (len > 1) {\n      for (let i = 0; i < len; i++) {\n        const clause = this.whenClause[i];\n\n        if (!clause.questionid || !clause.condition || clause.value === '') {\n          return false;\n        }\n\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  private isFullWhenClauseValid(): boolean {\n    const clauses = this.whenClause;\n\n    if (!clauses || clauses.length === 0) return false;\n\n    if (this.selectedActions.length === 0) return false;\n\n    for (let i = 0; i < clauses.length; i++) {\n      const c = clauses[i];\n\n      // All must have question, condition, value\n      if (!c.questionid || !c.condition) {\n        return false;\n      }\n\n      // From second row onwards, logic is required\n      if (i > 0 && !c.logic) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n}\n","<div class=\"fbModal\">\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <button class=\"element-modal-close\">\n        <img\n          src=\"/assets/icons/close-sidebar-mark-icon.svg\"\n          class=\"svg-model\"\n          (click)=\"closeModal()\"\n        />\n      </button>\n    </div>\n    <div class=\"fbModalTitle\">Control This Element When</div>\n    <div class=\"element-id-input-container\">\n      <div class=\"activate-container\">\n        <input\n          type=\"checkbox\"\n          class=\"element-activate-checkbox\"\n          id=\"element-activate-input-box\"\n          [(ngModel)]=\"activate\"\n        />\n        <label for=\"element-activate-input-box\">Activate</label>\n        <div class=\"ms-5\">\n          <label>Action to Perform</label>\n          <lib-dropdown\n          [items]=\"actionOptions\"\n          [selectedItems]=\"selectedActions\"\n          ></lib-dropdown>\n        </div>\n      </div>\n      <div class=\"row mt-3\">\n        <div class=\"col-4\">\n          <p>Question</p>\n          <lib-dropdown\n            *ngIf=\"selectedQuestions[0]\"\n            [placeholder]=\"'Select'\"\n            [items]=\"questionOptions\"\n            [(selectedItems)]=\"selectedQuestions[0]\"\n            (selectedItemsChange)=\"updateQuestion(0)\"\n          ></lib-dropdown>\n        </div>\n        <div class=\"col-4\">\n          <p>Condition</p>\n          <lib-dropdown\n            *ngIf=\"selectedCondition[0]\"\n            [placeholder]=\"'Select'\"\n            [items]=\"conditions[0]\"\n            [(selectedItems)]=\"selectedCondition[0]\"\n            (selectedItemsChange)=\"updateCondition(0)\"\n          ></lib-dropdown>\n        </div>\n        <div class=\"col-4\">\n          <p>Value</p>\n          <input\n            type=\"text\"\n            class=\"element-input-box\"\n            [(ngModel)]=\"whenClause[0].value\"\n          />\n        </div>\n      </div>\n      <div class=\"row mt-3 d-flex justify-content-end\">\n        <a class=\"add-more-button\" (click)=\"addMoreClause()\">Add More</a>\n      </div>\n      <div\n        class=\"row\"\n        *ngFor=\"let clause of whenClause.slice(1); let i = index\"\n      >\n        <div class=\"col-3\">\n          <p>Logic</p>\n          <lib-dropdown\n            *ngIf=\"selectedLogic[i + 1]\"\n            [placeholder]=\"'Select'\"\n            [items]=\"logicalOperators\"\n            [(selectedItems)]=\"selectedLogic[i + 1]\"\n            (selectedItemsChange)=\"updateLogic(i + 1)\"\n          ></lib-dropdown>\n        </div>\n        <div class=\"col-3\">\n          <p>Question</p>\n          <lib-dropdown\n            *ngIf=\"selectedQuestions[i + 1]\"\n            [placeholder]=\"'Select'\"\n            [items]=\"questionOptions\"\n            [(selectedItems)]=\"selectedQuestions[i + 1]\"\n            (selectedItemsChange)=\"updateQuestion(i + 1)\"\n          ></lib-dropdown>\n        </div>\n        <div class=\"col-3\">\n          <p>Condition</p>\n          <lib-dropdown\n            *ngIf=\"selectedCondition[i + 1]\"\n            [placeholder]=\"'Select'\"\n            [items]=\"conditions[i + 1]\"\n            [(selectedItems)]=\"selectedCondition[i + 1]\"\n            (selectedItemsChange)=\"updateCondition(i + 1)\"\n          ></lib-dropdown>\n        </div>\n        <div class=\"col-3\">\n          <p>Value</p>\n          <input\n            type=\"text\"\n            class=\"element-input-box\"\n            [(ngModel)]=\"clause.value\"\n          />\n        </div>\n        <div class=\"col-12 mt-2 d-flex justify-content-end gap-4\">\n          <a\n            class=\"add-more-button d-flex justify-content-end\"\n            (click)=\"addMoreClause(i + 1)\"\n            >Add More</a\n          >\n          <a\n            class=\"add-more-button d-flex justify-content-end\"\n            (click)=\"deleteClause(i + 1)\"\n            >Delete</a\n          >\n        </div>\n      </div>\n      <div class=\"mt-3\">\n        <span class=\"element-id-message\">\n          Set conditions using other questions' answers to control this\n          element.\n        </span>\n      </div>\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn\">\n        <button\n          type=\"button\"\n          class=\"when-clause-clear-btn\"\n          (click)=\"clearWhenClause()\"\n        >\n          Clear\n        </button>\n        <button\n          class=\"when-clause-save-btn\"\n          type=\"button\"\n          (click)=\"saveWhenClause()\"\n          [disabled]=\"!isWhenClauseValid()\"\n          [ngClass]=\"{ disabled: !isWhenClauseValid() }\"\n        >\n          OK\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-type-number',\n  templateUrl: './type-number.component.html',\n  styleUrls: ['./type-number.component.scss']\n})\nexport class TypeNumberComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() inSubForm:boolean=false;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  testElementName: string = '';\n\n  constructor(private dataservice:DataService,public dialog: MatDialog,private sharedService: SharedService){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  showDefaultValue!:boolean;\n  disableEdit!:boolean;\n  defaultValue: string = '';\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit(){\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n    if(this.question.element && this.question.element.defaultValue){\n      this.defaultValue = this.question.element.defaultValue;\n      this.disableEdit = this.question.element.disableEdit;\n      this.showDefaultValue = true;\n    }else if(this.question && this.question.defaultValue){\n      this.defaultValue = this.question.defaultValue;\n      this.disableEdit = this.question.disableEdit;\n      this.showDefaultValue = true;\n    }\n  }\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n      this.question.element.defaultValue = this.defaultValue;\n      this.dataservice.sendPages(this.pages);\n    } else {\n      this.question.question = this.inputQuestion;\n      this.question.defaultValue = this.defaultValue;\n      this.dataservice.sendPages(this.pages);\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n    if(this.defaultValue==null){\n      this.disableEdit = false;\n      this.toggleEditValue();\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  toggleDefaultValue(){\n    if(!this.showDefaultValue){\n      this.defaultValue = '';\n      this.disableEdit = false;\n      if ('question' in (this.question.element || {})) {\n        this.question.element.defaultValue = '';\n        this.question.element.disableEdit= this.disableEdit;\n      } else {\n        this.question.defaultValue = '';\n        this.question.disableEdit=this.disableEdit;\n      }\n    }\n  }\n\n  toggleEditValue(){\n    if(this.question.element)\n      this.question.element.disableEdit= this.disableEdit;\n    else\n      this.question.disableEdit=this.disableEdit;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n        this.dataservice.sendPages(this.pages);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('number', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/number-icon.svg\" class=\"icon-style\">\n                Number\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n            <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n            <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\">\n              <div class=\"form-check mr-50\" *ngIf=\"!question?.element?.multiField && !inSubForm\">\n                <input type=\"checkbox\" name=\"showDefaultValue-checkbox\" [id]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"showDefaultValue\" (ngModelChange)=\"toggleDefaultValue()\"  [attr.data-value]=\"showDefaultValue\">\n                <label class=\"form-check-label\" [for]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\">Default Value</label>\n              </div>\n              <button *ngIf=\"logicBtnShow  && !question?.element?.multiField\"  type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"addLogic()\">Add Logic</button>\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n          <div class=\"mt-4\" *ngIf=\"!question?.element?.multiField && showDefaultValue && !inSubForm\">\n            <label class=\"fontFamily\" [for]=\"'default'+(question.element?question.element.id:question.id)\">Default Value</label>\n            <input type=\"number\" [id]=\"'default'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2 hide-spin-buttons\"\n            [(ngModel)]=\"defaultValue\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Default Value\"  maxlength=\"150\"  (focus)=\"onFocus()\" \n            >\n            <div class=\"w-100 icon-container-bottom\" >\n              <div class=\"d-inline-flex\">\n                <div class=\"form-check\">\n                  <input type=\"checkbox\" name=\"disableEdit-checkbox\" [id]=\"'disableEdit'+(question.element?question.element.id:question.id)\"\n                  [(ngModel)]=\"disableEdit\" (ngModelChange)=\"toggleEditValue()\"  [attr.data-value]=\"disableEdit\"\n                  [disabled]=\"defaultValue=='' || defaultValue==null\">\n                  <label class=\"form-check-label\" [for]=\"'disableEdit'+(question.element?question.element.id:question.id)\">Disable Edit</label>\n                </div>\n              </div>\n              \n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\"  (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Injectable,\n  Input,\n  OnChanges,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ToastrService } from 'ngx-toastr';\nimport { ApiService } from '../../services/api.service';\nimport { DataService } from '../../services/data.service';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { debounceTime, Subject, Subscription } from 'rxjs';\nimport { CONSTANTS } from '../../shared/constants';\nimport { v4 as uuidv4 } from 'uuid';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n\n@Injectable({\n  providedIn: 'root',\n})\n@Component({\n  selector: 'lib-drop-down',\n  templateUrl: './drop-down.component.html',\n  styleUrls: ['./drop-down.component.scss'],\n})\nexport class DropDownComponent implements OnChanges {\n  @Input() question: any = {};\n  @Input() questions: any[] = [];\n  @Input() selectedQuestionId: any;\n  @Input() translations: any = [];\n  @Input() pages: any = [];\n  @Input() logicBtnShow: boolean = true;\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  @Output() newpages: EventEmitter<any[]> = new EventEmitter<any[]>();\n  @Input() languages: any = ['eng'];\n  @Output() questionUpdated = new EventEmitter<any>();\n\n  showDropdown: boolean = false;\n\n  @ViewChild('expressionDiv', { static: false })\n  expressionDiv!: ElementRef<HTMLDivElement>;\n\n  private savedRange: Range | null = null;\n\n  showErrors: boolean = false;\n  options: any = CONSTANTS.options;\n  uniqueId: string | undefined;\n  data: any = [1, 2];\n  labelPattern: string = '';\n  rows: any[] = [\n    {\n      sortingOrder: '',\n      value: '',\n      label: '',\n      translations: [\n        {\n          elementId: '',\n          entityType: '',\n          language: '',\n          attribute: '',\n          translatedText: '',\n        },\n      ],\n    },\n  ];\n  selectedOption: string = '';\n  questionSelected: boolean = false;\n  inputQuestion: string = '';\n  questionRequired!: boolean;\n  hintText: string = '';\n  showlookup: boolean = false;\n  customOptions: any[] = [];\n  labelPatternForApi: any[] = [];\n  //customOptions: { [key: string]: any[] } = {};\n  hintOpen: boolean = false;\n  criteriaList: any[] = [\n    {\n      field: '',\n      condition: '',\n      valueSource: '',\n      inputValue: '',\n      logicalOperator: '',\n    },\n  ];\n  tables: any[] = [];\n  fields: any[] = [];\n  conditions: any[] = CONSTANTS.dropDownConditions;\n  valueSource: any[] = CONSTANTS.valueSource;\n  inputValue: any[] = [];\n  logicalOperator = CONSTANTS.logicalOperator;\n  table: any[] = [];\n  valueFields: any[] = [];\n  labelFields: any[] = [];\n  selectedFields: any[] = CONSTANTS.fieldStructure;\n  selectedCondition: any[] = CONSTANTS.fieldStructure;\n  selectedValueSource: any[] = CONSTANTS.fieldStructure;\n  selectedInputValue: any[] = CONSTANTS.fieldStructure;\n  selectedlogicalOperator: any[] = CONSTANTS.fieldStructure;\n  selectedTables: any[] = CONSTANTS.fieldStructure;\n  selectedValueFields: any[] = CONSTANTS.fieldStructure;\n  selectedLabelFields: any[] = CONSTANTS.fieldStructure;\n  customInput: any = [];\n  currentIndex: any = 0;\n  headerCurrentIndex: any = 0;\n  paramCurrentIndex: any = 0;\n  pathCcurrentIndex: any = 0;\n  radioOptions = ['External', 'Internal'];\n  externalRadio: any = 'External';\n  pathItems: any;\n  LabelField: any;\n  Valuefield: any;\n  apiURL: any;\n  tableName: string = '';\n  tableId: any = '';\n  editMode: boolean = false;\n  editBtn: boolean = false;\n  selectedLookUp: any[] = CONSTANTS.fieldStructure;\n  headerRows: any[] = [];\n  parameterRows: any[] = [];\n  pathVariableRows: any[] = [];\n  fieldType: string = 'RADIO_BUTTON';\n  advancedOpt: boolean = false;\n  isValidUrlIn: boolean = true;\n  selecteQuestions: any[] = [];\n  selectedHeaders: any[][] = [];\n  selectedParams: any[][] = [];\n  selectedPathVariables: any[][] = [];\n  selectedHeadersInput: any[][] = [];\n  selectedParamsInput: any[][] = [];\n  selectedPathVariablesInput: any[][] = [];\n  scrollPage: number = 0;\n  valueSources: any[] = CONSTANTS.valueSources;\n  paramsValueSources: any[] = CONSTANTS.paramsValueSources;\n  pathVariableValueSources: any[] = CONSTANTS.pathVariableValueSources;\n  isLastPage: boolean = false;\n  isFirstPage: boolean = false;\n  currentPage: number = 0;\n  size: number = 10;\n  localStorageItems!: { label: string; value: any; image: string }[];\n  sessionStorageItems!: { label: string; value: any; image: string }[];\n  isOpen: boolean = true;\n  localQuestion: any = {};\n  testElementName: string = '';\n  private searchSubject = new Subject<[number, string]>();\n  selectionType: string = '';\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  constructor(\n    private dataservice: DataService,\n    private elementRef: ElementRef,\n    public dialog: MatDialog,\n    private ApiService: ApiService,\n    private toastr: ToastrService,\n    private cdr: ChangeDetectorRef,\n    private renderer: Renderer2,\n    private sharedService: SharedService\n  ) {\n    this.uniqueId = uuidv4();\n    this.searchSubject.pipe(debounceTime(500)).subscribe((searchTerm) => {\n      if (searchTerm[0] === 0) {\n        this.tables = [];\n      }\n      this.getLookUpTable(this.size, searchTerm[0], searchTerm[1]);\n    });\n    this.localStorageItems = this.dataservice.getAllLocalStorage();\n    this.sessionStorageItems = this.dataservice.getAllSessionStorage();\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  ngOnInit(): void {\n    this.localQuestion = structuredClone(this.question);\n    this.fieldType =\n      this.localQuestion?.formElement?.elementType ||\n      this.localQuestion.element.formElement?.elementType;\n    this.getLookUpTable(this.size, this.currentPage, '');\n    this.selectedInputValue = [];\n    this.selecteQuestions = this.translations\n      .filter(\n        (item: {\n          entityType: string;\n          language: string;\n          translatedText: string;\n        }) =>\n          item.entityType === 'QUESTION' &&\n          item.language === 'eng' &&\n          item.translatedText !== ''\n      )\n      .map((item: { translatedText: any; elementId: any }) => ({\n        image: '',\n        label: item.translatedText,\n        value: item.elementId,\n      }));\n    if (!this.languages) {\n      this.languages = ['eng'];\n    }\n\n    this.apiInputChanged\n      .pipe(\n        debounceTime(100) // adjust delay as needed\n      )\n      .subscribe((value) => {\n        this.loadApiData();\n      });\n    this.cdr.detectChanges();\n\n  }\n\n\n  onFocus() {\n    this.selectedQuestionId =\n      this.question.id ||\n      this.question.element?.id ||\n      this.question?.formElement?.id;\n      this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n\n  valueAssigned() {\n    this.customElementId = this.question.customElementId;\n    this.whenClause = this.question.whenClause;\n    const hasElement = !!this.localQuestion.element;\n\n    // ✅ Normalize references (so you don’t repeat)\n    const questionRef = hasElement\n      ? this.localQuestion.element\n      : this.localQuestion;\n\n    const formElement = hasElement\n      ? this.localQuestion.element.formElement\n      : this.localQuestion.formElement;\n\n\n    // Common properties\n    this.inputQuestion = questionRef.question;\n    this.questionRequired = questionRef.required;\n    this.hintText = questionRef.hint;\n\n    this.selectedOption = formElement?.option?.optionType;\n    this.selectionType = formElement?.appearance?.selectionType;\n\n    this.customOptions = formElement?.option?.customOptions\n      ? JSON.parse(JSON.stringify(formElement.option.customOptions))\n      : [];\n\n    if (this.selectedOption === 'DATABASE') {\n      this.bindLoadFromDbData();\n    }\n\n    this.selectedLookUp = [\n      {\n        label: formElement?.option?.lookupTable,\n        value: '',\n      },\n    ];\n\n    // API-related fields\n    this.headerRows = formElement?.option?.api?.headers;\n    this.parameterRows = formElement?.option?.api?.params;\n    this.pathVariableRows = formElement?.option?.api?.pathVariables;\n    this.externalRadio = formElement?.option?.api?.external;\n    this.Valuefield = formElement?.option?.api?.valueField;\n    this.LabelField = formElement?.option?.api?.labelField;\n    this.pathItems = formElement?.option?.api?.pathToValue;\n    this.apiURL = formElement?.option?.api?.url;\n\n    this.labelPatternForApi = formElement?.option?.api?.labelPattern || [];\n    if (this.selectionType === 'MULTIPLE') {\n      this.updateSelectedValueOption();\n    }\n\n    this.bindAdvancedOptions();\n    this.populateAdvancedOptions();\n\n    // Scoring\n    if (formElement?.scoring) {\n      this.scoringOpted = formElement.scoring.enableScoring;\n      this.enableScoringType = formElement.scoring.enableScoringType;\n      this.defaultScore = formElement.scoring.defaultScore;\n      if (formElement.scoring.score) {\n        this.customScores = formElement.scoring.score;\n      }\n    }\n\n    if (this.selectionType === 'MULTIPLE') {\n      this.enableScoringType = false;\n      this.clearScoreTypes();\n    }\n\n    // Option / Lookup / API handling\n    if (this.selectedOption === 'OPTION' && this.customOptions) {\n      this.updateScoringOptionsFromCustomOptions(this.customOptions);\n    } else if (\n      this.selectedOption === 'LOOKUP' &&\n      this.selectedLookUp[0].label\n    ) {\n      this.fetchDataFromLookup(this.selectedLookUp[0].label);\n    } else if (this.selectedOption === 'API' && this.apiURL) {\n      this.fetchDataFromAPI(formElement.option.api);\n    }\n\n    // External vs Internal\n    this.externalRadio = this.externalRadio ? 'External' : 'Internal';\n  }\n\n  updateSelectedValueOption() {\n    const updateRows = (rows: any[] | undefined) =>\n      rows?.map((row) => ({\n        ...row,\n        inputValue:\n          row.valueSource === 'SELECTED_VALUES'\n            ? 'ARRAY_OF_VALUES'\n            : row.inputValue,\n      })) ?? [];\n\n    this.parameterRows = updateRows(this.parameterRows);\n    this.headerRows = updateRows(this.headerRows);\n\n    // Update in formElement (both localQuestion.formElement and element.formElement if present)\n    const updateApi = (api: any) => {\n      if (api) {\n        api.params = this.parameterRows;\n        api.headers = this.headerRows;\n      }\n    };\n\n    updateApi(this.localQuestion?.formElement?.option?.api);\n    updateApi(this.localQuestion?.element?.formElement?.option?.api);\n  }\n\n  populateAdvancedOptions() {\n    const headerLen = this.headerRows?.length ?? 0;\n    const paramLen = this.parameterRows?.length ?? 0;\n    const pathLen = this.pathVariableRows?.length ?? 0;\n\n    if (headerLen > 0 || paramLen > 0 || pathLen > 0) {\n      this.advancedOpt = true;\n\n      if (headerLen > 0 && paramLen === 0 && pathLen === 0) {\n        this.addParameterRow();\n        this.addPathVariableRow();\n      } else if (paramLen > 0 && headerLen === 0 && pathLen === 0) {\n        this.addHeaderRow();\n        this.addPathVariableRow();\n      } else if (pathLen > 0 && headerLen === 0 && paramLen === 0) {\n        this.addHeaderRow();\n        this.addParameterRow();\n      }\n    }\n  }\n\n  bindAdvancedOptions() {\n    // Parameters\n    if (this.parameterRows) {\n      this.parameterRows.forEach((row, i) => {\n        // Main selectedParams\n        const matched = this.paramsValueSources.find(\n          (source) => source.value === row.valueSource\n        );\n        if (matched) {\n          if (!this.selectedParams[i]) {\n            this.selectedParams[i] = [];\n          }\n          this.selectedParams[i].push(matched);\n        } else {\n          this.selectedParams[i] = [];\n        }\n\n        // Extra selectedParamsInput\n        if (!this.selectedParamsInput[i]) {\n          this.selectedParamsInput[i] = [];\n        }\n\n        if (row.valueSource === 'LOCAL_STORAGE') {\n          const localMatched = this.localStorageItems?.find(\n            (item) => item.value === row.inputValue\n          );\n\n          if (localMatched) {\n            this.selectedParamsInput[i].push(localMatched);\n          }\n        } else if (row.valueSource === 'SESSION_STORAGE') {\n          const sessionMatched = this.sessionStorageItems.find(\n            (item) => item.value === row.inputValue\n          );\n          if (sessionMatched) {\n            this.selectedParamsInput[i].push(sessionMatched);\n          }\n        } else if (row.valueSource === 'QUESTION') {\n          const questionMatched = this.selecteQuestions.find(\n            (item) => item.value === row.inputValue\n          );\n          if (questionMatched) {\n            this.selectedParamsInput[i].push(questionMatched);\n          }\n        }\n      });\n    }\n\n    // Headers\n    if (this.headerRows) {\n      this.headerRows.forEach((row, i) => {\n        // Main selectedHeaders\n        const matched = this.valueSources.find(\n          (source) => source.value === row.valueSource\n        );\n        if (matched) {\n          if (!this.selectedHeaders[i]) {\n            this.selectedHeaders[i] = [];\n          }\n          this.selectedHeaders[i].push(matched);\n        } else {\n          this.selectedHeaders[i] = [];\n        }\n\n        // Extra selectedHeadersInput\n        if (!this.selectedHeadersInput[i]) {\n          this.selectedHeadersInput[i] = [];\n        }\n\n        if (row.valueSource === 'LOCAL_STORAGE') {\n          const localMatched = this.localStorageItems?.find(\n            (item) => item.value === row.inputValue\n          );\n\n          if (localMatched) {\n            this.selectedHeadersInput[i].push(localMatched);\n          }\n        } else if (row.valueSource === 'SESSION_STORAGE') {\n          const sessionMatched = this.sessionStorageItems.find(\n            (item) => item.value === row.inputValue\n          );\n          if (sessionMatched) {\n            this.selectedHeadersInput[i].push(sessionMatched);\n          }\n        } else if (row.valueSource === 'QUESTION') {\n          const questionMatched = this.selecteQuestions.find(\n            (item) => item.value === row.inputValue\n          );\n          if (questionMatched) {\n            this.selectedHeadersInput[i].push(questionMatched);\n          }\n        }\n      });\n    }\n\n    // Path Variables\n    if (this.pathVariableRows) {\n      this.pathVariableRows.forEach((row, i) => {\n        // Main selectedPathVariables\n        const matched = this.pathVariableValueSources.find(\n          (source) => source.value === row.valueSource\n        );\n        if (matched) {\n          if (!this.selectedPathVariables[i]) {\n            this.selectedPathVariables[i] = [];\n          }\n          this.selectedPathVariables[i].push(matched);\n        } else {\n          this.selectedPathVariables[i] = [];\n        }\n\n        // Extra selectedPathVariablesInput\n        if (!this.selectedPathVariablesInput[i]) {\n          this.selectedPathVariablesInput[i] = [];\n        }\n\n        if (row.valueSource === 'LOCAL_STORAGE') {\n          const localMatched = this.localStorageItems?.find(\n            (item) => item.value === row.inputValue\n          );\n\n          if (localMatched) {\n            this.selectedPathVariablesInput[i].push(localMatched);\n          }\n        } else if (row.valueSource === 'SESSION_STORAGE') {\n          const sessionMatched = this.sessionStorageItems.find(\n            (item) => item.value === row.inputValue\n          );\n          if (sessionMatched) {\n            this.selectedPathVariablesInput[i].push(sessionMatched);\n          }\n        } else if (row.valueSource === 'QUESTION') {\n          const questionMatched = this.selecteQuestions.find(\n            (item) => item.value === row.inputValue\n          );\n          if (questionMatched) {\n            this.selectedPathVariablesInput[i].push(questionMatched);\n          }\n        }\n      });\n    }\n  }\n\n  bindLoadFromDbData() {\n    // Pick the correct formElement source\n    const formElement =\n      this.localQuestion.element?.formElement ?? this.localQuestion.formElement;\n\n    if (!formElement) return;\n\n    // Assign criteria list\n    this.criteriaList = formElement.option?.database?.criteria;\n\n    // If no database option, stop here\n    const db = formElement.option?.database;\n    if (!db) return;\n\n    // Assign selected values\n    this.selectedTables = [{ label: db.tableName, value: db.tableName }];\n    this.selectedValueFields = [{ label: db.valueField, value: db.valueField }];\n    this.selectedLabelFields = [{ label: db.labelField, value: db.labelField }];\n    this.labelPattern = db.labelPattern || '';\n    if (this.selectedTables[0]?.label) {\n      this.getTableData('table');\n    }\n    if (db.tableName != '' && db.valueField != '' && db.labelField != '')\n      this.fetchDataFromDatabase(db);\n  }\n\n  hint() {\n    this.hintOpened();\n  }\n  ngAfterViewInit() {\n    this.getTable();\n    this.labelPattern =\n      this.localQuestion?.element?.formElement?.option?.database?.labelPattern;\n      setTimeout(() => {\n    this.waitForExpressionDiv();\n  });\n  }\n\n  waitForExpressionDiv() {\n  const checkDiv = () => {\n    const el = this.expressionDiv?.nativeElement;\n\n    if (el) {\n      this.valueAssignToLabelPattern(this.labelPattern);\n    } else {\n      setTimeout(checkDiv, 10);\n    }\n  };\n  checkDiv();\n}\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['question']) {\n      this.localQuestion = changes['question'].currentValue;\n      this.fieldType =\n        this.localQuestion?.formElement?.elementType ||\n        this.localQuestion?.element?.formElement?.elementType;\n      this.generateFieldName();\n      // const headerRows = this.localQuestion?.formElement?.option?.api?.headers || this.localQuestion.element?.formElement?.option?.api?.headers;\n      // headerRows?.map((obj: any) => {\n      //   const customInputObject = this.valueSources.find(\n      //     (item) => item.value === obj.valueSource\n      //   );\n      //   if (customInputObject) {\n      //     this.selectedHeaders.push(customInputObject);\n      //   }\n      // });\n      // const parameterRows = this.localQuestion?.formElement?.option?.api?.params || this.localQuestion.element?.formElement?.option?.api?.params;\n      // parameterRows?.map((obj: any) => {\n      //   const customInputObject = this.paramsValueSources.find(\n      //     (item) => item.value === obj.valueSource\n      //   );\n      //   if (customInputObject) {\n      //     this.selectedParams.push(customInputObject);\n      //   }\n      // });\n      // const pathVariableRows = this.localQuestion?.formElement?.option?.api?.pathVariables || this.localQuestion.element?.formElement?.option?.api?.pathVariables;\n      // pathVariableRows?.map((obj: any) => {\n      //   const customInputObject = this.paramsValueSources.find(\n      //     (item) => item.value === obj.valueSource\n      //   );\n      //   if (customInputObject) {\n      //     this.selectedPathVariables.push(customInputObject);\n      //   }\n      // });\n      this.valueAssigned();\n    }\n  }\n\n  addCriteriaRow() {\n    if (!this.criteriaList) {\n      this.criteriaList = [];\n    }\n    this.criteriaList.push({\n      field: '',\n      condition: '',\n      valueSource: '',\n      inputValue: '',\n      logicalOperator: '',\n    });\n    if (!this.selectedInputValue) {\n      this.selectedInputValue = [];\n    }\n    this.selectedInputValue.unshift({});\n  }\n\n  deleteCriteriaRow(index: number) {\n    this.criteriaList.splice(index, 1);\n  }\n\n  private getDatabaseOption() {\n    const target =\n      this.localQuestion.element?.formElement ?? this.localQuestion.formElement;\n    if (!target.option.database) {\n      target.option.database = {};\n    }\n    return { target, db: target.option.database };\n  }\n\n  updateTableName() {\n    const { db } = this.getDatabaseOption();\n    const newValue = this.selectedTables[0]?.label;\n    if (db.tableName !== newValue) {\n      db.tableName = newValue;\n      this.questionUpdated.emit(this.localQuestion);\n    }\n  }\n\n  updateValueField() {\n    const { db } = this.getDatabaseOption();\n    const newValue = this.selectedValueFields[0]?.label;\n    if (db.valueField !== newValue) {\n      db.valueField = newValue;\n      this.questionUpdated.emit(this.localQuestion);\n    }\n\n    const target =\n      this.localQuestion.element?.formElement ?? this.localQuestion.formElement;\n\n    // Reset scoring if exists\n    if (target?.scoring && target.scoring.enableScoring) {\n      this.scoringOpted = false;\n      this.addScoring();\n    }\n  }\n\n  updateLabelField() {\n    const { db } = this.getDatabaseOption();\n    const newValue = this.selectedLabelFields[0]?.label;\n    if (db.labelField !== newValue) {\n      db.labelField = newValue;\n      this.questionUpdated.emit(this.localQuestion);\n    }\n\n    const target =\n      this.localQuestion.element?.formElement ?? this.localQuestion.formElement;\n\n    // Reset scoring if exists\n    if (target?.scoring && target.scoring.enableScoring) {\n      this.scoringOpted = false;\n      this.addScoring();\n    }\n  }\n\n  selectedValues(i: number, field: string, event: any) {\n    this.currentIndex = i;\n    if (\n      this.localQuestion.element &&\n      !this.localQuestion.element.formElement.option.database.criteria\n    ) {\n      this.localQuestion.element.formElement.option.database.criteria = [];\n    } else if (\n      this.localQuestion.formElement &&\n      !this.localQuestion.formElement.option.database.criteria\n    ) {\n      this.localQuestion.formElement.option.database.criteria = [];\n    }\n\n    // Reference to criteria array\n    let criteriaArray = this.localQuestion.element\n      ? this.localQuestion.element.formElement.option.database.criteria\n      : this.localQuestion.formElement.option.database.criteria;\n\n    // Ensure the index exists in the array\n    if (!criteriaArray[i]) {\n      criteriaArray[i] = {};\n    }\n\n    // Update the corresponding field\n    switch (field) {\n      case '1':\n        criteriaArray[i].field = event[0]?.label || '';\n        this.criteriaList[i].field = event[0]?.label || '';\n        break;\n      case '2':\n        criteriaArray[i].condition = event[0]?.value || '';\n        this.criteriaList[i].condition = event[0]?.value || '';\n        break;\n      case '3':\n        criteriaArray[i].valueSource = event[0]?.value || '';\n        this.criteriaList[i].valueSource = event[0]?.value || '';\n        this.selectedInputValue.unshift({});\n        this.cdr.detectChanges();\n        break;\n      case '4':\n        if (event[0]?.label && this.selectedInputValue) {\n          criteriaArray[i].inputValue = event[0]?.label || '';\n          this.criteriaList[i].inputValue = event[0]?.label || '';\n        }\n        break;\n      case '5':\n        if (i > 0) {\n          let logicalOperator = event[0]?.label || '';\n          this.criteriaList[i - 1].logicalOperator = event[0]?.label || '';\n          criteriaArray[i - 1].logicalOperator = logicalOperator;\n        }\n        break;\n      default:\n        console.warn('Unknown field:', field);\n    }\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  selecteLookUps() {\n    if (this.localQuestion && this.localQuestion.formElement) {\n      this.localQuestion.formElement.option.lookupTable =\n        this.selectedLookUp[0].label;\n    } else {\n      this.localQuestion.element.formElement.option.lookupTable =\n        this.selectedLookUp[0].label;\n    }\n    this.fetchDataFromLookup(this.selectedLookUp[0].label);\n    const target = this.localQuestion.element\n      ? this.localQuestion.element.formElement\n      : this.localQuestion.formElement;\n\n    // Ensure scoring exists\n    if (target.scoring) {\n      this.customScores = [];\n      target.scoring.score = this.customScores;\n    }\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  customInputValues(i: number, field: string, data: any) {\n    if (\n      this.localQuestion.element &&\n      !this.localQuestion.element.formElement.option.database.criteria\n    ) {\n      this.localQuestion.element.formElement.option.database.criteria = [];\n    } else if (\n      this.localQuestion.formElement &&\n      !this.localQuestion.formElement.option.database.criteria\n    ) {\n      this.localQuestion.formElement.option.database.criteria = [];\n    }\n    if (field == '6') {\n      if (this.localQuestion.element) {\n        this.localQuestion.element.formElement.option.database.criteria[\n          i\n        ].inputValue = data;\n      } else {\n        this.localQuestion.formElement.option.database.criteria[i].inputValue =\n          data;\n      }\n    }\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  jsonUpdation(type?: string) {\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if (this.localQuestion.element == undefined) {\n      if (!this.localQuestion.formElement.option) {\n        this.localQuestion.formElement.option = {}; // 👈 create empty object if undefined\n      } else\n        this.localQuestion.formElement.option.optionType = this.selectedOption;\n      this.localQuestion.question = this.inputQuestion;\n    } else {\n      this.localQuestion.element.formElement.option.optionType =\n        this.selectedOption;\n      this.localQuestion.element.question = this.inputQuestion;\n    }\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (type === 'hint') {\n        if (\n          translation.elementId === this.selectedQuestionId &&\n          translation.attribute === 'HELP_TEXT' &&\n          translation.language === 'eng'\n        ) {\n          translation.translatedText = this.hintText;\n        }\n        if (this.localQuestion.element == undefined) {\n          this.localQuestion.hint = this.hintText;\n        } else {\n          this.localQuestion.element.hint = this.hintText;\n        }\n      } else {\n        if (\n          translation.elementId === this.selectedQuestionId &&\n          translation.attribute === 'NAME'\n        ) {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n    this.questionUpdated.emit(this.localQuestion);\n    if (this.selectedOption == 'LOOKUP') {\n      this.scrollPage = 0;\n      this.getLookUpTable(this.size, this.currentPage, '');\n    }\n    this.cdr.detectChanges();\n    this.clearOptions();\n    if (type == 'optionChange') {\n      this.scoringOpted = false;\n      this.addScoring();\n    }\n  }\n\n  clearOptions() {\n    if (this.selectedOption == 'OPTION') {\n      this.clearLookUp();\n      this.clearDataBase();\n      this.clearApi();\n      this.advancedOpt = false;\n    } else if (this.selectedOption == 'LOOKUP') {\n      this.clearCustomOptions();\n      this.clearDataBase();\n      this.clearApi();\n      this.advancedOpt = false;\n    } else if (this.selectedOption == 'DATABASE') {\n      this.clearCustomOptions();\n      this.clearLookUp();\n      this.clearApi();\n      this.advancedOpt = false;\n    } else if (this.selectedOption == 'API') {\n      this.clearCustomOptions();\n      this.clearLookUp();\n      this.clearDataBase();\n    }\n  }\n  clearCustomOptions() {\n    this.customOptions = [];\n    if (this.localQuestion && this.localQuestion.formElement) {\n      if (this.localQuestion.formElement.option?.customOptions) {\n        this.localQuestion.formElement.option.customOptions = [];\n      }\n    } else if (this.localQuestion && this.localQuestion.element) {\n      if (this.localQuestion.element.formElement.option?.customOptions) {\n        this.localQuestion.element.formElement.option.customOptions = [];\n      }\n    }\n  }\n  clearLookUp() {\n    this.selectedLookUp = [];\n    if (this.localQuestion && this.localQuestion.formElement) {\n      if (this.localQuestion.formElement.option?.lookupTable) {\n        this.localQuestion.formElement.option.lookupTable = '';\n      }\n    } else if (this.localQuestion && this.localQuestion.element) {\n      if (this.localQuestion.element.formElement.option?.lookupTable) {\n        this.localQuestion.element.formElement.option.lookupTable = '';\n      }\n    }\n  }\n  clearDataBase() {\n    this.selectedTables = [];\n    this.selectedValueFields = [];\n    this.selectedLabelFields = [];\n    this.selectedInputValue = [];\n    this.criteriaList = [];\n    if (this.localQuestion && this.localQuestion.formElement) {\n      if (this.localQuestion.formElement.option?.database?.tableName) {\n        this.localQuestion.formElement.option.database.tableName = '';\n      }\n      if (this.localQuestion.formElement.option?.database?.valueField) {\n        this.localQuestion.formElement.option.database.valueField = '';\n      }\n      if (this.localQuestion.formElement.option?.database?.labelField) {\n        this.localQuestion.formElement.option.database.labelField = '';\n      }\n      if (this.localQuestion.formElement.option?.database?.criteria) {\n        this.localQuestion.formElement.option.database.criteria = [];\n      }\n    } else if (this.localQuestion && this.localQuestion.element) {\n      if (this.localQuestion.element.formElement.option?.database?.tableName) {\n        this.localQuestion.element.formElement.option.database.tableName = '';\n      }\n      if (this.localQuestion.element.formElement.option?.database?.valueField) {\n        this.localQuestion.element.formElement.option.database.valueField = '';\n      }\n      if (this.localQuestion.element.formElement.option?.database?.labelField) {\n        this.localQuestion.element.formElement.option.database.labelField = '';\n      }\n      if (this.localQuestion.element.formElement.option?.database?.criteria) {\n        this.localQuestion.element.formElement.option.database.criteria = [];\n      }\n    }\n  }\n  clearApi() {\n    this.apiURL = '';\n    this.Valuefield = '';\n    this.LabelField = '';\n    this.pathItems = '';\n    if (this.localQuestion && this.localQuestion.formElement) {\n      if (this.localQuestion.formElement.option?.api?.url) {\n        this.localQuestion.formElement.option.api.url = '';\n      }\n      if (this.localQuestion.formElement.option?.api?.valueField) {\n        this.localQuestion.formElement.option.api.valueField = '';\n      }\n      if (this.localQuestion.formElement.option?.api?.labelField) {\n        this.localQuestion.formElement.option.api.labelField = '';\n      }\n      if (this.localQuestion.formElement.option?.api?.pathToValue) {\n        this.localQuestion.formElement.option.api.pathToValue = '';\n      }\n      if (this.localQuestion.formElement.option?.api?.headers) {\n        this.localQuestion.formElement.option.api.headers = [];\n      }\n      if (this.localQuestion.formElement.option?.api?.pathVariables) {\n        this.localQuestion.formElement.option.api.pathVariables = [];\n      }\n      if (this.localQuestion.formElement.option?.api?.params) {\n        this.localQuestion.formElement.option.api.params = [];\n      }\n    } else if (this.localQuestion && this.localQuestion.element) {\n      if (this.localQuestion.element.formElement.option?.api?.url) {\n        this.localQuestion.element.formElement.option.api.url = '';\n      }\n      if (this.localQuestion.element.formElement.option?.api?.valueField) {\n        this.localQuestion.element.formElement.option.api.valueField = '';\n      }\n      if (this.localQuestion.element.formElement.option?.api?.labelField) {\n        this.localQuestion.element.formElement.option.api.labelField = '';\n      }\n      if (this.localQuestion.element.formElement.option?.api?.pathToValue) {\n        this.localQuestion.element.formElement.option.api.pathToValue = '';\n      }\n      if (this.localQuestion.element.formElement.option?.api?.headers) {\n        this.localQuestion.element.formElement.option.api.headers = [];\n      }\n      if (this.localQuestion.element.formElement.option?.api?.pathVariables) {\n        this.localQuestion.element.formElement.option.api.pathVariables = [];\n      }\n      if (this.localQuestion.element.formElement.option?.api.params) {\n        this.localQuestion.element.formElement.option.api.params = [];\n      }\n    }\n  }\n  required() {\n    if (this.localQuestion.element)\n      this.localQuestion.element.required = this.questionRequired;\n    else this.localQuestion.required = this.questionRequired;\n    this.questionUpdated.emit(this.localQuestion);\n  }\n  createLookUp() {\n    this.showlookup = !this.showlookup;\n    this.editMode = true;\n    this.editBtn = false;\n    this.tableName = '';\n    this.rows = [\n      {\n        sortingOrder: '',\n        value: '',\n        label: '',\n        translations: [\n          {\n            elementId: '',\n            entityType: '',\n            language: '',\n            attribute: '',\n            translatedText: '',\n          },\n        ],\n      },\n    ];\n    this.showErrors = false;\n  }\n  closeLookup() {\n    this.showlookup = !this.showlookup;\n    this.showErrors = false;\n  }\n  addRow() {\n    this.rows.push({\n      sortingOrder: '',\n      value: '',\n      label: '',\n      translations: [\n        {\n          elementId: '',\n          entityType: '',\n          language: '',\n          attribute: '',\n          translatedText: '',\n        },\n      ],\n    }); // Add a new row with three empty cells\n  }\n  deleteRow(index: number) {\n    this.rows.splice(index, 1);\n  }\n  toggleEditMode() {\n    this.editMode = !this.editMode;\n    this.editBtn = true;\n  }\n  save() {\n    this.showErrors = true;\n    if (!this.validateAllRows()) {\n      console.error('Validation failed');\n      return;\n    }\n    let body = {\n      tableName: this.tableName,\n      values: this.rows.map((row) => {\n        return {\n          sortingOrder: row.sortingOrder,\n          value: row.value,\n          label: row.value,\n          translations: row.translations.filter(\n            (translation: any) =>\n              translation.translatedText && translation.language\n          ),\n        };\n      }),\n    };\n    body.values = body.values.filter(\n      (value) => Object.keys(value).length !== 0\n    );\n    if (this.editBtn) {\n      let id = this.tableId;\n      let target: any;\n      if (this.localQuestion?.formElement?.option?.lookupTable) {\n        target = this.localQuestion.formElement.option.lookupTable;\n      } else target = this.localQuestion.element.formElement.option.lookupTable;\n      this.ApiService.updateLookUp(body, id).subscribe({\n        next: (response) => {\n          this.tables = [];\n          this.getLookUpTable(this.size, 0, '');\n          this.updateLookupTableInPlace(\n            this.questions,\n            target,\n            response.result.tableName\n          );\n          const tableName = response.result.tableName;\n          this.selectedLookUp = [{ image: '', label: tableName, value: '' }];\n          if (this.localQuestion?.formElement?.option.lookupTable) {\n            this.localQuestion.formElement.option.lookupTable = tableName;\n          } else {\n            this.localQuestion.element.formElement.option.lookupTable =\n              tableName;\n          }\n          this.toastr.success(response.message);\n          this.closeLookup();\n          this.questionUpdated.emit(this.localQuestion);\n          this.showErrors = false;\n        },\n        error: (error) => {\n          this.showErrors = false;\n          this.toastr.error(error.error.message);\n        },\n      });\n    } else {\n      this.ApiService.saveLookUp(body).subscribe({\n        next: (response) => {\n          // Handle the successful response here\n          this.tables = [];\n          this.getLookUpTable(this.size, 0, '');\n          this.toastr.success(response.message);\n          const tableName = response.result.tableName;\n          this.selectedLookUp = [{ image: '', label: tableName, value: '' }];\n          // Update the lookupTable and selected item\n          if (this.localQuestion?.formElement) {\n            this.localQuestion.formElement.option.lookupTable = tableName;\n          } else {\n            this.localQuestion.element.formElement.option.lookupTable =\n              tableName;\n          }\n          this.closeLookup();\n          this.showErrors = false;\n          this.questionUpdated.emit(this.localQuestion);\n        },\n        error: (error) => {\n          this.showErrors = false;\n          // Handle any errors that occur during the HTTP request\n          this.toastr.error(error.error.message);\n        },\n      });\n    }\n  }\n\n  updateLookupTableInPlace(\n    pages: any[],\n    targetTableName: string,\n    newTableName: string\n  ): void {\n    let isUpdated = false;\n    const updatedPages = structuredClone(pages);\n    const updateFormElements = (formElements: any[]) => {\n      formElements?.forEach((formElement: any) => {\n        if (\n          (formElement.entityType === 'QUESTION' &&\n            formElement.element?.formElement?.elementType === 'DROP_DOWN') ||\n          'CHECK_BOX' ||\n          'RADIO_BUTTON'\n        ) {\n          const option = formElement?.element?.formElement?.option;\n          if (\n            option?.optionType === 'LOOKUP' &&\n            option.lookupTable === targetTableName\n          ) {\n            option.lookupTable = newTableName;\n            isUpdated = true;\n          }\n        }\n        if (\n          formElement.entityType === 'SUBFORM' ||\n          'QUESTION_GROUP' ||\n          'MULTIFIELD'\n        ) {\n          updateFormElements(formElement?.element?.formElements);\n        }\n\n        formElement.element?.childLogics?.forEach((childLogic: any) => {\n          if (childLogic.formElements?.length) {\n            updateFormElements(childLogic.formElements);\n          }\n        });\n      });\n    };\n\n    updatedPages.forEach((page) => updateFormElements(page.formElements));\n    this.newpages.emit(updatedPages);\n  }\n\n  addLogic() {\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  buttons = [\n    {\n      label: 'Edit',\n      icon: 'fa-solid fa-pen',\n      color: '#084FFF',\n      action: () => this.editTable(),\n    },\n    {\n      label: 'View',\n      icon: 'fa-solid fa-eye',\n      color: '#084FFF',\n      action: () => this.viewTable(),\n    },\n  ];\n\n  viewTable() {\n    this.showlookup = !this.showlookup;\n    this.editMode = false;\n    this.editBtn = true;\n    setTimeout(() => {\n      this.getLookUpTableData(this.selectedLookUp[0].label);\n    }, 5);\n  }\n  editTable() {\n    this.showlookup = !this.showlookup;\n    this.editMode = true;\n    this.editBtn = true;\n    setTimeout(() => {\n      this.getLookUpTableData(this.selectedLookUp[0].label);\n    }, 5);\n\n    if (this.localQuestion && this.localQuestion.formElement) {\n      this.localQuestion.formElement.option.lookupTable =\n        this.selectedLookUp[0].label;\n    } else {\n      this.localQuestion.element.formElement.option.lookupTable =\n        this.selectedLookUp[0].label;\n    }\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  handleInput() {\n    const inputField =\n      this.elementRef.nativeElement.querySelector('#textField');\n    const textWidth = inputField.value.length * 8; // Assuming 8px per character\n    inputField.style.width = Math.max(textWidth, 10) + 'px'; // Set minimum width as 10px\n  }\n\n  handleInputApiURL() {\n    const inputField = this.elementRef.nativeElement.querySelector(\n      '#textFieldlabelFeild'\n    );\n    const textWidth = inputField.value.length * 8; // Assuming 8px per character\n    inputField.style.width = Math.max(textWidth, 10) + 'px'; // Set minimum width as 10px\n  }\n\n  handleKeyDown(event: KeyboardEvent) {\n    if (event.key === 'Enter') {\n      const inputField =\n        this.elementRef.nativeElement.querySelector('#textField');\n      const inputValue = inputField.value.trim();\n      let qId = this.localQuestion.id;\n      if (!qId) {\n        qId = this.localQuestion?.element.id;\n      }\n      if (this.selectedQuestionId == qId) {\n        if (inputValue !== '') {\n          this.customOptions.push({\n            value: inputValue,\n          });\n          const updatedOptions = [...this.customOptions];\n          setTimeout(() => {\n            if (this.localQuestion.element == undefined) {\n              this.localQuestion.formElement.option.customOptions = [\n                ...updatedOptions,\n              ];\n            } else {\n              this.localQuestion.element.formElement.option.customOptions = [\n                ...updatedOptions,\n              ];\n            }\n            this.questionUpdated.emit(this.localQuestion);\n          }, 5);\n          inputField.value = '';\n          inputField.style.width = '10px';\n        }\n      }\n      this.updateScoringOptionsFromCustomOptions(this.customOptions);\n    }\n  }\n\n  handleKeyDownApiLabelPattern(event: KeyboardEvent) {\n    if (event.key === 'Enter') {\n      const inputField = this.elementRef.nativeElement.querySelector(\n        '#textFieldlabelFeild'\n      );\n      const inputValue = inputField.value.trim();\n      this.labelPatternForApi.push(inputValue);\n\n      inputField.value = '';\n      inputField.style.width = '10px';\n\n      this.localQuestion.element.formElement.option.api.labelPattern =\n        this.labelPatternForApi;\n      this.apiInputChanged.next('');\n      this.questionUpdated.emit(this.localQuestion);\n    }\n  }\n\n  removeApiLabelPatternOption(optionValue: string) {\n    for (let i = 0; i < this.labelPatternForApi.length; i++) {\n      let option = this.labelPatternForApi[i];\n      if (option == optionValue) {\n        this.labelPatternForApi.splice(i, 1);\n      }\n    }\n  }\n\n  allowOnlyNumbers(event: KeyboardEvent): void {\n    const charCode = event.which ? event.which : event.keyCode;\n    if (charCode < 48 || charCode > 57) {\n      event.preventDefault();\n    }\n  }\n\n  removeOption(optionValue: string) {\n    for (let i = 0; i < this.customOptions.length; i++) {\n      let option = this.customOptions[i];\n      if (option.value == optionValue) {\n        this.customOptions.splice(i, 1);\n      }\n    }\n    if (this.localQuestion.element == undefined) {\n      this.localQuestion.formElement.option.customOptions = [\n        ...this.customOptions,\n      ];\n    } else {\n      this.localQuestion.element.formElement.option.customOptions = [\n        ...this.customOptions,\n      ];\n    }\n    this.updateScoringOptionsFromCustomOptions(this.customOptions);\n    if (this.customScores) {\n      this.customScores.forEach((score: any) => {\n        score.label = score.label.filter((label: any) => label !== optionValue);\n      });\n    }\n  }\n\n  openConfirmationModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader: 'Are you sure ?',\n      message: 'Do you want to delete this question?',\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(\n      ConfirmationModalComponent,\n      dialogConfig\n    );\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n        this.dataservice.sendPages(this.pages);\n      }\n    });\n  }\n  hintOpened() {\n    this.hintOpen = !this.hintOpen;\n  }\n  getTable() {\n    this.table = [];\n    this.ApiService.getTables().subscribe((data) => {\n      let tableName = data.result;\n      for (let i = 0; i < tableName.length; i++) {\n        const field = {\n          label: tableName[i],\n          value: tableName[i],\n          image: '',\n        };\n        this.table = [...this.table, field];\n      }\n    });\n  }\n\n  changeTableData(type: string) {\n    if (!this.selectedTables[0]?.label) return;\n\n    // Reset arrays\n    this.valueFields = [];\n    this.labelFields = [];\n    this.inputValue = [];\n    this.fields = [];\n    this.selectedValueFields = [];\n    this.selectedLabelFields = [];\n    this.criteriaList = [];\n    this.customScores = [];\n\n    // Get the correct formElement and database object\n    const target =\n      this.localQuestion.element?.formElement ?? this.localQuestion.formElement;\n    const db = target?.option?.database;\n\n    this.labelPattern = '';\n    // Reset database fields if present\n    if (db) {\n      db.valueField = '';\n      db.labelField = '';\n      db.criteria = [];\n      db.labelPattern = '';\n    }\n\n    const el = this.expressionDiv.nativeElement;\n    el.innerHTML = '';\n\n    // Reset scoring if exists\n    if (target?.scoring && target.scoring.enableScoring) {\n      this.scoringOpted = false;\n      this.addScoring();\n    }\n\n    // Fetch new table data\n    this.getTableData(type);\n    this.updateTableName();\n    // Emit updated question\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  getTableData(type: string) {\n    this.ApiService.getTableData(this.selectedTables[0].label).subscribe(\n      (data) => {\n        let tableData = data.result;\n        for (let i = 0; i < tableData.length; i++) {\n          const field = {\n            label: tableData[i],\n            value: tableData[i],\n            image: '',\n          };\n\n          if (!this.valueFields.find((f) => f.value === field.value)) {\n            this.valueFields = [...this.valueFields, field];\n          }\n\n          if (!this.labelFields.find((f) => f.value === field.value)) {\n            this.labelFields = [...this.labelFields, field];\n          }\n\n          if (!this.inputValue.find((f) => f.value === field.value)) {\n            this.inputValue = [...this.inputValue, field];\n          }\n\n          if (!this.fields.find((f) => f.value === field.value)) {\n            this.fields = [...this.fields, field];\n          }\n        }\n      }\n    );\n  }\n\n  getLookUpTable(size: number, page: number, search: string) {\n    this.ApiService.getLookUpTable(size, page, search).subscribe((data) => {\n      let tables = data.result.content.map((table: any) => ({\n        label: table.tableName,\n        value: '',\n        image: '',\n      }));\n      this.isLastPage = data.result.last;\n      this.isFirstPage = data.result.first;\n      this.currentPage = data.result.number + 1;\n      this.tables = [...this.tables, ...tables];\n    });\n  }\n\n  lookUpScroll(event: any): void {\n    const element = event.target;\n    if (!this.isLastPage) {\n      if (\n        element.scrollHeight - Math.ceil(element.scrollTop) <=\n        element.clientHeight + 10\n      ) {\n        this.loadMoreData();\n      }\n    }\n  }\n\n  loadMoreData() {\n    setTimeout(() => {\n      if (!this.isLastPage) {\n        this.searchSubject.next([this.currentPage, '']);\n      }\n    }, 0);\n  }\n  lookUpSearch(key: any) {\n    this.searchSubject.next([0, key]);\n  }\n  getLookUpTableData(name: any) {\n    this.rows = [\n      {\n        sortingOrder: '',\n        value: '',\n        label: '',\n        translations: [\n          {\n            elementId: '',\n            entityType: '',\n            language: '',\n            attribute: '',\n            translatedText: '',\n          },\n        ],\n      },\n    ];\n    this.ApiService.getLookUpTableData(name).subscribe((data) => {\n      this.tableName = data.result.tableName;\n      this.tableId = data.result.id;\n      if (data.result.values) {\n        this.rows = data.result.values;\n      }\n    });\n  }\n  addHeaderRow() {\n    if (!this.headerRows) {\n      this.headerRows = [];\n    }\n    this.headerRows.push({\n      keyName: '',\n      valueSource: '',\n      inputValue: '',\n    });\n    this.selectedHeaders.push([]);\n    this.selectedHeadersInput.push([]);\n  }\n\n  deleteHeaderRow(index: number) {\n    this.headerRows.splice(index, 1);\n    this.selectedHeaders.splice(index, 1);\n    this.selectedHeadersInput.splice(index, 1);\n  }\n  addParameterRow() {\n    if (!this.parameterRows) {\n      this.parameterRows = [];\n    }\n    this.parameterRows?.push({\n      keyName: '',\n      valueSource: '',\n      inputValue: '',\n    });\n    this.selectedParams.push([]);\n    this.selectedParamsInput.push([]);\n  }\n  addPathVariableRow() {\n    if (!this.pathVariableRows) {\n      this.pathVariableRows = [];\n    }\n    this.pathVariableRows?.push({\n      keyName: '',\n      valueSource: '',\n      inputValue: '',\n    });\n    this.selectedPathVariables.push([]);\n    this.selectedPathVariablesInput.push([]);\n  }\n  deleteParameterRow(index: number) {\n    this.parameterRows.splice(index, 1);\n    this.selectedParams.splice(index, 1);\n    this.selectedParamsInput.slice(index, 1);\n  }\n  deletePathVariablrRow(index: number) {\n    this.pathVariableRows.splice(index, 1);\n    this.selectedPathVariables.splice(index, 1);\n    this.selectedPathVariablesInput.splice(index, 1);\n  }\n  AdvancedOption() {\n    this.advancedOpt = !this.advancedOpt;\n    if (this.advancedOpt) {\n      this.addHeaderRow();\n      this.addParameterRow();\n      this.addPathVariableRow();\n    } else {\n      this.headerRows = [];\n      this.selectedHeaders = [];\n      this.selectedHeadersInput = [];\n\n      this.parameterRows = [];\n      this.selectedParams = [];\n      this.selectedParamsInput = [];\n\n      this.pathVariableRows = [];\n      this.selectedPathVariables = [];\n      this.selectedPathVariablesInput = [];\n      const target = this.localQuestion.element\n        ? this.localQuestion.element.formElement\n        : this.localQuestion.formElement;\n\n      delete target.option.api.headers;\n      delete target.option.api.params;\n      delete target.option.api.pathVariables;\n\n      this.questionUpdated.emit(this.localQuestion);\n    }\n  }\n  isValidUrl(): boolean {\n    let url = this.apiURL;\n    if (/^https?:\\/\\//i.test(url)) {\n      this.isValidUrlIn = true;\n      return true;\n    }\n    if (url.startsWith('api/') || url.startsWith('/api/')) {\n      this.isValidUrlIn = true;\n      return true;\n    }\n    this.isValidUrlIn = false;\n    return false;\n  }\n  fetchData() {}\n  selecteLoadApi(data: any) {\n    if (\n      this.localQuestion.element &&\n      !this.localQuestion.element.formElement.option.api\n    ) {\n      this.localQuestion.element.formElement.option.api = {};\n    } else if (\n      this.localQuestion.formElement &&\n      !this.localQuestion.formElement.option.api\n    ) {\n      this.localQuestion.formElement.option.api = {};\n    }\n    if (this.localQuestion.element == undefined) {\n      if (this.externalRadio == 'External' && data == '1')\n        this.localQuestion.formElement.option.api.external = true;\n      if (this.externalRadio == 'Internal' && data == '1')\n        this.localQuestion.formElement.option.api.external = false;\n      if (data == '2')\n        this.localQuestion.formElement.option.api.url = this.apiURL;\n      if (data == '3')\n        this.localQuestion.formElement.option.api.valueField = this.Valuefield;\n      if (data == '4')\n        this.localQuestion.formElement.option.api.labelField = this.LabelField;\n      if (data == '5')\n        this.localQuestion.formElement.option.api.pathToValue = this.pathItems;\n    } else {\n      if (this.externalRadio == 'External' && data == '1')\n        this.localQuestion.element.formElement.option.api.external = true;\n      if (this.externalRadio == 'Internal' && data == '1')\n        this.localQuestion.element.formElement.option.api.external = false;\n      if (data == '2')\n        this.localQuestion.element.formElement.option.api.url = this.apiURL;\n      if (data == '3')\n        this.localQuestion.element.formElement.option.api.valueField =\n          this.Valuefield;\n      if (data == '4')\n        this.localQuestion.element.formElement.option.api.labelField =\n          this.LabelField;\n      if (data == '5')\n        this.localQuestion.element.formElement.option.api.pathToValue =\n          this.pathItems;\n    }\n    this.apiInputChanged.next('');\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  selecteLoadApiParams(\n    index: any,\n    data: any,\n    value: any,\n    dropdownChange: boolean = false\n  ) {\n    const paramsList = this.localQuestion.element\n      ? this.localQuestion.element.formElement.option.api.params\n      : this.localQuestion.formElement.option.api.params;\n\n    if (!paramsList) {\n      if (this.localQuestion.element) {\n        this.localQuestion.element.formElement.option.api.params = [];\n      } else {\n        this.localQuestion.formElement.option.api.params = [];\n      }\n    }\n\n    const params = this.localQuestion.element\n      ? this.localQuestion.element.formElement.option.api.params\n      : this.localQuestion.formElement.option.api.params;\n\n    if (!params[index]) {\n      params[index] = {};\n    }\n\n    const param = params[index];\n\n    if (data === '1') {\n      param.keyName = value;\n    }\n\n    if (data === '2') {\n      param.valueSource = this.selectedParams[index][0]?.value ?? '';\n    }\n\n    if (\n      data === '3' &&\n      value !== undefined &&\n      value !== '' &&\n      !dropdownChange\n    ) {\n      param.inputValue = value;\n    } else if (data === '3' && dropdownChange) {\n      param.inputValue = this.selectedParamsInput[index][0]?.value ?? '';\n    }\n\n    this.apiInputChanged.next('');\n\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  selecteLoadApiHeaders(\n    index: any,\n    data: any,\n    value: any,\n    dropdownChange: boolean = false\n  ) {\n    this.headerCurrentIndex = index;\n\n    if (this.localQuestion.element == undefined) {\n      if (!this.localQuestion.formElement.option.api.headers) {\n        this.localQuestion.formElement.option.api.headers = [];\n      }\n\n      // ✅ Ensure index exists\n      if (!this.localQuestion.formElement.option.api.headers[index]) {\n        this.localQuestion.formElement.option.api.headers[index] = {};\n      }\n\n      const header = this.localQuestion.formElement.option.api.headers[index];\n\n      if (data == '1') {\n        header.keyName = value;\n      }\n\n      if (data == '2') {\n        header.valueSource =\n          this.selectedHeaders[index].length > 0\n            ? this.selectedHeaders[index][0].value\n            : '';\n      }\n\n      if (\n        data == '3' &&\n        value !== undefined &&\n        value !== '' &&\n        !dropdownChange\n      ) {\n        header.inputValue = value;\n      } else {\n        header.inputValue = this.selectedHeadersInput[index][0]?.value ?? '';\n      }\n    } else {\n      if (!this.localQuestion.element.formElement.option.api.headers) {\n        this.localQuestion.element.formElement.option.api.headers = [];\n      }\n\n      // ✅ Ensure index exists\n      if (!this.localQuestion.element.formElement.option.api.headers[index]) {\n        this.localQuestion.element.formElement.option.api.headers[index] = {};\n      }\n\n      const headers = this.localQuestion.element.formElement.option.api.headers;\n\n      if (!headers[index]) {\n        headers[index] = {};\n      }\n\n      const header = headers[index];\n\n      if (data == '1') {\n        header.keyName = value;\n      }\n\n      if (data == '2') {\n        header.valueSource = this.selectedHeaders[index][0]?.value ?? '';\n      }\n\n      if (\n        data == '3' &&\n        value !== undefined &&\n        value !== '' &&\n        !dropdownChange\n      ) {\n        header.inputValue = value;\n      } else if (data === '3' && dropdownChange) {\n        header.inputValue = this.selectedHeadersInput[index][0]?.value ?? '';\n      }\n    }\n\n    this.apiInputChanged.next('');\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  selecteLoadApiPathVariables(\n    index: any,\n    data: any,\n    value: any,\n    dropdownChange: boolean = false\n  ) {\n    this.paramCurrentIndex = index;\n\n    const pathVars = this.localQuestion.element\n      ? this.localQuestion.element.formElement.option.api.pathVariables\n      : this.localQuestion.formElement.option.api.pathVariables;\n\n    if (!pathVars) {\n      if (this.localQuestion.element) {\n        this.localQuestion.element.formElement.option.api.pathVariables = [];\n      } else {\n        this.localQuestion.formElement.option.api.pathVariables = [];\n      }\n    }\n\n    const pathVariables = this.localQuestion.element\n      ? this.localQuestion.element.formElement.option.api.pathVariables\n      : this.localQuestion.formElement.option.api.pathVariables;\n\n    if (!pathVariables[index]) {\n      pathVariables[index] = {};\n    }\n\n    const param = pathVariables[index];\n\n    if (data === '1') {\n      param.keyName = value;\n    }\n\n    if (data === '2') {\n      param.valueSource = this.selectedPathVariables[index][0]?.value ?? '';\n    }\n\n    if (\n      data === '3' &&\n      value !== undefined &&\n      value !== '' &&\n      !dropdownChange\n    ) {\n      param.inputValue = value;\n    } else if (data === '3' && dropdownChange) {\n      param.inputValue = this.selectedPathVariablesInput[index][0]?.value ?? '';\n    }\n\n    this.apiInputChanged.next('');\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  getTranslationForLanguage(translations: any[], language: string): string {\n    const translation = translations.find((t) => t.language === language);\n    return translation ? translation.translatedText : '';\n  }\n\n  updateTranslationForLanguage(\n    event: any,\n    translations: any[],\n    language: string\n  ) {\n    const newValue: string = event.target.value;\n    const translation = translations.find((t) => t.language === language);\n    if (translation) {\n      translation.translatedText = newValue;\n    } else {\n      translations.push({\n        language: language,\n        translatedText: newValue,\n        entityType: 'LOOKUP',\n        attribute: 'NAME',\n      });\n    }\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n  trackById(index: number, item: any) {\n    return index;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  drop(event: CdkDragDrop<string[]>) {\n    moveItemInArray(\n      this.customOptions,\n      event.previousIndex,\n      event.currentIndex\n    );\n    const updatedOptions = [...this.customOptions];\n    setTimeout(() => {\n      if (this.localQuestion.element == undefined) {\n        this.localQuestion.formElement.option.customOptions = [\n          ...updatedOptions,\n        ];\n      } else {\n        this.localQuestion.element.formElement.option.customOptions = [\n          ...updatedOptions,\n        ];\n      }\n      this.questionUpdated.emit(this.localQuestion);\n    }, 5);\n  }\n\n  generateFieldName() {\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      let testName = '';\n      if (this.fieldType == 'DROP_DOWN') {\n        testName = 'dropdown';\n      } else if (this.fieldType == 'RADIO_BUTTON') {\n        testName = 'radio_button';\n      } else {\n        testName = 'checkbox';\n      }\n      this.testElementName = this.dataservice.getStableTestName(testName, id);\n      if (this.question.element) {\n        this.question.element.testElementName = this.testElementName;\n      } else {\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  isFieldInvalid(value: any): boolean {\n    return (\n      this.editMode &&\n      this.showErrors &&\n      (value === undefined || value === null || value === '')\n    );\n  }\n\n  isTranslationInvalid(translations: any[], language: string): boolean {\n    const translation = this.getTranslationForLanguage(translations, language);\n    return (\n      this.editMode &&\n      this.showErrors &&\n      (translation === undefined || translation === null || translation === '')\n    );\n  }\n\n  // Add this method to validate all rows before submission\n  validateAllRows(): boolean {\n    return this.rows.every((row) => {\n      const isSortingOrderValid = !this.isFieldInvalid(row.sortingOrder);\n      const isValueValid = !this.isFieldInvalid(row.value);\n      const areTranslationsValid = this.languages.every(\n        (language: any) =>\n          !this.isTranslationInvalid(row.translations, language)\n      );\n\n      return isSortingOrderValid && isValueValid && areTranslationsValid;\n    });\n  }\n\n  scoringExpanded: boolean = false;\n  scoringOptions: any[] = [];\n  filteredScoringOptions: any[] = [];\n  customScores: any[] = [];\n  selectedScoringOptions: any[][] = [];\n  selectedScoringTypes: any[][] = [];\n  scoringOpted: boolean = false;\n  defaultScore: number | null = null;\n  scoreWarningMessage: string = '';\n  enableScoringType: boolean = false;\n  scoringTypes: any[] = [\n    {\n      label: 'Good Score',\n      value: 'GOOD_SCORE',\n    },\n    {\n      label: 'Bad Score',\n      value: 'BAD_SCORE',\n    },\n  ];\n\n  toggleScoreContainer() {\n    if (this.scoringOpted) {\n      this.scoringExpanded = !this.scoringExpanded;\n    } else {\n      this.scoreWarningMessage =\n        'Please enable scoring to expand the container';\n      setTimeout(() => {\n        this.scoreWarningMessage = '';\n      }, 3000);\n    }\n  }\n\n  addScoring() {\n    const target = this.localQuestion.element\n      ? this.localQuestion.element.formElement\n      : this.localQuestion.formElement;\n\n    if (this.scoringOpted) {\n      if (!target.scoring) {\n        target.scoring = {};\n        target.scoring.enableScoring = this.scoringOpted;\n      } else {\n        target.scoring.enableScoring = this.scoringOpted;\n      }\n      this.questionUpdated.emit(this.localQuestion);\n    } else {\n      delete target.scoring;\n      this.defaultScore = null;\n      this.enableScoringType = false;\n      this.scoringExpanded = false;\n      this.customScores = [];\n      this.selectedScoringOptions = this.selectedScoringOptions.map(() => []);\n      this.selectedScoringTypes = this.selectedScoringTypes.map(() => []);\n      this.questionUpdated.emit(this.localQuestion);\n    }\n  }\n\n  updateEnableScoringType() {\n    const target = this.localQuestion.element\n      ? this.localQuestion.element.formElement\n      : this.localQuestion.formElement;\n\n    if (this.enableScoringType) {\n      target.scoring.enableScoringType = this.enableScoringType;\n    } else {\n      target.scoring.enableScoringType = this.enableScoringType;\n      this.customScores = this.customScores.map((scoreGroup) => ({\n        ...scoreGroup,\n        scoreType: 'NOT_APPLICABLE',\n      }));\n\n      this.updateOnJson();\n    }\n  }\n\n  clearScoreTypes() {\n    this.customScores = this.customScores.map((scoreGroup) => ({\n      ...scoreGroup,\n      scoreType: 'NOT_APPLICABLE',\n    }));\n    const target = this.localQuestion.element\n      ? this.localQuestion.element.formElement\n      : this.localQuestion.formElement;\n    target.scoring.enableScoringType = this.enableScoringType;\n    target.scoring.score = this.customScores;\n  }\n\n  updateDefaultScore() {\n    const target = this.localQuestion.element\n      ? this.localQuestion.element.formElement\n      : this.localQuestion.formElement;\n\n    if (!target.scoring) {\n      target.scoring = {};\n    }\n    target.scoring.defaultScore = this.defaultScore;\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  addNewScore() {\n    this.customScores.push({\n      label: [],\n      score: '',\n    });\n    this.selectedScoringOptions.push([]);\n    this.selectedScoringTypes.push([]);\n  }\n\n  deleteScore(index: number) {\n    this.customScores.splice(index, 1);\n    this.selectedScoringOptions.splice(index, 1);\n    this.selectedScoringTypes.splice(index, 1);\n    this.updateOnJson();\n  }\n\n  updateScoringOptionsFromCustomOptions(options: any) {\n    this.scoringOptions = [];\n    options.forEach((item: any) => {\n      this.scoringOptions.push({\n        label: item.value,\n        value: item.value,\n      });\n    });\n    this.selectedScoringOptions = this.populateSelectedScoringOptions(\n      this.scoringOptions,\n      this.customScores\n    );\n    this.selectedScoringTypes = this.populateSelectedScoringTypes(\n      this.scoringTypes,\n      this.customScores\n    );\n    this.filteredScoringOptions = this.getAllFilteredScoringOptions();\n    // this.cdr.detectChanges();\n  }\n\n  fetchDataFromLookup(lookup: string) {\n    this.ApiService.fetchDataFromLookup(lookup).subscribe({\n      next: (response) => {\n        this.scoringOptions = response.result.values.map(\n          (item: { value: string; label: string }) => ({\n            value: item.value,\n            label: item.label,\n          })\n        );\n        this.selectedScoringOptions = this.populateSelectedScoringOptions(\n          this.scoringOptions,\n          this.customScores\n        );\n        this.selectedScoringTypes = this.populateSelectedScoringTypes(\n          this.scoringTypes,\n          this.customScores\n        );\n        this.filteredScoringOptions = this.getAllFilteredScoringOptions();\n        this.cdr.detectChanges();\n      },\n      error: (error) => {\n        console.error('HTTP Error:', error);\n      },\n    });\n  }\n  apiInputChanged: Subject<string> = new Subject();\n\n  loadApiData() {\n    let api = this.localQuestion.formElement.option.api;\n    this.fetchDataFromAPI(api);\n  }\n\n  fetchDataFromAPI(api: any) {\n    const apiConfig = api;\n    this.ApiService.fetchDataFromExternalAPI(apiConfig).subscribe(\n      (response) => {\n        let data;\n        if (apiConfig.pathToValue) {\n          data = this.extractDataByPath(response, apiConfig.pathToValue);\n        } else {\n          data = response;\n        }\n\n        this.scoringOptions = data?.map((item: any) => ({\n          value: item[apiConfig.valueField?.trim()],\n          label: item[apiConfig.labelField?.trim()],\n        }));\n        this.selectedScoringOptions = this.populateSelectedScoringOptions(\n          this.scoringOptions,\n          this.customScores\n        );\n\n        this.selectedScoringTypes = this.populateSelectedScoringTypes(\n          this.scoringTypes,\n          this.customScores\n        );\n        this.filteredScoringOptions = this.getAllFilteredScoringOptions();\n      },\n      (error) => {\n        console.error('HTTP Error:', error);\n      }\n    );\n  }\n\n  extractDataByPath(data: any, path: string) {\n    return path.split('.').reduce((acc, part) => acc && acc[part], data);\n  }\n\n  fetchDataFromDatabase(database: any) {\n    const transformedDatabase = this.transformDatabaseObject(database);\n    this.ApiService.fetchDataFromDatabase(transformedDatabase).subscribe({\n      next: (response: any) => {\n        if (response.success) {\n          this.scoringOptions = response.result.map(\n            (item: { value: string; label: string }) => ({\n              value: item.value,\n              label: item.label,\n            })\n          );\n          this.selectedScoringOptions = this.populateSelectedScoringOptions(\n            this.scoringOptions,\n            this.customScores\n          );\n          this.selectedScoringTypes = this.populateSelectedScoringTypes(\n            this.scoringTypes,\n            this.customScores\n          );\n          this.filteredScoringOptions = this.getAllFilteredScoringOptions();\n        } else {\n          console.error('Error fetching data from database:', response.message);\n        }\n      },\n      error: (error: any) => {\n        console.error('HTTP Error:', error);\n        this.cdr.detectChanges();\n      },\n    });\n  }\n\n  transformDatabaseObject(database: any) {\n    return {\n      tableName: database.tableName,\n      valueField: database.valueField,\n      labelField: database.labelField,\n      criteria: database?.criteria?.map((criteria: any) => ({\n        field: criteria.field,\n        valueSource: criteria?.valueSource,\n        condition: criteria.condition,\n        value: criteria.inputValue,\n        logicalOperator: criteria.logicalOperator,\n      })),\n    };\n  }\n\n  updateScoringOptions(index: number) {\n    const selected = this.selectedScoringOptions\n      .flat()\n      .map((option) => option.value); // assuming options have unique `id`\n\n    this.filteredScoringOptions = this.scoringOptions.filter(\n      (option) => !selected.includes(option.value)\n    );\n\n    this.customScores[index].label = this.selectedScoringOptions[index].map(\n      (option: any) => option.value\n    );\n    this.updateOnJson();\n  }\n\n  updateScoringType(index: number) {\n    this.customScores[index].scoreType =\n      this.selectedScoringTypes[index][0].value;\n    this.updateOnJson();\n  }\n\n  updateOnJson() {\n    if (this.localQuestion.element) {\n      if (!this.localQuestion.element.formElement.scoring) {\n        this.localQuestion.element.formElement.scoring = {};\n      }\n      this.localQuestion.element.formElement.scoring.score = this.customScores;\n    } else {\n      if (!this.localQuestion.formElement.scoring) {\n        this.localQuestion.formElement.scoring = {};\n      }\n      this.localQuestion.formElement.scoring.score = this.customScores;\n    }\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  getAllFilteredScoringOptions(): any[] {\n    const allSelectedValues = this.selectedScoringOptions\n      .flat()\n      .map((option) => option.value);\n    return this.scoringOptions.filter(\n      (option) => !allSelectedValues.includes(option.value)\n    );\n  }\n\n  populateSelectedScoringOptions(\n    scoringOptions: any[],\n    customScores: any[]\n  ): any[][] {\n    const selectedScoringOptions: any[][] = [];\n    customScores.forEach((scoreGroup, index) => {\n      const selectedGroup: any[] = [];\n\n      scoreGroup.label.forEach((keyValue: string) => {\n        const match = scoringOptions.find((option) => option.value == keyValue);\n        if (match) {\n          selectedGroup.push(match);\n        } else {\n          selectedGroup.push([]);\n        }\n      });\n      selectedScoringOptions.push(selectedGroup);\n    });\n\n    return selectedScoringOptions;\n  }\n\n  populateSelectedScoringTypes(\n    scoringTypes: any[],\n    customScores: any[]\n  ): any[][] {\n    const selectedScoringTypes: any[][] = [];\n\n    customScores.forEach((scoreGroup) => {\n      const selectedGroup: any[] = [];\n\n      // find the type match\n      const match = scoringTypes.find(\n        (type) => type.value === scoreGroup.scoreType\n      );\n      if (match) {\n        selectedGroup.push(match);\n      } else {\n        selectedGroup.push([]);\n      }\n      selectedScoringTypes.push(selectedGroup);\n    });\n\n    return selectedScoringTypes;\n  }\n\n  focusInput() {\n    this.expressionDiv.nativeElement.focus();\n  }\n\n  // Detect clicks outside this component\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n    const clickedInside = this.expressionDiv?.nativeElement.contains(\n      event.target as Node\n    );\n    if (!clickedInside) {\n      this.showDropdown = false;\n    }\n  }\n\n  onKeyDown(event: KeyboardEvent) {\n    const allowedKeys = ['.', ',', '-', ' ', '_', '(', ')', 'Backspace'];\n    if (event.key === '@') {\n      this.saveSelection();\n      this.showDropdown = true;\n      event.preventDefault();\n    } else if (event.key === 'Escape') {\n      this.showDropdown = false;\n    }\n    if (!allowedKeys.includes(event.key)) {\n      event.preventDefault();\n    }\n    this.labelPattern = this.getExpression();\n    const { db } = this.getDatabaseOption();\n    db.labelPattern = this.labelPattern;\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  saveSelection() {\n    const sel = window.getSelection();\n    if (sel && sel.rangeCount > 0) {\n      this.savedRange = sel.getRangeAt(0).cloneRange();\n    }\n  }\n  onInput(event: any) {\n    this.saveSelection(); // Save selection after typing\n    const text = this.getTextContent();\n    if (!text.includes('@')) {\n      this.showDropdown = false;\n    }\n\n    this.labelPattern = this.getExpression();\n    const { db } = this.getDatabaseOption();\n\n    db.labelPattern = this.labelPattern;\n    this.questionUpdated.emit(this.localQuestion);\n  }\n  getTextContent() {\n    return this.expressionDiv.nativeElement.textContent || '';\n  }\n\n  selectOption(option: any) {\n    option.label = option.label + ' ';\n    this.insertChip(option); // pass full object now\n    this.showDropdown = false;\n    this.labelPattern = this.getExpression();\n\n    const { db } = this.getDatabaseOption();\n\n    db.labelPattern = this.labelPattern;\n    this.questionUpdated.emit(this.localQuestion);\n  }\n\n  getExpression(): string {\n    const nodes = this.expressionDiv.nativeElement.childNodes;\n    let result = '';\n    nodes.forEach((node: any) => {\n      if (node.nodeType === Node.TEXT_NODE) {\n        result += node.textContent;\n      } else if (node.classList?.contains('chip')) {\n        // Use the id stored in data attribute instead of visible label\n        const id = node.getAttribute('data-id');\n        if (id) {\n          result += `${id}`;\n        }\n      }\n    });\n    return result.trim();\n  }\n\n  insertChip(option: { label: string }, shouldAppend: boolean = false) {\n    const chip = this.createChipElement(option);\n    const el = this.expressionDiv.nativeElement;\n    const sel = window.getSelection();\n\n    if (shouldAppend) {\n        this.renderer.appendChild(el, chip);\n        return;\n    }\n\n    // Original logic for user interaction\n    if (this.savedRange) {\n        sel?.removeAllRanges();\n        sel?.addRange(this.savedRange);\n    }\n\n    if (sel && sel.rangeCount > 0) {\n        const range = sel.getRangeAt(0);\n        range.deleteContents();\n        range.insertNode(chip);\n\n        // Move cursor after chip\n        range.setStartAfter(chip);\n        range.collapse(true);\n        sel.removeAllRanges();\n        sel.addRange(range);\n\n        this.savedRange = null;\n    } else {\n        this.renderer.appendChild(el, chip);\n    }\n\n    this.focusInputAtEnd();\n}\n\nvalueAssignToLabelPattern(labelPattern: string) {\n    const allowedChars = ['.', ',', '-', '_', '(', ')', ''];\n    const escapedChars = allowedChars\n      .map((c) => {\n        return c.replace(/[-\\\\^$*+?.()|[```{}]/g, '\\\\$&');\n      })\n      .join('');\n    const splitRegex = new RegExp(`(\\\\s+|[${escapedChars}])`);\n    const parts = labelPattern\n      ?.split(splitRegex)\n      ?.filter((part) => part !== '');\n    const el = this?.expressionDiv?.nativeElement;\n\n    if (el  && Array.isArray(parts)) {\n      // Clear existing content first\n      el.innerHTML = '';\n\n      for (const part of parts) {\n        const trimmedPart = part.trim();\n        if (allowedChars.includes(part) || trimmedPart === '') {\n          const textNode = document.createTextNode(part);\n          el.appendChild(textNode);\n        } else {\n          // Use append mode for initial population\n          this.insertChip({ label: part }, true); // true = append mode\n        }\n      }\n\n      // Set cursor at the end after all content is added\n      this.focusInputAtEnd();\n    }\n}\n\n  createChipElement(question: any): HTMLElement {\n    const chip = this.renderer.createElement('span');\n    this.renderer.addClass(chip, 'chip');\n    chip.setAttribute('contenteditable', 'false');\n    chip.setAttribute('data-id', question.label);\n    chip.textContent = question.label;\n\n    const removeIcon = this.renderer.createElement('span');\n    removeIcon.textContent = '×';\n    this.renderer.addClass(removeIcon, 'remove-icon');\n\n    removeIcon.addEventListener('click', () => {\n      chip.remove();\n      this.focusInputAtEnd();\n      this.labelPattern = this.getExpression();\n\n      const { db } = this.getDatabaseOption();\n      db.labelPattern = this.labelPattern;\n      this.questionUpdated.emit(this.localQuestion);\n    });\n\n    chip.appendChild(removeIcon);\n\n    return chip;\n  }\n\n  focusInputAtEnd() {\n    const el = this.expressionDiv.nativeElement;\n\n    const range = document.createRange();\n    range.selectNodeContents(el);\n    range.collapse(false);\n\n    const sel = window.getSelection();\n    sel?.removeAllRanges();\n    sel?.addRange(range);\n  }\n\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutsides(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div\n      class=\"outer-rectangle\"\n      [attr.name]=\"testElementName\"\n      [ngClass]=\"{\n        'multi-fields-container': localQuestion?.element?.multiField\n      }\"\n    >\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div\n          class=\"input-container\"\n          [ngClass]=\"{\n            selected: selectedQuestion()\n          }\"\n        >\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\" *ngIf=\"fieldType == 'DROP_DOWN'\">\n                <img\n                  src=\"/assets/icons/dropdown-icon.svg\"\n                  alt=\"Dropdown\"\n                  class=\"icon-style\"\n                />\n                Dropdown\n              </div>\n              <div class=\"icon-container\" *ngIf=\"fieldType == 'CHECK_BOX'\">\n                <img\n                  src=\"/assets/icons/checkbox-icon.svg\"\n                  alt=\"Checkbox\"\n                  class=\"icon-style\"\n                />\n                Checkbox\n              </div>\n              <div class=\"icon-container\" *ngIf=\"fieldType == 'RADIO_BUTTON'\">\n                <img\n                  src=\"/assets/icons/radio-button-icon.svg\"\n                  alt=\"Radio Button\"\n                  class=\"icon-style\"\n                />\n                Radio Button\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                \n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n            \n\n                <div *ngIf=\"localQuestion?.element?.multiField\">\n                  <div\n                    *ngIf=\"!isOpen\"\n                    class=\"down-arrow\"\n                    class=\"action-button\"\n                    data-title=\"Show\"\n                    (click)=\"closeElement()\"\n                  >\n                    <img\n                      src=\"assets/icons/down-arrow-gray-icon.svg\"\n                      alt=\"down-arrow-icon\"\n                      loading=\"lazy\"\n                    />\n                  </div>\n                  <div\n                    *ngIf=\"isOpen\"\n                    class=\"up-arrow\"\n                    class=\"action-button\"\n                    data-title=\"Hide\"\n                    (click)=\"closeElement()\"\n                  >\n                    <img\n                      src=\"assets/icons/upArrow.png\"\n                      alt=\"up-arrow-icon\"\n                      loading=\"lazy\"\n                    />\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!localQuestion?.element?.multiField\">\n            <label\n              class=\"fontFamily\"\n              [for]=\"\n                'question' +\n                (question?.element ? question?.element?.id : question?.id)\n              \"\n              >Question</label\n            >\n            <input\n              type=\"text\"\n              [id]=\"\n                'question' +\n                (question?.element ? question?.element?.id : question?.id)\n              \"\n              class=\"form-control mb-2\"\n              [(ngModel)]=\"inputQuestion\"\n              (ngModelChange)=\"jsonUpdation()\"\n              placeholder=\"Type Question\"\n              maxlength=\"150\"\n              (focus)=\"onFocus()\"\n            />\n          </div>\n   \n          <ng-container *ngIf=\"isOpen\">\n            <div class=\"form-check-field\">\n              <input\n                type=\"radio\"\n                [id]=\"\n                  localQuestion.id\n                    ? 'dropdownCustomOptions' + localQuestion.id\n                    : 'dropdownCustomOptions' + uniqueId\n                \"\n                [name]=\"localQuestion.id ? localQuestion.id : uniqueId\"\n                value=\"OPTION\"\n                [(ngModel)]=\"selectedOption\"\n                (ngModelChange)=\"jsonUpdation('optionChange')\"\n                [attr.data-value]=\"selectedOption == 'OPTION'\"\n              />\n              <label\n                class=\"form-check-label\"\n                [for]=\"\n                  localQuestion.id\n                    ? 'dropdownCustomOptions' + localQuestion.id\n                    : 'dropdownCustomOptions' + uniqueId\n                \"\n                >Custom Options</label\n              >\n            </div>\n            <div\n              class=\"form-check-sub-field\"\n              *ngIf=\"selectedOption == 'OPTION'\"\n            >\n              <div class=\"inputBox\">\n                <div\n                  class=\"inputBoxLabels\"\n                  id=\"inputBoxLabels\"\n                  cdkDropListOrientation=\"horizontal\"\n                  cdkDropList\n                  (cdkDropListDropped)=\"drop($event)\"\n                >\n                  <span\n                    class=\"inputBoxLabel\"\n                    *ngFor=\"let option of customOptions; trackBy: trackById\"\n                    cdkDrag\n                    cdkDragBoundary=\".inputBoxLabels\"\n                  >\n                    {{ option.value }}\n                    <span\n                      class=\"lib-option-close\"\n                      (click)=\"removeOption(option.value)\"\n                      >x</span\n                    >\n                  </span>\n                </div>\n                <input\n                  class=\"custom-option-textField\"\n                  type=\"text\"\n                  id=\"textField\"\n                  name=\"textField\"\n                  (input)=\"handleInput()\"\n                  (keydown)=\"handleKeyDown($event)\"\n                  maxlength=\"150\"\n                />\n              </div>\n            </div>\n            <div class=\"form-check-field\">\n              <input\n                type=\"radio\"\n                [id]=\"\n                  localQuestion.id\n                    ? 'dropdownLookup' + localQuestion.id\n                    : 'dropdownLookup' + uniqueId\n                \"\n                [name]=\"localQuestion.id ? localQuestion.id : uniqueId\"\n                value=\"LOOKUP\"\n                [(ngModel)]=\"selectedOption\"\n                (ngModelChange)=\"jsonUpdation('optionChange')\"\n                [attr.data-value]=\"selectedOption == 'LOOKUP'\"\n              />\n              <label\n                class=\"form-check-label\"\n                [for]=\"\n                  localQuestion.id\n                    ? 'dropdownLookup' + localQuestion.id\n                    : 'dropdownLookup' + uniqueId\n                \"\n                >Load from lookup data</label\n              >\n            </div>\n            <div\n              class=\"form-check-sub-field\"\n              *ngIf=\"selectedOption == 'LOOKUP'\"\n            >\n              <lib-dropdown\n                [placeholder]=\"'Master data'\"\n                [showCreateNew]=\"true\"\n                [items]=\"tables\"\n                [multiple]=\"false\"\n                [(selectedItems)]=\"selectedLookUp\"\n                (selectedItemsChange)=\"selecteLookUps()\"\n                [customButtons]=\"buttons\"\n                (onDropdownScroll)=\"lookUpScroll($event)\"\n                (onSearch)=\"lookUpSearch($event)\"\n                (onCreateNew)=\"createLookUp()\"\n              >\n              </lib-dropdown>\n            </div>\n            <div class=\"form-check-field\">\n              <input\n                type=\"radio\"\n                [id]=\"\n                  localQuestion.id\n                    ? 'dropdownDatabase' + localQuestion.id\n                    : 'dropdownDatabase' + uniqueId\n                \"\n                [name]=\"localQuestion.id ? localQuestion.id : uniqueId\"\n                value=\"DATABASE\"\n                [(ngModel)]=\"selectedOption\"\n                (ngModelChange)=\"jsonUpdation('optionChange')\"\n                [attr.data-value]=\"selectedOption == 'DATABASE'\"\n              />\n              <label\n                class=\"form-check-label\"\n                [for]=\"\n                  localQuestion.id\n                    ? 'dropdownDatabase' + localQuestion.id\n                    : 'dropdownDatabase' + uniqueId\n                \"\n              >\n                Load from data base\n              </label>\n            </div>\n            <div\n              class=\"form-check-sub-field mt-4\"\n              *ngIf=\"selectedOption == 'DATABASE'\"\n            >\n              <div class=\"row mb-1\">\n                <div class=\"col-4\">Table<span class=\"star\">*</span></div>\n                <div class=\"col-4\">Value field<span class=\"star\">*</span></div>\n                <div class=\"col-4\">Label field<span class=\"star\">*</span></div>\n              </div>\n              <div class=\"row\">\n                <div class=\"col-4\">\n                  <lib-dropdown\n                    [placeholder]=\"'select table'\"\n                    [items]=\"table\"\n                    [multiple]=\"false\"\n                    [(selectedItems)]=\"selectedTables\"\n                    (selectedItemsChange)=\"changeTableData('table')\"\n                  >\n                  </lib-dropdown>\n                </div>\n                <div class=\"col-4\">\n                  <lib-dropdown\n                    [placeholder]=\"'select value field'\"\n                    [items]=\"valueFields\"\n                    [multiple]=\"false\"\n                    [(selectedItems)]=\"selectedValueFields\"\n                    (selectedItemsChange)=\"updateValueField()\"\n                  >\n                  </lib-dropdown>\n                </div>\n                <div class=\"col-4\">\n                  <lib-dropdown\n                    [placeholder]=\"'select label field'\"\n                    [items]=\"labelFields\"\n                    [multiple]=\"false\"\n                    [(selectedItems)]=\"selectedLabelFields\"\n                    (selectedItemsChange)=\"updateLabelField()\"\n                  >\n                  </lib-dropdown>\n                </div>\n              </div>\n\n              <div class=\"label-pattern-container\">\n                <div class=\"label-pattern-heading\">Label Pattern</div>\n\n                <div class=\"label-pattern\" (click)=\"focusInput()\" tabindex=\"0\">\n                  <div\n                    class=\"label-pattern-area\"\n                    contenteditable=\"true\"\n                    (keydown)=\"onKeyDown($event)\"\n                    (input)=\"onInput($event)\"\n                    #expressionDiv\n                  ></div>\n\n                  <ul\n                    class=\"label-dropdown\"\n                    *ngIf=\"showDropdown && labelFields.length\"\n                  >\n                    <li\n                      *ngFor=\"let option of labelFields\"\n                      (click)=\"selectOption(option)\"\n                      [class.selected]=\"option === selectedOption\"\n                      class=\"dropdown-item\"\n                    >\n                      <span class=\"option-main\">\n                        <span class=\"option-label\">{{ option.label }}</span>\n                        <span *ngIf=\"option.category\" class=\"option-category\">{{\n                          option.category\n                        }}</span>\n                      </span>\n                    </li>\n                  </ul>\n                </div>\n                <div class=\"label-helper\">\n                  Type <kbd>@</kbd> to insert fields • Allowed characters:\n                  <kbd>.</kbd> <kbd>,</kbd> <kbd>-</kbd> <kbd>_</kbd> <kbd>(</kbd>  <kbd>)</kbd>\n                  <kbd>Space</kbd>\n                </div>\n              </div>\n              <div class=\"row\">\n                <div class=\"col-3 ms-auto\">\n                  <div class=\"add-criteria\" (click)=\"addCriteriaRow()\">\n                    <img\n                      src=\"/assets/icons/add-criteria-icon.svg\"\n                      class=\"icon-field-add\"\n                    />\n                    <a>Add Criteria</a>\n                  </div>\n                </div>\n              </div>\n              <div\n                class=\"row criteria-div ms-3\"\n                *ngFor=\"let criteria of criteriaList; let i = index\"\n              >\n                <div *ngIf=\"i != 0\" class=\"col-3 borderDrop\">\n                  <lib-dropdown\n                    [items]=\"logicalOperator\"\n                    (selectedItemsChange)=\"selectedValues(i, '5', $event)\"\n                    [showBorder]=\"false\"\n                    [selectedValues]=\"criteriaList[i - 1]?.logicalOperator\"\n                  >\n                  </lib-dropdown>\n                </div>\n                <div class=\"col-3 borderDrop\">\n                  <lib-dropdown\n                    [items]=\"fields\"\n                    (selectedItemsChange)=\"selectedValues(i, '1', $event)\"\n                    [showBorder]=\"false\"\n                    [selectedValues]=\"criteria.field\"\n                  >\n                  </lib-dropdown>\n                </div>\n                <div class=\"col-3 borderDrop\">\n                  <lib-dropdown\n                    [items]=\"conditions\"\n                    (selectedItemsChange)=\"selectedValues(i, '2', $event)\"\n                    [showBorder]=\"false\"\n                    [selectedValues]=\"criteria.condition\"\n                  >\n                  </lib-dropdown>\n                </div>\n                <div class=\"col-3 borderDrop\">\n                  <lib-dropdown\n                    [items]=\"valueSource\"\n                    (selectedItemsChange)=\"selectedValues(i, '3', $event)\"\n                    [showBorder]=\"false\"\n                    [selectedValues]=\"criteria.valueSource\"\n                  >\n                  </lib-dropdown>\n                </div>\n                <div\n                  class=\"col-3 borderDrop\"\n                  *ngIf=\"\n                    (criteria.valueSource == 'QUESTION' && currentIndex == i) ||\n                    criteria.valueSource == 'QUESTION'\n                  \"\n                >\n                  <lib-dropdown\n                    [items]=\"selecteQuestions\"\n                    [(selectedItems)]=\"selectedInputValue\"\n                    (selectedItemsChange)=\"selectedValues(i, '4', $event)\"\n                    [showBorder]=\"false\"\n                    [selectedValues]=\"criteria.inputValue\"\n                  >\n                  </lib-dropdown>\n                </div>\n                <div\n                  class=\"col-3 borderDrop\"\n                  *ngIf=\"\n                    (criteria.valueSource == 'CUSTOM_INPUT' &&\n                      currentIndex == i) ||\n                    criteria.valueSource == 'CUSTOM_INPUT'\n                  \"\n                >\n                  <input\n                    type=\"text\"\n                    maxlength=\"150\"\n                    class=\"criteria-input\"\n                    (keyup)=\"customInputValues(i, '6', criteria.inputValue)\"\n                    placeholder=\"Type here\"\n                    [(ngModel)]=\"criteria.inputValue\"\n                  />\n                </div>\n                <div class=\"col-1 criteria-delete\">\n                  <img\n                    src=\"/assets/icons/delete-icon.svg\"\n                    (click)=\"deleteCriteriaRow(i)\"\n                    class=\"icon-right\"\n                  />\n                </div>\n              </div>\n            </div>\n            <div class=\"form-check-field\">\n              <input\n                type=\"radio\"\n                [id]=\"\n                  localQuestion.id\n                    ? 'dropdownApi' + localQuestion.id\n                    : 'dropdownApi' + uniqueId\n                \"\n                [name]=\"localQuestion.id ? localQuestion.id : uniqueId\"\n                value=\"API\"\n                [(ngModel)]=\"selectedOption\"\n                (ngModelChange)=\"jsonUpdation('optionChange')\"\n                [attr.data-value]=\"selectedOption == 'API'\"\n              />\n              <label\n                class=\"form-check-label\"\n                [for]=\"\n                  localQuestion.id\n                    ? 'dropdownApi' + localQuestion.id\n                    : 'dropdownApi' + uniqueId\n                \"\n                >Load from API</label\n              >\n            </div>\n            <div\n              class=\"form-check-sub-field mt-4\"\n              *ngIf=\"selectedOption == 'API'\"\n            >\n              <div class=\"row\">\n                <div class=\"col-8\"></div>\n                <div\n                  class=\"col-1 form-check-field\"\n                  *ngFor=\"let option of radioOptions\"\n                >\n                  <input\n                    type=\"radio\"\n                    [name]=\"localQuestion.id + option\"\n                    [value]=\"option\"\n                    [id]=\"\n                      localQuestion.element\n                        ? localQuestion.element.id + '-' + option\n                        : localQuestion.id + '-' + option\n                    \"\n                    [(ngModel)]=\"externalRadio\"\n                    (change)=\"selecteLoadApi('1')\"\n                    [attr.data-value]=\"externalRadio == option\"\n                  />\n\n                  <label\n                    class=\"form-check-label\"\n                    [for]=\"\n                      localQuestion.element\n                        ? localQuestion.element.id + '-' + option\n                        : localQuestion.id + '-' + option\n                    \"\n                    >{{ option }}</label\n                  >\n                </div>\n              </div>\n              <div class=\"row\">\n                <div class=\"col-12\">\n                  <label\n                    [for]=\"\n                      'apiurl' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    >API URL<span class=\"star\">*</span></label\n                  >\n                  <input\n                    [id]=\"\n                      'apiurl' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    type=\"text\"\n                    maxlength=\"150\"\n                    [(ngModel)]=\"apiURL\"\n                    class=\"apiUrlInput\"\n                    placeholder=\"Type\"\n                    (keyup)=\"isValidUrl()\"\n                    (click)=\"fetchData()\"\n                    (change)=\"selecteLoadApi('2')\"\n                  />\n                  <div *ngIf=\"!isValidUrlIn\">\n                    <div>API URL is invalid. Please enter a valid URL.</div>\n                  </div>\n                </div>\n                <div class=\"col-5\">\n                  <label\n                    [for]=\"\n                      'value' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    >Value field <span class=\"star\">*</span></label\n                  >\n                  <input\n                    [id]=\"\n                      'value' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    type=\"text\"\n                    maxlength=\"150\"\n                    [(ngModel)]=\"Valuefield\"\n                    class=\"valueInput\"\n                    placeholder=\"Type\"\n                    (change)=\"selecteLoadApi('3')\"\n                  />\n                </div>\n                <div class=\"col-2\"></div>\n                <div class=\"col-5\">\n                  <label\n                    [for]=\"\n                      'label' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    >Label field <span class=\"star\">*</span></label\n                  >\n                  <input\n                    [id]=\"\n                      'label' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    type=\"text\"\n                    maxlength=\"150\"\n                    [(ngModel)]=\"LabelField\"\n                    (change)=\"selecteLoadApi('4')\"\n                    class=\"valueInput\"\n                    placeholder=\"Type\"\n                  />\n                </div>\n\n                <div class=\"label-pattern-section\">\n                  <label class=\"pattern-label\">Label Pattern</label>\n\n                  <div class=\"inputBox label-pattern-inputBox\">\n                    <div\n                      class=\"inputBoxLabels\"\n                      id=\"inputBoxLabels\"\n                      cdkDropListOrientation=\"horizontal\"\n                      cdkDropList\n                      (cdkDropListDropped)=\"drop($event)\"\n                    >\n                      <span\n                        class=\"inputBoxLabel\"\n                        *ngFor=\"let option of labelPatternForApi\"\n                        cdkDrag\n                        cdkDragBoundary=\".inputBoxLabels\"\n                      >\n                        {{ option }}\n                        <span\n                          class=\"lib-option-close\"\n                          (click)=\"removeApiLabelPatternOption(option)\"\n                          >x</span\n                        >\n                      </span>\n                    </div>\n                    <input\n                      class=\"custom-option-textField\"\n                      type=\"text\"\n                      id=\"textFieldlabelFeild\"\n                      name=\"textFieldlabelFeild\"\n                      (input)=\"handleInputApiURL()\"\n                      (keydown)=\"handleKeyDownApiLabelPattern($event)\"\n                      maxlength=\"150\"\n                    />\n                  </div>\n                </div>\n\n                <div class=\"col-12\">\n                  <label\n                    [for]=\"\n                      'path' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    >Path to items</label\n                  >\n                  <input\n                    [id]=\"\n                      'path' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    type=\"text\"\n                    maxlength=\"150\"\n                    [(ngModel)]=\"pathItems\"\n                    (change)=\"selecteLoadApi('5')\"\n                    class=\"apiUrlInput\"\n                    placeholder=\"Type\"\n                  />\n                </div>\n                <div class=\"col-12 text-end\" (click)=\"AdvancedOption()\">\n                  <a> Advanced Options</a>\n                </div>\n                <div *ngIf=\"advancedOpt\">\n                  <div class=\"table-row header\">\n                    <div class=\"table-head\">\n                      <p class=\"option-heading\">Headers</p>\n                    </div>\n                    <div class=\"add-icon\">\n                      <div (click)=\"addHeaderRow()\">\n                        <img\n                          class=\"icon-field-add\"\n                          src=\"/assets/icons/add-outline-icon.svg\"\n                          alt=\"Add Icon\"\n                        />\n                        <span> Add</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div class=\"col-12\">\n                    <div class=\"row field-heading\">\n                      <div class=\"col-4\">\n                        <p>Name</p>\n                      </div>\n                      <div class=\"col-3\">\n                        <p>Value from</p>\n                      </div>\n                      <div class=\"col-4\">\n                        <p>Value</p>\n                      </div>\n                    </div>\n                    <div\n                      class=\"row headers-div\"\n                      *ngFor=\"let row of headerRows; let i = index\"\n                    >\n                      <div class=\"col-4\">\n                        <input\n                          type=\"text\"\n                          maxlength=\"150\"\n                          class=\"header-input\"\n                          (change)=\"selecteLoadApiHeaders(i, '1', row.keyName)\"\n                          [(ngModel)]=\"row.keyName\"\n                        />\n                      </div>\n                      <div class=\"col-3\">\n                        <lib-dropdown\n                          [placeholder]=\"'Select'\"\n                          [items]=\"valueSources\"\n                          [(selectedItems)]=\"selectedHeaders[i]\"\n                          (selectedItemsChange)=\"\n                            selecteLoadApiHeaders(i, '2', row.valueSource)\n                          \"\n                        >\n                        </lib-dropdown>\n                      </div>\n                      <div class=\"col-4\">\n                        <lib-dropdown\n                          *ngIf=\"\n                            (selectedHeaders[i].length > 0 &&\n                              selectedHeaders[i][0].value == 'QUESTION') ||\n                            row.valueSource == 'QUESTION'\n                          \"\n                          [items]=\"selecteQuestions\"\n                          [multiple]=\"false\"\n                          [(selectedItems)]=\"selectedHeadersInput[i]\"\n                          (selectedItemsChange)=\"\n                            selecteLoadApiHeaders(i, '3', row.inputValue, true)\n                          \"\n                        >\n                        </lib-dropdown>\n                        <input\n                          *ngIf=\"\n                            (selectedHeaders[i].length > 0 &&\n                            selectedHeaders[i][0].value !== 'QUESTION' &&\n                            selectedHeaders[i][0].value !== 'SEARCH_STRING' &&\n                            selectedHeaders[i][0].value !== 'SELECTED_VALUES') ||\n                            (selectedHeaders[i].length === 0 &&\n                              headerCurrentIndex == i &&\n                              row.valueSource !== 'QUESTION' &&\n                              row.valueSource !== 'SEARCH_STRING' &&\n                              row.valueSource !== 'SELECTED_VALUES')\n                          \"\n                          type=\"text\"\n                          maxlength=\"150\"\n                          class=\"header-input\"\n                          (change)=\"\n                          selecteLoadApiHeaders(i, '3', row.inputValue)\n                          \"\n                          [(ngModel)]=\"row.inputValue\"\n                        />\n                        <input\n                          *ngIf=\"\n                            (selectedHeaders[i].length > 0 &&\n                              selectedHeaders[i][0].value === 'LOCALE') ||\n                            (row.valueSource === 'LOCALE' &&\n                              headerCurrentIndex == i)\n                          \"\n                          type=\"text\"\n                          maxlength=\"150\"\n                          class=\"header-input\"\n                          (change)=\"\n                            selecteLoadApiHeaders(i, '3', row.inputValue)\n                          \"\n                          [(ngModel)]=\"row.inputValue\"\n                          placeholder=\"value\"\n                        />\n\n                        <div\n                          class=\"d-flex gap-5 form-check-field\"\n                          *ngIf=\"\n                            (selectedHeaders[i].length > 0 &&\n                              selectedHeaders[i][0].value ===\n                                'SELECTED_VALUES') ||\n                            (row.valueSource === 'SELECTED_VALUES' &&\n                              headerCurrentIndex == i)\n                          \"\n                        >\n                          <label\n                            [for]=\"'header-single-selected' + i\"\n                            class=\"d-flex gap-1\"\n                            ><input\n                              type=\"radio\"\n                              [name]=\"'header-selected-value' + i\"\n                              [id]=\"'header-single-selected' + i\"\n                              value=\"SINGLE_VALUE\"\n                              [(ngModel)]=\"row.inputValue\"\n                              (change)=\"\n                                selecteLoadApiHeaders(i, '3', row.inputValue)\n                              \"\n                              [disabled]=\"selectionType == 'MULTIPLE'\"\n                            /><span>Single Value</span></label\n                          >\n                          <label\n                            [for]=\"'header-multiple-selected' + i\"\n                            class=\"d-flex gap-1\"\n                            ><input\n                              type=\"radio\"\n                              [name]=\"'header-selected-value' + i\"\n                              [id]=\"'header-multiple-selected' + i\"\n                              value=\"ARRAY_OF_VALUES\"\n                              [(ngModel)]=\"row.inputValue\"\n                              (change)=\"\n                                selecteLoadApiHeaders(i, '3', row.inputValue)\n                              \"\n                              [disabled]=\"selectionType == 'MULTIPLE'\"\n                            /><span>Array of Values</span></label\n                          >\n                        </div>\n                      </div>\n                      <div class=\"col-1\">\n                        <img\n                          src=\"/assets/icons/delete-icon.svg\"\n                          (click)=\"deleteHeaderRow(i)\"\n                          class=\"icon-right\"\n                        />\n                      </div>\n                    </div>\n                  </div>\n                  <div class=\"table-row header\">\n                    <div class=\"table-head\">\n                      <p class=\"option-heading\">Parameters</p>\n                    </div>\n                    <div class=\"add-icon\">\n                      <div (click)=\"addParameterRow()\">\n                        <img\n                          class=\"icon-field-add\"\n                          src=\"/assets/icons/add-outline-icon.svg\"\n                          alt=\"Add Icon\"\n                        />\n                        <span> Add</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div class=\"col-12\">\n                    <div class=\"row field-heading\">\n                      <div class=\"col-4\">\n                        <p>Name</p>\n                      </div>\n                      <div class=\"col-3\">\n                        <p>Value from</p>\n                      </div>\n                      <div class=\"col-4\">\n                        <p>Value</p>\n                      </div>\n                    </div>\n                    <div\n                      class=\"row headers-div\"\n                      *ngFor=\"let row of parameterRows; let i = index\"\n                    >\n                      <div class=\"col-4\">\n                        <input\n                          type=\"text\"\n                          maxlength=\"150\"\n                          class=\"header-input\"\n                          (change)=\"selecteLoadApiParams(i, '1', row.keyName)\"\n                          [(ngModel)]=\"row.keyName\"\n                        />\n                      </div>\n                      <div class=\"col-3\">\n                        <lib-dropdown\n                          [placeholder]=\"'Select'\"\n                          [items]=\"paramsValueSources\"\n                          [(selectedItems)]=\"selectedParams[i]\"\n                          (selectedItemsChange)=\"\n                            selecteLoadApiParams(i, '2', row.valueSource)\n                          \"\n                        >\n                        </lib-dropdown>\n                      </div>\n                      <div class=\"col-4\">\n                        <lib-dropdown\n                          *ngIf=\"\n                            (selectedParams[i].length > 0 &&\n                              selectedParams[i][0].value == 'QUESTION') ||\n                            row.valueSource == 'QUESTION'\n                          \"\n                          [items]=\"selecteQuestions\"\n                          [multiple]=\"false\"\n                          [(selectedItems)]=\"selectedParamsInput[i]\"\n                          (selectedItemsChange)=\"\n                            selecteLoadApiParams(i, '3', row.inputValue, true)\n                          \"\n                        >\n                        </lib-dropdown>\n                        <input\n                          *ngIf=\"\n                            (selectedParams[i].length > 0 &&\n                              selectedParams[i][0].value !== 'QUESTION' &&\n                              selectedParams[i][0].value !== 'SEARCH_STRING' &&\n                              selectedParams[i][0].value !== 'SELECTED_VALUES') ||\n                            (selectedParams[i].length === 0 &&\n                              paramCurrentIndex == i &&\n                              row.valueSource !== 'QUESTION' &&\n                              row.valueSource !== 'SEARCH_STRING' &&\n                              row.valueSource !== 'SELECTED_VALUES')\n                          \"\n                          type=\"text\"\n                          maxlength=\"150\"\n                          class=\"header-input\"\n                          (change)=\"\n                            selecteLoadApiParams(i, '3', row.inputValue)\n                          \"\n                          [(ngModel)]=\"row.inputValue\"\n                        />\n                        <div\n                          class=\"d-flex gap-5 form-check-field\"\n                          *ngIf=\"\n                            (selectedParams[i].length > 0 &&\n                              selectedParams[i][0].value ===\n                                'SELECTED_VALUES') ||\n                            (row.valueSource === 'SELECTED_VALUES' &&\n                              paramCurrentIndex == i)\n                          \"\n                        >\n                          <label\n                            [for]=\"'params-single-selected' + i\"\n                            class=\"d-flex gap-1\"\n                            ><input\n                              type=\"radio\"\n                              [name]=\"'params-selected-value' + i\"\n                              [id]=\"'params-single-selected' + i\"\n                              value=\"SINGLE_VALUE\"\n                              [(ngModel)]=\"row.inputValue\"\n                              (change)=\"\n                                selecteLoadApiParams(i, '3', row.inputValue)\n                              \"\n                              [disabled]=\"selectionType == 'MULTIPLE'\"\n                            /><span>Single Value</span></label\n                          >\n                          <label\n                            [for]=\"'params-multiple-selected' + i\"\n                            class=\"d-flex gap-1\"\n                            ><input\n                              type=\"radio\"\n                              [name]=\"'params-selected-value' + i\"\n                              [id]=\"'params-multiple-selected' + i\"\n                              value=\"ARRAY_OF_VALUES\"\n                              [(ngModel)]=\"row.inputValue\"\n                              (change)=\"\n                                selecteLoadApiParams(i, '3', row.inputValue)\n                              \"\n                              [disabled]=\"selectionType == 'MULTIPLE'\"\n                            /><span>Array of Values</span></label\n                          >\n                        </div>\n                      </div>\n                      <div class=\"col-1\">\n                        <img\n                          (click)=\"deleteParameterRow(i)\"\n                          class=\"icon-right\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                    </div>\n                  </div>\n                  <div class=\"table-row header\">\n                    <div class=\"table-head\">\n                      <p class=\"option-heading\">Path Variables</p>\n                    </div>\n                    <div class=\"add-icon\">\n                      <div (click)=\"addPathVariableRow()\">\n                        <img\n                          class=\"icon-field-add\"\n                          src=\"/assets/icons/add-outline-icon.svg\"\n                          alt=\"Add Icon\"\n                        />\n                        <span> Add</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div class=\"col-12\">\n                    <div class=\"row field-heading\">\n                      <div class=\"col-4\">\n                        <p>Name</p>\n                      </div>\n                      <div class=\"col-3\">\n                        <p>Value from</p>\n                      </div>\n                      <div class=\"col-4\">\n                        <p>Value</p>\n                      </div>\n                    </div>\n                    <div\n                      class=\"row headers-div\"\n                      *ngFor=\"let row of pathVariableRows; let i = index\"\n                    >\n                      <div class=\"col-4\">\n                        <input\n                          type=\"text\"\n                          maxlength=\"150\"\n                          class=\"header-input\"\n                          (change)=\"\n                            selecteLoadApiPathVariables(i, '1', row.keyName)\n                          \"\n                          [(ngModel)]=\"row.keyName\"\n                        />\n                      </div>\n                      <div class=\"col-3\">\n                        <lib-dropdown\n                          [placeholder]=\"'Select'\"\n                          [items]=\"pathVariableValueSources\"\n                          [(selectedItems)]=\"selectedPathVariables[i]\"\n                          (selectedItemsChange)=\"\n                            selecteLoadApiPathVariables(i, '2', row.valueSource)\n                          \"\n                        >\n                        </lib-dropdown>\n                      </div>\n                      <div\n                        class=\"col-4\"\n                        *ngIf=\"\n                          (selectedPathVariables[i].length > 0 &&\n                            selectedPathVariables[i][0].label !== 'QUESTION' &&\n                            currentIndex == i) ||\n                          row.valueSource !== 'QUESTION'\n                        \"\n                      >\n                        <lib-dropdown\n                          *ngIf=\"\n                            (selectedPathVariables[i].length > 0 &&\n                              selectedPathVariables[i][0].value ==\n                                'QUESTION') ||\n                            row.valueSource == 'QUESTION'\n                          \"\n                          [items]=\"selecteQuestions\"\n                          [multiple]=\"false\"\n                          [(selectedItems)]=\"selectedPathVariablesInput[i]\"\n                          (selectedItemsChange)=\"\n                            selecteLoadApiPathVariables(\n                              i,\n                              '3',\n                              row.inputValue,\n                              true\n                            )\n                          \"\n                        >\n                        </lib-dropdown>\n                        \n\n                        <input\n                          *ngIf=\"\n                            (selectedPathVariables[i].length > 0 &&\n                            selectedPathVariables[i][0].value !== 'QUESTION' &&\n                            selectedPathVariables[i][0].value !== 'SEARCH_STRING' &&\n                            selectedPathVariables[i][0].value !== 'SELECTED_VALUES') ||\n                            (selectedPathVariables[i].length === 0 &&\n                              headerCurrentIndex == i &&\n                              row.valueSource !== 'QUESTION' &&\n                              row.valueSource !== 'SEARCH_STRING' &&\n                              row.valueSource !== 'SELECTED_VALUES')\n                          \"\n                          type=\"text\"\n                          maxlength=\"150\"\n                          class=\"header-input\"\n                          (change)=\"\n                          selecteLoadApiPathVariables(i, '3', row.inputValue)\n                          \"\n                          [(ngModel)]=\"row.inputValue\"\n                        />\n                        <input\n                          *ngIf=\"\n                            (selectedPathVariables[i].length > 0 &&\n                              selectedPathVariables[i][0].value === 'LOCALE') ||\n                            (row.valueSource === 'LOCALE' &&\n                              headerCurrentIndex == i)\n                          \"\n                          type=\"text\"\n                          maxlength=\"150\"\n                          class=\"header-input\"\n                          (change)=\"\n                            selecteLoadApiPathVariables(i, '3', row.inputValue)\n                          \"\n                          [(ngModel)]=\"row.inputValue\"\n                        />\n                      </div>\n                      <div class=\"col-1\">\n                        <img\n                          (click)=\"deletePathVariablrRow(i)\"\n                          class=\"icon-right\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div class=\"icon-container-bottom d-flex justify-content-between mb-3\">\n              <div class=\"custom-element-id-container\">\n                <div *ngIf=\"customElementId\">\n                  <span>Element ID - {{customElementId}}</span>\n                </div>\n              </div>\n              <div class=\"d-inline-flex\">\n                <button\n                  *ngIf=\"logicBtnShow && !localQuestion?.element?.multiField\"\n                  type=\"button\"\n                  class=\"btn btn-link p-0 mr-50\"\n                  (click)=\"addLogic()\"\n                >\n                  Add Logic\n                </button>\n                <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n                <div class=\"form-check-field\">\n                  <input\n                    type=\"checkbox\"\n                    name=\"required-checkbox\"\n                    [id]=\"\n                      'required' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    [(ngModel)]=\"questionRequired\"\n                    (ngModelChange)=\"required()\"\n                    [attr.data-value]=\"questionRequired\"\n                  />\n                  <label\n                    class=\"form-check-label\"\n                    [for]=\"\n                      'required' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    >Required</label\n                  >\n                </div>\n              </div>\n            </div>\n\n            <div class=\"scoring-container\">\n              <div class=\"scoring-header\">\n                <div class=\"scoring-title\">\n                  <input\n                    type=\"checkbox\"\n                    name=\"required-checkbox\"\n                    class=\"scoring-checkbox\"\n                    [id]=\"\n                      'scoring-checked' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    [(ngModel)]=\"scoringOpted\"\n                    (ngModelChange)=\"addScoring()\"\n                  />\n                  <label\n                    [for]=\"\n                      'scoring-checked' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    >Scoring</label\n                  >\n                </div>\n                <div class=\"toggling-score\" (click)=\"toggleScoreContainer()\">\n                  <img\n                    src=\"assets/icons/down-arrow-gray-icon.svg\"\n                    alt=\"down-arrow-icon\"\n                    *ngIf=\"!scoringExpanded\"\n                    loading=\"lazy\"\n                  />\n                  <img\n                    src=\"assets/icons/upArrow.png\"\n                    alt=\"up-arrow-icon\"\n                    *ngIf=\"scoringExpanded\"\n                    loading=\"lazy\"\n                  />\n                </div>\n              </div>\n\n              <div class=\"scoring-container-body mt-2\" *ngIf=\"scoringExpanded\">\n                <div class=\"default-scoring-container\">\n                  <label>Default Score</label>\n                  <input\n                    type=\"number\"\n                    class=\"form-control default-score-field\"\n                    [(ngModel)]=\"defaultScore\"\n                    (ngModelChange)=\"updateDefaultScore()\"\n                    [disabled]=\"!scoringOpted\"\n                  />\n                </div>\n\n                <div\n                  class=\"scoring-type-title\"\n                >\n                  <input\n                    type=\"checkbox\"\n                    name=\"required-checkbox\"\n                    class=\"scoring-checkbox\"\n                    [id]=\"\n                      'scoring-type-checked' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    [(ngModel)]=\"enableScoringType\"\n                    (ngModelChange)=\"updateEnableScoringType()\"\n                  />\n                  <label\n                    [for]=\"\n                      'scoring-type-checked' +\n                      (question.element ? question.element.id : question.id)\n                    \"\n                    >Enable Scoring Type</label\n                  >\n                </div>\n\n                <div\n                  class=\"custom-score-container mt-4\"\n                  *ngFor=\"let score of customScores; let i = index\"\n                >\n                  <div class=\"row\">\n                    <div [ngClass]=\"enableScoringType ? 'col-8' : 'col-10'\">\n                      <lib-dropdown\n                        *ngIf=\"selectedScoringOptions[i]\"\n                        [placeholder]=\"'Select'\"\n                        [items]=\"filteredScoringOptions\"\n                        [multiple]=\"true\"\n                        [(selectedItems)]=\"selectedScoringOptions[i]\"\n                        (selectedItemsChange)=\"updateScoringOptions(i)\"\n                      ></lib-dropdown>\n                    </div>\n                    <div\n                      [class.col-2]=\"enableScoringType\"\n                      *ngIf=\"enableScoringType\"\n                    >\n                      <lib-dropdown\n                        *ngIf=\"selectedScoringTypes[i]\"\n                        [placeholder]=\"'Select'\"\n                        [items]=\"scoringTypes\"\n                        [multiple]=\"false\"\n                        [(selectedItems)]=\"selectedScoringTypes[i]\"\n                        (selectedItemsChange)=\"updateScoringType(i)\"\n                      ></lib-dropdown>\n                    </div>\n                    <div\n                      class=\"col-2 d-flex justify-content-between align-items-center\"\n                    >\n                      <input\n                        type=\"number\"\n                        class=\"form-control custom-score-field\"\n                        [(ngModel)]=\"score.score\"\n                        (ngModelChange)=\"updateOnJson()\"\n                      />\n                      <img\n                        src=\"/assets/icons/delete-no-outline-icon.svg\"\n                        alt=\"\"\n                        class=\"score-delete-icon\"\n                        (click)=\"deleteScore(i)\"\n                      />\n                    </div>\n                  </div>\n                </div>\n                <div\n                  class=\"score-add-btn-container d-flex justify-content-end mt-5\"\n                >\n                  <div class=\"score-add-icon\" (click)=\"addNewScore()\">\n                    <img\n                      class=\"icon-field-add\"\n                      src=\"/assets/icons/add-outline-icon.svg\"\n                      alt=\"Add Icon\"\n                    />\n                    <span> Add New</span>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n            <div\n              class=\"score-warning-message text-warning mt-3\"\n              *ngIf=\"!scoringOpted\"\n            >\n              {{ scoreWarningMessage }}\n            </div>\n          </ng-container>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!-- lookup Popup -->\n<div class=\"modal-overlay\" [class.show]=\"showlookup\"></div>\n<div class=\"fbModal lookup-popUp\" [class.show]=\"showlookup\">\n  <div class=\"lookup-popup-header\">\n    <h2 class=\"popup-heading\">Lookup table</h2>\n    <img\n      class=\"lookup-close-icon\"\n      (click)=\"closeLookup()\"\n      src=\"/assets/icons/close-sidebar-mark-icon.svg\"\n      alt=\"Close Sidebar Icon\"\n    />\n  </div>\n  <div class=\"lookup-popup-content\">\n    <p>Table Name</p>\n    <div class=\"input-wrapper\">\n      <input\n        type=\"text\"\n        maxlength=\"150\"\n        class=\"form-control\"\n        [ngClass]=\"{ bgColour: !editMode }\"\n         [ngClass]=\"{\n        bgColour: !editMode,\n        'is-invalid': showErrors && !tableName\n      }\"\n        placeholder=\"\"\n        [(ngModel)]=\"tableName\"\n        [readonly]=\"!editMode\"\n      />\n\n\n      <img\n        *ngIf=\"!editMode\"\n        (click)=\"toggleEditMode()\"\n        class=\"icon-right\"\n        src=\"/assets/icons/pen-icon.svg\"\n      />\n    </div>\n    <div *ngIf=\"showErrors && !tableName\" style=\"display: block;\" class=\"invalid-feedback\">\n      Table name is required\n    </div>\n\n    <p class=\"languages\">Selected Languages</p>\n   <div class=\"table-container scrollable\">\n  <div class=\"table-row header\">\n    <div class=\"table-head margin\">Sorting order*</div> <!-- Added asterisk -->\n    <div class=\"table-head margin\">Value*</div> <!-- Added asterisk -->\n    <ng-container *ngFor=\"let language of languages\">\n      <div class=\"table-head margin\">Label ({{ language }})*</div> <!-- Added asterisk -->\n    </ng-container>\n  </div>\n  <div class=\"table-body\">\n    <div class=\"table-row\" *ngFor=\"let row of rows; let i = index\">\n      <div class=\"table-cell\">\n        <input\n          class=\"input-field\"\n          maxlength=\"150\"\n          [ngClass]=\"{ bgColour: !editMode, 'is-invalid': isFieldInvalid(row.sortingOrder) }\"\n          type=\"text\"\n          placeholder=\"Sorting order\"\n          [(ngModel)]=\"row.sortingOrder\"\n          [readonly]=\"!editMode\"\n          pattern=\"[0-9]*\"\n          inputmode=\"numeric\"\n          (keypress)=\"allowOnlyNumbers($event)\"\n          required\n        />\n        <div *ngIf=\"isFieldInvalid(row.sortingOrder)\" class=\"invalid-feedback\">\n          Sorting order is required\n        </div>\n      </div>\n      <div class=\"table-cell\">\n        <input\n          class=\"input-field\"\n          maxlength=\"150\"\n          [ngClass]=\"{ bgColour: !editMode, 'is-invalid': isFieldInvalid(row.value) }\"\n          type=\"text\"\n          placeholder=\"value\"\n          [(ngModel)]=\"row.value\"\n          [readonly]=\"!editMode\"\n          required\n        />\n        <div *ngIf=\"isFieldInvalid(row.value)\" class=\"invalid-feedback\">\n          Value is required\n        </div>\n      </div>\n      <ng-container *ngFor=\"let language of languages; let j = index\">\n        <div class=\"table-cell\">\n          <input\n            class=\"input-field\"\n            maxlength=\"150\"\n            [ngClass]=\"{ bgColour: !editMode, 'is-invalid': isTranslationInvalid(row.translations, language) }\"\n            type=\"text\"\n            placeholder=\"Label\"\n            [value]=\"getTranslationForLanguage(row.translations, language)\"\n            (input)=\"\n              updateTranslationForLanguage(\n                $event,\n                row.translations,\n                language\n              )\n            \"\n            [readonly]=\"!editMode\"\n            required\n          />\n          <div *ngIf=\"isTranslationInvalid(row.translations, language)\" class=\"invalid-feedback\">\n            Label is required\n          </div>\n        </div>\n      </ng-container>\n      <div *ngIf=\"editMode\" class=\"col-1\">\n        <img\n          (click)=\"deleteRow(i)\"\n          class=\"delete-icon\"\n          src=\"/assets/icons/delete-icon.svg\"\n          alt=\"Delete Icon\"\n        />\n      </div>\n    </div>\n  </div>\n\n  <div\n    (click)=\"addRow()\"\n    *ngIf=\"editMode\"\n    class=\"d-flex pad justify-content-end\"\n  >\n    <img src=\"/assets/icons/add-criteria-icon.svg\" class=\"icon-field-add\" />\n  </div>\n</div>\n    <div *ngIf=\"editMode\" class=\"lookup-popup-buttons\">\n      <button class=\"save-button\" (click)=\"save()\">Save</button>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\">\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img\n        src=\"/assets/icons/close-sidebar-mark-icon.svg\"\n        (click)=\"hintOpened()\"\n        class=\"svg-model\"\n      />\n    </div>\n    <div class=\"fbModalTitle\">Add Hint</div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input\n        class=\"appearanceInput\"\n        type=\"text\"\n        placeholder=\"Type here...\"\n        [(ngModel)]=\"hintText\"\n        (ngModelChange)=\"jsonUpdation('hint')\"\n        maxlength=\"150\"\n      />\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn\">\n        <button type=\"button\" (click)=\"hint()\">OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import {\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\n@Component({\n  selector: 'lib-textbox',\n  templateUrl: './textbox.component.html',\n  styleUrls: ['./textbox.component.scss'],\n})\nexport class TextboxComponent {\n  @Input() question: any = {};\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  @Input() logicBtnShow: boolean = true;\n  @Input() inSubForm: boolean = false;\n  @Input() pages: any = [];\n  @Input() pageId: string = '';\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  testElementName: string = '';\n  inputQuestion: string = '';\n  questionRequired!: boolean;\n  showDefaultValue!: boolean;\n  disableEdit!: boolean;\n  defaultValue: string = '';\n  hintText: string = '';\n  childLogics: any = [];\n  data: string = '';\n  hintOpen: boolean = false;\n  isOpen: boolean = true;\n  isMenuOpen: boolean = false;\n  customElementId: string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  constructor(\n    private dataservice: DataService,\n    public dialog: MatDialog,\n    private sharedService: SharedService\n  ) {\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId =\n        question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId =\n        this.question.id ||\n        this.question.element?.id ||\n        this.question?.formElement?.id;\n      this.isMenuOpen = openId === myId;\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n\n  onFocus() {\n    this.selectedQuestionId =\n      this.question.id ||\n      this.question.element?.id ||\n      this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  \n  ngOnInit() {\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n  valueAssigned() {\n    this.inputQuestion =\n      this.question.element?.question || this.question.question;\n    this.customElementId =\n      this.question.element?.customElementId || this.question.customElementId;\n    this.questionRequired =\n      this.question.element?.required || this.question.required;\n    this.hintText = this.question.element?.hint || this.question.hint;\n    this.childLogics =\n      this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n    if (this.question.element && this.question.element.defaultValue) {\n      this.defaultValue = this.question.element.defaultValue;\n      this.disableEdit = this.question.element.disableEdit;\n      this.showDefaultValue = true;\n    } else if (this.question && this.question.defaultValue) {\n      this.defaultValue = this.question.defaultValue;\n      this.disableEdit = this.question.disableEdit;\n      this.showDefaultValue = true;\n    }\n  }\n  hint() {\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (\n        translation.elementId == this.selectedQuestionId &&\n        translation.attribute == 'HELP_TEXT' &&\n        translation.language === 'eng'\n      ) {\n        translation.translatedText = this.hintText;\n        if (this.question.element) {\n          this.question.element.hint = this.hintText;\n        } else {\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n  }\n  jsonUpdation(type?: string) {\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n      this.question.element.defaultValue = this.defaultValue;\n    } else {\n      this.question.question = this.inputQuestion;\n      this.question.defaultValue = this.defaultValue;\n    }\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (type === 'hint') {\n        if (\n          translation.elementId === this.selectedQuestionId &&\n          translation.attribute === 'HELP_TEXT' &&\n          translation.language === 'eng'\n        ) {\n          translation.translatedText = this.hintText;\n        }\n      } else {\n        if (\n          translation.elementId === this.selectedQuestionId &&\n          translation.attribute === 'NAME'\n        ) {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n    if (this.defaultValue == '') {\n      this.disableEdit = false;\n      this.toggleEditValue();\n    }\n  }\n  required() {\n    if (this.question.element)\n      this.question.element.required = this.questionRequired;\n    else this.question.required = this.questionRequired;\n  }\n\n  toggleDefaultValue() {\n    if (!this.showDefaultValue) {\n      this.defaultValue = '';\n      this.disableEdit = false;\n      if ('question' in (this.question.element || {})) {\n        this.question.element.defaultValue = '';\n        this.question.element.disableEdit = this.disableEdit;\n      } else {\n        this.question.defaultValue = '';\n        this.question.disableEdit = this.disableEdit;\n      }\n    }\n  }\n\n  toggleEditValue() {\n    if (this.question.element)\n      this.question.element.disableEdit = this.disableEdit;\n    else this.question.disableEdit = this.disableEdit;\n  }\n\n  deleteChildQuestions(event: any) {\n    this.dataservice.sendData(this.question.id);\n  }\n  addLogic() {\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id: any) {\n    this.childLogics = this.childLogics.filter((item: any) => item.id != id);\n  }\n  openConfirmationModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader: 'Are you sure ?',\n      message: 'Do you want to delete this question?',\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(\n      ConfirmationModalComponent,\n      dialogConfig\n    );\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n        this.dataservice.sendPages(this.pages);\n      }\n    });\n  }\n  hintOpened() {\n    this.hintOpen = !this.hintOpen;\n  }\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName() {\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('text-box', id);\n      if (this.question.element) {\n        this.question.element.testElementName = this.testElementName;\n      } else {\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId =\n      this.question.id ||\n      this.question.element?.id ||\n      this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n    const clickedInside = (event.target as HTMLElement).closest(\n      '.element-menu-action-button'\n    );\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId =\n          this.question.element?.customElementId ||\n          this.question.customElementId;\n      }\n    });\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\"   [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\"\n    [attr.name]=\"testElementName\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\"><!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/text-box-icon.svg\" class=\"icon-style\">\n                Text Box\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n            <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n            <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\"  maxlength=\"150\"  (focus)=\"onFocus()\" \n            [attr.data-for]=\"testElementName\">\n          </div>\n\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\" >\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\" >\n              <div class=\"form-check mr-50\" *ngIf=\"!question?.element?.multiField && !inSubForm\">\n                <input type=\"checkbox\" name=\"showDefaultValue-checkbox\" [id]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"showDefaultValue\" (ngModelChange)=\"toggleDefaultValue()\"  [attr.data-value]=\"showDefaultValue\">\n                <label class=\"form-check-label\" [for]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\">Default Value</label>\n              </div>\n              <button *ngIf=\"logicBtnShow  && !question?.element?.multiField\" type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"addLogic()\">Add Logic</button>\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n\n          <div class=\"mt-4\" *ngIf=\"!question?.element?.multiField && showDefaultValue && !inSubForm\">\n            <label class=\"fontFamily\" [for]=\"'default'+(question.element?question.element.id:question.id)\">Default Value</label>\n            <input type=\"text\" [id]=\"'default'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"defaultValue\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Default Value\"  maxlength=\"150\"  (focus)=\"onFocus()\" \n            >\n            <div class=\"w-100 icon-container-bottom\" >\n              <div class=\"d-inline-flex\">\n                <div class=\"form-check\">\n                  <input type=\"checkbox\" name=\"disableEdit-checkbox\" [id]=\"'disableEdit'+(question.element?question.element.id:question.id)\"\n                  [(ngModel)]=\"disableEdit\" (ngModelChange)=\"toggleEditValue()\"  [attr.data-value]=\"disableEdit\"\n                  [disabled]=\"defaultValue==''\">\n                  <label class=\"form-check-label\" [for]=\"'disableEdit'+(question.element?question.element.id:question.id)\">Disable Edit</label>\n                </div>\n              </div>\n              \n            </div>\n          </div>\n\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\" (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-file-picker-fields',\n  templateUrl: './file-picker-fields.component.html',\n  styleUrls: ['./file-picker-fields.component.scss']\n})\nexport class FilePickerFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  testElementName: string = '';\n  constructor(private dataservice:DataService,public dialog: MatDialog,private sharedService: SharedService){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit(){\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n  }\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n    } else {\n      this.question.question = this.inputQuestion;\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('file-picker', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img class=\"icon-style\" src=\"/assets/icons/file-picker-icon.svg\" alt=\"File Upload Icon\">\n                File Picker\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n                  <div *ngIf=\"question?.element?.multiField\">\n                    <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                      <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                    </div>\n                    <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                      <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div *ngIf=\"!question?.element?.multiField\">\n            <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n            <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n            </div>\n            <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n              <div class=\"custom-element-id-container\">\n                <div *ngIf=\"customElementId\">\n                  <span>Element ID - {{customElementId}}</span>\n                </div>\n              </div>\n              <div class=\"d-inline-flex\">\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n                <div class=\"form-check\">\n                  <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                  [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                  <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"fbModal\" *ngIf=\"hintOpen\" >\n    <div class=\"fbModalDialog\">\n      <div class=\"fbModalClose\">\n        <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n      </div>\n      <div class=\"fbModalTitle\">\n        Add Hint\n      </div>\n      <div class=\"\">\n        <p>Hint</p>\n        <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n        [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n      </div>\n      <div class=\"hintModalFooter\">\n        <div class=\"footer-btn \">\n          <button type=\"button\"  (click)=\"hint()\" >OK</button>\n        </div>\n      </div>\n    </div>\n  </div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\n@Component({\n  selector: 'lib-signature-fields',\n  templateUrl: './signature-fields.component.html',\n  styleUrls: ['./signature-fields.component.scss']\n})\nexport class SignatureFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  constructor(private dataservice:DataService,public dialog: MatDialog){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    })\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  ngOnInit(){\n    this.valueAssigned()\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n  }\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestionId===question.id || selectedQuestionId===question.element?.id}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img class=\"icon-style\" src=\"/assets/icons/signature-icon.svg\" alt=\"Signature Icon\">\n                Signature\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div  class=\"action-button\" data-title=\"copy\" (click)=\"copyQuestion()\">\n                  <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                </div>\n                <div  class=\"action-button\" data-title=\"Hint\" (click)=\"hintOpened()\">\n                  <img class=\"icon-right\" src=\"/assets/icons/add-hint-icon.svg\" alt=\"Hint Icon\">\n                </div>\n                <div  class=\"action-button\" data-title=\"Delete\"  (click)=\"openConfirmationModal()\">\n                  <img class=\"icon-right\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n          <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n          <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n          [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom\">\n            <div class=\"d-inline-flex\">\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-icon.svg\" alt=\"Close Icon\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\"  (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-slider-fields',\n  templateUrl: './slider-fields.component.html',\n  styleUrls: ['./slider-fields.component.scss']\n})\nexport class SliderFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  testElementName: string = '';\n  constructor(private dataservice:DataService,public dialog: MatDialog,private sharedService: SharedService){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit(){\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n  }\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n    } else {\n      this.question.question = this.inputQuestion;\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('slider', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\"  [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img class=\"icon-style\" src=\"/assets/icons/slider-round-icon.svg\" alt=\"Slider Icon\" class=\"icon-style\">\n                Slider\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n          <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n          <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n          [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\">\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-icon.svg\" alt=\"Close Icon\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\"  (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\n@Component({\n  selector: 'lib-location-fields',\n  templateUrl: './location-fields.component.html',\n  styleUrls: ['./location-fields.component.scss']\n})\nexport class LocationFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  constructor(private dataservice:DataService,public dialog: MatDialog){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    })\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  ngOnInit(){\n    this.valueAssigned()\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n  }\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestionId===question.id || selectedQuestionId===question.element?.id}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/location-icon.svg\" alt=\"Location Icon\" class=\"icon-style\">\n                Location\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div  class=\"action-button\" data-title=\"copy\" (click)=\"copyQuestion()\">\n                  <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                </div>\n                <div class=\"action-button\" data-title=\"Hint\" (click)=\"hintOpened()\">\n                <img class=\"icon-right\" src=\"/assets/icons/add-hint-icon.svg\" alt=\"Hint Icon\">\n                </div>\n                <div class=\"action-button\" data-title=\"Delete\" (click)=\"openConfirmationModal()\">\n                <img class=\"icon-right\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n          <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n          <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n          [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\"  class=\"icon-container-bottom\">\n            <div class=\"d-inline-flex\">\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\"  (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-icon.svg\" alt=\"Close Icon\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\"  (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-toggle-switch-fields',\n  templateUrl: './toggle-switch-fields.component.html',\n  styleUrls: ['./toggle-switch-fields.component.scss']\n})\nexport class ToggleSwitchFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  testElementName: string = '';\n  constructor(private dataservice:DataService,public dialog: MatDialog,private sharedService: SharedService){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    })\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit(){\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n  }\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n    } else {\n      this.question.question = this.inputQuestion;\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('toggle', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/toggle-switch-icon.svg\" class=\"icon-style\">\n                Toggle Switch\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n            <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n            <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\">\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\" (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-text-area-fields',\n  templateUrl: './text-area-fields.component.html',\n  styleUrls: ['./text-area-fields.component.scss']\n})\nexport class TextAreaFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() inSubForm:boolean=false;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  constructor(private dataservice:DataService,public dialog: MatDialog,private sharedService: SharedService){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    })\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  testElementName: string = '';\n  showDefaultValue!:boolean;\n  disableEdit!:boolean;\n  defaultValue: string = '';\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit(){\n    this.valueAssigned()\n    this.generateFieldName();\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n    if(this.question.element && this.question.element.defaultValue){\n      this.defaultValue = this.question.element.defaultValue;\n      this.disableEdit = this.question.element.disableEdit;\n      this.showDefaultValue = true;\n    }else if(this.question && this.question.defaultValue){\n      this.defaultValue = this.question.defaultValue;\n      this.disableEdit = this.question.disableEdit;\n      this.showDefaultValue = true;\n    }\n  }\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n    onFocus() {\n      this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.selectedQuestion();\n      this.dataservice.sendFocusQuestion(this.question);\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n      this.question.element.defaultValue = this.defaultValue;\n    } else {\n      this.question.question = this.inputQuestion;\n      this.question.defaultValue = this.defaultValue;\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n    if(this.defaultValue==''){\n      this.disableEdit = false;\n      this.toggleEditValue();\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  toggleDefaultValue(){\n    if(!this.showDefaultValue){\n      this.defaultValue = '';\n      this.disableEdit = false;\n      if ('question' in (this.question.element || {})) {\n        this.question.element.defaultValue = '';\n        this.question.element.disableEdit= this.disableEdit;\n      } else {\n        this.question.defaultValue = '';\n        this.question.disableEdit=this.disableEdit;\n      }\n    }\n  }\n\n  toggleEditValue(){\n    if(this.question.element)\n      this.question.element.disableEdit= this.disableEdit;\n    else\n      this.question.disableEdit=this.disableEdit;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('text-area', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/text-area-icon.svg\" class=\"icon-style\">\n                Text Area\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n            <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n            <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\">\n              <div class=\"form-check mr-50\" *ngIf=\"!question?.element?.multiField && !inSubForm\">\n                <input type=\"checkbox\" name=\"showDefaultValue-checkbox\" [id]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"showDefaultValue\" (ngModelChange)=\"toggleDefaultValue()\"  [attr.data-value]=\"showDefaultValue\">\n                <label class=\"form-check-label\" [for]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\">Default Value</label>\n              </div>\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n          <div class=\"mt-4\" *ngIf=\"!question?.element?.multiField && showDefaultValue && !inSubForm\">\n            <label class=\"fontFamily\" [for]=\"'default'+(question.element?question.element.id:question.id)\">Default Value</label>\n            <textarea type=\"text\" [id]=\"'default'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"defaultValue\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Default Value\"  maxlength=\"150\"  (focus)=\"onFocus()\" \n            ></textarea>\n            <div class=\"w-100 icon-container-bottom\" >\n              <div class=\"d-inline-flex\">\n                <div class=\"form-check\">\n                  <input type=\"checkbox\" name=\"disableEdit-checkbox\" [id]=\"'disableEdit'+(question.element?question.element.id:question.id)\"\n                  [(ngModel)]=\"disableEdit\" (ngModelChange)=\"toggleEditValue()\"  [attr.data-value]=\"disableEdit\"\n                  [disabled]=\"defaultValue==''\">\n                  <label class=\"form-check-label\" [for]=\"'disableEdit'+(question.element?question.element.id:question.id)\">Disable Edit</label>\n                </div>\n              </div>\n              \n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"fbModal\" *ngIf=\"hintOpen\" >\n    <div class=\"fbModalDialog\">\n      <div class=\"fbModalClose\">\n        <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n      </div>\n      <div class=\"fbModalTitle\">\n        Add Hint\n      </div>\n      <div class=\"\">\n        <p>Hint</p>\n        <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n        [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n      </div>\n      <div class=\"hintModalFooter\">\n        <div class=\"footer-btn \">\n          <button type=\"button\" (click)=\"hint()\" >OK</button>\n        </div>\n      </div>\n    </div>\n  </div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-rich-text-editor-fields',\n  templateUrl: './rich-text-editor-fields.component.html',\n  styleUrls: ['./rich-text-editor-fields.component.scss']\n})\nexport class RichTextEditorFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() inSubForm:boolean=false;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  testElementName: string = '';\n  constructor(private dataservice:DataService,public dialog: MatDialog,private sharedService: SharedService){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  showDefaultValue!:boolean;\n  disableEdit!:boolean;\n  defaultValue: string = '';\n  editor: any;\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit(){\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n    if(this.question.element && this.question.element.defaultValue){\n      this.defaultValue = this.question.element.defaultValue;\n      this.disableEdit = this.question.element.disableEdit;\n      this.showDefaultValue = true;\n    }else if(this.question && this.question.defaultValue){\n      this.defaultValue = this.question.defaultValue;\n      this.disableEdit = this.question.disableEdit;\n      this.showDefaultValue = true;\n    }\n  }\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n      this.question.element.defaultValue = this.defaultValue;\n    } else {\n      this.question.question = this.inputQuestion;\n      this.question.defaultValue = this.defaultValue;\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n    if(this.defaultValue==null){\n      this.disableEdit = false;\n      this.toggleEditValue();\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  toggleDefaultValue(){\n    if(!this.showDefaultValue){\n      this.defaultValue = '';\n      this.disableEdit = false;\n      if ('question' in (this.question.element || {})) {\n        this.question.element.defaultValue = '';\n        this.question.element.disableEdit= this.disableEdit;\n      } else {\n        this.question.defaultValue = '';\n        this.question.disableEdit=this.disableEdit;\n      }\n    }\n  }\n\n  toggleEditValue(){\n    if(this.question.element)\n      this.question.element.disableEdit= this.disableEdit;\n    else\n      this.question.disableEdit=this.disableEdit;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('rich-text', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  editorCreated(editorInstance: any) {\n    this.editor = editorInstance;\n    this.updateEditorContent(this.defaultValue)\n  }\n\n  // When you receive data from API\n  updateEditorContent(content: string) {\n    if (this.editor) {\n      // this.editor.clipboard.dangerouslyPasteHTML(content);\n      const delta = this.editor.clipboard.convert(content);\n      this.editor.setContents(delta, 'silent');\n    }\n    this.defaultValue = content;\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/rich-text-editor-icon.svg\" class=\"icon-style\">\n                Rich Text Editor\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n            <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n            <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\"   placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\">\n              <div class=\"form-check mr-50\" *ngIf=\"!question?.element?.multiField && !inSubForm\">\n                <input type=\"checkbox\" name=\"showDefaultValue-checkbox\" [id]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"showDefaultValue\" (ngModelChange)=\"toggleDefaultValue()\"  [attr.data-value]=\"showDefaultValue\">\n                <label class=\"form-check-label\" [for]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\">Default Value</label>\n              </div>\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\"\n                [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n          <div class=\"mt-4\" *ngIf=\"!question?.element?.multiField && showDefaultValue && !inSubForm\">\n            <label class=\"fontFamily\" [for]=\"'default'+(question.element?question.element.id:question.id)\">Default Value</label>\n            <quill-editor \n              [id]=\"'default'+(question.element?question.element.id:question.id)\"\n              [(ngModel)]=\"defaultValue\"\n              (ngModelChange)=\"jsonUpdation()\"\n              (onEditorCreated)=\"editorCreated($event)\"\n              class=\"editor w-100\"\n            ></quill-editor>\n            <div class=\"w-100 icon-container-bottom\" >\n              <div class=\"d-inline-flex\">\n                <div class=\"form-check\">\n                  <input type=\"checkbox\" name=\"disableEdit-checkbox\" [id]=\"'disableEdit'+(question.element?question.element.id:question.id)\"\n                  [(ngModel)]=\"disableEdit\" (ngModelChange)=\"toggleEditValue()\"  [attr.data-value]=\"disableEdit\"\n                  [disabled]=\"defaultValue=='' || defaultValue==null\">\n                  <label class=\"form-check-label\" [for]=\"'disableEdit'+(question.element?question.element.id:question.id)\">Disable Edit</label>\n                </div>\n              </div>\n              \n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\"  (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-password-fields',\n  templateUrl: './password-fields.component.html',\n  styleUrls: ['./password-fields.component.scss']\n})\nexport class PasswordFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  testElementName: string = '';\n  constructor(private dataservice:DataService,public dialog: MatDialog,private sharedService: SharedService){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit(){\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n  }\n\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n    } else {\n      this.question.question = this.inputQuestion;\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('password', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/password-icon.svg\" class=\"icon-style\">\n                Password\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n            <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n            <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\"  placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\">\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\"  (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { DataService } from './data.service';\nimport { AuthService } from './auth.service';\n\ninterface CountryData {\n  value: string;\n  label: string;\n  image: string;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CountryService {\n  private apiUrl: string = '';\n  header: any = {};\n\n  constructor(\n    private http: HttpClient, \n    private dataService: DataService,\n    private authService: AuthService\n  ) {\n    this.dataService.apiUrl$.subscribe((data) => {\n      this.apiUrl = data;\n    });\n\n    this.authService.header$.subscribe((data) => {\n      this.header = data;\n    });\n  }\n\n  loadCountryDetails(page: number, size: number, searchKey: string): Observable<any> {\n    return this.http.get<any>(`${this.apiUrl}/api/public/json/country?page=${page}&size=${size}&searchKey=${encodeURIComponent(searchKey)}`);\n  }\n\n\n  processCountryDetails(data: any[]): { value: string; label: string }[] {\n    const countryDetails: { value: string; label: string }[] = [];\n  \n    data.forEach((country) => {\n      const name = country.name || '';\n      const isdRoot = country.isd?.root || '';\n      const isdSuffixes = country.isd?.suffixes || [];\n  \n      if (isdRoot && isdSuffixes.length > 0) {\n        isdSuffixes.forEach((suffix: string) => {\n          const isdCode = `${isdRoot}${suffix}`;\n          countryDetails.push({\n            value: isdCode,\n            label: isdCode,\n          });\n        });\n      } else {\n        const fallbackCode = isdRoot || country.code || '';\n        countryDetails.push({\n          value: fallbackCode,\n          label: fallbackCode,\n        });\n      }\n    });\n  \n    // Remove any where both value and label are empty\n    return countryDetails.filter(\n      (item) => item.value.trim() !== '' || item.label.trim() !== ''\n    );\n  }\n\n  getCurrencySymbol(){\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser, \n    });\n    return this.http.get<any>(this.apiUrl+ '/api/public/currencies',{\n      headers\n    });\n  }\n}\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ApiService } from '../../services/api.service';\nimport { debounceTime, distinctUntilChanged, Subject, Subscription } from 'rxjs';\nimport { CountryService } from '../../services/country.service';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\ninterface CountryData {\n  value: string;\n  label: string;\n  image: string;\n}\n@Component({\n  selector: 'lib-mobile-fields',\n  templateUrl: './mobile-fields.component.html',\n  styleUrls: ['./mobile-fields.component.scss']\n})\nexport class MobileFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() inSubForm:boolean=false;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  constructor(\n    private dataservice:DataService,\n    public dialog: MatDialog,\n    private apiService: ApiService,\n    private countryService:CountryService,\n    private sharedService: SharedService\n  ){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  testElementName: string = '';\n  showDefaultValue!:boolean;\n  disableEdit!:boolean;\n  defaultValue: string = '';\n  currentPage: number = 0;\n  lastPage: boolean = false;\n  isFirstPage: boolean = false;\n  countries: any[] = [];\n  allCountries: any[] = [];\n  mobileNumber: string = '';\n  selectedCountry: CountryData[] = [];\n  searchSubject: Subject<string> = new Subject<string>();\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit(){\n    this.valueAssigned();\n    this.generateFieldName();\n    this.searchSubject\n    .pipe(\n      debounceTime(500), \n      distinctUntilChanged()\n    )\n    .subscribe((searchTerm) => {\n      this.search(searchTerm);\n    });\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n    if(this.question.element && this.question.element.defaultValue){\n      this.getCountry(0, 30, '');\n      this.disableEdit = this.question.element.disableEdit;\n      this.showDefaultValue = true;\n    }else if(this.question && this.question.defaultValue){\n      this.getCountry(0, 30, '');\n      this.showDefaultValue = true;\n    }\n  }\n\n  initializeDefaultValue() {\n    const [countryCode, mobileNumber] = this.question?.element\n      ? this.question.element.defaultValue.split(' ')\n      : this.question.defaultValue.split(' ');\n  \n    this.mobileNumber = mobileNumber || '';\n  \n    let matchedCountry = this.countries.find(\n      (country) => country.value === countryCode\n    );\n  \n    if (matchedCountry) {\n      // Found in the currently loaded countries\n      this.selectedCountry = [matchedCountry];\n    } else if (countryCode) {\n      // Not found? Fetch from API directly\n      this.countryService.loadCountryDetails(0, 1, countryCode).subscribe((data) => {\n        const extraCountries = this.countryService.processCountryDetails(data.result.content);\n        matchedCountry = extraCountries.find(\n          (country) => country.value === countryCode\n        );\n        if (matchedCountry) {\n          // Add to dropdown list if missing\n          if (!this.countries.some((c) => c.value === matchedCountry!.value)) {\n            this.countries = [matchedCountry, ...this.countries];\n          }\n          // Preselect it\n          this.selectedCountry = [matchedCountry];\n        }\n      });\n    }\n  }\n\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n    } else {\n      this.question.question = this.inputQuestion;\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  toggleDefaultValue(){\n    if(!this.showDefaultValue){\n      this.mobileNumber = '';\n      this.selectedCountry = []\n      this.disableEdit = false;\n      if ('question' in (this.question.element || {})) {\n        this.question.element.defaultValue = '';\n        this.question.element.disableEdit= this.disableEdit;\n      } else {\n        this.question.defaultValue = '';\n        this.question.disableEdit=this.disableEdit;\n      }\n    }else{\n      this.search('');\n    }\n  }\n\n  toggleEditValue(){\n    if(this.question.element)\n      this.question.element.disableEdit= this.disableEdit;\n    else\n      this.question.disableEdit=this.disableEdit;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('mobile', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  getCountry(page: number, size: number, key: string, isSearch: boolean = false) {\n    this.apiService.getContries(page, size, key).subscribe((data) => {\n  \n      this.lastPage = data.result.last;\n      this.isFirstPage = data.result.first;\n  \n      let newCountries = this.countryService.processCountryDetails(data.result.content);\n  \n      if (isSearch) {\n        // For search, replace the list completely\n        this.countries = newCountries;\n      } else {\n        // Infinite scroll merge logic\n        if (this.currentPage > 0) {\n          this.countries = [\n            ...this.countries,\n            ...newCountries.filter(item => !this.countries.some((existing: any) => existing.value === item.value))\n          ];\n        } else {\n          this.countries = [\n            ...newCountries.filter(item => !this.countries.some((existing: any) => existing.value === item.value)),\n            ...this.countries\n          ];\n        }\n      }\n  \n      if(!isSearch){\n        this.initializeDefaultValue();\n      }\n    });\n  }\n\n\n  getNextSetOfItems(event: any) {\n    const element = event.target;\n    if (!this.lastPage) {\n      if (Math.floor(element.scrollHeight - element.scrollTop) <= element.clientHeight) {\n        this.loadMoreData();\n      }\n    }\n    if (!this.isFirstPage && element.scrollTop <= 150) {\n      this.loadPreviousData();\n    }\n  }\n\n  loadMoreData() {\n    setTimeout(() => {\n      this.currentPage++;\n      if (this.currentPage >= 0) {\n        this.getCountry(this.currentPage, 30, \"\");\n      }\n    }, 0);\n  }\n\n  loadPreviousData() {\n    setTimeout(() => {\n      this.currentPage--;\n      if (this.currentPage >= 0) {\n        this.getCountry(this.currentPage, 30, \"\");\n      }\n    }, 0);\n  }\n\n  search(searchTerm: any) {\n    this.currentPage = 0; // reset pagination for search\n    this.getCountry(0, 30, searchTerm, true);\n  }\n\n  onInput(event: Event) {\n    const input = event.target as HTMLInputElement;\n  \n    // Regular expression to allow only numbers and multiple hyphens, but ensure only one hyphen between numbers\n    const regex = /^(\\d+)(-\\d+)*$/;\n  \n    if (!regex.test(input.value)) {\n      // Remove invalid characters\n      input.value = input.value.replace(/[^\\d-]/g, '');\n  \n      // Ensure only one hyphen is present between numbers\n      input.value = input.value\n        .split('-')\n        .filter((segment, index, array) => segment || index === 0 || index === array.length - 1)\n        .join('-');\n    }\n  \n    // Update the model\n    this.mobileNumber = input.value;\n    this.updateDefaultValue();\n    \n    if(this.mobileNumber==''){\n      this.disableEdit = false;\n      this.toggleEditValue();\n    }\n  }\n\n  onCountryChange(event:any) {\n    this.selectedCountry = event;\n    this.selectedCountry = [...this.selectedCountry];\n    this.updateDefaultValue();\n    this.getCountry(0, 30, '');\n  }\n\n  updateDefaultValue() {  \n      if (this.selectedCountry.length > 0 && this.mobileNumber) {\n        const countryCode = this.selectedCountry[0].value;\n        this.question.defaultValue = `${countryCode} ${this.mobileNumber}`;\n      }\n  }\n  \n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n  \n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/mobile-icon.svg\">\n                Mobile\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n            <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n            <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\">\n              <div class=\"form-check mr-50\" *ngIf=\"!question?.element?.multiField && !inSubForm\">\n                <input type=\"checkbox\" name=\"showDefaultValue-checkbox\" [id]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"showDefaultValue\" (ngModelChange)=\"toggleDefaultValue()\"  [attr.data-value]=\"showDefaultValue\">\n                <label class=\"form-check-label\" [for]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\">Default Value</label>\n              </div>\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n          <div class=\"mt-4\" *ngIf=\"!question?.element?.multiField && showDefaultValue && !inSubForm\">\n            <label class=\"fontFamily\" [for]=\"'default'+(question.element?question.element.id:question.id)\">Default Value</label>\n            <ng-container>\n              <div class=\"input-group \">\n                <div class=\"col-xs-5 col-5 col-md-3 px-0 pe-2 ps-2\">\n                  <lib-dropdown\n                    [items]=\"countries\"\n                    [multiple]=\"false\"\n                    [(selectedItems)]=\"selectedCountry\"\n                    (selectedItemsChange)=\"onCountryChange($event)\"\n                    (onDropdownScroll)=\"getNextSetOfItems($event)\"\n                    (onSearch)=\"search($event)\"\n                  ></lib-dropdown>\n                </div>\n                <input\n                  type=\"text\"\n                  class=\"form-control col-xs-7 col-7 col-md-9 mobileField\"\n                  aria-label=\"Mobile Number\"\n                  [(ngModel)]=\"mobileNumber\"\n                  (input)=\"onInput($event)\"\n                />\n              </div>\n              \n            </ng-container>\n            <div class=\"w-100 icon-container-bottom mt-3\" >\n              <div class=\"d-inline-flex\">\n                <div class=\"form-check\">\n                  <input type=\"checkbox\" name=\"disableEdit-checkbox\" [id]=\"'disableEdit'+(question.element?question.element.id:question.id)\"\n                  [(ngModel)]=\"disableEdit\" (ngModelChange)=\"toggleEditValue()\"  [attr.data-value]=\"disableEdit\"\n                  [disabled]=\"mobileNumber==''\">\n                  <label class=\"form-check-label\" [for]=\"'disableEdit'+(question.element?question.element.id:question.id)\">Disable Edit</label>\n                </div>\n              </div>\n              \n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\"  (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-url-fields',\n  templateUrl: './url-fields.component.html',\n  styleUrls: ['./url-fields.component.scss']\n})\nexport class UrlFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() inSubForm:boolean=false;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  constructor(private dataservice:DataService,public dialog: MatDialog,private sharedService: SharedService){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    })\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  testElementName: string = '';\n  showDefaultValue!:boolean;\n  disableEdit!:boolean;\n  defaultValue: string = '';\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit(){\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n    if(this.question.element && this.question.element.defaultValue){\n      this.defaultValue = this.question.element.defaultValue;\n      this.disableEdit = this.question.element.disableEdit;\n      this.showDefaultValue = true;\n    }else if(this.question && this.question.defaultValue){\n      this.defaultValue = this.question.defaultValue;\n      this.disableEdit = this.question.disableEdit;\n      this.showDefaultValue = true;\n    }\n  }\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n      this.question.element.defaultValue = this.defaultValue;\n    } else {\n      this.question.question = this.inputQuestion;\n      this.question.defaultValue = this.defaultValue;\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n    if(this.defaultValue==''){\n      this.disableEdit = false;\n      this.toggleEditValue();\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n\n  toggleDefaultValue(){\n    if(!this.showDefaultValue){\n      this.defaultValue = '';\n      this.disableEdit = false;\n      if ('question' in (this.question.element || {})) {\n        this.question.element.defaultValue = '';\n        this.question.element.disableEdit= this.disableEdit;\n      } else {\n        this.question.defaultValue = '';\n        this.question.disableEdit=this.disableEdit;\n      }\n    }\n  }\n\n  toggleEditValue(){\n    if(this.question.element)\n      this.question.element.disableEdit= this.disableEdit;\n    else\n      this.question.disableEdit=this.disableEdit;\n  }\n\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('url', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img  src=\"assets/icons/url-icon.svg\" alt =\"url-icon\" class=\"icon-style\">\n                URL\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n            <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n            <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\">\n              <div class=\"form-check mr-50\" *ngIf=\"!question?.element?.multiField && !inSubForm\">\n                <input type=\"checkbox\" name=\"showDefaultValue-checkbox\" [id]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"showDefaultValue\" (ngModelChange)=\"toggleDefaultValue()\"  [attr.data-value]=\"showDefaultValue\">\n                <label class=\"form-check-label\" [for]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\">Default Value</label>\n              </div>\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n\n          <div class=\"mt-4\" *ngIf=\"!question?.element?.multiField && showDefaultValue && !inSubForm\">\n            <label class=\"fontFamily\" [for]=\"'default'+(question.element?question.element.id:question.id)\">Default Value</label>\n            <input type=\"text\" [id]=\"'default'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"defaultValue\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Default Value\"  maxlength=\"150\"  (focus)=\"onFocus()\" \n            >\n            <div class=\"w-100 icon-container-bottom\" >\n              <div class=\"d-inline-flex\">\n                <div class=\"form-check\">\n                  <input type=\"checkbox\" name=\"disableEdit-checkbox\" [id]=\"'disableEdit'+(question.element?question.element.id:question.id)\"\n                  [(ngModel)]=\"disableEdit\" (ngModelChange)=\"toggleEditValue()\"  [attr.data-value]=\"disableEdit\"\n                  [disabled]=\"defaultValue==''\">\n                  <label class=\"form-check-label\" [for]=\"'disableEdit'+(question.element?question.element.id:question.id)\">Disable Edit</label>\n                </div>\n              </div>\n              \n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\" (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-mail-fields',\n  templateUrl: './mail-fields.component.html',\n  styleUrls: ['./mail-fields.component.scss']\n})\nexport class MailFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() inSubForm:boolean=false;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  constructor(private dataservice:DataService,public dialog: MatDialog,private sharedService: SharedService){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean=false;\n  isOpen: boolean = true;\n  testElementName: string = '';\n  showDefaultValue!:boolean;\n  disableEdit!:boolean;\n  defaultValue: string = '';\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit(){\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n    if(this.question.element && this.question.element.defaultValue){\n      this.defaultValue = this.question.element.defaultValue;\n      this.disableEdit = this.question.element.disableEdit;\n      this.showDefaultValue = true;\n    }else if(this.question && this.question.defaultValue){\n      this.defaultValue = this.question.defaultValue;\n      this.disableEdit = this.question.disableEdit;\n      this.showDefaultValue = true;\n    }\n  }\n\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n      this.question.element.defaultValue = this.defaultValue;\n    } else {\n      this.question.question = this.inputQuestion;\n      this.question.defaultValue = this.defaultValue;\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n    if(this.defaultValue==''){\n      this.disableEdit = false;\n      this.toggleEditValue();\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  toggleDefaultValue(){\n    if(!this.showDefaultValue){\n      this.defaultValue = '';\n      this.disableEdit = false;\n      if ('question' in (this.question.element || {})) {\n        this.question.element.defaultValue = '';\n        this.question.element.disableEdit= this.disableEdit;\n      } else {\n        this.question.defaultValue = '';\n        this.question.disableEdit=this.disableEdit;\n      }\n    }\n  }\n\n  toggleEditValue(){\n    if(this.question.element)\n      this.question.element.disableEdit= this.disableEdit;\n    else\n      this.question.disableEdit=this.disableEdit;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('mail', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/mail-icon.svg\" alt=\"mail-icon\" class=\"icon-style\">\n                Mail\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n            <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n            <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n              [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\">\n              <div class=\"form-check mr-50\" *ngIf=\"!question?.element?.multiField && !inSubForm\">\n                <input type=\"checkbox\" name=\"showDefaultValue-checkbox\" [id]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"showDefaultValue\" (ngModelChange)=\"toggleDefaultValue()\"  [attr.data-value]=\"showDefaultValue\">\n                <label class=\"form-check-label\" [for]=\"'showDefaultValue'+(question.element?question.element.id:question.id)\">Default Value</label>\n              </div>\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n          <div class=\"mt-4\" *ngIf=\"!question?.element?.multiField && showDefaultValue  && !inSubForm\">\n            <label class=\"fontFamily\" [for]=\"'default'+(question.element?question.element.id:question.id)\">Default Value</label>\n            <input type=\"email\" [id]=\"'default'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"defaultValue\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Default Value\"  maxlength=\"150\"  (focus)=\"onFocus()\" \n            >\n            <div class=\"w-100 icon-container-bottom\" >\n              <div class=\"d-inline-flex\">\n                <div class=\"form-check\">\n                  <input type=\"checkbox\" name=\"disableEdit-checkbox\" [id]=\"'disableEdit'+(question.element?question.element.id:question.id)\"\n                  [(ngModel)]=\"disableEdit\" (ngModelChange)=\"toggleEditValue()\"  [attr.data-value]=\"disableEdit\"\n                  [disabled]=\"defaultValue==''\">\n                  <label class=\"form-check-label\" [for]=\"'disableEdit'+(question.element?question.element.id:question.id)\">Disable Edit</label>\n                </div>\n              </div>\n              \n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\"  (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output, SimpleChanges } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subscription } from 'rxjs';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-selection-matrix-fields',\n  templateUrl: './selection-matrix-fields.component.html',\n  styleUrls: ['./selection-matrix-fields.component.scss'],\n})\nexport class SelectionMatrixFieldsComponent {\n  @Input() question: any = {};\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  @Input() logicBtnShow: boolean = true;\n  @Input() pages: any = [];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  @Output() translationsUpdated: EventEmitter<any> = new EventEmitter<any>();\n  testElementName: string = '';\n  constructor(\n    private dataservice: DataService,\n    public dialog: MatDialog,\n    private toastr: ToastrService,\n    private sharedService: SharedService\n  ) {\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n   }\n  inputQuestion: string = '';\n  questionRequired!: boolean\n  hintText: string = '';\n  childLogics: any = [];\n  data: string = '';\n  hintOpen: boolean = false;\n  labelValue: string = '';\n  questionId: string = '';\n  labels: any[] = [\n    {\n      label: ''\n    }\n  ];\n  columns: any[] = [\n    {\n      column: ''\n    }\n  ];\n  minSelectionValue!: number;\n  private minSelectionSubscription!: Subscription;\n  selectionErrorMsg = `Labels should be more than minimum selection value.`;\n  languages = [];\n  isOpen: boolean = true;\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit() {\n    this.valueAssigned();\n    this.generateFieldName();\n    this.minSelectionSubscription = this.dataservice.minSelectionValue$.subscribe(value => {\n      this.minSelectionValue = value;\n    });\n    this.dataservice.getLanguages().subscribe(value => {\n      this.languages = value;\n    });\n\n  }\n\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  valueAssigned() {\n    this.inputQuestion = this.question.element?.question || this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired = this.question.element?.required || this.question.required\n    this.hintText = this.question.element?.hint || this.question.hint\n    this.childLogics = this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n    if (this.question.element === undefined) {\n      this.questionId = this.question.id;\n      if (this.question.formElement.validation.minSelectionRequired) {\n        this.minSelectionValue = this.question.formElement.validation.minSelectionValue;\n      }\n      if (this.question?.formElement?.selectionMatrixLabel || this.question?.formElement?.selectionMatrixColumn) {\n        this.labels = (this.question?.formElement?.selectionMatrixLabel || []).flatMap((label: any) => {\n          const lab = this.isParsableJSON(label) ? JSON.parse(label) : label;\n          return (Array.isArray(lab)) ? lab.map(value => ({ label: value })) : { label: lab }\n        }).filter((labelObj: any) => labelObj.label !== '');\n        this.columns = (this.question?.formElement?.selectionMatrixColumn || []).flatMap((column: any) => {\n          const col = this.isParsableJSON(column) ? JSON.parse(column) : column;\n          return (Array.isArray(col)) ? col.map(value => ({ column: value })) : { column: col }\n        }).filter((columnObj: any) => columnObj.column !== '');\n      }\n    }\n    else {\n      this.questionId = this.question.element.id;\n      if (this.question?.element?.formElement?.validation.minSelectionRequired) {\n        this.minSelectionValue = this.question.element.formElement.validation.minSelectionValue;\n      }\n      if (this.question?.element.formElement?.selectionMatrixLabel || this.question?.element?.formElement?.selectionMatrixColumn) {\n        this.labels = (this.question?.element?.formElement?.selectionMatrixLabel || []).flatMap((label: any) => {\n          const lab = this.isParsableJSON(label) ? JSON.parse(label) : label;\n          return (Array.isArray(lab)) ? lab.map(value => ({ label: value })) : { label: lab }\n        }).filter((labelObj: any) => labelObj.label !== '');\n\n        this.columns = (this.question?.element?.formElement?.selectionMatrixColumn || []).flatMap((column: any) => {\n          const col = this.isParsableJSON(column) ? JSON.parse(column) : column;\n          return (Array.isArray(col)) ? col.map(value => ({ column: value })) : { column: col }\n        }).filter((columnObj: any) => columnObj.column !== '');\n      }\n    }\n  }\n\n  private isParsableJSON(value: any): boolean {\n    if (typeof value !== \"string\") return false;\n    try {\n      JSON.parse(value);\n      return true;\n    } catch {\n      return false;\n    }\n  }\n  hint() {\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (translation.elementId == this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng') {\n        translation.translatedText = this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n  }\n  jsonUpdation(type?: string) {\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n    } else {\n      this.question.question = this.inputQuestion;\n    }\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n  required() {\n    if (this.question.element)\n      this.question.element.required = this.questionRequired;\n    else\n      this.question.required = this.questionRequired;\n  }\n  deleteChildQuestions(event: any) {\n    this.dataservice.sendData(this.question.id);\n  }\n  addLogic() {\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id: any) {\n    this.childLogics = this.childLogics.filter((item: any) => item.id != id);\n  }\n  openConfirmationModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader: \"Are you sure ?\",\n      message: \"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened() {\n    this.hintOpen = !this.hintOpen\n  }\n  addLabel() {\n    this.labels.push(\n      {\n        label: ''\n      }\n    )\n  }\n\n  insertLabelValue(event: any, index: number) {\n    this.labels[index].label = event.target.value;\n    this.updateTranslationsWithLabels();\n  }\n\n  deleteLabel(index: number) {\n    this.labels.splice(index, 1);\n    this.updateTranslationsWithLabels();\n  }\n  updateTranslationsWithLabels() {\n    if(this.question.element){\n      this.question.element.formElement.selectionMatrixLabel =[];\n      this.labels.forEach((label:any)=>{\n        this.question.element.formElement.selectionMatrixLabel.push(label.label);\n      })\n    }else{\n      this.question.formElement.selectionMatrixLabel =[];\n      this.labels.forEach((label:any)=>{\n        this.question.formElement.selectionMatrixLabel.push(label.label);\n      })\n    }\n\n\n    let otherLangText = [];\n    const otherLang = this.translations.filter(\n      (translation: any) =>\n      (translation.elementId === this.questionId && translation.attribute === 'SELECTION_MATRIX_LABEL'\n        && translation.language !== 'eng'\n      )\n    );\n    if (otherLang.length > 0) {\n      if (this.isParsableJSON(otherLang[0].translatedText)) {\n        otherLangText = JSON.parse(otherLang[0].translatedText);\n      } else {\n        otherLang.map((translation: any) => {\n          otherLangText.push(translation.translatedText)\n        })\n      }\n    }\n\n    this.translations = this.translations.filter(\n      (translation: any) =>\n        !(translation.elementId === this.questionId && translation.attribute === 'SELECTION_MATRIX_LABEL')\n    );\n    for (let lang of this.languages) {\n      for (const [index, labelObj] of this.labels.entries()) {\n        this.translations.push({\n          elementId: this.questionId,\n          entityType: 'QUESTION',\n          language: lang,\n          attribute: 'SELECTION_MATRIX_LABEL',\n          translatedText: (lang === 'eng') ? labelObj.label : (otherLangText[index]) ? otherLangText[index] : ''\n        });\n      }\n    }\n\n    // this.translations = this.translations.sort((a: any, b: any) => {\n    //   const attributeOrder = [\"SELECTION_MATRIX_LABEL\", \"SELECTION_MATRIX_COLUMN\"];\n    //   const indexA = attributeOrder.indexOf(a.attribute) !== -1 ? attributeOrder.indexOf(a.attribute) : Infinity;\n    //   const indexB = attributeOrder.indexOf(b.attribute) !== -1 ? attributeOrder.indexOf(b.attribute) : Infinity;\n    //   return indexA - indexB || a.attribute.localeCompare(b.attribute);\n    // });\n    this.translationsUpdated.emit(this.translations);\n  }\n\n  addColumn() {\n    this.columns.push(\n      {\n        column: ''\n      }\n    )\n  }\n\n  insertColumnValue(event: any, index: number) {\n    this.columns[index].column = event.target.value;\n    this.updateTranslationsWithColumns();\n  }\n\n  deleteColumn(index: number) {\n    this.columns.splice(index, 1);\n    this.updateTranslationsWithColumns();\n  }\n\n  updateTranslationsWithColumns() {\n    if(this.question.element){\n      this.question.element.formElement.selectionMatrixColumn =[];\n      this.columns.forEach((column:any)=>{\n        this.question.element.formElement.selectionMatrixColumn.push(column.column);\n      })\n    }else{\n      this.question.formElement.selectionMatrixColumn =[];\n      this.columns.forEach((column:any)=>{\n        this.question.formElement.selectionMatrixColumn.push(column.column);\n      })\n    }\n\n\n    let otherLangText = [];\n    const otherLang = this.translations.filter(\n      (translation: any) =>\n      (translation.elementId === this.questionId && translation.attribute === 'SELECTION_MATRIX_COLUMN'\n        && translation.language !== 'eng'\n      )\n    );\n    if (otherLang.length > 0) {\n      if (this.isParsableJSON(otherLang[0].translatedText)) {\n        otherLangText = JSON.parse(otherLang[0].translatedText);\n      } else {\n        otherLang.map((translation: any) => {\n          otherLangText.push(translation.translatedText)\n        })\n      }\n    }\n\n    this.translations = this.translations.filter(\n      (translation: any) =>\n        !(translation.elementId === this.questionId && translation.attribute === 'SELECTION_MATRIX_COLUMN')\n    );\n    for (let lang of this.languages) {\n      for (const [index, columnObj] of this.columns.entries()) {\n        this.translations.push({\n          elementId: this.questionId,\n          entityType: 'QUESTION',\n          language: lang,\n          attribute: 'SELECTION_MATRIX_COLUMN',\n          translatedText: (lang === 'eng') ? columnObj.column : (otherLangText[index]) ? otherLangText[index] : ''\n        });\n      }\n    }\n    this.translationsUpdated.emit(this.translations);\n  }\n\n  drop(event: CdkDragDrop<string[]>, value: string) {\n    if (value == 'label') {\n      moveItemInArray(this.labels, event.previousIndex, event.currentIndex);\n      this.updateTranslationsWithLabels()\n    }\n    else if (value == 'column') {\n      moveItemInArray(this.columns, event.previousIndex, event.currentIndex);\n      this.updateTranslationsWithColumns()\n    }\n  }\n  ngOnDestroy(): void {\n    if (this.minSelectionSubscription) {\n      this.minSelectionSubscription.unsubscribe();\n    }\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('selection-matrix', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/selection-matrix-icon.svg\" class=\"icon-style\">\n                Selection Matrix\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n          <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n          <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n          [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\" class=\"row mt-4\">\n            <div class=\"col-6\" cdkDropList  (cdkDropListDropped)=\"drop($event,'label')\">\n              <p>Label</p>\n              <div class=\"label\" *ngFor=\"let label of labels;let i=index\" cdkDrag>\n                <div class=\"label-field\">\n                 <img src=\"assets/icons/cdk-drag-icon.svg\" class=\"cdk-drag-handle icon-field\" cdkDragHandle>\n                  <input class=\"selection-matrix-input\" type=\"text\" name=\"type\" id=\"\" placeholder=\"Type here...\" [(ngModel)]=\"label.label\"\n                  (input)=\"insertLabelValue($event,i)\">\n                </div>\n                <img (click)=\"deleteLabel(i)\" class=\"icon-field-delete\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                <div class=\"example-custom-placeholder\" *cdkDragPlaceholder>\n                </div>\n              </div>\n              <div class=\"logic-add-btn\" (click)=\"addLabel()\">\n                <img src=\"/assets/icons/add-criteria-icon.svg\" class=\"icon-field-button\">\n                <p>Add</p>\n              </div>\n            </div>\n            <div class=\"col-6\"  cdkDropList  (cdkDropListDropped)=\"drop($event,'column')\">\n              <p>Column</p>\n              <div class=\"label\"  *ngFor=\"let column of columns;let i=index\" cdkDrag>\n                <div class=\"label-field\">\n                  <img src=\"assets/icons/cdk-drag-icon.svg\" class=\"cdk-drag-handle icon-field\" cdkDragHandle>\n                  <input class=\"selection-matrix-input\" type=\"text\" name=\"type\" id=\"\" placeholder=\"Type here...\"\n                  [(ngModel)]=\"column.column\" (input)=\"insertColumnValue($event,i)\">\n                </div>\n                <img (click)=\"deleteColumn(i)\" class=\"icon-field-delete\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                <div class=\"example-custom-placeholder\" *cdkDragPlaceholder>\n                </div>\n              </div>\n              <div class=\"logic-add-btn\" (click)=\"addColumn()\" >\n                <img src=\"/assets/icons/add-criteria-icon.svg\" class=\"icon-field-button\">\n                <p>Add</p>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\">\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n          <div class=\"error-msg\" *ngIf=\"minSelectionValue > labels.length\">{{selectionErrorMsg}}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\"  (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-date-time-fields',\n  templateUrl: './date-time-fields.component.html',\n  styleUrls: ['./date-time-fields.component.scss']\n})\nexport class DateTimeFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  testElementName: string = '';\n  constructor(private dataservice:DataService,public dialog: MatDialog,private sharedService: SharedService){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit(){\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n  }\n\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute=='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n    } else {\n      this.question.question = this.inputQuestion;\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('date', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\"  [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img class=\"icon-style\" src=\"/assets/icons/date-time-icon.svg\" alt=\"date-time-icon\">\n                Date Time\n              </div>\n            </div>\n            <div class=\"col-auto\">\n            <div class=\"icon-container-right\">\n              <div class=\"element-menu-action-button\">\n                <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                  <div class=\"question-options\">\n                    <ul class=\"question-action-options\">\n                      <li\n                        class=\"question-option\"\n                        (click)=\"hintOpened()\"\n                      >\n                      <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                        <span>Hint</span>\n                      </li>\n                      <li\n                        class=\"question-option\"\n                        (click)=\"copyQuestion()\"\n                      >\n                      <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                        <span>Copy</span>\n                      </li>\n                      <li\n                        class=\"question-option\"\n                        (click)=\"openElementIdModal()\"\n                      >\n                      <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                        <span>Element ID</span>\n                      </li>\n                      <li\n                        class=\"question-option\"\n                        (click)=\"openConfirmationModal()\"\n                      >\n                      <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                        <span>Delete</span>\n                      </li>\n                    </ul>\n                  </div>\n                </div>\n\n              </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n          <label class=\"fontFamily\"[for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n          <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n          [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\"  placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\">\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\"  (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n  Renderer2,\n  ViewChild,\n} from '@angular/core';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { DataService } from '../../services/data.service';\nimport { Subscription } from 'rxjs';\nimport { ValidationService } from '../../services/validation.service';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n\n@Component({\n  selector: 'lib-aggregate-function',\n  templateUrl: './aggregate-function.component.html',\n  styleUrls: ['./aggregate-function.component.scss'],\n})\nexport class AggregateFunctionComponent {\n  @Input() question: any = {};\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  @Input() logicBtnShow: boolean = true;\n  @Input() pages: any;\n  @Input() pageId: string = '';\n  @Input() subFormId: string = '';\n  @Input() elementType: string = '';\n  @Input() inLogic: boolean = false;\n  @Input() logicId: string = '';\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  testElementName: string = '';\n  private pageSubscription: Subscription;\n  constructor(\n    private dataservice: DataService,\n    public dialog: MatDialog,\n    private renderer: Renderer2,\n    private validationService: ValidationService,\n    private sharedService: SharedService\n  ) {\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId =\n        question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      this.formQuestions = [];\n      this.extractNumberQuestions(data);\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.allQuestionSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n\n  onFocus() {\n    this.selectedQuestionId =\n      this.question.id ||\n      this.question.element?.id ||\n      this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  inputQuestion: string = '';\n  questionRequired!: boolean;\n  hintText: string = '';\n  childLogics: any = [];\n  data: string = '';\n  hintOpen: boolean = false;\n  isOpen: boolean = true;\n  isMenuOpen: boolean = false;\n  @ViewChild('expressionDiv', { static: false })\n  expressionDiv!: ElementRef<HTMLDivElement>;\n\n  formQuestions: any = [];\n  operationTypes: any = [\n    { label: 'Sum', value: 'SUM' },\n    { label: 'Subtraction', value: 'SUBTRACTION' },\n    { label: 'Multiplication', value: 'MULTIPLICATION' },\n    { label: 'Custom', value: 'CUSTOM' },\n  ];\n  showDropdown: boolean = false;\n  showOperationTypes: boolean = false;\n  private savedRange: Range | null = null;\n  selectedOperation: any[] = [];\n  selectedQuestions: any[] = [];\n  selectedOperationValue: string = '';\n  formula: string = '';\n  formulaValidationStatus: boolean | null = null;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private allQuestionSubscription: Subscription;\n  ngOnInit() {\n    this.extractNumberQuestions(this.pages);\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n  valueAssigned() {\n    this.inputQuestion =\n      this.question.element?.question || this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired =\n      this.question.element?.required || this.question.required;\n    this.hintText = this.question.element?.hint || this.question.hint;\n    this.whenClause = this.question.whenClause;\n    if (this.question.element.formElement.aggregateFunction.aggregateOperation) {\n      const operationType = this.operationTypes.find((type: any) => {\n        return (\n          type.value ==\n          this.question.element.formElement.aggregateFunction.aggregateOperation\n        );\n      });\n\n      this.selectedOperation.push(operationType);\n      this.selectedOperationValue =\n        this.question.element.formElement.aggregateFunction.aggregateOperation;\n      if (this.selectedOperationValue == 'CUSTOM') {\n        setTimeout(() => {\n          this.loadFormula(this.question.element.formElement.aggregateFunction.formula);\n        });\n        this.formulaValidationStatus = this.validationService.isValidFormula(\n          this.question.element.formElement.aggregateFunction.formula\n        );\n      } else {\n        const formula = this.question.element.formElement.aggregateFunction.formula;\n        // Extract UUIDs from comma-separated formula\n        const uuids =\n          formula\n            ?.split(',')\n            .map((s: any) => s.trim())\n            .filter(Boolean) || [];\n        // Filter and rebuild selectedQuestions from formQuestions\n        setTimeout(() => {\n          this.selectedQuestions = this.formQuestions.filter((q: any) =>\n            uuids.includes(q.value)\n          );\n        });\n        // Load formula chips into contenteditable\n      }\n    }\n  }\n  hint() {\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (\n        translation.elementId == this.selectedQuestionId &&\n        translation.attribute == 'HELP_TEXT' &&\n        translation.language === 'eng'\n      ) {\n        translation.translatedText = this.hintText;\n        if (this.question.element) {\n          this.question.element.hint = this.hintText;\n        } else {\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n  }\n  jsonUpdation(type?: string) {\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n    } else {\n      this.question.question = this.inputQuestion;\n    }\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (type === 'hint') {\n        if (\n          translation.elementId === this.selectedQuestionId &&\n          translation.attribute === 'HELP_TEXT' &&\n          translation.language === 'eng'\n        ) {\n          translation.translatedText = this.hintText;\n        }\n      } else {\n        if (\n          translation.elementId === this.selectedQuestionId &&\n          translation.attribute === 'NAME'\n        ) {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n  required() {\n    if (this.question.element)\n      this.question.element.required = this.questionRequired;\n    else this.question.required = this.questionRequired;\n  }\n  deleteChildQuestions(event: any) {\n    this.dataservice.sendData(this.question.id);\n  }\n  openConfirmationModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader: 'Are you sure ?',\n      message: 'Do you want to delete this question?',\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(\n      ConfirmationModalComponent,\n      dialogConfig\n    );\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened() {\n    this.hintOpen = !this.hintOpen;\n  }\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName() {\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName(\n        'aggregate',\n        id\n      );\n      if (this.question.element) {\n        this.question.element.testElementName = this.testElementName;\n      } else {\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  focusInput() {\n    this.expressionDiv.nativeElement.focus();\n  }\n\n  loadFormula(formula: string) {\n    const uuidRegex =\n      /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}/g;\n    const parts = formula.split(uuidRegex);\n    const matches = formula.match(uuidRegex) || [];\n\n    const fragment = document.createDocumentFragment();\n\n    parts.forEach((part, index) => {\n      if (part) {\n        fragment.appendChild(document.createTextNode(part));\n      }\n      if (index < matches.length) {\n        const question = this.formQuestions.find(\n          (q: any) => q.value === matches[index]\n        );\n        if (question) {\n          const chip = this.createChipElement(question);\n          fragment.appendChild(chip);\n        } else {\n          // If no match found, fallback to text\n          fragment.appendChild(document.createTextNode(matches[index]));\n        }\n      }\n    });\n\n    const el = this.expressionDiv.nativeElement;\n    el.innerHTML = '';\n    el.appendChild(fragment);\n  }\n\n  extractNumberQuestions = (pages: any): void => {\n    pages.forEach((page: any) => {\n      if (this.subFormId && this.elementType && this.inLogic) {\n        page.formElements.forEach((forElement: any) => {\n          if (forElement.element.childLogics) {\n            forElement.element.childLogics.forEach((childLogic: any) => {\n              childLogic.formElements.forEach((childElement: any) => {\n                if (\n                  childElement.entityType == this.elementType &&\n                  childElement.element.id == this.subFormId\n                ) {\n                  childElement.element.formElements.forEach((element: any) => {\n                    if (element.entityType === 'QUESTION') {\n                      this.checkElement(element);\n                    }\n                  });\n                }\n              });\n            });\n          }\n        });\n      } else if (this.subFormId && this.elementType) {\n        page.formElements.forEach((formElement: any) => {\n          if (\n            formElement.entityType == this.elementType &&\n            formElement.element.id == this.subFormId\n          ) {\n            this.iterateFormElement(formElement.element.formElements);\n          }\n        });\n      } else if (this.inLogic && this.logicId) {\n        this.searchLogicInFormElements(page.formElements, this.logicId);\n      } else {\n        this.iterateFormElement(page.formElements);\n      }\n    });\n    if (this.selectedOperationValue === 'CUSTOM') {\n      this.cleanInvalidChips();\n    } else if (\n      ['SUM', 'SUBTRACTION', 'MULTIPLICATION'].includes(\n        this.selectedOperationValue\n      )\n    ) {\n      this.updateSelectedQuestionsForStandardOps();\n    }\n  };\n\n  checkElement = (element: any) => {\n    if (element.entityType !== 'QUESTION' || !element.element) return;\n    const { elementType } = element.element.formElement;\n    if (\n      (elementType == 'NUMBER' || elementType == 'CURRENCY') &&\n      element.element.id &&\n      element.element.question\n    ) {\n      this.formQuestions.push({\n        label: element.element.question,\n        value: element.element.id,\n      });\n    }\n  };\n\n  iterateFormElement = (formElements: any) => {\n    if (!formElements) return;\n    formElements.forEach((formElement: any) => {\n      if (formElement.entityType == 'QUESTION') {\n        this.checkElement(formElement);\n      }\n    });\n  };\n\n  searchLogicInFormElements(formElements: any[], logicId: string): boolean {\n    for (const formElement of formElements) {\n      const element = formElement.element;\n      if (element && element.childLogics) {\n        for (const childLogic of element.childLogics) {\n          if (childLogic.id === logicId) {\n            // Found the logicId\n            this.iterateFormElement(childLogic.formElements);\n            return true; // Stop searching if found\n          }\n          // Recurse into childLogic's formElements\n          if (\n            childLogic.formElements &&\n            this.searchLogicInFormElements(childLogic.formElements, logicId)\n          ) {\n            return true; // Stop if found in deeper levels\n          }\n        }\n      }\n    }\n    return false; // Not found at this level\n  }\n\n  cleanInvalidChips() {\n    const el = this.expressionDiv.nativeElement;\n    const nodes = Array.from(el.childNodes);\n    const validIds = this.formQuestions.map((q: any) => q.value);\n    let updatedFormula = '';\n\n    nodes.forEach((node: any) => {\n      if (node.nodeType === Node.TEXT_NODE) {\n        updatedFormula += node.textContent;\n      } else if (node.nodeType === Node.ELEMENT_NODE) {\n        if (node.classList?.contains('chip')) {\n          const id = node.getAttribute('data-id');\n          if (validIds.includes(id)) {\n            updatedFormula += id;\n          } else {\n            this.renderer.removeChild(el, node);\n          }\n        }\n      }\n    });\n\n    this.formula = updatedFormula.trim();\n    this.formulaValidationStatus = this.validationService.isValidFormula(\n      this.formula\n    );\n    this.question.element.formElement.aggregateFunction.formula = this.formula;\n  }\n\n  updateSelectedQuestionsForStandardOps() {\n    const validIds = this.formQuestions.map((q: any) => q.value);\n\n    // Filter selectedQuestions to only those still valid\n    this.selectedQuestions = this.selectedQuestions.filter((q: any) =>\n      validIds.includes(q.value)\n    );\n\n    // Rebuild formula as comma-separated string of selected IDs\n    const formula = this.selectedQuestions.map((q: any) => q.value).join(',');\n    this.formula = formula;\n    this.question.element.formElement.aggregateFunction.formula = formula;\n\n    // Validate formula\n    if (this.selectedQuestions.length === 0 && !this.selectedOperationValue) {\n      this.formulaValidationStatus = null;\n    } else if (this.selectedQuestions.length <= 1) {\n      this.formulaValidationStatus = false;\n    } else {\n      this.formulaValidationStatus = true;\n    }\n  }\n\n  onKeyDown(event: KeyboardEvent) {\n    const allowedKeys = [\n      '0',\n      '1',\n      '2',\n      '3',\n      '4',\n      '5',\n      '6',\n      '7',\n      '8',\n      '9',\n      '+',\n      '-',\n      '*',\n      '/',\n      '(',\n      ')',\n      '.',\n      'Backspace',\n      'Delete',\n      'ArrowLeft',\n      'ArrowRight',\n      'Tab',\n      'Enter',\n    ];\n    if (event.key === '@') {\n      this.saveSelection();\n      this.showDropdown = true;\n      event.preventDefault();\n    } else if (event.key === 'Escape') {\n      this.showDropdown = false;\n    }\n    if (!allowedKeys.includes(event.key)) {\n      event.preventDefault();\n    }\n  }\n\n  saveSelection() {\n    const sel = window.getSelection();\n    if (sel && sel.rangeCount > 0) {\n      this.savedRange = sel.getRangeAt(0).cloneRange();\n    }\n  }\n\n  onInput(event: any) {\n    this.saveSelection(); // Save selection after typing\n    const text = this.getTextContent();\n    if (!text.includes('@')) {\n      this.showDropdown = false;\n    }\n    this.formula = this.getExpression();\n    this.formulaValidationStatus = this.validationService.isValidFormula(\n      this.formula\n    );\n    this.question.element.formElement.aggregateFunction.formula = this.formula;\n  }\n\n  selectOption(option: any) {\n    this.insertChip(option); // pass full object now\n    this.showDropdown = false;\n    this.formula = this.getExpression();\n    this.formulaValidationStatus = this.validationService.isValidFormula(\n      this.formula\n    );\n    this.question.element.formElement.aggregateFunction.formula = this.formula;\n  }\n\n  createChipElement(question: any): HTMLElement {\n    const chip = this.renderer.createElement('span');\n    this.renderer.addClass(chip, 'chip');\n    chip.setAttribute('contenteditable', 'false');\n    chip.setAttribute('data-id', question.value);\n    chip.textContent = question.label;\n\n    const removeIcon = this.renderer.createElement('span');\n    removeIcon.textContent = '×';\n    this.renderer.addClass(removeIcon, 'remove-icon');\n\n    removeIcon.addEventListener('click', () => {\n      chip.remove();\n      this.focusInputAtEnd();\n      this.formula = this.getExpression();\n      this.formulaValidationStatus = this.validationService.isValidFormula(\n        this.formula\n      );\n      this.question.element.formElement.aggregateFunction.formula = this.formula;\n    });\n\n    chip.appendChild(removeIcon);\n\n    return chip;\n  }\n\n  insertChip(option: { value: string; label: string }) {\n    const chip = this.createChipElement(option);\n\n    const el = this.expressionDiv.nativeElement;\n    el.focus();\n\n    const sel = window.getSelection();\n\n    if (this.savedRange) {\n      sel?.removeAllRanges();\n      sel?.addRange(this.savedRange);\n    }\n\n    if (sel && sel.rangeCount > 0) {\n      const range = sel.getRangeAt(0);\n      range.deleteContents();\n      range.insertNode(chip);\n\n      // Move cursor after chip\n      range.setStartAfter(chip);\n      range.collapse(true);\n      sel.removeAllRanges();\n      sel.addRange(range);\n\n      this.savedRange = null;\n    } else {\n      this.renderer.appendChild(el, chip);\n    }\n\n    this.focusInputAtEnd();\n  }\n\n  focusInputAtEnd() {\n    const el = this.expressionDiv.nativeElement;\n    el.focus();\n\n    const range = document.createRange();\n    range.selectNodeContents(el);\n    range.collapse(false);\n\n    const sel = window.getSelection();\n    sel?.removeAllRanges();\n    sel?.addRange(range);\n  }\n\n  getTextContent() {\n    return this.expressionDiv.nativeElement.textContent || '';\n  }\n\n  getExpression(): string {\n    const nodes = this.expressionDiv.nativeElement.childNodes;\n    let result = '';\n    nodes.forEach((node: any) => {\n      if (node.nodeType === Node.TEXT_NODE) {\n        result += node.textContent;\n      } else if (node.classList?.contains('chip')) {\n        // Use the id stored in data attribute instead of visible label\n        const id = node.getAttribute('data-id');\n        if (id) {\n          result += `${id}`;\n        }\n      }\n    });\n    return result.trim();\n  }\n\n  print() {\n    let string = '';\n  }\n\n  openDropdown() {\n    this.showOperationTypes = !this.showOperationTypes;\n  }\n\n  selectOperationType(option: any) {\n    if (this.selectedOperationValue != this.selectedOperation[0]?.value) {\n      this.selectedQuestions = [];\n      this.formulaValidationStatus = null;\n    }\n    this.selectedOperationValue = this.selectedOperation[0]?.value;\n    this.question.element.formElement.aggregateFunction.aggregateOperation =\n      this.selectedOperationValue;\n  }\n\n  selectQuestions(question: any) {\n    const commaSeparatedValues = this.selectedQuestions\n      .map((q) => q.value)\n      .join(',');\n    this.question.element.formElement.aggregateFunction.formula = commaSeparatedValues;\n    setTimeout(() => {\n      if (\n        this.selectedQuestions.length == 0 &&\n        this.selectedOperationValue == undefined\n      ) {\n        this.formulaValidationStatus = null;\n      } else if (this.selectedQuestions.length <= 1) {\n        this.formulaValidationStatus = false;\n      } else {\n        this.formulaValidationStatus = true;\n      }\n    });\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.allQuestionSubscription) {\n      this.allQuestionSubscription.unsubscribe();\n    }\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n    <div class=\"col-12\">\n      <div class=\"outer-rectangle\"   [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\"\n      [attr.name]=\"testElementName\">\n        <!-- Outer Rectangle -->\n        <div class=\"inner-rectangle\"><!-- Inner Rectangle -->\n          <div class=\"input-container\"\n            [ngClass]=\"{'selected': selectedQuestion()}\">\n            <div class=\"row\">\n              <div class=\"col\">\n                <div class=\"icon-container\">\n                  <img src=\"/assets/icons/aggregate-icon.svg\" class=\"icon-style\">\n                  Aggregate Functions\n                </div>\n              </div>\n              <div class=\"col-auto\">\n                <div class=\"icon-container-right\">\n                  <div class=\"element-menu-action-button\">\n                    <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n  \n                    <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                      <div class=\"question-options\">\n                        <ul class=\"question-action-options\">\n                          <li\n                            class=\"question-option\"\n                            (click)=\"hintOpened()\"\n                          >\n                          <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                            <span>Hint</span>\n                          </li>\n                          <li\n                            class=\"question-option\"\n                            (click)=\"copyQuestion()\"\n                          >\n                          <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                            <span>Copy</span>\n                          </li>\n                          <li\n                            class=\"question-option\"\n                            (click)=\"openElementIdModal()\"\n                          >\n                          <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                            <span>Element ID</span>\n                          </li>\n                          <li\n                            class=\"question-option\"\n                            (click)=\"openConfirmationModal()\"\n                          >\n                          <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                            <span>Delete</span>\n                          </li>\n                        </ul>\n                      </div>\n                    </div>\n  \n                  </div>\n  \n                  <div *ngIf=\"question?.element?.multiField\">\n                    <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                      <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                    </div>\n                    <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                      <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                    </div>\n                  </div>\n  \n                </div>\n              </div>\n            </div>\n            <div *ngIf=\"!question?.element?.multiField\">\n              <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Title</label>\n              <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n              [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Here\"  maxlength=\"150\"  (focus)=\"onFocus()\" \n              [attr.data-for]=\"testElementName\">\n            </div>\n            <div class=\"mt-4\" *ngIf=\"!question?.element?.multiField\">\n                <div class=\"d-flex justify-content-between\">\n                    <label class=\"fontFamily\">Functions</label>\n                <div *ngIf=\"selectedOperationValue === 'CUSTOM'\"\n                        matTooltip=\"Please press the @ key to view the options\"\n                        class=\"svg-wrapper mb-2\">\n                        <img class=\"hintSvg\" src=\"assets/icons/hint-icon.svg\" alt=\"info\">\n                </div>\n                </div>\n                <div class=\"d-flex justify-content-center align-items-center gap-1\">\n                    <div class=\"aggregate-container d-flex\"\n                    [ngClass]=\"{'full-width':formulaValidationStatus == null}\">\n                        <div class=\"operation-type col-3\">\n                            <lib-dropdown\n                            [placeholder]=\"'Select'\"\n                            [items]=\"operationTypes\"\n                            [multiple]=\"false\"\n                            [(selectedItems)]=\"selectedOperation\"\n                            [showBorder]=\"false\"\n                            (selectedItemsChange)=\"selectOperationType($event)\"\n                          >\n                          </lib-dropdown>\n                        </div>\n                        <div class=\"col-9\" *ngIf=\"selectedOperationValue === 'CUSTOM'\">\n                            <div class=\"aggregate-custom-field\" (click)=\"focusInput()\" tabindex=\"0\">\n                                <div class=\"expression-area\" contenteditable=\"true\"\n                                     (keydown)=\"onKeyDown($event)\"\n                                     (input)=\"onInput($event)\"\n                                     #expressionDiv>\n                                </div>\n                              \n                                <ul class=\"aggregate-dropdown\" *ngIf=\"showDropdown\">\n                                  <li *ngFor=\"let option of formQuestions\"\n                                      (click)=\"selectOption(option)\">\n                                    {{ option.label }}\n                                  </li>\n                                </ul>\n                            </div>\n                        </div>\n                        <div class=\"col-9 aggregate-field\" *ngIf=\"selectedOperationValue != 'CUSTOM'\">\n                            <lib-dropdown\n                            [items]=\"formQuestions\"\n                            [multiple]=\"true\"\n                            [(selectedItems)]=\"selectedQuestions\"\n                            [showBorder]=\"false\"\n                            (selectedItemsChange)=\"selectQuestions($event)\"\n                          >\n                          </lib-dropdown>\n                        </div>\n                </div>\n                <div class=\"validation-container\"  \n                [ngClass]=\"{\n                    'hidden': formulaValidationStatus == null,\n                    'background': formulaValidationStatus\n                  }\">\n                    <img src=\"assets/icons/tick.svg\" alt=\"tick\" *ngIf=\"formulaValidationStatus\">\n                    <img src=\"assets/icons/cross-mark.svg\" alt=\"cross\" *ngIf=\"!formulaValidationStatus\">\n                </div>\n                </div>\n                \n  \n            <div *ngIf=\"isOpen\" class=\"icon-container-bottom d-flex justify-content-between\">\n              <div class=\"custom-element-id-container\">\n                <div *ngIf=\"customElementId\">\n                  <span>Element ID - {{customElementId}}</span>\n                </div>\n              </div>\n              <div class=\"d-inline-flex\" >\n                <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n                <div class=\"form-check\">\n                  <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                  [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                  <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n                </div>\n              </div>\n            </div>\n  \n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  \n  <div class=\"fbModal\" *ngIf=\"hintOpen\" >\n    <div class=\"fbModalDialog\">\n      <div class=\"fbModalClose\">\n        <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n      </div>\n      <div class=\"fbModalTitle\">\n        Add Hint\n      </div>\n      <div class=\"\">\n        <p>Hint</p>\n        <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n        [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n      </div>\n      <div class=\"hintModalFooter\">\n        <div class=\"footer-btn \">\n          <button type=\"button\" (click)=\"hint()\" >OK</button>\n        </div>\n      </div>\n    </div>\n  </div>\n  ","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ChangeDetectorRef,\n  HostListener,\n} from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { DataService } from '../../services/data.service';\nimport { CountryService } from '../../services/country.service';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\nimport { Subscription } from 'rxjs';\n\n@Component({\n  selector: 'lib-currency-fields',\n  templateUrl: './currency-fields.component.html',\n  styleUrls: ['./currency-fields.component.scss'],\n})\nexport class CurrencyFieldsComponent {\n\n  @Input() question: any = {};\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  @Input() logicBtnShow: boolean = true;\n  @Input() inSubForm: boolean = false;\n  @Input() pages: any;\n  @Input() pageId: string = '';\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  testElementName: string = '';\n  constructor(\n    private dataservice: DataService,\n    public dialog: MatDialog,\n    private countryService: CountryService,\n    private sharedService: SharedService\n  ) {\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId =\n        question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n\n  onFocus() {\n    this.selectedQuestionId =\n      this.question.id ||\n      this.question.element?.id ||\n      this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  inputQuestion: string = '';\n  questionRequired!: boolean;\n  hintText: string = '';\n  childLogics: any = [];\n  data: string = '';\n  hintOpen: boolean = false;\n  isOpen: boolean = true;\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  ngOnInit() {\n    this.valueAssigned();\n    this.generateFieldName();\n    this.getCurrencySymbols();\n  }\n  valueAssigned() {\n\n\n    this.inputQuestion =\n      this.question.element?.question || this.question.question;\n      this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.questionRequired =\n      this.question.element?.required || this.question.required;\n    this.hintText = this.question.element?.hint || this.question.hint;\n    this.childLogics =\n      this.question.element?.childLogics || this.question?.childLogics;\n    this.whenClause = this.question.whenClause;\n    this.defaultCurrencySymbol = this.question.element.appearance?.currencySymbol\n      ? [\n          {\n            label: this.question.element.appearance.currencySymbol,\n            value: this.question.element.appearance.currencySymbol,\n          },\n        ]\n      : [];\n    this.limitCurrencies = this.question.element.formElement.appearance?.limitCurrencies || false;\n    this.selectedOption = this.question.element.formElement.appearance?.currencyOption || '';\n\n  }\n  hint() {\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (\n        translation.elementId == this.selectedQuestionId &&\n        translation.attribute == 'HELP_TEXT' &&\n        translation.language === 'eng'\n      ) {\n        translation.translatedText = this.hintText;\n        if (this.question.element) {\n          this.question.element.hint = this.hintText;\n        } else {\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n  }\n  jsonUpdation(type?: string) {\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n    } else {\n      this.question.question = this.inputQuestion;\n    }\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (type === 'hint') {\n        if (\n          translation.elementId === this.selectedQuestionId &&\n          translation.attribute === 'HELP_TEXT' &&\n          translation.language === 'eng'\n        ) {\n          translation.translatedText = this.hintText;\n        }\n      } else {\n        if (\n          translation.elementId === this.selectedQuestionId &&\n          translation.attribute === 'NAME'\n        ) {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n  required() {\n    if (this.question.element)\n      this.question.element.required = this.questionRequired;\n    else this.question.required = this.questionRequired;\n  }\n\n  deleteChildQuestions(event: any) {\n    this.dataservice.sendData(this.question.id);\n  }\n  addLogic() {\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id: any) {\n    this.childLogics = this.childLogics.filter((item: any) => item.id != id);\n  }\n  openConfirmationModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader: 'Are you sure ?',\n      message: 'Do you want to delete this question?',\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(\n      ConfirmationModalComponent,\n      dialogConfig\n    );\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened() {\n    this.hintOpen = !this.hintOpen;\n  }\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName() {\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('currency', id);\n      if (this.question.element) {\n        this.question.element.testElementName = this.testElementName;\n      } else {\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  changeCurrencySymbol() {\n    if (\n      this.question?.element?.formElement?.appearance.currencySymbol ==\n      this.defaultCurrencySymbol[0]?.label\n    ) {\n      return;\n    } else {\n      this.question.element.formElement.appearance.currencySymbol =\n        this.defaultCurrencySymbol[0]?.label;\n    }\n    this.changeLimitCurrencySymbol();\n  }\n\n  changeLimitCurrencySymbol() {\n    const appearance = this.question?.element?.formElement?.appearance;\n    if (!appearance) return;\n    appearance.limitCurrencySymbol = (this.limitCurrencySymbol || [])\n      .map((currency: any) => currency?.label)\n      .filter((label: any) => label !== undefined && label !== null);\n  }\n\n\n  changeSpecificCurrencySymbol() {\n    this.question.element.formElement.appearance.specificCurrencySymbol =\n      this.specificCurrencySymbol[0]?.label;\n  }\n\n  getCurrencySymbols() {\n    this.countryService.getCurrencySymbol().subscribe((data: any) => {\n      this.currencySymbols = data;\n      this.assignCurrencySymbol();\n    });\n  }\n\n  assignCurrencySymbol() {\n    this.defaultCurrencySymbol = [];\n    this.limitCurrencySymbol = [];\n\n    if (this.question.element.formElement.appearance.currencySymbol) {\n      let currencySymbol = this.currencySymbols.find((symbol) => {\n        return (\n          symbol.label == this.question.element.formElement.appearance.currencySymbol\n        );\n      });\n      this.defaultCurrencySymbol = [currencySymbol];\n    }\n\n    if (this.question.element.formElement.appearance.limitCurrencySymbol) {\n   let limitCurrencySymbols = this.currencySymbols.filter(symbol =>\n    this.question.element.formElement.appearance.limitCurrencySymbol.includes(symbol.label)\n);\n\n\n      this.limitCurrencySymbol = [...limitCurrencySymbols];\n    }\n     if(this.question.element.formElement.appearance.specificCurrencySymbol){\n        let specificCurrencySymbol = this.currencySymbols.find((symbol) => {\n        return (\n          symbol.label == this.question.element.formElement.appearance.specificCurrencySymbol\n        );\n      });\n\n      this.specificCurrencySymbol = [specificCurrencySymbol];\n    }\n\n  }\n\n  onCurrencyOptionChange(option: string) {\n    this.limitCurrencySymbol = [];\n    this.specificCurrencySymbol = [];\n    this.limitCurrencies = false;\n    this.question.element.formElement.appearance.limitCurrencySymbol =[];\n    this.question.element.formElement.appearance.specificCurrencySymbol =\"\";\n    this.question.element.formElement.appearance.currencyOption = option;\n    this.onLimitCurrenciesChange();\n  }\n\n  onLimitCurrenciesChange() {\n    this.question.element.formElement.appearance.limitCurrencies = this.limitCurrencies;\n}\n\n  selectedOption: string = '';\n  limitCurrencies: boolean = false;\n  allowedCurrencies: string = '';\n  specificCurrency: string = '';\n\n  defaultCurrencySymbol: any[] = [];\n  limitCurrencySymbol: any[] = [];\n  specificCurrencySymbol: any[] = [];\n\n  currencySymbols: any[] = [];\n  limitcurrencySymbols: any[] = [];\n\n  selectOption(option: string) {\n    this.selectedOption = option;\n    this.limitCurrencies = false;\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div\n      class=\"outer-rectangle\"\n      [ngClass]=\"{ 'multi-fields-container': question?.element?.multiField }\"\n      [attr.name]=\"testElementName\"\n    >\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div\n          class=\"input-container\"\n          [ngClass]=\"{ selected: selectedQuestion() }\"\n        >\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/currency-icon.svg\" class=\"icon-style\" />\n                Currency\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img\n                    src=\"/assets/icons/three-dots-icon.svg\"\n                    alt=\"Three dots\"\n                    (click)=\"toggleMenu()\"\n                    class=\"element-menu-action-icon\"\n                  />\n\n                  <div\n                    class=\"question-menu-container\"\n                    [class.show]=\"isMenuOpen\"\n                  >\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li class=\"question-option\" (click)=\"hintOpened()\">\n                          <img\n                            src=\"/assets/icons/add-hint-icon.svg\"\n                            class=\"icon-right\"\n                          />\n                          <span>Hint</span>\n                        </li>\n                        <li class=\"question-option\" (click)=\"copyQuestion()\">\n                          <img\n                            src=\"/assets/icons/copy-no-outline-icon.svg\"\n                            class=\"icon-right\"\n                          />\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                          <img\n                            src=\"/assets/icons/element-id-icon.svg\"\n                            class=\"icon-right\"\n                          />\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                          <img\n                            class=\"icon-right\"\n                            src=\"/assets/icons/delete-no-outline-icon.svg\"\n                            alt=\"Delete Icon\"\n                          />\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n                </div>\n\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div\n                    *ngIf=\"!isOpen\"\n                    class=\"down-arrow\"\n                    class=\"action-button\"\n                    data-title=\"Show\"\n                    (click)=\"closeElement()\"\n                  >\n                    <img\n                      src=\"assets/icons/down-arrow-gray-icon.svg\"\n                      alt=\"down-arrow-icon\"\n                      loading=\"lazy\"\n                    />\n                  </div>\n                  <div\n                    *ngIf=\"isOpen\"\n                    class=\"up-arrow\"\n                    class=\"action-button\"\n                    data-title=\"Hide\"\n                    (click)=\"closeElement()\"\n                  >\n                    <img\n                      src=\"assets/icons/upArrow.png\"\n                      alt=\"up-arrow-icon\"\n                      loading=\"lazy\"\n                    />\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n            <label\n              class=\"fontFamily\"\n              [for]=\"\n                'question' +\n                (question.element ? question.element.id : question.id)\n              \"\n              >Question</label\n            >\n            <input\n              type=\"text\"\n              [id]=\"\n                'question' +\n                (question.element ? question.element.id : question.id)\n              \"\n              class=\"form-control mb-2\"\n              [(ngModel)]=\"inputQuestion\"\n              (ngModelChange)=\"jsonUpdation()\"\n              placeholder=\"Type Question\"\n              maxlength=\"150\"\n              (focus)=\"onFocus()\"\n              [attr.data-for]=\"testElementName\"\n            />\n          </div>\n\n          <div class=\"configuration\">\n            <h4 class=\"title\">\n              Default Currency Symbol <span class=\"required\">*</span>\n            </h4>\n            <div class=\"dropdown-wrapper\">\n              <lib-dropdown\n                [placeholder]=\"'Select default currency'\"\n                [items]=\"currencySymbols\"\n                [(selectedItems)]=\"defaultCurrencySymbol\"\n                (selectedItemsChange)=\"changeCurrencySymbol()\"\n              ></lib-dropdown>\n            </div>\n\n            <!-- Currency Detection Options -->\n            <div class=\"detection-options\">\n              <!-- Automatic Detection -->\n              <div class=\"option-group\">\n                <div class=\"option-header\">\n                  <input\n                    type=\"radio\"\n                    id=\"{{ question.element.id }}-autoDetection\"\n                    name=\"{{ question.element.id }}-currencyOption\"\n                    value=\"auto\"\n                    (change)=\"onCurrencyOptionChange('auto')\"\n                    [(ngModel)]=\"selectedOption\"\n                    class=\"radio-input\"\n                  />\n                  <label\n                    for=\"{{ question.element.id }}-autoDetection\"\n                    class=\"option-label\"\n                    >Automatic detection (User location)</label\n                  >\n                </div>\n\n                <div class=\"sub-option\" *ngIf=\"selectedOption === 'auto'\">\n                  <input\n                    type=\"checkbox\"\n                    id=\"{{ question.element.id }}-limitCurrencies\"\n                    [(ngModel)]=\"limitCurrencies\"\n                    (change)=\"onLimitCurrenciesChange()\"\n                    class=\"checkbox-input\"\n                  />\n                  <label\n                    for=\"{{ question.element.id }}-limitCurrencies\"\n                    class=\"option-label\"\n                    >Limit to specific currencies</label\n                  >\n                </div>\n\n                <div\n                  class=\"input-wrapper\"\n                  *ngIf=\"selectedOption === 'auto' && limitCurrencies\"\n                >\n                  <lib-dropdown\n                    [multiple]=\"true\"\n                    [placeholder]=\"'Select currency'\"\n                    [items]=\"currencySymbols\"\n                    [(selectedItems)]=\"limitCurrencySymbol\"\n                    (selectedItemsChange)=\"changeLimitCurrencySymbol()\"\n                  ></lib-dropdown>\n                </div>\n              </div>\n\n              <!-- Choose Specific Currency -->\n              <div class=\"option-group\">\n                <div class=\"option-header\">\n                  <input\n                    type=\"radio\"\n                    id=\"{{ question.element.id }}-specificCurrency\"\n                    name=\"{{ question.element.id }}-currencyOption\"\n                    value=\"specific\"\n                    (change)=\"onCurrencyOptionChange('specific')\"\n                    [(ngModel)]=\"selectedOption\"\n                    class=\"radio-input\"\n                  />\n                  <label\n                    for=\"{{ question.element.id }}-specificCurrency\"\n                    class=\"option-label\"\n                    >Choose specific currency</label\n                  >\n                </div>\n\n                <div\n                  class=\"input-wrapper\"\n                  *ngIf=\"selectedOption === 'specific'\"\n                >\n                  <lib-dropdown\n                    [placeholder]=\"'Select currency...'\"\n                    [items]=\"currencySymbols\"\n                    [(selectedItems)]=\"specificCurrencySymbol\"\n                    (selectedItemsChange)=\"changeSpecificCurrencySymbol()\"\n                  ></lib-dropdown>\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <div\n            *ngIf=\"isOpen\"\n            class=\"icon-container-bottom d-flex justify-content-between\"\n          >\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{ customElementId }}</span>\n              </div>\n            </div>\n            <div class=\"d-inline-flex\">\n              <button\n                *ngIf=\"logicBtnShow && !question?.element?.multiField\"\n                type=\"button\"\n                class=\"btn btn-link p-0 mr-50\"\n                (click)=\"addLogic()\"\n              >\n                Add Logic\n              </button>\n              <button\n              [ngClass]=\"{\n                'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n              }\"\n              type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n              <span \n                *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                class=\"when-rule-count\"\n              >\n                ({{ whenClause?.whenClauseCondition?.length }} \n                {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n              </span>\n              </button>\n              <div class=\"form-check\">\n                <input\n                  type=\"checkbox\"\n                  name=\"required-checkbox\"\n                  [id]=\"\n                    'required' +\n                    (question.element ? question.element.id : question.id)\n                  \"\n                  [(ngModel)]=\"questionRequired\"\n                  (ngModelChange)=\"required()\"\n                  [attr.data-value]=\"questionRequired\"\n                />\n                <label\n                  class=\"form-check-label\"\n                  [for]=\"\n                    'required' +\n                    (question.element ? question.element.id : question.id)\n                  \"\n                  >Required</label\n                >\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\">\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img\n        src=\"/assets/icons/close-sidebar-mark-icon.svg\"\n        (click)=\"hintOpened()\"\n        class=\"svg-model\"\n      />\n    </div>\n    <div class=\"fbModalTitle\">Add Hint</div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input\n        class=\"appearanceInput\"\n        type=\"text\"\n        placeholder=\"Type here...\"\n        [(ngModel)]=\"hintText\"\n        (ngModelChange)=\"jsonUpdation('hint')\"\n      />\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn\">\n        <button type=\"button\" (click)=\"hint()\">OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { CONSTANTS } from '../../shared/constants';\nimport { ApiService } from '../../services/api.service';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n\n@Component({\n  selector: 'lib-hidden-fields',\n  templateUrl: './hidden-fields.component.html',\n  styleUrls: ['./hidden-fields.component.scss']\n})\nexport class HiddenFieldsComponent {\n\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() pages: any;\n  @Input() logicBtnShow:boolean=true;\n  @Input() inSubForm:boolean=false;\n  @Input() pageId:string='';\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  testElementName: string = '';\n  valueSources = CONSTANTS.hiddenFieldValueSource;\n  updateOptions = CONSTANTS.hiddenFieldUpdateOptions;\n  selectedUpdateOption: any[] = [];\n  selectedValueSource: any[]=[];\n  selectedPredefinedVariable: any[]=[];\n  predefinedVariables: any[]=[];\n  customInputValue: string = '';\n  storageKey: string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  constructor(private dataservice:DataService,public dialog: MatDialog,private apiService:ApiService,private sharedService: SharedService){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  inputQuestion:string='';\n  hintText:string='';\n  data:string='';\n  hintOpen:boolean = false;\n  isOpen: boolean = true;\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  ngOnInit(){\n    this.valueAssigned();\n    this.generateFieldName();\n    this.getAllPredefinedVariables();\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n    this.hintText=this.question.element?.hint || this.question.hint;\n    this.whenClause = this.question.whenClause;\n    const valueSource = this.question?.element?.formElement?.hiddenField?.valueSource || this.question?.formElement?.hiddenField?.valueSource;\n    const found = this.valueSources.find(source => source.value === valueSource);\n    this.selectedValueSource = found ? [found] : [];\n    this.customInputValue = this.question?.element?.formElement?.hiddenField.value || this.question?.formElement?.hiddenField.value;\n    this.storageKey = this.question?.element?.formElement?.hiddenField.key || this.question?.formElement?.hiddenField.key;\n    const updateOn = this.question?.element?.formElement?.hiddenField.updateOn || this.question?.formElement?.hiddenField.updateOn;\n    const foundOption = this.updateOptions.find(option => option.value === updateOn);\n    this.selectedUpdateOption = foundOption ? [foundOption] : [];\n  }\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute=='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n  }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n    } else {\n      this.question.question = this.inputQuestion;\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  selectedQuestion() {\n    const ids = [this.question?.id, this.question?.element?.id, this.question?.formElement?.id].filter(id => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('hidden-field', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  getAllPredefinedVariables(){\n    this.apiService.getPredefinedVariables().subscribe({\n      next:(res:any)=>{\n        this.predefinedVariables = res;\n        if(this.selectedValueSource[0]?.value == 'PREDEFINED_VARIABLE'){\n          const variable = this.question?.element?.formElement?.hiddenField?.value || this.question?.formElement?.hiddenField?.value;\n          const found = this.predefinedVariables.find(variables => variables.value == variable);\n          this.selectedPredefinedVariable = found ? [found] : [];\n        }\n      },\n      error:(error:any)=>{\n      }\n    })\n  }\n\n  updateValueSource(){\n    if(this.question.element){\n      this.question.element.formElement.hiddenField.valueSource = this.selectedValueSource[0].value;\n      this.customInputValue = '';\n      this.storageKey = '';\n      this.question.element.formElement.hiddenField.value = null;\n      this.question.element.formElement.hiddenField.key = null;\n    } else{\n      this.question.formElement.hiddenField.valueSource = this.selectedValueSource[0].value;\n      this.customInputValue = '';\n      this.storageKey = '';\n      this.question.formElement.hiddenField.value = null;\n      this.question.formElement.hiddenField.key = null;\n    }\n  }\n\n  updateCustomInput(){\n    if(this.question.element){\n      this.question.element.formElement.hiddenField.value = this.customInputValue;\n    } else{\n      this.question.formElement.hiddenField.value = this.customInputValue;\n    }\n  }\n\n  updateStorageKey(){\n    if(this.question.element){\n      this.question.element.formElement.hiddenField.key = this.storageKey;\n    } else{\n      this.question.formElement.hiddenField.key = this.storageKey;\n    }\n  }\n\n  updatePredefinedVariable(){\n    if(this.question.element){\n      this.question.element.formElement.hiddenField.value = this.selectedPredefinedVariable[0].value;\n    } else{\n      this.question.formElement.hiddenField.value = this.selectedPredefinedVariable[0].value;\n    }\n  }\n\n  updateSelectedUpdateOption() {\n    if(this.question.element){\n      this.question.element.formElement.hiddenField.updateOn = this.selectedUpdateOption[0].value;\n    } else{\n      this.question.formElement.hiddenField.updateOn = this.selectedUpdateOption[0].value;\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n    <div class=\"col-12\">\n      <div class=\"outer-rectangle\"   [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\"\n      [attr.name]=\"testElementName\">\n        <!-- Outer Rectangle -->\n        <div class=\"inner-rectangle\"><!-- Inner Rectangle -->\n          <div class=\"input-container\"\n            [ngClass]=\"{'selected': selectedQuestion()}\">\n            <div class=\"row\">\n              <div class=\"col\">\n                <div class=\"icon-container\">\n                  <img src=\"/assets/icons/hidden-field-icon.svg\" class=\"icon-style\">\n                  Hidden Field\n                </div>\n              </div>\n              <div class=\"col-auto\">\n                <div class=\"icon-container-right\">\n                  <div class=\"element-menu-action-button\">\n                    <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n  \n                    <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                      <div class=\"question-options\">\n                        <ul class=\"question-action-options\">\n                          <li\n                            class=\"question-option\"\n                            (click)=\"hintOpened()\"\n                          >\n                          <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                            <span>Hint</span>\n                          </li>\n                          <li\n                            class=\"question-option\"\n                            (click)=\"copyQuestion()\"\n                          >\n                          <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                            <span>Copy</span>\n                          </li>\n                          <li\n                            class=\"question-option\"\n                            (click)=\"openElementIdModal()\"\n                          >\n                          <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                            <span>Element ID</span>\n                          </li>\n                          <li\n                            class=\"question-option\"\n                            (click)=\"openConfirmationModal()\"\n                          >\n                          <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                            <span>Delete</span>\n                          </li>\n                        </ul>\n                      </div>\n                    </div>\n  \n                  </div>\n  \n                  <div *ngIf=\"question?.element?.multiField\">\n                    <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                      <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                    </div>\n                    <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                      <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                    </div>\n                  </div>\n  \n                </div>\n              </div>\n            </div>\n            <div *ngIf=\"!question?.element?.multiField\">\n              <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n              <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n              [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\" placeholder=\"Type Question\"  maxlength=\"150\"  (focus)=\"onFocus()\" \n              [attr.data-for]=\"testElementName\">\n            </div>\n  \n            <div class=\"hidden-field-values mt-4\">\n             <div class=\"row\">\n                <div class=\"col-3\">\n                    <label class=\"mb-2\">Value Source</label>\n                    <lib-dropdown\n                    [items]=\"valueSources\"\n                    [(selectedItems)]=\"selectedValueSource\"\n                    (selectedItemsChange)=\"updateValueSource()\"\n                    >\n                    </lib-dropdown>\n                </div>\n                <div class=\"col-3\">\n                    <label class=\"mb-2\" *ngIf=\"selectedValueSource[0]?.value === 'CUSTOM_INPUT' || selectedValueSource[0]?.value === 'PREDEFINED_VARIABLE'\">\n                        Value\n                    </label>\n                    <label class=\"mb-2\" *ngIf=\"selectedValueSource[0]?.value === 'LOCAL_STORAGE' || selectedValueSource[0]?.value === 'SESSION_STORAGE'\">\n                        Key\n                    </label>\n                    <input type=\"text\" class=\"form-control\" *ngIf=\"selectedValueSource[0]?.value === 'CUSTOM_INPUT'\"\n                    [(ngModel)]=\"customInputValue\" (ngModelChange)=\"updateCustomInput()\">\n                    <input type=\"text\" class=\"form-control\" *ngIf=\"selectedValueSource[0]?.value === 'LOCAL_STORAGE' || selectedValueSource[0]?.value === 'SESSION_STORAGE'\"\n                    [(ngModel)]=\"storageKey\" (ngModelChange)=\"updateStorageKey()\">\n                    <lib-dropdown\n                    *ngIf=\"selectedValueSource[0]?.value === 'PREDEFINED_VARIABLE'\"\n                    [items]=\"predefinedVariables\"\n                    [(selectedItems)]=\"selectedPredefinedVariable\"\n                    (selectedItemsChange)=\"updatePredefinedVariable()\"\n                    >\n                    </lib-dropdown>\n                </div>\n                <div class=\"col-3\">\n                  <label class=\"mb-2\">Update On</label>\n                  <lib-dropdown\n                    [items]=\"updateOptions\"\n                    [(selectedItems)]=\"selectedUpdateOption\"\n                    (selectedItemsChange)=\"updateSelectedUpdateOption()\"\n                    >\n                    </lib-dropdown>\n                </div>\n             </div>\n            </div>\n\n            <div class=\"d-flex justify-content-between\">\n              <div class=\"custom-element-id-container mt-3\">\n                <div *ngIf=\"customElementId\">\n                  <span>Element ID - {{customElementId}}</span>\n                </div>\n              </div>\n              <button\n                [ngClass]=\"{\n                  'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                  'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n                }\"\n                type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n                <span \n                  *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                  class=\"when-rule-count\"\n                >\n                  ({{ whenClause?.whenClauseCondition?.length }} \n                  {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n                </span>\n                </button>\n            </div>\n\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  \n  <div class=\"fbModal\" *ngIf=\"hintOpen\" >\n    <div class=\"fbModalDialog\">\n      <div class=\"fbModalClose\">\n        <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n      </div>\n      <div class=\"fbModalTitle\">\n        Add Hint\n      </div>\n      <div class=\"\">\n        <p>Hint</p>\n        <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n        [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('hint')\">\n      </div>\n      <div class=\"hintModalFooter\">\n        <div class=\"footer-btn \">\n          <button type=\"button\" (click)=\"hint()\" >OK</button>\n        </div>\n      </div>\n    </div>\n  </div>\n  ","import { Component, HostListener, Input } from '@angular/core';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { DataService } from '../../services/data.service';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n\n@Component({\n  selector: 'lib-iframe-fields',\n  templateUrl: './iframe-fields.component.html',\n  styleUrls: ['./iframe-fields.component.scss']\n})\nexport class IframeFieldsComponent {\n\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() pages: any;\n  testElementName: string = '';\n  contentType:string = '';\n  htmlContent: string = '';\n  cssContent: string = '';\n  scriptContent: string = '';\n  urlContent: string = '';\n  isMenuOpen: boolean = false;\n  customElementId:string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  constructor(private dataservice:DataService,public dialog: MatDialog,private sharedService: SharedService){\n    this.dataservice.getQuestion().subscribe((question) => {\n      this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    });\n\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.question?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.question.whenClause &&\n        this.question.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.question.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.question.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n\n  ngOnInit(){\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n\n  valueAssigned() {\n    this.whenClause = this.question.whenClause;\n    const iFrameProps =\n      this.question.element?.formElement?.iFrameProperties ??\n      this.question.formElement?.iFrameProperties;\n  \n    if (!iFrameProps) return;\n  \n    this.contentType = iFrameProps.contentType;\n    if(this.contentType == 'HTML'){\n      this.htmlContent = iFrameProps.html?.content || '';\n      this.cssContent = iFrameProps.style?.css || '';\n      this.scriptContent = iFrameProps.script?.code || '';\n    } else{\n      this.urlContent = iFrameProps.url || '';\n    }\n    this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n  }\n  \n  \n  selectedQuestion() {\n    const ids = [this.question?.id, this.question?.element?.id, this.question?.formElement?.id].filter(id => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  jsonUpdation(field?: string) {\n    if (!field) return;\n  \n    const iFrameProps =\n      this.question.element?.formElement?.iFrameProperties ||\n      this.question.formElement?.iFrameProperties;\n  \n    if (!iFrameProps) return;\n  \n    // Clear dependent fields and component variables based on the type being set\n    if (field === 'type') {\n      if (this.contentType === 'LINK') {\n        // Switching to LINK: clear HTML, CSS, Script\n        iFrameProps.html = { content: '' };\n        iFrameProps.style = { css: '' };\n        iFrameProps.script = { code: '' };\n  \n        // Clear component variables\n        this.htmlContent = '';\n        this.cssContent = '';\n        this.scriptContent = '';\n      } else if (this.contentType === 'HTML') {\n        // Switching to HTML: clear Link URL\n        iFrameProps.url = '';\n  \n        // Clear component variable\n        this.urlContent = '';\n      }\n    }\n  \n    const map: Record<string, (props: any) => void> = {\n      type: (p) => (p.contentType = this.contentType),\n      html: (p) => (p.html.content = this.htmlContent),\n      css: (p) => (p.style.css = this.cssContent),\n      script: (p) => (p.script.code = this.scriptContent),\n      link: (p) => (p.url = this.urlContent),\n    };\n  \n    map[field]?.(iFrameProps);\n  }\n\n  onUrlChange() {\n    const isUrlValid = this.isValidUrl(this.urlContent);\n    \n    if(isUrlValid){\n      this.jsonUpdation('link');\n    }\n  }\n  \n  isValidUrl(value: string): boolean {\n    try {\n      const url = new URL(value);\n      return !!url.protocol && (url.protocol === \"http:\" || url.protocol === \"https:\");\n    } catch {\n      return false;\n    }\n  }\n  \n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.question.id || this.question.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('iframe-', id);\n      if(this.question.element){\n        this.question.element.testElementName = this.testElementName;\n      }else{\n        this.question.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.customElementId = this.question.element?.customElementId ||this.question.customElementId;\n      }\n    });\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.question,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.question = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div\n      class=\"outer-rectangle\"\n      [ngClass]=\"{ 'multi-fields-container': question?.element?.multiField }\"\n      [attr.name]=\"testElementName\"\n    >\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div\n          class=\"input-container\"\n          [ngClass]=\"{ selected: selectedQuestion() }\"\n        >\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/iframe-icon.svg\" class=\"icon-style\" />\n                IFrame Widget\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"copyQuestion()\"\n                        >\n                        <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                          <span>Copy</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n\n                </div>\n              </div>\n            </div>\n          </div>\n          <div class=\"row mt-3\">\n            <div class=\"contentTypeContainer\">\n              <label [for]=\"question.element.id + 'iframe-html'\" class=\"me-4\">\n                <input\n                  type=\"radio\"\n                  [id]=\"question.element.id + 'iframe-html'\"\n                  [name]=\"question.element.id\"\n                  value=\"HTML\"\n                  [(ngModel)]=\"contentType\"\n                  (ngModelChange)=\"jsonUpdation('type')\"\n                />\n                HTML\n              </label>\n\n              <label [for]=\"question.element.id + 'iframe-link'\" class=\"me-4\">\n                <input\n                  type=\"radio\"\n                  [id]=\"question.element.id + 'iframe-link'\"\n                  [name]=\"question.element.id\"\n                  value=\"LINK\"\n                  [(ngModel)]=\"contentType\"\n                  (ngModelChange)=\"jsonUpdation('type')\"\n                />\n                Link\n              </label>\n            </div>\n            <div class=\"lib-contentContainer mt-4\">\n              <div class=\"htmlContent\" *ngIf=\"contentType == 'HTML'\">\n                <div class=\"mb-3\">\n                  <label [for]=\"question.element.id + '-html'\">HTML</label>\n                  <textarea\n                    [id]=\"question.element.id + '-html'\"\n                    class=\"form-control\"\n                    [(ngModel)]=\"htmlContent\"\n                    (ngModelChange)=\"jsonUpdation('html')\"\n                  ></textarea>\n                </div>\n\n                <div class=\"mb-3\">\n                  <label [for]=\"question.element.id + '-css'\">CSS</label>\n                  <textarea\n                    [id]=\"question.element.id + '-css'\"\n                    class=\"form-control\"\n                    [(ngModel)]=\"cssContent\"\n                    (ngModelChange)=\"jsonUpdation('css')\"\n                  ></textarea>\n                </div>\n\n                <div class=\"mb-3\">\n                  <label [for]=\"question.element.id + '-script'\">Script</label>\n                  <textarea\n                    name=\"\"\n                    [id]=\"question.element.id + '-script'\"\n                    class=\"form-control\"\n                    [(ngModel)]=\"scriptContent\"\n                    (ngModelChange)=\"jsonUpdation('script')\"\n                  ></textarea>\n                </div>\n              </div>\n\n              <div class=\"urlContent\" *ngIf=\"contentType == 'LINK'\">\n                <div class=\"mb-3\">\n                  <label [for]=\"question.element.id + '-link'\">Link</label>\n                  <textarea\n                    name=\"\"\n                    [id]=\"question.element.id + '-link'\"\n                    class=\"form-control\"\n                    [(ngModel)]=\"urlContent\"\n                    (ngModelChange)=\"onUrlChange()\"\n                  ></textarea>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div class=\"d-flex justify-content-between\">\n            <div class=\"custom-element-id-container mt-3 d-flex justify-content-between\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <button\n                [ngClass]=\"{\n                  'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                  'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n                }\"\n                type=\"button\" class=\"btn btn-link p-0 mr-50 d-flex justify-content-end\" (click)=\"openWhenClauseModal()\">When ?\n                <span \n                  *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                  class=\"when-rule-count\"\n                >\n                  ({{ whenClause?.whenClauseCondition?.length }} \n                  {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n                </span>\n            </button>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-text-field-properties',\n  templateUrl: './text-field-properties.component.html',\n  styleUrls: ['./text-field-properties.component.scss'],\n})\nexport class TextFieldPropertiesComponent implements OnChanges {\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  @Input() questionProperties: any = {};\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  selectedFontFamily: any[] = [];\n  selectedFontSize: any[] = [];\n  selectedCustomOption: any[] = [];\n  label = 'label';\n  placeholder: string = '';\n  defaultValue: string = '';\n  underline!: boolean;\n  italics!: boolean;\n  bold!: boolean;\n  textAlign: string = '';\n  validationType: string = '';\n  regExp: string = '';\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n  options = CONSTANTS.textfieldOptions;\n  fontFamily = CONSTANTS.fontFamily;\n  fontSize = CONSTANTS.fontSize;\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.selectedCustomOption = [];\n      this.valueAssigned();\n    } else {\n      this.questionProperties.appearance = {\n        fontSize: 22,\n        textAlign: '',\n        font: 'Poppins',\n        underline: false,\n        bold: false,\n        italics: false,\n        placeholder: '',\n        defaultValue: '',\n      };\n      this.questionProperties.validation = {\n        validationType: null,\n        regex: '',\n        validation: '',\n      }\n      this.valueAssigned();\n    }\n  }\n\n  ngOnInit(): void {\n    this.selectedCustomOption = [];\n    this.valueAssigned();\n  }\n\n  valueAssigned() {\n    if (\n      this.questionProperties?.appearance.font ||\n      this.questionProperties?.appearance.fontSize\n    ) {\n      const selectedFont = this.fontFamily.find(\n        (font) => font.value === this.questionProperties?.appearance.font\n      );\n      this.selectedFontFamily.push(selectedFont);\n\n      const selectedSize = this.fontSize.find(\n        (size) => size.value === this.questionProperties?.appearance.fontSize\n      );\n      this.selectedFontSize.push(selectedSize);\n    }\n\n    if (\n      this.questionProperties?.validation.validationType == 'CUSTOM_VALIDATION'\n    ) {\n      const selectedOption = this.options.find(\n        (option) =>\n          option.value === this.questionProperties?.validation.validation\n      );\n      this.selectedCustomOption.push(selectedOption);\n    }\n    this.placeholder = this.questionProperties?.appearance.placeholder;\n    this.defaultValue = this.questionProperties?.appearance.defaultValue;\n    this.underline = this.questionProperties?.appearance.underline;\n    this.bold = this.questionProperties.appearance.bold;\n    this.italics = this.questionProperties.appearance.italics;\n    this.validationType = this.questionProperties?.validation.validationType;\n    this.regExp = this.questionProperties?.validation.regex;\n    this.textAlign = this.questionProperties?.appearance.textAlign;\n  }\n\n  jsonUpdation() {\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (\n        translation.elementId == this.selectedQuestionId &&\n        translation.attribute == 'PLACEHOLDER'\n      ) {\n        translation.translatedText = this.placeholder;\n      }\n    }\n    this.questionProperties.appearance.placeholder = this.placeholder;\n    this.questionProperties.appearance.defaultValue = this.defaultValue;\n    this.questionProperties.appearance.underline = this.underline;\n    this.questionProperties.appearance.bold = this.bold;\n    this.questionProperties.appearance.italics = this.italics;\n    this.questionProperties.appearance.textAlign = this.textAlign;\n    this.questionProperties.validation.validationType = this.validationType;\n    this.questionProperties.validation.regex = this.regExp;\n\n  }\n\n  selectAlignment(alignment: any) {\n    this.textAlign = alignment;\n    this.questionProperties.appearance.textAlign = alignment;\n  }\n\n  changeFontStyle(style: any) {\n    if (style == 'underline') {\n      this.underline = !this.underline;\n      this.questionProperties.appearance.underline =\n        !this.questionProperties.appearance.underline;\n    } else if (style == 'bold') {\n      this.bold = !this.bold;\n      this.questionProperties.appearance.bold =\n        !this.questionProperties.appearance.bold;\n    } else {\n      this.italics = !this.italics;\n      this.questionProperties.appearance.italics =\n        !this.questionProperties.appearance.italics;\n    }\n  }\n  changeFont() {\n    if (\n      this.questionProperties?.appearance.font ==\n      this.selectedFontFamily[0]?.value\n    ) {\n      return;\n    } else {\n      this.questionProperties.appearance.font =\n        this.selectedFontFamily[0]?.value;\n    }\n  }\n  changeSize() {\n    if (\n      this.questionProperties?.appearance.fontSize ==\n      this.selectedFontSize[0]?.value\n    ) {\n      return;\n    } else {\n      this.questionProperties.appearance.fontSize =\n        this.selectedFontSize[0]?.value;\n    }\n  }\n  changeValidation() {\n    if (\n      this.questionProperties?.validation.validation ==\n      this.selectedCustomOption[0]?.value\n    ) {\n      return;\n    } else {\n      this.questionProperties.validation.validation =\n        this.selectedCustomOption[0]?.value;\n    }\n  }\n}\n","<p class=\"field-title\">Text Box</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\"  (click)=\"openAppearance()\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n            <label for=\"Placeholder\" class=\"appearanceLabel\">Placeholder</label>\n            <input type=\"text\" class=\"appearanceInput\" id=\"Placeholder\" name=\"Placeholder\"\n            [(ngModel)]=\"placeholder\" (ngModelChange)=\"jsonUpdation()\">\n        </div>     \n    </div>\n</div>\n<div class=\"Validation-div\">\n    <div class=\"properties-header\"  (click)=\"openValidation()\">\n        <p class=\"title\">Validation</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\" [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <div class=\"content\">\n           <ul>\n                <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"radio\" name=\"validationOption\"\n                    value=\"REGULAR_EXPRESSION\"\n                    [(ngModel)]=\"validationType\"\n                    (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"validationType=='REGULAR_EXPRESSION'\"\n                    [id]=\"'regular-'+selectedQuestionId\">\n                    <label class=\"form-check-label\" [for]=\"'regular-'+selectedQuestionId\">\n                        Regular Expression (Regex)\n                    </label>\n                </div>\n                </li>\n                <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"radio\" \n                    name=\"validationOption\"\n                    value=\"CUSTOM_VALIDATION\"\n                    [(ngModel)]=\"validationType\"\n                    (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"validationType=='CUSTOM_VALIDATION'\"\n                    [id]=\"'custom-'+selectedQuestionId\">\n                    <label class=\"form-check-label\" [for]=\"'custom-'+selectedQuestionId\">\n                        Custom validation\n                    </label>\n                </div>\n                </li>\n            </ul>\n                <lib-dropdown \n                *ngIf=\"validationType=='CUSTOM_VALIDATION'\"\n                [placeholder]=\"'Select'\"\n                [items]=\"options\"\n                [(selectedItems)]=\"selectedCustomOption\"\n                (click)=\"changeValidation()\"\n                ></lib-dropdown>\n            <input type=\"text\" class=\"appearanceInput\" *ngIf=\"validationType=='REGULAR_EXPRESSION'\"\n            [(ngModel)]=\"regExp\"\n            (ngModelChange)=\"jsonUpdation()\">               \n        </div>     \n    </div>\n</div>","import {\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport {\n  BsDatepickerConfig,\n  BsDatepickerDirective,\n} from 'ngx-bootstrap/datepicker';\nimport { CONSTANTS } from '../../shared/constants';\nimport { NgxMaterialTimepickerComponent } from 'ngx-material-timepicker';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\n@Component({\n  selector: 'lib-date-picker-field-properties',\n  templateUrl: './date-picker-field-properties.component.html',\n  styleUrls: ['./date-picker-field-properties.component.scss'],\n})\nexport class DatePickerFieldPropertiesComponent implements OnChanges {\n  bsConfig: Partial<BsDatepickerConfig> = {\n    containerClass: 'theme-dark-blue',\n    isAnimated: true,\n    adaptivePosition: true,\n    showWeekNumbers: false,\n  };\n\n  minTime: string = '';\n  maxTime: string = '';\n\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  sameDate: boolean = false;\n  sameMinDate: boolean = false;\n  sameMaxDate: boolean = false;\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  dateType: string = '';\n  dateFormats: any[] = [];\n  timeFormate: any[] = [];\n  isDatePickerOpen: boolean = false;\n  selectedDateFormat: any[] = [];\n  selectedTimeFormateFormat: any[] = [];\n  selectedMinDateOption: any[] = [];\n  selectedMaxDateOption: any[] = [];\n  selectedMinTimeOption: any[] = [];\n  selectedMaxTimeOption: any[] = [];\n  minDate: Date | null = null;\n  maxDate: Date | null = null;\n  selectedDate: string = '';\n  format: string = 'DD/MM/YYYY';\n\n  @ViewChild('startDatepicker', { static: false })\n  startDatepicker!: BsDatepickerDirective; // Reference to start date picker\n  @ViewChild('endDatepicker', { static: false })\n  endDatepicker!: BsDatepickerDirective; // Reference to end date picker\n  dateOptions = CONSTANTS.dateOptions;\n\n  timeOptions = CONSTANTS.timeOptions;\n  private subscriptions: Subscription[] = [];\n\n  @ViewChild('fullTime2') fullTime2!: NgxMaterialTimepickerComponent;\n  @ViewChild('fullTime3') fullTime3!: NgxMaterialTimepickerComponent;\n  @ViewChild('fullTime4') fullTime4!: NgxMaterialTimepickerComponent;\n  @ViewChild('fullTime5') fullTime5!: NgxMaterialTimepickerComponent;\n  @ViewChild('fullTime6') fullTime6!: NgxMaterialTimepickerComponent;\n  @ViewChild('fullTime7') fullTime7!: NgxMaterialTimepickerComponent;\n  @ViewChild('fullTime8') fullTime8!: NgxMaterialTimepickerComponent;\n\n  constructor(private router: Router) {}\n  ngOnInit() {\n    this.valueAssigned();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.selectedMinDateOption = [];\n      this.selectedMaxDateOption = [];\n      this.selectedMaxTimeOption = [];\n      this.selectedMinTimeOption = [];\n      this.minDate = null;\n      this.maxDate = null;\n      this.valueAssigned();\n    }\n  }\n\n  get timeformate(): number {\n    return Number(this.selectedTimeFormateFormat[0]?.value);\n  }\n\n  get maxDateAsDate(): Date | undefined {\n    return this.maxDate ? new Date(this.maxDate) : undefined;\n  }\n\n  get minDateAsDate(): Date | undefined {\n    return this.minDate ? new Date(this.minDate) : undefined;\n  }\n  bindFormats() {\n    this.timeFormate = CONSTANTS.timeFormate;\n    if (this.dateType == 'TIME_ONLY' || this.dateType == 'DATE_AND_TIME') {\n      this.timeFormate = CONSTANTS.timeFormate;\n      if (this.dateType !== 'DATE_AND_TIME') this.selectedDateFormat = [];\n\n      if (!this.selectedTimeFormateFormat.length) {\n        this.selectedTimeFormateFormat = [this.timeFormate[0]];\n      }\n\n      if (!this.minTime || this.minTime.length === 0) {\n        if (this.selectedTimeFormateFormat[0].value === '12') {\n          this.minTime = '12:00 am';\n        } else {\n          this.minTime = '00:00';\n        }\n      }\n\n      if (!this.maxTime || this.maxTime.length === 0) {\n        if (this.selectedTimeFormateFormat[0].value === '12') {\n          this.maxTime = '11:59 pm';\n        } else {\n          this.maxTime = '23:59';\n        }\n      }\n    }\n    if (\n      this.dateType == 'DATE_ONLY' ||\n      this.dateType == 'DATE_AND_TIME' ||\n      this.dateType == 'DATE_RANGE'\n    ) {      \n      this.dateFormats = CONSTANTS.dateFormats;\n      if (this.dateType !== 'DATE_AND_TIME') {\n        this.selectedTimeFormateFormat = [];\n      }\n      if (!this.selectedDateFormat.length) {\n        this.selectedDateFormat = [this.dateFormats[0]];\n      }\n    }\n     if (\n      this.dateType == 'DATE_ONLY' ||\n      this.dateType == 'DATE_AND_TIME' ||\n      this.dateType == 'DATE_RANGE' ||\n      this.dateType== 'MONTH_YEAR'\n    ) {   \n      this.dateFormats = this.dateType== 'MONTH_YEAR' ? CONSTANTS.monthYearFormats : CONSTANTS.dateFormats;\n      if (this.dateType !== 'DATE_AND_TIME') {\n        this.selectedTimeFormateFormat = [];\n      }      \n      if (\n        this.dateType !== 'MONTH_YEAR' &&\n        this.selectedDateFormat.some((format) =>\n          CONSTANTS.monthYearFormats.some((monthFormat) => monthFormat.value === format.value)\n        )\n      ) {\n        this.selectedDateFormat = [];\n      }\n      else  if (\n        this.dateType === 'MONTH_YEAR' &&\n        this.selectedDateFormat.every(\n          (format) =>\n            !CONSTANTS.monthYearFormats.some((monthFormat) => monthFormat.value === format.value)\n        )\n      ){\n        this.selectedDateFormat = [];\n      }\n      \n      if (!this.selectedDateFormat.length) {\n        this.selectedDateFormat = [this.dateFormats[0]];\n      }\n    }\n  }\n\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n\n  valueAssigned() {\n    if (!this.questionProperties?.appearance.dateType) {\n      this.questionProperties.appearance.dateType = 'DATE_ONLY';\n      this.questionProperties.appearance.format = 'DD-MM-YYYY';\n    } else this.dateType = this.questionProperties?.appearance.dateType;\n    this.bindFormats();\n    if (this.questionProperties?.appearance.format) {\n      const format = this.dateFormats.find(\n        (format: any) =>\n          format.value == this.questionProperties?.appearance.format\n      );\n      this.selectedDateFormat = [format];\n      this.format = this.selectedDateFormat[0]?.value;\n      this.bsConfig.dateInputFormat = this.format;\n    }\n\n    if (this.questionProperties?.appearance.timeFormat) {\n      const format = this.timeFormate.find(\n        (format: any) =>\n          format.value == this.questionProperties?.appearance.timeFormat\n      );\n      this.selectedTimeFormateFormat = [format];\n\n      const min = this.questionProperties.validation.minTime;\n      const max = this.questionProperties.validation.maxTime;\n      if (this.questionProperties.appearance.timeFormat === '12') {\n        if (min) {\n          this.minTime = this.convert24HourTo12Hour(\n            this.questionProperties.validation.minTime\n          );\n        } else {\n          this.minTime = '12:00 AM';\n        }\n        if (max){\n          this.maxTime = this.convert24HourTo12Hour(\n            this.questionProperties.validation.maxTime\n          );\n        }\n        else {\n          this.maxTime = '11:59 PM';\n        }\n      } else {\n        if (min)\n          this.minTime = this.questionProperties.validation.minTime.substring(\n            0,\n            5\n          );\n        if (max)\n          this.maxTime = this.questionProperties.validation.maxTime.substring(\n            0,\n            5\n          );\n      }\n    }\n\n    if (this.questionProperties?.validation.minDateOption) {\n      const option = this.dateOptions.find(\n        (option: any) =>\n          option.value == this.questionProperties.validation.minDateOption\n      );\n      this.selectedMinDateOption = [option];\n    }\n\n    if (this.questionProperties?.validation.maxDateOption) {\n      const option = this.dateOptions.find(\n        (option: any) =>\n          option.value == this.questionProperties.validation.maxDateOption\n      );\n      this.selectedMaxDateOption = [option];\n    }\n\n    if (this.questionProperties?.validation.minTimeOption) {\n      const option = this.timeOptions.find(\n        (option: any) =>\n          option.value == this.questionProperties.validation.minTimeOption\n      );\n      this.selectedMinTimeOption = [option];\n    }\n\n    if (this.questionProperties?.validation.maxTimeOption) {\n      const option = this.timeOptions.find(\n        (option: any) =>\n          option.value == this.questionProperties.validation.maxTimeOption\n      );\n      this.selectedMaxTimeOption = [option];\n    }\n\n    if (this.questionProperties?.validation.minDate) {\n      this.minDate = this.convertToISODate(\n        this.questionProperties.validation.minDate\n      );\n    }\n    if (this.questionProperties?.validation.maxDate) {\n      this.maxDate = this.convertToISODate(\n        this.questionProperties.validation.maxDate\n      );\n    }\n  }\n  changeType(): void {\n    this.maxDate = null;\n    this.minDate = null;\n    this.minTime = '';\n    this.maxTime = '';\n    this.questionProperties.appearance.dateType = this.dateType;\n    this.jsonUpdation();\n  }\n  changeDate() {\n    const selectedDateFormat = this.selectedDateFormat[0]?.value;\n    if (selectedDateFormat) {\n      this.format = selectedDateFormat;\n      this.questionProperties.appearance.format =\n        this.selectedDateFormat[0].value;\n      this.bsConfig.dateInputFormat = this.format;\n    }\n    const selectedTimeFormat = this.selectedTimeFormateFormat[0]?.value;\n    this.questionProperties.appearance.timeFormat =\n      this.selectedTimeFormateFormat[0]?.value;\n    this.jsonUpdation();\n  }\n\n  onTimeChange(event: any): void {\n    // Handle the time change event manually\n    this.jsonUpdation();\n  }\n\n  changeMinDateOption() {\n    if (\n      this.questionProperties?.validation.minDateOption ==\n      this.selectedMinDateOption[0]?.value\n    ) {\n      return;\n    } else {\n      this.questionProperties.validation.minDateOption =\n        this.selectedMinDateOption[0]?.value;\n    }\n    this.jsonUpdation();\n  }\n\n  changeMaxDateOption() {\n    if (\n      this.questionProperties?.validation.maxDateOption ==\n      this.selectedMaxDateOption[0]?.value\n    ) {\n      return;\n    } else {\n      this.questionProperties.validation.maxDateOption =\n        this.selectedMaxDateOption[0]?.value;\n    }\n    this.jsonUpdation();\n  }\n\n  changeMinTimeOption() {\n    if (\n      this.questionProperties?.validation.minTimeOption ==\n      this.selectedMinTimeOption[0]?.value\n    ) {\n      return;\n    } else {\n      this.questionProperties.validation.minTimeOption =\n        this.selectedMinTimeOption[0]?.value;\n    }\n    this.jsonUpdation();\n  }\n\n  changeMaxTimeOption() {\n    if (\n      this.questionProperties?.validation.maxTimeOption ==\n      this.selectedMaxTimeOption[0]?.value\n    ) {\n      return;\n    } else {\n      this.questionProperties.validation.maxTimeOption =\n        this.selectedMaxTimeOption[0]?.value;\n    }\n    this.jsonUpdation();\n  }\n\n  jsonUpdation() {\n    this.bindFormats();\n    const minDateObj = this.minDate;\n    const maxDateObj = this.maxDate;\n    if (\n      minDateObj != null &&\n      maxDateObj != null &&\n      !isNaN(minDateObj.getTime()) &&\n      !isNaN(maxDateObj.getTime())\n    ) {\n      this.sameDate = minDateObj.toDateString() === maxDateObj.toDateString();\n      if (this.sameDate) {\n        this.sameMaxDate = true;\n        this.sameMinDate = true;\n      }\n    } else if (\n      this.selectedMaxDateOption?.[0]?.value === 'CURRENT_DATE' &&\n      this.selectedMinDateOption?.[0]?.value === 'CURRENT_DATE'\n    ) {\n      this.sameMaxDate = true;\n      this.sameMinDate = true;\n    } else {\n      this.sameDate = false;\n      this.sameMaxDate = false;\n      this.sameMinDate = false;\n    }\n    this.questionProperties.appearance.dateType = this.dateType;\n    this.questionProperties.validation.maxDate = this.extractDate(this.maxDate);\n    this.questionProperties.validation.minDate = this.extractDate(this.minDate);\n    if (this.selectedDateFormat[0]?.value)\n      this.questionProperties.appearance.format =\n        this.selectedDateFormat[0].value;\n    if (this.selectedTimeFormateFormat[0]?.value)\n      this.questionProperties.appearance.timeFormat =\n        this.selectedTimeFormateFormat[0].value;\n    if(this.questionProperties.appearance.timeFormat === '12'){\n      this.questionProperties.validation.minTime = this.convert12HourTo24Hour(this.minTime);\n      this.questionProperties.validation.maxTime = this.convert12HourTo24Hour(this.maxTime);\n    }else{\n      this.questionProperties.validation.minTime = this.formatToFullTime(this.minTime);\n      this.questionProperties.validation.maxTime = this.formatToFullTime(this.maxTime);\n    }\n    \n  }\n  extractDate(isoDate: Date | null): string {\n    // Check if isoDate is null or invalid\n    if (!isoDate || isNaN(isoDate.getTime())) {\n      return ''; // Return empty string for null or invalid date\n    }\n    // Extract year, month, and day\n    const year: number = isoDate.getFullYear();\n    const month: string = String(isoDate.getMonth() + 1).padStart(2, '0'); // Months are 0-based\n    const day: string = String(isoDate.getDate()).padStart(2, '0');\n    // Return the formatted date\n    return `${year}-${month}-${day}`;\n  }\n\n  convertToISODate(\n    dateInput: [number, number, number] | string | null | undefined\n  ): Date | null {\n    if (!dateInput) {\n      return null; // Return null if dateInput is null, undefined, or any falsy value\n    }\n\n    let year, month, day;\n\n    if (Array.isArray(dateInput)) {\n      // Extract year, month, and day from array input\n      [year, month, day] = dateInput;\n\n      // Validate the array format\n      if (\n        typeof year !== 'number' ||\n        typeof month !== 'number' ||\n        typeof day !== 'number' ||\n        isNaN(year) ||\n        isNaN(month) ||\n        isNaN(day) ||\n        !Number.isInteger(year) ||\n        !Number.isInteger(month) ||\n        !Number.isInteger(day) ||\n        month < 1 ||\n        month > 12 ||\n        day < 1 ||\n        day > 31\n      ) {\n        return null;\n      }\n    } else if (typeof dateInput === 'string') {\n      // Check if the string matches the YYYY-MM-DD format\n      const dateParts = dateInput.split('-');\n      if (dateParts.length !== 3) return null;\n\n      [year, month, day] = dateParts.map(Number);\n\n      // Validate the parsed parts\n      if (\n        isNaN(year) ||\n        isNaN(month) ||\n        isNaN(day) ||\n        !Number.isInteger(year) ||\n        !Number.isInteger(month) ||\n        !Number.isInteger(day) ||\n        month < 1 ||\n        month > 12 ||\n        day < 1 ||\n        day > 31\n      ) {\n        return null;\n      }\n    } else {\n      return null; // Unsupported input type\n    }\n\n    // Create a Date object (month is 0-based, so subtract 1)\n    const date = new Date(year, month - 1, day);\n\n    // Verify if the Date object matches the provided year, month, and day\n    if (\n      date.getFullYear() !== year ||\n      date.getMonth() !== month - 1 ||\n      date.getDate() !== day\n    ) {\n      return null;\n    }\n    return date;\n  }\n\n  convert24HourTo12Hour(time24: string): string {\n    if (!time24) {\n      return '';\n    }\n    // Split the input time to extract hours and minutes\n    const [hour, minute] = time24.split(':').map(Number);\n\n    // Create a new Date object with the hour and minute\n    const date = new Date();\n    date.setHours(hour, minute);\n\n    // Format the time in 12-hour format with AM/PM\n    return date.toLocaleTimeString([], {\n      hour: '2-digit',\n      minute: '2-digit',\n      hour12: true,\n    });\n  }\n\n  convert12HourTo24Hour(time12: string): string {\n    if (!time12) {\n      return '';\n    }\n  \n    const [time, modifier] = time12.trim().split(' ');\n    let [hours, minutes] = time.split(':').map(Number);\n  \n    if (modifier.toUpperCase() === 'PM' && hours < 12) {\n      hours += 12;\n    }\n  \n    if (modifier.toUpperCase() === 'AM' && hours === 12) {\n      hours = 0;\n    }\n  \n    const formattedHour = hours.toString().padStart(2, '0');\n    const formattedMinute = minutes.toString().padStart(2, '0');\n  \n    return `${formattedHour}:${formattedMinute}`;\n  }\n\n  formatToFullTime(time: string): string {\n    if (!time) {\n      return '';\n    }\n  \n    // Check if the time already has seconds\n    const parts = time.split(':');\n  \n    if (parts.length === 2) {\n      // Add seconds if missing\n      return `${parts[0].padStart(2, '0')}:${parts[1].padStart(2, '0')}:00`;\n    } else if (parts.length === 3) {\n      // Already in HH:mm:ss format\n      return `${parts[0].padStart(2, '0')}:${parts[1].padStart(2, '0')}:${parts[2].padStart(2, '0')}`;\n    } else {\n      // Invalid format\n      return '';\n    }\n  }\n\n  onFocus() {\n    if (!this.selectedDate) {\n      this.selectedDate = 'Select Date';\n    }\n  }\n\n  ngAfterViewChecked(): void {\n    // Safely handle both time pickers after the view is fully rendered\n    if (this.fullTime2) {\n      this.trackTimePicker(this.fullTime2);\n    }\n    if (this.fullTime3) {\n      this.trackTimePicker(this.fullTime3);\n    }\n    if (this.fullTime4) {\n      this.trackTimePicker(this.fullTime4);\n    }\n    if (this.fullTime5) {\n      this.trackTimePicker(this.fullTime5);\n    }\n    if (this.fullTime6) {\n      this.trackTimePicker(this.fullTime6);\n    }\n    if (this.fullTime7) {\n      this.trackTimePicker(this.fullTime7);\n    }\n    if (this.fullTime8) {\n      this.trackTimePicker(this.fullTime8);\n    }\n\n\n    // Detect back navigation\n    if (this.subscriptions.length === 0) {\n      const routerSub = this.router.events.subscribe((event) => {\n        if (event instanceof NavigationEnd) {\n          this.closeTimepickers();\n        }\n      });\n      this.subscriptions.push(routerSub);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.closeTimepickers();\n\n    // Unsubscribe from all subscriptions\n    this.subscriptions.forEach((sub) => sub.unsubscribe());\n  }\n\n  private trackTimePicker(picker: NgxMaterialTimepickerComponent): void {\n    if (picker) {\n      const sub = picker.opened.subscribe(() => {\n      });\n\n      this.subscriptions.push(sub);\n    }\n  }\n\n  private closeTimepickers(): void {\n    if (this.fullTime2) {\n      this.fullTime2.close();\n    }\n    if (this.fullTime3) {\n      this.fullTime3.close();\n    }\n    if (this.fullTime4) {\n      this.fullTime4.close();\n    }\n    if (this.fullTime5) {\n      this.fullTime5.close();\n    }\n    if (this.fullTime6) {\n      this.fullTime6.close();\n    }\n    if (this.fullTime7) {\n      this.fullTime7.close();\n    }\n    if (this.fullTime8) {\n      this.fullTime8.close();\n    }\n  }\n}\n","<p class=\"field-title\">Date Time</p>\n<div class=\"appearance-div\">\n  <div class=\"properties-header\" (click)=\"openAppearance()\">\n    <p class=\"title\">Appearance</p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\" />\n    </div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n    </div>\n  </div>\n\n  <div\n    class=\"appearances\"\n    [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n  >\n    <div class=\"content\">\n      <label class=\"appearanceLabel\">Type</label>\n      <ul>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"radio\"\n              name=\"type\"\n              id=\"dateOnly\"\n              value=\"DATE_ONLY\"\n              [(ngModel)]=\"dateType\"\n              (ngModelChange)=\"changeType()\"\n              [attr.data-value]=\"dateType=='DATE_ONLY'\"\n            />\n            <label for=\"dateOnly\" class=\"form-check-label\">Date only</label>\n          </div>\n        </li>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"radio\"\n              name=\"type\"\n              id=\"timeOnly\"\n              value=\"TIME_ONLY\"\n              [(ngModel)]=\"dateType\"\n              (ngModelChange)=\"changeType()\"\n              [attr.data-value]=\"dateType=='TIME_ONLY'\"\n            />\n            <label for=\"timeOnly\" class=\"form-check-label\">Time only</label>\n          </div>\n        </li>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"radio\"\n              name=\"type\"\n              id=\"dateAndTime\"\n              value=\"DATE_AND_TIME\"\n              [(ngModel)]=\"dateType\"\n              (ngModelChange)=\"changeType()\"\n              [attr.data-value]=\"dateType=='DATE_AND_TIME'\"\n            />\n            <label for=\"dateAndTime\" class=\"form-check-label\"\n              >Date & Time</label\n            >\n          </div>\n        </li>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"radio\"\n              name=\"type\"\n              id=\"dateRange\"\n              value=\"DATE_RANGE\"\n              [(ngModel)]=\"dateType\"\n              (ngModelChange)=\"changeType()\"\n              [attr.data-value]=\"dateType=='DATE_RANGE'\"\n            />\n            <label for=\"dateRange\" class=\"form-check-label\">Date range</label>\n          </div>\n        </li>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"radio\"\n              name=\"type\"\n              id=\"monthyear\"\n              value=\"MONTH_YEAR\"\n              [(ngModel)]=\"dateType\"\n              (ngModelChange)=\"changeType()\"\n              [attr.data-value]=\"dateType=='MONTH_YEAR'\"\n            />\n            <label for=\"monthyear\" class=\"form-check-label\">Month and Year</label>\n          </div>\n        </li>\n      </ul>\n      <label *ngIf=\"dateType && dateType.trim() !== ''\" class=\"appearanceLabel\"\n        >Format</label\n      >\n      <div class=\"dropdown-container\">\n        <div\n          *ngIf=\"dateType && dateType.trim() !== '' && dateType !== 'TIME_ONLY'\"\n          class=\"dropdown-gap\"\n        >\n          <lib-dropdown\n            [placeholder]=\"'select'\"\n            [items]=\"dateFormats\"\n            [(selectedItems)]=\"selectedDateFormat\"\n            (click)=\"changeDate()\"\n          ></lib-dropdown>\n        </div>\n        <div *ngIf=\"dateType === 'TIME_ONLY' || dateType === 'DATE_AND_TIME'\">\n          <lib-dropdown\n            [placeholder]=\"'select'\"\n            [items]=\"timeFormate\"\n            [(selectedItems)]=\"selectedTimeFormateFormat\"\n            (click)=\"changeDate()\"\n          ></lib-dropdown>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"Validation-div\">\n  <div class=\"properties-header\" (click)=\"openValidation()\">\n    <p class=\"title\">Validation</p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n    >\n      <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\" />\n    </div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n    >\n      <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n    </div>\n  </div>\n\n  <div\n    class=\"Validation\"\n    [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n  >\n    <div class=\"content\">\n      <div *ngIf=\"dateType !== 'TIME_ONLY' && dateType !== 'MONTH_YEAR'\">\n        <div>\n          <label class=\"appearanceLabel\" for=\"startDate\">Minimum date</label>\n          <lib-dropdown\n            [placeholder]=\"'Min date'\"\n            [items]=\"dateOptions\"\n            [(selectedItems)]=\"selectedMinDateOption\"\n            (click)=\"changeMinDateOption()\"\n          ></lib-dropdown>\n          <div\n            class=\"input-container\"\n            *ngIf=\"selectedMinDateOption[0]?.value === 'CUSTOM'\"\n          >\n            <input\n              id=\"startDate\"\n              type=\"text\"\n              class=\"form-control height appearanceInput mt-3\"\n              [bsConfig]=\"{ dateInputFormat: format }\"\n              bsDatepicker\n              [(ngModel)]=\"minDate\"\n              [bsConfig]=\"bsConfig\"\n              [maxDate]=\"maxDateAsDate\"\n              placeholder=\"Pick a date\"\n              #startDatepicker=\"bsDatepicker\"\n              (ngModelChange)=\"jsonUpdation()\"\n              (keydown)=\"$event.preventDefault()\"\n            />\n            <i\n              id=\"startDateIcon\"\n              class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n              (click)=\"startDatepicker.show()\"\n              style=\"cursor: pointer\"\n            ></i>\n          </div>\n          <div\n            *ngIf=\"\n              dateType === 'DATE_AND_TIME' &&\n              (minDate != null ||\n                selectedMinDateOption[0]?.value === 'CURRENT_DATE')\n            \"\n          >\n            <label class=\"appearanceLabel\" for=\"endDate\">Minimum time</label>\n            <lib-dropdown\n              [placeholder]=\"'Minimum time'\"\n              [items]=\"timeOptions\"\n              [(selectedItems)]=\"selectedMinTimeOption\"\n              (click)=\"changeMinTimeOption()\"\n            ></lib-dropdown>\n            <div\n              class=\"input-container\"\n              *ngIf=\"selectedMinTimeOption[0]?.value == 'CUSTOM'\"\n            >\n              <input\n                class=\"form-control height appearanceInput mt-3\"\n                aria-label=\"Select time\"\n                placeholder=\"Select time\"\n                readonly\n                [format]=\"\n                  selectedTimeFormateFormat[0]?.value === '24' ? 24 : 12\n                \"\n                [ngxTimepicker]=\"fullTime3\"\n                [(ngModel)]=\"minTime\"\n                *ngIf=\"sameMaxDate; else noMaxTime\"\n                [max]=\"maxTime\"\n                (ngModelChange)=\"jsonUpdation()\"\n              />\n              <ng-template #noMaxTime>\n                <input\n                  class=\"form-control height appearanceInput mt-3\"\n                  aria-label=\"Select time\"\n                  placeholder=\"Select time\"\n                  readonly\n                  [format]=\"\n                    selectedTimeFormateFormat[0]?.value === '24' ? 24 : 12\n                  \"\n                  [ngxTimepicker]=\"fullTime7\"\n                  [(ngModel)]=\"minTime\"\n                  (ngModelChange)=\"jsonUpdation()\"\n                />\n              </ng-template>\n              <i\n                id=\"startDateIcon\"\n                class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n                (click)=\"sameDate ? fullTime3.open() : fullTime7.open()\"\n                style=\"cursor: pointer\"\n              ></i>\n              <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\n              <ngx-material-timepicker #fullTime7></ngx-material-timepicker>\n            </div>\n          </div>\n        </div>\n        <div>\n          <label class=\"appearanceLabel\" for=\"endDate\">Maximum date</label>\n          <lib-dropdown\n            [placeholder]=\"'Max date'\"\n            [items]=\"dateOptions\"\n            [(selectedItems)]=\"selectedMaxDateOption\"\n            (click)=\"changeMaxDateOption()\"\n          ></lib-dropdown>\n\n          <div\n            class=\"input-container\"\n            *ngIf=\"selectedMaxDateOption[0]?.value == 'CUSTOM'\"\n          >\n            <input\n              id=\"endDate\"\n              type=\"text\"\n              class=\"form-control height appearanceInput mt-3\"\n              [bsConfig]=\"{\n                                dateInputFormat: format,\n                            }\"\n              bsDatepicker\n              [(ngModel)]=\"maxDate\"\n              [bsConfig]=\"bsConfig\"\n              [minDate]=\"minDateAsDate\"\n              placeholder=\"Pick a date\"\n              #endDatepicker=\"bsDatepicker\"\n              (ngModelChange)=\"jsonUpdation()\"\n              (keydown)=\"$event.preventDefault()\"\n            />\n            <i\n              id=\"endDate\"\n              class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n              (click)=\"endDatepicker.show()\"\n              style=\"cursor: pointer\"\n            ></i>\n          </div>\n          <div\n            *ngIf=\"\n              dateType === 'DATE_AND_TIME' &&\n              (maxDate != null ||\n                selectedMaxDateOption[0]?.value == 'CURRENT_DATE')\n            \"\n          >\n            <label class=\"appearanceLabel\" for=\"endDate\">Maximum time</label>\n            <lib-dropdown\n              [placeholder]=\"'Maximum time'\"\n              [items]=\"timeOptions\"\n              [(selectedItems)]=\"selectedMaxTimeOption\"\n              (click)=\"changeMaxTimeOption()\"\n            ></lib-dropdown>\n            <div\n              class=\"input-container\"\n              *ngIf=\"selectedMaxTimeOption[0]?.value == 'CUSTOM'\"\n            >\n              <input\n                class=\"form-control height appearanceInput mt-3\"\n                aria-label=\"Select time\"\n                placeholder=\"Select time\"\n                readonly\n                [format]=\"\n                  selectedTimeFormateFormat[0]?.value === '24' ? 24 : 12\n                \"\n                [ngxTimepicker]=\"fullTime4\"\n                [(ngModel)]=\"maxTime\"\n                *ngIf=\"sameMinDate; else noMinTime\"\n                [min]=\"minTime\"\n                (ngModelChange)=\"jsonUpdation()\"\n              />\n              <ng-template #noMinTime>\n                <input\n                  class=\"form-control height appearanceInput mt-3\"\n                  aria-label=\"Select time\"\n                  placeholder=\"Select time\"\n                  readonly\n                  [format]=\"\n                    selectedTimeFormateFormat[0]?.value === '24' ? 24 : 12\n                  \"\n                  [ngxTimepicker]=\"fullTime6\"\n                  [(ngModel)]=\"maxTime\"\n                  (ngModelChange)=\"jsonUpdation()\"\n                />\n              </ng-template>\n              <i\n                id=\"startDateIcon\"\n                class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n                (click)=\"sameDate ? fullTime4.open() : fullTime6.open()\"\n                style=\"cursor: pointer\"\n              ></i>\n              <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\n              <ngx-material-timepicker #fullTime6></ngx-material-timepicker>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div *ngIf=\"dateType === 'TIME_ONLY'\">\n        <div>\n          <label class=\"appearanceLabel\" for=\"endDate\">Minimum time</label>\n          <lib-dropdown\n            [placeholder]=\"'Minimum time'\"\n            [items]=\"timeOptions\"\n            [(selectedItems)]=\"selectedMinTimeOption\"\n            (click)=\"changeMinTimeOption()\"\n          ></lib-dropdown>\n          <div\n            class=\"input-container\"\n            *ngIf=\"selectedMinTimeOption[0]?.value == 'CUSTOM'\"\n          >\n            <input\n              class=\"form-control height appearanceInput mt-3\"\n              aria-label=\"Select time\"\n              placeholder=\"Select time\"\n              readonly\n              [format]=\"selectedTimeFormateFormat[0]?.value === '24' ? 24 : 12\"\n              [ngxTimepicker]=\"fullTime2\"\n              [(ngModel)]=\"minTime\"\n              [max]=\"maxTime\"\n              (ngModelChange)=\"jsonUpdation()\"\n              (timeChange)=\"onTimeChange($event)\"\n            />\n            <i\n              id=\"startDateIcon\"\n              class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n              (click)=\"fullTime2.open()\"\n              style=\"cursor: pointer\"\n            ></i>\n            <ngx-material-timepicker #fullTime2></ngx-material-timepicker>\n          </div>\n        </div>\n        <div class=\"input-container\">\n          <label class=\"appearanceLabel\" for=\"endDate\">Maximum time</label>\n          <lib-dropdown\n            [placeholder]=\"'Maximum time'\"\n            [items]=\"timeOptions\"\n            [(selectedItems)]=\"selectedMaxTimeOption\"\n            (click)=\"changeMaxTimeOption()\"\n          ></lib-dropdown>\n          <div\n            class=\"input-container\"\n            *ngIf=\"selectedMaxTimeOption[0]?.value == 'CUSTOM'\"\n          >\n            <input\n              class=\"form-control height appearanceInput mt-3\"\n              aria-label=\"Select time\"\n              placeholder=\"Select time\"\n              readonly\n              [format]=\"selectedTimeFormateFormat[0]?.value === '24' ? 24 : 12\"\n              [min]=\"minTime\"\n              [ngxTimepicker]=\"fullTime5\"\n              [(ngModel)]=\"maxTime\"\n              (ngModelChange)=\"jsonUpdation()\"\n            />\n            <i\n              id=\"startDateIcon\"\n              class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n              (click)=\"fullTime5.open()\"\n              style=\"cursor: pointer\"\n            ></i>\n            <ngx-material-timepicker #fullTime5></ngx-material-timepicker>\n          </div>\n        </div>\n      </div>\n      <div *ngIf=\"dateType === 'MONTH_YEAR'\" class=\"row align-items-center input-container\">\n        <label class=\"form-label d-block  mb-2 \">Year Range</label>\n        <div class=\"col-md-6\">\n          <input\n            id=\"startDate\"\n            class=\"form-control height appearanceInput\"\n            [bsConfig]=\"{\n              containerClass: 'theme-dark-blue',\n              isAnimated: true,\n              adaptivePosition: true,\n              showWeekNumbers: false,\n              minMode: 'year',\n              dateInputFormat: 'YYYY'\n            }\"\n            bsDatepicker\n            [(ngModel)]=\"minDate\"\n            placeholder=\"From\"\n            [maxDate]=\"maxDateAsDate\"\n            #startDatepickerYear=\"bsDatepicker\"\n            (ngModelChange)=\"jsonUpdation()\"\n            (keydown)=\"$event.preventDefault()\"\n          />\n        </div>\n      \n        <!-- End Date Column -->\n        <div class=\"col-md-6\">\n          <input\n            id=\"endDate\"\n            class=\"form-control height appearanceInput\"\n            [bsConfig]=\"{\n              containerClass: 'theme-dark-blue',\n              isAnimated: true,\n              adaptivePosition: true,\n              showWeekNumbers: false,\n              minMode: 'year',\n              dateInputFormat: 'YYYY'\n            }\"\n            bsDatepicker\n            [(ngModel)]=\"maxDate\"\n            placeholder=\"To\"\n            [minDate]=\"minDateAsDate\"\n            #endDatepickerYear=\"bsDatepicker\"\n            (ngModelChange)=\"jsonUpdation()\"\n            (keydown)=\"$event.preventDefault()\"\n          />\n        </div>\n      </div>\n      \n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-drop-down-fields-properties',\n  templateUrl: './drop-down-fields-properties.component.html',\n  styleUrls: ['./drop-down-fields-properties.component.scss'],\n})\nexport class DropDownFieldsPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any ;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  @Output() questionPropertiesUpdated = new EventEmitter<any>();\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  selectionType: string = '';\n  maxValue: string = '';\n  minValue: string = '';\n\n  ngOnInit() {\n    this.maxValue = '';\n    this.minValue = '';\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.maxValue = '';\n      this.minValue = '';\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    if (this.selectionType == 'SINGLE') {\n      return;\n    }\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.selectionType = this.questionProperties?.appearance.selectionType;\n    if (this.questionProperties?.validation.maximumSelection) {\n      this.maxValue = this.questionProperties?.validation.maximumSelection;\n    }\n    if (this.questionProperties?.validation.minimumSelection) {\n      this.minValue = this.questionProperties.validation.minimumSelection;\n    }\n    if(this.selectionType=='SINGLE'){\n      this.ValidationOpened=false;\n    }\n  }\n  jsonUpdation() {\n    this.questionProperties.appearance.selectionType = this.selectionType;\n    if (this.selectionType == 'SINGLE') {\n      this.ValidationOpened = false;\n    }\n    this.questionPropertiesUpdated.emit(this.questionProperties);\n  }\n\n  changeMaxValue(event: any) {\n    this.questionProperties.validation.maximumSelection = event.target.value;\n    this.questionPropertiesUpdated.emit(this.questionProperties);\n  }\n\n  changeMinValue(event: any) {\n    this.questionProperties.validation.minimumSelection = event.target.value;\n    this.questionPropertiesUpdated.emit(this.questionProperties);\n  }\n}\n","<p class=\"field-title\">Dropdown</p>\n<div class=\"appearance-div\">\n  <div class=\"properties-header\" (click)=\"openAppearance()\">\n    <p class=\"title\">Appearance</p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\" />\n    </div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n    </div>\n  </div>\n\n  <div\n    class=\"appearances\"\n    [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n  >\n    <div class=\"content\">\n      <ul>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"radio\"\n              name=\"type\"\n              id=\"singleSelection\"\n              [(ngModel)]=\"selectionType\"\n              (ngModelChange)=\"jsonUpdation()\"\n              value=\"SINGLE\"\n              [attr.data-value]=\"selectionType=='SINGLE'\"\n            />\n            <label for=\"singleSelection\" class=\"form-check-label\"\n              >Single selection</label\n            >\n          </div>\n        </li>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"radio\"\n              name=\"type\"\n              id=\"multiSelection\"\n              [(ngModel)]=\"selectionType\"\n              (ngModelChange)=\"jsonUpdation()\"\n              value=\"MULTIPLE\"\n              [attr.data-value]=\"selectionType=='MULTIPLE'\"\n            />\n            <label for=\"multiSelection\" class=\"form-check-label\"\n              >Multi selection</label\n            >\n          </div>\n        </li>\n      </ul>\n    </div>\n  </div>\n</div>\n<div class=\"Validation-div\" [ngClass]=\"{ closed: selectionType === 'SINGLE' }\">\n  <div class=\"properties-header\" (click)=\"openValidation()\">\n    <p class=\"title\" [ngClass]=\"{ fadeValidation: selectionType === 'SINGLE' }\">\n      Validation\n    </p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n      *ngIf=\"selectionType != 'SINGLE'\"\n    >\n      <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\" />\n    </div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n    >\n      <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n    </div>\n  </div>\n\n  <div\n    class=\"Validation\"\n    [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n  >\n    <div class=\"content\">\n      <label class=\"appearanceLabel\">Max selection</label>\n      <input\n        type=\"number\"\n        class=\"form-control\"\n        (input)=\"changeMaxValue($event)\"\n        [(ngModel)]=\"maxValue\"\n      />\n      <label class=\"appearanceLabel\">Min selection</label>\n      <input\n        type=\"number\"\n        class=\"form-control\"\n        (input)=\"changeMinValue($event)\"\n        [(ngModel)]=\"minValue\"\n      />\n    </div>\n  </div>\n</div>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-file-picker-field-properties',\n  templateUrl: './file-picker-field-properties.component.html',\n  styleUrls: ['./file-picker-field-properties.component.scss'],\n})\nexport class FilePickerFieldPropertiesComponent implements OnInit, OnChanges {\n\n  @Input() questionProperties: any = {};\n  @Input() selectedQuestionId = '';\n  @Input() translations: any = [];\n\n   // UI State\n   appearanceOpened = false;\n   validationOpened = false;\n \n   // Appearance Properties\n   dragAndDrop = false;\n   multiFileUploads = false;\n   previewUploadedFiles = false;\n   avatarPicker = false;\n \n   // Validation Properties\n   selectedFileType: any[] = [];\n   selectedFileSizeUnit: any[] = [];\n   fileSize = 2;\n   totalFileSize = 10; // Default fallback value\n \n   fileSizes = CONSTANTS.fileSizes;\n   fileTypes = CONSTANTS.fileTypes;\n\n  ngOnInit() {\n    this.initFileTypeAndSize();\n    this.valueAssigned(); // Update values from JSON\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['questionProperties']) {\n      this.initFileTypeAndSize();\n      this.valueAssigned();\n    }\n  }\n\n  initFileTypeAndSize() {\n    // Check if `validation.fileTypes` has values, and assign accordingly\n    if (this.questionProperties?.formElement.validation?.fileTypes?.length) {      \n      this.selectedFileType = this.fileTypes.filter(fileType =>\n        this.questionProperties.formElement.validation.fileTypes.includes(fileType.value)\n      );\n    } else {\n      // If no file types in validation, bind all file types\n      this.selectedFileType = [...this.fileTypes];\n    }\n\n    // Check if `validation.fileSizeUnit` has values, and assign accordingly\n    if (this.questionProperties?.formElement.validation?.fileSizeUnit?.length) {\n      this.selectedFileSizeUnit = this.fileSizes.filter(fileSize =>\n        this.questionProperties.formElement.validation.fileSizeUnit.includes(fileSize.value)\n      );      \n    } else {\n      this.selectedFileSizeUnit = [{ value: 'MB', label: 'MB', image: '' }];\n      this.questionProperties.formElement.validation.fileSizeUnit = this.selectedFileSizeUnit[0]?.value;\n    }\n\n    if(this.questionProperties?.formElement.validation?.totalFileSize){\n      this.totalFileSize=this.questionProperties.formElement.validation.totalFileSize;\n    }\n    else{\n      this.totalFileSize=10;\n    }\n\n    this.jsonUpdation('update');\n  }\n\n  openAppearance() {\n    this.appearanceOpened = !this.appearanceOpened;\n  }\n\n  openValidation() {\n    this.validationOpened = !this.validationOpened;\n  }\n\n  valueAssigned() {\n    const appearance = this.questionProperties?.formElement.appearance || {};\n    const validation = this.questionProperties?.formElement.validation || {};\n\n    // Set appearance properties\n    this.dragAndDrop = appearance.dragAndDrop || false;\n    this.multiFileUploads = appearance.multiFileUploads || false;\n    this.previewUploadedFiles = appearance.previewUploadedFiles || false;\n    this.avatarPicker = appearance.avatarPicker || false;\n\n    // Set validation properties\n    this.fileSize = validation.fileSize || 0;\n    this.totalFileSize = validation.totalFileSize !== undefined ? validation.totalFileSize : 10; // Get value from JSON or fallback to 1000\n\n    // Set file size unit\n    this.selectedFileSizeUnit = this.fileSizes.filter(size => size.value === validation.fileSizeUnit);\n  }\n\n  propertyUpdation(type: string, data: any)  {\n    if(type === 'dragAndDrop') {\n      this.dragAndDrop = data;\n    } else if(type === 'previewUploadedFiles') {\n      this.previewUploadedFiles =data;\n    } else if(type === 'avatarPicker') {\n      this.avatarPicker = data;\n    } else if(type === 'multiFileUploads') {\n      this.multiFileUploads = data;\n    } else if(type === 'totalFileSize') {\n      this.totalFileSize = data\n    } else if(type === 'fileSize') {\n      this.fileSize = data;\n    }\n\n    if (this.avatarPicker) {\n      this.dragAndDrop = false;\n      this.multiFileUploads = false;\n      this.previewUploadedFiles = false;\n    }\n\n    const appearance = this.questionProperties?.formElement.appearance || {};\n\n    // Update appearance\n      appearance.dragAndDrop = this.dragAndDrop;\n      appearance.multiFileUploads = this.multiFileUploads;\n      appearance.previewUploadedFiles = this.previewUploadedFiles;\n      appearance.avatarPicker = this.avatarPicker;\n    // this.jsonUpdation('update');\n  }\n\n  jsonUpdation(action?: string) {\n    const appearance = this.questionProperties?.formElement.appearance || {};\n    const validation = this.questionProperties?.formElement.validation || {};\n\n    // Update appearance\n    // if(action === 'update') {\n    //   appearance.dragAndDrop = this.dragAndDrop;\n    //   appearance.multiFileUploads = this.multiFileUploads;\n    //   appearance.previewUploadedFiles = this.previewUploadedFiles;\n    //   appearance.avatarPicker = this.avatarPicker;\n    // }\n\n    \n\n    // Update validation\n    if(action === 'update') {\n      validation.fileSize = this.fileSize;\n      validation.totalFileSize = this.totalFileSize;      \n      if (this.selectedFileType.length) {\n        validation.fileTypes = this.selectedFileType.map(file => file.value);\n      }else{\n        validation.fileTypes=[];\n      }\n      validation.fileSizeUnit = this.selectedFileSizeUnit[0]?.value || '';\n    }    \n  }\n\n  changeFileType() {\n    this.jsonUpdation('update'); // Directly update the file types based on the selected values\n  }\n\n  changeFileSize() {\n    this.jsonUpdation('update'); // Update file size unit on change\n  }\n}","<p class=\"field-title\">File Picker</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\"  (click)=\"openAppearance()\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': appearanceOpened, 'closed': !appearanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': appearanceOpened, 'closed': !appearanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': appearanceOpened, 'closed': !appearanceOpened}\">\n        <div class=\"content\">\n            <ul>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"avatarPicker\"\n                    [(ngModel)]=\"avatarPicker\" (ngModelChange)=\"propertyUpdation('avatarPicker', $event)\"\n                    [attr.data-value]=\"avatarPicker\">\n                    <label class=\"form-check-label\" for=\"avatarPicker\">\n                        Avatar Picker\n                    </label>\n                </div>\n            </li> \n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox1\"\n                    [(ngModel)]=\"dragAndDrop\" (ngModelChange)=\"propertyUpdation('dragAndDrop', $event)\"  [disabled]=\"avatarPicker\"\n                    [attr.data-value]=\"dragAndDrop\">\n                    <label class=\"form-check-label\" for=\"checkbox1\">\n                        Drag and drop\n                    </label>\n                </div>\n            </li> \n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox2\"\n                    [(ngModel)]=\"previewUploadedFiles\" (ngModelChange)=\"propertyUpdation('previewUploadedFiles', $event)\"  [disabled]=\"avatarPicker\"\n                    [attr.data-value]=\"previewUploadedFiles\">\n                    <label class=\"form-check-label\" for=\"checkbox2\">\n                        Preview uploaded files\n                    </label>\n                </div>\n            </li> \n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox3\"\n                    [(ngModel)]=\"multiFileUploads\" (ngModelChange)=\"propertyUpdation('multiFileUploads', $event)\"  [disabled]=\"avatarPicker\"\n                    [attr.data-value]=\"multiFileUploads\">\n                    <label class=\"form-check-label\" for=\"checkbox3\">\n                        Multi file uploads\n                    </label>\n                </div>\n            </li>\n            </ul>\n        </div>    \n    </div>\n</div>\n<div class=\"Validation-div\">\n    <div class=\"properties-header\"  (click)=\"openValidation()\">\n        <p class=\"title\">Validation</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': validationOpened, 'closed': !validationOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': validationOpened, 'closed': !validationOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\" [ngClass]=\"{'opened': validationOpened, 'closed': !validationOpened}\">\n        <div class=\"content\">\n            <div *ngIf=\"!avatarPicker\">\n                <label class=\"appearanceLabel\">File type</label>\n                <lib-dropdown\n                [placeholder]=\"'select'\"\n                [items]=\"fileTypes\"\n                [(selectedItems)]=\"selectedFileType\"\n                (click)=\"changeFileType()\"\n                [multiple]=\"true\"></lib-dropdown>\n            </div>\n            <div class=\"row\">\n                <label class=\"appearanceLabel\">File size</label>\n                <div class=\"col-6\">\n                    <input type=\"number\" class=\"appearanceInput\" placeholder=\"\"\n                    [(ngModel)]=\"fileSize\" (ngModelChange)=\"jsonUpdation('update')\">\n                </div>\n                <div class=\"col-6\">\n                    <lib-dropdown \n                    [placeholder]=\"'select'\"\n                    [items]=\"fileSizes\"\n                    [(selectedItems)]=\"selectedFileSizeUnit\"\n                    (click)=\"changeFileSize()\"></lib-dropdown>\n                </div>\n            </div>\n            <div *ngIf=\"!avatarPicker\">\n                <label class=\"appearanceLabel\">Total file size</label>\n                <input type=\"number\" class=\"appearanceInput\" placeholder=\"\"\n                [(ngModel)]=\"totalFileSize\" (ngModelChange)=\"jsonUpdation('update')\">\n            </div>            \n        </div>            \n    </div>\n</div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-signature-field-properties',\n  templateUrl: './signature-field-properties.component.html',\n  styleUrls: ['./signature-field-properties.component.scss'],\n})\nexport class SignatureFieldPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  selectedOption: string = '';\n  fileMaxSize: number = 0;\n  fileMinSize: number = 0;\n  ngOnInit(): void {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.fileMaxSize = this.questionProperties.validation.maxFileSize;\n    this.fileMinSize = this.questionProperties.validation.minFileSize;\n    this.selectedOption = this.questionProperties.appearance.canvasOption;\n  }\n  jsonUpdation() {\n    this.questionProperties.validation.maxFileSize = this.fileMaxSize;\n    this.questionProperties.validation.minFileSize = this.fileMinSize;\n    this.questionProperties.appearance.canvasOption = this.selectedOption;\n  }\n}\n","<p class=\"field-title\">Signature</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\" (click)=\"openAppearance()\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\">\n        </div>\n        <div class=\"up-arrow\" (click)=\"openAppearance()\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n        <ul>\n            <li>\n                <div class=\"form-check\">\n                <input class=\"\" type=\"radio\" name=\"type\" id=\"canvas\" [(ngModel)]=\"selectedOption\" value=\"CANVAS\"\n                (ngModelChange)=\"jsonUpdation()\" [attr.data-value]=\"selectedOption=='CANVAS'\">\n                <label for=\"canvas\" class=\"form-check-label\">Canvas</label>\n                </div>\n            </li>\n            <li>\n                <div class=\"form-check\">\n                <input class=\"\" type=\"radio\" name=\"type\" id=\"canvas-upload\" [(ngModel)]=\"selectedOption\" value=\"CANVAS_AND_UPLOAD\"\n                (ngModelChange)=\"jsonUpdation()\" [attr.data-value]=\"selectedOption=='CANVAS_AND_UPLOAD'\">\n                <label for=\"canvas-upload\" class=\"form-check-label\">Canvas and upload</label>\n                </div>\n            </li>\n        </ul>\n    </div>\n    </div>\n</div>\n<div class=\"Validation-div\">\n    <div class=\"properties-header\">\n        <p class=\"title\">Validation</p>\n        <div class=\"down-arrow\" (click)=\"openValidation()\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\">\n        </div>\n        <div class=\"up-arrow\" (click)=\"openValidation()\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\" [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <div class=\"content\">\n            <label class=\"appearanceLabel\">Max file size</label>\n            <input type=\"number\" class=\"appearanceInput\" id=\"maxFileSize\" [(ngModel)]=\"fileMaxSize\" (ngModelChange)=\"jsonUpdation()\">\n            <label class=\"appearanceLabel\">Min file size</label>\n            <input type=\"number\" class=\"appearanceInput\" id=\"minFileSize\" [(ngModel)]=\"fileMinSize\" (ngModelChange)=\"jsonUpdation()\">\n        </div>\n    </div>\n</div>","import {\n  Component,\n  Input,\n  ViewChild,\n  ElementRef,\n  SimpleChanges,\n  OnChanges,\n} from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-slider-field-properties',\n  templateUrl: './slider-field-properties.component.html',\n  styleUrls: ['./slider-field-properties.component.scss'],\n})\nexport class SliderFieldPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  @ViewChild('colorPickerInput') colorPickerInput!: ElementRef;\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  minInputValue!: number;\n  maxInputValue!: number;\n  stepInputValue!: number;\n  changeSliderColor!: boolean;\n  sliderColor: string = '';\n  \n  ngOnInit() {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    // this.ValidationOpened=!this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.minInputValue = this.questionProperties.appearance.minValue;\n    this.maxInputValue = this.questionProperties.appearance.maxValue;\n    this.stepInputValue = this.questionProperties.appearance.stepValue;\n    this.changeSliderColor =\n      this.questionProperties.appearance.changeSliderColor;\n    this.sliderColor = this.questionProperties.appearance.sliderColor;\n  }\n  jsonUpdation() {\n    this.questionProperties.appearance.minValue = this.minInputValue;\n    this.questionProperties.appearance.maxValue = this.maxInputValue;\n    this.questionProperties.appearance.stepValue = this.stepInputValue;\n    this.questionProperties.appearance.changeSliderColor =\n      this.changeSliderColor;\n    this.questionProperties.appearance.sliderColor = this.sliderColor;\n    if(this.changeSliderColor) {\n      this.openColorPicker();\n    }\n  }\n  openColorPicker() {\n    this.changeSliderColor = true;\n    setTimeout(() => {\n      this.colorPickerInput.nativeElement.focus();\n    });\n  }\n}\n","<p class=\"field-title\">Slider</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\" (click)=\"openAppearance()\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n            <label class=\"appearanceLabel\">Min</label>\n            <input class=\"appearanceInput\" type=\"text\" [(ngModel)]=\"minInputValue\" (ngModelChange)=\"jsonUpdation()\">\n            <label class=\"appearanceLabel\">Max</label>\n            <input class=\"appearanceInput\" type=\"text\" [(ngModel)]=\"maxInputValue\" (ngModelChange)=\"jsonUpdation()\">\n            <label class=\"appearanceLabel\">Step</label>\n            <input class=\"appearanceInput\" type=\"text\" [(ngModel)]=\"stepInputValue\" (ngModelChange)=\"jsonUpdation()\">\n            <ul>\n                <li>\n                    <div class=\"form-check\">\n                        <input class=\"\" type=\"checkbox\" id=\"checkbox1\" [(ngModel)]=\"changeSliderColor\"\n                            (ngModelChange)=\"jsonUpdation()\" [attr.data-value]=\"changeSliderColor\">\n                        <label class=\"form-check-label\" for=\"checkbox1\">\n                            Change Slider colour\n                        </label>\n                    </div>\n                </li>\n            </ul>\n            <!-- <img src=\"/assets/icons/color-picker-icon.svg\" alt=\"Color Picker Icon\" (click)=\"openColorPicker()\" *ngIf=\"changeSliderColor\"> -->\n            <div class=\"row align-items-center\" *ngIf=\"changeSliderColor\">\n                <div class=\"col-auto\">\n                    <p class=\"col-auto mb-0 select-text\">Selected color</p>\n                    <input #colorPickerInput [(colorPicker)]=\"sliderColor\" [style.background]=\"sliderColor\"\n                        class=\"custom-color-picker\" [cpToggle]=\"true\" [cpDialogDisplay]=\"'inline'\"\n                        (colorPickerChange)=\"jsonUpdation()\">\n                </div>\n            </div>\n        </div>\n\n    </div>\n</div>\n<div class=\"Validation-div  disable-div\">\n    <div class=\"properties-header\" (click)=\"openValidation()\">\n        <p class=\"title fadeValidation\">Validation</p>\n        <div class=\"down-arrow\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\" [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <div class=\"content\">\n\n        </div>\n    </div>\n</div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-location-field-properties',\n  templateUrl: './location-field-properties.component.html',\n  styleUrls: ['./location-field-properties.component.scss'],\n})\nexport class LocationFieldPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  setCurrentPosition!: boolean;\n  fullScreen!: boolean;\n  regionBoundary!: boolean;\n  zoomLevel!: number;\n  markRegion: string = '';\n  latitude!: number;\n  longitude!: number;\n\n  ngOnInit() {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.setCurrentPosition =\n      this.questionProperties?.appearance.setCurrentPosition;\n    this.fullScreen = this.questionProperties?.appearance.allowFullScreen;\n    this.regionBoundary = this.questionProperties?.validation.regionBoundary;\n    this.zoomLevel = this.questionProperties?.appearance.defaultZoomLevel;\n    this.latitude = this.questionProperties?.appearance.latitude;\n    this.longitude = this.questionProperties?.appearance.longitude;\n    this.markRegion = this.questionProperties?.validation.region;\n  }\n  jsonUpdation() {\n    this.questionProperties.appearance.setCurrentPosition =\n      this.setCurrentPosition;\n    this.questionProperties.appearance.allowFullScreen = this.fullScreen;\n    this.questionProperties.validation.regionBoundary = this.regionBoundary;\n    this.questionProperties.appearance.defaultZoomLevel = this.zoomLevel;\n    this.questionProperties.appearance.latitude = this.latitude;\n    this.questionProperties.appearance.longitude = this.longitude;\n    this.questionProperties.validation.region = this.markRegion;\n  }\n}\n","<p class=\"field-title\">Location</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\" (click)=\"openAppearance()\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\">\n        </div>\n        <div class=\"up-arrow\" (click)=\"openAppearance()\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n        <ul>\n        <li>\n            <div class=\"form-check\">\n                <input class=\"\" type=\"checkbox\" id=\"checkbox1\"\n                 [(ngModel)]=\"setCurrentPosition\" (ngModelChange)=\"jsonUpdation()\"\n                 [attr.data-value]=\"setCurrentPosition\">\n                <label class=\"form-check-label\" for=\"checkbox1\">\n                    Set current position\n                </label>\n            </div> \n        </li>              \n        <li>    \n            <div class=\"form-check\">\n                <input class=\"\" type=\"checkbox\" id=\"checkbox2\"\n                [(ngModel)]=\"fullScreen\" (ngModelChange)=\"jsonUpdation()\"\n                [attr.data-value]=\"fullScreen\">\n                <label class=\"form-check-label\" for=\"checkbox2\">\n                    Allow full screen\n                </label>\n            </div>\n        </li>    \n        </ul>\n        <label class=\"appearanceLabel\">Default zoom level</label>\n        <input class=\"appearanceInput\" type=\"text\" name=\"type\" id=\"\"\n        [(ngModel)]=\"zoomLevel\" (ngModelChange)=\"jsonUpdation()\">\n    </div>\n    </div>\n</div>\n<div class=\"Validation-div\">\n    <div class=\"properties-header\">\n        <p class=\"title\">Validation</p>\n        <div class=\"down-arrow\" (click)=\"openValidation()\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\">\n        </div>\n        <div class=\"up-arrow\" (click)=\"openValidation()\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\" [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <div class=\"content\">\n            <ul>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox3\"\n                    [(ngModel)]=\"regionBoundary\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"regionBoundary\">\n                    <label class=\"form-check-label\" for=\"checkbox3\">\n                        Region boundary\n                    </label>\n                </div>\n            </li>    \n            </ul>\n            <input class=\"appearanceInput\" type=\"text\" name=\"type\" id=\"\"\n            placeholder=\"Pick or mark region\"\n            [(ngModel)]=\"markRegion\" (ngModelChange)=\"jsonUpdation()\">\n        </div>\n    </div>\n</div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-terms-and-condition-field-properties',\n  templateUrl: './terms-and-condition-field-properties.component.html',\n  styleUrls: ['./terms-and-condition-field-properties.component.scss'],\n})\nexport class TermsAndConditionFieldPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  proceeding: boolean = false;\n  acceptButton: boolean = true;\n\n  ngOnInit() {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.proceeding =\n      this.questionProperties.validation.preventFromProceedingWithoutAgree;\n    this.acceptButton = this.questionProperties.appearance.showAcceptButton;\n  }\n  jsonUpdation() {\n    this.questionProperties.validation.preventFromProceedingWithoutAgree =\n      this.proceeding;\n    this.questionProperties.appearance.showAcceptButton = this.acceptButton;\n  }\n}\n","<p class=\"field-title\">Terms And Condition</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\" (click)=\"openAppearance()\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\" (click)=\"openAppearance()\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n            <ul>\n                <li>\n            <div class=\"form-check\">\n                <input class=\"\" type=\"checkbox\" id=\"checkbox1\"\n                    [(ngModel)]=\"acceptButton\" (ngModelChange)=\"jsonUpdation()\" [attr.data-value]=\"acceptButton\">\n                <label class=\"form-check-label\" for=\"checkbox1\">\n                    Show accept button\n                </label>\n            </div>\n            </li>\n            </ul>\n        </div>\n    </div>\n</div>\n<div class=\"Validation-div\">\n    <div class=\"properties-header\">\n        <p class=\"title\">Validation</p>\n        <div class=\"down-arrow\" (click)=\"openValidation()\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\" (click)=\"openValidation()\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\"  [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <div class=\"content\">\n            <ul>\n                <li>\n            <div class=\"form-check\">\n                <input class=\"\" type=\"checkbox\" id=\"checkbox12\"\n                    [(ngModel)]=\"proceeding\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"proceeding\">\n                <label class=\"form-check-label\" for=\"checkbox1\">\n                    Prevent from proceeding without agree\n                </label>\n            </div>\n            </li>\n            </ul>\n        </div>\n    </div>\n</div>","import {\n  Component,\n  Input,\n  ViewChild,\n  ElementRef,\n  SimpleChanges,\n  OnChanges,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-toggle-switch-field-properties',\n  templateUrl: './toggle-switch-field-properties.component.html',\n  styleUrls: ['./toggle-switch-field-properties.component.scss'],\n})\nexport class ToggleSwitchFieldPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  @ViewChild('firstcColorPickerInput') firstcColorPickerInput!: ElementRef;\n  @ViewChild('secondColorPickerInput') secondColorPickerInput!: ElementRef;\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  labelOnColor: string = '';\n  labelOnValue: string = '';\n  labelOffColor: string = '';\n  labelOffValue: string = '';\n  selectionColorOnRequired: boolean =  false;\n  selectionColorOffRequired: boolean =  false;\n  selectionColorRequired: boolean = false;\n  showError: boolean = false;\n  constructor(private cdr: ChangeDetectorRef) { }\n\n  ngOnInit() {\n    this.valueAssigned();\n    this.openColorPicker(1);\n    this.openColorPicker(2);\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    //this.ValidationOpened=!this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.labelOnValue = this.questionProperties.appearance.labelOnValue;\n    this.labelOffValue = this.questionProperties.appearance.labelOffValue;\n    this.labelOnColor = this.questionProperties.appearance.labelOnColor;\n    this.labelOffColor = this.questionProperties.appearance.labelOffColor;\n    this.selectionColorRequired = this.questionProperties.appearance.selectionColorRequired;\n    this.selectionColorOnRequired =\n      this.questionProperties.appearance.selectionColorOnRequired;\n      this.selectionColorOffRequired =\n      this.questionProperties.appearance.selectionColorOffRequired;\n      if(this.selectionColorOnRequired) {\n        this.openColorPicker(1);\n      }\n      if(this.selectionColorOffRequired) {\n        this.openColorPicker(2);\n      }\n  }\n  jsonUpdation() {\n    this.questionProperties.appearance.labelOnValue = this.labelOnValue;\n    this.questionProperties.appearance.labelOffValue = this.labelOffValue;\n    this.questionProperties.appearance.labelOnColor = this.labelOnColor;\n    this.questionProperties.appearance.labelOffColor = this.labelOffColor;\n    this.questionProperties.appearance.selectionColorOnRequired =\n    this.selectionColorOnRequired;\n    this.questionProperties.appearance.selectionColorOffRequired =\n    this.selectionColorOffRequired;\n    this.questionProperties.appearance.selectionColorRequired =\n    this.selectionColorRequired;\n  }\n  onSelectionColorChange(event: Event) {\n    const checkbox = event.target as HTMLInputElement;\n    const checked = checkbox.checked;\n  \n    if (checked && this.labelOnValue === '' && this.labelOffValue === '') {\n        this.showError = true;\n        this.questionProperties.appearance.selectionColorOnRequired  = false\n        this.selectionColorRequired = false;\n        setTimeout(() => {\n          checkbox.checked = false;\n        });\n        this.jsonUpdation();\n      } else{\n        this.showError = false;\n        this.questionProperties.appearance.selectionColorOnRequired  = true;\n        this.selectionColorRequired = checked;\n        this.jsonUpdation();\n      }\n    \n  \n  }\n  \n  openColorPicker(e: any) {\n    if (e == 1) {\n      //this.selectionColorOnRequired = true;\n      setTimeout(() => {\n        //this.firstcColorPickerInput.nativeElement.focus();\n      });\n    }\n    if (e == 2) {\n      setTimeout(() => {\n        //this.selectionColorOffRequired = true;\n        //this.secondColorPickerInput.nativeElement.focus();\n      });\n    }\n  }\n}\n","<p class=\"field-title\">Toggle Switch</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\" (click)=\"openAppearance()\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n            <input class=\"appearanceInput\" #firstLabel  type=\"text\" name=\"type\" placeholder=\"ON\" [(ngModel)]=\"labelOnValue\"\n                (ngModelChange)=\"jsonUpdation()\">\n            <input class=\"appearanceInput\" #secondLabel type=\"text\" name=\"type\" placeholder=\"OFF\" [(ngModel)]=\"labelOffValue\"\n                (ngModelChange)=\"jsonUpdation()\">\n\n            <ul>\n                <li>\n                    <div class=\"form-check\">\n                        <input class=\"\" type=\"checkbox\" id=\"checkbox3\"\n                        [checked]=\"selectionColorRequired\"\n                        (change)=\"onSelectionColorChange($event)\"\n                        [attr.data-value]=\"selectionColorRequired\">\n                        <label class=\"form-check-label\" for=\"checkbox3\">\n                            Selection colour\n                        </label>\n                    </div>\n                </li>\n                <li *ngIf=\"showError\">\n                    <p class=\"error-text\">Please provide label text</p>\n                </li>\n            </ul>\n            <ng-container *ngIf=\"selectionColorRequired\">\n                <ng-container *ngIf=\"labelOnValue\">\n                    <div class=\"form-check\">\n                        <input class=\"\" type=\"checkbox\" id=\"checkbox1\"\n                            [(ngModel)]=\"selectionColorOnRequired\" (ngModelChange)=\"jsonUpdation()\"\n                            [attr.data-value]=\"selectionColorOnRequired\">\n                        <label class=\"form-check-label\" for=\"checkbox1\">\n                            {{labelOnValue}}\n                        </label>\n                    </div>\n                    <div class=\"row align-items-center\" *ngIf=\"selectionColorOnRequired\">\n                        <div class=\"col-auto\">\n                            <p class=\"col-auto mb-0 select-text\">Selected color</p>\n                            <input #firstcColorPickerInput [(colorPicker)]=\"labelOnColor\" [cpToggle]=\"true\"\n                                [cpDialogDisplay]=\"'inline'\" [style.background]=\"labelOnColor\"\n                                class=\"custom-color-picker\" (colorPickerChange)=\"jsonUpdation()\" readonly/>\n                        </div>\n                    </div>\n                </ng-container>\n                <ng-container *ngIf=\"labelOffValue\">\n                    <div class=\"form-check\">\n                        <input class=\"\" type=\"checkbox\" id=\"checkbox2\"\n                            [(ngModel)]=\"selectionColorOffRequired\" (ngModelChange)=\"jsonUpdation()\"\n                            [attr.data-value]=\"selectionColorOffRequired\">\n                        <label class=\"form-check-label\" for=\"checkbox2\">\n                            {{labelOffValue}}\n                        </label>\n                    </div>\n                    <div class=\"row align-items-center\" *ngIf=\"selectionColorOffRequired\">\n                        <div class=\"col-auto\">\n                            <p class=\"col-auto mb-0 select-text\">Selected color</p>\n                            <input #secondColorPickerInput [(colorPicker)]=\"labelOffColor\" [cpToggle]=\"true\"\n                                [cpDialogDisplay]=\"'inline'\" [style.background]=\"labelOffColor\"\n                                class=\"custom-color-picker\" (colorPickerChange)=\"jsonUpdation()\" readonly/>\n                        </div>\n                    </div>\n                </ng-container>\n            </ng-container>\n        </div>\n    </div>\n</div>\n<div class=\"Validation-div disable-div\">\n    <div class=\"properties-header\" (click)=\"openValidation()\">\n        <p class=\"title fadeValidation\">Validation</p>\n        <div class=\"down-arrow\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\" [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <div class=\"content\">\n\n        </div>\n    </div>\n</div>","import { Component, ElementRef, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-selection-matrix-field-properties',\n  templateUrl: './selection-matrix-field-properties.component.html',\n  styleUrls: ['./selection-matrix-field-properties.component.scss'],\n})\nexport class SelectionMatrixFieldPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  @ViewChild('colorPickerInput') colorPickerInput!: ElementRef;\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  minInputSelection!: boolean;\n  minInputValue!: number;\n  selectionColorRequired!: boolean;\n  selectionColor: string = '';\n  constructor(private dataService: DataService) {}\n  ngOnInit() {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.selectionColorRequired =\n      this.questionProperties.appearance.selectionColorRequired;\n    this.selectionColor = this.questionProperties.appearance.selectionColor;\n    this.minInputSelection =\n      this.questionProperties.validation.minSelectionRequired;\n    this.minInputValue = this.questionProperties.validation.minSelectionValue;\n    this.dataService.setMinSelectionValue(this.questionProperties.validation.minSelectionValue);\n    if(this.selectionColorRequired) {\n      this.openColorPicker();\n    }\n  }\n  jsonUpdation() {\n    this.questionProperties.appearance.selectionColorRequired =\n      this.selectionColorRequired;\n    this.questionProperties.appearance.selectionColor = this.selectionColor;\n    this.questionProperties.validation.minSelectionRequired =\n      this.minInputSelection;\n    this.questionProperties.validation.minSelectionValue = this.minInputValue;\n    this.dataService.setMinSelectionValue(this.questionProperties.validation.minSelectionValue);\n  }\n\n  openColorPicker() {\n    this.selectionColorRequired = true;\n    setTimeout(() => {\n      this.colorPickerInput.nativeElement.focus();\n    });\n  }\n}\n","<p class=\"field-title\">Selection Matrix</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\" (click)=\"openAppearance()\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n        <ul>\n            <li>\n            <div class=\"form-check\">\n                <input class=\"\" type=\"checkbox\" id=\"checkbox1\"\n                [(ngModel)]=\"selectionColorRequired\" (ngModelChange)=\"jsonUpdation()\"\n                [attr.data-value]=\"selectionColorRequired\">\n                <label class=\"form-check-label\" for=\"checkbox1\">\n                    Selection colour\n                </label>\n            </div>\n            </li>\n        </ul>\n        <!-- <img *ngIf=\"selectionColorRequired\" src=\"/assets/icons/color-picker-icon.svg\" (click)=\"openColorPicker()\" > -->\n        <div class=\"row align-items-center\" *ngIf=\"selectionColorRequired\">\n            <div class=\"col-auto\">\n                <p class=\"col-auto mb-0 select-text\">Selected color</p>\n                <input\n                 #colorPickerInput\n                 [(colorPicker)]=\"selectionColor\" \n                 [cpToggle]=\"true\" [cpDialogDisplay]=\"'inline'\"\n                 [style.background]=\"selectionColor\"\n                 class=\"custom-color-picker\"\n                 (colorPickerChange)=\"jsonUpdation()\">\n                \n            </div>\n        </div>\n    </div>\n</div>\n</div>\n<div class=\"Validation-div\">\n    <div class=\"properties-header\" (click)=\"openValidation()\">\n        <p class=\"title\">Validation</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\" [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <div class=\"content\">\n            <ul>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox2\"\n                    [(ngModel)]=\"minInputSelection\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"minInputSelection\"\n                    >\n                    <label class=\"form-check-label\" for=\"checkbox2\">\n                        Minimum selection\n                    </label>\n                </div>\n            </li>\n            </ul>\n            <div *ngIf=\"minInputSelection\">\n                <input class=\"appearanceInput\" type=\"number\" name=\"type\" id=\"\"\n                [(ngModel)]=\"minInputValue\" (ngModelChange)=\"jsonUpdation()\">\n            </div>\n        </div>\n    </div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-text-area-field-properties',\n  templateUrl: './text-area-field-properties.component.html',\n  styleUrls: ['./text-area-field-properties.component.scss'],\n})\nexport class TextAreaFieldPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  NumberOfRows!: number;\n  charactersLimit!: boolean;\n  CountValue!: number;\n  ngOnInit() {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.NumberOfRows = this.questionProperties.appearance.numberOfRows;\n    this.CountValue = this.questionProperties.validation.count;\n    this.charactersLimit = this.questionProperties.validation.limitedCharacters;\n  }\n  jsonUpdation() {\n    this.questionProperties.appearance.numberOfRows = this.NumberOfRows;\n    this.questionProperties.validation.count = this.CountValue;\n    this.questionProperties.validation.limitedCharacters = this.charactersLimit;\n  }\n}\n","<p class=\"field-title\">Text Area</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\"  (click)=\"openAppearance()\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n            <label for=\"Numberofrows\" class=\"appearanceLabel\">Number of rows</label>\n            <input class=\"appearanceInput\" type=\"text\" name=\"Numberofrows\" id=\"Numberofrows\"\n            [(ngModel)]=\"NumberOfRows\" (ngModelChange)=\"jsonUpdation()\">\n        </div>\n    </div>\n</div>\n<div class=\"Validation-div\">\n    <div class=\"properties-header\"  (click)=\"openValidation()\">\n        <p class=\"title\">Validation</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\" [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <div class=\"content\">\n            <ul>\n                <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox1\"\n                    [(ngModel)]=\"charactersLimit\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"charactersLimit\">\n                    <label class=\"form-check-label\" for=\"checkbox1\">\n                        Limit characters\n                    </label>\n                </div>\n                </li>\n            </ul> \n            <div *ngIf=\"charactersLimit\">\n                <label for=\"Countfield\" class=\"appearanceLabel\">Count</label>\n                <input class=\"appearanceInput\" type=\"text\" name=\"Countfield\" id=\"Countfield\"\n                [(ngModel)]=\"CountValue\" (ngModelChange)=\"jsonUpdation()\">\n            </div>\n        </div>\n    </div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-rich-text-area-field-properties',\n  templateUrl: './rich-text-area-field-properties.component.html',\n  styleUrls: ['./rich-text-area-field-properties.component.scss'],\n})\nexport class RichTextAreaFieldPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  NumberOfRows!: number;\n  charactersLimit!: boolean;\n  CountValue!: number;\n  ngOnInit() {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.NumberOfRows = this.questionProperties.appearance.numberOfRows;\n    this.charactersLimit = this.questionProperties.validation.limitedCharacters;\n    this.CountValue = this.questionProperties.validation.count;\n  }\n  jsonUpdation() {\n    this.questionProperties.appearance.numberOfRows = this.NumberOfRows;\n    this.questionProperties.validation.limitedCharacters = this.charactersLimit;\n    this.questionProperties.validation.count = this.CountValue;\n  }\n}\n","<p class=\"field-title\">Rich Text Editor</p>\n<div class=\"appearance-div\">\n  <div class=\"properties-header\"  (click)=\"openAppearance()\">\n    <p class=\"title\">Appearance</p>\n    <div class=\"down-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\">\n      <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\">\n    </div>\n    <div class=\"up-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\">\n      <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\">\n    </div>\n  </div>\n  <div  class=\"appearances\" [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\">\n    <div class=\"content\">\n      <label class=\"appearanceLabel\">Number of rows</label>\n      <input class=\"appearanceInput\" type=\"text\" name=\"type\" id=\"\"\n      [(ngModel)]=\"NumberOfRows\"\n      (ngModelChange)=\"jsonUpdation()\">\n    </div>\n  </div>\n</div>\n<div class=\"Validation-div\">\n  <div class=\"properties-header\"  (click)=\"openValidation()\">\n    <p class=\"title\">Validation</p>\n    <div class=\"down-arrow\"\n      [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n      <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\">\n    </div>\n    <div class=\"up-arrow\"\n      [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n      <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\">\n    </div>\n  </div>\n  <div class=\"Validation\" [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\">\n    <div class=\"content\">\n      <ul>\n        <li>\n        <div class=\"form-check\">\n          <input class=\"\" type=\"checkbox\" id=\"checkbox1\"\n          [(ngModel)]=\"charactersLimit\" (ngModelChange)=\"jsonUpdation()\"\n          [attr.data-value]=\"charactersLimit\">\n          <label class=\"form-check-label\" for=\"checkbox1\">\n            Limit characters\n          </label>\n        </div>\n      </li>\n      </ul>\n      <div *ngIf=\"charactersLimit\">\n        <label class=\"appearanceLabel\">Count</label>\n        <input class=\"appearanceInput\" type=\"text\" name=\"Countfield\" id=\"Countfield\"\n        [(ngModel)]=\"CountValue\" (ngModelChange)=\"jsonUpdation()\">\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-password-field-properties',\n  templateUrl: './password-field-properties.component.html',\n  styleUrls: ['./password-field-properties.component.scss'],\n})\nexport class PasswordFieldPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  confirmPassword!: boolean;\n  viewButton!: boolean;\n  displayStrong!: boolean;\n  minLength!: number;\n  maxLength!: number;\n  lowercase!: boolean;\n  uppercase!: boolean;\n  requireSpecialCharacters!: boolean;\n  requireNumbers!: boolean;\n  allowedSpecial: string = '';\n\n  ngOnInit() {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.confirmPassword = this.questionProperties.appearance.confirmPassword;\n    this.viewButton = this.questionProperties.appearance.viewButton;\n    this.displayStrong = this.questionProperties.appearance.displayStrong;\n    this.minLength = this.questionProperties.validation.minLength;\n    this.maxLength = this.questionProperties.validation.maxLength;\n    this.lowercase = this.questionProperties.validation.requireLowercaseLetters;\n    this.uppercase = this.questionProperties.validation.requireUppercaseLetters;\n    this.requireSpecialCharacters =\n      this.questionProperties.validation.requireSpecialCharacters;\n    this.allowedSpecial =\n      this.questionProperties.validation.allowedSpecialCharacters;\n    this.requireNumbers = this.questionProperties.validation.requireNumbers;\n  }\n  jsonUpdation() {\n    this.questionProperties.appearance.confirmPassword = this.confirmPassword;\n    this.questionProperties.appearance.viewButton = this.viewButton;\n    this.questionProperties.appearance.displayStrong = this.displayStrong;\n    this.questionProperties.validation.minLength = this.minLength;\n    this.questionProperties.validation.maxLength = this.maxLength;\n    this.questionProperties.validation.requireLowercaseLetters = this.lowercase;\n    this.questionProperties.validation.requireUppercaseLetters = this.uppercase;\n    this.questionProperties.validation.requireSpecialCharacters =\n      this.requireSpecialCharacters;\n    this.questionProperties.validation.allowedSpecialCharacters =\n      this.allowedSpecial;\n    this.questionProperties.validation.requireNumbers = this.requireNumbers;\n  }\n}\n","<p class=\"field-title\">Password</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\"  (click)=\"openAppearance()\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n            <ul>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox1\"\n                    [(ngModel)]=\"confirmPassword\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"confirmPassword\">\n                    <label class=\"form-check-label\" for=\"checkbox1\">\n                        Confirm password\n                    </label>\n                </div>\n            </li>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox2\"\n                    [(ngModel)]=\"viewButton\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"viewButton\">\n                    <label class=\"form-check-label\" for=\"checkbox2\">\n                        View button\n                    </label>\n                </div>\n            </li>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox3\"\n                    [(ngModel)]=\"displayStrong\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"displayStrong\">\n                    <label class=\"form-check-label\" for=\"checkbox3\">\n                        Display strength\n                    </label>\n                </div>\n            </li>\n            </ul>\n        </div>\n    </div>\n</div>\n<div class=\"Validation-div\">\n    <div class=\"properties-header\"  (click)=\"openValidation()\">\n        <p class=\"title\">Validation</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\" [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <div class=\"content\">\n            <label for=\"Min\" class=\"appearanceLabel\">Min Length</label>\n            <input class=\"appearanceInput\" type=\"text\" name=\"type\" id=\"\"\n            [(ngModel)]=\" minLength\" (ngModelChange)=\"jsonUpdation()\">\n            <label for=\"Max\" class=\"appearanceLabel\">Max Length</label>\n            <input class=\"appearanceInput\" type=\"text\" name=\"type\" id=\"\"\n            [(ngModel)]=\" maxLength\" (ngModelChange)=\"jsonUpdation()\">\n            <ul>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox4\"\n                    [(ngModel)]=\"lowercase\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"lowercase\">\n                    <label class=\"form-check-label\" for=\"checkbox4\">\n                        Require lowercase letters\n                    </label>\n                </div>\n            </li>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox5\"\n                    [(ngModel)]=\"uppercase\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"uppercase\">\n                    <label class=\"form-check-label\" for=\"checkbox5\">\n                        Require uppercase letters\n                    </label>\n                </div>\n            <li>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox6\"\n                    [(ngModel)]=\"requireNumbers\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"requireNumbers\">\n                    <label class=\"form-check-label\" for=\"checkbox6\">\n                        Require numbers\n                    </label>\n                </div>\n            </li>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox7\"\n                    [(ngModel)]=\"requireSpecialCharacters\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"requireSpecialCharacters\">\n                    <label class=\"form-check-label\" for=\"checkbox7\">\n                        Require special characters\n                    </label>\n                </div>\n            </li>\n            </ul>\n            <div *ngIf=\"requireSpecialCharacters\">\n                <label for=\"Allowedspecialcharacters\" class=\"appearanceLabel\">Allowed special characters</label>\n                <input class=\"appearanceInput\" type=\"text\" name=\"type\" id=\"\"\n                [(ngModel)]=\" allowedSpecial \" (ngModelChange)=\"jsonUpdation()\">\n            </div>\n        </div>\n    </div>\n</div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { ApiService } from '../../services/api.service';\nimport { ToastrService } from 'ngx-toastr';\nimport { CountryInfo } from '../form-builder.model';\nimport { debounceTime, distinctUntilChanged, Subject } from 'rxjs';\n@Component({\n  selector: 'lib-mobile-field-properties',\n  templateUrl: './mobile-field-properties.component.html',\n  styleUrls: ['./mobile-field-properties.component.scss'],\n})\n\nexport class MobileFieldPropertiesComponent implements OnChanges {\n\n  @Input() questionProperties: any = {};\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n\n  selectedAllowedCountry: any[] = [];\n  selectedBlockedCountry: any[] = [];\n  countries: any[] = [];\n  allCountries: any[] = [];\n  label = 'label';\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  displayCode: boolean = true;\n  countryCode: boolean = true;\n  displayFlag: boolean = false;\n  showCountryName: boolean = false;\n  beautifyNumbers!: boolean;\n  placeholder: string = '';\n  currentPage: number = 0;\n  lastPage: boolean = false;\n  isFirstPage: boolean = false;\n  pageSize: number = 250;\n  searchSubject: Subject<string> = new Subject<string>();\n  constructor(private ApiService: ApiService, private toastr: ToastrService) { }\n\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n\n  ngOnInit() {\n    //this.selectedAllowedCountry = [];\n    //this.selectedBlockedCountry = [];\n    this.loadCountries();\n    this.searchSubject\n    .pipe(\n      debounceTime(500), \n      distinctUntilChanged()\n    )\n    .subscribe((searchTerm) => {\n      this.search(searchTerm);\n    });\n  }\n\n  loadCountries() {\n    this.ApiService.getContries(0, this.pageSize, '').subscribe((data) => {\n      this.allCountries = this.transformCountries(data.result.content);\n      this.updateValuesFromJson();\n    });\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.selectedAllowedCountry = [];\n      this.selectedBlockedCountry = [];\n      this.loadCountries();\n    }\n  }\n\n  // Updates component properties based on incoming JSON with default values\n  updateValuesFromJson() {\n    // Check for each value in JSON and only update if it exists, otherwise use default\n    this.placeholder = this.questionProperties?.appearance?.placeholder || '';\n    this.countryCode = this.questionProperties?.appearance?.displayCountryCode ?? true;\n    this.displayCode = this.questionProperties?.appearance?.displayCode ?? true;\n    this.displayFlag = this.questionProperties?.appearance?.displayFlag ?? false;\n    this.showCountryName = this.questionProperties?.appearance?.showCountryName ?? false;\n    this.beautifyNumbers = this.questionProperties?.appearance?.beautifyNumbers ?? false;\n    // Populate allowed and blocked countries if available\n    this.selectedAllowedCountry = this.mapCountryCodes(this.questionProperties?.validation?.allowedCountries);\n    this.selectedBlockedCountry = this.mapCountryCodes(this.questionProperties?.validation?.blockedCountries);\n    this.jsonUpdation();\n    // Ensure at least one subfield is checked\n    this.ensureAtLeastOneSubfield();\n  }\n\n  onMainCheckboxChange() {\n    if (!this.countryCode) {\n      // If the main checkbox is unchecked, uncheck all subfields as well\n      this.displayCode = false;\n      this.displayFlag = false;\n      this.showCountryName = false;\n    } else {\n      // If enabling, ensure at least one subfield is checked\n      this.ensureAtLeastOneSubfield();\n    }\n    this.jsonUpdation();\n  }\n\n  onSubFieldChange() {\n    // Ensure at least one subfield is checked\n    this.ensureAtLeastOneSubfield();\n    this.jsonUpdation();\n  }\n\n  ensureAtLeastOneSubfield() {\n    if (!this.displayCode && !this.displayFlag && !this.showCountryName) {\n      this.displayCode = true; // Default fallback if none are checked\n    }\n  }\n\n  // Ensure at least one subfield remains checked\n  isLastChecked(field: keyof this): boolean {\n    const checkedFields = [this.displayCode, this.displayFlag, this.showCountryName].filter(Boolean);\n    return checkedFields.length === 1 && this[field as keyof this] === true;\n  }\n\n  // Maps country codes to the countries in the dropdown\n  mapCountryCodes(countryCodes: string[] = []): any[] {\n    return countryCodes.map(code => this.allCountries.find(country => country.value === code)).filter(Boolean);\n  }\n\n  jsonUpdation() {\n    for (let translation of this.translations) {\n      if (translation.elementId === this.selectedQuestionId && translation.attribute === 'PLACEHOLDER') {\n        translation.translatedText = this.placeholder;\n      }\n    }\n    this.questionProperties.appearance = {\n      placeholder: this.placeholder,\n      displayCountryCode: this.countryCode,\n      displayFlag: this.displayFlag,\n      displayCode: this.displayCode,\n      showCountryName: this.showCountryName,\n      beautifyNumbers: this.beautifyNumbers\n    };\n  }\n\n  changeAllowedCountry() {\n    if (this.selectedBlockedCountry.includes(this.selectedAllowedCountry[this.selectedAllowedCountry.length - 1])) {\n      this.selectedAllowedCountry.pop();\n      this.toastr.error(\"Please select a different country. Allowed and blocked countries cannot be the same.\");\n    }\n    else {\n      if (this.selectedAllowedCountry.length > 0) {\n        this.questionProperties.validation.allowedCountries = [];\n        this.selectedAllowedCountry.forEach((item: any) => {\n          this.questionProperties.validation.allowedCountries.push(item.value);\n        });\n      } else {\n        this.questionProperties.validation.allowedCountries = [];\n      }\n    }\n  }\n\n  changeBlockedCountry() {\n    if (this.selectedAllowedCountry.includes(this.selectedBlockedCountry[this.selectedBlockedCountry.length - 1])) {\n      this.selectedBlockedCountry.pop();\n      this.toastr.error(\"Please select a different country. Allowed and blocked countries cannot be the same.\");\n    }\n    else {\n      if (this.selectedBlockedCountry.length > 0) {\n        this.questionProperties.validation.blockedCountries = [];\n        this.selectedBlockedCountry.forEach((item: any) => {\n          this.questionProperties.validation.blockedCountries.push(item.value);\n        });\n      } else {\n        this.questionProperties.validation.blockedCountries = [];\n      }\n    }\n  }\n\n  getCountry(page: number, size: number, key: string) {\n    this.ApiService.getContries(page, size, key).subscribe((data) => {\n\n      this.lastPage = data.result.last;\n      this.isFirstPage = data.result.first;\n\n      let newCountries = this.transformCountries(data.result.content);\n      if (this.currentPage > 0) {\n        this.countries = [\n          ...this.countries,\n          ...newCountries.filter(item => !this.countries.some((existing: any) => existing.value === item.value))\n        ]\n      }\n      else {\n        this.countries = [\n          ...newCountries.filter(item => !this.countries.some((existing: any) => existing.value === item.value)),\n          ...this.countries\n        ]\n      }\n      this.updateValuesFromJson();\n    });\n  }\n\n  transformCountries(data: any[]): CountryInfo[] {\n    const transformedCountries: CountryInfo[] = [];\n    data.forEach(country => {\n      transformedCountries.push({\n        value: country.name,\n        label: country.name,\n        image: ''\n      });\n    });\n    return transformedCountries;\n  }\n\n  getNextSetOfItems(event: any) {\n    const element = event.target;\n    if (!this.lastPage) {\n      if (Math.floor(element.scrollHeight - element.scrollTop) <= element.clientHeight) {\n        this.loadMoreData();\n      }\n    }\n    if (!this.isFirstPage && element.scrollTop <= 150) {\n      this.loadPreviousData();\n    }\n  }\n\n  loadMoreData() {\n    setTimeout(() => {\n      this.currentPage++;\n      if (this.currentPage >= 0) {\n        this.getCountry(this.currentPage, 30, \"\");\n      }\n    }, 0);\n  }\n\n  loadPreviousData() {\n    setTimeout(() => {\n      this.currentPage--;\n      if (this.currentPage >= 0) {\n        this.getCountry(this.currentPage, 30, \"\");\n      }\n    }, 0);\n  }\n\n  search(searchTerm: any) {\n    this.getCountry(0, 30, searchTerm);\n   }\n \n   onSearchInput(searchTerm: string) {\n     this.searchSubject.next(searchTerm);\n   }\n\n  // search(searchTerm: any) {\n  //   if (searchTerm === '') {\n  //     this.getCountry(0, 30, '');\n  //   }\n  //   else {\n  //     debugger\n  //     this.countries = [];\n  //     this.getCountry(0, this.pageSize, searchTerm);\n  //   }\n  // }\n}\n","<p class=\"field-title\">Mobile</p>\n<div class=\"appearance-div\">\n  <div class=\"properties-header\" (click)=\"openAppearance()\">\n    <p class=\"title\">Appearance</p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" />\n    </div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" />\n    </div>\n  </div>\n  <div\n    class=\"appearances\"\n    [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n  >\n    <div class=\"content\">\n      <ul>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"\"\n              type=\"checkbox\"\n              id=\"checkbox1\"\n              [(ngModel)]=\"countryCode\"\n              (change)=\"onMainCheckboxChange()\"\n              [attr.data-value]=\"countryCode\"\n            />\n            <label class=\"form-check-label\" for=\"checkbox1\">\n              Display country code\n            </label>\n          </div>\n          <ul *ngIf=\"countryCode\" class=\"pt-1 ps-4\">\n            <li>\n              <div class=\"form-check\">\n                <input\n                  class=\"\"\n                  type=\"checkbox\"\n                  id=\"checkbox3\"\n                  [(ngModel)]=\"displayCode\"\n                  (change)=\"onSubFieldChange()\"\n                  [disabled]=\"isLastChecked('displayCode')\"\n                  [attr.data-value]=\"displayCode\"\n                />\n                <label class=\"form-check-label\" for=\"checkbox3\">\n                  Display code\n                </label>\n              </div>\n            </li>\n            <li>\n              <div class=\"form-check\">\n                <input\n                  class=\"\"\n                  type=\"checkbox\"\n                  id=\"checkbox2\"\n                  [(ngModel)]=\"displayFlag\"\n                  (change)=\"onSubFieldChange()\"\n                  [disabled]=\"isLastChecked('displayFlag')\"\n                  [attr.data-value]=\"displayFlag\"\n                />\n                <label class=\"form-check-label\" for=\"checkbox2\">\n                  Display flag\n                </label>\n              </div>\n            </li>\n            <li>\n              <div class=\"form-check\">\n                <input\n                  class=\"\"\n                  type=\"checkbox\"\n                  id=\"checkbox4\"\n                  [(ngModel)]=\"showCountryName\"\n                  (change)=\"onSubFieldChange()\"\n                  [disabled]=\"isLastChecked('showCountryName')\"\n                  [attr.data-value]=\"showCountryName\"\n                />\n                <label class=\"form-check-label\" for=\"checkbox4\">\n                  Show country name\n                </label>\n              </div>\n            </li>\n          </ul>\n        </li>\n      </ul>\n      <label for=\"Placeholder\" class=\"appearanceLabel\">Placeholder</label>\n      <input\n        type=\"text\"\n        class=\"appearanceInput\"\n        id=\"Placeholder\"\n        name=\"Placeholder\"\n        [(ngModel)]=\"placeholder\"\n        (ngModelChange)=\"jsonUpdation()\"\n      />\n    </div>\n  </div>\n</div>\n<div class=\"Validation-div\">\n  <div class=\"properties-header\" (click)=\"openValidation()\">\n    <p class=\"title\">Validation</p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n    >\n      <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" />\n    </div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n    >\n      <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" />\n    </div>\n  </div>\n  <div\n    class=\"Validation\"\n    [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n  >\n    <div class=\"content\">\n      <ul>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"\"\n              type=\"checkbox\"\n              id=\"checkbox8\"\n              [(ngModel)]=\"questionProperties?.validation.restrictCountry\"\n              (ngModelChange)=\"search('')\"\n              [attr.data-value]=\"questionProperties?.validation.restrictCountry\"\n            />\n            <label class=\"form-check-label\" for=\"checkbox8\">\n              Restrict country\n            </label>\n          </div>\n        </li>\n      </ul>\n      <div *ngIf=\"questionProperties?.validation.restrictCountry\">\n        <label class=\"appearanceLabel\">Allowed countries</label>\n        <lib-dropdown\n          [placeholder]=\"'select'\"\n          [items]=\"countries\"\n          [(selectedItems)]=\"selectedAllowedCountry\"\n          [multiple]=\"true\"\n          (click)=\"changeAllowedCountry()\"\n          (onDropdownScroll)=\"getNextSetOfItems($event)\"\n          (onSearch)=\"search($event)\"\n        ></lib-dropdown>\n        <label class=\"appearanceLabel\">Blocked countries</label>\n        <lib-dropdown\n          [placeholder]=\"'select'\"\n          [items]=\"countries\"\n          [(selectedItems)]=\"selectedBlockedCountry\"\n          [multiple]=\"true\"\n          (click)=\"changeBlockedCountry()\"\n          (onDropdownScroll)=\"getNextSetOfItems($event)\"\n          (onSearch)=\"search($event)\"\n        ></lib-dropdown>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-url-field-properties',\n  templateUrl: './url-field-properties.component.html',\n  styleUrls: ['./url-field-properties.component.scss'],\n})\nexport class UrlFieldPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  previewButton!: boolean;\n  Placeholder!: boolean;\n  ngOnInit() {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    //this.ValidationOpened=!this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.previewButton = this.questionProperties.appearance.showPreviewButton;\n    this.Placeholder = this.questionProperties.appearance.placeholder;\n  }\n  jsonUpdation() {\n    this.questionProperties.appearance.showPreviewButton = this.previewButton;\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (\n        translation.elementId == this.selectedQuestionId &&\n        translation.attribute == 'PLACEHOLDER'\n      ) {\n        translation.translatedText = this.Placeholder;\n      }\n    }\n    this.questionProperties.appearance.showPreviewButton =  this.previewButton;\n    this.questionProperties.appearance.placeholder = this.Placeholder;\n  }\n}\n","<p class=\"field-title\">URL</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\" (click)=\"openAppearance()\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n            <ul>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox1\"\n                    [(ngModel)]=\"previewButton\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"previewButton\">\n                    <label class=\"form-check-label\" for=\"checkbox1\">\n                        Show preview button\n                    </label>\n                </div>\n            </li>\n            </ul>\n            <label for=\"Placeholder\" class=\"appearanceLabel\">Placeholder</label>\n            <input class=\"appearanceInput\" type=\"text\" id=\"checkbox2\"\n            [(ngModel)]=\"Placeholder\" (ngModelChange)=\"jsonUpdation()\">                    \n        </div>\n    </div>\n</div>\n<div class=\"Validation-div disable-div\">\n    <div class=\"properties-header\" (click)=\"openValidation()\">\n        <p class=\"title fadeValidation\">Validation</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\" [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <div class=\"content\">\n\n        </div>\n    </div>\n</div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-mail-field-properties',\n  templateUrl: './mail-field-properties.component.html',\n  styleUrls: ['./mail-field-properties.component.scss'],\n})\nexport class MailFieldPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  domain: string = '';\n  regular: string = '';\n  placeholder: string = '';\n  ngOnInit() {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.regular = this.questionProperties.validation.regularExpression;\n    this.domain = this.questionProperties.validation.expectedDomains;\n    this.placeholder = this.questionProperties.appearance.placeholder;\n  }\n  jsonUpdation() {\n    this.questionProperties.validation.regularExpression = this.regular;\n    this.questionProperties.validation.expectedDomains = this.domain;\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (\n        translation.elementId == this.selectedQuestionId &&\n        translation.attribute == 'PLACEHOLDER'\n      ) {\n        translation.translatedText = this.placeholder;\n      }\n    }\n    this.questionProperties.validation.regularExpression = this.regular;\n    this.questionProperties.validation.expectedDomains = this.domain;\n    this.questionProperties.appearance.placeholder = this.placeholder;\n  }\n}\n","<p class=\"field-title\">Mail</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\"  (click)=\"openAppearance()\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n            <label for=\"Placeholder\" class=\"appearanceLabel\">Placeholder</label>\n            <input  type=\"text\" class=\"appearanceInput\" id=\"Placeholder\" name=\"Placeholder\" placeholder=\"\"\n            [(ngModel)]=\"placeholder\" (ngModelChange)=\"jsonUpdation()\">\n        </div>\n    </div>\n</div>\n<div class=\"Validation-div\">\n    <div class=\"properties-header\"  (click)=\"openValidation()\">\n        <p class=\"title\">Validation</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\" [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <div class=\"content\">\n            <label for=\"Expecteddomain\" class=\"appearanceLabel\">Expected domain</label>\n            <input class=\"appearanceInput\" type=\"text\" name=\"type\" id=\"\" placeholder=\"\"\n            [(ngModel)]=\"domain\" (ngModelChange)=\"jsonUpdation()\">\n            <label for=\"Regularexpression\" class=\"appearanceLabel\">Regular expression</label>\n            <input class=\"appearanceInput\" type=\"text\" name=\"type\" id=\"\" placeholder=\"\"\n            [(ngModel)]=\"regular\" (ngModelChange)=\"jsonUpdation()\">\n        </div>\n    </div>\n</div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-number-field-properties',\n  templateUrl: './number-field-properties.component.html',\n  styleUrls: ['./number-field-properties.component.scss'],\n})\nexport class NumberFieldPropertiesComponent implements OnChanges {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  upDown!: boolean;\n  negativeValues!: boolean;\n  PlaceHolder: any;\n  min!: number;\n  max!: number;\n  ngOnInit() {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.upDown = this.questionProperties.appearance.upAndDownButton;\n    this.negativeValues = this.questionProperties.appearance.allowNegativeValues;\n    this.PlaceHolder = this.questionProperties.appearance.placeholder;\n    this.min = this.questionProperties.validation.min;\n    this.max = this.questionProperties.validation.max;\n  }\n  jsonUpdation() {\n    this.questionProperties.appearance.upAndDownButton = this.upDown;\n    this.questionProperties.appearance.allowNegativeValues =\n      this.negativeValues;\n    this.questionProperties.validation.min = this.min;\n    this.questionProperties.validation.max = this.max;\n    this.questionProperties.appearance.upAndDownButton =this.upDown \n    this.questionProperties.appearance.allowNegativeValues = this.negativeValues ;\n    this.questionProperties.appearance.placeholder = this.PlaceHolder ;\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (\n        translation.elementId == this.selectedQuestionId &&\n        translation.attribute == 'PLACEHOLDER'\n      ) {\n        translation.translatedText = this.PlaceHolder;\n      }\n    }\n  }\n}\n","<p class=\"field-title\">Number</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\" (click)=\"openAppearance()\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n            <ul>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox1\"\n                    [(ngModel)]=\"upDown\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"upDown\">\n                    <label class=\"form-check-label\" for=\"checkbox1\">\n                        Up and down button\n                    </label>\n                </div>\n            </li>\n            <li>\n                <div class=\"form-check\">\n                    <input class=\"\" type=\"checkbox\" id=\"checkbox2\"\n                    [(ngModel)]=\"negativeValues\" (ngModelChange)=\"jsonUpdation()\"\n                    [attr.data-value]=\"negativeValues\">\n                    <label class=\"form-check-label\" for=\"checkbox2\">\n                        Allow negative values\n                    </label>\n                </div>\n            </li>\n            </ul>\n            <label for=\"Placeholder\" class=\"appearanceLabel\">Placeholder</label>\n            <input class=\"appearanceInput\" type=\"text\" name=\"type\" id=\"\" placeholder=\"\"\n            [(ngModel)]=\"PlaceHolder\" (ngModelChange)=\"jsonUpdation()\">\n        </div>\n    </div>\n</div>\n<div class=\"Validation-div\">\n    <div class=\"properties-header\" (click)=\"openValidation()\">\n        <p class=\"title\">Validation</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n    <div class=\"Validation\" [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <div class=\"content\">\n            <label class=\"appearanceLabel\">Min</label>\n            <input class=\"appearanceInput\" type=\"text\" name=\"type\" id=\"\"\n            [(ngModel)]=\"min\" (ngModelChange)=\"jsonUpdation()\">\n            <label class=\"appearanceLabel\">Max</label>\n            <input class=\"appearanceInput\" type=\"text\" name=\"type\" id=\"\"\n            [(ngModel)]=\"max\" (ngModelChange)=\"jsonUpdation()\">\n        </div>\n    </div>\n</div>","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-check-box-field-properties',\n  templateUrl: './check-box-field-properties.component.html',\n  styleUrls: ['./check-box-field-properties.component.scss'],\n})\nexport class CheckBoxFieldPropertiesComponent implements OnChanges {\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  @Output() questionPropertiesUpdated = new EventEmitter<any>();\n  selectionType: string = 'SINGLE';\n  displayOptionsInColumn!: boolean;\n  maxValue: string = '';\n  minValue: string = '';\n  ngOnInit() {\n    this.maxValue = '';\n    this.minValue = '';\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.maxValue = '';\n      this.minValue = '';\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    if (this.selectionType == 'SINGLE') {\n      return;\n    }\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n  valueAssigned() {\n    if (this.questionProperties?.appearance.selectionType) {\n      this.selectionType = this.questionProperties?.appearance.selectionType;\n    } else {\n      this.selectionType = this.questionProperties.appearance.selectionType =\n        'SINGLE';\n    }\n    this.displayOptionsInColumn =\n      this.questionProperties?.appearance.displayOptionsInColumn ?? false;\n    if (this.questionProperties?.validation.maximumSelection) {\n      this.maxValue = this.questionProperties.validation.maximumSelection;\n    }\n    if (this.questionProperties?.validation.minimumSelection) {\n      this.minValue = this.questionProperties.validation.minimumSelection;\n    }\n  }\n  jsonUpdation() {\n    this.questionProperties.appearance.selectionType = this.selectionType;\n    if (this.selectionType == 'SINGLE') {\n      this.ValidationOpened = false;\n    }\n    this.questionProperties.appearance.displayOptionsInColumn =\n      this.displayOptionsInColumn;\n    this.questionPropertiesUpdated.emit(this.questionProperties);\n  }\n\n  changeMaxValue(event: any) {\n    this.questionProperties.validation.maximumSelection = event.target.value;\n    this.questionPropertiesUpdated.emit(this.questionProperties);\n  }\n\n  changeMinValue(event: any) {\n    this.questionProperties.validation.minimumSelection = event.target.value;\n    this.questionPropertiesUpdated.emit(this.questionProperties);\n  }\n}\n","<p class=\"field-title\">Checkbox</p>\n<div class=\"appearance-div\">\n  <div class=\"properties-header\" (click)=\"openAppearance()\">\n    <p class=\"title\">Appearance</p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" />\n    </div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" />\n    </div>\n  </div>\n\n  <div\n    class=\"appearances\"\n    [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n  >\n    <div class=\"content\">\n      <ul>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"radio\"\n              name=\"type\"\n              id=\"singleSelection\"\n              [(ngModel)]=\"selectionType\"\n              (ngModelChange)=\"jsonUpdation()\"\n              value=\"SINGLE\"\n              [attr.data-value]=\"selectionType=='SINGLE'\"\n            />\n            <label for=\"singleSelection\" class=\"form-check-label\"\n              >Single selection</label\n            >\n          </div>\n        </li>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"radio\"\n              name=\"type\"\n              id=\"multiSelection\"\n              [(ngModel)]=\"selectionType\"\n              (ngModelChange)=\"jsonUpdation()\"\n              value=\"MULTIPLE\"\n              [attr.data-value]=\"selectionType=='MULTIPLE'\"\n            />\n            <label for=\"multiSelection\" class=\"form-check-label\"\n              >Multi selection</label\n            >\n          </div>\n        </li>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"checkbox\"\n              id=\"displayOptionsInColumn\"\n              [(ngModel)]=\"displayOptionsInColumn\"\n              (ngModelChange)=\"jsonUpdation()\"\n              [attr.data-value]=\"displayOptionsInColumn\"\n            />\n            <label for=\"displayOptionsInColumn\" class=\"form-check-label\">\n              Display in Columns\n            </label>\n          </div>\n        </li>\n      </ul>\n    </div>\n  </div>\n</div>\n<div class=\"Validation-div\" [ngClass]=\"{ closed: selectionType === 'SINGLE' }\">\n  <div class=\"properties-header\" (click)=\"openValidation()\">\n    <p class=\"title\" [ngClass]=\"{ fadeValidation: selectionType === 'SINGLE' }\">\n      Validation\n    </p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n      *ngIf=\"selectionType != 'SINGLE'\"\n    >\n      <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" />\n    </div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n    >\n      <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" />\n    </div>\n  </div>\n\n  <div\n    class=\"Validation\"\n    [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n  >\n    <div class=\"content\">\n      <!--  <div class=\"dropDown\"> -->\n      <label class=\"appearanceLabel\">Max selection</label>\n      <input\n        type=\"number\"\n        class=\"form-control\"\n        (input)=\"changeMaxValue($event)\"\n        [(ngModel)]=\"maxValue\"\n      />\n      <label class=\"appearanceLabel\">Min selection</label>\n      <input\n        type=\"number\"\n        class=\"form-control\"\n        (input)=\"changeMinValue($event)\"\n        [(ngModel)]=\"minValue\"\n      />\n      <!--   </div>  -->\n    </div>\n  </div>\n</div>\n","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-sub-form-field-properties',\n  templateUrl: './sub-form-field-properties.component.html',\n  styleUrls: ['./sub-form-field-properties.component.scss'],\n})\nexport class SubFormFieldPropertiesComponent {\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n\n  apperanceOpened: boolean = false;\n  subFormStructure: any = 'single';\n  subFormType: string = '';\n  allowDelete:boolean =  false;\n  allowCopy:boolean = false;\n  subFormCustomAddButtonText: string = '';\n\n  ngOnInit() {\n    this.valueAssigned();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n\n  valueAssigned() {\n    this.subFormStructure = this.questionProperties.property.subFormStructure;\n    this.subFormType  = this.questionProperties.property.subFormType;\n    this.allowDelete = this.questionProperties.property.allowDelete;\n    this.allowCopy = this.questionProperties.property.allowCopy;\n    this.subFormCustomAddButtonText = this.questionProperties.property.addButtonLabel;\n  }\n\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n\n  onSubFormStructureChange(): void {\n    this.questionProperties.property.subFormStructure = this.subFormStructure;\n    if (this.subFormStructure === 'single') {\n      this.subFormType = '';\n      this.questionProperties.property.subFormType = this.subFormType;\n    }\n    else{\n      this.subFormType = 'table';\n      this.questionProperties.property.subFormType = this.subFormType;\n    }\n  }\n\n  bindsubFormType(){\n    this.questionProperties.property.subFormType = this.subFormType;\n  }\n\n  bindsubFormCustomAddButtonText() {\n    this.questionProperties.property.addButtonLabel = this.subFormCustomAddButtonText;\n  }\n\n\n\n  bindSubformActions(field:string){\n    if(field === 'delete'){\n      this.questionProperties.property.allowDelete = this.allowDelete;\n    }\n    if(field === 'copy'){\n      this.questionProperties.property.allowCopy = this.allowCopy;\n    }\n  }\n}\n","<p class=\"field-title\">SubForm</p>\n<div class=\"appearance-div\">\n  <div class=\"properties-header\" (click)=\"openAppearance()\">\n    <p class=\"title\">Appearance</p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\" />\n    </div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n    </div>\n  </div>\n\n  <div\n    class=\"appearances\"\n    [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n  >\n    <div class=\"content\">\n      <ul>\n        <li class=\"mb-2\">\n          <div class=\"d-flex\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"radio\"\n              name=\"type\"\n              id=\"singleSelection\"\n              [(ngModel)]=\"subFormStructure\"\n              (ngModelChange)=\"onSubFormStructureChange()\"\n              value=\"single\"\n              [attr.data-value]=\"subFormStructure == 'single'\"\n            />\n            <label for=\"singleSelection\" class=\"form-check-label\"\n              >Single Form</label\n            >\n          </div>\n        </li>\n        <li class=\"mb-3\">\n          <div class=\"d-flex\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"radio\"\n              name=\"type\"\n              id=\"multiSelection\"\n              [(ngModel)]=\"subFormStructure\"\n              (ngModelChange)=\"onSubFormStructureChange()\"\n              value=\"multiple\"\n              [attr.data-value]=\"subFormStructure == 'multiple'\"\n            />\n            <label for=\"multiSelection\" class=\"form-check-label\"\n              >Multiple Form</label\n            >\n          </div>\n\n          <ul class=\"ms-3 mt-3\" *ngIf=\"subFormStructure === 'multiple'\">\n            <li class=\"mb-2\">\n              <div class=\"d-flex\">\n                <input\n                  class=\"form-check-inputs\"\n                  type=\"radio\"\n                  name=\"view\"\n                  id=\"subform-table-view\"\n                  value=\"table\"\n                  [(ngModel)]=\"subFormType\"\n                  (ngModelChange)=\"bindsubFormType()\"\n                />\n\n                <label class=\"form-check-label\" for=\"subform-table-view\">\n                  Table view\n                </label>\n              </div>\n            </li>\n\n            <li class=\"mb-2\">\n              <div class=\"d-flex\">\n                <input\n                  class=\"form-check-inputs\"\n                  type=\"radio\"\n                  name=\"view\"\n                  id=\"subform-inline-view\"\n                  value=\"inline\"\n                  [(ngModel)]=\"subFormType\"\n                  (ngModelChange)=\"bindsubFormType()\"\n                />\n\n                <label class=\"form-check-label\" for=\"subform-inline-view\">\n                  In Line View\n                </label>\n              </div>\n            </li>\n\n            <li>\n              <div class=\"d-flex\">\n                <input\n                  class=\"form-check-inputs\"\n                  type=\"radio\"\n                  name=\"view\"\n                  id=\"subform-card-view\"\n                  value=\"card\"\n                  [(ngModel)]=\"subFormType\"\n                  (ngModelChange)=\"bindsubFormType()\"\n                />\n\n                <label class=\"form-check-label\" for=\"subform-card-view\">\n                  Card View\n                </label>\n              </div>\n            </li>\n          </ul>\n        </li>\n\n        <li class=\"mb-2\">\n          <div class=\"d-flex\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"checkbox\"\n              name=\"delete\"\n              id=\"allow-delete\"\n              [(ngModel)]=\"allowDelete\"\n              (ngModelChange)=\"bindSubformActions('delete')\"\n              [attr.data-value]=\"allowDelete\"\n            />\n            <label for=\"allow-delete\" class=\"form-check-label\"\n              >Allow Delete</label\n            >\n          </div>\n        </li>\n\n        <li class=\"mb-2\">\n          <div class=\"d-flex\">\n            <input\n              class=\"form-check-inputs\"\n              type=\"checkbox\"\n              name=\"type\"\n              id=\"allow-copy\"\n              [(ngModel)]=\"allowCopy\"\n              (ngModelChange)=\"bindSubformActions('copy')\"\n              [attr.data-value]=\"allowCopy\"\n            />\n            <label for=\"allow-copy\" class=\"form-check-label\">Allow Copy</label>\n          </div>\n        </li>\n      </ul>\n      <div class=\"d-flex flex-column mt-2\">\n        <label for=\"add-button-label\" class=\"form-label mb-1\"\n          >Custom Label</label\n        >\n        <input\n          type=\"text\"\n          id=\"add-button-label\"\n          class=\"form-control form-control-sm\"\n          placeholder=\"Add Button Label\"\n          [(ngModel)]=\"subFormCustomAddButtonText\"\n          (ngModelChange)=\"bindsubFormCustomAddButtonText()\"\n          name=\"addButtonLabel\"\n        />\n      </div>\n    </div>\n  </div>\n</div>\n","import {\n  Component,\n  Input,\n  ViewChild,\n  ElementRef,\n  SimpleChanges,\n  OnChanges,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-radio-button-field-properties',\n  templateUrl: './radio-button-field-properties.component.html',\n  styleUrls: ['./radio-button-field-properties.component.scss'],\n})\nexport class RadioButtonFieldPropertiesComponent implements OnChanges {\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  changeSliderColor!: boolean;\n  sliderColor: string = '';\n  displayOptionsInColumn!: boolean;\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  @Output() questionPropertiesUpdated = new EventEmitter<any>();\n  @ViewChild('colorPickerInput') colorPickerInput!: ElementRef;\n  ngOnInit() {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    //  this.ValidationOpened = !this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.changeSliderColor =\n      this.questionProperties.appearance.changeButtonColor;\n    this.sliderColor = this.questionProperties.appearance.color;\n\n    if (\n      this.questionProperties.appearance.displayOptionsInColumn === undefined\n    ) {\n      this.questionProperties.appearance.displayOptionsInColumn = false;\n    }\n    this.displayOptionsInColumn =\n      this.questionProperties.appearance.displayOptionsInColumn;\n      if(this.changeSliderColor) {\n        this.openColorPicker();\n      }\n  }\n\n  openColorPicker() {\n    this.changeSliderColor = true;\n    setTimeout(() => {\n      this.colorPickerInput.nativeElement.focus();\n    });\n  }\n  jsonUpdation() {\n    this.questionProperties.appearance.changeButtonColor =\n      this.changeSliderColor;\n    this.questionProperties.appearance.color = this.sliderColor;\n    this.questionProperties.appearance.displayOptionsInColumn =\n      this.displayOptionsInColumn;\n    this.questionPropertiesUpdated.emit(this.questionProperties);\n  }\n}\n","<p class=\"field-title\">Radio Button</p>\n<div class=\"appearance-div\">\n  <div class=\"properties-header\" (click)=\"openAppearance()\">\n    <p class=\"title\">Appearance</p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\" />\n    </div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n    </div>\n  </div>\n\n  <div\n    class=\"appearances\"\n    [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n  >\n    <div class=\"content\">\n      <ul>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"\"\n              type=\"checkbox\"\n              id=\"displayOptionsInColumn\"\n              [(ngModel)]=\"displayOptionsInColumn\"\n              (ngModelChange)=\"jsonUpdation()\"\n              [attr.data-value]=\"displayOptionsInColumn\"\n            />\n            <label class=\"form-check-label\" for=\"displayOptionsInColumn\">\n                Display in Columns\n            </label>\n          </div>\n        </li>\n        <li>\n          <div class=\"form-check\">\n            <input\n              class=\"\"\n              type=\"checkbox\"\n              id=\"checkbox1\"\n              [(ngModel)]=\"changeSliderColor\"\n              (ngModelChange)=\"jsonUpdation()\"\n              [attr.data-value]=\"changeSliderColor\"\n            />\n            <label class=\"form-check-label\" for=\"checkbox1\">\n              Change Button colour\n            </label>\n          </div>\n        </li>\n      </ul>\n      <!-- <img\n        src=\"/assets/icons/color-picker-icon.svg\"\n        alt=\"Color Picker Icon\"\n        *ngIf=\"changeSliderColor\"\n        (click)=\"openColorPicker()\"\n      /> -->\n      <div class=\"row align-items-center\" *ngIf=\"changeSliderColor\">\n        <div class=\"col-auto\">\n          <p class=\"col-auto mb-0 select-text\">Selected color</p>\n          <input\n            #colorPickerInput\n            [(colorPicker)]=\"sliderColor\"\n            [cpToggle]=\"true\" [cpDialogDisplay]=\"'inline'\"\n            [style.background]=\"sliderColor\"\n            class=\"custom-color-picker\"\n            (colorPickerChange)=\"jsonUpdation()\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"Validation-div disable-div\">\n  <div class=\"properties-header\" (click)=\"openValidation()\">\n    <p class=\"title fadeValidation\">Validation</p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n    >\n      <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\" />\n    </div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n    >\n      <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n    </div>\n  </div>\n\n  <div\n    class=\"Validation\"\n    [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n  >\n    <div class=\"content\"></div>\n  </div>\n</div>\n","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\nimport { CountryService } from '../../services/country.service';\n\n@Component({\n  selector: 'lib-currency-field-properties',\n  templateUrl: './currency-field-properties.component.html',\n  styleUrls: ['./currency-field-properties.component.scss']\n})\nexport class CurrencyFieldPropertiesComponent {\n\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  @Input() questionProperties: any = {};\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  label = 'label';\n  placeholder: string = '';\n  currencySymbols: any[]=[];\n  symbolPosition: any[]=[\n    {\n      label:'Before The Value',\n      value:'Before the value'\n    },\n    {\n      label:'After The Value',\n      value:'After the value'\n    }\n  ];\n  decimalPrecision: any[]=[\n    {\n      label:'1',\n      value:'1'\n    },\n    {\n      label:'2',\n      value:'2'\n    },\n  ];\n  selectedCurrencySymbol: any[]=[];\n  selectedSymbolPosition: any[]=[];\n  selectedDecimalPrecision: any[]=[];\n  thousandOperator: boolean = false;\n  showAmountInWords: boolean = false;\n  maxValue!:number;\n  minValue!:number;\n\n  constructor(\n    private countryService:CountryService\n  ){}\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    this.ValidationOpened = !this.ValidationOpened;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n      this.getCurrencySymbols();  \n    }\n  }\n\n  ngOnInit(): void {\n    this.valueAssigned();\n    this.getCurrencySymbols();    \n  }\n\n  valueAssigned() {\n    \n    this.placeholder = this.questionProperties?.appearance.placeholder;\n    this.thousandOperator = this.questionProperties.appearance.thousandSeparator;\n    this.showAmountInWords = this.questionProperties.appearance.showAmountInWords;\n    this.selectedSymbolPosition = [];\n    if(this.questionProperties.appearance.symbolPosition){\n      let selectedSymbolPosition = this.symbolPosition.find(position=>{\n        return position.value == this.questionProperties.appearance.symbolPosition\n      })\n      this.selectedSymbolPosition = [selectedSymbolPosition]\n    }\n    this.selectedDecimalPrecision = [];\n    if(this.questionProperties.appearance.decimalPrecision){\n      let selectedDecimalPrecision = this.decimalPrecision.find(precision=>{\n        return precision.value == this.questionProperties.appearance.decimalPrecision\n      })\n      this.selectedDecimalPrecision = [selectedDecimalPrecision]\n    }\n    this.minValue = this.questionProperties.validation.min;\n    this.maxValue = this.questionProperties.validation.max;\n  }\n\n  jsonUpdation() {\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (\n        translation.elementId == this.selectedQuestionId &&\n        translation.attribute == 'PLACEHOLDER'\n      ) {\n        translation.translatedText = this.placeholder;\n      }\n    }\n    this.questionProperties.appearance.placeholder = this.placeholder;\n    this.questionProperties.validation.min = this.minValue;\n    this.questionProperties.validation.max = this.maxValue;\n  }\n\n\n  getCurrencySymbols(){\n    this.countryService.getCurrencySymbol().subscribe((data:any)=>{\n      this.currencySymbols = data;\n      this.assignCurrencySymbol();\n    })\n  }\n\n  changeCurrencySymbol(){\n    if (\n      this.questionProperties?.appearance.currencySymbol ==\n      this.selectedCurrencySymbol[0]?.label\n    ) {\n      return;\n    } else {\n      this.questionProperties.appearance.currencySymbol =\n        this.selectedCurrencySymbol[0]?.label;\n    }\n  }\n\n  changeSymbolPosition(){\n    if (\n      this.questionProperties?.appearance.symbolPosition ==\n      this.selectedSymbolPosition[0]?.value\n    ) {\n      return;\n    } else {\n      this.questionProperties.appearance.symbolPosition =\n        this.selectedSymbolPosition[0]?.value;\n    }\n  }\n\n  changeDecimalPrecision(){\n    if (\n      this.questionProperties?.appearance.decimalPrecision ==\n      this.selectedDecimalPrecision[0]?.value\n    ) {\n      return;\n    } else {\n      this.questionProperties.appearance.decimalPrecision =\n        this.selectedDecimalPrecision[0]?.value;\n    }\n  }\n\n  changeThousandOperator(){\n    this.questionProperties.appearance.thousandSeparator = this.thousandOperator;\n  }\n\n  changeAmountInWords(){\n    this.questionProperties.appearance.showAmountInWords = this.showAmountInWords;\n  }\n\n  assignCurrencySymbol(){\n    this.selectedCurrencySymbol = [];\n    if(this.questionProperties.appearance.currencySymbol){\n      let currencySymbol = this.currencySymbols.find(symbol=>{\n        return symbol.label == this.questionProperties.appearance.currencySymbol\n      })\n      this.selectedCurrencySymbol = [currencySymbol];\n    }\n  }\n}\n","<p class=\"field-title\">Text Box</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\"  (click)=\"openAppearance()\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n            <label for=\"Placeholder\" class=\"appearanceLabel\">Placeholder</label>\n            <input type=\"text\" class=\"appearanceInput\" id=\"Placeholder\" name=\"Placeholder\"\n            [(ngModel)]=\"placeholder\" (ngModelChange)=\"jsonUpdation()\">\n        </div>\n\n        <div class=\"content\">\n            <label for=\"Placeholder\" class=\"appearanceLabel\">Symbol Position</label>\n\n            <lib-dropdown\n            [placeholder]=\"'Select'\"\n            [items]=\"symbolPosition\"\n            [(selectedItems)]=\"selectedSymbolPosition\"\n            (selectedItemsChange)=\"changeSymbolPosition()\"\n            ></lib-dropdown>\n\n        </div>\n\n        <div class=\"content\">\n            <label for=\"Placeholder\" class=\"appearanceLabel\">Decimal Precision</label>\n\n            <lib-dropdown\n            [placeholder]=\"'Select'\"\n            [items]=\"decimalPrecision\"\n            [(selectedItems)]=\"selectedDecimalPrecision\"\n            (selectedItemsChange)=\"changeDecimalPrecision()\"\n            ></lib-dropdown>\n\n        </div>\n\n        <div class=\"content form-check\">\n            <input type=\"checkbox\" [(ngModel)]=\"thousandOperator\" (ngModelChange)=\"changeThousandOperator()\"\n            [id]=\"selectedQuestionId +'-thousand-operator'\">\n            <label for=\"Placeholder\" class=\"appearanceLabel\" [for]=\"selectedQuestionId +'-thousand-operator'\">\n                Thousand Separator\n            </label>\n        </div>\n\n        <div class=\"content form-check\">\n            <input type=\"checkbox\" [(ngModel)]=\"showAmountInWords\" (ngModelChange)=\"changeAmountInWords()\"\n            [id]=\"selectedQuestionId +'-amount-in-words'\">\n            <label for=\"Placeholder\" class=\"appearanceLabel\" [for]=\"selectedQuestionId +'-amount-in-words'\">\n                Show Amount in Words\n            </label>\n        </div>\n    </div>\n</div>\n<div class=\"Validation-div\">\n    <div class=\"properties-header\"  (click)=\"openValidation()\">\n        <p class=\"title\">Validation</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"Validation\" [ngClass]=\"{'opened': ValidationOpened, 'closed': !ValidationOpened}\">\n        <!-- <div class=\"content\">\n           <ul>\n                <li>\n                </li>\n                <li>\n\n                </li>\n            </ul>\n        </div>      -->\n\n        <div class=\"content\">\n\n            <label class=\"appearanceLabel\">Min</label>\n            <input\n              type=\"number\"\n              class=\"form-control\"\n              [(ngModel)]=\"minValue\"\n              (ngModelChange)=\"jsonUpdation()\"\n             />\n\n            <label class=\"appearanceLabel\">Max</label>\n            <input\n              type=\"number\"\n              class=\"form-control\"\n              [(ngModel)]=\"maxValue\"\n              (ngModelChange)=\"jsonUpdation()\"\n            />\n          </div>\n    </div>\n</div>\n","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-iframe-field-properties',\n  templateUrl: './iframe-field-properties.component.html',\n  styleUrls: ['./iframe-field-properties.component.scss']\n})\nexport class IframeFieldPropertiesComponent {\n\n  @Input() questionProperties: any = CONSTANTS.questionProperties;\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  apperanceOpened: boolean = false;\n  ValidationOpened: boolean = false;\n  width!:number;\n  height!:number;\n  ngOnInit() {\n    this.valueAssigned();\n  }\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.valueAssigned();\n    }\n  }\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  openValidation() {\n    //this.ValidationOpened=!this.ValidationOpened;\n  }\n  valueAssigned() {\n    this.width = this.questionProperties.appearance.width;\n    this.height = this.questionProperties.appearance.height;\n  }\n\n  jsonUpdation(field?: string) {\n    if (!field) return;\n  \n    const appearance = this.questionProperties?.appearance;\n    if (!appearance) return;\n  \n    const map: Record<string, (a: any) => void> = {\n      width: (a) => (a.width = this.width),\n      height: (a) => (a.height = this.height),\n    };\n  \n    map[field]?.(appearance);\n  }\n  \n}\n","<p class=\"field-title\">URL</p>\n<div class=\"appearance-div\">\n  <div class=\"properties-header\" (click)=\"openAppearance()\">\n    <p class=\"title\">Appearance</p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\" />\n    </div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n    >\n      <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n    </div>\n  </div>\n\n  <div\n    class=\"appearances\"\n    [ngClass]=\"{ opened: apperanceOpened, closed: !apperanceOpened }\"\n  >\n    <div class=\"content\">\n      <label for=\"width\" class=\"appearanceLabel\">Width</label>\n      <div class=\"d-flex justify-content-center align-items-center gap-3\">\n        <input\n          class=\"appearanceInput\"\n          type=\"number\"\n          [(ngModel)]=\"width\"\n          (ngModelChange)=\"jsonUpdation('width')\"\n        />\n        <span>px</span>\n      </div>\n    </div>\n\n    <div class=\"content\">\n      <label for=\"width\" class=\"appearanceLabel\">Height</label>\n      <div class=\"d-flex justify-content-center align-items-center gap-3\">\n        <input\n          class=\"appearanceInput\"\n          type=\"number\"\n          [(ngModel)]=\"height\"\n          (ngModelChange)=\"jsonUpdation('height')\"\n        />\n        <span>px</span>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"Validation-div disable-div\">\n  <div class=\"properties-header\" (click)=\"openValidation()\">\n    <p class=\"title fadeValidation\">Validation</p>\n    <div\n      class=\"down-arrow\"\n      [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n    ></div>\n    <div\n      class=\"up-arrow\"\n      [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n    >\n      <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\" />\n    </div>\n  </div>\n\n  <div\n    class=\"Validation\"\n    [ngClass]=\"{ opened: ValidationOpened, closed: !ValidationOpened }\"\n  >\n    <div class=\"content\"></div>\n  </div>\n</div>\n","import { Component, HostListener, Input } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-section',\n  templateUrl: './section.component.html',\n  styleUrls: ['./section.component.scss'],\n})\nexport class SectionComponent {\n  @Input() section: any = {};\n  @Input() translations: any = [];\n  @Input() selectedQuestionId: string = '';\n  @Input() pages: any = [];\n  sectionTitle: string = '';\n  sectionDescription: string = '';\n  editor: any;\n  testElementName: string = '';\n  isMenuOpen: boolean = false;\n  customElementId: string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  constructor(private dataservice: DataService, public dialog: MatDialog,private sharedService: SharedService) {\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.section.id || this.section.element?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.section?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.section.whenClause &&\n        this.section.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.section.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.section.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n  ngOnInit() {\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n  valueAssigned() {\n    this.sectionTitle = this.section.element.title;\n    this.sectionDescription = this.section.element.description;\n    this.customElementId = this.section.customElementId;\n    this.whenClause = this.section.whenClause;\n  }\n  editorCreated(editorInstance: any) {\n    this.editor = editorInstance;\n    this.updateEditorContent(this.sectionDescription)\n  }\n\n  // When you receive data from API\n  updateEditorContent(content: string) {\n    if (this.editor) {\n      // this.editor.clipboard.dangerouslyPasteHTML(content);\n      const delta = this.editor.clipboard.convert(content);\n      this.editor.setContents(delta, 'silent');\n    }\n    this.sectionDescription = content;\n  }\n  jsonUpdation() {\n    this.dataservice.emitChangeStatus(true);\n    this.section.element.title = this.sectionTitle;\n    this.section.element.description = this.sectionDescription;\n    for (let translate of this.translations) {\n      if (\n        translate.elementId == this.section.element.id &&\n        translate.attribute == 'NAME'\n      ) {\n        translate.translatedText = this.sectionTitle;\n      } else if (\n        translate.elementId == this.section.element.id &&\n        translate.attribute == 'DESCRIPTION'\n      ) {\n        translate.translatedText = this.sectionDescription;\n      }\n    }\n  }\n  openConfirmationModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader: 'Are you sure ?',\n      message: 'Do you want to delete this section?',\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(\n      ConfirmationModalComponent,\n      dialogConfig\n    );\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendSection(this.selectedQuestionId);\n      }\n    });\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.section.id || this.section.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('section', id);\n      if(this.section.element){\n        this.section.element.testElementName = this.testElementName;\n      }else{\n        this.section.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.section.id || this.section.element?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.section,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.section = result;\n        this.customElementId = this.section.customElementId;\n      }\n    });\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.section,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.section = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition || clause.value === '') {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + section.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div\n          class=\"input-container\"\n        >\n          <div class=\"col-auto\">\n            <div class=\"icon-container-right\">\n              <div class=\"element-menu-action-button\">\n                <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n  \n                <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                  <div class=\"question-options\">\n                    <ul class=\"question-action-options\">\n                      <li\n                        class=\"question-option\"\n                        (click)=\"openElementIdModal()\"\n                      >\n                      <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                        <span>Element ID</span>\n                      </li>\n                      <li\n                        class=\"question-option\"\n                        (click)=\"openConfirmationModal()\"\n                      >\n                      <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                        <span>Delete</span>\n                      </li>\n                    </ul>\n                  </div>\n                </div>\n  \n              </div>\n            </div>\n          </div>\n          <div class=\"titleContainer\">\n            <label [for]=\"'input1'+section?.id\" class=\"sec-title mb-3\">Section Title</label>\n            <input\n              type=\"text\"\n              [id]=\"'input1'+section?.id\"\n              class=\"form-control mb-4\"\n              placeholder=\"Type Here\"\n              [(ngModel)]=\"sectionTitle\"\n              (ngModelChange)=\"jsonUpdation()\"\n            />\n          </div>\n\n          <div class=\"descContainer\">\n            <label [for]=\"'description'+section?.id\" class=\"sec-title mb-3\">Description</label>\n            <quill-editor \n              [id]=\"'description'+section?.id\"\n              [(ngModel)]=\"sectionDescription\"\n              (ngModelChange)=\"jsonUpdation()\"\n              (onEditorCreated)=\"editorCreated($event)\"\n              class=\"editor\"\n              ></quill-editor>\n          </div>\n\n          <div class=\"d-flex justify-content-between\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <button\n                [ngClass]=\"{\n                  'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                  'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n                }\"\n                type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n                <span \n                  *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                  class=\"when-rule-count\"\n                >\n                  ({{ whenClause?.whenClauseCondition?.length }} \n                  {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n                </span>\n              </button>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { ApiService } from '../../services/api.service';\n@Component({\n  selector: 'lib-terms-and-condition-fields',\n  templateUrl: './terms-and-condition-fields.component.html',\n  styleUrls: ['./terms-and-condition-fields.component.scss']\n})\nexport class TermsAndConditionFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  constructor(private dataservice:DataService,public dialog: MatDialog,private ApiService: ApiService,){}\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  selectedOption:string='';\n  hintOpen:boolean = false;\n  external:any;\n  custom:any;\n  selectedFile:any;\n  fileDataUrl: string | null = null;\n  fileName: string | null = null;\n  isOpen: boolean = true;\n  ngOnInit(){\n    this.valueAssigned()\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.selectedOption=this.question.element?.question?.formElement?.termsAndCondition?.termsAndConditionType||this.question?.formElement?.termsAndCondition?.termsAndConditionType;\n    this.fileName=this.question.element?.question?.formElement?.termsAndCondition?.fileName||this.question.formElement.termsAndCondition.fileName;\n    this.fileDataUrl=this.question.element?.question?.formElement?.termsAndCondition?.fileUrl||this.question.formElement.termsAndCondition.fileUrl;\n    if(this.selectedOption=='CUSTOM_INPUT'){\n      this.custom= this.question.element?.question?.formElement?.termsAndCondition?.value||this.question.formElement.termsAndCondition.value;\n    }else{\n      this.external=this.question.element?.question?.formElement?.termsAndCondition?.value||this.question.formElement.termsAndCondition.value;\n    }\n  }\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.selectedQuestion();\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(data:any){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n    } else {\n      this.question.question = this.inputQuestion;\n    }\n    if (this.selectedOption == 'FILE' && (data != '6' && data != '5' && data != '1')) {\n      this.fileDataUrl='';\n      this.fileName='';\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(data === '6') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n      if(this.question.element){\n      this.question.element.question.formElement.termsAndCondition.termsAndConditionType= this.selectedOption;\n      this.question.element.question.formElement.termsAndCondition.fileUrl=this.fileDataUrl;\n      this.question.element.question.formElement.termsAndCondition.fileName=this.fileName\n      }\n    else\n      this.question.formElement.termsAndCondition.termsAndConditionType = this.selectedOption;\n      this.question.formElement.termsAndCondition.fileUrl=this.fileDataUrl;\n      this.question.formElement.termsAndCondition.fileName=this.fileName;\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n transaltionUpdate(data:any){\n  this.fileDataUrl='';\n  this.fileName='';\n  if(this.selectedOption=='FILE'){\n    data=''\n  }\n  for(let i=0;i<this.translations.length;i++){\n    let translation=this.translations[i];\n  if(translation.elementId==this.selectedQuestionId && translation.attribute=='TERMS_AND_CONDITION'){\n    translation.translatedText=data;\n  }\n  }\n  if(this.selectedOption=='CUSTOM_INPUT'){\n    this.question.formElement.termsAndCondition.value = this.custom;\n  }else{\n    this.question.formElement.termsAndCondition.value = this.external;\n  }\n  if(this.question.element){\n    this.question.element.question.formElement.termsAndCondition.fileUrl=this.fileDataUrl;\n    this.question.element.question.formElement.termsAndCondition.fileName=this.fileName\n  }\n  else{\n    this.question.formElement.termsAndCondition.fileUrl=this.fileDataUrl;\n    this.question.formElement.termsAndCondition.fileName=this.fileName;\n  }\n }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  onFileSelected(event: Event): void {\n    const input = event.target as HTMLInputElement;\n    if (input.files && input.files.length > 0) {\n      this.selectedFile = input.files[0];\n      this.dataservice.sendFile(this.selectedFile);\n      this.dataservice.sendId(this.question.id)\n      this.previewFile(this.selectedFile);\n      this.custom='';\n      this.external='';\n      this.transaltionUpdate('')\n      if(this.question.element){\n        this.question.element.question.formElement.termsAndCondition.value='';\n      }\n      else{\n        this.question.formElement.termsAndCondition.value='';\n      }\n    }\n  }\n  previewFile(file: File): void {\n    const reader = new FileReader();\n    reader.onload = () => {\n      if (typeof reader.result === 'string') {\n        this.fileDataUrl = reader.result;\n      } else {\n        this.fileDataUrl = null; // Handle the case where the result is not a string\n      }\n    };\n    reader.readAsDataURL(file);\n  }\n  isImage(file: File | null): boolean {\n    return file ? file.type.startsWith('image/') : false;\n  }\n  closeElement() {\n    this.isOpen = !this.isOpen;\n  }\n\n  selectedQuestion() {\n    const ids = [\n      this.question?.id,\n      this.question?.element?.id,\n      this.question?.formElement?.id,\n    ].filter((id) => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [ngClass]=\"{'multi-fields-container': question?.element?.multiField}\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n          [ngClass]=\"{'selected': selectedQuestion()}\">\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img src=\"/assets/icons/terms-and-conditions-icon.svg\"  alt=\"terms-and-conditions-icon\" class=\"icon-style\">\n                Terms And Condition\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div class=\"action-button\" data-title=\"Hint\" (click)=\"hintOpened()\">\n                  <img src=\"assets/icons/add-hint-icon.svg\" alt = \"hint-icon\" class=\"icon-right\">\n                </div>\n                <div class=\"action-button\" data-title=\"Delete\" (click)=\"openConfirmationModal()\">\n                  <img src=\"assets/icons/delete-icon.svg\" alt = \"delete-icon\" class=\"icon-right\">\n                </div>\n                <div *ngIf=\"question?.element?.multiField\">\n                  <div *ngIf=\"!isOpen\" class=\"down-arrow\"  class=\"action-button\" data-title=\"Show\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/down-arrow-gray-icon.svg\" alt=\"down-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                  <div *ngIf=\"isOpen\" class=\"up-arrow\"  class=\"action-button\" data-title=\"Hide\" (click)=\"closeElement()\">\n                    <img src=\"assets/icons/upArrow.png\" alt=\"up-arrow-icon\" loading=\"lazy\"/>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div class=\"question-container\" *ngIf=\"!question?.element?.multiField\">\n            <label class=\"fontFamily\" [for]=\"'question'+(question.element?question.element.id:question.id)\">Question</label>\n            <input type=\"text\" [id]=\"'question'+(question.element?question.element.id:question.id)\" class=\"form-control mb-2\"\n            [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation('1')\" placeholder=\"Type Question\" maxlength=\"150\" (focus)=\"onFocus()\">\n          </div>\n          <div *ngIf=\"isOpen\" class=\"add-content-div\">\n            <p>Add content</p>\n            <div class=\"form-radio\">\n              <div class=\"form-check-field\">\n                <input type=\"radio\"  [name]=\"question.id+'upload'\" [id]=\"question.id+'upload'\" value=\"FILE\"\n                [(ngModel)]=\"selectedOption\" (ngModelChange)=\"jsonUpdation('2')\" [attr.data-value]=\"selectedOption=='FILE'\">\n                <label for=\"upload\">Upload(pdf,image,doc)</label>\n              </div>\n              <div class=\"content-type\"  *ngIf=\"selectedOption =='FILE'\">\n                <div>\n                  <div class=\"fileInput\">\n                    <input type=\"file\" id=\"logoFile\" accept=\".jpg, .jpeg, .png, .pdf, .doc, .docx\" (change)=\"onFileSelected($event)\" />\n                    <label for=\"logoFile\">Choose file</label>\n                  </div>\n                  <div *ngIf=\"fileName\">\n                    <span>{{ fileName }}</span>\n                  </div>\n                </div>\n                <div *ngIf=\"selectedFile\">\n                  <div *ngIf=\"isImage(selectedFile)\" class=\"imgBlock\">\n                    <img [src]=\"fileDataUrl\" alt=\"File Preview\" />\n                  </div>\n                  <div *ngIf=\"!isImage(selectedFile)\">\n                    <a [href]=\"fileDataUrl\" target=\"_blank\">{{ selectedFile.name }}</a>\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div class=\"form-radio\">\n              <div class=\"form-check-field\">\n                <input type=\"radio\"  [name]=\"question.id+'external'\"  [id]=\"question.id+'external'\" value=\"EXTERNAL_URL\"\n                [(ngModel)]=\"selectedOption\" (ngModelChange)=\"jsonUpdation('3')\" [attr.data-value]=\"selectedOption=='EXTERNAL_URL'\">\n                <label for=\"external\">External URL</label>\n              </div>\n              <div class=\"content-type\"   *ngIf=\"selectedOption =='EXTERNAL_URL'\">\n                <input type=\"text\"  [(ngModel)]=\"external\"  (ngModelChange)=\"transaltionUpdate(external)\" class=\"appearanceInput1\" placeholder=\"Type here...\">\n              </div>\n            </div>\n            <div class=\"form-radio\">\n              <div class=\"form-check-field\">\n                <input type=\"radio\" [name]=\"question.id+'custom'\" [id]=\"question.id+'custom'\"  value=\"CUSTOM_INPUT\"  [(ngModel)]=\"selectedOption\"\n                (ngModelChange)=\"jsonUpdation('4')\" [attr.data-value]=\"selectedOption=='CUSTOM_INPUT'\">\n                <label for=\"custom\">Custom input</label>\n              </div>\n              <div class=\"content-type\"    *ngIf=\"selectedOption =='CUSTOM_INPUT'\">\n                <textarea type=\"text\" [(ngModel)]=\"custom\"  (ngModelChange)=\"transaltionUpdate(custom)\" class=\"appearanceInput2\" placeholder=\"Type here...\"></textarea>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"isOpen\" class=\"icon-container-bottom\">\n            <div class=\"d-inline-flex\">\n              <div class=\"form-check\">\n                <input type=\"checkbox\" name=\"required-checkbox\" [id]=\"'required'+(question.element?question.element.id:question.id)\"\n                [(ngModel)]=\"questionRequired\" (ngModelChange)=\"required()\" [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" [for]=\"'required'+(question.element?question.element.id:question.id)\">Required</label>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\" (ngModelChange)=\"jsonUpdation('6')\">\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn \">\n        <button type=\"button\"  (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, HostListener, Input } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\n\n@Component({\n  selector: 'lib-child-section',\n  templateUrl: './child-section.component.html',\n  styleUrls: ['./child-section.component.scss'],\n})\nexport class ChildSectionComponent {\n  @Input() section: any = {};\n  @Input() translations:any=[];\n  @Input() selectedQuestionId:string=''; \n  @Input() pages: any = [];\n  sectionTitle: string = '';\n  sectionDescription: string = '';\n  editor: any;\n  testElementName: string = '';\n  isMenuOpen: boolean = false;\n  customElementId: string = '';\n  constructor(private dataservice:DataService,public dialog: MatDialog){\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.section.id || this.section.element?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n  }\n  ngOnInit() {\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n  valueAssigned() {\n    this.sectionTitle = this.section.element.title;\n    this.sectionDescription = this.section.element.description;\n    this.customElementId = this.section.customElementId;\n  }\n  jsonUpdation(){\n    this.section.element.title = this.sectionTitle;\n    this.section.element.description = this.sectionDescription\n    for(let translate of this.translations){\n      if(translate.elementId==this.section.element.id && translate.attribute=='NAME'){\n        translate.translatedText=this.sectionTitle;\n      }\n      else if(translate.elementId==this.section.element.id && translate.attribute=='DESCRIPTION'){\n        translate.translatedText=this.sectionDescription;\n      }\n    }\n  }\n  editorCreated(editorInstance: any) {\n    this.editor = editorInstance;\n    this.updateEditorContent(this.sectionDescription)\n  }\n\n  // When you receive data from API\n  updateEditorContent(content: string) {\n    if (this.editor) {\n      // this.editor.clipboard.dangerouslyPasteHTML(content);\n    const delta = this.editor.clipboard.convert(content);\n    this.editor.setContents(delta, 'silent');\n    }\n    this.sectionDescription = content;\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this section?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendSection(this.selectedQuestionId);\n      }\n    });\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.section.id || this.section.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('section', id);\n      if(this.section.element){\n        this.section.element.testElementName = this.testElementName;\n      }else{\n        this.section.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.section.id || this.section.element?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.section,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.section = result;\n        this.customElementId = this.section.customElementId;\n      }\n    });\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + section.element.id\">\n    <div class=\"col-12\">\n        <div class=\"outer-rectangle\" [attr.name]=\"testElementName\">\n            <!-- Outer Rectangle -->\n            <div class=\"inner-rectangle\">\n                <!-- Inner Rectangle -->\n                <div class=\"input-container\" [ngClass]=\"{'selected': selectedQuestionId===section?.id}\">\n                    <div class=\"col-auto\">\n                        <div class=\"element-menu-action-button\">\n                            <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n              \n                            <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                              <div class=\"question-options\">\n                                <ul class=\"question-action-options\">\n                                  <li\n                                    class=\"question-option\"\n                                    (click)=\"openElementIdModal()\"\n                                  >\n                                  <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                                    <span>Element ID</span>\n                                  </li>\n                                  <li\n                                    class=\"question-option\"\n                                    (click)=\"openConfirmationModal()\"\n                                  >\n                                  <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                                    <span>Delete</span>\n                                  </li>\n                                </ul>\n                              </div>\n                            </div>\n              \n                        </div>\n                    </div>\n                    <div class=\"titleContainer\">\n                        <label [for]=\"'input1'+section?.id\" class=\"sec-title mb-3\">Section\n                            Title</label>\n                        <input type=\"text\" [id]=\"'input1'+section?.id\" class=\"form-control mb-4\" placeholder=\"Type Here\"\n                            [(ngModel)]=\"sectionTitle\" (ngModelChange)=\"jsonUpdation()\">\n                    </div>\n\n                    <div class=\"descContainer\">\n                        <label [for]=\"'description'+section?.id\" class=\"sec-title mb-3\">Description</label>\n                            <quill-editor \n                            [id]=\"'description'+section?.id\"\n                            [(ngModel)]=\"sectionDescription\"\n                            (ngModelChange)=\"jsonUpdation()\"\n                            (onEditorCreated)=\"editorCreated($event)\"\n                            class=\"editor\"\n                            ></quill-editor>\n                    </div>\n                    <div class=\"custom-element-id-container\">\n                        <div *ngIf=\"customElementId\">\n                          <span>Element ID - {{customElementId}}</span>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { CONSTANTS } from '../../shared/constants';\nimport { v4 as uuidv4 } from 'uuid';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\n@Component({\n  selector: 'lib-child-add-form',\n  templateUrl: './child-add-form.component.html',\n  styleUrls: ['./child-add-form.component.scss'],\n})\nexport class ChildAddFormComponent {\n  htmlContent = '';\n  @Input() subForms:any=[];\n  @Input() question: any = [];\n  @Input() translations:any=[];\n  @Input() selectedQuestionId:string=''; \n  @Input() deletedQuestionId:string=''; \n  @Input() pageId:any; \n  @Input() grid:any; \n  @Input() pages: any = [];\n  @Input() primaryColor: string = '';\n  @Input() secondaryColor: string = '';\n  @Input() elementType: string = '';\n  @Output() translationsUpdated: EventEmitter<any> = new EventEmitter<any>();\n  @Output() newUpdatedpages: EventEmitter<any[]> = new EventEmitter<any[]>();\n\n  @Output() newpages: EventEmitter<any[]> = new EventEmitter<any[]>();\n  subFromTitle: string = '';\n  subFromDescription: string = '';\n  childLogics: any;\n  inputValue: string = '';\n  subFormStructure:string='';\n  comparisonOptions = CONSTANTS.COMPARISON_OPTIONS;\n  textComparison = CONSTANTS.TEXT_COMPARISON;\n  dropdownComparison = CONSTANTS.DROPDOWN_COMPARISON;\n  sendPage: any;\n  selectedids: any = [];\n  selectedPage: any;\n  logicId: any;\n  editor: any;\n  testElementName: string = '';\n  isMenuOpen: boolean = false;\n  customElementId: string = '';\n  subformRequired: boolean = false;\n  constructor(\n    private dataservice: DataService,\n    public dialog: MatDialog,\n    private elementRef: ElementRef\n  ) {\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.subForms.id || this.subForms.element?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n  }\n  ngOnInit() {\n    this.valueAssigned();\n    this.sendPage = this.pages;\n    this.generateFieldName();\n  }\n  valueAssigned() {\n    this.subFromTitle = this.subForms.element.title;\n    this.subFromDescription = this.subForms.element.description;\n    this.customElementId = this.subForms.customElementId;\n    this.subformRequired = this.subForms.element.required;\n  }\n  editorCreated(editorInstance: any) {\n    this.editor = editorInstance;\n    this.updateEditorContent(this.subFromDescription)\n  }\n\n  // When you receive data from API\n  updateEditorContent(content: string) {\n    if (this.editor) {\n      // this.editor.clipboard.dangerouslyPasteHTML(content);\n      const delta = this.editor.clipboard.convert(content);\n      this.editor.setContents(delta, 'silent');\n    }\n    this.subFromDescription = content;\n  }\n  jsonUpdation() {\n    this.subForms.element.title = this.subFromTitle;\n    this.subForms.element.description = this.subFromDescription;\n    for (let translate of this.translations) {\n      if (\n        translate.elementId == this.subForms.element.id &&\n        translate.attribute == 'NAME'\n      ) {\n        translate.translatedText = this.subFromTitle;\n      } else if (\n        translate.elementId == this.subForms.element.id &&\n        translate.attribute == 'DESCRIPTION'\n      ) {\n        translate.translatedText = this.subFromDescription;\n      }\n    }\n  }\n\n  markRequired(){\n    this.subForms.element.required = this.subformRequired;\n  }\n \n  subSelection(value:any){\n    this.subFormStructure=value;\n    this.subForms.element.subFormStructure =this.subFormStructure;\n  }\n  selectQuestion(question: any,event:any){\n    event.stopPropagation();\n    this.dataservice.sendQuestion(question);\n    this.dataservice.sendPageId(this.pageId);\n  }\n  deleteQuestion(data: any) {\n    this.dataservice.sendsubFormQuestionDelete(data);\n  }\n  deleteLogic(quest: any, id: any) {\n    if (quest.element.childLogics) {\n      let child = quest.element.childLogics;\n      this.getIds(child, id);\n      for (let m = 0; m < this.selectedids.length; m++) {\n        this.transalationDelete(this.selectedids[m]);\n        this.deleteGrids(this.selectedids[m]);\n      }\n    }\n    quest.element.childLogics = quest.element?.childLogics?.filter(\n      (item: any) => item.id != id\n    );\n  }\n  addNewChildQuestion(question: any, childLogic: any) {\n    this.dataservice.sendLogicId(childLogic.id);\n    this.dataservice.sendChildQuestions(question);\n    this.valueAssigned();\n  }\n  addNewQuestion() {\n    this.dataservice.addSubFormNewQuestion(this.subForms);\n  }\n  addSection() {\n    this.dataservice.addSubFormSections(this.subForms);\n  }\n  openDeleteModal() {\n    this.dataservice.sendSubFormDelete(this.selectedQuestionId);\n  }\n  openConfirmationModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader: 'Are you sure ?',\n      message: 'Do you want to delete this form?',\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(\n      ConfirmationModalComponent,\n      dialogConfig\n    );\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendSubFormDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  transalationDelete(id: any) {\n    for (let k = this.translations.length - 1; k >= 0; k--) {\n      let translate = this.translations[k];\n      if (translate.elementId == id) {\n        this.translations.splice(k, 1);\n      }\n    }\n  }\n  deleteGrids(id: any) {\n    for (let i = 0; i < this.pages.length; i++) {\n      for (let k = 0; k < this.pages[i].rows.length; k++) {\n        if (this.pages[i].rows[k].grids[0].elementId == id) {\n          // Remove the entire row from the rows array\n          this.pages[i].rows.splice(k, 1);\n          // Decrement k to ensure that the next iteration does not skip the next row\n          k--;\n        }\n      }\n    }\n  }\n  getIds(child: any, id: any) {\n    if (child.length == undefined) {\n      for (let i = 0; i < child.formElements.length; i++) {\n        const item = child.formElements[i];\n        if (item.element.id) {\n          this.selectedids.push(item.element.id);\n        }\n        const formElements = item?.element?.childLogics;\n        if (formElements) {\n          for (let k = 0; k < formElements.length; k++) {\n            this.getIds(formElements[k], id); // Pass formElements to recursive call\n          }\n        }\n      }\n    } else {\n      for (let i = 0; i < child.length; i++) {\n        const item = child[i];\n        if (item.id) {\n          this.selectedids.push(item.id);\n        }\n        const formElements = item.formElements;\n        if (formElements) {\n          for (let j = 0; j < formElements.length; j++) {\n            const element = formElements[j];\n            if (element.element && element.element.id) {\n              this.selectedids.push(element.element.id);\n            }\n            if (element.element && element.element.childLogics) {\n              let childLogics = element.element.childLogics; // Renamed to avoid naming conflict\n              for (let k = 0; k < childLogics.length; k++) {\n                this.getIds(childLogics[k], id); // Pass formElements to recursive call\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n  trackByChildLogicFn(index: number, childLogic: any): number {\n    return childLogic.id; // Assuming 'id' is a unique identifier for each childLogic\n  }\n  handleInput() {\n    const inputField =\n      this.elementRef.nativeElement.querySelector('#textField');\n    const textWidth = this.inputValue.length * 8;\n    inputField.style.width = Math.max(textWidth, 10) + 'px';\n  }\n\n  handleKeyDown(event: KeyboardEvent, childLogic: any) {\n    if (event.key === 'Enter') {\n      const inputField =\n        this.elementRef.nativeElement.querySelector('#textField');\n      const inputValue = this.inputValue.trim();\n      if (inputValue !== '') {\n        if (!Array.isArray(childLogic.inputValue)) {\n          childLogic.inputValue = [];\n        }\n        childLogic.inputValue.push(inputValue);\n        this.inputValue = '';\n        inputField.style.width = '10px';\n      }\n    }\n  }\n\n  removeOption(optionValue: string, childLogic: any) {\n    const index = childLogic.inputValue.indexOf(optionValue);\n    if (index > -1) {\n      childLogic.inputValue.splice(index, 1);\n    }\n  }\n\n  onTranslationsUpdated(updatedTranslations: any) {\n    this.translations = updatedTranslations;\n    this.translationsUpdated.emit(this.translations);\n  }\n\n  addNewChildSection(pageId: any, questionId: any, logicId: any) {\n    if (logicId == 'firstChild') {\n      logicId = this.logicId;\n    }\n    if (pageId == '') {\n      pageId = this.selectedPage;\n    }\n    let sectionId = uuidv4();\n    let rowId = uuidv4();\n    let newSection = {\n      entityType: 'SECTION',\n      element: {\n        count: 12,\n        id: sectionId,\n        title: '',\n        description: '',\n      },\n    };\n\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: sectionId,\n          entityType: 'SECTION',\n          count: 12,\n        },\n      ],\n    };\n\n    let sectionNameTranslation = {\n      elementId: sectionId,\n      entityType: 'SECTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let sectionDescTranslation = {\n      elementId: sectionId,\n      entityType: 'SECTION',\n      language: 'eng',\n      attribute: 'DESCRIPTION',\n      translatedText: '',\n    };\n    const page = this.pages.find((page: any) => page.id == pageId);\n\n    let section;\n    for (const element of page.formElements) {\n      if (\n        element.entityType === 'SECTION' &&\n        element.element.id === questionId\n      ) {\n        section = element;\n        break;\n      } else if (element.entityType === 'SUBFORM') {\n        for (const subElement of element.element.formElements) {\n          if (\n            subElement.entityType === 'SECTION' &&\n            subElement.element.id === questionId\n          ) {\n            section = subElement;\n            break;\n          }\n        }\n        if (section) break; // Exit the loop if question is found\n      }\n    }\n    if (section === undefined) {\n      const getPage = this.addChildLogic(page, logicId, newSection);\n      page.formElements.push(getPage);\n    }\n\n    //page.formElements.push(newSection);\n    page.rows.push(newRow);\n    this.translations.push(sectionNameTranslation);\n    this.translations.push(sectionDescTranslation);\n  }\n\n  addChildLogic(page: any, logicId: any, newSection: any) {\n    for (const formElement of page.formElements) {\n      const mainLogics = formElement.element?.childLogics || [];\n\n      for (const logic of mainLogics) {\n        if (logic.id === logicId) {\n          logic.formElements.push(newSection);\n        }\n      }\n    }\n    return page;\n  }\n\n  addSubForms(pageId: any, questionId: any, logicId: any) {\n    if (logicId == 'firstChild') {\n      logicId = this.logicId;\n    }\n    if (pageId == '') {\n      pageId = this.selectedPage;\n    }\n    let newQuestionId = uuidv4();\n    let rowId = uuidv4();\n    let subFormId = uuidv4();\n    let newSubForm = {\n      entityType: 'SUBFORM',\n      element: {\n        count: 12,\n        id: subFormId,\n        title: '',\n        description: '',\n        formElements: [],\n        property: {\n          subFormStructure: 'single',\n          enableInlineEditing: false,\n        },\n      },\n    };\n    let newSubFormQuestion: any = [\n      {\n        entityType: 'QUESTION',\n        element: {\n          id: newQuestionId,\n          required: false,\n          hint: '',\n          question: '',\n          formElement: {\n            elementType: 'TEXT_BOX',\n            appearance: {\n              fontSize: 22,\n              textAlign: '',\n              font: 'Poppins',\n              underline: false,\n              bold: false,\n              italics: false,\n              placeholder: '',\n              defaultValue: '',\n            },\n            validation: {\n              validationType: null,\n              regex: '',\n              validation: '',\n            },\n          },\n        }\n  \n      }]\n      let newRow = {\n        id: rowId,\n        grids: [\n          {\n            elementId: subFormId,\n            entityType: 'SUBFORM',\n            count: 12,\n          },\n        ],\n      };\n  \n      let titleTranslation = {\n        elementId: subFormId,\n        entityType: 'SUBFORM',\n        language: 'eng',\n        attribute: 'NAME',\n        translatedText: '',\n      };\n  \n      let descriptionTextTranslation = {\n        elementId: subFormId,\n        entityType: 'SUBFORM',\n        language: 'eng',\n        attribute: 'DESCRIPTION',\n        translatedText: '',\n      };\n      let nameTranslation = {\n        elementId: newQuestionId,\n        entityType: 'QUESTION',\n        language: 'eng',\n        attribute: 'NAME',\n        translatedText: '',\n      };\n  \n      let helpTextTranslation = {\n        elementId: newQuestionId,\n        entityType: 'QUESTION',\n        language: 'eng',\n        attribute: 'HELP_TEXT',\n        translatedText: '',\n      };\n  \n      let placeholderTranslation = {\n        elementId: newQuestionId,\n        entityType: 'QUESTION',\n        language: 'eng',\n        attribute: 'PLACEHOLDER',\n        translatedText: '',\n      };\n  \n      const page = this.pages.find((page: any) => page.id == pageId);\n  \n      let section;\n      for (const element of page.formElements) {  \n        if (element.entityType === \"SECTION\" && element.element.id === questionId) {\n          section = element;\n          break;\n        } else if (element.entityType === \"SUBFORM\") {\n          for (const subElement of element.element.formElements) {\n            if (subElement.entityType === \"SECTION\" && subElement.element.id === questionId) {\n              section = subElement;\n              break;\n            }\n          }\n          if (section) break; // Exit the loop if question is found\n        }\n      }\n      if (section === undefined) {\n        this.addChildLogic(page, logicId, newSubForm);\n        //page.formElements.push(getPage)\n      }\n  \n      newSubForm.element.formElements = newSubFormQuestion\n      //page.formElements.push(newSubForm);\n      page.rows.push(newRow);\n      this.translations.push(titleTranslation);\n      this.translations.push(descriptionTextTranslation);\n      this.translations.push(nameTranslation);\n      this.translations.push(helpTextTranslation);\n      this.translations.push(placeholderTranslation);\n    }\n\n    newpages1(updatedPages: any[]): void {\n      this.newpages.emit(updatedPages);\n      this.newUpdatedpages.emit(updatedPages);\n    }\n    newUpdatedpagess(updatedPages: any[]): void {\n      this.newpages.emit(updatedPages);\n      this.newUpdatedpages.emit(updatedPages);\n    }\n\n    optionUpdates(data: any) {\n      const updateFormElement = (formElements: any[]) => {\n        formElements?.forEach((formElement: any) => {\n          if (formElement.entityType === 'SUBFORM') {\n            formElement.element.formElements?.forEach((element: any) => {\n              if (element?.element.id === data.element.id) {\n                element.element = { ...data.element };\n              }\n            });\n    \n            updateFormElement(formElement.element.formElements);\n          }\n    \n          formElement.element?.childLogics?.forEach((childLogic: any) => {\n            updateFormElement(childLogic.formElements);\n          });\n        });\n      };\n    \n      this.pages.forEach((page: any) => {\n        updateFormElement(page.formElements);\n      });\n    }\n\n    generateFieldName(){\n      if (!this.testElementName) {\n        const id = this.subForms.id || this.subForms.element?.id;\n        this.testElementName = this.dataservice.getStableTestName('subform', id);\n        if(this.subForms.element){\n          this.subForms.element.testElementName = this.testElementName;\n        }else{\n          this.subForms.testElementName = this.testElementName;\n        }\n      }\n    }\n\n    toggleMenu() {\n      const myId = this.subForms.id || this.subForms.element?.id;\n      if (this.isMenuOpen) {\n        this.dataservice.setOpenMenuId(null); // close\n      } else {\n        this.dataservice.setOpenMenuId(myId); // open this one\n      }\n    }\n  \n    @HostListener('document:click', ['$event'])\n    onClickOutside(event: MouseEvent) {\n    const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n      if (!clickedInside) {\n        this.dataservice.setOpenMenuId(null);\n      }\n    }\n  \n    openElementIdModal(){\n      const dialogConfig = new MatDialogConfig();\n      dialogConfig.data = {\n        element: this.subForms,\n        pages: this.pages\n      };\n      dialogConfig.hasBackdrop = true;\n      dialogConfig.disableClose = true;\n      const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n      dialogRef.afterClosed().subscribe((result: any) => {\n        if (result) {\n          this.subForms = result;\n          this.customElementId = this.subForms.customElementId;\n        }\n      });\n    }\n    \n}\n","<div class=\"row\" [id]=\"'question-' + subForms.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div\n          class=\"input-container\"\n          [ngClass]=\"{ selected: selectedQuestionId === subForms.element.id }\"\n        >\n          <div class=\"col-auto\">\n            <div class=\"element-menu-action-button\">\n              <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n              <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                <div class=\"question-options\">\n                  <ul class=\"question-action-options\">\n                    <li\n                      class=\"question-option\"\n                      (click)=\"openElementIdModal()\"\n                    >\n                    <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                      <span>Element ID</span>\n                    </li>\n                    <li\n                      class=\"question-option\"\n                      (click)=\"openConfirmationModal()\"\n                    >\n                    <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                      <span>Delete</span>\n                    </li>\n                  </ul>\n                </div>\n              </div>\n\n          </div>\n          </div>\n          <div class=\"titleContainer\">\n            <label [for]=\"'input1'+subForms?.element?.id\" class=\"sec-title mb-3\">Form Title</label>\n            <input\n              type=\"text\"\n              [id]=\"'input1'+subForms?.element?.id\"\n              class=\"form-control mb-4\"\n              placeholder=\"Type Here\"\n              [(ngModel)]=\"subFromTitle\"\n              (ngModelChange)=\"jsonUpdation()\"\n            />\n          </div>\n          <div class=\"descContainer\">\n            <label [for]=\"'description'+subForms?.element?.id\" class=\"sec-title mb-3\">Description</label>\n            <quill-editor \n              [id]=\"'description'+subForms?.element?.id\"\n              [(ngModel)]=\"subFromDescription\"\n              (ngModelChange)=\"jsonUpdation()\"\n              (onEditorCreated)=\"editorCreated($event)\"\n              class=\"editor\"\n            ></quill-editor>\n          </div>\n          <div>\n            <div *ngFor=\"let question of subForms.element.formElements\">\n              <ng-container *ngIf=\"question.entityType == 'QUESTION'\">\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType === 'TEXT_AREA'\n                  \"\n                >\n                  <lib-text-area-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  ></lib-text-area-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType === 'TEXT_BOX'\n                  \"\n                >\n                  <lib-textbox\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                    [logicBtnShow]=\"false\"\n                  ></lib-textbox>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of textComparison\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                          <ul class=\"dropdown-menu logic-dropdown-menu\">\n                            <li>\n                              <a\n                                (click)=\"\n                                  addNewChildSection(\n                                    pageId,\n                                    question.element.id,\n                                    childLogic.id\n                                  )\n                                \"\n                                class=\"dropdown-item\"\n                                >Add section</a\n                              >\n                            </li>\n                            <li>\n                              <a\n                                (click)=\"\n                                  addSubForms(\n                                    pageId,\n                                    question.element.id,\n                                    childLogic.id\n                                  )\n                                \"\n                                class=\"dropdown-item\"\n                                >Add form</a\n                              >\n                            </li>\n                          </ul>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"question.element?.formElement?.elementType === 'EMAIL'\"\n                >\n                  <lib-mail-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  ></lib-mail-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType === 'PASSWORD'\n                  \"\n                >\n                  <lib-password-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  ></lib-password-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType === 'MOBILE'\n                  \"\n                >\n                  <lib-mobile-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  ></lib-mobile-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType ===\n                    'RICH_TEXT_EDITOR'\n                  \"\n                >\n                  <lib-rich-text-editor-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  ></lib-rich-text-editor-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType === 'NUMBER'\n                  \"\n                >\n                  <lib-type-number\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                    [logicBtnShow]=\"false\"\n                  ></lib-type-number>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"question.element?.formElement?.elementType === 'URL'\"\n                >\n                  <lib-url-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  >\n                  </lib-url-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container *ngIf=\"question.element?.formElement?.elementType === 'DROP_DOWN'\">\n                  <lib-drop-down [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element,$event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"  (newpages)=\"newpages1($event)\"\n                    [logicBtnShow]=\"false\" [questions]=\"pages\" (questionUpdated)=\"optionUpdates($event)\"></lib-drop-down>\n                    <!-- <div *ngIf=\"question.element.childLogics?.length>0\">\n                      <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                        <p class=\"logic-heading\">Logic</p>\n                        <div class=\"logic-condition\">\n                          <p class=\"logic-text\">If answer</p>\n                          <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                            <option *ngFor=\"let option of dropdownComparison\" [value]=\"option.value\">{{ option.label }}\n                            </option>\n                          </select>\n                          <input type=\"text\" class=\"logic-input\" [(ngModel)]=\"childLogic.inputValue\"\n                            *ngIf=\"childLogic.condition=='=' || childLogic.condition=='!='\">\n                            <div class=\"inputBox ms-2\"\n                            *ngIf=\"childLogic.condition=='IN' || childLogic.condition=='NOT IN'\">\n                            <div class=\"inputBoxLabels\" id=\"inputBoxLabels\">\n                              <span class=\"inputBoxLabel\" *ngFor=\"let option of childLogic?.inputValue\">\n                                {{option}}\n                                <span class=\"close\" (click)=\"removeOption(option,childLogic)\">x</span>\n                              </span>\n                            </div>\n                            <input class=\"textField\" type=\"text\" id=\"textField\" name=\"textField\"\n                            (input)=\"handleInput()\" (keydown)=\"handleKeyDown($event,childLogic)\"\n                            [(ngModel)]=\"inputValue\">\n                          </div>\n\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                       <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType ===\n                    'RADIO_BUTTON'\n                  \"\n                >\n                  <lib-drop-down\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                    [logicBtnShow]=\"false\"\n                    [questions]=\"pages\" (questionUpdated)=\"optionUpdates($event)\"\n                  ></lib-drop-down>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of dropdownComparison\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                          *ngIf=\"\n                            childLogic.condition == '=' ||\n                            childLogic.condition == '!='\n                          \"\n                        />\n                        <div\n                          class=\"inputBox ms-2\"\n                          *ngIf=\"\n                            childLogic.condition == 'IN' ||\n                            childLogic.condition == 'NOT IN'\n                          \"\n                        >\n                          <div class=\"inputBoxLabels\" id=\"inputBoxLabels\">\n                            <span\n                              class=\"inputBoxLabel\"\n                              *ngFor=\"let option of childLogic?.inputValue\"\n                            >\n                              {{ option }}\n                              <span\n                                class=\"close\"\n                                (click)=\"removeOption(option, childLogic)\"\n                                >x</span\n                              >\n                            </span>\n                          </div>\n                          <p class=\"logic-text ms-2\">then</p>\n                          <div class=\"logic-add-btn\">\n                            <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                              <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                              <a class=\"add-qstn-text\">Add Question</a>\n                            </div>\n                            <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                              <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                            </button>\n                          </div>\n                          <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType === 'CHECK_BOX'\n                  \"\n                >\n                  <lib-drop-down\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                    [logicBtnShow]=\"false\"\n                    [questions]=\"pages\" (questionUpdated)=\"optionUpdates($event)\"\n                  ></lib-drop-down>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of dropdownComparison\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                          *ngIf=\"\n                            childLogic.condition == '=' ||\n                            childLogic.condition == '!='\n                          \"\n                        />\n                        <div\n                          class=\"inputBox ms-2\"\n                          *ngIf=\"\n                            childLogic.condition == 'IN' ||\n                            childLogic.condition == 'NOT IN'\n                          \"\n                        >\n                          <div class=\"inputBoxLabels\" id=\"inputBoxLabels\">\n                            <span\n                              class=\"inputBoxLabel\"\n                              *ngFor=\"let option of childLogic?.inputValue\"\n                            >\n                              {{ option }}\n                              <span\n                                class=\"close\"\n                                (click)=\"removeOption(option, childLogic)\"\n                                >x</span\n                              >\n                            </span>\n                          </div>\n                          <p class=\"logic-text ms-2\">then</p>\n                          <div class=\"logic-add-btn\">\n                            <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                              <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                              <a class=\"add-qstn-text\">Add Question</a>\n                            </div>\n                            <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                              <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                            </button>\n                          </div>\n                          <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType === 'FILE_PICKER'\n                  \"\n                >\n                  <lib-file-picker-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  ></lib-file-picker-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType === 'DATE_TIME'\n                  \"\n                >\n                  <lib-date-time-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  ></lib-date-time-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType === 'SLIDER'\n                  \"\n                >\n                  <lib-slider-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  ></lib-slider-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType === 'SIGNATURE'\n                  \"\n                >\n                  <lib-signature-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  ></lib-signature-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType === 'LOCATION'\n                  \"\n                >\n                  <lib-location-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  ></lib-location-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType ===\n                    'TERMS_AND_CONDITION'\n                  \"\n                >\n                  <lib-terms-and-condition-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  ></lib-terms-and-condition-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType ===\n                    'TOGGLE_SWITCH'\n                  \"\n                >\n                  <lib-toggle-switch-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  ></lib-toggle-switch-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n\n                <ng-container\n                  *ngIf=\"\n                    question.element?.formElement?.elementType ===\n                    'SELECTION_MATRIX'\n                  \"\n                >\n                  <lib-selection-matrix-fields\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(question.element, $event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                    (translationsUpdated)=\"onTranslationsUpdated($event)\"\n                  ></lib-selection-matrix-fields>\n                  <div *ngIf=\"question.element.childLogics?.length > 0\">\n                    <div\n                      class=\"logic-container\"\n                      *ngFor=\"\n                        let childLogic of question.element.childLogics;\n                        trackBy: trackByChildLogicFn\n                      \"\n                    >\n                      <p class=\"logic-heading\">Logic</p>\n                      <div class=\"logic-condition\">\n                        <p class=\"logic-text\">If answer</p>\n                        <select\n                          name=\"\"\n                          id=\"\"\n                          class=\"logic-dropdown\"\n                          [(ngModel)]=\"childLogic.condition\"\n                        >\n                          <option\n                            *ngFor=\"let option of comparisonOptions\"\n                            [value]=\"option.value\"\n                          >\n                            {{ option.label }}\n                          </option>\n                        </select>\n                        <input\n                          type=\"text\"\n                          class=\"logic-input text-center\"\n                          [(ngModel)]=\"childLogic.inputValue\"\n                        />\n                        <p class=\"logic-text ms-2\">then</p>\n                        <div class=\"logic-add-btn\">\n                          <div\n                            class=\"add-qstn-btn\"\n                            (click)=\"\n                              addNewChildQuestion(\n                                question.element.id,\n                                childLogic\n                              )\n                            \"\n                          >\n                            <img\n                              class=\"icon-field-add me-2\"\n                              src=\"/assets/icons/add-question-icon.svg\"\n                            />\n\n                            <a class=\"add-qstn-text\">Add Question</a>\n                          </div>\n                          <button\n                            class=\"logic-arrow-btn\"\n                            data-bs-toggle=\"dropdown\"\n                            aria-expanded=\"false\"\n                          >\n                            <img\n                              class=\"icon-darrow-btn-blue ms-2\"\n                              src=\"/assets/icons/down-arrow-blue-icon.svg\"\n                            />\n                          </button>\n                        </div>\n                        <img\n                          (click)=\"deleteLogic(question, childLogic.id)\"\n                          class=\"icon-right delete-logic ms-auto\"\n                          src=\"/assets/icons/delete-icon.svg\"\n                          alt=\"Delete Icon\"\n                        />\n                      </div>\n                      <!-- <lib-first-child [question]=\"childLogic.formElements\"\n                        [selectedQuestionId]=\"selectedQuestionId\"\n                        [pages]=\"pages\"\n                        [translations]=\"translations\"></lib-first-child> -->\n                    </div>\n                  </div>\n                </ng-container>\n                <ng-container *ngIf=\"\n                question.element?.formElement?.elementType ===\n                'AGGREGATE_FUNCTION'\n              \">\n                  <lib-aggregate-function\n                    [question]=\"question\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    [subFormId]=\"subForms.element.id\"\n                    [elementType]=\"elementType\"\n                    [inLogic]=\"true\"\n                    (click)=\"selectQuestion(question.element,$event)\"\n                    (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                    (translationsUpdated)=\"\n                      onTranslationsUpdated($event)\n                    \"\n                  >\n                  </lib-aggregate-function>\n                </ng-container>\n              </ng-container>\n              <ng-container *ngIf=\"question.entityType == 'SECTION'\">\n                <lib-child-section\n                  [section]=\"question.element\"\n                  [translations]=\"translations\"\n                  [pages]=\"pages\"\n                  [selectedQuestionId]=\"question.element.id\"\n                  (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                  (click)=\"selectQuestion(question.element, $event)\"\n                ></lib-child-section>\n              </ng-container>\n            </div>\n\n            <div class=\"d-flex justify-content-between align-items-center\">\n              <div>\n                <div class=\"custom-element-id-container\">\n                  <div *ngIf=\"customElementId\">\n                    <span>Element ID - {{customElementId}}</span>\n                  </div>\n              </div>\n              </div>\n            <div class=\"d-flex gap-4\">\n              <div class=\"form-check\">\n                <input\n                  type=\"checkbox\"\n                  name=\"\"\n                  [id]=\"'required' + subForms.element.id\"\n                  [(ngModel)]=\"subformRequired\"\n                  (ngModelChange)=\"markRequired()\"\n                />\n                <label\n                  [for]=\"'required' + subForms.element.id\"\n                  class=\"form-check-label\"\n                  >Required</label\n                >\n              </div>\n  \n                <div class=\"add-qstn-button\">\n                  <div\n                    class=\"btn-group\"\n                    role=\"group\"\n                    aria-label=\"Button group with nested dropdown\"\n                  >\n                    <button\n                      type=\"button\"\n                      class=\"btn  btn-add-qstn fontFamily text-white\"\n                      [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n                      (click)=\"addNewQuestion()\"\n                    >\n                      Add New Question\n                    </button>\n                    <div class=\"btn-group arrow-btn\" role=\"group\">\n                      <button\n                        type=\"button\"\n                        class=\"btn add-qstn-arrow\"\n                        [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n                        data-bs-toggle=\"dropdown\"\n                        aria-expanded=\"false\"\n                      >\n                        <img\n                          src=\"/assets/icons/down-arrow-white-icon.svg\"\n                          alt=\"Arrow Icon\"\n                        />\n                      </button>\n                      <ul class=\"dropdown-menu qstn-dropdown-menu\">\n                        <li>\n                          <a class=\"dropdown-item fontFamily\" (click)=\"addSection()\"\n                            >Add Section</a\n                          >\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n                </div>\n            </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-recursive-question',\n  templateUrl: './recursive-question.component.html',\n  styleUrls: ['./recursive-question.component.scss']\n})\nexport class RecursiveQuestionComponent {\n  @Input() question: any = [];\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  @Input() pages: any = [];\n  @Input() pageId: string = '';\n  @Input() primaryColor: string = '';\n  @Input() secondaryColor: string = '';\n  @Input() elementType: string = '';\n  @Input() multifieldId: string = '';\n  @Input() logicId:string = '';\n  @Input() inLogic:boolean=false;\n  editingIndex: number = -1;\n  @Output() translationsUpdated: EventEmitter<any> = new EventEmitter<any>();\n  @ViewChild('textInput') textInput!: ElementRef<HTMLInputElement>;\n  @Output() newUpdatedpages: EventEmitter<any[]> = new EventEmitter<any[]>();\n  @Output() newpages: EventEmitter<any[]> = new EventEmitter<any[]>();\n  inputQuestion: string = '';\n  questionRequired!: boolean;\n  hintText: string = '';\n  childLogics: any = [];\n  data: string = '';\n  idSelectedQstn: any = '';\n  newPageId: string = '';\n  newPages: any = [];\n  selectedPage: any = [];\n  comparisonOptions = CONSTANTS.COMPARISON_OPTIONS;\n  dropdownComparison = CONSTANTS.DROPDOWN_COMPARISON;\n  textComparison = CONSTANTS.TEXT_COMPARISON;\n  inputValue: string = '';\n  selectedids: any = [];\n  selectedSection: any = {};\n  selectedForm: any = {};\n  selectedQuestion: any = {};\n\n  constructor(\n    private dataservice: DataService,\n    private elementRef: ElementRef\n  ) {}\n  ngOnInit() {\n    this.dataservice.sendPageId(this.pageId);\n    this.valueAssigned();\n  }\n  selectQuestion(question: any,event:any) {\n    event.stopPropagation();\n    this.selectedQuestionId = question.id || question.element?.id || question?.formElement?.id;\n    this.dataservice.sendQuestion(question);\n    this.dataservice.sendPageId(this.pageId);\n  }\n\n  deleteQuestion(data: any) {\n    this.dataservice.sendData(data);\n  }\n\n  valueAssigned() {\n    this.inputQuestion =\n      this.question?.element?.question || this.question?.question;\n    this.questionRequired =\n      this.question?.element?.required || this.question?.required;\n    this.hintText = this.question?.element?.hint || this.question?.hint;\n    this.childLogics =\n      this.question?.element?.childLogics || this.question?.childLogics;\n  }\n\n  \n  deleteChildQuestions(event: any) {\n    this.dataservice.sendData(this.question.id);\n  }\n\n  delete(event: any) {\n    event.stopPropagation();\n    this.dataservice.sendData(this.selectedQuestionId);\n    this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n  }\n\n  addLogic(page: any, question: any, childLogic: any) {\n    this.dataservice.sendPageId(page);\n    this.dataservice.sendLogicId(childLogic.id);\n    this.dataservice.sendChildQuestions(question);\n    this.valueAssigned();\n    this.selectedQuestion = question;\n  }\n\n  newpages1(updatedPages: any[]): void {\n    this.newUpdatedpages.emit(updatedPages);\n  }\n\n  newUpdatedpagess(updatedPages: any[]): void {\n    this.newpages.emit(updatedPages);\n    this.newUpdatedpages.emit(updatedPages);\n  }\n\n  deleteLogic(quest: any, id: any) {\n    for (let i = 0; i < quest.length; i++) {\n      if (quest[i].element.childLogics) {\n        let child = quest[i].element.childLogics;\n        this.getIds(child, id);\n        for (let m = 0; m < this.selectedids.length; m++) {\n          this.transalationDelete(this.selectedids[m]);\n          this.deleteGrids(this.selectedids[m]);\n        }\n      }\n      quest[i].element.childLogics = quest[i].element?.childLogics?.filter(\n        (item: any) => item.id != id\n      );\n    }\n    this.dataservice.sendPages(this.pages);\n  }\n\n  transalationDelete(id: any) {\n    for (let k = this.translations.length - 1; k >= 0; k--) {\n      let translate = this.translations[k];\n      if (translate.elementId == id) {\n        this.translations.splice(k, 1);\n      }\n    }\n  }\n\n  deleteGrids(id: any) {\n    for (let i = 0; i < this.pages.length; i++) {\n      let page = this.pages[i];\n\n      for (let j = 0; j < page.rows.length; j++) {\n        let row = page.rows[j];\n\n        // Recursively handle grids with nested rows\n        const removeGridWithElementId = (grids: any[], id: string) => {\n          return grids.filter((grid: any) => {\n            // If grid has nested rows, process them\n\n            if (grid.rows) {\n              grid.rows.forEach((innerRow: any) => {\n                innerRow.grids = removeGridWithElementId(innerRow.grids, id);\n              });\n\n              // If all inner grids are removed, remove the row\n              grid.rows = grid.rows.filter(\n                (innerRow: any) => innerRow.grids.length > 0\n              );\n            }\n\n            // Return only grids that don't match the elementId\n            return grid.elementId !== id;\n          });\n        };\n\n        // Update grids in the current row by filtering out the matching elementId\n        row.grids = removeGridWithElementId(row.grids, id);\n      }\n\n      // After processing all rows, remove rows that have no grids left\n      page.rows = page.rows.filter((row: any) => row.grids.length > 0);\n    }\n  }\n\n  getIds(child: any, id: any) {\n    if (child.length == undefined) {\n      for (let i = 0; i < child.formElements.length; i++) {\n        const item = child.formElements[i];\n        if (item.element.id) {\n          this.selectedids.push(item.element.id);\n        }\n        const formElements = item?.element?.childLogics;\n        if (formElements) {\n          for (let k = 0; k < formElements.length; k++) {\n            this.getIds(formElements[k], id); // Pass formElements to recursive call\n          }\n        }\n      }\n    } else {\n      for (let i = 0; i < child.length; i++) {\n        const item = child[i];\n        if (item.id) {\n          this.selectedids.push(item.id);\n        }\n        const formElements = item.formElements;\n        if (formElements) {\n          for (let j = 0; j < formElements.length; j++) {\n            const element = formElements[j];\n            if (element.element && element.element.id) {\n              this.selectedids.push(element.element.id);\n            }\n            if (element.element && element.element.childLogics) {\n              let childLogics = element.element.childLogics; // Renamed to avoid naming conflict\n              for (let k = 0; k < childLogics.length; k++) {\n                this.getIds(childLogics[k], id); // Pass formElements to recursive call\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  handleKeyDown(event: KeyboardEvent, childLogic: any) {\n    const inputElement = event.target as HTMLInputElement;\n    const inputValue = inputElement.value.trim();\n\n    if (event.key === 'Enter' && inputValue !== '') {\n      if (!childLogic.inputValue) {\n        childLogic.inputValue = [];\n      }\n\n      childLogic.inputValue.push(inputValue); // Add value to the correct list\n      inputElement.value = ''; // Clear input after adding\n\n      event.preventDefault();\n    }\n  }\n\n  handleInput(event: Event, childLogic: any) {\n    if (!childLogic) {\n      console.error('childLogic is undefined!');\n      return;\n    }\n\n    const inputElement = event.target as HTMLInputElement;\n    if (inputElement) {\n      const value = inputElement.value;\n      inputElement.style.width = `${Math.max(50, value.length * 10)}px`; // Adjust width dynamically\n    }\n  }\n\n  removeOption(option: string, childLogic: any) {\n    childLogic.inputValue = childLogic.inputValue.filter(\n      (item: string) => item !== option\n    );\n  }\n\n  editValue(index: number, childLogic: any) {\n    childLogic.currentInput = childLogic.inputValue[index]; // Load value into input\n    this.editingIndex = index;\n  }\n\n  focusInput(inputElement: HTMLInputElement, childLogic: any) {\n    setTimeout(() => inputElement.focus(), 0);\n  }\n\n  onTranslationsUpdated(updatedTranslations: any) {\n    this.translations = updatedTranslations;\n    this.translationsUpdated.emit(this.translations);\n  }\n\n  selectSection(question: any) {\n    if (question.id !== this.selectedSection.id) {\n      this.selectedSection = question;\n    }\n  }\n\n  selectSubForm(question: any) {\n    if (question.element.id !== this.selectedForm?.id) {\n      this.selectedForm = question;\n      this.dataservice.sendChildSubform(this.selectedForm);\n      // this.dataservice.sendQuestion(question);\n    }\n  }\n\n  \n  optionUpdates(data: any) {    \n    const validateFormElement = (formElement: any) => {\n      if (formElement.entityType === 'QUESTION') {\n        if(formElement.element.id==data.element.id){\n          formElement.element = {...data.element};\n        }else{\n          formElement.element?.childLogics?.forEach((childLogic: any) => {\n            childLogic?.formElements?.forEach((childLogicFormElement: any) => {\n              if (childLogicFormElement?.element.id === data.element.id) {\n                childLogicFormElement.element = structuredClone(\n                  data.element\n                );\n                childLogicFormElement.element.formElement = structuredClone(\n                  data.element.formElement\n                );                \n              }\n            });\n          });\n        }\n      }\n\n      formElement.element.childLogics?.forEach((logic: any) =>\n        logic.formElements.forEach((childElement: any) =>\n          validateFormElement(childElement)\n        )\n      );\n    };\n\n    const validateSubForm = (subForm: any) => {\n      if (!subForm || !subForm.formElements) return;\n      subForm.formElements.forEach((element: any) => {\n        if (element.entityType === 'QUESTION') {\n          validateFormElement(element);\n        } else if (element.entityType === 'SUBFORM') {\n          validateSubForm(element.element);\n        }\n      });\n    };\n\n    this.pages.forEach((page: any) => {\n      page.formElements.forEach((element: any) => {\n        if (element.entityType === 'QUESTION') {\n          validateFormElement(element);\n        } else if (\n          element.entityType === 'SUBFORM' ||\n          element.entityType === 'QUESTION_GROUP' ||\n          element.entityType === 'MULTIFIELD'\n        ) {\n          validateSubForm(element.element);\n        }\n      });\n    });\n  }\n}\n","<div *ngFor=\"let childQuestion of question\" class=\"childLogic\" style=\"width: 102% !important;\">\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'TEXT_AREA'\">\n        <lib-text-area-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-text-area-fields>\n\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container *ngIf=\"childQuestion?.element.formElement?.elementType === 'TEXT_BOX'\">\n        <lib-textbox\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-textbox>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of textComparison\" [value]=\"option.value\">{{ option.label }}</option>\n                  </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              [logicId]=\"childLogic.id\"\n              [inLogic]=\"true\"\n              [pageId]=\"pageId\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'EMAIL'\">\n        <lib-mail-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-mail-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'PASSWORD'\">\n        <lib-password-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-password-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'MOBILE'\">\n        <lib-mobile-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-mobile-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'RICH_TEXT_EDITOR'\">\n        <lib-rich-text-editor-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-rich-text-editor-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container *ngIf=\"childQuestion?.element.formElement?.elementType === 'NUMBER'\">\n        <lib-type-number\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"\n         ></lib-type-number>\n         <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              [logicId]=\"childLogic.id\"\n              [inLogic]=\"true\"\n              [pageId]=\"pageId\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'URL'\">\n        <lib-url-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-url-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'CURRENCY'\">\n      <lib-currency-fields\n      [id]=\"'question-' + childQuestion.element.id\"\n      [question]=\"childQuestion\"\n      [selectedQuestionId]=\"selectedQuestionId\"\n      [translations]=\"translations\"\n      [pages]=\"pages\"\n      (click)=\"selectQuestion(childQuestion.element,$event)\"\n      (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-currency-fields>\n      <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n          <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n            <p class=\"logic-heading\">Logic</p>\n              <div class=\"logic-condition\">\n                <p class=\"logic-text\">If answer</p>\n                <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                  <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                    </select>\n               <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                <p class=\"logic-text ms-2\">then</p>\n              <div class=\"logic-add-btn\">\n                <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                  <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                  <a class=\"add-qstn-text\">Add Question</a>\n                </div>\n              </div>\n                <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n            </div>\n            <lib-recursive-question\n            [id]=\"'question-' + childQuestion.element.id\"\n            [question]=\"childLogic.formElements\"\n            [selectedQuestionId]=\"selectedQuestionId\"\n            [translations]=\"translations\"\n            [pages]=\"pages\"\n            (newUpdatedpages)=\"newUpdatedpagess($event)\"\n            (translationsUpdated)=\"onTranslationsUpdated($event)\"\n            ></lib-recursive-question>\n          </div>\n      </div>\n  </ng-container>\n\n    <ng-container *ngIf=\"childQuestion?.element.formElement?.elementType === 'DROP_DOWN'\">\n        <lib-drop-down\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (newpages)=\"newpages1($event)\"\n        [questions]=\"pages\" (questionUpdated)=\"optionUpdates($event)\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-drop-down>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of dropdownComparison\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                      <input type=\"text\" class=\"logic-input\" [(ngModel)]=\"childLogic.inputValue\"\n                        *ngIf=\"childLogic.condition=='=' || childLogic.condition=='!='\">\n                        <div class=\"inputBox ms-2\" *ngIf=\"childLogic.condition=='IN' || childLogic.condition=='NOT IN'\">\n                          <div class=\"inputBoxLabels\">\n                            <span class=\"inputBoxLabel\" *ngFor=\"let option of childLogic?.inputValue\">\n                              {{ option }}\n                              <span class=\"close\" (click)=\"removeOption(option, childLogic)\">x</span>\n                            </span>\n                          </div>\n                          <input\n                          class=\"textField\"\n                          type=\"text\"\n                          id=\"textField\"\n                          name=\"textField\"\n                          (input)=\"handleInput($event, childLogic)\"\n                          (keydown)=\"handleKeyDown($event, childLogic)\">\n\n                        </div>\n\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              [logicId]=\"childLogic.id\"\n              [inLogic]=\"true\"\n              [pageId]=\"pageId\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'RADIO_BUTTON'\">\n        <lib-drop-down\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (newpages)=\"newpages1($event)\"\n        [questions]=\"pages\" (questionUpdated)=\"optionUpdates($event)\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-drop-down>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of dropdownComparison\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                        <input type=\"text\" class=\"logic-input\" [(ngModel)]=\"childLogic.inputValue\"\n                          *ngIf=\"childLogic.condition=='=' || childLogic.condition=='!='\">\n                          <div class=\"inputBox ms-2\" *ngIf=\"childLogic.condition=='IN' || childLogic.condition=='NOT IN'\">\n                            <div class=\"inputBoxLabels\">\n                              <span class=\"inputBoxLabel\" *ngFor=\"let option of childLogic?.inputValue\">\n                                {{ option }}\n                                <span class=\"close\" (click)=\"removeOption(option, childLogic)\">x</span>\n                              </span>\n                            </div>\n                            <input\n                            class=\"textField\"\n                            type=\"text\"\n                            id=\"textField\"\n                            name=\"textField\"\n                            (input)=\"handleInput($event, childLogic)\"\n                            (keydown)=\"handleKeyDown($event, childLogic)\">\n\n                          </div>\n\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              [logicId]=\"childLogic.id\"\n              [inLogic]=\"true\"\n              [pageId]=\"pageId\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'CHECK_BOX'\">\n        <lib-drop-down\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (newpages)=\"newpages1($event)\"\n        [questions]=\"pages\" (questionUpdated)=\"optionUpdates($event)\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-drop-down>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of dropdownComparison\" [value]=\"option.value\">{{ option.label }}</option>\n                        </select>\n                        <input type=\"text\" class=\"logic-input\" [(ngModel)]=\"childLogic.inputValue\"\n                        *ngIf=\"childLogic.condition=='=' || childLogic.condition=='!='\">\n                        <div class=\"inputBox ms-2\" *ngIf=\"childLogic.condition=='IN' || childLogic.condition=='NOT IN'\">\n                          <div class=\"inputBoxLabels\">\n                            <span class=\"inputBoxLabel\" *ngFor=\"let option of childLogic?.inputValue\">\n                              {{ option }}\n                              <span class=\"close\" (click)=\"removeOption(option, childLogic)\">x</span>\n                            </span>\n                          </div>\n                          <input\n                          class=\"textField\"\n                          type=\"text\"\n                          id=\"textField\"\n                          name=\"textField\"\n                          (input)=\"handleInput($event, childLogic)\"\n                          (keydown)=\"handleKeyDown($event, childLogic)\">\n\n                        </div>\n\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              [logicId]=\"childLogic.id\"\n              [inLogic]=\"true\"\n              [pageId]=\"pageId\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'FILE_PICKER'\">\n        <lib-file-picker-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-file-picker-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'DATE_TIME'\">\n        <lib-date-time-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-date-time-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'SLIDER'\">\n        <lib-slider-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-slider-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'SIGNATURE'\">\n        <lib-signature-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-signature-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'LOCATION'\">\n        <lib-location-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-location-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'TERMS_AND_CONDITION'\">\n        <lib-terms-and-condition-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-terms-and-condition-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                       </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'TOGGLE_SWITCH'\">\n        <lib-toggle-switch-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"></lib-toggle-switch-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container  *ngIf=\"childQuestion?.element.formElement?.elementType === 'SELECTION_MATRIX'\">\n        <lib-selection-matrix-fields\n        [id]=\"'question-' + childQuestion.element.id\"\n        [question]=\"childQuestion\"\n        [selectedQuestionId]=\"selectedQuestionId\"\n        [translations]=\"translations\"\n        [pages]=\"pages\"\n        (click)=\"selectQuestion(childQuestion.element,$event)\"\n        (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"\n        (translationsUpdated)=\"onTranslationsUpdated($event)\"></lib-selection-matrix-fields>\n        <div *ngIf=\"childQuestion.element.childLogics?.length>0\">\n            <div class=\"logic-container\" *ngFor=\"let childLogic of childQuestion.element.childLogics let i = index\" >\n              <p class=\"logic-heading\">Logic</p>\n                <div class=\"logic-condition\">\n                  <p class=\"logic-text\">If answer</p>\n                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}</option>\n                      </select>\n                 <input type=\"text\"  maxlength=\"150\"class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                  <p class=\"logic-text ms-2\">then</p>\n                <div class=\"logic-add-btn\">\n                  <div class=\"add-qstn-btn\" (click)=\"addLogic(pageId,childQuestion.element.id,childLogic)\">\n                    <img src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Icon\">\n                    <a class=\"add-qstn-text\">Add Question</a>\n                  </div>\n                </div>\n                  <img (click)=\"deleteLogic(question,childLogic.id)\" class=\"delete-logic ms-auto icon-right delete-btn\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n              <lib-recursive-question\n              [id]=\"'question-' + childQuestion.element.id\"\n              [question]=\"childLogic.formElements\"\n              [selectedQuestionId]=\"selectedQuestionId\"\n              [translations]=\"translations\"\n              [pages]=\"pages\"\n              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n              (translationsUpdated)=\"onTranslationsUpdated($event)\"\n              ></lib-recursive-question>\n            </div>\n        </div>\n    </ng-container>\n    <ng-container *ngIf=\"\n              childQuestion.element?.formElement?.elementType ===\n                'AGGREGATE_FUNCTION'\n              \">\n                  <lib-aggregate-function\n                    [question]=\"childQuestion\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    [subFormId]=\"multifieldId\"\n                    [logicId]=\"logicId\"\n                    [inLogic]=\"inLogic\"\n                    [elementType]=\"elementType\"\n                    (click)=\"selectQuestion(childQuestion.element,$event)\"\n                    (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"\n                    (translationsUpdated)=\"\n                      onTranslationsUpdated($event)\n                    \"\n                  >\n                  </lib-aggregate-function>\n                </ng-container>\n\n                <ng-container *ngIf=\"\n              childQuestion.element?.formElement?.elementType ===\n                'HIDDEN_FIELD'\n              \">\n                  <lib-hidden-fields\n                    [question]=\"childQuestion\"\n                    [selectedQuestionId]=\"selectedQuestionId\"\n                    [translations]=\"translations\"\n                    [pages]=\"pages\"\n                    (click)=\"selectQuestion(childQuestion.element,$event)\"\n                    (deleteQuestion)=\"deleteQuestion(childQuestion.id)\"\n                    (translationsUpdated)=\"\n                      onTranslationsUpdated($event)\n                    \"\n                  >\n                  </lib-hidden-fields>\n                </ng-container>\n    <ng-container *ngIf=\"childQuestion?.entityType  == 'SECTION'\">\n      <lib-child-section\n      [id]=\"'question-' + childQuestion.element.id\"\n      [section]=\"childQuestion\"\n      [selectedQuestionId]=\"childQuestion?.element?.id\"\n      (click)=\"selectSection(childQuestion.element)\"\n      [translations]=\"translations\"\n      [pages]=\"pages\"\n    ></lib-child-section>\n    </ng-container>\n\n    <ng-container *ngIf=\"childQuestion?.entityType  == 'SUBFORM'\">\n      <lib-child-add-form\n                            [id]=\"'question-' + childQuestion.element.id\"\n                            [subForms]=\"childQuestion\"\n                            [translations]=\"translations\"\n                            [pageId]=\"pageId\"\n                            [pages]=\"pages\"\n                            [selectedQuestionId]=\"selectedQuestionId\"\n                            (click)=\"selectSubForm(childQuestion)\"\n                            (newpages)=\"newpages1($event)\"\n                            (translationsUpdated)=\"onTranslationsUpdated($event)\"\n                            [selectedQuestionId]=\"selectedQuestionId\"\n                            [primaryColor]=\"primaryColor\"\n                            [secondaryColor]=\"secondaryColor\"\n                            [elementType]=\"'SUBFORM'\"\n                          >\n    </lib-child-add-form>\n    </ng-container>\n</div>\n\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-mail-fields',\n  templateUrl: './mail-fields.component.html',\n  styleUrls: ['./mail-fields.component.scss'],\n})\nexport class MailFieldsComponent {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  placeholder: string = '';\n  expectedDomains: string[] = [];\n  regularExpression: string = '';\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n  defaultValue: string = '';\n  ngOnInit() {\n    this.valueAssigned();\n    this.getQuestion();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.placeholder = this.question?.element?.formElement?.appearance?.placeholder || '';\n    this.expectedDomains =\n      this.question?.formElement?.validation?.expectedDomains\n        ?.split(',')\n        .map((domain: any) => domain.trim());\n    this.regularExpression =\n      this.question?.element?.formElement?.validation.regularExpression;\n    if(!this.inPreview){\n      this.defaultValue = this.question.element.defaultValue;\n    }\n  }\n\n  upateAnswer(event:any){\n    this.answerChange.emit(event.target.value);\n  }\n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n  <input\n    type=\"email\"\n    class=\"form-control mb-2 height\"\n    [placeholder]=\"placeholder\"\n    [disabled]=\"inPreview\"\n    (input)=\"upateAnswer($event)\"\n    [(ngModel)]=\"defaultValue\"\n  />\n</div>\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, Renderer2, SimpleChanges } from '@angular/core';\nimport { CountryService } from '../../services/country.service';\n\ninterface CountryData {\n  value: string;\n  label: string;\n  image: string;\n}\n\ninterface filteredCountry {\n  name: string;\n  flag: string;\n  isd: {};\n  languages: {};\n}\n\n@Component({\n  selector: 'lib-mobile-fields',\n  templateUrl: './mobile-fields.component.html',\n  styleUrls: ['./mobile-fields.component.scss'],\n})\nexport class MobileFieldsComponent implements OnInit {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  placeholder: string = '';\n  displayCountryCode: boolean = true;\n  displayFlag: boolean = true;\n  displayCode: boolean = true;\n  showCountryName: boolean = true;\n  beautifyNumbers: boolean = true;\n  countryWiseValidation: boolean = true;\n  countryDetails: any[] = [];\n  filteredCountry: filteredCountry[] = [];\n  questionId: string = '';\n  currentPage: number = 0;\n  size: number = 30;\n  totalPages: number = 0;\n  searchKey: string = '';\n  lastPage:boolean=false;\n  isFirstPage: boolean = false;\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  private styleElement: HTMLStyleElement | null = null;\n  @Output() answerChange = new EventEmitter<any>();\n  mobileNumber: string = '';\n  selectedCountry: CountryData[] = [];\n  \n  constructor(\n    private countryService: CountryService,\n    private renderer: Renderer2,\n    private cdr:ChangeDetectorRef\n  ) { }\n\n  ngOnInit() {\n    this.valueAssigned();\n    this.getQuestion();\n    this.injectStyle();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.placeholder = this.question?.element?.formElement?.appearance.placeholder;\n    this.displayCountryCode =\n      this.question?.element?.formElement?.appearance.displayCountryCode;\n    this.displayFlag = this.question?.element?.formElement?.appearance.displayFlag;\n    this.displayCode = this.question?.element?.formElement?.appearance.displayCode;\n    this.showCountryName = this.question?.element?.formElement?.appearance.showCountryName;\n    this.beautifyNumbers = this.question?.element?.formElement?.appearance.beautifyNumbers;\n    this.countryWiseValidation =\n      this.question?.element?.formElement?.validation.countryWiseValidation;\n    this.questionId = this.question.element.id;\n    this.loadCountry(this.questionId, this.currentPage, this.size, this.searchKey);\n  }\n  \n\n  loadCountry(id: string, currentPage: number, size: number, searchKey: string, isSearch: boolean = false) {\n    this.countryService.loadCountryDetails(currentPage, size, searchKey).subscribe((data:any) => {\n      if (this.totalPages === 0) {\n        this.totalPages = data.result.totalPages;\n      }\n      this.lastPage=data.result.last;\n      this.isFirstPage = data.result.first;\n\n      let newCountries=this.countryService.processCountryDetails(\n        data.result.content,\n      )\n      if (isSearch) {\n        // For search, replace the list completely\n        this.countryDetails = newCountries;\n      } else {\n      if (this.currentPage > 0) {\n        this.countryDetails = [\n          ...this.countryDetails,\n          ...newCountries.filter((item:any) => !this.countryDetails.some((existing: any) => existing.value === item.value))\n          ];\n      } else {\n        this.countryDetails = [\n          ...newCountries.filter((item:any) => !this.countryDetails.some((existing: any) => existing.value === item.value)),\n          ...this.countryDetails\n          ];\n      }\n    }\n      if(this.question.element.defaultValue && !isSearch){\n        this.initializeDefaultValue();\n      }\n    });\n\n  }\n\n\n  getNextSetOfItems(event: any) {\n    const element = event.target;\n    if (!this.lastPage) {\n      if (element.scrollHeight - element.scrollTop === element.clientHeight) {\n        this.loadMoreData();\n      }\n    }\n    if (!this.isFirstPage && element.scrollTop <= 150) {\n      this.loadPreviousData();\n    }\n  }\n\n  loadMoreData() {\n    setTimeout(() => {\n      this.currentPage++;\n      if (this.currentPage >= 0) {\n        this.loadCountry(this.questionId,this.currentPage, this.size, \"\");\n      }\n    }, 0);\n  }\n\n  loadPreviousData() {\n    setTimeout(() => {\n      this.currentPage--;\n      if (this.currentPage >= 0) {\n        this.loadCountry(this.questionId,this.currentPage, this.size, \"\");\n      }\n    }, 0);\n  }\n\n  search(searchTerm: any) {\n    if (searchTerm == '') {\n      this.loadCountry(this.questionId,this.currentPage, this.size, \"\",true);\n    }\n    else {\n      this.countryDetails = []; \n      this.loadCountry(this.questionId,this.currentPage, this.size, searchTerm,true);\n    }\n  }\n\n  onCountryChange() {\n    this.updateDefaultValue();\n  }\n\n  onInput(event: Event) {\n    const input = event.target as HTMLInputElement;\n  \n    // Regular expression to allow only numbers and multiple hyphens, but ensure only one hyphen between numbers\n    const regex = /^(\\d+)(-\\d+)*$/;\n  \n    if (!regex.test(input.value)) {\n      // Remove invalid characters\n      input.value = input.value.replace(/[^\\d-]/g, '');\n  \n      // Ensure only one hyphen is present between numbers\n      input.value = input.value\n        .split('-')\n        .filter((segment, index, array) => segment || index === 0 || index === array.length - 1)\n        .join('-');\n    }\n  \n    // Update the model\n    this.mobileNumber = input.value;\n    \n    this.updateDefaultValue();\n  }\n\n  updateDefaultValue() {  \n    if(this.displayCountryCode){\n      if (this.selectedCountry.length > 0 && this.mobileNumber) {\n        const countryCode = this.selectedCountry[0].value;\n        this.question.element.defaultValue = `${countryCode} ${this.mobileNumber}`;\n      }\n    }else {\n      this.question.element.defaultValue = this.mobileNumber;\n    }\n    this.answerChange.emit(this.question.element.defaultValue);\n  }\n\n  initializeDefaultValue() {    \n    if(!this.inPreview){\n      const [countryCode, mobileNumber] = this.question?.element.defaultValue?.split(' ');\n      this.mobileNumber = mobileNumber || '';\n      \n      let matchedCountry = this.countryDetails.find(country => country.value === countryCode);    \n      if (matchedCountry) {\n        this.selectedCountry=[matchedCountry];\n      }\n      else if (countryCode) {\n        // Not found? Fetch from API directly\n        this.countryService.loadCountryDetails(0, 1, countryCode).subscribe((data) => {\n          const extraCountries = this.countryService.processCountryDetails(data.result.content);\n          matchedCountry = extraCountries.find(\n            (country) => country.value === countryCode\n          );\n          if (matchedCountry) {\n            // Add to dropdown list if missing\n            if (!this.countryDetails.some((c) => c.value === matchedCountry!.value)) {\n              this.countryDetails = [matchedCountry, ...this.countryDetails];\n            }\n            // Preselect it\n            this.selectedCountry = [matchedCountry];\n          }\n        });\n      }            \n      this.cdr.detectChanges();\n    }\n  }\n\n\n  ngOnDestroy() {\n    if(this.inPreview){\n      this.removeStyle(); // Remove the style when the component is destroyed\n    }\n  }\n\n  injectStyle() {\n    if(this.inPreview){\n      const style = this.renderer.createElement('style');\n      style.innerHTML = `.dropdown .dropdown-field.closed { pointer-events: none !important; }`;\n      this.renderer.appendChild(document.head, style);\n      this.styleElement = style;\n    }\n    \n  }\n\n  removeStyle() {\n    if (this.styleElement) {\n      this.renderer.removeChild(document.head, this.styleElement);\n      this.styleElement = null;\n    }\n  }\n\n}\n\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n  <div class=\"input-group mb-2\">\n    <div class=\"col-xs-5 col-5 col-md-3 px-0 pe-2 ps-2\">\n      <lib-dropdown\n        [items]=\"countryDetails\"\n        [multiple]=\"false\"\n        (onDropdownScroll)=\"getNextSetOfItems($event)\"\n        (onSearch)=\"search($event)\"\n        [(selectedItems)]=\"selectedCountry\"\n        (selectedItemsChange)=\"onCountryChange()\"\n      ></lib-dropdown>\n    </div>\n    <input\n      type=\"number\"\n      class=\"form-control col-xs-7 col-7 col-md-9 height mobileField\"\n      [placeholder]=\"placeholder\"\n      aria-label=\"Mobile Number\"\n      [disabled]=\"inPreview\"\n      [(ngModel)]=\"mobileNumber\"\n      (input)=\"onInput($event)\"\n    />\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-number-fields',\n  templateUrl: './number-fields.component.html',\n  styleUrls: ['./number-fields.component.scss'],\n})\nexport class NumberFieldsComponent {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  upDown!: boolean;\n  allowNegativeValues!: boolean;\n  placeholder: string = '';\n  min!: number;\n  max!: number;\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n  defaultValue!: number;\n  ngOnInit() {\n    this.valueAssigned();\n    this.getQuestion();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.upDown = this.question?.element?.formElement?.appearance.upAndDownButton;\n    this.allowNegativeValues =\n      this.question?.element?.formElement?.appearance.allowNegativeValues;\n    this.placeholder = this.question?.element?.formElement?.appearance?.placeholder || '';\n    this.min = this.question?.element?.formElement?.validation.min;\n    this.max = this.question?.element?.formElement?.validation.max;\n    if(!this.inPreview){\n      this.defaultValue = this.question.element.defaultValue;\n    }\n  }\n\n  upateAnswer(event:any){\n    this.answerChange.emit(event.target.value);\n  }\n  \n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n  <input\n    type=\"number\"\n    class=\"form-control mb-2 height\"\n    [placeholder]=\"placeholder\"\n    [class.hide-spin-buttons]=\"!upDown\"\n    [attr.min]=\"min\"\n    [attr.max]=\"max\"\n    [disabled]=\"inPreview\"\n    (input)=\"upateAnswer($event)\"\n    [(ngModel)]=\"defaultValue\"\n  />\n</div>\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-rich-text-editor-fields',\n  templateUrl: './rich-text-editor-fields.component.html',\n  styleUrls: ['./rich-text-editor-fields.component.scss'],\n})\nexport class RichTextEditorFieldsComponent {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  numberOfRows!: number;\n  limitedCharacters: boolean = false;\n  counts: number = 0;\n  characterCount!: number;\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n  htmlContent: string = '';\n  \n  ngOnInit() {\n    this.valueAssigned();  \n    this.getQuestion();  \n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.numberOfRows = this.question?.element?.formElement?.appearance.numberOfRows;\n    this.limitedCharacters =\n      this.question?.element?.formElement?.validation.limitedCharacters;\n    this.counts = this.question?.element?.formElement?.validation.count;\n    this.numberOfRows = this.question?.element?.formElement?.appearance.numberOfRows;\n    this.limitedCharacters =\n      this.question?.element?.formElement?.validation.limitedCharacters;\n    if (this.limitedCharacters) {\n      this.characterCount = this.question?.element?.formElement?.validation.count;\n    }\n    if(!this.inPreview){\n      this.htmlContent = this.question.element.defaultValue;\n    }\n  }\n\n  upateAnswer(event:any){\n    this.answerChange.emit(this.htmlContent);\n  }\n \n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n  <quill-editor \n  class=\"editor\"\n  placeholder=\"\"\n  [readOnly]=\"inPreview\"\n  [(ngModel)]=\"htmlContent\"\n  (input)=\"upateAnswer($event)\"\n  ></quill-editor>\n</div>\n","import { Component, EventEmitter, Input,Output,SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-text-area-fields',\n  templateUrl: './text-area-fields.component.html',\n  styleUrls: ['./text-area-fields.component.scss'],\n})\nexport class TextAreaFieldsComponent {\n  @Input() question: any = {};\n  answer: string = '';\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  numberOfRows!: number;\n  limitedCharacters!: boolean;\n  characterCount!: number;\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n  defaultValue: string = '';\n  ngOnInit() {\n    this.valueAssigned();\n    this.getQuestion();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.numberOfRows = this.question?.element?.formElement?.appearance.numberOfRows;\n    this.limitedCharacters =\n      this.question?.element?.formElement?.validation.limitedCharacters;\n    if (this.limitedCharacters) {\n      this.characterCount = this.question?.element?.formElement?.validation.count;\n    }\n    if(!this.inPreview){\n      this.defaultValue = this.question.element.defaultValue;\n    }\n    if(!this.inPreview){\n      this.defaultValue = this.question.element.defaultValue;\n    }\n  }\n  \n  upateAnswer(event:any){\n    this.answerChange.emit(event.target.value);\n  }\n  \n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n  <textarea\n    class=\"form-control mb-2\"\n    [rows]=\"numberOfRows\"\n    [disabled]=\"inPreview\"\n    (input)=\"upateAnswer($event)\"\n    [(ngModel)]=\"defaultValue\"\n  ></textarea>\n</div>\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-text-fields',\n  templateUrl: './text-fields.component.html',\n  styleUrls: ['./text-fields.component.scss'],\n})\nexport class TextFieldsComponent {\n  @Input() question: any = {};\n  answer: string = '';\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  placeholder: string = '';\n  validationType: string = '';\n  validation: string = '';\n  regex: string = '';\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n  defaultValue: string = '';\n  \n  ngOnInit() {\n    this.valueAssigned();  \n    this.getQuestion();  \n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {     \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );      \n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {      \n      this.displayQuestion = '';\n    }    \n  }\n\n  valueAssigned() {\n    this.count = this.question?.element.count;\n    this.required = this.question?.element.required;\n    this.hint = this.question?.element.hint;    \n    this.placeholder = this.question?.element?.formElement?.appearance?.placeholder || '';\n    this.validationType = this.question?.element?.formElement?.validation?.validationType;\n    if (this.validationType == 'CUSTOM_VALIDATION') {\n      this.validation = this.question?.element?.formElement?.validation?.validation;\n    } else if (this.validationType == 'REGULAR_EXPRESSION') {\n      this.regex = this.question?.element?.formElement?.validation?.regex;\n    }\n    if(!this.inPreview){\n      this.defaultValue = this.question.element.defaultValue;\n    }\n  }\n\n  upateAnswer(event:any){\n    this.answerChange.emit(event.target.value);\n  }\n\n}\n","<div class=\"px-3 mb-2\">\n  <div  class=\"input-wrapper mb-2\">\n    <label class=\"previewQuestion\">{{ displayQuestion }}</label>&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div class=\"svg-wrapper  mb-2 hintIcon\" [attr.data-title]=\"hint\" *ngIf=\"hint\">\n      <svg class=\"hintSvg\" viewBox=\"0 0 30 30\"  xmlns=\"http://www.w3.org/2000/svg\">\n        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n        <path d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n        <path d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n      </svg>\n    </div>\n  </div>\n  \n  <input\n    type=\"text\"\n    class=\"form-control mb-2 height\"\n    [placeholder]=\"placeholder\"\n    [disabled]=\"inPreview\"\n    (input)=\"upateAnswer($event)\"\n    [(ngModel)]=\"defaultValue\"\n  />\n</div>\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-url-fields',\n  templateUrl: './url-fields.component.html',\n  styleUrls: ['./url-fields.component.scss'],\n})\nexport class UrlFieldsComponent {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  placeholder: string = '';\n  showPreviewButton!: boolean;\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n  defaultValue: string = '';\n  constructor() { }\n\n  ngOnInit() {\n    this.valueAssigned();\n    this.getQuestion();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  handleClick() {\n    let textFieldValue = (document.getElementById('textField') as HTMLInputElement).value.trim();\n\n  if (!/^https?:\\/\\//i.test(textFieldValue)) {\n    textFieldValue = 'http://' + textFieldValue;\n  }\n\n  window.open(textFieldValue, '_blank');\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.placeholder = this.question?.element?.formElement?.appearance.placeholder;\n    this.showPreviewButton =\n      this.question?.element?.formElement?.appearance.showPreviewButton;\n      if(!this.inPreview){\n        this.defaultValue = this.question.element.defaultValue;\n      }\n  }\n  \n  upateAnswer(event:any){\n    this.answerChange.emit(event.target.value);\n  }\n \n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n  <div class=\"input-group\">\n    <input\n      id=\"textField\"\n      type=\"text\"\n      class=\"form-control col-11.5 rounded height\"\n      [placeholder]=\"placeholder\"\n      [disabled]=\"inPreview\"\n      (input)=\"upateAnswer($event)\"\n      [(ngModel)]=\"defaultValue\"\n    />\n    <div class=\"ps-2 pe-2\">\n      <button\n        *ngIf=\"showPreviewButton\"\n        type=\"button\"\n        class=\"btn col-.5 custom-button rounded d-flex justify-content-center align-items-center height\"\n        (click)=\"handleClick()\"\n      >\n        <svg\n          width=\"30\"\n          height=\"30\"\n          viewBox=\"0 0 30 30\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M4.99561 16.2503C4.99561 21.7754 9.47462 26.2544 14.9998 26.2544C20.5249 26.2544 25.0039 21.7754 25.0039 16.2503C25.0039 10.7251 20.5249 6.24609 14.9998 6.24609H6.24613\"\n            stroke=\"#084FFF\"\n            stroke-linecap=\"round\"\n            stroke-linejoin=\"round\"\n          />\n          <path\n            d=\"M9.99766 2.49219L6.24609 6.24375\"\n            stroke=\"#084FFF\"\n            stroke-linecap=\"round\"\n            stroke-linejoin=\"round\"\n          />\n          <path\n            d=\"M9.99766 9.99766L6.24609 6.24609\"\n            stroke=\"#084FFF\"\n            stroke-linecap=\"round\"\n            stroke-linejoin=\"round\"\n          />\n          <path\n            d=\"M17.7924 14.8125L14.3035 18.3015L12.2051 16.2106\"\n            stroke=\"#084FFF\"\n            stroke-linecap=\"round\"\n            stroke-linejoin=\"round\"\n          />\n        </svg>\n      </button>\n    </div>\n  </div>\n</div>\n","import { CdkDragDrop, CdkDragEnd, CdkDragMove, CdkDragStart, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { Component, EventEmitter, Input, OnDestroy, Output, SimpleChanges } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DataService } from '../../services/data.service';\nimport { Subscription } from 'rxjs';\n\nexport interface DefaultQuestionAnswer {\n  questionId: string;\n  defaultAnswer: any;\n  readOnly: boolean;\n  isDeleteEnable: boolean;\n}\n\nexport interface DefaultAnswerGroup {\n  defaultQuestionsAnswers: DefaultQuestionAnswer[];\n  isDeleteEnable:boolean\n}\n\nexport interface DefaultAnswersWrapper {\n  defaultAnswers: {\n    answers: DefaultAnswerGroup[];\n  };\n}\n\n@Component({\n  selector: 'lib-multiple-subform',\n  templateUrl: './multiple-subform.component.html',\n  styleUrls: ['./multiple-subform.component.scss'],\n})\nexport class MultipleSubformComponent {\n  @Input() subForm: any = {};\n  @Output() subFormChange = new EventEmitter<any>();\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  @Input() subFormGrids: any;\n  @Input() inSubForm:boolean = false;\n  questions:any[]=[];\n  defaultAnswers: DefaultAnswersWrapper = {\n    defaultAnswers: {\n      answers: []\n    }\n  };\n  displayedColumns: string[] = [];\n  @Output() subFormGridsChange = new EventEmitter<any[]>();\n  private subFormIdSubscription: Subscription;\n  private subFormQuestionsSubscription: Subscription;\n\n  constructor(\n    public dialog: MatDialog,\n    private dataService:DataService\n  ) {\n    this.subFormIdSubscription = this.dataService\n      .getsubFormQuestionDelete()\n      .subscribe((data) => {\n        this.getQuestion();\n        this.removeQuestionFromTableAndAnswers(data);\n    });\n\n    this.subFormQuestionsSubscription = this.dataService\n      .getSubformQuestionDeleted()\n      .subscribe((data) => {\n        if(data){\n          this.getQuestion();\n        }\n    });\n  }\n\n  ngOnInit() {    \n    if (this.subForm.defaultAnswers && this.inSubForm) {\n      this.defaultAnswers.defaultAnswers = this.subForm.defaultAnswers;\n    }\n    this.getQuestion();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  removeQuestionFromTableAndAnswers(questionId: string): void {\n    // 2. Remove answer entry for that questionId in each row\n    for (let group of this.defaultAnswers.defaultAnswers.answers) {\n      group.defaultQuestionsAnswers = group.defaultQuestionsAnswers.filter(\n        (qa: any) => qa.questionId !== questionId\n      );\n    }\n  \n    // 3. Trigger table update\n    this.defaultAnswers.defaultAnswers.answers = [...this.defaultAnswers.defaultAnswers.answers];\n  }\n\n  getQuestion() {\n    this.questions=[];    \n    if (this.translations && this.subForm) {\n      const uniqueQuestions = new Set<string>();\n      for (let i of this.subForm.formElements) {\n        if(this.inSubForm){\n          uniqueQuestions.add('Allow Delete')\n          const translation = this.translations.find((t: any) =>\n            t.elementId === i.element.id &&\n            t.entityType === 'QUESTION' &&\n            t.attribute === 'NAME' &&\n            t.language === this.selectedLanguage &&\n            !['DROP_DOWN', 'CHECK_BOX', 'RADIO_BUTTON','FILE_PICKER',\n            'DATE_TIME','SLIDER','TOGGLE','SELECTION_MATRIX','PASSWORD']\n            .includes(i.element.formElement.elementType)\n          );\n          let label = i.element.id;\n          if (translation && label) {\n            uniqueQuestions.add(label);\n          }\n        } else{\n          const translation = this.translations.find((t: any) =>\n            t.elementId === i.element.id &&\n            t.entityType === 'QUESTION' &&\n            t.attribute === 'NAME' &&\n            t.language === this.selectedLanguage\n          );\n          let label = i.element.id;\n          if (translation && label) {\n            uniqueQuestions.add(label);\n          }\n        }\n        \n      }      \n      this.questions = Array.from(uniqueQuestions); // Ensures unique values  \n      this.questions.push('actions')    \n    }\n  }\n\n  getTranslatedLabel(elementId: string): string | null {\n    const translation = this.translations?.find(\n      (t:any) =>\n        t.elementId === elementId &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n    );\n    return translation?.translatedText || null;\n  }\n  \n  drop(event: CdkDragDrop<string[]>) {\n    \n    const previousIndex = event.previousIndex;\n    const currentIndex = event.currentIndex;\n    if (previousIndex === currentIndex) return;\n\n    // 1. Reorder formElements array\n    moveItemInArray(this.subForm.formElements, previousIndex, currentIndex);\n    const movedRow = this.subFormGrids.rows[previousIndex];\n    this.subFormGrids.rows.splice(previousIndex, 1);\n    this.subFormGrids.rows.splice(currentIndex, 0, movedRow);\n    this.getQuestion();\n    this.updateSubFormRow(this.subFormGrids);\n  }\n\n\n  updateSubFormRow(value: any[]) {\n    this.subFormGrids = value;\n    this.subFormGridsChange.emit(this.subFormGrids);\n  }\n\n  onDragMoved(event: CdkDragMove<any>, scrollContainer: HTMLElement) {\n    const threshold = 50; // px from edge to start scrolling\n    const scrollSpeed = 10; // px per event cycle\n    const { x } = event.pointerPosition;\n    const containerRect = scrollContainer.getBoundingClientRect();\n  \n    // Scroll right if near right edge\n    if (x > containerRect.right - threshold) {\n      scrollContainer.scrollLeft += scrollSpeed;\n    }\n  \n    // Scroll left if near left edge\n    else if (x < containerRect.left + threshold) {\n      scrollContainer.scrollLeft -= scrollSpeed;\n    }\n  }\n\n  onDragStarted(event: CdkDragStart) {\n    // Add a class to the dragged element\n    event.source.element.nativeElement.classList.add('dragging-active');\n  }\n  \n  onDragEnded(event: CdkDragEnd) {\n    // Remove the class when dragging ends\n    event.source.element.nativeElement.classList.remove('dragging-active');\n  }\n\n  addNewAnswerGroup() {\n    const defaultQuestionsAnswers: DefaultQuestionAnswer[] = [];\n  \n    this.subForm.formElements.forEach((formElement: any) => {\n      if (\n        formElement.entityType === 'QUESTION' &&\n        formElement.element &&\n        formElement.element.id\n      ) {\n        defaultQuestionsAnswers.push({\n          questionId: formElement.element.id,\n          defaultAnswer: '', // use the correct property name\n          readOnly: false,   // use correct field name\n          isDeleteEnable: true\n        });\n        formElement.element.disableEdit = false;\n      }\n    });\n  \n    const newAnswerGroup: DefaultAnswerGroup = {\n      defaultQuestionsAnswers,\n      isDeleteEnable:false\n    };\n  \n    // Initialize nested objects if they don't exist\n    if (!this.defaultAnswers) {\n      this.defaultAnswers = {\n        defaultAnswers: {\n          answers: []\n        }\n      };\n    } else if (!this.defaultAnswers.defaultAnswers) {\n      this.defaultAnswers.defaultAnswers = {\n        answers: []\n      };\n    } else if (!this.defaultAnswers.defaultAnswers.answers) {\n      this.defaultAnswers.defaultAnswers.answers = [];\n    }\n  \n    this.defaultAnswers.defaultAnswers.answers.push(newAnswerGroup);\n    this.defaultAnswers.defaultAnswers.answers = [...this.defaultAnswers.defaultAnswers.answers];\n  }\n  \n  \n\n\n  getQuestionFromAnswerGroup(answerGroup: DefaultAnswerGroup, formElement: any): any {\n    const ansObj = answerGroup.defaultQuestionsAnswers.find(\n      (a) => a.questionId === formElement.element.id\n    );\n    const questionClone = { ...formElement };\n    questionClone.element.defaultValue = ansObj ? ansObj.defaultAnswer : '';    \n    return questionClone;\n  }\n  \n\n  updateDefaultAnswer(answerGroup: DefaultAnswerGroup, question: any, newAnswer: any) {\n    const existingAnswer = answerGroup.defaultQuestionsAnswers.find(\n      (a) => a.questionId === question.id\n    );\n  \n    if (existingAnswer) {\n      existingAnswer.defaultAnswer = newAnswer;\n      if (newAnswer === null || newAnswer === undefined || newAnswer === '') {\n        const formElement = this.subForm.formElements.find((fe: any) => fe.element.id === question.id);\n        if (formElement) {\n          formElement.element.disableEdit = false;\n        }\n      }\n    } else {\n      answerGroup.defaultQuestionsAnswers.push({\n        questionId: question.id,\n        defaultAnswer: newAnswer,\n        readOnly: false,\n        isDeleteEnable: true\n      });\n    }\n    this.subForm.defaultAnswers = this.defaultAnswers.defaultAnswers;    \n  }\n  \n  deleteSubmission(index: number) {\n    this.defaultAnswers.defaultAnswers.answers.splice(index, 1);\n    this.defaultAnswers.defaultAnswers.answers = [...this.defaultAnswers.defaultAnswers.answers];\n  }\n\n  updateDisableEdit(questionId:string,event:any){\n    this.subForm.formElements.forEach((formElement:any)=>{\n      if(formElement.element.id === questionId){\n        formElement.element.disableEdit = event;\n      }\n    })\n  }\n\n  updateAllowDelete(row:any){\n    this.subForm.defaultAnswers = this.defaultAnswers.defaultAnswers;\n  }\n\n  isReadonlyToggleDisabled(questionId: string): boolean {\n    return this.defaultAnswers.defaultAnswers.answers.some(group =>\n      !group.defaultQuestionsAnswers.some(answer =>\n        answer.questionId === questionId && answer.defaultAnswer !== null && answer.defaultAnswer !== ''\n      )\n    );\n  }\n\n  ngOnDestroy(){\n    if(this.subFormIdSubscription){\n      this.subFormIdSubscription.unsubscribe();\n    }\n    if(this.subFormQuestionsSubscription){\n      this.subFormQuestionsSubscription.unsubscribe();\n    }\n  }\n  \n}\n","<div class=\"example-container\" tabindex=\"0\">\n  <div class=\"table-container\" #scrollContainer>\n    <table\n      mat-table\n      [dataSource]=\"defaultAnswers.defaultAnswers.answers\"\n      class=\"mat-elevation-z8\"\n      cdkDropListOrientation=\"horizontal\"\n      cdkDropList\n      (cdkDropListDropped)=\"drop($event)\"\n    >\n      <div\n        class=\"table-header\"\n        *ngFor=\"let formElement of subForm.formElements\"\n      >\n        <img\n          src=\"/assets/icons/drag_icon.png\"\n          class=\"dragIcon\"\n          alt=\"dragIcon\"\n          cdkDragHandle\n        />\n      </div>\n      <ng-container\n        *ngFor=\"let formElement of subForm.formElements\"\n        [matColumnDef]=\"formElement.element.id\"\n      >\n        <ng-container *ngIf=\"!inSubForm; else nonDraggableHeader\">\n          <th\n            mat-header-cell\n            *matHeaderCellDef\n            class=\"border border-1 column-width\"\n            cdkDrag\n            cdkDragBoundary=\".mat-elevation-z8\"\n            (cdkDragMoved)=\"onDragMoved($event, scrollContainer)\"\n          >\n            <div class=\"table-header\">\n              <img\n                src=\"/assets/icons/drag_icon.png\"\n                class=\"dragIcon\"\n                alt=\"dragIcon\"\n                cdkDragHandle\n              />\n              <span class=\"question-text\">{{ getTranslatedLabel(formElement.element.id) || formElement.element.question }}</span>\n            </div>\n          </th>\n        </ng-container>\n\n        <ng-template #nonDraggableHeader>\n          <th\n            mat-header-cell\n            *matHeaderCellDef\n            class=\"border border-1 column-width background\"\n          >\n            <div class=\"table-headers\">\n              <span class=\"question-text\">{{ getTranslatedLabel(formElement.element.id) || formElement.element.question }}</span>\n              <div class=\"checkbox-container d-flex justify-content-end mt-2\">\n                <div class=\"question-check\">\n                  <label [for]=\"'allow-'+formElement.element.id\">Readonly</label>\n                  <input class=\"input-check\" type=\"checkbox\" [id]=\"'allow-'+formElement.element.id\"\n                  [(ngModel)]=\"formElement.element.disableEdit\"\n                  (ngModelChange)=\"updateDisableEdit(formElement.element.id,$event)\"\n                  [disabled]=\"isReadonlyToggleDisabled(formElement.element.id)\">\n                </div>\n              </div>\n            </div>\n          </th>\n          <td\n            mat-cell\n            *matCellDef=\"let submission;let i=index\"\n            class=\"border-cell column-width\"\n          >\n          <div *ngIf=\"formElement.entityType === 'QUESTION'\">\n            <div [ngSwitch]=\"formElement.element.formElement.elementType\">\n              <!-- <lib-check-box-fields\n                *ngSwitchCase=\"'CHECK_BOX'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-check-box-fields>\n              <lib-date-time-fields\n                *ngSwitchCase=\"'DATE_TIME'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-date-time-fields>\n              <lib-drop-down-fields\n                *ngSwitchCase=\"'DROP_DOWN'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-drop-down-fields>\n              <lib-file-picker-fields\n                *ngSwitchCase=\"'FILE_PICKER'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-file-picker-fields> -->\n              <lib-mail-fields\n                *ngSwitchCase=\"'EMAIL'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-mail-fields>\n              <lib-mobile-fields\n                *ngSwitchCase=\"'MOBILE'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-mobile-fields>\n              <lib-number-fields\n                *ngSwitchCase=\"'NUMBER'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-number-fields>\n              <!-- <lib-password-fields\n                *ngSwitchCase=\"'PASSWORD'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-password-fields>\n              <lib-radio-button-fields\n                *ngSwitchCase=\"'RADIO_BUTTON'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-radio-button-fields> -->\n              <lib-rich-text-editor-fields\n                *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-rich-text-editor-fields>\n              <!-- <lib-selection-matrix-fields\n                *ngSwitchCase=\"'SELECTION_MATRIX'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-selection-matrix-fields>\n              <lib-slider-fields\n                *ngSwitchCase=\"'SLIDER'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-slider-fields>\n              <lib-terms-and-condition-fields\n                *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-terms-and-condition-fields> -->\n              <lib-text-area-fields\n                *ngSwitchCase=\"'TEXT_AREA'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-text-area-fields>\n              <lib-text-fields\n                *ngSwitchCase=\"'TEXT_BOX'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-text-fields>\n              <!-- <lib-toggle-switch-fields\n                *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-toggle-switch-fields> -->\n              <lib-url-fields\n                *ngSwitchCase=\"'URL'\"\n                [question]=\"getQuestionFromAnswerGroup(submission, formElement)\"\n                (answerChange)=\"\n                  updateDefaultAnswer(submission, formElement.element, $event)\n                \"\n              ></lib-url-fields>\n            </div>\n          </div>\n          </td>\n        </ng-template>\n      </ng-container>\n      <ng-container matColumnDef=\"Allow Delete\" sticky>\n        <th mat-header-cell *matHeaderCellDef class=\"border border-1 text-center background allow-delete\">\n          <span>Allow Delete</span>\n        </th>\n        <td mat-cell *matCellDef=\"let row; let i = index\" class=\"text-center border border-1\">\n          <input\n            class=\"input-check\"\n            type=\"checkbox\"\n            [(ngModel)]=\"row.isDeleteEnable\"\n            [id]=\"'allow-delete-' + i\"\n            (ngModelChange)=\"updateAllowDelete(row)\"\n          />\n        </td>\n      </ng-container>\n      <ng-container matColumnDef=\"actions\" stickyEnd>\n        <th mat-header-cell *matHeaderCellDef class=\"border border-1 text-center background\">\n          Actions\n        </th>\n        <td\n          mat-cell\n          *matCellDef=\"let submission; let i = index\"\n          class=\"text-center border border-1\"\n        >\n          <button class=\"delete-button\"  (click)=\"deleteSubmission(i)\">\n            <i class=\"bi bi-trash\"></i>\n          </button>\n        </td>\n      </ng-container>\n\n      <tr class=\"border-row\" mat-header-row *matHeaderRowDef=\"questions\"></tr>\n      <tr class=\"border-row\" mat-row *matRowDef=\"let row; columns: questions\"></tr>\n    </table>\n  </div>\n\n  <div class=\"footer\" *ngIf=\"inSubForm\">\n    <div (click)=\"addNewAnswerGroup()\">\n      <img\n        class=\"icon-field-add\"\n        src=\"/assets/icons/field-add-icon.svg\"\n        alt=\"Arrow Icon\"\n        loading=\"lazy\"\n      />\n      <button type=\"button\" class=\"btn text-primary p-0 fontFamily\">\n        Add Record\n      </button>\n    </div>\n  </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'lib-subform-default-records',\n  templateUrl: './subform-default-records.component.html',\n  styleUrls: ['./subform-default-records.component.scss']\n})\nexport class SubformDefaultRecordsComponent {\n  @Input() subForm: any;\n  @Input() translations: any;\n  @Input() selectedLanguage:string='';\n  @Input() inSubForm:boolean = false;\n}\n","<lib-multiple-subform\n [subForm]=\"subForm\" \n [translations]=\"translations\" \n [selectedLanguage]=\"selectedLanguage\"\n [inSubForm]=\"true\"\n></lib-multiple-subform>","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { CONSTANTS } from '../../shared/constants';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n@Component({\n  selector: 'lib-add-form',\n  templateUrl: './add-form.component.html',\n  styleUrls: ['./add-form.component.scss'],\n})\nexport class AddFormComponent {\n  htmlContent = '';\n  @Input() subForms: any = [];\n  @Input() translations: any = [];\n  @Input() selectedQuestionId: string = '';\n  @Input() deletedQuestionId: string = '';\n  @Input() pageId: any;\n  @Input() grid: any;\n  @Input() pages: any = [];\n  @Input() primaryColor: string = '';\n  @Input() secondaryColor: string = '';\n  @Output() newpages: EventEmitter<any[]> = new EventEmitter<any[]>();\n  @Output() newUpdatedpages: EventEmitter<any[]> = new EventEmitter<any[]>();\n  @Output() translationsUpdated: EventEmitter<any> = new EventEmitter<any>();\n  subFromTitle: string = '';\n  subFromDescription: string = '';\n  childLogics: any;\n  inputValue: string = '';\n  comparisonOptions = CONSTANTS.COMPARISON_OPTIONS;\n  textComparison = CONSTANTS.TEXT_COMPARISON;\n  dropdownComparison = CONSTANTS.DROPDOWN_COMPARISON;\n  sendPage: any;\n  selectedids: any = [];\n  selectedForm: any = {};\n  editor: any;\n  testElementName: string = '';\n  showDefaultRecords: boolean = false;\n  allowCopySubmission: boolean = false;\n  isMenuOpen: boolean = false;\n  selectedLanguage:string = 'eng';\n  customElementId: string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  questionOptions: any[] = [];\n  selectedQuestions: any[] = [];\n  subformRequired: boolean = false;\n  private pageSubscription: Subscription;\n  constructor(\n    private dataservice: DataService,\n    public dialog: MatDialog,\n    private elementRef: ElementRef,\n    private sharedService: SharedService\n  ) {\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.subForms.id || this.subForms.element?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n    \n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.subForms?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.subForms.whenClause &&\n        this.subForms.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.subForms.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.subForms.whenClause.whenClauseCondition\n        );\n      }\n      this.questionOptions = this.extractSubformQuestions(data);\n      this.syncSelectedQuestions();\n      \n    });\n  }\n\n  private syncSelectedQuestions(): void {\n    if (!this.selectedQuestions?.length) {\n      return;\n    }\n  \n    // Create a fast lookup of valid option values\n    const validValues = new Set(\n      this.questionOptions.map((q: any) => q.value)\n    );\n  \n    // Keep only selections that still exist\n    this.selectedQuestions = this.selectedQuestions.filter(\n      (item: any) => validValues.has(item.value)\n    );\n    \n    // 🔁 Keep submissionCopyConfig in sync too\n    if (this.subForms?.element?.submissionCopyConfig) {\n      this.subForms.element.submissionCopyConfig.editableQuestions =\n        this.selectedQuestions.map((q: any) => q.value);\n    }\n  }\n  \n  ngOnInit() {\n    this.valueAssigned();\n    this.sendPage = this.pages;\n    this.generateFieldName();\n  }\n  valueAssigned() {\n    this.subFromTitle = this.subForms.element.title;\n    this.subFromDescription = this.subForms.element.description;\n    this.customElementId = this.subForms.element?.customElementId ||this.subForms.customElementId;\n    this.whenClause = this.subForms?.whenClause;\n    this.subformRequired = this.subForms.element.required;\n    if(this.subForms.element.submissionCopyConfig){\n      this.allowCopySubmission = this.subForms.element.submissionCopyConfig.allowCopyFromOtherSubmissions;\n      this.questionOptions = this.extractSubformQuestions(this.pages);\n      this.selectedQuestions = this.questionOptions.filter((option) =>\n        this.subForms.element.submissionCopyConfig.editableQuestions.includes(option.value)\n      );\n    }\n    if(this.subForms.element.defaultAnswers && this.subForms.element.defaultAnswers.answers.length>0){\n      this.showDefaultRecords = true;\n    }\n  }\n  \n\n  editorCreated(editorInstance: any) {\n    this.editor = editorInstance;\n    this.updateEditorContent(this.subFromDescription)\n  }\n\n  // When you receive data from API\n  updateEditorContent(content: string) {\n    if (this.editor) {\n      // this.editor.clipboard.dangerouslyPasteHTML(content);\n      const delta = this.editor.clipboard.convert(content);\n      this.editor.setContents(delta, 'silent');\n    }\n    this.subFromDescription = content;\n  }\n\n  jsonUpdation() {\n    this.dataservice.emitChangeStatus(true);\n    this.subForms.element.title = this.subFromTitle;\n    this.subForms.element.description = this.subFromDescription;\n    for (let translate of this.translations) {\n      if (\n        translate.elementId == this.subForms.element.id &&\n        translate.attribute == 'NAME'\n      ) {\n        translate.translatedText = this.subFromTitle;\n      } else if (\n        translate.elementId == this.subForms.element.id &&\n        translate.attribute == 'DESCRIPTION'\n      ) {\n        translate.translatedText = this.subFromDescription;\n      }\n    }\n  }\n  selectQuestion(question: any, event: any) {\n    setTimeout(() => {\n      event.stopPropagation();\n      this.dataservice.sendQuestion(question);\n      this.dataservice.sendPageId(this.pageId);\n    });\n  }\n  deleteQuestion(data: any) {\n    this.dataservice.sendsubFormQuestionDelete(data);\n  }\n  deleteLogic(quest: any, id: any) {\n    if (quest.element.childLogics) {\n      let child = quest.element.childLogics;\n      this.getIds(child, id);\n      for (let m = 0; m < this.selectedids.length; m++) {\n        this.transalationDelete(this.selectedids[m]);\n        this.deleteGrids(this.selectedids[m]);\n      }\n    }\n    quest.element.childLogics = quest.element?.childLogics?.filter(\n      (item: any) => item.id != id\n    );\n  }\n  addNewChildQuestion(question: any, childLogic: any) {\n    this.dataservice.sendLogicId(childLogic.id);\n    this.dataservice.sendChildQuestions(question);\n    this.valueAssigned();\n  }\n  addNewQuestion(subFormId: string,event:any) {\n    event.stopPropagation();\n    this.dataservice.sendPageId(this.pageId);\n    this.dataservice.sendSubformId(subFormId);\n    this.dataservice.sendSubformQuestions(this.subForms);\n    this.questionOptions = this.extractSubformQuestions(this.subForms);\n  }\n  addSection() {\n    this.dataservice.addSubFormSections(this.subForms);\n  }\n  addNewSubForm() {\n    this.dataservice.addNewSubFormQuestions(this.subForms);\n  }\n  openDeleteModal() {\n    this.dataservice.sendSubFormDelete(this.deletedQuestionId);\n  }\n  openConfirmationModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader: 'Are you sure ?',\n      message: 'Do you want to delete this form?',\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(\n      ConfirmationModalComponent,\n      dialogConfig\n    );\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendSubFormDelete(this.deletedQuestionId);\n      }\n    });\n  }\n  transalationDelete(id: any) {\n    for (let k = this.translations.length - 1; k >= 0; k--) {\n      let translate = this.translations[k];\n      if (translate.elementId == id) {\n        this.translations.splice(k, 1);\n      }\n    }\n  }\n  deleteGrids(id: any) {\n    for (let i = 0; i < this.pages.length; i++) {\n      for (let k = 0; k < this.pages[i].rows.length; k++) {\n        if (this.pages[i].rows[k].grids[0].elementId == id) {\n          // Remove the entire row from the rows array\n          this.pages[i].rows.splice(k, 1);\n          // Decrement k to ensure that the next iteration does not skip the next row\n          k--;\n        }\n      }\n    }\n  }\n  getIds(child: any, id: any) {\n    if (child.length == undefined) {\n      for (let i = 0; i < child.formElements.length; i++) {\n        const item = child.formElements[i];\n        if (item.element.id) {\n          this.selectedids.push(item.element.id);\n        }\n        const formElements = item?.element?.childLogics;\n        if (formElements) {\n          for (let k = 0; k < formElements.length; k++) {\n            this.getIds(formElements[k], id); // Pass formElements to recursive call\n          }\n        }\n      }\n    } else {\n      for (let i = 0; i < child.length; i++) {\n        const item = child[i];\n        if (item.id) {\n          this.selectedids.push(item.id);\n        }\n        const formElements = item.formElements;\n        if (formElements) {\n          for (let j = 0; j < formElements.length; j++) {\n            const element = formElements[j];\n            if (element.element && element.element.id) {\n              this.selectedids.push(element.element.id);\n            }\n            if (element.element && element.element.childLogics) {\n              let childLogics = element.element.childLogics; // Renamed to avoid naming conflict\n              for (let k = 0; k < childLogics.length; k++) {\n                this.getIds(childLogics[k], id); // Pass formElements to recursive call\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n  trackByChildLogicFn(index: number, childLogic: any): number {\n    return childLogic.id; // Assuming 'id' is a unique identifier for each childLogic\n  }\n  handleInput() {\n    const inputField =\n      this.elementRef.nativeElement.querySelector('#textField');\n    const textWidth = this.inputValue.length * 8;\n    inputField.style.width = Math.max(textWidth, 10) + 'px';\n  }\n  \n  newpages1(updatedPages: any[]): void {\n    this.newpages.emit(updatedPages);\n  }\n\n  newUpdatedpagess(updatedPages: any[]): void {\n    this.newpages.emit(updatedPages);\n    this.newUpdatedpages.emit(updatedPages);\n  }\n  \n  handleKeyDown(event: KeyboardEvent, childLogic: any) {\n    if (event.key === 'Enter') {\n      const inputField =\n        this.elementRef.nativeElement.querySelector('#textField');\n      const inputValue = this.inputValue.trim();\n      if (inputValue !== '') {\n        if (!Array.isArray(childLogic.inputValue)) {\n          childLogic.inputValue = [];\n        }\n        childLogic.inputValue.push(inputValue);\n        this.inputValue = '';\n        inputField.style.width = '10px';\n      }\n    }\n  }\n\n  removeOption(optionValue: string, childLogic: any) {\n    const index = childLogic.inputValue.indexOf(optionValue);\n    if (index > -1) {\n      childLogic.inputValue.splice(index, 1);\n    }\n  }\n\n  onTranslationsUpdated(updatedTranslations: any) {\n    this.translations = updatedTranslations;\n    this.translationsUpdated.emit(this.translations);\n  }\n  selectSubForm(question: any) {\n    if (question.element.id !== this.selectedForm?.id) {\n      this.selectedForm = question;\n    }\n  }\n  optionUpdates(data: any) {\n    this.pages.forEach((page: any) => {\n      page.formElements?.forEach((formElement: any) => {\n        if(formElement.entityType === 'SUBFORM') {\n          formElement.element.formElements.forEach((element: any) => {\n            if (element?.element.id === data.element.id) {\n              element.element = {...data.element};\n            } \n          });\n          \n        }\n      });\n    });\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.subForms.id || this.subForms.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('subform', id);\n      if(this.subForms.element){\n        this.subForms.element.testElementName = this.testElementName;\n      }else{\n        this.subForms.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  showRecords(){\n    if(!this.showDefaultRecords){\n      this.subForms.element.defaultAnswers={};\n    }\n  }\n\n  markRequired(){\n    this.subForms.element.required = this.subformRequired;\n  }\n\n  showEditableFields(): void {\n    if (!this.subForms?.element) {\n      return;\n    }\n  \n    // ✅ Ensure submissionCopyConfig always exists\n    if (!this.subForms.element.submissionCopyConfig) {\n      this.subForms.element.submissionCopyConfig = {\n        allowCopyFromOtherSubmissions: false,\n        editableQuestions: []\n      };\n    }\n  \n    if (!this.allowCopySubmission) {\n      this.subForms.element.submissionCopyConfig.allowCopyFromOtherSubmissions = false;\n      this.subForms.element.submissionCopyConfig.editableQuestions = [];\n      this.selectedQuestions = [];\n    } else {\n      this.subForms.element.submissionCopyConfig.allowCopyFromOtherSubmissions = true;\n      this.questionOptions = this.extractSubformQuestions(this.pages);\n    }\n  }\n  \n\n  extractSubformQuestions(pages:any) {\n    return this.subForms?.element?.formElements\n      ?.filter((el: any) => el.entityType === 'QUESTION')\n      .map((el: any) => ({\n        value: el.element.id,\n        label: el.element.question?.trim() || el.element.id\n      })) || [];\n  }\n\n  onSelectedQuestionsChange(): void {\n    if (!this.subForms?.element) {\n      return;\n    }\n  \n    // Ensure object exists\n    if (!this.subForms.element.submissionCopyConfig) {\n      this.subForms.element.submissionCopyConfig = {\n        editableQuestions: []\n      };\n    }\n  \n    // Extract only question IDs (value)\n    this.subForms.element.submissionCopyConfig.editableQuestions =\n      (this.selectedQuestions || []).map(\n        (item: any) => item.value\n      );\n  }\n  \n\n  copySubform(){\n    this.dataservice.sendCopiedSubform(this.subForms);\n  }\n\n  toggleMenu() {\n    const myId = this.subForms.id || this.subForms.element?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.subForms,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.subForms = result;\n        this.customElementId = this.subForms.element?.customElementId ||this.subForms.customElementId;\n      }\n    });\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.subForms,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.subForms = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition || clause.value === '') {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + this.subForms.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div\n          class=\"input-container\"\n          [ngClass]=\"{ selected: deletedQuestionId === subForms.element.id }\"\n        >\n          <div class=\"col-auto\">\n            <div class=\"icon-container-right\">\n\n              <div class=\"element-menu-action-button\">\n                <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                  <div class=\"question-options\">\n                    <ul class=\"question-action-options\">\n                      <li\n                        class=\"question-option\"\n                        (click)=\"copySubform()\"\n                      >\n                      <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                        <span>Copy</span>\n                      </li>\n                      <li\n                        class=\"question-option\"\n                        (click)=\"openElementIdModal()\"\n                      >\n                      <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                        <span>Element ID</span>\n                      </li>\n                      <li\n                        class=\"question-option\"\n                        (click)=\"openConfirmationModal()\"\n                      >\n                      <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                        <span>Delete</span>\n                      </li>\n                    </ul>\n                  </div>\n                </div>\n\n              </div>\n\n\n              <!-- <div  class=\"action-button\" data-title=\"copy\"\n              (click)=\"copySubform()\">\n                <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n              </div>\n              <div\n                class=\"action-button\"\n                data-title=\"Delete\"\n                (click)=\"openConfirmationModal()\"\n              >\n                <img\n                  class=\"icon-right\"\n                  src=\"/assets/icons/delete-icon.svg\"\n                  alt=\"Delete Icon\"\n                />\n              </div> -->\n            </div>\n          </div>\n          <div class=\"titleContainer\">\n            <label\n              [for]=\"'input1' + subForms?.element?.id\"\n              class=\"sec-title mb-3\"\n              >Form Title</label\n            >\n            <input\n              type=\"text\"\n              [id]=\"'input1' + subForms?.element?.id\"\n              class=\"form-control mb-4\"\n              placeholder=\"Type Here\"\n              [(ngModel)]=\"subFromTitle\"\n              (ngModelChange)=\"jsonUpdation()\"\n            />\n          </div>\n          <div class=\"descContainer\">\n            <label\n              [for]=\"'description' + subForms?.element?.id\"\n              class=\"sec-title mb-3\"\n              >Description</label\n            >\n            <quill-editor\n              [id]=\"'description' + subForms?.element?.id\"\n              [(ngModel)]=\"subFromDescription\"\n              (ngModelChange)=\"jsonUpdation()\"\n              (onEditorCreated)=\"editorCreated($event)\"\n              class=\"editor\"\n            ></quill-editor>\n          </div>\n          <div>\n            <ng-container *ngFor=\"let subRow of grid.rows\">\n              <ng-container *ngFor=\"let subGrid of subRow.grids\">\n                <ng-container *ngIf=\"subGrid.entityType == 'QUESTION'\">\n                  <div *ngFor=\"let question of subForms.element.formElements\">\n                    <ng-container\n                      *ngIf=\"subGrid.elementId == question.element?.id\"\n                    >\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'TEXT_AREA'\n                        \"\n                      >\n                        <lib-text-area-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          [inSubForm]=\"true\"\n                        ></lib-text-area-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'TEXT_BOX'\n                        \"\n                      >\n                        <lib-textbox\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          [inSubForm]=\"true\"\n                        ></lib-textbox>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of textComparison\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType === 'EMAIL'\n                        \"\n                      >\n                        <lib-mail-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          [inSubForm]=\"true\"\n                        ></lib-mail-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'PASSWORD'\n                        \"\n                      >\n                        <lib-password-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                        ></lib-password-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'MOBILE'\n                        \"\n                      >\n                        <lib-mobile-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          [inSubForm]=\"true\"\n                        ></lib-mobile-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'RICH_TEXT_EDITOR'\n                        \"\n                      >\n                        <lib-rich-text-editor-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          [inSubForm]=\"true\"\n                        ></lib-rich-text-editor-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'NUMBER'\n                        \"\n                      >\n                        <lib-type-number\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          [inSubForm]=\"true\"\n                        ></lib-type-number>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType === 'URL'\n                        \"\n                      >\n                        <lib-url-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          [inSubForm]=\"true\"\n                        >\n                        </lib-url-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType === 'CURRENCY'\n                        \"\n                      >\n                        <lib-currency-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          [inSubForm]=\"true\"\n                        >\n                        </lib-currency-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'DROP_DOWN'\n                        \"\n                      >\n                        <lib-drop-down\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          (newpages)=\"newpages1($event)\"\n                          [questions]=\"pages\"\n                          (questionUpdated)=\"optionUpdates($event)\"\n                        ></lib-drop-down>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of dropdownComparison\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                                *ngIf=\"\n                                  childLogic.condition == '=' ||\n                                  childLogic.condition == '!='\n                                \"\n                              />\n                              <div\n                                class=\"inputBox ms-2\"\n                                *ngIf=\"\n                                  childLogic.condition == 'IN' ||\n                                  childLogic.condition == 'NOT IN'\n                                \"\n                              >\n                                <div class=\"inputBoxLabels\" id=\"inputBoxLabels\">\n                                  <span\n                                    class=\"inputBoxLabel\"\n                                    *ngFor=\"\n                                      let option of childLogic?.inputValue\n                                    \"\n                                  >\n                                    {{ option }}\n                                    <span\n                                      class=\"close\"\n                                      (click)=\"removeOption(option, childLogic)\"\n                                      >x</span\n                                    >\n                                  </span>\n                                </div>\n                                <input\n                                  class=\"textField\"\n                                  type=\"text\"\n                                  id=\"textField\"\n                                  name=\"textField\"\n                                  (input)=\"handleInput()\"\n                                  (keydown)=\"handleKeyDown($event, childLogic)\"\n                                  [(ngModel)]=\"inputValue\"\n                                />\n                              </div>\n\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'RADIO_BUTTON'\n                        \"\n                      >\n                        <lib-drop-down\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          (newpages)=\"newpages1($event)\"\n                          [questions]=\"pages\"\n                          (questionUpdated)=\"optionUpdates($event)\"\n                        ></lib-drop-down>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of dropdownComparison\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                                *ngIf=\"\n                                  childLogic.condition == '=' ||\n                                  childLogic.condition == '!='\n                                \"\n                              />\n                              <div\n                                class=\"inputBox ms-2\"\n                                *ngIf=\"\n                                  childLogic.condition == 'IN' ||\n                                  childLogic.condition == 'NOT IN'\n                                \"\n                              >\n                                <div class=\"inputBoxLabels\" id=\"inputBoxLabels\">\n                                  <span\n                                    class=\"inputBoxLabel\"\n                                    *ngFor=\"\n                                      let option of childLogic?.inputValue\n                                    \"\n                                  >\n                                    {{ option }}\n                                    <span\n                                      class=\"close\"\n                                      (click)=\"removeOption(option, childLogic)\"\n                                      >x</span\n                                    >\n                                  </span>\n                                </div>\n                                <input\n                                  class=\"textField\"\n                                  type=\"text\"\n                                  id=\"textField\"\n                                  name=\"textField\"\n                                  (input)=\"handleInput()\"\n                                  (keydown)=\"handleKeyDown($event, childLogic)\"\n                                  [(ngModel)]=\"inputValue\"\n                                />\n                              </div>\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'CHECK_BOX'\n                        \"\n                      >\n                        <lib-drop-down\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          (newpages)=\"newpages1($event)\"\n                          [questions]=\"pages\"\n                          (questionUpdated)=\"optionUpdates($event)\"\n                        ></lib-drop-down>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of dropdownComparison\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                                *ngIf=\"\n                                  childLogic.condition == '=' ||\n                                  childLogic.condition == '!='\n                                \"\n                              />\n                              <div\n                                class=\"inputBox ms-2\"\n                                *ngIf=\"\n                                  childLogic.condition == 'IN' ||\n                                  childLogic.condition == 'NOT IN'\n                                \"\n                              >\n                                <div class=\"inputBoxLabels\" id=\"inputBoxLabels\">\n                                  <span\n                                    class=\"inputBoxLabel\"\n                                    *ngFor=\"\n                                      let option of childLogic?.inputValue\n                                    \"\n                                  >\n                                    {{ option }}\n                                    <span\n                                      class=\"close\"\n                                      (click)=\"removeOption(option, childLogic)\"\n                                      >x</span\n                                    >\n                                  </span>\n                                </div>\n                                <input\n                                  class=\"textField\"\n                                  type=\"text\"\n                                  id=\"textField\"\n                                  name=\"textField\"\n                                  (input)=\"handleInput()\"\n                                  (keydown)=\"handleKeyDown($event, childLogic)\"\n                                  [(ngModel)]=\"inputValue\"\n                                />\n                              </div>\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              (newUpdatedpages)=\"newUpdatedpagess($event)\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'FILE_PICKER'\n                        \"\n                      >\n                        <lib-file-picker-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                        ></lib-file-picker-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'DATE_TIME'\n                        \"\n                      >\n                        <lib-date-time-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                        ></lib-date-time-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'SLIDER'\n                        \"\n                      >\n                        <lib-slider-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                        ></lib-slider-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'SIGNATURE'\n                        \"\n                      >\n                        <lib-signature-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                        ></lib-signature-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'LOCATION'\n                        \"\n                      >\n                        <lib-location-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                        ></lib-location-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'TERMS_AND_CONDITION'\n                        \"\n                      >\n                        <lib-terms-and-condition-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                        ></lib-terms-and-condition-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'TOGGLE_SWITCH'\n                        \"\n                      >\n                        <lib-toggle-switch-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                        ></lib-toggle-switch-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'SELECTION_MATRIX'\n                        \"\n                      >\n                        <lib-selection-matrix-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          (translationsUpdated)=\"onTranslationsUpdated($event)\"\n                        ></lib-selection-matrix-fields>\n                        <div *ngIf=\"question.element.childLogics?.length > 0\">\n                          <div\n                            class=\"logic-container\"\n                            *ngFor=\"\n                              let childLogic of question.element.childLogics;\n                              trackBy: trackByChildLogicFn\n                            \"\n                          >\n                            <p class=\"logic-heading\">Logic</p>\n                            <div class=\"logic-condition\">\n                              <p class=\"logic-text\">If answer</p>\n                              <select\n                                name=\"\"\n                                id=\"\"\n                                class=\"logic-dropdown\"\n                                [(ngModel)]=\"childLogic.condition\"\n                              >\n                                <option\n                                  *ngFor=\"let option of comparisonOptions\"\n                                  [value]=\"option.value\"\n                                >\n                                  {{ option.label }}\n                                </option>\n                              </select>\n                              <input\n                                type=\"text\"\n                                class=\"logic-input text-center\"\n                                [(ngModel)]=\"childLogic.inputValue\"\n                              />\n                              <p class=\"logic-text ms-2\">then</p>\n                              <div class=\"logic-add-btn\">\n                                <div\n                                  class=\"add-qstn-btn\"\n                                  (click)=\"\n                                    addNewChildQuestion(\n                                      question.element.id,\n                                      childLogic\n                                    )\n                                  \"\n                                >\n                                  <img\n                                    class=\"icon-field-add me-2\"\n                                    src=\"/assets/icons/add-question-icon.svg\"\n                                  />\n\n                                  <a class=\"add-qstn-text\">Add Question</a>\n                                </div>\n                              </div>\n                              <img\n                                (click)=\"deleteLogic(question, childLogic.id)\"\n                                class=\"icon-right delete-logic ms-auto\"\n                                src=\"/assets/icons/delete-icon.svg\"\n                                alt=\"Delete Icon\"\n                              />\n                            </div>\n                            <lib-recursive-question\n                              [question]=\"childLogic.formElements\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                            ></lib-recursive-question>\n                          </div>\n                        </div>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'AGGREGATE_FUNCTION'\n                        \"\n                      >\n                        <lib-aggregate-function\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          [subFormId]=\"subForms.element.id\"\n                          [elementType]=\"'SUBFORM'\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          (translationsUpdated)=\"onTranslationsUpdated($event)\"\n                        >\n                        </lib-aggregate-function>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'HIDDEN_FIELD'\n                        \"\n                      >\n                        <lib-hidden-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          (translationsUpdated)=\"onTranslationsUpdated($event)\"\n                        >\n                        </lib-hidden-fields>\n                      </ng-container>\n\n                      <ng-container\n                        *ngIf=\"\n                          question.element?.formElement?.elementType ===\n                          'IFRAME_WIDGET'\n                        \"\n                      >\n                        <lib-iframe-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element, $event)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          (translationsUpdated)=\"onTranslationsUpdated($event)\"\n                        >\n                        </lib-iframe-fields>\n                      </ng-container>\n\n                    </ng-container>\n                  </div>\n                </ng-container>\n\n                <ng-container *ngIf=\"subGrid.entityType == 'SECTION'\">\n                  <div *ngFor=\"let question of subForms.element.formElements\">\n                    <ng-container *ngIf=\"question.entityType == 'SECTION'\">\n                      <lib-section\n                        [section]=\"question\"\n                        [translations]=\"translations\"\n                        [pages]=\"pages\"\n                        [selectedQuestionId]=\"question.element.id\"\n                        (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                        (click)=\"selectQuestion(question.element, $event)\"\n                      ></lib-section>\n                    </ng-container>\n\n                    <ng-container *ngIf=\"question?.entityType == 'SUBFORM'\">\n                      <lib-child-add-form\n                        [subForms]=\"question\"\n                        [translations]=\"translations\"\n                        [pageId]=\"pageId\"\n                        [pages]=\"pages\"\n                        [deletedQuestionId]=\"question?.element?.id\"\n                        (click)=\"selectSubForm(question)\"\n                        (translationsUpdated)=\"onTranslationsUpdated($event)\"\n                      >\n                      </lib-child-add-form>\n                    </ng-container>\n                  </div>\n                </ng-container>\n              </ng-container>\n            </ng-container>\n            <div class=\"d-flex justify-content-between align-items-center\">\n              <div class=\"custom-element-id-container\">\n                <div *ngIf=\"customElementId\">\n                  <span>Element ID - {{customElementId}}</span>\n                </div>\n              </div>\n\n              <div class=\"bottom-container d-flex gap-5 justify-content-end\">\n                <div class=\"default-records form-check\">\n                  <input\n                    type=\"checkbox\"\n                    name=\"\"\n                    [id]=\"'default-records' + subForms.element.id\"\n                    [(ngModel)]=\"showDefaultRecords\"\n                    (ngModelChange)=\"showRecords()\"\n                  />\n                  <label\n                    [for]=\"'default-records' + subForms.element.id\"\n                    class=\"form-check-label\"\n                    >Add Default Records</label\n                  >\n                </div>\n                <button\n                [ngClass]=\"{\n                  'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                  'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n                }\"\n                type=\"button\" class=\"btn btn-link p-0\" (click)=\"openWhenClauseModal()\">When ?\n                <span \n                  *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                  class=\"when-rule-count\"\n                >\n                  ({{ whenClause?.whenClauseCondition?.length }} \n                  {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n                </span>\n                </button>\n\n                <div class=\"form-check\">\n                  <input\n                    type=\"checkbox\"\n                    name=\"\"\n                    [id]=\"'required' + subForms.element.id\"\n                    [(ngModel)]=\"subformRequired\"\n                    (ngModelChange)=\"markRequired()\"\n                  />\n                  <label\n                    [for]=\"'required' + subForms.element.id\"\n                    class=\"form-check-label\"\n                    >Required</label\n                  >\n                </div>\n\n\n                <div class=\"add-qstn-button\">\n                  <div\n                    class=\"btn-group\"\n                    role=\"group\"\n                    aria-label=\"Button group with nested dropdown\"\n                  >\n                    <button\n                      type=\"button\"\n                      class=\"btn btn-add-qstn fontFamily text-white\"\n                      [ngStyle]=\"{\n                        'background-color': primaryColor\n                          ? primaryColor\n                          : '#084fff'\n                      }\"\n                      (click)=\"addNewQuestion(subForms.element.id, $event)\"\n                    >\n                      Add New Question\n                    </button>\n                    <div class=\"btn-group arrow-btn\" role=\"group\">\n                      <button\n                        type=\"button\"\n                        class=\"btn add-qstn-arrow\"\n                        [ngStyle]=\"{\n                          'background-color': primaryColor\n                            ? primaryColor\n                            : '#084fff'\n                        }\"\n                        data-bs-toggle=\"dropdown\"\n                        aria-expanded=\"false\"\n                      >\n                        <img\n                          src=\"/assets/icons/down-arrow-white-icon.svg\"\n                          alt=\"Arrow Icon\"\n                        />\n                      </button>\n                      <ul class=\"dropdown-menu qstn-dropdown-menu\">\n                        <li>\n                          <a\n                            class=\"dropdown-item fontFamily\"\n                            (click)=\"addSection()\"\n                            >Add Section</a\n                          >\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n                </div>\n              </div>  \n            </div>\n\n            <div class=\"mb-4\">\n              <div class=\"default-records form-check\">\n                <input\n                  type=\"checkbox\"\n                  name=\"\"\n                  [id]=\"'copy-previous-submission' + subForms.element.id\"\n                  [(ngModel)]=\"allowCopySubmission\"\n                  (ngModelChange)=\"showEditableFields()\"\n                />\n                <label\n                  [for]=\"'copy-previous-submission' + subForms.element.id\"\n                  class=\"form-check-label\"\n                  >Allow Copy From Previous Submissions</label\n                >\n              </div>\n\n              <div class=\"editable-field-container\" *ngIf=\"allowCopySubmission\">\n                <label>Select Editable Fields</label>\n                <lib-dropdown\n                [items]=\"questionOptions\"\n                [multiple]=\"true\"\n                [(selectedItems)]=\"selectedQuestions\"\n                (selectedItemsChange)=\"onSelectedQuestionsChange()\"\n                >\n                </lib-dropdown>\n              </div>\n            </div>\n            \n            <div class=\"mt-3\" *ngIf=\"showDefaultRecords\">\n              <lib-subform-default-records\n                [subForm]=\"subForms.element\"\n                [translations]=\"translations\"\n                [selectedLanguage]=\"selectedLanguage\"\n                [inSubForm]=\"true\"\n              >\n              </lib-subform-default-records>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n\n@Component({\n  selector: 'lib-multi-field-questions',\n  templateUrl: './multi-field-questions.component.html',\n  styleUrls: ['./multi-field-questions.component.scss']\n})\nexport class MultiFieldQuestionsComponent {\n\n  @Input() multiQuestion: any = {};\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  @Input() pageId: string = '';\n  @Input() pages: any = '';\n  @Input() grid: any = '';\n  @Input() selectedMultifieldId: string = '';\n  testElementName: string = '';\n  isMenuOpen: boolean = false;\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  @Output() translationsUpdated: EventEmitter<any> = new EventEmitter<any>();\n\n  inputQuestion: string = '';\n  hintText: string = '';\n  data: string = '';\n  hintOpen: boolean = false;\n  customElementId: string = '';\n  whenClause: any;\n  filteredAllQuestions: any;\n  private pageSubscription: Subscription;\n  constructor(private dataservice: DataService, public dialog: MatDialog,private sharedService: SharedService) {\n    this.dataservice.openMenuId$.subscribe((openId) => {\n      const myId = this.multiQuestion.id || this.multiQuestion.element?.id;\n      this.isMenuOpen = (openId === myId);\n    });\n\n    this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n      const allQuestions = this.sharedService.extractAllQuestions(\n        data,\n        this.multiQuestion?.element?.id\n      );\n\n      // ✅ Allowed element types\n      const allowedTypes = [\n        'TEXT_BOX',\n        'NUMBER',\n        'DROP_DOWN',\n        'CHECK_BOX',\n        'RADIO_BUTTON',\n        'FILE_PICKER',\n        'TEXT_AREA',\n        'HIDDEN_FIELD',\n      ];\n\n      this.filteredAllQuestions = allQuestions.filter((q) =>\n        allowedTypes.includes(q.elementType)\n      );\n      if (\n        this.multiQuestion.whenClause &&\n        this.multiQuestion.whenClause.whenClauseCondition.length > 0\n      ) {\n        this.multiQuestion.whenClause.whenClauseCondition = this.updateWhenClause(\n          this.multiQuestion.whenClause.whenClauseCondition\n        );\n      }\n    });\n  }\n\n\n  ngOnInit() {\n    this.valueAssigned();\n    this.generateFieldName();\n  }\n  onFocus() {\n    this.selectedMultifieldId = this.multiQuestion.id || this.multiQuestion.element?.id || this.multiQuestion?.formElement?.id;\n\n    this.dataservice.sendFocusQuestion(this.multiQuestion);\n  }\n\n  valueAssigned() {\n    this.inputQuestion = this.multiQuestion.element?.question || this.multiQuestion.question;\n    this.customElementId = this.multiQuestion.element?.customElementId ||this.multiQuestion.customElementId;\n    this.hintText = this.multiQuestion.element?.hint || this.multiQuestion.hint;\n    this.whenClause = this.multiQuestion?.whenClause;\n  }\n\n  hint() {\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (translation.elementId == this.selectedMultifieldId && translation.attribute == 'HELP_TEXT' && translation.language === 'eng') {\n        translation.translatedText = this.hintText;\n        if(this.multiQuestion){\n          this.multiQuestion.element.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n  }\n\n  jsonUpdation(type?: string) {\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.multiQuestion.element || {})) {\n      this.multiQuestion.element.question = this.inputQuestion;\n    } else {\n      this.multiQuestion.question = this.inputQuestion;\n    }\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (type === 'hint') {\n        if (translation.elementId === this.selectedMultifieldId && translation.attribute === 'HELP_TEXT' && translation.language === 'eng') {\n          translation.translatedText = this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedMultifieldId && translation.attribute === 'NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n  }\n  deleteChildQuestions(event: any) {\n    this.dataservice.sendData(this.multiQuestion.element.id);\n  }\n\n  openConfirmationModal(multiQuestionId:string) {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader: \"Are you sure ?\",\n      message: \"Do you want to delete this multi field question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(multiQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(multiQuestionId);\n      }\n    });\n  }\n\n  hintOpened() {\n    this.hintOpen = !this.hintOpen\n  }\n\n  selectedSection() {\n    const ids = [this.multiQuestion?.id, this.multiQuestion?.element?.id, this.multiQuestion?.formElement?.id].filter(id => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  addNewField() {\n    this.dataservice.sendPageId(this.pageId);\n    this.dataservice.sendMultiFieldId(this.multiQuestion.element.id);\n    this.dataservice.sendMultiFieldQuestions(this.multiQuestion.element);\n  }\n\n  onTranslationsUpdated(updatedTranslations: any) {\n    this.translations = updatedTranslations;\n    this.translationsUpdated.emit(this.translations);\n  }\n\n  generateFieldName(){\n    if (!this.testElementName) {\n      const id = this.multiQuestion.id || this.multiQuestion.element?.id;\n      this.testElementName = this.dataservice.getStableTestName('multifield', id);\n      if(this.multiQuestion.element){\n        this.multiQuestion.element.testElementName = this.testElementName;\n      }else{\n        this.multiQuestion.testElementName = this.testElementName;\n      }\n    }\n  }\n\n  toggleMenu() {\n    const myId = this.multiQuestion.id || this.multiQuestion.element?.id;\n    if (this.isMenuOpen) {\n      this.dataservice.setOpenMenuId(null); // close\n    } else {\n      this.dataservice.setOpenMenuId(myId); // open this one\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n  const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n    if (!clickedInside) {\n      this.dataservice.setOpenMenuId(null);\n    }\n  }\n\n  openElementIdModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.multiQuestion,\n      pages: this.pages\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.multiQuestion = result;\n        this.customElementId = this.multiQuestion.element?.customElementId ||this.multiQuestion.customElementId;\n      }\n    });\n  }\n\n  openWhenClauseModal() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      element: this.multiQuestion,\n      pages: this.pages,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.multiQuestion = result;\n        this.whenClause = result.whenClause;\n      }\n    });\n  }\n\n  updateWhenClause(savedClauses: any[]): any[] {\n    const updatedClauses = savedClauses.map((clause) => {\n      const exists = this.filteredAllQuestions.some(\n        (q: any) => q.id === clause.questionid\n      );\n\n      if (!exists) {\n        return {\n          ...clause,\n          questionid: '',\n          condition: '',\n        };\n      }\n\n      return clause; // unchanged\n    });\n\n    return updatedClauses;\n  }\n\n  isWhenClauseValid(whenClause:any): boolean {\n    if(whenClause?.length>0){\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n  \n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition || clause.value === '') {\n          return false;\n        }\n  \n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  ngOnDestroy() {\n    if (this.pageSubscription) {\n      this.pageSubscription.unsubscribe();\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + multiQuestion.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\" [attr.name]=\"testElementName\">\n      <div class=\"inner-rectangle\">\n        <div\n          class=\"input-container\"\n        >\n          <div class=\"row\">\n            <div class=\"col\">\n              <div class=\"icon-container\">\n                <img\n                  src=\"../../assets/icons/multi-fields-icon.svg\"\n                  class=\"icon-style\"\n                />\n                Multi Field Question\n              </div>\n            </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"hintOpened()\"\n                        >\n                        <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-right\">\n                          <span>Hint</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal(multiQuestion.element.id)\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <label class=\"fontFamily\" [for]=\"'input1'+multiQuestion?.element.id\">Question</label>\n          <input\n            type=\"text\"\n            [id]=\"'input1'+multiQuestion?.element.id\"\n            class=\"form-control mb-2\"\n            [(ngModel)]=\"inputQuestion\"\n            (ngModelChange)=\"jsonUpdation()\"\n            placeholder=\"Type Question\"\n            maxlength=\"150\"\n            (focus)=\"onFocus()\"\n          />\n          <lib-recursive-question\n            [question]=\"multiQuestion.element.formElements\"\n            [selectedQuestionId]=\"selectedQuestionId\"\n            [translations]=\"translations\"\n            [pages]=\"pages\"\n            [elementType]=\"'MULTIFIELD'\"\n            [multifieldId]=\"multiQuestion.element.id\"\n            (translationsUpdated)=\"onTranslationsUpdated($event)\"\n          ></lib-recursive-question>\n          <div class=\"d-flex justify-content-between align-items-center\">\n            <div class=\"custom-element-id-container\">\n              <div *ngIf=\"customElementId\">\n                <span>Element ID - {{customElementId}}</span>\n              </div>\n            </div>\n            <div class=\"d-flex justify-content-end\">\n              <button\n                [ngClass]=\"{\n                  'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                  'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n                }\"\n                type=\"button\" class=\"btn btn-link p-0 mr-50 mt-4\" (click)=\"openWhenClauseModal()\">When ?\n                <span \n                  *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                  class=\"when-rule-count\"\n                >\n                  ({{ whenClause?.whenClauseCondition?.length }} \n                  {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n                </span>\n                </button>\n              <button\n                type=\"button\"\n                class=\"btn btn-link p-0 mt-4\"\n                (click)=\"addNewField()\"\n              >\n                Add new field\n              </button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\">\n  <div class=\"fbModalDialog\">\n    <div class=\"fbModalClose\">\n      <img\n        src=\"/assets/icons/close-sidebar-mark-icon.svg\"\n        (click)=\"hintOpened()\"\n        class=\"svg-model\"\n      />\n    </div>\n    <div class=\"fbModalTitle\">Add Hint</div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input\n        class=\"appearanceInput\"\n        type=\"text\"\n        placeholder=\"Type here...\"\n        [(ngModel)]=\"hintText\"\n        (ngModelChange)=\"jsonUpdation('hint')\"\n      />\n    </div>\n    <div class=\"hintModalFooter\">\n      <div class=\"footer-btn\">\n        <button type=\"button\" (click)=\"hint()\">\n          OK\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n  selector: 'lib-section-fields',\n  templateUrl: './section-fields.component.html',\n  styleUrls: ['./section-fields.component.scss']\n})\nexport class SectionFieldsComponent {\n  @Input() section:any={};\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  sectionTitle:string='';\n  sectionDescription:string='';\n\n  constructor(private sanitizer: DomSanitizer) {}\n\n  ngOnInit(){\n    this.getTitleAndDescription();    \n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getTitleAndDescription();\n    }\n  }\n\n  getTitleAndDescription(){    \n    if (this.translations && this.section?.id) {\n      const titleTranslation = this.translations.find((t: any) =>\n        t.elementId === this.section.id &&\n        t.entityType === 'SECTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );            \n      this.sectionTitle = titleTranslation ? titleTranslation.translatedText : ''; \n      const descriptionTranslation = this.translations.find((t: any) =>\n        t.elementId === this.section.id &&\n        t.entityType === 'SECTION' &&\n        t.attribute === 'DESCRIPTION' &&\n        t.language === this.selectedLanguage\n      );       \n      this.sectionDescription = descriptionTranslation ? descriptionTranslation.translatedText : '';       \n    } else {      \n      this.sectionTitle = '';\n      this.sectionDescription = '';\n    } \n  }\n\n  getSanitizedContent(): SafeHtml {\n    return this.sanitizer.bypassSecurityTrustHtml(this.sectionDescription);\n  }\n}\n","<div class=\"px-3\">\n  <p class=\"sectionTitle\" class=\"previewQuestion\">{{ sectionTitle }}</p>\n  <p [innerHTML]=\"getSanitizedContent()\" class=\"description\"></p></div>\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { ApiService } from '../../services/api.service';\n\n@Component({\n  selector: 'lib-check-box-fields',\n  templateUrl: './check-box-fields.component.html',\n  styleUrls: ['./check-box-fields.component.scss'],\n})\nexport class CheckBoxFieldsComponent {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  selectionType: string = '';\n  displayOptionsInColumn:boolean =false;\n  minimumSelection?: number;\n  maximumSelection?: number;\n  optionType: string = '';\n  lookupTable: any = {};\n  customOptions: any[] = [];\n  database: any = {};\n  api: any = {};\n  selectedOptions: any[] = [];\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n\n  constructor(private formService: ApiService) { }\n\n  ngOnInit() {\n    this.valueAssigned();\n    this.getQuestion();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.selectionType = this.question?.element?.formElement?.appearance.selectionType;\n    this.displayOptionsInColumn = this.question?.element?.formElement?.appearance.displayOptionsInColumn;\n    this.minimumSelection =\n      this.question?.element?.formElement?.validation.minimumSelection;\n    this.maximumSelection =\n      this.question?.element?.formElement?.validation.maximumSelection;\n    this.optionType = this.question?.element?.formElement?.option.optionType;\n    switch (this.optionType) {\n      case 'OPTION':\n        this.customOptions = this.question?.element?.formElement?.option.customOptions;\n        break;\n      case 'LOOKUP':\n        this.lookupTable = this.question?.element?.formElement?.option.lookupTable;\n        this.fetchDataFromLookup();\n        break;\n      case 'DATABASE':\n        this.database = this.question?.element?.formElement?.option.database;\n        this.fetchDataFromDatabase();\n        break;\n      case 'API':\n        this.api = this.question?.element?.formElement?.option.api;\n        this.fetchDataFromAPI();\n        break;\n      default:\n        console.warn('Unknown option type:', this.optionType);\n    }\n\n    // If selectionType is 'SINGLE', set minimumSelection and maximumSelection to 1\n    if (this.selectionType === 'SINGLE') {\n      this.minimumSelection = 1;\n      this.maximumSelection = 1;\n    }\n\n    // If selectionType is 'MULTIPLE' and minSelection and maxSelection are not specified, set them to undefined\n    if (\n      this.selectionType === 'MULTIPLE' &&\n      !this.minimumSelection &&\n      !this.maximumSelection\n    ) {\n      this.minimumSelection = undefined;\n      this.maximumSelection = undefined;\n    }\n  }\n\n  fetchDataFromLookup() {\n    this.formService.fetchDataFromLookup(this.lookupTable).subscribe(\n      (response:any) => {\n        this.customOptions = response.result.values.map(\n          (item: { value: string; label: string }) => ({\n            value: item.value,\n            label: item.label,\n          })\n        );\n      },\n      (error:any) => {\n        console.error('HTTP Error:', error);\n      }\n    );\n  }\n\n  fetchDataFromDatabase() {\n    const transformedDatabase = this.transformDatabaseObject(this.database);\n    this.formService.fetchDataFromDatabase(transformedDatabase).subscribe(\n      (response:any) => {\n        if (response.success) {\n          this.customOptions = response.result.map(\n            (item: { value: string; label: string }) => ({\n              value: item.value,\n              label: item.label,\n            })\n          );\n        } else {\n          console.error('Error fetching data from database:', response.message);\n        }\n      },\n      (error:any) => {\n        console.error('HTTP Error:', error);\n      }\n    );\n  }\n\n  transformDatabaseObject(database: any) {\n    return {\n      tableName: database.tableName,\n      valueField: database.valueField,\n      labelField: database.labelField,\n      criteria: database.criteria.map((criteria: any) => ({\n        field: criteria?.field,\n        valueSource:criteria?.valueSource,\n        condition: criteria?.condition,\n        value: criteria?.inputValue,\n        logicalOperator: criteria?.logicalOperator,\n      })),\n    };\n  }\n\n  fetchDataFromAPI() {\n    const apiConfig = this.api;\n    this.formService.fetchDataFromExternalAPI(apiConfig).subscribe(\n      (response:any) => {\n        let data;\n        if(apiConfig.pathToValue) {\n          data = this.extractDataByPath(response, apiConfig.pathToValue);\n        } else {\n          data = response;\n        }\n        this.customOptions = data.map((item: any) => ({\n          value: item[apiConfig.valueField],\n          label: item[apiConfig.labelField],\n        }));\n      },\n      (error:any) => {\n        console.error('HTTP Error:', error);\n      }\n    );\n  }\n\n  extractDataByPath(data: any, path: string) {\n    return path.split('.').reduce((acc, part) => acc && acc[part], data);\n  }\n\n\n  isOptionDisabled(option: any): boolean {\n    return (\n      this.maximumSelection !== undefined &&\n      this.selectedOptions.length >= this.maximumSelection &&\n      !this.selectedOptions.includes(option)\n    );\n  }\n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n\n  <div\n  class=\"d-flex flex-wrap\"\n  *ngIf=\"displayOptionsInColumn; else defaultLayout\"\n>\n  <div\n    class=\"form-check w-50 mb-2\"\n    *ngFor=\"let option of customOptions\"\n  >\n    <input\n      class=\"\"\n      type=\"checkbox\"\n      [id]=\"option.value + question?.id\"\n      [name]=\"option.value + 'Checkbox'\"\n      [value]=\"option.value\"\n      disabled\n    />\n    <label\n      class=\"formCheckLabel ms-2\"\n      [for]=\"option.value + question?.id\"\n      *ngIf=\"optionType == 'OPTION'\"\n    >\n      {{ option.value }}\n    </label>\n    <label\n      class=\"formCheckLabel ms-2\"\n      [for]=\"option.value + question?.id\"\n      *ngIf=\"optionType == 'LOOKUP' || optionType == 'DATABASE' || optionType == 'API'\"\n    >\n      {{ option.label }}\n    </label>\n  </div>\n</div>\n\n<ng-template #defaultLayout>\n  <div class=\"form-check\" *ngFor=\"let option of customOptions\">\n    <input\n      class=\"\"\n      type=\"checkbox\"\n      [id]=\"option.value + question?.id\"\n      [name]=\"option.value + 'Checkbox'\"\n      [value]=\"option.value\"\n      [disabled]=\"inPreview\"\n    />\n    <label\n      class=\"formCheckLabel ms-2 me-4 mb-2\"\n      [for]=\"option.value + question?.id\"\n      *ngIf=\"optionType == 'OPTION'\"\n    >\n      {{ option.value }}\n    </label>\n    <label\n      class=\"formCheckLabel ms-2 me-4\"\n      [for]=\"option.value + question?.id\"\n      *ngIf=\"optionType == 'LOOKUP' || optionType == 'DATABASE' || optionType == 'API'\"\n    >\n      {{ option.label }}\n    </label>\n  </div>\n</ng-template>\n\n</div>\n","import { DatePipe } from '@angular/common';\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport {\n  BsDatepickerConfig,\n  BsDatepickerDirective,\n} from 'ngx-bootstrap/datepicker';\n\n@Component({\n  selector: 'lib-date-time-fields',\n  templateUrl: './date-time-fields.component.html',\n  styleUrls: ['./date-time-fields.component.scss'],\n  providers: [DatePipe],\n})\nexport class DateTimeFieldsComponent {\n  bsConfig: Partial<BsDatepickerConfig> = {\n    containerClass: 'theme-dark-blue',\n    isAnimated: true,\n    adaptivePosition: true,\n    showWeekNumbers: false,\n  };\n\n  @Input() question: any = {};\n  required: boolean = false;\n  hint: string = '';\n  count: number = 0;\n  minTime: string = '';\n  maxTime: string = '';\n  dateType: string = '';\n  format: string = '';\n  timeFormat: string = '';\n  minDateOption: string = '';\n  minDate: Date | undefined;\n  maxDateOption: string = '';\n  maxDate: Date | undefined;\n  todayDate: Date = new Date();\n  maxTimeOption: string = '';\n  minTimeOption: string = '';\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n\n  @ViewChild('datepickerYMD') datepicker!: BsDatepickerDirective;\n  @ViewChild('daterangepicker') dateRangePicker!: BsDatepickerDirective;\n  @ViewChild('dateAndTimePicker') dateAndTimePicker!: BsDatepickerDirective;\n  constructor(private datePipe: DatePipe) {}\n\n  ngOnInit() {\n    this.valueAssigned();\n    this.getQuestion();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.dateType = this.question?.element?.formElement?.appearance.dateType;\n    this.minDateOption = this.question?.element?.formElement?.validation.minDateOption;\n\n    this.minDate = this.getMinDate();\n\n    this.maxDateOption = this.question?.element?.formElement?.validation.maxDateOption;\n    this.maxDate = this.getMaxDate();\n    this.setDateTimeFormat();\n    this.minTimeOption = this.question?.element?.formElement?.validation.minTimeOption;\n    this.maxTimeOption = this.question?.element?.formElement?.validation.maxTimeOption;\n    if (this.dateType !== 'DATE_AND_TIME') {\n      this.minTime = this.getMinTime().toString();\n      this.maxTime = this.getMaxTime().toString();\n    }\n\n    if (!this.minTime || this.minTime.length === 0) {\n      if (this.timeFormat === '12') {\n        this.minTime = '12:00 am';\n      } else {\n        this.minTime = '00:00';\n      }\n    }\n\n    if (!this.maxTime || this.maxTime.length === 0) {\n      if (this.timeFormat === '12') {\n        this.maxTime = '12:00 pm';\n      } else {\n        this.maxTime = '23:00';\n      }\n    }\n  }\n\n  setDateTimeFormat() {\n    switch (this.dateType) {\n      case 'DATE_ONLY':\n        this.format = this.question?.element?.formElement?.appearance.format;\n        break;\n      case 'TIME_ONLY':\n        this.timeFormat = this.question?.element?.formElement?.appearance.timeFormat;\n        break;\n      case 'DATE_AND_TIME':\n        this.format = this.question?.element?.formElement?.appearance.format;\n        break;\n      case 'DATE_RANGE':\n        this.format = this.question?.element?.formElement?.appearance.format;\n        break;\n      default:\n        this.format = 'DD/MM/YYYY';\n    }\n  }\n\n  getMinDate(): Date | undefined {\n    if (this.minDateOption === 'CURRENT_DATE') {\n      return this.todayDate;\n    } else if (this.minDateOption === 'CUSTOM') {\n      return new Date(this.question?.element?.formElement?.validation.minDate);\n    }\n    return undefined; // Return undefined if no valid option\n  }\n\n  getMaxDate(): Date | undefined {\n    if (this.maxDateOption === 'CURRENT_DATE') {\n      return this.todayDate;\n    } else if (this.maxDateOption === 'CUSTOM') {\n      return new Date(this.question?.element?.formElement?.validation.maxDate);\n    }\n    return undefined;\n  }\n\n  getMinTime() {\n    if (this.minTimeOption) {\n      const format = this.timeFormat === '24' ? 'HH:mm' : 'hh:mm a';\n\n      if (this.minTimeOption === 'CURRENT_TIME') {\n        const now = new Date();\n        return this.datePipe.transform(now, format) || '';\n      } else if (this.minTimeOption === 'CUSTOM') {\n        const customTime = this.question?.element?.formElement?.validation.minTime;\n        const [hours, minutes] = customTime.split(':'); // Split by colon to get hours and minutes\n\n        // Create a Date object with a fixed date and custom time\n        const customDate = new Date();\n        customDate.setHours(parseInt(hours, 10), parseInt(minutes, 10), 0, 0); // Set hours and minutes\n\n        return this.datePipe.transform(customDate, format) || '';\n      }\n    }\n\n    // Ensure a default return if no condition is met\n    return '';\n  }\n\n  getMaxTime() {\n    if (this.maxTimeOption) {\n      const format = this.timeFormat === '24' ? 'HH:mm' : 'hh:mm a';\n      if (this.maxTimeOption === 'CURRENT_TIME') {\n        const now = new Date();\n        return this.datePipe.transform(now, format) || '';\n      } else if (this.maxTimeOption === 'CUSTOM') {\n        const customTime = this.question?.element?.formElement?.validation.maxTime;\n        const [hours, minutes] = customTime.split(':'); // Split by colon to get hours and minutes\n\n        // Create a Date object with a fixed date and custom time\n        const customDate = new Date();\n        customDate.setHours(parseInt(hours, 10), parseInt(minutes, 10), 0, 0); // Set hours and minutes\n\n        return this.datePipe.transform(customDate, format) || '';\n      }\n    }\n\n    return '';\n  }\n\n  openDatePicker() {\n    this.datepicker.toggle();\n  }\n\n  openDateRangePicker() {\n    this.dateRangePicker.toggle();\n  }\n\n  openDateAndTimePicker() {\n    this.dateAndTimePicker.toggle();\n  }\n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n  <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\n    <!-- Date only picker -->\n    <div class=\"input-container\">\n      <input\n        class=\"form-control height\"\n        bsDatepicker\n        [minDate]=\"minDate ? minDate : undefined\"\n        [maxDate]=\"maxDate ? maxDate : undefined\"\n        [bsConfig]=\"{ dateInputFormat: format }\"\n        placeholder=\"Select date\"\n        [disabled]=\"inPreview\"\n      />\n      <i\n        class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n        (click)=\"openDatePicker()\"\n      ></i>\n    </div>\n  </ng-container>\n\n  <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\n    <!-- Time picker -->\n\n\n<div class=\"input-container\">\n      <input\n      class=\"form-control height appearanceInput mt-3\"\n      aria-label=\"Select time\"\n      placeholder=\"Select time\"\n      [disabled]=\"inPreview\"\n      [format]=\"timeFormat==='24'?24:12\"\n      [ngxTimepicker]=\"fullTime3\"\n      [max]=\"maxTime\"\n      [min]=\"minTime\"\n  />\n  \n  <i\n  id=\"startDateIcon\"\n  class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n  style=\"cursor: pointer;\"\n></i>\n  <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\n</div>\n  </ng-container>\n\n  <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\n    <!-- Date and time picker -->\n    <div class=\"input-container\">\n      <input\n        type=\"text\"\n        class=\"form-control height\"\n        [minDate]=\"minDate ? minDate : undefined\"\n        [maxDate]=\"maxDate ? maxDate : undefined\"\n        [bsConfig]=\"{\n          dateInputFormat: format\n        }\"\n        placeholder=\"Select date\"\n        bsDatepicker\n        [disabled]=\"inPreview\"\n      />\n      <i\n        class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n      ></i>\n    </div>\n      <div class=\"input-container\">\n        <input\n        \n        class=\"form-control height appearanceInput mt-3\"\n        aria-label=\"Select time\"\n        placeholder=\"Select time\"\n        readonly\n        [format]=\"timeFormat==='24'?24:12\"\n        [ngxTimepicker]=\"fullTime4\"\n        [max]=\"maxTime\"\n        [min]=\"minTime\"\n        [disabled]=\"inPreview\"\n    />\n    \n    <i\n    id=\"startDateIcon\"\n    class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n    style=\"cursor: pointer;\"\n  ></i>\n    <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\n  </div>\n   \n  </ng-container>\n\n  <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\n    <!-- Date range picker -->\n    <div class=\"input-container\">\n      <input\n      #daterangepicker=\"bsDaterangepicker\"\n        type=\"text\"\n        class=\"form-control height\"\n        bsDaterangepicker\n        placeholder=\"Select date\"\n        [minDate]=\"minDate ? minDate : undefined\"\n        [maxDate]=\"maxDate ? maxDate : undefined\"\n        [bsConfig]=\"{\n          rangeInputFormat: format,\n          dateInputFormat: format,\n        }\"\n        [disabled]=\"inPreview\"\n      />\n      <i\n        class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n        (click)=\"openDateRangePicker()\"\n      ></i>\n    </div>\n  </ng-container>\n\n  <ng-container *ngIf=\"dateType === 'MONTH_YEAR'\">\n    <div class=\"input-container\">\n      <input\n        class=\"form-control height\"\n        bsDatepicker\n        [minDate]=\"minDate ? minDate : undefined\"\n        [maxDate]=\"maxDate ? maxDate : undefined\"\n        [bsConfig]=\"{\n          containerClass: 'theme-dark-blue',\n          isAnimated: true,\n          adaptivePosition: true,\n          showWeekNumbers: false,\n          minMode: 'month',\n          dateInputFormat: format\n        }\"\n        [disabled]=\"inPreview\"\n        placeholder=\"Select Month and Year\"\n      />\n      <i\n        class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n      ></i>\n    </div>\n  </ng-container>\n</div>\n","import { ChangeDetectorRef, Component, EventEmitter, Input, Output, Renderer2, SimpleChanges } from '@angular/core';\nimport { ApiService } from '../../services/api.service';\n\ninterface DropDownData {\n  value: string;\n  label: string;\n  image: string;\n}\n\n@Component({\n  selector: 'lib-drop-down-fields',\n  templateUrl: './drop-down-fields.component.html',\n  styleUrls: ['./drop-down-fields.component.scss'],\n})\nexport class DropDownFieldsComponent {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  selectionType: string = '';\n  minimumSelection: number = 0;\n  maximumSelection: number = 0;\n  optionType: string = '';\n  lookupTable: string = '';\n  customOptions: DropDownData[] = [];\n  database: any = {};\n  api: any = {};\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  private styleElement: HTMLStyleElement | null = null;\n  @Output() answerChange = new EventEmitter<any>();\n  \n  constructor(private formService: ApiService,\n    private cdr:ChangeDetectorRef,\n    private renderer: Renderer2\n  ) { }\n\n  ngOnInit() {\n    this.valueAssigned();\n    this.getQuestion();\n    this.injectStyle();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.selectionType = this.question?.element?.formElement?.appearance.selectionType;\n    this.minimumSelection =\n      this.question?.element?.formElement?.validation.minimumSelection;\n    this.maximumSelection =\n      this.question?.element?.formElement?.validation.maximumSelection;\n    this.optionType = this.question?.element?.formElement?.option.optionType;\n    switch (this.optionType) {\n      case 'OPTION':\n        this.customOptions = this.question?.element?.formElement?.option?.customOptions?.map((opt: any) => ({\n          value: opt.value,\n          label: opt.value\n        })) || [];\n        break;\n      case 'LOOKUP':\n        this.lookupTable = this.question?.element?.formElement?.option.lookupTable;\n        this.fetchDataFromLookup();\n        break;\n      case 'DATABASE':\n        this.database = this.question?.element?.formElement?.option.database;\n        this.fetchDataFromDatabase();\n        break;\n      case 'API':\n        this.api = this.question?.element?.formElement?.option.api;\n        this.fetchDataFromAPI();\n        break;\n      default:\n        console.warn('Unknown option type:', this.optionType);\n    }\n  }\n\n\n\n\n  ngOnDestroy() {\n    if(this.inPreview){\n      this.removeStyle(); // Remove the style when the component is destroyed\n    }\n  }\n\n  injectStyle() {\n    if(this.inPreview){\n      const style = this.renderer.createElement('style');\n      style.innerHTML = `.dropdown .dropdown-field.closed { pointer-events: none !important; }`;\n      this.renderer.appendChild(document.head, style);\n      this.styleElement = style;\n    }\n  }\n\n  removeStyle() {\n    if (this.styleElement) {\n      this.renderer.removeChild(document.head, this.styleElement);\n      this.styleElement = null;\n    }\n  }\n\n\n  fetchDataFromLookup() {\n    this.formService.fetchDataFromLookup(this.lookupTable).subscribe(\n      (response:any) => {\n        this.customOptions = response.result.values.map(\n          (item: { value: string; label: string }) => ({\n            value: item.value,\n            label: item.label,\n          })\n        );\n      },\n      (error:any) => {\n        console.error('HTTP Error:', error);\n      }\n    );\n  }\n\n  fetchDataFromDatabase() {\n    const transformedDatabase = this.transformDatabaseObject(this.database);\n    this.formService.fetchDataFromDatabase(transformedDatabase).subscribe(\n      (response:any) => {\n        if (response.success) {\n          this.customOptions = response.result.map(\n            (item: { value: string; label: string }) => ({\n              value: item.value,\n              label: item.label,\n            })\n          );\n        } else {\n          console.error('Error fetching data from database:', response.message);\n        }\n      },\n      (error:any) => {\n        console.error('HTTP Error:', error);\n      }\n    );\n  }\n\n  transformDatabaseObject(database: any) {\n    return {\n      tableName: database.tableName,\n      valueField: database.valueField,\n      labelField: database.labelField,\n      criteria: database.criteria.map((criteria: any) => ({\n        field: criteria?.field,\n        valueSource:criteria?.valueSource,\n        condition: criteria?.condition,\n        value: criteria?.inputValue,\n        logicalOperator: criteria?.logicalOperator,\n      })),\n    };\n  }\n\n  fetchDataFromAPI() {\n    const apiConfig = this.api;\n    this.formService.fetchDataFromExternalAPI(apiConfig).subscribe(\n      (response:any) => {\n        let data;\n        if(apiConfig.pathToValue) {\n          data = this.extractDataByPath(response, apiConfig.pathToValue);\n        } else {\n          data = response;\n        }\n        this.customOptions = data.map((item: any) => ({\n          value: item[apiConfig.valueField],\n          label: item[apiConfig.labelField],\n        }));\n      },\n      (error:any) => {\n        console.error('HTTP Error:', error);\n      }\n    );\n  }\n\n  extractDataByPath(data: any, path: string) {\n    return path.split('.').reduce((acc, part) => acc && acc[part], data);\n  }\n\n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n  <lib-dropdown\n    [items]=\"customOptions\"\n    [multiple]=\"selectionType === 'SINGLE' ? false : true\"\n  ></lib-dropdown>\n</div>\n","import { Component, EventEmitter, Input, Output, Renderer2, SimpleChanges } from '@angular/core';\n\nexport interface Attachment {\n  fileId: string;\n  fileName: string;\n  fileUrl: string;\n}\n\n@Component({\n  selector: 'lib-file-picker-fields',\n  templateUrl: './file-picker-fields.component.html',\n  styleUrls: ['./file-picker-fields.component.scss'],\n})\nexport class FilePickerFieldsComponent {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  multiFileUploads: boolean = true;\n  fileTypes: string[] = [];\n  fileSize: number = 0;\n  fileSizeUnit: string = '';\n  totalFileSize: number = 0;\n  initialFileSize: number = 0;\n  initialTotalSize: number = 0;\n  dragAndDrop: boolean = false;\n\n  avatarPicker: boolean = false;\n  files: any;\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  private styleElement: HTMLStyleElement | null = null;\n  @Output() answerChange = new EventEmitter<any>();\n  \n  constructor(private renderer: Renderer2) {}\n\n\n  ngOnInit() {\n    this.valueAssigned();\n    this.getQuestion();\n    this.injectStyle();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.multiFileUploads =\n      this.question?.element?.formElement?.appearance.multiFileUploads;\n    this.dragAndDrop = this.question?.element?.formElement?.appearance.dragAndDrop;\n    this.fileTypes = this.question?.element?.formElement?.validation.fileTypes;\n    this.fileSizeUnit = this.question?.element?.formElement?.validation.fileSizeUnit;\n    this.avatarPicker = this.question?.element?.formElement?.appearance.avatarPicker;\n    this.initialFileSize = this.question?.element?.formElement?.validation?.fileSize;\n    this.fileSize = this.convertToBytes(\n      this.initialFileSize,\n      this.fileSizeUnit\n    );\n    this.initialTotalSize = this.question?.element?.formElement?.validation?.totalFileSize;\n    this.totalFileSize = this.convertToBytes(\n      this.initialTotalSize,\n      this.fileSizeUnit\n    );\n\n  }\n  convertToBytes(size: number, unit: string): number {\n    const units: { [key: string]: number } = {\n      B: 1,\n      KB: 1024,\n      MB: 1024 * 1024,\n      GB: 1024 * 1024 * 1024,\n    };\n    return size * (units[unit.toUpperCase()] || 1);\n  }\n\n  ngOnDestroy() {\n    if(this.inPreview){\n      this.removeStyle(); // Remove the style when the component is destroyed\n    }\n  }\n\n  injectStyle() {\n    if(this.inPreview){\n      const style = this.renderer.createElement('style');\n      style.innerHTML = `.upload-container { pointer-events: none !important; }`;\n      this.renderer.appendChild(document.head, style);\n      this.styleElement = style;\n    }\n  }\n\n  removeStyle() {\n    if (this.styleElement) {\n      this.renderer.removeChild(document.head, this.styleElement);\n      this.styleElement = null;\n    }\n  }\n\n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n  <lib-docUpload\n    [totalSize]=\"totalFileSize\"\n    [fileAllowed]=\"fileTypes\"\n    [multiple]=\"multiFileUploads\"\n    [fileSize]=\"fileSize\"\n    [avatarPicker]=\"avatarPicker\"\n    [files]=\"files\"\n  ></lib-docUpload>\n</div>\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-password-fields',\n  templateUrl: './password-fields.component.html',\n  styleUrls: ['./password-fields.component.scss'],\n})\nexport class PasswordFieldsComponent {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  confirmPassword!: boolean;\n  displayStrength!: boolean;\n  viewButton!: boolean;\n  maxLength!: number;\n  minLength!: number;\n  requireLowercaseLetters!: boolean;\n  requireUppercaseLetters!: boolean;\n  requireNumbers!: boolean;\n  requireSpecialCharacters!: boolean;\n  allowedSpecialCharacters: string[] = [];\n  passwordStrength: number = 0;\n  questionId:string='';\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n  \n  ngOnInit() {\n    this.valueAssigned();\n    this.getQuestion();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.questionId=this.question.element.id;\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.confirmPassword = this.question?.element?.formElement?.appearance.confirmPassword;\n    this.displayStrength = this.question?.element?.formElement?.appearance.displayStrong;\n    this.viewButton = this.question?.element?.formElement?.appearance.viewButton;\n    this.maxLength = this.question?.element?.formElement?.validation.maxLength;\n    this.minLength = this.question?.element?.formElement?.validation.minLength;\n    this.requireLowercaseLetters =\n      this.question?.element?.formElement?.validation.requireLowercaseLetters;\n    this.requireUppercaseLetters =\n      this.question?.element?.formElement?.validation.requireUppercaseLetters;\n    this.requireNumbers = this.question?.element?.formElement?.validation.requireNumbers;\n    this.requireSpecialCharacters =\n      this.question?.element?.formElement?.validation.requireSpecialCharacters;\n    if (this.requireSpecialCharacters) {\n      this.allowedSpecialCharacters =\n        this.question?.element?.formElement?.validation.allowedSpecialCharacters\n          .split(',')\n          .map((char: any) => char.trim());\n    }\n  }\n\n  togglePasswordVisibility() {\n    let passwordField = document.getElementById(\n      'passwordField'+this.questionId\n    ) as HTMLInputElement;\n    let eyeIcon = document.getElementById(\n      'passwordEyeIcon'+this.questionId\n    ) as HTMLInputElement;\n\n    if (passwordField.type === 'password') {\n      passwordField.type = 'text';\n      eyeIcon.classList.remove('bi-eye-fill');\n      eyeIcon.classList.add('bi-eye-slash-fill');\n    } else {\n      passwordField.type = 'password';\n      eyeIcon.classList.remove('bi-eye-slash-fill');\n      eyeIcon.classList.add('bi-eye-fill');\n    }\n  }\n  toggleCnfrmPasswordVisibility() {\n    let passwordField = document.getElementById(\n      'cnfrmPasswordField'+this.questionId\n    ) as HTMLInputElement;\n    let eyeIcon = document.getElementById(\n      'CnfrmPasswordEyeIcon'+this.questionId\n    ) as HTMLInputElement;\n\n    if (passwordField.type === 'password') {\n      passwordField.type = 'text';\n      eyeIcon.classList.remove('bi-eye-fill');\n      eyeIcon.classList.add('bi-eye-slash-fill');\n    } else {\n      passwordField.type = 'password';\n      eyeIcon.classList.remove('bi-eye-slash-fill');\n      eyeIcon.classList.add('bi-eye-fill');\n    }\n  }\n\n    calculateStrength(password:any) {\n      const lengthStrength = Math.min(100, (password.length / 12) * 100); // Assume maximum length of 12 for full points\n      const lowercaseStrength = /[a-z]/.test(password) ? 20 : 0;\n      const uppercaseStrength = /[A-Z]/.test(password) ? 20 : 0;\n      const numberStrength = /\\d/.test(password) ? 20 : 0;\n      const specialCharacterStrength = /[!@#$%^&*(),.?\":{}|<>]/.test(password) ? 20 : 0; // Adjust this regex based on your allowed special characters\n    \n      return lengthStrength + lowercaseStrength + uppercaseStrength + numberStrength + specialCharacterStrength;\n    }\n\n    upateAnswer(event:any){\n      this.answerChange.emit(event.target.value);\n    }\n}\n\n","<div  class=\"px-3\">\n  <div class=\"password-input-wrapper mb-2\">\n    <div class=\"input-wrapper\">\n      &nbsp;&nbsp; <label class=\"previewQuestion\" [for]=\"'passwordField'+questionId\">{{ displayQuestion }}</label\n      >&nbsp;\n      <span class=\"text-danger\" *ngIf=\"required\">*</span>\n      <div\n        class=\"svg-wrapper mb-2 hintIcon\"\n        [attr.data-title]=\"hint\"\n        *ngIf=\"hint\"\n      >\n        <svg\n          class=\"hintSvg\"\n          viewBox=\"0 0 30 30\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            fill-rule=\"evenodd\"\n            clip-rule=\"evenodd\"\n            d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n            stroke=\"#323232\"\n            stroke-width=\"1.5\"\n            stroke-linecap=\"round\"\n            stroke-linejoin=\"round\"\n          />\n          <path\n            d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n            stroke=\"#323232\"\n            stroke-width=\"1.5\"\n            stroke-linecap=\"round\"\n            stroke-linejoin=\"round\"\n          />\n          <path\n            d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n            stroke=\"#323232\"\n            stroke-width=\"1.5\"\n            stroke-linecap=\"round\"\n            stroke-linejoin=\"round\"\n          />\n        </svg>\n      </div>\n    </div>\n    <input\n      type=\"password\"\n      class=\"form-control mb-2 height\"\n      [id]=\"'passwordField'+questionId \"\n      [disabled]=\"inPreview\"\n    />\n    <button\n      id=\"togglePasswordBtn\"\n      class=\"toggle-password-btn\"\n      (click)=\"togglePasswordVisibility()\"\n      *ngIf=\"viewButton\"\n    >\n      <i class=\"bi bi-eye-fill\" [id]=\"'passwordEyeIcon'+questionId\"></i>\n    </button>\n  </div>\n  <div class=\"password-strength-meter\" *ngIf=\"displayStrength\">\n    <div class=\"progress\">\n      <div\n        class=\"progress-bar\"\n        role=\"progressbar\"\n        [style.width]=\"passwordStrength + '%'\"\n        [class.bg-danger]=\"passwordStrength < 30\"\n        [class.bg-warning]=\"passwordStrength >= 30 && passwordStrength < 70\"\n        [class.bg-success]=\"passwordStrength >= 70\"\n      ></div>\n    </div>\n  </div>\n  \n\n  <div class=\"cnfrmPasswordWrapper\" *ngIf=\"confirmPassword\">\n    <label for=\"'cnfrmPasswordField'+questionId\">Confirm password</label>\n    <input\n      type=\"password\"\n      class=\"form-control mb-2 height\"\n      [id]=\"'cnfrmPasswordField'+questionId\"\n      [disabled]=\"inPreview\"\n    />\n    <button\n      id=\"toggleCnfrmPasswordBtn\"\n      class=\"toggle-password-btn\"\n      (click)=\"toggleCnfrmPasswordVisibility()\"\n      *ngIf=\"viewButton\"\n    >\n      <i class=\"bi bi-eye-fill\" [id]=\"'CnfrmPasswordEyeIcon'+questionId\"></i>\n    </button>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { ApiService } from '../../services/api.service';\n\n@Component({\n  selector: 'lib-radio-button-fields',\n  templateUrl: './radio-button-fields.component.html',\n  styleUrls: ['./radio-button-fields.component.scss'],\n})\nexport class RadioButtonFieldsComponent {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  displayOptionsInColumn:boolean =false;\n  hint: string = '';\n  color: string = '';\n  minimumSelection: number = 0;\n  maximumSelection: number = 0;\n  optionType: string = '';\n  lookupTable: string = '';\n  customOptions: any[] = [];\n  database: any = {};\n  api: any = {};\n  apiOptions: any[] = [];\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n  \n  constructor(private formService: ApiService) { }\n\n  ngOnInit() {\n    this.valueAssigned();\n    this.getQuestion();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.color = this.question?.element?.formElement?.appearance.color;\n    this.displayOptionsInColumn = this.question?.element?.formElement?.appearance.displayOptionsInColumn;\n    this.optionType = this.question?.element?.formElement?.option.optionType;\n\n    switch (this.optionType) {\n      case 'OPTION':\n        this.customOptions = this.question?.element?.formElement?.option.customOptions;\n        break;\n      case 'LOOKUP':\n        this.lookupTable = this.question?.element?.formElement?.option.lookupTable;\n        this.fetchDataFromLookup();\n        break;\n      case 'DATABASE':\n        this.database = this.question?.element?.formElement?.option.database;\n        this.fetchDataFromDatabase();\n        break;\n      case 'API':\n        this.api = this.question?.element?.formElement?.option.api;\n        this.fetchDataFromAPI();\n        break;\n      default:\n        console.warn('Unknown option type:', this.optionType);\n    }\n  }\n\n  fetchDataFromLookup() {\n    this.formService.fetchDataFromLookup(this.lookupTable).subscribe(\n      (response:any) => {\n        this.customOptions = response.result.values.map(\n          (item: { value: string; label: string }) => ({\n            value: item.value,\n            label: item.label,\n          })\n        );\n      },\n      (error:any) => {\n        console.error('HTTP Error:', error);\n      }\n    );\n  }\n\n  fetchDataFromDatabase() {\n    const transformedDatabase = this.transformDatabaseObject(this.database);\n    this.formService.fetchDataFromDatabase(transformedDatabase).subscribe(\n      (response:any) => {\n        if (response.success) {\n          this.customOptions = response.result.map(\n            (item: { value: string; label: string }) => ({\n              value: item.value,\n              label: item.label,\n            })\n          );\n        } else {\n          console.error('Error fetching data from database:', response.message);\n        }\n      },\n      (error:any) => {\n        console.error('HTTP Error:', error);\n      }\n    );\n  }\n\n  transformDatabaseObject(database: any) {\n    return {\n      tableName: database.tableName,\n      valueField: database.valueField,\n      labelField: database.labelField,\n      criteria: database.criteria.map((criteria: any) => ({\n        field: criteria.field,\n        valueSource:criteria?.valueSource,\n        condition: criteria.condition,\n        value: criteria.inputValue,\n        logicalOperator: criteria.logicalOperator,\n      })),\n    };\n  }\n\n  fetchDataFromAPI() {\n    const apiConfig = this.api;\n    this.formService.fetchDataFromExternalAPI(apiConfig).subscribe(\n      (response:any) => {\n        let data;\n        if(apiConfig.pathToValue) {\n          data = this.extractDataByPath(response, apiConfig.pathToValue);\n        } else {\n          data = response;\n        }\n        this.customOptions = data.map((item: any) => ({\n          value: item[apiConfig.valueField],\n          label: item[apiConfig.labelField],\n        }));\n      },\n      (error:any) => {\n        console.error('HTTP Error:', error);\n      }\n    );\n  }\n\n  extractDataByPath(data: any, path: string) {\n    return path.split('.').reduce((acc, part) => acc && acc[part], data);\n  }\n\n  upateAnswer(event:any){\n    this.answerChange.emit(event.target.value);\n  }\n\n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n\n  <div\n  [ngClass]=\"{\n    'options-grid': displayOptionsInColumn,\n    'options-list': !displayOptionsInColumn\n  }\"\n>\n  <div\n    class=\"checkboxField\"\n    *ngFor=\"let option of customOptions\"\n  >\n    <input\n      class=\"formCheckbox mb-2\"\n      type=\"radio\"\n      [name]=\"question.id\"\n      [id]=\"option.value\"\n      [value]=\"option.value\"\n      [style.accent-color]=\"color\"\n      [disabled]=\"inPreview\"\n    />\n\n    <label\n      class=\"formCheckLabel ms-2 me-2 mb-2\"\n      [for]=\"option.value\"\n      *ngIf=\"optionType === 'OPTION'\"\n    >\n      {{ option.value }}\n    </label>\n    <label\n      class=\"formCheckLabel ms-2 me-2 mb-2\"\n      [for]=\"option.value\"\n      *ngIf=\"optionType === 'LOOKUP' || optionType === 'DATABASE' || optionType === 'API'\"\n    >\n      {{ option.label }}\n    </label>\n  </div>\n</div>\n</div>\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-selection-matrix-fields',\n  templateUrl: './selection-matrix-fields.component.html',\n  styleUrls: ['./selection-matrix-fields.component.scss'],\n})\nexport class SelectionMatrixFieldsComponent {\n  @Input() question: any = {};\n  @Input() acceptedLanguage: string ='';\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  selectionMatrixColumn: string[] = [];\n  selectionMatrixLabel: string[] = [];\n  minSelectionValue!:number;\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  selectionColor : string = '';\n  selectionColorRequired: boolean = false;\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n  \n  ngOnInit() {\n    this.valueAssigned();  \n    this.getQuestion();  \n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.selectionMatrixColumn = this.question?.element?.formElement?.selectionMatrixColumn.filter((columnObj: any) => columnObj !== '');\n    this.selectionMatrixLabel = this.question?.element?.formElement?.selectionMatrixLabel.filter((labelObj: any) => labelObj !== '');\n    this.minSelectionValue= this.question?.element?.formElement?.validation?.minSelectionValue;\n    this.selectionColorRequired = this.question.element.formElement.appearance.selectionColorRequired;\n    if(this.selectionColorRequired){\n      this.selectionColor = this.question.element.formElement.appearance.selectionColor;      \n    }\n  }\n\n  \n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n\n  <div [ngClass]=\"{ 'labelBorder-rtl': acceptedLanguage === 'ara' }\">\n    <table class=\"selectionMatrix\">\n      <thead>\n        <tr>\n          <th></th>\n          <th\n            class=\"text-center table-cell-wrap\"\n            *ngFor=\"let column of selectionMatrixColumn\"\n          >\n            {{ column }}\n          </th>\n        </tr>\n      </thead>\n      <tbody class=\"table-group-divider\">\n        <tr *ngFor=\"let label of selectionMatrixLabel; let rowIndex = index\">\n          <td class=\"table-cell-wrap\">{{ label}}</td>\n          <td\n            *ngFor=\"let column of selectionMatrixColumn; let colIndex = index\"\n            class=\"text-center\"\n          >\n            <input\n              type=\"radio\"\n              id=\"radio-{{ rowIndex }}-{{ colIndex }}\"\n              name=\"row-{{ rowIndex }}\"\n              class=\"selectionRadio\"\n              [style.accent-color]=\"selectionColor\"\n              [value]=\"label + '_' + column\"\n              [disabled]=\"inPreview\"\n            />\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-slider-fields',\n  templateUrl: './slider-fields.component.html',\n  styleUrls: ['./slider-fields.component.scss'],\n})\nexport class SliderFieldsComponent {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  minValue: number = 0;\n  maxValue: number = 0;\n  stepValue: number = 0;\n  changeSliderColor: boolean = false;\n  sliderColor: string = '';\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n  \n  constructor() { }\n\n  ngOnInit() {\n\n    this.valueAssigned();\n    this.getQuestion();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.minValue = this.question?.element?.formElement?.appearance.minValue;\n    this.maxValue = this.question?.element?.formElement?.appearance.maxValue;\n    this.stepValue = this.question?.element?.formElement?.appearance.stepValue;\n    this.changeSliderColor =\n      this.question?.element?.formElement?.appearance.changeSliderColor;\n\n    if (this.changeSliderColor) {\n      this.sliderColor = this.question?.element?.formElement?.appearance.sliderColor;\n    }\n  }\n\n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n  <div class=\"sliderRow\">\n    <div class=\"sliderLeft\">\n      <mat-slider\n        [min]=\"minValue\"\n        [max]=\"maxValue\"\n        [step]=\"stepValue\"\n        [ngStyle]=\"{\n          '--mdc-slider-active-track-color': changeSliderColor\n            ? sliderColor\n            : ''\n        }\"\n      >\n        <input\n          matSliderThumb\n          [disabled]=\"inPreview\"\n        />\n      </mat-slider>\n    </div>\n  </div>\n</div>\n","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n@Component({\n  selector: 'lib-terms-and-condition-fields',\n  templateUrl: './terms-and-condition-fields.component.html',\n  styleUrls: ['./terms-and-condition-fields.component.scss'],\n})\nexport class TermsAndConditionFieldsComponent {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  fileDataUrl:any;\n  private apiUrl: string = '';\n  imgUrl:any\n  header: any = {};\n  visible:boolean=false;\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  constructor(\n    private http: HttpClient, \n    private dataService: DataService\n  ) {\n    this.dataService.apiUrl$.subscribe((data) => {\n      this.apiUrl = data;\n    });\n  }\n  ngOnInit() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.fileDataUrl=this.question?.element?.formElement?.termsAndConditionType.fileUrl;\n    this.getQuestion();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n  \n  preview(): Observable<any> {\n    const headers = new HttpHeaders({\n      'Content-Type': this.header.contentType,\n      'auth-user': this.header.authUser,\n    });\n    const body = {\n      // Your request body content here\n    };\n    const options = {\n      headers: headers,\n      body: body,\n    };\n    const fileUrl =this.fileDataUrl;\n    const encodedFileUrl = encodeURIComponent(fileUrl);\n    const fullUrl = `?url=${encodedFileUrl}`;\n    this.imgUrl= (this.apiUrl + `/api/cdn/preview${fullUrl}`);\n    this.visible= true;\n    return this.http.get<any>(this.apiUrl + `/api/cdn/preview${fullUrl}`, options);\n  }\n  closeModal() {\n    this.visible = false;\n  }\n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\" (click)=\"preview()\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n  <div class=\"modal1\" *ngIf=\"visible\">\n    <div class=\"modal-content1\">\n      <span class=\"close\" (click)=\"closeModal()\">&times;</span>\n      <div class=\"imgContiner\">\n      <img [src]=\"imgUrl\" alt=\"Image\">\n    </div>\n    </div>\n  </div>\n</div>\n\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-toggle-switch-fields',\n  templateUrl: './toggle-switch-fields.component.html',\n  styleUrls: ['./toggle-switch-fields.component.scss'],\n})\nexport class ToggleSwitchFieldsComponent {\n  @Input() question: any = {};\n  @Input() acceptedLanguage: string ='';\n\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  labelOnValue: string = '';\n  labelOffValue: string = '';\n  labelOnColor: string = '';\n  labelOffColor: string = '';\n  toggleBackgroundColor: string = '';\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n  \n  ngOnInit() {\n    this.valueAssigned();\n    this.getQuestion();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {    \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {\n      this.displayQuestion = ''; // Fallback if translations or question ID are not available\n    }\n  }\n\n  getDirectionClass(): string {\n    return this.acceptedLanguage === 'ara' ? 'direction-rtl' : 'direction-ltr';\n  }\n\n  valueAssigned() {\n    this.count = this.question.element.count;\n    this.required = this.question.element.required;\n    this.hint = this.question.element.hint;\n    this.labelOnValue = this.question?.element?.formElement?.appearance.labelOnValue;\n    this.labelOffValue = this.question?.element?.formElement?.appearance.labelOffValue;\n    this.labelOnColor = this.question?.element?.formElement?.appearance.labelOnColor;\n    this.labelOffColor = this.question?.element?.formElement?.appearance.labelOffColor;\n    if(this.labelOffColor){\n      this.toggleBackgroundColor=this.labelOffColor;\n    }\n  }\n\n  toggleSliderColor(event: any): void {\n    let isChecked = event.target.checked;    \n    this.question.answer = isChecked ?this.labelOnValue:this.labelOffValue;\n    this.question.validation = true;\n    this.toggleBackgroundColor = isChecked\n      ? this.question?.element?.formElement?.appearance.labelOnColor\n      : this.question?.element?.formElement?.appearance.labelOffColor;\n  }\n}\n","<div  class=\"px-3\">\n  <div class=\"input-wrapper mb-2\">\n    &nbsp;&nbsp; <label class=\"previewQuestion\">{{ displayQuestion }}</label\n    >&nbsp;\n    <span class=\"text-danger\" *ngIf=\"required\">*</span>\n    <div\n      class=\"svg-wrapper mb-2 hintIcon\"\n      [attr.data-title]=\"hint\"\n      *ngIf=\"hint\"\n    >\n      <svg\n        class=\"hintSvg\"\n        viewBox=\"0 0 30 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n          stroke=\"#323232\"\n          stroke-width=\"1.5\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n  </div>\n  <div class=\"mt-2\">\n    <label class=\"switch\" [ngClass]=\"{'direction-rtl': acceptedLanguage === 'ara', 'direction-ltr': acceptedLanguage !== 'ara'}\">\n      <input\n        type=\"checkbox\"\n        id=\"togBtn\"\n        [disabled]=\"inPreview\"\n      />\n      <div\n        class=\"slider round\" [ngClass]=\"getDirectionClass()\"\n        [ngStyle]=\"{ 'background-color': toggleBackgroundColor }\"\n      >\n        <span class=\"on action-btn-text\">{{ labelOnValue }}</span>\n        <span class=\"off action-btn-text\">{{ labelOffValue }}</span>\n      </div>\n    </label>\n  </div>\n</div>\n","import { Component, Input, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-aggregate-function-fields',\n  templateUrl: './aggregate-function-fields.component.html',\n  styleUrls: ['./aggregate-function-fields.component.scss']\n})\nexport class AggregateFunctionFieldsComponent {\n  @Input() question: any = {};\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  placeholder: string = '';\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  @Input() inPreview:boolean=false;\n  displayQuestion:string='';\n\n  ngOnInit() {\n    this.valueAssigned();  \n    this.getQuestion();  \n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {     \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );      \n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {      \n      this.displayQuestion = '';\n    }    \n  }\n\n  valueAssigned() {\n    this.count = this.question?.element.count;\n    this.required = this.question?.element.required;\n    this.hint = this.question?.element.hint;    \n    this.placeholder = this.question?.element?.formElement?.appearance?.placeholder || '';\n  }\n\n}\n","<div class=\"px-3\">\n    <div  class=\"input-wrapper mb-2\">\n      <label class=\"previewQuestion\">{{ displayQuestion }}</label>&nbsp;\n      <span class=\"text-danger\" *ngIf=\"required\">*</span>\n      <div class=\"svg-wrapper  mb-2 hintIcon\" [attr.data-title]=\"hint\" *ngIf=\"hint\">\n        <svg class=\"hintSvg\" viewBox=\"0 0 30 30\"  xmlns=\"http://www.w3.org/2000/svg\">\n          <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n          <path d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n          <path d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n        </svg>\n      </div>\n    </div>\n    \n    <input\n      type=\"text\"\n      class=\"form-control mb-2 height\"\n      [placeholder]=\"placeholder\"\n      [disabled]=\"inPreview\"\n    />\n  </div>\n  ","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n  selector: 'lib-currency-fields',\n  templateUrl: './currency-fields.component.html',\n  styleUrls: ['./currency-fields.component.scss']\n})\nexport class CurrencyFieldsComponent {\n\n  @Input() question: any = {};\n  answer: string = '';\n  count: number = 0;\n  required: boolean = false;\n  hint: string = '';\n  placeholder: string = '';\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  displayQuestion:string='';\n  @Input() inPreview:boolean=false;\n  @Output() answerChange = new EventEmitter<any>();\n  enteredAmount!: string;\n  currencySymbol:string = '';\n  decimalPrecision!:number;\n  symbolPosition: string = 'Before the value';\n  thousandSeparator!:boolean;\n  min!: number;\n  max!: number;\n\n  ngOnInit() {\n    this.valueAssigned();  \n    this.getQuestion();  \n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getQuestion();\n    }\n  }\n\n  getQuestion() {     \n    if (this.translations && this.question?.element?.id) {\n      const translation = this.translations.find((t: any) =>\n        t.elementId === this.question.element.id &&\n        t.entityType === 'QUESTION' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );      \n      this.displayQuestion = translation ? translation.translatedText : '';      \n    } else {      \n      this.displayQuestion = '';\n    }    \n  }\n\n  valueAssigned() {\n    this.count = this.question.count;\n    this.required = this.question.required;\n    this.hint = this.question.hint;\n    this.placeholder = this.question.element.formElement?.appearance?.placeholder || '';\n    this.currencySymbol = this.question.element.formElement?.appearance?.currencySymbol;\n    this.decimalPrecision = this.question.element.formElement?.appearance?.decimalPrecision;\n    this.symbolPosition = this.question.element.formElement?.appearance?.symbolPosition || 'Before the value';\n    this.thousandSeparator = this.question.element.formElement?.appearance?.thousandSeparator;\n    this.min = this.question.element.formElement.validation.min;\n    this.max = this.question.element.formElement.validation.max;\n  }\n\n  upateAnswer(event:any){\n    this.answerChange.emit(event.target.value);\n  }\n\n  preventNumberScroll(event: WheelEvent) {\n    if (document.activeElement === event.target) {\n      event.preventDefault();\n    }\n  }\n  \n}\n","<div class=\"px-3 mb-2\">\n    <div  class=\"input-wrapper mb-2\">\n      <label class=\"previewQuestion\">{{ displayQuestion }}</label>&nbsp;\n      <span class=\"text-danger\" *ngIf=\"required\">*</span>\n      <div class=\"svg-wrapper  mb-2 hintIcon\" [attr.data-title]=\"hint\" *ngIf=\"hint\">\n        <svg class=\"hintSvg\" viewBox=\"0 0 30 30\"  xmlns=\"http://www.w3.org/2000/svg\">\n          <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n          <path d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n          <path d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\" stroke=\"#323232\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n        </svg>\n      </div>\n    </div>\n    \n    <div class=\"currency-input inside\">\n        <span *ngIf=\"symbolPosition === 'Before the value'\" class=\"currency-symbol left\">\n          {{ currencySymbol }}\n        </span>\n    \n        <input\n        type=\"text\"\n        class=\"form-control mb-2 height\"\n        [placeholder]=\"placeholder\"\n        [class.hide-spin-buttons]=\"true\"\n        [(ngModel)]=\"enteredAmount\"\n        [attr.min]=\"min\"\n        [attr.max]=\"max\"\n        (wheel)=\"preventNumberScroll($event)\"\n        [disabled]=\"inPreview\"\n        />\n    \n        <span *ngIf=\"symbolPosition === 'After the value'\" class=\"currency-symbol right\">\n            {{ currencySymbol }}\n        </span>\n    \n      </div>\n  </div>\n  ","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  Input,\n  ViewChild,\n} from '@angular/core';\nimport {\n  DomSanitizer,\n  SafeHtml,\n  SafeResourceUrl,\n} from '@angular/platform-browser';\n\n@Component({\n  selector: 'lib-iframe-fields',\n  templateUrl: './iframe-fields.component.html',\n  styleUrls: ['./iframe-fields.component.scss'],\n})\nexport class IframeFieldsComponent implements AfterViewInit {\n  @Input() question: any = {};\n  @Input() translations: any;\n  @Input() selectedLanguage: string = '';\n  @Input() inPreview: boolean = false;\n  height!: string;\n  width!: string;\n  contentType: string = '';\n  htmlContent: string = '';\n  cssContent: string = '';\n  scriptContent: string = '';\n  urlContent: string = '';\n  count!: number;\n\n  safeHtmlContent!: SafeHtml;\n  safeUrl!: SafeResourceUrl;\n\n  embeddableDomains = [\n    // Generic sites that usually allow embedding\n    'youtube.com',\n    'youtu.be',\n    'vimeo.com',\n    'player.vimeo.com',\n    'maps.google.com',\n    'www.google.com/maps',\n    'openstreetmap.org',\n    'codesandbox.io',\n    'stackblitz.com',\n    'jsfiddle.net',\n    'codepen.io',\n    'spotify.com',\n    'soundcloud.com',\n    'figma.com',\n    'canva.com',\n    'notion.so',\n    'facebook.com/plugins',\n    'instagram.com/p',\n    'twitter.com',\n  ];\n\n  constructor(private sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    this.valueAssigned();\n  }\n\n  ngAfterViewInit() {\n    if (this.contentType === 'HTML') {\n      setTimeout(() => this.renderHtml(), 0);\n    } else if (this.contentType === 'LINK') {\n      setTimeout(() => this.renderLink(), 0);\n    }\n  }\n\n  valueAssigned() {\n    this.count = this.question?.element.count;\n    this.width = this.question.element.formElement.appearance.width\n      ? this.question.element.formElement.appearance.width + 'px'\n      : '100%';\n    this.height = this.question.element.formElement.appearance.height\n      ? this.question.element.formElement.appearance.height + 'px'\n      : '100%';\n    this.contentType =\n      this.question.element.formElement.iFrameProperties.contentType;\n    this.htmlContent =\n      this.question.element.formElement.iFrameProperties.html.content;\n    this.cssContent =\n      this.question.element.formElement.iFrameProperties.style.css;\n    this.scriptContent =\n      this.question.element.formElement.iFrameProperties.script.code;\n    this.urlContent = this.question.element.formElement.iFrameProperties.url;\n  }\n  @ViewChild('iframeRef') iframeRef!: ElementRef<HTMLIFrameElement>;\n  /** Render HTML with dynamic CSS */\n  renderHtml() {\n    const iframe = this.iframeRef?.nativeElement;\n\n    if (!iframe) return;\n\n    const iframeDoc = iframe.contentDocument || iframe.contentWindow?.document;\n\n    if (iframeDoc) {\n      // Build the complete HTML content to inject into the iframe\n      const safeHtml = `\n        <html>\n          <head>\n            <style>${this.cssContent || ''}</style>\n          </head>\n          <body>\n            ${this.htmlContent || ''}\n            <script>\n              (function(localStorage) {\n                try {\n                  ${\n                    this.isSafeScript(this.scriptContent)\n                      ? this.scriptContent\n                      : ''\n                  }\n                } catch (e) {\n                  document.body.innerHTML += '<p style=\"color:red\">Script Error: ' + e.message + '</p>';\n                }\n              })(window.localStorage);\n            </script>\n          </body>\n        </html>\n      `;\n\n      iframeDoc.open();\n      iframeDoc.write(safeHtml);\n      iframeDoc.close();\n    }\n  }\n\n  renderLink() {\n    if (!this.urlContent) {\n      this.safeUrl = '';\n      return;\n    }\n\n    const url = this.urlContent.trim();\n\n    // Check if URL is valid\n    if (!this.isValidUrl(url)) {\n      console.warn('Invalid URL format');\n      this.safeUrl = '';\n      return;\n    }\n\n    // Check if embeddable host\n    if (!this.isEmbeddableUrl(url)) {\n      console.warn('This website may not allow embedding');\n      // You can still LET it try\n      // Or block it completely\n      // For now: allow but warn\n    }\n\n    const embedUrl = this.convertToEmbedUrl(url);\n    this.safeUrl = this.sanitizeUrl(embedUrl);\n  }\n\n  isValidUrl(url: string): boolean {\n    try {\n      new URL(url);\n      return true;\n    } catch {\n      return false;\n    }\n  }\n\n  /** Sanitize URLs for iframes */\n  sanitizeUrl(url: string): SafeResourceUrl {\n    return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n  }\n\n  isEmbeddableUrl(url: string): boolean {\n    try {\n      const parsed = new URL(url);\n\n      return this.embeddableDomains.some((domain) =>\n        parsed.hostname.includes(domain)\n      );\n    } catch {\n      return false;\n    }\n  }\n\n  convertToEmbedUrl(url: string): string {\n    try {\n      const parsed = new URL(url);\n\n      // YouTube\n      if (\n        parsed.hostname.includes('youtube.com') &&\n        parsed.searchParams.get('v')\n      ) {\n        return `https://www.youtube.com/embed/${parsed.searchParams.get('v')}`;\n      }\n      if (parsed.hostname.includes('youtu.be')) {\n        return `https://www.youtube.com/embed/${parsed.pathname.substring(1)}`;\n      }\n\n      // Vimeo\n      if (parsed.hostname.includes('vimeo.com')) {\n        const videoId = parsed.pathname.split('/')[1];\n        return `https://player.vimeo.com/video/${videoId}`;\n      }\n\n      // Google Maps (no API key needed)\n      if (\n        parsed.hostname.includes('google.com') &&\n        parsed.pathname.startsWith('/maps')\n      ) {\n        if (parsed.pathname.includes('/maps/embed')) return url;\n\n        return `https://www.google.com/maps/embed?${parsed.searchParams.toString()}`;\n      }\n\n      return url;\n    } catch (e) {\n      return url;\n    }\n  }\n\n  /** Basic script validation to prevent unsafe operations */\n  isSafeScript(code: string): boolean {\n    const unsafePatterns = [\n      /window\\.parent/,\n      /document\\.cookie/,\n      /fetch\\(/,\n      /XMLHttpRequest/,\n      /eval\\(/,\n      /new Function/,\n      /setTimeout|setInterval/,\n    ];\n\n    return !unsafePatterns.some((pattern) => pattern.test(code));\n  }\n}\n","<div class=\"custom-embed\"\n     [style.width]=\"width\"\n     [style.height]=\"height\">\n\n  <ng-container [ngSwitch]=\"contentType\">\n\n    <!-- HTML, CSS, and Script rendered together -->\n    <iframe\n      *ngSwitchCase=\"'HTML'\"\n      #iframeRef\n      sandbox=\"allow-scripts allow-same-origin\"\n      [style.width]=\"width\"\n      [style.height]=\"height\"\n      frameborder=\"0\"\n    ></iframe>\n\n    <!-- Link Embed -->\n     <div *ngSwitchCase=\"'LINK'\">\n     <iframe\n     *ngIf=\"safeUrl\"\n     [src]=\"safeUrl\"\n     [style.width]=\"width\"\n     [style.height]=\"height\"\n     frameborder=\"0\"\n     allowfullscreen>\n   </iframe>\n     </div>\n    \n\n  </ng-container>\n</div>\n","import { Component, Injector, Input } from '@angular/core';\n\n@Component({\n  selector: 'lib-shared-form-element',\n  templateUrl: './shared-form-element.component.html',\n  styleUrls: ['./shared-form-element.component.scss']\n})\nexport class SharedFormElementComponent {\n  @Input() question: any = [];\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  @Input() acceptedLanguage: string ='eng';\n  @Input() grid: any;\n  componentToLoad: any;\n  injector!: Injector;\n  \n  ngOnInit(){\n    this.loadComponent();\n  }\n\n  questionClick(question:any){    \n  }\n\n\n  private async loadComponent(): Promise<void> {\n    this.componentToLoad = await this.loadFormElementsComponent();\n    this.injector = this.createInjector();\n  }\n\n  private async loadFormElementsComponent() {\n    const { RecursiveElementComponent } = await import('../recursive-element/recursive-element.component');\n    return RecursiveElementComponent;\n  }\n\n  private createInjector(): Injector {\n    return Injector.create({\n      providers: [\n        { provide: 'formElements', useValue: this.question.element?.childLogics },\n        { provide: 'selectedLanguage', useValue: this.acceptedLanguage },\n        { provide: 'translations', useValue: this.translations },\n        { provide: 'grid', useValue: this.grid }\n      ],\n    });\n  }\n}\n","<ng-container [ngSwitch]=\"question?.element?.formElement?.elementType\">\n  <div>\n    <lib-check-box-fields\n    *ngSwitchCase=\"'CHECK_BOX'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-check-box-fields>\n  </div>\n \n  <div>\n    <lib-date-time-fields\n    *ngSwitchCase=\"'DATE_TIME'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-date-time-fields>\n  </div>\n  \n  <div>\n    <lib-drop-down-fields\n    *ngSwitchCase=\"'DROP_DOWN'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-drop-down-fields>\n  </div>\n  \n  <div>\n    <lib-file-picker-fields\n    *ngSwitchCase=\"'FILE_PICKER'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-file-picker-fields>\n  </div>\n  \n  <div     *ngSwitchCase=\"'EMAIL'\"\n  class=\"questionContainer\" (click)=\"questionClick(question)\">\n    <lib-mail-fields\n    *ngSwitchCase=\"'EMAIL'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-mail-fields>\n  </div>\n  \n  <div>\n    <lib-mobile-fields\n    *ngSwitchCase=\"'MOBILE'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-mobile-fields>\n  </div>\n  \n  <div>\n    <lib-number-fields\n    *ngSwitchCase=\"'NUMBER'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-number-fields>\n  </div>\n  \n  <div>\n    <lib-password-fields\n    *ngSwitchCase=\"'PASSWORD'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-password-fields>\n  </div>\n  \n  <div>\n    <lib-radio-button-fields\n    *ngSwitchCase=\"'RADIO_BUTTON'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-radio-button-fields>\n  </div>\n \n  <div>\n    <lib-rich-text-editor-fields\n    *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-rich-text-editor-fields>\n  </div>\n  \n  <div>\n    <lib-selection-matrix-fields\n    *ngSwitchCase=\"'SELECTION_MATRIX'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-selection-matrix-fields>\n  </div>\n  \n  <div>\n    <lib-slider-fields\n    *ngSwitchCase=\"'SLIDER'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-slider-fields>\n  </div>\n  \n  <div>\n    <lib-terms-and-condition-fields\n    *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-terms-and-condition-fields>\n  </div>\n  \n  <div>\n    <lib-text-area-fields\n    *ngSwitchCase=\"'TEXT_AREA'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-text-area-fields>\n  </div>\n  \n  <div>\n    <lib-text-fields\n    *ngSwitchCase=\"'TEXT_BOX'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-text-fields>\n  </div>\n  \n  <div>\n    <lib-toggle-switch-fields\n    *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n    [question]=\"question\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    [inPreview]=\"true\"\n  ></lib-toggle-switch-fields>\n  </div>\n  \n  <div>\n    <lib-url-fields *ngSwitchCase=\"'URL'\" [question]=\"question\" [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\" [inPreview]=\"true\"></lib-url-fields>\n  </div>\n\n  <div>\n    <lib-currency-fields *ngSwitchCase=\"'CURRENCY'\" [question]=\"question\" [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\" [inPreview]=\"true\"></lib-currency-fields>\n  </div>\n\n  <div>\n    <lib-iframe-fields *ngSwitchCase=\"'IFRAME_WIDGET'\" [question]=\"question\" [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\" [inPreview]=\"true\"></lib-iframe-fields>\n  </div>\n\n  <div>\n    <lib-aggregate-function-fields *ngSwitchCase=\"'AGGREGATE_FUNCTION'\" [question]=\"question\" [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\" [inPreview]=\"true\"></lib-aggregate-function-fields>\n  </div>\n \n</ng-container>\n\n<ng-container *ngIf=\"question?.element?.childLogics\">\n  <ng-container *ngIf=\"componentToLoad\">\n    <ng-container *ngComponentOutlet=\"componentToLoad; \n                                      inputs: { formElements: question.element.childLogics, \n                                      selectedLanguage:acceptedLanguage,\n                                      translations:translations,\n                                      grid:grid\n                                                 }\"></ng-container>\n  </ng-container>\n</ng-container>\n","import { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';\nimport { isArray } from 'ngx-bootstrap/chronos';\n\n@Component({\n  selector: 'lib-recursive-element',\n  templateUrl: './recursive-element.component.html',\n  styleUrls: ['./recursive-element.component.scss']\n})\nexport class RecursiveElementComponent implements OnChanges{\n  @Input() formElements: any=[];\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  @Input() grid: any;\n  @Output() questionEmitter: EventEmitter<any> = new EventEmitter<any>();\n\n  ngOnChanges(){\n    if(!isArray(this.formElements)){\n      this.formElements=[];\n    }\n  }\n\n  emitQuestion(event:any){\n    this.questionEmitter.emit(event);\n  }\n}\n","<!-- <div *ngFor=\"let formElement of formElements\">\n  <lib-shared-form-element *ngIf=\"formElement\" [question]=\"formElement\" [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\" (questionEmitter)=\"emitQuestion($event)\"\n    [grid]=\"grid\"></lib-shared-form-element>\n\n  <div *ngIf=\"formElement.element?.childLogics\">\n    <lib-recursive-element *ngFor=\"let logic of formElement.element.childLogics\" [formElements]=\"logic.formElements\"\n      [translations]=\"translations\" [selectedLanguage]=\"selectedLanguage\" [grid]=\"grid\"></lib-recursive-element>\n  </div>\n\n  <ng-container *ngIf=\"formElement.entityType === 'SUBFORM'\">\n    <ng-container *ngFor=\"let row of grid?.rows\">\n        <ng-container *ngFor=\"let innergrid of row.grids\">\n            <ng-container *ngIf=\"innergrid.elementId === formElement?.element?.id\">\n                <lib-sub-form [subForm]=\"formElement.element\" [translations]=\"translations\"\n                    [selectedLanguage]=\"selectedLanguage\" [subFormGrids]=\"innergrid\"></lib-sub-form>\n            </ng-container>\n        </ng-container>\n    </ng-container>\n</ng-container>\n</div> -->\n\n\n<div *ngFor=\"let formElement of formElements\">\n  <lib-shared-form-element\n    *ngIf=\"formElement\"\n    [question]=\"formElement\"\n    [translations]=\"translations\"\n    [selectedLanguage]=\"selectedLanguage\"\n    (questionEmitter)=\"emitQuestion($event)\"\n  ></lib-shared-form-element>\n\n  <!-- Recursively child logics -->\n  <div *ngIf=\"formElement.element?.childLogics\">\n    <lib-recursive-element\n      *ngFor=\"let logic of formElement.element.childLogics\"\n      [formElements]=\"logic.formElements\"\n      [translations]=\"translations\"\n      [selectedLanguage]=\"selectedLanguage\"\n    ></lib-recursive-element>\n  </div>\n  \n</div>\n","import { Component, Injector, Input} from '@angular/core';\n\n@Component({\n  selector: 'lib-child-logic',\n  templateUrl: './child-logic.component.html',\n  styleUrls: ['./child-logic.component.scss']\n})\nexport class ChildLogicComponent {\n\nconstructor() {}\n\n  @Input() childLogics:any;\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  @Input() grid: any;\n  childLogicCache: { [key: string]: { component: Promise<any>, injector: Injector } } = {};\n  \n  ngOnInit(){\n  }\n\n  getComponentForChildLogics(childLogics: any, grid: any): { component: Promise<any>, injector: Injector } {\n    const key = JSON.stringify({childLogics, grid}); \n    if (!this.childLogicCache[key]) {\n      const component = this.loadSubFormComponent();\n      const injector = this.createInjector(childLogics, grid);\n      this.childLogicCache[key] = { component, injector };\n    }\n    return this.childLogicCache[key];\n  }\n private  async loadSubFormComponent() {\n    const { SubFormComponent } = await import('../sub-form/sub-form.component');\n    return SubFormComponent;\n  }\n\n  createInjector(childLogics: any, grid: any): Injector {\n    return Injector.create({\n      providers: [\n        { provide: 'subForm', useValue: childLogics },\n        { provide: 'subFormGrids', useValue: grid },\n        { provide: 'translations', useValue: this.translations },\n        { provide: 'selectedLanguage', useValue: this.selectedLanguage },\n      ],\n    });\n  }\n}\n","<div *ngFor=\"let logic of childLogics\">\n    <ng-container *ngIf=\"logic?.formElements\">\n        <div *ngFor=\"let formElement of logic?.formElements\">\n            <lib-recursive-element [formElements]=\"formElement\" [translations]=\"translations\"\n                [selectedLanguage]=\"selectedLanguage\" [grid]=\"grid\"></lib-recursive-element>\n\n            <ng-container *ngIf=\"formElement.entityType === 'SUBFORM'\">\n                <ng-container *ngFor=\"let row of grid?.rows\">\n                    <ng-container *ngFor=\"let innergrid of row.grids\">\n                        <ng-container *ngIf=\"innergrid.elementId === formElement?.element?.id\">\n                            <!-- <lib-sub-form [subForm]=\"formElement?.element\" [translations]=\"translations\"\n                                [selectedLanguage]=\"selectedLanguage\" [subFormGrids]=\"innergrid\"></lib-sub-form> -->\n                                <ng-container *ngIf=\"getComponentForChildLogics(formElement?.element, innergrid) as cached\">\n                                    <ng-container\n                                      *ngComponentOutlet=\"cached.component | async; injector: cached.injector\">\n                                    </ng-container>\n                                  </ng-container>\n                        </ng-container>\n                    </ng-container>\n                </ng-container>\n            </ng-container>\n        </div>\n    </ng-container>\n</div>\n<!-- \n\n<div *ngFor=\"let logic of childLogics\">\n    <ng-container *ngIf=\"logic?.formElements\">\n        <div *ngFor=\"let formElement of logic?.formElements\">\n            <lib-recursive-element\n            [formElements]=\"formElement\"\n            [translations]=\"translations\"\n            [selectedLanguage]=\"selectedLanguage\"\n            ></lib-recursive-element>\n        </div>\n    </ng-container>\n</div> -->","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n  selector: 'lib-preview-questions',\n  templateUrl: './preview-questions.component.html',\n  styleUrls: ['./preview-questions.component.scss']\n})\nexport class PreviewQuestionsComponent {\n\n  @Input() question: any;\n  @Input() grid: any;\n  @Input() translations:any;\n  @Input() selectedLanguage:string='';\n  @Output() questionEmitter: EventEmitter<any> = new EventEmitter<any>();\n\n  ngOnInit(){            \n  }\n\n  changeGrid(){    \n  }\n\n  emitQuestion(event:any){\n    this.questionEmitter.emit(event);\n  }\n}\n","<div>\n  <lib-recursive-element *ngIf=\"question?.element?.formElement\" [formElements]=\"[question]\"\n          [translations]=\"translations\"\n          [selectedLanguage]=\"selectedLanguage\"\n          (questionEmitter)=\"emitQuestion($event)\"\n          [grid]=\"grid\"\n    ></lib-recursive-element>\n  <lib-child-logic *ngIf=\"question?.element?.childLogics\" [childLogics]=\"question.element.childLogics\"\n          [translations]=\"translations\"\n          [selectedLanguage]=\"selectedLanguage\"\n          [grid]=\"grid\"\n    ></lib-child-logic>\n</div>","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Inject, Input, NgZone, Optional, Output, SimpleChanges } from '@angular/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { DraggedInnerData, Row } from '../drag-and-drop/drag-and-drop.model';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n  selector: 'lib-sub-form',\n  templateUrl: './sub-form.component.html',\n  styleUrls: ['./sub-form.component.scss']\n})\nexport class SubFormComponent {\n  @Input() subForm: any;\n  @Input() translations: any;\n  @Input() selectedLanguage: string = '';\n  @Input() subFormGrids: any;\n  @Input() gridIndex!: number;\n  @Output() subFormGridsChange = new EventEmitter<any[]>();\n\n\n  subFormTitle: string = '';\n  subFormDescription: string = '';\n  question: any;\n  isDragging: boolean = false;\n  colorPalette = [\n    '#4caf50', // Green\n    '#ff9800', // Orange\n    '#2196f3', // Blue\n    '#e91e63', // Pink\n    '#9c27b0', // Purple\n    '#673ab7', // Deep Purple\n    '#00bcd4', // Cyan\n    '#f44336', // Red\n    '#8bc34a', // Light Green\n    '#ffc107', // Amber\n    '#03a9f4', // Light Blue\n    '#607d8b'  // Blue Grey\n  ];\n  isResizing: boolean = false;\n  resizingQuestion: any = null;\n  initialMouseX: number = 0;\n  initialGridSize: number = 0;\n  gridsLength: number = 12;\n  currentgrids: any;\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    private zone: NgZone,\n    private sanitizer: DomSanitizer,\n    @Inject('subForm') @Optional() private injectedSubForm: any,\n    @Inject('subFormGrids') @Optional() private injectedSubFormGrids: any,\n    @Inject('translations') @Optional() private injectedTranslations: any,\n    @Inject('selectedLanguage') @Optional() private injectedSelectedLanguage: any\n  ) { }\n\n  ngOnInit() {\n    this.subForm = this.injectedSubForm ?? this.subForm;\n    this.subFormGrids = this.injectedSubFormGrids ?? this.subFormGrids;\n    this.translations = this.injectedTranslations ?? this.translations;\n    this.selectedLanguage = this.injectedSelectedLanguage ?? this.selectedLanguage;\n    this.getTitleAndDescription();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getTitleAndDescription();\n    }\n  }\n\n  startResizing(event: MouseEvent, question: any, grids: any, grid: any) {\n    this.isResizing = true;\n    this.resizingQuestion = question;\n    this.initialMouseX = event.clientX;\n    this.initialGridSize = grid.count;\n    this.gridsLength = grids.length;\n    this.currentgrids = grids;\n    this.isDragging = true;\n  }\n\n  @HostListener('window:mousemove', ['$event'])\n  resize(event: MouseEvent) {\n    if (!this.isResizing || !this.resizingQuestion || !this.isDragging) {\n      return;\n    }\n    const deltaX = event.clientX - this.initialMouseX;\n    const parentWidth = document.querySelector('.grid-container')?.clientWidth || 0;\n    const gridWidth = parentWidth / 12;\n    const gridChange = Math.round(deltaX / gridWidth);\n    let newGridSize = Math.max(1, Math.min(12 / this.gridsLength, this.initialGridSize + gridChange));\n    // Ensure total grids don't exceed 12\n    const totalCount = this.getTotalGridCount(this.currentgrids);\n    if (totalCount - this.resizingQuestion.element.count + newGridSize > 12) {\n      return; // Stop resizing if the limit is reached\n    }\n    this.zone.run(() => {\n      this.resizingQuestion.element.count = newGridSize;\n      this.updateRowGridCount(this.resizingQuestion?.element.id, newGridSize);\n      //this.updatePages(this.pages);\n    });\n  }\n\n  @HostListener('window:mouseup')\n  stopResizing() {\n    this.isDragging = false;\n    this.isResizing = false;\n    this.resizingQuestion = null;\n  }\n\n  getTotalGridCount(grids: any[]): number {\n    return grids?.reduce((total, grid) => total + (grid.count || 0), 0) || 0;\n  }\n\n  getTitleAndDescription() {\n    if (this.translations && this.subForm?.id) {\n      const titleTranslation = this.translations.find((t: any) =>\n        t.elementId === this.subForm.id &&\n        t.entityType === 'SUBFORM' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.subFormTitle = titleTranslation ? titleTranslation.translatedText : '';\n      const descriptionTranslation = this.translations.find((t: any) =>\n        t.elementId === this.subForm.id &&\n        t.entityType === 'SUBFORM' &&\n        t.attribute === 'DESCRIPTION' &&\n        t.language === this.selectedLanguage\n      );\n      this.subFormDescription = descriptionTranslation ? descriptionTranslation.translatedText : '';\n    } else {\n      this.subFormTitle = '';\n      this.subFormDescription = '';\n    }\n  }\n\n  questionClick(question: any) {\n    this.question = question;\n  }\n\n  getColorFromPalette(index: number): string {\n    return this.colorPalette[index % this.colorPalette.length];\n  }\n\n  onDragStart(event: any): void {\n    const innerRowIndex = event.source.data.innerRowIndex;\n    // Find the specific row based on rowId\n    const targetRow = this.subFormGrids.rows[innerRowIndex];\n\n    if (!targetRow) {\n      return;\n    }\n    // Check if the target row has grids with length greater than 1\n    if (targetRow.grids.length <= 1) {\n      return;\n    }\n    const newRows: any[] = [];\n    newRows.push({ id: uuidv4(), grids: [] });\n\n    this.subFormGrids.rows.forEach((row: any) => {\n      newRows.push(row);\n\n      const newRow = { id: uuidv4(), grids: [] };\n      newRows.push(newRow);\n\n    });\n    this.subFormGrids.rows = newRows;\n\n    this.isDragging = true;\n    this.cdr.detectChanges();\n  }\n\n\n  drop(event: CdkDragDrop<any>) {\n    const dragData: DraggedInnerData = event.item.data;\n    if (!dragData || !dragData.type) {\n      console.error('Invalid drag data');\n      return;\n    }\n\n    switch (dragData.type) {\n      case 'row':\n        this.handleRowDrop(dragData, event);\n        break;\n      case 'grid':\n        this.handleGridDrop(dragData, event);\n        break;\n      default:\n        console.error('Unknown drag type:', dragData.type);\n    }\n  }\n\n  handleGridDrop(dragData: DraggedInnerData, event: CdkDragDrop<any>) {\n    \n    const draggedElement = dragData.data;\n    const draggedData = event.item.data;\n    const sourceContainerData = event.previousContainer.data.id;\n    const targetContainerData = event.container.data.id;\n\n    if (!draggedData || !sourceContainerData || !targetContainerData) {\n      console.error('Invalid drag-and-drop data', { draggedData, sourceContainerData, targetContainerData });\n      this.removeEmptyRows();\n      return;\n    }\n    if (event.previousContainer.data === event.container.data) {\n      // Reorder grids within the same row\n      const targetRow = this.subFormGrids.rows.find((row: any) => row.id === sourceContainerData);\n      moveItemInArray(targetRow.grids, event.previousIndex, event.currentIndex);\n    } else {\n      // Move grid to a different row\n      const previousRow = this.subFormGrids.rows.find((row: any) => row.id === sourceContainerData);\n      const targetRow = this.subFormGrids.rows.find((row: any) => row.id === targetContainerData);\n      const previousIndex = this.subFormGrids.rows.findIndex((row: any) => row.id === sourceContainerData);\n      const targetIndex = this.subFormGrids.rows.findIndex((row: any) => row.id === targetContainerData);\n      this.handleGridReorder(draggedElement, previousRow, targetRow, previousIndex, targetIndex);\n    }\n\n  }\n  handleGridReorder(\n    draggedElement: any,\n    previousRow: Row,\n    targetRow: Row,\n    previousIndex: number,\n    currentIndex: number\n  ) {\n    if (!previousRow || !targetRow || !draggedElement) {\n      console.error('Invalid inputs for handleGridReorder');\n      return;\n    }\n\n    const totalGridCount = targetRow.grids.reduce((sum, grid: any) => sum + grid.count, 0);\n\n    // Check if adding the draggedElement count exceeds the limit (e.g., 12)\n    if (totalGridCount + draggedElement.count > 12 && previousRow != targetRow) {\n      console.error('Cannot reorder: Total grid count exceeds the limit');\n      return;\n    }\n\n    // Remove the grid from the previous row\n    const gridIndex = previousRow.grids.findIndex((grid: any) => grid.elementId === draggedElement.elementId);\n    const gridItem = previousRow.grids.splice(gridIndex, 1)[0];\n\n    // Add the grid to the target row at the specified index\n    targetRow.grids.splice(targetRow.grids.length, 0, gridItem);\n    this.removeEmptyRows();\n  }\n  removeEmptyRows(): void {\n    this.subFormGrids.rows = this.subFormGrids.rows.filter((row: any) => row.grids.length > 0);\n    this.subFormGridsChange.emit(this.subFormGrids);\n  }\n\n  handleRowDrop(dragData: DraggedInnerData, event: CdkDragDrop<any>) {\n    const previousIndex = event.previousIndex;\n    const currentIndex = event.currentIndex;\n    const movedRow = this.subFormGrids.rows[previousIndex];\n    this.subFormGrids.rows.splice(previousIndex, 1);\n    this.subFormGrids.rows.splice(currentIndex, 0, movedRow);\n    this.updateSubFormRow(this.subFormGrids);\n  }\n\n  updateSubFormRow(value: any[]) {\n    this.subFormGrids = value;\n    this.subFormGridsChange.emit(this.subFormGrids);\n  }\n\n  updateRowGridCount(questionId: string, newCount: number) {\n    this.subFormGrids.rows.forEach((item: any) => {\n      item.grids.forEach((grid: any) => {\n        if (grid.elementId === questionId) {\n          grid.count = newCount;\n        }\n      });\n    });\n    this.updateSubFormRow(this.subFormGrids);\n  }\n\n  connectedLists(subFormId: string): string[] {\n    const connected: any = [];\n    this.subFormGrids?.rows.forEach((row: any, rowIndex: number) => {\n      connected.push(`gridData-${subFormId}-${rowIndex}`);\n      connected.push(`rowData-${subFormId}-${rowIndex}`);\n    });\n\n    return connected;\n  }\n\n  getSanitizedContent(): SafeHtml {\n    return this.sanitizer.bypassSecurityTrustHtml(this.subFormDescription);\n  }\n\n  getRowGridColor(cellIndex: number, grids: any[]): string {\n    if (!grids || grids.length === 0) return '#e0e0e0';\n\n    let cumulativeCount = 0;\n\n    for (let gridIndex = 0; gridIndex < grids.length; gridIndex++) {\n      const gridCount = grids[gridIndex]?.count || 0;\n      cumulativeCount += gridCount;\n\n      if (cellIndex < cumulativeCount) {\n        return this.colorPalette[gridIndex % this.colorPalette.length];\n      }\n    }\n\n    return '#e0e0e0';\n  }\n}\n","<div class=\"outer-container mb-4\">\n  <div class=\"body\">\n    <div class=\"tab-content pt-4 pb-3 px-3\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n      <p class=\"sectionTitle\">{{ subFormTitle }}</p>\n      <p [innerHTML]=\"getSanitizedContent()\" class=\"description mb-5\"></p>\n\n      <div cdkScrollable>\n        <ng-container *ngIf=\"(subForm.property.subFormStructure == 'multiple'\n              && (subForm.property.subFormType==='table' || subForm.property.subFormType==='inline'))\">\n          <lib-multiple-subform [subForm]=\"subForm\" [translations]=\"translations\" [subFormGrids]=\"subFormGrids\"\n            [selectedLanguage]=\"selectedLanguage\"\n            (subFormGridsChange)=\"updateSubFormRow($event)\"></lib-multiple-subform>\n        </ng-container>\n\n        <ng-container *ngIf=\"(subForm.property.subFormStructure == 'single')\n         || (subForm.property.subFormStructure === 'multiple' && subForm.property.subFormType==='card')\">\n          <div *ngFor=\"let innerRow of subFormGrids.rows; let innerRowIndex = index\" class=\"row-item\" cdkDrag\n            [cdkDragData]=\"{ type: 'row', id: innerRow?.id, data: innerRow, rowIndex: innerRowIndex }\" cdkDropList\n            [cdkDropListData]=\"{ id: innerRow?.id, rowIndex: innerRowIndex }\" [cdkDropListConnectedTo]=\"connectedLists(subForm?.id)\"\n            (cdkDropListDropped)=\"drop($event)\" [id]=\"'rowData-' + subForm?.id + '-' + innerRowIndex\">\n\n            <div class=\"rowGridIndicator\" *ngIf=\"subFormGrids.rows[innerRowIndex]?.grids?.length > 1\">\n              <div *ngFor=\"let grid of [].constructor(12); let i = index\" class=\"rowGridCell\" [ngStyle]=\"{\n                  'background-color': getRowGridColor(i, subFormGrids.rows[innerRowIndex]?.grids)\n              }\">\n              </div>\n            </div>\n            <img src=\"/assets/icons/drag_icon.png\" class=\"rowDragIcon\" alt=\"dragIcon\" cdkDragHandle>\n\n            <div class=\"grid-container\" [id]=\"'gridData-' + subForm?.id + '-' + innerRowIndex\" cdkDropList\n              [cdkDropListData]=\"{ id: innerRow.id, innerRowIndex: innerRowIndex }\"\n              [cdkDropListConnectedTo]=\"connectedLists(subForm?.id)\" (cdkDropListDropped)=\"drop($event)\">\n\n              <ng-container *ngFor=\"let innerGrid of innerRow.grids; let innerGridIndex = index\">\n                <ng-container *ngIf=\"innerGrid.entityType === 'QUESTION'\">\n                  <ng-container *ngFor=\"let formElement of subForm.formElements\">\n                    <ng-container *ngIf=\"innerGrid.elementId === formElement.element?.id\">\n                      <div\n                        [ngStyle]=\"{'width.%': (innerGrid.count/innerRow.grids.length) * (100 / (12/innerRow.grids.length))}\"\n                        class=\"questionContainer\" (mousedown)=\"questionClick(formElement)\" cdkDrag\n                        [cdkDragData]=\"{ type: 'grid', id:innerRow.id, data: innerGrid, innerRowIndex, innerGridIndex}\"\n                        (cdkDragStarted)=\"onDragStart($event)\">\n\n                        <div *ngIf=\"innerRow.grids?.length > 1\" class=\"colorIndicator\"\n                          [ngStyle]=\"{'background-color': getColorFromPalette(innerGridIndex)}\">\n                        </div>\n                        <img src=\"/assets/icons/drag_icon.png\" class=\"dragIcon\" alt=\"dragIcon\" cdkDragHandle>\n\n                        <div class=\"gridIndicator\" *ngIf=\"innerRow.grids.length == 1\">\n                          <div *ngFor=\"let grids of [].constructor(12); let i = index\"\n                            [class.active]=\"i < (innerGrid.count)\" class=\"gridCell\">\n                          </div>\n                        </div>\n\n                        <lib-preview-questions [question]=\"formElement\" [translations]=\"translations\"\n                          [selectedLanguage]=\"selectedLanguage\"></lib-preview-questions>\n\n                        <div class=\"gridIconContainer\"\n                          (mousedown)=\"startResizing($event, formElement, innerRow.grids,innerGrid)\">\n                          <img src=\"/assets/icons/grid_icon.png\" class=\"gridIcon\" alt=\"gridIcon\">\n                        </div>\n                      </div>\n\n                    </ng-container>\n                  </ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"innerGrid.entityType === 'SECTION'\">\n\n                  <ng-container *ngFor=\"let section of subForm.formElements\">\n\n                    <ng-container *ngIf=\"innerGrid.elementId===section?.element?.id\">\n                      <div\n                        [ngStyle]=\"{'width.%': (innerGrid.count/innerRow.grids.length) * (100 / (12/innerRow.grids.length))}\"\n                        class=\"questionContainer\" (mousedown)=\"questionClick(section)\"\n                         cdkDrag\n                        [cdkDragData]=\"{ type: 'grid', id: innerRow.id, data: innerGrid, innerRowIndex, innerGridIndex}\"\n                        (cdkDragStarted)=\"onDragStart($event)\">\n                        <div\n                            *ngIf=\"innerRow.grids?.length > 1\"\n                            class=\"colorIndicator\"\n                            [ngStyle]=\"{'background-color': getColorFromPalette(gridIndex)}\">\n                        </div>\n                        <img src=\"/assets/icons/drag_icon.png\" class=\"dragIcon\" alt=\"dragIcon\" cdkDragHandle>\n\n\n                        <div class=\"gridIndicator\"  *ngIf=\"innerRow.grids.length == 1\">\n                          <div *ngFor=\"let grids of [].constructor(12); let i = index\"\n                            [class.active]=\"i < (innerGrid.count)\" class=\"gridCell\">\n                          </div>\n                        </div>\n\n                      <lib-section-fields [section]=\"section.element\" [translations]=\"translations\"\n                        [selectedLanguage]=\"selectedLanguage\"></lib-section-fields>\n\n                        <div class=\"gridIconContainer\"  (mousedown)=\"startResizing($event, section.elemen, innerRow.grids,innerGrid)\">\n                          <img src=\"/assets/icons/grid_icon.png\" class=\"gridIcon\" alt=\"gridIcon\">\n                        </div>\n                      </div>\n\n                    </ng-container>\n                  </ng-container>\n                </ng-container>\n              </ng-container>\n\n              <div *ngIf=\"innerRow && getTotalGridCount(innerRow.grids) < 12\" class=\"placeholder-grid\"\n              [ngStyle]=\"{'width.%': (12- getTotalGridCount(innerRow?.grids)/100)}\">\n              <div class=\"example-custom-placeholder\">\n                <p class=\"mb-0\">Drag and drop your element here</p>\n              </div>\n            </div>\n\n            </div>\n          </div>\n        </ng-container>\n      </div>\n    </div>\n  </div>\n</div>\n","import { CdkDragDrop, moveItemInArray} from '@angular/cdk/drag-drop';\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, NgZone, Output, SimpleChanges } from '@angular/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { DraggedInnerData, Row } from '../drag-and-drop/drag-and-drop.model';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n  selector: 'lib-question-group',\n  templateUrl: './question-group.component.html',\n  styleUrls: ['./question-group.component.scss']\n})\nexport class QuestionGroupComponent {\n  @Input() questionGroup: any;\n  @Input() translations: any;\n  @Input() selectedLanguage: string = '';\n  @Input() questionGroupGrids: any;\n  @Input() gridIndex!: number;\n  @Output() subFormGridsChange = new EventEmitter<any[]>();\n\n\n  questionGroupTitle: string = '';\n  questionGroupDescription: string = '';\n  question: any;\n  isDragging: boolean = false;\n  colorPalette = [\n    '#4caf50', // Green\n    '#ff9800', // Orange\n    '#2196f3', // Blue\n    '#e91e63', // Pink\n    '#9c27b0', // Purple\n    '#673ab7', // Deep Purple\n    '#00bcd4', // Cyan\n    '#f44336', // Red\n    '#8bc34a', // Light Green\n    '#ffc107', // Amber\n    '#03a9f4', // Light Blue\n    '#607d8b'  // Blue Grey\n  ];\n  isResizing: boolean = false;\n  resizingQuestion: any = null;\n  initialMouseX: number = 0;\n  initialGridSize: number = 0;\n  gridsLength: number = 12;\n  currentgrids: any;\n\n  constructor(private cdr: ChangeDetectorRef, private zone: NgZone,private sanitizer: DomSanitizer\n  ) { }\n\n  ngOnInit() {        \n    this.getTitleAndDescription();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getTitleAndDescription();\n    }\n  }\n\n  startResizing(event: MouseEvent, question: any, grids: any,grid:any) {\n    this.isResizing = true;\n    this.resizingQuestion = question;\n    this.initialMouseX = event.clientX;\n    this.initialGridSize = grid.count;\n    this.gridsLength = grids.length;\n    this.currentgrids = grids;\n    this.isDragging = true;\n  }\n\n  @HostListener('window:mousemove', ['$event'])\n  resize(event: MouseEvent) {\n    if (!this.isResizing || !this.resizingQuestion || !this.isDragging) {\n      return;\n    }\n    const deltaX = event.clientX - this.initialMouseX;\n    const parentWidth = document.querySelector('.grid-container')?.clientWidth || 0;\n    const gridWidth = parentWidth / 12;\n    const gridChange = Math.round(deltaX / gridWidth);\n    let newGridSize = Math.max(1, Math.min(12 / this.gridsLength, this.initialGridSize + gridChange));\n    // Ensure total grids don't exceed 12\n    const totalCount = this.getTotalGridCount(this.currentgrids);\n    if (totalCount - this.resizingQuestion.element.count + newGridSize > 12) {\n      return; // Stop resizing if the limit is reached\n    }\n    this.zone.run(() => {\n      this.resizingQuestion.element.count = newGridSize;\n      this.updateRowGridCount(this.resizingQuestion?.element.id, newGridSize);\n      //this.updatePages(this.pages);\n    });\n  }\n\n  @HostListener('window:mouseup')\n  stopResizing() {\n    this.isDragging = false;\n    this.isResizing = false;\n    this.resizingQuestion = null;\n  }\n\n  getTotalGridCount(grids: any[]): number {\n    return grids?.reduce((total, grid) => total + (grid.count || 0), 0) || 0;\n  }\n\n  getTitleAndDescription() {\n    if (this.translations && this.questionGroup?.id) {\n      const titleTranslation = this.translations.find((t: any) =>\n        t.elementId === this.questionGroup.id &&\n        t.entityType === 'QUESTION_GROUP' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.questionGroupTitle = titleTranslation ? titleTranslation.translatedText : '';\n      const descriptionTranslation = this.translations.find((t: any) =>\n        t.elementId === this.questionGroup.id &&\n        t.entityType === 'QUESTION_GROUP' &&\n        t.attribute === 'DESCRIPTION' &&\n        t.language === this.selectedLanguage\n      );\n      this.questionGroupDescription = descriptionTranslation ? descriptionTranslation.translatedText : '';\n    } else {\n      this.questionGroupTitle = '';\n      this.questionGroupDescription = '';\n    }\n  }\n\n  questionClick(question: any) {\n    this.question = question;\n  }\n\n  getColorFromPalette(index: number): string {\n    return this.colorPalette[index % this.colorPalette.length];\n  }\n\n  onDragStart(event: any): void {\n    const innerRowIndex = event.source.data.innerRowIndex;\n    // Find the specific row based on rowId\n    const targetRow = this.questionGroupGrids.rows[innerRowIndex];    \n    if (!targetRow) {\n      return;\n    }\n    // Check if the target row has grids with length greater than 1\n    if (targetRow.grids.length <= 1) {\n      return;\n    }\n    const newRows: any[] = [];\n    newRows.push({ id: uuidv4(), grids: [] });\n\n    this.questionGroupGrids.rows.forEach((row: any) => {\n      newRows.push(row);\n\n      const newRow = { id: uuidv4(), grids: [] };\n      newRows.push(newRow);\n\n    });\n    this.questionGroupGrids.rows = newRows;    \n    this.isDragging = true;\n    this.cdr.detectChanges();\n  }\n\n\n  drop(event: CdkDragDrop<any>) {\n    const dragData: DraggedInnerData = event.item.data;\n    if (!dragData || !dragData.type) {\n      console.error('Invalid drag data');\n      return;\n    }    \n    switch (dragData.type) {\n      case 'row':\n        this.handleRowDrop(dragData, event);\n        break;\n      case 'grid':\n        this.handleGridDrop(dragData, event);\n        break;\n      default:\n        console.error('Unknown drag type:', dragData.type);\n    }\n  }\n\n  handleGridDrop(dragData: DraggedInnerData, event: CdkDragDrop<any>) {        \n    const draggedElement = dragData.data;\n    const draggedData = event.item.data;\n    const sourceContainerData = event.previousContainer.data.id;\n    const targetContainerData = event.container.data.id;\n    \n    if (!draggedData || !sourceContainerData || !targetContainerData) {\n      console.error('Invalid drag-and-drop data', { draggedData, sourceContainerData, targetContainerData });\n      this.removeEmptyRows();\n      return;\n    }\n    if (event.previousContainer.data === event.container.data) {\n      // Reorder grids within the same row\n      const targetRow = this.questionGroupGrids.rows.find((row: any) => row.id === sourceContainerData);\n      moveItemInArray(targetRow.grids, event.previousIndex, event.currentIndex);      \n    } else {\n      // Move grid to a different row\n      const previousRow = this.questionGroupGrids.rows.find((row: any) => row.id === sourceContainerData);\n      const targetRow = this.questionGroupGrids.rows.find((row: any) => row.id === targetContainerData);\n      const previousIndex = this.questionGroupGrids.rows.findIndex((row: any) => row.id === sourceContainerData);\n      const targetIndex = this.questionGroupGrids.rows.findIndex((row: any) => row.id === targetContainerData);\n      this.handleGridReorder(draggedElement, previousRow, targetRow, previousIndex, targetIndex);      \n    }\n    this.removeEmptyRows();\n\n  }\n  handleGridReorder(\n    draggedElement: any,\n    previousRow: Row,\n    targetRow: Row,\n    previousIndex: number,\n    currentIndex: number\n  ) {\n    if (!previousRow || !targetRow || !draggedElement) {\n      console.error('Invalid inputs for handleGridReorder');\n      return;\n    }\n\n    const totalGridCount = targetRow.grids.reduce((sum, grid: any) => sum + grid.count, 0);\n\n    // Check if adding the draggedElement count exceeds the limit (e.g., 12)\n    if (totalGridCount + draggedElement.count > 12 && previousRow != targetRow) {\n      console.error('Cannot reorder: Total grid count exceeds the limit');\n      return;\n    }\n\n    // Remove the grid from the previous row\n    const gridIndex = previousRow.grids.findIndex((grid: any) => grid.elementId === draggedElement.elementId);\n    const gridItem = previousRow.grids.splice(gridIndex, 1)[0];\n\n    // Add the grid to the target row at the specified index\n    targetRow.grids.splice(targetRow.grids.length, 0, gridItem);\n    this.removeEmptyRows();    \n  }\n  removeEmptyRows(): void {\n    this.questionGroupGrids.rows = this.questionGroupGrids.rows.filter((row:any)=> row.grids.length > 0);\n    this.subFormGridsChange.emit(this.questionGroupGrids);\n  }\n\n  handleRowDrop(dragData: DraggedInnerData, event: CdkDragDrop<any>) {\n\n    const previousIndex = event.previousIndex;\n    const currentIndex = event.currentIndex;\n    const movedRow = this.questionGroupGrids.rows[previousIndex];\n\n    this.questionGroupGrids.rows.splice(previousIndex, 1);\n    this.questionGroupGrids.rows.splice(currentIndex, 0, movedRow);    \n    this.updateSubFormRow(this.questionGroupGrids);\n  }\n\n  \n\n  updateSubFormRow(value: any[]) {\n    this.questionGroupGrids = value;\n    this.subFormGridsChange.emit(this.questionGroupGrids);\n  }\n\n  updateRowGridCount(questionId: string, newCount: number) {\n    this.questionGroupGrids.rows.forEach((item: any) => {\n      item.grids.forEach((grid: any) => {\n        if (grid.elementId === questionId) {\n          grid.count = newCount;\n        }\n      });\n    });\n    this.updateSubFormRow(this.questionGroupGrids);\n  }\n\n  connectedLists(questionGroupId: string): string[] {\n    const connected: any = [];\n      this.questionGroupGrids?.rows.forEach((row: any, rowIndex: number) => {\n          connected.push(`gridData-${questionGroupId}-${rowIndex}`);\n          connected.push(`rowData-${questionGroupId}-${rowIndex}`);\n      });\n    \n    return connected;\n  }\n\n  getRowGridColor(cellIndex: number, grids: any[]): string {\n    if (!grids || grids.length === 0) return '#e0e0e0'; // Default color for inactive cells\n  \n    let cumulativeCount = 0;\n  \n    for (let gridIndex = 0; gridIndex < grids.length; gridIndex++) {\n      const gridCount = grids[gridIndex]?.count || 0;\n      cumulativeCount += gridCount;\n  \n      if (cellIndex < cumulativeCount) {\n        // Return the color corresponding to the grid index\n        return this.colorPalette[gridIndex % this.colorPalette.length];\n      }\n    }\n  \n    return '#e0e0e0'; // Default color if no match found\n  }\n\n  getSanitizedContent(): SafeHtml {\n    return this.sanitizer.bypassSecurityTrustHtml(this.questionGroupDescription);\n  }\n\n}\n","<div class=\"outer-container mb-4\">\n    <div class=\"body\">\n      <div class=\"tab-content pt-4 pb-3 px-3\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n        <p class=\"sectionTitle\">{{ questionGroupTitle }}</p>\n        <p [innerHTML]=\"getSanitizedContent()\" class=\"description mb-5\"></p>\n  \n        <div cdkScrollable>\n            <div *ngFor=\"let innerRow of questionGroupGrids.rows; let innerRowIndex = index\" class=\"row-item\" cdkDrag\n          [cdkDragData]=\"{ type: 'row', id: innerRow?.id, data: innerRow, rowIndex: innerRowIndex }\" cdkDropList\n          [cdkDropListData]=\"{ id: innerRow?.id, rowIndex: innerRowIndex }\"\n          [cdkDropListConnectedTo]=\"connectedLists(questionGroup?.id)\" (cdkDropListDropped)=\"drop($event)\"\n          [id]=\"'rowData-' + questionGroup?.id + '-' + innerRowIndex\">\n          <div class=\"rowGridIndicator\" *ngIf=\"questionGroupGrids.rows[innerRowIndex]?.grids?.length > 1\">\n            <div\n              *ngFor=\"let grid of [].constructor(12); let i = index\"\n              class=\"rowGridCell\"\n              [ngStyle]=\"{\n                'background-color': getRowGridColor(i, questionGroupGrids.rows[innerRowIndex]?.grids)\n              }\">\n            </div>\n          </div>\n          <img src=\"/assets/icons/drag_icon.png\" class=\"rowDragIcon\" alt=\"dragIcon\" cdkDragHandle>\n          <div class=\"grid-container\" [id]=\"'gridData-' + questionGroup?.id + '-' + innerRowIndex\" \n          cdkDropList [cdkDropListData]=\"{ id: innerRow.id, innerRowIndex: innerRowIndex }\"\n          [cdkDropListConnectedTo]=\"connectedLists(questionGroup?.id)\"\n            (cdkDropListDropped)=\"drop($event)\">\n            <ng-container *ngFor=\"let innerGrid of innerRow.grids; let innerGridIndex = index\">\n\n                <ng-container *ngIf=\"innerGrid.entityType === 'QUESTION'\">\n                  <ng-container *ngFor=\"let formElement of questionGroup.formElements\">\n                    <ng-container *ngIf=\"innerGrid.elementId === formElement.element?.id\">\n  \n                      <div\n                        [ngStyle]=\"{'width.%': (innerGrid.count/innerRow.grids.length) * (100 / (12/innerRow.grids.length))}\"\n                        class=\"questionContainer\" (mousedown)=\"questionClick(formElement)\" cdkDrag\n                        [cdkDragData]=\"{ type: 'grid', id:innerRow.id, data: innerGrid, innerRowIndex, innerGridIndex}\"\n                        (cdkDragStarted)=\"onDragStart($event)\" >\n  \n                        <div *ngIf=\"innerRow.grids?.length > 1\" class=\"colorIndicator\"\n                          [ngStyle]=\"{'background-color': getColorFromPalette(innerGridIndex)}\">\n                        </div>\n                        <img src=\"/assets/icons/drag_icon.png\" class=\"dragIcon\" alt=\"dragIcon\" cdkDragHandle>\n  \n                        <div class=\"gridIndicator\" *ngIf=\"innerRow.grids.length == 1\">\n                          <div *ngFor=\"let grids of [].constructor(12); let i = index\"\n                            [class.active]=\"i < (innerGrid.count)\" class=\"gridCell\">\n                          </div>\n                        </div>\n  \n                        <lib-preview-questions [question]=\"formElement\" [translations]=\"translations\"\n                          [selectedLanguage]=\"selectedLanguage\"></lib-preview-questions>\n  \n                        <div class=\"gridIconContainer\" (mousedown)=\"startResizing($event, formElement, innerRow.grids,innerGrid)\">\n                          <img src=\"/assets/icons/grid_icon.png\" class=\"gridIcon\" alt=\"gridIcon\">\n                        </div>\n                      </div>\n  \n                    </ng-container>\n                  </ng-container>\n                </ng-container>\n              </ng-container>\n              <div *ngIf=\"innerRow && getTotalGridCount(innerRow.grids) < 12\" class=\"placeholder-grid\"\n              [ngStyle]=\"{'width.%': (12- getTotalGridCount(innerRow?.grids)/100)}\">\n              <div class=\"example-custom-placeholder\">\n                <p class=\"mb-0\">Drag and drop your element here</p>\n              </div>\n            </div>\n              </div>\n              \n            </div>\n      </div>\n    </div>\n  </div>","import { CdkDragDrop, moveItemInArray} from '@angular/cdk/drag-drop';\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, NgZone, Output, SimpleChanges } from '@angular/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { DraggedInnerData, Row } from '../drag-and-drop/drag-and-drop.model';\n\n@Component({\n  selector: 'lib-multi-field-questions',\n  templateUrl: './multi-field-questions.component.html',\n  styleUrls: ['./multi-field-questions.component.scss']\n})\nexport class MultiFieldQuestionsComponent {\n\n @Input() multiFieldQuestion: any;\n  @Input() translations: any;\n  @Input() selectedLanguage: string = '';\n  @Input() multiFieldQuestionGrids: any;\n  @Input() gridIndex!: number;\n  @Output() subFormGridsChange = new EventEmitter<any[]>();\n\n\n  multiFieldQuestionTitle: string = '';\n  question: any;\n  isDragging: boolean = false;\n  colorPalette = [\n    '#4caf50', // Green\n    '#ff9800', // Orange\n    '#2196f3', // Blue\n    '#e91e63', // Pink\n    '#9c27b0', // Purple\n    '#673ab7', // Deep Purple\n    '#00bcd4', // Cyan\n    '#f44336', // Red\n    '#8bc34a', // Light Green\n    '#ffc107', // Amber\n    '#03a9f4', // Light Blue\n    '#607d8b'  // Blue Grey\n  ];\n  isResizing: boolean = false;\n  resizingQuestion: any = null;\n  initialMouseX: number = 0;\n  initialGridSize: number = 0;\n  gridsLength: number = 12;\n  currentgrids: any;\n  hint: string = '';\n\n  constructor(private cdr: ChangeDetectorRef, private zone: NgZone,\n  ) { }\n\n  ngOnInit() {        \n    this.getTitle();\n    this.hint = this.multiFieldQuestion.hint;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('selectedLanguage' in changes) {\n      this.getTitle();\n    }\n  }\n\n  startResizing(event: MouseEvent, question: any, grids: any,grid:any) {\n    this.isResizing = true;\n    this.resizingQuestion = question;\n    this.initialMouseX = event.clientX;\n    this.initialGridSize = grid.count;\n    this.gridsLength = grids.length;\n    this.currentgrids = grids;\n    this.isDragging = true;\n  }\n\n  @HostListener('window:mousemove', ['$event'])\n  resize(event: MouseEvent) {\n    if (!this.isResizing || !this.resizingQuestion || !this.isDragging) {\n      return;\n    }\n    const deltaX = event.clientX - this.initialMouseX;\n    const parentWidth = document.querySelector('.grid-container')?.clientWidth || 0;\n    const gridWidth = parentWidth / 12;\n    const gridChange = Math.round(deltaX / gridWidth);\n    let newGridSize = Math.max(1, Math.min(12 / this.gridsLength, this.initialGridSize + gridChange));\n    // Ensure total grids don't exceed 12\n    const totalCount = this.getTotalGridCount(this.currentgrids);\n    if (totalCount - this.resizingQuestion.element.count + newGridSize > 12) {\n      return; // Stop resizing if the limit is reached\n    }\n    this.zone.run(() => {\n      this.resizingQuestion.element.count = newGridSize;\n      this.updateRowGridCount(this.resizingQuestion?.element.id, newGridSize);\n      //this.updatePages(this.pages);\n    });\n  }\n\n  @HostListener('window:mouseup')\n  stopResizing() {\n    this.isDragging = false;\n    this.isResizing = false;\n    this.resizingQuestion = null;\n  }\n\n  getTotalGridCount(grids: any[]): number {\n    return grids?.reduce((total, grid) => total + (grid.count || 0), 0) || 0;\n  }\n\n  getTitle() {\n    if (this.translations && this.multiFieldQuestion?.id) {\n      const titleTranslation = this.translations.find((t: any) =>\n        t.elementId === this.multiFieldQuestion.id &&\n        t.entityType === 'MULTIFIELD' &&\n        t.attribute === 'NAME' &&\n        t.language === this.selectedLanguage\n      );\n      this.multiFieldQuestionTitle = titleTranslation ? titleTranslation.translatedText : '';\n     } else {\n      this.multiFieldQuestionTitle = '';\n    }\n  }\n\n  questionClick(question: any) {\n    this.question = question;\n  }\n\n  getColorFromPalette(index: number): string {\n    return this.colorPalette[index % this.colorPalette.length];\n  }\n\n  onDragStart(event: any): void {\n    const innerRowIndex = event.source.data.innerRowIndex;\n    // Find the specific row based on rowId\n    const targetRow = this.multiFieldQuestionGrids.rows[innerRowIndex];    \n    if (!targetRow) {\n      return;\n    }\n    // Check if the target row has grids with length greater than 1\n    if (targetRow.grids.length <= 1) {\n      return;\n    }\n    const newRows: any[] = [];\n    newRows.push({ id: uuidv4(), grids: [] });\n\n    this.multiFieldQuestionGrids.rows.forEach((row: any) => {\n      newRows.push(row);\n\n      const newRow = { id: uuidv4(), grids: [] };\n      newRows.push(newRow);\n\n    });\n    this.multiFieldQuestionGrids.rows = newRows;    \n    this.isDragging = true;\n    this.cdr.detectChanges();\n  }\n\n\n  drop(event: CdkDragDrop<any>) {\n    const dragData: DraggedInnerData = event.item.data;\n    if (!dragData || !dragData.type) {\n      console.error('Invalid drag data');\n      return;\n    }    \n    switch (dragData.type) {\n      case 'row':\n        this.handleRowDrop(dragData, event);\n        break;\n      case 'grid':\n        this.handleGridDrop(dragData, event);\n        break;\n      default:\n        console.error('Unknown drag type:', dragData.type);\n    }\n  }\n\n  handleGridDrop(dragData: DraggedInnerData, event: CdkDragDrop<any>) {        \n    const draggedElement = dragData.data;\n    const draggedData = event.item.data;\n    const sourceContainerData = event.previousContainer.data.id;\n    const targetContainerData = event.container.data.id;\n    \n    if (!draggedData || !sourceContainerData || !targetContainerData) {\n      console.error('Invalid drag-and-drop data', { draggedData, sourceContainerData, targetContainerData });\n      this.removeEmptyRows();\n      return;\n    }\n    if (event.previousContainer.data === event.container.data) {\n      // Reorder grids within the same row\n      const targetRow = this.multiFieldQuestionGrids.rows.find((row: any) => row.id === sourceContainerData);\n      moveItemInArray(targetRow.grids, event.previousIndex, event.currentIndex);      \n    } else {\n      // Move grid to a different row\n      const previousRow = this.multiFieldQuestionGrids.rows.find((row: any) => row.id === sourceContainerData);\n      const targetRow = this.multiFieldQuestionGrids.rows.find((row: any) => row.id === targetContainerData);\n      const previousIndex = this.multiFieldQuestionGrids.rows.findIndex((row: any) => row.id === sourceContainerData);\n      const targetIndex = this.multiFieldQuestionGrids.rows.findIndex((row: any) => row.id === targetContainerData);\n      this.handleGridReorder(draggedElement, previousRow, targetRow, previousIndex, targetIndex);      \n    }\n    this.removeEmptyRows();\n\n  }\n  handleGridReorder(\n    draggedElement: any,\n    previousRow: Row,\n    targetRow: Row,\n    previousIndex: number,\n    currentIndex: number\n  ) {\n    if (!previousRow || !targetRow || !draggedElement) {\n      console.error('Invalid inputs for handleGridReorder');\n      return;\n    }\n\n    const totalGridCount = targetRow.grids.reduce((sum, grid: any) => sum + grid.count, 0);\n\n    // Check if adding the draggedElement count exceeds the limit (e.g., 12)\n    if (totalGridCount + draggedElement.count > 12 && previousRow != targetRow) {\n      console.error('Cannot reorder: Total grid count exceeds the limit');\n      return;\n    }\n\n    // Remove the grid from the previous row\n    const gridIndex = previousRow.grids.findIndex((grid: any) => grid.elementId === draggedElement.elementId);\n    const gridItem = previousRow.grids.splice(gridIndex, 1)[0];\n\n    // Add the grid to the target row at the specified index\n    targetRow.grids.splice(targetRow.grids.length, 0, gridItem);\n    this.removeEmptyRows();    \n  }\n  removeEmptyRows(): void {\n    this.multiFieldQuestionGrids.rows = this.multiFieldQuestionGrids.rows.filter((row:any)=> row.grids.length > 0);\n    this.subFormGridsChange.emit(this.multiFieldQuestionGrids);\n  }\n\n  handleRowDrop(dragData: DraggedInnerData, event: CdkDragDrop<any>) {\n\n    const previousIndex = event.previousIndex;\n    const currentIndex = event.currentIndex;\n    const movedRow = this.multiFieldQuestionGrids.rows[previousIndex];\n\n    this.multiFieldQuestionGrids.rows.splice(previousIndex, 1);\n    this.multiFieldQuestionGrids.rows.splice(currentIndex, 0, movedRow);    \n    this.updateMultiFieldQuestionRow(this.multiFieldQuestionGrids);\n  }\n\n  \n\n  updateMultiFieldQuestionRow(value: any[]) {\n    this.multiFieldQuestionGrids = value;\n    this.subFormGridsChange.emit(this.multiFieldQuestionGrids);\n  }\n\n  updateRowGridCount(questionId: string, newCount: number) {\n    this.multiFieldQuestionGrids.rows.forEach((item: any) => {\n      item.grids.forEach((grid: any) => {\n        if (grid.elementId === questionId) {\n          grid.count = newCount;\n        }\n      });\n    });\n    this.updateMultiFieldQuestionRow(this.multiFieldQuestionGrids);\n  }\n\n  connectedLists(multiFieldQuestionId:string): string[] {\n    const connected: any = [];\n      this.multiFieldQuestionGrids?.rows.forEach((row: any, rowIndex: number) => {\n          connected.push(`gridData-${multiFieldQuestionId}-${rowIndex}`);\n          connected.push(`rowData-${multiFieldQuestionId}-${rowIndex}`);\n      });\n    \n    return connected;\n  }\n\n  getRowGridColor(cellIndex: number, grids: any[]): string {\n    if (!grids || grids.length === 0) return '#e0e0e0'; // Default color for inactive cells\n  \n    let cumulativeCount = 0;\n  \n    for (let gridIndex = 0; gridIndex < grids.length; gridIndex++) {\n      const gridCount = grids[gridIndex]?.count || 0;\n      cumulativeCount += gridCount;\n  \n      if (cellIndex < cumulativeCount) {\n        // Return the color corresponding to the grid index\n        return this.colorPalette[gridIndex % this.colorPalette.length];\n      }\n    }\n  \n    return '#e0e0e0'; // Default color if no match found\n  }\n\n}\n\n","<div class=\"outer-container mb-4\">\n    <div class=\"body\">\n        <div class=\"tab-content pt-4 pb-3 px-3\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n            <div class=\"header d-flex\">\n                <p class=\"sectionTitle\">{{ multiFieldQuestionTitle }}</p>\n                <div\n          class=\"svg-wrapper mb-2 hintIcon\"\n          [attr.data-title]=\"hint\"\n          *ngIf=\"hint\"\n        >\n          <svg\n            class=\"hintSvg\"\n            viewBox=\"0 0 30 30\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              fill-rule=\"evenodd\"\n              clip-rule=\"evenodd\"\n              d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n              stroke=\"#323232\"\n              stroke-width=\"1.5\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n            />\n            <path\n              d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n              stroke=\"#323232\"\n              stroke-width=\"1.5\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n            />\n            <path\n              d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n              stroke=\"#323232\"\n              stroke-width=\"1.5\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n            />\n          </svg>\n        </div>\n            </div>\n            \n            <div cdkScrollable>\n                <div *ngFor=\"let innerRow of multiFieldQuestionGrids.rows; let innerRowIndex = index\" class=\"row-item\"\n                    cdkDrag [cdkDragData]=\"{ type: 'row', id: innerRow?.id, data: innerRow, rowIndex: innerRowIndex }\"\n                    cdkDropList [cdkDropListData]=\"{ id: innerRow?.id, rowIndex: innerRowIndex }\"\n                    [cdkDropListConnectedTo]=\"connectedLists(multiFieldQuestion?.id)\" (cdkDropListDropped)=\"drop($event)\"\n                    [id]=\"'rowData-' + multiFieldQuestion?.id + '-' + innerRowIndex\">\n                    <div class=\"rowGridIndicator\"\n                        *ngIf=\"multiFieldQuestionGrids.rows[innerRowIndex]?.grids?.length > 1\">\n                        <div *ngFor=\"let grid of [].constructor(12); let i = index\" class=\"rowGridCell\" [ngStyle]=\"{\n                            'background-color': getRowGridColor(i, multiFieldQuestionGrids.rows[innerRowIndex]?.grids)\n                        }\">\n                        </div>\n                    </div>\n                    <img src=\"/assets/icons/drag_icon.png\" class=\"rowDragIcon\" alt=\"dragIcon\" cdkDragHandle>\n                    <div class=\"grid-container\" [id]=\"'gridData-' + multiFieldQuestion?.id + '-' + innerRowIndex\" cdkDropList\n                        [cdkDropListData]=\"{ id: innerRow.id, innerRowIndex: innerRowIndex }\"\n                        [cdkDropListConnectedTo]=\"connectedLists(multiFieldQuestion?.id)\" (cdkDropListDropped)=\"drop($event)\">\n                        <ng-container *ngFor=\"let innerGrid of innerRow.grids; let innerGridIndex = index\">\n\n                            <ng-container *ngIf=\"innerGrid.entityType === 'QUESTION'\">\n                                <ng-container *ngFor=\"let formElement of multiFieldQuestion.formElements\">\n                                    <ng-container *ngIf=\"innerGrid.elementId === formElement.element?.id\">\n                                        <!-- <div class=\"grid-container\" [id]=\"'gridData-' + innerRowIndex\" cdkDropList\n                                            [cdkDropListData]=\"{ id: innerGrid.elementId, innerRowIndex: innerRowIndex }\"\n                                            [cdkDropListConnectedTo]=\"connectedLists()\"\n                                            (cdkDropListDropped)=\"drop($event)\"> -->\n\n                                            <div [ngStyle]=\"{'width.%': (innerGrid.count/innerRow.grids.length) * (100 / (12/innerRow.grids.length))}\"\n                                                class=\"questionContainer\" (mousedown)=\"questionClick(formElement)\"\n                                                cdkDrag\n                                                [cdkDragData]=\"{ type: 'grid', id:innerRow.id, data: innerGrid, innerRowIndex, innerGridIndex}\"\n                                                (cdkDragStarted)=\"onDragStart($event)\">\n\n                                                <div *ngIf=\"innerRow.grids?.length > 1\" class=\"colorIndicator\"\n                                                    [ngStyle]=\"{'background-color': getColorFromPalette(innerGridIndex)}\">\n                                                </div>\n                                                <img src=\"/assets/icons/drag_icon.png\" class=\"dragIcon\" alt=\"dragIcon\"\n                                                    cdkDragHandle>\n\n                                                <div class=\"gridIndicator\" *ngIf=\"innerRow.grids.length == 1\">\n                                                    <div *ngFor=\"let grids of [].constructor(12); let i = index\"\n                                                        [class.active]=\"i < (innerGrid.count)\" class=\"gridCell\">\n                                                    </div>\n                                                </div>\n\n                                                <lib-preview-questions [question]=\"formElement\"\n                                                    [translations]=\"translations\"\n                                                    [selectedLanguage]=\"selectedLanguage\"></lib-preview-questions>\n\n                                                <div class=\"gridIconContainer\"\n                                                    (mousedown)=\"startResizing($event, formElement, innerRow.grids,innerGrid)\">\n                                                    <img src=\"/assets/icons/grid_icon.png\" class=\"gridIcon\"\n                                                        alt=\"gridIcon\">\n                                                </div>\n                                            </div>\n\n                                        <!-- </div> -->\n                                    </ng-container>\n                                </ng-container>\n                            </ng-container>\n                        </ng-container>\n                        <div *ngIf=\"innerRow && getTotalGridCount(innerRow.grids) < 12\" class=\"placeholder-grid\"\n              [ngStyle]=\"{'width.%': (12- getTotalGridCount(innerRow?.grids)/100)}\">\n              <div class=\"example-custom-placeholder\">\n                <p class=\"mb-0\">Drag and drop your element here</p>\n              </div>\n            </div>\n                    </div>\n                </div>\n\n            </div>\n        </div>\n    </div>\n</div>","import {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  NgZone,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { CdkDrag, CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { DraggedData, Row } from './drag-and-drop.model';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Component({\n  selector: 'lib-drag-and-drop',\n  templateUrl: './drag-and-drop.component.html',\n  styleUrls: ['./drag-and-drop.component.scss'],\n})\nexport class DragAndDropComponent {\n  @Input() pages: any[] = [];\n  @Input() translations: any[] = [];\n  @Input() selectedLanguage: string = '';\n  @Output() pagesChange = new EventEmitter<any[]>();\n  question: any;\n  isDragging = false;\n  expandedPages: { [key: number]: boolean } = {};\n\n  // Track if pages have already been initialized\n  initialized = false;\n  constructor(private zone: NgZone, private cdr: ChangeDetectorRef) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      changes['pages'] &&\n      changes['pages'].currentValue &&\n      !this.initialized\n    ) {\n      // Initialize expandedPages when pages are updated\n      this.pages.forEach((_, index) => {\n        this.expandedPages[index] = true; // Default all pages to expanded\n      });\n      this.initialized = true; // Mark as initialized\n    }\n  }\n\n  togglePage(index: number): void {\n    this.expandedPages[index] = !this.expandedPages[index]; // Toggle expanded state\n  }\n\n  get allPagesCollapsed(): boolean {\n    return Object.values(this.expandedPages).every((expanded) => !expanded);\n  }\n\n  drop(event: CdkDragDrop<any>) {\n    //this.isDragging = true;\n    const dragData: DraggedData = event.item.data;\n    if (!dragData || !dragData.type) {\n      console.error('Invalid drag data');\n      return;\n    }\n\n    switch (dragData.type) {\n      case 'page':\n        this.handlePageDrop(dragData, event);\n        break;\n      case 'row':\n        this.handleRowDrop(dragData, event);\n        break;\n      case 'grid':\n        this.handleGridDrop(dragData, event);\n        break;\n      default:\n        console.error('Unknown drag type:', dragData.type);\n    }\n  }\n\n  handleGridDrop(dragData: DraggedData, event: CdkDragDrop<any>) {\n    const draggedElement = dragData.data;\n    const draggedData = event.item.data;\n    const sourceContainerData = event.previousContainer.data.rowId;\n    const targetContainerData = event.container.data.rowId;\n\n    if (!draggedData || !sourceContainerData || !targetContainerData) {\n      console.error('Invalid drag-and-drop data', {\n        draggedData,\n        sourceContainerData,\n        targetContainerData,\n      });\n      return;\n    }\n    if (event.previousContainer.data === event.container.data) {\n      // Reorder grids within the same row\n      const targetRow = this.pages[dragData.pageIndex].rows.find(\n        (row: any) => row.id === sourceContainerData\n      );\n      moveItemInArray(targetRow.grids, event.previousIndex, event.currentIndex);\n    } else {\n      // Move grid to a different row\n      const previousRow = this.pages[dragData.pageIndex].rows.find(\n        (row: any) => row.id === sourceContainerData\n      );\n      const targetRow = this.pages[dragData.pageIndex].rows.find(\n        (row: any) => row.id === targetContainerData\n      );\n      const previousIndex = this.pages[dragData.pageIndex].rows.findIndex(\n        (row: any) => row.id === sourceContainerData\n      );\n      const targetIndex = this.pages[dragData.pageIndex].rows.findIndex(\n        (row: any) => row.id === targetContainerData\n      );\n      this.handleGridReorder(\n        draggedElement,\n        previousRow,\n        targetRow,\n        previousIndex,\n        targetIndex\n      );\n    }\n  }\n  handleRowDrop(dragData: DraggedData, event: CdkDragDrop<any[]>) {\n    // Logic to reorder or move rows\n    const previousIndex = event.previousIndex;\n    const currentIndex = event.currentIndex;\n    // Get the page where rows need to be swapped\n    const page = this.pages[dragData.pageIndex];\n    // Swap the rows based on the index positions\n    const movedRow = page.rows[previousIndex];\n    page.rows.splice(previousIndex, 1);\n    page.rows.splice(currentIndex, 0, movedRow);\n    this.updatePages(this.pages);\n  }\n  handlePageDrop(dragData: DraggedData, event: CdkDragDrop<any[]>) {\n    const previousIndex = event.previousIndex;\n    const currentIndex = event.currentIndex;\n    const movedPage = this.pages[previousIndex];\n    // Logic to reorder or move pages\n    this.pages.splice(previousIndex, 1);\n    this.pages.splice(currentIndex, 0, movedPage);\n    this.updatePages(this.pages);\n  }\n\n  handleGridReorder(\n    draggedElement: any,\n    previousRow: Row,\n    targetRow: Row,\n    previousIndex: number,\n    currentIndex: number\n  ) {\n    if (!previousRow || !targetRow || !draggedElement) {\n      console.error('Invalid inputs for handleGridReorder');\n      return;\n    }\n\n    const totalGridCount = targetRow.grids.reduce(\n      (sum, grid: any) => sum + grid.count,\n      0\n    );\n\n    // Check if adding the draggedElement count exceeds the limit (e.g., 12)\n    if (\n      totalGridCount + draggedElement.count > 12 &&\n      previousRow != targetRow\n    ) {\n      console.error('Cannot reorder: Total grid count exceeds the limit');\n      return;\n    }\n\n    // Remove the grid from the previous row\n    const gridIndex = previousRow.grids.findIndex(\n      (grid: any) => grid.elementId === draggedElement.elementId\n    );\n    const gridItem = previousRow.grids.splice(gridIndex, 1)[0];\n\n    // Add the grid to the target row at the specified index\n    targetRow.grids.splice(targetRow.grids.length, 0, gridItem);\n    this.removeEmptyRows();\n  }\n\n  removeEmptyRows(): void {\n    this.pages.forEach((page: any) => {\n      page.rows = page.rows.filter((row: any) => row.grids.length > 0);\n    });\n    this.updatePages(this.pages);\n  }\n\n  updateRowGrid(targetPage: any) {\n    // Create a mapping of updated positions for formElements\n    const elementIdToIndexMap = new Map<string, number>();\n    targetPage.formElements.forEach((element: any, index: number) => {\n      elementIdToIndexMap.set(element.element.id, index);\n    });\n\n    // Update rows and grids for the target page\n    targetPage.rows.forEach((row: any) => {\n      // Sort grids within each row based on the new order of formElements\n      row.grids.sort((a: any, b: any) => {\n        const indexA = elementIdToIndexMap.get(a.elementId) ?? Number.MAX_VALUE;\n        const indexB = elementIdToIndexMap.get(b.elementId) ?? Number.MAX_VALUE;\n        return indexA - indexB;\n      });\n    });\n\n    // Optional: Sort rows if needed based on the minimum grid index within each row\n    targetPage.rows.sort((rowA: any, rowB: any) => {\n      const minIndexA = Math.min(\n        ...rowA.grids.map(\n          (grid: any) =>\n            elementIdToIndexMap.get(grid.elementId) ?? Number.MAX_VALUE\n        )\n      );\n      const minIndexB = Math.min(\n        ...rowB.grids.map(\n          (grid: any) =>\n            elementIdToIndexMap.get(grid.elementId) ?? Number.MAX_VALUE\n        )\n      );\n      return minIndexA - minIndexB;\n    });\n  }\n\n  emitQuestion(event: any) {\n    this.question = event;\n  }\n\n  questionClick(question: any) {\n    this.question = question;\n  }\n\n  // Resizing logic\n  isResizing: boolean = false;\n  resizingQuestion: any = null;\n  initialMouseX: number = 0;\n  initialGridSize: number = 0;\n  gridsLength: number = 12;\n  currentgrids: any;\n  availableGridSpace: number = 0;\n  currentQuestionContainer: any;\n\n  startResizing(event: MouseEvent, question: any, grids: any, grid: any) {\n    this.isResizing = true;\n    this.resizingQuestion = question;\n    this.initialMouseX = event.clientX;\n    this.initialGridSize = grid.count;\n    this.gridsLength = grids.length;\n    this.currentgrids = grids;\n    this.isDragging = true;\n\n    const questionElement = (event.target as HTMLElement).closest('.questionContainer') as HTMLElement;\n    this.currentQuestionContainer = questionElement;\n\n    // Calculate the available space in the row\n    this.availableGridSpace = this.calculateAvailableSpace(grids, grid);\n  }\n\n  @HostListener('window:mousemove', ['$event'])\n  resize(event: MouseEvent) {\n    if (!this.isResizing || !this.resizingQuestion || !this.isDragging) {\n      return;\n    }\n\n    const deltaX = event.clientX - this.initialMouseX;\n    const questionWidth = this.currentQuestionContainer?.clientWidth || 0;\n    const parentWidth =\n      document.querySelector('.grid-container')?.clientWidth || 0;\n      \n    const gridWidth = parentWidth / 12;\n    const gridChange = Math.round(deltaX / gridWidth);\n    if(this.resizingQuestion.element.formElement.elementType == 'IFRAME_WIDGET'){\n      const width = this.resizingQuestion.element.formElement.appearance.width? this.resizingQuestion.element.formElement.appearance.width : 500;\n      \n      if(gridChange < 0 && questionWidth-gridWidth < width){\n        return;\n      }\n    }\n    // Calculate the new grid size considering the available space\n    let newGridSize = Math.max(1, this.initialGridSize + gridChange);\n\n    // Ensure the new size doesn't exceed the available space\n    newGridSize = Math.min(\n      this.initialGridSize + this.availableGridSpace,\n      newGridSize\n    );\n\n    this.zone.run(() => {\n      this.resizingQuestion.element.count = newGridSize;\n      this.updateRowGridCount(this.resizingQuestion?.element.id, newGridSize);\n      this.updatePages(this.pages);\n    });\n  }\n\n  /**\n   * Calculates the available grid space in the current row\n   */\n  calculateAvailableSpace(grids: any[], currentGrid: any): number {\n    const totalGridCount = grids.reduce((sum, grid) => sum + grid.count, 0);\n    const availableSpace = 12 - totalGridCount;\n    return Math.max(0, availableSpace);\n  }\n\n  @HostListener('window:mouseup')\n  stopResizing() {\n    this.isDragging = false;\n    this.isResizing = false;\n    this.resizingQuestion = null;\n  }\n\n  updateRowGridCount(questionId: string, newCount: number) {\n    for (const page of this.pages) {\n      for (const row of page.rows) {\n        for (const grid of row.grids) {\n          if (grid.elementId === questionId) {\n            grid.count = newCount;\n            break;\n          }\n        }\n      }\n    }\n  }\n\n  getPageTitle(page: any) {\n    if (this.translations && page?.id) {\n      const translation = this.translations.find(\n        (t: any) =>\n          t.elementId === page.id &&\n          t.entityType === 'PAGE' &&\n          t.attribute === 'NAME' &&\n          t.language === this.selectedLanguage\n      );\n      return translation ? translation.translatedText : '';\n    } else {\n      return '';\n    }\n  }\n\n  updatePages(updatedPages: any[]) {\n    updatedPages.forEach((page, index) => {\n      page.pageNo = index + 1;\n    });\n    this.pages = updatedPages;\n    this.pagesChange.emit(this.pages);\n  }\n\n  getTotalGridCount(grids: any[]): number {\n    return grids?.reduce((total, grid) => total + (grid.count || 0), 0) || 0;\n  }\n\n  setGridCount(event: any, index: number, grid: any) {\n    const newGridSize = index + 1;\n    this.resizingQuestion = grid;\n    this.initialGridSize = grid.element.count;\n    this.resizingQuestion.element.count = newGridSize;\n    this.updateRowGridCount(grid.element.id, newGridSize);\n  }\n\n  connectedLists(pageIndex: number): string[] {\n    // Generate all IDs of rows and grids for the given page index\n    const connected: any = [];\n    const currentPage = this.pages[pageIndex];\n\n    if (currentPage?.rows) {\n      currentPage.rows.forEach((row: any, rowIndex: number) => {\n        connected.push(`rowData-${pageIndex}-${rowIndex}`);\n        connected.push(`gridData-${pageIndex}-${rowIndex}`);\n      });\n    }\n    return connected;\n  }\n\n  colorPalette = [\n    '#4caf50', // Green\n    '#ff9800', // Orange\n    '#2196f3', // Blue\n    '#e91e63', // Pink\n    '#9c27b0', // Purple\n    '#673ab7', // Deep Purple\n    '#00bcd4', // Cyan\n    '#f44336', // Red\n    '#8bc34a', // Light Green\n    '#ffc107', // Amber\n    '#03a9f4', // Light Blue\n    '#607d8b', // Blue Grey\n  ];\n\n  // Helper function to get color for row grid cells\n  getRowGridColor(cellIndex: number, grids: any[]): string {\n    if (!grids || grids.length === 0) return '#e0e0e0'; // Default color for inactive cells\n\n    let cumulativeCount = 0;\n\n    for (let gridIndex = 0; gridIndex < grids.length; gridIndex++) {\n      const gridCount = grids[gridIndex]?.count || 0;\n      cumulativeCount += gridCount;\n\n      if (cellIndex < cumulativeCount) {\n        // Return the color corresponding to the grid index\n        return this.colorPalette[gridIndex % this.colorPalette.length];\n      }\n    }\n\n    return '#e0e0e0'; // Default color if no match found\n  }\n\n  getColorFromPalette(index: number): string {\n    return this.colorPalette[index % this.colorPalette.length]; // Use modulo for cyclic indexing\n  }\n\n  onDragStart(event: any, question: any): void {\n    const pageIndex = event.source.data.pageIndex;\n    const rowId = event.source.data.id;\n\n    // Find the specific row based on rowId\n    const targetRow = this.pages[pageIndex].rows.find(\n      (row: any) => row.id === rowId\n    );\n\n    if (!targetRow) {\n      return;\n    }\n\n    // Check if the target row has grids with length greater than 1\n    if (targetRow.grids.length <= 1) {\n      return;\n    }\n\n    const newRows: any[] = [];\n\n    // Add a new row at the first index\n    newRows.push({ id: uuidv4(), grids: [] });\n\n    this.pages[pageIndex].rows.forEach((row: any) => {\n      newRows.push(row); // Add the existing row\n\n      // If the current row is the target row, add a new row after it\n      const newRow = { id: uuidv4(), grids: [] };\n      newRows.push(newRow); // Add the new row after the current row\n    });\n\n    // Replace the old rows with the new rows\n    this.pages[pageIndex].rows = newRows;\n\n    // Optionally, update the UI or trigger change detection\n    this.updatePages(this.pages);\n    this.isDragging = true; // Set the dragging state\n    this.cdr.detectChanges();\n  }\n\n  updateGrid(\n    value: any,\n    gridIndex: number,\n    rowIndex: number,\n    pageIndex: number\n  ) {\n    this.pages[pageIndex].rows[rowIndex].grids[gridIndex] = value;\n    this.updatePages(this.pages);\n    this.cdr.detectChanges();\n  }\n}\n","<div cdkScrollable>\n  <div cdkDropList id=\"page-container\" class=\"page-container\" [cdkDropListData]=\"pages\"\n    (cdkDropListDropped)=\"drop($event)\">\n\n    <div class=\"pageCollapsed\" [ngClass]=\"{ 'all-collapsed': allPagesCollapsed }\">\n      <p class=\"mb-0 pagesTitle\" *ngIf=\"allPagesCollapsed\">Pages</p>\n    \n      <ng-container *ngFor=\"let page of pages; let pageIndex = index\">\n        <!-- Not draggable if allPagesCollapsed is false -->\n        <div class=\"inner-rectangle page-item\" *ngIf=\"!allPagesCollapsed\">\n          <ng-container [ngTemplateOutlet]=\"pageTemplate\"\n                        [ngTemplateOutletContext]=\"{ page: page, pageIndex: pageIndex }\">\n          </ng-container>\n        </div>\n    \n        <!-- Draggable if allPagesCollapsed is true -->\n        <div class=\"inner-rectangle page-item\"\n             *ngIf=\"allPagesCollapsed\"\n             cdkDrag [cdkDragData]=\"{ type: 'page', id: page.id, data: page }\">\n          <ng-container [ngTemplateOutlet]=\"pageTemplate\"\n                        [ngTemplateOutletContext]=\"{ page: page, pageIndex: pageIndex }\">\n          </ng-container>\n          <div class=\"example-custom-placeholder\" *cdkDragPlaceholder>\n            <p>Drop your page here</p>\n          </div>\n        </div>\n      </ng-container>\n    \n      <!-- Shared page template -->\n      <ng-template #pageTemplate let-page=\"page\" let-pageIndex=\"pageIndex\">\n        <div class=\"page-header\" (click)=\"togglePage(pageIndex)\" [ngClass]=\"{'collapsed': !expandedPages[pageIndex]}\">\n          <div class=\"d-flex\">\n            <img cdkDragHandle *ngIf=\"!expandedPages[pageIndex] && allPagesCollapsed\" src=\"/assets/icons/drag_icon.png\"\n                 class=\"hover-icon\" alt=\"hover-icon\">\n            <p>{{ getPageTitle(page) }}</p>\n          </div>\n          <img [src]=\"expandedPages[pageIndex] ? '/assets/icons/upArrow.png' : '/assets/icons/down-arrow-gray-icon.svg'\"\n               class=\"toggle-icon\" alt=\"toggle-icon\">\n        </div>\n    \n        <div *ngIf=\"expandedPages[pageIndex]\" class=\"rows\">\n          <!-- keep your row rendering logic here exactly as before -->\n          <!-- row-item, cdkDropList, grid-container, lib-preview-questions, etc. -->\n          <!-- no change needed in nested row/grid/element rendering -->\n          <div *ngFor=\"let row of page.rows; let rowIndex = index\" class=\"row-item\" cdkDrag\n          [cdkDragData]=\"{ type: 'row', id: row?.id, data: row, pageIndex: pageIndex,rowIndex: rowIndex }\" cdkDropList\n          [cdkDropListData]=\"{ rowId: row?.id, pageIndex: pageIndex, rowIndex: rowIndex }\"\n          [cdkDropListConnectedTo]=\"connectedLists(pageIndex)\" (cdkDropListDropped)=\"drop($event)\"\n          [id]=\"'rowData-' + pageIndex + '-' + rowIndex\">\n\n          <div class=\"rowGridIndicator\" *ngIf=\"page.rows[rowIndex]?.grids?.length > 1\">\n            <div\n              *ngFor=\"let grid of [].constructor(12); let i = index\"\n              class=\"rowGridCell\"\n              [ngStyle]=\"{\n                'background-color': getRowGridColor(i, page.rows[rowIndex]?.grids)\n              }\">\n            </div>\n          </div>\n\n          <img src=\"/assets/icons/drag_icon.png\" class=\"rowDragIcon\" alt=\"dragIcon\" cdkDragHandle>\n          <div class=\"grid-container\" [id]=\"'gridData-' + pageIndex + '-' + rowIndex\" cdkDropList\n            [cdkDropListData]=\"{ rowId: row.id, pageIndex: pageIndex, rowIndex: rowIndex }\"\n            [cdkDropListConnectedTo]=\"connectedLists(pageIndex)\" (cdkDropListDropped)=\"drop($event)\">\n\n            <ng-container *ngFor=\"let grid of row?.grids; let gridIndex = index\">\n              <ng-container *ngIf=\"grid.entityType === 'QUESTION'\">\n                <ng-container *ngFor=\"let question of page.formElements\">\n                  <ng-container *ngIf=\"grid.elementId===question.element?.id\">\n                    <div\n                      [ngStyle]=\"{'width.%': (grid.count/row.grids.length) * (100 / (12/row.grids.length))}\"\n                      [ngStyle]=\"{'width.%': (grid.count/row.grids.length) * (100 / (12/row.grids.length))}\"\n                      class=\"questionContainer\" (mousedown)=\"questionClick(question)\"\n                       cdkDrag\n                      [cdkDragData]=\"{ type: 'grid', id: row.id, data: grid, pageIndex, rowIndex, gridIndex}\"\n                      (cdkDragStarted)=\"onDragStart($event, question)\">\n                      <div\n                          *ngIf=\"page.rows[rowIndex]?.grids?.length > 1\"\n                          class=\"colorIndicator\"\n                          [ngStyle]=\"{'background-color': getColorFromPalette(gridIndex)}\">\n                      </div>\n                      <img src=\"/assets/icons/drag_icon.png\" class=\"dragIcon\" alt=\"dragIcon\" cdkDragHandle>\n\n\n                      <div class=\"gridIndicator\"  *ngIf=\"page.rows[rowIndex]?.grids?.length == 1\">\n                        <div *ngFor=\"let grids of [].constructor(12); let i = index\"\n                          [class.active]=\"i < (grid.count)\" class=\"gridCell\">\n                        </div>\n                      </div>\n\n\n                      <lib-preview-questions [question]=\"question\" [translations]=\"translations\"\n                        [selectedLanguage]=\"selectedLanguage\"  [grid]=\"grid\"\n                        (questionEmitter)=\"emitQuestion($event)\"></lib-preview-questions>\n                      <div class=\"gridIconContainer\" (mousedown)=\"startResizing($event, question, row.grids,grid)\">\n                        <img src=\"/assets/icons/grid_icon.png\" class=\"gridIcon\" alt=\"gridIcon\">\n                      </div>\n                    </div>\n                  </ng-container>\n                </ng-container>\n              </ng-container>\n              <ng-container *ngIf=\"grid.entityType === 'SECTION'\">\n                <ng-container *ngFor=\"let section of page.formElements\">\n                  <ng-container *ngIf=\"grid.elementId===section?.element?.id\">\n                    <div\n                      [ngStyle]=\"{'width.%': (grid.count/row.grids.length) * (100 / (12/row.grids.length))}\"\n                      class=\"questionContainer\" (mousedown)=\"questionClick(section)\"\n                       cdkDrag\n                      [cdkDragData]=\"{ type: 'grid', id: row.id, data: grid, pageIndex, rowIndex, gridIndex}\"\n                      (cdkDragStarted)=\"onDragStart($event, question)\">\n                      <div\n                          *ngIf=\"page.rows[rowIndex]?.grids?.length > 1\"\n                          class=\"colorIndicator\"\n                          [ngStyle]=\"{'background-color': getColorFromPalette(gridIndex)}\">\n                      </div>\n                      <img src=\"/assets/icons/drag_icon.png\" class=\"dragIcon\" alt=\"dragIcon\" cdkDragHandle>\n\n\n                      <div class=\"gridIndicator\"  *ngIf=\"page.rows[rowIndex]?.grids?.length == 1\">\n                        <div *ngFor=\"let grids of [].constructor(12); let i = index\"\n                          [class.active]=\"i < (grid.count)\" class=\"gridCell\">\n                        </div>\n                      </div>\n\n                    <lib-section-fields [section]=\"section.element\" [translations]=\"translations\"\n                      [selectedLanguage]=\"selectedLanguage\"></lib-section-fields>\n\n                      <div class=\"gridIconContainer\" (mousedown)=\"startResizing($event, section, row.grids,grid)\">\n                        <img src=\"/assets/icons/grid_icon.png\" class=\"gridIcon\" alt=\"gridIcon\">\n                      </div>\n                    </div>\n\n                  </ng-container>\n                </ng-container>\n              </ng-container>\n              <ng-container *ngIf=\"grid.entityType === 'SUBFORM'\">\n                <ng-container *ngFor=\"let subForm of page.formElements\">\n                  <ng-container *ngIf=\"grid.elementId==subForm?.element?.id\">\n                    <div\n                    [ngStyle]=\"{'width.%': (grid.count/row.grids.length) * (100 / (12/row.grids.length))}\"\n                    class=\"questionContainer\" (mousedown)=\"questionClick(subForm)\">\n                    <div\n                        *ngIf=\"page.rows[rowIndex]?.grids?.length > 1\"\n                        class=\"colorIndicator\"\n                        [ngStyle]=\"{'background-color': getColorFromPalette(gridIndex)}\">\n                    </div>\n                    <!-- <img src=\"/assets/icons/drag_icon.png\" class=\"dragIcon\" alt=\"dragIcon\" cdkDragHandle>  -->\n                    <!-- <div class=\"gridIndicator\"  *ngIf=\"page.rows[rowIndex]?.grids?.length == 1\">\n                      <div *ngFor=\"let grids of [].constructor(12); let i = index\"\n                        [class.active]=\"i < (grid.count)\" class=\"gridCell\">\n                      </div>\n                    </div> -->\n                    <lib-sub-form [subForm]=\"subForm.element\" [translations]=\"translations\"\n                      [selectedLanguage]=\"selectedLanguage\" [subFormGrids]=\"grid\" [gridIndex]=\"gridIndex\"\n                      (subFormGridsChange)=\"updateGrid($event, gridIndex, rowIndex, pageIndex)\"></lib-sub-form>\n\n                      <!-- <div class=\"gridIconContainer\" (mousedown)=\"startResizing($event, subForm, row.grids,grid)\">\n                        <img src=\"/assets/icons/grid_icon.png\" class=\"gridIcon\" alt=\"gridIcon\">\n                      </div> -->\n                    </div>\n\n                  </ng-container>\n                </ng-container>\n              </ng-container>\n              <ng-container *ngIf=\"grid.entityType === 'QUESTION_GROUP'\">\n                <ng-container *ngFor=\"let questionGroup of page.formElements\">\n                  <ng-container *ngIf=\"grid.elementId==questionGroup?.element?.id\">\n                    <div\n                    [ngStyle]=\"{'width.%': (grid.count/row.grids.length) * (100 / (12/row.grids.length))}\"\n                    class=\"questionContainer\" (mousedown)=\"questionClick(questionGroup)\">\n                    <div\n                        *ngIf=\"page.rows[rowIndex]?.grids?.length > 1\"\n                        class=\"colorIndicator\"\n                        [ngStyle]=\"{'background-color': getColorFromPalette(gridIndex)}\">\n                    </div>\n                    <!-- <img src=\"/assets/icons/drag_icon.png\" class=\"dragIcon\" alt=\"dragIcon\" cdkDragHandle>\n                    <div class=\"gridIndicator\"  *ngIf=\"page.rows[rowIndex]?.grids?.length == 1\">\n                      <div *ngFor=\"let grids of [].constructor(12); let i = index\"\n                        [class.active]=\"i < (grid.count)\" class=\"gridCell\">\n                      </div>\n                    </div> -->\n                    <lib-question-group [questionGroup]=\"questionGroup.element\" [translations]=\"translations\"\n                      [selectedLanguage]=\"selectedLanguage\" [questionGroupGrids]=\"grid\" [gridIndex]=\"gridIndex\"\n                      (subFormGridsChange)=\"updateGrid($event, gridIndex, rowIndex, pageIndex)\"></lib-question-group>\n\n                      <!-- <div class=\"gridIconContainer\" (mousedown)=\"startResizing($event, questionGroup, row.grids,grid)\">\n                        <img src=\"/assets/icons/grid_icon.png\" class=\"gridIcon\" alt=\"gridIcon\">\n                      </div> -->\n                    </div>\n\n                  </ng-container>\n                </ng-container>\n              </ng-container>\n              <ng-container *ngIf=\"grid.entityType === 'MULTIFIELD'\">\n                <ng-container *ngFor=\"let multiField of page.formElements\">\n                  <ng-container *ngIf=\"grid.elementId == multiField?.element?.id\">\n                    <div\n                    [ngStyle]=\"{'width.%': (grid.count/row.grids.length) * (100 / (12/row.grids.length))}\"\n                    class=\"questionContainer\" (mousedown)=\"questionClick(multiField)\">\n                    <div\n                        *ngIf=\"page.rows[rowIndex]?.grids?.length > 1\"\n                        class=\"colorIndicator\"\n                        [ngStyle]=\"{'background-color': getColorFromPalette(gridIndex)}\">\n                    </div>\n                    <!-- <img src=\"/assets/icons/drag_icon.png\" class=\"dragIcon\" alt=\"dragIcon\" cdkDragHandle> -->\n                    <!-- <div class=\"gridIndicator\"  *ngIf=\"page.rows[rowIndex]?.grids?.length == 1\">\n                      <div *ngFor=\"let grids of [].constructor(12); let i = index\"\n                        [class.active]=\"i < (grid.count)\" class=\"gridCell\">\n                      </div>\n                    </div> -->\n\n                    <lib-multi-field-questions [multiFieldQuestion]=\"multiField.element\" [translations]=\"translations\"\n                      [selectedLanguage]=\"selectedLanguage\" [multiFieldQuestionGrids]=\"grid\"\n                      [gridIndex]=\"gridIndex\"\n                      (subFormGridsChange)=\"updateGrid($event, gridIndex, rowIndex, pageIndex)\">\n                    </lib-multi-field-questions>\n\n                    <!-- <div class=\"gridIconContainer\" (mousedown)=\"startResizing($event, multiField, row.grids,grid)\">\n                      <img src=\"/assets/icons/grid_icon.png\" class=\"gridIcon\" alt=\"gridIcon\">\n                    </div> -->\n\n                    </div>\n                  </ng-container>\n                </ng-container>\n              </ng-container>\n            </ng-container>\n            <div *ngIf=\"row && getTotalGridCount(row.grids) < 12\" class=\"placeholder-grid\"\n              [ngStyle]=\"{'width.%': (12- getTotalGridCount(row?.grids)/100)}\">\n              <div class=\"example-custom-placeholder\">\n                <p class=\"mb-0\">Drag and drop your element here</p>\n              </div>\n            </div>\n          </div>\n\n        </div>\n        </div>\n    \n        <!-- Optional placeholder for page drag -->\n        \n      </ng-template>\n    </div>\n    \n  </div>\n</div>\n","import { Component, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { CONSTANTS } from '../../shared/constants';\nimport { ElementIdModalComponent } from '../../shared/element-id-modal/element-id-modal.component';\nimport { Subscription } from 'rxjs';\nimport { SharedService } from '../../services/shared.service';\nimport { WhenClauseModalComponent } from '../../shared/when-clause-modal/when-clause-modal.component';\n\n@Component({\n  selector: 'lib-question-group',\n  templateUrl: './question-group.component.html',\n  styleUrls: ['./question-group.component.scss']\n})\nexport class QuestionGroupComponent {\n\n    htmlContent = '';\n    @Input() questionGroup:any=[];\n    @Input() translations:any=[];\n    @Input() selectedQuestionId:string=''; \n    @Input() deletedQuestionId:string=''; \n    @Input() pageId:any; \n    @Input() grid:any; \n    @Input() pages: any = [];\n    @Output() translationsUpdated: EventEmitter<any> = new EventEmitter<any>();\n    @Output() newpages: EventEmitter<any[]> = new EventEmitter<any[]>();\n    questionGroupTitle: string = '';\n    questionGroupDescription: string = '';\n    childLogics:any;\n    inputValue:string=''\n    comparisonOptions = CONSTANTS.COMPARISON_OPTIONS;\n    textComparison=CONSTANTS.TEXT_COMPARISON;\n    dropdownComparison= CONSTANTS.DROPDOWN_COMPARISON;\n    sendPage:any;\n    selectedids:any=[];\n    selectedForm: any = {};\n    editor: any;\n    testElementName: string = '';\n    isMenuOpen: boolean = false;\n    customElementId: string = '';\n    whenClause: any;\n    filteredAllQuestions: any;\n    private pageSubscription: Subscription;\n    constructor(private dataservice:DataService,public dialog: MatDialog,private elementRef: ElementRef,private sharedService: SharedService){\n      this.dataservice.openMenuId$.subscribe((openId) => {\n        const myId = this.questionGroup.id || this.questionGroup.element?.id;\n        this.isMenuOpen = (openId === myId);\n      });\n\n      this.pageSubscription = this.dataservice.getPages().subscribe((data) => {\n        const allQuestions = this.sharedService.extractAllQuestions(\n          data,\n          this.questionGroup?.element?.id\n        );\n  \n        // ✅ Allowed element types\n        const allowedTypes = [\n          'TEXT_BOX',\n          'NUMBER',\n          'DROP_DOWN',\n          'CHECK_BOX',\n          'RADIO_BUTTON',\n          'FILE_PICKER',\n          'TEXT_AREA',\n          'HIDDEN_FIELD',\n        ];\n  \n        this.filteredAllQuestions = allQuestions.filter((q) =>\n          allowedTypes.includes(q.elementType)\n        );\n        if (\n          this.questionGroup.whenClause &&\n          this.questionGroup.whenClause.whenClauseCondition.length > 0\n        ) {\n          this.questionGroup.whenClause.whenClauseCondition = this.updateWhenClause(\n            this.questionGroup.whenClause.whenClauseCondition\n          );\n        }\n      });\n    }\n    ngOnInit() {      \n      this.valueAssigned();\n      this.sendPage=this.pages;\n      this.generateFieldName();\n    }\n    valueAssigned() {\n      this.questionGroupTitle = this.questionGroup.element.title;\n      this.questionGroupDescription = this.questionGroup.element.description;\n      this.customElementId = this.questionGroup.customElementId;\n      this.whenClause = this.questionGroup?.whenClause;\n    }\n    editorCreated(editorInstance: any) {\n      this.editor = editorInstance;\n      this.updateEditorContent(this.questionGroupDescription)\n    }\n  \n    // When you receive data from API\n    updateEditorContent(content: string) {\n      if (this.editor) {\n        // this.editor.clipboard.dangerouslyPasteHTML(content);\n        const delta = this.editor.clipboard.convert(content);\n        this.editor.setContents(delta, 'silent');\n      }\n      this.questionGroupDescription = content;\n    }\n    jsonUpdation(){\n      this.dataservice.emitChangeStatus(true);\n      this.questionGroup.element.title = this.questionGroupTitle;\n      this.questionGroup.element.description = this.questionGroupDescription;\n      for(let translate of this.translations){\n        if(translate.elementId==this.questionGroup.element.id && translate.attribute==\"NAME\"){\n          translate.translatedText=this.questionGroupTitle;\n        }\n        else if(translate.elementId==this.questionGroup.element.id && translate.attribute=='DESCRIPTION'){\n          translate.translatedText=this.questionGroupDescription;\n        }\n      }\n    }\n    selectQuestion(question: any){\n      this.dataservice.sendQuestion(question);\n      this.dataservice.sendPageId(this.pageId);\n    }\n    deleteQuestion(data:any){\n      this.dataservice.sendsubFormQuestionDelete(data);\n    }\n    deleteLogic(quest:any,id:any){\n        if (quest.element.childLogics) {\n          let child = quest.element.childLogics\n          this.getIds(child,id)\n          for (let m = 0; m < this.selectedids.length; m++) {\n            this.transalationDelete(this.selectedids[m]);\n            this.deleteGrids(this.selectedids[m]);\n          }\n        }\n       quest.element.childLogics = quest.element?.childLogics?.filter((item: any) => item.id != id);\n    }\n    addNewChildQuestion(question:any,childLogic:any){\n      this.dataservice.sendLogicId(childLogic.id);\n      this.dataservice.sendChildQuestions(question);\n      this.valueAssigned();    \n    }\n    addNewQuestion(questionGroupId: string){\n      this.dataservice.sendPageId(this.pageId);\n      this.dataservice.sendSubformId(questionGroupId);\n      this.dataservice.sendSubformQuestions(this.questionGroup);  \n    }\n    addSection(){\n      this.dataservice.addSubFormSections(this.questionGroup); \n    }\n    addNewSubForm() {\n      this.dataservice.addNewSubFormQuestions(this.questionGroup); \n    }\n    // openDeleteModal() {\n    //   this.dataservice.sendSubFormDelete(this.deletedQuestionId);  \n    // }\n    openConfirmationModal(){\n      const dialogConfig = new MatDialogConfig();\n      dialogConfig.data = {\n        messageHeader:\"Are you sure ?\",\n        message:\"Do you want to delete this question group?\"\n      };\n      dialogConfig.hasBackdrop = true;\n      dialogConfig.disableClose = true;\n      const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n      dialogRef.afterClosed().subscribe((result: any) => {\n        if (result) {\n          this.dataservice.sendSubFormDelete(this.deletedQuestionId);\n        }\n      });\n    }\n    transalationDelete(id: any) {\n      for (let k = this.translations.length - 1; k >= 0; k--) {\n        let translate = this.translations[k];\n        if (translate.elementId == id) {\n          this.translations.splice(k, 1);\n        }\n      }\n    }\n    deleteGrids(id: any) {\n      for (let i = 0; i < this.pages.length; i++) {\n        for(let k = 0; k < this.pages[i].rows.length; k++){\n            if (this.pages[i].rows[k].grids[0].elementId == id) {\n                // Remove the entire row from the rows array\n                this.pages[i].rows.splice(k, 1);\n                // Decrement k to ensure that the next iteration does not skip the next row\n                k--;\n            }\n        }\n    }\n    \n    }\n    getIds(child: any, id: any) {\n      if(child.length== undefined){\n        for (let i = 0; i < child.formElements.length; i++) {\n          const item = child.formElements[i];\n          if (item.element.id) {\n            this.selectedids.push(item.element.id);\n          }\n          const formElements = item?.element?.childLogics;\n          if (formElements) {\n            for (let k = 0; k < formElements.length; k++) {\n              this.getIds(formElements[k], id); // Pass formElements to recursive call\n            }\n          }\n        }\n      }\n      else{\n      for (let i = 0; i < child.length; i++) {\n        const item = child[i];\n        if (item.id) {\n          this.selectedids.push(item.id);\n        }\n        const formElements = item.formElements;\n        if (formElements) {\n          for (let j = 0; j < formElements.length; j++) {\n            const element = formElements[j];\n            if (element.element && element.element.id) {\n              this.selectedids.push(element.element.id);\n            }\n            if (element.element && element.element.childLogics) {\n              let childLogics = element.element.childLogics; // Renamed to avoid naming conflict\n              for (let k = 0; k < childLogics.length; k++) {\n                this.getIds(childLogics[k], id); // Pass formElements to recursive call\n              }\n            }\n          }\n        }\n      }\n    }\n    }\n    trackByChildLogicFn(index: number, childLogic: any): number {\n      return childLogic.id; // Assuming 'id' is a unique identifier for each childLogic\n    }\n    handleInput() {\n      const inputField = this.elementRef.nativeElement.querySelector('#textField');\n      const textWidth = this.inputValue.length * 8; \n      inputField.style.width = Math.max(textWidth, 10) + 'px';\n    }\n    \n    handleKeyDown(event: KeyboardEvent, childLogic: any) {\n      if (event.key === 'Enter') {\n        const inputField = this.elementRef.nativeElement.querySelector('#textField');\n        const inputValue = this.inputValue.trim();\n        if (inputValue !== '') {\n          if (!Array.isArray(childLogic.inputValue)) {\n            childLogic.inputValue = [];\n          }\n          childLogic.inputValue.push(inputValue);\n          this.inputValue = '';\n          inputField.style.width = '10px';\n        }\n      }\n    }\n    \n    removeOption(optionValue: string, childLogic: any) {\n      const index = childLogic.inputValue.indexOf(optionValue);\n      if (index > -1) {\n        childLogic.inputValue.splice(index, 1);\n      }\n    }\n  \n    onTranslationsUpdated(updatedTranslations: any) {\n      this.translations = updatedTranslations;\n      this.translationsUpdated.emit(this.translations);\n    }\n    selectSubForm(question: any) {\n      if (question.element.id !== this.selectedForm?.id) {\n        this.selectedForm = question;\n      }\n    }\n    optionUpdates(data: any) {\n      this.pages.forEach((page: any) => {\n        page.formElements?.forEach((formElement: any) => {\n          if(formElement.entityType === 'QUESTION_GROUP') {\n            formElement.element.formElements.forEach((element: any) => {\n              if (element?.element.id === data.element.id) {\n                element.element = {...data.element};\n              } \n            });\n            \n          }\n        });\n      });\n      \n    }\n\n    newpagesUpdated(updatedPages: any[]): void {\n      this.newpages.emit(updatedPages);\n    }\n\n    generateFieldName(){\n      if (!this.testElementName) {\n        const id = this.questionGroup.id || this.questionGroup.element?.id;\n        this.testElementName = this.dataservice.getStableTestName('question-group', id);\n        if(this.questionGroup.element){\n          this.questionGroup.element.testElementName = this.testElementName;\n        }else{\n          this.questionGroup.testElementName = this.testElementName;\n        }\n      }\n    }\n\n    toggleMenu() {\n      const myId = this.questionGroup.id || this.questionGroup.element?.id;\n      if (this.isMenuOpen) {\n        this.dataservice.setOpenMenuId(null); // close\n      } else {\n        this.dataservice.setOpenMenuId(myId); // open this one\n      }\n    }\n  \n    @HostListener('document:click', ['$event'])\n    onClickOutside(event: MouseEvent) {\n    const clickedInside = (event.target as HTMLElement).closest('.element-menu-action-button');\n      if (!clickedInside) {\n        this.dataservice.setOpenMenuId(null);\n      }\n    }\n  \n    openElementIdModal(){\n      const dialogConfig = new MatDialogConfig();\n      dialogConfig.data = {\n        element: this.questionGroup,\n        pages: this.pages\n      };\n      dialogConfig.hasBackdrop = true;\n      dialogConfig.disableClose = true;\n      const dialogRef = this.dialog.open(ElementIdModalComponent, dialogConfig);\n      dialogRef.afterClosed().subscribe((result: any) => {\n        if (result) {\n          this.questionGroup = result;\n          this.customElementId = this.questionGroup.element.customElementId;\n        }\n      });\n    }\n  \n    openWhenClauseModal() {\n      const dialogConfig = new MatDialogConfig();\n      dialogConfig.data = {\n        element: this.questionGroup,\n        pages: this.pages,\n      };\n      dialogConfig.hasBackdrop = true;\n      dialogConfig.disableClose = true;\n      const dialogRef = this.dialog.open(WhenClauseModalComponent, dialogConfig);\n      dialogRef.afterClosed().subscribe((result: any) => {\n        if (result) {\n          this.questionGroup = result;\n          this.whenClause = result.whenClause;\n        }\n      });\n    }\n  \n    updateWhenClause(savedClauses: any[]): any[] {\n      const updatedClauses = savedClauses.map((clause) => {\n        const exists = this.filteredAllQuestions.some(\n          (q: any) => q.id === clause.questionid\n        );\n  \n        if (!exists) {\n          return {\n            ...clause,\n            questionid: '',\n            condition: '',\n          };\n        }\n  \n        return clause; // unchanged\n      });\n  \n      return updatedClauses;\n    }\n  \n    isWhenClauseValid(whenClause:any): boolean {\n      if(whenClause?.length>0){\n        for (let i = 0; i < whenClause?.length; i++) {\n          const clause = whenClause[i];\n    \n          // Every row must have: question + condition + value\n          if (!clause.questionid || !clause.condition || clause.value === '') {\n            return false;\n          }\n    \n          // From second row onward, logic is also required\n          if (i > 0 && !clause.logic) {\n            return false;\n          }\n        }\n      }\n  \n      return true;\n    }\n  \n    ngOnDestroy() {\n      if (this.pageSubscription) {\n        this.pageSubscription.unsubscribe();\n      }\n    }\n  }\n","<div class=\"row\"  this.questionGroup.element.id  [id]=\"'question-' + this.questionGroup.element.id\">\n    <div class=\"col-12\">\n      <div class=\"outer-rectangle\" [attr.name]=\"testElementName\">\n        <!-- Outer Rectangle -->\n        <div class=\"inner-rectangle\">\n          <!-- Inner Rectangle -->\n          <div class=\"input-container\" [ngClass]=\"{'selected': selectedQuestionId===questionGroup.element.id}\">\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n\n                <div class=\"element-menu-action-button\">\n                  <img src=\"/assets/icons/three-dots-icon.svg\" alt=\"Three dots\" (click)=\"toggleMenu()\" class=\"element-menu-action-icon\">\n\n                  <div class=\"question-menu-container\" [class.show]=\"isMenuOpen\">\n                    <div class=\"question-options\">\n                      <ul class=\"question-action-options\">\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openElementIdModal()\"\n                        >\n                        <img src=\"/assets/icons/element-id-icon.svg\"  class=\"icon-right\">\n                          <span>Element ID</span>\n                        </li>\n                        <li\n                          class=\"question-option\"\n                          (click)=\"openConfirmationModal()\"\n                        >\n                        <img  class=\"icon-right\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\">\n                          <span>Delete</span>\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div class=\"titleContainer\">\n              <label [for]=\"'input1'+questionGroup?.element?.id\" class=\"sec-title mb-3\">Group Name</label>\n              <input type=\"text\" [id]=\"'input1'+questionGroup?.element?.id\" class=\"form-control mb-4\" placeholder=\"Type Here\" [(ngModel)]=\"questionGroupTitle\"\n                (ngModelChange)=\"jsonUpdation()\">\n            </div>\n            <div class=\"descContainer\">\n              <label [for]=\"'description'+questionGroup?.element?.id\" class=\"sec-title mb-3\">Description</label>\n              <quill-editor \n              [id]=\"'description'+questionGroup?.element?.id\"\n              [(ngModel)]=\"questionGroupDescription\"\n              (ngModelChange)=\"jsonUpdation()\"\n              (onEditorCreated)=\"editorCreated($event)\"\n              class=\"editor\"\n              ></quill-editor>\n\n            </div>\n            <div>\n              <ng-container *ngFor=\"let subRow of grid.rows\">\n                <ng-container *ngFor=\"let subGrid of subRow.grids\">\n                  <ng-container *ngIf=\"subGrid.entityType == 'QUESTION'\">\n                    <div *ngFor=\"let question of questionGroup.element.formElements\">\n                      <ng-container *ngIf=\"subGrid.elementId == question.element?.id\">\n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'TEXT_AREA'\">\n                          <lib-text-area-fields [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"></lib-text-area-fields>\n                          <div *ngIf=\"question.element.childLogics?.length>0\">\n                            <div class=\"logic-container\"  *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                              <p class=\"logic-heading\">Logic</p>\n                              <div class=\"logic-condition\">\n                                <p class=\"logic-text\">If answer</p>\n                                <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                  <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                  </option>\n                                </select>\n                                <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                <p class=\"logic-text ms-2\">then</p>\n                                <div class=\"logic-add-btn\">\n                                  <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                    <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                    <a class=\"add-qstn-text\">Add Question</a>\n                                  </div>\n                                  <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                    <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                  </button>\n                                </div>\n                                <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                              </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                            </div>\n                          </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'TEXT_BOX'\">\n                          <lib-textbox [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                            ></lib-textbox>\n                          <div *ngIf=\"question.element.childLogics?.length>0\">\n                            <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                              <p class=\"logic-heading\">Logic</p>\n                              <div class=\"logic-condition\">\n                                <p class=\"logic-text\">If answer</p>\n                                <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                  <option *ngFor=\"let option of textComparison\" [value]=\"option.value\">{{ option.label }}\n                                  </option>\n                                </select>\n                                <input type=\"text\" class=\"logic-input\" [(ngModel)]=\"childLogic.inputValue\">\n                                <p class=\"logic-text ms-2\">then</p>\n                                <div class=\"logic-add-btn\">\n                                  <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                    <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                    <a class=\"add-qstn-text\">Add Question</a>\n                                  </div>\n                                  <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                    <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                  </button>\n                                  <ul class=\"dropdown-menu logic-dropdown-menu\">\n                                    <li><a (click)=\"addSection()\" class=\"dropdown-item\">Add section</a></li>\n                                    <li><a (click)=\"addNewSubForm()\" class=\"dropdown-item\">Add form</a></li>\n                                  </ul>\n                                </div>\n                                <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                              </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                            </div>\n                          </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'EMAIL'\">\n                          <lib-mail-fields [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"></lib-mail-fields>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'PASSWORD'\">\n                          <lib-password-fields [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"></lib-password-fields>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'MOBILE'\">\n                          <lib-mobile-fields [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"></lib-mobile-fields>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'RICH_TEXT_EDITOR'\">\n                          <lib-rich-text-editor-fields [question]=\"question\"\n                            [selectedQuestionId]=\"selectedQuestionId\" [translations]=\"translations\" [pages]=\"pages\"\n                            (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"></lib-rich-text-editor-fields>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'NUMBER'\">\n                          <lib-type-number [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                            ></lib-type-number>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'URL'\">\n                          <lib-url-fields [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\">\n                          </lib-url-fields>\n                          <div *ngIf=\"question.element.childLogics?.length>0\">\n                            <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                              <p class=\"logic-heading\">Logic</p>\n                              <div class=\"logic-condition\">\n                                <p class=\"logic-text\">If answer</p>\n                                <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                  <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                  </option>\n                                </select>\n                                <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                <p class=\"logic-text ms-2\">then</p>\n                                <div class=\"logic-add-btn\">\n                                  <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                    <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                    <a class=\"add-qstn-text\">Add Question</a>\n                                  </div>\n                                  <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                    <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                  </button>\n                                </div>\n                                <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                              </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                            </div>\n                          </div>\n                        </ng-container>\n\n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'CURRENCY'\">\n                          <lib-currency-fields [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\">\n                          </lib-currency-fields>\n                          <div *ngIf=\"question.element.childLogics?.length>0\">\n                            <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                              <p class=\"logic-heading\">Logic</p>\n                              <div class=\"logic-condition\">\n                                <p class=\"logic-text\">If answer</p>\n                                <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                  <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                  </option>\n                                </select>\n                                <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                <p class=\"logic-text ms-2\">then</p>\n                                <div class=\"logic-add-btn\">\n                                  <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                    <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                    <a class=\"add-qstn-text\">Add Question</a>\n                                  </div>\n                                  <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                    <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                  </button>\n                                </div>\n                                <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                              </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                            </div>\n                          </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'DROP_DOWN'\">\n                          <lib-drop-down [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                            (newpages)=\"newpagesUpdated($event)\"\n                            [questions]=\"pages\" (questionUpdated)=\"optionUpdates($event)\"></lib-drop-down>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of dropdownComparison\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input\" [(ngModel)]=\"childLogic.inputValue\"\n                                    *ngIf=\"childLogic.condition=='=' || childLogic.condition=='!='\">\n                                    <div class=\"inputBox ms-2\"\n                                    *ngIf=\"childLogic.condition=='IN' || childLogic.condition=='NOT IN'\">\n                                    <div class=\"inputBoxLabels\" id=\"inputBoxLabels\">\n                                      <span class=\"inputBoxLabel\" *ngFor=\"let option of childLogic?.inputValue\">\n                                        {{option}}\n                                        <span class=\"close\" (click)=\"removeOption(option,childLogic)\">x</span>\n                                      </span>\n                                    </div>\n                                    <input class=\"textField\" type=\"text\" id=\"textField\" name=\"textField\"\n                                    (input)=\"handleInput()\" (keydown)=\"handleKeyDown($event,childLogic)\"\n                                    [(ngModel)]=\"inputValue\">\n                                  </div>\n      \n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'RADIO_BUTTON'\">\n                          <lib-drop-down  [question]=\"question\"\n                            [selectedQuestionId]=\"selectedQuestionId\" [translations]=\"translations\" [pages]=\"pages\"\n                            (click)=\"selectQuestion(question.element)\"\n                            (newpages)=\"newpagesUpdated($event)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                            [questions]=\"pages\" (questionUpdated)=\"optionUpdates($event)\"></lib-drop-down>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of dropdownComparison\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input\" [(ngModel)]=\"childLogic.inputValue\"\n                                    *ngIf=\"childLogic.condition=='=' || childLogic.condition=='!='\">\n                                    <div class=\"inputBox ms-2\"\n                                    *ngIf=\"childLogic.condition=='IN' || childLogic.condition=='NOT IN'\">\n                                    <div class=\"inputBoxLabels\" id=\"inputBoxLabels\">\n                                      <span class=\"inputBoxLabel\" *ngFor=\"let option of childLogic?.inputValue\">\n                                        {{option}}\n                                        <span class=\"close\" (click)=\"removeOption(option,childLogic)\">x</span>\n                                      </span>\n                                    </div>\n                                    <input class=\"textField\" type=\"text\" id=\"textField\" name=\"textField\"\n                                    (input)=\"handleInput()\" (keydown)=\"handleKeyDown($event,childLogic)\"\n                                    [(ngModel)]=\"inputValue\">\n                                  </div>\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'CHECK_BOX'\">\n                          <lib-drop-down [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                            (newpages)=\"newpagesUpdated($event)\"\n                            [questions]=\"pages\" (questionUpdated)=\"optionUpdates($event)\"></lib-drop-down>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of dropdownComparison\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input\" [(ngModel)]=\"childLogic.inputValue\"\n                                    *ngIf=\"childLogic.condition=='=' || childLogic.condition=='!='\">\n                                    <div class=\"inputBox ms-2\"\n                                    *ngIf=\"childLogic.condition=='IN' || childLogic.condition=='NOT IN'\">\n                                    <div class=\"inputBoxLabels\" id=\"inputBoxLabels\">\n                                      <span class=\"inputBoxLabel\" *ngFor=\"let option of childLogic?.inputValue\">\n                                        {{option}}\n                                        <span class=\"close\" (click)=\"removeOption(option,childLogic)\">x</span>\n                                      </span>\n                                    </div>\n                                    <input class=\"textField\" type=\"text\" id=\"textField\" name=\"textField\"\n                                    (input)=\"handleInput()\" (keydown)=\"handleKeyDown($event,childLogic)\"\n                                    [(ngModel)]=\"inputValue\">\n                                  </div>\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'FILE_PICKER'\">\n                          <lib-file-picker-fields [question]=\"question\"\n                            [selectedQuestionId]=\"selectedQuestionId\" [translations]=\"translations\" [pages]=\"pages\"\n                            (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"></lib-file-picker-fields>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'DATE_TIME'\">\n                          <lib-date-time-fields [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"></lib-date-time-fields>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'SLIDER'\">\n                          <lib-slider-fields [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"></lib-slider-fields>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'SIGNATURE'\">\n                          <lib-signature-fields [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"></lib-signature-fields>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'LOCATION'\">\n                          <lib-location-fields [question]=\"question\" [selectedQuestionId]=\"selectedQuestionId\"\n                            [translations]=\"translations\" [pages]=\"pages\" (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"></lib-location-fields>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'TERMS_AND_CONDITION'\">\n                          <lib-terms-and-condition-fields [question]=\"question\"\n                            [selectedQuestionId]=\"selectedQuestionId\" [translations]=\"translations\" [pages]=\"pages\"\n                            (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"></lib-terms-and-condition-fields>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'TOGGLE_SWITCH'\">\n                          <lib-toggle-switch-fields [question]=\"question\"\n                            [selectedQuestionId]=\"selectedQuestionId\" [translations]=\"translations\" [pages]=\"pages\"\n                            (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"></lib-toggle-switch-fields>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n      \n                        <ng-container *ngIf=\"question.element?.formElement?.elementType === 'SELECTION_MATRIX'\">\n                          <lib-selection-matrix-fields [question]=\"question\"\n                            [selectedQuestionId]=\"selectedQuestionId\" [translations]=\"translations\" [pages]=\"pages\"\n                            (click)=\"selectQuestion(question.element)\"\n                            (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                            (translationsUpdated)=\"onTranslationsUpdated($event)\"></lib-selection-matrix-fields>\n                            <div *ngIf=\"question.element.childLogics?.length>0\">\n                              <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics; trackBy: trackByChildLogicFn\">\n                                <p class=\"logic-heading\">Logic</p>\n                                <div class=\"logic-condition\">\n                                  <p class=\"logic-text\">If answer</p>\n                                  <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n                                    <option *ngFor=\"let option of comparisonOptions\" [value]=\"option.value\">{{ option.label }}\n                                    </option>\n                                  </select>\n                                  <input type=\"text\" class=\"logic-input text-center\" [(ngModel)]=\"childLogic.inputValue\">\n                                  <p class=\"logic-text ms-2\">then</p>\n                                  <div class=\"logic-add-btn\">\n                                    <div class=\"add-qstn-btn\" (click)=\"addNewChildQuestion(question.element.id,childLogic)\">\n                                      <img  class=\"icon-field-add me-2\" src=\"/assets/icons/add-question-icon.svg\">\n      \n                                      <a class=\"add-qstn-text\">Add Question</a>\n                                    </div>\n                                    <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n                                      <img  class=\"icon-darrow-btn-blue ms-2\" src=\"/assets/icons/down-arrow-blue-icon.svg\">\n                                    </button>\n                                  </div>\n                                  <img  (click)=\"deleteLogic(question,childLogic.id)\" class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                                </div>\n                                <lib-recursive-question [question]=\"childLogic.formElements\"\n                                [selectedQuestionId]=\"selectedQuestionId\"\n                                [pages]=\"pages\"\n                                [translations]=\"translations\"></lib-recursive-question>\n                              </div>\n                            </div>\n                        </ng-container>\n                        <ng-container *ngIf=\"\n                      question.element?.formElement?.elementType ===\n                      'AGGREGATE_FUNCTION'\n                    \">\n                        <lib-aggregate-function\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          [subFormId]=\"questionGroup.element.id\"\n                          [elementType]=\"'QUESTION_GROUP'\"\n                          (click)=\"selectQuestion(question.element)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          (translationsUpdated)=\"\n                            onTranslationsUpdated($event)\n                          \"\n                        >\n                        </lib-aggregate-function>\n                      </ng-container>\n\n                      <ng-container *ngIf=\"\n                      question.element?.formElement?.elementType ===\n                      'HIDDEN_FIELD'\n                    \">\n                        <lib-hidden-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          (translationsUpdated)=\"\n                            onTranslationsUpdated($event)\n                          \"\n                        >\n                        </lib-hidden-fields>\n                      </ng-container>\n\n                      <ng-container *ngIf=\"\n                      question.element?.formElement?.elementType ===\n                      'IFRAME_WIDGET'\n                    \">\n                        <lib-iframe-fields\n                          [question]=\"question\"\n                          [selectedQuestionId]=\"selectedQuestionId\"\n                          [translations]=\"translations\"\n                          [pages]=\"pages\"\n                          (click)=\"selectQuestion(question.element)\"\n                          (deleteQuestion)=\"deleteQuestion(question.element.id)\"\n                          (translationsUpdated)=\"\n                            onTranslationsUpdated($event)\n                          \"\n                        >\n                        </lib-iframe-fields>\n                      </ng-container>\n\n                      </ng-container>\n                    </div>\n                  </ng-container>\n                </ng-container>\n              </ng-container>\n\n             <div class=\"d-flex justify-content-between align-items-center\">\n              <div class=\"custom-element-id-container\">\n                <div *ngIf=\"customElementId\">\n                  <span>Element ID - {{customElementId}}</span>\n                </div>\n              </div>\n              <div class=\"add-qstn-button\">\n                <button\n                [ngClass]=\"{\n                  'has-rules': whenClause?.whenClauseCondition?.length > 0,\n                  'when-clause-highlight': !isWhenClauseValid(whenClause?.whenClauseCondition)\n                }\"\n                type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"openWhenClauseModal()\">When ?\n                <span \n                  *ngIf=\"whenClause?.whenClauseCondition?.length > 0\"\n                  class=\"when-rule-count\"\n                >\n                  ({{ whenClause?.whenClauseCondition?.length }} \n                  {{ whenClause?.whenClauseCondition?.length === 1 ? 'Rule' : 'Rules' }})\n                </span>\n              </button>\n                <div class=\"btn-group\" role=\"group\" aria-label=\"Button group with nested dropdown\">\n                  <div class=\"button-container\" (click)=\"addNewQuestion(questionGroup.element.id)\">\n                    <img\n                      class=\"icon-field-add\"\n                      src=\"/assets/icons/field-add-icon.svg\"\n                      alt=\"Arrow Icon\"\n                      loading=\"lazy\"\n                    />\n                    <button\n                      type=\"button\"\n                      class=\"btn text-primary p-0 fontFamily\"\n                    >\n                      Add Questions\n                    </button>\n                  </div>\n                </div>\n              </div>\n             </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { CONSTANTS } from '../../shared/constants';\nimport { DataService } from '../../services/data.service';\n\n@Component({\n  selector: 'lib-question-logic',\n  templateUrl: './question-logic.component.html',\n  styleUrls: ['./question-logic.component.scss'],\n})\nexport class QuestionLogicComponent {\n  @Input() options: any = [];\n  @Input() selectedQuestionId: string = '';\n\n  @Input() question: any = [];\n  @Input() pages: any = [];\n  @Input() pageId: string = '';\n  @Input() primaryColor: string = '';\n  @Input() secondaryColor: string = '';\n  @Input() translations: any = CONSTANTS.translations;\n  @Output() newpages: EventEmitter<any[]> = new EventEmitter<any[]>();\n\n  editingIndex: number = -1;\n  @Output() translationsUpdated: EventEmitter<any> = new EventEmitter<any>();\n  @ViewChild('textInput') textInput!: ElementRef<HTMLInputElement>;\n  selectedPage: any;\n  logicId: any;\n  selectedids: any = [];\n  inputValue: string = '';\n\n  constructor(private elementRef: ElementRef,private dataservice:DataService) {}\n\n  ngOnInit(){\n  }\n\n  onTranslationsUpdated(updatedTranslations: any) {\n    this.translations = updatedTranslations;\n    this.translationsUpdated.emit(this.translations);\n  }\n\n  deleteLogic(question: any, id: any) {\n    const deletedItems = question.childLogics.filter(\n      (item: { id: any }) => item.id === id\n    );\n    question.childLogics = question.childLogics.filter(\n      (item: { id: any }) => item.id !== id\n    );\n\n    let idsToDelete: any[] = [];\n    deletedItems.forEach((item: { formElements: any[] }) => {\n      item.formElements.forEach((element): void => {\n        const elementId = element.element.id;\n        element.element?.formElements?.forEach((recursiveFormElement: any) => {\n          idsToDelete.push(recursiveFormElement.element.id);\n          this.deleteQuestion(recursiveFormElement.element.id);\n        });\n        idsToDelete.push(elementId);\n        this.deleteQuestion(elementId);\n\n        // If the element has nested child logics, we need to recursively call deleteLogic\n        if (element.element.childLogics) {\n          element.element.childLogics.forEach((nestedLogic: { id: any }) => {\n            this.deleteLogic(element.element, nestedLogic.id);\n            idsToDelete.push(nestedLogic.id);\n          });\n        }\n      });\n    });\n    for (let m = 0; m < idsToDelete.length; m++) {\n      this.transalationDelete(idsToDelete[m]);\n    }\n    this.dataservice.sendPages(this.pages);\n  }\n\n  deleteQuestion(id: any) {\n    const removeElementsById = (elements: any[], id: any) => {\n      return elements.filter((element) => element.id !== id);\n    };\n\n    const removeGridsById = (rows: any[], id: any) => {\n      rows.forEach((row) => {\n        row.grids = row.grids.filter(\n          (grid: { elementId: any }) => grid.elementId !== id\n        );\n      });\n    };\n\n    // Remove question from formElements\n    this.pages.forEach((page: { formElements: any[] }) => {\n      page.formElements = removeElementsById(page.formElements, id);\n    });\n\n    // Remove grids from rows\n    this.pages.forEach((page: { rows: any[] }) => {\n      removeGridsById(page.rows, id);\n    });\n\n    // Remove rows that have no grids\n    this.pages.forEach((page: { rows: any[] }) => {\n      page.rows = page.rows.filter((row) => row.grids.length > 0);\n    });\n\n    // Remove translations\n    this.translations = this.translations.filter(\n      (translate: { elementId: any }) => translate.elementId !== id\n    );\n    this.onTranslationsUpdated(this.translations);\n    // Recursively delete child questions\n\n    for (let i = 0; i < this.pages.length; i++) {\n      let page = this.pages[i];\n\n      for (let j = 0; j < page.rows.length; j++) {\n        let row = page.rows[j];\n\n        // Recursively handle grids with nested rows\n        const removeGridWithElementId = (grids: any[], id: string) => {\n          return grids.filter((grid: any) => {\n            // If grid has nested rows, process them\n            if (grid.rows) {\n              grid.rows.forEach((innerRow: any) => {\n                innerRow.grids = removeGridWithElementId(innerRow.grids, id);\n              });\n\n              // If all inner grids are removed, remove the row\n              grid.rows = grid.rows.filter(\n                (innerRow: any) => innerRow.grids.length > 0\n              );\n            }\n\n            // Return only grids that don't match the elementId\n            return grid.elementId !== id;\n          });\n        };\n\n        // Update grids in the current row by filtering out the matching elementId\n        row.grids = removeGridWithElementId(row.grids, id);\n      }\n\n      // After processing all rows, remove rows that have no grids left\n      page.rows = page.rows.filter((row: any) => row.grids.length > 0);\n    }\n  }\n  deleteChildQuestion(pages: any[], id: any): void {\n    for (let i = 0; i < pages.length; i++) {\n      const page = pages[i];\n      const questions = page.formElements ? page.formElements : page.element;\n      for (let j = 0; j < questions?.length; j++) {\n        const question = questions[j];\n        // Check if the current question ID matches the provided ID\n        if (question.element.id === id) {\n          this.getIds(question, id);\n          for (let m = 0; m < this.selectedids.length; m++) {\n            this.transalationDelete(this.selectedids[m]);\n            this.deleteGrids(this.selectedids[m]);\n          }\n          // If it's a match, delete the question\n          questions.splice(j, 1);\n          j--; // Decrement j to account for the removed element\n        } else {\n          // If it's not a match, recursively check child questions\n          const childQuestions = question.element.childLogics\n            ? question.element.childLogics\n            : question.childLogics;\n          if (childQuestions && childQuestions.length > 0) {\n            this.deleteChildQuestion(childQuestions, id);\n          }\n        }\n      }\n    }\n    for (let k = 0; k < this.translations.length; k++) {\n      let translate = this.translations[k];\n      if (translate.elementId == id) {\n        this.translations.splice(k, 1);\n      }\n    }\n    for (let i = 0; i < this.pages.length; i++) {\n      let page = this.pages[i];\n      for (let j = 0; j < page.rows.length; j++) {\n        let row = page.rows[j];\n        row.grids = row.grids.filter((grid: any) => {\n          return grid.elementId != id;\n        });\n      }\n    }\n    for (let i = 0; i < this.pages.length; i++) {\n      let page = this.pages[i];\n      for (let j = 0; j < page.rows.length; j++) {\n        let row = page.rows[j];\n        if (row.grids.length == 0) {\n          page.rows.splice(j, 1);\n        }\n      }\n    }\n  }\n  transalationDelete(id: any) {\n    for (let k = this.translations.length - 1; k >= 0; k--) {\n      let translate = this.translations[k];\n      if (translate.elementId == id) {\n        this.translations.splice(k, 1);\n      }\n    }\n\n    this.onTranslationsUpdated(this.translations);\n  }\n  addNewChildQuestion(pageId: any, questionId: any, logicId: any) {\n    if (logicId == 'firstChild') {\n      logicId = this.logicId;\n    }\n    if (pageId == '') {\n      pageId = this.selectedPage;\n    }\n    let newQuestionId = uuidv4();\n    let rowId = uuidv4();\n    let newQuestion = {\n      entityType: 'QUESTION',\n      element: {\n        id: newQuestionId,\n        required: false,\n        hint: '',\n        question: '',\n        formElement: {\n          elementType: 'TEXT_BOX',\n          appearance: {\n            fontSize: 22,\n            textAlign: '',\n            font: 'Poppins',\n            underline: false,\n            bold: false,\n            italics: false,\n            placeholder: '',\n            defaultValue: '',\n          },\n          validation: {\n            validationType: null,\n            regex: '',\n            validation: '',\n          },\n        },\n      },\n    };\n\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: newQuestionId,\n          entityType: 'QUESTION',\n          count: 12,\n        },\n      ],\n    };\n\n    let nameTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let helpTextTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'HELP_TEXT',\n      translatedText: '',\n    };\n\n    let placeholderTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'PLACEHOLDER',\n      translatedText: '',\n    };\n    const page = this.pages.find((page: any) => page.id == pageId);\n    let question;\n    for (const element of page.formElements) {\n      if (\n        element.entityType === 'QUESTION' &&\n        element.element.id === questionId\n      ) {\n        question = element;\n        break;\n      } else if (element.entityType === 'SUBFORM') {\n        // If the element is a subform, iterate through its formElements\n        for (const subElement of element.element.formElements) {\n          if (\n            subElement.entityType === 'QUESTION' &&\n            subElement.element.id === questionId\n          ) {\n            question = subElement;\n            break;\n          }\n        }\n        if (question) break; // Exit the loop if question is found\n      }\n    }\n    if (question == undefined) {\n      this.addChildQuestions(page, logicId, newQuestion);\n    } else {\n      for (let k = 0; k < question.element.childLogics.length; k++) {\n        if (question.element.childLogics[k].id == logicId) {\n          if (question.element.childLogics[k].formElements == undefined) {\n            let element: any = [];\n            element.push(newQuestion);\n            question.element.childLogics[k].formElements = element;\n          } else {\n            question.element.childLogics[k].formElements.push(newQuestion);\n          }\n        }\n      }\n    }\n    this.addRowToMatchingQuestion(page, newRow, questionId);\n    this.translations.push(nameTranslation);\n    this.translations.push(helpTextTranslation);\n    this.translations.push(placeholderTranslation);\n    this.onTranslationsUpdated(this.translations);\n    this.selectedQuestionId = newQuestionId;\n  }\n\n  addRowToMatchingQuestion(page: any, newRow: any, questionId: any) {\n    let rowAdded = false;\n\n    // Iterate through rows\n    page.rows.forEach((row: any) => {\n      row.grids.forEach((grid: any) => {\n        // Check if the elementId matches the questionId\n        if (grid.elementId === questionId) {\n          // Ensure grid has a 'rows' property to push into\n          if (!grid.rows) {\n            grid.rows = [];\n          }\n          grid.rows.push(newRow); // Push the new row into the matching grid\n          rowAdded = true; // Indicate the row was added\n        }\n      });\n    });\n\n    // Handle case where no matching elementId was found\n    if (!rowAdded) {\n      console.warn('No matching questionId found to add the row.');\n    }\n  }\n\n  addNewChildSection(pageId: any, questionId: any, logicId: any) {\n    if (logicId == 'firstChild') {\n      logicId = this.logicId;\n    }\n    if (pageId == '') {\n      pageId = this.selectedPage;\n    }\n    let sectionId = uuidv4();\n    let rowId = uuidv4();\n    let newSection = {\n      entityType: 'SECTION',\n      element: {\n        id: sectionId,\n        title: '',\n        description: '',\n        count: 12,\n      },\n    };\n\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: sectionId,\n          entityType: 'SECTION',\n          count: 12,\n        },\n      ],\n    };\n\n    let sectionNameTranslation = {\n      elementId: sectionId,\n      entityType: 'SECTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let sectionDescTranslation = {\n      elementId: sectionId,\n      entityType: 'SECTION',\n      language: 'eng',\n      attribute: 'DESCRIPTION',\n      translatedText: '',\n    };\n    const page = this.pages.find((page: any) => page.id == pageId);\n\n    let section;\n    for (const element of page.formElements) {\n      if (\n        element.entityType === 'SECTION' &&\n        element.element.id === questionId\n      ) {\n        section = element;\n        break;\n      } else if (element.entityType === 'SUBFORM') {\n        for (const subElement of element.element.formElements) {\n          if (\n            subElement.entityType === 'SECTION' &&\n            subElement.element.id === questionId\n          ) {\n            section = subElement;\n            break;\n          }\n        }\n        if (section) break; // Exit the loop if question is found\n      }\n    }\n    if (section === undefined) {\n      const getPage = this.addChildLogic(page, logicId, newSection);\n      //page.formElements.push(getPage)\n    }\n\n    // page.formElements.push(newSection);\n    this.addRowToMatchingQuestion(page,newRow,questionId)\n    this.translations.push(sectionNameTranslation);\n    this.translations.push(sectionDescTranslation);\n  }\n\n  addChildLogic(page: any, logicId: any, newSection: any) {\n    for (const formElement of page.formElements) {\n      const mainLogics = formElement.element?.childLogics || [];\n\n      for (const logic of mainLogics) {\n        if (logic.id === logicId) {\n          logic.formElements.push(newSection);\n        }\n      }\n    }\n    return page;\n  }\n\n  addSubForms(pageId: any, questionId: any, logicId: any) {\n    if (logicId == 'firstChild') {\n      logicId = this.logicId;\n    }\n    if (pageId == '') {\n      pageId = this.selectedPage;\n    }\n    let newQuestionId = uuidv4();\n    let rowId = uuidv4();\n    let questionRowId = uuidv4();\n    let subFormId = uuidv4();\n    let newSubForm = {\n      entityType: 'SUBFORM',\n      element: {\n        count: 12,\n        id: subFormId,\n        title: '',\n        description: '',\n        required: false,\n        formElements: [],\n        property: {\n          subFormStructure: \"single\",\n          enableInlineEditing: false\n        }\n      },\n    };\n    let newSubFormQuestion: any = [\n      {\n        entityType: 'QUESTION',\n        element: {\n          id: newQuestionId,\n          required: false,\n          hint: '',\n          question: '',\n          formElement: {\n            elementType: 'TEXT_BOX',\n            appearance: {\n              fontSize: 22,\n              textAlign: '',\n              font: 'Poppins',\n              underline: false,\n              bold: false,\n              italics: false,\n              placeholder: '',\n              defaultValue: '',\n            },\n            validation: {\n              validationType: null,\n              regex: '',\n              validation: '',\n            },\n          },\n        },\n      },\n    ];\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: subFormId,\n          entityType: 'SUBFORM',\n          count: 12,\n          rows: [\n            {\n              id: questionRowId,\n              grids: [\n                {\n                  elementId: newQuestionId,\n                  entityType: 'QUESTION',\n                  count: 12,\n                },\n              ],\n            },\n          ],\n        },\n      ],\n    };\n\n    let titleTranslation = {\n      elementId: subFormId,\n      entityType: 'SUBFORM',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let descriptionTextTranslation = {\n      elementId: subFormId,\n      entityType: 'SUBFORM',\n      language: 'eng',\n      attribute: 'DESCRIPTION',\n      translatedText: '',\n    };\n    let nameTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let helpTextTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'HELP_TEXT',\n      translatedText: '',\n    };\n\n    let placeholderTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'PLACEHOLDER',\n      translatedText: '',\n    };\n\n    const page = this.pages.find((page: any) => page.id == pageId);\n\n    let section;\n    for (const element of page.formElements) {\n      if (\n        element.entityType === 'SECTION' &&\n        element.element.id === questionId\n      ) {\n        section = element;\n        break;\n      } else if (element.entityType === 'SUBFORM') {\n        for (const subElement of element.element.formElements) {\n          if (\n            subElement.entityType === 'SECTION' &&\n            subElement.element.id === questionId\n          ) {\n            section = subElement;\n            break;\n          }\n        }\n        if (section) break; // Exit the loop if question is found\n      }\n    }\n    if (section === undefined) {\n      this.addChildLogic(page, logicId, newSubForm);\n      //page.formElements.push(getPage)\n    }\n\n    newSubForm.element.formElements = newSubFormQuestion;\n    //page.formElements.push(newSubForm);\n    this.addRowToMatchingQuestion(page,newRow,questionId)\n    this.translations.push(titleTranslation);\n    this.translations.push(descriptionTextTranslation);\n    this.translations.push(nameTranslation);\n    this.translations.push(helpTextTranslation);\n    this.translations.push(placeholderTranslation);\n  }\n\n  addChildQuestions(page: any, logicId: any, newQuestion: any) {\n    const addQuestionToLogic = (\n      logics: any[],\n      logicId: any,\n      newQuestion: any\n    ) => {\n      for (const logic of logics) {\n        for (const formElement of logic.formElements || []) {\n          const element = formElement.element;\n          if (element?.childLogics) {\n            for (const childLogic of element.childLogics) {\n              if (childLogic.id === logicId) {\n                childLogic.formElements = childLogic.formElements || [];\n                childLogic.formElements.push(newQuestion);\n                return true;\n              }\n              if (addQuestionToLogic([childLogic], logicId, newQuestion)) {\n                return true;\n              }\n            }\n          }\n        }\n      }\n      return false;\n    };\n\n    for (const formElement of page.formElements) {\n      if (formElement.entityType === 'SUBFORM') {\n        const subFormElements = formElement.element?.formElements || [];\n        for (const subFormElement of subFormElements) {\n          const mainLogics = subFormElement.element?.childLogics || [];\n          if (addQuestionToLogic(mainLogics, logicId, newQuestion)) {\n            return;\n          }\n        }\n      } else {\n        const mainLogics = formElement.element?.childLogics || [];\n        if (addQuestionToLogic(mainLogics, logicId, newQuestion)) {\n          return;\n        }\n      }\n    }\n  }\n\n  deleteGrids(id: any) {\n    for (let i = 0; i < this.pages.length; i++) {\n      let page = this.pages[i];\n\n      for (let j = 0; j < page.rows.length; j++) {\n        let row = page.rows[j];\n\n        // Recursively handle grids with nested rows\n        const removeGridWithElementId = (grids: any[], id: string) => {\n          return grids.filter((grid: any) => {\n            // If grid has nested rows, process them\n            if (grid.rows) {\n              grid.rows.forEach((innerRow: any) => {\n                innerRow.grids = removeGridWithElementId(innerRow.grids, id);\n              });\n\n              // If all inner grids are removed, remove the row\n              grid.rows = grid.rows.filter(\n                (innerRow: any) => innerRow.grids.length > 0\n              );\n            }\n\n            // Return only grids that don't match the elementId\n            return grid.elementId !== id;\n          });\n        };\n\n        // Update grids in the current row by filtering out the matching elementId\n        row.grids = removeGridWithElementId(row.grids, id);\n      }\n\n      // After processing all rows, remove rows that have no grids left\n      page.rows = page.rows.filter((row: any) => row.grids.length > 0);\n    }\n  }\n  getIds(child: any, id: any) {\n    if (child.element != undefined) {\n      this.selectedids.push(child.element.id);\n    }\n    if (child?.element?.childLogics?.length != undefined) {\n      let logic = child.element.childLogics;\n      for (let i = 0; i < logic.length; i++) {\n        const item = logic[i];\n        if (item.id) {\n          this.selectedids.push(item.id);\n        }\n        const formElements = item.formElements;\n        if (formElements) {\n          for (let j = 0; j < formElements.length; j++) {\n            const element = formElements[j];\n            if (element.element && element.element.id) {\n              this.selectedids.push(element.element.id);\n            }\n            if (element.element && element.element.childLogics) {\n              let childLogics = element.element.childLogics; // Renamed to avoid naming conflict\n              for (let k = 0; k < childLogics.length; k++) {\n                this.getIds(childLogics[k], id); // Pass formElements to recursive call\n              }\n            }\n          }\n        }\n      }\n    }\n    if (child?.formElements != undefined) {\n      let elements = child.formElements;\n      for (let i = 0; i < elements.length; i++) {\n        const item = elements[i];\n        if (item.element.id) {\n          this.selectedids.push(item.element.id);\n        }\n        const formElements = item.formElements;\n        if (formElements) {\n          for (let j = 0; j < formElements.length; j++) {\n            const element = formElements[j];\n            if (element.element && element.element.id) {\n              this.selectedids.push(element.element.id);\n            }\n            if (element.element && element.element.childLogics) {\n              let childLogics = element.element.childLogics; // Renamed to avoid naming conflict\n              for (let k = 0; k < childLogics.length; k++) {\n                this.getIds(childLogics[k], id); // Pass formElements to recursive call\n              }\n            }\n          }\n        } else {\n          const element = item.element;\n          if (element && element.id) {\n            this.selectedids.push(element.id);\n          }\n          if (element && element.childLogics) {\n            let childLogics = element.childLogics; // Renamed to avoid naming conflict\n            for (let k = 0; k < childLogics.length; k++) {\n              this.getIds(childLogics[k], id); // Pass formElements to recursive call\n            }\n          }\n        }\n      }\n    }\n  }\n\n\n  handleKeyDown(event: KeyboardEvent, childLogic: any) {\n    const inputElement = event.target as HTMLInputElement;\n    const inputValue = inputElement.value.trim();\n\n    if (event.key === 'Enter' && inputValue !== '') {\n      if (!childLogic.inputValue) {\n        childLogic.inputValue = [];\n      }\n\n      childLogic.inputValue.push(inputValue); // Add value to the correct list\n      inputElement.value = ''; // Clear input after adding\n\n      event.preventDefault();\n    }\n  }\n\n  handleInput(event: Event, childLogic: any) {\n    if (!childLogic) {\n      console.error('childLogic is undefined!');\n      return;\n    }\n\n    const inputElement = event.target as HTMLInputElement;\n    if (inputElement) {\n      const value = inputElement.value;\n      inputElement.style.width = `${Math.max(50, value.length * 10)}px`; // Adjust width dynamically\n    }\n  }\n\n  newUpdatedpages(updatedPages: any[]): void {\n    this.newpages.emit(updatedPages);\n  }\n\n  removeOption(option: string, childLogic: any) {\n    childLogic.inputValue = childLogic.inputValue.filter((item: string) => item !== option);\n  }\n\n\n  editValue(index: number, childLogic: any) {\n    childLogic.currentInput = childLogic.inputValue[index]; // Load value into input\n    this.editingIndex = index;\n  }\n\n\n\n  focusInput(inputElement: HTMLInputElement, childLogic: any) {\n    setTimeout(() => inputElement.focus(), 0);\n  }\n}\n","    <div class=\"logic-container\" *ngFor=\"let childLogic of question.element.childLogics\" [id]=\"'question-' + question.element.id\">\n      <p class=\"logic-heading\">Logic</p>\n      <div class=\"logic-condition\">\n        <p class=\"logic-text\">If answer</p>\n        <select name=\"\" id=\"\" class=\"logic-dropdown\" [(ngModel)]=\"childLogic.condition\">\n          <option *ngFor=\"let option of options\" [value]=\"option.value\">{{\n            option.label }}</option>\n        </select>\n        <input type=\"text\" maxlength=\"150\" class=\"logic-input text-center\"\n          [(ngModel)]=\"childLogic.inputValue\" maxlength=\"150\"\n          *ngIf=\"childLogic.condition === '=' || childLogic.condition === '!=' ||\n          childLogic.condition === 'LIKE' || childLogic.condition === 'NOT LIKE' ||\n          childLogic.condition === 'BEGIN WITH' || childLogic.condition === 'END WITH' ||\n          childLogic.condition === '<' || childLogic.condition === '<=' ||\n          childLogic.condition === '>' || childLogic.condition === '>='\">\n          <div class=\"inputBox ms-2\" *ngIf=\"childLogic.condition=='IN' || childLogic.condition=='NOT IN'\">\n            <div class=\"inputBoxLabels\">\n              <span class=\"inputBoxLabel\" *ngFor=\"let option of childLogic?.inputValue\">\n                {{ option }}\n                <span class=\"close\" (click)=\"removeOption(option, childLogic)\">x</span>\n              </span>\n            </div>\n            <input\n            class=\"textField\"\n            type=\"text\"\n            id=\"textField\"\n            name=\"textField\"\n            (input)=\"handleInput($event, childLogic)\"\n            (keydown)=\"handleKeyDown($event, childLogic)\">\n\n          </div>\n        <div class=\"logic-add-btn\">\n          <div class=\"add-qstn-btn\"\n            (click)=\"addNewChildQuestion(pageId,question.element.id,childLogic.id)\">\n            <img src=\"/assets/icons/add-question-icon.svg\" class=\"icon-field-add me-2\">\n            <a class=\"add-qstn-text\">Add Question</a>\n          </div>\n          <button class=\"logic-arrow-btn\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n            <img src=\"/assets/icons/down-arrow-blue-icon.svg\" class=\"icon-field-add me-2\">\n          </button>\n\n          <ul class=\"dropdown-menu logic-dropdown-menu\">\n            <li><a (click)=\"addNewChildSection(pageId,question.element.id,childLogic.id)\" class=\"dropdown-item\">Add section</a></li>\n            <li><a (click)=\"addSubForms(pageId,question.element.id,childLogic.id)\" class=\"dropdown-item\">Add form</a></li>\n          </ul>\n\n        </div>\n        <img (click)=\"deleteLogic(question.element,childLogic.id)\"  class=\"icon-right delete-logic ms-auto\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n      </div>\n      <lib-recursive-question [question]=\"childLogic.formElements\"\n        [selectedQuestionId]=\"selectedQuestionId\" [pages]=\"pages\"\n        [translations]=\"translations\" [pageId]=\"pageId\"\n        [primaryColor]=\"primaryColor\"\n        [secondaryColor]=\"secondaryColor\"\n        [logicId]=\"childLogic.id\"\n        [inLogic]=\"true\"\n        (translationsUpdated)=\"onTranslationsUpdated($event)\"\n        (newUpdatedpages)=\"newUpdatedpages($event)\"\n        >\n      </lib-recursive-question>\n    </div>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ChangeDetectorRef,\n  Inject,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport {\n  MatDialog,\n  MatDialogConfig,\n  MatDialogRef,\n} from '@angular/material/dialog';\nimport { EmitterComponent } from '../emitters/emitter.component';\nimport { ApiService } from '../../services/api.service';\nimport { v4 as uuidv4 } from 'uuid';\nimport { TransalationComponent } from '../transalation/transalation.component';\nimport { DataService } from '../../services/data.service';\nimport { Subscription } from 'rxjs';\nimport { ToastrService } from 'ngx-toastr';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { WebhooksComponent } from '../webhooks/webhooks.component';\nimport { CONSTANTS, ValidationError } from '../../shared/constants';\nimport { DOCUMENT } from '@angular/common';\nimport { ValidationFailedModalComponent } from '../../shared/validation-failed-modal/validation-failed-modal.component';\nimport { EditStateServiceService } from '../../services/edit-state-service.service';\nimport { ValidationService } from '../../services/validation.service';\n\n@Component({\n  selector: 'lib-create-registration-form',\n  templateUrl: './create-form.component.html',\n  styleUrls: ['./create-form.component.scss'],\n})\nexport class CreateFormComponent {\n  receivedData: any;\n  selectedPage: any;\n  logicId: any;\n  file: any = [];\n  SelectedLanguage: any = ['eng'];\n  fileId: any = [];\n  webhookConflict: boolean = false;\n  emitterConflict: boolean = false;\n  subformId: any;\n  multiFieldId: any;\n  isLogicShow = [\n    'DROP_DOWN',\n    'RADIO_BUTTON',\n    'CHECK_BOX',\n    'NUMBER',\n    'TEXT_BOX',\n    'CURRENCY',\n  ];\n  formStatus!: string;\n\n  private logicIdSubscription: Subscription;\n  private receivedDataSubscription: Subscription;\n  private questionSubscription: Subscription;\n  private pageIdSubscription: Subscription;\n  private logicQuestionSubscription: Subscription;\n  private childQuestionsSubscription: Subscription;\n  private translationSubscription: Subscription;\n  private subFormQuestionSubscription: Subscription;\n  private subFormQuestionsSubscription: Subscription;\n  private newSubFormQuestionsSubscription: Subscription;\n  private subFormSectionsSubscription: Subscription;\n  private sectionSubscription: Subscription;\n  private subFormDeleteSubscription: Subscription;\n  private fileSubscription: Subscription;\n  private languageSubscription: Subscription;\n  private fileIdubscription: Subscription;\n  private subformIdSubscription: Subscription;\n  private multiFieldIdSubscription: Subscription;\n  private multiFieldQuestionsSubscription: Subscription;\n  private subFormNewQuestionSubscription: Subscription;\n  private childSubformSubscription: Subscription;\n  private copiedQuestionSubscription: Subscription;\n  private focuesdQuestionSubscription: Subscription;\n  private copiedSubformSubscription: Subscription;\n\n  private _lastCopiedQuestionElement: any = null;\n  private validationDialogRef: MatDialogRef<ValidationFailedModalComponent> | null =\n    null;\n  private confirmationDialogRef!: MatDialogRef<ConfirmationModalComponent>;\n  dialogRefWebhooks: MatDialogRef<WebhooksComponent> | null = null;\n  dialogRefEmitters: MatDialogRef<EmitterComponent> | null = null;\n\n  constructor(\n    public dialog: MatDialog,\n    private ApiService: ApiService,\n    private dataservice: DataService,\n    private toastr: ToastrService,\n    private elementRef: ElementRef,\n    private cdr: ChangeDetectorRef,\n    private errorStateService: EditStateServiceService,\n    private validationService: ValidationService,\n    @Inject(DOCUMENT) private document: Document\n  ) {\n    this.logicIdSubscription = this.dataservice\n      .getLogicId()\n      .subscribe((data) => {\n        this.logicId = data;\n      });\n\n    this.focuesdQuestionSubscription = this.dataservice\n      .getFocusQuestion()\n      .subscribe((data) => {\n        this.selectQuestion(data);\n      });\n\n    this.receivedDataSubscription = this.dataservice\n      .getData()\n      .subscribe((data) => {\n        this.receivedData = data;\n        this.deleteChildQuestion(this.pages, this.receivedData);\n      });\n\n    this.questionSubscription = this.dataservice\n      .getQuestion()\n      .subscribe((data) => {\n        this.selectQuestion(data);\n      });\n\n    this.sectionSubscription = this.dataservice\n      .getSection()\n      .subscribe((data) => {\n        this.deleteSections(data);\n      });\n\n    this.pageIdSubscription = this.dataservice.getPageId().subscribe((data) => {\n      this.receivedPageId = data;\n    });\n\n    this.logicQuestionSubscription = this.dataservice\n      .getLogicQuestion()\n      .subscribe((data) => {\n        this.addLogic(data);\n      });\n\n    this.childQuestionsSubscription = this.dataservice\n      .getChilQuestions()\n      .subscribe((data) => {\n        this.addNewChildQuestion('', data, 'firstChild');\n      });\n\n    this.translationSubscription = this.dataservice\n      .getTransalation()\n      .subscribe((data) => {\n        this.translations = data;\n      });\n\n    this.subFormQuestionSubscription = this.dataservice\n      .getsubFormQuestionDelete()\n      .subscribe((data) => {\n        this.deleteSubFormQuestion(this.pages, data);\n        this.isQuestionSelected = false;\n      });\n    this.subformIdSubscription = this.dataservice\n      .getSubformId()\n      .subscribe((data) => {\n        this.subformId = data;\n      });\n    this.subFormQuestionsSubscription = this.dataservice\n      .getSubformQuestions()\n      .subscribe((data) => {\n        this.addSubFormQuestion(data);\n      });\n\n    this.newSubFormQuestionsSubscription = this.dataservice\n      .getNewSubFormQuestions()\n      .subscribe((data) => {\n        //this.addNewQuestionsSubForm(data);\n        this.addNewQuestionsSubForm(data);\n      });\n\n    this.subFormSectionsSubscription = this.dataservice\n      .getSubFormSections()\n      .subscribe((data) => {\n        this.addNewSubFormSections(data);\n      });\n\n    this.sectionSubscription = this.dataservice\n      .getSection()\n      .subscribe((data) => {\n        this.deleteSections(data);\n      });\n\n    this.childSubformSubscription = this.dataservice\n      .getChildSubform()\n      .subscribe((data) => {\n        this.selectSubForm(data);\n      });\n\n    this.subFormDeleteSubscription = this.dataservice\n      .getSubFormDelete()\n      .subscribe((data) => {\n        this.deleteSubForm(data);\n      });\n    this.fileIdubscription = this.dataservice.getID().subscribe((data) => {\n      this.fileId.push(data);\n    });\n    this.fileSubscription = this.dataservice.getFile().subscribe((data) => {\n      this.file.push(data);\n    });\n    this.languageSubscription = this.dataservice\n      .getLanguages()\n      .subscribe((languages) => {\n        if (languages[0] !== 'eng') {\n          const engIndex = languages.indexOf('eng');\n          if (engIndex > -1) {\n            languages.splice(engIndex, 1);\n            languages.unshift('eng');\n          }\n        }\n        this.SelectedLanguage = languages;\n      });\n\n    //multifieldquestion\n    this.multiFieldIdSubscription = this.dataservice\n      .getMultiFieldId()\n      .subscribe((data) => {\n        this.multiFieldId = data;\n      });\n    this.multiFieldQuestionsSubscription = this.dataservice\n      .getMultiFieldQuestions()\n      .subscribe((data) => {\n        this.addMultiFieldQuestion(data);\n      });\n\n    //add new question under logic's subform\n    this.subFormNewQuestionSubscription = this.dataservice\n      .getSubFormNewQuestion()\n      .subscribe((data) => {\n        this.addSubFormNewQuestion(data);\n      });\n\n    this.copiedQuestionSubscription =\n      this.dataservice.copiedQuestion$.subscribe((copiedQuestion: any) => {\n        this.handleCopyQuestion(copiedQuestion);\n      });\n\n    this.copiedSubformSubscription = this.dataservice.copiedSubform$.subscribe(\n      (copiedSubform: any) => {\n        this.handleCopySubform(copiedSubform);\n      }\n    );\n  }\n  @Input() formId: string = '';\n  @Input() edit!: boolean;\n  @Input() createDuplicate!: boolean;\n  @Input() moduleName: string = '';\n  @Input() top: string = '0';\n  @Input() showModifyInfo: boolean = true;\n  @Input() triggerFormSave: string | null = null;\n  @Input() isActionTriggered: boolean = false;\n  @Input() showBackButton: boolean = false;\n  @Input() formElements: any = [];\n  @Input() enablePublish: boolean = true;\n  @Input() enableSave: boolean = true;\n  @Input() enableTranslation: boolean = true;\n  @Input() allowTitleEdit: boolean = true;\n  @Input() saveLabel: string = '';\n  @Input() enableNextButton: boolean = false;\n  @Input() formJSON: any;\n  @Output() formElement: EventEmitter<Event> = new EventEmitter<Event>();\n  @Output() submit: EventEmitter<string> = new EventEmitter<string>();\n  @Output() goBack: EventEmitter<string> = new EventEmitter<string>();\n  @Output() next: EventEmitter<string> = new EventEmitter<string>();\n  pageId: string = '';\n  questionId: string = '';\n  rowId: string = '';\n  isEditing: boolean = false;\n  title: string = '';\n  pageTitle: string = '';\n  isEditingPage: boolean = false;\n  formData: any;\n  configurationData: any = {};\n  selectedQuestion: any = {};\n  selectedSection: any = {};\n  selectedForm: any = {};\n  selectedMultifieldId: string = '';\n  isQuestionSelected: boolean = false;\n  modifiedOn: string = '';\n  modifiedBy: string = '';\n  sideBarOpened: boolean = false;\n  receivedPageId: string = '';\n  pageNo: number = 1;\n  selectedids: any = [];\n  inputValue: string = '';\n  webhooks: any;\n  emitters: any;\n  defaultQuestions: any;\n  comparisonOptions = CONSTANTS.COMPARISON_OPTIONS;\n  dropdownComparison = CONSTANTS.DROPDOWN_COMPARISON;\n  textComparison = CONSTANTS.TEXT_COMPARISON;\n  headerTop: any;\n  sideBarTop: any;\n  bodyTop: any;\n  previewMode: boolean = false;\n  entityType: string = '';\n  fontFamily: string = '';\n  fontSize: number = 0;\n  saveInProgress: boolean = false;\n  selectedQuestionGroup: any;\n  inValidQuestions: ValidationError[] = [];\n  private testNameMap = new Map<string, string>();\n  duplicateInprogress: boolean = false;\n\n  @ViewChild('outerRectangle', { static: true }) outerRectangle!: ElementRef;\n  toggleLeft = 0;\n  editingPages: { [pageId: string]: boolean } = {};\n  togglePageEdit(pageId: string): void {\n    this.editingPages[pageId] = !this.editingPages[pageId];\n  }\n\n  isPageEditing(pageId: string): boolean {\n    return !!this.editingPages[pageId];\n  }\n  selectpage(pageid: any) {\n    this.selectedPage = pageid;\n  }\n\n  onTitleChange(event: Event) {\n    this.isEditing = true;\n    this.errorStateService.removeInvalid('question-' + this.formId);\n    this.dataservice.emitChangeStatus(true);\n    const inputElement = event.target as HTMLInputElement;\n    this.title = inputElement.value;\n    for (let translate of this.translations) {\n      if (translate.elementId == this.formId && translate.attribute == 'NAME') {\n        translate.translatedText = this.title;\n      }\n    }\n  }\n\n  isInvalid(id: any): boolean {\n    return this.errorStateService.getErrorMessage(id);\n  }\n\n  getTitle() {\n    if (this.translations?.length > 0) {\n      const translation = this.translations.find(\n        (t: any) =>\n          t.entityType === 'FORM' &&\n          t.attribute === 'NAME' &&\n          t.language === this.selectedLanguage\n      );\n      return translation ? translation.translatedText : this.title;\n    } else {\n      return this.title;\n    }\n  }\n\n  // Function to toggle edit mode\n  toggleEditMode(e: any) {\n    if (e == 'h1') {\n      this.isEditing = !this.isEditing;\n    }\n    if (e == 'h2') {\n      this.isEditingPage = !this.isEditingPage;\n    }\n  }\n\n  togglePreview() {\n    this.previewMode = !this.previewMode;\n    if (!this.previewMode) {\n      this.selectedLanguage = 'eng';\n      this.htmlTag.dir = 'ltr';\n    }\n    this.sideBarOpened = false;\n    this.isEditing = false;\n  }\n\n  onPageTitleChange(event: Event, pageId: any) {\n    this.editingPages[pageId] = true;\n    this.errorStateService.removeInvalid('question-' + pageId);\n    this.dataservice.emitChangeStatus(true);\n    const inputElement = event.target as HTMLInputElement;\n    this.pageTitle = inputElement.value;\n\n    for (let translate of this.translations) {\n      if (translate.elementId == pageId && translate.entityType == 'PAGE') {\n        translate.translatedText = this.pageTitle;\n      }\n    }\n  }\n\n  onTitleBlur() {\n    this.isEditing = false;\n  }\n\n  ngOnInit(): void {\n    if (this.formJSON) {\n      this.bindData();\n    } else if (this.formId && this.createDuplicate) {\n      this.getDuplicateFormData();\n      this.getModuleDetails();\n    } else if (this.formId && this.edit) {\n      this.getFormData();\n      this.getModuleDetails();\n    } else {\n      this.formId = uuidv4();\n      this.pageId = uuidv4();\n      this.questionId = uuidv4();\n      this.rowId = uuidv4();\n      this.initializeForm();\n      this.getWebhooks(this.moduleName);\n      this.getModuleDetails();\n      this.edit = false;\n    }\n    this.headerTop = this.top + 'px';\n    this.sideBarTop = parseInt(this.top) + 65 + 'px';\n    this.bodyTop = 60 + parseFloat(this.top) + 'px';\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['triggerFormSave']) {\n      const newValue = changes['triggerFormSave'].currentValue;\n      if (newValue === 'save' || newValue === 'publish') {\n        this.isActionTriggered = true;\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => {\n      this.updateTogglePosition();\n    });\n  }\n\n  updateTogglePosition() {\n    const rect = this.outerRectangle?.nativeElement?.getBoundingClientRect();\n    if (rect) {\n      this.toggleLeft = rect.right - 32; // Adjust based on icon width\n    }\n  }\n\n  bindData() {\n    this.formData = this.formJSON;\n    this.formId = this.formData.id;\n    this.configurationData = this.formData?.configuration;\n    if (this.formData.emitters?.length > 0) {\n      this.emitters = this.formData.emitters;\n      this.emitterConflict = this.hasAnyEmitterConflict(this.emitters);\n    }\n    if (this.formData.webhooks?.length > 0) {\n      this.webhooks = this.formData.webhooks;\n      this.hasAnyWebhookConflict(this.webhooks);\n    }\n    if (this.formData.pages) {\n      this.pages = JSON.parse(JSON.stringify(this!.formData!.pages));\n    }\n    this.pages.forEach((page: any) => {\n      this.generateFieldName(page);\n    });\n    this.translations = this.formData.translations;\n    this.updatePreviewLanguages();\n    this.title = this.formData.name;\n    this.formStatus = this.formData.status;\n    this.modifiedBy = this.formData.modifiedBy;\n    this.modifiedOn = this.formData.modifiedOn;\n    this.primaryColor = this.formData?.primaryColor;\n    this.secondaryColor = this.formData?.secondaryColor;\n    this.dataservice.sendLanguages(this.formData.languages);\n  }\n\n  isElementVisible(type: string): boolean {\n    if (!this.formElements || this.formElements.length === 0) {\n      return true; // Show all if array is empty or undefined\n    }\n\n    const element = this.formElements.find((el: any) => el.element === type);\n    return element ? element.visible : true;\n  }\n\n  trackById(index: number, element: any): string {\n    return element.elementId;\n  }\n  editorLabel: string = 'Editor';\n  activeTab: any = 'tab1';\n  textFieldOpened: boolean = false;\n  pages: any = [];\n  initialForm: any = {};\n  translations: any = [];\n  selectedLanguage: string = 'eng';\n  languages: any;\n  previewLanguages: any = [\n    {\n      label: 'English',\n      value: 'eng',\n    },\n  ];\n  primaryColor: string = '';\n  secondaryColor: string = '';\n\n  loadFont(fontName: string): void {\n    const fontPath = `assets/fonts/${fontName}.woff2`; // Adjust extension as per your font file\n    const style = document.createElement('style');\n    style.innerHTML = `\n      @font-face {\n        font-family: '${fontName}';\n        src: url('${fontPath}') format('woff2');\n        font-weight: normal;\n        font-style: normal;\n      }\n      body {\n        font-family: '${fontName}', sans-serif;\n      }\n    `;\n    document.head.appendChild(style);\n  }\n\n  getModuleDetails() {\n    this.ApiService.getModuleById(this.moduleName).subscribe(\n      (response: any) => {\n        if (response.result?.configuration?.customizeFont) {\n          this.fontFamily = response.result?.configuration?.fontFamily;\n          this.fontSize = response.result?.configuration?.fontSize || 18;\n        } else {\n          this.fontFamily = 'Poppins';\n          this.fontSize = 18;\n        }\n        this.loadFont(this.fontFamily);\n        document.documentElement.style.setProperty(\n          '--library-font-family',\n          this.fontFamily\n        );\n        document.documentElement.style.setProperty(\n          '--library-font-size',\n          this.fontSize + 'px'\n        );\n      }\n    );\n  }\n\n  getFormData() {\n    this.ApiService.getFormData(this.formId).subscribe((data) => {\n      if (data?.result) {\n        this.formData = data.result;\n        this.configurationData = this.formData.configuration;\n        if (this.formData.emitters?.length > 0) {\n          this.emitters = this.formData.emitters;\n          this.emitterConflict = this.hasAnyEmitterConflict(this.emitters);\n        }\n        if (this.formData.webhooks?.length > 0) {\n          this.webhooks = this.formData.webhooks;\n          this.hasAnyWebhookConflict(this.webhooks);\n        }\n\n        if (this.formData.pages) {\n          this.pages = JSON.parse(JSON.stringify(this!.formData!.pages));\n        }\n        this.pages.forEach((page: any) => {\n          this.generateFieldName(page);\n        });\n        this.translations = this.formData.translations;\n        this.updatePreviewLanguages();\n        this.title = data.result.name;\n        this.formStatus = this.formData.status;\n        this.modifiedBy = this.formData.modifiedBy;\n        this.modifiedOn = this.formData.modifiedOn;\n        this.dataservice.sendLanguages(data.result.languages);\n        this.primaryColor = this.formData?.primaryColor;\n        this.secondaryColor = this.formData?.secondaryColor;\n      }\n    });\n  }\n\n  getDuplicateFormData() {\n    if (this.duplicateInprogress) {\n      return;\n    }\n    this.duplicateInprogress = true;\n    this.ApiService.getDuplicateFormData(this.formId).subscribe({\n      next: (data) => {\n        this.duplicateInprogress = false;\n        if (data?.result) {\n          this.formData = data.result;\n          this.configurationData = this.formData.configuration;\n          if (this.formData.emitters?.length > 0) {\n            this.emitters = this.formData.emitters;\n            this.emitterConflict = this.hasAnyEmitterConflict(this.emitters);\n          }\n          if (this.formData.webhooks?.length > 0) {\n            this.webhooks = this.formData.webhooks;\n            this.hasAnyWebhookConflict(this.webhooks);\n          }\n          if (data.result.pages) {\n            this.pages = JSON.parse(JSON.stringify(data.result.pages));\n          } else {\n            console.warn('Pages data is missing in API response:', data);\n          }\n          this.pages.forEach((page: any) => {\n            this.generateFieldName(page);\n          });\n          this.formId = this.formData.id;\n          this.translations = this.formData.translations;\n          this.updatePreviewLanguages();\n          this.title = data.result.name;\n          if (!this.allowTitleEdit && this.title?.endsWith(' copy')) {\n            this.title = this.title.slice(0, -5);\n            const translation = this.translations.find(\n              (t: any) =>\n                t.entityType === 'FORM' &&\n                t.attribute === 'NAME' &&\n                t.language === this.selectedLanguage\n            );\n\n            if (\n              translation?.translatedText &&\n              translation.translatedText.trim().toLowerCase().endsWith(' copy')\n            ) {\n              translation.translatedText = translation.translatedText.slice(\n                0,\n                -5\n              );\n            }\n          }\n          this.formStatus = 'DRAFT';\n          this.modifiedBy = this.formData.modifiedBy;\n          this.modifiedOn = this.formData.modifiedOn;\n          this.primaryColor = this.formData?.primaryColor;\n          this.secondaryColor = this.formData?.secondaryColor;\n          this.dataservice.sendLanguages(data.result.languages);\n        }\n      },\n      error: (error: any) => {\n        this.duplicateInprogress = false;\n      },\n    });\n  }\n\n  initializeForm() {\n    this.pages = [\n      {\n        id: this.pageId,\n        title: this.pageTitle,\n        pageNo: this.pageNo,\n        formElements: [\n          {\n            entityType: 'QUESTION',\n            customElementId: '',\n            element: {\n              id: this.questionId,\n              required: false,\n              hint: '',\n              question: '',\n              count: 12,\n              formElement: {\n                elementType: 'TEXT_BOX',\n                appearance: {\n                  fontSize: 22,\n                  textAlign: '',\n                  font: 'Poppins',\n                  underline: false,\n                  bold: false,\n                  italics: false,\n                  placeholder: '',\n                  defaultValue: '',\n                },\n                validation: {\n                  validationType: null,\n                  regex: '',\n                  validation: '',\n                },\n              },\n            },\n          },\n        ],\n        rows: [\n          {\n            id: this.rowId,\n            grids: [\n              {\n                elementId: this.questionId,\n                entityType: 'QUESTION',\n                count: 12,\n              },\n            ],\n          },\n        ],\n      },\n    ];\n\n    this.translations = [\n      {\n        elementId: this.formId,\n        entityType: 'FORM',\n        language: 'eng',\n        attribute: 'NAME',\n        translatedText: this.title,\n      },\n      {\n        elementId: this.pageId,\n        entityType: 'PAGE',\n        language: 'eng',\n        attribute: 'NAME',\n        translatedText: '',\n      },\n      {\n        elementId: this.questionId,\n        entityType: 'QUESTION',\n        language: 'eng',\n        attribute: 'NAME',\n        translatedText: '',\n      },\n      {\n        elementId: this.questionId,\n        entityType: 'QUESTION',\n        language: 'eng',\n        attribute: 'HELP_TEXT',\n        translatedText: '',\n      },\n      {\n        elementId: this.questionId,\n        entityType: 'QUESTION',\n        language: 'eng',\n        attribute: 'PLACEHOLDER',\n        translatedText: '',\n      },\n    ];\n\n    (this.configurationData = {\n      saveAutomatically: true,\n      saveInterval: null,\n      customizeFont: true,\n      fontFamily: 'Poppins',\n      fontSize: 22,\n      enableDataExport: false,\n      fileFormats: [],\n      enableQuestionNumbering: true,\n      questionNumbering: 'NUMBER_SMALLALPHABET_SMALLROMAN',\n      enableGoogleRecaptcha: false,\n      googleRecaptchaKey: '',\n      googleRecaptchaSecret: '',\n      navigation: 'TAB',\n      markAllQuestionsAsRequired: false,\n    }),\n      (this.initialForm = {\n        id: this.formId,\n        module: this.moduleName,\n        name: this.title,\n        status: 'DRAFT',\n        translations: this.translations,\n        configuration: this.configurationData,\n        pages: this.pages,\n      });\n    this.pages = this.initialForm.pages;\n    this.formStatus = this.initialForm.status;\n    this.generateFieldName(this.pages[0]);\n  }\n\n  openTab(tabId: string) {\n    this.activeTab = tabId;\n  }\n\n  openEmitters() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.position = { top: '5%' };\n    dialogConfig.width = '850px';\n    dialogConfig.data = {\n      emitters: this.emitters,\n      translations: this.translations,\n      formStatus: this.formStatus,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    dialogConfig.maxHeight = '80vh';\n\n    this.dialogRefEmitters = this.dialog.open(EmitterComponent, dialogConfig);\n\n    this.dialogRefEmitters.afterClosed().subscribe((result: any) => {\n      this.dialogRefEmitters = null;\n      if (result) {\n        this.emitters = result;\n        this.emitterConflict = this.hasAnyEmitterConflict(this.emitters);\n      }\n    });\n  }\n  opentransaltion() {\n    const sortedIds: string[] = [];\n    this.pages.map((page: any) => {\n      sortedIds.push(page.id);\n      page.formElements.map((element: any) => {\n        sortedIds.push(element.element.id);\n      });\n    });\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.position = { top: '5%' };\n    dialogConfig.width = '730px';\n    dialogConfig.data = {\n      configurationData: this.configurationData,\n      translations: this.translations,\n      languages: this.SelectedLanguage,\n      sortedIds,\n      formStatus: this.formStatus,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = false;\n    dialogConfig.maxHeight = '80vh';\n    const dialogRef = this.dialog.open(TransalationComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        const newLanguages = result\n          .filter((element: string) => element !== 'eng')\n          .filter((element: string) => {\n            return !this.previewLanguages.some(\n              (lang: any) => lang.value === element\n            );\n          })\n          .map((element: string) => {\n            if (element === 'ar') {\n              return { label: 'Arabic', value: 'ar' };\n            }\n            return null;\n          })\n          .filter(Boolean);\n        this.previewLanguages = [...this.previewLanguages, ...newLanguages];\n      }\n    });\n  }\n\n  openSideBar() {\n    this.sideBarOpened = true;\n  }\n\n  closeSideBar() {\n    this.sideBarOpened = false;\n  }\n  parseErrorsToMap(errorString: string): ValidationError[] {\n    const errorMap: ValidationError[] = [];\n\n    // Clean the input string by removing surrounding curly braces and quotes\n    const cleanedString = errorString.replace(/^[{\"']+|[\"'}]+$/g, '').trim();\n\n    // Split into individual key-value pairs\n    const pairs = cleanedString.split(/\\s*,\\s*(?=[^=]+=)/); // Split on commas followed by key=value\n\n    for (const pair of pairs) {\n      const equalsIndex = pair.indexOf('=');\n      if (equalsIndex > 0) {\n        const id = pair.substring(0, equalsIndex).trim();\n        const message = pair.substring(equalsIndex + 1).trim();\n        errorMap.push({ id, message });\n      }\n    }\n\n    return errorMap;\n  }\n\n  save(formData: string) {\n    this.isEditing = false;\n    this.isEditingPage = false;\n    this.editingPages = {};\n    if (this.edit) {\n      this.updateForm(this.formId);\n    } else {\n      this.saveForm();\n    }\n  }\n\n  async updateForm(data: string, valRequired: boolean = true) {\n    this.inValidQuestions = [];\n    let openValidationPopup: boolean = true;\n    let validationRequired: boolean = valRequired;\n    if (this.saveInProgress) {\n      return;\n    }\n    let pageValiation = this.validatePage();\n    if (!pageValiation) {\n      return;\n    }\n    this.validateTranslations(this.translations);\n    this.validateForm(this.pages);\n    if (this.inValidQuestions.length > 0) {\n      openValidationPopup = await this.openValidationFailedModal(\n        this.inValidQuestions\n      );\n      validationRequired = !openValidationPopup;\n    }\n    if (!openValidationPopup) {\n      return;\n    }\n\n    const body = {\n      id: this.formId,\n      module: this.moduleName,\n      name: this.title,\n      status: 'DRAFT',\n      languages: this.SelectedLanguage,\n      translations: this.translations,\n      webhooks: this.webhooks,\n      emitters: this.emitters,\n      pages: this.pages,\n    };\n    const formData = new FormData();\n    formData.append('validationRequired', JSON.stringify(validationRequired));\n    formData.append('json', JSON.stringify(body));\n\n    for (let i = 0; i < this.file.length; i++) {\n      formData.append(this.fileId[i], this.file[i]);\n    }\n    this.saveInProgress = true;\n    this.ApiService.updateForm(data, formData).subscribe(\n      (response) => {\n        // Handle the successful response here\n        this.toastr.success('Form updated successfully');\n        this.isQuestionSelected = false;\n        this.selectedQuestion = {};\n        this.getFormData();\n        this.configurationData = this.formData?.configuration;\n        this.submit.emit('success');\n        this.saveInProgress = false;\n        this.dataservice.emitChangeStatus(false);\n      },\n      async (error) => {\n        const validationError = this.parseErrorsToMap(error.error.message);\n        if (validationError.length > 0) {\n          this.openValidationFailedModal(validationError).then(\n            (shouldRetry) => {\n              if (shouldRetry) {\n                this.updateForm(data, false); // Retry update if user agrees\n              }\n            }\n          );\n        }\n        this.saveInProgress = false;\n      }\n    );\n  }\n\n  async saveForm(valRequired: boolean = true) {\n    if (this.saveInProgress) {\n      return;\n    }\n    this.inValidQuestions = [];\n    let openValidationPopup: boolean = true;\n    let pageValiation = this.validatePage();\n    if (!pageValiation) {\n      return;\n    }\n    this.validateTranslations(this.translations);\n    this.validateForm(this.pages);\n    let validationRequired: boolean = valRequired;\n    if (this.inValidQuestions.length > 0) {\n      openValidationPopup = await this.openValidationFailedModal(\n        this.inValidQuestions\n      );\n      validationRequired = !openValidationPopup;\n    }\n    if (!openValidationPopup) {\n      return;\n    }\n    const model = {\n      id: this.formId,\n      module: this.moduleName,\n      name: this.title,\n      status: 'DRAFT',\n      translations: this.translations,\n      webhooks: this.webhooks,\n      emitters: this.emitters,\n      pages: this.pages,\n    };\n\n    const formData = new FormData();\n    formData.append('validationRequired', JSON.stringify(validationRequired));\n    formData.append('json', JSON.stringify(model));\n    for (let i = 0; i < this.file.length; i++) {\n      formData.append(this.fileId[i], this.file[i]);\n    }\n    this.saveInProgress = true;\n    this.ApiService.postForm(formData).subscribe(\n      (response) => {\n        // Handle the successful response here\n        this.toastr.success('Form saved successfully');\n        this.cdr.markForCheck();\n        this.edit = true;\n        this.isQuestionSelected = false;\n        this.selectedQuestion = {};\n        this.getFormData();\n        this.configurationData = this.formData?.configuration;\n        this.submit.emit('success');\n        this.saveInProgress = false;\n        this.dataservice.emitChangeStatus(false);\n      },\n      async (error) => {\n        const validationError = this.parseErrorsToMap(error.error.message);\n        if (validationError.length > 0) {\n          this.openValidationFailedModal(validationError).then(\n            (shouldRetry) => {\n              if (shouldRetry) {\n                this.saveForm(false);\n              }\n            }\n          );\n        }\n        this.saveInProgress = false;\n      }\n    );\n  }\n\n  validatePage(): boolean {\n    if (this.pages.length === 0) {\n      this.toastr.warning('Please add atleast one page');\n      return false;\n    }\n\n    for (const page of this.pages) {\n      if (!page.formElements || page.formElements.length === 0) {\n        this.toastr.warning('Please add atleast one question');\n        return false;\n      }\n    }\n    return true;\n  }\n\n  validateTranslations(translations: any[]): void {\n    for (const item of translations) {\n      if (\n        item.attribute === 'NAME' &&\n        item.language === 'eng' &&\n        [\n          'QUESTION',\n          'QUESTION_GROUP',\n          'SUBFORM',\n          'SECTION',\n          'MULTIFIELD',\n        ].includes(item.entityType) &&\n        item.translatedText?.trim() === ''\n      ) {\n        let entityName = '';\n        switch (item.entityType) {\n          case 'FORM':\n            entityName = 'Form name';\n            break;\n          case 'QUESTION':\n            entityName = 'Question name';\n            break;\n          case 'QUESTION_GROUP':\n            entityName = 'Question group name';\n            break;\n          case 'SUBFORM':\n            entityName = 'Subform name';\n            break;\n          case 'SECTION':\n            entityName = 'Section name';\n            break;\n          case 'MULTIFIELD':\n            entityName = 'Multi field';\n            break;\n        }\n        this.inValidQuestions.push({\n          id: item.elementId,\n          message: `${entityName} should not be empty`,\n        });\n      }\n    }\n  }\n\n  openTextFields() {\n    this.textFieldOpened = !this.textFieldOpened;\n  }\n\n  addMultiFieldQuestion(data: any) {\n    let rowId = uuidv4();\n    let newQuestionId = uuidv4();\n    let newMultifieldQuestion: any = {\n      entityType: 'QUESTION',\n      customElementId: '',\n      element: {\n        id: newQuestionId,\n        required: false,\n        hint: '',\n        multiField: true,\n        count: 12,\n        formElement: {\n          elementType: 'TEXT_BOX',\n          appearance: {\n            fontSize: 22,\n            textAlign: '',\n            font: 'Poppins',\n            underline: false,\n            bold: false,\n            italics: false,\n            placeholder: '',\n            defaultValue: '',\n          },\n          validation: {\n            validationType: null,\n            regex: '',\n            validation: '',\n          },\n        },\n      },\n    };\n\n    let helpTextTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'HELP_TEXT',\n      translatedText: '',\n    };\n\n    let placeholderTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'PLACEHOLDER',\n      translatedText: '',\n    };\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: newQuestionId,\n          entityType: 'QUESTION',\n          count: 12,\n        },\n      ],\n    };\n    const page = this.pages.find(\n      (page: any) => page.id === this.receivedPageId\n    );\n    const multiFields = page.formElements.filter(\n      (element: any) => element.entityType === 'MULTIFIELD'\n    );\n    const multiField = multiFields.find(\n      (formElement: any) => formElement.element.id === this.multiFieldId\n    );\n    multiField.element.formElements.push(newMultifieldQuestion);\n    this.selectQuestion(newMultifieldQuestion.element);\n    this.addRowToMatchingQuestion(page, newRow, this.multiFieldId);\n    this.translations.push(helpTextTranslation);\n    this.translations.push(placeholderTranslation);\n  }\n\n  addMultiFieldQuestions(pageId: any) {\n    let newMultiFieldQuestionId = uuidv4();\n    let rowId = uuidv4();\n\n    let newMultiFieldQuestions = {\n      entityType: 'MULTIFIELD',\n      customElementId: '',\n      element: {\n        id: newMultiFieldQuestionId,\n        required: false,\n        hint: '',\n        question: '',\n        count: 12,\n        formElements: [],\n      },\n    };\n\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          count: 12,\n          elementId: newMultiFieldQuestionId,\n          entityType: 'MULTIFIELD',\n          rows: [],\n        },\n      ],\n    };\n    let nameTranslation = {\n      elementId: newMultiFieldQuestionId,\n      entityType: 'MULTIFIELD',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let helpTextTranslation = {\n      elementId: newMultiFieldQuestionId,\n      entityType: 'MULTIFIELD',\n      language: 'eng',\n      attribute: 'HELP_TEXT',\n      translatedText: '',\n    };\n\n    const page = this.pages.find((page: any) => page.id == pageId);\n    //newMultiFieldQuestions.element.formElements = newMultiFieldQuestion;\n    page.formElements.push(newMultiFieldQuestions);\n    page.rows.push(newRow);\n    this.translations.push(nameTranslation);\n    this.translations.push(helpTextTranslation);\n  }\n\n  addNewQuestion(pageId: any) {\n    let newQuestionId = uuidv4();\n    let rowId = uuidv4();\n    let newQuestion = {\n      entityType: 'QUESTION',\n      customElementId: '',\n      element: {\n        id: newQuestionId,\n        required: false,\n        hint: '',\n        question: '',\n        count: 12,\n        formElement: {\n          elementType: 'TEXT_BOX',\n          appearance: {\n            fontSize: 22,\n            textAlign: '',\n            font: 'Poppins',\n            underline: false,\n            bold: false,\n            italics: false,\n            placeholder: '',\n            defaultValue: '',\n          },\n          validation: {\n            validationType: null,\n            regex: '',\n            validation: '',\n          },\n        },\n      },\n    };\n\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: newQuestionId,\n          entityType: 'QUESTION',\n          count: 12,\n        },\n      ],\n    };\n\n    let nameTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let helpTextTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'HELP_TEXT',\n      translatedText: '',\n    };\n\n    let placeholderTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'PLACEHOLDER',\n      translatedText: '',\n    };\n    const page = this.pages.find((page: any) => page.id == pageId);\n    page.formElements.push(newQuestion);\n    this.selectQuestion(newQuestion.element);\n    page.rows.push(newRow);\n    this.translations.push(nameTranslation);\n    this.translations.push(helpTextTranslation);\n    this.translations.push(placeholderTranslation);\n  }\n\n  addNewChildQuestion(pageId: any, questionId: any, logicId: any) {\n    if (logicId == 'firstChild') {\n      logicId = this.logicId;\n    }\n    if (pageId == '') {\n      pageId = this.selectedPage;\n    }\n    let newQuestionId = uuidv4();\n    let rowId = uuidv4();\n    let newQuestion = {\n      entityType: 'QUESTION',\n      element: {\n        id: newQuestionId,\n        required: false,\n        hint: '',\n        question: '',\n        formElement: {\n          elementType: 'TEXT_BOX',\n          appearance: {\n            fontSize: 22,\n            textAlign: '',\n            font: 'Poppins',\n            underline: false,\n            bold: false,\n            italics: false,\n            placeholder: '',\n            defaultValue: '',\n          },\n          validation: {\n            validationType: null,\n            regex: '',\n            validation: '',\n          },\n        },\n      },\n    };\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: newQuestionId,\n          entityType: 'QUESTION',\n          count: 12,\n        },\n      ],\n    };\n\n    let nameTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let helpTextTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'HELP_TEXT',\n      translatedText: '',\n    };\n\n    let placeholderTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'PLACEHOLDER',\n      translatedText: '',\n    };\n    const page = this.pages.find((page: any) => page.id == pageId);\n    let question;\n    if (Array.isArray(page?.formElements)) {\n      for (const element of page?.formElements) {\n        if (\n          element.entityType === 'QUESTION' &&\n          element.element.id === questionId\n        ) {\n          question = element;\n          break;\n        } else if (\n          element.entityType === 'SUBFORM' ||\n          element.entityType === 'QUESTION_GROUP'\n        ) {\n          // If the element is a subform, iterate through its formElements\n          for (const subElement of element.element.formElements) {\n            if (\n              subElement.entityType === 'QUESTION' &&\n              subElement.element.id === questionId\n            ) {\n              question = subElement;\n              break;\n            }\n          }\n          if (question) break; // Exit the loop if question is found\n        }\n      }\n    }\n    if (question == undefined) {\n      this.addChildQuestions(page, logicId, newQuestion, newRow);\n    } else {\n      for (let k = 0; k < question.element.childLogics.length; k++) {\n        if (question.element.childLogics[k].id == logicId) {\n          if (question.element.childLogics[k].formElements == undefined) {\n            let element: any = [];\n            element.push(newQuestion);\n            question.element.childLogics[k].formElements = element;\n            this.addRowToMatchingQuestion(page, newRow, questionId);\n          } else {\n            question.element.childLogics[k].formElements.push(newQuestion);\n            this.addRowToMatchingQuestion(page, newRow, questionId);\n          }\n        }\n      }\n    }\n    this.selectedQuestion = newQuestion.element;\n    this.translations.push(nameTranslation);\n    this.translations.push(helpTextTranslation);\n    this.translations.push(placeholderTranslation);\n  }\n\n  addRowToMatchingQuestion(\n    page: any,\n    newRow: any,\n    questionId: any,\n    originalId?: string\n  ) {\n    let rowAdded = false;\n\n    // Recursive function to process grids\n    const processGrids = (grids: any[], newRow: any, questionId: any) => {\n      grids.forEach((grid: any) => {\n        if (grid.elementId === questionId) {\n          // Handle insertion relative to originalId if provided\n          if (originalId) {\n            const rowIndex = grid.rows?.findIndex((row: any) =>\n              row.grids?.some((g: any) => g.elementId === originalId)\n            );\n\n            if (rowIndex !== -1) {\n              grid.rows.splice(rowIndex + 1, 0, newRow);\n            } else {\n              grid.rows = grid.rows || [];\n              grid.rows.push(newRow);\n            }\n          } else {\n            grid.rows = grid.rows || [];\n            grid.rows.push(newRow);\n          }\n\n          rowAdded = true;\n        }\n\n        // Recursively check nested rows\n        if (grid.rows && grid.rows.length > 0) {\n          grid.rows.forEach((innerRow: any) => {\n            processGrids(innerRow.grids || [], newRow, questionId);\n          });\n        }\n      });\n    };\n\n    // Iterate through page rows and process each grid\n    page.rows.forEach((row: any) => {\n      processGrids(row.grids, newRow, questionId);\n    });\n\n    // Handle case where no matching elementId was found\n    if (!rowAdded) {\n      console.warn('No matching questionId found to add the row.');\n    }\n  }\n\n  addChildQuestions(page: any, logicId: any, newQuestion: any, newRow: any) {\n    const addQuestionToLogic = (\n      logics: any[],\n      logicId: any,\n      newQuestion: any\n    ) => {\n      for (const logic of logics) {\n        for (const formElement of logic.formElements || []) {\n          const element = formElement.element;\n          if (element?.childLogics) {\n            for (const childLogic of element.childLogics) {\n              if (childLogic.id === logicId) {\n                this.addRowToMatchingQuestion(page, newRow, element.id);\n                childLogic.formElements = childLogic.formElements || [];\n                childLogic.formElements.push(newQuestion);\n                return true;\n              }\n              if (addQuestionToLogic([childLogic], logicId, newQuestion)) {\n                return true;\n              }\n            }\n          }\n        }\n      }\n      return false;\n    };\n\n    for (const formElement of page.formElements) {\n      if (\n        formElement.entityType === 'SUBFORM' ||\n        formElement.entityType === 'QUESTION_GROUP'\n      ) {\n        const subFormElements = formElement.element?.formElements || [];\n        for (const subFormElement of subFormElements) {\n          const mainLogics = subFormElement.element?.childLogics || [];\n          if (addQuestionToLogic(mainLogics, logicId, newQuestion)) {\n            return;\n          }\n        }\n      } else {\n        const mainLogics = formElement.element?.childLogics || [];\n        if (addQuestionToLogic(mainLogics, logicId, newQuestion)) {\n          return;\n        }\n      }\n    }\n  }\n\n  addNewPage() {\n    let pageId = uuidv4();\n    let questionId = uuidv4();\n    let rowId = uuidv4();\n    this.pages.length;\n    if (this.pages[this.pages.length - 1] == undefined) {\n      this.pageNo = 1;\n    } else {\n      this.pageNo = this.pages[this.pages.length - 1].pageNo + 1;\n    }\n    let newPage = {\n      id: pageId,\n      title: '',\n      pageNo: this.pageNo,\n      formElements: [\n        {\n          entityType: 'QUESTION',\n          customElementId: '',\n          element: {\n            id: questionId,\n            required: false,\n            hint: '',\n            question: '',\n            count: 12,\n            formElement: {\n              elementType: 'TEXT_BOX',\n              appearance: {\n                fontSize: 22,\n                textAlign: '',\n                font: 'Poppins',\n                underline: false,\n                bold: false,\n                italics: false,\n                placeholder: '',\n                defaultValue: '',\n              },\n              validation: {\n                validationType: null,\n                regex: '',\n                validation: '',\n              },\n            },\n          },\n        },\n      ],\n      rows: [\n        {\n          id: rowId,\n          grids: [\n            {\n              elementId: questionId,\n              entityType: 'QUESTION',\n              count: 12,\n            },\n          ],\n        },\n      ],\n    };\n\n    let pageTranslation = {\n      elementId: pageId,\n      entityType: 'PAGE',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n    let questionTranslation = {\n      elementId: questionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n    let helpTextTranslation = {\n      elementId: questionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'HELP_TEXT',\n      translatedText: '',\n    };\n\n    let placeholderTranslation = {\n      elementId: questionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'PLACEHOLDER',\n      translatedText: '',\n    };\n    this.generateFieldName(newPage);\n    this.pages.push(newPage);\n    this.translations.push(pageTranslation);\n    this.translations.push(questionTranslation);\n    this.translations.push(helpTextTranslation);\n    this.translations.push(placeholderTranslation);\n  }\n\n  selectQuestion(question: any) {\n    this.selectedQuestion = question.element ? question.element : question;\n    this.selectedQuestionId = this.selectedQuestion.id;\n    this.isQuestionSelected = true;\n    this.activeTab = 'tab1';\n    this.cdr.markForCheck();\n  }\n  changeElementType(elementType: any) {\n    if (\n      this.selectedQuestion?.multiField &&\n      elementType === 'AGGREGATE_FUNCTION'\n    ) {\n      return;\n    }\n    let selectedElementType = this.selectedQuestion.formElement.elementType;\n\n    if (elementType == 'IFRAME_WIDGET') {\n      this.translations = this.translations.filter(\n        (translation: any) => translation.elementId != this.selectedQuestion.id\n      );\n    } else if (selectedElementType == 'IFRAME_WIDGET') {\n      let questionTranslation = {\n        elementId: this.selectedQuestion.id,\n        entityType: 'QUESTION',\n        language: 'eng',\n        attribute: 'NAME',\n        translatedText: '',\n      };\n      let helpTextTranslation = {\n        elementId: this.selectedQuestion.id,\n        entityType: 'QUESTION',\n        language: 'eng',\n        attribute: 'HELP_TEXT',\n        translatedText: '',\n      };\n\n      let placeholderTranslation = {\n        elementId: this.selectedQuestion.id,\n        entityType: 'QUESTION',\n        language: 'eng',\n        attribute: 'PLACEHOLDER',\n        translatedText: '',\n      };\n      this.translations.push(questionTranslation);\n      this.translations.push(helpTextTranslation);\n      this.translations.push(placeholderTranslation);\n    }\n\n    if (this.selectedQuestion.formElement.elementType !== elementType) {\n      if (this.selectedQuestion.childLogics) {\n        for (let i = 0; i < this.selectedQuestion.childLogics.length; i++) {\n          this.selectedQuestion.childLogics[i].condition = '';\n          this.selectedQuestion.childLogics[i].inputValue = '';\n        }\n      }\n\n      if (elementType) {\n        this.translations.forEach((item: any) => {\n          if (\n            item.elementId !== this.selectedQuestion.id ||\n            item.language !== 'eng'\n          )\n            return;\n\n          if (item.attribute === 'NAME' && item.translatedText !== 'question') {\n            this.selectedQuestion.question = item.translatedText;\n          } else if (\n            item.attribute === 'HELP_TEXT' ||\n            item.attribute === 'PLACEHOLDER'\n          ) {\n            this.selectedQuestion.hint = item.translatedText;\n          }\n        });\n        let formElements: any = [\n          {\n            elementType: 'TEXT_BOX',\n            appearance: {\n              placeholder: '',\n              defaultValue: '',\n            },\n            validation: {\n              validationType: null,\n              regex: '',\n              validation: '',\n            },\n          },\n          {\n            elementType: 'TEXT_AREA',\n            appearance: {\n              placeholder: '',\n              defaultValue: '',\n              numberOfRows: '',\n            },\n            validation: {\n              limitedCharacters: false,\n              count: 0,\n            },\n          },\n          {\n            elementType: 'EMAIL',\n            appearance: {\n              placeholder: '',\n            },\n            validation: {\n              regularExpression: '',\n              expectedDomains: '',\n            },\n          },\n          {\n            elementType: 'PASSWORD',\n            appearance: {\n              confirmPassword: false,\n              viewButton: false,\n              displayStrong: false,\n            },\n            validation: {\n              minLength: null,\n              maxLength: null,\n              requireLowercaseLetters: false,\n              requireUppercaseLetters: false,\n              requireNumbers: false,\n              requireSpecialCharacters: false,\n              allowedSpecialCharacters: '',\n            },\n          },\n          {\n            elementType: 'MOBILE',\n            appearance: {\n              displayCountryCode: true,\n              displayCode: true,\n              displayFlag: false,\n              showCountryName: false,\n              beautifyNumbers: false,\n              placeholder: '',\n            },\n            validation: {\n              countryWiseValidation: false,\n              restrictCountry: false,\n              allowedCountries: [],\n              blockedCountries: [],\n            },\n          },\n          {\n            elementType: 'RICH_TEXT_EDITOR',\n            appearance: {\n              numberOfRows: null,\n            },\n            validation: {\n              limitedCharacters: false,\n              count: null,\n            },\n          },\n          {\n            elementType: 'NUMBER',\n            appearance: {\n              upAndDownButton: false,\n              allowNegativeValues: false,\n              placeholder: '',\n            },\n            validation: {\n              min: null,\n              max: null,\n            },\n          },\n          {\n            elementType: 'URL',\n            appearance: {\n              showPreviewButton: false,\n              placeholder: '',\n            },\n            validation: {},\n          },\n          {\n            elementType: 'CURRENCY',\n            appearance: {\n              placeholder: '',\n              currencySymbol: '',\n              symbolPosition: '',\n              decimalPrecision: null,\n              thousandSeparator: false,\n              amountInWords: false,\n            },\n            validation: {\n              min: null,\n              max: null,\n            },\n          },\n          {\n            elementType: 'DROP_DOWN',\n            appearance: {\n              selectionType: 'SINGLE',\n            },\n            validation: {\n              minimumSelection: null,\n              maximumSelection: null,\n            },\n            option: {\n              optionType: '',\n              lookupTable: '',\n              customOptions: [],\n              database: {\n                tableName: '',\n                valueField: '',\n                labelField: '',\n                criteria: [],\n              },\n              api: {\n                external: true,\n                url: '',\n                valueField: '',\n                labelField: '',\n                pathToValue: '',\n                pathVariables: [],\n                headers: [],\n                params: [],\n              },\n            },\n          },\n          {\n            elementType: 'FILE_PICKER',\n            appearance: {\n              dragAndDrop: false,\n              previewUploadedFiles: false,\n              multiFileUploads: false,\n            },\n            validation: {\n              fileTypes: [],\n              fileSize: null,\n              fileSizeUnit: '',\n            },\n          },\n          {\n            elementType: 'DATE_TIME',\n            appearance: {\n              dateType: 'DATE_ONLY',\n              format: 'DD-MM-YYYY',\n            },\n            validation: {\n              minDateOption: '',\n              minDate: '',\n              maxDateOption: '',\n              maxDate: '',\n            },\n          },\n          {\n            elementType: 'TOGGLE_SWITCH',\n            appearance: {\n              labelOnValue: '',\n              labelOffValue: '',\n              labelOnColor: '',\n              labelOffColor: '',\n              selectionColorOnRequired: false,\n              selectionColorOffRequired: false,\n              selectionColorRequired: false,\n            },\n            validation: {\n              buttonColour: '',\n            },\n          },\n          {\n            elementType: 'SELECTION_MATRIX',\n            appearance: {\n              selectionColorRequired: false,\n              selectionColor: '',\n            },\n            validation: {\n              minSelectionRequired: false,\n              minSelectionValue: '',\n            },\n          },\n          {\n            elementType: 'TERMS_AND_CONDITION',\n            appearance: {\n              showAcceptButton: false,\n            },\n            validation: {\n              preventFromProceedingWithoutAgree: false,\n            },\n            termsAndCondition: {\n              termsAndConditionType: '',\n              value: '',\n            },\n          },\n          {\n            elementType: 'LOCATION',\n            appearance: {\n              setCurrentPosition: false,\n              defaultZoomLevel: null,\n              allowFullScreen: false,\n              latitude: '',\n              longitude: '',\n            },\n            validation: {\n              regionBoundary: false,\n              region: '',\n            },\n          },\n          {\n            elementType: 'SIGNATURE',\n            appearance: {\n              canvasOption: '',\n            },\n            validation: {\n              maxFileSize: null,\n              minFileSize: null,\n            },\n          },\n          {\n            elementType: 'CHECK_BOX',\n            appearance: {\n              selectionType: 'MULTIPLE',\n              displayOptionsInColumn: false,\n            },\n            validation: {\n              minimumSelection: null,\n              maximumSelection: null,\n            },\n            option: {\n              optionType: '',\n              lookupTable: '',\n              customOptions: [],\n              database: {\n                tableName: '',\n                valueField: '',\n                labelField: '',\n                criteria: [],\n              },\n              api: {\n                external: true,\n                url: '',\n                valueField: '',\n                labelField: '',\n                pathToValue: '',\n                pathVariables: [],\n                headers: [],\n                params: [],\n              },\n            },\n          },\n          {\n            elementType: 'RADIO_BUTTON',\n            appearance: {\n              displayOptionsInColumn: false,\n              changeButtonColor: false,\n              color: '',\n            },\n            validation: {},\n            option: {\n              optionType: '',\n              lookupTable: '',\n              customOptions: [],\n              database: {\n                tableName: '',\n                valueField: '',\n                labelField: '',\n                criteria: [],\n              },\n              api: {\n                external: true,\n                url: '',\n                valueField: '',\n                labelField: '',\n                pathToValue: '',\n                pathVariables: [],\n                headers: [],\n                params: [],\n              },\n            },\n          },\n          {\n            elementType: 'SLIDER',\n            appearance: {\n              minValue: null,\n              maxValue: null,\n              stepValue: null,\n              changeSliderColor: false,\n              sliderColor: '',\n            },\n            validation: {},\n          },\n          {\n            elementType: 'AGGREGATE_FUNCTION',\n            aggregateFunction: {\n              formula: '',\n              aggregateOperation: '',\n            },\n          },\n          {\n            elementType: 'HIDDEN_FIELD',\n            appearance: {},\n            validation: {},\n            hiddenField: {\n              key: null,\n              valueSource: null,\n              value: null,\n              updateOn:'BOTH',\n            },\n          },\n          {\n            elementType: 'IFRAME_WIDGET',\n            appearance: {\n              width: null,\n              height: null,\n            },\n            validation: {},\n            iFrameProperties: {\n              contentType: '',\n              html: {\n                content: '',\n              },\n              style: {\n                css: '',\n              },\n              script: {\n                code: '',\n              },\n              url: '',\n            },\n          },\n        ];\n        for (let i of formElements) {\n          if (i.elementType == elementType) {\n            this.selectedQuestion.formElement = i;\n            if (this.selectedQuestion.childLogics) {\n              this.selectedQuestion.childLogics = [];\n            }\n            if (elementType == 'TERMS_AND_CONDITION') {\n              this.translations.push({\n                elementId: this.selectedQuestion.id,\n                entityType: 'QUESTION',\n                language: 'eng',\n                attribute: 'TERMS_AND_CONDITION',\n                translatedText: '',\n              });\n            }\n          }\n        }\n        this.cdr.markForCheck();\n      }\n    }\n    this.dataservice.sendPages(this.pages);\n    this.dataservice.sendSubformQuestionDeleted(true);\n  }\n\n  deleteQuestion(id: any) {\n    const removeElementsById = (elements: any[], id: any) => {\n      return elements.filter((element) => element.id !== id);\n    };\n\n    const removeGridsById = (rows: any[], id: any) => {\n      rows.forEach((row) => {\n        row.grids = row.grids.filter(\n          (grid: { elementId: any }) => grid.elementId !== id\n        );\n      });\n    };\n\n    // Remove question from formElements\n    this.pages.forEach((page: { formElements: any[] }) => {\n      page.formElements = removeElementsById(page.formElements, id);\n    });\n\n    // Remove grids from rows\n    this.pages.forEach((page: { rows: any[] }) => {\n      removeGridsById(page.rows, id);\n    });\n\n    // Remove rows that have no grids\n    this.pages.forEach((page: { rows: any[] }) => {\n      page.rows = page.rows.filter((row) => row.grids.length > 0);\n    });\n\n    // Remove translations\n    this.translations = this.translations.filter(\n      (translate: { elementId: any }) => translate.elementId !== id\n    );\n\n    // Recursively delete child questions\n    this.deleteChildQuestion(this.pages, id);\n    // this.updateWebhooks();\n  }\n  deleteChildQuestion(pages: any[], id: any): void {\n    for (let i = 0; i < pages.length; i++) {\n      const page = pages[i];\n      const questions = page.formElements ? page.formElements : page.element;\n      for (let j = 0; j < questions?.length; j++) {\n        const question = questions[j];\n        // Check if the current question ID matches the provided ID\n        if (question.element.id === id) {\n          this.getIds(question, id);\n          for (let m = 0; m < this.selectedids.length; m++) {\n            this.transalationDelete(this.selectedids[m]);\n            this.deleteGrids(this.selectedids[m]);\n          }\n          // If it's a match, delete the question\n          questions.splice(j, 1);\n          j--; // Decrement j to account for the removed element\n        } else {\n          // If it's not a match, recursively check child questions\n          const childQuestions = question.element.childLogics\n            ? question.element.childLogics\n            : question.childLogics;\n          if (childQuestions && childQuestions.length > 0) {\n            this.deleteChildQuestion(childQuestions, id);\n          }\n        }\n      }\n    }\n    for (let k = 0; k < this.translations.length; k++) {\n      let translate = this.translations[k];\n      if (translate.elementId == id) {\n        this.translations.splice(k, 1);\n      }\n    }\n\n    for (let i = 0; i < this.pages.length; i++) {\n      let page = this.pages[i];\n\n      for (let j = 0; j < page.rows.length; j++) {\n        let row = page.rows[j];\n\n        // Recursively handle grids with nested rows\n        const removeGridWithElementId = (grids: any[], id: string) => {\n          return grids.filter((grid: any) => {\n            // If grid has nested rows, process them\n\n            if (grid.rows) {\n              grid.rows.forEach((innerRow: any) => {\n                innerRow.grids = removeGridWithElementId(innerRow.grids, id);\n              });\n\n              // If all inner grids are removed, remove the row\n              grid.rows = grid.rows.filter(\n                (innerRow: any) => innerRow.grids.length > 0\n              );\n            }\n\n            // Return only grids that don't match the elementId\n            return grid.elementId !== id;\n          });\n        };\n\n        // Update grids in the current row by filtering out the matching elementId\n        row.grids = removeGridWithElementId(row.grids, id);\n      }\n\n      // After processing all rows, remove rows that have no grids left\n      page.rows = page.rows.filter((row: any) => row.grids.length > 0);\n    }\n\n    this.updateWebhooks();\n    this.updateEmitters();\n    this.dataservice.sendPages(this.pages);\n  }\n  getIds(child: any, id: any) {\n    if (child.element != undefined) {\n      this.selectedids.push(child.element.id);\n    }\n    if (child?.element?.childLogics?.length != undefined) {\n      let logic = child.element.childLogics;\n      for (let i = 0; i < logic.length; i++) {\n        const item = logic[i];\n        if (item.id) {\n          this.selectedids.push(item.id);\n        }\n        const formElements = item.formElements;\n        if (formElements) {\n          for (let j = 0; j < formElements.length; j++) {\n            const element = formElements[j];\n            if (element.element && element.element.id) {\n              this.selectedids.push(element.element.id);\n            }\n            if (element.element && element.element.childLogics) {\n              let childLogics = element.element.childLogics; // Renamed to avoid naming conflict\n              for (let k = 0; k < childLogics.length; k++) {\n                this.getIds(childLogics[k], id); // Pass formElements to recursive call\n              }\n            }\n          }\n        }\n      }\n    }\n    if (child?.formElements != undefined) {\n      let elements = child.formElements;\n      for (let i = 0; i < elements.length; i++) {\n        const item = elements[i];\n        if (item.element.id) {\n          this.selectedids.push(item.element.id);\n        }\n        const formElements = item.formElements;\n        if (formElements) {\n          for (let j = 0; j < formElements.length; j++) {\n            const element = formElements[j];\n            if (element.element && element.element.id) {\n              this.selectedids.push(element.element.id);\n            }\n            if (element.element && element.element.childLogics) {\n              let childLogics = element.element.childLogics; // Renamed to avoid naming conflict\n              for (let k = 0; k < childLogics.length; k++) {\n                this.getIds(childLogics[k], id); // Pass formElements to recursive call\n              }\n            }\n          }\n        } else {\n          const element = item.element;\n          if (element && element.id) {\n            this.selectedids.push(element.id);\n          }\n          if (element && element.childLogics) {\n            let childLogics = element.childLogics; // Renamed to avoid naming conflict\n            for (let k = 0; k < childLogics.length; k++) {\n              this.getIds(childLogics[k], id); // Pass formElements to recursive call\n            }\n          }\n        }\n      }\n    }\n  }\n\n  newpages(updatedPages: any[]): void {\n    const scrollPosition = window.scrollY; // Capture scroll position\n    this.pages = [...updatedPages]; // Update the array\n    setTimeout(() => window.scrollTo(0, scrollPosition));\n  }\n  deleteLogic(question: any, id: any) {\n    const deletedItems = question.childLogics.filter(\n      (item: { id: any }) => item.id === id\n    );\n    question.childLogics = question.childLogics.filter(\n      (item: { id: any }) => item.id !== id\n    );\n    let idsToDelete: any[] = [];\n\n    deletedItems.forEach((item: { formElements: any[] }) => {\n      item.formElements.forEach((element): void => {\n        const elementId = element.element.id;\n        idsToDelete.push(elementId);\n        this.deleteQuestion(elementId);\n\n        // If the element has nested child logics, we need to recursively call deleteLogic\n        if (element.element.childLogics) {\n          element.element.childLogics.forEach((nestedLogic: { id: any }) => {\n            this.deleteLogic(element.element, nestedLogic.id);\n            idsToDelete.push(nestedLogic.id);\n          });\n        }\n      });\n    });\n    for (let m = 0; m < idsToDelete.length; m++) {\n      this.transalationDelete(idsToDelete[m]);\n    }\n  }\n  selectChildQuestion(data: any) {}\n\n  addLogic(question: any) {\n    let logiId = uuidv4();\n    let newLogic = {\n      id: logiId,\n      inputValue: '',\n      condition: '',\n      formElements: [],\n    };\n    if (question.element != undefined) {\n      if (!question.element.childLogics) {\n        question.element['childLogics'] = [newLogic];\n      } else {\n        question.element.childLogics.push(newLogic);\n      }\n    } else {\n      if (!question.childLogics) {\n        question['childLogics'] = [newLogic];\n      } else {\n        question.childLogics.push(newLogic);\n      }\n    }\n    this.updateQuestion(question);\n    this.cdr.detectChanges();\n  }\n\n  async publishForm() {\n    this.inValidQuestions = [];\n    this.validateTranslations(this.translations);\n    this.validateForm(this.pages);\n    if (this.inValidQuestions.length > 0) {\n      await this.openValidationFailedModal(this.inValidQuestions, true);\n      return;\n    }\n    this.ApiService.publishForm(this.moduleName, this.formId).subscribe(\n      (response: any) => {\n        this.toastr.success(response.message);\n        this.formStatus = 'PUBLISHED';\n      },\n      async (error) => {\n        const validationError = this.parseErrorsToMap(error.error.message);\n        if (validationError.length > 0) {\n          await this.openValidationFailedModal(validationError, true);\n        }\n      }\n    );\n  }\n\n  addSection(pageId: string) {\n    let sectionId = uuidv4();\n    let rowId = uuidv4();\n    let newSection = {\n      entityType: 'SECTION',\n      customElementId: '',\n      element: {\n        count: 12,\n        id: sectionId,\n        title: '',\n        description: '',\n      },\n    };\n\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: sectionId,\n          entityType: 'SECTION',\n          count: 12,\n        },\n      ],\n    };\n\n    let sectionNameTranslation = {\n      elementId: sectionId,\n      entityType: 'SECTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let sectionDescTranslation = {\n      elementId: sectionId,\n      entityType: 'SECTION',\n      language: 'eng',\n      attribute: 'DESCRIPTION',\n      translatedText: '',\n    };\n    const page = this.pages.find((page: any) => page.id == pageId);\n    page.formElements.push(newSection);\n    page.rows.push(newRow);\n    this.translations.push(sectionNameTranslation);\n    this.translations.push(sectionDescTranslation);\n  }\n  addSubForms(pageId: string) {\n    let subFormId = uuidv4();\n    let rowId = uuidv4();\n    let newQuestionId = uuidv4();\n    let questionRowId = uuidv4();\n    let newSubForm = {\n      entityType: 'SUBFORM',\n      customElementId: '',\n      element: {\n        count: 12,\n        id: subFormId,\n        title: '',\n        description: '',\n        required: false,\n        formElements: [],\n        property: {\n          subFormStructure: 'single',\n        },\n        submissionCopyConfig: {\n          allowCopyFromOtherSubmissions: false,\n          editableQuestions: [],\n        },\n      },\n    };\n    let newSubFormQuestion: any = [\n      {\n        entityType: 'QUESTION',\n        element: {\n          id: newQuestionId,\n          required: false,\n          hint: '',\n          question: '',\n          elementId: '',\n          formElement: {\n            elementType: 'TEXT_BOX',\n            appearance: {\n              fontSize: 22,\n              textAlign: '',\n              font: 'Poppins',\n              underline: false,\n              bold: false,\n              italics: false,\n              placeholder: '',\n              defaultValue: '',\n            },\n            validation: {\n              validationType: null,\n              regex: '',\n              validation: '',\n            },\n          },\n        },\n      },\n    ];\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: subFormId,\n          entityType: 'SUBFORM',\n          count: 12,\n          rows: [\n            {\n              id: questionRowId,\n              grids: [\n                {\n                  elementId: newQuestionId,\n                  entityType: 'QUESTION',\n                  count: 12,\n                },\n              ],\n            },\n          ],\n        },\n      ],\n    };\n\n    let titleTranslation = {\n      elementId: subFormId,\n      entityType: 'SUBFORM',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let descriptionTextTranslation = {\n      elementId: subFormId,\n      entityType: 'SUBFORM',\n      language: 'eng',\n      attribute: 'DESCRIPTION',\n      translatedText: '',\n    };\n    let nameTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let helpTextTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'HELP_TEXT',\n      translatedText: '',\n    };\n\n    let placeholderTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'PLACEHOLDER',\n      translatedText: '',\n    };\n\n    const page = this.pages.find((page: any) => page.id == pageId);\n    newSubForm.element.formElements = newSubFormQuestion;\n    page.formElements.push(newSubForm);\n    page.rows.push(newRow);\n    this.translations.push(titleTranslation);\n    this.translations.push(descriptionTextTranslation);\n    this.translations.push(nameTranslation);\n    this.translations.push(helpTextTranslation);\n    this.translations.push(placeholderTranslation);\n  }\n\n  addQuestionGroup(pageId: string) {\n    let groupId = uuidv4();\n    let rowId = uuidv4();\n    let newQuestionId = uuidv4();\n    let questionRowId = uuidv4();\n    let newQuestionGroup = {\n      entityType: 'QUESTION_GROUP',\n      customElementId: '',\n      element: {\n        count: 12,\n        id: groupId,\n        title: '',\n        description: '',\n        formElements: [],\n      },\n    };\n    let newGroupQuestion: any = [\n      {\n        entityType: 'QUESTION',\n        element: {\n          id: newQuestionId,\n          required: false,\n          hint: '',\n          question: '',\n          elementId: '',\n          formElement: {\n            elementType: 'TEXT_BOX',\n            appearance: {\n              fontSize: 22,\n              textAlign: '',\n              font: 'Poppins',\n              underline: false,\n              bold: false,\n              italics: false,\n              placeholder: '',\n              defaultValue: '',\n            },\n            validation: {\n              validationType: null,\n              regex: '',\n              validation: '',\n            },\n          },\n        },\n      },\n    ];\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: groupId,\n          entityType: 'QUESTION_GROUP',\n          count: 12,\n          rows: [\n            {\n              id: questionRowId,\n              grids: [\n                {\n                  elementId: newQuestionId,\n                  entityType: 'QUESTION',\n                  count: 12,\n                },\n              ],\n            },\n          ],\n        },\n      ],\n    };\n\n    let titleTranslation = {\n      elementId: groupId,\n      entityType: 'QUESTION_GROUP',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let descriptionTextTranslation = {\n      elementId: groupId,\n      entityType: 'QUESTION_GROUP',\n      language: 'eng',\n      attribute: 'DESCRIPTION',\n      translatedText: '',\n    };\n    let nameTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let helpTextTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'HELP_TEXT',\n      translatedText: '',\n    };\n\n    let placeholderTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'PLACEHOLDER',\n      translatedText: '',\n    };\n\n    const page = this.pages.find((page: any) => page.id == pageId);\n    newQuestionGroup.element.formElements = newGroupQuestion;\n    page.formElements.push(newQuestionGroup);\n    page.rows.push(newRow);\n    this.translations.push(titleTranslation);\n    this.translations.push(descriptionTextTranslation);\n    this.translations.push(nameTranslation);\n    this.translations.push(helpTextTranslation);\n    this.translations.push(placeholderTranslation);\n    this.selectedQuestion = newGroupQuestion[0].element;\n  }\n\n  deleteSubFormQuestion(pages: any[], id: any): void {\n    const collectIds = (subFormElement: any) => {\n      let ids: string[] = [subFormElement.element.id];\n      if (subFormElement.element && subFormElement.element.childLogics) {\n        subFormElement.element.childLogics.forEach(\n          (logic: { formElements: any[] }) => {\n            logic.formElements.forEach(\n              (element: { element: { id: string } }) => {\n                ids.push(element.element.id);\n              }\n            );\n          }\n        );\n      }\n      return ids;\n    };\n    const deleteGridsAndTranslations = () => {\n      this.transalationDelete(id);\n      this.deleteGrids(id);\n    };\n\n    pages.forEach((page) => {\n      const formElements = page.formElements;\n      formElements.forEach(\n        (\n          formElement: { entityType: string; element: { formElements: any } },\n          j: any\n        ) => {\n          if (\n            formElement.entityType === 'SUBFORM' ||\n            formElement.entityType === 'QUESTION_GROUP' ||\n            formElement.entityType === 'MULTIFIELD'\n          ) {\n            const subFormElements = formElement.element.formElements;\n            subFormElements.forEach(\n              (\n                subFormElement: { entityType: string; element: { id: any } },\n                k: any\n              ) => {\n                const ids = collectIds(subFormElement);\n                ids.forEach(deleteGridsAndTranslations);\n                if (\n                  (subFormElement.entityType === 'QUESTION' ||\n                    subFormElement.entityType === 'SECTION') &&\n                  subFormElement.element.id === id\n                ) {\n                  subFormElements.splice(k, 1);\n                }\n              }\n            );\n          }\n        }\n      );\n    });\n\n    pages.forEach((page) => {\n      page.rows.forEach((row: { grids: any[] }) => {\n        row.grids = row.grids.filter((grid: any) => grid.elementId !== id);\n      });\n    });\n\n    pages.forEach((page) => {\n      page.rows = page.rows.filter(\n        (row: { grids: string | any[] }) => row.grids.length > 0\n      );\n    });\n\n    this.translations = this.translations.filter(\n      (translate: { elementId: any }) => translate.elementId !== id\n    );\n\n    this.deleteSubFormChildQuestion(this.pages, id);\n  }\n  deleteSubFormChildQuestion(pages: any[], id: any): void {\n    const deleteById = (elements: any[], id: any): void => {\n      for (let i = 0; i < elements.length; i++) {\n        if (elements[i]?.element?.id === id) {\n          elements.splice(i, 1);\n          i--;\n        } else if (elements[i]?.element?.childLogics) {\n          this.deleteSubFormChildQuestion(elements[i].element.childLogics, id);\n        } else if (\n          (elements[i]?.entityType === 'SUBFORM' ||\n            elements[i]?.entityType === 'QUESTION_GROUP' ||\n            elements[i]?.entityType === 'MULTIFIELD') &&\n          elements[i]?.element?.formElements\n        ) {\n          deleteById(elements[i].element.formElements, id);\n        }\n      }\n    };\n\n    pages.forEach((page) => {\n      if (page?.formElements) {\n        deleteById(page.formElements, id);\n      }\n    });\n\n    this.translations = this.translations.filter(\n      (translate: { elementId: any }) => translate.elementId !== id\n    );\n\n    this.pages.forEach((page: { rows: any[] }) => {\n      page.rows.forEach((row) => {\n        row.grids = row.grids.filter(\n          (grid: { elementId: any }) => grid.elementId !== id\n        );\n      });\n\n      page.rows = page.rows.filter((row) => row.grids.length > 0);\n    });\n  }\n\n  addSubFormQuestion(data: any) {\n    let rowId = uuidv4();\n    let newQuestionId = uuidv4();\n    let newSubFormQuestion: any = {\n      entityType: 'QUESTION',\n      element: {\n        id: newQuestionId,\n        required: false,\n        hint: '',\n        question: '',\n        formElement: {\n          elementType: 'TEXT_BOX',\n          appearance: {\n            fontSize: 22,\n            textAlign: '',\n            font: 'Poppins',\n            underline: false,\n            bold: false,\n            italics: false,\n            placeholder: '',\n            defaultValue: '',\n          },\n          validation: {\n            validationType: null,\n            regex: '',\n            validation: '',\n          },\n        },\n      },\n    };\n\n    let nameTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let helpTextTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'HELP_TEXT',\n      translatedText: '',\n    };\n\n    let placeholderTranslation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'PLACEHOLDER',\n      translatedText: '',\n    };\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: newQuestionId,\n          entityType: 'QUESTION',\n          count: 12,\n        },\n      ],\n    };\n    const page = this.pages.find(\n      (page: any) => page.id === this.receivedPageId\n    );\n    data.element.formElements.push(newSubFormQuestion);\n    this.addRowToMatchingQuestion(page, newRow, this.subformId);\n    this.selectQuestion(newSubFormQuestion.element);\n    this.translations.push(nameTranslation);\n    this.translations.push(helpTextTranslation);\n    this.translations.push(placeholderTranslation);\n    this.dataservice.sendSubformQuestionDeleted(true);\n  }\n  addNewQuestionsSubForm(data: any) {\n    let subFormId = uuidv4();\n    let newQuestionId = uuidv4();\n    let rowId = uuidv4();\n    let newSubForm = {\n      entityType: 'SUBFORM',\n      element: {\n        count: 12,\n        id: subFormId,\n        subFormStructure: 'single',\n        title: '',\n        description: '',\n        formElements: [],\n      },\n    };\n    let newSubFormQuestion: any = {\n      entityType: 'QUESTION',\n      element: {\n        id: newQuestionId,\n        required: false,\n        hint: '',\n        question: '',\n        formElement: {\n          elementType: 'TEXT_BOX',\n          appearance: {\n            fontSize: 22,\n            textAlign: '',\n            font: 'Poppins',\n            underline: false,\n            bold: false,\n            italics: false,\n            placeholder: '',\n            defaultValue: '',\n          },\n          validation: {\n            validationType: null,\n            regex: '',\n            validation: '',\n          },\n        },\n      },\n    };\n\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: subFormId,\n          entityType: 'SUBFORM',\n          count: 12,\n          rows: [\n            {\n              id: newQuestionId,\n              grids: [\n                {\n                  elementId: newQuestionId,\n                  entityType: 'QUESTION',\n                  count: 12,\n                },\n              ],\n            },\n          ],\n        },\n      ],\n    };\n\n    let transalation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n    newSubForm.element.formElements = newSubFormQuestion;\n    let currentElement: any = data.element.formElements;\n\n    // Traverse to the deepest formElement\n    while (currentElement?.formElement) {\n      currentElement = currentElement.formElement;\n    }\n    currentElement.push(newSubForm);\n\n    this.translations.push(transalation);\n    this.addNewRowToSubform(newRow, data);\n  }\n  addSubFormNewQuestion(data: any) {\n    let newQuestionId = uuidv4();\n    let rowId = uuidv4();\n    let newSubFormQuestion: any = {\n      entityType: 'QUESTION',\n      element: {\n        id: newQuestionId,\n        required: false,\n        hint: '',\n        question: '',\n        formElement: {\n          elementType: 'TEXT_BOX',\n          appearance: {\n            fontSize: 22,\n            textAlign: '',\n            font: 'Poppins',\n            underline: false,\n            bold: false,\n            italics: false,\n            placeholder: '',\n            defaultValue: '',\n          },\n          validation: {\n            validationType: null,\n            regex: '',\n            validation: '',\n          },\n        },\n      },\n    };\n    let transalation = {\n      elementId: newQuestionId,\n      entityType: 'QUESTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: newQuestionId,\n          entityType: 'QUESTION',\n          count: 12,\n        },\n      ],\n    };\n    this.addNewRowToSubform(newRow, data);\n    let currentElement: any = data.element.formElements;\n\n    // Traverse to the deepest formElement\n    while (currentElement?.formElement) {\n      currentElement = currentElement.formElement;\n    }\n    currentElement.push(newSubFormQuestion);\n    this.selectQuestion(newSubFormQuestion.element);\n    this.translations.push(transalation);\n  }\n\n  addNewSubFormSections(data: any) {\n    let sectionId = uuidv4();\n    let rowId = uuidv4();\n    let newSection = {\n      entityType: 'SECTION',\n      element: {\n        id: sectionId,\n        title: '',\n        description: '',\n        count: 12,\n      },\n    };\n    let sectionNameTranslation = {\n      elementId: sectionId,\n      entityType: 'SECTION',\n      language: 'eng',\n      attribute: 'NAME',\n      translatedText: '',\n    };\n    let sectionDescTranslation = {\n      elementId: sectionId,\n      entityType: 'SECTION',\n      language: 'eng',\n      attribute: 'DESCRIPTION',\n      translatedText: '',\n    };\n\n    let newRow = {\n      id: rowId,\n      grids: [\n        {\n          elementId: sectionId,\n          entityType: 'SECTION',\n          count: 12,\n        },\n      ],\n    };\n    this.addNewRowToSubform(newRow, data);\n    let currentElement: any = data.element.formElements;\n\n    // Traverse to the deepest formElement\n    while (currentElement?.formElement) {\n      currentElement = currentElement.formElement;\n    }\n    currentElement.push(newSection);\n    this.translations.push(sectionNameTranslation);\n    this.translations.push(sectionDescTranslation);\n  }\n\n  addNewRowToSubform(newRow: any, data: any) {\n    // Find the subform in the rows array and add the newRow\n    const addRowToSubForm = (rows: any[]) => {\n      rows.forEach((row) => {\n        row.grids.forEach((grid: any) => {\n          if (\n            grid.entityType === 'SUBFORM' &&\n            grid.elementId === data.element.id\n          ) {\n            // Add the new row to the subform\n            if (!grid.rows) {\n              grid.rows = []; // Initialize rows array if it doesn't exist\n            }\n            grid.rows.push(newRow);\n          }\n        });\n\n        // Also check rows inside grids (nested under grids)\n        row.grids.forEach((grid: any) => {\n          if (grid.rows && grid.rows.length > 0) {\n            addRowToSubForm(grid.rows); // Traverse rows inside grids\n          }\n        });\n      });\n    };\n\n    // Start iterating from the pages' rows\n    for (let page of this.pages) {\n      if (page.rows && page.rows.length > 0) {\n        addRowToSubForm(page.rows);\n      }\n    }\n  }\n  selectSection(question: any) {\n    if (question.id !== this.selectedSection.id) {\n      this.selectedSection = question;\n    }\n  }\n  selectedQuestionId: string = '';\n  selectSubForm(question: any) {\n    if (question?.element?.id !== this.selectedForm?.id) {\n      this.selectedForm = question;\n      this.selectedQuestion = question;\n      this.selectedQuestionId = this.selectedQuestion.element.id;\n    }\n    this.isQuestionSelected = true;\n    this.activeTab = 'tab2';\n  }\n\n  selectMultifield(question: any) {\n    this.selectedMultifieldId = question.element.id;\n  }\n\n  selectQuestionGroup(questionGroup: any) {\n    if (questionGroup?.element?.id !== this.selectedQuestionGroup?.id) {\n      this.selectedQuestionGroup = questionGroup?.element;\n      this.selectedQuestion = questionGroup?.element;\n      this.selectedQuestionId = questionGroup?.element?.id;\n    }\n  }\n\n  deleteSections(id: string) {\n    for (let i = 0; i < this.pages.length; i++) {\n      let page = this.pages[i];\n      page.formElements = page.formElements.filter((section: any) => {\n        return section.id != id;\n      });\n    }\n    for (let k = 0; k < this.translations.length; k++) {\n      let translate = this.translations[k];\n      if (translate.elementId == id) {\n        this.translations.splice(k, 1);\n      }\n    }\n    this.deleteGrids(id);\n    this.deleteSubFormQuestion(this.pages, id);\n  }\n  deleteSubForm(id: string) {\n    ///trimed array need to loop getting each question id to delete\n    let idsToDelete = [id];\n    // Iterate through pages to collect ids of all nested subforms/questions\n    for (let i = 0; i < this.pages.length; i++) {\n      let page = this.pages[i];\n\n      page.formElements.forEach(\n        (subForms: {\n          element: { id: string; formElements: any[]; childLogics?: any[] };\n          entityType: string;\n        }) => {\n          // Check if it's a SUBFORM and matches the ID\n          if (\n            subForms.element.id === id &&\n            (subForms.entityType === 'SUBFORM' ||\n              subForms.entityType === 'QUESTION_GROUP')\n          ) {\n            // Process formElements of the subForm\n            subForms.element.formElements.forEach((element) => {\n              idsToDelete.push(element.element.id);\n            });\n          }\n\n          // Check if the formElement has childLogics\n          if (\n            subForms.element.childLogics &&\n            subForms.element.childLogics.length > 0\n          ) {\n            subForms.element.childLogics.forEach(\n              (logic: { formElements: any[] }) => {\n                // Process formElements inside childLogics\n                logic.formElements.forEach((childElement) => {\n                  if (\n                    (childElement.entityType === 'SUBFORM' ||\n                      childElement.entityType === 'QUESTION_GROUP') &&\n                    childElement.element.id === id\n                  ) {\n                    childElement.element.formElements.forEach(\n                      (nestedElement: any) => {\n                        idsToDelete.push(nestedElement.element.id);\n                      }\n                    );\n                  }\n                });\n              }\n            );\n          }\n        }\n      );\n    }\n\n    for (let m = 0; m < idsToDelete.length; m++) {\n      this.transalationDelete(idsToDelete[m]);\n    }\n    for (let i = 0; i < this.pages.length; i++) {\n      let page = this.pages[i];\n      page.formElements = page.formElements.filter((subForms: any) => {\n        return subForms.element.id != id;\n      });\n    }\n    this.transalationDelete(id);\n    this.deleteSubFormQuestion(this.pages, id);\n    this.deleteGrids(id);\n  }\n  transalationDelete(id: any) {\n    for (let k = this.translations.length - 1; k >= 0; k--) {\n      let translate = this.translations[k];\n      if (translate.elementId == id) {\n        this.translations.splice(k, 1);\n      }\n    }\n  }\n\n  openValidationFailedModal(\n    validationErrors: ValidationError[],\n    isPublish: boolean = false\n  ): Promise<boolean> {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      dialogIssues: validationErrors,\n      isPublish: isPublish,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n\n    this.validationDialogRef = this.dialog.open(\n      ValidationFailedModalComponent,\n      dialogConfig\n    );\n\n    return this.validationDialogRef.afterClosed().toPromise(); // returns a Promise<boolean>\n  }\n\n  openConfirmationModal(page: any) {\n    let selectedPages: any = [];\n    selectedPages.push(page);\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader: 'Are you sure ?',\n      message: 'Do you want to delete this page?',\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    this.confirmationDialogRef = this.dialog.open(\n      ConfirmationModalComponent,\n      dialogConfig\n    );\n    this.confirmationDialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        let ids = this.extractElementIds(selectedPages);\n        let pageId = page.id;\n        ids.push(pageId);\n        this.pages = this.pages.filter(\n          (page: { id: any }) => page.id !== pageId\n        );\n        this.updatePageNumber();\n        for (let m = 0; m < ids.length; m++) {\n          this.transalationDelete(ids[m]);\n        }\n        this.isQuestionSelected = false;\n      }\n    });\n  }\n  extractElementIds(data: any): string[] {\n    let elementIds: string[] = [];\n\n    data.forEach((item: any) => {\n      if (item.rows) {\n        item.rows.forEach((row: any) => {\n          if (row.grids) {\n            row.grids.forEach((grid: any) => {\n              if (grid.elementId) {\n                elementIds.push(grid.elementId);\n              }\n            });\n          }\n        });\n      }\n    });\n\n    return elementIds;\n  }\n\n  updatePageNumber() {\n    this.pages.forEach((page: any, index: any) => {\n      page.pageNo = index + 1;\n    });\n  }\n\n  deleteGrids(id: any) {\n    for (let i = 0; i < this.pages.length; i++) {\n      let page = this.pages[i];\n\n      for (let j = 0; j < page.rows.length; j++) {\n        let row = page.rows[j];\n\n        // Recursively handle grids with nested rows\n        const removeGridWithElementId = (grids: any[], id: string) => {\n          return grids.filter((grid: any) => {\n            // If grid has nested rows, process them\n            if (grid.rows) {\n              grid.rows.forEach((innerRow: any) => {\n                innerRow.grids = removeGridWithElementId(innerRow.grids, id);\n              });\n\n              // If all inner grids are removed, remove the row\n              grid.rows = grid.rows.filter(\n                (innerRow: any) => innerRow.grids.length > 0\n              );\n            }\n\n            // Return only grids that don't match the elementId\n            return grid.elementId !== id;\n          });\n        };\n\n        // Update grids in the current row by filtering out the matching elementId\n        row.grids = removeGridWithElementId(row.grids, id);\n      }\n\n      // After processing all rows, remove rows that have no grids left\n      page.rows = page.rows.filter((row: any) => row.grids.length > 0);\n    }\n  }\n  handleInput() {\n    const inputField =\n      this.elementRef.nativeElement.querySelector('#textField');\n    const textWidth = this.inputValue.length * 8;\n    inputField.style.width = Math.max(textWidth, 10) + 'px';\n  }\n\n  handleKeyDown(event: KeyboardEvent, childLogic: any) {\n    if (event.key === 'Enter') {\n      const inputField =\n        this.elementRef.nativeElement.querySelector('#textField');\n      const inputValue = this.inputValue.trim();\n      if (inputValue !== '') {\n        if (!Array.isArray(childLogic.inputValue)) {\n          childLogic.inputValue = [];\n        }\n        childLogic.inputValue.push(inputValue);\n        this.inputValue = '';\n        inputField.style.width = '10px';\n      }\n    }\n  }\n\n  removeOption(optionValue: string, childLogic: any) {\n    const index = childLogic.inputValue.indexOf(optionValue);\n    if (index > -1) {\n      childLogic.inputValue.splice(index, 1);\n    }\n  }\n\n  onTranslationsUpdated(updatedTranslations: any) {\n    this.translations = updatedTranslations;\n  }\n  ngOnDestroy() {\n    if (this.logicIdSubscription) {\n      this.logicIdSubscription.unsubscribe();\n    }\n    if (this.subformIdSubscription) {\n      this.subformIdSubscription.unsubscribe();\n    }\n    if (this.receivedDataSubscription) {\n      this.receivedDataSubscription.unsubscribe();\n    }\n    if (this.questionSubscription) {\n      this.questionSubscription.unsubscribe();\n    }\n    if (this.pageIdSubscription) {\n      this.pageIdSubscription.unsubscribe();\n    }\n    if (this.logicQuestionSubscription) {\n      this.logicQuestionSubscription.unsubscribe();\n    }\n    if (this.childQuestionsSubscription) {\n      this.childQuestionsSubscription.unsubscribe();\n    }\n    if (this.translationSubscription) {\n      this.translationSubscription.unsubscribe();\n    }\n    if (this.subFormQuestionSubscription) {\n      this.subFormQuestionSubscription.unsubscribe();\n    }\n    if (this.subFormQuestionsSubscription) {\n      this.subFormQuestionsSubscription.unsubscribe();\n    }\n    if (this.newSubFormQuestionsSubscription) {\n      this.newSubFormQuestionsSubscription.unsubscribe();\n    }\n\n    if (this.subFormSectionsSubscription) {\n      this.subFormSectionsSubscription.unsubscribe();\n    }\n    if (this.subFormNewQuestionSubscription) {\n      this.subFormNewQuestionSubscription.unsubscribe();\n    }\n    if (this.sectionSubscription) {\n      this.sectionSubscription.unsubscribe();\n    }\n    if (this.subFormDeleteSubscription) {\n      this.subFormDeleteSubscription.unsubscribe();\n    }\n    if (this.multiFieldQuestionsSubscription) {\n      this.multiFieldQuestionsSubscription.unsubscribe();\n    }\n    if (this.multiFieldIdSubscription) {\n      this.multiFieldIdSubscription.unsubscribe();\n    }\n    if (this.copiedQuestionSubscription) {\n      this.copiedQuestionSubscription.unsubscribe();\n    }\n    if (this.focuesdQuestionSubscription) {\n      this.focuesdQuestionSubscription.unsubscribe();\n    }\n    if (this.copiedSubformSubscription) {\n      this.copiedSubformSubscription.unsubscribe();\n    }\n    if (this.validationDialogRef) {\n      this.validationDialogRef.close();\n    }\n    if (this.confirmationDialogRef) {\n      this.confirmationDialogRef.close();\n    }\n    if (this.dialogRefWebhooks) {\n      this.dialogRefWebhooks.close();\n    }\n\n    if (this.dialogRefEmitters) {\n      this.dialogRefEmitters.close();\n    }\n    this.resetForm();\n    this.dataservice.cleanup();\n  }\n\n  resetForm() {\n    this.formId = '';\n    this.edit = false;\n    this.moduleName = '';\n    this.top = '50';\n    this.pageId = '';\n    this.questionId = '';\n    this.rowId = '';\n    this.isEditing = false;\n    this.title = '';\n    this.pageTitle = '';\n    this.isEditingPage = false;\n    this.formData = null;\n    this.configurationData = {};\n    this.selectedQuestion = {};\n    this.selectedSection = {};\n    this.selectedForm = {};\n    this.isQuestionSelected = false;\n    this.modifiedOn = '';\n    this.modifiedBy = '';\n    this.sideBarOpened = false;\n    this.receivedPageId = '';\n    this.pageNo = 1;\n    this.selectedids = [];\n    this.inputValue = '';\n    this.translations = [];\n    this.pages = [];\n    this.initialForm = {};\n\n    this.initializeForm();\n  }\n\n  openWebhooks() {\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.position = { top: '5%' };\n    dialogConfig.width = '850px';\n    dialogConfig.data = {\n      webhooks: this.webhooks,\n      translations: this.translations,\n      formStatus: this.formStatus,\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    dialogConfig.maxHeight = '80vh';\n\n    this.dialogRefWebhooks = this.dialog.open(WebhooksComponent, dialogConfig);\n\n    this.dialogRefWebhooks.afterClosed().subscribe((result: any) => {\n      this.dialogRefWebhooks = null; // reset reference\n      if (result) {\n        this.webhooks = result;\n        this.hasAnyWebhookConflict(this.webhooks);\n      }\n    });\n  }\n\n  getWebhooks(moduleName: string) {\n    this.ApiService.getWebhooks(moduleName).subscribe({\n      next: (res: any) => {\n        if (res.result) {\n          this.webhooks = res.result.webhooks;\n          this.emitters = res.result.emitters;\n          this.emitterConflict = this.hasAnyEmitterConflict(this.emitters);\n          this.hasAnyWebhookConflict(this.webhooks);\n          this.defaultQuestions = res.result.questions;\n          this.primaryColor = res.result.primaryColor;\n          this.secondaryColor = res.result.secondaryColor;\n          if (\n            this.defaultQuestions &&\n            this.defaultQuestions.length > 0 &&\n            !this.edit\n          ) {\n            this.addDefaultQuestion(this.defaultQuestions);\n          }\n        }\n      },\n      error: (error: any) => {},\n    });\n  }\n\n  hasConflictInWebhook(webhook: any): boolean {\n    if (!webhook) {\n      return false;\n    }\n\n    // Check if any of the `headers`, `params`, `pathVariables`, or `requestBodies` have conflict\n    const hasConflictInHeaders = webhook.headers?.some(\n      (header: any) => header.isConflict\n    );\n    const hasConflictInParams = webhook.params?.some(\n      (param: any) => param.isConflict\n    );\n    const hasConflictInPathVariables = webhook.pathVariables?.some(\n      (pathVar: any) => pathVar.isConflict\n    );\n    const hasConflictInRequestBodies = webhook.requestBodies?.some(\n      (body: any) => body.isConflict\n    );\n\n    // Return true if any of the nested elements have conflict\n    return (\n      hasConflictInHeaders ||\n      hasConflictInParams ||\n      hasConflictInPathVariables ||\n      hasConflictInRequestBodies\n    );\n  }\n\n  hasAnyWebhookConflict(webhooks: any[]) {\n    if (!webhooks || !webhooks.length) {\n      this.webhookConflict = false;\n    }\n    this.webhookConflict = webhooks?.some((webhook: any) =>\n      this.hasConflictInWebhook(webhook)\n    );\n  }\n\n  updateWebhooks() {\n    // Filter valid question IDs from the translations array\n    const validQuestionIds = this.translations\n      ?.filter(\n        (item: { language: string; entityType: string; attribute: string }) =>\n          item.language === 'eng' &&\n          item.entityType === 'QUESTION' &&\n          item.attribute === 'NAME'\n      )\n      .map((item: { elementId: any }) => item.elementId);\n\n    this.webhooks?.forEach((webhook: any) => {\n      // Check and update pathVariables\n      webhook.pathVariables?.forEach((variable: any) => {\n        if (variable.valueSource != 'CALCULATE') {\n          if (!validQuestionIds.includes(variable.questionId)) {\n            variable.questionId = '';\n            variable.isConflict = true;\n          }\n        }\n      });\n\n      // Check and update requestBodies\n      webhook.requestBodies?.forEach((body: any) => {\n        if (body.valueSource != 'CALCULATE') {\n          if (!validQuestionIds.includes(body.questionId)) {\n            body.questionId = '';\n            body.isConflict = true;\n          }\n        }\n      });\n\n      // Check and update headers\n      webhook.headers?.forEach((header: any) => {\n        if (header.valueSource != 'CALCULATE') {\n          if (!validQuestionIds.includes(header.questionId)) {\n            header.questionId = '';\n            header.isConflict = true;\n          }\n        }\n      });\n\n      // Check and update params\n      webhook.params?.forEach((param: any) => {\n        if (param.valueSource != 'CALCULATE') {\n          if (!validQuestionIds.includes(param.questionId)) {\n            param.questionId = '';\n            param.isConflict = true;\n          }\n        }\n      });\n    });\n    this.hasAnyWebhookConflict(this.webhooks);\n  }\n\n  updateEmitters() {\n    // Step 1: Extract valid question IDs from translations\n    const validQuestionIds = this.translations\n      ?.filter(\n        (item: { language: string; entityType: string; attribute: string }) =>\n          item.language === 'eng' &&\n          item.entityType === 'QUESTION' &&\n          item.attribute === 'NAME'\n      )\n      .map((item: { elementId: string }) => item.elementId);\n\n    // Step 2: Iterate emitters and check validity\n    this.emitters?.forEach((emitter: any) => {\n      if (emitter.valueSource === 'QUESTION') {\n        if (!validQuestionIds.includes(emitter.questionId)) {\n          emitter.isConflict = true;\n          emitter.questionId = '';\n        } else {\n          emitter.isConflict = false;\n        }\n      } else {\n        emitter.isConflict = false; // for non-QUESTION types, reset conflict\n      }\n    });\n\n    this.emitterConflict = this.hasAnyEmitterConflict?.(this.emitters); // optional helper if defined\n  }\n\n  hasAnyEmitterConflict(emitters: any[]) {\n    return emitters?.some((e: any) => e.isConflict);\n  }\n\n  addDefaultQuestion(questions: any) {\n    let formElements: any = [\n      {\n        elementType: 'TEXT_BOX',\n        appearance: {\n          fontSize: 22,\n          textAlign: '',\n          font: 'Poppins',\n          underline: false,\n          bold: false,\n          italics: false,\n          placeholder: '',\n          defaultValue: '',\n        },\n        validation: {\n          validationType: null,\n          regex: '',\n          validation: '',\n        },\n      },\n      {\n        elementType: 'HIDDEN_FIELD',\n        appearance: {},\n        validation: {},\n        hiddenField: {\n          key: null,\n          valueSource: null,\n          value: null,\n        },\n      },\n      {\n        elementType: 'TEXT_AREA',\n        appearance: {\n          fontSize: 22,\n          textAlign: '',\n          font: 'Poppins',\n          underline: false,\n          bold: false,\n          italics: false,\n          placeholder: '',\n          defaultValue: '',\n          numberOfRows: '',\n        },\n        validation: {\n          limitedCharacters: false,\n          count: 0,\n        },\n      },\n      {\n        elementType: 'EMAIL',\n        appearance: {\n          placeholder: '',\n        },\n        validation: {\n          regularExpression: '',\n          expectedDomains: '',\n        },\n      },\n      {\n        elementType: 'PASSWORD',\n        appearance: {\n          confirmPassword: false,\n          viewButton: false,\n          displayStrong: false,\n        },\n        validation: {\n          minLength: null,\n          maxLength: null,\n          requireLowercaseLetters: false,\n          requireUppercaseLetters: false,\n          requireNumbers: false,\n          requireSpecialCharacters: false,\n          allowedSpecialCharacters: '',\n        },\n      },\n      {\n        elementType: 'MOBILE',\n        appearance: {\n          displayCountryCode: true,\n          displayCode: true,\n          displayFlag: false,\n          showCountryName: false,\n          beautifyNumbers: false,\n          placeholder: '',\n        },\n        validation: {\n          countryWiseValidation: false,\n          restrictCountry: false,\n          allowedCountries: [],\n          blockedCountries: [],\n        },\n      },\n      {\n        elementType: 'RICH_TEXT_EDITOR',\n        appearance: {\n          numberOfRows: null,\n        },\n        validation: {\n          limitedCharacters: false,\n          count: null,\n        },\n      },\n      {\n        elementType: 'NUMBER',\n        appearance: {\n          upAndDownButton: false,\n          allowNegativeValues: false,\n          placeholder: '',\n        },\n        validation: {\n          min: null,\n          max: null,\n        },\n      },\n      {\n        elementType: 'URL',\n        appearance: {\n          showPreviewButton: false,\n          placeholder: '',\n        },\n        validation: {},\n      },\n      {\n        elementType: 'DROP_DOWN',\n        appearance: {\n          selectionType: 'SINGLE',\n        },\n        validation: {\n          minimumSelection: null,\n          maximumSelection: null,\n        },\n        option: {\n          optionType: '',\n          lookupTable: '',\n          customOptions: [],\n          database: {\n            tableName: '',\n            valueField: '',\n            labelField: '',\n            criteria: [],\n          },\n          api: {\n            external: true,\n            url: '',\n            valueField: '',\n            labelField: '',\n            pathToValue: '',\n            pathVariables: [],\n            headers: [],\n            params: [],\n          },\n        },\n      },\n      {\n        elementType: 'FILE_PICKER',\n        appearance: {\n          dragAndDrop: false,\n          previewUploadedFiles: false,\n          multiFileUploads: false,\n        },\n        validation: {\n          fileTypes: [\n            'image/png',\n            'image/jpeg',\n            'application/pdf',\n            'application/msword',\n            'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n          ],\n          fileSize: 2,\n          fileSizeUnit: 'MB',\n          totalFileSize: 10,\n        },\n      },\n      {\n        elementType: 'DATE_TIME',\n        appearance: {\n          dateType: 'DATE_ONLY',\n          format: 'DD-MM-YYYY',\n        },\n        validation: {\n          minDateOption: '',\n          minDate: '',\n          maxDateOption: '',\n          maxDate: '',\n        },\n      },\n      {\n        elementType: 'TOGGLE_SWITCH',\n        appearance: {\n          labelOnValue: '',\n          labelOffValue: '',\n          labelOnColor: '',\n          labelOffColor: '',\n        },\n        validation: {\n          buttonColour: '',\n        },\n      },\n      {\n        elementType: 'SELECTION_MATRIX',\n        appearance: {\n          selectionColorRequired: false,\n          selectionColor: '',\n        },\n        validation: {\n          minSelectionRequired: false,\n          minSelectionValue: '',\n        },\n      },\n      {\n        elementType: 'TERMS_AND_CONDITION',\n        appearance: {\n          showAcceptButton: false,\n        },\n        validation: {\n          preventFromProceedingWithoutAgree: false,\n        },\n        termsAndCondition: {\n          termsAndConditionType: '',\n          value: '',\n        },\n      },\n      {\n        elementType: 'LOCATION',\n        appearance: {\n          setCurrentPosition: false,\n          defaultZoomLevel: null,\n          allowFullScreen: false,\n          latitude: '',\n          longitude: '',\n        },\n        validation: {\n          regionBoundary: false,\n          region: '',\n        },\n      },\n      {\n        elementType: 'SIGNATURE',\n        appearance: {\n          canvasOption: '',\n        },\n        validation: {\n          maxFileSize: null,\n          minFileSize: null,\n        },\n      },\n      {\n        elementType: 'CHECK_BOX',\n        appearance: {\n          selectionType: 'SINGLE',\n        },\n        validation: {\n          minimumSelection: null,\n          maximumSelection: null,\n        },\n        option: {\n          optionType: '',\n          lookupTable: '',\n          customOptions: [],\n          database: {\n            tableName: '',\n            valueField: '',\n            labelField: '',\n            criteria: [],\n          },\n          api: {\n            external: true,\n            url: '',\n            valueField: '',\n            labelField: '',\n            pathToValue: '',\n            pathVariables: [],\n            headers: [],\n            params: [],\n          },\n        },\n      },\n      {\n        elementType: 'RADIO_BUTTON',\n        appearance: {\n          changeButtonColor: false,\n          color: '',\n        },\n        validation: {},\n        option: {\n          optionType: '',\n          lookupTable: '',\n          customOptions: [],\n          database: {\n            tableName: '',\n            valueField: '',\n            labelField: '',\n            criteria: [],\n          },\n          api: {\n            external: true,\n            url: '',\n            valueField: '',\n            labelField: '',\n            pathToValue: '',\n            pathVariables: [],\n            headers: [],\n            params: [],\n          },\n        },\n      },\n      {\n        elementType: 'SLIDER',\n        appearance: {\n          minValue: null,\n          maxValue: null,\n          stepValue: null,\n          changeSliderColor: false,\n          sliderColor: '',\n        },\n        validation: {},\n      },\n    ];\n    this.pages.forEach((page: any) => {\n      page.formElements = [];\n      page.rows = [];\n    });\n    this.translations = this.translations.filter((translation: any) => {\n      return translation.entityType !== 'QUESTION'; // Keep only those that are not 'QUESTION'\n    });\n    questions.forEach((question: any) => {\n      for (let i of formElements) {\n        if (i.elementType == question.elementType) {\n          let newQuestion = {\n            entityType: 'QUESTION',\n            element: {\n              id: question.id,\n              required: false,\n              hint: '',\n              question: question.label,\n              count: 12,\n              formElement: i,\n            },\n            customElementId: question.customElementId || '',\n          };\n          let rowId = uuidv4();\n          let newRow = {\n            id: rowId,\n            grids: [\n              {\n                elementId: question.id,\n                entityType: 'QUESTION',\n                count: 12,\n              },\n            ],\n          };\n\n          let nameTranslation = {\n            elementId: question.id,\n            entityType: 'QUESTION',\n            language: 'eng',\n            attribute: 'NAME',\n            translatedText: question.label,\n          };\n\n          let helpTextTranslation = {\n            elementId: question.id,\n            entityType: 'QUESTION',\n            language: 'eng',\n            attribute: 'HELP_TEXT',\n            translatedText: '',\n          };\n\n          let placeholderTranslation = {\n            elementId: question.id,\n            entityType: 'QUESTION',\n            language: 'eng',\n            attribute: 'PLACEHOLDER',\n            translatedText: '',\n          };\n          this.selectedQuestion = newQuestion.element;\n          const page = this.pages[0];\n          page.formElements.push(newQuestion);\n          page.rows.push(newRow);\n          this.translations.push(nameTranslation);\n          this.translations.push(helpTextTranslation);\n          this.translations.push(placeholderTranslation);\n        }\n      }\n    });\n  }\n  htmlTag = this.document.getElementsByTagName('html')[0] as HTMLHtmlElement;\n  toggleView() {\n    this.htmlTag.dir = this.selectedLanguage === 'ar' ? 'rtl' : 'ltr';\n  }\n\n  updatePreviewLanguages() {\n    this.translations.forEach((translation: any) => {\n      const lang = translation.language;\n\n      if (\n        lang !== 'eng' &&\n        !this.previewLanguages.some((langObj: any) => langObj.value === lang)\n      ) {\n        const labelMap: { [key: string]: string } = {\n          ar: 'Arabic',\n        };\n\n        const label = labelMap[lang] || lang.toUpperCase(); // Fallback to uppercase of the language code\n        this.previewLanguages.push({ label, value: lang });\n      }\n    });\n  }\n\n  getOptions(question: any) {\n    const elementType = question?.element?.formElement?.elementType;\n\n    const dropdownComparisonTypes = ['DROP_DOWN', 'RADIO_BUTTON', 'CHECK_BOX'];\n    if (elementType === 'NUMBER') {\n      return this.comparisonOptions;\n    } else if (dropdownComparisonTypes.includes(elementType)) {\n      return this.dropdownComparison;\n    } else if (elementType === 'TEXT_BOX') {\n      return this.textComparison;\n    }\n\n    return this.comparisonOptions;\n  }\n\n  updateQuestionOptions(page: any, questionId: string, updatedOptions: any[]) {\n    const questionIndex = page.formElements.findIndex(\n      (q: any) => q.id === questionId\n    );\n    if (questionIndex !== -1 && page.formElements[questionIndex].formElement) {\n      page.formElements[questionIndex].formElement.option =\n        page.formElements[questionIndex].formElement.option || {};\n      page.formElements[questionIndex].formElement.option.customOptions =\n        updatedOptions;\n    } else {\n      console.error('Form element or option not found.');\n    }\n  }\n\n  optionUpdates(data: any) {\n    this.pages.forEach((page: any) => {\n      page.formElements?.forEach((formElement: any) => {\n        if (formElement.element?.id === data.element.id) {\n          formElement.element = { ...data.element };\n        }\n      });\n    });\n  }\n\n  updateQuestion = (question: any): void => {\n    const updateElement = (element: any) => {\n      if (element.entityType !== 'QUESTION' || !element.element) return;\n\n      const { elementType } = element.element.formElement;\n\n      if (\n        ['DROP_DOWN', 'CHECK_BOX', 'RADIO_BUTTON'].includes(elementType) &&\n        element.element.id == question.id\n      ) {\n        element.element = { ...question };\n      }\n\n      // Validate childLogics\n      element.element.childLogics?.forEach((logic: any) =>\n        logic.formElements.forEach((childElement: any) =>\n          updateElement(childElement)\n        )\n      );\n    };\n\n    const updateSubFormElement = (subForm: any) => {\n      if (!subForm || !subForm.formElements) return;\n      subForm.formElements.forEach((element: any) => {\n        if (element.entityType === 'QUESTION') {\n          updateElement(element);\n        } else if (element.entityType === 'SUBFORM') {\n          updateSubFormElement(element.element);\n        }\n      });\n    };\n\n    this.pages.forEach((page: any) => {\n      page.formElements.forEach((element: any) => {\n        if (element.entityType === 'QUESTION') {\n          updateElement(element);\n        } else if (\n          element.entityType === 'SUBFORM' ||\n          element.entityType === 'QUESTION_GROUP'\n        ) {\n          updateSubFormElement(element.element);\n        }\n      });\n    });\n  };\n\n  validateForm = (pages: any): void => {\n    const validateFormElement = (element: any) => {\n      if (element.entityType !== 'QUESTION' || !element.element) return;\n      const isWhenClauseValid = this.isWhenClauseValid(\n        element?.whenClause?.whenClauseCondition\n      );\n      if (!isWhenClauseValid) {\n        this.inValidQuestions.push({\n          id: element.element.id,\n          message: `Please provide a valid when clause.`,\n        });\n      }\n      const { elementType, option, scoring } = element.element.formElement;\n\n      if (\n        ['DROP_DOWN', 'CHECK_BOX', 'RADIO_BUTTON'].includes(elementType) &&\n        option\n      ) {\n        if (option.optionType === '') {\n          this.inValidQuestions.push({\n            id: element.element.id,\n            message: `Please select one option: Custom Options, Load from lookup data, Load from database, or Load from API.`,\n          });\n        }\n        if (option.optionType === 'DATABASE') {\n          if (\n            !option.database?.tableName ||\n            !option.database?.valueField ||\n            !option.database?.labelField\n          ) {\n            this.inValidQuestions.push({\n              id: element.element.id,\n              message: `Database Table, Value Field, and Label Field should not be empty.`,\n            });\n          }\n        } else if (option.optionType === 'API') {\n          if (\n            !option.api?.url ||\n            !option.api?.valueField ||\n            !option.api?.labelField\n          ) {\n            this.inValidQuestions.push({\n              id: element.element.id,\n              message: `API URL, Value Field, and Label Field should not be empty.`,\n            });\n          }\n        } else if (option.optionType === 'LOOKUP') {\n          if (!option.lookupTable) {\n            this.inValidQuestions.push({\n              id: element.element.id,\n              message: `Lookup table should not be empty`,\n            });\n          }\n        } else if (option.optionType === 'OPTION') {\n          if (option?.customOptions?.length == 0) {\n            this.inValidQuestions.push({\n              id: element.element.id,\n              message: `Custom options should not be empty`,\n            });\n          }\n        }\n\n        if (scoring?.enableScoring) {\n          if (scoring.score == null || scoring.score.length == 0) {\n            this.inValidQuestions.push({\n              id: element.element.id,\n              message: `Please provide a custom score in scoring section`,\n            });\n          } else if (scoring.score && scoring.score.length > 0) {\n            const hasEmptyLabel = scoring.score.some(\n              (score: any) => !score.label || score.label.length === 0\n            );\n            if (hasEmptyLabel) {\n              this.inValidQuestions.push({\n                id: element.element.id,\n                message: `Please select an option for scoring`,\n              });\n            } else {\n              const hasEmptyScore = scoring.score.some((score: any) => {\n                return (\n                  score.score === null ||\n                  score.score === undefined ||\n                  score.score === ''\n                );\n              });\n              if (hasEmptyScore) {\n                this.inValidQuestions.push({\n                  id: element.element.id,\n                  message: `Please provide a score for selected options`,\n                });\n              }\n            }\n          }\n        }\n      } else if (elementType == 'AGGREGATE_FUNCTION') {\n        if (\n          element.element.formElement.aggregateFunction.aggregateOperation ==\n          undefined\n        ) {\n          this.inValidQuestions.push({\n            id: element.element.id,\n            message: `Please select an Aggregate Function type.`,\n          });\n        } else if (\n          element.element.formElement.aggregateFunction.aggregateOperation ==\n          'CUSTOM'\n        ) {\n          const formula = element.element.formElement.aggregateFunction.formula;\n          let validateFormula = this.validationService.isValidFormula(formula);\n          if (!validateFormula) {\n            this.inValidQuestions.push({\n              id: element.element.id,\n              message: `Provide a valid formula for Aggregate Function.`,\n            });\n          }\n        } else {\n          const formula = element.element.formElement.aggregateFunction.formula;\n          // Extract UUIDs from comma-separated formula\n          const uuids =\n            formula\n              ?.split(',')\n              .map((s: any) => s.trim())\n              .filter(Boolean) || [];\n          if (uuids.length <= 1) {\n            this.inValidQuestions.push({\n              id: element.element.id,\n              message: `Provide a valid formula for Aggregate Function.`,\n            });\n          }\n        }\n      } else if (elementType == 'TOGGLE_SWITCH') {\n        if (\n          element.element.formElement.appearance.labelOnValue == '' ||\n          element.element.formElement.appearance.labelOffValue == ''\n        ) {\n          this.inValidQuestions.push({\n            id: element.element.id,\n            message: `Toggle Switch labels should not be empty`,\n          });\n        }\n      } else if (elementType == 'HIDDEN_FIELD') {\n        if (\n          element.element.formElement.hiddenField.valueSource == '' ||\n          element.element.formElement.hiddenField.valueSource == null\n        ) {\n          this.inValidQuestions.push({\n            id: element.element.id,\n            message: 'Please provide a value source for Hidden Field',\n          });\n        } else if (\n          element.element.formElement.hiddenField.valueSource ==\n            'CUSTOM_INPUT' ||\n          element.element.formElement.hiddenField.valueSource ==\n            'PREDEFINED_VARIABLE'\n        ) {\n          if (\n            element.element.formElement.hiddenField.value == '' ||\n            element.element.formElement.hiddenField.value == null\n          ) {\n            this.inValidQuestions.push({\n              id: element.element.id,\n              message: 'Please provide a value for Hidden Field',\n            });\n          }\n        } else {\n          if (\n            element.element.formElement.hiddenField.key == '' ||\n            element.element.formElement.hiddenField.key == null\n          ) {\n            this.inValidQuestions.push({\n              id: element.element.id,\n              message: 'Please provide a key for Hidden Field',\n            });\n          }\n        }\n      } else if (elementType == 'IFRAME_WIDGET') {\n        if (element.element.formElement.iFrameProperties.contentType == '') {\n          this.inValidQuestions.push({\n            id: element.element.id,\n            message: 'Please provide a content type for the iframe field',\n          });\n        } else if (\n          element.element.formElement.iFrameProperties.contentType == 'LINK'\n        ) {\n          if (element.element.formElement.iFrameProperties.url == '') {\n            this.inValidQuestions.push({\n              id: element.element.id,\n              message: 'Please provide a valid url for the iframe field',\n            });\n          }\n        } else if (\n          element.element.formElement.iFrameProperties.contentType == 'HTML'\n        ) {\n          if (\n            element.element.formElement.iFrameProperties.html.content == '' &&\n            element.element.formElement.iFrameProperties.script.code == '' &&\n            element.element.formElement.iFrameProperties.style.css == ''\n          ) {\n            this.inValidQuestions.push({\n              id: element.element.id,\n              message: 'Please provide data for html content',\n            });\n          }\n        }\n      }\n      // Validate childLogics\n      element.element.childLogics?.forEach((logic: any) =>\n        logic?.formElements?.forEach((childElement: any) =>\n          validateFormElement(childElement)\n        )\n      );\n    };\n\n    const validateSubForm = (subForm: any) => {\n      if (!subForm || !subForm.formElements) return;\n      subForm.formElements.forEach((element: any) => {\n        if (element.entityType === 'QUESTION') {\n          validateFormElement(element);\n        } else if (element.entityType === 'SUBFORM') {\n          validateSubForm(element.element);\n        }\n      });\n    };\n\n    pages.forEach((page: any) => {\n      page.formElements.forEach((element: any) => {\n        if (element.entityType === 'QUESTION') {\n          validateFormElement(element);\n        } else if (\n          element.entityType === 'SUBFORM' ||\n          element.entityType === 'QUESTION_GROUP' ||\n          element.entityType === 'MULTIFIELD'\n        ) {\n          validateSubForm(element.element);\n          if (element.whenClause) {\n            const isWhenClauseValid = this.isWhenClauseValid(\n              element?.whenClause?.whenClauseCondition\n            );\n            if (!isWhenClauseValid) {\n              this.inValidQuestions.push({\n                id: element.element.id,\n                message: `Please provide a valid when clause.`,\n              });\n            }\n          }\n        } else if (element.entityType == 'SECTION') {\n          const isWhenClauseValid = this.isWhenClauseValid(\n            element?.whenClause?.whenClauseCondition\n          );\n          if (!isWhenClauseValid) {\n            this.inValidQuestions.push({\n              id: element.element.id,\n              message: `Please provide a valid when clause.`,\n            });\n          }\n        }\n      });\n    });\n  };\n\n  isWhenClauseValid(whenClause: any): boolean {\n    if (whenClause?.length > 0) {\n      for (let i = 0; i < whenClause?.length; i++) {\n        const clause = whenClause[i];\n\n        // Every row must have: question + condition + value\n        if (!clause.questionid || !clause.condition) {\n          return false;\n        }\n\n        // From second row onward, logic is also required\n        if (i > 0 && !clause.logic) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Handles the process of copying a question within the form builder.\n   * It locates the original question by its ID and duplicates it\n   * into the corresponding place (page, row, logic branch, etc.).\n   *\n   * @param copiedQuestion - The question object that needs to be duplicated.\n   */\n  handleCopyQuestion(copiedQuestion: any) {\n    const originalId =\n      copiedQuestion.id ||\n      (copiedQuestion.element && copiedQuestion.element.id);\n    if (!copiedQuestion || !originalId) {\n      console.error('Copied question or original ID missing');\n      return;\n    }\n\n    // Iterate over all pages to find the original question and insert a copy after it\n    for (let page of this.pages) {\n      if (\n        this.findAndCopyInElements(\n          page.formElements,\n          copiedQuestion,\n          page,\n          undefined,\n          originalId\n        )\n      ) {\n        break;\n      }\n    }\n\n    if (this._lastCopiedQuestionElement) {\n      // a tiny timeout lets Angular finish the splice & row insertion\n      setTimeout(() => {\n        this.selectQuestion(this._lastCopiedQuestionElement);\n      });\n    }\n  }\n\n  /**\n   * Recursively traverses form elements to locate the original question and insert the copied one.\n   *\n   * @param elements - Array of form elements to traverse.\n   * @param copiedQuestion - The question that needs to be duplicated.\n   * @param page - The current page context.\n   * @param parentId - Optional parent ID if the element is nested inside another container.\n   * @param originalId - The ID of the original question to locate.\n   * @returns boolean - Returns true once the copied question is inserted.\n   */\n  findAndCopyInElements(\n    elements: any[],\n    copiedQuestion: any,\n    page: any,\n    parentId?: string,\n    originalId?: string\n  ): boolean {\n    originalId =\n      originalId ||\n      copiedQuestion.id ||\n      (copiedQuestion.element && copiedQuestion.element.id);\n\n    for (let i = 0; i < elements.length; i++) {\n      let current = elements[i];\n\n      // Skip duplicating MULTIFIELD container directly\n      if (\n        current.entityType === 'MULTIFIELD' &&\n        current.element.id === originalId\n      ) {\n        return true;\n      }\n\n      // Traverse nested form elements in a MULTIFIELD\n      if (\n        current.entityType === 'MULTIFIELD' &&\n        current.element?.formElements\n      ) {\n        if (\n          this.findAndCopyInElements(\n            current.element.formElements,\n            copiedQuestion,\n            page,\n            current.element.id,\n            originalId\n          )\n        ) {\n          return true;\n        }\n      }\n      // Found a matching element to duplicate\n      if (current.element && current.element.id === originalId) {\n        let newQuestion = JSON.parse(JSON.stringify(copiedQuestion));\n        if (newQuestion.element) {\n          newQuestion.element.id = uuidv4();\n          newQuestion.element.question += ' (Copy)';\n        } else {\n          newQuestion.id = uuidv4();\n          newQuestion.question += ' (Copy)';\n        }\n\n        const copiedQuestionWrapper = {\n          entityType: 'QUESTION',\n          element: newQuestion.element || newQuestion,\n          customElementId: newQuestion.customElementId || '',\n        };\n\n        // Insert duplicated question right after the original\n        elements.splice(i + 1, 0, copiedQuestionWrapper);\n        this._lastCopiedQuestionElement = copiedQuestionWrapper.element;\n\n        // Create corresponding row layout for the duplicated question\n        const newGrid = {\n          elementId: newQuestion.element\n            ? newQuestion.element.id\n            : newQuestion.id,\n          entityType: 'QUESTION',\n          count: 12,\n        };\n\n        const newRow = {\n          id: uuidv4(),\n          grids: [newGrid],\n        };\n\n        if (parentId) {\n          this.addRowToMatchingQuestion(page, newRow, parentId, originalId);\n        } else {\n          const rowIndex = page.rows.findIndex((row: any) =>\n            row.grids.some((grid: any) => grid.elementId === originalId)\n          );\n          if (rowIndex !== -1) {\n            page.rows.splice(rowIndex + 1, 0, newRow);\n          } else {\n            page.rows.push(newRow);\n          }\n        }\n\n        // Duplicate translations for the new question\n        const originalTranslations = this.translations.filter(\n          (t: any) => t.elementId === originalId\n        );\n        originalTranslations.forEach((t: any) => {\n          this.translations.push({\n            ...t,\n            elementId: newQuestion.element\n              ? newQuestion.element.id\n              : newQuestion.id,\n            translatedText:\n              t.attribute === 'NAME'\n                ? t.translatedText + ' (Copy)'\n                : t.translatedText,\n          });\n        });\n\n        // Recursively duplicate child logics and subform elements if they exist\n        if (newQuestion && newQuestion.childLogics) {\n          newQuestion.childLogics = this.duplicateChildLogics(\n            newQuestion.childLogics,\n            page,\n            newQuestion.id\n          );\n        }\n\n        if (newQuestion.element && newQuestion.element.subformElements) {\n          newQuestion.element.subformElements = this.duplicateSubformElements(\n            newQuestion.element.subformElements,\n            page\n          );\n        }\n\n        return true;\n      }\n\n      // Check for child logics and duplicate there if applicable\n      if (current.element?.childLogics?.length) {\n        let parentQuestionId = current.element.id;\n\n        for (let logic of current.element.childLogics) {\n          if (Array.isArray(logic.formElements)) {\n            const index = logic.formElements?.findIndex(\n              (fe: any) => fe.element?.id === originalId\n            );\n\n            if (index !== -1) {\n              let newQuestion = JSON.parse(JSON.stringify(copiedQuestion));\n              newQuestion.element.id = uuidv4();\n              newQuestion.element.question =\n                newQuestion.element.question + ' (Copy)';\n\n              const copiedQuestionWrapper = {\n                entityType: 'QUESTION',\n                element: newQuestion.element,\n              };\n\n              logic.formElements.splice(index + 1, 0, copiedQuestionWrapper);\n              this._lastCopiedQuestionElement = copiedQuestionWrapper.element;\n              const newGrid = {\n                elementId: newQuestion.element.id,\n                entityType: 'QUESTION',\n                count: 12,\n              };\n\n              const newRow = {\n                id: uuidv4(),\n                grids: [newGrid],\n              };\n\n              this.addRowToMatchingQuestion(page, newRow, parentQuestionId);\n\n              const originalTranslations = this.translations.filter(\n                (t: any) => t.elementId === originalId\n              );\n              originalTranslations.forEach((t: any) => {\n                const newTranslation = {\n                  ...t,\n                  elementId: newQuestion.element.id,\n                };\n                this.translations.push(newTranslation);\n              });\n\n              if (newQuestion.element && newQuestion.element.childLogics) {\n                newQuestion.element.childLogics = this.duplicateChildLogics(\n                  newQuestion.element.childLogics,\n                  page,\n                  newQuestion.element.id\n                );\n              }\n\n              return true;\n            }\n\n            if (\n              logic.formElements?.length &&\n              this.findAndCopyInElements(\n                logic.formElements,\n                copiedQuestion,\n                page,\n                parentQuestionId,\n                originalId\n              )\n            ) {\n              return true;\n            }\n          }\n        }\n      }\n\n      // Traverse nested elements in SUBFORM or QUESTION_GROUP types\n      if (\n        (current.entityType === 'SUBFORM' ||\n          current.entityType === 'QUESTION_GROUP') &&\n        current.element &&\n        current.element.formElements\n      ) {\n        if (\n          this.findAndCopyInElements(\n            current.element.formElements,\n            copiedQuestion,\n            page,\n            current.element.id,\n            originalId\n          )\n        ) {\n          return true;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Duplicates a list of child logics, generating new IDs and rows\n   * for each duplicated element inside the child logic.\n   *\n   * @param childLogics - Array of logic branches to duplicate.\n   * @param page - The page context where rows should be added.\n   * @param parentQuestionId - The ID of the parent question to attach rows to.\n   * @returns Array of duplicated child logic objects.\n   */\n  duplicateChildLogics(\n    childLogics: any[],\n    page: any,\n    parentQuestionId: string\n  ): any[] {\n    return childLogics.map((logic: any) => {\n      let newLogic = JSON.parse(JSON.stringify(logic));\n      newLogic.id = uuidv4();\n\n      if (newLogic.formElements && newLogic.formElements.length) {\n        newLogic.formElements = newLogic.formElements.map((elem: any) => {\n          let newElem = JSON.parse(JSON.stringify(elem));\n          const originalElemId = newElem.element.id;\n          newElem.element.id = uuidv4();\n          // Duplicate translations\n          const originalTranslations = this.translations.filter(\n            (t: any) => t.elementId === originalElemId\n          );\n          originalTranslations.forEach((t: any) => {\n            const newTranslation = { ...t, elementId: newElem.element.id };\n            this.translations.push(newTranslation);\n          });\n\n          // Create layout row for each duplicated question\n          let newRow = {\n            id: uuidv4(),\n            grids: [\n              {\n                elementId: newElem.element.id,\n                entityType: 'QUESTION',\n                count: 12,\n              },\n            ],\n          };\n          this.addRowToMatchingQuestion(page, newRow, parentQuestionId);\n\n          // Recursively handle nested child logics\n          if (newElem.element.childLogics) {\n            newElem.element.childLogics = this.duplicateChildLogics(\n              newElem.element.childLogics,\n              page,\n              newElem.element.id\n            );\n          }\n\n          return newElem;\n        });\n      }\n\n      return newLogic;\n    });\n  }\n\n  /**\n   * Recursively duplicates subform elements and their associated translations.\n   * Used for sub-sections inside complex forms.\n   *\n   * @param subformElements - Array of subform elements to be duplicated.\n   * @param page - The page where layout rows will be added.\n   * @returns Array of duplicated subform elements.\n   */\n  duplicateSubformElements(subformElements: any[], page: any): any[] {\n    return subformElements.map((elem: any) => {\n      let newElem = JSON.parse(JSON.stringify(elem));\n      const originalElemId = newElem.element.id;\n      newElem.element.id = uuidv4();\n      newElem.element.question += ' (Copy)';\n\n      // Duplicate translations\n      const originalTranslations = this.translations.filter(\n        (t: any) => t.elementId === originalElemId\n      );\n      // only append \"(Copy)\" when attribute === 'NAME'\n      originalTranslations.forEach((t: any) => {\n        this.translations.push({\n          ...t,\n          elementId: newElem.element.id,\n          translatedText:\n            t.attribute === 'NAME'\n              ? t.translatedText + ' (Copy)'\n              : t.translatedText,\n        });\n      });\n\n      // Create a layout row for the new subform element\n      let newRow = {\n        id: uuidv4(),\n        grids: [\n          {\n            elementId: newElem.element.id,\n            entityType: 'QUESTION',\n            count: 12,\n          },\n        ],\n      };\n      this.addRowToMatchingQuestion(page, newRow, newElem.element.id);\n\n      // Recursively duplicate nested subform elements\n      if (newElem.element.subformElements) {\n        newElem.element.subformElements = this.duplicateSubformElements(\n          newElem.element.subformElements,\n          page\n        );\n      }\n\n      return newElem;\n    });\n  }\n\n  propertyUpdate(data: any) {\n    const validateFormElement = (formElement: any) => {\n      if (formElement.entityType === 'QUESTION') {\n        if (formElement.element.id == this.selectedQuestionId) {\n          formElement.element = {\n            ...formElement.element,\n            formElement: {\n              ...data, // or use structuredClone(data) if needed\n            },\n          };\n          // Optional: force wrapper to change as well\n          formElement = { ...formElement };\n          this.cdr.detectChanges();\n        } else {\n          formElement.element?.childLogics?.forEach((childLogic: any) => {\n            childLogic?.formElements?.forEach((childLogicFormElement: any) => {\n              if (\n                childLogicFormElement?.element.id === this.selectedQuestionId\n              ) {\n                childLogicFormElement.element = {\n                  ...childLogicFormElement.element,\n                  formElement: {\n                    ...data,\n                  },\n                };\n                childLogicFormElement = { ...childLogicFormElement };\n                this.cdr.detectChanges();\n              }\n            });\n          });\n        }\n      }\n\n      formElement.element.childLogics?.forEach((logic: any) =>\n        logic.formElements.forEach((childElement: any) =>\n          validateFormElement(childElement)\n        )\n      );\n    };\n\n    const validateSubForm = (subForm: any) => {\n      if (!subForm || !subForm.formElements) return;\n      subForm.formElements.forEach((element: any) => {\n        if (element.entityType === 'QUESTION') {\n          validateFormElement(element);\n        } else if (element.entityType === 'SUBFORM') {\n          validateSubForm(element.element);\n        }\n      });\n    };\n\n    this.pages.forEach((page: any) => {\n      page.formElements.forEach((element: any) => {\n        if (element.entityType === 'QUESTION') {\n          validateFormElement(element);\n        } else if (\n          element.entityType === 'SUBFORM' ||\n          element.entityType === 'QUESTION_GROUP' ||\n          element.entityType === 'MULTIFIELD'\n        ) {\n          validateSubForm(element.element);\n        }\n      });\n    });\n  }\n\n  navigateToBack() {\n    this.goBack.emit();\n  }\n\n  navigateToNext() {\n    this.next.emit();\n  }\n\n  generateFieldName(page: any) {\n    if (!this.testNameMap.has(page.id)) {\n      const id = page.id;\n      const name = this.dataservice.getStableTestName('page', id);\n      this.testNameMap.set(id, name);\n      page.testElementName = name;\n    }\n  }\n\n  handleCopySubform(subform: any): void {\n    for (const page of this.pages) {\n      const subformIndex = page.formElements.findIndex(\n        (fe: any) =>\n          fe.entityType === 'SUBFORM' && fe.element.id === subform.element.id\n      );\n\n      if (subformIndex !== -1) {\n        const originalSubform = page.formElements[subformIndex];\n        const oldToNewIdMap: Record<string, string> = {};\n\n        const cloneElement = (element: any): any => {\n          const newId = uuidv4();\n          oldToNewIdMap[element.id] = newId;\n\n          const cloned: any = {\n            ...element,\n            id: newId,\n            testElementName: '',\n          };\n\n          if (element.childLogics) {\n            cloned.childLogics = element.childLogics.map((logic: any) => ({\n              ...logic,\n              id: uuidv4(),\n              formElements: logic.formElements.map((childFe: any) => ({\n                ...childFe,\n                element: cloneElement(childFe.element),\n              })),\n            }));\n          }\n\n          return cloned;\n        };\n\n        const newSubform = structuredClone(originalSubform);\n        const newSubformId = uuidv4();\n        oldToNewIdMap[originalSubform.element.id] = newSubformId;\n\n        newSubform.element.id = newSubformId;\n        newSubform.element.title = originalSubform.element.title + ' copy';\n        newSubform.element.testElementName = '';\n        newSubform.element.formElements =\n          originalSubform.element.formElements.map((fe: any) => ({\n            ...fe,\n            element: cloneElement(fe.element),\n          }));\n\n        if (newSubform.element.defaultAnswers?.answers) {\n          newSubform.element.defaultAnswers.answers.forEach((ansGroup: any) => {\n            ansGroup.defaultQuestionsAnswers.forEach((dq: any) => {\n              dq.questionId = oldToNewIdMap[dq.questionId];\n            });\n          });\n        }\n\n        // Insert the new subform just after the original\n        page.formElements.splice(subformIndex + 1, 0, {\n          entityType: 'SUBFORM',\n          element: newSubform.element,\n        });\n\n        const cloneRowStructure = (row: any): any => {\n          const clonedRow = structuredClone(row);\n          clonedRow.id = uuidv4();\n\n          clonedRow.grids = clonedRow.grids.map((grid: any) => {\n            const newGrid = { ...grid };\n\n            if (grid.rows) {\n              newGrid.rows = grid.rows.map(cloneRowStructure);\n            }\n\n            if (grid.elementId && oldToNewIdMap[grid.elementId]) {\n              newGrid.elementId = oldToNewIdMap[grid.elementId];\n            }\n\n            return newGrid;\n          });\n\n          return clonedRow;\n        };\n\n        const rowIndex = page.rows.findIndex((row: any) =>\n          row.grids.some(\n            (g: any) =>\n              g.entityType === 'SUBFORM' &&\n              g.elementId === originalSubform.element.id\n          )\n        );\n\n        if (rowIndex !== -1) {\n          const matchingRow = page.rows[rowIndex];\n          const matchingGrid = matchingRow.grids.find(\n            (g: any) =>\n              g.entityType === 'SUBFORM' &&\n              g.elementId === originalSubform.element.id\n          );\n\n          if (matchingGrid) {\n            const newGrid = structuredClone(matchingGrid);\n            newGrid.elementId = newSubformId;\n\n            newGrid.rows = matchingGrid.rows.map(cloneRowStructure);\n\n            const newRow = {\n              id: uuidv4(),\n              grids: [newGrid],\n            };\n\n            // Insert the new row just after the original\n            page.rows.splice(rowIndex + 1, 0, newRow);\n          }\n        }\n\n        // Clone translations\n        const relevantTranslations = this.translations.filter((t: any) =>\n          Object.keys(oldToNewIdMap).includes(t.elementId)\n        );\n\n        const newTranslations = relevantTranslations.map((t: any) => ({\n          ...t,\n          elementId: oldToNewIdMap[t.elementId],\n          translatedText:\n            t.entityType === 'SUBFORM' && t.attribute === 'NAME'\n              ? t.translatedText + ' copy'\n              : t.translatedText,\n        }));\n\n        this.translations.push(...newTranslations);\n        return;\n      }\n    }\n\n    console.warn(\n      `Subform with ID \"${subform.element.id}\" not found in any page.`\n    );\n  }\n\n  editPublishedForm() {\n    this.edit = false;\n    this.getDuplicateFormData();\n  }\n}\n","<div class=\"row total-container\">\n  <div class=\"col-12\">\n    <div class=\"header-container-bar\" [style.top]=\"headerTop\">\n      <div class=\"d-flex\">\n        <div class=\"backBtn\" *ngIf=\"showBackButton\" (click)=\"navigateToBack()\">\n          <button class=\"library-arrow-button library-left\"\n          [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n          >Back</button>\n        </div>\n        <div *ngIf=\"allowTitleEdit\">\n          <h6 class=\"reg-form-hed-title\" *ngIf=\"!previewMode\">Form Title</h6>\n          <h1\n            *ngIf=\"!isEditing\"\n            class=\"reg-form-hed-title-name\"\n            [class.edit-mode]=\"isEditing\"\n            [class.non-edit-mode]=\"!isEditing\"\n            [class.dash-border]=\"isEditing\"\n            [attr.contenteditable]=\"isEditing ? 'true' : null\"\n            (blur)=\"onTitleBlur()\"\n            title=\"{{ title }}\"\n          >\n            {{ getTitle() }}\n          </h1>\n          <input\n          #questionInput\n          [id]=\"'question-' + formId\"\n            *ngIf=\"isEditing || isInvalid('question-' + formId)\"\n            class=\"reg-form-hed-title-name-input\"\n            [(ngModel)]=\"title\"\n            (input)=\"onTitleChange($event)\"\n            maxlength=\"150\"\n            [attr.autofocus]=\"isEditingPage || isInvalid('question-' + formId) ? '' : null\"\n          />\n        </div>\n        <div\n          class=\"svg-container action-button mt-auto\"\n          name=\"Form_title_edit\"\n          data-title=\"Edit\"\n          (click)=\"toggleEditMode('h1')\"\n          *ngIf=\"!previewMode && allowTitleEdit\"\n          [ngClass]=\"{'disable-published':formStatus === 'PUBLISHED'}\"\n        >\n          <img src=\"/assets/icons/pen-icon.svg\" alt=\"Pen Icon\" loading=\"lazy\" />\n        </div>\n      </div>\n\n      <div class=\"action-container\">\n        <h6\n          class=\"action-text\"\n          *ngIf=\"showModifyInfo && modifiedOn && modifiedBy\"\n        >\n          Last updated on &nbsp;<span>{{ modifiedOn }}</span\n          >&nbsp; by &nbsp;<span>{{ modifiedBy }}</span>\n        </h6>\n        <div class=\"space\"></div>\n        <select\n          class=\"languageDropdown\"\n          *ngIf=\"previewMode\"\n          (change)=\"toggleView()\"\n          [(ngModel)]=\"selectedLanguage\"\n        >\n          <option\n            [value]=\"language.value\"\n            selected\n            *ngFor=\"let language of previewLanguages\"\n          >\n            {{ language.label }}\n          </option>\n        </select>\n        <div class=\"space\"></div>\n        <label class=\"switch\" name=\"preview_toggle\">\n          <input type=\"checkbox\" id=\"togBtn\" (click)=\"togglePreview()\" [attr.data-value]=\"previewMode\"/>\n          <div class=\"slider round\"\n          [ngStyle]=\"{ 'background-color': secondaryColor ? secondaryColor: '#00c48c' }\">\n            <span class=\"on on-action-btn-text\">Preview</span>\n            <span class=\"off off-action-btn-text\">Editor</span>\n          </div>\n        </label>\n        <div class=\"space\"></div>\n        <div class=\"space\"></div>\n        <div\n          class=\"action-button\"\n          [ngClass]=\"{ webhook: webhookConflict }\"\n          data-title=\"Webhooks\"\n          name=\"webhooks\"\n          (click)=\"openWebhooks()\"\n        >\n          <img\n            src=\"assets/icons/webhook-icon.svg\"\n            alt=\"Webhooks Icon\"\n            loading=\"lazy\"\n          />\n        </div>\n        <div class=\"space\"></div>\n        <div\n          class=\"action-button\"\n          [ngClass]=\"{ webhook: emitterConflict }\"\n          data-title=\"Emitters\"\n          name=\"webhooks\"\n          (click)=\"openEmitters()\"\n        >\n          <img\n            src=\"assets/icons/emitter-icon.svg\"\n            alt=\"Emitters icon\"\n            loading=\"lazy\"\n          />\n        </div>\n        <div class=\"space\"></div>\n        <div\n          class=\"action-button\"\n          data-title=\"Language\"\n          name=\"language\"\n          (click)=\"opentransaltion()\"\n          *ngIf=\"enableTranslation\"\n        >\n          <img\n            src=\"assets/icons/lang-icon.svg\"\n            alt=\"Language Icon\"\n            loading=\"lazy\"\n          />\n        </div>\n        <div class=\"space\"></div>\n        <div\n          class=\"action-button\"\n          data-title=\"Publish\"\n          name=\"publish\"\n          (click)=\"publishForm()\"\n          *ngIf=\"edit && formStatus == 'DRAFT' && !isActionTriggered && enablePublish\"\n        >\n          <img\n            src=\"assets/icons/publish.svg\"\n            alt=\"Publish Icon\"\n            loading=\"lazy\"\n          />\n        </div>\n        <div class=\"space\"></div>\n        <button\n          type=\"button\"\n          class=\"btn btn-save text-white\"\n          name=\"save_as_draft\"\n          [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n          *ngIf=\"(formStatus == 'DRAFT' || formStatus == 'CONFLICT') && !isActionTriggered && enableSave\"\n          (click)=\"save('1')\"\n        >\n          <ng-container *ngIf=\"saveInProgress; else showSubmitText\">\n            <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n            Saving...\n          </ng-container>\n          <ng-template #showSubmitText>\n            {{ saveLabel || 'Save As Draft' }}\n          </ng-template>\n\n        </button>\n        <button\n          type=\"button\"\n          class=\"btn publish-edit-btn\"\n          name=\"save_as_draft\"\n          *ngIf=\"(formStatus == 'PUBLISHED')\"\n          (click)=\"editPublishedForm()\"\n        >\n          <ng-container *ngIf=\"duplicateInprogress; else showSubmitText\">\n            <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n            Loading...\n          </ng-container>\n          <ng-template #showSubmitText>\n            Click here to Edit\n          </ng-template>\n\n        </button>\n        <div class=\"space\"></div>\n        <div class=\"nextBtn\" *ngIf=\"enableNextButton && formStatus == 'PUBLISHED'\" (click)=\"navigateToNext()\">\n          <button class=\"library-arrow-button library-right\"\n          [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n          >Next</button>\n        </div>\n      </div>\n    </div>\n    <div class=\"page-total\"\n    [ngClass]=\"{'disable-published':formStatus === 'PUBLISHED'}\">\n      <div\n        class=\"outer-rectangle\"\n        #outerRectangle\n        [ngClass]=\"{ 'outer-rectangle-open': sideBarOpened, 'outer-rectangle-close': !sideBarOpened }\"\n      >\n        <div *ngIf=\"previewMode\">\n          <lib-drag-and-drop\n            [(pages)]=\"pages\"\n            [translations]=\"translations\"\n            [selectedLanguage]=\"selectedLanguage\"\n          ></lib-drag-and-drop>\n        </div>\n        <div *ngIf=\"!previewMode\">\n          <div class=\"inner-rectangle\" *ngFor=\"let page of pages\" [attr.name]=\"page.testElementName\">\n            <div (click)=\"selectpage(page.id)\">\n              <div class=\"header-container\">\n                <div class=\"page-container-title\">\n                  <h2\n                    *ngIf=\"!isPageEditing(page.id)\"\n                    class\n                    [class.edit-mode]=\"isPageEditing(page.id)\"\n                    [class.non-edit-mode]=\"!isPageEditing(page.id)\"\n                    [class.dash-border]=\"isPageEditing(page.id)\"\n                    [attr.contenteditable]=\"isPageEditing(page.id) ? 'true' : null\"\n                    (blur)=\"onTitleBlur()\"\n                    title=\"{{ page.title }}\"\n                  >\n                    {{ page.title }}\n                  </h2>\n                  <input\n                  [id]=\"'question-' + page.id\"\n                    *ngIf=\"isPageEditing(page.id) ||  isInvalid('question-' + page.id)\"\n                    #titleInput\n                    class=\"reg-form-hed-title-name-input\"\n                    [(ngModel)]=\"page.title\"\n                    (input)=\"onPageTitleChange($event, page.id)\"\n                    maxlength=\"150\"\n                  />\n                </div>\n                <div\n                  class=\"svg-page-container action-button\"\n                  data-title=\"Edit\"\n                  [attr.name]=\"page.testElementName+'-title_edit'\"\n                 (click)=\"togglePageEdit(page.id)\"\n                >\n                  <img\n                    src=\"/assets/icons/pen-icon.svg\"\n                    alt=\"Pen Icon\"\n                    loading=\"lazy\"\n                  />\n                </div>\n                <div\n                  class=\"action-button ms-auto\"\n                  data-title=\"Delete\"\n                  [attr.name]=\"page.testElementName+'-delete'\"\n                  (click)=\"openConfirmationModal(page)\"\n                >\n                  <img\n                    class=\"icon-right\"\n                    src=\"/assets/icons/delete-icon.svg\"\n                    alt=\"Delete Icon\"\n                    loading=\"lazy\"\n                  />\n                </div>\n              </div>\n              <div class=\"qstn-rectangle\">\n                <div *ngFor=\"let row of page.rows; trackBy: trackById\">\n                  <div *ngFor=\"let grid of row.grids; trackBy: trackById\">\n                    <ng-container *ngIf=\"grid.entityType == 'QUESTION'\">\n                      <div *ngFor=\"let question of page.formElements; trackBy: trackById\">\n                        <ng-container *ngIf=\"grid.elementId == question.element?.id\">\n                          <ng-container [ngSwitch]=\"question?.element?.formElement?.elementType\">\n                            <ng-container *ngSwitchCase=\"'TEXT_AREA'\">\n                              <lib-text-area-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-text-area-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'TEXT_BOX'\">\n                              <lib-textbox\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"\n                                  selectedQuestion.id ||\n                                  selectedQuestion.element?.id\n                                \"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-textbox>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'EMAIL'\">\n                              <lib-mail-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-mail-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'PASSWORD'\">\n                              <lib-password-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-password-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'MOBILE'\">\n                              <lib-mobile-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-mobile-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'RICH_TEXT_EDITOR'\">\n                              <lib-rich-text-editor-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-rich-text-editor-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'NUMBER'\">\n                              <lib-type-number\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-type-number>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'URL'\">\n                              <lib-url-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-url-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'CURRENCY'\">\n                              <lib-currency-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-currency-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'DROP_DOWN'\">\n                              <lib-drop-down\n                              [questions]=\"pages\"\n                              [question]=\"question\"\n                              (questionUpdated)=\"optionUpdates($event)\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                [languages]=\"SelectedLanguage\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                                (newpages)=\"newpages($event)\"\n                              >\n                              </lib-drop-down>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'RADIO_BUTTON'\">\n                              <lib-drop-down\n                                [questions]=\"pages\"\n                                [question]=\"question\"\n                                (questionUpdated)=\"optionUpdates($event)\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                [languages]=\"SelectedLanguage\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-drop-down>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'CHECK_BOX'\">\n                              <lib-drop-down\n                              [questions]=\"pages\"\n                              [question]=\"question\"\n                              (questionUpdated)=\"optionUpdates($event)\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                [languages]=\"SelectedLanguage\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-drop-down>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'FILE_PICKER'\">\n                              <lib-file-picker-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-file-picker-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'DATE_TIME'\">\n                              <lib-date-time-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-date-time-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'SLIDER'\">\n                              <lib-slider-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-slider-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'SIGNATURE'\">\n                              <lib-signature-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-signature-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'LOCATION'\">\n                              <lib-location-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-location-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'TOGGLE_SWITCH'\">\n                              <lib-toggle-switch-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-toggle-switch-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'SELECTION_MATRIX'\">\n                              <lib-selection-matrix-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                                (translationsUpdated)=\"\n                                  onTranslationsUpdated($event)\n                                \"\n                              >\n                              </lib-selection-matrix-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'AGGREGATE_FUNCTION'\">\n                              <lib-aggregate-function\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                                (translationsUpdated)=\"\n                                  onTranslationsUpdated($event)\n                                \"\n                              >\n                              </lib-aggregate-function>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'HIDDEN_FIELD'\">\n                              <lib-hidden-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"selectedQuestion.id\"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                                (translationsUpdated)=\"\n                                  onTranslationsUpdated($event)\n                                \"\n                              >\n                              </lib-hidden-fields>\n                            </ng-container>\n\n                            <ng-container *ngSwitchCase=\"'IFRAME_WIDGET'\">\n                              <lib-iframe-fields\n                                [question]=\"question\"\n                                [selectedQuestionId]=\"\n                                  selectedQuestion.id ||\n                                  selectedQuestion.element?.id\n                                \"\n                                [translations]=\"translations\"\n                                [pages]=\"pages\"\n                                (click)=\"selectQuestion(question.element)\"\n                                (deleteQuestion)=\"deleteQuestion(question.id)\"\n                              >\n                              </lib-iframe-fields>\n                            </ng-container>\n\n                          </ng-container>\n\n                          <div\n                            *ngIf=\"\n                              question.element.childLogics?.length > 0 &&\n                              isLogicShow.includes(\n                                question?.element?.formElement?.elementType\n                              )\n                            \"\n                          >\n                            <lib-question-logic\n                              [question]=\"question\"\n                              [options]=\"getOptions(question)\"\n                              [selectedQuestionId]=\"selectedQuestionId\"\n                              [pages]=\"pages\"\n                              [translations]=\"translations\"\n                              [primaryColor]=\"primaryColor\"\n                              [secondaryColor]=\"secondaryColor\"\n                              [pageId]=\"page.id\"\n                              (newpages)=\"newpages($event)\"\n                              (translationsUpdated)=\"onTranslationsUpdated($event)\">\n                            </lib-question-logic>\n                          </div>\n                        </ng-container>\n                      </div>\n                    </ng-container>\n\n                    <ng-container *ngIf=\"grid.entityType == 'SECTION'\">\n                      <div *ngFor=\"let section of page.formElements\">\n                        <ng-container\n                          *ngIf=\"grid.elementId == section?.element?.id\"\n                        >\n                          <lib-section\n                            [section]=\"section\"\n                            [selectedQuestionId]=\"selectedSection?.id\"\n                            (click)=\"selectSection(section.element)\"\n                            [translations]=\"translations\"\n                            [pages]=\"pages\"\n                          ></lib-section>\n                        </ng-container>\n                      </div>\n                    </ng-container>\n\n                    <ng-container *ngIf=\"grid.entityType == 'SUBFORM'\">\n                      <div *ngFor=\"let subForm of page.formElements\">\n                        <ng-container\n                          *ngIf=\"grid.elementId == subForm?.element?.id\"\n                        >\n                          <lib-add-form\n                            [subForms]=\"subForm\"\n                            [translations]=\"translations\"\n                            [pageId]=\"page?.id\"\n                            [pages]=\"pages\"\n                            [grid]=\"grid\"\n                            [selectedQuestionId]=\"selectedQuestion?.id\"\n                            [primaryColor]=\"primaryColor\"\n                            [secondaryColor]=\"secondaryColor\"\n                            [deletedQuestionId]=\"selectedQuestion?.element?.id\"\n                            (click)=\"selectSubForm(subForm)\"\n                            (translationsUpdated)=\"\n                              onTranslationsUpdated($event)\n                            \"\n                            (newpages)=\"newpages($event)\"\n                          ></lib-add-form>\n                        </ng-container>\n                      </div>\n                    </ng-container>\n\n                    <ng-container *ngIf=\"grid.entityType === 'MULTIFIELD'\">\n                      <div *ngFor=\"let multiField of page.formElements\">\n                        <ng-container\n                          *ngIf=\"grid.elementId == multiField?.element?.id\"\n                        >\n                          <lib-multi-field-questions\n                            [multiQuestion]=\"multiField\"\n                            [selectedQuestionId]=\"selectedQuestionId\"\n                            [pageId]=\"page?.id\"\n                            [pages]=\"pages\"\n                            [grid]=\"grid\"\n                            [translations]=\"translations\"\n                            (translationsUpdated)=\"\n                              onTranslationsUpdated($event)\n                            \"\n                          ></lib-multi-field-questions>\n                        </ng-container>\n                      </div>\n                    </ng-container>\n                    <ng-container *ngIf=\"grid.entityType == 'QUESTION_GROUP'\">\n                      <div *ngFor=\"let questionGroup of page.formElements\">\n                        <ng-container\n                          *ngIf=\"grid.elementId == questionGroup?.element?.id\"\n                        >\n                          <lib-question-group\n                            [questionGroup]=\"questionGroup\"\n                            [translations]=\"translations\"\n                            [pageId]=\"page?.id\"\n                            [pages]=\"pages\"\n                            [grid]=\"grid\"\n                            [selectedQuestionId]=\"selectedQuestion?.id\"\n                            [deletedQuestionId]=\"selectedQuestionGroup?.id\"\n                            (click)=\"selectQuestionGroup(questionGroup)\"\n                            (translationsUpdated)=\"\n                              onTranslationsUpdated($event)\n                            \"\n                            (newpages)=\"newpages($event)\"\n                          ></lib-question-group>\n                        </ng-container>\n                      </div>\n                    </ng-container>\n                  </div>\n                </div>\n\n                <div class=\"add-qstn-button\">\n                  <div\n                    class=\"btn-group\"\n                    role=\"group\"\n                    aria-label=\"Button group with nested dropdown\"\n                  >\n                    <button\n                      type=\"button\"\n                      class=\"btn btn-add-qstn fontFamily text-white\"\n                      name=\"add_new_question\"\n                      [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n                      (click)=\"addNewQuestion(page.id)\"\n                    >\n                      Add New Question\n                    </button>\n\n                    <div class=\"btn-group arrow-btn\" role=\"group\">\n                      <button\n                        type=\"button\"\n                        class=\"btn add-qstn-arrow text-white\"\n                        [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n                        data-bs-toggle=\"dropdown\"\n                        aria-expanded=\"false\"\n                        name=\"add_new_dropdown\"\n                      >\n                        <img\n                          src=\"/assets/icons/down-arrow-white-icon.svg\"\n                          alt=\"Arrow Icon\"\n                          loading=\"lazy\"\n                        />\n                      </button>\n                      <ul class=\"dropdown-menu qstn-dropdown-menu\">\n                        <li>\n                          <a\n                            class=\"dropdown-item fontFamily\"\n                            (click)=\"addSection(page.id)\"\n                            name=\"add_section\"\n                            >Add Section</a\n                          >\n                        </li>\n                        <li>\n                          <a\n                            class=\"dropdown-item fontFamily\"\n                            (click)=\"addSubForms(page.id)\"\n                            name=\"add_form\"\n                            >Add Form</a\n                          >\n                        </li>\n                        <li>\n                          <a\n                            class=\"dropdown-item fontFamily\"\n                            (click)=\"addMultiFieldQuestions(page.id)\"\n                            name=\"add_multifield\"\n                            >Multi Field Questions</a\n                          >\n                        </li>\n                        <li>\n                          <a\n                            class=\"dropdown-item fontFamily\"\n                            (click)=\"addQuestionGroup(page.id)\"\n                            name=\"add_group\"\n                            >Question Group</a\n                          >\n                        </li>\n                      </ul>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <div class=\"button-container\" *ngIf=\"!previewMode\"\n          (click)=\"addNewPage()\"\n          name=\"add_new_page\">\n          <img\n            class=\"icon-field-add\"\n            src=\"/assets/icons/field-add-icon.svg\"\n            alt=\"Arrow Icon\"\n            loading=\"lazy\"\n          />\n          <button\n            type=\"button\"\n            class=\"btn text-primary p-0 fontFamily\"\n          >\n            Add New Page\n          </button>\n        </div>\n        <div\n          class=\"open-toggle-icon\"\n          [ngStyle]=\"{ top: '50%', left: toggleLeft + 'px' }\"\n          (click)=\"openSideBar()\"\n          *ngIf=\"!sideBarOpened && !previewMode\"\n          name=\"open_sidebar\"\n        >\n          <img\n            src=\"/assets/icons/open-toggle-icon.svg\"\n            alt=\"Arrow Icon\"\n            loading=\"lazy\"\n          />\n        </div>\n      </div>\n      <div\n        class=\"close-toggle-icon\"\n        (click)=\"closeSideBar()\"\n        *ngIf=\"isQuestionSelected && sideBarOpened\"\n        name=\"close_sidebar\"\n      >\n        <img\n          src=\"/assets/icons/close-toggle-icon.svg\"\n          alt=\"Arrow Icon\"\n          loading=\"lazy\"\n        />\n      </div>\n      <div\n        class=\"side-bar\"\n        [ngClass]=\"{ 'side-bar-opened': sideBarOpened, 'side-bar-closed': !sideBarOpened }\"\n        [style.top]=\"sideBarTop\"\n      >\n        <div\n          class=\"tab-container\"\n          [ngClass]=\"{ 'qstn-not-selected': !isQuestionSelected }\"\n        >\n          <div class=\"tab-wrapper\">\n            <button\n              class=\"tab-button fontFamily500\"\n              [ngClass]=\"{\n                active: activeTab === 'tab1',\n                disabled: selectedQuestion?.entityType === 'SUBFORM'\n              }\"\n              [disabled]=\"selectedQuestion?.entityType === 'SUBFORM'\"\n              (click)=\"openTab('tab1')\"\n              name=\"form_elements\"\n            >\n              Form Elements\n            </button>\n            <button\n              class=\"tab-button fontFamily500\"\n              [ngClass]=\"{ active: activeTab === 'tab2' }\"\n              (click)=\"openTab('tab2')\"\n              name=\"properties\"\n            >\n              Properties\n            </button>\n          </div>\n\n          <div\n            id=\"tab1\"\n            class=\"tab-content\"\n            *ngIf=\"selectedQuestion?.entityType !== 'SUBFORM'\"\n            [ngClass]=\"{ selected: activeTab === 'tab1' }\"\n          >\n            <div class=\"row-container\">\n              <div\n                class=\"text-fields-div fontFamily\"\n                [ngClass]=\"{\n                  highlighted:\n                    (selectedQuestion?.formElement?.elementType ===\n                      'TEXT_BOX' ||\n                      selectedQuestion?.formElement?.elementType ===\n                        'TEXT_AREA' ||\n                      selectedQuestion?.formElement?.elementType === 'EMAIL' ||\n                      selectedQuestion?.formElement?.elementType ===\n                        'PASSWORD' ||\n                      selectedQuestion?.formElement?.elementType === 'MOBILE' ||\n                      selectedQuestion?.formElement?.elementType ===\n                        'RICH_TEXT_EDITOR' ||\n                      selectedQuestion?.formElement?.elementType === 'NUMBER' ||\n                      selectedQuestion?.formElement?.elementType === 'URL') &&\n                    !textFieldOpened\n                }\"\n              >\n                <div class=\"text-field-header\" (click)=\"openTextFields()\">\n                  <img\n                    src=\"assets/icons/text-field-icon.svg\"\n                    alt=\"text-field-icon\"\n                    loading=\"lazy\"\n                  />\n                  <p>Text Fields</p>\n                  <div\n                    class=\"down-arrow\"\n                    [ngClass]=\"{\n                      opened: textFieldOpened,\n                      closed: !textFieldOpened\n                    }\"\n                  >\n                    <img\n                      src=\"assets/icons/down-arrow-gray-icon.svg\"\n                      alt=\"down-arrow-icon\"\n                      loading=\"lazy\"\n                    />\n                  </div>\n                  <div\n                    class=\"up-arrow\"\n                    [ngClass]=\"{\n                      opened: textFieldOpened,\n                      closed: !textFieldOpened\n                    }\"\n                  >\n                    <img\n                      src=\"assets/icons/upArrow.png\"\n                      alt=\"Up Arrow Icon\"\n                      loading=\"lazy\"\n                    />\n                  </div>\n                </div>\n                <div\n                  class=\"fields-division\"\n                  [ngClass]=\"{\n                    opened: textFieldOpened,\n                    closed: !textFieldOpened\n                  }\"\n                >\n                  <div\n                    class=\"row-content fontFamily\"\n                    *ngIf=\"isElementVisible('TEXT_AREA')\"\n                    [ngClass]=\"{\n                      highlighted:\n                        selectedQuestion?.formElement?.elementType ===\n                        'TEXT_AREA'\n                    }\"\n                    (click)=\"changeElementType('TEXT_AREA')\"\n                  >\n                    <img\n                      src=\"assets/icons/text-area-icon.svg\"\n                      alt=\"text-area-icon\"\n                      loading=\"lazy\"\n                    />\n                    <p>Text Area</p>\n                  </div>\n                  <div\n                    class=\"row-content fontFamily\"\n                    *ngIf=\"isElementVisible('TEXT_BOX')\"\n                    [ngClass]=\"{\n                      highlighted:\n                        selectedQuestion?.formElement?.elementType ===\n                        'TEXT_BOX'\n                    }\"\n                    (click)=\"changeElementType('TEXT_BOX')\"\n                  >\n                    <img\n                      src=\"assets/icons/text-box-icon.svg\"\n                      alt=\"text-box-icon\"\n                      loading=\"lazy\"\n                    />\n                    <p>Text Box</p>\n                  </div>\n                  <div\n                    class=\"row-content fontFamily\"\n                    *ngIf=\"isElementVisible('EMAIL')\"\n                    [ngClass]=\"{\n                      highlighted:\n                        selectedQuestion?.formElement?.elementType === 'EMAIL'\n                    }\"\n                    (click)=\"changeElementType('EMAIL')\"\n                  >\n                    <img\n                      src=\"assets/icons/mail-icon.svg\"\n                      alt=\"mail-icon\"\n                      loading=\"lazy\"\n                    />\n                    <p>Mail</p>\n                  </div>\n                  <div\n                    class=\"row-content fontFamily\"\n                    *ngIf=\"isElementVisible('PASSWORD')\"\n                    [ngClass]=\"{\n                      highlighted:\n                        selectedQuestion?.formElement?.elementType ===\n                        'PASSWORD'\n                    }\"\n                    (click)=\"changeElementType('PASSWORD')\"\n                  >\n                    <img\n                      src=\"assets/icons/password-icon.svg\"\n                      alt=\"password-icon\"\n                      loading=\"lazy\"\n                    />\n                    <p>Password</p>\n                  </div>\n                  <div\n                    class=\"row-content fontFamily\"\n                    *ngIf=\"isElementVisible('MOBILE')\"\n                    [ngClass]=\"{\n                      highlighted:\n                        selectedQuestion?.formElement?.elementType === 'MOBILE'\n                    }\"\n                    (click)=\"changeElementType('MOBILE')\"\n                  >\n                    <img\n                      src=\"assets/icons/mobile-icon.svg\"\n                      alt=\"mobile-icon\"\n                      loading=\"lazy\"\n                    />\n                    <p>Mobile</p>\n                  </div>\n                  <div\n                    class=\"row-content fontFamily\"\n                    *ngIf=\"isElementVisible('RICH_TEXT_EDITOR')\"\n                    [ngClass]=\"{\n                      highlighted:\n                        selectedQuestion?.formElement?.elementType ===\n                        'RICH_TEXT_EDITOR'\n                    }\"\n                    (click)=\"changeElementType('RICH_TEXT_EDITOR')\"\n                  >\n                    <img\n                      src=\"assets/icons/rich-text-editor-icon.svg\"\n                      alt=\"rich-text-editor-icon\"\n                      loading=\"lazy\"\n                    />\n                    <p>Rich Text Editor</p>\n                  </div>\n                  <div\n                    class=\"row-content fontFamily\"\n                    *ngIf=\"isElementVisible('NUMBER')\"\n                    [ngClass]=\"{\n                      highlighted:\n                        selectedQuestion?.formElement?.elementType === 'NUMBER'\n                    }\"\n                    (click)=\"changeElementType('NUMBER')\"\n                  >\n                    <img\n                      src=\"assets/icons/number-icon.svg\"\n                      alt=\"number-icon\"\n                      loading=\"lazy\"\n                    />\n                    <p>Number</p>\n                  </div>\n                  <div\n                    class=\"row-content fontFamily\"\n                    *ngIf=\"isElementVisible('URL')\"\n                    [ngClass]=\"{\n                      highlighted:\n                        selectedQuestion?.formElement?.elementType === 'URL'\n                    }\"\n                    (click)=\"changeElementType('URL')\"\n                  >\n                    <img\n                      src=\"assets/icons/url-icon.svg\"\n                      alt=\"url-icon\"\n                      loading=\"lazy\"\n                    />\n                    <p>URL</p>\n                  </div>\n                  <div\n                    class=\"row-content fontFamily\"\n                    *ngIf=\"isElementVisible('URL')\"\n                    [ngClass]=\"{\n                      highlighted:\n                        selectedQuestion?.formElement?.elementType === 'CURRENCY'\n                    }\"\n                    (click)=\"changeElementType('CURRENCY')\"\n                  >\n                    <img\n                      src=\"assets/icons/currency-icon.svg\"\n                      alt=\"url-icon\"\n                      loading=\"lazy\"\n                    />\n                    <p>Currency</p>\n                  </div>\n                </div>\n              </div>\n              <div\n                class=\"row-content fontFamily\"\n                *ngIf=\"isElementVisible('DROP_DOWN')\"\n                [ngClass]=\"{\n                  highlighted:\n                    selectedQuestion?.formElement?.elementType === 'DROP_DOWN'\n                }\"\n                (click)=\"changeElementType('DROP_DOWN')\"\n              >\n                <img\n                  src=\"assets/icons/dropdown-icon.svg\"\n                  alt=\"dropdown-icon\"\n                  loading=\"lazy\"\n                />\n                <p>Dropdown</p>\n              </div>\n              <div\n                class=\"row-content fontFamily\"\n                *ngIf=\"isElementVisible('RADIO_BUTTON')\"\n                [ngClass]=\"{\n                  highlighted:\n                    selectedQuestion?.formElement?.elementType ===\n                    'RADIO_BUTTON'\n                }\"\n                (click)=\"changeElementType('RADIO_BUTTON')\"\n              >\n                <img\n                  src=\"assets/icons/radio-button-icon.svg\"\n                  alt=\"radio-button-icon\"\n                  loading=\"lazy\"\n                />\n                <p>Radio Button</p>\n              </div>\n              <div\n                class=\"row-content fontFamily\"\n                *ngIf=\"isElementVisible('CHECK_BOX')\"\n                [ngClass]=\"{\n                  highlighted:\n                    selectedQuestion?.formElement?.elementType === 'CHECK_BOX'\n                }\"\n                (click)=\"changeElementType('CHECK_BOX')\"\n              >\n                <img\n                  src=\"assets/icons/checkbox-icon.svg\"\n                  alt=\"checkbox-icon\"\n                  loading=\"lazy\"\n                />\n                <p>Checkbox</p>\n              </div>\n              <div\n                class=\"row-content fontFamily\"\n                *ngIf=\"isElementVisible('FILE_PICKER')\"\n                [ngClass]=\"{\n                  highlighted:\n                    selectedQuestion?.formElement?.elementType === 'FILE_PICKER'\n                }\"\n                (click)=\"changeElementType('FILE_PICKER')\"\n              >\n                <img\n                  src=\"assets/icons/file-picker-icon.svg\"\n                  alt=\"file-picker-icon\"\n                  loading=\"lazy\"\n                />\n                <p>File Picker</p>\n              </div>\n              <div\n                class=\"row-content fontFamily\"\n                *ngIf=\"isElementVisible('DATE_TIME')\"\n                [ngClass]=\"{\n                  highlighted:\n                    selectedQuestion?.formElement?.elementType === 'DATE_TIME'\n                }\"\n                (click)=\"changeElementType('DATE_TIME')\"\n              >\n                <img\n                  src=\"assets/icons/date-time-icon.svg\"\n                  alt=\"date-time-icon\"\n                  loading=\"lazy\"\n                />\n                <p>Date Time</p>\n              </div>\n              <div\n                class=\"row-content fontFamily\"\n                *ngIf=\"isElementVisible('SLIDER')\"\n                [ngClass]=\"{\n                  highlighted:\n                    selectedQuestion?.formElement?.elementType === 'SLIDER'\n                }\"\n                (click)=\"changeElementType('SLIDER')\"\n              >\n                <img\n                  src=\"assets/icons/slider-icon.svg\"\n                  alt=\"slider-icon\"\n                  loading=\"lazy\"\n                />\n                <p>Slider</p>\n              </div>\n              <div\n                class=\"row-content fontFamily\"\n                *ngIf=\"isElementVisible('TOGGLE_SWITCH')\"\n                [ngClass]=\"{\n                  highlighted:\n                    selectedQuestion?.formElement?.elementType ===\n                    'TOGGLE_SWITCH'\n                }\"\n                (click)=\"changeElementType('TOGGLE_SWITCH')\"\n              >\n                <img\n                  src=\"assets/icons/toggle-switch-icon.svg\"\n                  alt=\"toggle-switch-icon\"\n                  loading=\"lazy\"\n                />\n                <p>Toggle Switch</p>\n              </div>\n              <div\n                class=\"row-content fontFamily\"\n                *ngIf=\"isElementVisible('SELECTION_MATRIX')\"\n                [ngClass]=\"{\n                  highlighted:\n                    selectedQuestion?.formElement?.elementType ===\n                    'SELECTION_MATRIX'\n                }\"\n                (click)=\"changeElementType('SELECTION_MATRIX')\"\n              >\n                <img\n                  src=\"assets/icons/selection-matrix-icon.svg\"\n                  alt=\"selection-matrix-icon\"\n                  loading=\"lazy\"\n                />\n                <p>Selection Matrix</p>\n              </div>\n              <div\n                class=\"row-content fontFamily\"\n                *ngIf=\"isElementVisible('AGGREGATE_FUNCTION')\"\n                [ngClass]=\"{\n                  highlighted:\n                    selectedQuestion?.formElement?.elementType ===\n                    'AGGREGATE_FUNCTION'\n                }\"\n                [ngClass]=\"{blur:this.selectedQuestion?.multiField}\"\n                (click)=\"changeElementType('AGGREGATE_FUNCTION')\"\n              >\n                <img\n                  src=\"assets/icons/aggregate-icon.svg\"\n                  alt=\"selection-matrix-icon\"\n                  loading=\"lazy\"\n                />\n                <p class=\"mb-0\">Aggregate Functions</p>\n              </div>\n\n              <div\n                class=\"row-content fontFamily\"\n                *ngIf=\"isElementVisible('HIDDEN_FIELD')\"\n                [ngClass]=\"{\n                  highlighted:\n                    selectedQuestion?.formElement?.elementType ===\n                    'HIDDEN_FIELD'\n                }\"\n                (click)=\"changeElementType('HIDDEN_FIELD')\"\n              >\n                <img\n                  src=\"assets/icons/hidden-field-icon.svg\"\n                  alt=\"hidden_field-icon\"\n                  loading=\"lazy\"\n                />\n                <p class=\"mb-0\">Hidden Field</p>\n              </div>\n\n              <div\n                class=\"row-content fontFamily\"\n                *ngIf=\"isElementVisible('IFRAME_WIDGET')\"\n                [ngClass]=\"{\n                  highlighted:\n                    selectedQuestion?.formElement?.elementType ===\n                    'IFRAME_WIDGET'\n                }\"\n                (click)=\"changeElementType('IFRAME_WIDGET')\"\n              >\n                <img\n                  src=\"assets/icons/iframe-icon.svg\"\n                  alt=\"iframe-field-icon\"\n                  loading=\"lazy\"\n                />\n                <p class=\"mb-0\">Iframe Field</p>\n              </div>\n            </div>\n          </div>\n\n          <div\n            id=\"tab2\"\n            class=\"tab-content\"\n            [ngClass]=\"{ selected: activeTab === 'tab2' }\"\n          >\n            <ng-container\n              [ngSwitch]=\"\n                selectedQuestion?.entityType === 'SUBFORM'\n                  ? 'SUBFORM'\n                  : selectedQuestion?.formElement?.elementType\n              \"\n            >\n              <lib-sub-form-field-properties\n                *ngSwitchCase=\"'SUBFORM'\"\n                [questionProperties]=\"selectedQuestion.element\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-sub-form-field-properties>\n\n              <lib-text-area-field-properties\n                *ngSwitchCase=\"'TEXT_AREA'\"\n                [questionProperties]=\"selectedQuestion?.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-text-area-field-properties>\n              <lib-text-field-properties\n                *ngSwitchCase=\"'TEXT_BOX'\"\n                [questionProperties]=\"selectedQuestion?.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-text-field-properties>\n              <lib-mail-field-properties\n                *ngSwitchCase=\"'EMAIL'\"\n                [questionProperties]=\"selectedQuestion?.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-mail-field-properties>\n              <lib-password-field-properties\n                *ngSwitchCase=\"'PASSWORD'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-password-field-properties>\n              <lib-mobile-field-properties\n                *ngSwitchCase=\"'MOBILE'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-mobile-field-properties>\n              <lib-rich-text-area-field-properties\n                *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-rich-text-area-field-properties>\n              <lib-number-field-properties\n                *ngSwitchCase=\"'NUMBER'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-number-field-properties>\n              <lib-url-field-properties\n                *ngSwitchCase=\"'URL'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-url-field-properties>\n              <lib-currency-field-properties\n                *ngSwitchCase=\"'CURRENCY'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-currency-field-properties>\n              <lib-drop-down-fields-properties\n                *ngSwitchCase=\"'DROP_DOWN'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n                (questionPropertiesUpdated)=\"propertyUpdate($event)\"\n              >\n              </lib-drop-down-fields-properties>\n              <lib-radio-button-field-properties\n                *ngSwitchCase=\"'RADIO_BUTTON'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n                (questionPropertiesUpdated)=\"propertyUpdate($event)\"\n              >\n              </lib-radio-button-field-properties>\n              <lib-check-box-field-properties\n                *ngSwitchCase=\"'CHECK_BOX'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n                (questionPropertiesUpdated)=\"propertyUpdate($event)\"\n              >\n              </lib-check-box-field-properties>\n              <lib-file-picker-field-properties\n                *ngSwitchCase=\"'FILE_PICKER'\"\n                [questionProperties]=\"selectedQuestion\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-file-picker-field-properties>\n              <lib-date-picker-field-properties\n                *ngSwitchCase=\"'DATE_TIME'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-date-picker-field-properties>\n              <lib-slider-field-properties\n                *ngSwitchCase=\"'SLIDER'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-slider-field-properties>\n              <lib-signature-field-properties\n                *ngSwitchCase=\"'SIGNATURE'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-signature-field-properties>\n              <lib-location-field-properties\n                *ngSwitchCase=\"'LOCATION'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-location-field-properties>\n              <lib-terms-and-condition-field-properties\n                *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-terms-and-condition-field-properties>\n              <lib-toggle-switch-field-properties\n                *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-toggle-switch-field-properties>\n              <lib-selection-matrix-field-properties\n                *ngSwitchCase=\"'SELECTION_MATRIX'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-selection-matrix-field-properties>\n              <lib-iframe-field-properties\n                *ngSwitchCase=\"'IFRAME_WIDGET'\"\n                [questionProperties]=\"selectedQuestion.formElement\"\n                [selectedQuestionId]=\"selectedQuestion.id\"\n                [translations]=\"translations\"\n              >\n              </lib-iframe-field-properties>\n              <!-- <lib-aggregate-field-properties\n              *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\n              [questionProperties]=\"selectedQuestion.formElement\"\n              [selectedQuestionId]=\"selectedQuestion.id\"\n              [translations]=\"translations\"\n              ></lib-aggregate-field-properties> -->\n            </ng-container>\n          </div>\n        </div>\n        <div class=\"tab-container\" *ngIf=\"!isQuestionSelected\">\n          <img\n            class=\"close-sidebar-mark\"\n            (click)=\"closeSideBar()\"\n            src=\"/assets/icons/close-sidebar-mark-icon.svg\"\n            alt=\"Close Sidebar Icon\"\n            loading=\"lazy\"\n          />\n          <p class=\"select-question-title\">Select your question</p>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component,EventEmitter,Input, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { DataService } from '../services/data.service';\nimport { AuthService } from '../services/auth.service';\nimport { CreateFormComponent } from '../form-creation/create-form/create-form.component';\nimport { Subscription } from 'rxjs';\n\n\n@Component({\n  selector: 'lib-formBuilder',\n  template: `\n    <lib-create-registration-form [formId]=\"formId\" [edit]=\"edit\" \n    [createDuplicate]=\"createDuplicate\" [showModifyInfo]=\"showModifyInfo\" \n    [moduleName]=\"formData.moduleName\" [top]=\"top\" (submit)=\"submit($event)\"\n    [triggerFormSave]=\"triggerFormSave\"\n    [isActionTriggered]=\"isActionTriggered\"\n    [formElements]=\"formElements\"\n    (isChange)=\"isChange($event)\"\n    [enablePublish]=\"enablePublish\"\n    [enableSave]=\"enableSave\"\n    [enableTranslation]=\"enableTranslation\"\n    [allowTitleEdit]=\"allowTitleEdit\"\n    [showBackButton]=\"showBackButton\"\n    (goBack)=\"navigateToBack()\"\n    (next)=\"navigateToNext()\"\n    [formJSON]=\"formJSON\"\n    [saveLabel]=saveLabel\n    [enableNextButton]=enableNextButton\n    ></lib-create-registration-form>\n  `,\n  styles: [\n  ]\n})\nexport class FormBuilderComponent {\n  @Input() formId:any='';\n  @Input() edit!:boolean;\n  @Input() createDuplicate!:boolean;\n  @Input() formData:any={};\n  @Input() formElements:any=[];\n  @Input() top: string = '50';\n  @Input() showModifyInfo: boolean = true;\n  @Input() triggerFormSave: string | null = null;\n  @Input() enablePublish: boolean = true;\n  @Input() enableSave: boolean = true;\n  @Input() enableTranslation: boolean = true;\n  @Input() allowTitleEdit: boolean = true;\n  @Input() formJSON: any;\n  saveLabel:string = '';\n  enableNextButton: boolean = false;\n\n  isActionTriggered: boolean = false;\n  showBackButton: boolean = false;\n  @Output() saveForm: EventEmitter<string> = new EventEmitter<string>();\n  @ViewChild(CreateFormComponent) createFormComponent!: CreateFormComponent;\n  @Output() isChangeValue: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() goBack: EventEmitter<string> = new EventEmitter<string>();\n  @Output() next: EventEmitter<string> = new EventEmitter<string>();\n  private changeSubscription!: Subscription;\n  \n  constructor(private dataservice:DataService,private authService:AuthService){}\n  ngOnInit(): void {\n    this.dataservice.setApiUrl(this.formData.apiurl);\n    this.authService.setHeader(this.formData.headers);\n    this.changeSubscription = this.dataservice.isChanged$.subscribe((changed) => {\n      this.isChangeValue.emit(changed);\n    });\n    if(this.formData.configuraion){\n      this.enablePublish = this.formData.configuraion.enablePublish;\n      this.enableSave = this.formData.configuraion.enableSave;\n      this.enableTranslation = this.formData.configuraion.enableTranslation;\n      this.allowTitleEdit = this.formData.configuraion.allowTitleEdit;\n      this.saveLabel = this.formData.configuraion.saveLabel;\n    }\n    this.showBackButton = this.goBack.observers.length > 0;\n    this.enableNextButton = this.next.observers.length > 0;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['triggerFormSave'] && changes['triggerFormSave'].currentValue) {\n      const action = changes['triggerFormSave'].currentValue;\n\n      if (action === 'save' || action === 'publish') {\n        this.isActionTriggered = true;\n      }\n\n      if (this.createFormComponent) {\n        if (action === 'save') {\n          this.triggerSaveForm();\n        } else if (action === 'publish') {\n          this.createFormComponent.publishForm();\n        }\n      }\n    }\n  }\n\n  submit(event: any) {\n    this.saveForm.emit(event);\n  }\n\n  navigateToBack(){\n    this.goBack.emit();\n  }\n\n  navigateToNext(){\n    this.next.emit();\n  }\n\n  isChange(event: any){\n    this.isChangeValue.emit(event)\n  }\n\n  triggerSaveForm() {\n    if (this.createFormComponent) {\n      if(this.edit){\n        this.createFormComponent.updateForm(this.formId);\n      }\n      else{\n        this.createFormComponent.saveForm();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.changeSubscription) {\n      this.changeSubscription.unsubscribe();\n    }\n  }\n}\n","import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-check-box-fields',\n  templateUrl: './check-box-fields.component.html',\n  styleUrls: ['./check-box-fields.component.scss']\n})\nexport class CheckBoxFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  constructor(private dataservice:DataService,private elementRef: ElementRef,public dialog: MatDialog){}\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  options:any = CONSTANTS.options;\n  rows: any[] = [['','','']];\n  selectedOption:any;\n  showlookup:boolean=false;\n  customOptions:any[]=[];\n  tables = CONSTANTS.tables;\n  hintOpen:boolean = false;\n  ngOnInit(){\n    this.valueAssigned()\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    if(this.question.element == undefined){\n    this.selectedOption=this.question.formElement.option.optionType;\n    this.customOptions=this.question.formElement.option.customOptions;\n    }else{\n    this.selectedOption=this.question.element.formElement.option.optionType;\n    this.customOptions=this.question.element.formElement.option.customOptions;\n    }\n  }\n\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute=='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n  }\n  jsonUpdation(type?: string){\n    this.dataservice.emitChangeStatus(true);\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n    if(this.question.element == undefined){\n        if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n      this.question.formElement.option.optionType=this.selectedOption\n      }else{\n      this.question.element.required=this.questionRequired;\n      this.question.element.formElement.option.optionType=this.selectedOption\n      }\n  }\n\n  selectedQuestion:any={};\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n\n  buttons=[\n    {\n      label: 'Edit',\n      icon: 'fa-solid fa-pen',\n      color:'#084FFF',\n      action: () => this.editTable(),\n    },\n    {\n      label: 'View',\n      icon: 'fa-solid fa-eye',\n      color:'#084FFF',\n      action: () => this.viewTable(),\n    },\n  ]\n\n  viewTable(){\n    this.showlookup = !this.showlookup\n  }\n  editTable(){\n    this.showlookup = !this.showlookup\n  }\n  createLookUp(){\n    this.showlookup = !this.showlookup\n  }\n  closeLookup(){\n    this.showlookup = !this.showlookup\n  }\n  addRow() {\n    this.rows.push(['', '', '']); // Add a new row with three empty cells\n  }\n  save(){\n\n  }\n\n  handleInput() {\n    const inputField = this.elementRef.nativeElement.querySelector('#textField');\n    const textWidth = inputField.value.length * 8; // Assuming 8px per character\n    inputField.style.width = Math.max(textWidth, 10) + 'px'; // Set minimum width as 10px\n  }\n\n  handleKeyDown(event: KeyboardEvent) {\n    if (event.key === 'Enter') {\n      const inputField = this.elementRef.nativeElement.querySelector('#textField');\n      const inputValue = inputField.value.trim();\n      if (inputValue !== '') {\n        this.customOptions.push({\n          value:inputValue\n        })\n\n        this.question.formElement.option.customOptions=this.customOptions;\n        const labelsContainer = this.elementRef.nativeElement.querySelector('#inputBoxLabels');\n        const label = document.createElement('span');\n        label.textContent = inputValue;\n        label.classList.add('inputBoxLabel');\n        const closeButton = document.createElement('span');\n        closeButton.textContent = 'x';\n        closeButton.classList.add('close');\n        closeButton.addEventListener('click', () => {\n          labelsContainer.removeChild(label);\n\n          for(let i=0;i<this.customOptions.length;i++){\n            let option=this.customOptions[i];\n            if(option.value==label.textContent){\n              this.customOptions.splice(i, 1);\n            }\n          }\n          this.question.formElement.option.customOptions=this.customOptions\n        });\n        label.appendChild(closeButton);\n        inputField.value = '';\n        inputField.style.width = '10px';\n      }\n    }\n  }\n\n  removeOption(optionValue:string){\n    for(let i=0;i<this.customOptions.length;i++){\n      let option=this.customOptions[i];\n      if(option.value==optionValue){\n        this.customOptions.splice(i, 1);\n      }\n    }\n    this.question.formElement.option.customOptions=this.customOptions\n  }\n\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n  selectedSection() {\n    const ids = [this.question?.id, this.question?.element?.id, this.question?.formElement?.id].filter(id => id !== undefined);\n    if (ids.includes(this.selectedQuestionId)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n    <div class=\"col-12\">\n      <div class=\"outer-rectangle\">\n        <!-- Outer Rectangle -->\n        <div class=\"inner-rectangle\">\n          <!-- Inner Rectangle -->\n          <div class=\"input-container\" [ngClass]=\"{'selected': selectedSection()}\">\n              <div class=\"row\">\n                <div class=\"col\">\n              <div class=\"icon-container\">\n                <img width=\"24\" height=\"25\" src=\"/assets/icons/dropdown-icon.svg\" alt=\"Checkbox Icon\" class=\"icon-style\">\n                    Check box\n              </div>\n            </div>\n              <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div  class=\"action-button\" data-title=\"Hint\"\n                (click)=\"hintOpened()\">\n\n                <img width=\"38\" height=\"36\" src=\"/assets/icons/add-hint-icon.svg\" alt=\"Hint Icon\" class=\"icon-container-button\">\n                </div>\n                <div  class=\"action-button\" data-title=\"Delete\"\n                (click)=\"openConfirmationModal()\">\n                  <img width=\"38\" height=\"36\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                  </div>\n              </div>\n            </div>\n            </div>\n            <div *ngIf=\"!question?.element?.multiField\">\n            <label class=\"fontFamily\"for=\"input1\">Question</label>\n            <input type=\"text\" id=\"input1\" class=\"form-control mb-2\" [(ngModel)]=\"inputQuestion\" (ngModelChange)=\"jsonUpdation()\"\n            placeholder=\"Type Question\" maxlength=\"150\">\n            </div>\n            <div class=\"form-check-field\">\n              <input type=\"radio\" [id]=\"'checkboxCustomOptions' + question.id\" [name]=\"question.id\" value=\"OPTION\" [(ngModel)]=\"selectedOption\"\n              (ngModelChange)=\"jsonUpdation()\" [attr.data-value]=\"selectedOption=='OPTION'\">\n              <label class=\"form-check-label\" [for]=\"'checkboxCustomOptions'  + question.id\">Custom Options</label>\n            </div>\n\n            <div class=\"form-check-sub-field\" *ngIf=\"selectedOption =='OPTION'\">\n              <div class=\"inputBox\">\n                <div class=\"inputBoxLabels\" id=\"inputBoxLabels\">\n                  <span class=\"inputBoxLabel\" *ngFor=\"let option of customOptions\">\n                    {{option.value}}\n                    <span class=\"close\" (click)=\"removeOption(option.value)\">x</span>\n                  </span>\n                </div>\n                <input\n                  class=\"textField\"\n                  type=\"text\"\n                  id=\"textField\"\n                  name=\"textField\"\n                  (input)=\"handleInput()\"\n                  (keydown)=\"handleKeyDown($event)\"\n                >\n              </div>\n            </div>\n\n            <div class=\"form-check-field\">\n              <input  type=\"radio\" [id]=\"'checkboxLookup' + question.id\" [name]=\"question.id\" value=\"LOOKUP\" [(ngModel)]=\"selectedOption\"\n              (ngModelChange)=\"jsonUpdation()\" [attr.data-value]=\"selectedOption=='LOOKUP'\">\n              <label class=\"form-check-label\" [for]=\"'checkboxLookup' + question.id\">Load from lookup data</label>\n            </div>\n\n            <div class=\"form-check-sub-field\" *ngIf=\"selectedOption =='LOOKUP'\">\n              <lib-dropdown\n              [placeholder]=\"'Master data'\"\n              [showCreateNew]=\"true\"\n              [items]=\"tables\"\n              [customButtons]=\"buttons\"\n              (onCreateNew)=\"createLookUp()\"\n              >\n              </lib-dropdown>\n            </div>\n\n            <div class=\"form-check-field\">\n              <input  type=\"radio\" [id]=\"'checkboxDatabase' + question.id\" [name]=\"question.id\" value=\"DATABASE\" [(ngModel)]=\"selectedOption\"\n              (ngModelChange)=\"jsonUpdation()\" [attr.data-value]=\"selectedOption=='DATABASE'\">\n              <label class=\"form-check-label\" [for]=\"'checkboxDatabase' + question.id\">Load from data base</label>\n            </div>\n\n            <div class=\"form-check-sub-field mt-4\"  *ngIf=\"selectedOption =='DATABASE'\">\n              <div class=\"row mb-1 ms-3\">\n                <div class=\"col-4\">Table</div>\n                <div class=\"col-4\">Value field</div>\n                <div class=\"col-4\">Label field</div>\n              </div>\n              <div class=\"row ms-3\">\n                  <div class=\"col-4\">\n                    <lib-dropdown\n                [placeholder]=\"'Select'\">\n                </lib-dropdown>\n                  </div>\n\n                  <div class=\"col-4\">\n                    <lib-dropdown\n                [placeholder]=\"'Select'\">\n                </lib-dropdown>\n                  </div>\n\n                  <div class=\"col-4\">\n                    <lib-dropdown\n                [placeholder]=\"'Select'\">\n                </lib-dropdown>\n                  </div>\n              </div>\n\n              <div class=\"row\">\n                <div class=\"col-2 ms-auto\">\n                  <div class=\"add-criteria\">\n                    <img width=\"20\" height=\"19\" src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Criteria Icon\">\n                    <a>Add criteria</a>\n                  </div>\n                </div>\n              </div>\n\n              <div class=\"row criteria-div ms-3\">\n                <div class=\"col-3\">\n                  <lib-dropdown\n                  [placeholder]=\"'Select'\"\n                  [showBorder]=\"false\"></lib-dropdown>\n                </div>\n                <div class=\"col-2\">\n                  <lib-dropdown\n                  [placeholder]=\"'Select'\"\n                  [showBorder]=\"false\"></lib-dropdown>\n                </div>\n                <div class=\"col-3\">\n                  <lib-dropdown\n                  [placeholder]=\"'Select'\"\n                  [showBorder]=\"false\"></lib-dropdown>\n                </div>\n                <div class=\"col-3\">\n                  <lib-dropdown\n                  [placeholder]=\"'Select'\"\n                  [showBorder]=\"false\"></lib-dropdown>\n                </div>\n                <div class=\"col-1  criteria-delete\">\n                  <img width=\"38\" height=\"36\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Criteria Icon\">\n                </div>\n              </div>\n\n              <div class=\"row  criteria-div ms-3\">\n                <div class=\"col-2\">\n                  <lib-dropdown\n                  [placeholder]=\"'Select'\"\n                  [showBorder]=\"false\"></lib-dropdown>\n                </div>\n                <div class=\"col-2\">\n                  <lib-dropdown\n                  [placeholder]=\"'Select'\"\n                  [showBorder]=\"false\"></lib-dropdown>\n                </div>\n                <div class=\"col-2\">\n                  <lib-dropdown\n                  [placeholder]=\"'Select'\"\n                  [showBorder]=\"false\"></lib-dropdown>\n                </div>\n                <div class=\"col-2\">\n                  <lib-dropdown\n                  [placeholder]=\"'Select'\"\n                  [showBorder]=\"false\"></lib-dropdown>\n                </div>\n                <div class=\"col-3\">\n                  <input type=\"text\" class=\"criteria-input\" placeholder=\"Type here\">\n                </div>\n                <div class=\"col-1 criteria-delete\">\n                  <img width=\"38\" height=\"36\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Criteria Icon\">\n                </div>\n              </div>\n            </div>\n\n            <div class=\"form-check-field\">\n              <input  type=\"radio\" [id]=\"'checkboxApi' + question.id\" [name]=\"question.id\" value=\"API\" [(ngModel)]=\"selectedOption\"\n              (ngModelChange)=\"jsonUpdation()\" [attr.data-value]=\"selectedOption=='API'\">\n              <label class=\"form-check-label\" [for]=\"'checkboxApi' + question.id\">Load from API</label>\n            </div>\n\n            <div class=\"form-check-sub-field mt-4\"  *ngIf=\"selectedOption =='API'\">\n              <div class=\"row\">\n                <div class=\"col-10\"></div>\n                <div class=\"col-1 form-check-field\">\n                  <input  type=\"radio\" id=\"externalApi\" name=\"apioptions\" value=\"External\" [attr.data-value]=\"\">\n                  <label class=\"form-check-label\" for=\"externalApi\">External</label>\n                </div>\n                <div class=\"col-1 form-check-field\">\n                  <input  type=\"radio\" id=\"internalApi\" name=\"apioptions\" value=\"Internal\" [attr.data-value]=\"\">\n                  <label class=\"form-check-label\" for=\"internalApi\">Internal</label>\n                </div>\n              </div>\n              <div class=\"row\">\n                <div class=\"col-12\">\n                  <label for=\"\">API URL</label>\n                  <input type=\"text\" class=\"apiUrlInput\" placeholder=\"Type\">\n                </div>\n                <div class=\"col-5\">\n                  <label for=\"\">Value field <span class=\"star\">*</span></label>\n                  <input type=\"text\"  class=\"valueInput\" placeholder=\"Type\">\n                </div>\n                <div class=\"col-2\"></div>\n                <div class=\"col-5\">\n                  <label for=\"\">Value field  <span class=\"star\">*</span></label>\n                  <input type=\"text\"  class=\"valueInput\" placeholder=\"Type\">\n                </div>\n                <div class=\"col-12\">\n                  <label for=\"\">Path to items</label>\n                  <input type=\"text\" class=\"apiUrlInput\" placeholder=\"Type\">\n                </div>\n                <div class=\"col-12 text-end\">\n                  <a href=\"\"> Advanced Options</a>\n                </div>\n                <div class=\"col-12\">\n                  <p class=\"option-heading\">Headers</p>\n                </div>\n                <div class=\"col-12 logic-add-btn\">\n                  <img width=\"20\" height=\"19\" src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Criteria Icon\">\n                  <p>Add</p>\n                </div>\n                <div class=\"col-12\">\n                  <div class=\"row field-heading\">\n                    <div class=\"col-4\">\n                      <p>Name</p>\n                    </div>\n                    <div class=\"col-3\">\n                      <p>Value from</p>\n                    </div>\n                    <div class=\"col-4\">\n                      <p>Value</p>\n                    </div>\n                  </div>\n                  <div class=\"row headers-div\">\n                    <div class=\"col-4\">\n                      <input type=\"text\" class=\"header-input\" placeholder=\"Authorization\">\n                    </div>\n                    <div class=\"col-3\">\n                      <lib-dropdown\n                      [placeholder]=\"'Select'\"></lib-dropdown>\n                    </div>\n                    <div class=\"col-4\">\n                      <input type=\"text\" class=\"header-input\" placeholder=\"access token\">\n                    </div>\n                    <div class=\"col-1\">\n                      <img width=\"38\" height=\"36\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Item Icon\">\n                    </div>\n                  </div>\n                </div>\n                <div class=\"col-12\">\n                  <p class=\"option-heading\">Parameters</p>\n                </div>\n                <div class=\"col-12 logic-add-btn\">\n                  <img width=\"20\" height=\"19\" src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Criteria Icon\">\n                  <p>Add</p>\n                </div>\n                <div class=\"col-12\">\n                  <div class=\"row field-heading\">\n                    <div class=\"col-4\">\n                      <p>Name</p>\n                    </div>\n                    <div class=\"col-3\">\n                      <p>Value from</p>\n                    </div>\n                    <div class=\"col-4\">\n                      <p>Value</p>\n                    </div>\n                  </div>\n                  <div class=\"row headers-div\">\n                    <div class=\"col-4\">\n                      <input type=\"text\" class=\"header-input\" placeholder=\"Departmentid\">\n                    </div>\n                    <div class=\"col-3\">\n                      <lib-dropdown\n                      [placeholder]=\"'Select'\"></lib-dropdown>\n                    </div>\n                    <div class=\"col-4\">\n                      <lib-dropdown\n                      [placeholder]=\"'Select'\"></lib-dropdown>\n                    </div>\n                    <div class=\"col-1\">\n                      <img width=\"38\" height=\"36\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Item Icon\">\n                    </div>\n                  </div>\n\n                  <div class=\"row headers-div\">\n                    <div class=\"col-4\">\n                      <input type=\"text\" class=\"header-input\" placeholder=\"Page\">\n                    </div>\n                    <div class=\"col-3\">\n                      <lib-dropdown\n                      [placeholder]=\"'Select'\"></lib-dropdown>\n                    </div>\n                    <div class=\"col-4\">\n                      <input type=\"text\" class=\"header-input\" placeholder=\"0\">\n                    </div>\n                    <div class=\"col-1\">\n                      <img width=\"38\" height=\"36\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Item Icon\">\n                    </div>\n                  </div>\n\n                  <div class=\"row headers-div\">\n                    <div class=\"col-4\">\n                      <input type=\"text\" class=\"header-input\" placeholder=\"Size\">\n                    </div>\n                    <div class=\"col-3\">\n                      <lib-dropdown\n                      [placeholder]=\"'Select'\"></lib-dropdown>\n                    </div>\n                    <div class=\"col-4\">\n                      <input type=\"text\" class=\"header-input\" placeholder=\"20\">\n                    </div>\n                    <div class=\"col-1\">\n                      <img width=\"38\" height=\"36\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Item Icon\">\n                    </div>\n                  </div>\n                </div>\n                <div class=\"col-12\">\n                  <p class=\"option-heading\">Path Variables</p>\n                </div>\n                <div class=\"col-12 logic-add-btn\">\n                  <img width=\"20\" height=\"19\" src=\"/assets/icons/add-outline-icon.svg\" alt=\"Add Criteria Icon\">\n                  <p>Add</p>\n                </div>\n                <div class=\"col-12\">\n                  <div class=\"row field-heading\">\n                    <div class=\"col-4\">\n                      <p>Name</p>\n                    </div>\n                    <div class=\"col-3\">\n                      <p>Value from</p>\n                    </div>\n                    <div class=\"col-4\">\n                      <p>Value</p>\n                    </div>\n                  </div>\n                  <div class=\"row headers-div\">\n                    <div class=\"col-4\">\n                      <input type=\"text\" class=\"header-input\" placeholder=\"api-key\">\n                    </div>\n                    <div class=\"col-3\">\n                      <lib-dropdown\n                      [placeholder]=\"'Select'\"></lib-dropdown>\n                    </div>\n                    <div class=\"col-4\">\n                      <input type=\"text\" class=\"header-input\" placeholder=\"type\">\n                    </div>\n                    <div class=\"col-1\">\n                      <img width=\"38\" height=\"36\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Item Icon\">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div class=\"icon-container-bottom\">\n              <div class=\"d-inline-flex\">\n                <button *ngIf=\"logicBtnShow\" type=\"button\" class=\"btn btn-link mr-50 p-0\" (click)=\"addLogic()\">Add logic</button>\n                <div class=\"form-check-field\">\n                  <input type=\"checkbox\" name=\"required-checkbox\" id=\"checkboxRequired\"\n                  [(ngModel)]=\"questionRequired\"\n                  (ngModelChange)=\"jsonUpdation()\"\n                  [attr.data-value]=\"questionRequired\">\n                  <label class=\"form-check-label\" for=\"checkboxRequired\">Required</label>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n\n    <!-- lookup Popup -->\n    <div class=\"modal lookup-popUp\"\n    [style.display]=\"showlookup?'block':'none'\">\n      <div class=\"lookup-popup-header\">\n        <h2 class=\"popup-heading\">Lookup table</h2>\n        <img src=\"/assets/icons/close-icon.svg\" alt=\"Close Icon\" (click)=\"closeLookup()\" class=\"lookup-close-icon\">\n      </div>\n      <div class=\"lookup-popup-content\">\n        <p >Table Name</p>\n        <div class=\"input-wrapper\">\n          <input type=\"text\" class=\"form-control\" placeholder=\"gender\">\n          <img src=\"/assets/icons/pencil-icon.svg\" alt=\"Pencil Icon\">\n        </div>\n        <p class=\"languages\">Selected Languages</p>\n        <div class=\"table-container\">\n          <div class=\"table-row header\">\n            <div class=\"table-head\">Sorting order</div>\n            <div class=\"table-head\">Value</div>\n            <div class=\"table-head\">Label (English)</div>\n          </div>\n          <div class=\"table-body\">\n            <div class=\"table-row\" *ngFor=\"let row of rows\">\n              <div class=\"table-cell\" *ngFor=\"let cell of row\">\n                <input class=\"input-field\" type=\"text\" placeholder=\"Enter data\">\n              </div>\n            </div>\n          </div>\n          <button class=\"plus-button\" (click)=\"addRow()\">+</button>\n        </div>\n        <div class=\"lookup-popup-buttons\">\n          <button class=\"save-button\" (click)=\"save()\">save</button>\n        </div>\n      </div>\n    </div>\n    <div class=\"fbModal\" *ngIf=\"hintOpen\" >\n      <div class=\"fbModalDialog\">\n        <div class=\"fbModalClose\">\n          <img src=\"/assets/icons/close-icon.svg\" alt=\"Close Icon\" (click)=\"hintOpened()\">\n      </div>\n      <div class=\"fbModalTitle\">\n        Add Hint\n       </div>\n        <div class=\"\">\n          <p>Hint</p>\n          <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n          [(ngModel)]=\"hintText\"\n          (ngModelChange)=\"jsonUpdation()\">\n        </div>\n        <div class=\"hintModalFooter\">\n          <div class=\"footer-btn \">\n          <button type=\"button\"\n          (click)=\"hint()\" >OK</button>\n        </div>\n        </div>\n      </div>\n    </div>\n","import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core';\nimport { DataService } from '../../services/data.service';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';\nimport { CONSTANTS } from '../../shared/constants';\n@Component({\n  selector: 'lib-radio-button-fields',\n  templateUrl: './radio-button-fields.component.html',\n  styleUrls: ['./radio-button-fields.component.scss']\n})\nexport class RadioButtonFieldsComponent {\n  @Input() question:any={};\n  @Input() selectedQuestionId:string='';\n  @Input() translations:any=[];\n  @Input() logicBtnShow:boolean=true;\n  @Input() pages:any=[];\n  @Output() deleteQuestion: EventEmitter<Event> = new EventEmitter<Event>();\n  constructor(private dataservice:DataService,private elementRef: ElementRef,public dialog: MatDialog){}\n  inputQuestion:string='';\n  questionRequired!:boolean\n  hintText:string='';\n  childLogics:any=[];\n  data:string='';\n  hintOpen:boolean = false;\n  options:any = CONSTANTS.options;\n  rows: any[] = [['','','']]\n  lookUpData:any;\n  selectedOption:any;\n  showlookup:boolean=false;\n  customOptions:any[]=[];\n  // tables=[\n  //   {\n  //     \"label\":'states',\n  //     \"value\":'',\n  //     \"image\":''\n  //   },\n  //   {\n  //     \"label\":'cities',\n  //     \"value\":'',\n  //     \"image\":''\n  //   }\n  // ]\n\n  tables = CONSTANTS.tables;\n  ngOnInit(){\n    this.valueAssigned()\n  }\n\n  onFocus() {\n    this.selectedQuestionId = this.question.id || this.question.element?.id || this.question?.formElement?.id;\n    this.dataservice.sendFocusQuestion(this.question);\n  }\n  valueAssigned(){\n    this.inputQuestion=this.question.element?.question ||this.question.question;\n    this.questionRequired=this.question.element?.required || this.question.required\n    this.hintText=this.question.element?.hint || this.question.hint\n    this.childLogics=this.question.element?.childLogics || this.question?.childLogics;\n    this.selectedOption=this.question.formElement.option.optionType;\n    this.customOptions=this.question.formElement.option.customOptions;\n  }\n\n  hint(){\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(translation.elementId==this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n        translation.translatedText=this.hintText;\n        if(this.question.element){\n          this.question.element.hint = this.hintText;\n        }else{\n          this.question.hint = this.hintText;\n        }\n      }\n    }\n    this.hintOpened();\n    }\n  jsonUpdation(type?: string){\n    this.onFocus();\n    this.dataservice.emitChangeStatus(true);\n    if ('question' in (this.question.element || {})) {\n      this.question.element.question = this.inputQuestion;\n    } else {\n      this.question.question = this.inputQuestion;\n    }\n    for(let i=0;i<this.translations.length;i++){\n      let translation=this.translations[i];\n      if(type === 'hint') {\n        if(translation.elementId===this.selectedQuestionId && translation.attribute==='HELP_TEXT'  && translation.language==='eng'){\n          translation.translatedText=this.hintText;\n        }\n      } else {\n        if (translation.elementId === this.selectedQuestionId && translation.attribute==='NAME') {\n          translation.translatedText = this.inputQuestion;\n        }\n      }\n    }\n    this.question.formElement.option.optionType=this.selectedOption;\n  }\n  required(){\n    if(this.question.element)\n      this.question.element.required= this.questionRequired;\n    else\n      this.question.required=this.questionRequired;\n  }\n  deleteChildQuestions(event:any){\n    this.dataservice.sendData(this.question.id);\n  }\n   addLogic(){\n    this.dataservice.sendLogicQuestion(this.question);\n  }\n  deleteLogic(id:any){\n    this.childLogics=this.childLogics.filter((item:any)=>item.id!=id);\n  }\n  createLookUp(){\n    this.showlookup = !this.showlookup\n  }\n  closeLookup(){\n    this.showlookup = !this.showlookup\n  }\n\n  addRow() {\n    this.rows.push(['', '', '']); // Add a new row with three empty cells\n  }\n  save(){\n\n  }\n\n  buttons=[\n    {\n      label: 'Edit',\n      icon: 'fa-solid fa-pen',\n      color:'#084FFF',\n      action: () => this.editTable(),\n    },\n    {\n      label: 'View',\n      icon: 'fa-solid fa-eye',\n      color:'#084FFF',\n      action: () => this.viewTable(),\n    },\n  ]\n  viewTable(){\n    this.showlookup = !this.showlookup\n  }\n  editTable(){\n    this.showlookup = !this.showlookup\n  }\n  handleInput() {\n    const inputField = this.elementRef.nativeElement.querySelector('#textField');\n    const textWidth = inputField.value.length * 8; // Assuming 8px per character\n    inputField.style.width = Math.max(textWidth, 10) + 'px'; // Set minimum width as 10px\n  }\n  handleKeyDown(event: KeyboardEvent) {\n    if (event.key === 'Enter') {\n      const inputField = this.elementRef.nativeElement.querySelector('#textField');\n      const inputValue = inputField.value.trim();\n      if (inputValue !== '') {\n        this.customOptions.push({\n          value:inputValue\n        })\n        this.question.formElement.option.customOptions=this.customOptions;\n        const labelsContainer = this.elementRef.nativeElement.querySelector('#inputBoxLabels');\n        const label = document.createElement('span');\n        label.textContent = inputValue;\n        label.classList.add('inputBoxLabel');\n        const closeButton = document.createElement('span');\n        closeButton.textContent = 'x';\n        closeButton.classList.add('close');\n        closeButton.addEventListener('click', () => {\n          labelsContainer.removeChild(label);\n          for(let i=0;i<this.customOptions.length;i++){\n            let option=this.customOptions[i];\n            if(option.value==label.textContent){\n              this.customOptions.splice(i, 1);\n            }\n          }\n          this.question.formElement.option.customOptions=this.customOptions\n        });\n        label.appendChild(closeButton);\n        inputField.value = '';\n        inputField.style.width = '10px';\n      }\n    }\n  }\n\n  removeOption(optionValue:string){\n    for(let i=0;i<this.customOptions.length;i++){\n      let option=this.customOptions[i];\n      if(option.value==optionValue){\n        this.customOptions.splice(i, 1);\n      }\n    }\n    this.question.formElement.option.customOptions=this.customOptions\n  }\n  openConfirmationModal(){\n    const dialogConfig = new MatDialogConfig();\n    dialogConfig.data = {\n      messageHeader:\"Are you sure ?\",\n      message:\"Do you want to delete this question?\"\n    };\n    dialogConfig.hasBackdrop = true;\n    dialogConfig.disableClose = true;\n    const dialogRef = this.dialog.open(ConfirmationModalComponent, dialogConfig);\n    dialogRef.afterClosed().subscribe((result: any) => {\n      if (result) {\n        this.dataservice.sendData(this.selectedQuestionId);\n        this.dataservice.sendsubFormQuestionDelete(this.selectedQuestionId);\n      }\n    });\n  }\n  hintOpened(){\n    this.hintOpen = !this.hintOpen\n  }\n\n  copyQuestion() {\n    if (!this.question) return;\n    this.dataservice.sendCopiedQuestion(this.question);\n  }\n}\n","<div class=\"row\" [id]=\"'question-' + question.element.id\">\n  <div class=\"col-12\">\n    <div class=\"outer-rectangle\">\n      <!-- Outer Rectangle -->\n      <div class=\"inner-rectangle\">\n        <!-- Inner Rectangle -->\n        <div class=\"input-container\"\n        [ngClass]=\"{'selected': selectedQuestionId===question.id || selectedQuestionId===question.element?.id}\">\n            <div class=\"row\">\n              <div class=\"col\">\n            <div class=\"icon-container\">\n              <img src=\"/assets/icons/radio-button-icon.svg\" alt=\"Radio Button\" class=\"icon-style\" >\n                  Radio Button\n            </div>\n          </div>\n            <div class=\"col-auto\">\n              <div class=\"icon-container-right\">\n                <div  class=\"action-button\" data-title=\"copy\" (click)=\"copyQuestion()\">\n                  <img src=\"/assets/icons/copy-no-outline-icon.svg\" class=\"icon-right\">\n                </div>\n                <div  class=\"action-button\" data-title=\"Hint\"\n                (click)=\"hintOpened()\">\n                    <img src=\"/assets/icons/add-hint-icon.svg\" class=\"icon-container-button\">\n                </div>\n                <div  class=\"action-button\" data-title=\"Delete\"\n                (click)=\"openConfirmationModal()\">\n                <img  class=\"icon-right\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                  </div>\n              </div>\n          </div>\n          </div>\n          <div *ngIf=\"!question?.element?.multiField\">\n          <label class=\"fontFamily\"for=\"input1\">Question</label>\n          <input type=\"text\" id=\"input1\" class=\"form-control mb-2\"\n          placeholder=\"Type Question\" maxlength=\"150\"\n            [(ngModel)]=\"inputQuestion\"\n            (ngModelChange)=\"jsonUpdation()\"\n            (focus)=\"onFocus()\">\n          </div>\n            <div class=\"form-check-field\">\n            <input type=\"radio\" [id]=\"'radioCustomOptions' + question.id\" [name]=\"question.id\" value=\"OPTION\" [(ngModel)]=\"selectedOption\"\n            (ngModelChange)=\"jsonUpdation()\" [attr.data-value]=\"selectedOption=='OPTION'\">\n            <label class=\"form-check-label\" [for]=\"'radioCustomOptions' + question.id\">Custom Options</label>\n          </div>\n\n          <div class=\"form-check-sub-field\" *ngIf=\"selectedOption =='OPTION'\">\n            <div class=\"inputBox\">\n              <div class=\"inputBoxLabels\" id=\"inputBoxLabels\">\n                <span class=\"inputBoxLabel\" *ngFor=\"let option of customOptions\">\n                  {{option.value}}\n                  <span class=\"close\" (click)=\"removeOption(option.value)\">x</span>\n                </span>\n              </div>\n              <input\n                class=\"textField\"\n                type=\"text\"\n                id=\"textField\"\n                name=\"textField\"\n                (input)=\"handleInput()\"\n                (keydown)=\"handleKeyDown($event)\"\n              >\n            </div>\n          </div>\n          <div class=\"form-check-field\">\n            <input class=\"\" type=\"radio\" [id]=\"'radioLookup' + question.id\" [name]=\"question.id\" value=\"LOOKUP\" [(ngModel)]=\"selectedOption\"\n            (ngModelChange)=\"jsonUpdation()\" [attr.data-value]=\"selectedOption=='LOOKUP'\">\n            <label class=\"form-check-label\" [for]=\"'radioLookup' + question.id\">Load from lookup data</label>\n          </div>\n          <div class=\"form-check-sub-field\" *ngIf=\"selectedOption =='LOOKUP'\">\n            <lib-dropdown\n            [placeholder]=\"'Master data'\"\n            [showCreateNew]=\"true\"\n            [items]=\"tables\"\n            [customButtons]=\"buttons\"\n            (onCreateNew)=\"createLookUp()\"\n            >\n            </lib-dropdown>\n          </div>\n          <div class=\"form-check-field\">\n            <input class=\"\" type=\"radio\" [id]=\"'radioDatabase' + question.id\" [name]=\"question.id\" value=\"DATABASE\" [(ngModel)]=\"selectedOption\"\n            (ngModelChange)=\"jsonUpdation()\" [attr.data-value]=\"selectedOption=='DATABASE'\">\n            <label class=\"form-check-label\" [for]=\"'radioDatabase' + question.id\">Load from data base</label>\n          </div>\n          <div class=\"form-check-sub-field mt-4\"  *ngIf=\"selectedOption =='DATABASE'\">\n            <div class=\"row mb-1 ms-3\">\n              <div class=\"col-4\">Table</div>\n              <div class=\"col-4\">Value field</div>\n              <div class=\"col-4\">Label field</div>\n            </div>\n            <div class=\"row ms-3\">\n                <div class=\"col-4\">\n                  <lib-dropdown\n              [placeholder]=\"'Select'\">\n              </lib-dropdown>\n                </div>\n                <div class=\"col-4\">\n                  <lib-dropdown\n              [placeholder]=\"'Select'\">\n              </lib-dropdown>\n                </div>\n                <div class=\"col-4\">\n                  <lib-dropdown\n              [placeholder]=\"'Select'\">\n              </lib-dropdown>\n                </div>\n            </div>\n            <div class=\"row\">\n              <div class=\"col-2 ms-auto\">\n                <div class=\"add-criteria\">\n                  <img src=\"/assets/icons/add-criteria-icon.svg\" class=\"icon-field-add\">\n                  <a>Add criteria</a>\n                </div>\n              </div>\n            </div>\n            <div class=\"row criteria-div ms-3\">\n              <div class=\"col-3\">\n                <lib-dropdown\n                [placeholder]=\"'Select'\"\n                [showBorder]=\"false\"></lib-dropdown>\n              </div>\n              <div class=\"col-2\">\n                <lib-dropdown\n                [placeholder]=\"'Select'\"\n                [showBorder]=\"false\"></lib-dropdown>\n              </div>\n              <div class=\"col-3\">\n                <lib-dropdown\n                [placeholder]=\"'Select'\"\n                [showBorder]=\"false\"></lib-dropdown>\n              </div>\n              <div class=\"col-3\">\n                <lib-dropdown\n                [placeholder]=\"'Select'\"\n                [showBorder]=\"false\"></lib-dropdown>\n              </div>\n              <div class=\"col-1  criteria-delete\">\n                <img  class=\"icon-right\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n            </div>\n            <div class=\"row  criteria-div ms-3\">\n              <div class=\"col-2\">\n                <lib-dropdown\n                [placeholder]=\"'Select'\"\n                [showBorder]=\"false\"></lib-dropdown>\n              </div>\n              <div class=\"col-2\">\n                <lib-dropdown\n                [placeholder]=\"'Select'\"\n                [showBorder]=\"false\"></lib-dropdown>\n              </div>\n              <div class=\"col-2\">\n                <lib-dropdown\n                [placeholder]=\"'Select'\"\n                [showBorder]=\"false\"></lib-dropdown>\n              </div>\n              <div class=\"col-2\">\n                <lib-dropdown\n                [placeholder]=\"'Select'\"\n                [showBorder]=\"false\"></lib-dropdown>\n              </div>\n              <div class=\"col-3\">\n                <input type=\"text\" class=\"criteria-input\" placeholder=\"Type here\">\n              </div>\n              <div class=\"col-1 criteria-delete\">\n                <img  class=\"icon-right\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n              </div>\n            </div>\n          </div>\n          <div class=\"form-check-field\">\n            <input class=\"\" type=\"radio\" [id]=\"'radioApi' + question.id\" [name]=\"question.id\" value=\"API\" [(ngModel)]=\"selectedOption\"\n            (ngModelChange)=\"jsonUpdation()\" [attr.data-value]=\"selectedOption=='API'\">\n            <label class=\"form-check-label\" [for]=\"'radioApi' + question.id\">Load from API</label>\n          </div>\n          <div class=\"form-check-sub-field mt-4\"  *ngIf=\"selectedOption =='API'\">\n            <div class=\"row\">\n              <div class=\"col-10\"></div>\n              <div class=\"col-1 form-check-field\">\n                <input class=\"\" type=\"radio\" name=\"options\" value=\"External\" [attr.data-value]=\"\">\n                <label class=\"form-check-label\">External</label>\n              </div>\n              <div class=\"col-1 form-check-field\">\n                <input class=\"\" type=\"radio\" name=\"options\" value=\"Internal\" [attr.data-value]=\"\">\n                <label class=\"form-check-label\">Internal</label>\n              </div>\n            </div>\n            <div class=\"row\">\n              <div class=\"col-12\">\n                <label for=\"\">API URL</label>\n                <input type=\"text\" class=\"apiUrlInput\" placeholder=\"Type\">\n              </div>\n              <div class=\"col-5\">\n                <label for=\"\">Value field <span class=\"star\">*</span></label>\n                <input type=\"text\"  class=\"valueInput\" placeholder=\"Type\">\n              </div>\n              <div class=\"col-2\"></div>\n              <div class=\"col-5\">\n                <label for=\"\">Value field  <span class=\"star\">*</span></label>\n                <input type=\"text\"  class=\"valueInput\" placeholder=\"Type\">\n              </div>\n              <div class=\"col-12\">\n                <label for=\"\">Path to items</label>\n                <input type=\"text\" class=\"apiUrlInput\" placeholder=\"Type\">\n              </div>\n              <div class=\"col-12 text-end\">\n                <a href=\"\"> Advanced Options</a>\n              </div>\n              <div class=\"col-12\">\n                <p class=\"option-heading\">Headers</p>\n              </div>\n              <div class=\"col-12 logic-add-btn\">\n                <img src=\"/assets/icons/add-criteria-icon.svg\" class=\"icon-field-add\">\n                <p>Add</p>\n              </div>\n              <div class=\"col-12\">\n                <div class=\"row field-heading\">\n                  <div class=\"col-4\">\n                    <p>Name</p>\n                  </div>\n                  <div class=\"col-3\">\n                    <p>Value from</p>\n                  </div>\n                  <div class=\"col-4\">\n                    <p>Value</p>\n                  </div>\n                </div>\n                <div class=\"row headers-div\">\n                  <div class=\"col-4\">\n                    <input type=\"text\" class=\"header-input\" placeholder=\"Authorization\">\n                  </div>\n                  <div class=\"col-3\">\n                    <lib-dropdown\n                    [placeholder]=\"'Select'\"></lib-dropdown>\n                  </div>\n                  <div class=\"col-4\">\n                    <input type=\"text\" class=\"header-input\" placeholder=\"access token\">\n                  </div>\n                  <div class=\"col-1\">\n                    <img  class=\"icon-right\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                  </div>\n                </div>\n              </div>\n              <div class=\"col-12\">\n                <p class=\"option-heading\">Parameters</p>\n              </div>\n              <div class=\"col-12 logic-add-btn\">\n                <img src=\"/assets/icons/add-criteria-icon.svg\" class=\"icon-field-add\">\n                <p>Add</p>\n              </div>\n              <div class=\"col-12\">\n                <div class=\"row field-heading\">\n                  <div class=\"col-4\">\n                    <p>Name</p>\n                  </div>\n                  <div class=\"col-3\">\n                    <p>Value from</p>\n                  </div>\n                  <div class=\"col-4\">\n                    <p>Value</p>\n                  </div>\n                </div>\n                <div class=\"row headers-div\">\n                  <div class=\"col-4\">\n                    <input type=\"text\" class=\"header-input\" placeholder=\"Departmentid\">\n                  </div>\n                  <div class=\"col-3\">\n                    <lib-dropdown\n                    [placeholder]=\"'Select'\"></lib-dropdown>\n                  </div>\n                  <div class=\"col-4\">\n                    <lib-dropdown\n                    [placeholder]=\"'Select'\"></lib-dropdown>\n                  </div>\n                  <div class=\"col-1\">\n                    <img  class=\"icon-right\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                  </div>\n                </div>\n                <div class=\"row headers-div\">\n                  <div class=\"col-4\">\n                    <input type=\"text\" class=\"header-input\" placeholder=\"Page\">\n                  </div>\n                  <div class=\"col-3\">\n                    <lib-dropdown\n                    [placeholder]=\"'Select'\"></lib-dropdown>\n                  </div>\n                  <div class=\"col-4\">\n                    <input type=\"text\" class=\"header-input\" placeholder=\"0\">\n                  </div>\n                  <div class=\"col-1\">\n                    <img  class=\"icon-right\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                  </div>\n                </div>\n                <div class=\"row headers-div\">\n                  <div class=\"col-4\">\n                    <input type=\"text\" class=\"header-input\" placeholder=\"Size\">\n                  </div>\n                  <div class=\"col-3\">\n                    <lib-dropdown\n                    [placeholder]=\"'Select'\"></lib-dropdown>\n                  </div>\n                  <div class=\"col-4\">\n                    <input type=\"text\" class=\"header-input\" placeholder=\"20\">\n                  </div>\n                  <div class=\"col-1\">\n                    <img  class=\"icon-right\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                  </div>\n                </div>\n              </div>\n              <div class=\"col-12\">\n                <p class=\"option-heading\">Path Variables</p>\n              </div>\n              <div class=\"col-12 logic-add-btn\">\n                <img src=\"/assets/icons/add-criteria-icon.svg\" class=\"icon-field-add\">\n                <p>Add</p>\n              </div>\n              <div class=\"col-12\">\n                <div class=\"row field-heading\">\n                  <div class=\"col-4\">\n                    <p>Name</p>\n                  </div>\n                  <div class=\"col-3\">\n                    <p>Value from</p>\n                  </div>\n                  <div class=\"col-4\">\n                    <p>Value</p>\n                  </div>\n                </div>\n                <div class=\"row headers-div\">\n                  <div class=\"col-4\">\n                    <input type=\"text\" class=\"header-input\" placeholder=\"api-key\">\n                  </div>\n                  <div class=\"col-3\">\n                    <lib-dropdown\n                    [placeholder]=\"'Select'\"></lib-dropdown>\n                  </div>\n                  <div class=\"col-4\">\n                    <input type=\"text\" class=\"header-input\" placeholder=\"type\">\n                  </div>\n                  <div class=\"col-1\">\n                    <img  class=\"icon-right\" src=\"/assets/icons/delete-icon.svg\" alt=\"Delete Icon\">\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div class=\"icon-container-bottom\">\n            <div class=\"d-inline-flex\">\n              <button *ngIf=\"logicBtnShow\" type=\"button\" class=\"btn btn-link p-0 mr-50\" (click)=\"addLogic()\">Add logic</button>\n              <div class=\"form-check-field\">\n                <input type=\"checkbox\" name=\"required-checkbox\" id=\"radioRequired\"\n                [(ngModel)]=\"questionRequired\"\n                (ngModelChange)=\"required()\"\n                [attr.data-value]=\"questionRequired\">\n                <label class=\"form-check-label\" for=\"radioRequired\">Required</label>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"modal lookup-popUp\"\n  [style.display]=\"showlookup?'block':'none'\">\n    <div class=\"lookup-popup-header\">\n      <h2 class=\"popup-heading\">Lookup table</h2>\n        <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"closeLookup()\" class=\"lookup-close-icon\">\n    </div>\n    <div class=\"lookup-popup-content\">\n      <p >Table Name</p>\n      <div class=\"input-wrapper\">\n        <input type=\"text\" class=\"form-control\" placeholder=\"gender\">\n        <img src=\"/assets/icons/pencil-rect-icon.svg\" class=\"icon-right\">\n      </div>\n      <p class=\"languages\">Selected Languages</p>\n      <div class=\"table-container\">\n        <div class=\"table-row header\">\n          <div class=\"table-head\">Sorting order</div>\n          <div class=\"table-head\">Value</div>\n          <div class=\"table-head\">Label (English)</div>\n        </div>\n        <div class=\"table-body\">\n          <div class=\"table-row\" *ngFor=\"let row of rows\">\n            <div class=\"table-cell\" *ngFor=\"let cell of row\">\n              <input class=\"input-field\" type=\"text\" placeholder=\"Enter data\">\n            </div>\n          </div>\n        </div>\n        <button class=\"plus-button\" (click)=\"addRow()\">+</button>\n      </div>\n      <div class=\"lookup-popup-buttons\">\n        <button class=\"save-button\" (click)=\"save()\">save</button>\n      </div>\n    </div>\n  </div>\n\n<div class=\"fbModal\" *ngIf=\"hintOpen\" >\n  <div class=\"fbModalDialog\">\n      <div class=\"fbModalClose\">\n        <img src=\"/assets/icons/close-sidebar-mark-icon.svg\" (click)=\"hintOpened()\" class=\"svg-model\">\n    </div>\n    <div class=\"fbModalTitle\">\n      Add Hint\n    </div>\n    <div class=\"\">\n      <p>Hint</p>\n      <input class=\"appearanceInput\" type=\"text\" placeholder=\"Type here...\"\n      [(ngModel)]=\"hintText\"\n      (ngModelChange)=\"jsonUpdation('hint')\">\n    </div>\n    <div class=\"hintModalFooter\">\n        <div class=\"footer-btn \">\n          <button type=\"button\"\n\n          (click)=\"hint()\" >OK</button>\n      </div>\n    </div>\n  </div>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TextboxComponent } from './text-fields/textbox.component';\nimport { DropDownComponent } from './dropDown-fields/drop-down.component';\nimport { TypeNumberComponent } from './number-fields/type-number.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FilePickerFieldsComponent } from './file-picker-fields/file-picker-fields.component';\nimport { SignatureFieldsComponent } from './signature-fields/signature-fields.component';\nimport { SliderFieldsComponent } from './slider-fields/slider-fields.component';\nimport { LocationFieldsComponent } from './location-fields/location-fields.component';\nimport { TermsAndConditionFieldsComponent } from './terms-and-condition-fields/terms-and-condition-fields.component';\nimport { ToggleSwitchFieldsComponent } from './toggle-switch-fields/toggle-switch-fields.component';\nimport { TextAreaFieldsComponent } from './text-area-fields/text-area-fields.component';\nimport { RichTextEditorFieldsComponent } from './rich-text-editor-fields/rich-text-editor-fields.component';\nimport { PasswordFieldsComponent } from './password-fields/password-fields.component';\nimport { MobileFieldsComponent } from './mobile-fields/mobile-fields.component';\nimport { UrlFieldsComponent } from './url-fields/url-fields.component';\nimport { MailFieldsComponent } from './mail-fields/mail-fields.component';\nimport { SelectionMatrixFieldsComponent } from './selection-matrix-fields/selection-matrix-fields.component';\nimport { DateTimeFieldsComponent } from './date-time-fields/date-time-fields.component';\nimport { CheckBoxFieldsComponent } from './check-box-fields/check-box-fields.component';\nimport { RadioButtonFieldsComponent } from './radio-button-fields/radio-button-fields.component';\nimport { DropdownModule } from '@piserve-tech/drop-down';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { SharedModule } from '../shared/shared.module';\nimport { AggregateFunctionComponent } from './aggregate-function/aggregate-function.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { QuillModule } from 'ngx-quill';\nimport { CurrencyFieldsComponent } from './currency-fields/currency-fields.component';\nimport { HiddenFieldsComponent } from './hidden-fields/hidden-fields.component';\nimport { IframeFieldsComponent } from './iframe-fields/iframe-fields.component';\n\n@NgModule({\n  exports: [\n    TypeNumberComponent,\n    DropDownComponent,\n    TextboxComponent,\n    FilePickerFieldsComponent,\n    SignatureFieldsComponent,\n    SliderFieldsComponent,\n    LocationFieldsComponent,\n    TermsAndConditionFieldsComponent,\n    ToggleSwitchFieldsComponent,\n    TextAreaFieldsComponent,\n    RichTextEditorFieldsComponent,\n    PasswordFieldsComponent,\n    MobileFieldsComponent,\n    UrlFieldsComponent,\n    MailFieldsComponent,\n    SelectionMatrixFieldsComponent,\n    DateTimeFieldsComponent,\n    CheckBoxFieldsComponent,\n    RadioButtonFieldsComponent,\n    AggregateFunctionComponent,\n    CurrencyFieldsComponent,\n    HiddenFieldsComponent,\n    IframeFieldsComponent,\n  ],\n  declarations: [\n    TextboxComponent,\n    DropDownComponent,\n    TypeNumberComponent,\n    FilePickerFieldsComponent,\n    SignatureFieldsComponent,\n    SliderFieldsComponent,\n    LocationFieldsComponent,\n    TermsAndConditionFieldsComponent,\n    ToggleSwitchFieldsComponent,\n    TextAreaFieldsComponent,\n    RichTextEditorFieldsComponent,\n    PasswordFieldsComponent,\n    MobileFieldsComponent,\n    UrlFieldsComponent,\n    MailFieldsComponent,\n    SelectionMatrixFieldsComponent,\n    DateTimeFieldsComponent,\n    CheckBoxFieldsComponent,\n    RadioButtonFieldsComponent,\n    AggregateFunctionComponent,\n    CurrencyFieldsComponent,\n    HiddenFieldsComponent,\n    IframeFieldsComponent,\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    DropdownModule,\n    DragDropModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatChipsModule,\n    MatIconModule,\n    MatAutocompleteModule,\n    ReactiveFormsModule,\n    MatTooltipModule,\n    QuillModule,\n  ],\n})\nexport class FormFieldsModule {}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class FromBuilderRouting { }\n","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { CONSTANTS } from '../../shared/constants';\n\n@Component({\n  selector: 'lib-aggregate-field-properties',\n  templateUrl: './aggregate-field-properties.component.html',\n  styleUrls: ['./aggregate-field-properties.component.scss']\n})\nexport class AggregateFieldPropertiesComponent {\n  apperanceOpened: boolean = false;\n  @Input() questionProperties: any = {};\n  @Input() selectedQuestionId: string = '';\n  @Input() translations: any = [];\n  selectedFontFamily: any[] = [];\n  selectedFontSize: any[] = [];\n  selectedCustomOption: any[] = [];\n  label = 'label';\n  placeholder: string = '';\n  defaultValue: string = '';\n  underline!: boolean;\n  italics!: boolean;\n  bold!: boolean;\n  textAlign: string = '';\n  regExp: string = '';\n  openAppearance() {\n    this.apperanceOpened = !this.apperanceOpened;\n  }\n  options = CONSTANTS.textfieldOptions;\n  fontFamily = CONSTANTS.fontFamily;\n  fontSize = CONSTANTS.fontSize;\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('questionProperties' in changes) {\n      this.selectedCustomOption = [];\n      this.valueAssigned();\n    } else {\n      this.questionProperties.appearance = {\n        fontSize: 22,\n        textAlign: '',\n        font: 'Poppins',\n        underline: false,\n        bold: false,\n        italics: false,\n        placeholder: '',\n        defaultValue: '',\n      };\n      this.questionProperties.validation = {\n        validationType: null,\n        regex: '',\n        validation: '',\n      }\n      this.valueAssigned();\n    }\n  }\n\n  ngOnInit(): void {\n    this.valueAssigned();\n  }\n\n  valueAssigned() {\n    this.placeholder = this.questionProperties?.appearance.placeholder;\n  }\n\n  jsonUpdation() {\n    for (let i = 0; i < this.translations.length; i++) {\n      let translation = this.translations[i];\n      if (\n        translation.elementId == this.selectedQuestionId &&\n        translation.attribute == 'PLACEHOLDER'\n      ) {\n        translation.translatedText = this.placeholder;\n      }\n    }\n    this.questionProperties.appearance.placeholder = this.placeholder;\n  }\n\n}\n","<p class=\"field-title\">Aggregate Functions</p>\n<div class=\"appearance-div\">\n    <div class=\"properties-header\"  (click)=\"openAppearance()\">\n        <p class=\"title\">Appearance</p>\n        <div class=\"down-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/down-arrow-gray-icon.svg\" alt=\"Down Arrow Icon\">\n        </div>\n        <div class=\"up-arrow\"\n            [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n            <img src=\"/assets/icons/upArrow.png\" alt=\"Up Arrow Icon\">\n        </div>\n    </div>\n\n    <div class=\"appearances\" [ngClass]=\"{'opened': apperanceOpened, 'closed': !apperanceOpened}\">\n        <div class=\"content\">\n            <label for=\"Placeholder\" class=\"appearanceLabel\">Placeholder</label>\n            <input type=\"text\" class=\"appearanceInput\" id=\"Placeholder\" name=\"Placeholder\"\n            [(ngModel)]=\"placeholder\" (ngModelChange)=\"jsonUpdation()\">\n        </div>     \n    </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TextFieldPropertiesComponent } from './text-field-properties/text-field-properties.component';\nimport { DropdownModule } from '@piserve-tech/drop-down';\nimport { DatePickerFieldPropertiesComponent } from './date-picker-field-properties/date-picker-field-properties.component';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownFieldsPropertiesComponent } from './drop-down-fields-properties/drop-down-fields-properties.component';\nimport { FilePickerFieldPropertiesComponent } from './file-picker-field-properties/file-picker-field-properties.component';\nimport { SignatureFieldPropertiesComponent } from './signature-field-properties/signature-field-properties.component';\nimport { SliderFieldPropertiesComponent } from './slider-field-properties/slider-field-properties.component';\nimport { LocationFieldPropertiesComponent } from './location-field-properties/location-field-properties.component';\nimport { TermsAndConditionFieldPropertiesComponent } from './terms-and-condition-field-properties/terms-and-condition-field-properties.component';\nimport { ToggleSwitchFieldPropertiesComponent } from './toggle-switch-field-properties/toggle-switch-field-properties.component';\nimport { SelectionMatrixFieldPropertiesComponent } from './selection-matrix-field-properties/selection-matrix-field-properties.component';\nimport { TextAreaFieldPropertiesComponent } from './text-area-field-properties/text-area-field-properties.component';\nimport { RichTextAreaFieldPropertiesComponent } from './rich-text-area-field-properties/rich-text-area-field-properties.component';\nimport { PasswordFieldPropertiesComponent } from './password-field-properties/password-field-properties.component';\nimport { MobileFieldPropertiesComponent } from './mobile-field-properties/mobile-field-properties.component';\nimport { UrlFieldPropertiesComponent } from './url-field-properties/url-field-properties.component';\nimport { MailFieldPropertiesComponent } from './mail-field-properties/mail-field-properties.component';\nimport { NumberFieldPropertiesComponent } from './number-field-properties/number-field-properties.component';\nimport { RadioButtonFieldPropertiesComponent } from './radio-button-field-properties/radio-button-field-properties.component';\nimport { CheckBoxFieldPropertiesComponent } from './check-box-field-properties/check-box-field-properties.component';\nimport { ColorPickerModule } from 'ngx-color-picker';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\nimport { SubFormFieldPropertiesComponent } from './sub-form-field-properties/sub-form-field-properties.component';\nimport { AggregateFieldPropertiesComponent } from './aggregate-field-properties/aggregate-field-properties.component';\nimport { CurrencyFieldPropertiesComponent } from './currency-field-properties/currency-field-properties.component';\nimport { IframeFieldPropertiesComponent } from './iframe-field-properties/iframe-field-properties.component';\n\n@NgModule({\n  exports: [\n    TextFieldPropertiesComponent,\n    DatePickerFieldPropertiesComponent,\n    DropDownFieldsPropertiesComponent,\n    FilePickerFieldPropertiesComponent,\n    SignatureFieldPropertiesComponent,\n    SliderFieldPropertiesComponent,\n    LocationFieldPropertiesComponent,\n    TermsAndConditionFieldPropertiesComponent,\n    ToggleSwitchFieldPropertiesComponent,\n    SelectionMatrixFieldPropertiesComponent,\n    TextAreaFieldPropertiesComponent,\n    RichTextAreaFieldPropertiesComponent,\n    PasswordFieldPropertiesComponent,\n    MobileFieldPropertiesComponent,\n    UrlFieldPropertiesComponent,\n    MailFieldPropertiesComponent,\n    NumberFieldPropertiesComponent,\n    CheckBoxFieldPropertiesComponent,\n    SubFormFieldPropertiesComponent,\n    RadioButtonFieldPropertiesComponent,\n    AggregateFieldPropertiesComponent,\n    CurrencyFieldPropertiesComponent,\n    IframeFieldPropertiesComponent,\n  ],\n  declarations: [\n    TextFieldPropertiesComponent,\n    DatePickerFieldPropertiesComponent,\n    DropDownFieldsPropertiesComponent,\n    FilePickerFieldPropertiesComponent,\n    SignatureFieldPropertiesComponent,\n    SliderFieldPropertiesComponent,\n    LocationFieldPropertiesComponent,\n    TermsAndConditionFieldPropertiesComponent,\n    ToggleSwitchFieldPropertiesComponent,\n    SelectionMatrixFieldPropertiesComponent,\n    TextAreaFieldPropertiesComponent,\n    RichTextAreaFieldPropertiesComponent,\n    PasswordFieldPropertiesComponent,\n    MobileFieldPropertiesComponent,\n    UrlFieldPropertiesComponent,\n    MailFieldPropertiesComponent,\n    NumberFieldPropertiesComponent,\n    RadioButtonFieldPropertiesComponent,\n    CheckBoxFieldPropertiesComponent,\n    SubFormFieldPropertiesComponent,\n    AggregateFieldPropertiesComponent,\n    CurrencyFieldPropertiesComponent,\n    IframeFieldPropertiesComponent,\n  ],\n  imports: [\n    CommonModule,\n    DropdownModule,\n    FormsModule,\n    ColorPickerModule,\n    BsDatepickerModule.forRoot(),\n    NgxMaterialTimepickerModule,\n  ],\n})\nexport class FormFieldPropertiesModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CheckBoxFieldsComponent } from './check-box-fields/check-box-fields.component';\nimport { DateTimeFieldsComponent } from './date-time-fields/date-time-fields.component';\nimport { SectionFieldsComponent } from './section-fields/section-fields.component';\nimport { DropDownFieldsComponent } from './drop-down-fields/drop-down-fields.component';\nimport { UrlFieldsComponent } from './url-fields/url-fields.component';\nimport { ToggleSwitchFieldsComponent } from './toggle-switch-fields/toggle-switch-fields.component';\nimport { TextFieldsComponent } from './text-fields/text-fields.component';\nimport { TextAreaFieldsComponent } from './text-area-fields/text-area-fields.component';\nimport { TermsAndConditionFieldsComponent } from './terms-and-condition-fields/terms-and-condition-fields.component';\nimport { SliderFieldsComponent } from './slider-fields/slider-fields.component';\nimport { SelectionMatrixFieldsComponent } from './selection-matrix-fields/selection-matrix-fields.component';\nimport { RichTextEditorFieldsComponent } from './rich-text-editor-fields/rich-text-editor-fields.component';\nimport { RadioButtonFieldsComponent } from './radio-button-fields/radio-button-fields.component';\nimport { PasswordFieldsComponent } from './password-fields/password-fields.component';\nimport { NumberFieldsComponent } from './number-fields/number-fields.component';\nimport { MobileFieldsComponent } from './mobile-fields/mobile-fields.component';\nimport { MailFieldsComponent } from './mail-fields/mail-fields.component';\nimport { FilePickerFieldsComponent } from './file-picker-fields/file-picker-fields.component';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport {MatSliderModule} from \"@angular/material/slider\";\nimport { DropdownModule } from '@piserve-tech/drop-down';\nimport { DocUploadModule } from '@piserve-tech/file-upload';\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\nimport { QuillModule } from 'ngx-quill';\nimport { AggregateFunctionFieldsComponent } from './aggregate-function-fields/aggregate-function-fields.component';\nimport { FormsModule } from '@angular/forms';\nimport { CurrencyFieldsComponent } from './currency-fields/currency-fields.component';\nimport { IframeFieldsComponent } from './iframe-fields/iframe-fields.component';\n\n\n\n@NgModule({\n  declarations: [\n    CheckBoxFieldsComponent,\n    DateTimeFieldsComponent,\n    DropDownFieldsComponent,\n    FilePickerFieldsComponent,\n    MailFieldsComponent,\n    MobileFieldsComponent,\n    NumberFieldsComponent,\n    PasswordFieldsComponent,\n    RadioButtonFieldsComponent,\n    RichTextEditorFieldsComponent,\n    SelectionMatrixFieldsComponent,\n    SliderFieldsComponent,\n    TermsAndConditionFieldsComponent,\n    TextAreaFieldsComponent,\n    TextFieldsComponent,\n    ToggleSwitchFieldsComponent,\n    UrlFieldsComponent,\n    SectionFieldsComponent,\n    AggregateFunctionFieldsComponent,\n    CurrencyFieldsComponent,\n    IframeFieldsComponent\n  ],\n  imports: [\n    CommonModule,\n    BsDatepickerModule.forRoot(),\n    MatSliderModule,\n    DropdownModule,\n    DocUploadModule,\n    NgxMaterialTimepickerModule,\n    QuillModule,\n    FormsModule\n  ],\n  exports: [\n    CheckBoxFieldsComponent,\n    DateTimeFieldsComponent,\n    DropDownFieldsComponent,\n    FilePickerFieldsComponent,\n    MailFieldsComponent,\n    MobileFieldsComponent,\n    NumberFieldsComponent,\n    PasswordFieldsComponent,\n    RadioButtonFieldsComponent,\n    RichTextEditorFieldsComponent,\n    SelectionMatrixFieldsComponent,\n    SliderFieldsComponent,\n    TermsAndConditionFieldsComponent,\n    TextAreaFieldsComponent,\n    TextFieldsComponent,\n    ToggleSwitchFieldsComponent,\n    UrlFieldsComponent,\n    SectionFieldsComponent,\n    AggregateFunctionFieldsComponent,\n    CurrencyFieldsComponent,\n    IframeFieldsComponent\n  ]\n})\nexport class PreviewFormFieldsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PreviewFormFieldsModule } from '../preview-form-fields/preview-form-fields.module';\nimport { PreviewQuestionsComponent } from './preview-questions/preview-questions.component';\nimport { DragAndDropComponent } from './drag-and-drop/drag-and-drop.component';\nimport { ChildLogicComponent } from './child-logic/child-logic.component';\nimport { SharedFormElementComponent } from './shared-form-element/shared-form-element.component';\nimport { RecursiveElementComponent } from './recursive-element/recursive-element.component';\nimport { SubFormComponent } from './sub-form/sub-form.component';\nimport { MultipleSubformComponent } from './multiple-subform/multiple-subform.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatTableModule } from '@angular/material/table';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatIconModule} from '@angular/material/icon';\nimport { QuestionGroupComponent } from './question-group/question-group.component';\nimport { MultiFieldQuestionsComponent } from './multi-field-questions/multi-field-questions.component';\nimport { FormsModule } from '@angular/forms';\n\n\n@NgModule({\n  declarations: [\n    DragAndDropComponent,\n    PreviewQuestionsComponent,\n    ChildLogicComponent,\n    SharedFormElementComponent,\n    RecursiveElementComponent,\n    SubFormComponent,\n    MultipleSubformComponent,\n    QuestionGroupComponent,\n    MultiFieldQuestionsComponent\n  ],\n  imports: [\n    CommonModule,\n    DragDropModule,\n    PreviewFormFieldsModule,\n    MatDialogModule,\n    MatTableModule,\n    MatMenuModule,\n    MatIconModule,\n    FormsModule\n  ],\n  exports: [\n    DragAndDropComponent,\n    SubFormComponent,\n    MultipleSubformComponent\n  ]\n})\nexport class FormPreviewModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms'; \nimport { FormFieldsModule } from '../form-fields/form-fields.module';\nimport { FormFieldPropertiesModule } from '../form-field-properties/form-field-properties.module';\nimport { ChildSectionComponent } from './child-section/child-section.component';\nimport { ChildAddFormComponent } from './child-add-form/child-add-form.component';\nimport { RecursiveQuestionComponent } from './recursive-question/recursive-question.component';\nimport { QuillModule } from 'ngx-quill';\n\n\n@NgModule({\n  exports: [\n    ChildSectionComponent,\n    ChildAddFormComponent,\n    RecursiveQuestionComponent,\n  ],\n  declarations: [\n    ChildSectionComponent,\n    ChildAddFormComponent,\n    RecursiveQuestionComponent,\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    FormFieldsModule,\n    FormFieldPropertiesModule,\n    QuillModule\n  ]\n})\nexport class ChildsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SectionComponent } from './section/section.component';\nimport { AddFormComponent } from './add-form/add-form.component';\nimport { FormFieldsModule } from '../form-fields/form-fields.module';\nimport { FormsModule } from '@angular/forms';\nimport { FormFieldPropertiesModule } from '../form-field-properties/form-field-properties.module';\nimport {ChildsModule} from '../childs/childs.module';\nimport { MultiFieldQuestionsComponent } from './multi-field-questions/multi-field-questions.component'\nimport { QuillModule } from 'ngx-quill';\nimport { SubformDefaultRecordsComponent } from './subform-default-records/subform-default-records.component';\nimport { FormPreviewModule } from '../form-preview/form-preview.module';\nimport { DropdownModule } from '@piserve-tech/drop-down';\n\n@NgModule({\n  declarations: [\n    SectionComponent, \n    AddFormComponent, \n    MultiFieldQuestionsComponent, SubformDefaultRecordsComponent,\n  ],\n  imports: [\n    CommonModule,\n    FormFieldsModule,\n    FormFieldPropertiesModule,\n    ChildsModule,\n    FormsModule,\n    QuillModule,\n    FormPreviewModule,\n    DropdownModule\n  ],\n  exports: [\n    SectionComponent,\n    AddFormComponent,\n    MultiFieldQuestionsComponent\n  ],\n})\nexport class SectionCreationModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { QuestionGroupComponent } from './question-group/question-group.component';\n\nimport { FormFieldsModule } from '../form-fields/form-fields.module';\nimport { FormsModule } from '@angular/forms';\nimport { FormFieldPropertiesModule } from '../form-field-properties/form-field-properties.module';\nimport {ChildsModule} from '../childs/childs.module'\nimport { SectionCreationModule } from '../section-creation/section-creation.module';\nimport { QuillModule } from 'ngx-quill';\n\n@NgModule({\n  declarations: [\n    QuestionGroupComponent\n  ],\n  imports: [\n    CommonModule,\n    FormFieldsModule,\n    FormFieldPropertiesModule,\n    ChildsModule,\n    FormsModule,\n    SectionCreationModule,\n    QuillModule\n  ],\n  exports:[\n    QuestionGroupComponent\n  ]\n})\nexport class QuestionGroupModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule, Routes } from '@angular/router';\nimport { CreateFormComponent } from './create-form/create-form.component';\nimport { FormFieldsModule } from '../form-fields/form-fields.module';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { EmitterComponent } from './emitters/emitter.component';\nimport { FormFieldPropertiesModule } from '../form-field-properties/form-field-properties.module';\nimport { DropdownModule } from '@piserve-tech/drop-down';\nimport { FormsModule } from '@angular/forms';\nimport { FormPreviewModule } from '../form-preview/form-preview.module';\nimport { TransalationComponent } from './transalation/transalation.component';\nimport { SectionCreationModule } from '../section-creation/section-creation.module';\nimport { ToastrModule } from 'ngx-toastr';\nimport {ChildsModule} from '../childs/childs.module';\nimport { WebhooksComponent } from './webhooks/webhooks.component'\nimport { QuestionLogicComponent } from '../form-fields/question-logic/question-logic.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { QuestionGroupModule } from '../question-group/question-group.module';\nconst routes: Routes = [\n  { path: 'registration/createForm', component: CreateFormComponent },\n  // Other routes...\n];\n\n@NgModule({\n  exports: [\n    RouterModule,\n    CreateFormComponent,\n    FormFieldsModule,\n    FormFieldPropertiesModule,\n    QuestionLogicComponent\n  ],\n  declarations: [\n    CreateFormComponent,\n    EmitterComponent,\n    TransalationComponent,\n    WebhooksComponent,\n    QuestionLogicComponent\n  ],\n  imports: [\n    RouterModule.forChild(routes),\n    CommonModule,\n    FormFieldsModule,\n    HttpClientModule,\n    ReactiveFormsModule,\n    MatDialogModule,\n    FormFieldPropertiesModule,\n    DropdownModule,\n    FormsModule,\n    SectionCreationModule,\n    ToastrModule,\n    ChildsModule,\n    MatFormFieldModule,\n    MatSelectModule,\n    FormPreviewModule,\n    QuestionGroupModule\n  ],\n})\nexport class FormCreationModule {}\n","import { NgModule } from '@angular/core';\nimport { FormBuilderComponent } from './form-builder.component';\nimport { FormFieldsModule } from '../form-fields/form-fields.module';\nimport { FromBuilderRouting } from './form-builder-routing.module';\nimport { FormFieldPropertiesModule } from '../form-field-properties/form-field-properties.module';\nimport { ApiService } from '../services/api.service';\nimport { FormCreationModule } from '../form-creation/form-creation.module';\nimport { ToastrModule } from 'ngx-toastr';\nimport { SectionCreationModule } from '../section-creation/section-creation.module';\nimport { FormPreviewModule } from '../form-preview/form-preview.module';\n\n@NgModule({\n  declarations: [FormBuilderComponent],\n  imports: [\n    FormCreationModule, // Import RegistrationFormModule here\n    FromBuilderRouting,\n    FormFieldsModule,\n    FormFieldPropertiesModule,\n    SectionCreationModule,\n    ToastrModule.forRoot({\n      positionClass: 'toast-bottom-left',\n    }),\n    FormPreviewModule\n  ],\n  providers: [ApiService],\n  exports: [FormBuilderComponent],\n})\nexport class FormBuilderModule {}\n","/*\n * Public API Surface of form-builder\n */\n\nexport * from './lib/form-builder.service';\nexport * from './lib/form-builder.component';\nexport * from './lib/form-builder.module';\n\nexport * from './services/data.service'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i2.DataService","i4","i5","i6","i3.AuthService","i1.DataService","i3.SharedService","uuidv4","i3.ApiService","i5.SharedService","i7","i8","i9","FilePickerFieldsComponent","SliderFieldsComponent","ToggleSwitchFieldsComponent","TextAreaFieldsComponent","RichTextEditorFieldsComponent","PasswordFieldsComponent","i4.CountryService","MobileFieldsComponent","UrlFieldsComponent","MailFieldsComponent","i4.SharedService","SelectionMatrixFieldsComponent","DateTimeFieldsComponent","i3.ValidationService","i3.CountryService","CurrencyFieldsComponent","IframeFieldsComponent","i1.ApiService","i1.CountryService","TermsAndConditionFieldsComponent","i5.TypeNumberComponent","i6.DropDownComponent","i7.TextboxComponent","i8.FilePickerFieldsComponent","i9.SignatureFieldsComponent","i10.SliderFieldsComponent","i11.LocationFieldsComponent","i12.TermsAndConditionFieldsComponent","i13.ToggleSwitchFieldsComponent","i14.TextAreaFieldsComponent","i15.RichTextEditorFieldsComponent","i16.PasswordFieldsComponent","i17.MobileFieldsComponent","i18.UrlFieldsComponent","i19.MailFieldsComponent","i20.SelectionMatrixFieldsComponent","i21.DateTimeFieldsComponent","i22.AggregateFunctionComponent","i23","i24.ChildSectionComponent","i4.TypeNumberComponent","i5.DropDownComponent","i6.TextboxComponent","i7.FilePickerFieldsComponent","i8.SignatureFieldsComponent","i9.SliderFieldsComponent","i10.LocationFieldsComponent","i11.TermsAndConditionFieldsComponent","i12.ToggleSwitchFieldsComponent","i13.TextAreaFieldsComponent","i14.RichTextEditorFieldsComponent","i15.PasswordFieldsComponent","i16.MobileFieldsComponent","i17.UrlFieldsComponent","i18.MailFieldsComponent","i19.SelectionMatrixFieldsComponent","i20.DateTimeFieldsComponent","i21.AggregateFunctionComponent","i22.CurrencyFieldsComponent","i23.HiddenFieldsComponent","i25.ChildAddFormComponent","i5.MailFieldsComponent","i6.MobileFieldsComponent","i7.NumberFieldsComponent","i8.RichTextEditorFieldsComponent","i9.TextAreaFieldsComponent","i10.TextFieldsComponent","i11.UrlFieldsComponent","i13","i1.MultipleSubformComponent","i23.CurrencyFieldsComponent","i24.HiddenFieldsComponent","i25.IframeFieldsComponent","i26.ChildAddFormComponent","i27.RecursiveQuestionComponent","i28","i29","i30","i31.SectionComponent","i32.SubformDefaultRecordsComponent","i5.RecursiveQuestionComponent","MultiFieldQuestionsComponent","CheckBoxFieldsComponent","RadioButtonFieldsComponent","i2.CheckBoxFieldsComponent","i3.DateTimeFieldsComponent","i4.DropDownFieldsComponent","i5.FilePickerFieldsComponent","i6.MailFieldsComponent","i7.MobileFieldsComponent","i8.NumberFieldsComponent","i9.PasswordFieldsComponent","i10.RadioButtonFieldsComponent","i11.RichTextEditorFieldsComponent","i12.SelectionMatrixFieldsComponent","i13.SliderFieldsComponent","i14.TermsAndConditionFieldsComponent","i15.TextAreaFieldsComponent","i16.TextFieldsComponent","i17.ToggleSwitchFieldsComponent","i19.AggregateFunctionFieldsComponent","i20.CurrencyFieldsComponent","i21.IframeFieldsComponent","i2.SharedFormElementComponent","i2.RecursiveElementComponent","i2.ChildLogicComponent","i3.RecursiveElementComponent","i5.SectionFieldsComponent","i6.PreviewQuestionsComponent","i7.MultipleSubformComponent","i5.PreviewQuestionsComponent","QuestionGroupComponent","i4.PreviewQuestionsComponent","i4.SectionFieldsComponent","i6.SubFormComponent","i7.QuestionGroupComponent","i8.MultiFieldQuestionsComponent","i26.RecursiveQuestionComponent","i27","i4.RecursiveQuestionComponent","i8.TypeNumberComponent","i9.DropDownComponent","i10.TextboxComponent","i11.FilePickerFieldsComponent","i12.SignatureFieldsComponent","i14.LocationFieldsComponent","i15.ToggleSwitchFieldsComponent","i16.TextAreaFieldsComponent","i17.RichTextEditorFieldsComponent","i18.PasswordFieldsComponent","i19.MobileFieldsComponent","i20.UrlFieldsComponent","i21.MailFieldsComponent","i22.SelectionMatrixFieldsComponent","i23.DateTimeFieldsComponent","i24.AggregateFunctionComponent","i25.CurrencyFieldsComponent","i26.HiddenFieldsComponent","i27.IframeFieldsComponent","i29.TextFieldPropertiesComponent","i30.DatePickerFieldPropertiesComponent","i31.DropDownFieldsPropertiesComponent","i32.FilePickerFieldPropertiesComponent","i33.SignatureFieldPropertiesComponent","i34.SliderFieldPropertiesComponent","i35.LocationFieldPropertiesComponent","i36.TermsAndConditionFieldPropertiesComponent","i37.ToggleSwitchFieldPropertiesComponent","i38.SelectionMatrixFieldPropertiesComponent","i39.TextAreaFieldPropertiesComponent","i40.RichTextAreaFieldPropertiesComponent","i41.PasswordFieldPropertiesComponent","i42.MobileFieldPropertiesComponent","i43.UrlFieldPropertiesComponent","i44.MailFieldPropertiesComponent","i45.NumberFieldPropertiesComponent","i46.CheckBoxFieldPropertiesComponent","i47.SubFormFieldPropertiesComponent","i48.RadioButtonFieldPropertiesComponent","i49.CurrencyFieldPropertiesComponent","i50.IframeFieldPropertiesComponent","i51.SectionComponent","i52.AddFormComponent","i53.MultiFieldQuestionsComponent","i54.DragAndDropComponent","i55.QuestionGroupComponent","i56.QuestionLogicComponent","i2.AuthService","i3.CreateFormComponent","routes"],"mappings":"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"}