@piserve-tech/form-submission 1.3.77 → 1.3.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"piserve-tech-form-submission.mjs","sources":["../../../projects/form-submission/src/lib/form-submission.service.ts","../../../projects/form-submission/src/environment/environment.ts","../../../projects/form-submission/src/services/data.service.ts","../../../projects/form-submission/src/services/mapper.service.ts","../../../projects/form-submission/src/services/form.service.ts","../../../projects/form-submission/src/services/recaptcha.service.ts","../../../projects/form-submission/src/form-submission/header/header.component.ts","../../../projects/form-submission/src/form-submission/header/header.component.html","../../../projects/form-submission/src/form-fields/section-fields/section-fields.component.ts","../../../projects/form-submission/src/form-fields/section-fields/section-fields.component.html","../../../projects/form-submission/src/form-fields/check-box-fields/check-box-fields.component.ts","../../../projects/form-submission/src/form-fields/check-box-fields/check-box-fields.component.html","../../../projects/form-submission/src/form-fields/date-time-fields/date-time-fields.component.ts","../../../projects/form-submission/src/form-fields/date-time-fields/date-time-fields.component.html","../../../projects/form-submission/src/form-fields/drop-down-fields/drop-down-fields.component.ts","../../../projects/form-submission/src/form-fields/drop-down-fields/drop-down-fields.component.html","../../../projects/form-submission/src/form-fields/file-picker-fields/file-picker-fields.component.ts","../../../projects/form-submission/src/form-fields/file-picker-fields/file-picker-fields.component.html","../../../projects/form-submission/src/form-fields/location-fields/location-fields.component.ts","../../../projects/form-submission/src/form-fields/location-fields/location-fields.component.html","../../../projects/form-submission/src/form-fields/mail-fields/mail-fields.component.ts","../../../projects/form-submission/src/form-fields/mail-fields/mail-fields.component.html","../../../projects/form-submission/src/services/countryService.ts","../../../projects/form-submission/src/form-fields/mobile-fields/mobile-fields.component.ts","../../../projects/form-submission/src/form-fields/mobile-fields/mobile-fields.component.html","../../../projects/form-submission/src/form-fields/number-fields/number-fields.component.ts","../../../projects/form-submission/src/form-fields/number-fields/number-fields.component.html","../../../projects/form-submission/src/form-fields/password-fields/password-fields.component.ts","../../../projects/form-submission/src/form-fields/password-fields/password-fields.component.html","../../../projects/form-submission/src/form-fields/radio-button-fields/radio-button-fields.component.ts","../../../projects/form-submission/src/form-fields/radio-button-fields/radio-button-fields.component.html","../../../projects/form-submission/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.ts","../../../projects/form-submission/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.html","../../../projects/form-submission/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.ts","../../../projects/form-submission/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.html","../../../projects/form-submission/src/form-fields/signature-fields/signature-fields.component.ts","../../../projects/form-submission/src/form-fields/signature-fields/signature-fields.component.html","../../../projects/form-submission/src/form-fields/slider-fields/slider-fields.component.ts","../../../projects/form-submission/src/form-fields/slider-fields/slider-fields.component.html","../../../projects/form-submission/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.ts","../../../projects/form-submission/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.html","../../../projects/form-submission/src/form-fields/text-area-fields/text-area-fields.component.ts","../../../projects/form-submission/src/form-fields/text-area-fields/text-area-fields.component.html","../../../projects/form-submission/src/form-fields/text-fields/text-fields.component.ts","../../../projects/form-submission/src/form-fields/text-fields/text-fields.component.html","../../../projects/form-submission/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.ts","../../../projects/form-submission/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.html","../../../projects/form-submission/src/form-fields/url-fields/url-fields.component.ts","../../../projects/form-submission/src/form-fields/url-fields/url-fields.component.html","../../../projects/form-submission/src/question/question/question.component.ts","../../../projects/form-submission/src/question/question/question.component.html","../../../projects/form-submission/src/sub-form/submission-modal/submission-modal.component.ts","../../../projects/form-submission/src/sub-form/submission-modal/submission-modal.component.html","../../../projects/form-submission/src/question/multiple-subform/multiple-subform.component.ts","../../../projects/form-submission/src/question/multiple-subform/multiple-subform.component.html","../../../projects/form-submission/src/question/sub-form/sub-form.component.ts","../../../projects/form-submission/src/question/sub-form/sub-form.component.html","../../../projects/form-submission/src/question/question-group/question-group.component.ts","../../../projects/form-submission/src/question/question-group/question-group.component.html","../../../projects/form-submission/src/question/recursive-logic/recursive-logic.component.ts","../../../projects/form-submission/src/question/recursive-logic/recursive-logic.component.html","../../../projects/form-submission/src/question/form-elements/form-elements.component.ts","../../../projects/form-submission/src/question/form-elements/form-elements.component.html","../../../projects/form-submission/src/form-submission/navigation-tabs/navigation-tabs.component.ts","../../../projects/form-submission/src/form-submission/navigation-tabs/navigation-tabs.component.html","../../../projects/form-submission/src/form-submission/next-prev-navigation/next-prev-navigation.component.ts","../../../projects/form-submission/src/form-submission/next-prev-navigation/next-prev-navigation.component.html","../../../projects/form-submission/src/form-submission/submission-container/submission-container.component.ts","../../../projects/form-submission/src/form-submission/submission-container/submission-container.component.html","../../../projects/form-submission/src/form-submission/submit-form/submit-form.component.ts","../../../projects/form-submission/src/form-submission/submit-form/submit-form.component.html","../../../projects/form-submission/src/lib/form-submission.component.ts","../../../projects/form-submission/src/lib/form-submission.component.html","../../../projects/form-submission/src/form-fields/form-fields.module.ts","../../../projects/form-submission/src/shared/shared.module.ts","../../../projects/form-submission/src/form-submission/form-submission.module.ts","../../../projects/form-submission/src/lib/form-submission.module.ts","../../../projects/form-submission/src/public-api.ts","../../../projects/form-submission/src/piserve-tech-form-submission.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormSubmissionService {\n\n constructor() { }\n}\n","export let environment = {\n production: false,\n googleRecaptchaSiteKey: '',\n htmlDirection: 'ltr'\n };\n ","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DataService {\n constructor() {}\n\n private dataSubject = new BehaviorSubject<string>('');\n public apiUrl$: Observable<string> = this.dataSubject.asObservable();\n private headerSubject = new BehaviorSubject<any>({});\n public header$: Observable<any> = this.headerSubject.asObservable();\n\n private parentQuestionsSubject = new BehaviorSubject<any>(null);\n public parentQuestions$: Observable<any> = this.parentQuestionsSubject.asObservable();\n\n setApiUrl(data: string): void {\n this.dataSubject.next(data);\n }\n\n setHeader(data: any) {\n this.headerSubject.next(data);\n }\n\n setParentQuestions(data: any): void {\n this.parentQuestionsSubject.next(data);\n }\n}\n","import { Appearance } from '../models/appearance.model';\nimport { ElementOptionAPI } from '../models/elementOptionAPI.model';\nimport { elementOptionAPIData } from '../models/elementOptionAPIData.model';\nimport { ElementOptionDB } from '../models/elementOptionDB.model';\nimport { ElementOptionDBCriteria } from '../models/elementOptionDBCriteria.model';\nimport { FormElement } from '../models/formElement.model';\nimport { Grid } from '../models/grid.model';\nimport { Page } from '../models/page.model';\nimport { PublicForm } from '../models/publicForm.model';\nimport { Question } from '../models/question.model';\nimport { Row } from '../models/row.model';\nimport { Validation } from '../models/validation.model';\nimport { Option } from '../models/option.model';\nimport { Section } from '../models/section.model';\nimport { SubForm } from '../models/subForm.model';\nimport { FormElementType } from '../models/formElementType.model';\nimport { Logic } from '../models/logic.model';\nimport { Attachment } from '../models/attachment.model';\nimport { Submission } from '../models/submission.model';\nimport { Answer } from '../models/answer.model';\nimport { termsAndConditionType } from '../models/terms&condition.model';\nimport { FormConfiguration } from '../models/formConfiguration.model';\nimport { QuestionGroup } from '../models/questionGroup.model';\n\nexport function mapPublicFormToModel(apiPublicForm: any): PublicForm {\n return {\n name: apiPublicForm.result.name,\n formConfiguration: mapFormConfigurationToModel(\n apiPublicForm.result.moduleConfiguration\n ),\n pages: apiPublicForm.result.pages.map((apiPage: any) =>\n mapPageToModel(apiPage)\n ),\n questionAnswers:apiPublicForm.result.questionAnswers,\n parentId:apiPublicForm.result.parentId\n };\n}\n\n\nfunction mapFormConfigurationToModel(\n apiFormConfiguration: any\n): FormConfiguration {\n return {\n saveAutomatically: apiFormConfiguration.saveAutomatically,\n saveInterval: apiFormConfiguration.saveInterval,\n customizeFont: apiFormConfiguration.customizeFont,\n fontFamily: apiFormConfiguration.fontFamily,\n fontSize: apiFormConfiguration.fontSize,\n enableDataExport: apiFormConfiguration.enableDataExport,\n fileFormats: apiFormConfiguration.fileFormats,\n enableQuestionNumbering: apiFormConfiguration.enableQuestionNumbering,\n questionNumbering: apiFormConfiguration.questionNumbering,\n enableGoogleRecaptcha: apiFormConfiguration.enableGoogleRecaptcha,\n googleRecaptchaKey: apiFormConfiguration.googleRecaptchaKey,\n googleRecaptchaSecret: apiFormConfiguration.googleRecaptchaSecret,\n navigation: apiFormConfiguration.navigation,\n markAllQuestionsAsRequired: apiFormConfiguration.markAllQuestionsAsRequired,\n };\n}\n\n\n\nfunction mapPageToModel(apiPage: any): Page {\n return {\n title: apiPage.title,\n rows: apiPage.rows.map((apiRow: any) => mapRowToModel(apiRow)),\n };\n}\n\nfunction mapRowToModel(apiRow: any): Row {\n return {\n grid: apiRow.grid.map((apiGrid: any) => mapGridToModel(apiGrid)),\n };\n}\n\nfunction mapGridToModel(apiGrid: any): Grid {\n let entity: Section | Question | SubForm | QuestionGroup | undefined;\n\n switch (apiGrid.entityType) {\n case 'QUESTION':\n entity = mapQuestionToModel(apiGrid.element);\n break;\n case 'SECTION':\n entity = mapSectionToModel(apiGrid.element);\n break;\n case 'SUBFORM':\n entity = mapSubFormToModel(apiGrid.element);\n break;\n case 'QUESTION_GROUP':\n entity = mapQuestionGroupToModel(apiGrid.element);\n break;\n default:\n throw new Error(`Unknown entity type: ${apiGrid.entityType}`);\n }\n\n return {\n entityType: apiGrid.entityType,\n element: entity,\n };\n}\n\nexport function mapSectionToModel(apiSection: any): Section {\n return {\n id: apiSection.id,\n title: apiSection.title,\n description: apiSection.description,\n };\n}\n\nexport function mapQuestionToModel(apiQuestion: any): Question {\n return {\n count: apiQuestion.count,\n id: apiQuestion.id,\n questionNumber: apiQuestion.questionNumber,\n required: apiQuestion.required,\n hint: apiQuestion.hint,\n question: apiQuestion.question,\n answer: apiQuestion?.answer,\n validation: true,\n formElement: mapFormElementToModel(apiQuestion.formElement),\n childLogics: apiQuestion?.childLogics?.map((logic: any) =>\n mapLogicToModel(logic)\n ),\n answerId: apiQuestion?.answerId,\n attachments: apiQuestion?.attachments?.map((attachment: any) => mapAttachmentToModel(attachment)) || [],\n deleteFiles: [],\n };\n}\n\nfunction mapAttachmentToModel(apiAttachment: any): Attachment {\n return {\n fileId: apiAttachment.fileId,\n fileName: apiAttachment.fileName,\n fileUrl: apiAttachment.fileUrl,\n };\n}\n\nfunction mapFormElementToModel(apiFormElement: any): FormElement {\n return {\n elementType: apiFormElement.elementType,\n appearance: mapAppearanceToModel(apiFormElement.appearance),\n validation: mapValidationToModel(apiFormElement.validation),\n option: mapOptionToModel(apiFormElement?.option),\n selectionMatrixLabel: apiFormElement.selectionMatrixLabel,\n selectionMatrixColumn: apiFormElement.selectionMatrixColumn,\n termsAndConditionType: maptermsAndCondition(apiFormElement)\n };\n}\nfunction maptermsAndCondition(Element: any): termsAndConditionType {\n if(Element.termsAndCondition != undefined){\n let data = Element.termsAndCondition\n return {\n termsAndConditionType: data.termsAndConditionType,\n fileUrl: data.fileUrl,\n fileName: data.fileName,\n };\n }\n else{\n return {\n termsAndConditionType: '',\n fileUrl: '',\n fileName: '',\n }\n }\n\n}\n\nfunction mapLogicToModel(apiLogic: any): Logic {\n return {\n id: apiLogic.id,\n inputValue: apiLogic.inputValue,\n condition: apiLogic.condition,\n showLogic: false,\n rows: apiLogic?.rows?.map((element: any) =>\n mapRowToModel(element)\n ),\n };\n}\n\nexport function mapSubFormToModel(apiSubForm: any): SubForm {\n return {\n id: apiSubForm.id,\n count: apiSubForm.count,\n title: apiSubForm.title,\n description: apiSubForm.description,\n subFormStructure: apiSubForm.subFormStructure,\n rows: apiSubForm.rows.map((element: any) => mapRowToModel(element)),\n submissions: apiSubForm?.submissions?.map((submission: any) => mapSubmissionToModel(submission)),\n };\n}\n\nexport function mapQuestionGroupToModel(apiQuestionGroup: any): QuestionGroup {\n return {\n id: apiQuestionGroup.id,\n count: apiQuestionGroup.count,\n title: apiQuestionGroup.title,\n description: apiQuestionGroup.description,\n rows: apiQuestionGroup.rows.map((element: any) => mapRowToModel(element)),\n submissions: apiQuestionGroup?.submissions?.map((submission: any) => mapSubmissionToModel(submission)),\n };\n}\n\nfunction mapSubmissionToModel(apiSubmission: any): Submission {\n return {\n submissionId: apiSubmission?.submissionId,\n answers: apiSubmission?.answers?.map((answer: any) => mapAnswerToModel(answer)),\n };\n}\n\nfunction mapAnswerToModel(apiAnswer: any): Answer {\n return {\n questionId: apiAnswer.questionId,\n answer: apiAnswer?.answer,\n answerId: apiAnswer?.answerId,\n attachments: apiAnswer?.attachments?.map((attachment: any) => mapAttachmentToModel(attachment)),\n };\n}\n\nexport function mapFormElementTypeToModel(\n apiFormElementType: any\n): FormElementType<any> {\n return {\n entityType: apiFormElementType?.entityType,\n element: apiFormElementType?.element,\n };\n}\n\nfunction mapAppearanceToModel(apiAppearance: any): Appearance {\n return {\n placeholder: apiAppearance?.placeholder,\n fontSize: apiAppearance?.fontSize,\n textAlign: apiAppearance?.textAlign,\n font: apiAppearance?.font,\n underline: apiAppearance?.underline,\n bold: apiAppearance?.bold,\n italics: apiAppearance?.italics,\n defaultValue: apiAppearance?.defaultValue,\n numberOfRows: apiAppearance?.numberOfRows,\n singleSelection: apiAppearance?.singleSelection,\n displayCountryCode: apiAppearance?.displayCountryCode,\n displayFlag: apiAppearance?.displayFlag,\n displayCode: apiAppearance?.displayCode,\n showCountryName: apiAppearance?.showCountryName,\n beautifyNumbers: apiAppearance?.beautifyNumbers,\n upAndDownButton: apiAppearance?.upAndDownButton,\n allowNegativeValues: apiAppearance?.allowNegativeValues,\n showPreviewButton: apiAppearance?.showPreviewButton,\n confirmPassword: apiAppearance?.confirmPassword,\n viewButton: apiAppearance?.viewButton,\n displayStrong: apiAppearance?.displayStrong,\n dateType: apiAppearance?.dateType,\n format: apiAppearance?.format,\n setCurrentPosition: apiAppearance?.setCurrentPosition,\n defaultZoomLevel: apiAppearance?.defaultZoomLevel,\n allowFullScreen: apiAppearance?.allowFullScreen,\n latitude: apiAppearance?.latitude,\n longitude: apiAppearance?.longitude,\n showAcceptButton: apiAppearance?.showAcceptButton,\n labelOnValue: apiAppearance?.labelOnValue,\n labelOffValue: apiAppearance?.labelOffValue,\n labelOnColor: apiAppearance?.labelOnColor,\n labelOffColor: apiAppearance?.labelOffColor,\n minValue: apiAppearance?.minValue,\n maxValue: apiAppearance?.maxValue,\n stepValue: apiAppearance?.stepValue,\n changeSliderColor: apiAppearance?.changeSliderColor,\n sliderColor: apiAppearance?.sliderColor,\n canvasOption: apiAppearance?.canvasOption,\n selectionType: apiAppearance?.selectionType,\n dragAndDrop: apiAppearance?.dragAndDrop,\n previewUploadedFiles: apiAppearance?.previewUploadedFiles,\n multiFileUploads: apiAppearance?.multiFileUploads,\n selectionColorRequired: apiAppearance?.selectionColorRequired,\n selectionColor: apiAppearance?.selectionColor,\n color: apiAppearance?.color,\n avatarPicker:apiAppearance?.avatarPicker,\n timeFormat:apiAppearance?.timeFormat\n };\n}\n\nfunction mapValidationToModel(apiValidation: any): Validation {\n return {\n regexValidation: apiValidation?.regexValidation,\n regex: apiValidation?.regex,\n validationMessage: apiValidation?.validationMessage,\n limitedCharacters: apiValidation?.limitedCharacters,\n count: apiValidation?.count,\n minimumSelection: apiValidation?.minimumSelection,\n maximumSelection: apiValidation?.maximumSelection,\n countryWiseValidation: apiValidation?.countryWiseValidation,\n restrictCountry: apiValidation?.restrictCountry,\n allowedCountries: apiValidation?.allowedCountries,\n blockedCountries: apiValidation?.blockedCountries,\n regularExpression: apiValidation?.regularExpression,\n expectedDomains: apiValidation?.expectedDomains,\n min: apiValidation?.min,\n max: apiValidation?.max,\n minLength: apiValidation?.minLength,\n maxLength: apiValidation?.maxLength,\n requireLowercaseLetters: apiValidation?.requireLowercaseLetters,\n requireUppercaseLetters: apiValidation?.requireUppercaseLetters,\n requireNumbers: apiValidation?.requireNumbers,\n requireSpecialCharacters: apiValidation?.requireSpecialCharacters,\n allowedSpecialCharacters: apiValidation?.allowedSpecialCharacters,\n minDateOption: apiValidation?.minDateOption,\n minDate: apiValidation?.minDate,\n maxDateOption: apiValidation?.maxDateOption,\n maxDate: apiValidation?.maxDate,\n regionBoundary: apiValidation?.regionBoundary,\n region: apiValidation?.region,\n preventFromProceedingWithoutAgree:\n apiValidation?.preventFromProceedingWithoutAgree,\n buttonColour: apiValidation?.buttonColour,\n maxFileSize: apiValidation?.maxFileSize,\n minFileSize: apiValidation?.minFileSize,\n minSelection: apiValidation?.minSelection,\n maxSelection: apiValidation?.maxSelection,\n fileTypes: apiValidation?.fileTypes,\n fileSize: apiValidation?.fileSize,\n fileSizeUnit: apiValidation?.fileSizeUnit,\n totalFileSize: apiValidation?.totalFileSize,\n minSelectionRequired: apiValidation?.minSelectionRequired,\n minSelectionValue: apiValidation?.minSelectionValue,\n validationType: apiValidation?.validationType,\n validation: apiValidation?.validation,\n minTime: apiValidation?.minTime,\n maxTime:apiValidation?.maxTime,\n minTimeOption:apiValidation?.minTimeOption,\n maxTimeOption: apiValidation?.maxTimeOption,\n };\n}\n\nfunction mapElementOptionDBToModel(apiElementOptionDB: any): ElementOptionDB {\n return {\n tableName: apiElementOptionDB.tableName,\n valueField: apiElementOptionDB.valueField,\n labelField: apiElementOptionDB.labelField,\n criteria: apiElementOptionDB?.criteria.map((apiCriteria: any) =>\n mapElementOptionDBCriteriaToModel(apiCriteria)\n ),\n };\n}\n\nfunction mapElementOptionDBCriteriaToModel(\n apiElementOptionDBCriteria: any\n): ElementOptionDBCriteria {\n return {\n field: apiElementOptionDBCriteria?.field,\n condition: apiElementOptionDBCriteria?.condition,\n valueSource: apiElementOptionDBCriteria?.valueSource,\n inputValue: apiElementOptionDBCriteria?.inputValue,\n logicalOperator: apiElementOptionDBCriteria?.logicalOperator,\n };\n}\n\nfunction mapElementOptionAPIToModel(\n apiElementOptionAPI: any\n): ElementOptionAPI {\n return {\n external: apiElementOptionAPI?.external,\n url: apiElementOptionAPI?.url,\n valueField: apiElementOptionAPI?.valueField,\n labelField: apiElementOptionAPI?.labelField,\n pathToValue: apiElementOptionAPI?.pathToValue,\n headers: apiElementOptionAPI?.headers?.map(mapElementOptionAPIDataToModel),\n params: apiElementOptionAPI?.params?.map(mapElementOptionAPIDataToModel),\n pathVariables: apiElementOptionAPI?.pathVariables?.map(\n mapElementOptionAPIDataToModel\n ),\n };\n}\n\nfunction mapElementOptionAPIDataToModel(\n apiElementOptionAPIData: any\n): elementOptionAPIData {\n return {\n keyName: apiElementOptionAPIData?.keyName,\n valueSource: apiElementOptionAPIData?.valueSource,\n inputValue: apiElementOptionAPIData?.inputValue,\n };\n}\n\nfunction mapOptionToModel(apiOption: any): Option {\n return {\n optionType: apiOption?.optionType,\n lookupTable: apiOption?.lookupTable,\n customOptions: apiOption?.customOptions?.map((option: { value: any }) => ({\n value: option.value,\n })),\n database: apiOption?.database\n ? mapElementOptionDBToModel(apiOption?.database)\n : undefined,\n api: apiOption?.api ? mapElementOptionAPIToModel(apiOption.api) : undefined,\n };\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { DataService } from './data.service';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormService {\n private apiUrl: string = '';\n header: any = {};\n parentQuestions: any;\n\n constructor(private http: HttpClient, private dataService: DataService) {\n this.dataService.apiUrl$.subscribe((data) => {\n this.apiUrl = data;\n });\n\n this.dataService.header$.subscribe((data) => {\n this.header = data;\n });\n\n this.dataService.parentQuestions$.subscribe((questions) => {\n if (questions) {\n this.parentQuestions = questions;\n }\n });\n }\n\n getQuestions(moduleName: string, pageNumber: number = 1, rowSet: number = 0, progressiveLoading: boolean = false) {\n const headers = new HttpHeaders({\n 'Accept-Language': this.header.acceptedLanguage,\n });\n\n const params = new HttpParams()\n .set('pageNumber', pageNumber.toString())\n .set('rowSet', rowSet.toString())\n .set('progressiveLoading', true);\n\n return this.http.get(`${this.apiUrl}/api/public/forms/${moduleName}`, {\n headers,\n params\n });\n}\n\n fetchDataFromDatabase(database: any) {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n return this.http.post<any>(`${this.apiUrl}/api/load-from-db`, database, {\n headers,\n });\n }\n\n fetchDataFromLookup(tableName: string) {\n return this.http.get<any>(`${this.apiUrl}/api/public/lookup/${tableName}`);\n }\n\n fetchDataFromExternalAPI(apiConfig: any): Observable<any> {\n // Prepare headers dynamically\n let headers = new HttpHeaders();\n if (apiConfig.headers) {\n apiConfig.headers.forEach((header: any) => {\n if (header.keyName && header.inputValue) {\n \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 // Prepare params dynamically\n let params = new HttpParams();\n if (apiConfig.params) {\n apiConfig.params.forEach((param: any) => {\n if (param.keyName && param.inputValue) {\n params = params.set(param.keyName, param.inputValue);\n }\n });\n }\n\n // Construct URL with 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 // Make the GET request with headers and params\n return this.http.get<any>(url, { headers, params });\n //return this.http.get<any>(apiConfig.url);\n }\n\n submitForm(moduleName: string, formData: FormData, reCAPTCHAToken?:string): Observable<any> {\n const headers = new HttpHeaders({\n 'Auth-user': this.header.authUser,\n });\n const url = `${this.apiUrl}/api/public/forms/${moduleName}/submissions`;\n if (reCAPTCHAToken) {\n formData.append('recaptchaToken', reCAPTCHAToken);\n }\n return this.http.post(url, formData, {\n headers\n });\n }\n\n getSubmittedForm(moduleName: string, submissionId: string, pageNumber: number = 1, rowSet: number = 0) {\n let params = new HttpParams()\n .set('pageNumber', pageNumber.toString())\n .set('rowSet', rowSet.toString());\n \n if (this.parentQuestions) {\n this.parentQuestions.forEach((q: any) => {\n params = params.append('parentQuestions', q);\n });\n }\n \n return this.http.get<any>(`${this.apiUrl}/api/forms/${moduleName}/submissions/${submissionId}`, { params });\n }\n\n updateForm(moduleName: string, submissionId: string, formData: FormData, reCAPTCHAToken?:string): Observable<any> {\n const headers = new HttpHeaders({\n 'Auth-user': this.header.authUser,\n });\n const url = `${this.apiUrl}/api/public/forms/${moduleName}/submissions/${submissionId}`;\n if (reCAPTCHAToken) {\n formData.append('recaptchaToken', reCAPTCHAToken);\n }\n return this.http.put(url, formData, {\n headers\n });\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.apiUrl + `/api/cdn/preview${fullUrl}`, options);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map, Observable, of } from 'rxjs';\nimport { DataService } from './data.service';\nimport { ToastrService } from 'ngx-toastr';\n\ndeclare const grecaptcha: any;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RecaptchaService {\n private apiUrl: string = '';\n private siteKeySessionKey = 'recaptchaSiteKey';\n\n\n constructor(private http: HttpClient, private dataService: DataService, private toast: ToastrService,) {\n this.dataService.apiUrl$.subscribe((data) => {\n this.apiUrl = data;\n });\n }\n\n // Method to fetch the site key dynamically from the API\n fetchSiteKeyFromApi(): Observable<string> {\n // Check if the siteKey is already stored in localStorage\n // const storedSiteKey = sessionStorage.getItem(this.siteKeySessionKey);\n\n // if (storedSiteKey) {\n // // Return the stored siteKey as an Observable\n // return of(storedSiteKey);\n // }\n\n // If not stored, fetch it from the API\n return this.http.get<{ message: string }>(`${this.apiUrl}/api/application-settings/recaptcha/siteKey`).pipe(\n map((response: { message: string }) => {\n const siteKey = response.message; \n // Store the fetched siteKey in localStorage\n // sessionStorage.setItem(this.siteKeySessionKey, siteKey);\n return siteKey;\n })\n );\n }\n\n // clearStoredSiteKey(): void {\n // // Clear the stored siteKey if needed\n // sessionStorage.removeItem(this.siteKeySessionKey);\n // }\n\n // Method to load the reCAPTCHA script dynamically with the site key\n loadRecaptcha(siteKey: string): Promise<void> {\n return new Promise((resolve, reject) => {\n if (typeof grecaptcha !== 'undefined') {\n resolve();\n return;\n }\n\n const script = document.createElement('script');\n script.src = `https://www.google.com/recaptcha/api.js?render=${siteKey}`;\n script.onload = () => {\n this.applyRecaptchaStyles(); // Apply styles after script loads\n resolve();\n };\n script.onerror = (error) => reject('Failed to load reCAPTCHA script');\n document.head.appendChild(script);\n });\n }\n\n applyRecaptchaStyles(): void {\n const interval = setInterval(() => {\n const badge = document.querySelector('.grecaptcha-badge');\n if (badge) {\n badge.setAttribute(\n 'style',\n `\n width: 256px !important;\n height: 60px !important;\n display: block !important;\n transition: right 0.3s !important;\n position: fixed !important;\n z-index: 999999999 !important;\n bottom: 14px !important;\n right: -186px !important;\n box-shadow: gray 0px 0px 5px !important;\n border-radius: 2px !important;\n overflow: hidden !important;\n `\n );\n clearInterval(interval); // Stop checking once the badge is found\n }\n }, 100); // Check every 100ms\n }\n \n\n // Method to execute reCAPTCHA and return the token\n executeRecaptcha(siteKey: string, action: string): Promise<string> {\n return new Promise((resolve, reject) => {\n grecaptcha.ready(() => {\n grecaptcha.execute(siteKey, { action: action })\n .then((token: string) => {\n resolve(token);\n })\n .catch((error: any) => {\n reject('reCAPTCHA execution failed');\n });\n });\n });\n }\n\n // This method loads the reCAPTCHA script and gets the token after fetching site key\n getRecaptchaToken(): Promise<string> {\n return this.fetchSiteKeyFromApi()\n .toPromise() // Convert the observable to a promise\n .then(siteKey => {\n // Check if siteKey is valid (not undefined)\n if (!siteKey) {\n this.toast.error('Site key is undefined or invalid');\n throw new Error('Site key is undefined or invalid');\n }\n \n // Now that we know siteKey is a valid string, proceed with loading and executing reCAPTCHA\n return this.loadRecaptcha(siteKey)\n .then(() => this.executeRecaptcha(siteKey, 'submission'));\n })\n .catch((error) => {\n this.toast.error(error.error.message);\n throw error; // Rethrow the error after logging it\n });\n }\n\n removeRecaptchaScript(): void {\n // Find and remove the reCAPTCHA script element\n const script = document.querySelector('script[src*=\"https://www.google.com/recaptcha/api.js\"]');\n if (script) {\n script.remove();\n } else {\n console.warn('reCAPTCHA script not found');\n }\n \n // Remove the reCAPTCHA badge from the DOM\n const badge = document.querySelector('.grecaptcha-badge');\n if (badge) {\n badge.remove();\n } else {\n console.warn('reCAPTCHA badge not found');\n }\n \n // Optionally, clean up the global `grecaptcha` object\n if (typeof grecaptcha !== 'undefined') {\n delete (window as any).grecaptcha;\n }\n }\n \n \n \n}","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent {\n @Input() name: string = '';\n}\n","<div class=\"head container\">\n <div class=\"registration-header\">\n <h2>{{ name }}</h2>\n </div>\n <div class=\"line\"></div>\n</div>\n","import { Component, Input, OnChanges } from '@angular/core';\n\n@Component({\n selector: 'lib-section-fields',\n templateUrl: './section-fields.component.html',\n styleUrls: ['./section-fields.component.scss']\n})\nexport class SectionFieldsComponent implements OnChanges {\n @Input() section: any = {};\n decodedDescription: string = '';\n\n // Method to decode HTML entities\n decodeHtml(html: string): string {\n const textArea = document.createElement('textarea');\n textArea.innerHTML = html; \n return textArea.value;\n }\n\n // Lifecycle hook to handle updates to the input\n ngOnChanges(): void {\n if (this.section.description) {\n this.decodedDescription = this.decodeHtml(this.section.description);\n }\n }\n}\n","<div class=\"mb-4 px-3\">\n <p class=\"sectionTitle\">{{ section.title }}</p>\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { FormService } from '../../services/form.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 minimumSelection?: number;\n maximumSelection?: number;\n optionType: string = '';\n lookupTable: any = {};\n customOptions: any[] = [];\n database: any = {};\n api: any = {};\n apiOptions: any[] = []; \n selectedOptions: any[] = [];\n validationFailed: boolean = false;\n validationMessage: string = '';\n\n constructor(private formService: FormService) { }\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.selectionType = this.question.formElement.appearance.selectionType;\n this.minimumSelection =\n this.question.formElement.validation.minimumSelection;\n this.maximumSelection =\n this.question.formElement.validation.maximumSelection;\n this.optionType = this.question.formElement.option.optionType;\n switch (this.optionType) {\n case 'OPTION':\n this.customOptions = this.question.formElement.option.customOptions;\n if (this.question.answer) {\n this.initializeCustomOption();\n }\n break;\n case 'LOOKUP':\n this.lookupTable = this.question.formElement.option.lookupTable;\n this.fetchDataFromLookup();\n break;\n case 'DATABASE':\n this.database = this.question.formElement.option.database;\n this.fetchDataFromDatabase();\n break;\n case 'API':\n this.api = this.question.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 if(this.question.childLogics && this.question.answer){\n this.updateChildLogics(this.question)\n }\n }\n\n initializeCustomOption() {\n this.customOptions?.forEach((option: any) => {\n if (this.question?.answer?.find((a: any) => a.toString() === option.value.toString())) {\n this.selectedOptions.push(option);\n }\n })\n }\n\n onCheckboxChange(option: any, event: any) {\n if (this.selectionType === 'SINGLE') {\n if (event.target.checked) {\n this.selectedOptions = [option];\n this.question.answer = [option.value];\n } else {\n this.selectedOptions = [];\n this.question.answer = [];\n }\n this.isMinimumSelectionValid();\n } else if (this.selectionType === 'MULTIPLE') {\n if (event.target.checked) {\n if (!this.selectedOptions.includes(option)) {\n this.selectedOptions.push(option);\n }\n } else {\n this.selectedOptions = this.selectedOptions.filter(\n (item) => item !== option\n );\n }\n this.question.answer = this.selectedOptions.map((item) => item.value);\n this.isMinimumSelectionValid();\n }\n\n // Check if the number of selected options exceeds the maximum allowed\n if (\n this.maximumSelection !== undefined &&\n this.selectedOptions.length > this.maximumSelection\n ) {\n // If exceeded, uncheck the last selected option\n event.target.checked = false;\n this.selectedOptions = this.selectedOptions.filter(\n (item) => item !== option\n );\n this.question.answer = this.selectedOptions.map((item) => item.value);\n this.isMinimumSelectionValid();\n }\n\n if(this.question.childLogics){\n this.updateChildLogics(this.question);\n }\n }\n\n updateChildLogics(question: any) {\n if (question.childLogics && Array.isArray(question.childLogics)) {\n question.childLogics.forEach((childLogic: any) => {\n if(this.selectionType=='SINGLE'){\n if(this.selectedOptions.length==0){\n childLogic.showLogic=false;\n }\n else{\n childLogic.showLogic = this.evaluateCondition(this.selectedOptions[0]?.value, childLogic.condition, childLogic.inputValue);\n }\n }\n else if (this.selectionType === 'MULTIPLE') {\n if(this.selectedOptions.length==0){\n childLogic.show=false;\n }\n else{\n const selectedValues = this.selectedOptions.map((item: any) => item.value);\n childLogic.showLogic = this.evaluateMultipleCondition(selectedValues, childLogic.condition, childLogic.inputValue);\n }\n }\n });\n }\n }\n \n evaluateCondition(answer: any[], condition: string, inputValue: any): boolean {\n const stringInputValue = Array.isArray(inputValue) ? inputValue.map(val => val.toString()) : inputValue;\n\n switch (condition) { \n case \"!=\":\n return answer !=stringInputValue;\n case \"=\":\n return answer ==stringInputValue;\n case \"IN\":\n return stringInputValue.includes(answer);\n case \"NOT IN\":\n return !(stringInputValue.includes(answer))\n default:\n return false;\n }\n }\n\n evaluateMultipleCondition(answers: any[], condition: string, inputValue: any): boolean {\n const stringInputValue = Array.isArray(inputValue) ? inputValue.map(val => val.toString()) : inputValue.toString();\n switch (condition) {\n case \"!=\":\n return answers.every(answer => answer != stringInputValue);\n case \"=\":\n return answers.some(answer => answer == stringInputValue);\n case \"IN\":\n return answers.some(answer => stringInputValue.includes(answer));\n case \"NOT IN\":\n return answers.every(answer => !stringInputValue.includes(answer));\n default:\n return false;\n }\n }\n\n fetchDataFromLookup() {\n this.formService.fetchDataFromLookup(this.lookupTable).subscribe(\n (response) => {\n this.customOptions = response.result.values.map(\n (item: { value: string; label: string }) => ({\n value: item.value,\n label: item.label,\n })\n );\n if (this.question.answer) {\n this.initializeCustomOption();\n }\n },\n (error) => {\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) => {\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 if (this.question.answer) {\n this.initializeCustomOption();\n }\n } else {\n console.error('Error fetching data from database:', response.message);\n }\n },\n (error) => {\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) => {\n let data;\n if(apiConfig.pathToValue) {\n data = this.extractDataByPath(response, apiConfig.pathToValue);\n } else {\n data = response;\n }\n \n this.customOptions = data.map((item: any) => ({\n value: item[apiConfig.valueField],\n label: item[apiConfig.labelField],\n }));\n if (this.question.answer) {\n \n this.initializeCustomOption();\n \n }\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 isMinimumSelectionValid() {\n this.validationFailed = false;\n \n if (this.selectedOptions.length == 0 && this.required) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n } else if (this.minimumSelection !== undefined) {\n if(this.selectionType=='SINGLE'){\n if (this.selectedOptions.length < this.minimumSelection && this.required) {\n this.validationFailed = true;\n this.validationMessage = `Minimum ${this.minimumSelection} selection(s) required.`;\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n else{\n if (this.selectedOptions.length < this.minimumSelection) {\n this.validationFailed = true;\n this.validationMessage = `Minimum ${this.minimumSelection} selection(s) required.`;\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n } else {\n this.question.validation = true;\n }\n }\n\n getOptions() {\n if (this.optionType === 'OPTION') {\n return this.customOptions;\n } else if (this.optionType === 'LOOKUP') {\n return Object.values(this.lookupTable);\n } else if (this.optionType === 'API') {\n return this.apiOptions.map((option) => option.valueField);\n } else {\n return [];\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=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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=\"form-check\" *ngFor=\"let option of customOptions\">\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [id]=\"option.value + question?.id\"\n [name]=\"option.value + 'Checkbox'\"\n [value]=\"option.value\"\n (change)=\"onCheckboxChange(option, $event)\"\n [disabled]=\"isOptionDisabled(option)\"\n [checked]=\"selectedOptions.includes(option)\"\n />\n <label\n class=\"formCheckLabel ms-2 me-4 mb-2\"\n [for]=\"option.value + question?.id\"\n *ngIf=\"optionType == 'OPTION'\"\n >{{ option.value }}</label\n >\n <label\n class=\"formCheckLabel ms-2 me-4\"\n [for]=\"option.value + question?.id\"\n *ngIf=\"optionType == 'LOOKUP' || 'DATABASE' || 'API'\"\n >{{ option.label }}</label\n >\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { DatePipe } from '@angular/common';\nimport { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport {\n BsDatepickerConfig,\n BsDatepickerDirective,\n} from 'ngx-bootstrap/datepicker';\nimport { NgxMaterialTimepickerComponent } from 'ngx-material-timepicker';\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 encapsulation: ViewEncapsulation.None\n})\nexport class DateTimeFieldsComponent {\n bsConfig: Partial<BsDatepickerConfig> = {\n containerClass: 'theme-custom',\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 Dateformat: string = '';\n timeFormat: string = '';\n minDateOption: string = '';\n minDate: Date | undefined;\n maxDateOption: string = '';\n maxDate: Date | undefined;\n todayDate: Date = new Date();\n selectedDate: Date | null = null;\n selectedTime: string = '';\n selectedDateRange: string = '';\n selectedDateAndTime: Date | null = null;\n validationFailed!: boolean;\n timeValidationFailed!: boolean;\n validationMessage: string = '';\n maxTimeOption: string = '';\n minTimeOption: string = '';\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 }\n\n valueAssigned() {\n\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.dateType = this.question.formElement.appearance.dateType;\n this.minDateOption = this.question.formElement.validation.minDateOption;\n this.Dateformat = this.question.formElement.appearance.format.replace(/DD/g, 'dd');\n\n\n this.minDate = this.getMinDate();\n\n\n this.maxDateOption = this.question.formElement.validation.maxDateOption;\n this.maxDate = this.getMaxDate();\n this.setDateTimeFormat();\n if (this.question?.answer && (this.question?.answer).length > 0)\n this.selectedDate = this.question?.answer;\n this.selectedTime = this.question.answer;\n if (this.question?.answer && (this.question?.answer).length > 0)\n this.selectedDateAndTime = new Date(this.question.answer);\n this.selectedDateRange = this.question.answer;\n this.minTimeOption = this.question.formElement.validation.minTimeOption;\n this.maxTimeOption = this.question.formElement.validation.maxTimeOption;\n if (this.dateType !== 'DATE_AND_TIME') {\n this.minTime = this.getMinTime().toString();\n this.maxTime = this.getMaxTime().toString();\n }\n if (this.dateType === 'DATE_AND_TIME' && this.question?.answer) {\n const dateTimeArray = this.question.answer\n ? this.question.answer.split(',')\n : []; // Fallback to an empty array if `this.question.answer` is undefined\n\n if (dateTimeArray.length === 2) {\n const fetchedDate = dateTimeArray[0].trim();\n const fetchedTime = dateTimeArray[1].trim();\n this.selectedDate = fetchedDate;\n this.selectedTime = fetchedTime;\n }\n\n const formattedDate = this.datePipe.transform(this.selectedDateAndTime, this.Dateformat);\n const formatteminDate = this.datePipe.transform(this.minDate, this.Dateformat);\n const formattemaxDate = this.datePipe.transform(this.maxDate, this.Dateformat);\n\n if (formattedDate === formatteminDate) {\n this.minTime = this.getMinTime().toString();\n if (this.timeFormat === '12') {\n this.maxTime = '12:00 pm';\n } else {\n this.maxTime = '23:00';\n }\n }\n if (formattedDate === formattemaxDate) {\n this.maxTime = this.getMaxTime().toString();\n if (this.timeFormat === '12') {\n this.minTime = '12:00 am';\n } else {\n this.minTime = '00:00';\n }\n }\n if (formattedDate !== formatteminDate && formattedDate !== formattemaxDate) {\n if (this.timeFormat === '12') {\n this.minTime = '12:00 am';\n this.maxTime = '12:00 pm';\n } else {\n this.minTime = '00:00';\n this.maxTime = '23:00';\n }\n }\n\n }\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\n }\n\n setDateTimeFormat() {\n switch (this.dateType) {\n case 'DATE_ONLY':\n this.format = this.question.formElement.appearance.format;\n break;\n case 'TIME_ONLY':\n this.timeFormat = this.question.formElement.appearance.timeFormat;\n break;\n case 'DATE_AND_TIME':\n this.format = this.question.formElement.appearance.format;\n this.timeFormat = this.question.formElement.appearance.timeFormat;\n break;\n case 'DATE_RANGE':\n this.format = this.question.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.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.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.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\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 }\n else if (this.maxTimeOption === 'CUSTOM') {\n const customTime = this.question.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 closeDatepicker() {\n if (this.dateAndTimePicker) {\n this.dateAndTimePicker.hide(); // Close the datepicker\n }\n }\n\n\n\n\n validateField() {\n if (this.dateType === 'DATE_ONLY') {\n if (this.selectedDate) {\n this.question.answer = this.formatDate(this.selectedDate.toString());\n } else {\n this.question.answer = '';\n }\n\n this.validateDateOnly()\n }\n else if (this.dateType === 'TIME_ONLY') {\n this.question.answer = String(this.selectedTime);\n this.validateTimeOnly()\n }\n else if (this.dateType === 'DATE_AND_TIME') {\n if (this.selectedDateAndTime) {\n this.question.answer = this.formatDate(this.selectedDateAndTime.toString());\n } else {\n this.question.answer = '';\n }\n\n this.validateDateAndTime()\n\n }\n else {\n this.question.answer = this.formatDate(this.selectedDateRange);\n this.validateDateRange()\n }\n }\n\n formatDate(date: string | Date, type: string = 'dateTime'): string {\n switch (this.dateType) {\n case 'DATE_ONLY':\n return this.datePipe.transform(this.selectedDate, this.Dateformat) || '';\n case 'DATE_AND_TIME':\n const formattedDate = this.datePipe.transform(this.selectedDateAndTime, this.Dateformat);\n const formatteminDate = this.datePipe.transform(this.minDate, this.Dateformat);\n const formattemaxDate = this.datePipe.transform(this.maxDate, this.Dateformat);\n if (formattedDate === formatteminDate) {\n this.minTime = this.getMinTime().toString();\n if (this.timeFormat === '12') {\n this.maxTime = '12:00 pm';\n } else {\n this.maxTime = '23:00';\n }\n }\n if (formattedDate === formattemaxDate) {\n this.maxTime = this.getMaxTime().toString();\n if (this.timeFormat === '12') {\n this.minTime = '12:00 am';\n } else {\n this.minTime = '00:00';\n }\n }\n if (formattedDate !== formatteminDate && formattedDate !== formattemaxDate) {\n if (this.timeFormat === '12') {\n this.minTime = '12:00 am';\n this.maxTime = '12:00 pm';\n } else {\n this.minTime = '00:00';\n this.maxTime = '23:00';\n }\n }\n const formattedTime = this.selectedTime || ''; // If selectedTime is null or undefined, use empty string\n if (formattedDate && formattedTime) {\n return `${formattedDate},${formattedTime}`;\n }\n return '';\n case 'DATE_RANGE':\n\n const dates = date as unknown as Date[];\n\n // Ensure dates is defined and is an array\n if (Array.isArray(dates) && dates.length === 2) {\n const start = this.datePipe.transform(dates[0], this.Dateformat);\n const end = this.datePipe.transform(dates[1], this.Dateformat);\n return `${start} - ${end}`;\n }\n\n return '';\n default:\n return this.datePipe.transform(date, this.Dateformat) || '';\n }\n }\n\n validateDateOnly() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.selectedDate) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n validateTimeOnly() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.selectedTime) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';;\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n validateDateRange() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.selectedDateRange) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n validateDateAndTime() {\n this.validationFailed = false;\n this.timeValidationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.selectedDateAndTime) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n }\n else if (this.required && !this.selectedTime) {\n this.timeValidationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n\n convertToISODate(\n dateInput: [number, number, number] | string | null | undefined\n ): Date | null {\n\n\n if (!dateInput) {\n\n\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\n return date;\n }\n\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 #datepickerYMD=\"bsDatepicker\"\n bsDatepicker\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\n [(ngModel)]=\"selectedDate\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n placeholder=\"Select date\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDatePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\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 readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime3\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime3.open()\"\n style=\"cursor: pointer;\"\n></i>\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\n</div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\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 #dateAndTimePicker=\"bsDatepicker\"\n type=\"text\"\n class=\"form-control height\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n placeholder=\"Select date\"\n bsDatepicker\n [class.invalid]=\"validationFailed\"\n [(ngModel)]=\"selectedDateAndTime\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateAndTimePicker()\"\n ></i>\n </div>\n <div class=\"input-container\" *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\">\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 [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n (focus)=\"closeDatepicker()\"\n [class.invalid]=\"timeValidationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime4.open()\"\n style=\"cursor: pointer;\"\n ></i>\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\n </div>\n \n <div *ngIf=\"validationFailed || timeValidationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\n <!-- Date range picker -->\n <div class=\"input-container\">\n <input\n type=\"text\"\n class=\"form-control height\"\n #daterangepicker=\"bsDaterangepicker\"\n bsDaterangepicker\n placeholder=\"Select date\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n rangeInputFormat: format,\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n [(ngModel)]=\"selectedDateRange\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateRangePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n</div>\n","import { ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { FormService } from '../../services/form.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 selectedValue: any[] = [];\n validationFailed!: boolean;\n validationMessage: string = '';\n\n constructor(private formService: FormService,\n private cdr:ChangeDetectorRef\n ) { }\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n onValueChange(newValue: any) {\n this.selectedValue = newValue;\n this.selectItems();\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.selectionType = this.question.formElement.appearance.selectionType;\n this.minimumSelection =\n this.question.formElement.validation.minimumSelection;\n this.maximumSelection =\n this.question.formElement.validation.maximumSelection;\n this.optionType = this.question.formElement.option.optionType;\n switch (this.optionType) {\n case 'OPTION':\n this.customOptions = this.question.formElement.option.customOptions.map(\n (option: { value: string }) => ({\n label: option.value,\n value: option.value,\n image: '',\n })\n );\n if (this.question.answer) {\n this.initializeCustomOption();\n }\n break;\n case 'LOOKUP':\n this.lookupTable = this.question.formElement.option.lookupTable;\n this.fetchDataFromLookup();\n break;\n case 'DATABASE':\n this.database = this.question.formElement.option.database;\n this.fetchDataFromDatabase();\n break;\n case 'API':\n this.api = this.question.formElement.option.api;\n this.fetchDataFromAPI();\n break;\n default:\n console.warn('Unknown option type:', this.optionType);\n }\n\n if(this.question.childLogics && this.question.answer){\n this.updateChildLogics(this.question)\n }\n }\n\n initializeCustomOption() {\n this.customOptions.forEach((option: any) => {\n const isMatch = this.question?.answer?.some((a: any) => {\n const parts = a.trim().split('|'); \n if (parts.length === 2) {\n const label = parts[0]; \n const value = parts[1]; \n return value === option.value; \n } else {\n return false; \n }\n });\n if (isMatch) {\n this.selectedValue.push(option);\n }\n });\n \n \n \n this.cdr.detectChanges();\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\n fetchDataFromDatabase() {\n const transformedDatabase = this.transformDatabaseObject(this.database);\n this.formService.fetchDataFromDatabase(transformedDatabase).subscribe(\n (response) => {\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 if (this.question.answer) {\n this.initializeCustomOption();\n }\n } else {\n console.error('Error fetching data from database:', response.message);\n }\n this.cdr.detectChanges();\n },\n (error) => {\n console.error('HTTP Error:', error);\n this.cdr.detectChanges();\n }\n );\n }\n\n fetchDataFromLookup() {\n this.formService.fetchDataFromLookup(this.lookupTable).subscribe(\n (response) => {\n this.customOptions = response.result.values.map(\n (item: { value: string; label: string }) => ({\n value: item.value,\n label: item.label,\n })\n );\n if (this.question.answer) {\n this.initializeCustomOption();\n }\n },\n (error) => {\n console.error('HTTP Error:', error);\n }\n );\n }\n\n fetchDataFromAPI() {\n const apiConfig = this.api;\n this.formService.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.customOptions = data.map((item: any) => ({\n value: item[apiConfig.valueField.trim()],\n label: item[apiConfig.labelField.trim()],\n }));\n if (this.question.answer) {\n this.initializeCustomOption();\n }\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 selectItems() {\n const valuesArray = this.selectedValue.map(item => `${item.label}|${item.value}`);\n this.question.answer = valuesArray; \n this.validationFailed = false;\n this.validationMessage = ''; \n if (this.selectedValue.length == 0 && this.required) {\n this.validationFailed = true;\n this.validationMessage = `This is a required question`;\n this.question.validation = false;\n } else if (\n this.selectedValue.length < this.minimumSelection ||\n this.selectedValue.length > this.maximumSelection\n ) {\n this.validationFailed = true;\n this.validationMessage = `selected options must be between ${this.minimumSelection} & ${this.maximumSelection}`;\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n if (this.question.childLogics) {\n this.updateChildLogics(this.question);\n }\n }\n\n updateChildLogics(question: any) {\n if (question.childLogics && Array.isArray(question.childLogics)) {\n question.childLogics.forEach((childLogic: any) => {\n if(this.selectionType=='SINGLE'){\n if(this.selectedValue.length==0){\n childLogic.show=false;\n }\n else{\n const selectedValue=this.selectedValue[0]?.value\n childLogic.showLogic = this.evaluateCondition(selectedValue, childLogic.condition, childLogic.inputValue);\n }\n \n }\n else if (this.selectionType === 'MULTIPLE') {\n if(this.selectedValue.length==0){\n childLogic.show=false;\n }\n else{\n const selectedValues = this.selectedValue.map((item: any) => item.value);\n childLogic.showLogic = this.evaluateMultipleCondition(selectedValues, childLogic.condition, childLogic.inputValue);\n }\n }\n });\n }\n }\n\n evaluateCondition(answer: any, condition: string, inputValue: any): boolean {\n const stringInputValue = Array.isArray(inputValue) ? inputValue.map(val => val.toString().toLowerCase()) : inputValue.toLowerCase();\n answer = Array.isArray(answer) ? answer?.map(ans => ans.toLowerCase()) : answer.toLowerCase();\n switch (condition) {\n case \"!=\":\n return answer != inputValue;\n case \"=\":\n return answer == inputValue;\n case \"IN\":\n return stringInputValue.includes(answer);\n case \"NOT IN\":\n return !stringInputValue.includes(answer);\n default:\n return false;\n }\n }\n\n evaluateMultipleCondition(answers: any, condition: string, inputValue: any): boolean {\n const stringInputValue = Array.isArray(inputValue) ? inputValue.map(val => val.toString()) : inputValue.toString();\n answers = Array.isArray(answers) ? answers?.map(answer => answer.toLowerCase()) : answers.toLowerCase();\n switch (condition) {\n case \"!=\":\n return answers.every((answer: any) => answer != stringInputValue);\n case \"=\":\n return answers.some((answer: any) => answer == stringInputValue);\n case \"IN\":\n return answers.some((answer: any) => stringInputValue.includes(answer));\n case \"NOT IN\":\n return answers.every((answer: any) => !stringInputValue.includes(answer));\n default:\n return false;\n }\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 (click)=\"selectItems()\"\n [(selectedItems)]=\"selectedValue\"\n ></lib-dropdown> -->\n\n <lib-dropdown\n [placeholder]=\"'select'\"\n [items]=\"customOptions\"\n [multiple]=\"selectionType === 'SINGLE' ? false : true\"\n (click)=\"selectItems()\"\n [(selectedItems)]=\"selectedValue\"\n ></lib-dropdown>\n\n <!-- (onDropdownScroll)=\"getNextSetOfItems($event)\"\n (onSearch)=\"search($event)\" -->\n \n <div *ngIf=\"validationFailed\" class=\"text-danger mb-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } 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 previewUploadedFiles: boolean = true;\n validationFailed: boolean = false;\n validationMessage: string = '';\n attachments: Attachment[] = [];\n\n avatarPicker: boolean = false;\n files: any;\n\n handleFileTypeNotAllowed(fileType: string): void {\n this.validationFailed = true;\n this.validationMessage = 'File type not allowed';\n }\n\n handleFileSize(event: string): void {\n this.validationFailed = true;\n if (event === 'File size exceeds the limit') {\n this.validationMessage = `${event} ${this.initialFileSize} ${this.fileSizeUnit}`;\n } else if (event === 'Total size exceeds the limit') {\n this.validationMessage = `${event} ${this.initialTotalSize} ${this.fileSizeUnit}`;\n } else {\n this.validationMessage = event;\n }\n this.clearValidationMessageAfterTimeout();\n }\n\n clearValidationMessageAfterTimeout(): void {\n setTimeout(() => {\n this.validationMessage = '';\n this.validationFailed = false;\n }, 5000); // Timeout set to 5 seconds\n }\n\n\n handleFinalArray(fileType: any[]): void {\n const extractedData = fileType.map((item: any) => ({\n name: item._file.name,\n size: item._file.size,\n type: item._file.type,\n }));\n const jsonString = JSON.stringify(extractedData);\n this.question.answer = fileType;\n }\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.multiFileUploads =\n this.question.formElement.appearance.multiFileUploads;\n this.dragAndDrop = this.question.formElement.appearance.dragAndDrop;\n this.previewUploadedFiles =\n this.question.formElement.appearance.previewUploadedFiles;\n this.fileTypes = this.question.formElement.validation.fileTypes;\n this.fileSizeUnit = this.question.formElement.validation.fileSizeUnit;\n this.avatarPicker = this.question.formElement.appearance.avatarPicker;\n this.initialFileSize = this.question.formElement.validation?.fileSize;\n this.fileSize = this.convertToBytes(\n this.initialFileSize,\n this.fileSizeUnit\n );\n this.initialTotalSize = this.question.formElement.validation?.totalFileSize;\n this.totalFileSize = this.convertToBytes(\n this.initialTotalSize,\n this.fileSizeUnit\n );\n\n if (this.question.answer) {\n this.files = this.question.answer;\n }\n\n this.attachments = this.question?.attachments;\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 selectedFile!: File;\n selectedFiles: any = [];\n\n onFileChange(event: any) {\n const file: File = event.target.files[0];\n this.selectedFile = file;\n this.selectedFiles.push(this.selectedFile);\n this.question.answer = this.selectedFiles;\n }\n\n deleteFiles(event: any) {\n this.question.deleteFiles = event;\n this.question.attachments = this.question.attachments.filter(\n (item: any) => {\n return !event.includes(item.fileId);\n }\n );\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 (fileTypeNotAllowed)=\"handleFileTypeNotAllowed($event)\"\n (fileSizeAllowed)=\"handleFileSize($event)\"\n (finalArray)=\"handleFinalArray($event)\"\n [attachments] = \"attachments\"\n (deleteFiles)=\"deleteFiles($event)\"\n [files]=\"files\"\n [dragAndDrop]=\"dragAndDrop\"\n ></lib-docUpload>\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input, ViewChild, ElementRef } from '@angular/core';\nimport { GoogleMap } from '@angular/google-maps';\n\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 @ViewChild('mapSearchField')\n searchField!: ElementRef;\n @ViewChild(GoogleMap) map!: GoogleMap;\n\n count: number = 0;\n required: boolean = false;\n hint: string = '';\n defaultZoomLevel: number = 0;\n setCurrentPosition: boolean = false;\n allowFullScreen: boolean = false;\n latitude: number = 0;\n longitude: number = 0;\n regionBoundary: boolean = false;\n region: string = '';\n showGoogleMap!: boolean;\n mapConfigurations: any = {};\n\n ngOnInit() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.defaultZoomLevel =\n this.question.formElement.appearance.defaultZoomLevel;\n this.setCurrentPosition =\n this.question.formElement.appearance.setCurrentPosition;\n this.allowFullScreen = this.question.formElement.appearance.allowFullScreen;\n this.latitude = this.question.formElement.appearance.latitude;\n this.longitude = this.question.formElement.appearance.longitude;\n this.regionBoundary = this.question.formElement.validation.regionBoundary;\n this.region = this.question.formElement.validation.region;\n this.mapConfigurations = {\n disableDefaultUI: true,\n fullscreenControl: this.allowFullScreen,\n zoomControl: true,\n };\n }\n\n ngAfterViewInit(): void {\n const searchBox = new google.maps.places.SearchBox(\n this.searchField.nativeElement\n );\n\n this.map.controls[google.maps.ControlPosition.TOP_CENTER].push(\n this.searchField.nativeElement\n );\n\n searchBox.addListener('places_changed', () => {\n const places = searchBox.getPlaces();\n if (places?.length === 0) {\n return;\n }\n\n const bounds = new google.maps.LatLngBounds();\n places?.forEach((place) => {\n if (!place.geometry || !place.geometry.location) {\n return;\n }\n\n if (place.geometry.viewport) {\n // Only geocodes have viewport.\n bounds.union(place.geometry.viewport);\n } else {\n bounds.extend(place.geometry.location);\n }\n });\n\n this.map.fitBounds(bounds);\n });\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 type=\"text\"\n class=\"form-control location-input\"\n placeholder=\"Enter location\"\n #locationInput\n />\n </div>\n\n <input #mapSearchField class=\"my-map-search-field\" type=\"text\" />\n <google-map width=\"100%\" [options]=\"mapConfigurations\"></google-map>\n</div>\n","import { Component, Input } 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 email: string = '';\n validationFailed: boolean = false;\n validationMessage: string = '';\n\n ngOnInit() {\n this.valueAssigned();\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.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.formElement.validation.regularExpression;\n this.email = this.question?.answer \n }\n\n validateEmail() {\n this.validationFailed = false;\n this.validationMessage = '';\n const enteredEmail = this.email?.trim().toLowerCase();\n if (this.required && !this.email) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n } else if (this.expectedDomains) {\n const isValidEmail = this.expectedDomains?.some((domain) =>\n enteredEmail.endsWith(domain)\n );\n this.validationFailed = !isValidEmail;\n this.validationMessage = 'Please enter valid email address';\n if (this.validationFailed) {\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n else {\n this.question.validation = true;\n }\n }\n validateInput(event: any) {\n this.question.answer = event.target.value;\n this.validateEmail();\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 [(ngModel)]=\"email\"\n (blur)=\"validateEmail()\"\n (input)=\"validateInput($event)\"\n [class.invalid]=\"validationFailed\"\n />\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { DataService } from './data.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(private http: HttpClient, private dataService: DataService) {\n this.dataService.apiUrl$.subscribe((data) => {\n this.apiUrl = data;\n });\n }\n\n loadCountryDetails(questionId: string, page: number, size: number, searchKey: string): Observable<any> {\n return this.http.get<any>(`${this.apiUrl}/api/public/json/country/${questionId}?page=${page}&size=${size}&searchKey=${searchKey}`);\n }\n\n processCountryDetails(\n data: any[],\n displayFlag: boolean,\n displayCode: boolean,\n showCountryName: boolean\n ): CountryData[] {\n const countryDetails: CountryData[] = [];\n data.forEach((country) => {\n const flag = displayFlag && country.flag ? country.flag : '';\n const name = showCountryName ? 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 \n // Special case: Only flag should be displayed, but value must have ISD code\n if (displayFlag && !displayCode && !showCountryName) {\n countryDetails.push({\n value: isdCode, // Keep ISD code in value\n label: '', // No text in label\n image: flag, // Only flag should be displayed\n });\n } else {\n // Handle all other cases\n let label = '';\n if (showCountryName) label += name;\n if (displayCode) label += (label ? ' ' : '') + isdCode;\n if (!label) label = isdCode; // Ensure label is not empty\n \n countryDetails.push({\n value: isdCode,\n label: label.trim(),\n image: flag,\n });\n }\n });\n } else {\n const fallbackCode = isdRoot || country.code || ''; // Fallback if no suffixes\n \n if (displayFlag && !displayCode && !showCountryName) {\n countryDetails.push({\n value: fallbackCode,\n label: '',\n image: flag,\n });\n } else {\n let label = '';\n if (showCountryName) label += name;\n if (displayCode) label += (label ? ' ' : '') + fallbackCode;\n if (!label) label = fallbackCode;\n \n countryDetails.push({\n value: fallbackCode,\n label: label.trim(),\n image: flag,\n });\n }\n }\n });\n return countryDetails;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CountryService } from '../../services/countryService';\n\ninterface CountryData {\n value: string;\n label: string;\n image: string;\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: CountryData[] = [];\n selectedCountry: CountryData[] = [];\n validationFailed: boolean = false;\n validationMessage: string = '';\n mobileNumber: string = '';\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 constructor(private countryService: CountryService) { }\n\n ngOnInit() {\n this.valueAssigned();\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.formElement.appearance.placeholder;\n this.displayCountryCode =\n this.question.formElement.appearance.displayCountryCode;\n this.displayFlag = this.question.formElement.appearance.displayFlag;\n this.displayCode = this.question.formElement.appearance.displayCode;\n this.showCountryName = this.question.formElement.appearance.showCountryName;\n this.beautifyNumbers = this.question.formElement.appearance.beautifyNumbers;\n this.countryWiseValidation =\n this.question.formElement.validation.countryWiseValidation;\n this.questionId = this.question.id;\n this.loadCountry(this.questionId, this.currentPage, this.size, this.searchKey);\n }\n\n\n initializeAnswer() {\n const [countryCode, mobileNumber] = this.question?.answer?.split(' ');\n this.mobileNumber = mobileNumber || '';\n\n const matchedCountry = this.countryDetails.find(country => country.value === countryCode);\n if (matchedCountry) {\n this.selectedCountry.push(matchedCountry);\n } \n }\n\n onCountryChange() {\n this.validationFailed = false;\n this.validationMessage = '';\n this.updateAnswer();\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 console.log('number', this.mobileNumber);\n \n this.updateAnswer();\n }\n onMobileNumberChange() {\n }\n\n updateAnswer() { \n if(this.displayCountryCode){\n if (this.selectedCountry.length > 0 && this.mobileNumber) {\n const countryCode = this.selectedCountry[0].value;\n this.question.answer = `${countryCode} ${this.mobileNumber}`;\n }\n }else {\n this.question.answer = this.mobileNumber;\n }\n }\n\n validateMobile() {\n this.validationFailed = false;\n this.validationMessage = '';\n \n if (this.required && (!this.mobileNumber || (this.displayCountryCode && this.selectedCountry.length === 0))) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n } else {\n this.updateAnswer();\n }\n }\n\n loadCountry(id: string, currentPage: number, size: number, searchKey: string) {\n this.countryService.loadCountryDetails(this.questionId, currentPage, size, searchKey).subscribe((data) => {\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 let newCountries=this.countryService.processCountryDetails(\n data.result.content,\n this.displayFlag,\n this.displayCode,\n this.showCountryName\n ) \n\n if (this.currentPage > 0) {\n this.countryDetails = [\n ...this.countryDetails,\n ...newCountries.filter(item => !this.countryDetails.some((existing: any) => existing.value === item.value))\n ];\n } else {\n this.countryDetails = [\n ...newCountries.filter(item => !this.countryDetails.some((existing: any) => existing.value === item.value)),\n ...this.countryDetails\n ];\n }\n if (this.question.answer) {\n this.initializeAnswer();\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.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, \"\");\n }\n else {\n this.countryDetails = []; \n this.loadCountry(this.questionId,this.currentPage, this.size, searchTerm);\n }\n }\n\n}\n\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 <ng-container *ngIf=\"displayCountryCode; else fullWidthInput\">\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 [(selectedItems)]=\"selectedCountry\"\n (selectedItemsChange)=\"onCountryChange()\"\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 height mobileField\"\n [placeholder]=\"placeholder\"\n aria-label=\"Mobile Number\"\n [class.invalid]=\"validationFailed\"\n (blur)=\"validateMobile()\"\n [(ngModel)]=\"mobileNumber\"\n (ngModelChange)=\"onMobileNumberChange()\"\n (input)=\"onInput($event)\"\n />\n </ng-container>\n\n <!-- Full-width input when displayCountryCode is false -->\n <ng-template #fullWidthInput>\n <input\n type=\"text\"\n class=\"form-control col-12 height mobileField\"\n [placeholder]=\"placeholder\"\n aria-label=\"Mobile Number\"\n [class.invalid]=\"validationFailed\"\n (blur)=\"validateMobile()\"\n [(ngModel)]=\"mobileNumber\"\n (ngModelChange)=\"onMobileNumberChange()\"\n (input)=\"onInput($event)\"\n />\n </ng-template>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Logic } from '../../models/logic.model';\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 enteredNumber!: number;\n validationFailed: boolean = false;\n validationMessage: string = '';\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.upDown = this.question.formElement.appearance.upAndDownButton;\n this.allowNegativeValues =\n this.question.formElement.appearance.allowNegativeValues;\n this.placeholder = this.question.formElement?.appearance?.placeholder || '';\n this.min = this.question.formElement.validation.min;\n this.max = this.question.formElement.validation.max;\n this.enteredNumber = this.question?.answer;\n if (this.question.childLogics && this.question.answer) {\n this.updateChildLogics(this.question);\n }\n }\n validateNumber() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.enteredNumber) {\n this.validationFailed = true;\n this.validationMessage = `Please enter a valid number`;\n this.question.validation = false;\n } else if (!this.allowNegativeValues && this.enteredNumber < 0) {\n this.validationFailed = true;\n this.validationMessage = 'Please enter a positive number';\n this.question.validation = false;\n } else if (\n (this.min !== undefined && this.enteredNumber < this.min) ||\n (this.max !== undefined && this.enteredNumber > this.max)\n ) {\n this.validationFailed = true;\n\n // Construct appropriate validation message based on whether min, max, or both are provided\n if (this.min !== undefined && this.max !== undefined) {\n this.validationMessage = `Please enter a valid number between ${this.min} and ${this.max}`;\n } else if (this.min !== undefined) {\n this.validationMessage = `Please enter a number greater than or equal to ${this.min}`;\n } else if (this.max !== undefined) {\n this.validationMessage = `Please enter a number less than or equal to ${this.max}`;\n }\n\n this.question.validation = false;\n } else {\n this.question.validation = true;\n }\n if (this.question.childLogics) {\n this.updateChildLogics(this.question);\n }\n }\n\n validateInput(event: any) {\n this.question.answer = event.target.value;\n if (this.question.childLogics) {\n this.updateChildLogics(this.question);\n }\n }\n\n updateChildLogics(question: any) {\n if (question.childLogics && Array.isArray(question.childLogics)) {\n question.childLogics.forEach((childLogic: any) => {\n if (question.answer == '') {\n childLogic.showLogic = false;\n this.clearAnswer(childLogic);\n return;\n }\n if (\n this.evaluateCondition(\n question.answer,\n childLogic.condition,\n childLogic.inputValue\n )\n ) {\n childLogic.showLogic = true;\n } else {\n childLogic.showLogic = false;\n this.clearAnswer(childLogic);\n }\n });\n }\n }\n\n evaluateCondition(answer: any, condition: any, inputValue: any) {\n switch (condition) {\n case '>':\n return answer > Number(inputValue);\n case '<':\n return answer < Number(inputValue);\n case '>=':\n return answer >= Number(inputValue);\n case '<=':\n return answer <= Number(inputValue);\n case '=':\n return answer == inputValue;\n case '!=':\n return answer != inputValue;\n default:\n return false;\n }\n }\n\n clearAnswer(childLogic: Logic) {\n childLogic.rows.forEach((formElement: any) => {\n if (formElement.entityType == 'QUESTION') {\n formElement.element.answer = '';\n }\n });\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 (blur)=\"validateNumber()\"\n [(ngModel)]=\"enteredNumber\"\n [class.invalid]=\"validationFailed\"\n (input)=\"validateInput($event)\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n />\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } 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 validationMessage: string = '';\n cnfrmValidationMessage: string = '';\n validationFailed: boolean = false;\n validatedCnfrmPassword: boolean = false;\n enteredPassword: string = '';\n enteredCnfrmPassword: string = '';\n passwordStrength: number = 0;\n questionId:string='';\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n valueAssigned() {\n this.questionId=this.question.id;\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.confirmPassword = this.question.formElement.appearance.confirmPassword;\n this.displayStrength = this.question.formElement.appearance.displayStrong;\n this.viewButton = this.question.formElement.appearance.viewButton;\n this.maxLength = this.question.formElement.validation.maxLength;\n this.minLength = this.question.formElement.validation.minLength;\n this.requireLowercaseLetters =\n this.question.formElement.validation.requireLowercaseLetters;\n this.requireUppercaseLetters =\n this.question.formElement.validation.requireUppercaseLetters;\n this.requireNumbers = this.question.formElement.validation.requireNumbers;\n this.requireSpecialCharacters =\n this.question.formElement.validation.requireSpecialCharacters;\n if (this.requireSpecialCharacters) {\n this.allowedSpecialCharacters =\n this.question.formElement.validation.allowedSpecialCharacters\n .split(',')\n .map((char: any) => char.trim());\n }\n this.enteredPassword = this.question?.answer;\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 checkPasswordMatch() {\n this.validatedCnfrmPassword = false;\n this.cnfrmValidationMessage = '';\n if (this.required && this.confirmPassword && !this.enteredCnfrmPassword) {\n this.validatedCnfrmPassword = true;\n this.cnfrmValidationMessage = `Please enter a valid password`;\n this.question.validation = false;\n }\n else if (this.enteredPassword != this.enteredCnfrmPassword && this.confirmPassword) {\n this.validatedCnfrmPassword = true;\n this.cnfrmValidationMessage = 'Passwords do not match';\n this.question.validation = false;\n }\n else{\n this.question.validation = true;\n }\n this.validatePassword();\n }\n\n \n\n validatePassword() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.enteredPassword) {\n this.validationFailed = true;\n this.validationMessage = `Please enter a valid password`;\n this.question.validation = false;\n } else if (\n this.requireLowercaseLetters ||\n this.requireUppercaseLetters ||\n this.requireNumbers ||\n this.requireSpecialCharacters ||\n this.minLength ||\n this.maxLength\n ) { \n const lowercaseRegex = /[a-z]/;\n const uppercaseRegex = /[A-Z]/;\n const numberRegex = /\\d/;\n const specialCharacterRegex = new RegExp(`[${this.allowedSpecialCharacters.join('')}]`);\n const otherSpecialCharacterRegex = new RegExp(`[^a-zA-Z0-9${this.allowedSpecialCharacters.join('')}]`);\n \n let lowerCaseValidate = lowercaseRegex.test(this.enteredPassword);\n let upperCaseValidate = uppercaseRegex.test(this.enteredPassword);\n let containsNumber = numberRegex.test(this.enteredPassword);\n let containsSpecialCharacter = specialCharacterRegex.test(this.enteredPassword);\n let containsOtherSpecialCharacter = otherSpecialCharacterRegex.test(this.enteredPassword);\n \n if (!lowerCaseValidate && this.requireLowercaseLetters) {\n this.validationFailed = true;\n this.validationMessage = 'Password must contain at least one lowercase letter';\n this.question.validation = false;\n } else if (!upperCaseValidate && this.requireUppercaseLetters) {\n this.validationFailed = true;\n this.validationMessage = 'Password must contain at least one uppercase letter';\n this.question.validation = false;\n } else if (!containsNumber && this.requireNumbers) {\n this.validationFailed = true;\n this.validationMessage = 'Password must contain at least one number';\n this.question.validation = false;\n }else if (this.enteredPassword.length < this.minLength) {\n this.validationFailed = true;\n this.validationMessage = `Password must contain at least ${this.minLength} characters`;\n this.question.validation = false;\n } else if (this.enteredPassword.length > this.maxLength) {\n this.validationFailed = true;\n this.validationMessage = `Password must be less than ${this.maxLength} characters`;\n this.question.validation = false;\n } else if (!containsSpecialCharacter && this.allowedSpecialCharacters.length>0) {\n this.validationFailed = true;\n this.validationMessage = `Password must contain at least one special character from ${this.allowedSpecialCharacters}`;\n this.question.validation = false;\n } else if(containsOtherSpecialCharacter && this.allowedSpecialCharacters.length>0){\n this.validationFailed = true;\n this.validationMessage = 'Password contains an invalid special character';\n this.question.validation = false;\n } else if(this.confirmPassword){\n this.checkPasswordMatch();\n }\n else {\n this.question.validation = true;\n } \n } else { \n this.passwordStrength=this.calculateStrength(this.enteredPassword);\n }\n this.passwordStrength = this.calculateStrength(this.enteredPassword)\n}\n\n validateInput(event:any){\n const sanitizedValue = event.target.value.replace(/\\s+/g, '');\n this.enteredPassword = sanitizedValue;\n this.question.answer=sanitizedValue;\n this.validatePassword(); \n }\n\n validateCnfrm(event:any){\n const sanitizedValue = event.target.value.replace(/\\s+/g, '');\n this.enteredCnfrmPassword = sanitizedValue;\n this.checkPasswordMatch();\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\n","<div class=\"mb-5 px-3\">\n <div class=\"password-input-wrapper mb-2\">\n <div class=\"input-wrapper\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label [for]=\"'passwordField'+questionId\">{{ question.question }}</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 (blur)=\"validatePassword()\"\n [(ngModel)]=\"enteredPassword\"\n [class.invalid]=\"validationFailed\"\n (input)=\"validateInput($event)\"\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 <div *ngIf=\"validationFailed\" class=\"text-danger mb-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\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 (blur)=\"checkPasswordMatch()\"\n [(ngModel)]=\"enteredCnfrmPassword\"\n [class.invalid]=\"validatedCnfrmPassword\"\n (input)=\"validateCnfrm($event)\"\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 *ngIf=\"validatedCnfrmPassword\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ cnfrmValidationMessage }}\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { FormService } from '../../services/form.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 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 selectedOption: any;\n validationFailed!: boolean;\n validationMessage: string = '';\n\n constructor(private formService: FormService) { }\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.color = this.question.formElement.appearance.color;\n this.optionType = this.question.formElement.option.optionType;\n\n switch (this.optionType) {\n case 'OPTION':\n this.customOptions = this.question.formElement.option.customOptions;\n this.initializeOption();\n break;\n case 'LOOKUP':\n this.lookupTable = this.question.formElement.option.lookupTable;\n this.fetchDataFromLookup();\n break;\n case 'DATABASE':\n this.database = this.question.formElement.option.database;\n this.fetchDataFromDatabase();\n break;\n case 'API':\n this.api = this.question.formElement.option.api;\n this.fetchDataFromAPI();\n break;\n default:\n console.warn('Unknown option type:', this.optionType);\n }\n\n if(this.question.childLogics && this.question.answer){\n this.updateChildLogics(this.question)\n }\n }\n\n initializeOption() {\n if (this.question.answer) {\n const dataType = typeof this.customOptions[0]?.value;\n let convertedAnswer;\n\n switch (dataType) {\n case 'number':\n convertedAnswer = Number(this.question.answer);\n break;\n case 'boolean':\n convertedAnswer = (this.question.answer === 'true');\n break;\n case 'string':\n convertedAnswer = String(this.question.answer);\n break;\n default:\n convertedAnswer = this.question.answer;\n }\n this.selectedOption = convertedAnswer;\n }\n }\n\n fetchDataFromLookup() {\n this.formService.fetchDataFromLookup(this.lookupTable).subscribe(\n (response) => {\n this.customOptions = response.result.values.map(\n (item: { value: string; label: string }) => ({\n value: item.value,\n label: item.label,\n })\n );\n this.initializeOption();\n },\n (error) => {\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) => {\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 this.initializeOption();\n } else {\n console.error('Error fetching data from database:', response.message);\n }\n },\n (error) => {\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) => {\n let data;\n if(apiConfig.pathToValue) {\n data = this.extractDataByPath(response, apiConfig.pathToValue);\n } else {\n data = response;\n }\n \n this.customOptions = data.map((item: any) => ({\n value: item[apiConfig.valueField],\n label: item[apiConfig.labelField],\n }));\n this.initializeOption();\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 validateInput() {\n this.question.answer = this.selectedOption;\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.selectedOption) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n if (this.question.childLogics) {\n this.updateChildLogics(this.question);\n }\n }\n\n updateChildLogics(question: any) {\n if (question.childLogics && Array.isArray(question.childLogics)) {\n question.childLogics.forEach((childLogic: any) => {\n childLogic.showLogic = this.evaluateCondition(this.selectedOption, childLogic.condition, childLogic.inputValue);\n });\n }\n }\n\n evaluateCondition(answer: any, condition: string, inputValue: any): boolean {\n const stringInputValue = Array.isArray(inputValue) ? inputValue.map(val => val.toString()) : inputValue;\n\n switch (condition) {\n case \"!=\":\n return answer != stringInputValue;\n case \"=\":\n return answer == stringInputValue;\n case \"IN\":\n return stringInputValue.includes(answer);\n case \"NOT IN\":\n return !(stringInputValue.includes(answer))\n default:\n return false;\n }\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 class=\"checkboxField\" *ngFor=\"let option of customOptions\">\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 (blur)=\"validateInput()\"\n [(ngModel)]=\"selectedOption\"\n (ngModelChange)=\"validateInput()\"\n />\n <label\n class=\"formCheckLabel ms-2 me-2 mb-2\"\n [for]=\"option.value\"\n *ngIf=\"optionType == 'OPTION'\"\n >{{ option.value }}</label\n >\n <label\n class=\"formCheckLabel ms-2 me-2 mb-2\"\n [for]=\"option.value\"\n *ngIf=\"optionType == 'LOOKUP' || 'DATABASE' || 'API'\"\n >{{ option.label }}</label\n >\n </div>\n\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\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 htmlContent: string = '';\n characterCount!: number;\n validationFailed: boolean = false;\n validationMessage: string = '';\n\n config: AngularEditorConfig = {\n editable: true,\n spellcheck: true,\n height: '15rem',\n minHeight: '5rem',\n translate: 'no',\n defaultParagraphSeparator: 'p',\n defaultFontName: 'Arial',\n toolbarHiddenButtons: [['bold']],\n customClasses: [\n {\n name: 'quote',\n class: 'quote',\n },\n {\n name: 'redText',\n class: 'redText',\n },\n {\n name: 'titleText',\n class: 'titleText',\n tag: 'h1',\n },\n ],\n };\n\n ngOnInit() {\n this.valueAssigned(); \n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.numberOfRows = this.question.formElement.appearance.numberOfRows;\n this.limitedCharacters =\n this.question.formElement.validation.limitedCharacters;\n this.counts = this.question.formElement.validation.count;\n this.numberOfRows = this.question.formElement.appearance.numberOfRows;\n this.limitedCharacters =\n this.question.formElement.validation.limitedCharacters;\n if (this.limitedCharacters) {\n this.characterCount = this.question.formElement.validation.count;\n }\n this.htmlContent = this.question?.answer;\n }\n\n validateEditor() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (!this.htmlContent && this.required) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n }\n }\n\n validateInput(event: any) {\n if (this.htmlContent.length >= this.characterCount) {\n this.htmlContent = this.htmlContent.substring(0, this.characterCount);\n }\n this.question.answer = this.htmlContent; \n }\n\n updateAnswer(content: string) {\n this.question.answer = content;\n }\n}\n","<div class=\"mb-4 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 <angular-editor\n [(ngModel)]=\"htmlContent\"\n [config]=\"config\"\n (input)=\"validateInput($event)\"\n (blur)=\"validateEditor()\"\n (ngModelChange)=\"updateAnswer($event)\"\n ></angular-editor>\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } 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 selectedOptions: string[] = [];\n validationFailed!:boolean;\n validationMessage:string='';\n minSelectionValue!:number;\n\n ngOnInit() {\n this.valueAssigned(); \n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.selectionMatrixColumn = this.question?.formElement?.selectionMatrixColumn;\n this.selectionMatrixLabel = this.question?.formElement?.selectionMatrixLabel;\n this.minSelectionValue= this.question?.formElement?.validation?.minSelectionValue;\n if(this.question.answer){\n this.selectedOptions=this.question.answer;\n }\n }\n\n onSelectionChange(rowIndex: number, value: string) {\n this.selectedOptions[rowIndex] = value;\n this.validateInput();\n }\n\n validateInput() {\n this.validationFailed = false;\n this.validationMessage = '';\n this.question.answer=this.selectedOptions;\n if(this.required && this.selectedOptions.length==0){\n this.validationFailed=true;\n this.validationMessage='This is a required question';\n this.question.validation = false;\n }\n else if(this.selectedOptions.length<this.minSelectionValue){\n this.validationFailed = true;\n this.validationMessage = `selected options must be greater than ${this.minSelectionValue}`;\n this.question.validation = false;\n }\n else{\n this.question.validation = true;\n } \n }\n}\n","<div class=\"mb-4 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 [value]=\"label + '_' + column\"\n [(ngModel)]=\"selectedOptions[rowIndex]\"\n (ngModelChange)=\"\n onSelectionChange(rowIndex, label + '_' + column)\n \"\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\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 count: number = 0;\n required: boolean = false;\n hint: string = '';\n maxFileSize: number = 0;\n minFileSize: number = 0;\n\n ngOnInit() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.maxFileSize = this.question.formElement.validation.maxFileSize;\n this.minFileSize = this.question.formElement.validation.minFileSize;\n }\n}\n","<div class=\"mb-4 px-3\">\n <div class=\"input-wrapper\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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>\n","import { Component, Input, Renderer2, ElementRef } 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 validationFailed: boolean = false;\n validationMessage: string = '';\n\n selectedValue: number = 0;\n\n constructor(private renderer: Renderer2, private el: ElementRef) { }\n\n ngOnInit() {\n\n this.valueAssigned();\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.minValue = this.question.formElement.appearance.minValue;\n this.maxValue = this.question.formElement.appearance.maxValue;\n this.stepValue = this.question.formElement.appearance.stepValue;\n this.changeSliderColor =\n this.question.formElement.appearance.changeSliderColor;\n\n if (this.changeSliderColor) {\n this.sliderColor = this.question.formElement.appearance.sliderColor;\n }\n\n if (this.question.answer && Object.keys(this.question.answer).length>0) {\n this.selectedValue = this.question?.answer;\n } else {\n this.selectedValue = this.minValue;\n }\n }\n\n\n validateInput(event: any) {\n this.question.answer = String(this.selectedValue);\n this.question.validation = true;\n }\n\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 [(ngModel)]=\"selectedValue\"\n (input)=\"validateInput($event)\"\n />\n </mat-slider>\n </div>\n <div class=\"sliderRight\">\n <label class=\"selected-count font-weight-bold\">{{ selectedValue }}</label>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { FormService } from '../../services/form.service';\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 constructor(\n private formService: FormService,\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.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.fileDataUrl=this.question.formElement.termsAndConditionType.fileUrl\n this.question;\n this.count;\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=\"mb-4 px-3\">\n <div class=\"input-wrapper\">\n <div [innerHTML]=\"question.questionNumber\" ></div>\n &nbsp;&nbsp; <label (click)=\"preview()\">{{ question.question }}</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, Input, ElementRef, ViewChild, AfterViewInit } 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 implements AfterViewInit {\n @Input() question: any = {}; \n @ViewChild('textarea') textarea!: ElementRef<HTMLTextAreaElement>;\n\n answer: string = '';\n count: number = 0;\n required: boolean = false;\n hint: string = '';\n numberOfRows!: number;\n limitedCharacters!: boolean;\n characterCount!: number;\n validationFailed: boolean = false;\n validationMessage: string = '';\n enteredText: string = '';\n maxHeight!: number;\n lineHeight!: number;\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n ngAfterViewInit() {\n if (this.textarea?.nativeElement) {\n this.calculateMaxHeight();\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.numberOfRows = this.question.formElement.appearance.numberOfRows;\n this.limitedCharacters = this.question.formElement.validation.limitedCharacters;\n\n if (this.limitedCharacters) {\n this.characterCount = this.question.formElement.validation.count;\n }\n this.enteredText = this.question?.answer;\n }\n\n calculateMaxHeight() {\n const textareaEl = this.textarea.nativeElement;\n const computedStyles = window.getComputedStyle(textareaEl);\n\n // Get accurate line height\n this.lineHeight = parseFloat(computedStyles.lineHeight); // Default fallback to 20px\n\n // Consider padding and borders\n const paddingTop = parseFloat(computedStyles.paddingTop) || 0;\n const paddingBottom = parseFloat(computedStyles.paddingBottom) || 0;\n const borderTop = parseFloat(computedStyles.borderTopWidth) || 0;\n const borderBottom = parseFloat(computedStyles.borderBottomWidth) || 0;\n\n // Correct height calculation\n this.maxHeight = (this.lineHeight * this.numberOfRows) + paddingTop + paddingBottom + borderTop + borderBottom;\n\n textareaEl.style.height = `${this.maxHeight}px`; // Set exact height\n }\n\n validateInput(event: Event) {\n const textarea = event.target as HTMLTextAreaElement;\n\n // Restrict overflow beyond max height\n while (textarea.scrollHeight > this.maxHeight) {\n textarea.value = textarea.value.slice(0, -1);\n }\n\n this.question.answer = textarea.value;\n this.validateTextarea();\n }\n\n validateTextarea() {\n this.validationFailed = false;\n this.validationMessage = '';\n\n if (!this.enteredText && this.required) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n } else {\n this.question.validation = true;\n }\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 #textarea\n class=\"form-control mb-2\"\n [ngClass]=\"{'no-scroll': numberOfRows}\"\n [rows]=\"numberOfRows\"\n (input)=\"validateInput($event)\"\n (blur)=\"validateTextarea()\"\n [(ngModel)]=\"enteredText\"\n [class.invalid]=\"validationFailed\"\n [maxlength]=\"characterCount\"\n ></textarea>\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Logic } from '../../models/logic.model';\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 defaultValue: string = '';\n isBold!: boolean;\n isUnderline!: boolean;\n isItalics!: boolean;\n textAlign: string = '';\n font: string = '';\n fontSize: string = '';\n validationType: string = '';\n validation: string = '';\n regex: string = '';\n enteredText: string = '';\n validationFailed: boolean = false;\n validationMessage: string = '';\n\n ngOnInit() { \n this.valueAssigned();\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.formElement?.appearance?.placeholder || '';\n this.defaultValue = this.question.formElement.appearance?.defaultValue;\n this.enteredText=this.defaultValue;\n this.isBold = this.question.formElement.appearance?.bold;\n this.isItalics = this.question.formElement.appearance?.italics;\n this.isUnderline = this.question.formElement.appearance?.underline;\n this.textAlign = this.question.formElement.appearance?.textAlign;\n this.font = this.question.formElement.appearance?.font;\n this.fontSize = this.question.formElement.appearance?.fontSize;\n this.validationType = this.question.formElement.validation?.validationType;\n if (this.validationType == 'CUSTOM_VALIDATION') {\n this.validation = this.question.formElement.validation?.validation;\n } else if (this.validationType == 'REGULAR_EXPRESSION') {\n this.regex = this.question.formElement.validation?.regex;\n }\n\n if (\n this.question.answer !== null &&\n this.question.answer !== undefined &&\n ((typeof this.question.answer === 'string' &&\n this.question.answer.trim() !== '') ||\n (Array.isArray(this.question.answer) &&\n this.question.answer.length > 0) ||\n (typeof this.question.answer === 'object' &&\n Object.keys(this.question.answer).length > 0))\n ) {\n this.enteredText = this.question.answer;\n }\n if(this.question.childLogics && this.question.answer){\n this.updateChildLogics(this.question)\n }\n }\n\n validatetextField() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.enteredText) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n } else {\n this.question.validation = true;\n }\n if (this.question.childLogics) {\n this.updateChildLogics(this.question);\n } \n }\n\n validateInput(event: any) {\n let value = event.target.value;\n if (this.validation == 'Numbers only') {\n event.target.value = value?.replace(/\\D/g, '');\n } else if (this.validation == 'Alphanumeric') {\n event.target.value = value?.replace(/[^a-zA-Z0-9]/g, '');\n } else if (this.validationType == 'REGULAR_EXPRESSION' && this.regex) {\n event.target.value = value?.replace(this.regex, '');\n }\n this.question.answer = event.target.value;\n this.validatetextField();\n }\n\n updateChildLogics(question: any) {\n if (question.childLogics && Array.isArray(question.childLogics)) {\n question.childLogics.forEach((childLogic: any) => {\n if(this.enteredText==''){\n childLogic.showLogic=false;\n this.clearAnswer(childLogic);\n }\n if (this.evaluateCondition(this.enteredText, childLogic.condition, childLogic.inputValue)) {\n childLogic.showLogic = true;\n }\n\n else{\n childLogic.showLogic = false;\n this.clearAnswer(childLogic);\n }\n });\n }\n }\n\n evaluateCondition(answer: any, condition: string, inputValue: any): boolean {\n const stringInputValue = inputValue;\n\n switch (condition) {\n case '!=':\n return answer != inputValue;\n case '=':\n return answer == inputValue;\n case 'LIKE':\n return answer.includes(inputValue);\n case 'NOT LIKE':\n return !answer.includes(inputValue);\n case 'BEGIN WITH':\n return answer.startsWith(inputValue);\n case 'END WITH':\n return answer.endsWith(inputValue);\n default:\n return false;\n }\n }\n\n clearAnswer(childLogic:Logic){\n childLogic.rows.forEach((formElement:any)=>{\n if(formElement.entityType == 'QUESTION'){ \n formElement.element.answer = '';\n }\n })\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div> &nbsp;&nbsp;\n <label>{{ question.question }}</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 [(ngModel)]=\"enteredText\"\n (blur)=\"validatetextField()\"\n (input)=\"validateInput($event)\"\n [class.invalid]=\"validationFailed\"\n />\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg class=\"validationSvg\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\" fill=\"#FF0000\" stroke=\"#FF0000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12 12.75L12 7.75\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\"/>\n </svg>\n {{validationMessage}}</div>\n</div>\n","import { Component, Input } 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 selectedValue : string ='';\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n getDirectionClass(): string {\n return this.acceptedLanguage === 'ara' ? 'direction-rtl' : 'direction-ltr';\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.labelOnValue = this.question.formElement.appearance.labelOnValue;\n this.labelOffValue = this.question.formElement.appearance.labelOffValue;\n this.labelOnColor = this.question.formElement.appearance.labelOnColor;\n this.labelOffColor = this.question.formElement.appearance.labelOffColor;\n \n if (!this.question.answer) {\n this.question.answer = this.labelOffValue;\n this.question.validation = true;\n this.selectedValue=this.labelOffValue;\n this.toggleBackgroundColor = this.labelOffColor;\n }\n if (this.question.answer) {\n if(this.question.answer===this.labelOnValue){\n this.selectedValue=this.labelOnValue;\n this.toggleBackgroundColor = this.labelOnColor;\n }\n else{\n this.selectedValue=this.labelOffValue;\n this.toggleBackgroundColor = this.labelOffColor;\n }\n \n this.question.validation = true;\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.selectedValue=this.question.answer;\n this.toggleBackgroundColor = isChecked\n ? this.question.formElement.appearance.labelOnColor\n : this.question.formElement.appearance.labelOffColor;\n }\n}\n","<div class=\"mb-3 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 (change)=\"toggleSliderColor($event)\"\n [checked]=\"selectedValue === labelOnValue\"\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 } 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 enteredUrl: string = '';\n validationFailed: boolean = false;\n validationMessage: string = '';\n\n constructor() { }\n\n ngOnInit() {\n this.valueAssigned();\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.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.placeholder = this.question.formElement.appearance.placeholder;\n this.showPreviewButton =\n this.question.formElement.appearance.showPreviewButton;\n this.enteredUrl = this.question?.answer; \n }\n validateUrl() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.enteredUrl) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n\n validateInput(event: any) {\n this.validateUrl();\n this.question.answer = event.target.value;\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 [(ngModel)]=\"enteredUrl\"\n (blur)=\"validateUrl()\"\n (input)=\"validateInput($event)\"\n [class.invalid]=\"validationFailed\"\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 *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { ChangeDetectorRef, Component, EventEmitter, Injector, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-question',\n templateUrl: './question.component.html',\n styleUrls: ['./question.component.scss']\n})\nexport class QuestionComponent {\n @Input() question: any = {};\n @Input() edit: boolean = false;\n @Input() acceptedLanguage: string = '';\n @Input() currentPageIndex: number = 0;\n @Output() emitValidations = new EventEmitter<any>();\n @Output() subFormChange = new EventEmitter<any>();\n validations: any = [];\n componentToLoad: any;\n injector!: Injector;\n\n constructor(private cdr: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.loadComponent();\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 { FormElementsComponent } = await import('../form-elements/form-elements.component');\n return FormElementsComponent;\n }\n\n private createInjector(): Injector {\n return Injector.create({\n providers: [\n { provide: 'grid', useValue: this.question.childLogics },\n { provide: 'edit', useValue: this.edit },\n { provide: 'answer', useValue: this.question.answer },\n { provide: 'state', useValue: 'child' },\n { provide: 'acceptedLanguage', useValue: this.acceptedLanguage }\n ],\n });\n }\n\n updateSubFormWithSubmissions(event: any) {\n this.subFormChange.emit(event);\n }\n\n handleValidation(validation: any) {\n this.validations.push(validation);\n this.emitValidations.emit(this.validations);\n this.cdr.detectChanges();\n }\n\n}\n","<div [ngSwitch]=\"question.formElement.elementType\">\n <lib-check-box-fields *ngSwitchCase=\"'CHECK_BOX'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-check-box-fields>\n <lib-date-time-fields *ngSwitchCase=\"'DATE_TIME'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-date-time-fields>\n <lib-drop-down-fields *ngSwitchCase=\"'DROP_DOWN'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-drop-down-fields>\n <lib-file-picker-fields *ngSwitchCase=\"'FILE_PICKER'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-file-picker-fields>\n <lib-location-fields *ngSwitchCase=\"'LOCATION'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-location-fields>\n <lib-mail-fields *ngSwitchCase=\"'EMAIL'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-mail-fields>\n <lib-mobile-fields *ngSwitchCase=\"'MOBILE'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-mobile-fields>\n <lib-number-fields *ngSwitchCase=\"'NUMBER'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-number-fields>\n <lib-password-fields *ngSwitchCase=\"'PASSWORD'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-password-fields>\n <lib-radio-button-fields *ngSwitchCase=\"'RADIO_BUTTON'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-radio-button-fields>\n <lib-rich-text-editor-fields *ngSwitchCase=\"'RICH_TEXT_EDITOR'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields *ngSwitchCase=\"'SELECTION_MATRIX'\" [question]=\"question\" [acceptedLanguage]=\"acceptedLanguage\" (validate)=\"handleValidation($event)\"></lib-selection-matrix-fields>\n <lib-signature-fields *ngSwitchCase=\"'SIGNATURE'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-signature-fields>\n <lib-slider-fields *ngSwitchCase=\"'SLIDER'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-slider-fields>\n <lib-terms-and-condition-fields *ngSwitchCase=\"'TERMS_AND_CONDITION'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-terms-and-condition-fields>\n <lib-text-area-fields *ngSwitchCase=\"'TEXT_AREA'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-text-area-fields>\n <lib-text-fields *ngSwitchCase=\"'TEXT_BOX'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-text-fields>\n <lib-toggle-switch-fields *ngSwitchCase=\"'TOGGLE_SWITCH'\" [question]=\"question\" [acceptedLanguage]=\"acceptedLanguage\" (validate)=\"handleValidation($event)\"></lib-toggle-switch-fields>\n <lib-url-fields *ngSwitchCase=\"'URL'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-url-fields>\n</div>\n\n<ng-container *ngIf=\"question.childLogics\">\n <ng-container *ngIf=\"componentToLoad\">\n <ng-container *ngComponentOutlet=\"componentToLoad; \n inputs: { grid: question.childLogics, \n answer: question.answer, \n state: 'child' }\"></ng-container>\n </ng-container>\n</ng-container>\n","import { Component, Inject, Injector} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'lib-submission-modal',\n templateUrl: './submission-modal.component.html',\n styleUrls: ['./submission-modal.component.scss']\n})\nexport class SubmissionModalComponent {\n acceptedLanguage: string ='';\n grid: any;\n subForm:any;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef<SubmissionModalComponent>\n ) { }\n\n ngOnInit(){\n this.subForm = this.data.subForm;\n this.acceptedLanguage = this.data.acceptedLanguage;\n }\n\n async loadFormElementsComponent(grid: any) {\n this.grid = grid;\n const { FormElementsComponent } = await import('../../question/form-elements/form-elements.component');\n return FormElementsComponent;\n }\n \n createInjector(): Injector {\n return Injector.create({\n providers: [\n { provide: 'grid', useValue: this.grid },\n { provide: 'state', useValue: 'child' },\n ],\n });\n }\n \n closeModal() {\n this.clearModal();\n this.dialogRef.close();\n }\n\n saveSubmission(){\n this.dialogRef.close(this.subForm);\n }\n\n clearModal() {\n if (this.subForm && this.subForm.rows) {\n this.subForm.rows.flatMap((item: any) => \n item.grid\n .forEach((gridItem: any) => this.clearFormElement(gridItem))\n );\n // this.subForm.formElements.forEach((formElement: any) => {\n // this.clearFormElement(formElement);\n // });\n }\n }\n\n clearFormElement(formElement: any) {\n if (formElement.entityType === 'QUESTION') {\n formElement.element.answer = ''; \n\n // Additional properties to clear if needed\n if (formElement.element.formElement) {\n if (formElement.element.formElement.elementType === 'FILE_PICKER') {\n formElement.element.answer = null; // or [] depending on how you store files\n } else {\n formElement.element.answer = '';\n }\n }\n\n if (formElement.element.childLogics) {\n formElement.element.childLogics.forEach((childLogic: any) => {\n childLogic.showLogic=false;\n childLogic.formElements.forEach((formElement:any)=>{\n this.clearFormElement(formElement);\n\n })\n });\n }\n } \n }\n}\n","<div class=\"mb-5\">\n <div class=\"modalHeader mb-4\">\n <div class=\"title-div\">\n <p class=\"title\">{{subForm.title}}</p>\n </div>\n <div class=\"header-btn\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" (click)=\"closeModal()\">\n <path d=\"M8 8L16 16\" stroke=\"#1D252D\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M16 8L8 16\" stroke=\"#1D252D\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> \n </div>\n </div>\n\n <div class=\"px-3\" *ngFor=\"let row of subForm.rows\">\n <ng-container *ngFor=\"let formElement of row.grid\">\n <div *ngIf=\"formElement.entityType === 'QUESTION'\">\n <lib-check-box-fields\n *ngIf=\"formElement.element.formElement.elementType === 'CHECK_BOX'\"\n [question]=\"formElement.element\"\n ></lib-check-box-fields>\n <lib-date-time-fields\n *ngIf=\"formElement.element.formElement.elementType === 'DATE_TIME'\"\n [question]=\"formElement.element\"\n ></lib-date-time-fields>\n <lib-drop-down-fields\n *ngIf=\"formElement.element.formElement.elementType === 'DROP_DOWN'\"\n [question]=\"formElement.element\"\n ></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'FILE_PICKER'\n \"\n [question]=\"formElement.element\"\n ></lib-file-picker-fields>\n <lib-location-fields\n *ngIf=\"formElement.element.formElement.elementType === 'LOCATION'\"\n [question]=\"formElement.element\"\n ></lib-location-fields>\n\n <lib-mail-fields\n *ngIf=\"formElement.element.formElement.elementType === 'EMAIL'\"\n [question]=\"formElement.element\"\n >\n </lib-mail-fields>\n <lib-mobile-fields\n *ngIf=\"formElement.element.formElement.elementType === 'MOBILE'\"\n [question]=\"formElement.element\"\n >\n </lib-mobile-fields>\n <lib-number-fields\n *ngIf=\"formElement.element.formElement.elementType === 'NUMBER'\"\n [question]=\"formElement.element\"\n >\n </lib-number-fields>\n <lib-password-fields\n *ngIf=\"formElement.element.formElement.elementType === 'PASSWORD'\"\n [question]=\"formElement.element\"\n >\n </lib-password-fields>\n <lib-radio-button-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'RADIO_BUTTON'\n \"\n [question]=\"formElement.element\"\n ></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'RICH_TEXT_EDITOR'\n \"\n [question]=\"formElement.element\"\n ></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'SELECTION_MATRIX'\n \"\n [question]=\"formElement.element\"\n [acceptedLanguage] = \"acceptedLanguage\"\n ></lib-selection-matrix-fields>\n <lib-signature-fields\n *ngIf=\"formElement.element.formElement.elementType === 'SIGNATURE'\"\n [question]=\"formElement.element\"\n ></lib-signature-fields>\n <lib-slider-fields\n *ngIf=\"formElement.element.formElement.elementType === 'SLIDER'\"\n [question]=\"formElement.element\"\n ></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngIf=\"\n formElement.element.formElement.elementType ===\n 'TERMS_AND_CONDITION'\n \"\n [question]=\"formElement.element\"\n ></lib-terms-and-condition-fields>\n <lib-text-area-fields\n *ngIf=\"formElement.element.formElement.elementType === 'TEXT_AREA'\"\n [question]=\"formElement.element\"\n ></lib-text-area-fields>\n <lib-text-fields\n *ngIf=\"formElement.element.formElement.elementType === 'TEXT_BOX'\"\n [question]=\"formElement.element\"\n ></lib-text-fields>\n <lib-toggle-switch-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'TOGGLE_SWITCH'\n \"\n [question]=\"formElement.element\"\n [acceptedLanguage] = \"acceptedLanguage\"\n ></lib-toggle-switch-fields>\n <lib-url-fields\n *ngIf=\"formElement.element.formElement.elementType === 'URL'\"\n [question]=\"formElement.element\"\n ></lib-url-fields>\n <!-- <lib-first-child\n *ngIf=\"formElement.element.childLogics\"\n [childLogics]=\"formElement.element.childLogics\"\n ></lib-first-child> -->\n\n <ng-container *ngIf=\"formElement.element.childLogics\">\n <ng-container *ngComponentOutlet=\"loadFormElementsComponent(formElement.element.childLogics) | async\"></ng-container>\n </ng-container>\n\n </div>\n <div *ngIf=\"formElement.entityType === 'SECTION'\">\n <lib-section-fields\n [section]=\"formElement.element\"\n ></lib-section-fields>\n </div>\n </ng-container>\n \n </div>\n\n <div class=\"okBtn me-4 ms-4\">\n <button\n class=\"submitBtn ms-md-3 me-md-2 rounded-pill\"\n type=\"button\"\n (click)=\"saveSubmission()\">\n Ok\n </button>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { SubmissionModalComponent } from '../../sub-form/submission-modal/submission-modal.component';\nimport { Attachment } from '../../models/attachment.model';\n\ninterface Answer {\n questionId: string;\n answer?: any;\n answerId?: string;\n deleteFiles?: string[];\n attachments?: Attachment[];\n files?: any;\n isChild?: boolean;\n}\n\ninterface Submission {\n submissionId: string;\n answers: Answer[];\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() acceptedLanguage: string ='';\n\n submissions: Submission[] = [];\n deletedSubmissions: string[] = [];\n displayedColumns: string[] = [];\n\n constructor(public dialog: MatDialog) {}\n\n ngOnInit() { \n if (this.subForm?.submissions) {\n this.submissions = this.subForm.submissions;\n this.subForm.deletedSubmissions = [];\n }\n this.initializeDisplayedColumns();\n }\n\n initializeDisplayedColumns() {\n this.displayedColumns = this.subForm.rows.flatMap((item: any) => \n item.grid\n .map((gridItem: any) => gridItem.element.question)\n );\n \n // this.displayedColumns = this.subForm.formElements.map((fe: any) => fe.element.question);\n this.displayedColumns.push('actions');\n }\n\n getAnswerByQuestionId(submission: Submission, questionId: string) {\n return submission.answers.find(answer => answer.questionId === questionId);\n }\n\n subFormSubmission(subForm: any) {\n const processFormElements = (rows: any[], isChild: boolean = false): Answer[] => {\n const answers: Answer[] = [];\n \n rows.flatMap((item: any) => \n item.grid.forEach((formElement: any) => {\n const answer: Answer = {\n questionId: formElement.element.id,\n answer: formElement.element?.answer || '',\n files: formElement.element.formElement.elementType == 'FILE_PICKER' && formElement.element.answer\n ? formElement.element.answer\n : undefined,\n isChild: isChild\n };\n \n if (\n formElement.element.formElement.elementType == 'FILE_PICKER' &&\n formElement.element.answer\n ) {\n const fileNames = formElement.element.answer.map(\n (file: any) => file?._file.name\n );\n answer.answer = fileNames;\n }\n answers.push(answer);\n \n if (formElement.element.childLogics) {\n formElement.element.childLogics.forEach((logic: any) => {\n if(logic.showLogic){\n answers.push(...processFormElements(logic.rows, true));\n logic.showLogic=false;\n }\n });\n }\n })\n );\n return answers;\n };\n \n const answers = processFormElements(subForm.rows);\n \n if (answers.length > 0) {\n const submission: Submission = {\n submissionId: '',\n answers: answers,\n };\n this.submissions.push(submission);\n this.submissions = [...this.submissions];\n this.updateSubFormWithSubmissions();\n }\n }\n \n\n editSubFormSubmission(index: number, submission: Submission) {\n const subForm = this.bindAnswers(this.subForm, submission);\n const dialogConfig = new MatDialogConfig();\n dialogConfig.position = { top: '5%' };\n dialogConfig.width = '100%';\n dialogConfig.data = {\n subForm: subForm,\n acceptedLanguage: this.acceptedLanguage\n };\n dialogConfig.hasBackdrop = true;\n dialogConfig.disableClose = true;\n dialogConfig.maxHeight = '80vh';\n const dialogRef = this.dialog.open(SubmissionModalComponent, dialogConfig);\n\n dialogRef.afterClosed().subscribe((result: any) => {\n if (result) {\n this.updateSubmission(result, index);\n }\n });\n }\n\n bindAnswers(subForm: any, submission: Submission): any {\n const bindElementAnswers = (rows: any[], answers: Answer[]) => {\n rows.forEach((row: any) => {\n row.grid.forEach((grid:any)=>{ \n const answer = answers.find(\n (a) => a.questionId === grid.element.id\n );\n if (answer) {\n grid.element.answer =\n grid.element.formElement.elementType == 'FILE_PICKER'\n ? answer?.files\n : answer.answer;\n grid.element.answerId = answer.answerId;\n grid.element.attachments = answer.attachments;\n }\n if (grid.element.childLogics) {\n grid.element.childLogics.forEach((logic: any) => {\n bindElementAnswers(logic.rows, answers);\n });\n }\n })\n \n });\n };\n\n const updatedSubForm = { ...subForm }; \n bindElementAnswers(updatedSubForm.rows, submission.answers);\n return updatedSubForm;\n }\n\n deleteSubForm(index: number) {\n const submission = this.submissions[index];\n if (submission.submissionId) {\n this.deletedSubmissions.push(submission.submissionId);\n }\n this.submissions.splice(index, 1);\n this.submissions = [...this.submissions];\n this.updateSubFormWithSubmissions();\n }\n\n addNewSubmission() {\n const dialogConfig = new MatDialogConfig();\n dialogConfig.position = { top: '5%' };\n dialogConfig.width = '100%';\n dialogConfig.data = {\n subForm: JSON.parse(JSON.stringify(this.subForm)), \n acceptedLanguage: this.acceptedLanguage\n };\n dialogConfig.hasBackdrop = true;\n dialogConfig.disableClose = true;\n dialogConfig.maxHeight = '80vh';\n const dialogRef = this.dialog.open(SubmissionModalComponent, dialogConfig);\n \n dialogRef.afterClosed().subscribe((result: any) => {\n if (result) {\n const hasData = result.rows.flatMap((item: any) => \n item.grid\n .some((formElement: any) => formElement.element.answer && formElement.element.answer.length > 0)\n );\n \n if (hasData) {\n this.subFormSubmission(result);\n }\n }\n });\n }\n \n \n\n updateSubmission(result: any, index: number) {\n const processFormElements = (rows: any[], answers: Answer[]) => {\n rows.forEach((row: any) => {\n row.grid.forEach((grid:any)=>{\n let answer: Answer = {\n questionId: grid.element.id,\n answerId: grid.element?.answerId || '',\n attachments: grid.element.attachments || [],\n answer: [],\n files: [],\n deleteFiles: [],\n };\n \n if (answer.attachments) {\n answer.answer = answer.attachments.map(\n (attachment: Attachment) => attachment.fileName\n );\n }\n \n if (grid.element.formElement.elementType === 'FILE_PICKER') {\n if (grid.element?.deleteFiles) {\n answer.answer = [];\n grid.element.deleteFiles.forEach((deletedId: string) => {\n answer.deleteFiles?.push(deletedId);\n if (answer.attachments) {\n answer.attachments = answer.attachments.filter(\n (attachment: Attachment) => {\n const fileName = attachment.fileName;\n if (attachment.fileId !== deletedId) {\n if (!answer.answer.includes(fileName)) {\n answer.answer.push(fileName);\n return true;\n }\n }\n return false;\n }\n );\n }\n });\n }\n if (grid.element.answer) {\n answer.files = grid.element.answer;\n grid.element.answer.forEach((file: any) => {\n const fileName = file._file?.name;\n let fileNamesArray = Array.isArray(answer.answer)\n ? answer.answer\n : [];\n if (!fileNamesArray.includes(fileName)) {\n fileNamesArray.push(fileName);\n }\n answer.answer = fileNamesArray;\n });\n }\n } else {\n answer = {\n questionId: grid.element.id,\n answerId: grid.element?.answerId || '',\n attachments: grid.element.attachments,\n answer: grid.element.answer,\n };\n }\n grid.element.answer = '';\n answers.push(answer);\n \n if (grid.element.childLogics) {\n grid.element.childLogics.forEach((logic: any) => {\n if(logic.showLogic){\n processFormElements(logic.rows, answers);\n }\n });\n }\n })\n });\n };\n \n this.submissions[index].answers = []; \n processFormElements(result.rows, this.submissions[index].answers);\n this.submissions = [...this.submissions];\n this.updateSubFormWithSubmissions();\n this.clearEmptyRows();\n } \n\n updateSubFormWithSubmissions() {\n this.subForm.submissions = this.submissions;\n this.subForm.deletedSubmissions = this.deletedSubmissions;\n this.subFormChange.emit(this.subForm);\n }\n\n clearEmptyRows() {\n const nonEmptySubmissions:Submission[] = [];\n const emptySubmissionIds:string[] = [];\n \n this.submissions.forEach(submission => {\n if (submission.answers.some(answer => answer.answer !== '')) {\n nonEmptySubmissions.push(submission);\n } else if (submission.submissionId) {\n emptySubmissionIds.push(submission.submissionId);\n }\n });\n \n this.submissions = nonEmptySubmissions;\n this.deletedSubmissions.push(...emptySubmissionIds);\n this.updateSubFormWithSubmissions();\n }\n \n}\n","<div class=\"example-container \" tabindex=\"0\">\n <div class=\"table-container\">\n <table mat-table [dataSource]=\"submissions\" class=\"mat-elevation-z8\">\n <ng-container *ngFor=\"let row of subForm.rows\">\n <ng-container *ngFor=\"let formElement of row.grid\" [matColumnDef]=\"formElement.element.question\">\n <th mat-header-cell *matHeaderCellDef class=\"border border-1\">{{ formElement.element.question }}</th>\n <td mat-cell *matCellDef=\"let submission\" class=\"border border-1\" [ngClass]=\"{'hidden': getAnswerByQuestionId(submission, formElement.element.id)?.isChild}\">\n {{ getAnswerByQuestionId(submission, formElement.element.id)?.answer }}\n </td>\n </ng-container>\n </ng-container>\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th mat-header-cell *matHeaderCellDef class=\"border border-1\"> Actions </th>\n <td mat-cell *matCellDef=\"let submission; let i = index\" class=\"text-center border border-1\">\n\n <div>\n <button class=\"btn\" mat-icon-button [matMenuTriggerFor]=\"menu\" aria-label=\"Example icon-button with a menu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"editSubFormSubmission(i, submission)\">\n <svg width=\"29\" height=\"28\" viewBox=\"0 0 29 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"0.5\" y=\"0.5\" width=\"28\" height=\"26.4737\" rx=\"5.5\" fill=\"white\" stroke=\"#D8D8D8\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.0009 19.0787H9.1582V16.2361C9.1582 15.9447 9.2739 15.6653 9.47999 15.4593L16.2224 8.71686C16.4284 8.5105 16.708 8.39453 16.9995 8.39453C17.2911 8.39453 17.5707 8.5105 17.7767 8.71686L19.5201 10.4603C19.7264 10.6663 19.8424 10.9458 19.8424 11.2374C19.8424 11.529 19.7264 11.8086 19.5201 12.0145L12.7777 18.757C12.5715 18.9628 12.2922 19.0785 12.0009 19.0787Z\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M15.1704 10.3984L17.8415 13.0695\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <button mat-menu-item (click)=\"deleteSubForm(i)\">\n <svg width=\"29\" height=\"28\" viewBox=\"0 0 29 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"0.5\" y=\"0.5\" width=\"27.6402\" height=\"26.1328\" rx=\"5.5\" fill=\"white\" stroke=\"#D8D8D8\"/>\n <path d=\"M8.60449 9.20637H20.0354\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M19.2189 9.20703V17.7863C19.2189 18.6482 18.4881 19.3462 17.5859 19.3462H11.0539C10.1517 19.3462 9.4209 18.6482 9.4209 17.7863V9.20703\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M16.7696 6.67122H11.8706\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.6871 12.3242V16.2239\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M15.9532 12.3242V16.2239\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </mat-menu>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n <div class=\"footer\">\n <div class=\"addNewBtn\" (click)=\"addNewSubmission()\">\n <svg width=\"15\" height=\"14\" viewBox=\"0 0 15 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.5556 13.2778H2.44444C1.64639 13.2778 1 12.6673 1 11.9136V2.3642C1 1.61048 1.64639 1 2.44444 1H12.5556C13.3536 1 14 1.61048 14 2.3642V11.9136C14 12.6673 13.3536 13.2778 12.5556 13.2778Z\" stroke=\"#D8D8D8\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.3335 7.50347H9.66683\" stroke=\"#084FFF\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M7.50005 5.33594V9.66927\" stroke=\"#084FFF\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <a class=\"ms-2 text-decoration-none\">Add New</a>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Injector, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-sub-form',\n templateUrl: './sub-form.component.html',\n styleUrls: ['./sub-form.component.scss'],\n})\nexport class SubFormComponent implements OnInit {\n @Input() subForm: any = {};\n @Input() edit: boolean = false;\n @Output() subFormChange = new EventEmitter<any>();\n @Input() acceptedLanguage: string ='';\n decodedDescription:string='';\n grid: any;\n \n ngOnInit() {\n if (this.subForm.subFormStructure == 'single') {\n this.bindAnswersToFormElements();\n }\n }\n\n async loadFormElementsComponent(grid: any) {\n this.grid = grid;\n const { FormElementsComponent } = await import('../form-elements/form-elements.component');\n return FormElementsComponent;\n }\n \n createInjector(): Injector {\n return Injector.create({\n providers: [\n { provide: 'grid', useValue: this.grid },\n { provide: 'state', useValue: 'child' },\n ],\n });\n }\n\n decodeHtml(html: string): string {\n const textArea = document.createElement('textarea');\n textArea.innerHTML = html; \n return textArea.value;\n }\n\n bindAnswersToFormElements() {\n const bindAnswers = (formElements: any[], submissions: any[]) => {\n formElements.forEach((formElement: { entityType: string; element: any }) => {\n if (formElement.entityType === 'QUESTION') {\n const submission = submissions.find((sub: { answers: any[] }) =>\n sub.answers.some((ans: { questionId: any }) => ans.questionId === formElement.element.id)\n );\n\n if (submission) {\n const answer = submission.answers.find((ans: { questionId: any }) => ans.questionId === formElement.element.id);\n if (answer) {\n formElement.element.answer = answer.answer;\n formElement.element.answerId = answer.answerId;\n formElement.element.validation = true;\n formElement.element.attachments = answer.attachments;\n this.subForm.submissionId = submission.submissionId;\n }\n }\n\n if (formElement.element.childLogics) {\n formElement.element.childLogics.forEach((childLogic: { formElements: any[] }) => {\n bindAnswers(childLogic.formElements, submissions);\n });\n }\n }\n });\n };\n\n if (this.subForm && this.subForm.formElements && this.subForm.submissions) {\n bindAnswers(this.subForm.formElements, this.subForm.submissions);\n }\n }\n\n\n updateSubFormWithSubmissions(event: any) {\n this.subForm = event;\n this.subFormChange.emit(this.subForm);\n }\n\n ngOnChanges(): void {\n if (this.subForm.description) {\n this.decodedDescription = this.decodeHtml(this.subForm.description);\n }\n }\n}\n","<div class=\"outer-container mb-4 px-3\">\n <div class=\"body container pt-3 pb-3 px-3\">\n <div class=\"tab-content pt-4 pb-3 px-3\">\n <p class=\"sectionTitle\">{{ subForm.title }}</p>\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\n\n <div *ngIf=\"subForm.subFormStructure == 'multiple'\">\n <lib-multiple-subform\n [subForm]=\"subForm\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-multiple-subform>\n </div>\n <div *ngIf=\"subForm.subFormStructure == 'single'\">\n <div *ngFor=\"let row of subForm.rows\">\n <div *ngFor=\"let grid of row.grid\">\n <div *ngIf=\"grid.entityType === 'QUESTION'\">\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\n <lib-check-box-fields *ngSwitchCase=\"'CHECK_BOX'\" [question]=\"grid.element\"></lib-check-box-fields>\n <lib-date-time-fields *ngSwitchCase=\"'DATE_TIME'\" [question]=\"grid.element\"></lib-date-time-fields>\n <lib-drop-down-fields *ngSwitchCase=\"'DROP_DOWN'\" [question]=\"grid.element\"></lib-drop-down-fields>\n <lib-file-picker-fields *ngSwitchCase=\"'FILE_PICKER'\" [question]=\"grid.element\"></lib-file-picker-fields>\n <lib-location-fields *ngSwitchCase=\"'LOCATION'\" [question]=\"grid.element\"></lib-location-fields>\n <lib-mail-fields *ngSwitchCase=\"'EMAIL'\" [question]=\"grid.element\"></lib-mail-fields>\n <lib-mobile-fields *ngSwitchCase=\"'MOBILE'\" [question]=\"grid.element\"></lib-mobile-fields>\n <lib-number-fields *ngSwitchCase=\"'NUMBER'\" [question]=\"grid.element\"></lib-number-fields>\n <lib-password-fields *ngSwitchCase=\"'PASSWORD'\" [question]=\"grid.element\"></lib-password-fields>\n <lib-radio-button-fields *ngSwitchCase=\"'RADIO_BUTTON'\" [question]=\"grid.element\"></lib-radio-button-fields>\n <lib-rich-text-editor-fields *ngSwitchCase=\"'RICH_TEXT_EDITOR'\" [question]=\"grid.element\"></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields *ngSwitchCase=\"'SELECTION_MATRIX'\" [question]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"></lib-selection-matrix-fields>\n <lib-signature-fields *ngSwitchCase=\"'SIGNATURE'\" [question]=\"grid.element\"></lib-signature-fields>\n <lib-slider-fields *ngSwitchCase=\"'SLIDER'\" [question]=\"grid.element\"></lib-slider-fields>\n <lib-terms-and-condition-fields *ngSwitchCase=\"'TERMS_AND_CONDITION'\" [question]=\"grid.element\"></lib-terms-and-condition-fields>\n <lib-text-area-fields *ngSwitchCase=\"'TEXT_AREA'\" [question]=\"grid.element\"></lib-text-area-fields>\n <lib-text-fields *ngSwitchCase=\"'TEXT_BOX'\" [question]=\"grid.element\"></lib-text-fields>\n <lib-toggle-switch-fields *ngSwitchCase=\"'TOGGLE_SWITCH'\" [question]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"></lib-toggle-switch-fields>\n <lib-url-fields *ngSwitchCase=\"'URL'\" [question]=\"grid.element\"></lib-url-fields>\n </div>\n \n <ng-container *ngIf=\"grid.element.childLogics\">\n <ng-container *ngComponentOutlet=\"loadFormElementsComponent(grid.element.childLogics) | async\"></ng-container>\n </ng-container>\n </div>\n \n <div *ngIf=\"grid.entityType === 'SECTION'\">\n <lib-section-fields\n [section]=\"grid.element\"\n ></lib-section-fields>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Injector, Input, Output } from '@angular/core';\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() edit: boolean = false;\n @Input() acceptedLanguage: string ='';\n decodedDescription:string='';\n grid: any;\n \n ngOnInit() { \n }\n\n async loadFormElementsComponent(grid: any) {\n this.grid = grid;\n const { FormElementsComponent } = await import('../form-elements/form-elements.component');\n return FormElementsComponent;\n }\n \n createInjector(): Injector {\n return Injector.create({\n providers: [\n { provide: 'grid', useValue: this.grid },\n { provide: 'state', useValue: 'child' },\n ],\n });\n }\n\n decodeHtml(html: string): string {\n const textArea = document.createElement('textarea');\n textArea.innerHTML = html; \n return textArea.value;\n }\n\n ngOnChanges(): void {\n if (this.questionGroup.description) {\n this.decodedDescription = this.decodeHtml(this.questionGroup.description);\n }\n }\n}\n","<div class=\"outer-container mb-4 px-3\">\n <div class=\"body container pt-3 pb-3 px-3\">\n <div class=\"tab-content pt-4 pb-3 px-3\">\n <p class=\"sectionTitle\">{{ questionGroup.title }}</p>\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\n \n <div class=\"mt-5\">\n <div *ngFor=\"let row of questionGroup.rows\">\n <div *ngFor=\"let grid of row.grid\">\n <div *ngIf=\"grid.entityType === 'QUESTION'\">\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\n <lib-check-box-fields *ngSwitchCase=\"'CHECK_BOX'\" [question]=\"grid.element\"></lib-check-box-fields>\n <lib-date-time-fields *ngSwitchCase=\"'DATE_TIME'\" [question]=\"grid.element\"></lib-date-time-fields>\n <lib-drop-down-fields *ngSwitchCase=\"'DROP_DOWN'\" [question]=\"grid.element\"></lib-drop-down-fields>\n <lib-file-picker-fields *ngSwitchCase=\"'FILE_PICKER'\" [question]=\"grid.element\"></lib-file-picker-fields>\n <lib-location-fields *ngSwitchCase=\"'LOCATION'\" [question]=\"grid.element\"></lib-location-fields>\n <lib-mail-fields *ngSwitchCase=\"'EMAIL'\" [question]=\"grid.element\"></lib-mail-fields>\n <lib-mobile-fields *ngSwitchCase=\"'MOBILE'\" [question]=\"grid.element\"></lib-mobile-fields>\n <lib-number-fields *ngSwitchCase=\"'NUMBER'\" [question]=\"grid.element\"></lib-number-fields>\n <lib-password-fields *ngSwitchCase=\"'PASSWORD'\" [question]=\"grid.element\"></lib-password-fields>\n <lib-radio-button-fields *ngSwitchCase=\"'RADIO_BUTTON'\" [question]=\"grid.element\"></lib-radio-button-fields>\n <lib-rich-text-editor-fields *ngSwitchCase=\"'RICH_TEXT_EDITOR'\" [question]=\"grid.element\"></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields *ngSwitchCase=\"'SELECTION_MATRIX'\" [question]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"></lib-selection-matrix-fields>\n <lib-signature-fields *ngSwitchCase=\"'SIGNATURE'\" [question]=\"grid.element\"></lib-signature-fields>\n <lib-slider-fields *ngSwitchCase=\"'SLIDER'\" [question]=\"grid.element\"></lib-slider-fields>\n <lib-terms-and-condition-fields *ngSwitchCase=\"'TERMS_AND_CONDITION'\" [question]=\"grid.element\"></lib-terms-and-condition-fields>\n <lib-text-area-fields *ngSwitchCase=\"'TEXT_AREA'\" [question]=\"grid.element\"></lib-text-area-fields>\n <lib-text-fields *ngSwitchCase=\"'TEXT_BOX'\" [question]=\"grid.element\"></lib-text-fields>\n <lib-toggle-switch-fields *ngSwitchCase=\"'TOGGLE_SWITCH'\" [question]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"></lib-toggle-switch-fields>\n <lib-url-fields *ngSwitchCase=\"'URL'\" [question]=\"grid.element\"></lib-url-fields>\n </div>\n \n <ng-container *ngIf=\"grid.element.childLogics\">\n <ng-container *ngComponentOutlet=\"loadFormElementsComponent(grid.element.childLogics) | async\"></ng-container>\n </ng-container>\n </div>\n \n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n ","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-recursive-logic',\n templateUrl: './recursive-logic.component.html',\n styleUrls: ['./recursive-logic.component.css']\n})\nexport class RecursiveLogicComponent {\n@Input() grid: any = {};\n @Input() currentPageIndex: number = 0;\n @Input() edit : boolean = false;\n @Input() acceptedLanguage: string ='';\n @Output() subFormChange = new EventEmitter<any>();\n @Input() state!: string;\n @Input() answer!: string;\n \n updateSubFormWithSubmissions(event:any){\n this.subFormChange.emit(event);\n }\n}\n","<div *ngIf=\"grid.entityType === 'QUESTION'\">\n <lib-question [question]=\"grid?.element\" [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"></lib-question>\n</div>\n<div *ngIf=\"grid.entityType === 'SECTION'\">\n <lib-section-fields [section]=\"grid.element\"></lib-section-fields>\n</div>\n<ng-container *ngIf=\"grid.entityType === 'SUBFORM'\">\n <lib-sub-form [subForm]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"></lib-sub-form>\n</ng-container>\n\n<ng-container *ngIf=\"grid.entityType === 'QUESTION_GROUP'\">\n <lib-question-group [questionGroup]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"></lib-question-group>\n</ng-container>","import {\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\n\n@Component({\n selector: 'lib-form-elements',\n templateUrl: './form-elements.component.html',\n styleUrls: ['./form-elements.component.scss'],\n})\nexport class FormElementsComponent {\n @Input() grid: any = {};\n @Input() currentPageIndex: number = 0;\n @Input() edit : boolean = false;\n @Input() acceptedLanguage: string ='';\n @Output() subFormChange = new EventEmitter<any>();\n @Input() state!: string;\n @Input() answer!: string;\n \n updateSubFormWithSubmissions(event:any){\n this.subFormChange.emit(event);\n }\n}\n","<ng-container *ngIf=\"state === 'child'; else parentBlock\">\n <div *ngFor=\"let childLogic of grid\">\n <div *ngIf=\"childLogic.showLogic && answer\">\n <div *ngFor=\"let row of childLogic.rows\">\n <div *ngFor=\"let grid of row.grid\">\n \n <lib-recursive-logic [grid]=\"grid\" [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\">\n </lib-recursive-logic>\n </div>\n </div>\n </div>\n</div>\n\n</ng-container>\n<ng-template #parentBlock>\n <lib-recursive-logic [grid]=\"grid\" [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\">\n </lib-recursive-logic>\n \n</ng-template>\n\n","import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-navigation-tabs',\n templateUrl: './navigation-tabs.component.html',\n styleUrls: ['./navigation-tabs.component.scss'],\n})\nexport class NavigationTabsComponent {\n @Input() pages: any[] = [];\n @Input() currentPageIndex: number = 0;\n @Output() pageChanged = new EventEmitter<number>();\n @Output() submitEmit: EventEmitter<any> = new EventEmitter<any>();\n @Input() edit : boolean = false;\n @Input() acceptedLanguage: string ='';\n @Input() eligibleForSubmission:{ status: boolean; message: string } = { status: true, message: '' };\n @Output() subFormChange = new EventEmitter<any>();\n @Input() pageDetails: any[] = [];\n @Output() rowSetIndex = new EventEmitter<number>();\n loadedPages: { [key: number]: boolean } = {};\n showTooltip: boolean = false;\n\n constructor() {\n // Load the first page initially\n this.loadedPages[this.currentPageIndex] = true;\n }\n\n\n ngOnInit() {\n }\n\n updateSubFormWithSubmissions(event:any){\n this.subFormChange.emit(event);\n }\n\n\n setCurrentPage(index: number) {\n this.pageChanged.emit(index);\n this.currentPageIndex = index;\n // Mark this page as loaded to avoid reloading\n if (!this.loadedPages[index]) {\n this.loadedPages[index] = true;\n }\n \n }\n\n submitForm() {\n this.submitEmit.emit();\n }\n\n trackByIndex(index: number, item: any): number {\n return index;\n }\n\n loadMoreData(): void {\n this.rowSetIndex.emit(this.currentPageIndex);\n }\n\n toggleTooltip() {\n this.showTooltip = !this.eligibleForSubmission.status;\n}\n}\n","<div class=\"tab-inner-container\">\n <ul class=\"nav nav-tabs navTabs\" id=\"myTab\" role=\"tablist\">\n <li\n class=\"nav-item\"\n role=\"presentation\"\n *ngFor=\"let page of pageDetails; let i = index; trackBy: trackByIndex\"\n [ngClass]=\"{'nav-item-ara': acceptedLanguage === 'ara', 'nav-item-default': acceptedLanguage !== 'ara'}\"\n >\n <button\n class=\"nav-link\"\n [title]=\"page.title\"\n data-bs-toggle=\"tooltip\"\n data-bs-placement=\"top\"\n data-bs-custom-class=\"custom-tooltip\"\n [class.active]=\"i === currentPageIndex\"\n id=\"tab-{{ i }}\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-controls]=\"'content-' + i\"\n [attr.aria-selected]=\"i === currentPageIndex\"\n (click)=\"setCurrentPage(i)\"\n >\n {{ page.name }}\n </button>\n </li>\n </ul>\n\n <div class=\"tab-content pt-5 pb-3 px-1\">\n <ng-container *ngIf=\"pages[currentPageIndex]\">\n <div\n class=\"tab-pane fade show active\"\n id=\"content-{{ currentPageIndex }}\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'tab-' + currentPageIndex\"\n >\n <div *ngIf=\"loadedPages[currentPageIndex]\">\n <div class=\"data-container\" \n infiniteScroll \n [infiniteScrollDistance]=\"2\" \n [infiniteScrollThrottle]=\"200\" \n (scrolled)=\"loadMoreData()\">\n <div *ngFor=\"let row of pages[currentPageIndex].rows\">\n <div class=\"margin d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / 12)}\">\n <lib-form-elements\n [grid]=\"grid\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"currentPageIndex === pages.length - 1\"\n class=\"footerButton d-flex justify-content-end me-4 ms-4 position-relative\"\n >\n <!-- Hover detection container -->\n <div\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n <button\n class=\"btn btn-primary rounded-pill submitButton\"\n type=\"button\"\n (click)=\"submitForm()\"\n [disabled]=\"!eligibleForSubmission.status\"\n >\n Submit\n </button>\n \n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n </div>\n \n\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-next-prev-navigation',\n templateUrl: './next-prev-navigation.component.html',\n styleUrls: ['./next-prev-navigation.component.scss']\n})\nexport class NextPrevNavigationComponent {\n\n @Input() currentPageIndex: number = 0;\n @Input() pages: any[] = [];\n @Input() previousPage: any = {};\n @Input() nextPage: any = {};\n @Input() currentPage: any = {};\n @Input() pageDetails: any[] = [];\n @Output() navigateNext = new EventEmitter<void>();\n @Output() navigatePrevious = new EventEmitter<void>();\n @Output() submitEmit: EventEmitter<any> = new EventEmitter<any>();\n @Input() edit: boolean = false;\n @Input() acceptedLanguage: string ='';\n @Output() subFormChange = new EventEmitter<any>();\n @Output() rowSetIndex = new EventEmitter<number>();\n\n\n\n updateSubFormWithSubmissions(event: any) {\n this.subFormChange.emit(event);\n }\n\n onNavigateNext() {\n this.navigateNext.emit();\n }\n\n onNavigatePrevious() {\n this.navigatePrevious.emit();\n }\n\n submitForm() {\n this.submitEmit.emit();\n }\n\n loadMoreData(): void {\n this.rowSetIndex.emit(this.currentPageIndex);\n }\n}\n","<div class=\"pageTitleDiv\">\n <p class=\"pageTitle\">{{pageDetails[currentPageIndex].name}}</p>\n</div>\n<div class=\"button-inner-container rounded\">\n <div class=\"tab-content pt-5 pb-3 row\">\n <div class=\"data-container\" \n infiniteScroll \n [infiniteScrollDistance]=\"2\" \n [infiniteScrollThrottle]=\"200\" \n (scrolled)=\"loadMoreData()\">\n \n <div *ngFor=\"let row of pages[currentPageIndex]?.rows\" class=\"marginSize d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / (12))}\">\n <lib-form-elements\n [grid]=\"grid\"\n [currentPageIndex]=\"currentPageIndex\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n state=\"parent\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n <div class=\"footerButton\">\n <div\n class=\"prevButtonDiv\"\n [ngClass]=\"{ 'prevDirection-rtl': acceptedLanguage === 'ara' }\">\n <button\n class=\"me-md-2 rounded-pill navButton\"\n type=\"button\"\n (click)=\"onNavigatePrevious()\"\n *ngIf=\"0 < currentPageIndex\"\n >\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #defaultSvg>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n Previous | {{ previousPage.name }}\n </button>\n </div>\n <div\n class=\"nextButtonDiv\"\n [ngClass]=\"{ 'nextDirection-rtl': acceptedLanguage === 'ara' }\"\n >\n <button\n class=\"md-2 rounded-pill navButton\"\n type=\"button\"\n (click)=\"onNavigateNext()\"\n *ngIf=\"currentPageIndex < pageDetails.length - 1\"\n >\n Next | {{ nextPage.name }}\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #defaultSvg>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n </button>\n <button\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill\"\n type=\"button\"\n *ngIf=\"currentPageIndex == pageDetails.length - 1\"\n (click)=\"submitForm()\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-submission-container',\n templateUrl: './submission-container.component.html',\n styleUrls: ['./submission-container.component.scss']\n})\nexport class SubmissionContainerComponent {\n @Input() parentQuestionAnswers:any;\n\n isImageUrl(url: string): boolean {\n return url.match(/\\.(jpeg|jpg|gif|png)$/) != null;\n }\n}\n","<div class=\"subModule\">\n <div class=\"submission-container\">\n <div *ngFor=\"let qa of parentQuestionAnswers\" class=\"submission-item\">\n <div class=\"key\">{{ qa.question }}</div>\n <div class=\"value\">\n <ng-container *ngIf=\"qa.elementType === 'FILE_PICKER'; else text\">\n <div class=\"files\" *ngFor=\"let attachment of qa.attachments\">\n <ng-container *ngIf=\"isImageUrl(attachment.fileName); else fileLink\">\n <img [src]=\"attachment.fileUrl\" alt=\"{{ attachment.fileName }}\" class=\"image\">\n </ng-container>\n <ng-template #fileLink>\n <p>{{ attachment.fileName }}</p>\n <a class=\"fileName\" [href]=\"attachment.fileUrl\" target=\"_blank\">\n <i class=\"bi bi-file-earmark\"></i>\n </a>\n </ng-template>\n </div>\n </ng-container>\n <ng-template #text>\n <ng-container [ngSwitch]=\"qa.elementType\">\n <p *ngSwitchCase=\"'RICH_TEXT_EDITOR'\" [innerHTML]=\"qa.values\"></p>\n <p *ngSwitchCase=\"'DROP_DOWN'\">{{ qa.values.join(', ') }}</p>\n <p *ngSwitchCase=\"'SELECTION_MATRIX'\">{{ qa.values.join(', ') }}</p>\n <p *ngSwitchDefault>{{ qa.values }}</p>\n </ng-container>\n </ng-template>\n </div>\n </div>\n</div>\n </div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormService } from '../../services/form.service';\nimport * as mapper from '../../services/mapper.service';\nimport { PublicForm } from '../../models/publicForm.model';\nimport { ToastrService } from 'ngx-toastr';\nimport { Router } from '@angular/router';\nimport { DataService } from '../../services/data.service';\nimport { RecaptchaService } from '../../services/recaptcha.service';\n\ninterface Answer {\n questionId: string;\n answer: any;\n answerId?: string;\n deleteFiles?: string[];\n}\n\ninterface Submission {\n submissionId: string;\n answers: Answer[];\n}\n\ninterface Form {\n formId: string;\n deletedSubmissions: any[];\n submissions: Submission[];\n}\n\ninterface QuestionAnswersWrapper {\n parentId: string;\n answers: Answer[];\n forms: Form[];\n}\n\n@Component({\n selector: 'lib-submit-form',\n templateUrl: './submit-form.component.html',\n styleUrls: ['./submit-form.component.scss'],\n})\nexport class SubmitFormComponent implements OnInit, OnDestroy {\n question: PublicForm | null = null;\n @Input() moduleName: string = '';\n @Input() edit: boolean = false;\n @Input() submissionId: string = '';\n @Input() acceptedLanguage: string = '';\n @Output() submit: EventEmitter<string> = new EventEmitter<string>();\n @Output() apiCalled: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n name: string = '';\n saveAutomatically: boolean = false;\n saveInterval: number = 0;\n customizeFont: boolean = false;\n fontFamily: string = '';\n fontSize: number = 0;\n enableDataExport: boolean = false;\n fileFormats: string[] = [];\n enableQuestionNumbering: boolean = false;\n questionNumbering: string = '';\n enableGoogleRecaptcha: boolean = false;\n googleRecaptchaKey: string = '';\n googleRecaptchaSecret: string = '';\n navigation: string = '';\n markAllQuestionsAsRequired: boolean = false;\n pages: any = [];\n currentPageIndex: number = 0;\n previousPage: any = {};\n currentPage: any = {};\n nextPage: any = {};\n lastTab: boolean = false;\n questionAnswers: QuestionAnswersWrapper = { parentId: '', answers: [], forms: [] };\n files: { questionId: string; file: any }[] = [];\n parentQuestions: any;\n submission: any = {};\n parentQuestionAnswers: any;\n parentSubmissionId: string = '';\n submissionInProgress: boolean = false;\n recaptchaToken: string = '';\n pageDetails: any = [];\n pageNumber: number = 1;\n rowSet: number = 0;\n rowSetCount: [number] = [0];\n eligibleForSubmission:{ status: boolean; message: string } = { status: true, message: '' };\n\n\n\n constructor(\n private formService: FormService,\n private toastr: ToastrService,\n private router: Router,\n private dataService: DataService,\n private recaptchaService: RecaptchaService\n ) {\n const navigation = this.router.getCurrentNavigation();\n this.submission = navigation?.extras.state?.['submission']\n this.parentSubmissionId = this.submission?.id;\n this.parentQuestionAnswers = this.submission?.questionAnswers\n this.parentQuestions = navigation?.extras.state?.['parentQuestions'];\n this.dataService.setParentQuestions(this.parentQuestions);\n }\n ngOnDestroy(): void {\n this.recaptchaService.removeRecaptchaScript();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['acceptedLanguage']) {\n this.currentPageIndex = 0;\n this.acceptedLanguage = changes['acceptedLanguage'].currentValue;\n // if(!this.edit)\n this.getFormData();\n }\n }\n\n ngOnInit() {\n if (this.edit && this.submissionId) {\n this.getSubmittedFormData();\n } else {\n // this.getFormData();\n }\n\n if (this.enableGoogleRecaptcha) {\n this.getToken();\n }\n }\n\n async getToken(): Promise<void> {\n try {\n const token = await this.recaptchaService.getRecaptchaToken();\n this.recaptchaToken = token;\n } catch (error: any) {\n\n\n console.error('Error while getting reCAPTCHA token:', error.error.message);\n }\n }\n\n private loadFont(fontUrl: string) {\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = fontUrl;\n document.head.appendChild(link);\n }\n\n getFormData() {\n this.formService.getQuestions(this.moduleName).subscribe((response: any) => {\n this.enableGoogleRecaptcha = response.result.moduleConfiguration?.enableGoogleRecaptcha;\n this.question = mapper.mapPublicFormToModel(response);\n this.assignQuestionProperties(this.question);\n\n //set font family and font size\n if (response.result.moduleConfiguration.customizeFont) {\n this.fontFamily = response.result.moduleConfiguration.fontFamily\n this.fontSize = response.result.moduleConfiguration.fontSize\n } else {\n this.fontFamily = 'poppins';\n this.fontSize = 18;\n }\n if(response?.result?.pageDetails){\n this.pageDetails = response.result.pageDetails;\n this.nextPage = this.pageDetails[1];\n }\n this.rowSetCount[0] = response.result.totalNumberRow;\n document.documentElement.style.setProperty('--library-font-family', this.fontFamily);\n document.documentElement.style.setProperty('--library-font-size', this.fontSize + 'px');\n const fontUrl = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(this.fontFamily)}`;\n this.loadFont(fontUrl);\n\n if (this.enableGoogleRecaptcha)\n this.getToken();\n for (let i = 0; i < this.pageDetails.length; i++) {\n if (!this.pages[i]) {\n this.pages[i] = [];\n }\n }\n });\n }\n\n getSubmittedFormData() {\n this.formService\n .getSubmittedForm(this.moduleName, this.submissionId)\n .subscribe((response) => {\n this.enableGoogleRecaptcha = response.result.moduleConfiguration.enableGoogleRecaptcha;\n this.question = mapper.mapPublicFormToModel(response);\n this.assignQuestionProperties(this.question);\n if(response?.result?.pageDetails){\n this.pageDetails = response.result.pageDetails;\n this.nextPage = this.pageDetails[1];\n }\n for (let i = 0; i < this.pageDetails.length; i++) {\n if (!this.pages[i]) {\n this.pages[i] = [];\n }\n }\n if (this.enableGoogleRecaptcha) {\n this.getToken();\n }\n });\n }\n\n assignQuestionProperties(question: PublicForm) {\n this.name = question.name;\n this.pages = question.pages;\n if (this.parentQuestions) {\n this.parentQuestionAnswers = question?.questionAnswers;\n this.parentSubmissionId = question?.parentId;\n }\n this.currentPage = this.pages[0];\n this.nextPage = this.pages[1];\n this.saveAutomatically = question.formConfiguration.saveAutomatically;\n this.saveInterval = question.formConfiguration.saveInterval;\n this.customizeFont = question.formConfiguration.customizeFont;\n this.fontFamily = question.formConfiguration.fontFamily;\n this.fontSize = question.formConfiguration.fontSize;\n this.enableDataExport = question.formConfiguration.enableDataExport;\n this.fileFormats = question.formConfiguration.fileFormats;\n this.enableQuestionNumbering =\n question.formConfiguration.enableQuestionNumbering;\n this.questionNumbering = question.formConfiguration.questionNumbering;\n this.enableGoogleRecaptcha =\n question.formConfiguration.enableGoogleRecaptcha;\n this.googleRecaptchaKey = question.formConfiguration.googleRecaptchaKey;\n this.googleRecaptchaSecret =\n question.formConfiguration.googleRecaptchaSecret;\n this.navigation = question.formConfiguration.navigation;\n this.markAllQuestionsAsRequired =\n question.formConfiguration.markAllQuestionsAsRequired;\n this.apiCalled.emit(true)\n }\n\n navigateToNextPage() { \n this.setCurrentPage(this.currentPageIndex+1);\n if (this.currentPageIndex < this.pageDetails.length - 1) {\n if (this.markAllQuestionsAsRequired) {\n const currentPageData = this.pages[this.currentPageIndex];\n const validationResponse =\n this.validateRequiredQuestions(currentPageData);\n if (validationResponse.isValid) {\n if (this.pageDetails && this.pageDetails[this.currentPageIndex]) {\n this.previousPage = this.pageDetails[this.currentPageIndex];\n }\n this.nextPage = this.pageDetails[this.currentPageIndex+1];\n } else { \n this.toastr.warning(validationResponse.message);\n }\n } else {\n this.previousPage = this.pageDetails[this.currentPageIndex];\n this.currentPageIndex++;\n this.currentPage = this.pages[this.currentPageIndex];\n this.nextPage = this.pageDetails[this.currentPageIndex];\n }\n }\n }\n\n navigateToPreviousPage() {\n if (this.currentPageIndex > 0) {\n if (this.markAllQuestionsAsRequired) {\n const currentPageData = this.pages[this.currentPageIndex];\n const validationResponse =\n this.validateRequiredQuestions(currentPageData);\n if (validationResponse.isValid) {\n this.nextPage = this.pageDetails[this.currentPageIndex];\n this.currentPageIndex--;\n this.currentPage = this.pages[this.currentPageIndex];\n this.previousPage = this.pageDetails[this.currentPageIndex-1];\n } else {\n this.toastr.warning(validationResponse.message);\n }\n } else {\n this.nextPage = this.pageDetails[this.currentPageIndex];\n this.currentPageIndex--;\n this.currentPage = this.pages[this.currentPageIndex];\n this.previousPage = this.pageDetails[this.currentPageIndex-1];\n }\n }\n }\n checkSubmissionEligibility(): void {\n this.eligibleForSubmission = this.validateAllElementLoaded();\n \n \n }\n\n setCurrentPage(index: number) { \n if (index < this.pages.length) {\n if (!this.pages[index] || this.pages[index].length != 0) {\n return;\n }\n }\n this.pageNumber = index + 1;\n if(this.edit){\n this.formService.getSubmittedForm(this.moduleName, this.submissionId, this.pageNumber, this.rowSet).subscribe((response: any) => {\n if (response?.result?.pages) {\n this.pages[index] = response.result.pages[0]; \n }\n this.currentPageIndex=index;\n this.currentPage = this.pages[index];\n this.rowSetCount[index] = response.result.totalNumberRow;\n });\n }else{\n this.formService.getQuestions(this.moduleName,this.pageNumber,this.rowSet).subscribe((response: any) => {\n if (response?.result?.pages) {\n this.pages[index] = response.result.pages[0]; \n }\n this.currentPageIndex=index;\n this.currentPage = this.pages[index];\n this.rowSetCount[index] = response.result.totalNumberRow;\n });\n }\n if (this.markAllQuestionsAsRequired) {\n const currentPageData = this.pages[this.currentPageIndex];\n const validationResponse =\n this.validateRequiredQuestions(currentPageData);\n if (validationResponse.isValid) {\n this.currentPageIndex = index;\n } else {\n this.toastr.warning(validationResponse.message);\n }\n } else {\n this.currentPageIndex = index;\n }\n \n \n }\n\n loadMoreData(index: number): void {\n let rowCountLimit = this.rowSetCount[index];\n let rowCount =this.pages[index].rows.length/20;\n rowCount = Math.ceil(rowCount);\n if(rowCount+1>rowCountLimit)\n {\n this.checkSubmissionEligibility();\n return;\n }\n\n if(this.edit){\n this.formService.getSubmittedForm(this.moduleName, this.submissionId, index+1, rowCount).subscribe((response: any) => {\n const newRows = response?.result?.pages[0]?.rows ?? [];\n this.pages[index].rows = [...(this.pages[index]?.rows ?? []), ...newRows];\n this.currentPageIndex=index;\n this.currentPage = this.pages[index];\n this.rowSetCount[index] = response.result.totalNumberRow;\n this.checkSubmissionEligibility();\n });\n }\n else{\n this.formService.getQuestions(this.moduleName, index+1, rowCount).subscribe((response: any) => {\n const newRows = response?.result?.pages[0]?.rows ?? [];\n this.pages[index].rows = [...(this.pages[index]?.rows ?? []), ...newRows];\n this.currentPageIndex=index;\n this.currentPage = this.pages[index];\n this.rowSetCount[index] = response.result.totalNumberRow;\n this.checkSubmissionEligibility();\n });\n }\n\n \n }\n\n generateQuestionAnswers() {\n this.files = [];\n const extractQuestions = (\n formElements: any[],\n parentFormId: string | null = null,\n isInSubForm: boolean = false,\n subFormIndex: number = 0\n ): { answers: Answer[]; forms: Form[] } => {\n const questions: Answer[] = [];\n const forms: Form[] = [];\n\n formElements.forEach((element) => {\n if (element.entityType === 'QUESTION') {\n let baseQuestion: any;\n if (element.element.formElement.elementType === 'FILE_PICKER') {\n baseQuestion = {\n questionId: element.element.id,\n answer: '',\n };\n if (Array.isArray(element.element.answer)) {\n const questionId = isInSubForm\n ? `${parentFormId}_${subFormIndex}_${element.element.id}`\n : element.element.id;\n this.files.push({\n questionId: questionId,\n file: element.element.answer,\n });\n }\n } else {\n baseQuestion = {\n questionId: element.element.id,\n answer: element.element.answer,\n };\n }\n if (this.edit) {\n questions.push({\n ...baseQuestion,\n answerId: element.element.answerId || '',\n deleteFiles: element.element.deleteFiles || [],\n });\n } else {\n questions.push(baseQuestion);\n }\n\n if (element.element.childLogics) {\n for (let logic of element.element.childLogics) {\n if (logic.showLogic) {\n for (let row of logic.rows) {\n const result = extractQuestions(\n row.grid,\n parentFormId,\n isInSubForm,\n subFormIndex\n );\n questions.push(...result.answers);\n forms.push(...result.forms);\n }\n\n }\n }\n }\n } else if (element.entityType === 'SUBFORM') {\n const subformId = element.element.id;\n const submissionId = element.element.submissionId;\n\n if (element.element.subFormStructure === 'single') {\n let subformQuestions: any = { answers: [] };\n const subform: Form = {\n formId: subformId,\n deletedSubmissions: [],\n submissions: [],\n };\n element.element.rows.forEach((row: any) => {\n subformQuestions = extractQuestions(\n row.grid,\n subformId,\n true,\n forms.length\n );\n\n subform.submissions.push(\n {\n submissionId: submissionId,\n answers: subformQuestions.answers,\n },\n );\n \n })\n forms.push(subform);\n } else if (element.element.subFormStructure === 'multiple') {\n const subformAnswers: Answer[] = [];\n let subformQuestions: any = { answers: [] };\n element.element.rows.forEach((row: any) => {\n subformQuestions = extractQuestions(\n row.grid,\n subformId,\n true,\n forms.length\n )\n })\n const existingSubform = forms.find(\n (form) => form.formId === subformId\n );\n element.element?.submissions?.forEach(\n (submission: any, index: number) => {\n submission.answers.forEach((answer: any) => {\n if (Array.isArray(answer.files)) {\n const questionId = `${subformId}_${index}_${answer.questionId}`;\n this.files.push({\n questionId: questionId,\n file: answer.files,\n });\n delete answer.files;\n }\n delete answer.attachments;\n });\n }\n );\n\n const subform: Form = {\n formId: subformId,\n deletedSubmissions: element.element.deletedSubmissions,\n submissions: element.element.submissions,\n };\n forms.push(subform);\n }\n }\n else if(element.entityType === 'QUESTION_GROUP'){\n // Handle Question Group by iterating through rows\n element.element.rows.forEach((row: any) => {\n row.grid.forEach((gridItem: any) => {\n if (gridItem.entityType === 'QUESTION') {\n questions.push({\n questionId: gridItem.element.id,\n answer: gridItem.element.answer,\n });\n }\n });\n });\n }\n });\n return { answers: questions, forms: forms };\n };\n\n const processPages = (\n pages: any[]\n ): { answers: Answer[]; forms: Form[] } => {\n const questions: Answer[] = [];\n const forms: Form[] = [];\n\n pages.forEach((page) => {\n page.rows.forEach((row: any) => {\n const result = extractQuestions(row.grid);\n questions.push(...result.answers);\n forms.push(...result.forms);\n });\n });\n\n return { answers: questions, forms: forms };\n };\n\n const result = processPages(this.pages);\n\n this.questionAnswers = {\n parentId: '',\n answers: result.answers,\n forms: result.forms,\n };\n }\n validateAllElementLoaded(): { status: boolean; message: string } {\n if (this.pages.length < this.pageDetails.length) {\n return {\n status: false,\n message: \"Please ensure all pages are fully visible before submitting the form.\"\n };\n }\n \n const incompletePages: string[] = [];\n \n this.pages.forEach((p: any, i: number) => {\n if (!p || !Array.isArray(p.rows) || Math.ceil(p.rows.length / 20) < this.rowSetCount[i]) {\n incompletePages.push(this.pageDetails[i].name);\n }\n });\n \n if (incompletePages.length > 0) {\n return {\n status: false,\n message: `Some sections are still loading. Please scroll through the following pages to ensure all questions are loaded: ${incompletePages.join(\", \")}.`,\n };\n }\n \n return { status: true, message: \"Great! All sections are complete. You can now submit the form.\" };\n }\n \n \n \n \n\n\n submitForm() {\n if(!this.validateAllElementLoaded().status){\n this.toastr.warning('Please wait for all elements to load'); \n return;\n }\n if (this.submissionInProgress) {\n return;\n }\n \n this.submissionInProgress = true;\n let validationResponse = this.validateForm(this.pages);\n this.generateQuestionAnswers();\n if (validationResponse.isValid) {\n const formData = new FormData();\n this.questionAnswers.parentId = this.parentSubmissionId;\n formData.append('json', JSON.stringify(this.questionAnswers));\n if (this.files.length > 0) {\n this.files.forEach((fileItem) => {\n fileItem.file.forEach((file: any) => {\n formData.append(fileItem.questionId, file._file);\n });\n });\n }\n const formServiceCall = this.edit && this.submissionId\n ? this.formService.updateForm(this.moduleName, this.submissionId, formData, this.recaptchaToken)\n : this.formService.submitForm(this.moduleName, formData, this.recaptchaToken);\n\n formServiceCall.subscribe({\n next: (response) => {\n this.toastr.success(this.edit ? 'Form updated successfully' : 'Form submitted successfully');\n this.submit.emit('success');\n this.submissionInProgress = false;\n },\n error: (error) => {\n this.toastr.error(error.error.message);\n this.submissionInProgress = false;\n if (this.enableGoogleRecaptcha) {\n this.getToken();\n }\n }\n });\n } else {\n\n this.toastr.error(validationResponse.message);\n this.submissionInProgress = false;\n }\n }\n\n validateForm(jsonData: any): {\n isValid: boolean;\n message: string;\n pageIndex: number | 0;\n } {\n const validateQuestions = (\n formElements: any[]\n ): { isValid: boolean; message: string; pageIndex: number | 0 } => {\n for (let element of formElements) {\n if (element.entityType === 'QUESTION') {\n const required = element.element.required;\n const answer = element.element.answer;\n const validation = element.element.validation;\n if (element.element.formElement.elementType === 'FILE_PICKER') {\n const attachment = element.element.attachments;\n if (required) {\n if ((!answer || answer.length === 0) && attachment.length == 0) {\n return {\n isValid: false,\n message: `Form is invalid - Required file question ${element.element.questionNumber} has no files uploaded.`,\n pageIndex: 0,\n };\n }\n }\n } else {\n if (required) {\n if (!answer || Object.keys(answer).length === 0) {\n return {\n isValid: false,\n message: `Form is invalid - Question ${element.element.questionNumber} is required but no answer provided.`,\n pageIndex: 0,\n };\n } else if (!validation) {\n return {\n isValid: false,\n message: `Form is invalid - Question ${element.element.questionNumber} is required but validation is false.`,\n pageIndex: 0,\n };\n }\n } else if (!required && answer && Object.keys(answer).length > 0) {\n if (!validation) {\n return {\n isValid: false,\n message: `Form is invalid - Question ${element.element.questionNumber} is not required but answer provided with validation false.`,\n pageIndex: 0,\n };\n }\n }\n }\n if (element.element.childLogics) {\n for (let logic of element.element.childLogics) {\n if (logic.showLogic) {\n const result = validateQuestions(logic.rows);\n if (!result.isValid) return result;\n }\n }\n }\n } else if (element.entityType === 'SUBFORM') {\n if (element.element.subFormStructure === \"multiple\") {\n const data = element.element.rows;\n const requiredQuestionIds = data\n .flatMap((row: any) => row.grid) // Extracting grid items from each object\n .filter((item: any) => {\n return item.element.required; // Ensuring the filter properly checks 'required'\n })\n .map((item: any) => item.element.id);\n\n if (requiredQuestionIds.length > 0) {\n\n if (element?.element?.submissions?.length > 0) {\n const areRequiredQuestionsAnswered = requiredQuestionIds.every((requiredId: string) => {\n const matchingAnswer = element?.element?.submissions\n .flatMap((sub: any) => sub.answers)\n .find((answer: any) => answer.questionId === requiredId);\n return matchingAnswer && matchingAnswer.answer.trim() !== \"\";\n });\n if (!areRequiredQuestionsAnswered) {\n return {\n isValid: false,\n message: \"Form is invalid - Question is required but no answer provided.\",\n pageIndex: 0,\n };\n } else {\n return { isValid: true, message: \"\", pageIndex: 0 };\n }\n } else {\n return {\n isValid: false,\n message: \"Form is invalid - No submissions provided for required questions.\",\n pageIndex: 0,\n };\n }\n\n } else {\n return { isValid: true, message: \"\", pageIndex: 0 };\n }\n\n\n } else {\n if (element.element.rows) { \n const results = element.element.rows.map((row: any) => {\n const validationResult = validateQuestions(row.grid);\n return validationResult; \n });\n const isValid = results.every((res: any) => res.isValid);\n if (!isValid) {\n return results;\n } \n // const result = element.element.rows.flatMap((row: any) => \n // {\n // validateQuestions(row.grid);\n // if (!result.isValid) return result;\n // })\n }\n }\n }\n }\n return { isValid: true, message: '', pageIndex: 0 };\n };\n\n for (let pageIndex = 0; pageIndex < jsonData.length; pageIndex++) {\n const page = jsonData[pageIndex];\n for (let row of page.rows) {\n const result = validateQuestions(row.grid);\n if (!result.isValid) {\n return {\n isValid: false,\n message: `Page ${pageIndex + 1}: ${result.message}`,\n pageIndex: pageIndex,\n };\n }\n }\n }\n return {\n isValid: true,\n message: 'Form is valid.',\n pageIndex: 0,\n };\n }\n\n validateRequiredQuestions(page: any): { isValid: boolean; message: string } {\n const validateQuestions = (\n formElements: any[]\n ): { isValid: boolean; message: string } => {\n for (let element of formElements) {\n if (element.entityType === 'QUESTION') {\n const required = element.element.required;\n const answer = element.element.answer;\n if (element.element.formElement.elementType === 'FILE_PICKER') {\n if (required) {\n if (!answer || answer.length === 0) {\n return {\n isValid: false,\n message: `Required file question ${element.element.questionNumber} is not answered.`,\n };\n }\n }\n } else {\n if (required) {\n if (!answer || Object.keys(answer).length === 0) {\n return {\n isValid: false,\n message: `Required question ${element.element.questionNumber} is not answered.`,\n };\n }\n }\n }\n if (element.element.childLogics) {\n for (let logic of element.element.childLogics) {\n if (logic.showLogic) {\n for (let row of logic.rows) {\n const result = validateQuestions(row.grid);\n if (!result.isValid) return result;\n }\n }\n }\n }\n } else if (element.entityType === 'SUBFORM') {\n if (element.element.rows) {\n for (let row of element.element.rows) {\n const result = validateQuestions(row.grid);\n if (!result.isValid) return result;\n }\n\n }\n }\n }\n return { isValid: true, message: 'All required questions are answered.' };\n };\n\n for (let row of page.rows) {\n const result = validateQuestions(row.grid);\n if (!result.isValid) {\n return result;\n }\n }\n return { isValid: true, message: 'All required questions are answered.' };\n }\n\n updateSubFormWithSubmissions(event: any) {\n this.updateSubForm(this.pages, event);\n }\n\n updateSubForm = (pages: any[], updatedSubForm: any) => {\n pages.forEach((page) => {\n page.rows.forEach((row: any) => {\n row.grid.forEach((element: any) => {\n if (\n element.entityType === 'SUBFORM' &&\n element.element.id === updatedSubForm.formId\n ) {\n // Update the existing subform with the new data\n element.element = updatedSubForm;\n } else if (\n element.entityType === 'SUBFORM' &&\n element.element.id !== updatedSubForm.formId\n ) {\n // Handle multiple subforms logic here if needed\n } else if (\n element.entityType === 'QUESTION' &&\n element.element.childLogics\n ) {\n // Recursively update child logics\n // element.element.childLogics.forEach((logic: any) => {\n // if (logic.showLogic) {\n // this.updateSubForm(logic.rows, updatedSubForm);\n // }\n // });\n }\n });\n });\n });\n };\n}\n","<div class=\"outer-container\">\n \n \n <div class=\"head container\">\n <lib-header [name]=\"name\"></lib-header>\n </div>\n <div class=\"body container\">\n \n <lib-submission-container [parentQuestionAnswers]=\"parentQuestionAnswers\"\n *ngIf=\"parentQuestionAnswers\"></lib-submission-container>\n \n <lib-navigation-tabs\n *ngIf=\"navigation == 'TAB'\"\n [pages]=\"pages\"\n [currentPageIndex]=\"currentPageIndex\"\n (pageChanged)=\"setCurrentPage($event)\"\n (submitEmit)=\"submitForm()\"\n [pageDetails]=\"pageDetails\"\n [eligibleForSubmission]=\"eligibleForSubmission\"\n [edit]=\"edit\"\n [acceptedLanguage] = \"acceptedLanguage\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n (rowSetIndex)=\"loadMoreData($event)\"\n ></lib-navigation-tabs>\n <lib-next-prev-navigation\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\n [currentPageIndex]=\"currentPageIndex\"\n [pageDetails]=\"pageDetails\"\n (rowSetIndex)=\"loadMoreData($event)\"\n [pages]=\"pages\"\n [previousPage]=\"previousPage\"\n [currentPage]=\"currentPage\"\n [nextPage]=\"nextPage\"\n (navigateNext)=\"navigateToNextPage()\"\n (navigatePrevious)=\"navigateToPreviousPage()\"\n [acceptedLanguage] = \"acceptedLanguage\"\n (submitEmit)=\"submitForm()\"\n [edit]=\"edit\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n ></lib-next-prev-navigation>\n </div>\n</div>\n","import { Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { DataService } from '../services/data.service';\nimport { DOCUMENT } from '@angular/common';\nimport { environment } from '../environment/environment';\n\n\n@Component({\n selector: 'lib-formSubmission',\n templateUrl: './form-submission.component.html',\n styleUrls: ['./form-submission.component.scss'],\n})\n\nexport class FormSubmissionComponent implements OnInit {\n @Input() formData: any = {};\n @Input() edit: boolean = false;\n @Input() submissionId: string = '';\n @Output() submitForm: EventEmitter<string> = new EventEmitter<string>();\n @Output() apiCalled: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n header:any;\n acceptedLanguage!: string;\n\n constructor(private dataService: DataService, @Inject(DOCUMENT) private document: Document) { }\n \n ngOnChanges(changes: SimpleChanges): void {\n if (changes['formData']) {\n this.dataService.setHeader(changes['formData'].currentValue?.headers);\n \n }\n }\n \n ngOnInit() {\n this.dataService.setApiUrl(this.formData.apiurl);\n this.dataService.setHeader(this.formData.headers);\n\n this.dataService.header$.subscribe((data) => {\n this.header = data;\n this.setHtmlDirection(this.header.acceptedLanguage);\n });\n }\n\n setHtmlDirection(language: string) {\n const htmlTag = this.document.getElementsByTagName('html')[0] as HTMLHtmlElement;\n\n if (language === 'ara' || language === 'ar') {\n environment.htmlDirection = 'rtl';\n } else {\n environment.htmlDirection = 'ltr';\n }\n\n htmlTag.dir = environment.htmlDirection; \n }\n\n submit(event: any) {\n this.submitForm.emit(event);\n }\n\n getFormApiCalled(event: any) {\n this.apiCalled.emit(true);\n }\n}\n","<lib-submit-form\n [moduleName]=\"formData.moduleName\"\n [submissionId]=\"submissionId\"\n [edit]=\"edit\"\n [acceptedLanguage] = \"formData.headers.acceptedLanguage\"\n (submit)=\"submit($event)\"\n (apiCalled)=\"getFormApiCalled($event)\"\n></lib-submit-form>\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 { DropDownFieldsComponent } from './drop-down-fields/drop-down-fields.component';\nimport { FilePickerFieldsComponent } from './file-picker-fields/file-picker-fields.component';\nimport { LocationFieldsComponent } from './location-fields/location-fields.component';\nimport { RadioButtonFieldsComponent } from './radio-button-fields/radio-button-fields.component';\nimport { RichTextEditorFieldsComponent } from './rich-text-editor-fields/rich-text-editor-fields.component';\nimport { SelectionMatrixFieldsComponent } from './selection-matrix-fields/selection-matrix-fields.component';\nimport { SignatureFieldsComponent } from './signature-fields/signature-fields.component';\nimport { SliderFieldsComponent } from './slider-fields/slider-fields.component';\nimport { TermsAndConditionFieldsComponent } from './terms-and-condition-fields/terms-and-condition-fields.component';\nimport { TextAreaFieldsComponent } from './text-area-fields/text-area-fields.component';\nimport { TextFieldsComponent } from './text-fields/text-fields.component';\nimport { ToggleSwitchFieldsComponent } from './toggle-switch-fields/toggle-switch-fields.component';\nimport { UrlFieldsComponent } from './url-fields/url-fields.component';\nimport { FormsModule } from '@angular/forms';\nimport { MailFieldsComponent } from './mail-fields/mail-fields.component';\nimport { MobileFieldsComponent } from './mobile-fields/mobile-fields.component';\nimport { NumberFieldsComponent } from './number-fields/number-fields.component';\nimport { PasswordFieldsComponent } from './password-fields/password-fields.component';\nimport {MatSliderModule} from \"@angular/material/slider\";\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { AngularEditorModule } from '@kolkov/angular-editor';\n\n\nimport { GoogleMapsModule } from '@angular/google-maps';\nimport { DropdownModule } from '@piserve-tech/drop-down';\nimport { FilePreviewModule } from '@piserve-tech/file-preview';\nimport { SectionFieldsComponent } from './section-fields/section-fields.component';\nimport { DocUploadModule } from '@piserve-tech/file-upload';\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\n\n\n\n\n\n\n@NgModule({\n declarations: [\n CheckBoxFieldsComponent,\n DateTimeFieldsComponent,\n DropDownFieldsComponent,\n FilePickerFieldsComponent,\n LocationFieldsComponent,\n RadioButtonFieldsComponent,\n RichTextEditorFieldsComponent,\n SelectionMatrixFieldsComponent,\n SignatureFieldsComponent,\n SliderFieldsComponent,\n TermsAndConditionFieldsComponent,\n TextAreaFieldsComponent,\n TextFieldsComponent,\n ToggleSwitchFieldsComponent,\n UrlFieldsComponent,\n MailFieldsComponent,\n MobileFieldsComponent,\n NumberFieldsComponent,\n PasswordFieldsComponent,\n SectionFieldsComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatSliderModule,\n BsDatepickerModule.forRoot(),\n DropdownModule,\n AngularEditorModule,\n DocUploadModule,\n GoogleMapsModule,\n FilePreviewModule,\n NgxMaterialTimepickerModule\n ],\n exports: [\n CheckBoxFieldsComponent,\n DateTimeFieldsComponent,\n DropDownFieldsComponent,\n FilePickerFieldsComponent,\n LocationFieldsComponent,\n MailFieldsComponent,\n MobileFieldsComponent,\n NumberFieldsComponent,\n PasswordFieldsComponent,\n RadioButtonFieldsComponent,\n RichTextEditorFieldsComponent,\n SelectionMatrixFieldsComponent,\n SignatureFieldsComponent,\n SliderFieldsComponent,\n TermsAndConditionFieldsComponent,\n TextAreaFieldsComponent,\n TextFieldsComponent,\n ToggleSwitchFieldsComponent,\n UrlFieldsComponent,\n SectionFieldsComponent\n\n ]\n})\nexport class FormFieldsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RecursiveLogicComponent } from '../question/recursive-logic/recursive-logic.component';\nimport { QuestionComponent } from '../question/question/question.component';\nimport { SubFormComponent } from '../question/sub-form/sub-form.component';\nimport { FormElementsComponent } from '../question/form-elements/form-elements.component';\n\nimport { FormFieldsModule } from '../form-fields/form-fields.module';\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 { MultipleSubformComponent } from '../question/multiple-subform/multiple-subform.component';\nimport { SubmissionModalComponent } from '../sub-form/submission-modal/submission-modal.component';\nimport { QuestionGroupComponent } from '../question/question-group/question-group.component';\n\n@NgModule({\n declarations: [\n RecursiveLogicComponent,\n QuestionComponent,\n SubFormComponent,\n FormElementsComponent,\n MultipleSubformComponent, \n SubmissionModalComponent, \n QuestionGroupComponent\n ],\n imports: [\n CommonModule,\n FormFieldsModule,\n MatDialogModule,\n MatTableModule,\n MatMenuModule,\n MatIconModule\n ],\n exports: [\n RecursiveLogicComponent,\n QuestionComponent,\n SubFormComponent,\n FormElementsComponent,\n QuestionGroupComponent\n ]\n})\nexport class SharedModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SubmitFormComponent } from './submit-form/submit-form.component';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { HeaderComponent } from './header/header.component';\nimport { NavigationTabsComponent } from './navigation-tabs/navigation-tabs.component';\nimport { NextPrevNavigationComponent } from './next-prev-navigation/next-prev-navigation.component';\nimport { ToastrModule } from 'ngx-toastr';\nimport { SubmissionContainerComponent } from './submission-container/submission-container.component';\nimport { SharedModule } from '../shared/shared.module';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\n\n\n\n@NgModule({\n declarations: [\n SubmitFormComponent,\n HeaderComponent,\n NavigationTabsComponent,\n NextPrevNavigationComponent,\n SubmissionContainerComponent\n ],\n imports: [\n CommonModule,\n BsDatepickerModule.forRoot(),\n ToastrModule,\n SharedModule,\n InfiniteScrollModule\n ],\n exports: [SubmitFormComponent, NextPrevNavigationComponent]\n})\nexport class FormSubmitModule { }\n","import { NgModule } from '@angular/core';\nimport { FormSubmissionComponent } from './form-submission.component';\n// import { DropdownModule } from '@piserve-tech/drop-down';\nimport { FilePreviewModule } from '@piserve-tech/file-preview';\nimport { FormsModule } from '@angular/forms';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { FormFieldsModule } from '../form-fields/form-fields.module';\nimport { FormSubmitModule } from '../form-submission/form-submission.module';\nimport { DropdownModule } from '@piserve-tech/drop-down';\nimport { ToastrModule } from 'ngx-toastr';\nimport { DocUploadModule } from '@piserve-tech/file-upload';\nimport { SharedModule } from '../shared/shared.module';\n\n@NgModule({\n declarations: [FormSubmissionComponent],\n imports: [\n DropdownModule,\n FilePreviewModule,\n DocUploadModule,\n FormsModule,\n MatTabsModule,\n FormFieldsModule,\n FormSubmitModule,\n ToastrModule.forRoot({\n positionClass: 'toast-bottom-left',\n }),\n SharedModule\n ],\n exports: [FormSubmissionComponent],\n})\nexport class FormSubmissionModule {}\n","/*\n * Public API Surface of form-submission\n */\n\nexport * from './lib/form-submission.service';\nexport * from './lib/form-submission.component';\nexport * from './lib/form-submission.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.DataService","i1.FormService","i2","i1","i3","i1.CountryService","i4","i3.DataService","i2.CheckBoxFieldsComponent","i3.DateTimeFieldsComponent","i4.DropDownFieldsComponent","i5.FilePickerFieldsComponent","i6.LocationFieldsComponent","i7.MailFieldsComponent","i8.MobileFieldsComponent","i9.NumberFieldsComponent","i10.PasswordFieldsComponent","i11.RadioButtonFieldsComponent","i12.RichTextEditorFieldsComponent","i13.SelectionMatrixFieldsComponent","i14.SignatureFieldsComponent","i15.SliderFieldsComponent","i16.TermsAndConditionFieldsComponent","i17.TextAreaFieldsComponent","i18.TextFieldsComponent","i19.ToggleSwitchFieldsComponent","i20.UrlFieldsComponent","i3.CheckBoxFieldsComponent","i4.DateTimeFieldsComponent","i5.DropDownFieldsComponent","i6.FilePickerFieldsComponent","i7.LocationFieldsComponent","i8.MailFieldsComponent","i9.MobileFieldsComponent","i10.NumberFieldsComponent","i11.PasswordFieldsComponent","i12.RadioButtonFieldsComponent","i13.RichTextEditorFieldsComponent","i14.SelectionMatrixFieldsComponent","i15.SignatureFieldsComponent","i16.SliderFieldsComponent","i17.TermsAndConditionFieldsComponent","i18.TextAreaFieldsComponent","i19.TextFieldsComponent","i20.ToggleSwitchFieldsComponent","i21.UrlFieldsComponent","i22.SectionFieldsComponent","i21.SectionFieldsComponent","i22.MultipleSubformComponent","i2.SectionFieldsComponent","i3.QuestionComponent","i4.SubFormComponent","i5.QuestionGroupComponent","i2.RecursiveLogicComponent","i2.FormElementsComponent","mapper.mapPublicFormToModel","i4.DataService","i5.RecaptchaService","i6","i7.HeaderComponent","i8.NavigationTabsComponent","i9.NextPrevNavigationComponent","i10.SubmissionContainerComponent","i2.SubmitFormComponent"],"mappings":"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"}
1
+ {"version":3,"file":"piserve-tech-form-submission.mjs","sources":["../../../projects/form-submission/src/lib/form-submission.service.ts","../../../projects/form-submission/src/environment/environment.ts","../../../projects/form-submission/src/services/data.service.ts","../../../projects/form-submission/src/services/mapper.service.ts","../../../projects/form-submission/src/services/form.service.ts","../../../projects/form-submission/src/services/recaptcha.service.ts","../../../projects/form-submission/src/form-submission/header/header.component.ts","../../../projects/form-submission/src/form-submission/header/header.component.html","../../../projects/form-submission/src/form-fields/section-fields/section-fields.component.ts","../../../projects/form-submission/src/form-fields/section-fields/section-fields.component.html","../../../projects/form-submission/src/form-fields/check-box-fields/check-box-fields.component.ts","../../../projects/form-submission/src/form-fields/check-box-fields/check-box-fields.component.html","../../../projects/form-submission/src/form-fields/date-time-fields/date-time-fields.component.ts","../../../projects/form-submission/src/form-fields/date-time-fields/date-time-fields.component.html","../../../projects/form-submission/src/form-fields/drop-down-fields/drop-down-fields.component.ts","../../../projects/form-submission/src/form-fields/drop-down-fields/drop-down-fields.component.html","../../../projects/form-submission/src/form-fields/file-picker-fields/file-picker-fields.component.ts","../../../projects/form-submission/src/form-fields/file-picker-fields/file-picker-fields.component.html","../../../projects/form-submission/src/form-fields/location-fields/location-fields.component.ts","../../../projects/form-submission/src/form-fields/location-fields/location-fields.component.html","../../../projects/form-submission/src/form-fields/mail-fields/mail-fields.component.ts","../../../projects/form-submission/src/form-fields/mail-fields/mail-fields.component.html","../../../projects/form-submission/src/services/countryService.ts","../../../projects/form-submission/src/form-fields/mobile-fields/mobile-fields.component.ts","../../../projects/form-submission/src/form-fields/mobile-fields/mobile-fields.component.html","../../../projects/form-submission/src/form-fields/number-fields/number-fields.component.ts","../../../projects/form-submission/src/form-fields/number-fields/number-fields.component.html","../../../projects/form-submission/src/form-fields/password-fields/password-fields.component.ts","../../../projects/form-submission/src/form-fields/password-fields/password-fields.component.html","../../../projects/form-submission/src/form-fields/radio-button-fields/radio-button-fields.component.ts","../../../projects/form-submission/src/form-fields/radio-button-fields/radio-button-fields.component.html","../../../projects/form-submission/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.ts","../../../projects/form-submission/src/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.html","../../../projects/form-submission/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.ts","../../../projects/form-submission/src/form-fields/selection-matrix-fields/selection-matrix-fields.component.html","../../../projects/form-submission/src/form-fields/signature-fields/signature-fields.component.ts","../../../projects/form-submission/src/form-fields/signature-fields/signature-fields.component.html","../../../projects/form-submission/src/form-fields/slider-fields/slider-fields.component.ts","../../../projects/form-submission/src/form-fields/slider-fields/slider-fields.component.html","../../../projects/form-submission/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.ts","../../../projects/form-submission/src/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.html","../../../projects/form-submission/src/form-fields/text-area-fields/text-area-fields.component.ts","../../../projects/form-submission/src/form-fields/text-area-fields/text-area-fields.component.html","../../../projects/form-submission/src/form-fields/text-fields/text-fields.component.ts","../../../projects/form-submission/src/form-fields/text-fields/text-fields.component.html","../../../projects/form-submission/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.ts","../../../projects/form-submission/src/form-fields/toggle-switch-fields/toggle-switch-fields.component.html","../../../projects/form-submission/src/form-fields/url-fields/url-fields.component.ts","../../../projects/form-submission/src/form-fields/url-fields/url-fields.component.html","../../../projects/form-submission/src/question/question/question.component.ts","../../../projects/form-submission/src/question/question/question.component.html","../../../projects/form-submission/src/sub-form/submission-modal/submission-modal.component.ts","../../../projects/form-submission/src/sub-form/submission-modal/submission-modal.component.html","../../../projects/form-submission/src/question/multiple-subform/multiple-subform.component.ts","../../../projects/form-submission/src/question/multiple-subform/multiple-subform.component.html","../../../projects/form-submission/src/question/sub-form/sub-form.component.ts","../../../projects/form-submission/src/question/sub-form/sub-form.component.html","../../../projects/form-submission/src/question/question-group/question-group.component.ts","../../../projects/form-submission/src/question/question-group/question-group.component.html","../../../projects/form-submission/src/question/recursive-logic/recursive-logic.component.ts","../../../projects/form-submission/src/question/recursive-logic/recursive-logic.component.html","../../../projects/form-submission/src/question/form-elements/form-elements.component.ts","../../../projects/form-submission/src/question/form-elements/form-elements.component.html","../../../projects/form-submission/src/form-submission/navigation-tabs/navigation-tabs.component.ts","../../../projects/form-submission/src/form-submission/navigation-tabs/navigation-tabs.component.html","../../../projects/form-submission/src/form-submission/next-prev-navigation/next-prev-navigation.component.ts","../../../projects/form-submission/src/form-submission/next-prev-navigation/next-prev-navigation.component.html","../../../projects/form-submission/src/form-submission/submission-container/submission-container.component.ts","../../../projects/form-submission/src/form-submission/submission-container/submission-container.component.html","../../../projects/form-submission/src/form-submission/submit-form/submit-form.component.ts","../../../projects/form-submission/src/form-submission/submit-form/submit-form.component.html","../../../projects/form-submission/src/lib/form-submission.component.ts","../../../projects/form-submission/src/lib/form-submission.component.html","../../../projects/form-submission/src/form-fields/form-fields.module.ts","../../../projects/form-submission/src/shared/shared.module.ts","../../../projects/form-submission/src/form-submission/form-submission.module.ts","../../../projects/form-submission/src/lib/form-submission.module.ts","../../../projects/form-submission/src/public-api.ts","../../../projects/form-submission/src/piserve-tech-form-submission.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormSubmissionService {\n\n constructor() { }\n}\n","export let environment = {\n production: false,\n googleRecaptchaSiteKey: '',\n htmlDirection: 'ltr'\n };\n ","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DataService {\n constructor() {}\n\n private dataSubject = new BehaviorSubject<string>('');\n public apiUrl$: Observable<string> = this.dataSubject.asObservable();\n private headerSubject = new BehaviorSubject<any>({});\n public header$: Observable<any> = this.headerSubject.asObservable();\n\n private parentQuestionsSubject = new BehaviorSubject<any>(null);\n public parentQuestions$: Observable<any> = this.parentQuestionsSubject.asObservable();\n\n setApiUrl(data: string): void {\n this.dataSubject.next(data);\n }\n\n setHeader(data: any) {\n this.headerSubject.next(data);\n }\n\n setParentQuestions(data: any): void {\n this.parentQuestionsSubject.next(data);\n }\n}\n","import { Appearance } from '../models/appearance.model';\nimport { ElementOptionAPI } from '../models/elementOptionAPI.model';\nimport { elementOptionAPIData } from '../models/elementOptionAPIData.model';\nimport { ElementOptionDB } from '../models/elementOptionDB.model';\nimport { ElementOptionDBCriteria } from '../models/elementOptionDBCriteria.model';\nimport { FormElement } from '../models/formElement.model';\nimport { Grid } from '../models/grid.model';\nimport { Page } from '../models/page.model';\nimport { PublicForm } from '../models/publicForm.model';\nimport { Question } from '../models/question.model';\nimport { Row } from '../models/row.model';\nimport { Validation } from '../models/validation.model';\nimport { Option } from '../models/option.model';\nimport { Section } from '../models/section.model';\nimport { SubForm } from '../models/subForm.model';\nimport { FormElementType } from '../models/formElementType.model';\nimport { Logic } from '../models/logic.model';\nimport { Attachment } from '../models/attachment.model';\nimport { Submission } from '../models/submission.model';\nimport { Answer } from '../models/answer.model';\nimport { termsAndConditionType } from '../models/terms&condition.model';\nimport { FormConfiguration } from '../models/formConfiguration.model';\nimport { QuestionGroup } from '../models/questionGroup.model';\n\nexport function mapPublicFormToModel(apiPublicForm: any): PublicForm {\n return {\n name: apiPublicForm.result.name,\n formConfiguration: mapFormConfigurationToModel(\n apiPublicForm.result.moduleConfiguration\n ),\n pages: apiPublicForm.result.pages.map((apiPage: any) =>\n mapPageToModel(apiPage)\n ),\n questionAnswers:apiPublicForm.result.questionAnswers,\n parentId:apiPublicForm.result.parentId\n };\n}\n\n\nfunction mapFormConfigurationToModel(\n apiFormConfiguration: any\n): FormConfiguration {\n return {\n saveAutomatically: apiFormConfiguration.saveAutomatically,\n saveInterval: apiFormConfiguration.saveInterval,\n customizeFont: apiFormConfiguration.customizeFont,\n fontFamily: apiFormConfiguration.fontFamily,\n fontSize: apiFormConfiguration.fontSize,\n enableDataExport: apiFormConfiguration.enableDataExport,\n fileFormats: apiFormConfiguration.fileFormats,\n enableQuestionNumbering: apiFormConfiguration.enableQuestionNumbering,\n questionNumbering: apiFormConfiguration.questionNumbering,\n enableGoogleRecaptcha: apiFormConfiguration.enableGoogleRecaptcha,\n googleRecaptchaKey: apiFormConfiguration.googleRecaptchaKey,\n googleRecaptchaSecret: apiFormConfiguration.googleRecaptchaSecret,\n navigation: apiFormConfiguration.navigation,\n markAllQuestionsAsRequired: apiFormConfiguration.markAllQuestionsAsRequired,\n };\n}\n\n\n\nfunction mapPageToModel(apiPage: any): Page {\n return {\n title: apiPage.title,\n rows: apiPage.rows.map((apiRow: any) => mapRowToModel(apiRow)),\n };\n}\n\nfunction mapRowToModel(apiRow: any): Row {\n return {\n grid: apiRow.grid.map((apiGrid: any) => mapGridToModel(apiGrid)),\n };\n}\n\nfunction mapGridToModel(apiGrid: any): Grid {\n let entity: Section | Question | SubForm | QuestionGroup | undefined;\n\n switch (apiGrid.entityType) {\n case 'QUESTION':\n entity = mapQuestionToModel(apiGrid.element);\n break;\n case 'SECTION':\n entity = mapSectionToModel(apiGrid.element);\n break;\n case 'SUBFORM':\n entity = mapSubFormToModel(apiGrid.element);\n break;\n case 'QUESTION_GROUP':\n entity = mapQuestionGroupToModel(apiGrid.element);\n break;\n default:\n throw new Error(`Unknown entity type: ${apiGrid.entityType}`);\n }\n\n return {\n entityType: apiGrid.entityType,\n element: entity,\n };\n}\n\nexport function mapSectionToModel(apiSection: any): Section {\n return {\n id: apiSection.id,\n title: apiSection.title,\n description: apiSection.description,\n };\n}\n\nexport function mapQuestionToModel(apiQuestion: any): Question {\n return {\n count: apiQuestion.count,\n id: apiQuestion.id,\n questionNumber: apiQuestion.questionNumber,\n required: apiQuestion.required,\n hint: apiQuestion.hint,\n question: apiQuestion.question,\n answer: apiQuestion?.answer,\n validation: true,\n formElement: mapFormElementToModel(apiQuestion.formElement),\n childLogics: apiQuestion?.childLogics?.map((logic: any) =>\n mapLogicToModel(logic)\n ),\n answerId: apiQuestion?.answerId,\n attachments: apiQuestion?.attachments?.map((attachment: any) => mapAttachmentToModel(attachment)) || [],\n deleteFiles: [],\n };\n}\n\nfunction mapAttachmentToModel(apiAttachment: any): Attachment {\n return {\n fileId: apiAttachment.fileId,\n fileName: apiAttachment.fileName,\n fileUrl: apiAttachment.fileUrl,\n };\n}\n\nfunction mapFormElementToModel(apiFormElement: any): FormElement {\n return {\n elementType: apiFormElement.elementType,\n appearance: mapAppearanceToModel(apiFormElement.appearance),\n validation: mapValidationToModel(apiFormElement.validation),\n option: mapOptionToModel(apiFormElement?.option),\n selectionMatrixLabel: apiFormElement.selectionMatrixLabel,\n selectionMatrixColumn: apiFormElement.selectionMatrixColumn,\n termsAndConditionType: maptermsAndCondition(apiFormElement)\n };\n}\nfunction maptermsAndCondition(Element: any): termsAndConditionType {\n if(Element.termsAndCondition != undefined){\n let data = Element.termsAndCondition\n return {\n termsAndConditionType: data.termsAndConditionType,\n fileUrl: data.fileUrl,\n fileName: data.fileName,\n };\n }\n else{\n return {\n termsAndConditionType: '',\n fileUrl: '',\n fileName: '',\n }\n }\n\n}\n\nfunction mapLogicToModel(apiLogic: any): Logic {\n return {\n id: apiLogic.id,\n inputValue: apiLogic.inputValue,\n condition: apiLogic.condition,\n showLogic: false,\n rows: apiLogic?.rows?.map((element: any) =>\n mapRowToModel(element)\n ),\n };\n}\n\nexport function mapSubFormToModel(apiSubForm: any): SubForm {\n return {\n id: apiSubForm.id,\n count: apiSubForm.count,\n title: apiSubForm.title,\n description: apiSubForm.description,\n subFormStructure: apiSubForm.subFormStructure,\n rows: apiSubForm.rows.map((element: any) => mapRowToModel(element)),\n submissions: apiSubForm?.submissions?.map((submission: any) => mapSubmissionToModel(submission)),\n };\n}\n\nexport function mapQuestionGroupToModel(apiQuestionGroup: any): QuestionGroup {\n return {\n id: apiQuestionGroup.id,\n count: apiQuestionGroup.count,\n title: apiQuestionGroup.title,\n description: apiQuestionGroup.description,\n rows: apiQuestionGroup.rows.map((element: any) => mapRowToModel(element)),\n submissions: apiQuestionGroup?.submissions?.map((submission: any) => mapSubmissionToModel(submission)),\n };\n}\n\nfunction mapSubmissionToModel(apiSubmission: any): Submission {\n return {\n submissionId: apiSubmission?.submissionId,\n answers: apiSubmission?.answers?.map((answer: any) => mapAnswerToModel(answer)),\n };\n}\n\nfunction mapAnswerToModel(apiAnswer: any): Answer {\n return {\n questionId: apiAnswer.questionId,\n answer: apiAnswer?.answer,\n answerId: apiAnswer?.answerId,\n attachments: apiAnswer?.attachments?.map((attachment: any) => mapAttachmentToModel(attachment)),\n };\n}\n\nexport function mapFormElementTypeToModel(\n apiFormElementType: any\n): FormElementType<any> {\n return {\n entityType: apiFormElementType?.entityType,\n element: apiFormElementType?.element,\n };\n}\n\nfunction mapAppearanceToModel(apiAppearance: any): Appearance {\n return {\n placeholder: apiAppearance?.placeholder,\n fontSize: apiAppearance?.fontSize,\n textAlign: apiAppearance?.textAlign,\n font: apiAppearance?.font,\n underline: apiAppearance?.underline,\n bold: apiAppearance?.bold,\n italics: apiAppearance?.italics,\n defaultValue: apiAppearance?.defaultValue,\n numberOfRows: apiAppearance?.numberOfRows,\n singleSelection: apiAppearance?.singleSelection,\n displayCountryCode: apiAppearance?.displayCountryCode,\n displayFlag: apiAppearance?.displayFlag,\n displayCode: apiAppearance?.displayCode,\n showCountryName: apiAppearance?.showCountryName,\n beautifyNumbers: apiAppearance?.beautifyNumbers,\n upAndDownButton: apiAppearance?.upAndDownButton,\n allowNegativeValues: apiAppearance?.allowNegativeValues,\n showPreviewButton: apiAppearance?.showPreviewButton,\n confirmPassword: apiAppearance?.confirmPassword,\n viewButton: apiAppearance?.viewButton,\n displayStrong: apiAppearance?.displayStrong,\n dateType: apiAppearance?.dateType,\n format: apiAppearance?.format,\n setCurrentPosition: apiAppearance?.setCurrentPosition,\n defaultZoomLevel: apiAppearance?.defaultZoomLevel,\n allowFullScreen: apiAppearance?.allowFullScreen,\n latitude: apiAppearance?.latitude,\n longitude: apiAppearance?.longitude,\n showAcceptButton: apiAppearance?.showAcceptButton,\n labelOnValue: apiAppearance?.labelOnValue,\n labelOffValue: apiAppearance?.labelOffValue,\n labelOnColor: apiAppearance?.labelOnColor,\n labelOffColor: apiAppearance?.labelOffColor,\n minValue: apiAppearance?.minValue,\n maxValue: apiAppearance?.maxValue,\n stepValue: apiAppearance?.stepValue,\n changeSliderColor: apiAppearance?.changeSliderColor,\n sliderColor: apiAppearance?.sliderColor,\n canvasOption: apiAppearance?.canvasOption,\n selectionType: apiAppearance?.selectionType,\n dragAndDrop: apiAppearance?.dragAndDrop,\n previewUploadedFiles: apiAppearance?.previewUploadedFiles,\n multiFileUploads: apiAppearance?.multiFileUploads,\n selectionColorRequired: apiAppearance?.selectionColorRequired,\n selectionColor: apiAppearance?.selectionColor,\n color: apiAppearance?.color,\n avatarPicker:apiAppearance?.avatarPicker,\n timeFormat:apiAppearance?.timeFormat\n };\n}\n\nfunction mapValidationToModel(apiValidation: any): Validation {\n return {\n regexValidation: apiValidation?.regexValidation,\n regex: apiValidation?.regex,\n validationMessage: apiValidation?.validationMessage,\n limitedCharacters: apiValidation?.limitedCharacters,\n count: apiValidation?.count,\n minimumSelection: apiValidation?.minimumSelection,\n maximumSelection: apiValidation?.maximumSelection,\n countryWiseValidation: apiValidation?.countryWiseValidation,\n restrictCountry: apiValidation?.restrictCountry,\n allowedCountries: apiValidation?.allowedCountries,\n blockedCountries: apiValidation?.blockedCountries,\n regularExpression: apiValidation?.regularExpression,\n expectedDomains: apiValidation?.expectedDomains,\n min: apiValidation?.min,\n max: apiValidation?.max,\n minLength: apiValidation?.minLength,\n maxLength: apiValidation?.maxLength,\n requireLowercaseLetters: apiValidation?.requireLowercaseLetters,\n requireUppercaseLetters: apiValidation?.requireUppercaseLetters,\n requireNumbers: apiValidation?.requireNumbers,\n requireSpecialCharacters: apiValidation?.requireSpecialCharacters,\n allowedSpecialCharacters: apiValidation?.allowedSpecialCharacters,\n minDateOption: apiValidation?.minDateOption,\n minDate: apiValidation?.minDate,\n maxDateOption: apiValidation?.maxDateOption,\n maxDate: apiValidation?.maxDate,\n regionBoundary: apiValidation?.regionBoundary,\n region: apiValidation?.region,\n preventFromProceedingWithoutAgree:\n apiValidation?.preventFromProceedingWithoutAgree,\n buttonColour: apiValidation?.buttonColour,\n maxFileSize: apiValidation?.maxFileSize,\n minFileSize: apiValidation?.minFileSize,\n minSelection: apiValidation?.minSelection,\n maxSelection: apiValidation?.maxSelection,\n fileTypes: apiValidation?.fileTypes,\n fileSize: apiValidation?.fileSize,\n fileSizeUnit: apiValidation?.fileSizeUnit,\n totalFileSize: apiValidation?.totalFileSize,\n minSelectionRequired: apiValidation?.minSelectionRequired,\n minSelectionValue: apiValidation?.minSelectionValue,\n validationType: apiValidation?.validationType,\n validation: apiValidation?.validation,\n minTime: apiValidation?.minTime,\n maxTime:apiValidation?.maxTime,\n minTimeOption:apiValidation?.minTimeOption,\n maxTimeOption: apiValidation?.maxTimeOption,\n };\n}\n\nfunction mapElementOptionDBToModel(apiElementOptionDB: any): ElementOptionDB {\n return {\n tableName: apiElementOptionDB.tableName,\n valueField: apiElementOptionDB.valueField,\n labelField: apiElementOptionDB.labelField,\n criteria: apiElementOptionDB?.criteria.map((apiCriteria: any) =>\n mapElementOptionDBCriteriaToModel(apiCriteria)\n ),\n };\n}\n\nfunction mapElementOptionDBCriteriaToModel(\n apiElementOptionDBCriteria: any\n): ElementOptionDBCriteria {\n return {\n field: apiElementOptionDBCriteria?.field,\n condition: apiElementOptionDBCriteria?.condition,\n valueSource: apiElementOptionDBCriteria?.valueSource,\n inputValue: apiElementOptionDBCriteria?.inputValue,\n logicalOperator: apiElementOptionDBCriteria?.logicalOperator,\n };\n}\n\nfunction mapElementOptionAPIToModel(\n apiElementOptionAPI: any\n): ElementOptionAPI {\n return {\n external: apiElementOptionAPI?.external,\n url: apiElementOptionAPI?.url,\n valueField: apiElementOptionAPI?.valueField,\n labelField: apiElementOptionAPI?.labelField,\n pathToValue: apiElementOptionAPI?.pathToValue,\n headers: apiElementOptionAPI?.headers?.map(mapElementOptionAPIDataToModel),\n params: apiElementOptionAPI?.params?.map(mapElementOptionAPIDataToModel),\n pathVariables: apiElementOptionAPI?.pathVariables?.map(\n mapElementOptionAPIDataToModel\n ),\n };\n}\n\nfunction mapElementOptionAPIDataToModel(\n apiElementOptionAPIData: any\n): elementOptionAPIData {\n return {\n keyName: apiElementOptionAPIData?.keyName,\n valueSource: apiElementOptionAPIData?.valueSource,\n inputValue: apiElementOptionAPIData?.inputValue,\n };\n}\n\nfunction mapOptionToModel(apiOption: any): Option {\n return {\n optionType: apiOption?.optionType,\n lookupTable: apiOption?.lookupTable,\n customOptions: apiOption?.customOptions?.map((option: { value: any }) => ({\n value: option.value,\n })),\n database: apiOption?.database\n ? mapElementOptionDBToModel(apiOption?.database)\n : undefined,\n api: apiOption?.api ? mapElementOptionAPIToModel(apiOption.api) : undefined,\n };\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { DataService } from './data.service';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormService {\n private apiUrl: string = '';\n header: any = {};\n parentQuestions: any;\n\n constructor(private http: HttpClient, private dataService: DataService) {\n this.dataService.apiUrl$.subscribe((data) => {\n this.apiUrl = data;\n });\n\n this.dataService.header$.subscribe((data) => {\n this.header = data;\n });\n\n this.dataService.parentQuestions$.subscribe((questions) => {\n if (questions) {\n this.parentQuestions = questions;\n }\n });\n }\n\n getQuestions(moduleName: string, pageNumber: number = 1, rowSet: number = 0, progressiveLoading: boolean = false) {\n const headers = new HttpHeaders({\n 'Accept-Language': this.header.acceptedLanguage,\n });\n\n const params = new HttpParams()\n .set('pageNumber', pageNumber.toString())\n .set('rowSet', rowSet.toString())\n .set('progressiveLoading', true);\n\n return this.http.get(`${this.apiUrl}/api/public/forms/${moduleName}`, {\n headers,\n params\n });\n}\n\n fetchDataFromDatabase(database: any) {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n return this.http.post<any>(`${this.apiUrl}/api/load-from-db`, database, {\n headers,\n });\n }\n\n fetchDataFromLookup(tableName: string) {\n return this.http.get<any>(`${this.apiUrl}/api/public/lookup/${tableName}`);\n }\n\n fetchDataFromExternalAPI(apiConfig: any): Observable<any> {\n // Prepare headers dynamically\n let headers = new HttpHeaders();\n if (apiConfig.headers) {\n apiConfig.headers.forEach((header: any) => {\n if (header.keyName && header.inputValue) {\n \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 // Prepare params dynamically\n let params = new HttpParams();\n if (apiConfig.params) {\n apiConfig.params.forEach((param: any) => {\n if (param.keyName && param.inputValue) {\n params = params.set(param.keyName, param.inputValue);\n }\n });\n }\n\n // Construct URL with 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 // Make the GET request with headers and params\n return this.http.get<any>(url, { headers, params });\n //return this.http.get<any>(apiConfig.url);\n }\n\n submitForm(moduleName: string, formData: FormData, reCAPTCHAToken?:string): Observable<any> {\n const headers = new HttpHeaders({\n 'Auth-user': this.header.authUser,\n });\n const url = `${this.apiUrl}/api/public/forms/${moduleName}/submissions`;\n if (reCAPTCHAToken) {\n formData.append('recaptchaToken', reCAPTCHAToken);\n }\n return this.http.post(url, formData, {\n headers\n });\n }\n\n getSubmittedForm(moduleName: string, submissionId: string, pageNumber: number = 1, rowSet: number = 0) {\n let params = new HttpParams()\n .set('pageNumber', pageNumber.toString())\n .set('rowSet', rowSet.toString());\n \n if (this.parentQuestions) {\n this.parentQuestions.forEach((q: any) => {\n params = params.append('parentQuestions', q);\n });\n }\n \n return this.http.get<any>(`${this.apiUrl}/api/forms/${moduleName}/submissions/${submissionId}`, { params });\n }\n\n updateForm(moduleName: string, submissionId: string, formData: FormData, reCAPTCHAToken?:string): Observable<any> {\n const headers = new HttpHeaders({\n 'Auth-user': this.header.authUser,\n });\n const url = `${this.apiUrl}/api/public/forms/${moduleName}/submissions/${submissionId}`;\n if (reCAPTCHAToken) {\n formData.append('recaptchaToken', reCAPTCHAToken);\n }\n return this.http.put(url, formData, {\n headers\n });\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.apiUrl + `/api/cdn/preview${fullUrl}`, options);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map, Observable, of } from 'rxjs';\nimport { DataService } from './data.service';\nimport { ToastrService } from 'ngx-toastr';\n\ndeclare const grecaptcha: any;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RecaptchaService {\n private apiUrl: string = '';\n private siteKeySessionKey = 'recaptchaSiteKey';\n\n\n constructor(private http: HttpClient, private dataService: DataService, private toast: ToastrService,) {\n this.dataService.apiUrl$.subscribe((data) => {\n this.apiUrl = data;\n });\n }\n\n // Method to fetch the site key dynamically from the API\n fetchSiteKeyFromApi(): Observable<string> {\n // Check if the siteKey is already stored in localStorage\n // const storedSiteKey = sessionStorage.getItem(this.siteKeySessionKey);\n\n // if (storedSiteKey) {\n // // Return the stored siteKey as an Observable\n // return of(storedSiteKey);\n // }\n\n // If not stored, fetch it from the API\n return this.http.get<{ message: string }>(`${this.apiUrl}/api/application-settings/recaptcha/siteKey`).pipe(\n map((response: { message: string }) => {\n const siteKey = response.message; \n // Store the fetched siteKey in localStorage\n // sessionStorage.setItem(this.siteKeySessionKey, siteKey);\n return siteKey;\n })\n );\n }\n\n // clearStoredSiteKey(): void {\n // // Clear the stored siteKey if needed\n // sessionStorage.removeItem(this.siteKeySessionKey);\n // }\n\n // Method to load the reCAPTCHA script dynamically with the site key\n loadRecaptcha(siteKey: string): Promise<void> {\n return new Promise((resolve, reject) => {\n if (typeof grecaptcha !== 'undefined') {\n resolve();\n return;\n }\n\n const script = document.createElement('script');\n script.src = `https://www.google.com/recaptcha/api.js?render=${siteKey}`;\n script.onload = () => {\n this.applyRecaptchaStyles(); // Apply styles after script loads\n resolve();\n };\n script.onerror = (error) => reject('Failed to load reCAPTCHA script');\n document.head.appendChild(script);\n });\n }\n\n applyRecaptchaStyles(): void {\n const interval = setInterval(() => {\n const badge = document.querySelector('.grecaptcha-badge');\n if (badge) {\n badge.setAttribute(\n 'style',\n `\n width: 256px !important;\n height: 60px !important;\n display: block !important;\n transition: right 0.3s !important;\n position: fixed !important;\n z-index: 999999999 !important;\n bottom: 14px !important;\n right: -186px !important;\n box-shadow: gray 0px 0px 5px !important;\n border-radius: 2px !important;\n overflow: hidden !important;\n `\n );\n clearInterval(interval); // Stop checking once the badge is found\n }\n }, 100); // Check every 100ms\n }\n \n\n // Method to execute reCAPTCHA and return the token\n executeRecaptcha(siteKey: string, action: string): Promise<string> {\n return new Promise((resolve, reject) => {\n grecaptcha.ready(() => {\n grecaptcha.execute(siteKey, { action: action })\n .then((token: string) => {\n resolve(token);\n })\n .catch((error: any) => {\n reject('reCAPTCHA execution failed');\n });\n });\n });\n }\n\n // This method loads the reCAPTCHA script and gets the token after fetching site key\n getRecaptchaToken(): Promise<string> {\n return this.fetchSiteKeyFromApi()\n .toPromise() // Convert the observable to a promise\n .then(siteKey => {\n // Check if siteKey is valid (not undefined)\n if (!siteKey) {\n this.toast.error('Site key is undefined or invalid');\n throw new Error('Site key is undefined or invalid');\n }\n \n // Now that we know siteKey is a valid string, proceed with loading and executing reCAPTCHA\n return this.loadRecaptcha(siteKey)\n .then(() => this.executeRecaptcha(siteKey, 'submission'));\n })\n .catch((error) => {\n this.toast.error(error.error.message);\n throw error; // Rethrow the error after logging it\n });\n }\n\n removeRecaptchaScript(): void {\n // Find and remove the reCAPTCHA script element\n const script = document.querySelector('script[src*=\"https://www.google.com/recaptcha/api.js\"]');\n if (script) {\n script.remove();\n } else {\n console.warn('reCAPTCHA script not found');\n }\n \n // Remove the reCAPTCHA badge from the DOM\n const badge = document.querySelector('.grecaptcha-badge');\n if (badge) {\n badge.remove();\n } else {\n console.warn('reCAPTCHA badge not found');\n }\n \n // Optionally, clean up the global `grecaptcha` object\n if (typeof grecaptcha !== 'undefined') {\n delete (window as any).grecaptcha;\n }\n }\n \n \n \n}","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent {\n @Input() name: string = '';\n}\n","<div class=\"head container\">\n <div class=\"registration-header\">\n <h2>{{ name }}</h2>\n </div>\n <div class=\"line\"></div>\n</div>\n","import { Component, Input, OnChanges } from '@angular/core';\n\n@Component({\n selector: 'lib-section-fields',\n templateUrl: './section-fields.component.html',\n styleUrls: ['./section-fields.component.scss']\n})\nexport class SectionFieldsComponent implements OnChanges {\n @Input() section: any = {};\n decodedDescription: string = '';\n\n // Method to decode HTML entities\n decodeHtml(html: string): string {\n const textArea = document.createElement('textarea');\n textArea.innerHTML = html; \n return textArea.value;\n }\n\n // Lifecycle hook to handle updates to the input\n ngOnChanges(): void {\n if (this.section.description) {\n this.decodedDescription = this.decodeHtml(this.section.description);\n }\n }\n}\n","<div class=\"mb-4 px-3\">\n <p class=\"sectionTitle\">{{ section.title }}</p>\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { FormService } from '../../services/form.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 minimumSelection?: number;\n maximumSelection?: number;\n optionType: string = '';\n lookupTable: any = {};\n customOptions: any[] = [];\n database: any = {};\n api: any = {};\n apiOptions: any[] = []; \n selectedOptions: any[] = [];\n validationFailed: boolean = false;\n validationMessage: string = '';\n\n constructor(private formService: FormService) { }\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.selectionType = this.question.formElement.appearance.selectionType;\n this.minimumSelection =\n this.question.formElement.validation.minimumSelection;\n this.maximumSelection =\n this.question.formElement.validation.maximumSelection;\n this.optionType = this.question.formElement.option.optionType;\n switch (this.optionType) {\n case 'OPTION':\n this.customOptions = this.question.formElement.option.customOptions;\n if (this.question.answer) {\n this.initializeCustomOption();\n }\n break;\n case 'LOOKUP':\n this.lookupTable = this.question.formElement.option.lookupTable;\n this.fetchDataFromLookup();\n break;\n case 'DATABASE':\n this.database = this.question.formElement.option.database;\n this.fetchDataFromDatabase();\n break;\n case 'API':\n this.api = this.question.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 if(this.question.childLogics && this.question.answer){\n this.updateChildLogics(this.question)\n }\n }\n\n initializeCustomOption() {\n this.customOptions?.forEach((option: any) => {\n if (this.question?.answer?.find((a: any) => a.toString() === option.value.toString())) {\n this.selectedOptions.push(option);\n }\n })\n }\n\n onCheckboxChange(option: any, event: any) {\n if (this.selectionType === 'SINGLE') {\n if (event.target.checked) {\n this.selectedOptions = [option];\n this.question.answer = [option.value];\n } else {\n this.selectedOptions = [];\n this.question.answer = [];\n }\n this.isMinimumSelectionValid();\n } else if (this.selectionType === 'MULTIPLE') {\n if (event.target.checked) {\n if (!this.selectedOptions.includes(option)) {\n this.selectedOptions.push(option);\n }\n } else {\n this.selectedOptions = this.selectedOptions.filter(\n (item) => item !== option\n );\n }\n this.question.answer = this.selectedOptions.map((item) => item.value);\n this.isMinimumSelectionValid();\n }\n\n // Check if the number of selected options exceeds the maximum allowed\n if (\n this.maximumSelection !== undefined &&\n this.selectedOptions.length > this.maximumSelection\n ) {\n // If exceeded, uncheck the last selected option\n event.target.checked = false;\n this.selectedOptions = this.selectedOptions.filter(\n (item) => item !== option\n );\n this.question.answer = this.selectedOptions.map((item) => item.value);\n this.isMinimumSelectionValid();\n }\n\n if(this.question.childLogics){\n this.updateChildLogics(this.question);\n }\n }\n\n updateChildLogics(question: any) {\n if (question.childLogics && Array.isArray(question.childLogics)) {\n question.childLogics.forEach((childLogic: any) => {\n if(this.selectionType=='SINGLE'){\n if(this.selectedOptions.length==0){\n childLogic.showLogic=false;\n }\n else{\n childLogic.showLogic = this.evaluateCondition(this.selectedOptions[0]?.value, childLogic.condition, childLogic.inputValue);\n }\n }\n else if (this.selectionType === 'MULTIPLE') {\n if(this.selectedOptions.length==0){\n childLogic.show=false;\n }\n else{\n const selectedValues = this.selectedOptions.map((item: any) => item.value);\n childLogic.showLogic = this.evaluateMultipleCondition(selectedValues, childLogic.condition, childLogic.inputValue);\n }\n }\n });\n }\n }\n \n evaluateCondition(answer: any[], condition: string, inputValue: any): boolean {\n const stringInputValue = Array.isArray(inputValue) ? inputValue.map(val => val.toString()) : inputValue;\n\n switch (condition) { \n case \"!=\":\n return answer !=stringInputValue;\n case \"=\":\n return answer ==stringInputValue;\n case \"IN\":\n return stringInputValue.includes(answer);\n case \"NOT IN\":\n return !(stringInputValue.includes(answer))\n default:\n return false;\n }\n }\n\n evaluateMultipleCondition(answers: any[], condition: string, inputValue: any): boolean {\n const stringInputValue = Array.isArray(inputValue) ? inputValue.map(val => val.toString()) : inputValue.toString();\n switch (condition) {\n case \"!=\":\n return answers.every(answer => answer != stringInputValue);\n case \"=\":\n return answers.some(answer => answer == stringInputValue);\n case \"IN\":\n return answers.some(answer => stringInputValue.includes(answer));\n case \"NOT IN\":\n return answers.every(answer => !stringInputValue.includes(answer));\n default:\n return false;\n }\n }\n\n fetchDataFromLookup() {\n this.formService.fetchDataFromLookup(this.lookupTable).subscribe(\n (response) => {\n this.customOptions = response.result.values.map(\n (item: { value: string; label: string }) => ({\n value: item.value,\n label: item.label,\n })\n );\n if (this.question.answer) {\n this.initializeCustomOption();\n }\n },\n (error) => {\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) => {\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 if (this.question.answer) {\n this.initializeCustomOption();\n }\n } else {\n console.error('Error fetching data from database:', response.message);\n }\n },\n (error) => {\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) => {\n let data;\n if(apiConfig.pathToValue) {\n data = this.extractDataByPath(response, apiConfig.pathToValue);\n } else {\n data = response;\n }\n \n this.customOptions = data.map((item: any) => ({\n value: item[apiConfig.valueField],\n label: item[apiConfig.labelField],\n }));\n if (this.question.answer) {\n \n this.initializeCustomOption();\n \n }\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 isMinimumSelectionValid() {\n this.validationFailed = false;\n \n if (this.selectedOptions.length == 0 && this.required) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n } else if (this.minimumSelection !== undefined) {\n if(this.selectionType=='SINGLE'){\n if (this.selectedOptions.length < this.minimumSelection && this.required) {\n this.validationFailed = true;\n this.validationMessage = `Minimum ${this.minimumSelection} selection(s) required.`;\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n else{\n if (this.selectedOptions.length < this.minimumSelection) {\n this.validationFailed = true;\n this.validationMessage = `Minimum ${this.minimumSelection} selection(s) required.`;\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n } else {\n this.question.validation = true;\n }\n }\n\n getOptions() {\n if (this.optionType === 'OPTION') {\n return this.customOptions;\n } else if (this.optionType === 'LOOKUP') {\n return Object.values(this.lookupTable);\n } else if (this.optionType === 'API') {\n return this.apiOptions.map((option) => option.valueField);\n } else {\n return [];\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=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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=\"form-check\" *ngFor=\"let option of customOptions\">\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [id]=\"option.value + question?.id\"\n [name]=\"option.value + 'Checkbox'\"\n [value]=\"option.value\"\n (change)=\"onCheckboxChange(option, $event)\"\n [disabled]=\"isOptionDisabled(option)\"\n [checked]=\"selectedOptions.includes(option)\"\n />\n <label\n class=\"formCheckLabel ms-2 me-4 mb-2\"\n [for]=\"option.value + question?.id\"\n *ngIf=\"optionType == 'OPTION'\"\n >{{ option.value }}</label\n >\n <label\n class=\"formCheckLabel ms-2 me-4\"\n [for]=\"option.value + question?.id\"\n *ngIf=\"optionType == 'LOOKUP' || 'DATABASE' || 'API'\"\n >{{ option.label }}</label\n >\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { DatePipe } from '@angular/common';\nimport { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport {\n BsDatepickerConfig,\n BsDatepickerDirective,\n} from 'ngx-bootstrap/datepicker';\nimport { NgxMaterialTimepickerComponent } from 'ngx-material-timepicker';\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 encapsulation: ViewEncapsulation.None\n})\nexport class DateTimeFieldsComponent {\n bsConfig: Partial<BsDatepickerConfig> = {\n containerClass: 'theme-custom',\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 Dateformat: string = '';\n timeFormat: string = '';\n minDateOption: string = '';\n minDate: Date | undefined;\n maxDateOption: string = '';\n maxDate: Date | undefined;\n todayDate: Date = new Date();\n selectedDate: Date | null = null;\n selectedTime: string = '';\n selectedDateRange: string = '';\n selectedDateAndTime: Date | null = null;\n validationFailed!: boolean;\n timeValidationFailed!: boolean;\n validationMessage: string = '';\n maxTimeOption: string = '';\n minTimeOption: string = '';\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 }\n\n valueAssigned() {\n\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.dateType = this.question.formElement.appearance.dateType;\n this.minDateOption = this.question.formElement.validation.minDateOption;\n this.Dateformat = this.question.formElement.appearance.format.replace(/DD/g, 'dd');\n\n\n this.minDate = this.getMinDate();\n\n\n this.maxDateOption = this.question.formElement.validation.maxDateOption;\n this.maxDate = this.getMaxDate();\n this.setDateTimeFormat();\n if (this.question?.answer && (this.question?.answer).length > 0)\n this.selectedDate = this.question?.answer;\n this.selectedTime = this.question.answer;\n if (this.question?.answer && (this.question?.answer).length > 0)\n this.selectedDateAndTime = new Date(this.question.answer);\n this.selectedDateRange = this.question.answer;\n this.minTimeOption = this.question.formElement.validation.minTimeOption;\n this.maxTimeOption = this.question.formElement.validation.maxTimeOption;\n if (this.dateType !== 'DATE_AND_TIME') {\n this.minTime = this.getMinTime().toString();\n this.maxTime = this.getMaxTime().toString();\n }\n if (this.dateType === 'DATE_AND_TIME' && this.question?.answer) {\n const dateTimeArray = this.question.answer\n ? this.question.answer.split(',')\n : []; // Fallback to an empty array if `this.question.answer` is undefined\n\n if (dateTimeArray.length === 2) {\n const fetchedDate = dateTimeArray[0].trim();\n const fetchedTime = dateTimeArray[1].trim();\n this.selectedDate = fetchedDate;\n this.selectedTime = fetchedTime;\n }\n\n const formattedDate = this.datePipe.transform(this.selectedDateAndTime, this.Dateformat);\n const formatteminDate = this.datePipe.transform(this.minDate, this.Dateformat);\n const formattemaxDate = this.datePipe.transform(this.maxDate, this.Dateformat);\n\n if (formattedDate === formatteminDate) {\n this.minTime = this.getMinTime().toString();\n if (this.timeFormat === '12') {\n this.maxTime = '12:00 pm';\n } else {\n this.maxTime = '23:00';\n }\n }\n if (formattedDate === formattemaxDate) {\n this.maxTime = this.getMaxTime().toString();\n if (this.timeFormat === '12') {\n this.minTime = '12:00 am';\n } else {\n this.minTime = '00:00';\n }\n }\n if (formattedDate !== formatteminDate && formattedDate !== formattemaxDate) {\n if (this.timeFormat === '12') {\n this.minTime = '12:00 am';\n this.maxTime = '12:00 pm';\n } else {\n this.minTime = '00:00';\n this.maxTime = '23:00';\n }\n }\n\n }\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\n }\n\n setDateTimeFormat() {\n switch (this.dateType) {\n case 'DATE_ONLY':\n this.format = this.question.formElement.appearance.format;\n break;\n case 'TIME_ONLY':\n this.timeFormat = this.question.formElement.appearance.timeFormat;\n break;\n case 'DATE_AND_TIME':\n this.format = this.question.formElement.appearance.format;\n this.timeFormat = this.question.formElement.appearance.timeFormat;\n break;\n case 'DATE_RANGE':\n this.format = this.question.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.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.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.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\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 }\n else if (this.maxTimeOption === 'CUSTOM') {\n const customTime = this.question.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 closeDatepicker() {\n if (this.dateAndTimePicker) {\n this.dateAndTimePicker.hide(); // Close the datepicker\n }\n }\n\n\n\n\n validateField() {\n if (this.dateType === 'DATE_ONLY') {\n if (this.selectedDate) {\n this.question.answer = this.formatDate(this.selectedDate.toString());\n } else {\n this.question.answer = '';\n }\n\n this.validateDateOnly()\n }\n else if (this.dateType === 'TIME_ONLY') {\n this.question.answer = String(this.selectedTime);\n this.validateTimeOnly()\n }\n else if (this.dateType === 'DATE_AND_TIME') {\n if (this.selectedDateAndTime) {\n this.question.answer = this.formatDate(this.selectedDateAndTime.toString());\n } else {\n this.question.answer = '';\n }\n\n this.validateDateAndTime()\n\n }\n else {\n this.question.answer = this.formatDate(this.selectedDateRange);\n this.validateDateRange()\n }\n }\n\n formatDate(date: string | Date, type: string = 'dateTime'): string {\n switch (this.dateType) {\n case 'DATE_ONLY':\n return this.datePipe.transform(this.selectedDate, this.Dateformat) || '';\n case 'DATE_AND_TIME':\n const formattedDate = this.datePipe.transform(this.selectedDateAndTime, this.Dateformat);\n const formatteminDate = this.datePipe.transform(this.minDate, this.Dateformat);\n const formattemaxDate = this.datePipe.transform(this.maxDate, this.Dateformat);\n if (formattedDate === formatteminDate) {\n this.minTime = this.getMinTime().toString();\n if (this.timeFormat === '12') {\n this.maxTime = '12:00 pm';\n } else {\n this.maxTime = '23:00';\n }\n }\n if (formattedDate === formattemaxDate) {\n this.maxTime = this.getMaxTime().toString();\n if (this.timeFormat === '12') {\n this.minTime = '12:00 am';\n } else {\n this.minTime = '00:00';\n }\n }\n if (formattedDate !== formatteminDate && formattedDate !== formattemaxDate) {\n if (this.timeFormat === '12') {\n this.minTime = '12:00 am';\n this.maxTime = '12:00 pm';\n } else {\n this.minTime = '00:00';\n this.maxTime = '23:00';\n }\n }\n const formattedTime = this.selectedTime || ''; // If selectedTime is null or undefined, use empty string\n if (formattedDate && formattedTime) {\n return `${formattedDate},${formattedTime}`;\n }\n return '';\n case 'DATE_RANGE':\n\n const dates = date as unknown as Date[];\n\n // Ensure dates is defined and is an array\n if (Array.isArray(dates) && dates.length === 2) {\n const start = this.datePipe.transform(dates[0], this.Dateformat);\n const end = this.datePipe.transform(dates[1], this.Dateformat);\n return `${start} - ${end}`;\n }\n\n return '';\n default:\n return this.datePipe.transform(date, this.Dateformat) || '';\n }\n }\n\n validateDateOnly() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.selectedDate) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n validateTimeOnly() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.selectedTime) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';;\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n validateDateRange() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.selectedDateRange) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n validateDateAndTime() {\n this.validationFailed = false;\n this.timeValidationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.selectedDateAndTime) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n }\n else if (this.required && !this.selectedTime) {\n this.timeValidationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n\n convertToISODate(\n dateInput: [number, number, number] | string | null | undefined\n ): Date | null {\n\n\n if (!dateInput) {\n\n\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\n return date;\n }\n\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 #datepickerYMD=\"bsDatepicker\"\n bsDatepicker\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\n [(ngModel)]=\"selectedDate\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n placeholder=\"Select date\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDatePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\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 readonly\n [format]=\"timeFormat==='24'?24:12\"\n [ngxTimepicker]=\"fullTime3\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime3.open()\"\n style=\"cursor: pointer;\"\n></i>\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\n</div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\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 #dateAndTimePicker=\"bsDatepicker\"\n type=\"text\"\n class=\"form-control height\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n placeholder=\"Select date\"\n bsDatepicker\n [class.invalid]=\"validationFailed\"\n [(ngModel)]=\"selectedDateAndTime\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateAndTimePicker()\"\n ></i>\n </div>\n <div class=\"input-container\" *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\">\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 [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n (focus)=\"closeDatepicker()\"\n [class.invalid]=\"timeValidationFailed\"\n />\n \n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime4.open()\"\n style=\"cursor: pointer;\"\n ></i>\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\n </div>\n \n <div *ngIf=\"validationFailed || timeValidationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\n <!-- Date range picker -->\n <div class=\"input-container\">\n <input\n type=\"text\"\n class=\"form-control height\"\n #daterangepicker=\"bsDaterangepicker\"\n bsDaterangepicker\n placeholder=\"Select date\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n rangeInputFormat: format,\n dateInputFormat: format, containerClass: 'theme-custom' \n }\"\n [(ngModel)]=\"selectedDateRange\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateRangePicker()\"\n ></i>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n </ng-container>\n</div>\n","import { ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { FormService } from '../../services/form.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 selectedValue: any[] = [];\n validationFailed!: boolean;\n validationMessage: string = '';\n\n constructor(private formService: FormService,\n private cdr:ChangeDetectorRef\n ) { }\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n onValueChange(newValue: any) {\n this.selectedValue = newValue;\n this.selectItems();\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.selectionType = this.question.formElement.appearance.selectionType;\n this.minimumSelection =\n this.question.formElement.validation.minimumSelection;\n this.maximumSelection =\n this.question.formElement.validation.maximumSelection;\n this.optionType = this.question.formElement.option.optionType;\n switch (this.optionType) {\n case 'OPTION':\n this.customOptions = this.question.formElement.option.customOptions.map(\n (option: { value: string }) => ({\n label: option.value,\n value: option.value,\n image: '',\n })\n );\n if (this.question.answer) {\n this.initializeCustomOption();\n }\n break;\n case 'LOOKUP':\n this.lookupTable = this.question.formElement.option.lookupTable;\n this.fetchDataFromLookup();\n break;\n case 'DATABASE':\n this.database = this.question.formElement.option.database;\n this.fetchDataFromDatabase();\n break;\n case 'API':\n this.api = this.question.formElement.option.api;\n this.fetchDataFromAPI();\n break;\n default:\n console.warn('Unknown option type:', this.optionType);\n }\n\n if(this.question.childLogics && this.question.answer){\n this.updateChildLogics(this.question)\n }\n }\n\n initializeCustomOption() {\n this.customOptions.forEach((option: any) => {\n const isMatch = this.question?.answer?.some((a: any) => {\n const parts = a.trim().split('|'); \n if (parts.length === 2) {\n const label = parts[0]; \n const value = parts[1]; \n return value === option.value; \n } else {\n return false; \n }\n });\n if (isMatch) {\n this.selectedValue.push(option);\n }\n });\n \n \n \n this.cdr.detectChanges();\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\n fetchDataFromDatabase() {\n const transformedDatabase = this.transformDatabaseObject(this.database);\n this.formService.fetchDataFromDatabase(transformedDatabase).subscribe(\n (response) => {\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 if (this.question.answer) {\n this.initializeCustomOption();\n }\n } else {\n console.error('Error fetching data from database:', response.message);\n }\n this.cdr.detectChanges();\n },\n (error) => {\n console.error('HTTP Error:', error);\n this.cdr.detectChanges();\n }\n );\n }\n\n fetchDataFromLookup() {\n this.formService.fetchDataFromLookup(this.lookupTable).subscribe(\n (response) => {\n this.customOptions = response.result.values.map(\n (item: { value: string; label: string }) => ({\n value: item.value,\n label: item.label,\n })\n );\n if (this.question.answer) {\n this.initializeCustomOption();\n }\n },\n (error) => {\n console.error('HTTP Error:', error);\n }\n );\n }\n\n fetchDataFromAPI() {\n const apiConfig = this.api;\n this.formService.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.customOptions = data.map((item: any) => ({\n value: item[apiConfig.valueField.trim()],\n label: item[apiConfig.labelField.trim()],\n }));\n if (this.question.answer) {\n this.initializeCustomOption();\n }\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 selectItems() {\n const valuesArray = this.selectedValue.map(item => `${item.label}|${item.value}`);\n this.question.answer = valuesArray; \n this.validationFailed = false;\n this.validationMessage = ''; \n if (this.selectedValue.length == 0 && this.required) {\n this.validationFailed = true;\n this.validationMessage = `This is a required question`;\n this.question.validation = false;\n } else if (\n this.selectedValue.length < this.minimumSelection ||\n this.selectedValue.length > this.maximumSelection\n ) {\n this.validationFailed = true;\n this.validationMessage = `selected options must be between ${this.minimumSelection} & ${this.maximumSelection}`;\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n if (this.question.childLogics) {\n this.updateChildLogics(this.question);\n }\n }\n\n updateChildLogics(question: any) {\n if (question.childLogics && Array.isArray(question.childLogics)) {\n question.childLogics.forEach((childLogic: any) => {\n if(this.selectionType=='SINGLE'){\n if(this.selectedValue.length==0){\n childLogic.show=false;\n }\n else{\n const selectedValue=this.selectedValue[0]?.value\n childLogic.showLogic = this.evaluateCondition(selectedValue, childLogic.condition, childLogic.inputValue);\n }\n \n }\n else if (this.selectionType === 'MULTIPLE') {\n if(this.selectedValue.length==0){\n childLogic.show=false;\n }\n else{\n const selectedValues = this.selectedValue.map((item: any) => item.value);\n childLogic.showLogic = this.evaluateMultipleCondition(selectedValues, childLogic.condition, childLogic.inputValue);\n }\n }\n });\n }\n }\n\n evaluateCondition(answer: any, condition: string, inputValue: any): boolean {\n const stringInputValue = Array.isArray(inputValue) ? inputValue.map(val => val.toString().toLowerCase()) : inputValue.toLowerCase();\n answer = Array.isArray(answer) ? answer?.map(ans => ans.toLowerCase()) : answer.toLowerCase();\n switch (condition) {\n case \"!=\":\n return answer != inputValue;\n case \"=\":\n return answer == inputValue;\n case \"IN\":\n return stringInputValue.includes(answer);\n case \"NOT IN\":\n return !stringInputValue.includes(answer);\n default:\n return false;\n }\n }\n\n evaluateMultipleCondition(answers: any, condition: string, inputValue: any): boolean {\n const stringInputValue = Array.isArray(inputValue) ? inputValue.map(val => val.toString()) : inputValue.toString();\n answers = Array.isArray(answers) ? answers?.map(answer => answer.toLowerCase()) : answers.toLowerCase();\n switch (condition) {\n case \"!=\":\n return answers.every((answer: any) => answer != stringInputValue);\n case \"=\":\n return answers.some((answer: any) => answer == stringInputValue);\n case \"IN\":\n return answers.some((answer: any) => stringInputValue.includes(answer));\n case \"NOT IN\":\n return answers.every((answer: any) => !stringInputValue.includes(answer));\n default:\n return false;\n }\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 (click)=\"selectItems()\"\n [(selectedItems)]=\"selectedValue\"\n ></lib-dropdown> -->\n\n <lib-dropdown\n [placeholder]=\"'select'\"\n [items]=\"customOptions\"\n [multiple]=\"selectionType === 'SINGLE' ? false : true\"\n (click)=\"selectItems()\"\n [(selectedItems)]=\"selectedValue\"\n ></lib-dropdown>\n\n <!-- (onDropdownScroll)=\"getNextSetOfItems($event)\"\n (onSearch)=\"search($event)\" -->\n \n <div *ngIf=\"validationFailed\" class=\"text-danger mb-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } 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 previewUploadedFiles: boolean = true;\n validationFailed: boolean = false;\n validationMessage: string = '';\n attachments: Attachment[] = [];\n\n avatarPicker: boolean = false;\n files: any;\n\n handleFileTypeNotAllowed(fileType: string): void {\n this.validationFailed = true;\n this.validationMessage = 'File type not allowed';\n }\n\n handleFileSize(event: string): void {\n this.validationFailed = true;\n if (event === 'File size exceeds the limit') {\n this.validationMessage = `${event} ${this.initialFileSize} ${this.fileSizeUnit}`;\n } else if (event === 'Total size exceeds the limit') {\n this.validationMessage = `${event} ${this.initialTotalSize} ${this.fileSizeUnit}`;\n } else {\n this.validationMessage = event;\n }\n this.clearValidationMessageAfterTimeout();\n }\n\n clearValidationMessageAfterTimeout(): void {\n setTimeout(() => {\n this.validationMessage = '';\n this.validationFailed = false;\n }, 5000); // Timeout set to 5 seconds\n }\n\n\n handleFinalArray(fileType: any[]): void {\n const extractedData = fileType.map((item: any) => ({\n name: item._file.name,\n size: item._file.size,\n type: item._file.type,\n }));\n const jsonString = JSON.stringify(extractedData);\n this.question.answer = fileType;\n }\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.multiFileUploads =\n this.question.formElement.appearance.multiFileUploads;\n this.dragAndDrop = this.question.formElement.appearance.dragAndDrop;\n this.previewUploadedFiles =\n this.question.formElement.appearance.previewUploadedFiles;\n this.fileTypes = this.question.formElement.validation.fileTypes;\n this.fileSizeUnit = this.question.formElement.validation.fileSizeUnit;\n this.avatarPicker = this.question.formElement.appearance.avatarPicker;\n this.initialFileSize = this.question.formElement.validation?.fileSize;\n this.fileSize = this.convertToBytes(\n this.initialFileSize,\n this.fileSizeUnit\n );\n this.initialTotalSize = this.question.formElement.validation?.totalFileSize;\n this.totalFileSize = this.convertToBytes(\n this.initialTotalSize,\n this.fileSizeUnit\n );\n\n if (this.question.answer) {\n this.files = this.question.answer;\n }\n\n this.attachments = this.question?.attachments;\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 selectedFile!: File;\n selectedFiles: any = [];\n\n onFileChange(event: any) {\n const file: File = event.target.files[0];\n this.selectedFile = file;\n this.selectedFiles.push(this.selectedFile);\n this.question.answer = this.selectedFiles;\n }\n\n deleteFiles(event: any) {\n this.question.deleteFiles = event;\n this.question.attachments = this.question.attachments.filter(\n (item: any) => {\n return !event.includes(item.fileId);\n }\n );\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 (fileTypeNotAllowed)=\"handleFileTypeNotAllowed($event)\"\n (fileSizeAllowed)=\"handleFileSize($event)\"\n (finalArray)=\"handleFinalArray($event)\"\n [attachments] = \"attachments\"\n (deleteFiles)=\"deleteFiles($event)\"\n [files]=\"files\"\n [dragAndDrop]=\"dragAndDrop\"\n ></lib-docUpload>\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input, ViewChild, ElementRef } from '@angular/core';\nimport { GoogleMap } from '@angular/google-maps';\n\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 @ViewChild('mapSearchField')\n searchField!: ElementRef;\n @ViewChild(GoogleMap) map!: GoogleMap;\n\n count: number = 0;\n required: boolean = false;\n hint: string = '';\n defaultZoomLevel: number = 0;\n setCurrentPosition: boolean = false;\n allowFullScreen: boolean = false;\n latitude: number = 0;\n longitude: number = 0;\n regionBoundary: boolean = false;\n region: string = '';\n showGoogleMap!: boolean;\n mapConfigurations: any = {};\n\n ngOnInit() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.defaultZoomLevel =\n this.question.formElement.appearance.defaultZoomLevel;\n this.setCurrentPosition =\n this.question.formElement.appearance.setCurrentPosition;\n this.allowFullScreen = this.question.formElement.appearance.allowFullScreen;\n this.latitude = this.question.formElement.appearance.latitude;\n this.longitude = this.question.formElement.appearance.longitude;\n this.regionBoundary = this.question.formElement.validation.regionBoundary;\n this.region = this.question.formElement.validation.region;\n this.mapConfigurations = {\n disableDefaultUI: true,\n fullscreenControl: this.allowFullScreen,\n zoomControl: true,\n };\n }\n\n ngAfterViewInit(): void {\n const searchBox = new google.maps.places.SearchBox(\n this.searchField.nativeElement\n );\n\n this.map.controls[google.maps.ControlPosition.TOP_CENTER].push(\n this.searchField.nativeElement\n );\n\n searchBox.addListener('places_changed', () => {\n const places = searchBox.getPlaces();\n if (places?.length === 0) {\n return;\n }\n\n const bounds = new google.maps.LatLngBounds();\n places?.forEach((place) => {\n if (!place.geometry || !place.geometry.location) {\n return;\n }\n\n if (place.geometry.viewport) {\n // Only geocodes have viewport.\n bounds.union(place.geometry.viewport);\n } else {\n bounds.extend(place.geometry.location);\n }\n });\n\n this.map.fitBounds(bounds);\n });\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 type=\"text\"\n class=\"form-control location-input\"\n placeholder=\"Enter location\"\n #locationInput\n />\n </div>\n\n <input #mapSearchField class=\"my-map-search-field\" type=\"text\" />\n <google-map width=\"100%\" [options]=\"mapConfigurations\"></google-map>\n</div>\n","import { Component, Input } 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 email: string = '';\n validationFailed: boolean = false;\n validationMessage: string = '';\n\n ngOnInit() {\n this.valueAssigned();\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.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.formElement.validation.regularExpression;\n this.email = this.question?.answer \n }\n\n validateEmail() {\n this.validationFailed = false;\n this.validationMessage = '';\n const enteredEmail = this.email?.trim().toLowerCase();\n if (this.required && !this.email) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n } else if (this.expectedDomains) {\n const isValidEmail = this.expectedDomains?.some((domain) =>\n enteredEmail.endsWith(domain)\n );\n this.validationFailed = !isValidEmail;\n this.validationMessage = 'Please enter valid email address';\n if (this.validationFailed) {\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n else {\n this.question.validation = true;\n }\n }\n validateInput(event: any) {\n this.question.answer = event.target.value;\n this.validateEmail();\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 [(ngModel)]=\"email\"\n (blur)=\"validateEmail()\"\n (input)=\"validateInput($event)\"\n [class.invalid]=\"validationFailed\"\n />\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { DataService } from './data.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(private http: HttpClient, private dataService: DataService) {\n this.dataService.apiUrl$.subscribe((data) => {\n this.apiUrl = data;\n });\n }\n\n loadCountryDetails(questionId: string, page: number, size: number, searchKey: string): Observable<any> {\n return this.http.get<any>(`${this.apiUrl}/api/public/json/country/${questionId}?page=${page}&size=${size}&searchKey=${searchKey}`);\n }\n\n processCountryDetails(\n data: any[],\n displayFlag: boolean,\n displayCode: boolean,\n showCountryName: boolean\n ): CountryData[] {\n const countryDetails: CountryData[] = [];\n data.forEach((country) => {\n const flag = displayFlag && country.flag ? country.flag : '';\n const name = showCountryName ? 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 \n // Special case: Only flag should be displayed, but value must have ISD code\n if (displayFlag && !displayCode && !showCountryName) {\n countryDetails.push({\n value: isdCode, // Keep ISD code in value\n label: '', // No text in label\n image: flag, // Only flag should be displayed\n });\n } else {\n // Handle all other cases\n let label = '';\n if (showCountryName) label += name;\n if (displayCode) label += (label ? ' ' : '') + isdCode;\n if (!label) label = isdCode; // Ensure label is not empty\n \n countryDetails.push({\n value: isdCode,\n label: label.trim(),\n image: flag,\n });\n }\n });\n } else {\n const fallbackCode = isdRoot || country.code || ''; // Fallback if no suffixes\n \n if (displayFlag && !displayCode && !showCountryName) {\n countryDetails.push({\n value: fallbackCode,\n label: '',\n image: flag,\n });\n } else {\n let label = '';\n if (showCountryName) label += name;\n if (displayCode) label += (label ? ' ' : '') + fallbackCode;\n if (!label) label = fallbackCode;\n \n countryDetails.push({\n value: fallbackCode,\n label: label.trim(),\n image: flag,\n });\n }\n }\n });\n return countryDetails;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CountryService } from '../../services/countryService';\n\ninterface CountryData {\n value: string;\n label: string;\n image: string;\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: CountryData[] = [];\n selectedCountry: CountryData[] = [];\n validationFailed: boolean = false;\n validationMessage: string = '';\n mobileNumber: string = '';\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 constructor(private countryService: CountryService) { }\n\n ngOnInit() {\n this.valueAssigned();\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.formElement.appearance.placeholder;\n this.displayCountryCode =\n this.question.formElement.appearance.displayCountryCode;\n this.displayFlag = this.question.formElement.appearance.displayFlag;\n this.displayCode = this.question.formElement.appearance.displayCode;\n this.showCountryName = this.question.formElement.appearance.showCountryName;\n this.beautifyNumbers = this.question.formElement.appearance.beautifyNumbers;\n this.countryWiseValidation =\n this.question.formElement.validation.countryWiseValidation;\n this.questionId = this.question.id;\n this.loadCountry(this.questionId, this.currentPage, this.size, this.searchKey);\n }\n\n\n initializeAnswer() {\n const [countryCode, mobileNumber] = this.question?.answer?.split(' ');\n this.mobileNumber = mobileNumber || '';\n\n const matchedCountry = this.countryDetails.find(country => country.value === countryCode);\n if (matchedCountry) {\n this.selectedCountry.push(matchedCountry);\n } \n }\n\n onCountryChange() {\n this.validationFailed = false;\n this.validationMessage = '';\n this.updateAnswer();\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 console.log('number', this.mobileNumber);\n \n this.updateAnswer();\n }\n onMobileNumberChange() {\n }\n\n updateAnswer() { \n if(this.displayCountryCode){\n if (this.selectedCountry.length > 0 && this.mobileNumber) {\n const countryCode = this.selectedCountry[0].value;\n this.question.answer = `${countryCode} ${this.mobileNumber}`;\n }\n }else {\n this.question.answer = this.mobileNumber;\n }\n }\n\n validateMobile() {\n this.validationFailed = false;\n this.validationMessage = '';\n \n if (this.required && (!this.mobileNumber || (this.displayCountryCode && this.selectedCountry.length === 0))) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n } else {\n this.updateAnswer();\n }\n }\n\n loadCountry(id: string, currentPage: number, size: number, searchKey: string) {\n this.countryService.loadCountryDetails(this.questionId, currentPage, size, searchKey).subscribe((data) => {\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 let newCountries=this.countryService.processCountryDetails(\n data.result.content,\n this.displayFlag,\n this.displayCode,\n this.showCountryName\n ) \n\n if (this.currentPage > 0) {\n this.countryDetails = [\n ...this.countryDetails,\n ...newCountries.filter(item => !this.countryDetails.some((existing: any) => existing.value === item.value))\n ];\n } else {\n this.countryDetails = [\n ...newCountries.filter(item => !this.countryDetails.some((existing: any) => existing.value === item.value)),\n ...this.countryDetails\n ];\n }\n if (this.question.answer) {\n this.initializeAnswer();\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.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, \"\");\n }\n else {\n this.countryDetails = []; \n this.loadCountry(this.questionId,this.currentPage, this.size, searchTerm);\n }\n }\n\n}\n\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 <ng-container *ngIf=\"displayCountryCode; else fullWidthInput\">\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 [(selectedItems)]=\"selectedCountry\"\n (selectedItemsChange)=\"onCountryChange()\"\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 height mobileField\"\n [placeholder]=\"placeholder\"\n aria-label=\"Mobile Number\"\n [class.invalid]=\"validationFailed\"\n (blur)=\"validateMobile()\"\n [(ngModel)]=\"mobileNumber\"\n (ngModelChange)=\"onMobileNumberChange()\"\n (input)=\"onInput($event)\"\n />\n </ng-container>\n\n <!-- Full-width input when displayCountryCode is false -->\n <ng-template #fullWidthInput>\n <input\n type=\"text\"\n class=\"form-control col-12 height mobileField\"\n [placeholder]=\"placeholder\"\n aria-label=\"Mobile Number\"\n [class.invalid]=\"validationFailed\"\n (blur)=\"validateMobile()\"\n [(ngModel)]=\"mobileNumber\"\n (ngModelChange)=\"onMobileNumberChange()\"\n (input)=\"onInput($event)\"\n />\n </ng-template>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Logic } from '../../models/logic.model';\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 enteredNumber!: number;\n validationFailed: boolean = false;\n validationMessage: string = '';\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.upDown = this.question.formElement.appearance.upAndDownButton;\n this.allowNegativeValues =\n this.question.formElement.appearance.allowNegativeValues;\n this.placeholder = this.question.formElement?.appearance?.placeholder || '';\n this.min = this.question.formElement.validation.min;\n this.max = this.question.formElement.validation.max;\n this.enteredNumber = this.question?.answer;\n if (this.question.childLogics && this.question.answer) {\n this.updateChildLogics(this.question);\n }\n }\n validateNumber() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.enteredNumber) {\n this.validationFailed = true;\n this.validationMessage = `Please enter a valid number`;\n this.question.validation = false;\n } else if (!this.allowNegativeValues && this.enteredNumber < 0) {\n this.validationFailed = true;\n this.validationMessage = 'Please enter a positive number';\n this.question.validation = false;\n } else if (\n (this.min !== undefined && this.enteredNumber < this.min) ||\n (this.max !== undefined && this.enteredNumber > this.max)\n ) {\n this.validationFailed = true;\n\n // Construct appropriate validation message based on whether min, max, or both are provided\n if (this.min !== undefined && this.max !== undefined) {\n this.validationMessage = `Please enter a valid number between ${this.min} and ${this.max}`;\n } else if (this.min !== undefined) {\n this.validationMessage = `Please enter a number greater than or equal to ${this.min}`;\n } else if (this.max !== undefined) {\n this.validationMessage = `Please enter a number less than or equal to ${this.max}`;\n }\n\n this.question.validation = false;\n } else {\n this.question.validation = true;\n }\n if (this.question.childLogics) {\n this.updateChildLogics(this.question);\n }\n }\n\n validateInput(event: any) {\n this.question.answer = event.target.value;\n if (this.question.childLogics) {\n this.updateChildLogics(this.question);\n }\n }\n\n updateChildLogics(question: any) {\n if (question.childLogics && Array.isArray(question.childLogics)) {\n question.childLogics.forEach((childLogic: any) => {\n if (question.answer == '') {\n childLogic.showLogic = false;\n this.clearAnswer(childLogic);\n return;\n }\n if (\n this.evaluateCondition(\n question.answer,\n childLogic.condition,\n childLogic.inputValue\n )\n ) {\n childLogic.showLogic = true;\n } else {\n childLogic.showLogic = false;\n this.clearAnswer(childLogic);\n }\n });\n }\n }\n\n evaluateCondition(answer: any, condition: any, inputValue: any) {\n switch (condition) {\n case '>':\n return answer > Number(inputValue);\n case '<':\n return answer < Number(inputValue);\n case '>=':\n return answer >= Number(inputValue);\n case '<=':\n return answer <= Number(inputValue);\n case '=':\n return answer == inputValue;\n case '!=':\n return answer != inputValue;\n default:\n return false;\n }\n }\n\n clearAnswer(childLogic: Logic) {\n childLogic.rows.forEach((formElement: any) => {\n if (formElement.entityType == 'QUESTION') {\n formElement.element.answer = '';\n }\n });\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 (blur)=\"validateNumber()\"\n [(ngModel)]=\"enteredNumber\"\n [class.invalid]=\"validationFailed\"\n (input)=\"validateInput($event)\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n />\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } 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 validationMessage: string = '';\n cnfrmValidationMessage: string = '';\n validationFailed: boolean = false;\n validatedCnfrmPassword: boolean = false;\n enteredPassword: string = '';\n enteredCnfrmPassword: string = '';\n passwordStrength: number = 0;\n questionId:string='';\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n valueAssigned() {\n this.questionId=this.question.id;\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.confirmPassword = this.question.formElement.appearance.confirmPassword;\n this.displayStrength = this.question.formElement.appearance.displayStrong;\n this.viewButton = this.question.formElement.appearance.viewButton;\n this.maxLength = this.question.formElement.validation.maxLength;\n this.minLength = this.question.formElement.validation.minLength;\n this.requireLowercaseLetters =\n this.question.formElement.validation.requireLowercaseLetters;\n this.requireUppercaseLetters =\n this.question.formElement.validation.requireUppercaseLetters;\n this.requireNumbers = this.question.formElement.validation.requireNumbers;\n this.requireSpecialCharacters =\n this.question.formElement.validation.requireSpecialCharacters;\n if (this.requireSpecialCharacters) {\n this.allowedSpecialCharacters =\n this.question.formElement.validation.allowedSpecialCharacters\n .split(',')\n .map((char: any) => char.trim());\n }\n this.enteredPassword = this.question?.answer;\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 checkPasswordMatch() {\n this.validatedCnfrmPassword = false;\n this.cnfrmValidationMessage = '';\n if (this.required && this.confirmPassword && !this.enteredCnfrmPassword) {\n this.validatedCnfrmPassword = true;\n this.cnfrmValidationMessage = `Please enter a valid password`;\n this.question.validation = false;\n }\n else if (this.enteredPassword != this.enteredCnfrmPassword && this.confirmPassword) {\n this.validatedCnfrmPassword = true;\n this.cnfrmValidationMessage = 'Passwords do not match';\n this.question.validation = false;\n }\n else{\n this.question.validation = true;\n }\n this.validatePassword();\n }\n\n \n\n validatePassword() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.enteredPassword) {\n this.validationFailed = true;\n this.validationMessage = `Please enter a valid password`;\n this.question.validation = false;\n } else if (\n this.requireLowercaseLetters ||\n this.requireUppercaseLetters ||\n this.requireNumbers ||\n this.requireSpecialCharacters ||\n this.minLength ||\n this.maxLength\n ) { \n const lowercaseRegex = /[a-z]/;\n const uppercaseRegex = /[A-Z]/;\n const numberRegex = /\\d/;\n const specialCharacterRegex = new RegExp(`[${this.allowedSpecialCharacters.join('')}]`);\n const otherSpecialCharacterRegex = new RegExp(`[^a-zA-Z0-9${this.allowedSpecialCharacters.join('')}]`);\n \n let lowerCaseValidate = lowercaseRegex.test(this.enteredPassword);\n let upperCaseValidate = uppercaseRegex.test(this.enteredPassword);\n let containsNumber = numberRegex.test(this.enteredPassword);\n let containsSpecialCharacter = specialCharacterRegex.test(this.enteredPassword);\n let containsOtherSpecialCharacter = otherSpecialCharacterRegex.test(this.enteredPassword);\n \n if (!lowerCaseValidate && this.requireLowercaseLetters) {\n this.validationFailed = true;\n this.validationMessage = 'Password must contain at least one lowercase letter';\n this.question.validation = false;\n } else if (!upperCaseValidate && this.requireUppercaseLetters) {\n this.validationFailed = true;\n this.validationMessage = 'Password must contain at least one uppercase letter';\n this.question.validation = false;\n } else if (!containsNumber && this.requireNumbers) {\n this.validationFailed = true;\n this.validationMessage = 'Password must contain at least one number';\n this.question.validation = false;\n }else if (this.enteredPassword.length < this.minLength) {\n this.validationFailed = true;\n this.validationMessage = `Password must contain at least ${this.minLength} characters`;\n this.question.validation = false;\n } else if (this.enteredPassword.length > this.maxLength) {\n this.validationFailed = true;\n this.validationMessage = `Password must be less than ${this.maxLength} characters`;\n this.question.validation = false;\n } else if (!containsSpecialCharacter && this.allowedSpecialCharacters.length>0) {\n this.validationFailed = true;\n this.validationMessage = `Password must contain at least one special character from ${this.allowedSpecialCharacters}`;\n this.question.validation = false;\n } else if(containsOtherSpecialCharacter && this.allowedSpecialCharacters.length>0){\n this.validationFailed = true;\n this.validationMessage = 'Password contains an invalid special character';\n this.question.validation = false;\n } else if(this.confirmPassword){\n this.checkPasswordMatch();\n }\n else {\n this.question.validation = true;\n } \n } else { \n this.passwordStrength=this.calculateStrength(this.enteredPassword);\n }\n this.passwordStrength = this.calculateStrength(this.enteredPassword)\n}\n\n validateInput(event:any){\n const sanitizedValue = event.target.value.replace(/\\s+/g, '');\n this.enteredPassword = sanitizedValue;\n this.question.answer=sanitizedValue;\n this.validatePassword(); \n }\n\n validateCnfrm(event:any){\n const sanitizedValue = event.target.value.replace(/\\s+/g, '');\n this.enteredCnfrmPassword = sanitizedValue;\n this.checkPasswordMatch();\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\n","<div class=\"mb-5 px-3\">\n <div class=\"password-input-wrapper mb-2\">\n <div class=\"input-wrapper\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label [for]=\"'passwordField'+questionId\">{{ question.question }}</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 (blur)=\"validatePassword()\"\n [(ngModel)]=\"enteredPassword\"\n [class.invalid]=\"validationFailed\"\n (input)=\"validateInput($event)\"\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 <div *ngIf=\"validationFailed\" class=\"text-danger mb-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\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 (blur)=\"checkPasswordMatch()\"\n [(ngModel)]=\"enteredCnfrmPassword\"\n [class.invalid]=\"validatedCnfrmPassword\"\n (input)=\"validateCnfrm($event)\"\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 *ngIf=\"validatedCnfrmPassword\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ cnfrmValidationMessage }}\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { FormService } from '../../services/form.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 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 selectedOption: any;\n validationFailed!: boolean;\n validationMessage: string = '';\n\n constructor(private formService: FormService) { }\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.color = this.question.formElement.appearance.color;\n this.optionType = this.question.formElement.option.optionType;\n\n switch (this.optionType) {\n case 'OPTION':\n this.customOptions = this.question.formElement.option.customOptions;\n this.initializeOption();\n break;\n case 'LOOKUP':\n this.lookupTable = this.question.formElement.option.lookupTable;\n this.fetchDataFromLookup();\n break;\n case 'DATABASE':\n this.database = this.question.formElement.option.database;\n this.fetchDataFromDatabase();\n break;\n case 'API':\n this.api = this.question.formElement.option.api;\n this.fetchDataFromAPI();\n break;\n default:\n console.warn('Unknown option type:', this.optionType);\n }\n\n if(this.question.childLogics && this.question.answer){\n this.updateChildLogics(this.question)\n }\n }\n\n initializeOption() {\n if (this.question.answer) {\n const dataType = typeof this.customOptions[0]?.value;\n let convertedAnswer;\n\n switch (dataType) {\n case 'number':\n convertedAnswer = Number(this.question.answer);\n break;\n case 'boolean':\n convertedAnswer = (this.question.answer === 'true');\n break;\n case 'string':\n convertedAnswer = String(this.question.answer);\n break;\n default:\n convertedAnswer = this.question.answer;\n }\n this.selectedOption = convertedAnswer;\n }\n }\n\n fetchDataFromLookup() {\n this.formService.fetchDataFromLookup(this.lookupTable).subscribe(\n (response) => {\n this.customOptions = response.result.values.map(\n (item: { value: string; label: string }) => ({\n value: item.value,\n label: item.label,\n })\n );\n this.initializeOption();\n },\n (error) => {\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) => {\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 this.initializeOption();\n } else {\n console.error('Error fetching data from database:', response.message);\n }\n },\n (error) => {\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) => {\n let data;\n if(apiConfig.pathToValue) {\n data = this.extractDataByPath(response, apiConfig.pathToValue);\n } else {\n data = response;\n }\n \n this.customOptions = data.map((item: any) => ({\n value: item[apiConfig.valueField],\n label: item[apiConfig.labelField],\n }));\n this.initializeOption();\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 validateInput() {\n this.question.answer = this.selectedOption;\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.selectedOption) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n if (this.question.childLogics) {\n this.updateChildLogics(this.question);\n }\n }\n\n updateChildLogics(question: any) {\n if (question.childLogics && Array.isArray(question.childLogics)) {\n question.childLogics.forEach((childLogic: any) => {\n childLogic.showLogic = this.evaluateCondition(this.selectedOption, childLogic.condition, childLogic.inputValue);\n });\n }\n }\n\n evaluateCondition(answer: any, condition: string, inputValue: any): boolean {\n const stringInputValue = Array.isArray(inputValue) ? inputValue.map(val => val.toString()) : inputValue;\n\n switch (condition) {\n case \"!=\":\n return answer != stringInputValue;\n case \"=\":\n return answer == stringInputValue;\n case \"IN\":\n return stringInputValue.includes(answer);\n case \"NOT IN\":\n return !(stringInputValue.includes(answer))\n default:\n return false;\n }\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 class=\"checkboxField\" *ngFor=\"let option of customOptions\">\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 (blur)=\"validateInput()\"\n [(ngModel)]=\"selectedOption\"\n (ngModelChange)=\"validateInput()\"\n />\n <label\n class=\"formCheckLabel ms-2 me-2 mb-2\"\n [for]=\"option.value\"\n *ngIf=\"optionType == 'OPTION'\"\n >{{ option.value }}</label\n >\n <label\n class=\"formCheckLabel ms-2 me-2 mb-2\"\n [for]=\"option.value\"\n *ngIf=\"optionType == 'LOOKUP' || 'DATABASE' || 'API'\"\n >{{ option.label }}</label\n >\n </div>\n\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\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 htmlContent: string = '';\n characterCount!: number;\n validationFailed: boolean = false;\n validationMessage: string = '';\n\n config: AngularEditorConfig = {\n editable: true,\n spellcheck: true,\n height: '15rem',\n minHeight: '5rem',\n translate: 'no',\n defaultParagraphSeparator: 'p',\n defaultFontName: 'Arial',\n toolbarHiddenButtons: [['bold']],\n customClasses: [\n {\n name: 'quote',\n class: 'quote',\n },\n {\n name: 'redText',\n class: 'redText',\n },\n {\n name: 'titleText',\n class: 'titleText',\n tag: 'h1',\n },\n ],\n };\n\n ngOnInit() {\n this.valueAssigned(); \n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.numberOfRows = this.question.formElement.appearance.numberOfRows;\n this.limitedCharacters =\n this.question.formElement.validation.limitedCharacters;\n this.counts = this.question.formElement.validation.count;\n this.numberOfRows = this.question.formElement.appearance.numberOfRows;\n this.limitedCharacters =\n this.question.formElement.validation.limitedCharacters;\n if (this.limitedCharacters) {\n this.characterCount = this.question.formElement.validation.count;\n }\n this.htmlContent = this.question?.answer;\n }\n\n validateEditor() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (!this.htmlContent && this.required) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n }\n }\n\n validateInput(event: any) {\n if (this.htmlContent.length >= this.characterCount) {\n this.htmlContent = this.htmlContent.substring(0, this.characterCount);\n }\n this.question.answer = this.htmlContent; \n }\n\n updateAnswer(content: string) {\n this.question.answer = content;\n }\n}\n","<div class=\"mb-4 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 <angular-editor\n [(ngModel)]=\"htmlContent\"\n [config]=\"config\"\n (input)=\"validateInput($event)\"\n (blur)=\"validateEditor()\"\n (ngModelChange)=\"updateAnswer($event)\"\n ></angular-editor>\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } 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 selectedOptions: string[] = [];\n validationFailed!:boolean;\n validationMessage:string='';\n minSelectionValue!:number;\n\n ngOnInit() {\n this.valueAssigned(); \n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.selectionMatrixColumn = this.question?.formElement?.selectionMatrixColumn;\n this.selectionMatrixLabel = this.question?.formElement?.selectionMatrixLabel;\n this.minSelectionValue= this.question?.formElement?.validation?.minSelectionValue;\n if(this.question.answer){\n this.selectedOptions=this.question.answer;\n }\n }\n\n onSelectionChange(rowIndex: number, value: string) {\n this.selectedOptions[rowIndex] = value;\n this.validateInput();\n }\n\n validateInput() {\n this.validationFailed = false;\n this.validationMessage = '';\n this.question.answer=this.selectedOptions;\n if(this.required && this.selectedOptions.length==0){\n this.validationFailed=true;\n this.validationMessage='This is a required question';\n this.question.validation = false;\n }\n else if(this.selectedOptions.length<this.minSelectionValue){\n this.validationFailed = true;\n this.validationMessage = `selected options must be greater than ${this.minSelectionValue}`;\n this.question.validation = false;\n }\n else{\n this.question.validation = true;\n } \n }\n}\n","<div class=\"mb-4 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 [value]=\"label + '_' + column\"\n [(ngModel)]=\"selectedOptions[rowIndex]\"\n (ngModelChange)=\"\n onSelectionChange(rowIndex, label + '_' + column)\n \"\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger mt-2\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\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 count: number = 0;\n required: boolean = false;\n hint: string = '';\n maxFileSize: number = 0;\n minFileSize: number = 0;\n\n ngOnInit() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.maxFileSize = this.question.formElement.validation.maxFileSize;\n this.minFileSize = this.question.formElement.validation.minFileSize;\n }\n}\n","<div class=\"mb-4 px-3\">\n <div class=\"input-wrapper\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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>\n","import { Component, Input, Renderer2, ElementRef } 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 validationFailed: boolean = false;\n validationMessage: string = '';\n\n selectedValue: number = 0;\n\n constructor(private renderer: Renderer2, private el: ElementRef) { }\n\n ngOnInit() {\n\n this.valueAssigned();\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.minValue = this.question.formElement.appearance.minValue;\n this.maxValue = this.question.formElement.appearance.maxValue;\n this.stepValue = this.question.formElement.appearance.stepValue;\n this.changeSliderColor =\n this.question.formElement.appearance.changeSliderColor;\n\n if (this.changeSliderColor) {\n this.sliderColor = this.question.formElement.appearance.sliderColor;\n }\n\n if (this.question.answer && Object.keys(this.question.answer).length>0) {\n this.selectedValue = this.question?.answer;\n } else {\n this.selectedValue = this.minValue;\n }\n }\n\n\n validateInput(event: any) {\n this.question.answer = String(this.selectedValue);\n this.question.validation = true;\n }\n\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 [(ngModel)]=\"selectedValue\"\n (input)=\"validateInput($event)\"\n />\n </mat-slider>\n </div>\n <div class=\"sliderRight\">\n <label class=\"selected-count font-weight-bold\">{{ selectedValue }}</label>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { FormService } from '../../services/form.service';\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 constructor(\n private formService: FormService,\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.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.fileDataUrl=this.question.formElement.termsAndConditionType.fileUrl\n this.question;\n this.count;\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=\"mb-4 px-3\">\n <div class=\"input-wrapper\">\n <div [innerHTML]=\"question.questionNumber\" ></div>\n &nbsp;&nbsp; <label (click)=\"preview()\">{{ question.question }}</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, Input, ElementRef, ViewChild, AfterViewInit } 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 implements AfterViewInit {\n @Input() question: any = {}; \n @ViewChild('textarea') textarea!: ElementRef<HTMLTextAreaElement>;\n\n answer: string = '';\n count: number = 0;\n required: boolean = false;\n hint: string = '';\n numberOfRows!: number;\n limitedCharacters!: boolean;\n characterCount!: number;\n validationFailed: boolean = false;\n validationMessage: string = '';\n enteredText: string = '';\n maxHeight!: number;\n lineHeight!: number;\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n ngAfterViewInit() {\n if (this.textarea?.nativeElement) {\n this.calculateMaxHeight();\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.numberOfRows = this.question.formElement.appearance.numberOfRows;\n this.limitedCharacters = this.question.formElement.validation.limitedCharacters;\n\n if (this.limitedCharacters) {\n this.characterCount = this.question.formElement.validation.count;\n }\n this.enteredText = this.question?.answer;\n }\n\n calculateMaxHeight() {\n const textareaEl = this.textarea.nativeElement;\n const computedStyles = window.getComputedStyle(textareaEl);\n\n // Get accurate line height\n this.lineHeight = parseFloat(computedStyles.lineHeight); // Default fallback to 20px\n\n // Consider padding and borders\n const paddingTop = parseFloat(computedStyles.paddingTop) || 0;\n const paddingBottom = parseFloat(computedStyles.paddingBottom) || 0;\n const borderTop = parseFloat(computedStyles.borderTopWidth) || 0;\n const borderBottom = parseFloat(computedStyles.borderBottomWidth) || 0;\n\n // Correct height calculation\n this.maxHeight = (this.lineHeight * this.numberOfRows) + paddingTop + paddingBottom + borderTop + borderBottom;\n\n textareaEl.style.height = `${this.maxHeight}px`; // Set exact height\n }\n\n validateInput(event: Event) {\n const textarea = event.target as HTMLTextAreaElement;\n\n // Restrict overflow beyond max height\n while (textarea.scrollHeight > this.maxHeight) {\n textarea.value = textarea.value.slice(0, -1);\n }\n\n this.question.answer = textarea.value;\n this.validateTextarea();\n }\n\n validateTextarea() {\n this.validationFailed = false;\n this.validationMessage = '';\n\n if (!this.enteredText && this.required) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n } else {\n this.question.validation = true;\n }\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 #textarea\n class=\"form-control mb-2\"\n [ngClass]=\"{'no-scroll': numberOfRows}\"\n [rows]=\"numberOfRows\"\n wrap=\"hard\"\n (input)=\"validateInput($event)\"\n (blur)=\"validateTextarea()\"\n [(ngModel)]=\"enteredText\"\n [class.invalid]=\"validationFailed\"\n [maxlength]=\"characterCount\"\n ></textarea>\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Logic } from '../../models/logic.model';\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 defaultValue: string = '';\n isBold!: boolean;\n isUnderline!: boolean;\n isItalics!: boolean;\n textAlign: string = '';\n font: string = '';\n fontSize: string = '';\n validationType: string = '';\n validation: string = '';\n regex!: RegExp;\n enteredText: string = '';\n validationFailed: boolean = false;\n validationMessage: string = '';\n\n ngOnInit() {\n this.valueAssigned();\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.formElement?.appearance?.placeholder || '';\n this.defaultValue = this.question.formElement.appearance?.defaultValue;\n this.enteredText = this.defaultValue;\n this.isBold = this.question.formElement.appearance?.bold;\n this.isItalics = this.question.formElement.appearance?.italics;\n this.isUnderline = this.question.formElement.appearance?.underline;\n this.textAlign = this.question.formElement.appearance?.textAlign;\n this.font = this.question.formElement.appearance?.font;\n this.fontSize = this.question.formElement.appearance?.fontSize;\n this.validationType = this.question.formElement.validation?.validationType;\n if (this.validationType == 'CUSTOM_VALIDATION') {\n this.validation = this.question.formElement.validation?.validation;\n } else if (this.validationType == 'REGULAR_EXPRESSION') {\n this.regex = this.question.formElement.validation?.regex;\n }\n\n if (\n this.question.answer !== null &&\n this.question.answer !== undefined &&\n ((typeof this.question.answer === 'string' &&\n this.question.answer.trim() !== '') ||\n (Array.isArray(this.question.answer) &&\n this.question.answer.length > 0) ||\n (typeof this.question.answer === 'object' &&\n Object.keys(this.question.answer).length > 0))\n ) {\n this.enteredText = this.question.answer;\n }\n if (this.question.childLogics && this.question.answer) {\n this.updateChildLogics(this.question)\n }\n }\n\n validatetextField() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.enteredText) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n } else {\n this.question.validation = true;\n }\n if (this.question.childLogics) {\n this.updateChildLogics(this.question);\n }\n }\n\n validateInput(event: any) {\n let value = event.target.value;\n if (this.validation == 'Numbers only') {\n event.target.value = value?.replace(/\\D/g, '');\n } else if (this.validation == 'Alphanumeric') {\n event.target.value = value?.replace(/[^a-zA-Z0-9]/g, '');\n } else if (this.validationType == 'REGULAR_EXPRESSION' && this.regex) {\n //event.target.value = value?.replace(this.regex, '');\n const regex = new RegExp(this.regex);\n\n if (regex.test(value)) {\n event.target.value = value;\n } else {\n event.target.value = value.slice(0, -1);\n }\n }\n this.question.answer = event.target.value;\n this.validatetextField();\n }\n\n updateChildLogics(question: any) {\n if (question.childLogics && Array.isArray(question.childLogics)) {\n question.childLogics.forEach((childLogic: any) => {\n if (this.enteredText == '') {\n childLogic.showLogic = false;\n this.clearAnswer(childLogic);\n }\n if (this.evaluateCondition(this.enteredText, childLogic.condition, childLogic.inputValue)) {\n childLogic.showLogic = true;\n }\n\n else {\n childLogic.showLogic = false;\n this.clearAnswer(childLogic);\n }\n });\n }\n }\n\n evaluateCondition(answer: any, condition: string, inputValue: any): boolean {\n const stringInputValue = inputValue;\n\n switch (condition) {\n case '!=':\n return answer != inputValue;\n case '=':\n return answer == inputValue;\n case 'LIKE':\n return answer.includes(inputValue);\n case 'NOT LIKE':\n return !answer.includes(inputValue);\n case 'BEGIN WITH':\n return answer.startsWith(inputValue);\n case 'END WITH':\n return answer.endsWith(inputValue);\n default:\n return false;\n }\n }\n\n clearAnswer(childLogic: Logic) {\n childLogic.rows.forEach((formElement: any) => {\n if (formElement.entityType == 'QUESTION') {\n formElement.element.answer = '';\n }\n })\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div> &nbsp;&nbsp;\n <label>{{ question.question }}</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 [(ngModel)]=\"enteredText\"\n (blur)=\"validatetextField()\"\n (input)=\"validateInput($event)\"\n [class.invalid]=\"validationFailed\"\n />\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg class=\"validationSvg\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\" fill=\"#FF0000\" stroke=\"#FF0000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12 12.75L12 7.75\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\"/>\n </svg>\n {{validationMessage}}</div>\n</div>\n","import { Component, Input } 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 selectedValue : string ='';\n\n ngOnInit() {\n this.valueAssigned();\n }\n\n getDirectionClass(): string {\n return this.acceptedLanguage === 'ara' ? 'direction-rtl' : 'direction-ltr';\n }\n\n valueAssigned() {\n this.count = this.question.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.labelOnValue = this.question.formElement.appearance.labelOnValue;\n this.labelOffValue = this.question.formElement.appearance.labelOffValue;\n this.labelOnColor = this.question.formElement.appearance.labelOnColor;\n this.labelOffColor = this.question.formElement.appearance.labelOffColor;\n \n if (!this.question.answer) {\n this.question.answer = this.labelOffValue;\n this.question.validation = true;\n this.selectedValue=this.labelOffValue;\n this.toggleBackgroundColor = this.labelOffColor;\n }\n if (this.question.answer) {\n if(this.question.answer===this.labelOnValue){\n this.selectedValue=this.labelOnValue;\n this.toggleBackgroundColor = this.labelOnColor;\n }\n else{\n this.selectedValue=this.labelOffValue;\n this.toggleBackgroundColor = this.labelOffColor;\n }\n \n this.question.validation = true;\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.selectedValue=this.question.answer;\n this.toggleBackgroundColor = isChecked\n ? this.question.formElement.appearance.labelOnColor\n : this.question.formElement.appearance.labelOffColor;\n }\n}\n","<div class=\"mb-3 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 (change)=\"toggleSliderColor($event)\"\n [checked]=\"selectedValue === labelOnValue\"\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 } 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 enteredUrl: string = '';\n validationFailed: boolean = false;\n validationMessage: string = '';\n\n constructor() { }\n\n ngOnInit() {\n this.valueAssigned();\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.count;\n this.required = this.question.required;\n this.hint = this.question.hint;\n this.placeholder = this.question.formElement.appearance.placeholder;\n this.showPreviewButton =\n this.question.formElement.appearance.showPreviewButton;\n this.enteredUrl = this.question?.answer; \n }\n validateUrl() {\n this.validationFailed = false;\n this.validationMessage = '';\n if (this.required && !this.enteredUrl) {\n this.validationFailed = true;\n this.validationMessage = 'This is a required question';\n this.question.validation = false;\n }\n else {\n this.question.validation = true;\n }\n }\n\n validateInput(event: any) {\n this.validateUrl();\n this.question.answer = event.target.value;\n }\n}\n","<div class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</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 [(ngModel)]=\"enteredUrl\"\n (blur)=\"validateUrl()\"\n (input)=\"validateInput($event)\"\n [class.invalid]=\"validationFailed\"\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 *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n","import { ChangeDetectorRef, Component, EventEmitter, Injector, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-question',\n templateUrl: './question.component.html',\n styleUrls: ['./question.component.scss']\n})\nexport class QuestionComponent {\n @Input() question: any = {};\n @Input() edit: boolean = false;\n @Input() acceptedLanguage: string = '';\n @Input() currentPageIndex: number = 0;\n @Output() emitValidations = new EventEmitter<any>();\n @Output() subFormChange = new EventEmitter<any>();\n validations: any = [];\n componentToLoad: any;\n injector!: Injector;\n\n constructor(private cdr: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.loadComponent();\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 { FormElementsComponent } = await import('../form-elements/form-elements.component');\n return FormElementsComponent;\n }\n\n private createInjector(): Injector {\n return Injector.create({\n providers: [\n { provide: 'grid', useValue: this.question.childLogics },\n { provide: 'edit', useValue: this.edit },\n { provide: 'answer', useValue: this.question.answer },\n { provide: 'state', useValue: 'child' },\n { provide: 'acceptedLanguage', useValue: this.acceptedLanguage }\n ],\n });\n }\n\n updateSubFormWithSubmissions(event: any) {\n this.subFormChange.emit(event);\n }\n\n handleValidation(validation: any) {\n this.validations.push(validation);\n this.emitValidations.emit(this.validations);\n this.cdr.detectChanges();\n }\n\n}\n","<div [ngSwitch]=\"question.formElement.elementType\">\n <lib-check-box-fields *ngSwitchCase=\"'CHECK_BOX'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-check-box-fields>\n <lib-date-time-fields *ngSwitchCase=\"'DATE_TIME'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-date-time-fields>\n <lib-drop-down-fields *ngSwitchCase=\"'DROP_DOWN'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-drop-down-fields>\n <lib-file-picker-fields *ngSwitchCase=\"'FILE_PICKER'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-file-picker-fields>\n <lib-location-fields *ngSwitchCase=\"'LOCATION'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-location-fields>\n <lib-mail-fields *ngSwitchCase=\"'EMAIL'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-mail-fields>\n <lib-mobile-fields *ngSwitchCase=\"'MOBILE'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-mobile-fields>\n <lib-number-fields *ngSwitchCase=\"'NUMBER'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-number-fields>\n <lib-password-fields *ngSwitchCase=\"'PASSWORD'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-password-fields>\n <lib-radio-button-fields *ngSwitchCase=\"'RADIO_BUTTON'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-radio-button-fields>\n <lib-rich-text-editor-fields *ngSwitchCase=\"'RICH_TEXT_EDITOR'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields *ngSwitchCase=\"'SELECTION_MATRIX'\" [question]=\"question\" [acceptedLanguage]=\"acceptedLanguage\" (validate)=\"handleValidation($event)\"></lib-selection-matrix-fields>\n <lib-signature-fields *ngSwitchCase=\"'SIGNATURE'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-signature-fields>\n <lib-slider-fields *ngSwitchCase=\"'SLIDER'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-slider-fields>\n <lib-terms-and-condition-fields *ngSwitchCase=\"'TERMS_AND_CONDITION'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-terms-and-condition-fields>\n <lib-text-area-fields *ngSwitchCase=\"'TEXT_AREA'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-text-area-fields>\n <lib-text-fields *ngSwitchCase=\"'TEXT_BOX'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-text-fields>\n <lib-toggle-switch-fields *ngSwitchCase=\"'TOGGLE_SWITCH'\" [question]=\"question\" [acceptedLanguage]=\"acceptedLanguage\" (validate)=\"handleValidation($event)\"></lib-toggle-switch-fields>\n <lib-url-fields *ngSwitchCase=\"'URL'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-url-fields>\n</div>\n\n<ng-container *ngIf=\"question.childLogics\">\n <ng-container *ngIf=\"componentToLoad\">\n <ng-container *ngComponentOutlet=\"componentToLoad; \n inputs: { grid: question.childLogics, \n answer: question.answer, \n state: 'child' }\"></ng-container>\n </ng-container>\n</ng-container>\n","import { Component, Inject, Injector} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'lib-submission-modal',\n templateUrl: './submission-modal.component.html',\n styleUrls: ['./submission-modal.component.scss']\n})\nexport class SubmissionModalComponent {\n acceptedLanguage: string ='';\n grid: any;\n subForm:any;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef<SubmissionModalComponent>\n ) { }\n\n ngOnInit(){\n this.subForm = this.data.subForm;\n this.acceptedLanguage = this.data.acceptedLanguage;\n }\n\n async loadFormElementsComponent(grid: any) {\n this.grid = grid;\n const { FormElementsComponent } = await import('../../question/form-elements/form-elements.component');\n return FormElementsComponent;\n }\n \n createInjector(): Injector {\n return Injector.create({\n providers: [\n { provide: 'grid', useValue: this.grid },\n { provide: 'state', useValue: 'child' },\n ],\n });\n }\n \n closeModal() {\n this.clearModal();\n this.dialogRef.close();\n }\n\n saveSubmission(){\n this.dialogRef.close(this.subForm);\n }\n\n clearModal() {\n if (this.subForm && this.subForm.rows) {\n this.subForm.rows.flatMap((item: any) => \n item.grid\n .forEach((gridItem: any) => this.clearFormElement(gridItem))\n );\n // this.subForm.formElements.forEach((formElement: any) => {\n // this.clearFormElement(formElement);\n // });\n }\n }\n\n clearFormElement(formElement: any) {\n if (formElement.entityType === 'QUESTION') {\n formElement.element.answer = ''; \n\n // Additional properties to clear if needed\n if (formElement.element.formElement) {\n if (formElement.element.formElement.elementType === 'FILE_PICKER') {\n formElement.element.answer = null; // or [] depending on how you store files\n } else {\n formElement.element.answer = '';\n }\n }\n\n if (formElement.element.childLogics) {\n formElement.element.childLogics.forEach((childLogic: any) => {\n childLogic.showLogic=false;\n childLogic.formElements.forEach((formElement:any)=>{\n this.clearFormElement(formElement);\n\n })\n });\n }\n } \n }\n}\n","<div class=\"mb-5\">\n <div class=\"modalHeader mb-4\">\n <div class=\"title-div\">\n <p class=\"title\">{{subForm.title}}</p>\n </div>\n <div class=\"header-btn\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" (click)=\"closeModal()\">\n <path d=\"M8 8L16 16\" stroke=\"#1D252D\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M16 8L8 16\" stroke=\"#1D252D\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> \n </div>\n </div>\n\n <div class=\"px-3\" *ngFor=\"let row of subForm.rows\">\n <ng-container *ngFor=\"let formElement of row.grid\">\n <div *ngIf=\"formElement.entityType === 'QUESTION'\">\n <lib-check-box-fields\n *ngIf=\"formElement.element.formElement.elementType === 'CHECK_BOX'\"\n [question]=\"formElement.element\"\n ></lib-check-box-fields>\n <lib-date-time-fields\n *ngIf=\"formElement.element.formElement.elementType === 'DATE_TIME'\"\n [question]=\"formElement.element\"\n ></lib-date-time-fields>\n <lib-drop-down-fields\n *ngIf=\"formElement.element.formElement.elementType === 'DROP_DOWN'\"\n [question]=\"formElement.element\"\n ></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'FILE_PICKER'\n \"\n [question]=\"formElement.element\"\n ></lib-file-picker-fields>\n <lib-location-fields\n *ngIf=\"formElement.element.formElement.elementType === 'LOCATION'\"\n [question]=\"formElement.element\"\n ></lib-location-fields>\n\n <lib-mail-fields\n *ngIf=\"formElement.element.formElement.elementType === 'EMAIL'\"\n [question]=\"formElement.element\"\n >\n </lib-mail-fields>\n <lib-mobile-fields\n *ngIf=\"formElement.element.formElement.elementType === 'MOBILE'\"\n [question]=\"formElement.element\"\n >\n </lib-mobile-fields>\n <lib-number-fields\n *ngIf=\"formElement.element.formElement.elementType === 'NUMBER'\"\n [question]=\"formElement.element\"\n >\n </lib-number-fields>\n <lib-password-fields\n *ngIf=\"formElement.element.formElement.elementType === 'PASSWORD'\"\n [question]=\"formElement.element\"\n >\n </lib-password-fields>\n <lib-radio-button-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'RADIO_BUTTON'\n \"\n [question]=\"formElement.element\"\n ></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'RICH_TEXT_EDITOR'\n \"\n [question]=\"formElement.element\"\n ></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'SELECTION_MATRIX'\n \"\n [question]=\"formElement.element\"\n [acceptedLanguage] = \"acceptedLanguage\"\n ></lib-selection-matrix-fields>\n <lib-signature-fields\n *ngIf=\"formElement.element.formElement.elementType === 'SIGNATURE'\"\n [question]=\"formElement.element\"\n ></lib-signature-fields>\n <lib-slider-fields\n *ngIf=\"formElement.element.formElement.elementType === 'SLIDER'\"\n [question]=\"formElement.element\"\n ></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngIf=\"\n formElement.element.formElement.elementType ===\n 'TERMS_AND_CONDITION'\n \"\n [question]=\"formElement.element\"\n ></lib-terms-and-condition-fields>\n <lib-text-area-fields\n *ngIf=\"formElement.element.formElement.elementType === 'TEXT_AREA'\"\n [question]=\"formElement.element\"\n ></lib-text-area-fields>\n <lib-text-fields\n *ngIf=\"formElement.element.formElement.elementType === 'TEXT_BOX'\"\n [question]=\"formElement.element\"\n ></lib-text-fields>\n <lib-toggle-switch-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'TOGGLE_SWITCH'\n \"\n [question]=\"formElement.element\"\n [acceptedLanguage] = \"acceptedLanguage\"\n ></lib-toggle-switch-fields>\n <lib-url-fields\n *ngIf=\"formElement.element.formElement.elementType === 'URL'\"\n [question]=\"formElement.element\"\n ></lib-url-fields>\n <!-- <lib-first-child\n *ngIf=\"formElement.element.childLogics\"\n [childLogics]=\"formElement.element.childLogics\"\n ></lib-first-child> -->\n\n <ng-container *ngIf=\"formElement.element.childLogics\">\n <ng-container *ngComponentOutlet=\"loadFormElementsComponent(formElement.element.childLogics) | async\"></ng-container>\n </ng-container>\n\n </div>\n <div *ngIf=\"formElement.entityType === 'SECTION'\">\n <lib-section-fields\n [section]=\"formElement.element\"\n ></lib-section-fields>\n </div>\n </ng-container>\n \n </div>\n\n <div class=\"okBtn me-4 ms-4\">\n <button\n class=\"submitBtn ms-md-3 me-md-2 rounded-pill\"\n type=\"button\"\n (click)=\"saveSubmission()\">\n Ok\n </button>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { SubmissionModalComponent } from '../../sub-form/submission-modal/submission-modal.component';\nimport { Attachment } from '../../models/attachment.model';\n\ninterface Answer {\n questionId: string;\n answer?: any;\n answerId?: string;\n deleteFiles?: string[];\n attachments?: Attachment[];\n files?: any;\n isChild?: boolean;\n}\n\ninterface Submission {\n submissionId: string;\n answers: Answer[];\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() acceptedLanguage: string ='';\n\n submissions: Submission[] = [];\n deletedSubmissions: string[] = [];\n displayedColumns: string[] = [];\n\n constructor(public dialog: MatDialog) {}\n\n ngOnInit() { \n if (this.subForm?.submissions) {\n this.submissions = this.subForm.submissions;\n this.subForm.deletedSubmissions = [];\n }\n this.initializeDisplayedColumns();\n }\n\n initializeDisplayedColumns() {\n this.displayedColumns = this.subForm.rows.flatMap((item: any) => \n item.grid\n .map((gridItem: any) => gridItem.element.question)\n );\n \n // this.displayedColumns = this.subForm.formElements.map((fe: any) => fe.element.question);\n this.displayedColumns.push('actions');\n }\n\n getAnswerByQuestionId(submission: Submission, questionId: string) {\n return submission.answers.find(answer => answer.questionId === questionId);\n }\n\n subFormSubmission(subForm: any) {\n const processFormElements = (rows: any[], isChild: boolean = false): Answer[] => {\n const answers: Answer[] = [];\n \n rows.flatMap((item: any) => \n item.grid.forEach((formElement: any) => {\n const answer: Answer = {\n questionId: formElement.element.id,\n answer: formElement.element?.answer || '',\n files: formElement.element.formElement.elementType == 'FILE_PICKER' && formElement.element.answer\n ? formElement.element.answer\n : undefined,\n isChild: isChild\n };\n \n if (\n formElement.element.formElement.elementType == 'FILE_PICKER' &&\n formElement.element.answer\n ) {\n const fileNames = formElement.element.answer.map(\n (file: any) => file?._file.name\n );\n answer.answer = fileNames;\n }\n answers.push(answer);\n \n if (formElement.element.childLogics) {\n formElement.element.childLogics.forEach((logic: any) => {\n if(logic.showLogic){\n answers.push(...processFormElements(logic.rows, true));\n logic.showLogic=false;\n }\n });\n }\n })\n );\n return answers;\n };\n \n const answers = processFormElements(subForm.rows);\n \n if (answers.length > 0) {\n const submission: Submission = {\n submissionId: '',\n answers: answers,\n };\n this.submissions.push(submission);\n this.submissions = [...this.submissions];\n this.updateSubFormWithSubmissions();\n }\n }\n \n\n editSubFormSubmission(index: number, submission: Submission) {\n const subForm = this.bindAnswers(this.subForm, submission);\n const dialogConfig = new MatDialogConfig();\n dialogConfig.position = { top: '5%' };\n dialogConfig.width = '100%';\n dialogConfig.data = {\n subForm: subForm,\n acceptedLanguage: this.acceptedLanguage\n };\n dialogConfig.hasBackdrop = true;\n dialogConfig.disableClose = true;\n dialogConfig.maxHeight = '80vh';\n const dialogRef = this.dialog.open(SubmissionModalComponent, dialogConfig);\n\n dialogRef.afterClosed().subscribe((result: any) => {\n if (result) {\n this.updateSubmission(result, index);\n }\n });\n }\n\n bindAnswers(subForm: any, submission: Submission): any {\n const bindElementAnswers = (rows: any[], answers: Answer[]) => {\n rows.forEach((row: any) => {\n row.grid.forEach((grid:any)=>{ \n const answer = answers.find(\n (a) => a.questionId === grid.element.id\n );\n if (answer) {\n grid.element.answer =\n grid.element.formElement.elementType == 'FILE_PICKER'\n ? answer?.files\n : answer.answer;\n grid.element.answerId = answer.answerId;\n grid.element.attachments = answer.attachments;\n }\n if (grid.element.childLogics) {\n grid.element.childLogics.forEach((logic: any) => {\n bindElementAnswers(logic.rows, answers);\n });\n }\n })\n \n });\n };\n\n const updatedSubForm = { ...subForm }; \n bindElementAnswers(updatedSubForm.rows, submission.answers);\n return updatedSubForm;\n }\n\n deleteSubForm(index: number) {\n const submission = this.submissions[index];\n if (submission.submissionId) {\n this.deletedSubmissions.push(submission.submissionId);\n }\n this.submissions.splice(index, 1);\n this.submissions = [...this.submissions];\n this.updateSubFormWithSubmissions();\n }\n\n addNewSubmission() {\n const dialogConfig = new MatDialogConfig();\n dialogConfig.position = { top: '5%' };\n dialogConfig.width = '100%';\n dialogConfig.data = {\n subForm: JSON.parse(JSON.stringify(this.subForm)), \n acceptedLanguage: this.acceptedLanguage\n };\n dialogConfig.hasBackdrop = true;\n dialogConfig.disableClose = true;\n dialogConfig.maxHeight = '80vh';\n const dialogRef = this.dialog.open(SubmissionModalComponent, dialogConfig);\n \n dialogRef.afterClosed().subscribe((result: any) => {\n if (result) {\n const hasData = result.rows.flatMap((item: any) => \n item.grid\n .some((formElement: any) => formElement.element.answer && formElement.element.answer.length > 0)\n );\n \n if (hasData) {\n this.subFormSubmission(result);\n }\n }\n });\n }\n \n \n\n updateSubmission(result: any, index: number) {\n const processFormElements = (rows: any[], answers: Answer[]) => {\n rows.forEach((row: any) => {\n row.grid.forEach((grid:any)=>{\n let answer: Answer = {\n questionId: grid.element.id,\n answerId: grid.element?.answerId || '',\n attachments: grid.element.attachments || [],\n answer: [],\n files: [],\n deleteFiles: [],\n };\n \n if (answer.attachments) {\n answer.answer = answer.attachments.map(\n (attachment: Attachment) => attachment.fileName\n );\n }\n \n if (grid.element.formElement.elementType === 'FILE_PICKER') {\n if (grid.element?.deleteFiles) {\n answer.answer = [];\n grid.element.deleteFiles.forEach((deletedId: string) => {\n answer.deleteFiles?.push(deletedId);\n if (answer.attachments) {\n answer.attachments = answer.attachments.filter(\n (attachment: Attachment) => {\n const fileName = attachment.fileName;\n if (attachment.fileId !== deletedId) {\n if (!answer.answer.includes(fileName)) {\n answer.answer.push(fileName);\n return true;\n }\n }\n return false;\n }\n );\n }\n });\n }\n if (grid.element.answer) {\n answer.files = grid.element.answer;\n grid.element.answer.forEach((file: any) => {\n const fileName = file._file?.name;\n let fileNamesArray = Array.isArray(answer.answer)\n ? answer.answer\n : [];\n if (!fileNamesArray.includes(fileName)) {\n fileNamesArray.push(fileName);\n }\n answer.answer = fileNamesArray;\n });\n }\n } else {\n answer = {\n questionId: grid.element.id,\n answerId: grid.element?.answerId || '',\n attachments: grid.element.attachments,\n answer: grid.element.answer,\n };\n }\n grid.element.answer = '';\n answers.push(answer);\n \n if (grid.element.childLogics) {\n grid.element.childLogics.forEach((logic: any) => {\n if(logic.showLogic){\n processFormElements(logic.rows, answers);\n }\n });\n }\n })\n });\n };\n \n this.submissions[index].answers = []; \n processFormElements(result.rows, this.submissions[index].answers);\n this.submissions = [...this.submissions];\n this.updateSubFormWithSubmissions();\n this.clearEmptyRows();\n } \n\n updateSubFormWithSubmissions() {\n this.subForm.submissions = this.submissions;\n this.subForm.deletedSubmissions = this.deletedSubmissions;\n this.subFormChange.emit(this.subForm);\n }\n\n clearEmptyRows() {\n const nonEmptySubmissions:Submission[] = [];\n const emptySubmissionIds:string[] = [];\n \n this.submissions.forEach(submission => {\n if (submission.answers.some(answer => answer.answer !== '')) {\n nonEmptySubmissions.push(submission);\n } else if (submission.submissionId) {\n emptySubmissionIds.push(submission.submissionId);\n }\n });\n \n this.submissions = nonEmptySubmissions;\n this.deletedSubmissions.push(...emptySubmissionIds);\n this.updateSubFormWithSubmissions();\n }\n \n}\n","<div class=\"example-container \" tabindex=\"0\">\n <div class=\"table-container\">\n <table mat-table [dataSource]=\"submissions\" class=\"mat-elevation-z8\">\n <ng-container *ngFor=\"let row of subForm.rows\">\n <ng-container *ngFor=\"let formElement of row.grid\" [matColumnDef]=\"formElement.element.question\">\n <th mat-header-cell *matHeaderCellDef class=\"border border-1\">{{ formElement.element.question }}</th>\n <td mat-cell *matCellDef=\"let submission\" class=\"border border-1\" [ngClass]=\"{'hidden': getAnswerByQuestionId(submission, formElement.element.id)?.isChild}\">\n {{ getAnswerByQuestionId(submission, formElement.element.id)?.answer }}\n </td>\n </ng-container>\n </ng-container>\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th mat-header-cell *matHeaderCellDef class=\"border border-1\"> Actions </th>\n <td mat-cell *matCellDef=\"let submission; let i = index\" class=\"text-center border border-1\">\n\n <div>\n <button class=\"btn\" mat-icon-button [matMenuTriggerFor]=\"menu\" aria-label=\"Example icon-button with a menu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"editSubFormSubmission(i, submission)\">\n <svg width=\"29\" height=\"28\" viewBox=\"0 0 29 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"0.5\" y=\"0.5\" width=\"28\" height=\"26.4737\" rx=\"5.5\" fill=\"white\" stroke=\"#D8D8D8\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.0009 19.0787H9.1582V16.2361C9.1582 15.9447 9.2739 15.6653 9.47999 15.4593L16.2224 8.71686C16.4284 8.5105 16.708 8.39453 16.9995 8.39453C17.2911 8.39453 17.5707 8.5105 17.7767 8.71686L19.5201 10.4603C19.7264 10.6663 19.8424 10.9458 19.8424 11.2374C19.8424 11.529 19.7264 11.8086 19.5201 12.0145L12.7777 18.757C12.5715 18.9628 12.2922 19.0785 12.0009 19.0787Z\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M15.1704 10.3984L17.8415 13.0695\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <button mat-menu-item (click)=\"deleteSubForm(i)\">\n <svg width=\"29\" height=\"28\" viewBox=\"0 0 29 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"0.5\" y=\"0.5\" width=\"27.6402\" height=\"26.1328\" rx=\"5.5\" fill=\"white\" stroke=\"#D8D8D8\"/>\n <path d=\"M8.60449 9.20637H20.0354\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M19.2189 9.20703V17.7863C19.2189 18.6482 18.4881 19.3462 17.5859 19.3462H11.0539C10.1517 19.3462 9.4209 18.6482 9.4209 17.7863V9.20703\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M16.7696 6.67122H11.8706\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.6871 12.3242V16.2239\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M15.9532 12.3242V16.2239\" stroke=\"#084FFF\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </mat-menu>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n <div class=\"footer\">\n <div class=\"addNewBtn\" (click)=\"addNewSubmission()\">\n <svg width=\"15\" height=\"14\" viewBox=\"0 0 15 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.5556 13.2778H2.44444C1.64639 13.2778 1 12.6673 1 11.9136V2.3642C1 1.61048 1.64639 1 2.44444 1H12.5556C13.3536 1 14 1.61048 14 2.3642V11.9136C14 12.6673 13.3536 13.2778 12.5556 13.2778Z\" stroke=\"#D8D8D8\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.3335 7.50347H9.66683\" stroke=\"#084FFF\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M7.50005 5.33594V9.66927\" stroke=\"#084FFF\" stroke-width=\"0.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <a class=\"ms-2 text-decoration-none\">Add New</a>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Injector, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-sub-form',\n templateUrl: './sub-form.component.html',\n styleUrls: ['./sub-form.component.scss'],\n})\nexport class SubFormComponent implements OnInit {\n @Input() subForm: any = {};\n @Input() edit: boolean = false;\n @Output() subFormChange = new EventEmitter<any>();\n @Input() acceptedLanguage: string ='';\n decodedDescription:string='';\n grid: any;\n \n ngOnInit() {\n if (this.subForm.subFormStructure == 'single') {\n this.bindAnswersToFormElements();\n }\n }\n\n async loadFormElementsComponent(grid: any) {\n this.grid = grid;\n const { FormElementsComponent } = await import('../form-elements/form-elements.component');\n return FormElementsComponent;\n }\n \n createInjector(): Injector {\n return Injector.create({\n providers: [\n { provide: 'grid', useValue: this.grid },\n { provide: 'state', useValue: 'child' },\n ],\n });\n }\n\n decodeHtml(html: string): string {\n const textArea = document.createElement('textarea');\n textArea.innerHTML = html; \n return textArea.value;\n }\n\n bindAnswersToFormElements() {\n const bindAnswers = (formElements: any[], submissions: any[]) => {\n formElements.forEach((formElement: { entityType: string; element: any }) => {\n if (formElement.entityType === 'QUESTION') {\n const submission = submissions.find((sub: { answers: any[] }) =>\n sub.answers.some((ans: { questionId: any }) => ans.questionId === formElement.element.id)\n );\n\n if (submission) {\n const answer = submission.answers.find((ans: { questionId: any }) => ans.questionId === formElement.element.id);\n if (answer) {\n formElement.element.answer = answer.answer;\n formElement.element.answerId = answer.answerId;\n formElement.element.validation = true;\n formElement.element.attachments = answer.attachments;\n this.subForm.submissionId = submission.submissionId;\n }\n }\n\n if (formElement.element.childLogics) {\n formElement.element.childLogics.forEach((childLogic: { formElements: any[] }) => {\n bindAnswers(childLogic.formElements, submissions);\n });\n }\n }\n });\n };\n\n if (this.subForm && this.subForm.formElements && this.subForm.submissions) {\n bindAnswers(this.subForm.formElements, this.subForm.submissions);\n }\n }\n\n\n updateSubFormWithSubmissions(event: any) {\n this.subForm = event;\n this.subFormChange.emit(this.subForm);\n }\n\n ngOnChanges(): void {\n if (this.subForm.description) {\n this.decodedDescription = this.decodeHtml(this.subForm.description);\n }\n }\n}\n","<div class=\"outer-container mb-4 px-3\">\n <div class=\"body container pt-3 pb-3 px-3\">\n <div class=\"tab-content pt-4 pb-3 px-3\">\n <p class=\"sectionTitle\">{{ subForm.title }}</p>\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\n\n <div *ngIf=\"subForm.subFormStructure == 'multiple'\">\n <lib-multiple-subform\n [subForm]=\"subForm\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-multiple-subform>\n </div>\n <div *ngIf=\"subForm.subFormStructure == 'single'\">\n <div *ngFor=\"let row of subForm.rows\">\n <div *ngFor=\"let grid of row.grid\">\n <div *ngIf=\"grid.entityType === 'QUESTION'\">\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\n <lib-check-box-fields *ngSwitchCase=\"'CHECK_BOX'\" [question]=\"grid.element\"></lib-check-box-fields>\n <lib-date-time-fields *ngSwitchCase=\"'DATE_TIME'\" [question]=\"grid.element\"></lib-date-time-fields>\n <lib-drop-down-fields *ngSwitchCase=\"'DROP_DOWN'\" [question]=\"grid.element\"></lib-drop-down-fields>\n <lib-file-picker-fields *ngSwitchCase=\"'FILE_PICKER'\" [question]=\"grid.element\"></lib-file-picker-fields>\n <lib-location-fields *ngSwitchCase=\"'LOCATION'\" [question]=\"grid.element\"></lib-location-fields>\n <lib-mail-fields *ngSwitchCase=\"'EMAIL'\" [question]=\"grid.element\"></lib-mail-fields>\n <lib-mobile-fields *ngSwitchCase=\"'MOBILE'\" [question]=\"grid.element\"></lib-mobile-fields>\n <lib-number-fields *ngSwitchCase=\"'NUMBER'\" [question]=\"grid.element\"></lib-number-fields>\n <lib-password-fields *ngSwitchCase=\"'PASSWORD'\" [question]=\"grid.element\"></lib-password-fields>\n <lib-radio-button-fields *ngSwitchCase=\"'RADIO_BUTTON'\" [question]=\"grid.element\"></lib-radio-button-fields>\n <lib-rich-text-editor-fields *ngSwitchCase=\"'RICH_TEXT_EDITOR'\" [question]=\"grid.element\"></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields *ngSwitchCase=\"'SELECTION_MATRIX'\" [question]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"></lib-selection-matrix-fields>\n <lib-signature-fields *ngSwitchCase=\"'SIGNATURE'\" [question]=\"grid.element\"></lib-signature-fields>\n <lib-slider-fields *ngSwitchCase=\"'SLIDER'\" [question]=\"grid.element\"></lib-slider-fields>\n <lib-terms-and-condition-fields *ngSwitchCase=\"'TERMS_AND_CONDITION'\" [question]=\"grid.element\"></lib-terms-and-condition-fields>\n <lib-text-area-fields *ngSwitchCase=\"'TEXT_AREA'\" [question]=\"grid.element\"></lib-text-area-fields>\n <lib-text-fields *ngSwitchCase=\"'TEXT_BOX'\" [question]=\"grid.element\"></lib-text-fields>\n <lib-toggle-switch-fields *ngSwitchCase=\"'TOGGLE_SWITCH'\" [question]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"></lib-toggle-switch-fields>\n <lib-url-fields *ngSwitchCase=\"'URL'\" [question]=\"grid.element\"></lib-url-fields>\n </div>\n \n <ng-container *ngIf=\"grid.element.childLogics\">\n <ng-container *ngComponentOutlet=\"loadFormElementsComponent(grid.element.childLogics) | async\"></ng-container>\n </ng-container>\n </div>\n \n <div *ngIf=\"grid.entityType === 'SECTION'\">\n <lib-section-fields\n [section]=\"grid.element\"\n ></lib-section-fields>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Injector, Input, Output } from '@angular/core';\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() edit: boolean = false;\n @Input() acceptedLanguage: string ='';\n decodedDescription:string='';\n grid: any;\n \n ngOnInit() { \n }\n\n async loadFormElementsComponent(grid: any) {\n this.grid = grid;\n const { FormElementsComponent } = await import('../form-elements/form-elements.component');\n return FormElementsComponent;\n }\n \n createInjector(): Injector {\n return Injector.create({\n providers: [\n { provide: 'grid', useValue: this.grid },\n { provide: 'state', useValue: 'child' },\n ],\n });\n }\n\n decodeHtml(html: string): string {\n const textArea = document.createElement('textarea');\n textArea.innerHTML = html; \n return textArea.value;\n }\n\n ngOnChanges(): void {\n if (this.questionGroup.description) {\n this.decodedDescription = this.decodeHtml(this.questionGroup.description);\n }\n }\n}\n","<div class=\"outer-container mb-4 px-3\">\n <div class=\"body container pt-3 pb-3 px-3\">\n <div class=\"tab-content pt-4 pb-3 px-3\">\n <p class=\"sectionTitle\">{{ questionGroup.title }}</p>\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\n \n <div class=\"mt-5\">\n <div *ngFor=\"let row of questionGroup.rows\">\n <div *ngFor=\"let grid of row.grid\">\n <div *ngIf=\"grid.entityType === 'QUESTION'\">\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\n <lib-check-box-fields *ngSwitchCase=\"'CHECK_BOX'\" [question]=\"grid.element\"></lib-check-box-fields>\n <lib-date-time-fields *ngSwitchCase=\"'DATE_TIME'\" [question]=\"grid.element\"></lib-date-time-fields>\n <lib-drop-down-fields *ngSwitchCase=\"'DROP_DOWN'\" [question]=\"grid.element\"></lib-drop-down-fields>\n <lib-file-picker-fields *ngSwitchCase=\"'FILE_PICKER'\" [question]=\"grid.element\"></lib-file-picker-fields>\n <lib-location-fields *ngSwitchCase=\"'LOCATION'\" [question]=\"grid.element\"></lib-location-fields>\n <lib-mail-fields *ngSwitchCase=\"'EMAIL'\" [question]=\"grid.element\"></lib-mail-fields>\n <lib-mobile-fields *ngSwitchCase=\"'MOBILE'\" [question]=\"grid.element\"></lib-mobile-fields>\n <lib-number-fields *ngSwitchCase=\"'NUMBER'\" [question]=\"grid.element\"></lib-number-fields>\n <lib-password-fields *ngSwitchCase=\"'PASSWORD'\" [question]=\"grid.element\"></lib-password-fields>\n <lib-radio-button-fields *ngSwitchCase=\"'RADIO_BUTTON'\" [question]=\"grid.element\"></lib-radio-button-fields>\n <lib-rich-text-editor-fields *ngSwitchCase=\"'RICH_TEXT_EDITOR'\" [question]=\"grid.element\"></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields *ngSwitchCase=\"'SELECTION_MATRIX'\" [question]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"></lib-selection-matrix-fields>\n <lib-signature-fields *ngSwitchCase=\"'SIGNATURE'\" [question]=\"grid.element\"></lib-signature-fields>\n <lib-slider-fields *ngSwitchCase=\"'SLIDER'\" [question]=\"grid.element\"></lib-slider-fields>\n <lib-terms-and-condition-fields *ngSwitchCase=\"'TERMS_AND_CONDITION'\" [question]=\"grid.element\"></lib-terms-and-condition-fields>\n <lib-text-area-fields *ngSwitchCase=\"'TEXT_AREA'\" [question]=\"grid.element\"></lib-text-area-fields>\n <lib-text-fields *ngSwitchCase=\"'TEXT_BOX'\" [question]=\"grid.element\"></lib-text-fields>\n <lib-toggle-switch-fields *ngSwitchCase=\"'TOGGLE_SWITCH'\" [question]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"></lib-toggle-switch-fields>\n <lib-url-fields *ngSwitchCase=\"'URL'\" [question]=\"grid.element\"></lib-url-fields>\n </div>\n \n <ng-container *ngIf=\"grid.element.childLogics\">\n <ng-container *ngComponentOutlet=\"loadFormElementsComponent(grid.element.childLogics) | async\"></ng-container>\n </ng-container>\n </div>\n \n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n ","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-recursive-logic',\n templateUrl: './recursive-logic.component.html',\n styleUrls: ['./recursive-logic.component.css']\n})\nexport class RecursiveLogicComponent {\n@Input() grid: any = {};\n @Input() currentPageIndex: number = 0;\n @Input() edit : boolean = false;\n @Input() acceptedLanguage: string ='';\n @Output() subFormChange = new EventEmitter<any>();\n @Input() state!: string;\n @Input() answer!: string;\n \n updateSubFormWithSubmissions(event:any){\n this.subFormChange.emit(event);\n }\n}\n","<div *ngIf=\"grid.entityType === 'QUESTION'\">\n <lib-question [question]=\"grid?.element\" [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"></lib-question>\n</div>\n<div *ngIf=\"grid.entityType === 'SECTION'\">\n <lib-section-fields [section]=\"grid.element\"></lib-section-fields>\n</div>\n<ng-container *ngIf=\"grid.entityType === 'SUBFORM'\">\n <lib-sub-form [subForm]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"></lib-sub-form>\n</ng-container>\n\n<ng-container *ngIf=\"grid.entityType === 'QUESTION_GROUP'\">\n <lib-question-group [questionGroup]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"></lib-question-group>\n</ng-container>","import {\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\n\n@Component({\n selector: 'lib-form-elements',\n templateUrl: './form-elements.component.html',\n styleUrls: ['./form-elements.component.scss'],\n})\nexport class FormElementsComponent {\n @Input() grid: any = {};\n @Input() currentPageIndex: number = 0;\n @Input() edit : boolean = false;\n @Input() acceptedLanguage: string ='';\n @Output() subFormChange = new EventEmitter<any>();\n @Input() state!: string;\n @Input() answer!: string;\n \n updateSubFormWithSubmissions(event:any){\n this.subFormChange.emit(event);\n }\n}\n","<ng-container *ngIf=\"state === 'child'; else parentBlock\">\n <div *ngFor=\"let childLogic of grid\">\n <div *ngIf=\"childLogic.showLogic && answer\">\n <div *ngFor=\"let row of childLogic.rows\">\n <div *ngFor=\"let grid of row.grid\">\n \n <lib-recursive-logic [grid]=\"grid\" [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\">\n </lib-recursive-logic>\n </div>\n </div>\n </div>\n</div>\n\n</ng-container>\n<ng-template #parentBlock>\n <lib-recursive-logic [grid]=\"grid\" [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\">\n </lib-recursive-logic>\n \n</ng-template>\n\n","import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-navigation-tabs',\n templateUrl: './navigation-tabs.component.html',\n styleUrls: ['./navigation-tabs.component.scss'],\n})\nexport class NavigationTabsComponent {\n @Input() pages: any[] = [];\n @Input() currentPageIndex: number = 0;\n @Output() pageChanged = new EventEmitter<number>();\n @Output() submitEmit: EventEmitter<any> = new EventEmitter<any>();\n @Input() edit : boolean = false;\n @Input() acceptedLanguage: string ='';\n @Input() eligibleForSubmission:{ status: boolean; message: string } = { status: true, message: '' };\n @Output() subFormChange = new EventEmitter<any>();\n @Input() pageDetails: any[] = [];\n @Output() rowSetIndex = new EventEmitter<number>();\n loadedPages: { [key: number]: boolean } = {};\n showTooltip: boolean = false;\n\n constructor() {\n // Load the first page initially\n this.loadedPages[this.currentPageIndex] = true;\n }\n\n\n ngOnInit() {\n }\n\n updateSubFormWithSubmissions(event:any){\n this.subFormChange.emit(event);\n }\n\n\n setCurrentPage(index: number) {\n this.pageChanged.emit(index);\n this.currentPageIndex = index;\n // Mark this page as loaded to avoid reloading\n if (!this.loadedPages[index]) {\n this.loadedPages[index] = true;\n }\n \n }\n\n submitForm() {\n this.submitEmit.emit();\n }\n\n trackByIndex(index: number, item: any): number {\n return index;\n }\n\n loadMoreData(): void {\n if(this.pages[this.pages.length-1] <= this.currentPageIndex){\n this.rowSetIndex.emit(this.currentPageIndex);\n }\n }\n\n toggleTooltip() {\n this.showTooltip = !this.eligibleForSubmission.status;\n}\n}\n","<div class=\"tab-inner-container\">\n <ul class=\"nav nav-tabs navTabs\" id=\"myTab\" role=\"tablist\">\n <li\n class=\"nav-item\"\n role=\"presentation\"\n *ngFor=\"let page of pageDetails; let i = index; trackBy: trackByIndex\"\n [ngClass]=\"{'nav-item-ara': acceptedLanguage === 'ara', 'nav-item-default': acceptedLanguage !== 'ara'}\"\n >\n <button\n class=\"nav-link\"\n [title]=\"page.title\"\n data-bs-toggle=\"tooltip\"\n data-bs-placement=\"top\"\n data-bs-custom-class=\"custom-tooltip\"\n [class.active]=\"i === currentPageIndex\"\n id=\"tab-{{ i }}\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-controls]=\"'content-' + i\"\n [attr.aria-selected]=\"i === currentPageIndex\"\n (click)=\"setCurrentPage(i)\"\n >\n {{ page.name }}\n </button>\n </li>\n </ul>\n\n <div class=\"tab-content pt-5 pb-3 px-1\">\n <ng-container *ngIf=\"pages[currentPageIndex]\">\n <div\n class=\"tab-pane fade show active\"\n id=\"content-{{ currentPageIndex }}\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'tab-' + currentPageIndex\"\n >\n <div *ngIf=\"loadedPages[currentPageIndex]\">\n <div class=\"data-container\" \n infiniteScroll \n [infiniteScrollDistance]=\"2\" \n [infiniteScrollThrottle]=\"200\" \n (scrolled)=\"loadMoreData()\">\n <div *ngFor=\"let row of pages[currentPageIndex].rows\">\n <div class=\"margin d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / 12)}\">\n <lib-form-elements\n [grid]=\"grid\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"currentPageIndex === pages.length - 1\"\n class=\"footerButton d-flex justify-content-end me-4 ms-4 position-relative\"\n >\n <!-- Hover detection container -->\n <div\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n <button\n class=\"btn btn-primary rounded-pill submitButton\"\n type=\"button\"\n (click)=\"submitForm()\"\n [disabled]=\"!eligibleForSubmission.status\"\n >\n Submit\n </button>\n \n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n </div>\n \n\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-next-prev-navigation',\n templateUrl: './next-prev-navigation.component.html',\n styleUrls: ['./next-prev-navigation.component.scss']\n})\nexport class NextPrevNavigationComponent {\n\n @Input() currentPageIndex: number = 0;\n @Input() pages: any[] = [];\n @Input() previousPage: any = {};\n @Input() nextPage: any = {};\n @Input() currentPage: any = {};\n @Input() pageDetails: any[] = [];\n @Output() navigateNext = new EventEmitter<void>();\n @Output() navigatePrevious = new EventEmitter<void>();\n @Output() submitEmit: EventEmitter<any> = new EventEmitter<any>();\n @Input() edit: boolean = false;\n @Input() acceptedLanguage: string ='';\n @Output() subFormChange = new EventEmitter<any>();\n @Output() rowSetIndex = new EventEmitter<number>();\n\n\n\n updateSubFormWithSubmissions(event: any) {\n this.subFormChange.emit(event);\n }\n\n onNavigateNext() {\n this.navigateNext.emit();\n }\n\n onNavigatePrevious() {\n this.navigatePrevious.emit();\n }\n\n submitForm() {\n this.submitEmit.emit();\n }\n\n loadMoreData(): void {\n this.rowSetIndex.emit(this.currentPageIndex);\n }\n}\n","<div class=\"pageTitleDiv\">\n <p class=\"pageTitle\">{{pageDetails[currentPageIndex].name}}</p>\n</div>\n<div class=\"button-inner-container rounded\">\n <div class=\"tab-content pt-5 pb-3 row\">\n <div class=\"data-container\" \n infiniteScroll \n [infiniteScrollDistance]=\"2\" \n [infiniteScrollThrottle]=\"200\" \n (scrolled)=\"loadMoreData()\">\n \n <div *ngFor=\"let row of pages[currentPageIndex]?.rows\" class=\"marginSize d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / (12))}\">\n <lib-form-elements\n [grid]=\"grid\"\n [currentPageIndex]=\"currentPageIndex\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n state=\"parent\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n <div class=\"footerButton\">\n <div\n class=\"prevButtonDiv\"\n [ngClass]=\"{ 'prevDirection-rtl': acceptedLanguage === 'ara' }\">\n <button\n class=\"me-md-2 rounded-pill navButton\"\n type=\"button\"\n (click)=\"onNavigatePrevious()\"\n *ngIf=\"0 < currentPageIndex\"\n >\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #defaultSvg>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n Previous | {{ previousPage.name }}\n </button>\n </div>\n <div\n class=\"nextButtonDiv\"\n [ngClass]=\"{ 'nextDirection-rtl': acceptedLanguage === 'ara' }\"\n >\n <button\n class=\"md-2 rounded-pill navButton\"\n type=\"button\"\n (click)=\"onNavigateNext()\"\n *ngIf=\"currentPageIndex < pageDetails.length - 1\"\n >\n Next | {{ nextPage.name }}\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #defaultSvg>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n </button>\n <button\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill\"\n type=\"button\"\n *ngIf=\"currentPageIndex == pageDetails.length - 1\"\n (click)=\"submitForm()\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-submission-container',\n templateUrl: './submission-container.component.html',\n styleUrls: ['./submission-container.component.scss']\n})\nexport class SubmissionContainerComponent {\n @Input() parentQuestionAnswers:any;\n\n isImageUrl(url: string): boolean {\n return url.match(/\\.(jpeg|jpg|gif|png)$/) != null;\n }\n}\n","<div class=\"subModule\">\n <div class=\"submission-container\">\n <div *ngFor=\"let qa of parentQuestionAnswers\" class=\"submission-item\">\n <div class=\"key\">{{ qa.question }}</div>\n <div class=\"value\">\n <ng-container *ngIf=\"qa.elementType === 'FILE_PICKER'; else text\">\n <div class=\"files\" *ngFor=\"let attachment of qa.attachments\">\n <ng-container *ngIf=\"isImageUrl(attachment.fileName); else fileLink\">\n <img [src]=\"attachment.fileUrl\" alt=\"{{ attachment.fileName }}\" class=\"image\">\n </ng-container>\n <ng-template #fileLink>\n <p>{{ attachment.fileName }}</p>\n <a class=\"fileName\" [href]=\"attachment.fileUrl\" target=\"_blank\">\n <i class=\"bi bi-file-earmark\"></i>\n </a>\n </ng-template>\n </div>\n </ng-container>\n <ng-template #text>\n <ng-container [ngSwitch]=\"qa.elementType\">\n <p *ngSwitchCase=\"'RICH_TEXT_EDITOR'\" [innerHTML]=\"qa.values\"></p>\n <p *ngSwitchCase=\"'DROP_DOWN'\">{{ qa.values.join(', ') }}</p>\n <p *ngSwitchCase=\"'SELECTION_MATRIX'\">{{ qa.values.join(', ') }}</p>\n <p *ngSwitchDefault>{{ qa.values }}</p>\n </ng-container>\n </ng-template>\n </div>\n </div>\n</div>\n </div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormService } from '../../services/form.service';\nimport * as mapper from '../../services/mapper.service';\nimport { PublicForm } from '../../models/publicForm.model';\nimport { ToastrService } from 'ngx-toastr';\nimport { Router } from '@angular/router';\nimport { DataService } from '../../services/data.service';\nimport { RecaptchaService } from '../../services/recaptcha.service';\n\ninterface Answer {\n questionId: string;\n answer: any;\n answerId?: string;\n deleteFiles?: string[];\n}\n\ninterface Submission {\n submissionId: string;\n answers: Answer[];\n}\n\ninterface Form {\n formId: string;\n deletedSubmissions: any[];\n submissions: Submission[];\n}\n\ninterface QuestionAnswersWrapper {\n parentId: string;\n answers: Answer[];\n forms: Form[];\n}\n\n@Component({\n selector: 'lib-submit-form',\n templateUrl: './submit-form.component.html',\n styleUrls: ['./submit-form.component.scss'],\n})\nexport class SubmitFormComponent implements OnInit, OnDestroy {\n question: PublicForm | null = null;\n @Input() moduleName: string = '';\n @Input() edit: boolean = false;\n @Input() submissionId: string = '';\n @Input() acceptedLanguage: string = '';\n @Output() submit: EventEmitter<string> = new EventEmitter<string>();\n @Output() apiCalled: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n name: string = '';\n saveAutomatically: boolean = false;\n saveInterval: number = 0;\n customizeFont: boolean = false;\n fontFamily: string = '';\n fontSize: number = 0;\n enableDataExport: boolean = false;\n fileFormats: string[] = [];\n enableQuestionNumbering: boolean = false;\n questionNumbering: string = '';\n enableGoogleRecaptcha: boolean = false;\n googleRecaptchaKey: string = '';\n googleRecaptchaSecret: string = '';\n navigation: string = '';\n markAllQuestionsAsRequired: boolean = false;\n pages: any = [];\n currentPageIndex: number = 0;\n previousPage: any = {};\n currentPage: any = {};\n nextPage: any = {};\n lastTab: boolean = false;\n questionAnswers: QuestionAnswersWrapper = { parentId: '', answers: [], forms: [] };\n files: { questionId: string; file: any }[] = [];\n parentQuestions: any;\n submission: any = {};\n parentQuestionAnswers: any;\n parentSubmissionId: string = '';\n submissionInProgress: boolean = false;\n recaptchaToken: string = '';\n pageDetails: any = [];\n pageNumber: number = 1;\n rowSet: number = 0;\n rowSetCount: [number] = [0];\n eligibleForSubmission:{ status: boolean; message: string } = { status: true, message: '' };\n\n\n\n constructor(\n private formService: FormService,\n private toastr: ToastrService,\n private router: Router,\n private dataService: DataService,\n private recaptchaService: RecaptchaService\n ) {\n const navigation = this.router.getCurrentNavigation();\n this.submission = navigation?.extras.state?.['submission']\n this.parentSubmissionId = this.submission?.id;\n this.parentQuestionAnswers = this.submission?.questionAnswers\n this.parentQuestions = navigation?.extras.state?.['parentQuestions'];\n this.dataService.setParentQuestions(this.parentQuestions);\n }\n ngOnDestroy(): void {\n this.recaptchaService.removeRecaptchaScript();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['acceptedLanguage']) {\n this.currentPageIndex = 0;\n this.acceptedLanguage = changes['acceptedLanguage'].currentValue;\n // if(!this.edit)\n this.getFormData();\n }\n }\n\n ngOnInit() {\n if (this.edit && this.submissionId) {\n this.getSubmittedFormData();\n } else {\n // this.getFormData();\n }\n\n if (this.enableGoogleRecaptcha) {\n this.getToken();\n }\n }\n\n async getToken(): Promise<void> {\n try {\n const token = await this.recaptchaService.getRecaptchaToken();\n this.recaptchaToken = token;\n } catch (error: any) {\n\n\n console.error('Error while getting reCAPTCHA token:', error.error.message);\n }\n }\n\n private loadFont(fontUrl: string) {\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = fontUrl;\n document.head.appendChild(link);\n }\n\n getFormData() {\n this.formService.getQuestions(this.moduleName).subscribe((response: any) => {\n this.enableGoogleRecaptcha = response.result.moduleConfiguration?.enableGoogleRecaptcha;\n this.question = mapper.mapPublicFormToModel(response);\n this.assignQuestionProperties(this.question);\n\n //set font family and font size\n if (response.result.moduleConfiguration.customizeFont) {\n this.fontFamily = response.result.moduleConfiguration.fontFamily\n this.fontSize = response.result.moduleConfiguration.fontSize\n } else {\n this.fontFamily = 'poppins';\n this.fontSize = 18;\n }\n if(response?.result?.pageDetails){\n this.pageDetails = response.result.pageDetails;\n this.nextPage = this.pageDetails[1];\n }\n this.rowSetCount[0] = response.result.totalNumberRow;\n document.documentElement.style.setProperty('--library-font-family', this.fontFamily);\n document.documentElement.style.setProperty('--library-font-size', this.fontSize + 'px');\n const fontUrl = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(this.fontFamily)}`;\n this.loadFont(fontUrl);\n\n if (this.enableGoogleRecaptcha)\n this.getToken();\n for (let i = 0; i < this.pageDetails.length; i++) {\n if (!this.pages[i]) {\n this.pages[i] = [];\n }\n }\n });\n }\n\n getSubmittedFormData() {\n this.formService\n .getSubmittedForm(this.moduleName, this.submissionId)\n .subscribe((response) => {\n this.enableGoogleRecaptcha = response.result.moduleConfiguration.enableGoogleRecaptcha;\n this.question = mapper.mapPublicFormToModel(response);\n this.assignQuestionProperties(this.question);\n if(response?.result?.pageDetails){\n this.pageDetails = response.result.pageDetails;\n this.nextPage = this.pageDetails[1];\n }\n for (let i = 0; i < this.pageDetails.length; i++) {\n if (!this.pages[i]) {\n this.pages[i] = [];\n }\n }\n if (this.enableGoogleRecaptcha) {\n this.getToken();\n }\n });\n }\n\n assignQuestionProperties(question: PublicForm) {\n this.name = question.name;\n this.pages = question.pages;\n if (this.parentQuestions) {\n this.parentQuestionAnswers = question?.questionAnswers;\n this.parentSubmissionId = question?.parentId;\n }\n this.currentPage = this.pages[0];\n this.nextPage = this.pages[1];\n this.saveAutomatically = question.formConfiguration.saveAutomatically;\n this.saveInterval = question.formConfiguration.saveInterval;\n this.customizeFont = question.formConfiguration.customizeFont;\n this.fontFamily = question.formConfiguration.fontFamily;\n this.fontSize = question.formConfiguration.fontSize;\n this.enableDataExport = question.formConfiguration.enableDataExport;\n this.fileFormats = question.formConfiguration.fileFormats;\n this.enableQuestionNumbering =\n question.formConfiguration.enableQuestionNumbering;\n this.questionNumbering = question.formConfiguration.questionNumbering;\n this.enableGoogleRecaptcha =\n question.formConfiguration.enableGoogleRecaptcha;\n this.googleRecaptchaKey = question.formConfiguration.googleRecaptchaKey;\n this.googleRecaptchaSecret =\n question.formConfiguration.googleRecaptchaSecret;\n this.navigation = question.formConfiguration.navigation;\n this.markAllQuestionsAsRequired =\n question.formConfiguration.markAllQuestionsAsRequired;\n this.apiCalled.emit(true)\n }\n\n navigateToNextPage() { \n this.setCurrentPage(this.currentPageIndex+1);\n if (this.currentPageIndex < this.pageDetails.length - 1) {\n if (this.markAllQuestionsAsRequired) {\n const currentPageData = this.pages[this.currentPageIndex];\n const validationResponse =\n this.validateRequiredQuestions(currentPageData);\n if (validationResponse.isValid) {\n if (this.pageDetails && this.pageDetails[this.currentPageIndex]) {\n this.previousPage = this.pageDetails[this.currentPageIndex];\n }\n this.nextPage = this.pageDetails[this.currentPageIndex+1];\n } else { \n this.toastr.warning(validationResponse.message);\n }\n } else {\n this.previousPage = this.pageDetails[this.currentPageIndex];\n this.currentPageIndex++;\n this.currentPage = this.pages[this.currentPageIndex];\n this.nextPage = this.pageDetails[this.currentPageIndex];\n }\n }\n }\n\n navigateToPreviousPage() {\n if (this.currentPageIndex > 0) {\n if (this.markAllQuestionsAsRequired) {\n const currentPageData = this.pages[this.currentPageIndex];\n const validationResponse =\n this.validateRequiredQuestions(currentPageData);\n if (validationResponse.isValid) {\n this.nextPage = this.pageDetails[this.currentPageIndex];\n this.currentPageIndex--;\n this.currentPage = this.pages[this.currentPageIndex];\n this.previousPage = this.pageDetails[this.currentPageIndex-1];\n } else {\n this.toastr.warning(validationResponse.message);\n }\n } else {\n this.nextPage = this.pageDetails[this.currentPageIndex];\n this.currentPageIndex--;\n this.currentPage = this.pages[this.currentPageIndex];\n this.previousPage = this.pageDetails[this.currentPageIndex-1];\n }\n }\n }\n checkSubmissionEligibility(): void {\n this.eligibleForSubmission = this.validateAllElementLoaded();\n \n \n }\n\n setCurrentPage(index: number) { \n if (index < this.pages.length) {\n if (!this.pages[index] || this.pages[index].length != 0) {\n return;\n }\n }\n this.pageNumber = index + 1;\n if(this.edit){\n this.formService.getSubmittedForm(this.moduleName, this.submissionId, this.pageNumber, this.rowSet).subscribe((response: any) => {\n if (response?.result?.pages) {\n this.pages[index] = response.result.pages[0]; \n }\n this.currentPageIndex=index;\n this.currentPage = this.pages[index];\n this.rowSetCount[index] = response.result.totalNumberRow;\n });\n }else{\n this.formService.getQuestions(this.moduleName,this.pageNumber,this.rowSet).subscribe((response: any) => {\n if (response?.result?.pages) {\n this.pages[index] = response.result.pages[0]; \n }\n this.currentPageIndex=index;\n this.currentPage = this.pages[index];\n this.rowSetCount[index] = response.result.totalNumberRow;\n });\n }\n if (this.markAllQuestionsAsRequired) {\n const currentPageData = this.pages[this.currentPageIndex];\n const validationResponse =\n this.validateRequiredQuestions(currentPageData);\n if (validationResponse.isValid) {\n this.currentPageIndex = index;\n } else {\n this.toastr.warning(validationResponse.message);\n }\n } else {\n this.currentPageIndex = index;\n }\n \n \n }\n\n loadMoreData(index: number): void {\n let rowCountLimit = this.rowSetCount[index];\n let rowCount =this.pages[index].rows.length/20;\n rowCount = Math.ceil(rowCount);\n if(rowCount+1>rowCountLimit)\n {\n this.checkSubmissionEligibility();\n return;\n }\n\n if(this.edit){\n this.formService.getSubmittedForm(this.moduleName, this.submissionId, index+1, rowCount).subscribe((response: any) => {\n const newRows = response?.result?.pages[0]?.rows ?? [];\n this.pages[index].rows = [...(this.pages[index]?.rows ?? []), ...newRows];\n this.currentPageIndex=index;\n this.currentPage = this.pages[index];\n this.rowSetCount[index] = response.result.totalNumberRow;\n this.checkSubmissionEligibility();\n });\n }\n else{\n this.formService.getQuestions(this.moduleName, index+1, rowCount).subscribe((response: any) => {\n const newRows = response?.result?.pages[0]?.rows ?? [];\n this.pages[index].rows = [...(this.pages[index]?.rows ?? []), ...newRows];\n this.currentPageIndex=index;\n this.currentPage = this.pages[index];\n this.rowSetCount[index] = response.result.totalNumberRow;\n this.checkSubmissionEligibility();\n });\n }\n\n \n }\n\n generateQuestionAnswers() {\n this.files = [];\n const extractQuestions = (\n formElements: any[],\n parentFormId: string | null = null,\n isInSubForm: boolean = false,\n subFormIndex: number = 0\n ): { answers: Answer[]; forms: Form[] } => {\n const questions: Answer[] = [];\n const forms: Form[] = [];\n\n formElements.forEach((element) => {\n if (element.entityType === 'QUESTION') {\n let baseQuestion: any;\n if (element.element.formElement.elementType === 'FILE_PICKER') {\n baseQuestion = {\n questionId: element.element.id,\n answer: '',\n };\n if (Array.isArray(element.element.answer)) {\n const questionId = isInSubForm\n ? `${parentFormId}_${subFormIndex}_${element.element.id}`\n : element.element.id;\n this.files.push({\n questionId: questionId,\n file: element.element.answer,\n });\n }\n } else {\n baseQuestion = {\n questionId: element.element.id,\n answer: element.element.answer,\n };\n }\n if (this.edit) {\n questions.push({\n ...baseQuestion,\n answerId: element.element.answerId || '',\n deleteFiles: element.element.deleteFiles || [],\n });\n } else {\n questions.push(baseQuestion);\n }\n\n if (element.element.childLogics) {\n for (let logic of element.element.childLogics) {\n if (logic.showLogic) {\n for (let row of logic.rows) {\n const result = extractQuestions(\n row.grid,\n parentFormId,\n isInSubForm,\n subFormIndex\n );\n questions.push(...result.answers);\n forms.push(...result.forms);\n }\n\n }\n }\n }\n } else if (element.entityType === 'SUBFORM') {\n const subformId = element.element.id;\n const submissionId = element.element.submissionId;\n\n if (element.element.subFormStructure === 'single') {\n let subformQuestions: any = { answers: [] };\n const subform: Form = {\n formId: subformId,\n deletedSubmissions: [],\n submissions: [],\n };\n element.element.rows.forEach((row: any) => {\n subformQuestions = extractQuestions(\n row.grid,\n subformId,\n true,\n forms.length\n );\n\n subform.submissions.push(\n {\n submissionId: submissionId,\n answers: subformQuestions.answers,\n },\n );\n \n })\n forms.push(subform);\n } else if (element.element.subFormStructure === 'multiple') {\n const subformAnswers: Answer[] = [];\n let subformQuestions: any = { answers: [] };\n element.element.rows.forEach((row: any) => {\n subformQuestions = extractQuestions(\n row.grid,\n subformId,\n true,\n forms.length\n )\n })\n const existingSubform = forms.find(\n (form) => form.formId === subformId\n );\n element.element?.submissions?.forEach(\n (submission: any, index: number) => {\n submission.answers.forEach((answer: any) => {\n if (Array.isArray(answer.files)) {\n const questionId = `${subformId}_${index}_${answer.questionId}`;\n this.files.push({\n questionId: questionId,\n file: answer.files,\n });\n delete answer.files;\n }\n delete answer.attachments;\n });\n }\n );\n\n const subform: Form = {\n formId: subformId,\n deletedSubmissions: element.element.deletedSubmissions,\n submissions: element.element.submissions,\n };\n forms.push(subform);\n }\n }\n else if(element.entityType === 'QUESTION_GROUP'){\n // Handle Question Group by iterating through rows\n element.element.rows.forEach((row: any) => {\n row.grid.forEach((gridItem: any) => {\n if (gridItem.entityType === 'QUESTION') {\n questions.push({\n questionId: gridItem.element.id,\n answer: gridItem.element.answer,\n });\n }\n });\n });\n }\n });\n return { answers: questions, forms: forms };\n };\n\n const processPages = (\n pages: any[]\n ): { answers: Answer[]; forms: Form[] } => {\n const questions: Answer[] = [];\n const forms: Form[] = [];\n\n pages.forEach((page) => {\n page.rows.forEach((row: any) => {\n const result = extractQuestions(row.grid);\n questions.push(...result.answers);\n forms.push(...result.forms);\n });\n });\n\n return { answers: questions, forms: forms };\n };\n\n const result = processPages(this.pages);\n\n this.questionAnswers = {\n parentId: '',\n answers: result.answers,\n forms: result.forms,\n };\n }\n validateAllElementLoaded(): { status: boolean; message: string } {\n if (this.pages.length < this.pageDetails.length) {\n return {\n status: false,\n message: \"Please ensure all pages are fully visible before submitting the form.\"\n };\n }\n \n const incompletePages: string[] = [];\n \n this.pages.forEach((p: any, i: number) => {\n if (!p || !Array.isArray(p.rows) || Math.ceil(p.rows.length / 20) < this.rowSetCount[i]) {\n incompletePages.push(this.pageDetails[i].name);\n }\n });\n \n if (incompletePages.length > 0) {\n return {\n status: false,\n message: `Some sections are still loading. Please scroll through the following pages to ensure all questions are loaded: ${incompletePages.join(\", \")}.`,\n };\n }\n \n return { status: true, message: \"Great! All sections are complete. You can now submit the form.\" };\n }\n \n \n \n \n\n\n submitForm() {\n if(!this.validateAllElementLoaded().status){\n this.toastr.warning('Please wait for all elements to load'); \n return;\n }\n if (this.submissionInProgress) {\n return;\n }\n \n this.submissionInProgress = true;\n let validationResponse = this.validateForm(this.pages);\n this.generateQuestionAnswers();\n if (validationResponse.isValid) {\n const formData = new FormData();\n this.questionAnswers.parentId = this.parentSubmissionId;\n formData.append('json', JSON.stringify(this.questionAnswers));\n if (this.files.length > 0) {\n this.files.forEach((fileItem) => {\n fileItem.file.forEach((file: any) => {\n formData.append(fileItem.questionId, file._file);\n });\n });\n }\n const formServiceCall = this.edit && this.submissionId\n ? this.formService.updateForm(this.moduleName, this.submissionId, formData, this.recaptchaToken)\n : this.formService.submitForm(this.moduleName, formData, this.recaptchaToken);\n\n formServiceCall.subscribe({\n next: (response) => {\n this.toastr.success(this.edit ? 'Form updated successfully' : 'Form submitted successfully');\n this.submit.emit('success');\n this.submissionInProgress = false;\n },\n error: (error) => {\n this.toastr.error(error.error.message);\n this.submissionInProgress = false;\n if (this.enableGoogleRecaptcha) {\n this.getToken();\n }\n }\n });\n } else {\n\n this.toastr.error(validationResponse.message);\n this.submissionInProgress = false;\n }\n }\n\n validateForm(jsonData: any): {\n isValid: boolean;\n message: string;\n pageIndex: number | 0;\n } {\n const validateQuestions = (\n formElements: any[]\n ): { isValid: boolean; message: string; pageIndex: number | 0 } => {\n for (let element of formElements) {\n if (element.entityType === 'QUESTION') {\n const required = element.element.required;\n const answer = element.element.answer;\n const validation = element.element.validation;\n if (element.element.formElement.elementType === 'FILE_PICKER') {\n const attachment = element.element.attachments;\n if (required) {\n if ((!answer || answer.length === 0) && attachment.length == 0) {\n return {\n isValid: false,\n message: `Form is invalid - Required file question ${element.element.questionNumber} has no files uploaded.`,\n pageIndex: 0,\n };\n }\n }\n } else {\n if (required) {\n if (!answer || Object.keys(answer).length === 0) {\n return {\n isValid: false,\n message: `Form is invalid - Question ${element.element.questionNumber} is required but no answer provided.`,\n pageIndex: 0,\n };\n } else if (!validation) {\n return {\n isValid: false,\n message: `Form is invalid - Question ${element.element.questionNumber} is required but validation is false.`,\n pageIndex: 0,\n };\n }\n } else if (!required && answer && Object.keys(answer).length > 0) {\n if (!validation) {\n return {\n isValid: false,\n message: `Form is invalid - Question ${element.element.questionNumber} is not required but answer provided with validation false.`,\n pageIndex: 0,\n };\n }\n }\n }\n if (element.element.childLogics) {\n for (let logic of element.element.childLogics) {\n if (logic.showLogic) {\n const result = validateQuestions(logic.rows);\n if (!result.isValid) return result;\n }\n }\n }\n } else if (element.entityType === 'SUBFORM') {\n if (element.element.subFormStructure === \"multiple\") {\n const data = element.element.rows;\n const requiredQuestionIds = data\n .flatMap((row: any) => row.grid) // Extracting grid items from each object\n .filter((item: any) => {\n return item.element.required; // Ensuring the filter properly checks 'required'\n })\n .map((item: any) => item.element.id);\n\n if (requiredQuestionIds.length > 0) {\n\n if (element?.element?.submissions?.length > 0) {\n const areRequiredQuestionsAnswered = requiredQuestionIds.every((requiredId: string) => {\n const matchingAnswer = element?.element?.submissions\n .flatMap((sub: any) => sub.answers)\n .find((answer: any) => answer.questionId === requiredId);\n return matchingAnswer && matchingAnswer.answer.trim() !== \"\";\n });\n if (!areRequiredQuestionsAnswered) {\n return {\n isValid: false,\n message: \"Form is invalid - Question is required but no answer provided.\",\n pageIndex: 0,\n };\n } else {\n return { isValid: true, message: \"\", pageIndex: 0 };\n }\n } else {\n return {\n isValid: false,\n message: \"Form is invalid - No submissions provided for required questions.\",\n pageIndex: 0,\n };\n }\n\n } else {\n return { isValid: true, message: \"\", pageIndex: 0 };\n }\n\n\n } else {\n if (element.element.rows) { \n const results = element.element.rows.map((row: any) => {\n const validationResult = validateQuestions(row.grid);\n return validationResult; \n });\n const isValid = results.every((res: any) => res.isValid);\n if (!isValid) {\n return results;\n } \n // const result = element.element.rows.flatMap((row: any) => \n // {\n // validateQuestions(row.grid);\n // if (!result.isValid) return result;\n // })\n }\n }\n }\n }\n return { isValid: true, message: '', pageIndex: 0 };\n };\n\n for (let pageIndex = 0; pageIndex < jsonData.length; pageIndex++) {\n const page = jsonData[pageIndex];\n for (let row of page.rows) {\n const result = validateQuestions(row.grid);\n if (!result.isValid) {\n return {\n isValid: false,\n message: `Page ${pageIndex + 1}: ${result.message}`,\n pageIndex: pageIndex,\n };\n }\n }\n }\n return {\n isValid: true,\n message: 'Form is valid.',\n pageIndex: 0,\n };\n }\n\n validateRequiredQuestions(page: any): { isValid: boolean; message: string } {\n const validateQuestions = (\n formElements: any[]\n ): { isValid: boolean; message: string } => {\n for (let element of formElements) {\n if (element.entityType === 'QUESTION') {\n const required = element.element.required;\n const answer = element.element.answer;\n if (element.element.formElement.elementType === 'FILE_PICKER') {\n if (required) {\n if (!answer || answer.length === 0) {\n return {\n isValid: false,\n message: `Required file question ${element.element.questionNumber} is not answered.`,\n };\n }\n }\n } else {\n if (required) {\n if (!answer || Object.keys(answer).length === 0) {\n return {\n isValid: false,\n message: `Required question ${element.element.questionNumber} is not answered.`,\n };\n }\n }\n }\n if (element.element.childLogics) {\n for (let logic of element.element.childLogics) {\n if (logic.showLogic) {\n for (let row of logic.rows) {\n const result = validateQuestions(row.grid);\n if (!result.isValid) return result;\n }\n }\n }\n }\n } else if (element.entityType === 'SUBFORM') {\n if (element.element.rows) {\n for (let row of element.element.rows) {\n const result = validateQuestions(row.grid);\n if (!result.isValid) return result;\n }\n\n }\n }\n }\n return { isValid: true, message: 'All required questions are answered.' };\n };\n\n for (let row of page.rows) {\n const result = validateQuestions(row.grid);\n if (!result.isValid) {\n return result;\n }\n }\n return { isValid: true, message: 'All required questions are answered.' };\n }\n\n updateSubFormWithSubmissions(event: any) {\n this.updateSubForm(this.pages, event);\n }\n\n updateSubForm = (pages: any[], updatedSubForm: any) => {\n pages.forEach((page) => {\n page.rows.forEach((row: any) => {\n row.grid.forEach((element: any) => {\n if (\n element.entityType === 'SUBFORM' &&\n element.element.id === updatedSubForm.formId\n ) {\n // Update the existing subform with the new data\n element.element = updatedSubForm;\n } else if (\n element.entityType === 'SUBFORM' &&\n element.element.id !== updatedSubForm.formId\n ) {\n // Handle multiple subforms logic here if needed\n } else if (\n element.entityType === 'QUESTION' &&\n element.element.childLogics\n ) {\n // Recursively update child logics\n // element.element.childLogics.forEach((logic: any) => {\n // if (logic.showLogic) {\n // this.updateSubForm(logic.rows, updatedSubForm);\n // }\n // });\n }\n });\n });\n });\n };\n}\n","<div class=\"outer-container\">\n \n \n <div class=\"head container\">\n <lib-header [name]=\"name\"></lib-header>\n </div>\n <div class=\"body container\">\n \n <lib-submission-container [parentQuestionAnswers]=\"parentQuestionAnswers\"\n *ngIf=\"parentQuestionAnswers\"></lib-submission-container>\n \n <lib-navigation-tabs\n *ngIf=\"navigation == 'TAB'\"\n [pages]=\"pages\"\n [currentPageIndex]=\"currentPageIndex\"\n (pageChanged)=\"setCurrentPage($event)\"\n (submitEmit)=\"submitForm()\"\n [pageDetails]=\"pageDetails\"\n [eligibleForSubmission]=\"eligibleForSubmission\"\n [edit]=\"edit\"\n [acceptedLanguage] = \"acceptedLanguage\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n (rowSetIndex)=\"loadMoreData($event)\"\n ></lib-navigation-tabs>\n <lib-next-prev-navigation\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\n [currentPageIndex]=\"currentPageIndex\"\n [pageDetails]=\"pageDetails\"\n (rowSetIndex)=\"loadMoreData($event)\"\n [pages]=\"pages\"\n [previousPage]=\"previousPage\"\n [currentPage]=\"currentPage\"\n [nextPage]=\"nextPage\"\n (navigateNext)=\"navigateToNextPage()\"\n (navigatePrevious)=\"navigateToPreviousPage()\"\n [acceptedLanguage] = \"acceptedLanguage\"\n (submitEmit)=\"submitForm()\"\n [edit]=\"edit\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n ></lib-next-prev-navigation>\n </div>\n</div>\n","import { Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { DataService } from '../services/data.service';\nimport { DOCUMENT } from '@angular/common';\nimport { environment } from '../environment/environment';\n\n\n@Component({\n selector: 'lib-formSubmission',\n templateUrl: './form-submission.component.html',\n styleUrls: ['./form-submission.component.scss'],\n})\n\nexport class FormSubmissionComponent implements OnInit {\n @Input() formData: any = {};\n @Input() edit: boolean = false;\n @Input() submissionId: string = '';\n @Output() submitForm: EventEmitter<string> = new EventEmitter<string>();\n @Output() apiCalled: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n header:any;\n acceptedLanguage!: string;\n\n constructor(private dataService: DataService, @Inject(DOCUMENT) private document: Document) { }\n \n ngOnChanges(changes: SimpleChanges): void {\n if (changes['formData']) {\n this.dataService.setHeader(changes['formData'].currentValue?.headers);\n \n }\n }\n \n ngOnInit() {\n this.dataService.setApiUrl(this.formData.apiurl);\n this.dataService.setHeader(this.formData.headers);\n\n this.dataService.header$.subscribe((data) => {\n this.header = data;\n this.setHtmlDirection(this.header.acceptedLanguage);\n });\n }\n\n setHtmlDirection(language: string) {\n const htmlTag = this.document.getElementsByTagName('html')[0] as HTMLHtmlElement;\n\n if (language === 'ara' || language === 'ar') {\n environment.htmlDirection = 'rtl';\n } else {\n environment.htmlDirection = 'ltr';\n }\n\n htmlTag.dir = environment.htmlDirection; \n }\n\n submit(event: any) {\n this.submitForm.emit(event);\n }\n\n getFormApiCalled(event: any) {\n this.apiCalled.emit(true);\n }\n}\n","<lib-submit-form\n [moduleName]=\"formData.moduleName\"\n [submissionId]=\"submissionId\"\n [edit]=\"edit\"\n [acceptedLanguage] = \"formData.headers.acceptedLanguage\"\n (submit)=\"submit($event)\"\n (apiCalled)=\"getFormApiCalled($event)\"\n></lib-submit-form>\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 { DropDownFieldsComponent } from './drop-down-fields/drop-down-fields.component';\nimport { FilePickerFieldsComponent } from './file-picker-fields/file-picker-fields.component';\nimport { LocationFieldsComponent } from './location-fields/location-fields.component';\nimport { RadioButtonFieldsComponent } from './radio-button-fields/radio-button-fields.component';\nimport { RichTextEditorFieldsComponent } from './rich-text-editor-fields/rich-text-editor-fields.component';\nimport { SelectionMatrixFieldsComponent } from './selection-matrix-fields/selection-matrix-fields.component';\nimport { SignatureFieldsComponent } from './signature-fields/signature-fields.component';\nimport { SliderFieldsComponent } from './slider-fields/slider-fields.component';\nimport { TermsAndConditionFieldsComponent } from './terms-and-condition-fields/terms-and-condition-fields.component';\nimport { TextAreaFieldsComponent } from './text-area-fields/text-area-fields.component';\nimport { TextFieldsComponent } from './text-fields/text-fields.component';\nimport { ToggleSwitchFieldsComponent } from './toggle-switch-fields/toggle-switch-fields.component';\nimport { UrlFieldsComponent } from './url-fields/url-fields.component';\nimport { FormsModule } from '@angular/forms';\nimport { MailFieldsComponent } from './mail-fields/mail-fields.component';\nimport { MobileFieldsComponent } from './mobile-fields/mobile-fields.component';\nimport { NumberFieldsComponent } from './number-fields/number-fields.component';\nimport { PasswordFieldsComponent } from './password-fields/password-fields.component';\nimport {MatSliderModule} from \"@angular/material/slider\";\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { AngularEditorModule } from '@kolkov/angular-editor';\n\n\nimport { GoogleMapsModule } from '@angular/google-maps';\nimport { DropdownModule } from '@piserve-tech/drop-down';\nimport { FilePreviewModule } from '@piserve-tech/file-preview';\nimport { SectionFieldsComponent } from './section-fields/section-fields.component';\nimport { DocUploadModule } from '@piserve-tech/file-upload';\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\n\n\n\n\n\n\n@NgModule({\n declarations: [\n CheckBoxFieldsComponent,\n DateTimeFieldsComponent,\n DropDownFieldsComponent,\n FilePickerFieldsComponent,\n LocationFieldsComponent,\n RadioButtonFieldsComponent,\n RichTextEditorFieldsComponent,\n SelectionMatrixFieldsComponent,\n SignatureFieldsComponent,\n SliderFieldsComponent,\n TermsAndConditionFieldsComponent,\n TextAreaFieldsComponent,\n TextFieldsComponent,\n ToggleSwitchFieldsComponent,\n UrlFieldsComponent,\n MailFieldsComponent,\n MobileFieldsComponent,\n NumberFieldsComponent,\n PasswordFieldsComponent,\n SectionFieldsComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatSliderModule,\n BsDatepickerModule.forRoot(),\n DropdownModule,\n AngularEditorModule,\n DocUploadModule,\n GoogleMapsModule,\n FilePreviewModule,\n NgxMaterialTimepickerModule\n ],\n exports: [\n CheckBoxFieldsComponent,\n DateTimeFieldsComponent,\n DropDownFieldsComponent,\n FilePickerFieldsComponent,\n LocationFieldsComponent,\n MailFieldsComponent,\n MobileFieldsComponent,\n NumberFieldsComponent,\n PasswordFieldsComponent,\n RadioButtonFieldsComponent,\n RichTextEditorFieldsComponent,\n SelectionMatrixFieldsComponent,\n SignatureFieldsComponent,\n SliderFieldsComponent,\n TermsAndConditionFieldsComponent,\n TextAreaFieldsComponent,\n TextFieldsComponent,\n ToggleSwitchFieldsComponent,\n UrlFieldsComponent,\n SectionFieldsComponent\n\n ]\n})\nexport class FormFieldsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RecursiveLogicComponent } from '../question/recursive-logic/recursive-logic.component';\nimport { QuestionComponent } from '../question/question/question.component';\nimport { SubFormComponent } from '../question/sub-form/sub-form.component';\nimport { FormElementsComponent } from '../question/form-elements/form-elements.component';\n\nimport { FormFieldsModule } from '../form-fields/form-fields.module';\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 { MultipleSubformComponent } from '../question/multiple-subform/multiple-subform.component';\nimport { SubmissionModalComponent } from '../sub-form/submission-modal/submission-modal.component';\nimport { QuestionGroupComponent } from '../question/question-group/question-group.component';\n\n@NgModule({\n declarations: [\n RecursiveLogicComponent,\n QuestionComponent,\n SubFormComponent,\n FormElementsComponent,\n MultipleSubformComponent, \n SubmissionModalComponent, \n QuestionGroupComponent\n ],\n imports: [\n CommonModule,\n FormFieldsModule,\n MatDialogModule,\n MatTableModule,\n MatMenuModule,\n MatIconModule\n ],\n exports: [\n RecursiveLogicComponent,\n QuestionComponent,\n SubFormComponent,\n FormElementsComponent,\n QuestionGroupComponent\n ]\n})\nexport class SharedModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SubmitFormComponent } from './submit-form/submit-form.component';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { HeaderComponent } from './header/header.component';\nimport { NavigationTabsComponent } from './navigation-tabs/navigation-tabs.component';\nimport { NextPrevNavigationComponent } from './next-prev-navigation/next-prev-navigation.component';\nimport { ToastrModule } from 'ngx-toastr';\nimport { SubmissionContainerComponent } from './submission-container/submission-container.component';\nimport { SharedModule } from '../shared/shared.module';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\n\n\n\n@NgModule({\n declarations: [\n SubmitFormComponent,\n HeaderComponent,\n NavigationTabsComponent,\n NextPrevNavigationComponent,\n SubmissionContainerComponent\n ],\n imports: [\n CommonModule,\n BsDatepickerModule.forRoot(),\n ToastrModule,\n SharedModule,\n InfiniteScrollModule\n ],\n exports: [SubmitFormComponent, NextPrevNavigationComponent]\n})\nexport class FormSubmitModule { }\n","import { NgModule } from '@angular/core';\nimport { FormSubmissionComponent } from './form-submission.component';\n// import { DropdownModule } from '@piserve-tech/drop-down';\nimport { FilePreviewModule } from '@piserve-tech/file-preview';\nimport { FormsModule } from '@angular/forms';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { FormFieldsModule } from '../form-fields/form-fields.module';\nimport { FormSubmitModule } from '../form-submission/form-submission.module';\nimport { DropdownModule } from '@piserve-tech/drop-down';\nimport { ToastrModule } from 'ngx-toastr';\nimport { DocUploadModule } from '@piserve-tech/file-upload';\nimport { SharedModule } from '../shared/shared.module';\n\n@NgModule({\n declarations: [FormSubmissionComponent],\n imports: [\n DropdownModule,\n FilePreviewModule,\n DocUploadModule,\n FormsModule,\n MatTabsModule,\n FormFieldsModule,\n FormSubmitModule,\n ToastrModule.forRoot({\n positionClass: 'toast-bottom-left',\n }),\n SharedModule\n ],\n exports: [FormSubmissionComponent],\n})\nexport class FormSubmissionModule {}\n","/*\n * Public API Surface of form-submission\n */\n\nexport * from './lib/form-submission.service';\nexport * from './lib/form-submission.component';\nexport * from './lib/form-submission.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.DataService","i1.FormService","i2","i1","i3","i1.CountryService","i4","i3.DataService","i2.CheckBoxFieldsComponent","i3.DateTimeFieldsComponent","i4.DropDownFieldsComponent","i5.FilePickerFieldsComponent","i6.LocationFieldsComponent","i7.MailFieldsComponent","i8.MobileFieldsComponent","i9.NumberFieldsComponent","i10.PasswordFieldsComponent","i11.RadioButtonFieldsComponent","i12.RichTextEditorFieldsComponent","i13.SelectionMatrixFieldsComponent","i14.SignatureFieldsComponent","i15.SliderFieldsComponent","i16.TermsAndConditionFieldsComponent","i17.TextAreaFieldsComponent","i18.TextFieldsComponent","i19.ToggleSwitchFieldsComponent","i20.UrlFieldsComponent","i3.CheckBoxFieldsComponent","i4.DateTimeFieldsComponent","i5.DropDownFieldsComponent","i6.FilePickerFieldsComponent","i7.LocationFieldsComponent","i8.MailFieldsComponent","i9.MobileFieldsComponent","i10.NumberFieldsComponent","i11.PasswordFieldsComponent","i12.RadioButtonFieldsComponent","i13.RichTextEditorFieldsComponent","i14.SelectionMatrixFieldsComponent","i15.SignatureFieldsComponent","i16.SliderFieldsComponent","i17.TermsAndConditionFieldsComponent","i18.TextAreaFieldsComponent","i19.TextFieldsComponent","i20.ToggleSwitchFieldsComponent","i21.UrlFieldsComponent","i22.SectionFieldsComponent","i21.SectionFieldsComponent","i22.MultipleSubformComponent","i2.SectionFieldsComponent","i3.QuestionComponent","i4.SubFormComponent","i5.QuestionGroupComponent","i2.RecursiveLogicComponent","i2.FormElementsComponent","mapper.mapPublicFormToModel","i4.DataService","i5.RecaptchaService","i6","i7.HeaderComponent","i8.NavigationTabsComponent","i9.NextPrevNavigationComponent","i10.SubmissionContainerComponent","i2.SubmitFormComponent"],"mappings":"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"}