@rangertechnologies/ngnxt 2.1.340 → 2.1.342
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.
- package/fesm2022/rangertechnologies-ngnxt.mjs +125 -168
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/pages/booklet/booklet.component.d.ts +7 -14
- package/lib/pages/questionbook/questionbook.component.d.ts +4 -2
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.342.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.340.tgz +0 -0
|
@@ -48092,7 +48092,7 @@ class NxtInput {
|
|
|
48092
48092
|
useExisting: forwardRef(() => NxtInput),
|
|
48093
48093
|
multi: true,
|
|
48094
48094
|
},
|
|
48095
|
-
], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true }, { propertyName: "inputEls", predicate: ["inputEl"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- SKS31JAN25 -->\n<div class=\"hover-wrapper input-wrapper\" (document:click)=\"closeDropdown($event)\">\n <div>\n <div *ngIf=\"label && type != 'checkbox' && showLabel\" [ngStyle]=\"{\n 'padding-top': type === 'label' ? '10px' : '',\n 'padding-bottom': type === 'label' ? '10px' : ''\n }\" \n [style.justify-content]=\"textAlign || 'start'\"\n [style.font-weight]=\"labelWeight || type === 'label' ? 'bold' : 'normal'\" [style.font-size]=\"(labelSize && labelSize !== '' )? labelSize : type === 'label' ? '16px' : '14px'\"\n style=\"display: flex; gap: 5px;\"> \n {{ label }}\n <div *ngIf=\"helpText\" [matTooltip]=\"helpText\" matTooltipClass=\"white-tooltip\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.00009 0.615356C3.90779 0.615356 0.615479 3.90766 0.615479 7.99997C0.615479 12.0923 3.90779 15.3846 8.00009 15.3846C12.0924 15.3846 15.3847 12.0923 15.3847 7.99997C15.3847 3.90766 12.0924 0.615356 8.00009 0.615356ZM8.00012 13.5385C4.92319 13.5385 2.46165 11.0769 2.46165 8C2.46165 4.92307 4.92319 2.46153 8.00012 2.46153C11.077 2.46153 13.5386 4.92307 13.5386 8C13.5386 11.0769 11.077 13.5385 8.00012 13.5385ZM8.00027 4.33846C8.52335 4.33846 8.92335 4.73846 8.92335 5.26153C8.92335 5.78461 8.52335 6.18461 8.00027 6.18461C7.47719 6.18461 7.07719 5.78461 7.07719 5.26153C7.07719 4.73846 7.47719 4.33846 8.00027 4.33846ZM9.53859 10.8C9.53859 10.9538 9.41552 11.0769 9.2309 11.0769H6.76936C6.61552 11.0769 6.46167 10.9846 6.46167 10.8V10.1846C6.46167 10.0308 6.58475 9.84614 6.76936 9.84614C6.92321 9.84614 7.07706 9.75383 7.07706 9.56921V8.33844C7.07706 8.1846 6.95398 7.99998 6.76936 7.99998C6.61552 7.99998 6.46167 7.90767 6.46167 7.72306V7.10767C6.46167 6.95383 6.58475 6.76921 6.76936 6.76921H8.61552C8.76936 6.76921 8.92321 6.92306 8.92321 7.10767V9.56921C8.92321 9.72306 9.04629 9.84614 9.2309 9.84614C9.38475 9.84614 9.53859 9.99998 9.53859 10.1846V10.8Z\" fill=\"#747474\"/>\n </svg>\n </div>\n <div *ngIf=\"label && type != 'checkbox' && required && showLabel && mode === 'edit'\" style=\"color: red;\">*</div>\n </div>\n <div *ngIf=\"type !== 'label' && type !== 'richtext' && type !== 'textarea'\" style=\"display: flex;\">\n <div class=\"input-container\"\n [ngStyle]=\"{ 'padding-left': mode === 'edit' ? '' : '0px' }\"\n [style.backgroundColor]=\"(type === 'otp' || mode !== 'edit') ? (inputBgColor || '#f5f5f5') : from === 'nxtTable' ? '' : inputBgColor\"\n [class.invalid]=\"control.invalid && control.touched\"\n [style.border-radius]=\"mode !== 'edit' && from === 'nxtTable' ? 'none': ''\"\n [style.padding]=\"(mode === 'edit' && from !== 'nxtTable') ? (type === 'checkbox' ? '10px 13px 10px 0px !important' : '' ) : type === 'checkbox' ? '10px 0px 9px 0px !important' : ''\"\n [style.margin]=\"(margin && margin !== '') ? margin : (showLabel && label) ? from === 'nxtTable' ? '0px !important' : '' : (from === 'nxtTable' || from === 'normalDropDown') ? '0px !important' : from === 'nxtForm' ? '21px 0px 0px 0px' : '0px !important'\"\n [style.border]=\"type === 'space' ? 'none' : mode === 'edit' ? (from === 'nxtTable' && !readOnly) ? '1px solid #d2d2d2' : inputBorder === 'none' ? ('1px solid ' + (inputBgColor || '#ffffff')) : ( (inputBorderSize || 1) + 'px solid ' + inputBorder) : 'none'\"\n style=\"position: relative; width: 100%;\"\n [ngClass]=\"{\n 'checkbox-padding': type === 'checkbox' || type === 'otp',\n 'pad-nxt-0': from === 'nxtTable' && mode !== 'edit',\n 'pad-nxt-1': from === 'nxtTable' && mode === 'edit'\n }\">\n <img *ngIf=\"inputIconLeftSrc && mode === 'edit'\" [src]=\"inputIconLeftSrc\" alt=\"icon\" class=\"icon left-icon\"\n [style.height]=\"svgHeight\" [style.width]=\"svgWidth\" />\n <div *ngIf=\"mode === 'edit' && type === 'list'\">\n <!-- Inline search icon SVG -->\n <svg [attr.width]=\"from === 'nxtTable' ? 12 : 18\" [attr.height]=\"from === 'nxtTable' ? 12 : 18\" fill=\"none\" stroke=\"#434555\" stroke-opacity=\"0.65\" stroke-width=\"1.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\">\n <circle cx=\"8.25\" cy=\"8.25\" r=\"5.25\" />\n <path d=\"M15 15L12.75 12.75\" stroke-linecap=\"round\" />\n </svg>\n </div>\n <!-- SKS28FEB25 mobile number input -->\n <div *ngIf=\"type === 'tel'\" class=\"phone-input-container\">\n <div class=\"country-selector\" style=\"padding-left: 10px;\"\n (click)=\"toggleCountryDropdown()\">\n <!-- <span class=\"flag\">{{ selectedCountry.flag }}</span> -->\n <span class=\"dial-code\" [style.font-weight]=\"inputWeight || '400'\" [style.font-size]=\"inputValueSize || '12px'\">{{ selectedCountry.dial_code }}</span>\n <svg class=\"arrow\" width=\"9\" height=\"6\" viewBox=\"0 0 9 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M0.684136 0.767477C0.922999 0.5378 1.30282 0.545248 1.5325 0.784111L4.5 3.93431L7.4675 0.784111C7.69718 0.545248 8.077 0.5378 8.31587 0.767477C8.55473 0.997153 8.56218 1.37698 8.3325 1.61584L4.9325 5.21584C4.81938 5.33349 4.66321 5.39998 4.5 5.39998C4.33679 5.39998 4.18062 5.33349 4.0675 5.21584L0.667501 1.61584C0.437825 1.37698 0.445272 0.997153 0.684136 0.767477Z\"\n fill=\"#626262\" />\n </svg>\n </div>\n <div *ngIf=\"showCountryDropdown\" class=\"country-dropdown\">\n <div class=\"search-box\">\n <input type=\"text\" [readOnly]=\"mode !== 'edit'\" placeholder=\"Search country...\" [value]=\"countrySearch\"\n (input)=\"filterCountries($event)\">\n </div>\n <div class=\"country-list\">\n <div *ngFor=\"let country of filteredCountries\" class=\"country-item\" (click)=\"selectCountry(country)\">\n <span class=\"flag\">{{ country.flag }}</span>\n <span class=\"name\">{{ country.name }}</span>\n <span class=\"dial-code\">{{ country.dial_code }}</span>\n </div>\n </div>\n </div>\n </div>\n <!-- SKS12SEP25 currency code -->\n <div *ngIf=\"mode === 'edit' && readOnly !== true && type === 'currency'\" [style.font-size]=\"inputValueSize || '12px'\" class=\"phone-input-container\">\n {{currentCurrency.symbol}}\n </div>\n @if((type === 'currency' ? mode === 'edit' && readOnly === false : type !== 'datetime' && type !== 'date' && type !== 'time' && type !== 'month' && type !== 'space')){\n <input *ngFor=\"let input of cachedInputList; let i = index\" #inputEl #inputRef [id]=\"inputId\"\n [type]=\"isPasswordVisible ? 'text' : type === 'otp' || type === 'dropdown' || type === 'number' ? 'text' : type\"\n [attr.placeholder]=\"type === 'otp' || mode !== 'edit' ? '' : (type === 'tel' ? removeDialCode(selectedCountry.placeholder) : placeholder)\"\n [formControl]=\"type === 'otp' ? $any(input) : control\"\n [style.backgroundColor]=\"(type === 'otp'|| mode !== 'edit') ? '#f5f5f5' : from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"type === 'otp' || mode !== 'edit' ? '' : inputTextColor\"\n [style.border]=\" (type === 'otp' || mode !== 'edit') ? '' : from === 'nxtTable' ? type === 'checkbox' ? '1px solid gray !important' : 'none' : type === 'checkbox' ? ( inputBorderSize || 1 + 'px solid ' + inputBorder) : inputBorder\"\n [style.height]=\"type === 'otp' ? '' : inputHeight\" [style.width]=\"type === 'otp' ? '100% !important' : type === 'checkbox' ? 'auto' : inputWidth || '100% !important'\"\n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : mode === 'edit' ? '10px 10px 10px 5px' : '10px 10px 10px 0px' \"\n [value]=\"type === 'tel' ? rawInputVal : value\"\n (input)=\"type === 'otp' ? handleInput() : onInputChange($event)\"\n [checked]=\"type === 'checkbox' ? value : ''\"\n [style.font-size]=\"type === 'otp' ? '' : inputValueSize || '12px'\" (focus)=\"type === 'otp' ? handleFocus($event) : null\"\n [style.text-align]=\"(type === 'currency' && mode === 'edit') ? 'start' : textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n (blur)=\"type === 'otp' ? onTouched() : blurEmit()\"\n (keypress)=\"type === 'otp' ? handleKeyPress($event, i) : type === 'number' ? allowNumberDecimal($event) : null\"\n (keydown)=\"type === 'otp' ? handleKeyDown($event, i) : from === 'normalDropDown' ? $event.preventDefault() : type === 'number' ? allowNumberDecimal($event) : null\"\n (paste)=\"type === 'otp' ? handlePaste($event, i) : null\" inputmode=\"type === 'otp' ? numeric : null\"\n [attr.autocomplete]=\"type === 'otp' && i === 0 ? 'one-time-code' : type === 'list' ? 'list' : 'off'\"\n [attr.aria-expanded]=\"type === 'list' ? showSuggestion : 'off'\"\n [attr.inputmode]=\"type === 'otp' ? 'numeric' : type === 'number' ? 'decimal' : null\" [attr.name]=\"type === 'otp' && i === 0 ? 'otp' : null\"\n (focusin)=\"focusinEmit($event)\" [attr.aria-owns]=\"type === 'list' ? ariaOwns : 'off'\"\n [attr.aria-haspopup]=\"type === 'list' ? ariaHasPopup : 'off'\" \n [readonly]=\"from === 'normalDropDown'\" \n [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize || '12px' : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || inputWeight || '400' : ''\n }\" (keydown.enter)=\"type === 'location' ? $event.preventDefault() : ''\"\n autocorrect=\"type === 'location' ? 'off' : ''\" autocapitalize=\"type === 'location' ? 'off' : ''\"\n spellcheck=\"type === 'location' ? 'off' : ''\"\n />\n }\n @else if(type === 'time' || type === 'month' || type === 'datetime' || type === 'date') {\n <div style=\"position: relative; width: 100%;\">\n <input [id]=\"inputId\"\n type=\"text\" \n [formControl]=\"control\"\n readonly\n [attr.placeholder]=\"mode !== 'edit' ? '' : placeholder || ''\"\n [ngClass]=\"'nxt-custom-input'\" \n [value]=\"value | NxtDate : type : languageCode : dateFormatName\"\n [style.backgroundColor]=\"mode !== 'edit' ? '#f5f5f5' : from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"mode !== 'edit' ? '' : inputTextColor\" [style.border]=\"mode !== 'edit' ? 'none' : from === 'nxtTable' ? 'none' : inputBorder\"\n [style.height]=\"inputHeight\"\n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : mode === 'edit' ? '10px 10px 10px 5px' : '10px 10px 10px 0px' \"\n [style.font-size]=\"inputValueSize || '12px'\" (blur)=\" blurEmit()\" (focusin)=\"focusinEmit($event)\"\n [style.text-align]=\"textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n (focus)=\"onHijriInputClick(); $event.stopPropagation()\"\n (click)=\"onHijriInputClick();\"\n [attr.autocomplete]=\"'off'\"\n [attr.readonly]=\"'true'\"\n [readonly]=\"'true'\" \n [disabled]=\"mode === 'edit' ? readOnly === true : true\"\n [class]=\"'nxt-' + (question.nxtTableId || question.id)\"\n [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize || '12px' : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || inputWeight || '400' : ''\n }\" style=\"\n width: 100% !important;\n padding: 10px;\n padding-left: 5px;\n border-radius: 5px;\n border: none !important;\n font-size: 14px;\" \n />\n <!-- SKS14AUG25 Hijri Datepicker Popup -->\n <div *ngIf=\"showHijriPicker\" class=\"hijri-popup\" [ngClass]=\"{'rtl-class': direction === 'rtl'}\" [class]=\"'nxt-' + (question.nxtTableId || question.id)\">\n <app-nxt-datepicker\n [type]=\"type\"\n [value]=\"value\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [languageCode]=\"languageCode\"\n (dateChange)=\"onInputChange($event);\"\n >\n </app-nxt-datepicker>\n </div>\n </div>\n }\n <div *ngIf=\"(type === 'currency' && (mode !== 'edit' || readOnly === true))\"\n [style.backgroundColor]=\"from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"inputTextColor\"\n [style.border]=\"from === 'nxtTable' ? 'none' : inputBorder\"\n [style.height]=\"inputHeight\" \n [style.width]=\"inputWidth || '100% !important'\"\n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : mode === 'edit' ? '10px 10px 10px 5px' : '10px 10px 10px 0px' \"\n [style.font-size]=\"inputValueSize || '12px'\"\n [style.text-align]=\"textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n >\n @if(question?.subText?.isAmountInWords){\n {{value | amountInWords }}\n } @else {\n {{value | currency : currentCurrency.code : currentCurrency.symbol }}\n }\n </div>\n <!-- SKS7AUG25 api call Dotted Loader -->\n <div *ngIf=\"mode === 'edit' && isLoading\" class=\"dotted-loader input-icons\" aria-label=\"Loading\" role=\"status\">\n <span *ngFor=\"let dot of [].constructor(6); let i = index\" class=\"dot\" [style.--i]=\"i\"></span>\n </div>\n <div *ngIf=\"mode === 'edit' && (type === 'datetime' || type === 'date' || type === 'month' || type === 'time')\" (click)=\"openDatePicker(type); $event.stopPropagation()\" class=\"input-icons\"\n style=\"cursor: pointer;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"from === 'nxtTable' ? 12 : 18\" [attr.height]=\"from === 'nxtTable' ? 12 : 18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M2.32031 7.05285H15.6883\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.3322 9.98254H12.3392\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00408 9.98254H9.01103\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.66815 9.98254H5.67509\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.3322 12.8976H12.3392\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00408 12.8976H9.01103\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.66815 12.8976H5.67509\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.0329 1.5V3.96809\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.97435 1.5V3.96809\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.1787 2.68457H5.82822C3.6257 2.68457 2.25 3.91152 2.25 6.16684V12.9541C2.25 15.2449 3.6257 16.5002 5.82822 16.5002H12.1718C14.3812 16.5002 15.75 15.2661 15.75 13.0108V6.16684C15.7569 3.91152 14.3882 2.68457 12.1787 2.68457Z\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div *ngIf=\"mode === 'edit' && !readOnly && type === 'location' \" class=\"input-icons\">\n <svg *ngIf=\"!isLoading\" (click)=\"openMap()\" (keydown.enter)=\"openMap()\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <rect x=\"0.5\" y=\"0.5\" [attr.width]=\"from === 'nxtTable' ? 12 : 15\" [attr.height]=\"from === 'nxtTable' ? 12 : 15\" stroke=\"white\"/>\n <path d=\"M7.99992 8.95321C9.14867 8.95321 10.0799 8.02197 10.0799 6.87321C10.0799 5.72446 9.14867 4.79321 7.99992 4.79321C6.85117 4.79321 5.91992 5.72446 5.91992 6.87321C5.91992 8.02197 6.85117 8.95321 7.99992 8.95321Z\" stroke=\"#B1ADAB\" stroke-width=\"1.5\"/>\n <path d=\"M2.41379 5.65992C3.72712 -0.113413 12.2805 -0.106746 13.5871 5.66659C14.3538 9.05325 12.2471 11.9199 10.4005 13.6933C9.06046 14.9866 6.94046 14.9866 5.59379 13.6933C3.75379 11.9199 1.64712 9.04659 2.41379 5.65992Z\" stroke=\"#B1ADAB\" stroke-width=\"1.5\"/>\n </svg> \n </div>\n <div *ngIf=\"mode === 'edit' && type === 'list'\" class=\"input-icons\">\n <svg *ngIf=\"!isLoading\" (click)=\"removeValue()\" (keydown.enter)=\"removeValue()\" style=\"cursor: pointer;\" [attr.width]=\"from === 'nxtTable' ? 12 : 16\" [attr.height]=\"from === 'nxtTable' ? 12 : 16\" viewBox=\"0 0 0.48 0.48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0.03 0.075a0.015 0.015 0 0 0 0 0.03zm0.42 0.03a0.015 0.015 0 0 0 0 -0.03zm-0.42 0h0.42v-0.03h-0.42z\" fill=\"#71717A\"/><path d=\"M0.195 0.03V0.015zM0.165 0.06H0.15zM0.15 0.09a0.015 0.015 0 0 0 0.03 0zm0.15 0a0.015 0.015 0 0 0 0.03 0zm0.015 -0.03h0.015zM0.285 0.015h-0.09v0.03h0.09zm-0.09 0a0.045 0.045 0 0 0 -0.032 0.013l0.021 0.021a0.015 0.015 0 0 1 0.011 -0.004zm-0.032 0.013A0.045 0.045 0 0 0 0.15 0.06H0.18a0.015 0.015 0 0 1 0.004 -0.011zM0.15 0.06v0.03H0.18V0.06zm0.18 0.03V0.06H0.3v0.03zm0 -0.03a0.045 0.045 0 0 0 -0.013 -0.032l-0.021 0.021c0.003 0.003 0.004 0.007 0.004 0.011zm-0.013 -0.032A0.045 0.045 0 0 0 0.285 0.015v0.03a0.015 0.015 0 0 1 0.011 0.004z\" fill=\"#71717A\"/><path d=\"M0.18 0.345a0.015 0.015 0 0 0 0.03 0zm0.03 -0.15a0.015 0.015 0 0 0 -0.03 0zm0 0.15v-0.15H0.18v0.15z\" fill=\"#71717A\"/><path d=\"M0.27 0.345a0.015 0.015 0 0 0 0.03 0zm0.03 -0.15a0.015 0.015 0 0 0 -0.03 0zm0 0.15v-0.15h-0.03v0.15z\" fill=\"#71717A\"/><path d=\"m0.377 0.422 -0.015 -0.001zM0.347 0.45v-0.015zm-0.215 0v-0.015zm-0.03 -0.028 0.015 -0.001zM0.09 0.089a0.015 0.015 0 0 0 -0.03 0.002zm0.33 0.002a0.015 0.015 0 1 0 -0.03 -0.002zm-0.058 0.33a0.015 0.015 0 0 1 -0.005 0.01l0.02 0.022a0.045 0.045 0 0 0 0.014 -0.029zm-0.005 0.01a0.015 0.015 0 0 1 -0.01 0.004v0.03a0.045 0.045 0 0 0 0.03 -0.012zm-0.01 0.004H0.133v0.03H0.347zm-0.215 0a0.015 0.015 0 0 1 -0.01 -0.004l-0.02 0.022c0.008 0.008 0.019 0.012 0.03 0.012zm-0.01 -0.004a0.015 0.015 0 0 1 -0.005 -0.01l-0.03 0.002a0.045 0.045 0 0 0 0.014 0.029zm-0.005 -0.01L0.09 0.089l-0.03 0.002 0.028 0.332zm0.272 -0.332 -0.028 0.332 0.03 0.002 0.028 -0.332z\" fill=\"#71717A\"/></svg> \n </div>\n <label class=\"nxt-checkboxLab\" *ngIf=\"label && type === 'checkbox' && showLabel\" [style.font-weight]=\"labelWeight\"\n [style.font-size]=\"labelSize\" [style.color]=\"inputTextColor || labelColor || '#212529'\"\n [style.justify-content]=\"textAlign || 'start'\"\n style=\"margin-bottom: 0; padding-right: 10px; width: 100% !important;\"> {{ label }}\n <div *ngIf=\"label && type === 'checkbox' && required && showLabel\" style=\"color: red;\">*</div>\n </label> \n <!-- Always Show Dropdown Icon -->\n <div *ngIf=\"mode === 'edit' && type === 'dropdown'\" class=\"input-icons\">\n <svg (mousedown)=\"toggle($event); $event.preventDefault()\" xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"from === 'nxtTable' ? 12 : 16\" [attr.height]=\"from === 'nxtTable' ? 12 : 16\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M4.5 11H7.5C10 11 11 10 11 7.5V4.5C11 2 10 1 7.5 1H4.5C2 1 1 2 1 4.5V7.5C1 10 2 11 4.5 11Z\" stroke=\"#B0ADAB\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M4.23499 5.32L6 7.08L7.765 5.32\" stroke=\"#B0ADAB\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n\n <img *ngIf=\"mode === 'edit' && inputIconRightSrc\" [src]=\"inputIconRightSrc\" class=\"icon right-icon\"\n [style.height]=\"svgHeight\" [style.width]=\"svgWidth\">\n <img *ngIf=\"mode === 'edit' && type === 'password'\" class=\"toggle-icon\" (click)=\"togglePasswordVisibility()\"\n [src]=\"!isPasswordVisible ? '/assets/images/icons/general/Hide-Password.svg' : '/assets/images/icons/general/Show-Password.svg'\" />\n <div *ngIf=\"mode !== 'edit' && !readOnly && from !== 'nxtTable' && !onlyView && type !== 'space'\" class=\"input-icons\">\n <svg class=\"edit-icon\" \n (click)=\"viewEditClick(question)\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M1.99987 9.0017L4.39602 11.3979C4.50371 11.5055 4.66525 11.5055 4.77294 11.3979L10.7499 5.39401C10.8576 5.28631 10.8576 5.12477 10.7499 5.01708L8.38064 2.64785C8.27294 2.54016 8.11141 2.54016 8.00371 2.64785L1.99987 8.6517C1.89217 8.75939 1.89217 8.92093 1.99987 9.0017ZM9.1614 1.54401C9.05371 1.6517 9.05371 1.81324 9.1614 1.92093L11.5306 4.29016C11.6383 4.39785 11.7999 4.39785 11.9076 4.29016L12.5806 3.61708C13.0114 3.21324 13.0114 2.56708 12.5806 2.13631L11.3153 0.870928C10.8845 0.440159 10.2114 0.440159 9.78063 0.870928L9.1614 1.54401ZM0.00755862 12.9863C-0.0462875 13.2555 0.19602 13.4979 0.465251 13.444L3.39987 12.744C3.50756 12.7171 3.58833 12.6632 3.64217 12.6094L3.69602 12.5555C3.74987 12.5017 3.77679 12.3132 3.6691 12.2055L1.24602 9.78247C1.13833 9.67478 0.949866 9.7017 0.89602 9.75554L0.842174 9.80939C0.761405 9.89016 0.734482 9.97093 0.707559 10.0517L0.00755862 12.9863Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n <!-- SKS14JUN25 Show save and cancel icons only when the input value is edited -->\n <div *ngIf=\"(apiMeta?.singleFieldDisable === undefined || !apiMeta?.singleFieldDisable) && viewEdit ? (!apiMeta?.singleFieldDisable && type !== 'space') : (viewEdit && type !== 'space')\" class=\"input-icons\">\n <svg (click)=\"saveChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.9502 0.5C8.96006 0.500106 11.4004 2.94031 11.4004 5.9502C11.4003 8.95999 8.95999 11.4003 5.9502 11.4004C2.94031 11.4004 0.500106 8.96006 0.5 5.9502C0.5 2.94024 2.94024 0.5 5.9502 0.5Z\"\n stroke=\"#B0ADAB\" />\n <path\n d=\"M8.88111 3.84583C8.83269 3.7972 8.77513 3.7586 8.71176 3.73227C8.64838 3.70594 8.58043 3.69238 8.5118 3.69238C8.44317 3.69238 8.37521 3.70594 8.31184 3.73227C8.24846 3.7586 8.19091 3.7972 8.14249 3.84583L4.8269 7.16347L3.35253 5.6891C3.30403 5.6406 3.24646 5.60213 3.18309 5.57588C3.11972 5.54964 3.05181 5.53613 2.98322 5.53613C2.91463 5.53613 2.84672 5.54964 2.78335 5.57588C2.71999 5.60213 2.66241 5.6406 2.61391 5.6891C2.56541 5.7376 2.52694 5.79518 2.50069 5.85854C2.47445 5.92191 2.46094 5.98982 2.46094 6.05841C2.46094 6.127 2.47445 6.19491 2.50069 6.25828C2.52694 6.32165 2.56541 6.37922 2.61391 6.42772L4.45677 8.27058C4.50519 8.31922 4.56274 8.35781 4.62612 8.38414C4.6895 8.41047 4.75745 8.42403 4.82608 8.42403C4.89471 8.42403 4.96266 8.41047 5.02604 8.38414C5.08942 8.35781 5.14697 8.31922 5.19539 8.27058L8.88111 4.58445C8.92974 4.53603 8.96834 4.47848 8.99467 4.4151C9.021 4.35173 9.03456 4.28377 9.03456 4.21514C9.03456 4.14651 9.021 4.07856 8.99467 4.01518C8.96834 3.9518 8.92974 3.89425 8.88111 3.84583Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n <div *ngIf=\"viewEdit && type !== 'space'\" class=\"input-icons\">\n <svg (click)=\"discardChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.05555 4.00883L5.94 5.12438L4.82445 4.00883C4.57861 3.76299 4.18191 3.76299 3.93607 4.00883C3.69023 4.25467 3.69023 4.65137 3.93607 4.89721L5.05162 6.01276L3.93607 7.12831C3.69023 7.37415 3.69023 7.77085 3.93607 8.01669C4.18191 8.26253 4.57861 8.26253 4.82445 8.01669L5.94 6.90114L7.05555 8.01669C7.30139 8.26253 7.69809 8.26253 7.94393 8.01669C8.18977 7.77085 8.18977 7.37415 7.94393 7.12831L6.82838 6.01276L7.94393 4.89721C8.18977 4.65137 8.18977 4.25467 7.94393 4.00883C7.69809 3.77285 7.30021 3.77285 7.05555 4.00883ZM5.94 0.0820312C2.70017 0.0820312 0.0808594 2.70134 0.0808594 5.94118C0.0808594 9.18101 2.70017 11.8003 5.94 11.8003C9.17983 11.8003 11.7991 9.18101 11.7991 5.94118C11.7991 2.70134 9.17983 0.0820312 5.94 0.0820312ZM5.94 10.6367C3.35426 10.6367 1.24422 8.52667 1.24422 5.94118C1.24422 3.35553 3.35426 1.24549 5.94 1.24549C8.52558 1.24549 10.6356 3.35553 10.6356 5.94118C10.6356 8.52667 8.52558 10.6367 5.94 10.6367Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n </div>\n </div>\n <div *ngIf=\"type !== 'label' && type !== 'checkbox' && (type === 'richtext' || type === 'textarea')\" style=\"display: flex;\">\n <div class=\"input-container\"\n [ngStyle]=\"{ 'padding-left': mode === 'edit' ? '' : '0px' }\"\n [style.margin]=\"(margin && margin !== '') ? margin : showLabel && label ? '' : from === 'nxtTable' || from === 'normalDropDown' ? '' : from === 'nxtForm' ? '21px 0px 0px 0px' : '0px !important'\"\n [style.border-radius]=\"mode !== 'edit' && from === 'nxtTable' ? 'none': ''\"\n [style.backgroundColor]=\"mode === 'edit' ? from === 'nxtTable' ? '' : inputBgColor : (inputBgColor || '#f5f5f5')\"\n [class.invalid]=\"control.invalid && control.touched\"\n [style.border]=\"mode === 'edit' ? from === 'nxtTable' ? '1px solid #d2d2d2' : inputBorder === 'none' ? ('1px solid ' + inputBgColor) : (inputBorderSize || 1 + 'px solid ' + inputBorder) : 'none'\"\n [ngClass]=\"{\n 'pad-nxt-0': from === 'nxtTable' && mode !== 'edit',\n 'pad-nxt-1': from === 'nxtTable' && mode === 'edit',\n 'pad-rich-0': mode === 'edit' && type === 'richtext'\n }\">\n <!-- SKS14JUN25 Dynamically load Quill editor toolbar -->\n <quill-editor *ngIf=\"mode === 'edit' && type === 'richtext'\" [(ngModel)]=\"value\" (ngModelChange)=\"onInputChange($event)\" [placeholder]=\"placeholder || ''\"\n [readOnly]=\"mode !== 'edit' || readOnly\"\n (focusout)=\"onEditorFocusOut()\" [class.error]=\"control.invalid && (control.touched || control.dirty)\"\n [modules]=\"getQuillModules(question.id)\"\n [style.padding]=\"'0px'\"\n style=\"width: 100%;\n border-radius: 5px;\n border: none;\n font-size: 16px;\">\n </quill-editor>\n <!-- View mode -->\n <div *ngIf=\"mode !== 'edit' && type === 'richtext'\" class=\"quill-view-content ql-snow\"\n style=\"width: 98.5%;\n border-radius: 5px;\n border: none;\n padding: unset;\n font-size: 16px;\n min-height: 38px;\">\n <div class=\"ql-editor\" [innerHTML]=\"value\"\n [style.padding]=\"(padding && padding !== '') ? padding : (from === 'nxtTable' ? '0px' : (mode === 'view' ? '1px 10px 0px 0px' : '1px 10px 0px 5px' ))\"\n [style.text-align]=\"direction === 'rtl' ? 'right' : '' \"\n [attr.dir]='direction' style=\"font-size: 12px;\"\n ></div>\n </div>\n <textarea *ngIf=\"type === 'textarea'\" [id]=\"inputId\" [rows]=\"from === 'nxtTable' ? 1 : rows\"\n [attr.placeholder]=\"mode !== 'edit' ? '' : placeholder || ''\" [ngClass]=\"'custom-input'\"\n [formControl]=\"control\"\n [style.backgroundColor]=\"mode !== 'edit' ? '#f5f5f5' : from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"mode !== 'edit' ? '' : inputTextColor\" [style.border]=\"mode !== 'edit' ? 'none' : from === 'nxtTable' ? '1px solid #d2d2d2' : inputBorder\"\n [style.height]=\"inputHeight\" [value]=\"value\" (input)=\" onInputChange($event)\"\n [style.font-size]=\"inputValueSize || '12px'\" (blur)=\" blurEmit()\" (focusin)=\"focusinEmit($event)\"\n [style.text-align]=\"textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n [readOnly]=\"mode !== 'edit' || readOnly\" [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize || '12px' : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || inputWeight || '400' : ''\n }\" \n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : (mode === 'view' ? '1px 10px 0px 0px' : '1px 10px 0px 5px' )\"\n style=\"\n width: 100%;\n border-radius: 5px;\n border: none !important;\n font-size: 14px;\"\n >\n </textarea>\n <svg *ngIf=\"mode !== 'edit' && !viewEdit && from !== 'nxtTable' && (type === 'richtext' || type === 'textarea') && !readOnly && !onlyView \"\n class=\"edit-icon\" (click)=\"viewEditClick(question)\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M1.99987 9.0017L4.39602 11.3979C4.50371 11.5055 4.66525 11.5055 4.77294 11.3979L10.7499 5.39401C10.8576 5.28631 10.8576 5.12477 10.7499 5.01708L8.38064 2.64785C8.27294 2.54016 8.11141 2.54016 8.00371 2.64785L1.99987 8.6517C1.89217 8.75939 1.89217 8.92093 1.99987 9.0017ZM9.1614 1.54401C9.05371 1.6517 9.05371 1.81324 9.1614 1.92093L11.5306 4.29016C11.6383 4.39785 11.7999 4.39785 11.9076 4.29016L12.5806 3.61708C13.0114 3.21324 13.0114 2.56708 12.5806 2.13631L11.3153 0.870928C10.8845 0.440159 10.2114 0.440159 9.78063 0.870928L9.1614 1.54401ZM0.00755862 12.9863C-0.0462875 13.2555 0.19602 13.4979 0.465251 13.444L3.39987 12.744C3.50756 12.7171 3.58833 12.6632 3.64217 12.6094L3.69602 12.5555C3.74987 12.5017 3.77679 12.3132 3.6691 12.2055L1.24602 9.78247C1.13833 9.67478 0.949866 9.7017 0.89602 9.75554L0.842174 9.80939C0.761405 9.89016 0.734482 9.97093 0.707559 10.0517L0.00755862 12.9863Z\"\n fill=\"#B0ADAB\" />\n </svg>\n <!-- SKS14JUN25 Show save and cancel icons only when the input value is edited -->\n <div *ngIf=\"(apiMeta?.singleFieldDisable === undefined || !apiMeta?.singleFieldDisable) && (viewEdit ? !apiMeta?.singleFieldDisable : viewEdit) && type === 'textarea'\" class=\"input-icons\">\n <svg (click)=\"saveChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.9502 0.5C8.96006 0.500106 11.4004 2.94031 11.4004 5.9502C11.4003 8.95999 8.95999 11.4003 5.9502 11.4004C2.94031 11.4004 0.500106 8.96006 0.5 5.9502C0.5 2.94024 2.94024 0.5 5.9502 0.5Z\"\n stroke=\"#B0ADAB\" />\n <path\n d=\"M8.88111 3.84583C8.83269 3.7972 8.77513 3.7586 8.71176 3.73227C8.64838 3.70594 8.58043 3.69238 8.5118 3.69238C8.44317 3.69238 8.37521 3.70594 8.31184 3.73227C8.24846 3.7586 8.19091 3.7972 8.14249 3.84583L4.8269 7.16347L3.35253 5.6891C3.30403 5.6406 3.24646 5.60213 3.18309 5.57588C3.11972 5.54964 3.05181 5.53613 2.98322 5.53613C2.91463 5.53613 2.84672 5.54964 2.78335 5.57588C2.71999 5.60213 2.66241 5.6406 2.61391 5.6891C2.56541 5.7376 2.52694 5.79518 2.50069 5.85854C2.47445 5.92191 2.46094 5.98982 2.46094 6.05841C2.46094 6.127 2.47445 6.19491 2.50069 6.25828C2.52694 6.32165 2.56541 6.37922 2.61391 6.42772L4.45677 8.27058C4.50519 8.31922 4.56274 8.35781 4.62612 8.38414C4.6895 8.41047 4.75745 8.42403 4.82608 8.42403C4.89471 8.42403 4.96266 8.41047 5.02604 8.38414C5.08942 8.35781 5.14697 8.31922 5.19539 8.27058L8.88111 4.58445C8.92974 4.53603 8.96834 4.47848 8.99467 4.4151C9.021 4.35173 9.03456 4.28377 9.03456 4.21514C9.03456 4.14651 9.021 4.07856 8.99467 4.01518C8.96834 3.9518 8.92974 3.89425 8.88111 3.84583Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n <div *ngIf=\"viewEdit && type === 'textarea'\" class=\"input-icons\">\n <svg (click)=\"discardChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.05555 4.00883L5.94 5.12438L4.82445 4.00883C4.57861 3.76299 4.18191 3.76299 3.93607 4.00883C3.69023 4.25467 3.69023 4.65137 3.93607 4.89721L5.05162 6.01276L3.93607 7.12831C3.69023 7.37415 3.69023 7.77085 3.93607 8.01669C4.18191 8.26253 4.57861 8.26253 4.82445 8.01669L5.94 6.90114L7.05555 8.01669C7.30139 8.26253 7.69809 8.26253 7.94393 8.01669C8.18977 7.77085 8.18977 7.37415 7.94393 7.12831L6.82838 6.01276L7.94393 4.89721C8.18977 4.65137 8.18977 4.25467 7.94393 4.00883C7.69809 3.77285 7.30021 3.77285 7.05555 4.00883ZM5.94 0.0820312C2.70017 0.0820312 0.0808594 2.70134 0.0808594 5.94118C0.0808594 9.18101 2.70017 11.8003 5.94 11.8003C9.17983 11.8003 11.7991 9.18101 11.7991 5.94118C11.7991 2.70134 9.17983 0.0820312 5.94 0.0820312ZM5.94 10.6367C3.35426 10.6367 1.24422 8.52667 1.24422 5.94118C1.24422 3.35553 3.35426 1.24549 5.94 1.24549C8.52558 1.24549 10.6356 3.35553 10.6356 5.94118C10.6356 8.52667 8.52558 10.6367 5.94 10.6367Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n </div>\n </div>\n <!-- SKS23APR25 Use control.invalid to show error on submit click -->\n <div *ngIf=\"type != 'checkbox' && type !== 'label' && control.invalid && (control.touched || control.dirty)\" style=\"height: 20px;\">\n <div class=\"nxt-error-message\">\n {{ getErrorMessage() }}\n </div>\n </div>\n </div>\n</div>\n<!-- SKS18SEP25 google map popup -->\n<div class=\"map-overlay\" *ngIf=\"showModal\">\n <div class=\"map-modal\">\n <div class=\"map-modal-content\">\n <div class=\"map-modal-header\">\n <!-- HA 19DEC23 For translation -->\n <h4>{{ 'pickYourLocation' | nxtCustomTranslate : 'pickYourLocation' }}</h4>\n <button class=\"close-button\" (click)=\"closeModal()\">X</button>\n </div>\n <google-map [zoom]=\"10\" [center]=\"markerPosition\" (mapClick)=\"onMapClick($event)\">\n <map-marker\n [position]=\"markerPosition\"\n [options]=\"markerOptions\"\n (mapDragend)=\"onMarkerDragEnd($event)\">\n </map-marker>\n </google-map>\n </div>\n </div>\n</div>", styles: ["label{font-size:14px;margin-bottom:10px;color:color-mix(in srgb,black,rgb(0,0,0) 80%)}.toggle-icon{width:20px;height:20px;cursor:pointer;fill:#666}.nxt-error-message{color:red;font-size:10px}input[type=text].custom-input,input[type=password].custom-input,input[type=number].custom-input,input[type=email].custom-input,input[type=tel].custom-input,input[type=list].custom-input,input[type=dropdown].custom-input,input[type=location].custom-input{width:100%;padding:10px 10px 10px 5px;border-radius:5px;border:none;font-size:14px}input.nxt-custom-input{width:100%!important;padding:10px 10px 10px 5px;border-radius:5px;border:none;font-size:14px}.custom-input:-webkit-autofill,.custom-input:-webkit-autofill:hover,.custom-input:-webkit-autofill:focus,.custom-input:-webkit-autofill:active,.nxt-custom-input:-webkit-autofill,.nxt-custom-input:-webkit-autofill:hover,.nxt-custom-input:-webkit-autofill:focus,.nxt-custom-input:-webkit-autofill:active{transition:background-color 5000s ease-in-out 0s!important;-webkit-text-fill-color:inherit!important}.phone-input-container{display:flex;align-items:center;position:relative}.country-selector{display:flex;align-items:center;cursor:pointer;padding-right:12px;border-right:#ccc;margin-right:12px}.flag{margin-right:8px;font-size:20px}.dial-code{margin-right:8px;font-weight:500}.country-dropdown{position:absolute;top:100%;left:0;width:300px;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 4px #0000001a;z-index:1000;margin-top:4px}.search-box{padding:8px;border-bottom:1px solid #ccc}.search-box input{width:100%;padding:8px;border:1px solid #ccc;border-radius:4px}.country-list{max-height:200px;overflow-y:auto}.country-item{display:flex;align-items:center;padding:8px 12px;cursor:pointer}.country-item:hover{background-color:color-mix(in srgb,#fff,rgba(0,0,0,0) 30%)}.country-item .name{flex:1;margin:0 12px}.fcOtp{width:40px;height:40px;text-align:center;font-size:18px;border:1px solid #ccc;border-radius:5px;margin:5px;outline:none;transition:border-color .2s ease-in-out}textarea:focus-visible,textarea:focus,input:focus{outline:none;border-color:transparent;box-shadow:none}.input-container{display:flex;align-items:center;width:100%;border-radius:5px;border:1px solid #ccc;padding-left:5px;padding-right:5px}.pad-nxt-0{padding-left:0!important;padding-right:0!important}.pad-nxt-1{padding-left:1px!important;padding-right:1px!important}.pad-rich-0{padding-left:0!important;padding-right:0!important}.checkbox-padding{margin-top:20px;width:100%!important;border:none!important}.icon-container{right:15px;padding-right:5px;pointer-events:auto;width:22px;height:22px;display:flex;align-items:center;justify-content:center}.input-container.invalid{border:1px solid #DC3545!important;border-radius:5px}.view-mode{font-size:14px;color:#333}@media print{.view-mode{font-size:12pt;color:#000}}input::placeholder{font-family:var(--placeholder-font);color:var(--placeholder-color);font-size:var(--placeholder-size);font-weight:var(--placeholder-weight)}.dotted-loader{position:relative;width:28px;height:28px}.dotted-loader .dot{--i: 0;position:absolute;top:50%;left:50%;width:3px;height:3px;margin:-2px 0 0 -2px;border-radius:50%;background-color:#696969;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg));animation:spinDot 1s linear infinite;animation-delay:calc(var(--i) * .1s)}@keyframes spinDot{0%{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}50%{opacity:1;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(1.3)}to{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}}input:disabled:not([type=checkbox]){cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important;border:none!important}input[type=checkbox]:disabled{border:1px solid #5353532b!important}input[type=checkbox]:focus{border:1px solid #5353532b!important}textarea:disabled{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}.quill-view-content{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}:is() .ql-editor img{cursor:pointer}:is() .image-resizer{display:block!important;visibility:visible!important}:is() .ql-editor .image-resizer{border:1px dashed #000;position:absolute}:is() .ql-editor .image-resizer .handle{background-color:#000;border:1px solid #fff;border-radius:50%;height:12px;width:12px;position:absolute}quill-editor{width:100%}.quill-view-content{background-color:#f0f0f0;border-radius:5px;border:none;padding:10px;overflow-wrap:break-word}.quill-view-content .ql-editor{white-space:normal;overflow:visible;min-height:auto}[dir=rtl] .quill-view-content *,.rtl .quill-view-content *{text-align:right!important;direction:rtl!important}.edit-icon{display:none;cursor:pointer}.hover-wrapper:hover .edit-icon{display:block}input:disabled,textarea:disabled,.quill-view-content{color:#292929!important}input:disabled.from-nxt-table,textarea:disabled.from-nxt-table,.quill-view-content.from-nxt-table{color:#2c3137!important}.owl-dt-container-disabled,.owl-dt-trigger-disabled{opacity:unset!important}.input-wrapper{position:relative}.input-container{pointer-events:auto!important;position:relative}.custom-input,.nxt-custom-input{pointer-events:auto!important}.hijri-popup{position:absolute;top:100%;left:0;z-index:9999;background:#fff;box-shadow:0 0 5px #0000001a;border-radius:5px}.hijri-popup.rtl-class{left:auto!important;right:0!important}.input-icons{display:flex;align-items:center}::ng-deep .ql-container.ql-snow{border:none!important}::ng-deep .ql-toolbar.ql-snow{border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:1px solid #ccc!important}google-map .map-container{width:auto!important}.map-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.map-modal{width:600px;background-color:#fff;border-radius:5px;box-shadow:0 2px 4px #0003}.map-modal-header{display:flex;align-items:center;justify-content:space-between;padding:0 0 10px;background-color:#fff;border-bottom:2px solid #e5e5e5}.map-modal-header h3{margin:0}.map-modal-content{padding:20px}.close-button{border:none;cursor:pointer;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i5.CurrencyPipe, name: "currency" }, { kind: "pipe", type: NxtCustomTranslatePipe, name: "nxtCustomTranslate" }, { kind: "ngmodule", type: GoogleMapsModule }, { kind: "component", type: i9.GoogleMap, selector: "google-map", inputs: ["height", "width", "mapId", "mapTypeId", "center", "zoom", "options"], outputs: ["mapInitialized", "authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { kind: "directive", type: i9.MapMarker, selector: "map-marker", inputs: ["title", "position", "label", "clickable", "options", "icon", "visible"], outputs: ["animationChanged", "mapClick", "clickableChanged", "cursorChanged", "mapDblclick", "mapDrag", "mapDragend", "draggableChanged", "mapDragstart", "flatChanged", "iconChanged", "mapMousedown", "mapMouseout", "mapMouseover", "mapMouseup", "positionChanged", "mapRightclick", "shapeChanged", "titleChanged", "visibleChanged", "zindexChanged", "markerInitialized"], exportAs: ["mapMarker"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: QuillEditorComponent, selector: "quill-editor" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: NxtDatePipe, name: "NxtDate" }, { kind: "component", type: NxtDatepickerComponent, selector: "app-nxt-datepicker", inputs: ["type", "languageCode", "value", "min", "max"], outputs: ["dateChange"] }, { kind: "pipe", type: AmountInWordsPipe, name: "amountInWords" }] });
|
|
48095
|
+
], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true }, { propertyName: "inputEls", predicate: ["inputEl"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- SKS31JAN25 -->\n<div class=\"hover-wrapper input-wrapper\" (document:click)=\"closeDropdown($event)\">\n <div>\n <div *ngIf=\"label && type != 'checkbox' && showLabel\" [ngStyle]=\"{\n 'padding-top': type === 'label' ? '10px' : '',\n 'padding-bottom': type === 'label' ? '10px' : ''\n }\" \n [style.justify-content]=\"textAlign || 'start'\"\n [style.font-weight]=\"labelWeight || type === 'label' ? 'bold' : 'normal'\" [style.font-size]=\"(labelSize && labelSize !== '' )? labelSize : type === 'label' ? '16px' : '14px'\"\n style=\"display: flex; gap: 5px;\"> \n {{ label }}\n <div *ngIf=\"helpText\" [matTooltip]=\"helpText\" matTooltipClass=\"white-tooltip\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.00009 0.615356C3.90779 0.615356 0.615479 3.90766 0.615479 7.99997C0.615479 12.0923 3.90779 15.3846 8.00009 15.3846C12.0924 15.3846 15.3847 12.0923 15.3847 7.99997C15.3847 3.90766 12.0924 0.615356 8.00009 0.615356ZM8.00012 13.5385C4.92319 13.5385 2.46165 11.0769 2.46165 8C2.46165 4.92307 4.92319 2.46153 8.00012 2.46153C11.077 2.46153 13.5386 4.92307 13.5386 8C13.5386 11.0769 11.077 13.5385 8.00012 13.5385ZM8.00027 4.33846C8.52335 4.33846 8.92335 4.73846 8.92335 5.26153C8.92335 5.78461 8.52335 6.18461 8.00027 6.18461C7.47719 6.18461 7.07719 5.78461 7.07719 5.26153C7.07719 4.73846 7.47719 4.33846 8.00027 4.33846ZM9.53859 10.8C9.53859 10.9538 9.41552 11.0769 9.2309 11.0769H6.76936C6.61552 11.0769 6.46167 10.9846 6.46167 10.8V10.1846C6.46167 10.0308 6.58475 9.84614 6.76936 9.84614C6.92321 9.84614 7.07706 9.75383 7.07706 9.56921V8.33844C7.07706 8.1846 6.95398 7.99998 6.76936 7.99998C6.61552 7.99998 6.46167 7.90767 6.46167 7.72306V7.10767C6.46167 6.95383 6.58475 6.76921 6.76936 6.76921H8.61552C8.76936 6.76921 8.92321 6.92306 8.92321 7.10767V9.56921C8.92321 9.72306 9.04629 9.84614 9.2309 9.84614C9.38475 9.84614 9.53859 9.99998 9.53859 10.1846V10.8Z\" fill=\"#747474\"/>\n </svg>\n </div>\n <div *ngIf=\"label && type != 'checkbox' && required && showLabel && mode === 'edit'\" style=\"color: red;\">*</div>\n </div>\n <div *ngIf=\"type !== 'label' && type !== 'richtext' && type !== 'textarea'\" style=\"display: flex;\">\n <div class=\"input-container\"\n [ngStyle]=\"{ 'padding-left': mode === 'edit' ? '' : '0px' }\"\n [style.backgroundColor]=\"(type === 'otp' || mode !== 'edit') ? (inputBgColor || '#f5f5f5') : from === 'nxtTable' ? '' : inputBgColor\"\n [class.invalid]=\"control.invalid && control.touched\"\n [style.border-radius]=\"mode !== 'edit' && from === 'nxtTable' ? 'none': ''\"\n [style.padding]=\"(mode === 'edit' && from !== 'nxtTable') ? (type === 'checkbox' ? '10px 13px 10px 0px !important' : '' ) : type === 'checkbox' ? '10px 0px 9px 0px !important' : ''\"\n [style.margin]=\"(margin && margin !== '') ? margin : (showLabel && label) ? from === 'nxtTable' ? '0px !important' : '' : (from === 'nxtTable' || from === 'normalDropDown') ? '0px !important' : from === 'nxtForm' ? '21px 0px 0px 0px' : '0px !important'\"\n [style.border]=\"type === 'space' ? 'none' : mode === 'edit' ? (from === 'nxtTable' && !readOnly) ? '1px solid #d2d2d2' : inputBorder === 'none' ? ('1px solid ' + (inputBgColor || '#ffffff')) : ( (inputBorderSize || 1) + 'px solid ' + inputBorder) : 'none'\"\n style=\"position: relative; width: 100%;\"\n [ngClass]=\"{\n 'checkbox-padding': type === 'checkbox' || type === 'otp',\n 'pad-nxt-0': from === 'nxtTable' && mode !== 'edit',\n 'pad-nxt-1': from === 'nxtTable' && mode === 'edit'\n }\">\n <img *ngIf=\"inputIconLeftSrc && mode === 'edit'\" [src]=\"inputIconLeftSrc\" alt=\"icon\" class=\"icon left-icon\"\n [style.height]=\"svgHeight\" [style.width]=\"svgWidth\" />\n <div *ngIf=\"mode === 'edit' && type === 'list'\">\n <!-- Inline search icon SVG -->\n <svg [attr.width]=\"from === 'nxtTable' ? 12 : 18\" [attr.height]=\"from === 'nxtTable' ? 12 : 18\" fill=\"none\" stroke=\"#434555\" stroke-opacity=\"0.65\" stroke-width=\"1.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\">\n <circle cx=\"8.25\" cy=\"8.25\" r=\"5.25\" />\n <path d=\"M15 15L12.75 12.75\" stroke-linecap=\"round\" />\n </svg>\n </div>\n <!-- SKS28FEB25 mobile number input -->\n <div *ngIf=\"type === 'tel'\" class=\"phone-input-container\">\n <div class=\"country-selector\" style=\"padding-left: 10px;\"\n (click)=\"toggleCountryDropdown()\">\n <!-- <span class=\"flag\">{{ selectedCountry.flag }}</span> -->\n <span class=\"dial-code\" [style.font-weight]=\"inputWeight || '400'\" [style.font-size]=\"inputValueSize || '12px'\">{{ selectedCountry.dial_code }}</span>\n <svg class=\"arrow\" width=\"9\" height=\"6\" viewBox=\"0 0 9 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M0.684136 0.767477C0.922999 0.5378 1.30282 0.545248 1.5325 0.784111L4.5 3.93431L7.4675 0.784111C7.69718 0.545248 8.077 0.5378 8.31587 0.767477C8.55473 0.997153 8.56218 1.37698 8.3325 1.61584L4.9325 5.21584C4.81938 5.33349 4.66321 5.39998 4.5 5.39998C4.33679 5.39998 4.18062 5.33349 4.0675 5.21584L0.667501 1.61584C0.437825 1.37698 0.445272 0.997153 0.684136 0.767477Z\"\n fill=\"#626262\" />\n </svg>\n </div>\n <div *ngIf=\"showCountryDropdown\" class=\"country-dropdown\">\n <div class=\"search-box\">\n <input type=\"text\" [readOnly]=\"mode !== 'edit'\" placeholder=\"Search country...\" [value]=\"countrySearch\"\n (input)=\"filterCountries($event)\">\n </div>\n <div class=\"country-list\">\n <div *ngFor=\"let country of filteredCountries\" class=\"country-item\" (click)=\"selectCountry(country)\">\n <span class=\"flag\">{{ country.flag }}</span>\n <span class=\"name\">{{ country.name }}</span>\n <span class=\"dial-code\">{{ country.dial_code }}</span>\n </div>\n </div>\n </div>\n </div>\n <!-- SKS12SEP25 currency code -->\n <div *ngIf=\"mode === 'edit' && readOnly !== true && type === 'currency'\" [style.font-size]=\"inputValueSize || '12px'\" class=\"phone-input-container\">\n {{currentCurrency.symbol}}\n </div>\n @if((type === 'currency' ? mode === 'edit' && readOnly === false : type !== 'datetime' && type !== 'date' && type !== 'time' && type !== 'month' && type !== 'space')){\n <input *ngFor=\"let input of cachedInputList; let i = index\" #inputEl #inputRef [id]=\"inputId\"\n [type]=\"isPasswordVisible ? 'text' : type === 'otp' || type === 'dropdown' || type === 'number' ? 'text' : type\"\n [attr.placeholder]=\"type === 'otp' || mode !== 'edit' ? '' : (type === 'tel' ? removeDialCode(selectedCountry.placeholder) : placeholder)\"\n [formControl]=\"type === 'otp' ? $any(input) : control\"\n [style.backgroundColor]=\"(type === 'otp'|| mode !== 'edit') ? '#f5f5f5' : from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"type === 'otp' || mode !== 'edit' ? '' : inputTextColor\"\n [style.border]=\" (type === 'otp' || mode !== 'edit') ? '' : from === 'nxtTable' ? type === 'checkbox' ? '1px solid gray !important' : 'none' : type === 'checkbox' ? ( inputBorderSize || 1 + 'px solid ' + inputBorder) : inputBorder\"\n [style.height]=\"type === 'otp' ? '' : inputHeight\" [style.width]=\"type === 'otp' ? '100% !important' : type === 'checkbox' ? 'auto' : inputWidth || '100% !important'\"\n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : mode === 'edit' ? '10px 10px 10px 5px' : '10px 10px 10px 0px' \"\n [value]=\"type === 'tel' ? rawInputVal : value\"\n (input)=\"type === 'otp' ? handleInput() : onInputChange($event)\"\n [checked]=\"type === 'checkbox' ? value : ''\"\n [style.font-size]=\"type === 'otp' ? '' : inputValueSize || '12px'\" (focus)=\"type === 'otp' ? handleFocus($event) : null\"\n [style.text-align]=\"(type === 'currency' && mode === 'edit') ? 'start' : textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n (blur)=\"type === 'otp' ? onTouched() : blurEmit()\"\n (keypress)=\"type === 'otp' ? handleKeyPress($event, i) : type === 'number' ? allowNumberDecimal($event) : null\"\n (keydown)=\"type === 'otp' ? handleKeyDown($event, i) : from === 'normalDropDown' ? $event.preventDefault() : type === 'number' ? allowNumberDecimal($event) : null\"\n (paste)=\"type === 'otp' ? handlePaste($event, i) : null\" inputmode=\"type === 'otp' ? numeric : null\"\n [attr.autocomplete]=\"type === 'otp' && i === 0 ? 'one-time-code' : type === 'list' ? 'list' : 'off'\"\n [attr.aria-expanded]=\"type === 'list' ? showSuggestion : 'off'\"\n [attr.inputmode]=\"type === 'otp' ? 'numeric' : type === 'number' ? 'decimal' : null\" [attr.name]=\"type === 'otp' && i === 0 ? 'otp' : null\"\n (focusin)=\"focusinEmit($event)\" [attr.aria-owns]=\"type === 'list' ? ariaOwns : 'off'\"\n [attr.aria-haspopup]=\"type === 'list' ? ariaHasPopup : 'off'\" \n [readonly]=\"from === 'normalDropDown'\" \n [ngClass]= \"{\n 'is-edit':mode === 'edit',\n }\"\n [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize || '12px' : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || inputWeight || '400' : ''\n }\" (keydown.enter)=\"type === 'location' ? $event.preventDefault() : ''\"\n autocorrect=\"type === 'location' ? 'off' : ''\" autocapitalize=\"type === 'location' ? 'off' : ''\"\n spellcheck=\"type === 'location' ? 'off' : ''\"\n />\n }\n @else if(type === 'time' || type === 'month' || type === 'datetime' || type === 'date') {\n <div style=\"position: relative; width: 100%;\">\n <input [id]=\"inputId\"\n type=\"text\" \n [formControl]=\"control\"\n readonly\n [attr.placeholder]=\"mode !== 'edit' ? '' : placeholder || ''\"\n [ngClass]=\"'nxt-custom-input'\" \n [value]=\"value | NxtDate : type : languageCode : dateFormatName\"\n [style.backgroundColor]=\"mode !== 'edit' ? '#f5f5f5' : from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"mode !== 'edit' ? '' : inputTextColor\" [style.border]=\"mode !== 'edit' ? 'none' : from === 'nxtTable' ? 'none' : inputBorder\"\n [style.height]=\"inputHeight\"\n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : mode === 'edit' ? '10px 10px 10px 5px' : '10px 10px 10px 0px' \"\n [style.font-size]=\"inputValueSize || '12px'\" (blur)=\" blurEmit()\" (focusin)=\"focusinEmit($event)\"\n [style.text-align]=\"textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n (focus)=\"onHijriInputClick(); $event.stopPropagation()\"\n (click)=\"onHijriInputClick();\"\n [attr.autocomplete]=\"'off'\"\n [attr.readonly]=\"'true'\"\n [readonly]=\"'true'\" \n [disabled]=\"mode === 'edit' ? readOnly === true : true\"\n [class]=\"'nxt-' + (question.nxtTableId || question.id)\"\n [ngClass]= \"{\n 'is-edit':mode === 'edit',\n }\"\n [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize || '12px' : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || inputWeight || '400' : ''\n }\" style=\"\n width: 100% !important;\n padding: 10px;\n padding-left: 5px;\n border-radius: 5px;\n border: none !important;\n font-size: 14px;\" \n />\n <!-- SKS14AUG25 Hijri Datepicker Popup -->\n <div *ngIf=\"showHijriPicker\" class=\"hijri-popup\" [ngClass]=\"{'rtl-class': direction === 'rtl'}\" [class]=\"'nxt-' + (question.nxtTableId || question.id)\">\n <app-nxt-datepicker\n [type]=\"type\"\n [value]=\"value\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [languageCode]=\"languageCode\"\n (dateChange)=\"onInputChange($event);\"\n >\n </app-nxt-datepicker>\n </div>\n </div>\n }\n <div *ngIf=\"(type === 'currency' && (mode !== 'edit' || readOnly === true))\"\n [style.backgroundColor]=\"from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"inputTextColor\"\n [style.border]=\"from === 'nxtTable' ? 'none' : inputBorder\"\n [style.height]=\"inputHeight\" \n [style.width]=\"inputWidth || '100% !important'\"\n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : mode === 'edit' ? '10px 10px 10px 5px' : '10px 10px 10px 0px' \"\n [style.font-size]=\"inputValueSize || '12px'\"\n [style.text-align]=\"textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n >\n @if(question?.subText?.isAmountInWords){\n {{value | amountInWords }}\n } @else {\n {{value | currency : currentCurrency.code : currentCurrency.symbol }}\n }\n </div>\n <!-- SKS7AUG25 api call Dotted Loader -->\n <div *ngIf=\"mode === 'edit' && isLoading\" class=\"dotted-loader input-icons\" aria-label=\"Loading\" role=\"status\">\n <span *ngFor=\"let dot of [].constructor(6); let i = index\" class=\"dot\" [style.--i]=\"i\"></span>\n </div>\n <div *ngIf=\"mode === 'edit' && (type === 'datetime' || type === 'date' || type === 'month' || type === 'time')\" (click)=\"openDatePicker(type); $event.stopPropagation()\" class=\"input-icons\"\n style=\"cursor: pointer;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"from === 'nxtTable' ? 12 : 18\" [attr.height]=\"from === 'nxtTable' ? 12 : 18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M2.32031 7.05285H15.6883\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.3322 9.98254H12.3392\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00408 9.98254H9.01103\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.66815 9.98254H5.67509\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.3322 12.8976H12.3392\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00408 12.8976H9.01103\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.66815 12.8976H5.67509\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.0329 1.5V3.96809\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.97435 1.5V3.96809\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.1787 2.68457H5.82822C3.6257 2.68457 2.25 3.91152 2.25 6.16684V12.9541C2.25 15.2449 3.6257 16.5002 5.82822 16.5002H12.1718C14.3812 16.5002 15.75 15.2661 15.75 13.0108V6.16684C15.7569 3.91152 14.3882 2.68457 12.1787 2.68457Z\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div *ngIf=\"mode === 'edit' && !readOnly && type === 'location' \" class=\"input-icons\">\n <svg *ngIf=\"!isLoading\" (click)=\"openMap()\" (keydown.enter)=\"openMap()\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <rect x=\"0.5\" y=\"0.5\" [attr.width]=\"from === 'nxtTable' ? 12 : 15\" [attr.height]=\"from === 'nxtTable' ? 12 : 15\" stroke=\"white\"/>\n <path d=\"M7.99992 8.95321C9.14867 8.95321 10.0799 8.02197 10.0799 6.87321C10.0799 5.72446 9.14867 4.79321 7.99992 4.79321C6.85117 4.79321 5.91992 5.72446 5.91992 6.87321C5.91992 8.02197 6.85117 8.95321 7.99992 8.95321Z\" stroke=\"#B1ADAB\" stroke-width=\"1.5\"/>\n <path d=\"M2.41379 5.65992C3.72712 -0.113413 12.2805 -0.106746 13.5871 5.66659C14.3538 9.05325 12.2471 11.9199 10.4005 13.6933C9.06046 14.9866 6.94046 14.9866 5.59379 13.6933C3.75379 11.9199 1.64712 9.04659 2.41379 5.65992Z\" stroke=\"#B1ADAB\" stroke-width=\"1.5\"/>\n </svg> \n </div>\n <div *ngIf=\"mode === 'edit' && type === 'list'\" class=\"input-icons\">\n <svg *ngIf=\"!isLoading\" (click)=\"removeValue()\" (keydown.enter)=\"removeValue()\" style=\"cursor: pointer;\" [attr.width]=\"from === 'nxtTable' ? 12 : 16\" [attr.height]=\"from === 'nxtTable' ? 12 : 16\" viewBox=\"0 0 0.48 0.48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0.03 0.075a0.015 0.015 0 0 0 0 0.03zm0.42 0.03a0.015 0.015 0 0 0 0 -0.03zm-0.42 0h0.42v-0.03h-0.42z\" fill=\"#71717A\"/><path d=\"M0.195 0.03V0.015zM0.165 0.06H0.15zM0.15 0.09a0.015 0.015 0 0 0 0.03 0zm0.15 0a0.015 0.015 0 0 0 0.03 0zm0.015 -0.03h0.015zM0.285 0.015h-0.09v0.03h0.09zm-0.09 0a0.045 0.045 0 0 0 -0.032 0.013l0.021 0.021a0.015 0.015 0 0 1 0.011 -0.004zm-0.032 0.013A0.045 0.045 0 0 0 0.15 0.06H0.18a0.015 0.015 0 0 1 0.004 -0.011zM0.15 0.06v0.03H0.18V0.06zm0.18 0.03V0.06H0.3v0.03zm0 -0.03a0.045 0.045 0 0 0 -0.013 -0.032l-0.021 0.021c0.003 0.003 0.004 0.007 0.004 0.011zm-0.013 -0.032A0.045 0.045 0 0 0 0.285 0.015v0.03a0.015 0.015 0 0 1 0.011 0.004z\" fill=\"#71717A\"/><path d=\"M0.18 0.345a0.015 0.015 0 0 0 0.03 0zm0.03 -0.15a0.015 0.015 0 0 0 -0.03 0zm0 0.15v-0.15H0.18v0.15z\" fill=\"#71717A\"/><path d=\"M0.27 0.345a0.015 0.015 0 0 0 0.03 0zm0.03 -0.15a0.015 0.015 0 0 0 -0.03 0zm0 0.15v-0.15h-0.03v0.15z\" fill=\"#71717A\"/><path d=\"m0.377 0.422 -0.015 -0.001zM0.347 0.45v-0.015zm-0.215 0v-0.015zm-0.03 -0.028 0.015 -0.001zM0.09 0.089a0.015 0.015 0 0 0 -0.03 0.002zm0.33 0.002a0.015 0.015 0 1 0 -0.03 -0.002zm-0.058 0.33a0.015 0.015 0 0 1 -0.005 0.01l0.02 0.022a0.045 0.045 0 0 0 0.014 -0.029zm-0.005 0.01a0.015 0.015 0 0 1 -0.01 0.004v0.03a0.045 0.045 0 0 0 0.03 -0.012zm-0.01 0.004H0.133v0.03H0.347zm-0.215 0a0.015 0.015 0 0 1 -0.01 -0.004l-0.02 0.022c0.008 0.008 0.019 0.012 0.03 0.012zm-0.01 -0.004a0.015 0.015 0 0 1 -0.005 -0.01l-0.03 0.002a0.045 0.045 0 0 0 0.014 0.029zm-0.005 -0.01L0.09 0.089l-0.03 0.002 0.028 0.332zm0.272 -0.332 -0.028 0.332 0.03 0.002 0.028 -0.332z\" fill=\"#71717A\"/></svg> \n </div>\n <label class=\"nxt-checkboxLab\" *ngIf=\"label && type === 'checkbox' && showLabel\" [style.font-weight]=\"labelWeight\"\n [style.font-size]=\"labelSize\" [style.color]=\"inputTextColor || labelColor || '#212529'\"\n [style.justify-content]=\"textAlign || 'start'\"\n style=\"margin-bottom: 0; padding-right: 10px; width: 100% !important;\"> {{ label }}\n <div *ngIf=\"label && type === 'checkbox' && required && showLabel\" style=\"color: red;\">*</div>\n </label> \n <!-- Always Show Dropdown Icon -->\n <div *ngIf=\"mode === 'edit' && type === 'dropdown'\" class=\"input-icons\">\n <svg (mousedown)=\"toggle($event); $event.preventDefault()\" xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"from === 'nxtTable' ? 12 : 16\" [attr.height]=\"from === 'nxtTable' ? 12 : 16\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M4.5 11H7.5C10 11 11 10 11 7.5V4.5C11 2 10 1 7.5 1H4.5C2 1 1 2 1 4.5V7.5C1 10 2 11 4.5 11Z\" stroke=\"#B0ADAB\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M4.23499 5.32L6 7.08L7.765 5.32\" stroke=\"#B0ADAB\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n\n <img *ngIf=\"mode === 'edit' && inputIconRightSrc\" [src]=\"inputIconRightSrc\" class=\"icon right-icon\"\n [style.height]=\"svgHeight\" [style.width]=\"svgWidth\">\n <img *ngIf=\"mode === 'edit' && type === 'password'\" class=\"toggle-icon\" (click)=\"togglePasswordVisibility()\"\n [src]=\"!isPasswordVisible ? '/assets/images/icons/general/Hide-Password.svg' : '/assets/images/icons/general/Show-Password.svg'\" />\n <div *ngIf=\"mode !== 'edit' && !readOnly && from !== 'nxtTable' && !onlyView && type !== 'space'\" class=\"input-icons\">\n <svg class=\"edit-icon\" \n (click)=\"viewEditClick(question)\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M1.99987 9.0017L4.39602 11.3979C4.50371 11.5055 4.66525 11.5055 4.77294 11.3979L10.7499 5.39401C10.8576 5.28631 10.8576 5.12477 10.7499 5.01708L8.38064 2.64785C8.27294 2.54016 8.11141 2.54016 8.00371 2.64785L1.99987 8.6517C1.89217 8.75939 1.89217 8.92093 1.99987 9.0017ZM9.1614 1.54401C9.05371 1.6517 9.05371 1.81324 9.1614 1.92093L11.5306 4.29016C11.6383 4.39785 11.7999 4.39785 11.9076 4.29016L12.5806 3.61708C13.0114 3.21324 13.0114 2.56708 12.5806 2.13631L11.3153 0.870928C10.8845 0.440159 10.2114 0.440159 9.78063 0.870928L9.1614 1.54401ZM0.00755862 12.9863C-0.0462875 13.2555 0.19602 13.4979 0.465251 13.444L3.39987 12.744C3.50756 12.7171 3.58833 12.6632 3.64217 12.6094L3.69602 12.5555C3.74987 12.5017 3.77679 12.3132 3.6691 12.2055L1.24602 9.78247C1.13833 9.67478 0.949866 9.7017 0.89602 9.75554L0.842174 9.80939C0.761405 9.89016 0.734482 9.97093 0.707559 10.0517L0.00755862 12.9863Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n <!-- SKS14JUN25 Show save and cancel icons only when the input value is edited -->\n <div *ngIf=\"(apiMeta?.singleFieldDisable === undefined || !apiMeta?.singleFieldDisable) && viewEdit ? (!apiMeta?.singleFieldDisable && type !== 'space') : (viewEdit && type !== 'space')\" class=\"input-icons\">\n <svg (click)=\"saveChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.9502 0.5C8.96006 0.500106 11.4004 2.94031 11.4004 5.9502C11.4003 8.95999 8.95999 11.4003 5.9502 11.4004C2.94031 11.4004 0.500106 8.96006 0.5 5.9502C0.5 2.94024 2.94024 0.5 5.9502 0.5Z\"\n stroke=\"#B0ADAB\" />\n <path\n d=\"M8.88111 3.84583C8.83269 3.7972 8.77513 3.7586 8.71176 3.73227C8.64838 3.70594 8.58043 3.69238 8.5118 3.69238C8.44317 3.69238 8.37521 3.70594 8.31184 3.73227C8.24846 3.7586 8.19091 3.7972 8.14249 3.84583L4.8269 7.16347L3.35253 5.6891C3.30403 5.6406 3.24646 5.60213 3.18309 5.57588C3.11972 5.54964 3.05181 5.53613 2.98322 5.53613C2.91463 5.53613 2.84672 5.54964 2.78335 5.57588C2.71999 5.60213 2.66241 5.6406 2.61391 5.6891C2.56541 5.7376 2.52694 5.79518 2.50069 5.85854C2.47445 5.92191 2.46094 5.98982 2.46094 6.05841C2.46094 6.127 2.47445 6.19491 2.50069 6.25828C2.52694 6.32165 2.56541 6.37922 2.61391 6.42772L4.45677 8.27058C4.50519 8.31922 4.56274 8.35781 4.62612 8.38414C4.6895 8.41047 4.75745 8.42403 4.82608 8.42403C4.89471 8.42403 4.96266 8.41047 5.02604 8.38414C5.08942 8.35781 5.14697 8.31922 5.19539 8.27058L8.88111 4.58445C8.92974 4.53603 8.96834 4.47848 8.99467 4.4151C9.021 4.35173 9.03456 4.28377 9.03456 4.21514C9.03456 4.14651 9.021 4.07856 8.99467 4.01518C8.96834 3.9518 8.92974 3.89425 8.88111 3.84583Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n <div *ngIf=\"viewEdit && type !== 'space'\" class=\"input-icons\">\n <svg (click)=\"discardChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.05555 4.00883L5.94 5.12438L4.82445 4.00883C4.57861 3.76299 4.18191 3.76299 3.93607 4.00883C3.69023 4.25467 3.69023 4.65137 3.93607 4.89721L5.05162 6.01276L3.93607 7.12831C3.69023 7.37415 3.69023 7.77085 3.93607 8.01669C4.18191 8.26253 4.57861 8.26253 4.82445 8.01669L5.94 6.90114L7.05555 8.01669C7.30139 8.26253 7.69809 8.26253 7.94393 8.01669C8.18977 7.77085 8.18977 7.37415 7.94393 7.12831L6.82838 6.01276L7.94393 4.89721C8.18977 4.65137 8.18977 4.25467 7.94393 4.00883C7.69809 3.77285 7.30021 3.77285 7.05555 4.00883ZM5.94 0.0820312C2.70017 0.0820312 0.0808594 2.70134 0.0808594 5.94118C0.0808594 9.18101 2.70017 11.8003 5.94 11.8003C9.17983 11.8003 11.7991 9.18101 11.7991 5.94118C11.7991 2.70134 9.17983 0.0820312 5.94 0.0820312ZM5.94 10.6367C3.35426 10.6367 1.24422 8.52667 1.24422 5.94118C1.24422 3.35553 3.35426 1.24549 5.94 1.24549C8.52558 1.24549 10.6356 3.35553 10.6356 5.94118C10.6356 8.52667 8.52558 10.6367 5.94 10.6367Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n </div>\n </div>\n <div *ngIf=\"type !== 'label' && type !== 'checkbox' && (type === 'richtext' || type === 'textarea')\" style=\"display: flex;\">\n <div class=\"input-container\"\n [ngStyle]=\"{ 'padding-left': mode === 'edit' ? '' : '0px' }\"\n [style.margin]=\"(margin && margin !== '') ? margin : showLabel && label ? '' : from === 'nxtTable' || from === 'normalDropDown' ? '' : from === 'nxtForm' ? '21px 0px 0px 0px' : '0px !important'\"\n [style.border-radius]=\"mode !== 'edit' && from === 'nxtTable' ? 'none': ''\"\n [style.backgroundColor]=\"mode === 'edit' ? from === 'nxtTable' ? '' : inputBgColor : (inputBgColor || '#f5f5f5')\"\n [class.invalid]=\"control.invalid && control.touched\"\n [style.border]=\"mode === 'edit' ? from === 'nxtTable' ? '1px solid #d2d2d2' : inputBorder === 'none' ? ('1px solid ' + inputBgColor) : (inputBorderSize || 1 + 'px solid ' + inputBorder) : 'none'\"\n [ngClass]=\"{\n 'pad-nxt-0': from === 'nxtTable' && mode !== 'edit',\n 'pad-nxt-1': from === 'nxtTable' && mode === 'edit',\n 'pad-rich-0': mode === 'edit' && type === 'richtext'\n }\">\n <!-- SKS14JUN25 Dynamically load Quill editor toolbar -->\n <quill-editor *ngIf=\"mode === 'edit' && type === 'richtext'\" [(ngModel)]=\"value\" (ngModelChange)=\"onInputChange($event)\" [placeholder]=\"placeholder || ''\"\n [readOnly]=\"mode !== 'edit' || readOnly\"\n (focusout)=\"onEditorFocusOut()\" [class.error]=\"control.invalid && (control.touched || control.dirty)\"\n [modules]=\"getQuillModules(question.id)\"\n [style.padding]=\"'0px'\"\n style=\"width: 100%;\n border-radius: 5px;\n border: none;\n font-size: 16px;\">\n </quill-editor>\n <!-- View mode -->\n <div *ngIf=\"mode !== 'edit' && type === 'richtext'\" class=\"quill-view-content ql-snow\"\n style=\"width: 98.5%;\n border-radius: 5px;\n border: none;\n padding: unset;\n font-size: 16px;\n min-height: 38px;\">\n <div class=\"ql-editor\" [innerHTML]=\"value\"\n [style.padding]=\"(padding && padding !== '') ? padding : (from === 'nxtTable' ? '0px' : (mode === 'view' ? '1px 10px 0px 0px' : '1px 10px 0px 5px' ))\"\n [style.text-align]=\"direction === 'rtl' ? 'right' : '' \"\n [attr.dir]='direction' style=\"font-size: 12px;\"\n ></div>\n </div>\n <textarea *ngIf=\"type === 'textarea'\" [id]=\"inputId\" [rows]=\"from === 'nxtTable' ? 1 : rows\"\n [attr.placeholder]=\"mode !== 'edit' ? '' : placeholder || ''\" [ngClass]=\"'custom-input'\"\n [formControl]=\"control\"\n [style.backgroundColor]=\"mode !== 'edit' ? '#f5f5f5' : from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"mode !== 'edit' ? '' : inputTextColor\" [style.border]=\"mode !== 'edit' ? 'none' : from === 'nxtTable' ? '1px solid #d2d2d2' : inputBorder\"\n [style.height]=\"inputHeight\" [value]=\"value\" (input)=\" onInputChange($event)\"\n [style.font-size]=\"inputValueSize || '12px'\" (blur)=\" blurEmit()\" (focusin)=\"focusinEmit($event)\"\n [style.text-align]=\"textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n [readOnly]=\"mode !== 'edit' || readOnly\" [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize || '12px' : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || inputWeight || '400' : ''\n }\" \n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : (mode === 'view' ? '1px 10px 0px 0px' : '1px 10px 0px 5px' )\"\n style=\"\n width: 100%;\n border-radius: 5px;\n border: none !important;\n font-size: 14px;\"\n >\n </textarea>\n <svg *ngIf=\"mode !== 'edit' && !viewEdit && from !== 'nxtTable' && (type === 'richtext' || type === 'textarea') && !readOnly && !onlyView \"\n class=\"edit-icon\" (click)=\"viewEditClick(question)\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M1.99987 9.0017L4.39602 11.3979C4.50371 11.5055 4.66525 11.5055 4.77294 11.3979L10.7499 5.39401C10.8576 5.28631 10.8576 5.12477 10.7499 5.01708L8.38064 2.64785C8.27294 2.54016 8.11141 2.54016 8.00371 2.64785L1.99987 8.6517C1.89217 8.75939 1.89217 8.92093 1.99987 9.0017ZM9.1614 1.54401C9.05371 1.6517 9.05371 1.81324 9.1614 1.92093L11.5306 4.29016C11.6383 4.39785 11.7999 4.39785 11.9076 4.29016L12.5806 3.61708C13.0114 3.21324 13.0114 2.56708 12.5806 2.13631L11.3153 0.870928C10.8845 0.440159 10.2114 0.440159 9.78063 0.870928L9.1614 1.54401ZM0.00755862 12.9863C-0.0462875 13.2555 0.19602 13.4979 0.465251 13.444L3.39987 12.744C3.50756 12.7171 3.58833 12.6632 3.64217 12.6094L3.69602 12.5555C3.74987 12.5017 3.77679 12.3132 3.6691 12.2055L1.24602 9.78247C1.13833 9.67478 0.949866 9.7017 0.89602 9.75554L0.842174 9.80939C0.761405 9.89016 0.734482 9.97093 0.707559 10.0517L0.00755862 12.9863Z\"\n fill=\"#B0ADAB\" />\n </svg>\n <!-- SKS14JUN25 Show save and cancel icons only when the input value is edited -->\n <div *ngIf=\"(apiMeta?.singleFieldDisable === undefined || !apiMeta?.singleFieldDisable) && (viewEdit ? !apiMeta?.singleFieldDisable : viewEdit) && type === 'textarea'\" class=\"input-icons\">\n <svg (click)=\"saveChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.9502 0.5C8.96006 0.500106 11.4004 2.94031 11.4004 5.9502C11.4003 8.95999 8.95999 11.4003 5.9502 11.4004C2.94031 11.4004 0.500106 8.96006 0.5 5.9502C0.5 2.94024 2.94024 0.5 5.9502 0.5Z\"\n stroke=\"#B0ADAB\" />\n <path\n d=\"M8.88111 3.84583C8.83269 3.7972 8.77513 3.7586 8.71176 3.73227C8.64838 3.70594 8.58043 3.69238 8.5118 3.69238C8.44317 3.69238 8.37521 3.70594 8.31184 3.73227C8.24846 3.7586 8.19091 3.7972 8.14249 3.84583L4.8269 7.16347L3.35253 5.6891C3.30403 5.6406 3.24646 5.60213 3.18309 5.57588C3.11972 5.54964 3.05181 5.53613 2.98322 5.53613C2.91463 5.53613 2.84672 5.54964 2.78335 5.57588C2.71999 5.60213 2.66241 5.6406 2.61391 5.6891C2.56541 5.7376 2.52694 5.79518 2.50069 5.85854C2.47445 5.92191 2.46094 5.98982 2.46094 6.05841C2.46094 6.127 2.47445 6.19491 2.50069 6.25828C2.52694 6.32165 2.56541 6.37922 2.61391 6.42772L4.45677 8.27058C4.50519 8.31922 4.56274 8.35781 4.62612 8.38414C4.6895 8.41047 4.75745 8.42403 4.82608 8.42403C4.89471 8.42403 4.96266 8.41047 5.02604 8.38414C5.08942 8.35781 5.14697 8.31922 5.19539 8.27058L8.88111 4.58445C8.92974 4.53603 8.96834 4.47848 8.99467 4.4151C9.021 4.35173 9.03456 4.28377 9.03456 4.21514C9.03456 4.14651 9.021 4.07856 8.99467 4.01518C8.96834 3.9518 8.92974 3.89425 8.88111 3.84583Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n <div *ngIf=\"viewEdit && type === 'textarea'\" class=\"input-icons\">\n <svg (click)=\"discardChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.05555 4.00883L5.94 5.12438L4.82445 4.00883C4.57861 3.76299 4.18191 3.76299 3.93607 4.00883C3.69023 4.25467 3.69023 4.65137 3.93607 4.89721L5.05162 6.01276L3.93607 7.12831C3.69023 7.37415 3.69023 7.77085 3.93607 8.01669C4.18191 8.26253 4.57861 8.26253 4.82445 8.01669L5.94 6.90114L7.05555 8.01669C7.30139 8.26253 7.69809 8.26253 7.94393 8.01669C8.18977 7.77085 8.18977 7.37415 7.94393 7.12831L6.82838 6.01276L7.94393 4.89721C8.18977 4.65137 8.18977 4.25467 7.94393 4.00883C7.69809 3.77285 7.30021 3.77285 7.05555 4.00883ZM5.94 0.0820312C2.70017 0.0820312 0.0808594 2.70134 0.0808594 5.94118C0.0808594 9.18101 2.70017 11.8003 5.94 11.8003C9.17983 11.8003 11.7991 9.18101 11.7991 5.94118C11.7991 2.70134 9.17983 0.0820312 5.94 0.0820312ZM5.94 10.6367C3.35426 10.6367 1.24422 8.52667 1.24422 5.94118C1.24422 3.35553 3.35426 1.24549 5.94 1.24549C8.52558 1.24549 10.6356 3.35553 10.6356 5.94118C10.6356 8.52667 8.52558 10.6367 5.94 10.6367Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n </div>\n </div>\n <!-- SKS23APR25 Use control.invalid to show error on submit click -->\n <div *ngIf=\"type != 'checkbox' && type !== 'label' && control.invalid && (control.touched || control.dirty)\" style=\"height: 20px;\">\n <div class=\"nxt-error-message\">\n {{ getErrorMessage() }}\n </div>\n </div>\n </div>\n</div>\n<!-- SKS18SEP25 google map popup -->\n<div class=\"map-overlay\" *ngIf=\"showModal\">\n <div class=\"map-modal\">\n <div class=\"map-modal-content\">\n <div class=\"map-modal-header\">\n <!-- HA 19DEC23 For translation -->\n <h4>{{ 'pickYourLocation' | nxtCustomTranslate : 'pickYourLocation' }}</h4>\n <button class=\"close-button\" (click)=\"closeModal()\">X</button>\n </div>\n <google-map [zoom]=\"10\" [center]=\"markerPosition\" (mapClick)=\"onMapClick($event)\">\n <map-marker\n [position]=\"markerPosition\"\n [options]=\"markerOptions\"\n (mapDragend)=\"onMarkerDragEnd($event)\">\n </map-marker>\n </google-map>\n </div>\n </div>\n</div>", styles: ["label{font-size:14px;margin-bottom:10px;color:color-mix(in srgb,black,rgb(0,0,0) 80%)}.toggle-icon{width:20px;height:20px;cursor:pointer;fill:#666}.nxt-error-message{color:red;font-size:10px}input[type=text].custom-input,input[type=password].custom-input,input[type=number].custom-input,input[type=email].custom-input,input[type=tel].custom-input,input[type=list].custom-input,input[type=dropdown].custom-input,input[type=location].custom-input{width:100%;padding:10px 10px 10px 5px;border-radius:5px;border:none;font-size:14px}input.nxt-custom-input{width:100%!important;padding:10px 10px 10px 5px;border-radius:5px;border:none;font-size:14px}.custom-input:-webkit-autofill,.custom-input:-webkit-autofill:hover,.custom-input:-webkit-autofill:focus,.custom-input:-webkit-autofill:active,.nxt-custom-input:-webkit-autofill,.nxt-custom-input:-webkit-autofill:hover,.nxt-custom-input:-webkit-autofill:focus,.nxt-custom-input:-webkit-autofill:active{transition:background-color 5000s ease-in-out 0s!important;-webkit-text-fill-color:inherit!important}.phone-input-container{display:flex;align-items:center;position:relative}.country-selector{display:flex;align-items:center;cursor:pointer;padding-right:12px;border-right:#ccc;margin-right:12px}.flag{margin-right:8px;font-size:20px}.dial-code{margin-right:8px;font-weight:500}.country-dropdown{position:absolute;top:100%;left:0;width:300px;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 4px #0000001a;z-index:1000;margin-top:4px}.search-box{padding:8px;border-bottom:1px solid #ccc}.search-box input{width:100%;padding:8px;border:1px solid #ccc;border-radius:4px}.country-list{max-height:200px;overflow-y:auto}.country-item{display:flex;align-items:center;padding:8px 12px;cursor:pointer}.country-item:hover{background-color:color-mix(in srgb,#fff,rgba(0,0,0,0) 30%)}.country-item .name{flex:1;margin:0 12px}.fcOtp{width:40px;height:40px;text-align:center;font-size:18px;border:1px solid #ccc;border-radius:5px;margin:5px;outline:none;transition:border-color .2s ease-in-out}textarea:focus-visible,textarea:focus,input:focus{outline:none;border-color:transparent;box-shadow:none}.input-container{display:flex;align-items:center;width:100%;border-radius:5px;border:1px solid #ccc;padding-left:5px;padding-right:5px}.pad-nxt-0{padding-left:0!important;padding-right:0!important}.pad-nxt-1{padding-left:1px!important;padding-right:1px!important}.pad-rich-0{padding-left:0!important;padding-right:0!important}.checkbox-padding{margin-top:20px;width:100%!important;border:none!important}.icon-container{right:15px;padding-right:5px;pointer-events:auto;width:22px;height:22px;display:flex;align-items:center;justify-content:center}.input-container.invalid{border:1px solid #DC3545!important;border-radius:5px}.view-mode{font-size:14px;color:#333}@media print{.view-mode{font-size:12pt;color:#000}}input::placeholder{font-family:var(--placeholder-font);color:var(--placeholder-color);font-size:var(--placeholder-size);font-weight:var(--placeholder-weight)}.dotted-loader{position:relative;width:28px;height:28px}.dotted-loader .dot{--i: 0;position:absolute;top:50%;left:50%;width:3px;height:3px;margin:-2px 0 0 -2px;border-radius:50%;background-color:#696969;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg));animation:spinDot 1s linear infinite;animation-delay:calc(var(--i) * .1s)}@keyframes spinDot{0%{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}50%{opacity:1;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(1.3)}to{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}}input:disabled:not([type=checkbox]){cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important;border:none!important}input:disabled.is-edit:not([type=checkbox]){background-color:#f5f5f5!important}.input-container:has(input.is-edit:disabled){background-color:#f5f5f5!important}input[type=checkbox]:disabled{border:1px solid #5353532b!important}input[type=checkbox]:focus{border:1px solid #5353532b!important}textarea:disabled{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}.quill-view-content{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}:is() .ql-editor img{cursor:pointer}:is() .image-resizer{display:block!important;visibility:visible!important}:is() .ql-editor .image-resizer{border:1px dashed #000;position:absolute}:is() .ql-editor .image-resizer .handle{background-color:#000;border:1px solid #fff;border-radius:50%;height:12px;width:12px;position:absolute}quill-editor{width:100%}.quill-view-content{background-color:#f0f0f0;border-radius:5px;border:none;padding:10px;overflow-wrap:break-word}.quill-view-content .ql-editor{white-space:normal;overflow:visible;min-height:auto}[dir=rtl] .quill-view-content *,.rtl .quill-view-content *{text-align:right!important;direction:rtl!important}.edit-icon{display:none;cursor:pointer}.hover-wrapper:hover .edit-icon{display:block}input:disabled,textarea:disabled,.quill-view-content{color:#292929!important}input:disabled.from-nxt-table,textarea:disabled.from-nxt-table,.quill-view-content.from-nxt-table{color:#2c3137!important}.owl-dt-container-disabled,.owl-dt-trigger-disabled{opacity:unset!important}.input-wrapper{position:relative}.input-container{pointer-events:auto!important;position:relative}.custom-input,.nxt-custom-input{pointer-events:auto!important}.hijri-popup{position:absolute;top:100%;left:0;z-index:9999;background:#fff;box-shadow:0 0 5px #0000001a;border-radius:5px}.hijri-popup.rtl-class{left:auto!important;right:0!important}.input-icons{display:flex;align-items:center}::ng-deep .ql-container.ql-snow{border:none!important}::ng-deep .ql-toolbar.ql-snow{border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:1px solid #ccc!important}google-map .map-container{width:auto!important}.map-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.map-modal{width:600px;background-color:#fff;border-radius:5px;box-shadow:0 2px 4px #0003}.map-modal-header{display:flex;align-items:center;justify-content:space-between;padding:0 0 10px;background-color:#fff;border-bottom:2px solid #e5e5e5}.map-modal-header h3{margin:0}.map-modal-content{padding:20px}.close-button{border:none;cursor:pointer;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i5.CurrencyPipe, name: "currency" }, { kind: "pipe", type: NxtCustomTranslatePipe, name: "nxtCustomTranslate" }, { kind: "ngmodule", type: GoogleMapsModule }, { kind: "component", type: i9.GoogleMap, selector: "google-map", inputs: ["height", "width", "mapId", "mapTypeId", "center", "zoom", "options"], outputs: ["mapInitialized", "authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { kind: "directive", type: i9.MapMarker, selector: "map-marker", inputs: ["title", "position", "label", "clickable", "options", "icon", "visible"], outputs: ["animationChanged", "mapClick", "clickableChanged", "cursorChanged", "mapDblclick", "mapDrag", "mapDragend", "draggableChanged", "mapDragstart", "flatChanged", "iconChanged", "mapMousedown", "mapMouseout", "mapMouseover", "mapMouseup", "positionChanged", "mapRightclick", "shapeChanged", "titleChanged", "visibleChanged", "zindexChanged", "markerInitialized"], exportAs: ["mapMarker"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: QuillEditorComponent, selector: "quill-editor" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: NxtDatePipe, name: "NxtDate" }, { kind: "component", type: NxtDatepickerComponent, selector: "app-nxt-datepicker", inputs: ["type", "languageCode", "value", "min", "max"], outputs: ["dateChange"] }, { kind: "pipe", type: AmountInWordsPipe, name: "amountInWords" }] });
|
|
48096
48096
|
}
|
|
48097
48097
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: NxtInput, decorators: [{
|
|
48098
48098
|
type: Component,
|
|
@@ -48107,7 +48107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
48107
48107
|
useExisting: forwardRef(() => NxtInput),
|
|
48108
48108
|
multi: true,
|
|
48109
48109
|
},
|
|
48110
|
-
], template: "<!-- SKS31JAN25 -->\n<div class=\"hover-wrapper input-wrapper\" (document:click)=\"closeDropdown($event)\">\n <div>\n <div *ngIf=\"label && type != 'checkbox' && showLabel\" [ngStyle]=\"{\n 'padding-top': type === 'label' ? '10px' : '',\n 'padding-bottom': type === 'label' ? '10px' : ''\n }\" \n [style.justify-content]=\"textAlign || 'start'\"\n [style.font-weight]=\"labelWeight || type === 'label' ? 'bold' : 'normal'\" [style.font-size]=\"(labelSize && labelSize !== '' )? labelSize : type === 'label' ? '16px' : '14px'\"\n style=\"display: flex; gap: 5px;\"> \n {{ label }}\n <div *ngIf=\"helpText\" [matTooltip]=\"helpText\" matTooltipClass=\"white-tooltip\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.00009 0.615356C3.90779 0.615356 0.615479 3.90766 0.615479 7.99997C0.615479 12.0923 3.90779 15.3846 8.00009 15.3846C12.0924 15.3846 15.3847 12.0923 15.3847 7.99997C15.3847 3.90766 12.0924 0.615356 8.00009 0.615356ZM8.00012 13.5385C4.92319 13.5385 2.46165 11.0769 2.46165 8C2.46165 4.92307 4.92319 2.46153 8.00012 2.46153C11.077 2.46153 13.5386 4.92307 13.5386 8C13.5386 11.0769 11.077 13.5385 8.00012 13.5385ZM8.00027 4.33846C8.52335 4.33846 8.92335 4.73846 8.92335 5.26153C8.92335 5.78461 8.52335 6.18461 8.00027 6.18461C7.47719 6.18461 7.07719 5.78461 7.07719 5.26153C7.07719 4.73846 7.47719 4.33846 8.00027 4.33846ZM9.53859 10.8C9.53859 10.9538 9.41552 11.0769 9.2309 11.0769H6.76936C6.61552 11.0769 6.46167 10.9846 6.46167 10.8V10.1846C6.46167 10.0308 6.58475 9.84614 6.76936 9.84614C6.92321 9.84614 7.07706 9.75383 7.07706 9.56921V8.33844C7.07706 8.1846 6.95398 7.99998 6.76936 7.99998C6.61552 7.99998 6.46167 7.90767 6.46167 7.72306V7.10767C6.46167 6.95383 6.58475 6.76921 6.76936 6.76921H8.61552C8.76936 6.76921 8.92321 6.92306 8.92321 7.10767V9.56921C8.92321 9.72306 9.04629 9.84614 9.2309 9.84614C9.38475 9.84614 9.53859 9.99998 9.53859 10.1846V10.8Z\" fill=\"#747474\"/>\n </svg>\n </div>\n <div *ngIf=\"label && type != 'checkbox' && required && showLabel && mode === 'edit'\" style=\"color: red;\">*</div>\n </div>\n <div *ngIf=\"type !== 'label' && type !== 'richtext' && type !== 'textarea'\" style=\"display: flex;\">\n <div class=\"input-container\"\n [ngStyle]=\"{ 'padding-left': mode === 'edit' ? '' : '0px' }\"\n [style.backgroundColor]=\"(type === 'otp' || mode !== 'edit') ? (inputBgColor || '#f5f5f5') : from === 'nxtTable' ? '' : inputBgColor\"\n [class.invalid]=\"control.invalid && control.touched\"\n [style.border-radius]=\"mode !== 'edit' && from === 'nxtTable' ? 'none': ''\"\n [style.padding]=\"(mode === 'edit' && from !== 'nxtTable') ? (type === 'checkbox' ? '10px 13px 10px 0px !important' : '' ) : type === 'checkbox' ? '10px 0px 9px 0px !important' : ''\"\n [style.margin]=\"(margin && margin !== '') ? margin : (showLabel && label) ? from === 'nxtTable' ? '0px !important' : '' : (from === 'nxtTable' || from === 'normalDropDown') ? '0px !important' : from === 'nxtForm' ? '21px 0px 0px 0px' : '0px !important'\"\n [style.border]=\"type === 'space' ? 'none' : mode === 'edit' ? (from === 'nxtTable' && !readOnly) ? '1px solid #d2d2d2' : inputBorder === 'none' ? ('1px solid ' + (inputBgColor || '#ffffff')) : ( (inputBorderSize || 1) + 'px solid ' + inputBorder) : 'none'\"\n style=\"position: relative; width: 100%;\"\n [ngClass]=\"{\n 'checkbox-padding': type === 'checkbox' || type === 'otp',\n 'pad-nxt-0': from === 'nxtTable' && mode !== 'edit',\n 'pad-nxt-1': from === 'nxtTable' && mode === 'edit'\n }\">\n <img *ngIf=\"inputIconLeftSrc && mode === 'edit'\" [src]=\"inputIconLeftSrc\" alt=\"icon\" class=\"icon left-icon\"\n [style.height]=\"svgHeight\" [style.width]=\"svgWidth\" />\n <div *ngIf=\"mode === 'edit' && type === 'list'\">\n <!-- Inline search icon SVG -->\n <svg [attr.width]=\"from === 'nxtTable' ? 12 : 18\" [attr.height]=\"from === 'nxtTable' ? 12 : 18\" fill=\"none\" stroke=\"#434555\" stroke-opacity=\"0.65\" stroke-width=\"1.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\">\n <circle cx=\"8.25\" cy=\"8.25\" r=\"5.25\" />\n <path d=\"M15 15L12.75 12.75\" stroke-linecap=\"round\" />\n </svg>\n </div>\n <!-- SKS28FEB25 mobile number input -->\n <div *ngIf=\"type === 'tel'\" class=\"phone-input-container\">\n <div class=\"country-selector\" style=\"padding-left: 10px;\"\n (click)=\"toggleCountryDropdown()\">\n <!-- <span class=\"flag\">{{ selectedCountry.flag }}</span> -->\n <span class=\"dial-code\" [style.font-weight]=\"inputWeight || '400'\" [style.font-size]=\"inputValueSize || '12px'\">{{ selectedCountry.dial_code }}</span>\n <svg class=\"arrow\" width=\"9\" height=\"6\" viewBox=\"0 0 9 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M0.684136 0.767477C0.922999 0.5378 1.30282 0.545248 1.5325 0.784111L4.5 3.93431L7.4675 0.784111C7.69718 0.545248 8.077 0.5378 8.31587 0.767477C8.55473 0.997153 8.56218 1.37698 8.3325 1.61584L4.9325 5.21584C4.81938 5.33349 4.66321 5.39998 4.5 5.39998C4.33679 5.39998 4.18062 5.33349 4.0675 5.21584L0.667501 1.61584C0.437825 1.37698 0.445272 0.997153 0.684136 0.767477Z\"\n fill=\"#626262\" />\n </svg>\n </div>\n <div *ngIf=\"showCountryDropdown\" class=\"country-dropdown\">\n <div class=\"search-box\">\n <input type=\"text\" [readOnly]=\"mode !== 'edit'\" placeholder=\"Search country...\" [value]=\"countrySearch\"\n (input)=\"filterCountries($event)\">\n </div>\n <div class=\"country-list\">\n <div *ngFor=\"let country of filteredCountries\" class=\"country-item\" (click)=\"selectCountry(country)\">\n <span class=\"flag\">{{ country.flag }}</span>\n <span class=\"name\">{{ country.name }}</span>\n <span class=\"dial-code\">{{ country.dial_code }}</span>\n </div>\n </div>\n </div>\n </div>\n <!-- SKS12SEP25 currency code -->\n <div *ngIf=\"mode === 'edit' && readOnly !== true && type === 'currency'\" [style.font-size]=\"inputValueSize || '12px'\" class=\"phone-input-container\">\n {{currentCurrency.symbol}}\n </div>\n @if((type === 'currency' ? mode === 'edit' && readOnly === false : type !== 'datetime' && type !== 'date' && type !== 'time' && type !== 'month' && type !== 'space')){\n <input *ngFor=\"let input of cachedInputList; let i = index\" #inputEl #inputRef [id]=\"inputId\"\n [type]=\"isPasswordVisible ? 'text' : type === 'otp' || type === 'dropdown' || type === 'number' ? 'text' : type\"\n [attr.placeholder]=\"type === 'otp' || mode !== 'edit' ? '' : (type === 'tel' ? removeDialCode(selectedCountry.placeholder) : placeholder)\"\n [formControl]=\"type === 'otp' ? $any(input) : control\"\n [style.backgroundColor]=\"(type === 'otp'|| mode !== 'edit') ? '#f5f5f5' : from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"type === 'otp' || mode !== 'edit' ? '' : inputTextColor\"\n [style.border]=\" (type === 'otp' || mode !== 'edit') ? '' : from === 'nxtTable' ? type === 'checkbox' ? '1px solid gray !important' : 'none' : type === 'checkbox' ? ( inputBorderSize || 1 + 'px solid ' + inputBorder) : inputBorder\"\n [style.height]=\"type === 'otp' ? '' : inputHeight\" [style.width]=\"type === 'otp' ? '100% !important' : type === 'checkbox' ? 'auto' : inputWidth || '100% !important'\"\n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : mode === 'edit' ? '10px 10px 10px 5px' : '10px 10px 10px 0px' \"\n [value]=\"type === 'tel' ? rawInputVal : value\"\n (input)=\"type === 'otp' ? handleInput() : onInputChange($event)\"\n [checked]=\"type === 'checkbox' ? value : ''\"\n [style.font-size]=\"type === 'otp' ? '' : inputValueSize || '12px'\" (focus)=\"type === 'otp' ? handleFocus($event) : null\"\n [style.text-align]=\"(type === 'currency' && mode === 'edit') ? 'start' : textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n (blur)=\"type === 'otp' ? onTouched() : blurEmit()\"\n (keypress)=\"type === 'otp' ? handleKeyPress($event, i) : type === 'number' ? allowNumberDecimal($event) : null\"\n (keydown)=\"type === 'otp' ? handleKeyDown($event, i) : from === 'normalDropDown' ? $event.preventDefault() : type === 'number' ? allowNumberDecimal($event) : null\"\n (paste)=\"type === 'otp' ? handlePaste($event, i) : null\" inputmode=\"type === 'otp' ? numeric : null\"\n [attr.autocomplete]=\"type === 'otp' && i === 0 ? 'one-time-code' : type === 'list' ? 'list' : 'off'\"\n [attr.aria-expanded]=\"type === 'list' ? showSuggestion : 'off'\"\n [attr.inputmode]=\"type === 'otp' ? 'numeric' : type === 'number' ? 'decimal' : null\" [attr.name]=\"type === 'otp' && i === 0 ? 'otp' : null\"\n (focusin)=\"focusinEmit($event)\" [attr.aria-owns]=\"type === 'list' ? ariaOwns : 'off'\"\n [attr.aria-haspopup]=\"type === 'list' ? ariaHasPopup : 'off'\" \n [readonly]=\"from === 'normalDropDown'\" \n [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize || '12px' : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || inputWeight || '400' : ''\n }\" (keydown.enter)=\"type === 'location' ? $event.preventDefault() : ''\"\n autocorrect=\"type === 'location' ? 'off' : ''\" autocapitalize=\"type === 'location' ? 'off' : ''\"\n spellcheck=\"type === 'location' ? 'off' : ''\"\n />\n }\n @else if(type === 'time' || type === 'month' || type === 'datetime' || type === 'date') {\n <div style=\"position: relative; width: 100%;\">\n <input [id]=\"inputId\"\n type=\"text\" \n [formControl]=\"control\"\n readonly\n [attr.placeholder]=\"mode !== 'edit' ? '' : placeholder || ''\"\n [ngClass]=\"'nxt-custom-input'\" \n [value]=\"value | NxtDate : type : languageCode : dateFormatName\"\n [style.backgroundColor]=\"mode !== 'edit' ? '#f5f5f5' : from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"mode !== 'edit' ? '' : inputTextColor\" [style.border]=\"mode !== 'edit' ? 'none' : from === 'nxtTable' ? 'none' : inputBorder\"\n [style.height]=\"inputHeight\"\n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : mode === 'edit' ? '10px 10px 10px 5px' : '10px 10px 10px 0px' \"\n [style.font-size]=\"inputValueSize || '12px'\" (blur)=\" blurEmit()\" (focusin)=\"focusinEmit($event)\"\n [style.text-align]=\"textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n (focus)=\"onHijriInputClick(); $event.stopPropagation()\"\n (click)=\"onHijriInputClick();\"\n [attr.autocomplete]=\"'off'\"\n [attr.readonly]=\"'true'\"\n [readonly]=\"'true'\" \n [disabled]=\"mode === 'edit' ? readOnly === true : true\"\n [class]=\"'nxt-' + (question.nxtTableId || question.id)\"\n [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize || '12px' : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || inputWeight || '400' : ''\n }\" style=\"\n width: 100% !important;\n padding: 10px;\n padding-left: 5px;\n border-radius: 5px;\n border: none !important;\n font-size: 14px;\" \n />\n <!-- SKS14AUG25 Hijri Datepicker Popup -->\n <div *ngIf=\"showHijriPicker\" class=\"hijri-popup\" [ngClass]=\"{'rtl-class': direction === 'rtl'}\" [class]=\"'nxt-' + (question.nxtTableId || question.id)\">\n <app-nxt-datepicker\n [type]=\"type\"\n [value]=\"value\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [languageCode]=\"languageCode\"\n (dateChange)=\"onInputChange($event);\"\n >\n </app-nxt-datepicker>\n </div>\n </div>\n }\n <div *ngIf=\"(type === 'currency' && (mode !== 'edit' || readOnly === true))\"\n [style.backgroundColor]=\"from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"inputTextColor\"\n [style.border]=\"from === 'nxtTable' ? 'none' : inputBorder\"\n [style.height]=\"inputHeight\" \n [style.width]=\"inputWidth || '100% !important'\"\n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : mode === 'edit' ? '10px 10px 10px 5px' : '10px 10px 10px 0px' \"\n [style.font-size]=\"inputValueSize || '12px'\"\n [style.text-align]=\"textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n >\n @if(question?.subText?.isAmountInWords){\n {{value | amountInWords }}\n } @else {\n {{value | currency : currentCurrency.code : currentCurrency.symbol }}\n }\n </div>\n <!-- SKS7AUG25 api call Dotted Loader -->\n <div *ngIf=\"mode === 'edit' && isLoading\" class=\"dotted-loader input-icons\" aria-label=\"Loading\" role=\"status\">\n <span *ngFor=\"let dot of [].constructor(6); let i = index\" class=\"dot\" [style.--i]=\"i\"></span>\n </div>\n <div *ngIf=\"mode === 'edit' && (type === 'datetime' || type === 'date' || type === 'month' || type === 'time')\" (click)=\"openDatePicker(type); $event.stopPropagation()\" class=\"input-icons\"\n style=\"cursor: pointer;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"from === 'nxtTable' ? 12 : 18\" [attr.height]=\"from === 'nxtTable' ? 12 : 18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M2.32031 7.05285H15.6883\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.3322 9.98254H12.3392\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00408 9.98254H9.01103\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.66815 9.98254H5.67509\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.3322 12.8976H12.3392\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00408 12.8976H9.01103\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.66815 12.8976H5.67509\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.0329 1.5V3.96809\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.97435 1.5V3.96809\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.1787 2.68457H5.82822C3.6257 2.68457 2.25 3.91152 2.25 6.16684V12.9541C2.25 15.2449 3.6257 16.5002 5.82822 16.5002H12.1718C14.3812 16.5002 15.75 15.2661 15.75 13.0108V6.16684C15.7569 3.91152 14.3882 2.68457 12.1787 2.68457Z\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div *ngIf=\"mode === 'edit' && !readOnly && type === 'location' \" class=\"input-icons\">\n <svg *ngIf=\"!isLoading\" (click)=\"openMap()\" (keydown.enter)=\"openMap()\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <rect x=\"0.5\" y=\"0.5\" [attr.width]=\"from === 'nxtTable' ? 12 : 15\" [attr.height]=\"from === 'nxtTable' ? 12 : 15\" stroke=\"white\"/>\n <path d=\"M7.99992 8.95321C9.14867 8.95321 10.0799 8.02197 10.0799 6.87321C10.0799 5.72446 9.14867 4.79321 7.99992 4.79321C6.85117 4.79321 5.91992 5.72446 5.91992 6.87321C5.91992 8.02197 6.85117 8.95321 7.99992 8.95321Z\" stroke=\"#B1ADAB\" stroke-width=\"1.5\"/>\n <path d=\"M2.41379 5.65992C3.72712 -0.113413 12.2805 -0.106746 13.5871 5.66659C14.3538 9.05325 12.2471 11.9199 10.4005 13.6933C9.06046 14.9866 6.94046 14.9866 5.59379 13.6933C3.75379 11.9199 1.64712 9.04659 2.41379 5.65992Z\" stroke=\"#B1ADAB\" stroke-width=\"1.5\"/>\n </svg> \n </div>\n <div *ngIf=\"mode === 'edit' && type === 'list'\" class=\"input-icons\">\n <svg *ngIf=\"!isLoading\" (click)=\"removeValue()\" (keydown.enter)=\"removeValue()\" style=\"cursor: pointer;\" [attr.width]=\"from === 'nxtTable' ? 12 : 16\" [attr.height]=\"from === 'nxtTable' ? 12 : 16\" viewBox=\"0 0 0.48 0.48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0.03 0.075a0.015 0.015 0 0 0 0 0.03zm0.42 0.03a0.015 0.015 0 0 0 0 -0.03zm-0.42 0h0.42v-0.03h-0.42z\" fill=\"#71717A\"/><path d=\"M0.195 0.03V0.015zM0.165 0.06H0.15zM0.15 0.09a0.015 0.015 0 0 0 0.03 0zm0.15 0a0.015 0.015 0 0 0 0.03 0zm0.015 -0.03h0.015zM0.285 0.015h-0.09v0.03h0.09zm-0.09 0a0.045 0.045 0 0 0 -0.032 0.013l0.021 0.021a0.015 0.015 0 0 1 0.011 -0.004zm-0.032 0.013A0.045 0.045 0 0 0 0.15 0.06H0.18a0.015 0.015 0 0 1 0.004 -0.011zM0.15 0.06v0.03H0.18V0.06zm0.18 0.03V0.06H0.3v0.03zm0 -0.03a0.045 0.045 0 0 0 -0.013 -0.032l-0.021 0.021c0.003 0.003 0.004 0.007 0.004 0.011zm-0.013 -0.032A0.045 0.045 0 0 0 0.285 0.015v0.03a0.015 0.015 0 0 1 0.011 0.004z\" fill=\"#71717A\"/><path d=\"M0.18 0.345a0.015 0.015 0 0 0 0.03 0zm0.03 -0.15a0.015 0.015 0 0 0 -0.03 0zm0 0.15v-0.15H0.18v0.15z\" fill=\"#71717A\"/><path d=\"M0.27 0.345a0.015 0.015 0 0 0 0.03 0zm0.03 -0.15a0.015 0.015 0 0 0 -0.03 0zm0 0.15v-0.15h-0.03v0.15z\" fill=\"#71717A\"/><path d=\"m0.377 0.422 -0.015 -0.001zM0.347 0.45v-0.015zm-0.215 0v-0.015zm-0.03 -0.028 0.015 -0.001zM0.09 0.089a0.015 0.015 0 0 0 -0.03 0.002zm0.33 0.002a0.015 0.015 0 1 0 -0.03 -0.002zm-0.058 0.33a0.015 0.015 0 0 1 -0.005 0.01l0.02 0.022a0.045 0.045 0 0 0 0.014 -0.029zm-0.005 0.01a0.015 0.015 0 0 1 -0.01 0.004v0.03a0.045 0.045 0 0 0 0.03 -0.012zm-0.01 0.004H0.133v0.03H0.347zm-0.215 0a0.015 0.015 0 0 1 -0.01 -0.004l-0.02 0.022c0.008 0.008 0.019 0.012 0.03 0.012zm-0.01 -0.004a0.015 0.015 0 0 1 -0.005 -0.01l-0.03 0.002a0.045 0.045 0 0 0 0.014 0.029zm-0.005 -0.01L0.09 0.089l-0.03 0.002 0.028 0.332zm0.272 -0.332 -0.028 0.332 0.03 0.002 0.028 -0.332z\" fill=\"#71717A\"/></svg> \n </div>\n <label class=\"nxt-checkboxLab\" *ngIf=\"label && type === 'checkbox' && showLabel\" [style.font-weight]=\"labelWeight\"\n [style.font-size]=\"labelSize\" [style.color]=\"inputTextColor || labelColor || '#212529'\"\n [style.justify-content]=\"textAlign || 'start'\"\n style=\"margin-bottom: 0; padding-right: 10px; width: 100% !important;\"> {{ label }}\n <div *ngIf=\"label && type === 'checkbox' && required && showLabel\" style=\"color: red;\">*</div>\n </label> \n <!-- Always Show Dropdown Icon -->\n <div *ngIf=\"mode === 'edit' && type === 'dropdown'\" class=\"input-icons\">\n <svg (mousedown)=\"toggle($event); $event.preventDefault()\" xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"from === 'nxtTable' ? 12 : 16\" [attr.height]=\"from === 'nxtTable' ? 12 : 16\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M4.5 11H7.5C10 11 11 10 11 7.5V4.5C11 2 10 1 7.5 1H4.5C2 1 1 2 1 4.5V7.5C1 10 2 11 4.5 11Z\" stroke=\"#B0ADAB\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M4.23499 5.32L6 7.08L7.765 5.32\" stroke=\"#B0ADAB\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n\n <img *ngIf=\"mode === 'edit' && inputIconRightSrc\" [src]=\"inputIconRightSrc\" class=\"icon right-icon\"\n [style.height]=\"svgHeight\" [style.width]=\"svgWidth\">\n <img *ngIf=\"mode === 'edit' && type === 'password'\" class=\"toggle-icon\" (click)=\"togglePasswordVisibility()\"\n [src]=\"!isPasswordVisible ? '/assets/images/icons/general/Hide-Password.svg' : '/assets/images/icons/general/Show-Password.svg'\" />\n <div *ngIf=\"mode !== 'edit' && !readOnly && from !== 'nxtTable' && !onlyView && type !== 'space'\" class=\"input-icons\">\n <svg class=\"edit-icon\" \n (click)=\"viewEditClick(question)\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M1.99987 9.0017L4.39602 11.3979C4.50371 11.5055 4.66525 11.5055 4.77294 11.3979L10.7499 5.39401C10.8576 5.28631 10.8576 5.12477 10.7499 5.01708L8.38064 2.64785C8.27294 2.54016 8.11141 2.54016 8.00371 2.64785L1.99987 8.6517C1.89217 8.75939 1.89217 8.92093 1.99987 9.0017ZM9.1614 1.54401C9.05371 1.6517 9.05371 1.81324 9.1614 1.92093L11.5306 4.29016C11.6383 4.39785 11.7999 4.39785 11.9076 4.29016L12.5806 3.61708C13.0114 3.21324 13.0114 2.56708 12.5806 2.13631L11.3153 0.870928C10.8845 0.440159 10.2114 0.440159 9.78063 0.870928L9.1614 1.54401ZM0.00755862 12.9863C-0.0462875 13.2555 0.19602 13.4979 0.465251 13.444L3.39987 12.744C3.50756 12.7171 3.58833 12.6632 3.64217 12.6094L3.69602 12.5555C3.74987 12.5017 3.77679 12.3132 3.6691 12.2055L1.24602 9.78247C1.13833 9.67478 0.949866 9.7017 0.89602 9.75554L0.842174 9.80939C0.761405 9.89016 0.734482 9.97093 0.707559 10.0517L0.00755862 12.9863Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n <!-- SKS14JUN25 Show save and cancel icons only when the input value is edited -->\n <div *ngIf=\"(apiMeta?.singleFieldDisable === undefined || !apiMeta?.singleFieldDisable) && viewEdit ? (!apiMeta?.singleFieldDisable && type !== 'space') : (viewEdit && type !== 'space')\" class=\"input-icons\">\n <svg (click)=\"saveChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.9502 0.5C8.96006 0.500106 11.4004 2.94031 11.4004 5.9502C11.4003 8.95999 8.95999 11.4003 5.9502 11.4004C2.94031 11.4004 0.500106 8.96006 0.5 5.9502C0.5 2.94024 2.94024 0.5 5.9502 0.5Z\"\n stroke=\"#B0ADAB\" />\n <path\n d=\"M8.88111 3.84583C8.83269 3.7972 8.77513 3.7586 8.71176 3.73227C8.64838 3.70594 8.58043 3.69238 8.5118 3.69238C8.44317 3.69238 8.37521 3.70594 8.31184 3.73227C8.24846 3.7586 8.19091 3.7972 8.14249 3.84583L4.8269 7.16347L3.35253 5.6891C3.30403 5.6406 3.24646 5.60213 3.18309 5.57588C3.11972 5.54964 3.05181 5.53613 2.98322 5.53613C2.91463 5.53613 2.84672 5.54964 2.78335 5.57588C2.71999 5.60213 2.66241 5.6406 2.61391 5.6891C2.56541 5.7376 2.52694 5.79518 2.50069 5.85854C2.47445 5.92191 2.46094 5.98982 2.46094 6.05841C2.46094 6.127 2.47445 6.19491 2.50069 6.25828C2.52694 6.32165 2.56541 6.37922 2.61391 6.42772L4.45677 8.27058C4.50519 8.31922 4.56274 8.35781 4.62612 8.38414C4.6895 8.41047 4.75745 8.42403 4.82608 8.42403C4.89471 8.42403 4.96266 8.41047 5.02604 8.38414C5.08942 8.35781 5.14697 8.31922 5.19539 8.27058L8.88111 4.58445C8.92974 4.53603 8.96834 4.47848 8.99467 4.4151C9.021 4.35173 9.03456 4.28377 9.03456 4.21514C9.03456 4.14651 9.021 4.07856 8.99467 4.01518C8.96834 3.9518 8.92974 3.89425 8.88111 3.84583Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n <div *ngIf=\"viewEdit && type !== 'space'\" class=\"input-icons\">\n <svg (click)=\"discardChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.05555 4.00883L5.94 5.12438L4.82445 4.00883C4.57861 3.76299 4.18191 3.76299 3.93607 4.00883C3.69023 4.25467 3.69023 4.65137 3.93607 4.89721L5.05162 6.01276L3.93607 7.12831C3.69023 7.37415 3.69023 7.77085 3.93607 8.01669C4.18191 8.26253 4.57861 8.26253 4.82445 8.01669L5.94 6.90114L7.05555 8.01669C7.30139 8.26253 7.69809 8.26253 7.94393 8.01669C8.18977 7.77085 8.18977 7.37415 7.94393 7.12831L6.82838 6.01276L7.94393 4.89721C8.18977 4.65137 8.18977 4.25467 7.94393 4.00883C7.69809 3.77285 7.30021 3.77285 7.05555 4.00883ZM5.94 0.0820312C2.70017 0.0820312 0.0808594 2.70134 0.0808594 5.94118C0.0808594 9.18101 2.70017 11.8003 5.94 11.8003C9.17983 11.8003 11.7991 9.18101 11.7991 5.94118C11.7991 2.70134 9.17983 0.0820312 5.94 0.0820312ZM5.94 10.6367C3.35426 10.6367 1.24422 8.52667 1.24422 5.94118C1.24422 3.35553 3.35426 1.24549 5.94 1.24549C8.52558 1.24549 10.6356 3.35553 10.6356 5.94118C10.6356 8.52667 8.52558 10.6367 5.94 10.6367Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n </div>\n </div>\n <div *ngIf=\"type !== 'label' && type !== 'checkbox' && (type === 'richtext' || type === 'textarea')\" style=\"display: flex;\">\n <div class=\"input-container\"\n [ngStyle]=\"{ 'padding-left': mode === 'edit' ? '' : '0px' }\"\n [style.margin]=\"(margin && margin !== '') ? margin : showLabel && label ? '' : from === 'nxtTable' || from === 'normalDropDown' ? '' : from === 'nxtForm' ? '21px 0px 0px 0px' : '0px !important'\"\n [style.border-radius]=\"mode !== 'edit' && from === 'nxtTable' ? 'none': ''\"\n [style.backgroundColor]=\"mode === 'edit' ? from === 'nxtTable' ? '' : inputBgColor : (inputBgColor || '#f5f5f5')\"\n [class.invalid]=\"control.invalid && control.touched\"\n [style.border]=\"mode === 'edit' ? from === 'nxtTable' ? '1px solid #d2d2d2' : inputBorder === 'none' ? ('1px solid ' + inputBgColor) : (inputBorderSize || 1 + 'px solid ' + inputBorder) : 'none'\"\n [ngClass]=\"{\n 'pad-nxt-0': from === 'nxtTable' && mode !== 'edit',\n 'pad-nxt-1': from === 'nxtTable' && mode === 'edit',\n 'pad-rich-0': mode === 'edit' && type === 'richtext'\n }\">\n <!-- SKS14JUN25 Dynamically load Quill editor toolbar -->\n <quill-editor *ngIf=\"mode === 'edit' && type === 'richtext'\" [(ngModel)]=\"value\" (ngModelChange)=\"onInputChange($event)\" [placeholder]=\"placeholder || ''\"\n [readOnly]=\"mode !== 'edit' || readOnly\"\n (focusout)=\"onEditorFocusOut()\" [class.error]=\"control.invalid && (control.touched || control.dirty)\"\n [modules]=\"getQuillModules(question.id)\"\n [style.padding]=\"'0px'\"\n style=\"width: 100%;\n border-radius: 5px;\n border: none;\n font-size: 16px;\">\n </quill-editor>\n <!-- View mode -->\n <div *ngIf=\"mode !== 'edit' && type === 'richtext'\" class=\"quill-view-content ql-snow\"\n style=\"width: 98.5%;\n border-radius: 5px;\n border: none;\n padding: unset;\n font-size: 16px;\n min-height: 38px;\">\n <div class=\"ql-editor\" [innerHTML]=\"value\"\n [style.padding]=\"(padding && padding !== '') ? padding : (from === 'nxtTable' ? '0px' : (mode === 'view' ? '1px 10px 0px 0px' : '1px 10px 0px 5px' ))\"\n [style.text-align]=\"direction === 'rtl' ? 'right' : '' \"\n [attr.dir]='direction' style=\"font-size: 12px;\"\n ></div>\n </div>\n <textarea *ngIf=\"type === 'textarea'\" [id]=\"inputId\" [rows]=\"from === 'nxtTable' ? 1 : rows\"\n [attr.placeholder]=\"mode !== 'edit' ? '' : placeholder || ''\" [ngClass]=\"'custom-input'\"\n [formControl]=\"control\"\n [style.backgroundColor]=\"mode !== 'edit' ? '#f5f5f5' : from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"mode !== 'edit' ? '' : inputTextColor\" [style.border]=\"mode !== 'edit' ? 'none' : from === 'nxtTable' ? '1px solid #d2d2d2' : inputBorder\"\n [style.height]=\"inputHeight\" [value]=\"value\" (input)=\" onInputChange($event)\"\n [style.font-size]=\"inputValueSize || '12px'\" (blur)=\" blurEmit()\" (focusin)=\"focusinEmit($event)\"\n [style.text-align]=\"textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n [readOnly]=\"mode !== 'edit' || readOnly\" [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize || '12px' : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || inputWeight || '400' : ''\n }\" \n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : (mode === 'view' ? '1px 10px 0px 0px' : '1px 10px 0px 5px' )\"\n style=\"\n width: 100%;\n border-radius: 5px;\n border: none !important;\n font-size: 14px;\"\n >\n </textarea>\n <svg *ngIf=\"mode !== 'edit' && !viewEdit && from !== 'nxtTable' && (type === 'richtext' || type === 'textarea') && !readOnly && !onlyView \"\n class=\"edit-icon\" (click)=\"viewEditClick(question)\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M1.99987 9.0017L4.39602 11.3979C4.50371 11.5055 4.66525 11.5055 4.77294 11.3979L10.7499 5.39401C10.8576 5.28631 10.8576 5.12477 10.7499 5.01708L8.38064 2.64785C8.27294 2.54016 8.11141 2.54016 8.00371 2.64785L1.99987 8.6517C1.89217 8.75939 1.89217 8.92093 1.99987 9.0017ZM9.1614 1.54401C9.05371 1.6517 9.05371 1.81324 9.1614 1.92093L11.5306 4.29016C11.6383 4.39785 11.7999 4.39785 11.9076 4.29016L12.5806 3.61708C13.0114 3.21324 13.0114 2.56708 12.5806 2.13631L11.3153 0.870928C10.8845 0.440159 10.2114 0.440159 9.78063 0.870928L9.1614 1.54401ZM0.00755862 12.9863C-0.0462875 13.2555 0.19602 13.4979 0.465251 13.444L3.39987 12.744C3.50756 12.7171 3.58833 12.6632 3.64217 12.6094L3.69602 12.5555C3.74987 12.5017 3.77679 12.3132 3.6691 12.2055L1.24602 9.78247C1.13833 9.67478 0.949866 9.7017 0.89602 9.75554L0.842174 9.80939C0.761405 9.89016 0.734482 9.97093 0.707559 10.0517L0.00755862 12.9863Z\"\n fill=\"#B0ADAB\" />\n </svg>\n <!-- SKS14JUN25 Show save and cancel icons only when the input value is edited -->\n <div *ngIf=\"(apiMeta?.singleFieldDisable === undefined || !apiMeta?.singleFieldDisable) && (viewEdit ? !apiMeta?.singleFieldDisable : viewEdit) && type === 'textarea'\" class=\"input-icons\">\n <svg (click)=\"saveChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.9502 0.5C8.96006 0.500106 11.4004 2.94031 11.4004 5.9502C11.4003 8.95999 8.95999 11.4003 5.9502 11.4004C2.94031 11.4004 0.500106 8.96006 0.5 5.9502C0.5 2.94024 2.94024 0.5 5.9502 0.5Z\"\n stroke=\"#B0ADAB\" />\n <path\n d=\"M8.88111 3.84583C8.83269 3.7972 8.77513 3.7586 8.71176 3.73227C8.64838 3.70594 8.58043 3.69238 8.5118 3.69238C8.44317 3.69238 8.37521 3.70594 8.31184 3.73227C8.24846 3.7586 8.19091 3.7972 8.14249 3.84583L4.8269 7.16347L3.35253 5.6891C3.30403 5.6406 3.24646 5.60213 3.18309 5.57588C3.11972 5.54964 3.05181 5.53613 2.98322 5.53613C2.91463 5.53613 2.84672 5.54964 2.78335 5.57588C2.71999 5.60213 2.66241 5.6406 2.61391 5.6891C2.56541 5.7376 2.52694 5.79518 2.50069 5.85854C2.47445 5.92191 2.46094 5.98982 2.46094 6.05841C2.46094 6.127 2.47445 6.19491 2.50069 6.25828C2.52694 6.32165 2.56541 6.37922 2.61391 6.42772L4.45677 8.27058C4.50519 8.31922 4.56274 8.35781 4.62612 8.38414C4.6895 8.41047 4.75745 8.42403 4.82608 8.42403C4.89471 8.42403 4.96266 8.41047 5.02604 8.38414C5.08942 8.35781 5.14697 8.31922 5.19539 8.27058L8.88111 4.58445C8.92974 4.53603 8.96834 4.47848 8.99467 4.4151C9.021 4.35173 9.03456 4.28377 9.03456 4.21514C9.03456 4.14651 9.021 4.07856 8.99467 4.01518C8.96834 3.9518 8.92974 3.89425 8.88111 3.84583Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n <div *ngIf=\"viewEdit && type === 'textarea'\" class=\"input-icons\">\n <svg (click)=\"discardChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.05555 4.00883L5.94 5.12438L4.82445 4.00883C4.57861 3.76299 4.18191 3.76299 3.93607 4.00883C3.69023 4.25467 3.69023 4.65137 3.93607 4.89721L5.05162 6.01276L3.93607 7.12831C3.69023 7.37415 3.69023 7.77085 3.93607 8.01669C4.18191 8.26253 4.57861 8.26253 4.82445 8.01669L5.94 6.90114L7.05555 8.01669C7.30139 8.26253 7.69809 8.26253 7.94393 8.01669C8.18977 7.77085 8.18977 7.37415 7.94393 7.12831L6.82838 6.01276L7.94393 4.89721C8.18977 4.65137 8.18977 4.25467 7.94393 4.00883C7.69809 3.77285 7.30021 3.77285 7.05555 4.00883ZM5.94 0.0820312C2.70017 0.0820312 0.0808594 2.70134 0.0808594 5.94118C0.0808594 9.18101 2.70017 11.8003 5.94 11.8003C9.17983 11.8003 11.7991 9.18101 11.7991 5.94118C11.7991 2.70134 9.17983 0.0820312 5.94 0.0820312ZM5.94 10.6367C3.35426 10.6367 1.24422 8.52667 1.24422 5.94118C1.24422 3.35553 3.35426 1.24549 5.94 1.24549C8.52558 1.24549 10.6356 3.35553 10.6356 5.94118C10.6356 8.52667 8.52558 10.6367 5.94 10.6367Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n </div>\n </div>\n <!-- SKS23APR25 Use control.invalid to show error on submit click -->\n <div *ngIf=\"type != 'checkbox' && type !== 'label' && control.invalid && (control.touched || control.dirty)\" style=\"height: 20px;\">\n <div class=\"nxt-error-message\">\n {{ getErrorMessage() }}\n </div>\n </div>\n </div>\n</div>\n<!-- SKS18SEP25 google map popup -->\n<div class=\"map-overlay\" *ngIf=\"showModal\">\n <div class=\"map-modal\">\n <div class=\"map-modal-content\">\n <div class=\"map-modal-header\">\n <!-- HA 19DEC23 For translation -->\n <h4>{{ 'pickYourLocation' | nxtCustomTranslate : 'pickYourLocation' }}</h4>\n <button class=\"close-button\" (click)=\"closeModal()\">X</button>\n </div>\n <google-map [zoom]=\"10\" [center]=\"markerPosition\" (mapClick)=\"onMapClick($event)\">\n <map-marker\n [position]=\"markerPosition\"\n [options]=\"markerOptions\"\n (mapDragend)=\"onMarkerDragEnd($event)\">\n </map-marker>\n </google-map>\n </div>\n </div>\n</div>", styles: ["label{font-size:14px;margin-bottom:10px;color:color-mix(in srgb,black,rgb(0,0,0) 80%)}.toggle-icon{width:20px;height:20px;cursor:pointer;fill:#666}.nxt-error-message{color:red;font-size:10px}input[type=text].custom-input,input[type=password].custom-input,input[type=number].custom-input,input[type=email].custom-input,input[type=tel].custom-input,input[type=list].custom-input,input[type=dropdown].custom-input,input[type=location].custom-input{width:100%;padding:10px 10px 10px 5px;border-radius:5px;border:none;font-size:14px}input.nxt-custom-input{width:100%!important;padding:10px 10px 10px 5px;border-radius:5px;border:none;font-size:14px}.custom-input:-webkit-autofill,.custom-input:-webkit-autofill:hover,.custom-input:-webkit-autofill:focus,.custom-input:-webkit-autofill:active,.nxt-custom-input:-webkit-autofill,.nxt-custom-input:-webkit-autofill:hover,.nxt-custom-input:-webkit-autofill:focus,.nxt-custom-input:-webkit-autofill:active{transition:background-color 5000s ease-in-out 0s!important;-webkit-text-fill-color:inherit!important}.phone-input-container{display:flex;align-items:center;position:relative}.country-selector{display:flex;align-items:center;cursor:pointer;padding-right:12px;border-right:#ccc;margin-right:12px}.flag{margin-right:8px;font-size:20px}.dial-code{margin-right:8px;font-weight:500}.country-dropdown{position:absolute;top:100%;left:0;width:300px;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 4px #0000001a;z-index:1000;margin-top:4px}.search-box{padding:8px;border-bottom:1px solid #ccc}.search-box input{width:100%;padding:8px;border:1px solid #ccc;border-radius:4px}.country-list{max-height:200px;overflow-y:auto}.country-item{display:flex;align-items:center;padding:8px 12px;cursor:pointer}.country-item:hover{background-color:color-mix(in srgb,#fff,rgba(0,0,0,0) 30%)}.country-item .name{flex:1;margin:0 12px}.fcOtp{width:40px;height:40px;text-align:center;font-size:18px;border:1px solid #ccc;border-radius:5px;margin:5px;outline:none;transition:border-color .2s ease-in-out}textarea:focus-visible,textarea:focus,input:focus{outline:none;border-color:transparent;box-shadow:none}.input-container{display:flex;align-items:center;width:100%;border-radius:5px;border:1px solid #ccc;padding-left:5px;padding-right:5px}.pad-nxt-0{padding-left:0!important;padding-right:0!important}.pad-nxt-1{padding-left:1px!important;padding-right:1px!important}.pad-rich-0{padding-left:0!important;padding-right:0!important}.checkbox-padding{margin-top:20px;width:100%!important;border:none!important}.icon-container{right:15px;padding-right:5px;pointer-events:auto;width:22px;height:22px;display:flex;align-items:center;justify-content:center}.input-container.invalid{border:1px solid #DC3545!important;border-radius:5px}.view-mode{font-size:14px;color:#333}@media print{.view-mode{font-size:12pt;color:#000}}input::placeholder{font-family:var(--placeholder-font);color:var(--placeholder-color);font-size:var(--placeholder-size);font-weight:var(--placeholder-weight)}.dotted-loader{position:relative;width:28px;height:28px}.dotted-loader .dot{--i: 0;position:absolute;top:50%;left:50%;width:3px;height:3px;margin:-2px 0 0 -2px;border-radius:50%;background-color:#696969;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg));animation:spinDot 1s linear infinite;animation-delay:calc(var(--i) * .1s)}@keyframes spinDot{0%{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}50%{opacity:1;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(1.3)}to{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}}input:disabled:not([type=checkbox]){cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important;border:none!important}input[type=checkbox]:disabled{border:1px solid #5353532b!important}input[type=checkbox]:focus{border:1px solid #5353532b!important}textarea:disabled{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}.quill-view-content{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}:is() .ql-editor img{cursor:pointer}:is() .image-resizer{display:block!important;visibility:visible!important}:is() .ql-editor .image-resizer{border:1px dashed #000;position:absolute}:is() .ql-editor .image-resizer .handle{background-color:#000;border:1px solid #fff;border-radius:50%;height:12px;width:12px;position:absolute}quill-editor{width:100%}.quill-view-content{background-color:#f0f0f0;border-radius:5px;border:none;padding:10px;overflow-wrap:break-word}.quill-view-content .ql-editor{white-space:normal;overflow:visible;min-height:auto}[dir=rtl] .quill-view-content *,.rtl .quill-view-content *{text-align:right!important;direction:rtl!important}.edit-icon{display:none;cursor:pointer}.hover-wrapper:hover .edit-icon{display:block}input:disabled,textarea:disabled,.quill-view-content{color:#292929!important}input:disabled.from-nxt-table,textarea:disabled.from-nxt-table,.quill-view-content.from-nxt-table{color:#2c3137!important}.owl-dt-container-disabled,.owl-dt-trigger-disabled{opacity:unset!important}.input-wrapper{position:relative}.input-container{pointer-events:auto!important;position:relative}.custom-input,.nxt-custom-input{pointer-events:auto!important}.hijri-popup{position:absolute;top:100%;left:0;z-index:9999;background:#fff;box-shadow:0 0 5px #0000001a;border-radius:5px}.hijri-popup.rtl-class{left:auto!important;right:0!important}.input-icons{display:flex;align-items:center}::ng-deep .ql-container.ql-snow{border:none!important}::ng-deep .ql-toolbar.ql-snow{border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:1px solid #ccc!important}google-map .map-container{width:auto!important}.map-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.map-modal{width:600px;background-color:#fff;border-radius:5px;box-shadow:0 2px 4px #0003}.map-modal-header{display:flex;align-items:center;justify-content:space-between;padding:0 0 10px;background-color:#fff;border-bottom:2px solid #e5e5e5}.map-modal-header h3{margin:0}.map-modal-content{padding:20px}.close-button{border:none;cursor:pointer;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}\n"] }]
|
|
48110
|
+
], template: "<!-- SKS31JAN25 -->\n<div class=\"hover-wrapper input-wrapper\" (document:click)=\"closeDropdown($event)\">\n <div>\n <div *ngIf=\"label && type != 'checkbox' && showLabel\" [ngStyle]=\"{\n 'padding-top': type === 'label' ? '10px' : '',\n 'padding-bottom': type === 'label' ? '10px' : ''\n }\" \n [style.justify-content]=\"textAlign || 'start'\"\n [style.font-weight]=\"labelWeight || type === 'label' ? 'bold' : 'normal'\" [style.font-size]=\"(labelSize && labelSize !== '' )? labelSize : type === 'label' ? '16px' : '14px'\"\n style=\"display: flex; gap: 5px;\"> \n {{ label }}\n <div *ngIf=\"helpText\" [matTooltip]=\"helpText\" matTooltipClass=\"white-tooltip\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.00009 0.615356C3.90779 0.615356 0.615479 3.90766 0.615479 7.99997C0.615479 12.0923 3.90779 15.3846 8.00009 15.3846C12.0924 15.3846 15.3847 12.0923 15.3847 7.99997C15.3847 3.90766 12.0924 0.615356 8.00009 0.615356ZM8.00012 13.5385C4.92319 13.5385 2.46165 11.0769 2.46165 8C2.46165 4.92307 4.92319 2.46153 8.00012 2.46153C11.077 2.46153 13.5386 4.92307 13.5386 8C13.5386 11.0769 11.077 13.5385 8.00012 13.5385ZM8.00027 4.33846C8.52335 4.33846 8.92335 4.73846 8.92335 5.26153C8.92335 5.78461 8.52335 6.18461 8.00027 6.18461C7.47719 6.18461 7.07719 5.78461 7.07719 5.26153C7.07719 4.73846 7.47719 4.33846 8.00027 4.33846ZM9.53859 10.8C9.53859 10.9538 9.41552 11.0769 9.2309 11.0769H6.76936C6.61552 11.0769 6.46167 10.9846 6.46167 10.8V10.1846C6.46167 10.0308 6.58475 9.84614 6.76936 9.84614C6.92321 9.84614 7.07706 9.75383 7.07706 9.56921V8.33844C7.07706 8.1846 6.95398 7.99998 6.76936 7.99998C6.61552 7.99998 6.46167 7.90767 6.46167 7.72306V7.10767C6.46167 6.95383 6.58475 6.76921 6.76936 6.76921H8.61552C8.76936 6.76921 8.92321 6.92306 8.92321 7.10767V9.56921C8.92321 9.72306 9.04629 9.84614 9.2309 9.84614C9.38475 9.84614 9.53859 9.99998 9.53859 10.1846V10.8Z\" fill=\"#747474\"/>\n </svg>\n </div>\n <div *ngIf=\"label && type != 'checkbox' && required && showLabel && mode === 'edit'\" style=\"color: red;\">*</div>\n </div>\n <div *ngIf=\"type !== 'label' && type !== 'richtext' && type !== 'textarea'\" style=\"display: flex;\">\n <div class=\"input-container\"\n [ngStyle]=\"{ 'padding-left': mode === 'edit' ? '' : '0px' }\"\n [style.backgroundColor]=\"(type === 'otp' || mode !== 'edit') ? (inputBgColor || '#f5f5f5') : from === 'nxtTable' ? '' : inputBgColor\"\n [class.invalid]=\"control.invalid && control.touched\"\n [style.border-radius]=\"mode !== 'edit' && from === 'nxtTable' ? 'none': ''\"\n [style.padding]=\"(mode === 'edit' && from !== 'nxtTable') ? (type === 'checkbox' ? '10px 13px 10px 0px !important' : '' ) : type === 'checkbox' ? '10px 0px 9px 0px !important' : ''\"\n [style.margin]=\"(margin && margin !== '') ? margin : (showLabel && label) ? from === 'nxtTable' ? '0px !important' : '' : (from === 'nxtTable' || from === 'normalDropDown') ? '0px !important' : from === 'nxtForm' ? '21px 0px 0px 0px' : '0px !important'\"\n [style.border]=\"type === 'space' ? 'none' : mode === 'edit' ? (from === 'nxtTable' && !readOnly) ? '1px solid #d2d2d2' : inputBorder === 'none' ? ('1px solid ' + (inputBgColor || '#ffffff')) : ( (inputBorderSize || 1) + 'px solid ' + inputBorder) : 'none'\"\n style=\"position: relative; width: 100%;\"\n [ngClass]=\"{\n 'checkbox-padding': type === 'checkbox' || type === 'otp',\n 'pad-nxt-0': from === 'nxtTable' && mode !== 'edit',\n 'pad-nxt-1': from === 'nxtTable' && mode === 'edit'\n }\">\n <img *ngIf=\"inputIconLeftSrc && mode === 'edit'\" [src]=\"inputIconLeftSrc\" alt=\"icon\" class=\"icon left-icon\"\n [style.height]=\"svgHeight\" [style.width]=\"svgWidth\" />\n <div *ngIf=\"mode === 'edit' && type === 'list'\">\n <!-- Inline search icon SVG -->\n <svg [attr.width]=\"from === 'nxtTable' ? 12 : 18\" [attr.height]=\"from === 'nxtTable' ? 12 : 18\" fill=\"none\" stroke=\"#434555\" stroke-opacity=\"0.65\" stroke-width=\"1.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\">\n <circle cx=\"8.25\" cy=\"8.25\" r=\"5.25\" />\n <path d=\"M15 15L12.75 12.75\" stroke-linecap=\"round\" />\n </svg>\n </div>\n <!-- SKS28FEB25 mobile number input -->\n <div *ngIf=\"type === 'tel'\" class=\"phone-input-container\">\n <div class=\"country-selector\" style=\"padding-left: 10px;\"\n (click)=\"toggleCountryDropdown()\">\n <!-- <span class=\"flag\">{{ selectedCountry.flag }}</span> -->\n <span class=\"dial-code\" [style.font-weight]=\"inputWeight || '400'\" [style.font-size]=\"inputValueSize || '12px'\">{{ selectedCountry.dial_code }}</span>\n <svg class=\"arrow\" width=\"9\" height=\"6\" viewBox=\"0 0 9 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M0.684136 0.767477C0.922999 0.5378 1.30282 0.545248 1.5325 0.784111L4.5 3.93431L7.4675 0.784111C7.69718 0.545248 8.077 0.5378 8.31587 0.767477C8.55473 0.997153 8.56218 1.37698 8.3325 1.61584L4.9325 5.21584C4.81938 5.33349 4.66321 5.39998 4.5 5.39998C4.33679 5.39998 4.18062 5.33349 4.0675 5.21584L0.667501 1.61584C0.437825 1.37698 0.445272 0.997153 0.684136 0.767477Z\"\n fill=\"#626262\" />\n </svg>\n </div>\n <div *ngIf=\"showCountryDropdown\" class=\"country-dropdown\">\n <div class=\"search-box\">\n <input type=\"text\" [readOnly]=\"mode !== 'edit'\" placeholder=\"Search country...\" [value]=\"countrySearch\"\n (input)=\"filterCountries($event)\">\n </div>\n <div class=\"country-list\">\n <div *ngFor=\"let country of filteredCountries\" class=\"country-item\" (click)=\"selectCountry(country)\">\n <span class=\"flag\">{{ country.flag }}</span>\n <span class=\"name\">{{ country.name }}</span>\n <span class=\"dial-code\">{{ country.dial_code }}</span>\n </div>\n </div>\n </div>\n </div>\n <!-- SKS12SEP25 currency code -->\n <div *ngIf=\"mode === 'edit' && readOnly !== true && type === 'currency'\" [style.font-size]=\"inputValueSize || '12px'\" class=\"phone-input-container\">\n {{currentCurrency.symbol}}\n </div>\n @if((type === 'currency' ? mode === 'edit' && readOnly === false : type !== 'datetime' && type !== 'date' && type !== 'time' && type !== 'month' && type !== 'space')){\n <input *ngFor=\"let input of cachedInputList; let i = index\" #inputEl #inputRef [id]=\"inputId\"\n [type]=\"isPasswordVisible ? 'text' : type === 'otp' || type === 'dropdown' || type === 'number' ? 'text' : type\"\n [attr.placeholder]=\"type === 'otp' || mode !== 'edit' ? '' : (type === 'tel' ? removeDialCode(selectedCountry.placeholder) : placeholder)\"\n [formControl]=\"type === 'otp' ? $any(input) : control\"\n [style.backgroundColor]=\"(type === 'otp'|| mode !== 'edit') ? '#f5f5f5' : from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"type === 'otp' || mode !== 'edit' ? '' : inputTextColor\"\n [style.border]=\" (type === 'otp' || mode !== 'edit') ? '' : from === 'nxtTable' ? type === 'checkbox' ? '1px solid gray !important' : 'none' : type === 'checkbox' ? ( inputBorderSize || 1 + 'px solid ' + inputBorder) : inputBorder\"\n [style.height]=\"type === 'otp' ? '' : inputHeight\" [style.width]=\"type === 'otp' ? '100% !important' : type === 'checkbox' ? 'auto' : inputWidth || '100% !important'\"\n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : mode === 'edit' ? '10px 10px 10px 5px' : '10px 10px 10px 0px' \"\n [value]=\"type === 'tel' ? rawInputVal : value\"\n (input)=\"type === 'otp' ? handleInput() : onInputChange($event)\"\n [checked]=\"type === 'checkbox' ? value : ''\"\n [style.font-size]=\"type === 'otp' ? '' : inputValueSize || '12px'\" (focus)=\"type === 'otp' ? handleFocus($event) : null\"\n [style.text-align]=\"(type === 'currency' && mode === 'edit') ? 'start' : textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n (blur)=\"type === 'otp' ? onTouched() : blurEmit()\"\n (keypress)=\"type === 'otp' ? handleKeyPress($event, i) : type === 'number' ? allowNumberDecimal($event) : null\"\n (keydown)=\"type === 'otp' ? handleKeyDown($event, i) : from === 'normalDropDown' ? $event.preventDefault() : type === 'number' ? allowNumberDecimal($event) : null\"\n (paste)=\"type === 'otp' ? handlePaste($event, i) : null\" inputmode=\"type === 'otp' ? numeric : null\"\n [attr.autocomplete]=\"type === 'otp' && i === 0 ? 'one-time-code' : type === 'list' ? 'list' : 'off'\"\n [attr.aria-expanded]=\"type === 'list' ? showSuggestion : 'off'\"\n [attr.inputmode]=\"type === 'otp' ? 'numeric' : type === 'number' ? 'decimal' : null\" [attr.name]=\"type === 'otp' && i === 0 ? 'otp' : null\"\n (focusin)=\"focusinEmit($event)\" [attr.aria-owns]=\"type === 'list' ? ariaOwns : 'off'\"\n [attr.aria-haspopup]=\"type === 'list' ? ariaHasPopup : 'off'\" \n [readonly]=\"from === 'normalDropDown'\" \n [ngClass]= \"{\n 'is-edit':mode === 'edit',\n }\"\n [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize || '12px' : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || inputWeight || '400' : ''\n }\" (keydown.enter)=\"type === 'location' ? $event.preventDefault() : ''\"\n autocorrect=\"type === 'location' ? 'off' : ''\" autocapitalize=\"type === 'location' ? 'off' : ''\"\n spellcheck=\"type === 'location' ? 'off' : ''\"\n />\n }\n @else if(type === 'time' || type === 'month' || type === 'datetime' || type === 'date') {\n <div style=\"position: relative; width: 100%;\">\n <input [id]=\"inputId\"\n type=\"text\" \n [formControl]=\"control\"\n readonly\n [attr.placeholder]=\"mode !== 'edit' ? '' : placeholder || ''\"\n [ngClass]=\"'nxt-custom-input'\" \n [value]=\"value | NxtDate : type : languageCode : dateFormatName\"\n [style.backgroundColor]=\"mode !== 'edit' ? '#f5f5f5' : from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"mode !== 'edit' ? '' : inputTextColor\" [style.border]=\"mode !== 'edit' ? 'none' : from === 'nxtTable' ? 'none' : inputBorder\"\n [style.height]=\"inputHeight\"\n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : mode === 'edit' ? '10px 10px 10px 5px' : '10px 10px 10px 0px' \"\n [style.font-size]=\"inputValueSize || '12px'\" (blur)=\" blurEmit()\" (focusin)=\"focusinEmit($event)\"\n [style.text-align]=\"textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n (focus)=\"onHijriInputClick(); $event.stopPropagation()\"\n (click)=\"onHijriInputClick();\"\n [attr.autocomplete]=\"'off'\"\n [attr.readonly]=\"'true'\"\n [readonly]=\"'true'\" \n [disabled]=\"mode === 'edit' ? readOnly === true : true\"\n [class]=\"'nxt-' + (question.nxtTableId || question.id)\"\n [ngClass]= \"{\n 'is-edit':mode === 'edit',\n }\"\n [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize || '12px' : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || inputWeight || '400' : ''\n }\" style=\"\n width: 100% !important;\n padding: 10px;\n padding-left: 5px;\n border-radius: 5px;\n border: none !important;\n font-size: 14px;\" \n />\n <!-- SKS14AUG25 Hijri Datepicker Popup -->\n <div *ngIf=\"showHijriPicker\" class=\"hijri-popup\" [ngClass]=\"{'rtl-class': direction === 'rtl'}\" [class]=\"'nxt-' + (question.nxtTableId || question.id)\">\n <app-nxt-datepicker\n [type]=\"type\"\n [value]=\"value\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [languageCode]=\"languageCode\"\n (dateChange)=\"onInputChange($event);\"\n >\n </app-nxt-datepicker>\n </div>\n </div>\n }\n <div *ngIf=\"(type === 'currency' && (mode !== 'edit' || readOnly === true))\"\n [style.backgroundColor]=\"from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"inputTextColor\"\n [style.border]=\"from === 'nxtTable' ? 'none' : inputBorder\"\n [style.height]=\"inputHeight\" \n [style.width]=\"inputWidth || '100% !important'\"\n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : mode === 'edit' ? '10px 10px 10px 5px' : '10px 10px 10px 0px' \"\n [style.font-size]=\"inputValueSize || '12px'\"\n [style.text-align]=\"textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n >\n @if(question?.subText?.isAmountInWords){\n {{value | amountInWords }}\n } @else {\n {{value | currency : currentCurrency.code : currentCurrency.symbol }}\n }\n </div>\n <!-- SKS7AUG25 api call Dotted Loader -->\n <div *ngIf=\"mode === 'edit' && isLoading\" class=\"dotted-loader input-icons\" aria-label=\"Loading\" role=\"status\">\n <span *ngFor=\"let dot of [].constructor(6); let i = index\" class=\"dot\" [style.--i]=\"i\"></span>\n </div>\n <div *ngIf=\"mode === 'edit' && (type === 'datetime' || type === 'date' || type === 'month' || type === 'time')\" (click)=\"openDatePicker(type); $event.stopPropagation()\" class=\"input-icons\"\n style=\"cursor: pointer;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"from === 'nxtTable' ? 12 : 18\" [attr.height]=\"from === 'nxtTable' ? 12 : 18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M2.32031 7.05285H15.6883\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.3322 9.98254H12.3392\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00408 9.98254H9.01103\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.66815 9.98254H5.67509\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.3322 12.8976H12.3392\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00408 12.8976H9.01103\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.66815 12.8976H5.67509\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.0329 1.5V3.96809\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.97435 1.5V3.96809\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.1787 2.68457H5.82822C3.6257 2.68457 2.25 3.91152 2.25 6.16684V12.9541C2.25 15.2449 3.6257 16.5002 5.82822 16.5002H12.1718C14.3812 16.5002 15.75 15.2661 15.75 13.0108V6.16684C15.7569 3.91152 14.3882 2.68457 12.1787 2.68457Z\" stroke=\"#B0ADAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div *ngIf=\"mode === 'edit' && !readOnly && type === 'location' \" class=\"input-icons\">\n <svg *ngIf=\"!isLoading\" (click)=\"openMap()\" (keydown.enter)=\"openMap()\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <rect x=\"0.5\" y=\"0.5\" [attr.width]=\"from === 'nxtTable' ? 12 : 15\" [attr.height]=\"from === 'nxtTable' ? 12 : 15\" stroke=\"white\"/>\n <path d=\"M7.99992 8.95321C9.14867 8.95321 10.0799 8.02197 10.0799 6.87321C10.0799 5.72446 9.14867 4.79321 7.99992 4.79321C6.85117 4.79321 5.91992 5.72446 5.91992 6.87321C5.91992 8.02197 6.85117 8.95321 7.99992 8.95321Z\" stroke=\"#B1ADAB\" stroke-width=\"1.5\"/>\n <path d=\"M2.41379 5.65992C3.72712 -0.113413 12.2805 -0.106746 13.5871 5.66659C14.3538 9.05325 12.2471 11.9199 10.4005 13.6933C9.06046 14.9866 6.94046 14.9866 5.59379 13.6933C3.75379 11.9199 1.64712 9.04659 2.41379 5.65992Z\" stroke=\"#B1ADAB\" stroke-width=\"1.5\"/>\n </svg> \n </div>\n <div *ngIf=\"mode === 'edit' && type === 'list'\" class=\"input-icons\">\n <svg *ngIf=\"!isLoading\" (click)=\"removeValue()\" (keydown.enter)=\"removeValue()\" style=\"cursor: pointer;\" [attr.width]=\"from === 'nxtTable' ? 12 : 16\" [attr.height]=\"from === 'nxtTable' ? 12 : 16\" viewBox=\"0 0 0.48 0.48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0.03 0.075a0.015 0.015 0 0 0 0 0.03zm0.42 0.03a0.015 0.015 0 0 0 0 -0.03zm-0.42 0h0.42v-0.03h-0.42z\" fill=\"#71717A\"/><path d=\"M0.195 0.03V0.015zM0.165 0.06H0.15zM0.15 0.09a0.015 0.015 0 0 0 0.03 0zm0.15 0a0.015 0.015 0 0 0 0.03 0zm0.015 -0.03h0.015zM0.285 0.015h-0.09v0.03h0.09zm-0.09 0a0.045 0.045 0 0 0 -0.032 0.013l0.021 0.021a0.015 0.015 0 0 1 0.011 -0.004zm-0.032 0.013A0.045 0.045 0 0 0 0.15 0.06H0.18a0.015 0.015 0 0 1 0.004 -0.011zM0.15 0.06v0.03H0.18V0.06zm0.18 0.03V0.06H0.3v0.03zm0 -0.03a0.045 0.045 0 0 0 -0.013 -0.032l-0.021 0.021c0.003 0.003 0.004 0.007 0.004 0.011zm-0.013 -0.032A0.045 0.045 0 0 0 0.285 0.015v0.03a0.015 0.015 0 0 1 0.011 0.004z\" fill=\"#71717A\"/><path d=\"M0.18 0.345a0.015 0.015 0 0 0 0.03 0zm0.03 -0.15a0.015 0.015 0 0 0 -0.03 0zm0 0.15v-0.15H0.18v0.15z\" fill=\"#71717A\"/><path d=\"M0.27 0.345a0.015 0.015 0 0 0 0.03 0zm0.03 -0.15a0.015 0.015 0 0 0 -0.03 0zm0 0.15v-0.15h-0.03v0.15z\" fill=\"#71717A\"/><path d=\"m0.377 0.422 -0.015 -0.001zM0.347 0.45v-0.015zm-0.215 0v-0.015zm-0.03 -0.028 0.015 -0.001zM0.09 0.089a0.015 0.015 0 0 0 -0.03 0.002zm0.33 0.002a0.015 0.015 0 1 0 -0.03 -0.002zm-0.058 0.33a0.015 0.015 0 0 1 -0.005 0.01l0.02 0.022a0.045 0.045 0 0 0 0.014 -0.029zm-0.005 0.01a0.015 0.015 0 0 1 -0.01 0.004v0.03a0.045 0.045 0 0 0 0.03 -0.012zm-0.01 0.004H0.133v0.03H0.347zm-0.215 0a0.015 0.015 0 0 1 -0.01 -0.004l-0.02 0.022c0.008 0.008 0.019 0.012 0.03 0.012zm-0.01 -0.004a0.015 0.015 0 0 1 -0.005 -0.01l-0.03 0.002a0.045 0.045 0 0 0 0.014 0.029zm-0.005 -0.01L0.09 0.089l-0.03 0.002 0.028 0.332zm0.272 -0.332 -0.028 0.332 0.03 0.002 0.028 -0.332z\" fill=\"#71717A\"/></svg> \n </div>\n <label class=\"nxt-checkboxLab\" *ngIf=\"label && type === 'checkbox' && showLabel\" [style.font-weight]=\"labelWeight\"\n [style.font-size]=\"labelSize\" [style.color]=\"inputTextColor || labelColor || '#212529'\"\n [style.justify-content]=\"textAlign || 'start'\"\n style=\"margin-bottom: 0; padding-right: 10px; width: 100% !important;\"> {{ label }}\n <div *ngIf=\"label && type === 'checkbox' && required && showLabel\" style=\"color: red;\">*</div>\n </label> \n <!-- Always Show Dropdown Icon -->\n <div *ngIf=\"mode === 'edit' && type === 'dropdown'\" class=\"input-icons\">\n <svg (mousedown)=\"toggle($event); $event.preventDefault()\" xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"from === 'nxtTable' ? 12 : 16\" [attr.height]=\"from === 'nxtTable' ? 12 : 16\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M4.5 11H7.5C10 11 11 10 11 7.5V4.5C11 2 10 1 7.5 1H4.5C2 1 1 2 1 4.5V7.5C1 10 2 11 4.5 11Z\" stroke=\"#B0ADAB\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M4.23499 5.32L6 7.08L7.765 5.32\" stroke=\"#B0ADAB\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n\n <img *ngIf=\"mode === 'edit' && inputIconRightSrc\" [src]=\"inputIconRightSrc\" class=\"icon right-icon\"\n [style.height]=\"svgHeight\" [style.width]=\"svgWidth\">\n <img *ngIf=\"mode === 'edit' && type === 'password'\" class=\"toggle-icon\" (click)=\"togglePasswordVisibility()\"\n [src]=\"!isPasswordVisible ? '/assets/images/icons/general/Hide-Password.svg' : '/assets/images/icons/general/Show-Password.svg'\" />\n <div *ngIf=\"mode !== 'edit' && !readOnly && from !== 'nxtTable' && !onlyView && type !== 'space'\" class=\"input-icons\">\n <svg class=\"edit-icon\" \n (click)=\"viewEditClick(question)\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M1.99987 9.0017L4.39602 11.3979C4.50371 11.5055 4.66525 11.5055 4.77294 11.3979L10.7499 5.39401C10.8576 5.28631 10.8576 5.12477 10.7499 5.01708L8.38064 2.64785C8.27294 2.54016 8.11141 2.54016 8.00371 2.64785L1.99987 8.6517C1.89217 8.75939 1.89217 8.92093 1.99987 9.0017ZM9.1614 1.54401C9.05371 1.6517 9.05371 1.81324 9.1614 1.92093L11.5306 4.29016C11.6383 4.39785 11.7999 4.39785 11.9076 4.29016L12.5806 3.61708C13.0114 3.21324 13.0114 2.56708 12.5806 2.13631L11.3153 0.870928C10.8845 0.440159 10.2114 0.440159 9.78063 0.870928L9.1614 1.54401ZM0.00755862 12.9863C-0.0462875 13.2555 0.19602 13.4979 0.465251 13.444L3.39987 12.744C3.50756 12.7171 3.58833 12.6632 3.64217 12.6094L3.69602 12.5555C3.74987 12.5017 3.77679 12.3132 3.6691 12.2055L1.24602 9.78247C1.13833 9.67478 0.949866 9.7017 0.89602 9.75554L0.842174 9.80939C0.761405 9.89016 0.734482 9.97093 0.707559 10.0517L0.00755862 12.9863Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n <!-- SKS14JUN25 Show save and cancel icons only when the input value is edited -->\n <div *ngIf=\"(apiMeta?.singleFieldDisable === undefined || !apiMeta?.singleFieldDisable) && viewEdit ? (!apiMeta?.singleFieldDisable && type !== 'space') : (viewEdit && type !== 'space')\" class=\"input-icons\">\n <svg (click)=\"saveChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.9502 0.5C8.96006 0.500106 11.4004 2.94031 11.4004 5.9502C11.4003 8.95999 8.95999 11.4003 5.9502 11.4004C2.94031 11.4004 0.500106 8.96006 0.5 5.9502C0.5 2.94024 2.94024 0.5 5.9502 0.5Z\"\n stroke=\"#B0ADAB\" />\n <path\n d=\"M8.88111 3.84583C8.83269 3.7972 8.77513 3.7586 8.71176 3.73227C8.64838 3.70594 8.58043 3.69238 8.5118 3.69238C8.44317 3.69238 8.37521 3.70594 8.31184 3.73227C8.24846 3.7586 8.19091 3.7972 8.14249 3.84583L4.8269 7.16347L3.35253 5.6891C3.30403 5.6406 3.24646 5.60213 3.18309 5.57588C3.11972 5.54964 3.05181 5.53613 2.98322 5.53613C2.91463 5.53613 2.84672 5.54964 2.78335 5.57588C2.71999 5.60213 2.66241 5.6406 2.61391 5.6891C2.56541 5.7376 2.52694 5.79518 2.50069 5.85854C2.47445 5.92191 2.46094 5.98982 2.46094 6.05841C2.46094 6.127 2.47445 6.19491 2.50069 6.25828C2.52694 6.32165 2.56541 6.37922 2.61391 6.42772L4.45677 8.27058C4.50519 8.31922 4.56274 8.35781 4.62612 8.38414C4.6895 8.41047 4.75745 8.42403 4.82608 8.42403C4.89471 8.42403 4.96266 8.41047 5.02604 8.38414C5.08942 8.35781 5.14697 8.31922 5.19539 8.27058L8.88111 4.58445C8.92974 4.53603 8.96834 4.47848 8.99467 4.4151C9.021 4.35173 9.03456 4.28377 9.03456 4.21514C9.03456 4.14651 9.021 4.07856 8.99467 4.01518C8.96834 3.9518 8.92974 3.89425 8.88111 3.84583Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n <div *ngIf=\"viewEdit && type !== 'space'\" class=\"input-icons\">\n <svg (click)=\"discardChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.05555 4.00883L5.94 5.12438L4.82445 4.00883C4.57861 3.76299 4.18191 3.76299 3.93607 4.00883C3.69023 4.25467 3.69023 4.65137 3.93607 4.89721L5.05162 6.01276L3.93607 7.12831C3.69023 7.37415 3.69023 7.77085 3.93607 8.01669C4.18191 8.26253 4.57861 8.26253 4.82445 8.01669L5.94 6.90114L7.05555 8.01669C7.30139 8.26253 7.69809 8.26253 7.94393 8.01669C8.18977 7.77085 8.18977 7.37415 7.94393 7.12831L6.82838 6.01276L7.94393 4.89721C8.18977 4.65137 8.18977 4.25467 7.94393 4.00883C7.69809 3.77285 7.30021 3.77285 7.05555 4.00883ZM5.94 0.0820312C2.70017 0.0820312 0.0808594 2.70134 0.0808594 5.94118C0.0808594 9.18101 2.70017 11.8003 5.94 11.8003C9.17983 11.8003 11.7991 9.18101 11.7991 5.94118C11.7991 2.70134 9.17983 0.0820312 5.94 0.0820312ZM5.94 10.6367C3.35426 10.6367 1.24422 8.52667 1.24422 5.94118C1.24422 3.35553 3.35426 1.24549 5.94 1.24549C8.52558 1.24549 10.6356 3.35553 10.6356 5.94118C10.6356 8.52667 8.52558 10.6367 5.94 10.6367Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n </div>\n </div>\n <div *ngIf=\"type !== 'label' && type !== 'checkbox' && (type === 'richtext' || type === 'textarea')\" style=\"display: flex;\">\n <div class=\"input-container\"\n [ngStyle]=\"{ 'padding-left': mode === 'edit' ? '' : '0px' }\"\n [style.margin]=\"(margin && margin !== '') ? margin : showLabel && label ? '' : from === 'nxtTable' || from === 'normalDropDown' ? '' : from === 'nxtForm' ? '21px 0px 0px 0px' : '0px !important'\"\n [style.border-radius]=\"mode !== 'edit' && from === 'nxtTable' ? 'none': ''\"\n [style.backgroundColor]=\"mode === 'edit' ? from === 'nxtTable' ? '' : inputBgColor : (inputBgColor || '#f5f5f5')\"\n [class.invalid]=\"control.invalid && control.touched\"\n [style.border]=\"mode === 'edit' ? from === 'nxtTable' ? '1px solid #d2d2d2' : inputBorder === 'none' ? ('1px solid ' + inputBgColor) : (inputBorderSize || 1 + 'px solid ' + inputBorder) : 'none'\"\n [ngClass]=\"{\n 'pad-nxt-0': from === 'nxtTable' && mode !== 'edit',\n 'pad-nxt-1': from === 'nxtTable' && mode === 'edit',\n 'pad-rich-0': mode === 'edit' && type === 'richtext'\n }\">\n <!-- SKS14JUN25 Dynamically load Quill editor toolbar -->\n <quill-editor *ngIf=\"mode === 'edit' && type === 'richtext'\" [(ngModel)]=\"value\" (ngModelChange)=\"onInputChange($event)\" [placeholder]=\"placeholder || ''\"\n [readOnly]=\"mode !== 'edit' || readOnly\"\n (focusout)=\"onEditorFocusOut()\" [class.error]=\"control.invalid && (control.touched || control.dirty)\"\n [modules]=\"getQuillModules(question.id)\"\n [style.padding]=\"'0px'\"\n style=\"width: 100%;\n border-radius: 5px;\n border: none;\n font-size: 16px;\">\n </quill-editor>\n <!-- View mode -->\n <div *ngIf=\"mode !== 'edit' && type === 'richtext'\" class=\"quill-view-content ql-snow\"\n style=\"width: 98.5%;\n border-radius: 5px;\n border: none;\n padding: unset;\n font-size: 16px;\n min-height: 38px;\">\n <div class=\"ql-editor\" [innerHTML]=\"value\"\n [style.padding]=\"(padding && padding !== '') ? padding : (from === 'nxtTable' ? '0px' : (mode === 'view' ? '1px 10px 0px 0px' : '1px 10px 0px 5px' ))\"\n [style.text-align]=\"direction === 'rtl' ? 'right' : '' \"\n [attr.dir]='direction' style=\"font-size: 12px;\"\n ></div>\n </div>\n <textarea *ngIf=\"type === 'textarea'\" [id]=\"inputId\" [rows]=\"from === 'nxtTable' ? 1 : rows\"\n [attr.placeholder]=\"mode !== 'edit' ? '' : placeholder || ''\" [ngClass]=\"'custom-input'\"\n [formControl]=\"control\"\n [style.backgroundColor]=\"mode !== 'edit' ? '#f5f5f5' : from === 'nxtTable' ? '' : inputBgColor\"\n [style.color]=\"mode !== 'edit' ? '' : inputTextColor\" [style.border]=\"mode !== 'edit' ? 'none' : from === 'nxtTable' ? '1px solid #d2d2d2' : inputBorder\"\n [style.height]=\"inputHeight\" [value]=\"value\" (input)=\" onInputChange($event)\"\n [style.font-size]=\"inputValueSize || '12px'\" (blur)=\" blurEmit()\" (focusin)=\"focusinEmit($event)\"\n [style.text-align]=\"textAlign || 'start'\"\n [style.font-weight]=\"inputWeight || '400'\"\n [readOnly]=\"mode !== 'edit' || readOnly\" [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize || '12px' : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || inputWeight || '400' : ''\n }\" \n [style.padding]=\"(padding && padding !== '') ? padding : from === 'nxtTable' ? '0px' : (mode === 'view' ? '1px 10px 0px 0px' : '1px 10px 0px 5px' )\"\n style=\"\n width: 100%;\n border-radius: 5px;\n border: none !important;\n font-size: 14px;\"\n >\n </textarea>\n <svg *ngIf=\"mode !== 'edit' && !viewEdit && from !== 'nxtTable' && (type === 'richtext' || type === 'textarea') && !readOnly && !onlyView \"\n class=\"edit-icon\" (click)=\"viewEditClick(question)\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M1.99987 9.0017L4.39602 11.3979C4.50371 11.5055 4.66525 11.5055 4.77294 11.3979L10.7499 5.39401C10.8576 5.28631 10.8576 5.12477 10.7499 5.01708L8.38064 2.64785C8.27294 2.54016 8.11141 2.54016 8.00371 2.64785L1.99987 8.6517C1.89217 8.75939 1.89217 8.92093 1.99987 9.0017ZM9.1614 1.54401C9.05371 1.6517 9.05371 1.81324 9.1614 1.92093L11.5306 4.29016C11.6383 4.39785 11.7999 4.39785 11.9076 4.29016L12.5806 3.61708C13.0114 3.21324 13.0114 2.56708 12.5806 2.13631L11.3153 0.870928C10.8845 0.440159 10.2114 0.440159 9.78063 0.870928L9.1614 1.54401ZM0.00755862 12.9863C-0.0462875 13.2555 0.19602 13.4979 0.465251 13.444L3.39987 12.744C3.50756 12.7171 3.58833 12.6632 3.64217 12.6094L3.69602 12.5555C3.74987 12.5017 3.77679 12.3132 3.6691 12.2055L1.24602 9.78247C1.13833 9.67478 0.949866 9.7017 0.89602 9.75554L0.842174 9.80939C0.761405 9.89016 0.734482 9.97093 0.707559 10.0517L0.00755862 12.9863Z\"\n fill=\"#B0ADAB\" />\n </svg>\n <!-- SKS14JUN25 Show save and cancel icons only when the input value is edited -->\n <div *ngIf=\"(apiMeta?.singleFieldDisable === undefined || !apiMeta?.singleFieldDisable) && (viewEdit ? !apiMeta?.singleFieldDisable : viewEdit) && type === 'textarea'\" class=\"input-icons\">\n <svg (click)=\"saveChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.9502 0.5C8.96006 0.500106 11.4004 2.94031 11.4004 5.9502C11.4003 8.95999 8.95999 11.4003 5.9502 11.4004C2.94031 11.4004 0.500106 8.96006 0.5 5.9502C0.5 2.94024 2.94024 0.5 5.9502 0.5Z\"\n stroke=\"#B0ADAB\" />\n <path\n d=\"M8.88111 3.84583C8.83269 3.7972 8.77513 3.7586 8.71176 3.73227C8.64838 3.70594 8.58043 3.69238 8.5118 3.69238C8.44317 3.69238 8.37521 3.70594 8.31184 3.73227C8.24846 3.7586 8.19091 3.7972 8.14249 3.84583L4.8269 7.16347L3.35253 5.6891C3.30403 5.6406 3.24646 5.60213 3.18309 5.57588C3.11972 5.54964 3.05181 5.53613 2.98322 5.53613C2.91463 5.53613 2.84672 5.54964 2.78335 5.57588C2.71999 5.60213 2.66241 5.6406 2.61391 5.6891C2.56541 5.7376 2.52694 5.79518 2.50069 5.85854C2.47445 5.92191 2.46094 5.98982 2.46094 6.05841C2.46094 6.127 2.47445 6.19491 2.50069 6.25828C2.52694 6.32165 2.56541 6.37922 2.61391 6.42772L4.45677 8.27058C4.50519 8.31922 4.56274 8.35781 4.62612 8.38414C4.6895 8.41047 4.75745 8.42403 4.82608 8.42403C4.89471 8.42403 4.96266 8.41047 5.02604 8.38414C5.08942 8.35781 5.14697 8.31922 5.19539 8.27058L8.88111 4.58445C8.92974 4.53603 8.96834 4.47848 8.99467 4.4151C9.021 4.35173 9.03456 4.28377 9.03456 4.21514C9.03456 4.14651 9.021 4.07856 8.99467 4.01518C8.96834 3.9518 8.92974 3.89425 8.88111 3.84583Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n <div *ngIf=\"viewEdit && type === 'textarea'\" class=\"input-icons\">\n <svg (click)=\"discardChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.05555 4.00883L5.94 5.12438L4.82445 4.00883C4.57861 3.76299 4.18191 3.76299 3.93607 4.00883C3.69023 4.25467 3.69023 4.65137 3.93607 4.89721L5.05162 6.01276L3.93607 7.12831C3.69023 7.37415 3.69023 7.77085 3.93607 8.01669C4.18191 8.26253 4.57861 8.26253 4.82445 8.01669L5.94 6.90114L7.05555 8.01669C7.30139 8.26253 7.69809 8.26253 7.94393 8.01669C8.18977 7.77085 8.18977 7.37415 7.94393 7.12831L6.82838 6.01276L7.94393 4.89721C8.18977 4.65137 8.18977 4.25467 7.94393 4.00883C7.69809 3.77285 7.30021 3.77285 7.05555 4.00883ZM5.94 0.0820312C2.70017 0.0820312 0.0808594 2.70134 0.0808594 5.94118C0.0808594 9.18101 2.70017 11.8003 5.94 11.8003C9.17983 11.8003 11.7991 9.18101 11.7991 5.94118C11.7991 2.70134 9.17983 0.0820312 5.94 0.0820312ZM5.94 10.6367C3.35426 10.6367 1.24422 8.52667 1.24422 5.94118C1.24422 3.35553 3.35426 1.24549 5.94 1.24549C8.52558 1.24549 10.6356 3.35553 10.6356 5.94118C10.6356 8.52667 8.52558 10.6367 5.94 10.6367Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n </div>\n </div>\n <!-- SKS23APR25 Use control.invalid to show error on submit click -->\n <div *ngIf=\"type != 'checkbox' && type !== 'label' && control.invalid && (control.touched || control.dirty)\" style=\"height: 20px;\">\n <div class=\"nxt-error-message\">\n {{ getErrorMessage() }}\n </div>\n </div>\n </div>\n</div>\n<!-- SKS18SEP25 google map popup -->\n<div class=\"map-overlay\" *ngIf=\"showModal\">\n <div class=\"map-modal\">\n <div class=\"map-modal-content\">\n <div class=\"map-modal-header\">\n <!-- HA 19DEC23 For translation -->\n <h4>{{ 'pickYourLocation' | nxtCustomTranslate : 'pickYourLocation' }}</h4>\n <button class=\"close-button\" (click)=\"closeModal()\">X</button>\n </div>\n <google-map [zoom]=\"10\" [center]=\"markerPosition\" (mapClick)=\"onMapClick($event)\">\n <map-marker\n [position]=\"markerPosition\"\n [options]=\"markerOptions\"\n (mapDragend)=\"onMarkerDragEnd($event)\">\n </map-marker>\n </google-map>\n </div>\n </div>\n</div>", styles: ["label{font-size:14px;margin-bottom:10px;color:color-mix(in srgb,black,rgb(0,0,0) 80%)}.toggle-icon{width:20px;height:20px;cursor:pointer;fill:#666}.nxt-error-message{color:red;font-size:10px}input[type=text].custom-input,input[type=password].custom-input,input[type=number].custom-input,input[type=email].custom-input,input[type=tel].custom-input,input[type=list].custom-input,input[type=dropdown].custom-input,input[type=location].custom-input{width:100%;padding:10px 10px 10px 5px;border-radius:5px;border:none;font-size:14px}input.nxt-custom-input{width:100%!important;padding:10px 10px 10px 5px;border-radius:5px;border:none;font-size:14px}.custom-input:-webkit-autofill,.custom-input:-webkit-autofill:hover,.custom-input:-webkit-autofill:focus,.custom-input:-webkit-autofill:active,.nxt-custom-input:-webkit-autofill,.nxt-custom-input:-webkit-autofill:hover,.nxt-custom-input:-webkit-autofill:focus,.nxt-custom-input:-webkit-autofill:active{transition:background-color 5000s ease-in-out 0s!important;-webkit-text-fill-color:inherit!important}.phone-input-container{display:flex;align-items:center;position:relative}.country-selector{display:flex;align-items:center;cursor:pointer;padding-right:12px;border-right:#ccc;margin-right:12px}.flag{margin-right:8px;font-size:20px}.dial-code{margin-right:8px;font-weight:500}.country-dropdown{position:absolute;top:100%;left:0;width:300px;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 4px #0000001a;z-index:1000;margin-top:4px}.search-box{padding:8px;border-bottom:1px solid #ccc}.search-box input{width:100%;padding:8px;border:1px solid #ccc;border-radius:4px}.country-list{max-height:200px;overflow-y:auto}.country-item{display:flex;align-items:center;padding:8px 12px;cursor:pointer}.country-item:hover{background-color:color-mix(in srgb,#fff,rgba(0,0,0,0) 30%)}.country-item .name{flex:1;margin:0 12px}.fcOtp{width:40px;height:40px;text-align:center;font-size:18px;border:1px solid #ccc;border-radius:5px;margin:5px;outline:none;transition:border-color .2s ease-in-out}textarea:focus-visible,textarea:focus,input:focus{outline:none;border-color:transparent;box-shadow:none}.input-container{display:flex;align-items:center;width:100%;border-radius:5px;border:1px solid #ccc;padding-left:5px;padding-right:5px}.pad-nxt-0{padding-left:0!important;padding-right:0!important}.pad-nxt-1{padding-left:1px!important;padding-right:1px!important}.pad-rich-0{padding-left:0!important;padding-right:0!important}.checkbox-padding{margin-top:20px;width:100%!important;border:none!important}.icon-container{right:15px;padding-right:5px;pointer-events:auto;width:22px;height:22px;display:flex;align-items:center;justify-content:center}.input-container.invalid{border:1px solid #DC3545!important;border-radius:5px}.view-mode{font-size:14px;color:#333}@media print{.view-mode{font-size:12pt;color:#000}}input::placeholder{font-family:var(--placeholder-font);color:var(--placeholder-color);font-size:var(--placeholder-size);font-weight:var(--placeholder-weight)}.dotted-loader{position:relative;width:28px;height:28px}.dotted-loader .dot{--i: 0;position:absolute;top:50%;left:50%;width:3px;height:3px;margin:-2px 0 0 -2px;border-radius:50%;background-color:#696969;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg));animation:spinDot 1s linear infinite;animation-delay:calc(var(--i) * .1s)}@keyframes spinDot{0%{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}50%{opacity:1;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(1.3)}to{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}}input:disabled:not([type=checkbox]){cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important;border:none!important}input:disabled.is-edit:not([type=checkbox]){background-color:#f5f5f5!important}.input-container:has(input.is-edit:disabled){background-color:#f5f5f5!important}input[type=checkbox]:disabled{border:1px solid #5353532b!important}input[type=checkbox]:focus{border:1px solid #5353532b!important}textarea:disabled{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}.quill-view-content{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}:is() .ql-editor img{cursor:pointer}:is() .image-resizer{display:block!important;visibility:visible!important}:is() .ql-editor .image-resizer{border:1px dashed #000;position:absolute}:is() .ql-editor .image-resizer .handle{background-color:#000;border:1px solid #fff;border-radius:50%;height:12px;width:12px;position:absolute}quill-editor{width:100%}.quill-view-content{background-color:#f0f0f0;border-radius:5px;border:none;padding:10px;overflow-wrap:break-word}.quill-view-content .ql-editor{white-space:normal;overflow:visible;min-height:auto}[dir=rtl] .quill-view-content *,.rtl .quill-view-content *{text-align:right!important;direction:rtl!important}.edit-icon{display:none;cursor:pointer}.hover-wrapper:hover .edit-icon{display:block}input:disabled,textarea:disabled,.quill-view-content{color:#292929!important}input:disabled.from-nxt-table,textarea:disabled.from-nxt-table,.quill-view-content.from-nxt-table{color:#2c3137!important}.owl-dt-container-disabled,.owl-dt-trigger-disabled{opacity:unset!important}.input-wrapper{position:relative}.input-container{pointer-events:auto!important;position:relative}.custom-input,.nxt-custom-input{pointer-events:auto!important}.hijri-popup{position:absolute;top:100%;left:0;z-index:9999;background:#fff;box-shadow:0 0 5px #0000001a;border-radius:5px}.hijri-popup.rtl-class{left:auto!important;right:0!important}.input-icons{display:flex;align-items:center}::ng-deep .ql-container.ql-snow{border:none!important}::ng-deep .ql-toolbar.ql-snow{border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:1px solid #ccc!important}google-map .map-container{width:auto!important}.map-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.map-modal{width:600px;background-color:#fff;border-radius:5px;box-shadow:0 2px 4px #0003}.map-modal-header{display:flex;align-items:center;justify-content:space-between;padding:0 0 10px;background-color:#fff;border-bottom:2px solid #e5e5e5}.map-modal-header h3{margin:0}.map-modal-content{padding:20px}.close-button{border:none;cursor:pointer;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}\n"] }]
|
|
48111
48111
|
}], ctorParameters: () => [{ type: NxtDatePipe }, { type: GoogleMapsLoaderService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: CountryService }, { type: StorageService }, { type: TranslationService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ElementRef }, { type: ChangeService }, { type: DataService }], propDecorators: { label: [{
|
|
48112
48112
|
type: Input
|
|
48113
48113
|
}], labelFont: [{
|
|
@@ -57622,6 +57622,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
57622
57622
|
class QuestionbookComponent {
|
|
57623
57623
|
dataService;
|
|
57624
57624
|
changeService;
|
|
57625
|
+
cdr;
|
|
57625
57626
|
qbItem;
|
|
57626
57627
|
questionItem;
|
|
57627
57628
|
questions;
|
|
@@ -57686,9 +57687,10 @@ class QuestionbookComponent {
|
|
|
57686
57687
|
handleCalendarDate = new EventEmitter();
|
|
57687
57688
|
handleCalendarEvent = new EventEmitter();
|
|
57688
57689
|
bookQuestionsMap = new Map();
|
|
57689
|
-
constructor(dataService, changeService) {
|
|
57690
|
+
constructor(dataService, changeService, cdr) {
|
|
57690
57691
|
this.dataService = dataService;
|
|
57691
57692
|
this.changeService = changeService;
|
|
57693
|
+
this.cdr = cdr;
|
|
57692
57694
|
}
|
|
57693
57695
|
ngOnInit() {
|
|
57694
57696
|
// VD 13Sep24 changes
|
|
@@ -57698,59 +57700,63 @@ class QuestionbookComponent {
|
|
|
57698
57700
|
.pipe(takeUntil$1(this.destroy$))
|
|
57699
57701
|
.subscribe(changeValue => {
|
|
57700
57702
|
if (changeValue === 'dataBind') {
|
|
57703
|
+
this.processed = false;
|
|
57701
57704
|
this.processData();
|
|
57702
|
-
this.
|
|
57705
|
+
void this.syncQuestions();
|
|
57703
57706
|
}
|
|
57704
57707
|
});
|
|
57705
57708
|
}
|
|
57706
57709
|
ngAfterViewInit() {
|
|
57707
|
-
|
|
57710
|
+
void this.syncQuestions();
|
|
57711
|
+
}
|
|
57712
|
+
async syncQuestions() {
|
|
57713
|
+
// SKS10APR26 Ensure the child component is available before calling the method
|
|
57708
57714
|
// AP-26MAR25 Ensure ques.subText is always an object by parsing it if it's a string
|
|
57709
57715
|
// AP-28MAR25 Add Boolean
|
|
57710
|
-
Promise.resolve()
|
|
57711
|
-
|
|
57712
|
-
|
|
57713
|
-
|
|
57714
|
-
|
|
57715
|
-
|
|
57716
|
-
|
|
57717
|
-
|
|
57718
|
-
|
|
57719
|
-
|
|
57720
|
-
|
|
57721
|
-
|
|
57722
|
-
|
|
57723
|
-
|
|
57724
|
-
|
|
57725
|
-
|
|
57726
|
-
|
|
57727
|
-
|
|
57728
|
-
|
|
57729
|
-
|
|
57730
|
-
}
|
|
57731
|
-
else if (ques.defaultValue !== undefined) {
|
|
57732
|
-
input['valueObj'] = typeof ques.defaultValue === 'string' ? ques.defaultValue === 'true' : ques.defaultValue === true;
|
|
57733
|
-
}
|
|
57734
|
-
else {
|
|
57735
|
-
input['valueObj'] = false;
|
|
57736
|
-
}
|
|
57737
|
-
}
|
|
57738
|
-
else if (ques.type === 'Table') {
|
|
57739
|
-
input['valueObj'] = { data: ques.input };
|
|
57716
|
+
await Promise.resolve();
|
|
57717
|
+
if (!this.questions)
|
|
57718
|
+
return;
|
|
57719
|
+
for (const ques of this.questions) {
|
|
57720
|
+
ques['subText'] = typeof ques?.subText === 'object' ? ques?.subText : ques?.subText ? JSON.parse(ques['subText']) : {};
|
|
57721
|
+
let apiObj = ques.subText;
|
|
57722
|
+
await this.handleQues(ques);
|
|
57723
|
+
let input;
|
|
57724
|
+
input = {};
|
|
57725
|
+
input['isObject'] = apiObj?.isObject;
|
|
57726
|
+
input['field'] = apiObj?.defaultField || apiObj?.field?.[0] || apiObj?.field || null;
|
|
57727
|
+
if (ques.type === 'Image') {
|
|
57728
|
+
input['valueObj'] = ques.input || ques.orgImageData;
|
|
57729
|
+
ques.imageData = ques.input || ques.orgImageData;
|
|
57730
|
+
ques.orgImageData = ques.imageData;
|
|
57731
|
+
}
|
|
57732
|
+
else if (ques.type === 'Boolean') {
|
|
57733
|
+
if (ques.input !== undefined) {
|
|
57734
|
+
input['valueObj'] = ques.input !== false;
|
|
57735
|
+
input['valueObj'] = typeof ques.input === 'string' ? ques.input === 'true' : ques.input === true;
|
|
57740
57736
|
}
|
|
57741
|
-
else if (ques.
|
|
57742
|
-
input['valueObj'] =
|
|
57737
|
+
else if (ques.defaultValue !== undefined) {
|
|
57738
|
+
input['valueObj'] = typeof ques.defaultValue === 'string' ? ques.defaultValue === 'true' : ques.defaultValue === true;
|
|
57743
57739
|
}
|
|
57744
57740
|
else {
|
|
57745
|
-
input['valueObj'] =
|
|
57746
|
-
}
|
|
57747
|
-
input['referenceField'] = ques.referenceField || null;
|
|
57748
|
-
input['fromQuestionId'] = ques.id || null;
|
|
57749
|
-
if (!ques.isHidden && !ques?.subText?.isDependentField) {
|
|
57750
|
-
this.childEventCapture(input, ques, 'ngAfterViewInit');
|
|
57741
|
+
input['valueObj'] = false;
|
|
57751
57742
|
}
|
|
57752
|
-
}
|
|
57753
|
-
|
|
57743
|
+
}
|
|
57744
|
+
else if (ques.type === 'Table') {
|
|
57745
|
+
input['valueObj'] = { data: ques.input };
|
|
57746
|
+
}
|
|
57747
|
+
else if (ques.type === 'Number' || ques.type === 'currency') {
|
|
57748
|
+
input['valueObj'] = (ques.input || ques.input === 0) ? ques.input : (ques.defaultValue || ques.defaultValue === 0) ? ques.defaultValue : null;
|
|
57749
|
+
}
|
|
57750
|
+
else {
|
|
57751
|
+
input['valueObj'] = ques.input ?? ques.defaultValue ?? null;
|
|
57752
|
+
}
|
|
57753
|
+
input['referenceField'] = ques.referenceField || null;
|
|
57754
|
+
input['fromQuestionId'] = ques.id || null;
|
|
57755
|
+
if (!ques.isHidden && !ques?.subText?.isDependentField) {
|
|
57756
|
+
this.childEventCapture(input, ques, 'ngAfterViewInit');
|
|
57757
|
+
}
|
|
57758
|
+
}
|
|
57759
|
+
this.cdr.detectChanges();
|
|
57754
57760
|
}
|
|
57755
57761
|
async handleQues(ques) {
|
|
57756
57762
|
// HA 19-JAN-24 If condition is for bind-in, correction
|
|
@@ -57814,6 +57820,12 @@ class QuestionbookComponent {
|
|
|
57814
57820
|
else if (ques.type === "Boolean") { // SKS23JUN25 defaultly set value false
|
|
57815
57821
|
ques.input = typeof value !== 'undefined' ? value === true || value === 'true' : typeof ques.defaultValue !== 'undefined' ? ques.defaultValue === true || ques.defaultValue === 'true' : false;
|
|
57816
57822
|
}
|
|
57823
|
+
else if (ques.type === 'RichTextArea') {
|
|
57824
|
+
const nextValue = value || ques.defaultValue;
|
|
57825
|
+
const hasProcessedImages = typeof ques.input === 'string' && ques.input.includes('src="data:');
|
|
57826
|
+
const hasPendingFileImages = typeof nextValue === 'string' && nextValue.includes('src="file:');
|
|
57827
|
+
ques.input = hasProcessedImages && hasPendingFileImages ? ques.input : nextValue;
|
|
57828
|
+
}
|
|
57817
57829
|
else if (ques.type === 'Number' || ques.type === 'currency') {
|
|
57818
57830
|
ques.input = (value || value === 0) ? value : (ques.defaultValue || ques.defaultValue === 0) ? ques.defaultValue : null;
|
|
57819
57831
|
}
|
|
@@ -58317,7 +58329,7 @@ class QuestionbookComponent {
|
|
|
58317
58329
|
this.destroy$.complete();
|
|
58318
58330
|
this.loadComponent$.complete();
|
|
58319
58331
|
}
|
|
58320
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: QuestionbookComponent, deps: [{ token: DataService }, { token: ChangeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
58332
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: QuestionbookComponent, deps: [{ token: DataService }, { token: ChangeService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
58321
58333
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: QuestionbookComponent, isStandalone: true, selector: "lib-questionbook", inputs: { qbItem: "qbItem", questionItem: "questionItem", questions: "questions", errorFieldId: "errorFieldId", labelValue: "labelValue", token: "token", isEdit: "isEdit", dropDownData: "dropDownData", dataBind: "dataBind", allIcons: "allIcons", themeColor: "themeColor", cdnIconURL: "cdnIconURL", direction: "direction", languageCode: "languageCode", from: "from", bgColor: "bgColor", margin: "margin", onlyView: "onlyView" }, outputs: { handleDropDown: "handleDropDown", handleQuestion: "handleQuestion", singleFieldChangeEmit: "singleFieldChangeEmit", hadleDropDownDependent: "hadleDropDownDependent", handleCalendarDate: "handleCalendarDate", handleCalendarEvent: "handleCalendarEvent" }, ngImport: i0, template: "<!-- HA 18JAN24 Added class for styling -->\n<div [style]=\"bookStyle\" class=\"content-box form-group\" [ngClass]=\"{ 'form-group': from !== 'questionbook' }\" [style.background-color]=\"from === 'questionbook' ? bgColor || '' : ''\" [style.margin]=\"from === 'questionbook' ? (margin || '0px') : '0px'\" >\n <div class=\"form-row\">\n <!-- HA 20DEC23 Directive and Question Style from salesforce -->\n <!-- RA09DEC24 Changed keys-->\n <ng-container *ngFor=\"let ques of questions;let i = index\">\n <div [style.display]=\"ques.isHidden ? 'none' : 'block'\" [class]=\"'col-lg-' + ques.size + ' paddingnone'\" \n [id]=\"ques.id\" [style]=\"ques?.style?.questionStyle\" [ngStyle]=\"ques?.style?.parrentMargin ? {'margin': ques?.style?.parrentMargin } : {'margin-top': '5px', 'margin-bottom': '5px'}\" >\n <!-- VD 09May24 is hide field change-->\n <div class=\"nxtInputContainer\">\n <!-- AP-28MAR25 Show label if enabled and not a Boolean type -->\n <div [ngClass]=\"{ down2: qbItem?.progressBar }\"\n *ngIf=\"(ques.style?.showLabel ?? true) && ![ 'Radio','Boolean','Text','List','Dropdown','RichTextArea','DateTime','month','Location','Number','Email','Date','Time','TextArea','Label','currency','File' ].includes(ques.type)\" \n [style]=\"ques.style?.labelStyle\">\n <div style=\"gap: 5px; display: flex; align-items: center;\" [style]=\"ques.style?.labelValueStyle\"\n [ngStyle]=\"{\n 'font-family': ques.font,\n 'color': ques.color || '#212529',\n 'font-size': ques.fontSize || '14px',\n 'font-weight': ques.fontWeight || 'normal'\n }\">{{ ques?.questionText ? ((ques.id+'.questionText') | nxtCustomTranslate : ques?.questionText):''}}\n <div *ngIf=\"ques.isOptional && !ques.isReadOnly \" style=\"color: red;\">*</div>\n </div>\n </div>\n <!-- calendar -->\n <div *ngIf=\"ques.type === 'Calendar'\" [class]=\"ques?.style?.inputClass\">\n <app-custom-calendar [question]=\"ques\" (eventSelected)=\"getCalendarEvent($event)\"\n (dateSelected)=\"getCurrentCalendar($event)\" (openModal)=\"openCalendarModal($event)\"\n (closeModal)=\"closeCalendarModal($event)\"></app-custom-calendar>\n <!-- model used in calendar component -->\n <app-custom-model *ngIf=\"isCalendarModalOpen\" [modalTitle]=\"calendarModalTitle\"\n [isModalOpen]=\"isCalendarModalOpen\" [modalSize]=\"calendarModalSize\"\n [saveButtonValue]=\"calendarSaveButtonValue\" [modalFooter]=\"modalCalendarModalFooter\"\n (saveButtonEmit)=\"onCalendarModalSave()\" (cancelButtonEmit)=\"closeCalendarModal($event)\">\n <lib-questionbook [qbItem]=\"qbRefrenceBook\" [questions]=\"referenceQuestions\"\n [isEdit]=\"isEdit\" \n (handleQuestion)=\"handleQuestionEvent($event)\">\n </lib-questionbook>\n </app-custom-model>\n </div>\n <!-- SKS27MAR26 Image element - improved -->\n <div *ngIf=\"ques.type === 'Image'\" [class]=\"ques?.style?.inputClass\">\n <!-- SKS27MAR26 Read-only mode -->\n <ng-container *ngIf=\"ques.isReadOnly\">\n <img *ngIf=\"ques.imageData\"\n [style.width.px]=\"ques.imageSize?.width || 150\"\n [style.height.px]=\"ques.imageSize?.height || 150\"\n [src]=\"ques.imageData\"\n style=\"object-fit: cover; border-radius: 8px; display: block;\" />\n <span *ngIf=\"!ques.imageData\" class=\"img-empty-readonly\">No image</span>\n </ng-container>\n <!-- SKS27MAR26 Editable mode -->\n <ng-container *ngIf=\"!ques.isReadOnly\">\n <!-- SKS27MAR26 Upload placeholder (no image yet) -->\n <label *ngIf=\"!ques.imageData\"\n class=\"img-upload-zone\"\n [for]=\"'img-upload-' + i\">\n <div class=\"img-upload-icon\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"1.5\">\n <polyline points=\"16 16 12 12 8 16\"/>\n <line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"/>\n <path d=\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\"/>\n </svg>\n </div>\n <span class=\"img-upload-text\">Click to upload image</span>\n <span class=\"img-upload-hint\">PNG, JPG, WEBP</span>\n <input type=\"file\" [id]=\"'img-upload-' + i\"\n accept=\"image/*\"\n (change)=\"fileChangeEvent(ques, $event)\"\n style=\"display: none;\" />\n </label>\n \n <!-- SKS27MAR26 Filled state with hover overlay -->\n <div *ngIf=\"ques.imageData\" class=\"img-filled-wrap\">\n <img [src]=\"ques.imageData\" class=\"img-preview\" alt=\"preview\" />\n <div class=\"img-hover-overlay\">\n <button class=\"img-action-btn img-edit-btn\"\n (click)=\"onImageEdit(ques)\"\n title=\"Edit / crop\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"1.8\">\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"/>\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"/>\n </svg>\n </button>\n <button class=\"img-action-btn img-delete-btn\"\n (click)=\"onImageDelete(ques)\"\n title=\"Remove image\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"#E24B4A\" stroke-width=\"1.8\">\n <polyline points=\"3 6 5 6 21 6\"/>\n <path d=\"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6\"/>\n <path d=\"M10 11v6\"/><path d=\"M14 11v6\"/>\n <path d=\"M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2\"/>\n </svg>\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n <!-- MSM10JUL25 icon-selector -->\n <nxt-icon-selector [class]=\"ques?.style?.inputClass\" [allIcons]=\"allIcons\" *ngIf=\"ques.type === 'Icon'\" [required]=\"ques.isOptional\" [mode]=\"isEdit !== true ? 'view' : 'edit'\" [question]=\"ques\" [labelFont]=\"ques.font\"\n [label]=\" ques?.questionText ? ((ques.id+'.questionText') | nxtCustomTranslate : ques?.questionText): ''\"\n [labelColor]=\"ques.color\" [selectedIcon]=\"{ metadata: { name: ques.input }}\"\n [labelSize]=\"ques.fontSize\" [labelWeight]=\"ques.fontWeight\" [showLabel]=\"ques.style?.showLabel\" (iconSelected)=\"childEventCapture($event, ques);\"></nxt-icon-selector>\n\n <!-- SKS21MAR25 line -->\n <hr [class]=\"ques?.style?.inputClass\" *ngIf=\"ques.type === 'Line'\" class=\"custom-line\" style=\"display: inline-flex\" />\n <!-- SKS13MAR25 data table -->\n <nxt-datatable *ngIf=\"ques.type === 'Table'\" [onlyView]=\"onlyView\" [class]=\"ques?.style?.inputClass\" isEditRow isDeleteRow actionButton isButtons [question]=\"ques\" from=\"questionBook\"\n (valueChange)=\"childEventCapture($event, ques)\" [apiMeta]=\"ques.subText\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\" [languageCode]=\"languageCode\"\n [tableConfig]=\"ques.tableConfig\" tableId=\"\" [direction]=\"direction\" tableWidth=\"auto\">\n </nxt-datatable>\n <!-- list -->\n <nxt-search-box *ngIf=\"ques.type === 'List'\" [onlyView]=\"onlyView\" [class]=\"ques?.style?.inputClass\" [question]=\"ques\" [readOnly]=\"ques.isReadOnly\" [apiMeta]=\"ques.subText\"\n [id]=\"ques.id\" [placeHolderText]=\"ques.question || ''\" [value]=\"ques.input\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\"\n (searchValueChange)=\"childEventCapture($event.value,$event.question)\">\n </nxt-search-box>\n\n <!-- Dropdown -->\n <!-- HA 09FEB24 Added condition of sqOption to the dropdown -->\n <nxt-dropdown *ngIf=\"ques?.type === 'Dropdown' && ques?.options\" \n [onlyView]=\"onlyView\" \n [class]=\"ques?.style?.inputClass\" \n [options]=\"ques.options\" \n [apiMeta]=\"ques.subText\"\n [id]=\"ques.id\" \n [from]=\"'nxtForm'\"\n [selectedValue]=\"qbItem.isShengel ? ques.input : ques.selectedValue\"\n [placeholder]=\"ques?.question ? ((ques.id+'.question') | nxtCustomTranslate : ques?.question ): ''\"\n [readOnly]=\"ques.isReadOnly\" \n [question]=\"ques\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\" \n [padding]=\"ques?.padding\"\n [labelFont]=\"ques?.font\"\n [label]=\"ques?.questionText\"\n [labelColor]=\"ques?.color\"\n [inputTextColor]=\"ques?.color\"\n [labelSize]=\"ques?.fontSize\"\n [inputValueSize]=\"ques?.fontSize\"\n [labelWeight]=\"ques?.fontWeight\"\n [inputWeight]=\"ques?.fontWeight\"\n [showLabel]=\"ques?.style?.showLabel ?? true\"\n [inputBgColor]=\"ques?.inputBgColor\"\n [inputIconLeftSrc]=\"ques?.iconLeftSrc\"\n (valueChange)=\"childEventCapture($event.value,$event.question)\">\n </nxt-dropdown>\n <!-- // VD 02Aug24 custom-radio component -->\n <div *ngIf=\"ques.type === 'Radio' && ques?.options\" [class]=\"ques?.style?.inputClass\" class=\"\">\n <nxt-radio [options]=\"ques.options\" [question]=\"ques\" [apiMeta]=\"ques.subText\" [id]=\"ques.id\"\n [selectedValue]=\"ques.selectedValue\" [errorMessage]=\"ques.errorMessage\"\n [referenceField]=\"ques.referenceField\" [readOnly]=\"ques.isReadOnly\"\n [label]=\"ques?.questionText ? ((ques.id+'.questionText') | nxtCustomTranslate : ques?.questionText): ''\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\" [onlyView]=\"onlyView\"\n (valueChange)=\"childEventCapture($event.value,$event.question)\">\n </nxt-radio>\n </div>\n <!-- Attachment / Files -->\n <nxt-file-upload *ngIf=\"ques.type === 'File'\" \n [class]=\"ques?.style?.inputClass\" \n [config]=\"ques\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\" \n [readOnly]=\"ques.isReadOnly\"\n [allFiles]=\"ques.input\" \n [onlyView]=\"onlyView\"\n [label]=\"ques.questionText\"\n [required]=\"ques.isOptional\"\n [fileConfig]=\"ques.subText\"\n (selectedFileData)=\"childEventCapture($event.value,$event.config)\"\n (deletedFileData)=\"deleteFile($event)\">\n </nxt-file-upload>\n <!-- SKS11JUN25 Button -->\n <nxt-button\n *ngIf=\"ques.type === 'Button'\" [class]=\"ques?.style?.inputClass\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\"\n [btnHeight]=\"'50px'\" [btnWidth]=\"'150px'\" [buttonValue]=\"ques?.question\"\n (buttonClickEmit)=\"childEventCapture($event, ques)\"\n >\n </nxt-button>\n <!-- SKS11JUN25 book type -->\n <lib-questionbook *ngIf=\"ques.type === 'Book'\" [class]=\"ques?.style?.inputClass\"\n [bgColor]=\"ques?.style?.bgColor\" [margin]=\"ques?.style?.margin || '0px'\"\n [qbItem]=\"ques.qbItem\" [labelValue]=\"labelValue\" [onlyView]=\"onlyView\"\n [questions]=\"ques?.qbReferenceQuestions?.bookQuestionsMap?.[ques?.qbReference]?.subQuestions\"\n [isEdit]=\"isEdit\" [from]=\"'questionbook'\"\n (handleDropDown)=\"getDropDown($event)\">\n </lib-questionbook>\n <!-- SKS11JUN25 Text, Email, label, number, Boolean, rich text editor, DateTime, Date, Time-->\n <!-- SKS16OCT25 added custom style fields for input -->\n <nxt-input *ngIf=\"['Space','Text','Email','Number','Label','Boolean','RichTextArea','DateTime','month','Date','Time','TextArea','Location','currency'].includes(ques.type)\"\n [type]=\"ques.type === 'Text' ? 'text' : ques.type === 'Email' ? 'email' : ques.type === 'Number' ? 'number' : ques.type === 'Label' ? 'label' : ques.type === 'Boolean' ? 'checkbox' : ques.type === 'RichTextArea' ? 'richtext' : ques.type === 'DateTime' ? 'datetime' : ques.type === 'Date' ? 'date' : ques.type === 'Time' ? 'time' : ques.type === 'TextArea' ? 'textarea' : ques.type === 'month' ? 'month' : ques.type === 'Location' ? 'location' : ques.type === 'Space' ? 'space' : ques.type === 'currency' ? 'currency': 'text'\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\"\n [value]=\"ques.input\" [class]=\"ques?.style?.inputClass\"\n [question]=\"ques\" [readOnly]=\"ques.isReadOnly\"\n [apiKey]=\"qbItem['apiKey']\"\n [labelFont]=\"ques.font\"\n [label]=\"ques?.questionText ? ((ques.id+'.questionText') | nxtCustomTranslate : ques?.questionText): ''\"\n [showLabel]=\"ques.style?.showLabel\"\n svgHeight=\"20px\" svgWidth=\"20px\"\n [placeholder]=\"ques?.question ? ((ques.id+'.question') | nxtCustomTranslate : ques?.question ): ''\"\n [required]=\"ques.isOptional\"\n [inputId]=\"ques.trackingId\"\n [errorMessages]=\"{ required: 'This field is required' }\"\n [inputIconLeftSrc]=\"ques.iconLeftSrc\" \n [minDate]=\"ques.minDate\"\n [maxDate]=\"ques.maxDate\"\n [rows]=\"2\"\n [apiMeta]=\"ques.subText\"\n [direction]=\"direction\"\n [onlyView]=\"onlyView\"\n [from]=\"'nxtForm'\"\n\n [padding]=\"ques?.style?.padding\" [margin]=\"ques?.style?.margin\" [inputValueSize]=\"ques?.style?.inputFontSize\"\n [inputBorder]=\"ques?.style?.border || '#ccc'\" [inputBgColor]=\"ques?.style?.bgColor || '#ffffff'\"\n [labelSize]=\"ques?.style?.labelFontSize\" [labelWeight]=\"ques?.style?.labelFontWeight\"\n [inputWeight]=\"ques?.style?.inputFontWeight\" [labelColor]=\"ques?.style?.labelColor\"\n [textAlign]=\"ques?.style?.textAlign\" [rows]=\"ques?.style?.rows\"\n\n [style.padding]=\"ques.type === 'Space' ? ques?.style?.padding : null\"\n [style.margin]=\"ques.type === 'Space' ? ques?.style?.margin : null\"\n\n (inputValue)=\"childEventCapture($event.value,$event.question, 'nxt-input')\"\n >\n </nxt-input>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n <!-- SKS27MAR26 Edit / crop modal -->\n <div class=\"img-modal-backdrop\" *ngIf=\"isImageEdit\">\n <div class=\"img-modal\">\n <div class=\"img-modal-header\">\n <span>Edit image</span>\n <button class=\"img-modal-close\" (click)=\"closeModal()\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>\n </svg>\n </button>\n </div>\n <div class=\"img-modal-canvas\">\n <image-cropper\n *ngIf=\"selectedImageElement?.imageData\"\n [imageBase64]=\"selectedImageElement.orgImageData\"\n [alignImage]=\"alignImage\"\n [roundCropper]=\"roundCropper\"\n [backgroundColor]=\"'#111111'\"\n [allowMoveImage]=\"false\"\n [hideResizeSquares]=\"false\"\n [canvasRotation]=\"canvasRotation\"\n [aspectRatio]=\"aspectRatio\"\n [containWithinAspectRatio]=\"false\"\n [maintainAspectRatio]=\"false\"\n [cropperStaticWidth]=\"cropperStaticWidth\"\n [cropperStaticHeight]=\"cropperStaticHeight\"\n [cropperMinWidth]=\"cropperMinWidth\"\n [cropperMinHeight]=\"cropperMinHeight\"\n [cropperMaxWidth]=\"cropperMaxWidth\"\n [cropperMaxHeight]=\"cropperMaxHeight\"\n [resetCropOnAspectRatioChange]=\"true\"\n [(cropper)]=\"cropper\"\n [(transform)]=\"transform\"\n [onlyScaleDown]=\"true\"\n output=\"blob\"\n format=\"png\"\n (imageCropped)=\"imageCropped($event)\"\n (cropperReady)=\"cropperReady($event)\">\n </image-cropper>\n </div>\n\n <div class=\"img-modal-controls\">\n <div class=\"img-ctrl-row\">\n <span class=\"img-ctrl-label\">Rotate</span>\n <div class=\"img-ctrl-btns\">\n <button class=\"img-ctrl-btn\" (click)=\"rotateLeft()\" title=\"Rotate left\">\u27F2</button>\n <button class=\"img-ctrl-btn\" (click)=\"rotateRight()\" title=\"Rotate right\">\u27F3</button>\n </div>\n <div class=\"img-ctrl-divider\"></div>\n <span class=\"img-ctrl-label\">Zoom</span>\n <div class=\"img-ctrl-btns\">\n <button class=\"img-ctrl-btn\" (click)=\"zoomOut()\">\u2212</button>\n <button class=\"img-ctrl-btn\" (click)=\"zoomIn()\">+</button>\n </div>\n <div class=\"img-ctrl-divider\"></div>\n <span class=\"img-ctrl-label\">Flip</span>\n <div class=\"img-ctrl-btns\">\n <button class=\"img-ctrl-btn\" [class.img-ctrl-active]=\"transform.flipH\"\n (click)=\"flipHorizontal()\">\u2194 H</button>\n <button class=\"img-ctrl-btn\" [class.img-ctrl-active]=\"transform.flipV\"\n (click)=\"flipVertical()\">\u2195 V</button>\n </div>\n <div class=\"img-ctrl-divider\"></div>\n <div class=\"img-ctrl-btns\">\n <button class=\"img-ctrl-btn\" (click)=\"resetImage()\">Reset</button>\n </div>\n </div>\n <div class=\"img-ctrl-row\">\n <span class=\"img-ctrl-label\">Move</span>\n <div class=\"img-ctrl-btns\">\n <button class=\"img-ctrl-btn\" (click)=\"moveLeft()\">\u2190</button>\n <button class=\"img-ctrl-btn\" (click)=\"moveRight()\">\u2192</button>\n <button class=\"img-ctrl-btn\" (click)=\"moveUp()\">\u2191</button>\n <button class=\"img-ctrl-btn\" (click)=\"moveDown()\">\u2193</button>\n </div>\n </div>\n </div>\n <div class=\"img-modal-footer\">\n <button class=\"img-btn-secondary\" (click)=\"closeModal()\">Cancel</button>\n <button class=\"img-btn-primary\" (click)=\"isImageEdit = false\">Apply</button>\n </div>\n </div>\n </div>", styles: [".col-lg-6{width:100%}.myt-font7{display:flex;justify-content:flex-start;align-items:center}.icon{display:inline-block;width:15px;height:15px;border-radius:50%;background-color:#08010177;color:#fff;text-align:center;line-height:16px;font-size:11px;font-family:Arial,sans-serif;font-weight:700;margin-left:5px}@media (min-width: 1200px){.col-lg-6{width:50%!important}.col-lg-6,.col-lg-4{padding-left:5px!important;padding-right:5px!important}.form-row{display:-ms-flexbox!important;display:flex!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}}.icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background-color:#f5f5f5;border:1px solid #ddd;color:#666;margin-left:4px;font-size:12px;cursor:pointer!important}::ng-deep .mat-tooltip-panel{background:#fff!important}::ng-deep .mat-tooltip{background-color:#fff!important;color:#333!important;white-space:pre-line!important;line-height:1.5!important}.mat-tooltip{padding:8px 16px!important}::ng-deep .white-tooltip{white-space:pre-line!important;line-height:1.5!important}.custom-line{width:100%;border:1px solid #d9d9d9}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100}.modal-content{background:#fff;padding:20px;width:500px;max-width:90%;border-radius:8px;position:relative;text-align:center}.close-button{position:absolute;top:6px;right:6px;font-size:25px;cursor:pointer;z-index:10}.controls{display:flex;gap:5px;justify-content:center;margin-top:10px}.logo-icon{cursor:pointer;padding:5px;width:35px;border-radius:5px;background:#d3d3d3}.logo-icon:hover{background:#a9a9a9}.enabled{background:#007bff;color:#fff}input[type=checkbox]{width:21px}.boolean-question{display:flex;align-items:center;gap:10px;padding-top:14px;padding-bottom:12px}.form-control[disabled]{border-radius:5px;background-color:#e9ecef!important}.img-upload-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:1.75rem 1rem;min-height:150px;border:1px dashed #d0cfc8;border-radius:10px;cursor:pointer;transition:background .15s,border-color .15s;background:transparent}.img-upload-zone:hover{background:#f7f6f2;border-color:#aaa}.img-upload-icon{width:40px;height:40px;border-radius:50%;background:#f1efe8;border:.5px solid #d3d1c7;display:flex;align-items:center;justify-content:center;color:#888780}.img-upload-text{font-size:13px;color:#5f5e5a}.img-upload-hint{font-size:11px;color:#888780}.img-empty-readonly{font-size:12px;color:#888780}.img-filled-wrap{position:relative;border-radius:10px;overflow:hidden;display:inline-block;max-width:100%}.img-preview{display:block;width:100%;max-height:200px;object-fit:cover}.img-hover-overlay{position:absolute;inset:0;background:#0000;display:flex;align-items:flex-start;justify-content:flex-end;padding:8px;gap:6px;opacity:0;transition:opacity .18s,background .18s}.img-filled-wrap:hover .img-hover-overlay{opacity:1;background:#00000042}.img-action-btn{width:30px;height:30px;border-radius:6px;background:#ffffffed;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s}.img-action-btn:hover{background:#fff}.img-modal-backdrop{position:fixed;inset:0;background:#00000027;display:flex;align-items:center;justify-content:center;z-index:1010}.img-modal{background:#fff;border:.5px solid #d3d1c7;border-radius:12px;width:480px;max-width:95vw;overflow:hidden}.img-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:.5px solid #e8e7e0;font-size:14px;font-weight:500}.img-modal-close{width:28px;height:28px;border-radius:6px;background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#888780}.img-modal-close:hover{background:#f1efe8}.img-modal-canvas{background:#111;height:220px;display:flex;align-items:center;justify-content:center}.img-modal-controls{padding:12px 14px;border-top:.5px solid #e8e7e0;display:flex;flex-direction:column;gap:8px}.img-ctrl-row{display:flex;align-items:center;gap:6px}.img-ctrl-label{font-size:11px;color:#888780;width:38px;flex-shrink:0}.img-ctrl-btns{display:flex;gap:4px}.img-ctrl-btn{height:28px;min-width:28px;padding:0 8px;border-radius:6px;background:#f1efe8;border:.5px solid #d3d1c7;cursor:pointer;font-size:12px;color:#2c2c2a;display:inline-flex;align-items:center;justify-content:center;transition:background .12s}.img-ctrl-btn:hover{background:#e8e7e0}.img-ctrl-active{background:#e6f1fb!important;border-color:#b5d4f4!important;color:#0c447c!important}.img-ctrl-divider{width:.5px;height:18px;background:#d3d1c7;flex-shrink:0;margin:0 4px}.img-modal-footer{padding:10px 14px;border-top:.5px solid #e8e7e0;display:flex;justify-content:flex-end;gap:8px}.img-btn-secondary{height:32px;padding:0 14px;border-radius:6px;background:#f1efe8;border:.5px solid #d3d1c7;font-size:13px;cursor:pointer;color:#2c2c2a}.img-btn-secondary:hover{background:#e8e7e0}.img-btn-primary{height:32px;padding:0 14px;border-radius:6px;background:#185fa5;border:none;font-size:13px;cursor:pointer;color:#fff}.img-btn-primary:hover{background:#0c447c}\n"], dependencies: [{ kind: "component", type: QuestionbookComponent, selector: "lib-questionbook", inputs: ["qbItem", "questionItem", "questions", "errorFieldId", "labelValue", "token", "isEdit", "dropDownData", "dataBind", "allIcons", "themeColor", "cdnIconURL", "direction", "languageCode", "from", "bgColor", "margin", "onlyView"], outputs: ["handleDropDown", "handleQuestion", "singleFieldChangeEmit", "hadleDropDownDependent", "handleCalendarDate", "handleCalendarEvent"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "options", "cropperFrameAriaLabel", "output", "format", "autoCrop", "cropper", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "checkImageType", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange", "cropperChange"] }, { kind: "component", type: NxtFileUpload, selector: "nxt-file-upload", inputs: ["allFiles", "mode", "config", "from", "dragAndDrop", "readOnly", "onlyView", "required", "hideSubtext", "label", "fileConfig"], outputs: ["selectedFileData", "deletedFileData"] }, { kind: "component", type: NxtRadio, selector: "nxt-radio", inputs: ["options", "question", "apiMeta", "selectedValue", "progressBar", "id", "readOnly", "errorMessage", "fromShengel", "referenceField", "token", "label", "mode", "onlyView"], outputs: ["valueChange"] }, { kind: "component", type: nxtDropdown, selector: "nxt-dropdown", inputs: ["options", "placeholder", "apiMeta", "selectedValue", "progressBar", "readOnly", "error", "fromShengel", "question", "mode", "from", "padding", "onlyView", "labelFont", "label", "labelColor", "inputTextColor", "labelSize", "inputValueSize", "labelWeight", "inputWeight", "showLabel", "inputBorder", "inputBgColor", "inputIconLeftSrc"], outputs: ["valueChange"] }, { kind: "component", type: NxtButtonComponent, selector: "nxt-button", inputs: ["buttonValue", "buttonType", "type", "buttonDisable", "btnBgColor", "btnBorder", "btnBorderRadius", "btnBorderColor", "btnTextColor", "btnHeight", "btnWidth", "btnIconLeftSrc", "btnIconRightSrc", "btnHoverBgColor", "btnHoverTextColor", "btnId", "dataDismiss", "modalToTrigger", "isImageSvg", "tabIndex", "buttonConfig", "mode", "languageCode", "padding", "isLoading", "selector", "dropdownLoadingButton"], outputs: ["buttonClickEmit"] }, { kind: "component", type: NxtSearchBox, selector: "nxt-search-box", inputs: ["placeHolderText", "question", "apiMeta", "id", "readOnly", "mode", "from", "value", "onlyView", "rowData"], outputs: ["searchValueChange"] }, { kind: "component", type: NxtDatatable, selector: "nxt-datatable", inputs: ["data", "summaryValues", "tableFilterData", "columns", "withCheckBox", "searchBar", "tableSaveButton", "hideSaveButton", "stickyColumn", "tableWidth", "actionColumHeader", "actionButton", "title", "isButtons", "buttonArray", "tableId", "isEditRow", "isDeleteRow", "addInlineRecord", "searchConfigs", "direction", "pagination", "actionButtonArray", "multipleFilter", "isPagination", "isListViews", "id", "isNosIndicator", "isEditable", "from", "question", "rowTextSize", "rowTextColor", "apiMeta", "summaryRows", "summaryColumns", "isLoading", "tableConfig", "tableParams", "listViews", "mode", "languageCode", "selectedColumn", "allIcons", "isButtonLoading", "isPreview", "groupFilter", "groupFilterConfig", "groupFilterColumn", "onlyView", "tableHeight", "serialNumberColumn"], outputs: ["tableRowClick", "onEditData", "onSaveData", "saveButtonData", "onDeleteData", "buttonEmit", "hyperLinkEmit", "sideNavEmit", "actionButtonEmit", "columnSelected", "removeColumn", "valueChange", "selectedValues", "fileEmit", "NxtTableFilterEmit", "hadleDropDownDependent", "NxtTableParamsEmit"] }, { kind: "component", type: CustomModelComponent, selector: "app-custom-model", inputs: ["modalTitle", "isModalOpen", "modalSize", "saveButtonValue", "modalFooter"], outputs: ["saveButtonEmit", "cancelButtonEmit"] }, { kind: "component", type: CustomCalendarComponent, selector: "app-custom-calendar", inputs: ["allEvents", "question", "nxtId"], outputs: ["eventSelected", "dateSelected", "openModal", "closeModal"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: NxtInput, selector: "nxt-input", inputs: ["label", "labelFont", "labelWeight", "inputWeight", "labelSize", "inputValueSize", "textAlign", "labelColor", "showLabel", "svgHeight", "svgWidth", "type", "inputIconRightSrc", "inputIconLeftSrc", "required", "minLength", "pattern", "errorMessages", "maxLength", "placeholder", "inputBgColor", "inputBorder", "placeholderColor", "placeholderFont", "placeholderWeight", "placeholderSize", "inputTextColor", "inputHeight", "inputWidth", "inputId", "inputBorderSize", "inputConfig", "confPassVal", "confPass", "mode", "value", "question", "showSuggestion", "ariaOwns", "ariaHasPopup", "isLoading", "options", "minDate", "maxDate", "rows", "from", "selectedOption", "apiMeta", "direction", "currency", "helpText", "apiKey", "readOnly", "padding", "margin", "onlyView", "size"], outputs: ["valueChange", "inputValue", "selectEmit", "onBlur", "onFocus", "toggleEmit", "removeValueEmit"] }, { kind: "component", type: IconSelectorComponent, selector: "nxt-icon-selector", inputs: ["allIcons", "themeColor", "height", "tooltipPosition", "selectedIcon", "cdnIconURL", "label", "labelFont", "labelWeight", "inputWeight", "labelSize", "labelColor", "showLabel", "required", "mode", "question", "options"], outputs: ["iconSelected"] }, { kind: "pipe", type: NxtCustomTranslatePipe, name: "nxtCustomTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
58322
58334
|
}
|
|
58323
58335
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: QuestionbookComponent, decorators: [{
|
|
@@ -58326,7 +58338,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
58326
58338
|
CommonModule,
|
|
58327
58339
|
FormsModule, ImageCropperComponent, NxtFileUpload, NxtRadio, nxtDropdown, NxtButtonComponent, NxtSearchBox, NxtDatatable, CustomModelComponent, CustomCalendarComponent, MatTooltipModule, NxtInput, IconSelectorComponent, NxtCustomTranslatePipe
|
|
58328
58340
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- HA 18JAN24 Added class for styling -->\n<div [style]=\"bookStyle\" class=\"content-box form-group\" [ngClass]=\"{ 'form-group': from !== 'questionbook' }\" [style.background-color]=\"from === 'questionbook' ? bgColor || '' : ''\" [style.margin]=\"from === 'questionbook' ? (margin || '0px') : '0px'\" >\n <div class=\"form-row\">\n <!-- HA 20DEC23 Directive and Question Style from salesforce -->\n <!-- RA09DEC24 Changed keys-->\n <ng-container *ngFor=\"let ques of questions;let i = index\">\n <div [style.display]=\"ques.isHidden ? 'none' : 'block'\" [class]=\"'col-lg-' + ques.size + ' paddingnone'\" \n [id]=\"ques.id\" [style]=\"ques?.style?.questionStyle\" [ngStyle]=\"ques?.style?.parrentMargin ? {'margin': ques?.style?.parrentMargin } : {'margin-top': '5px', 'margin-bottom': '5px'}\" >\n <!-- VD 09May24 is hide field change-->\n <div class=\"nxtInputContainer\">\n <!-- AP-28MAR25 Show label if enabled and not a Boolean type -->\n <div [ngClass]=\"{ down2: qbItem?.progressBar }\"\n *ngIf=\"(ques.style?.showLabel ?? true) && ![ 'Radio','Boolean','Text','List','Dropdown','RichTextArea','DateTime','month','Location','Number','Email','Date','Time','TextArea','Label','currency','File' ].includes(ques.type)\" \n [style]=\"ques.style?.labelStyle\">\n <div style=\"gap: 5px; display: flex; align-items: center;\" [style]=\"ques.style?.labelValueStyle\"\n [ngStyle]=\"{\n 'font-family': ques.font,\n 'color': ques.color || '#212529',\n 'font-size': ques.fontSize || '14px',\n 'font-weight': ques.fontWeight || 'normal'\n }\">{{ ques?.questionText ? ((ques.id+'.questionText') | nxtCustomTranslate : ques?.questionText):''}}\n <div *ngIf=\"ques.isOptional && !ques.isReadOnly \" style=\"color: red;\">*</div>\n </div>\n </div>\n <!-- calendar -->\n <div *ngIf=\"ques.type === 'Calendar'\" [class]=\"ques?.style?.inputClass\">\n <app-custom-calendar [question]=\"ques\" (eventSelected)=\"getCalendarEvent($event)\"\n (dateSelected)=\"getCurrentCalendar($event)\" (openModal)=\"openCalendarModal($event)\"\n (closeModal)=\"closeCalendarModal($event)\"></app-custom-calendar>\n <!-- model used in calendar component -->\n <app-custom-model *ngIf=\"isCalendarModalOpen\" [modalTitle]=\"calendarModalTitle\"\n [isModalOpen]=\"isCalendarModalOpen\" [modalSize]=\"calendarModalSize\"\n [saveButtonValue]=\"calendarSaveButtonValue\" [modalFooter]=\"modalCalendarModalFooter\"\n (saveButtonEmit)=\"onCalendarModalSave()\" (cancelButtonEmit)=\"closeCalendarModal($event)\">\n <lib-questionbook [qbItem]=\"qbRefrenceBook\" [questions]=\"referenceQuestions\"\n [isEdit]=\"isEdit\" \n (handleQuestion)=\"handleQuestionEvent($event)\">\n </lib-questionbook>\n </app-custom-model>\n </div>\n <!-- SKS27MAR26 Image element - improved -->\n <div *ngIf=\"ques.type === 'Image'\" [class]=\"ques?.style?.inputClass\">\n <!-- SKS27MAR26 Read-only mode -->\n <ng-container *ngIf=\"ques.isReadOnly\">\n <img *ngIf=\"ques.imageData\"\n [style.width.px]=\"ques.imageSize?.width || 150\"\n [style.height.px]=\"ques.imageSize?.height || 150\"\n [src]=\"ques.imageData\"\n style=\"object-fit: cover; border-radius: 8px; display: block;\" />\n <span *ngIf=\"!ques.imageData\" class=\"img-empty-readonly\">No image</span>\n </ng-container>\n <!-- SKS27MAR26 Editable mode -->\n <ng-container *ngIf=\"!ques.isReadOnly\">\n <!-- SKS27MAR26 Upload placeholder (no image yet) -->\n <label *ngIf=\"!ques.imageData\"\n class=\"img-upload-zone\"\n [for]=\"'img-upload-' + i\">\n <div class=\"img-upload-icon\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"1.5\">\n <polyline points=\"16 16 12 12 8 16\"/>\n <line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"/>\n <path d=\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\"/>\n </svg>\n </div>\n <span class=\"img-upload-text\">Click to upload image</span>\n <span class=\"img-upload-hint\">PNG, JPG, WEBP</span>\n <input type=\"file\" [id]=\"'img-upload-' + i\"\n accept=\"image/*\"\n (change)=\"fileChangeEvent(ques, $event)\"\n style=\"display: none;\" />\n </label>\n \n <!-- SKS27MAR26 Filled state with hover overlay -->\n <div *ngIf=\"ques.imageData\" class=\"img-filled-wrap\">\n <img [src]=\"ques.imageData\" class=\"img-preview\" alt=\"preview\" />\n <div class=\"img-hover-overlay\">\n <button class=\"img-action-btn img-edit-btn\"\n (click)=\"onImageEdit(ques)\"\n title=\"Edit / crop\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"1.8\">\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"/>\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"/>\n </svg>\n </button>\n <button class=\"img-action-btn img-delete-btn\"\n (click)=\"onImageDelete(ques)\"\n title=\"Remove image\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"#E24B4A\" stroke-width=\"1.8\">\n <polyline points=\"3 6 5 6 21 6\"/>\n <path d=\"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6\"/>\n <path d=\"M10 11v6\"/><path d=\"M14 11v6\"/>\n <path d=\"M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2\"/>\n </svg>\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n <!-- MSM10JUL25 icon-selector -->\n <nxt-icon-selector [class]=\"ques?.style?.inputClass\" [allIcons]=\"allIcons\" *ngIf=\"ques.type === 'Icon'\" [required]=\"ques.isOptional\" [mode]=\"isEdit !== true ? 'view' : 'edit'\" [question]=\"ques\" [labelFont]=\"ques.font\"\n [label]=\" ques?.questionText ? ((ques.id+'.questionText') | nxtCustomTranslate : ques?.questionText): ''\"\n [labelColor]=\"ques.color\" [selectedIcon]=\"{ metadata: { name: ques.input }}\"\n [labelSize]=\"ques.fontSize\" [labelWeight]=\"ques.fontWeight\" [showLabel]=\"ques.style?.showLabel\" (iconSelected)=\"childEventCapture($event, ques);\"></nxt-icon-selector>\n\n <!-- SKS21MAR25 line -->\n <hr [class]=\"ques?.style?.inputClass\" *ngIf=\"ques.type === 'Line'\" class=\"custom-line\" style=\"display: inline-flex\" />\n <!-- SKS13MAR25 data table -->\n <nxt-datatable *ngIf=\"ques.type === 'Table'\" [onlyView]=\"onlyView\" [class]=\"ques?.style?.inputClass\" isEditRow isDeleteRow actionButton isButtons [question]=\"ques\" from=\"questionBook\"\n (valueChange)=\"childEventCapture($event, ques)\" [apiMeta]=\"ques.subText\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\" [languageCode]=\"languageCode\"\n [tableConfig]=\"ques.tableConfig\" tableId=\"\" [direction]=\"direction\" tableWidth=\"auto\">\n </nxt-datatable>\n <!-- list -->\n <nxt-search-box *ngIf=\"ques.type === 'List'\" [onlyView]=\"onlyView\" [class]=\"ques?.style?.inputClass\" [question]=\"ques\" [readOnly]=\"ques.isReadOnly\" [apiMeta]=\"ques.subText\"\n [id]=\"ques.id\" [placeHolderText]=\"ques.question || ''\" [value]=\"ques.input\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\"\n (searchValueChange)=\"childEventCapture($event.value,$event.question)\">\n </nxt-search-box>\n\n <!-- Dropdown -->\n <!-- HA 09FEB24 Added condition of sqOption to the dropdown -->\n <nxt-dropdown *ngIf=\"ques?.type === 'Dropdown' && ques?.options\" \n [onlyView]=\"onlyView\" \n [class]=\"ques?.style?.inputClass\" \n [options]=\"ques.options\" \n [apiMeta]=\"ques.subText\"\n [id]=\"ques.id\" \n [from]=\"'nxtForm'\"\n [selectedValue]=\"qbItem.isShengel ? ques.input : ques.selectedValue\"\n [placeholder]=\"ques?.question ? ((ques.id+'.question') | nxtCustomTranslate : ques?.question ): ''\"\n [readOnly]=\"ques.isReadOnly\" \n [question]=\"ques\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\" \n [padding]=\"ques?.padding\"\n [labelFont]=\"ques?.font\"\n [label]=\"ques?.questionText\"\n [labelColor]=\"ques?.color\"\n [inputTextColor]=\"ques?.color\"\n [labelSize]=\"ques?.fontSize\"\n [inputValueSize]=\"ques?.fontSize\"\n [labelWeight]=\"ques?.fontWeight\"\n [inputWeight]=\"ques?.fontWeight\"\n [showLabel]=\"ques?.style?.showLabel ?? true\"\n [inputBgColor]=\"ques?.inputBgColor\"\n [inputIconLeftSrc]=\"ques?.iconLeftSrc\"\n (valueChange)=\"childEventCapture($event.value,$event.question)\">\n </nxt-dropdown>\n <!-- // VD 02Aug24 custom-radio component -->\n <div *ngIf=\"ques.type === 'Radio' && ques?.options\" [class]=\"ques?.style?.inputClass\" class=\"\">\n <nxt-radio [options]=\"ques.options\" [question]=\"ques\" [apiMeta]=\"ques.subText\" [id]=\"ques.id\"\n [selectedValue]=\"ques.selectedValue\" [errorMessage]=\"ques.errorMessage\"\n [referenceField]=\"ques.referenceField\" [readOnly]=\"ques.isReadOnly\"\n [label]=\"ques?.questionText ? ((ques.id+'.questionText') | nxtCustomTranslate : ques?.questionText): ''\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\" [onlyView]=\"onlyView\"\n (valueChange)=\"childEventCapture($event.value,$event.question)\">\n </nxt-radio>\n </div>\n <!-- Attachment / Files -->\n <nxt-file-upload *ngIf=\"ques.type === 'File'\" \n [class]=\"ques?.style?.inputClass\" \n [config]=\"ques\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\" \n [readOnly]=\"ques.isReadOnly\"\n [allFiles]=\"ques.input\" \n [onlyView]=\"onlyView\"\n [label]=\"ques.questionText\"\n [required]=\"ques.isOptional\"\n [fileConfig]=\"ques.subText\"\n (selectedFileData)=\"childEventCapture($event.value,$event.config)\"\n (deletedFileData)=\"deleteFile($event)\">\n </nxt-file-upload>\n <!-- SKS11JUN25 Button -->\n <nxt-button\n *ngIf=\"ques.type === 'Button'\" [class]=\"ques?.style?.inputClass\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\"\n [btnHeight]=\"'50px'\" [btnWidth]=\"'150px'\" [buttonValue]=\"ques?.question\"\n (buttonClickEmit)=\"childEventCapture($event, ques)\"\n >\n </nxt-button>\n <!-- SKS11JUN25 book type -->\n <lib-questionbook *ngIf=\"ques.type === 'Book'\" [class]=\"ques?.style?.inputClass\"\n [bgColor]=\"ques?.style?.bgColor\" [margin]=\"ques?.style?.margin || '0px'\"\n [qbItem]=\"ques.qbItem\" [labelValue]=\"labelValue\" [onlyView]=\"onlyView\"\n [questions]=\"ques?.qbReferenceQuestions?.bookQuestionsMap?.[ques?.qbReference]?.subQuestions\"\n [isEdit]=\"isEdit\" [from]=\"'questionbook'\"\n (handleDropDown)=\"getDropDown($event)\">\n </lib-questionbook>\n <!-- SKS11JUN25 Text, Email, label, number, Boolean, rich text editor, DateTime, Date, Time-->\n <!-- SKS16OCT25 added custom style fields for input -->\n <nxt-input *ngIf=\"['Space','Text','Email','Number','Label','Boolean','RichTextArea','DateTime','month','Date','Time','TextArea','Location','currency'].includes(ques.type)\"\n [type]=\"ques.type === 'Text' ? 'text' : ques.type === 'Email' ? 'email' : ques.type === 'Number' ? 'number' : ques.type === 'Label' ? 'label' : ques.type === 'Boolean' ? 'checkbox' : ques.type === 'RichTextArea' ? 'richtext' : ques.type === 'DateTime' ? 'datetime' : ques.type === 'Date' ? 'date' : ques.type === 'Time' ? 'time' : ques.type === 'TextArea' ? 'textarea' : ques.type === 'month' ? 'month' : ques.type === 'Location' ? 'location' : ques.type === 'Space' ? 'space' : ques.type === 'currency' ? 'currency': 'text'\"\n [mode]=\"isEdit !== true ? 'view' : 'edit'\"\n [value]=\"ques.input\" [class]=\"ques?.style?.inputClass\"\n [question]=\"ques\" [readOnly]=\"ques.isReadOnly\"\n [apiKey]=\"qbItem['apiKey']\"\n [labelFont]=\"ques.font\"\n [label]=\"ques?.questionText ? ((ques.id+'.questionText') | nxtCustomTranslate : ques?.questionText): ''\"\n [showLabel]=\"ques.style?.showLabel\"\n svgHeight=\"20px\" svgWidth=\"20px\"\n [placeholder]=\"ques?.question ? ((ques.id+'.question') | nxtCustomTranslate : ques?.question ): ''\"\n [required]=\"ques.isOptional\"\n [inputId]=\"ques.trackingId\"\n [errorMessages]=\"{ required: 'This field is required' }\"\n [inputIconLeftSrc]=\"ques.iconLeftSrc\" \n [minDate]=\"ques.minDate\"\n [maxDate]=\"ques.maxDate\"\n [rows]=\"2\"\n [apiMeta]=\"ques.subText\"\n [direction]=\"direction\"\n [onlyView]=\"onlyView\"\n [from]=\"'nxtForm'\"\n\n [padding]=\"ques?.style?.padding\" [margin]=\"ques?.style?.margin\" [inputValueSize]=\"ques?.style?.inputFontSize\"\n [inputBorder]=\"ques?.style?.border || '#ccc'\" [inputBgColor]=\"ques?.style?.bgColor || '#ffffff'\"\n [labelSize]=\"ques?.style?.labelFontSize\" [labelWeight]=\"ques?.style?.labelFontWeight\"\n [inputWeight]=\"ques?.style?.inputFontWeight\" [labelColor]=\"ques?.style?.labelColor\"\n [textAlign]=\"ques?.style?.textAlign\" [rows]=\"ques?.style?.rows\"\n\n [style.padding]=\"ques.type === 'Space' ? ques?.style?.padding : null\"\n [style.margin]=\"ques.type === 'Space' ? ques?.style?.margin : null\"\n\n (inputValue)=\"childEventCapture($event.value,$event.question, 'nxt-input')\"\n >\n </nxt-input>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n <!-- SKS27MAR26 Edit / crop modal -->\n <div class=\"img-modal-backdrop\" *ngIf=\"isImageEdit\">\n <div class=\"img-modal\">\n <div class=\"img-modal-header\">\n <span>Edit image</span>\n <button class=\"img-modal-close\" (click)=\"closeModal()\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>\n </svg>\n </button>\n </div>\n <div class=\"img-modal-canvas\">\n <image-cropper\n *ngIf=\"selectedImageElement?.imageData\"\n [imageBase64]=\"selectedImageElement.orgImageData\"\n [alignImage]=\"alignImage\"\n [roundCropper]=\"roundCropper\"\n [backgroundColor]=\"'#111111'\"\n [allowMoveImage]=\"false\"\n [hideResizeSquares]=\"false\"\n [canvasRotation]=\"canvasRotation\"\n [aspectRatio]=\"aspectRatio\"\n [containWithinAspectRatio]=\"false\"\n [maintainAspectRatio]=\"false\"\n [cropperStaticWidth]=\"cropperStaticWidth\"\n [cropperStaticHeight]=\"cropperStaticHeight\"\n [cropperMinWidth]=\"cropperMinWidth\"\n [cropperMinHeight]=\"cropperMinHeight\"\n [cropperMaxWidth]=\"cropperMaxWidth\"\n [cropperMaxHeight]=\"cropperMaxHeight\"\n [resetCropOnAspectRatioChange]=\"true\"\n [(cropper)]=\"cropper\"\n [(transform)]=\"transform\"\n [onlyScaleDown]=\"true\"\n output=\"blob\"\n format=\"png\"\n (imageCropped)=\"imageCropped($event)\"\n (cropperReady)=\"cropperReady($event)\">\n </image-cropper>\n </div>\n\n <div class=\"img-modal-controls\">\n <div class=\"img-ctrl-row\">\n <span class=\"img-ctrl-label\">Rotate</span>\n <div class=\"img-ctrl-btns\">\n <button class=\"img-ctrl-btn\" (click)=\"rotateLeft()\" title=\"Rotate left\">\u27F2</button>\n <button class=\"img-ctrl-btn\" (click)=\"rotateRight()\" title=\"Rotate right\">\u27F3</button>\n </div>\n <div class=\"img-ctrl-divider\"></div>\n <span class=\"img-ctrl-label\">Zoom</span>\n <div class=\"img-ctrl-btns\">\n <button class=\"img-ctrl-btn\" (click)=\"zoomOut()\">\u2212</button>\n <button class=\"img-ctrl-btn\" (click)=\"zoomIn()\">+</button>\n </div>\n <div class=\"img-ctrl-divider\"></div>\n <span class=\"img-ctrl-label\">Flip</span>\n <div class=\"img-ctrl-btns\">\n <button class=\"img-ctrl-btn\" [class.img-ctrl-active]=\"transform.flipH\"\n (click)=\"flipHorizontal()\">\u2194 H</button>\n <button class=\"img-ctrl-btn\" [class.img-ctrl-active]=\"transform.flipV\"\n (click)=\"flipVertical()\">\u2195 V</button>\n </div>\n <div class=\"img-ctrl-divider\"></div>\n <div class=\"img-ctrl-btns\">\n <button class=\"img-ctrl-btn\" (click)=\"resetImage()\">Reset</button>\n </div>\n </div>\n <div class=\"img-ctrl-row\">\n <span class=\"img-ctrl-label\">Move</span>\n <div class=\"img-ctrl-btns\">\n <button class=\"img-ctrl-btn\" (click)=\"moveLeft()\">\u2190</button>\n <button class=\"img-ctrl-btn\" (click)=\"moveRight()\">\u2192</button>\n <button class=\"img-ctrl-btn\" (click)=\"moveUp()\">\u2191</button>\n <button class=\"img-ctrl-btn\" (click)=\"moveDown()\">\u2193</button>\n </div>\n </div>\n </div>\n <div class=\"img-modal-footer\">\n <button class=\"img-btn-secondary\" (click)=\"closeModal()\">Cancel</button>\n <button class=\"img-btn-primary\" (click)=\"isImageEdit = false\">Apply</button>\n </div>\n </div>\n </div>", styles: [".col-lg-6{width:100%}.myt-font7{display:flex;justify-content:flex-start;align-items:center}.icon{display:inline-block;width:15px;height:15px;border-radius:50%;background-color:#08010177;color:#fff;text-align:center;line-height:16px;font-size:11px;font-family:Arial,sans-serif;font-weight:700;margin-left:5px}@media (min-width: 1200px){.col-lg-6{width:50%!important}.col-lg-6,.col-lg-4{padding-left:5px!important;padding-right:5px!important}.form-row{display:-ms-flexbox!important;display:flex!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}}.icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background-color:#f5f5f5;border:1px solid #ddd;color:#666;margin-left:4px;font-size:12px;cursor:pointer!important}::ng-deep .mat-tooltip-panel{background:#fff!important}::ng-deep .mat-tooltip{background-color:#fff!important;color:#333!important;white-space:pre-line!important;line-height:1.5!important}.mat-tooltip{padding:8px 16px!important}::ng-deep .white-tooltip{white-space:pre-line!important;line-height:1.5!important}.custom-line{width:100%;border:1px solid #d9d9d9}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100}.modal-content{background:#fff;padding:20px;width:500px;max-width:90%;border-radius:8px;position:relative;text-align:center}.close-button{position:absolute;top:6px;right:6px;font-size:25px;cursor:pointer;z-index:10}.controls{display:flex;gap:5px;justify-content:center;margin-top:10px}.logo-icon{cursor:pointer;padding:5px;width:35px;border-radius:5px;background:#d3d3d3}.logo-icon:hover{background:#a9a9a9}.enabled{background:#007bff;color:#fff}input[type=checkbox]{width:21px}.boolean-question{display:flex;align-items:center;gap:10px;padding-top:14px;padding-bottom:12px}.form-control[disabled]{border-radius:5px;background-color:#e9ecef!important}.img-upload-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:1.75rem 1rem;min-height:150px;border:1px dashed #d0cfc8;border-radius:10px;cursor:pointer;transition:background .15s,border-color .15s;background:transparent}.img-upload-zone:hover{background:#f7f6f2;border-color:#aaa}.img-upload-icon{width:40px;height:40px;border-radius:50%;background:#f1efe8;border:.5px solid #d3d1c7;display:flex;align-items:center;justify-content:center;color:#888780}.img-upload-text{font-size:13px;color:#5f5e5a}.img-upload-hint{font-size:11px;color:#888780}.img-empty-readonly{font-size:12px;color:#888780}.img-filled-wrap{position:relative;border-radius:10px;overflow:hidden;display:inline-block;max-width:100%}.img-preview{display:block;width:100%;max-height:200px;object-fit:cover}.img-hover-overlay{position:absolute;inset:0;background:#0000;display:flex;align-items:flex-start;justify-content:flex-end;padding:8px;gap:6px;opacity:0;transition:opacity .18s,background .18s}.img-filled-wrap:hover .img-hover-overlay{opacity:1;background:#00000042}.img-action-btn{width:30px;height:30px;border-radius:6px;background:#ffffffed;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s}.img-action-btn:hover{background:#fff}.img-modal-backdrop{position:fixed;inset:0;background:#00000027;display:flex;align-items:center;justify-content:center;z-index:1010}.img-modal{background:#fff;border:.5px solid #d3d1c7;border-radius:12px;width:480px;max-width:95vw;overflow:hidden}.img-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:.5px solid #e8e7e0;font-size:14px;font-weight:500}.img-modal-close{width:28px;height:28px;border-radius:6px;background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#888780}.img-modal-close:hover{background:#f1efe8}.img-modal-canvas{background:#111;height:220px;display:flex;align-items:center;justify-content:center}.img-modal-controls{padding:12px 14px;border-top:.5px solid #e8e7e0;display:flex;flex-direction:column;gap:8px}.img-ctrl-row{display:flex;align-items:center;gap:6px}.img-ctrl-label{font-size:11px;color:#888780;width:38px;flex-shrink:0}.img-ctrl-btns{display:flex;gap:4px}.img-ctrl-btn{height:28px;min-width:28px;padding:0 8px;border-radius:6px;background:#f1efe8;border:.5px solid #d3d1c7;cursor:pointer;font-size:12px;color:#2c2c2a;display:inline-flex;align-items:center;justify-content:center;transition:background .12s}.img-ctrl-btn:hover{background:#e8e7e0}.img-ctrl-active{background:#e6f1fb!important;border-color:#b5d4f4!important;color:#0c447c!important}.img-ctrl-divider{width:.5px;height:18px;background:#d3d1c7;flex-shrink:0;margin:0 4px}.img-modal-footer{padding:10px 14px;border-top:.5px solid #e8e7e0;display:flex;justify-content:flex-end;gap:8px}.img-btn-secondary{height:32px;padding:0 14px;border-radius:6px;background:#f1efe8;border:.5px solid #d3d1c7;font-size:13px;cursor:pointer;color:#2c2c2a}.img-btn-secondary:hover{background:#e8e7e0}.img-btn-primary{height:32px;padding:0 14px;border-radius:6px;background:#185fa5;border:none;font-size:13px;cursor:pointer;color:#fff}.img-btn-primary:hover{background:#0c447c}\n"] }]
|
|
58329
|
-
}], ctorParameters: () => [{ type: DataService }, { type: ChangeService }], propDecorators: { qbItem: [{
|
|
58341
|
+
}], ctorParameters: () => [{ type: DataService }, { type: ChangeService }, { type: i0.ChangeDetectorRef }], propDecorators: { qbItem: [{
|
|
58330
58342
|
type: Input
|
|
58331
58343
|
}], questionItem: [{
|
|
58332
58344
|
type: Input
|
|
@@ -58377,9 +58389,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
58377
58389
|
}] } });
|
|
58378
58390
|
|
|
58379
58391
|
class BookletComponent {
|
|
58380
|
-
sfService;
|
|
58381
58392
|
dataService;
|
|
58382
|
-
sanitizer;
|
|
58383
58393
|
changeService;
|
|
58384
58394
|
http;
|
|
58385
58395
|
translationService;
|
|
@@ -58431,11 +58441,10 @@ class BookletComponent {
|
|
|
58431
58441
|
questionbookComponent;
|
|
58432
58442
|
stickyBar;
|
|
58433
58443
|
destroy$ = new Subject();
|
|
58444
|
+
processBookletRunId = 0;
|
|
58434
58445
|
scrollHandler = (event) => { };
|
|
58435
|
-
constructor(
|
|
58436
|
-
this.sfService = sfService;
|
|
58446
|
+
constructor(dataService, changeService, http, translationService, ngZone, cdr) {
|
|
58437
58447
|
this.dataService = dataService;
|
|
58438
|
-
this.sanitizer = sanitizer;
|
|
58439
58448
|
this.changeService = changeService;
|
|
58440
58449
|
this.http = http;
|
|
58441
58450
|
this.translationService = translationService;
|
|
@@ -58446,7 +58455,6 @@ class BookletComponent {
|
|
|
58446
58455
|
}
|
|
58447
58456
|
ngOnInit() {
|
|
58448
58457
|
this.isEditVal = this.isEdit;
|
|
58449
|
-
this.processBooklet();
|
|
58450
58458
|
//AP-16APR25 // Get the dynamic API URL and pass it to the service method
|
|
58451
58459
|
let apidata = this.apiUrl;
|
|
58452
58460
|
this.dataService.apikey(apidata);
|
|
@@ -58458,15 +58466,10 @@ class BookletComponent {
|
|
|
58458
58466
|
.subscribe(() => {
|
|
58459
58467
|
this.updateSaveButtonState();
|
|
58460
58468
|
});
|
|
58469
|
+
this.triggerProcessBooklet();
|
|
58461
58470
|
}
|
|
58462
58471
|
// VD NOV23 - update the json data when bookletId and bookletJSON changes
|
|
58463
58472
|
ngOnChanges(simplechanges) {
|
|
58464
|
-
// HA 23JAN24 To avoid undefined error
|
|
58465
|
-
if (simplechanges['bookletId'] || (simplechanges['bookletJSON'] && simplechanges['bookletJSON'].currentValue != null) || (simplechanges['dataBind'] && simplechanges['dataBind'].currentValue != null)) {
|
|
58466
|
-
this.allEvents = [];
|
|
58467
|
-
this.orginalDataBind = this.dataBind;
|
|
58468
|
-
this.processBooklet();
|
|
58469
|
-
}
|
|
58470
58473
|
//AP-19MAY25 - If bookletJSON input changes, trigger processData on QuestionbookComponent
|
|
58471
58474
|
if (simplechanges['bookletJSON']) {
|
|
58472
58475
|
this.isEditVal = this.isEdit;
|
|
@@ -58492,6 +58495,12 @@ class BookletComponent {
|
|
|
58492
58495
|
if (this.languageCode) {
|
|
58493
58496
|
this.translationService.setLanguage(this.languageCode);
|
|
58494
58497
|
}
|
|
58498
|
+
// HA 23JAN24 To avoid undefined error
|
|
58499
|
+
if ((simplechanges['bookletJSON'] && simplechanges['bookletJSON'].currentValue != null) || (simplechanges['dataBind'] && simplechanges['dataBind'].currentValue != null)) {
|
|
58500
|
+
this.allEvents = [];
|
|
58501
|
+
this.orginalDataBind = this.dataBind;
|
|
58502
|
+
this.triggerProcessBooklet(simplechanges['dataBind'] ? 'dataBind' : 'bookletJSON');
|
|
58503
|
+
}
|
|
58495
58504
|
}
|
|
58496
58505
|
// AP-28MAY25 - Converts old action string (JSON) into a new model (array of action objects)
|
|
58497
58506
|
upgradeActions(actionString) {
|
|
@@ -58515,13 +58524,14 @@ class BookletComponent {
|
|
|
58515
58524
|
}
|
|
58516
58525
|
return [];
|
|
58517
58526
|
}
|
|
58518
|
-
|
|
58519
|
-
|
|
58520
|
-
|
|
58521
|
-
|
|
58522
|
-
|
|
58523
|
-
|
|
58524
|
-
|
|
58527
|
+
triggerProcessBooklet(from) {
|
|
58528
|
+
this.processBooklet(from).catch(error => {
|
|
58529
|
+
console.error('Error while processing booklet', error);
|
|
58530
|
+
});
|
|
58531
|
+
}
|
|
58532
|
+
async processBooklet(from) {
|
|
58533
|
+
const runId = ++this.processBookletRunId;
|
|
58534
|
+
if (this.bookletJSON) {
|
|
58525
58535
|
if (this.bookletJSON?.translationMap)
|
|
58526
58536
|
this.translationService.updateTranslations(this.bookletJSON.translationMap);
|
|
58527
58537
|
// Try to pass a value from Backend to differentiate the QuestionBook Read and AnswerBook Read
|
|
@@ -58541,6 +58551,24 @@ class BookletComponent {
|
|
|
58541
58551
|
this.bookletJSON['bookQuestionsMap'][Object.keys(this.bookletJSON?.bookQuestionsMap)[0]].subQuestions = tempbook;
|
|
58542
58552
|
// Storing the API response for future use
|
|
58543
58553
|
}
|
|
58554
|
+
// AP 23MAY25 - supports both stringified and object formats
|
|
58555
|
+
if (this.bookletJSON?.questionbook?.action != undefined && this.bookletJSON?.questionbook?.action != '') {
|
|
58556
|
+
this.actions = typeof this.bookletJSON?.questionbook.action === 'string'
|
|
58557
|
+
? JSON.parse(this.bookletJSON?.questionbook.action)
|
|
58558
|
+
: this.bookletJSON?.questionbook.action;
|
|
58559
|
+
this.actions = [
|
|
58560
|
+
...this.actions.filter((a) => a.eventtoemit !== 'close'),
|
|
58561
|
+
...this.actions.filter((a) => a.eventtoemit === 'close')
|
|
58562
|
+
];
|
|
58563
|
+
}
|
|
58564
|
+
// HA 18-JAN-24 The condition is used for Bind-In Logic
|
|
58565
|
+
await this.handleCompleteBooklet(this.bookletJSON, from);
|
|
58566
|
+
if (runId !== this.processBookletRunId || from !== 'bookletJSON') {
|
|
58567
|
+
return;
|
|
58568
|
+
}
|
|
58569
|
+
this.booklet = this.bookletJSON?.records;
|
|
58570
|
+
this.abItem = this.bookletJSON?.answerbook;
|
|
58571
|
+
this.cdr.markForCheck();
|
|
58544
58572
|
// Process the Questions
|
|
58545
58573
|
// HA 28DEC23 this applies for booklet
|
|
58546
58574
|
// HA 17JAN24 Added ternary operator to avoid undefined scenario
|
|
@@ -58550,77 +58578,27 @@ class BookletComponent {
|
|
|
58550
58578
|
this.bookQuestionsMap.set(value, this.bookletJSON?.bookQuestionsMap[value]);
|
|
58551
58579
|
}
|
|
58552
58580
|
}
|
|
58553
|
-
// HA 28DEC23 this applies for book or questions
|
|
58554
|
-
else if (this.bookletJSON?.records) {
|
|
58581
|
+
else if (this.bookletJSON?.records) { // HA 28DEC23 this applies for book or questions
|
|
58555
58582
|
var value = '';
|
|
58556
58583
|
// HA 09FEB24 Added ternary
|
|
58557
58584
|
// RS 09DEC24 Changed keys
|
|
58558
58585
|
value = this.bookletJSON?.records[0]?.id;
|
|
58559
58586
|
this.bookQuestionsMap.set(value, this.bookletJSON?.questionbook);
|
|
58560
58587
|
}
|
|
58561
|
-
|
|
58562
|
-
|
|
58563
|
-
this.
|
|
58564
|
-
|
|
58565
|
-
|
|
58566
|
-
|
|
58567
|
-
|
|
58568
|
-
|
|
58569
|
-
];
|
|
58588
|
+
if (from === 'dataBind' && this.dataBind && Object.keys(this.dataBind).length > 0) {
|
|
58589
|
+
this.bookQuestionsMap = new Map(this.bookQuestionsMap);
|
|
58590
|
+
this.cdr.markForCheck();
|
|
58591
|
+
Promise.resolve().then(() => {
|
|
58592
|
+
if (runId === this.processBookletRunId) {
|
|
58593
|
+
this.changeService.dataChanges('dataBind');
|
|
58594
|
+
}
|
|
58595
|
+
});
|
|
58570
58596
|
}
|
|
58571
58597
|
}
|
|
58572
|
-
// HA 18-JAN-24 The condition is used for Bind-In Logic
|
|
58573
|
-
this.handleCompleteBooklet(this.bookletJSON);
|
|
58574
|
-
this.booklet = this.bookletJSON?.records;
|
|
58575
|
-
this.abItem = this.bookletJSON?.answerbook;
|
|
58576
58598
|
}
|
|
58577
|
-
// VD 12Jun24 - translation changes
|
|
58578
|
-
readBooklet = (uuid) => {
|
|
58579
|
-
if (this.serv == "api") {
|
|
58580
|
-
this.dataService.getAPIData(this.tkn, ["Booklet", "read", uuid, this.languageCode], this.successReadBooklet, this.failureReadBooklet);
|
|
58581
|
-
}
|
|
58582
|
-
else {
|
|
58583
|
-
// VD 31NOV24 param changes with new method
|
|
58584
|
-
let paramMap = { createAnswerBookFlag: false };
|
|
58585
|
-
paramMap['c__qb_id'] = '';
|
|
58586
|
-
paramMap["c__record_id"] = '';
|
|
58587
|
-
let para = {
|
|
58588
|
-
dataType: "Booklet",
|
|
58589
|
-
operation: "read",
|
|
58590
|
-
param1: uuid,
|
|
58591
|
-
paramJSON: JSON.stringify(paramMap),
|
|
58592
|
-
languageCode: this.languageCode
|
|
58593
|
-
};
|
|
58594
|
-
this.sfService.remoteAction("NxtController.processData", [JSON.stringify(para)], this.successReadBooklet, this.failureReadBooklet);
|
|
58595
|
-
}
|
|
58596
|
-
};
|
|
58597
|
-
successReadBooklet = (response) => {
|
|
58598
|
-
if (response != null || response != undefined) {
|
|
58599
|
-
// Try to pass a value from Backend to differentiate the QuestionBook Read and AnswerBook Read
|
|
58600
|
-
// this.isAnswerFlag = true;
|
|
58601
|
-
this.booklet = response.records;
|
|
58602
|
-
this.abItem = response.answerbook;
|
|
58603
|
-
// Process the Questions
|
|
58604
|
-
for (var value in response.bookQuestionsMap) {
|
|
58605
|
-
this.bookQuestionsMap.set(value, response.bookQuestionsMap[value]);
|
|
58606
|
-
}
|
|
58607
|
-
// VD 31NOV24 wrapper changes
|
|
58608
|
-
if (response.questionbook?.action != undefined) {
|
|
58609
|
-
this.actions = typeof response.questionbook?.action === 'string'
|
|
58610
|
-
? JSON.parse(response.questionbook?.action)
|
|
58611
|
-
: response.questionbook?.action;
|
|
58612
|
-
this.actions = [
|
|
58613
|
-
...this.actions.filter((a) => a.eventtoemit !== 'close'),
|
|
58614
|
-
...this.actions.filter((a) => a.eventtoemit === 'close')
|
|
58615
|
-
];
|
|
58616
|
-
}
|
|
58617
|
-
}
|
|
58618
|
-
};
|
|
58619
|
-
failureReadBooklet = (response) => {
|
|
58620
|
-
};
|
|
58621
58599
|
//SKS28MAR25 Function to fetch refqb data
|
|
58622
58600
|
getRefQbData(refqbid) {
|
|
58623
|
-
return this.http.get(
|
|
58601
|
+
return this.http.get(`${this.apiUrl}/nxt?name=${refqbid}`);
|
|
58624
58602
|
}
|
|
58625
58603
|
singleFieldChange(event) {
|
|
58626
58604
|
let actionButton;
|
|
@@ -58629,9 +58607,9 @@ class BookletComponent {
|
|
|
58629
58607
|
actionButton = action;
|
|
58630
58608
|
}
|
|
58631
58609
|
});
|
|
58632
|
-
this.handleBookletActionClick(actionButton, event);
|
|
58610
|
+
void this.handleBookletActionClick(actionButton, event);
|
|
58633
58611
|
}
|
|
58634
|
-
handleBookletActionClick(action, ques) {
|
|
58612
|
+
async handleBookletActionClick(action, ques) {
|
|
58635
58613
|
// HA 19JAN24 Action changes
|
|
58636
58614
|
// RS 09DEC24 Changed keys
|
|
58637
58615
|
this.answerList = [];
|
|
@@ -58652,7 +58630,7 @@ class BookletComponent {
|
|
|
58652
58630
|
dataToParent['nxtId'] = Object.keys(this.bookletJSON?.bookQuestionsMap)[0];
|
|
58653
58631
|
}
|
|
58654
58632
|
// HA 11-JAN-24 Minimizing the value which has to be passed to the server
|
|
58655
|
-
this.handleCompleteBooklet(dataToParent['jsonBook']);
|
|
58633
|
+
await this.handleCompleteBooklet(dataToParent['jsonBook']);
|
|
58656
58634
|
dataToParent['data'] = this.answerList ? this.answerList : dataToParent['data'];
|
|
58657
58635
|
// when clicking the submit button validating the required fields
|
|
58658
58636
|
for (let key in dataToParent['jsonBook'].bookQuestionsMap) {
|
|
@@ -58706,7 +58684,7 @@ class BookletComponent {
|
|
|
58706
58684
|
if (action?.eventtoemit === 'close' && !this.isEdit) {
|
|
58707
58685
|
this.isEditVal = false;
|
|
58708
58686
|
this.dataBind = this.orginalDataBind;
|
|
58709
|
-
this.
|
|
58687
|
+
this.triggerProcessBooklet();
|
|
58710
58688
|
}
|
|
58711
58689
|
// HA 23JAN24 To call the action on any event
|
|
58712
58690
|
// VD 01Aug24 - validation change
|
|
@@ -58728,42 +58706,39 @@ class BookletComponent {
|
|
|
58728
58706
|
}
|
|
58729
58707
|
}
|
|
58730
58708
|
// HA 18-JAN-24 handleCompleteBooklet is to simplify the logic
|
|
58731
|
-
handleCompleteBooklet(completeBooklet) {
|
|
58709
|
+
async handleCompleteBooklet(completeBooklet, from) {
|
|
58732
58710
|
if (Object.keys(completeBooklet?.bookQuestionsMap ?? {}).length === 0) { // HA 11-JAN-24 If condition to load booklet
|
|
58733
|
-
this.handleBook(completeBooklet?.questionbook?.subQuestions);
|
|
58711
|
+
await this.handleBook(completeBooklet?.questionbook?.subQuestions, from);
|
|
58734
58712
|
}
|
|
58735
58713
|
else { // HA 11-JAN-24 To load book questions
|
|
58736
58714
|
for (const key in completeBooklet.bookQuestionsMap) {
|
|
58737
58715
|
const val = completeBooklet.bookQuestionsMap[key];
|
|
58738
58716
|
if (val.type === 'Book') {
|
|
58739
|
-
this.handleBook(val.subQuestions);
|
|
58717
|
+
await this.handleBook(val.subQuestions, from);
|
|
58740
58718
|
}
|
|
58741
58719
|
else {
|
|
58742
|
-
this.handleQues(val);
|
|
58720
|
+
await this.handleQues(val);
|
|
58743
58721
|
}
|
|
58744
58722
|
}
|
|
58745
58723
|
}
|
|
58746
58724
|
}
|
|
58747
58725
|
// HA 11-JAN-24 handleBook loads the Book
|
|
58748
58726
|
// RS 09DEC24 Changed keys
|
|
58749
|
-
handleBook(quesList) {
|
|
58750
|
-
|
|
58727
|
+
async handleBook(quesList, from) {
|
|
58728
|
+
for (const element of quesList || []) {
|
|
58751
58729
|
if (element.type === 'Book' && element.qbReferenceQuestions) {
|
|
58752
58730
|
// HA 24JAN24 Fetching from QB reference
|
|
58753
58731
|
var book = typeof element.qbReferenceQuestions === 'object' ? element.qbReferenceQuestions : JSON.parse(element.qbReferenceQuestions);
|
|
58754
58732
|
const firstKey = Object.keys(book?.bookQuestionsMap || {})[0];
|
|
58755
|
-
book?.bookQuestionsMap[firstKey]?.subQuestions
|
|
58756
|
-
|
|
58757
|
-
|
|
58733
|
+
if (book?.bookQuestionsMap[firstKey]?.subQuestions) {
|
|
58734
|
+
for (const ques of book?.bookQuestionsMap[firstKey]?.subQuestions) {
|
|
58735
|
+
await this.handleQues(ques);
|
|
58736
|
+
}
|
|
58737
|
+
}
|
|
58758
58738
|
}
|
|
58759
58739
|
else {
|
|
58760
|
-
this.handleQues(element);
|
|
58740
|
+
await this.handleQues(element);
|
|
58761
58741
|
}
|
|
58762
|
-
});
|
|
58763
|
-
// VD 13Sep24 - databind changes
|
|
58764
|
-
// VD 23 Oct24 - file type changes
|
|
58765
|
-
if (this.dataBind && Object.keys(this.dataBind).length > 0) {
|
|
58766
|
-
this.changeService.dataChanges('dataBind');
|
|
58767
58742
|
}
|
|
58768
58743
|
}
|
|
58769
58744
|
// SKS20MAR25 referenceField set like this
|
|
@@ -58824,7 +58799,6 @@ class BookletComponent {
|
|
|
58824
58799
|
}
|
|
58825
58800
|
this.addEvent(date, referenceQuestions); //SKS 27SEP24 each event added to allEvents array
|
|
58826
58801
|
});
|
|
58827
|
-
// this.addEvent(date,referenceQuestions); //this is only last event added to allEvents array
|
|
58828
58802
|
});
|
|
58829
58803
|
}
|
|
58830
58804
|
}
|
|
@@ -58962,10 +58936,6 @@ class BookletComponent {
|
|
|
58962
58936
|
this.allEvents.push(newEvent);
|
|
58963
58937
|
}
|
|
58964
58938
|
}
|
|
58965
|
-
getText(value) {
|
|
58966
|
-
var doc = new DOMParser().parseFromString(value, "text/html");
|
|
58967
|
-
return this.sanitizer.bypassSecurityTrustHtml(doc.documentElement.textContent);
|
|
58968
|
-
}
|
|
58969
58939
|
getDropDown(event) {
|
|
58970
58940
|
this.hadleDropDownDependent.emit(event);
|
|
58971
58941
|
}
|
|
@@ -59014,19 +58984,6 @@ class BookletComponent {
|
|
|
59014
58984
|
parent = parent.parentElement;
|
|
59015
58985
|
}
|
|
59016
58986
|
}
|
|
59017
|
-
hasAnyFieldValue() {
|
|
59018
|
-
if (!this.bookletJSON?.bookQuestionsMap)
|
|
59019
|
-
return false;
|
|
59020
|
-
for (const key of Object.keys(this.bookletJSON.bookQuestionsMap)) {
|
|
59021
|
-
const book = this.bookletJSON.bookQuestionsMap[key];
|
|
59022
|
-
for (const q of book.subQuestions || []) {
|
|
59023
|
-
if (this.hasValue(q)) {
|
|
59024
|
-
return true;
|
|
59025
|
-
}
|
|
59026
|
-
}
|
|
59027
|
-
}
|
|
59028
|
-
return false;
|
|
59029
|
-
}
|
|
59030
58987
|
hasValue(q) {
|
|
59031
58988
|
if (q.isHidden || q.type === 'Label' || q.type === 'Image')
|
|
59032
58989
|
return false;
|
|
@@ -59064,8 +59021,8 @@ class BookletComponent {
|
|
|
59064
59021
|
this.subscription.unsubscribe();
|
|
59065
59022
|
}
|
|
59066
59023
|
}
|
|
59067
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: BookletComponent, deps: [{ token:
|
|
59068
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: BookletComponent, isStandalone: true, selector: "lib-booklet", inputs: { bookletId: "bookletId", serv: "serv", tkn: "tkn", bookletJSON: "bookletJSON", allIcons: "allIcons", themeColor: "themeColor", cdnIconURL: "cdnIconURL", dropdownDependentData: "dropdownDependentData", labelValue: "labelValue", token: "token", languageCode: "languageCode", fieldRestrictions: "fieldRestrictions", from: "from", apiUrl: "apiUrl", isEdit: "isEdit", direction: "direction", isLoading: "isLoading", onlyView: "onlyView", dataBind: "dataBind" }, outputs: { handleBookletActionEvent: "handleBookletActionEvent", handlePage: "handlePage", hadleDropDownDependent: "hadleDropDownDependent", handleCalendarDate: "handleCalendarDate", handleCalendarEvent: "handleCalendarEvent", formEditEvent: "formEditEvent" }, viewQueries: [{ propertyName: "questionbookComponent", first: true, predicate: ["questionbook"], descendants: true }, { propertyName: "stickyBar", first: true, predicate: ["stickyBar"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Booklet Handling-->\n<!-- HA 19DEC23 For Direction -->\n<div *ngFor=\"let qb of booklet\" [dir]=\"direction\">\n <!-- MR Commented below code to ensure single JSON for UNCONDITIONAL Booklets -->\n <!-- HA 28DEC23 Below If logic is to load from booklet -->\n <div *ngIf=\"qb.subQuestions; else elseBlock\">\n <div *ngFor=\"let ques of qb.subQuestions\" class=\"questiondiv1\">\n <div>\n <!-- HA 17JAN24 - Is title is enabled so that based on the boolean div will be visible -->\n <div *ngIf=\"ques.isTitle\" [class]=\"qb.isShengel ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing label when its available-->\n <div
|
|
59024
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: BookletComponent, deps: [{ token: DataService }, { token: ChangeService }, { token: i1$1.HttpClient }, { token: TranslationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
59025
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: BookletComponent, isStandalone: true, selector: "lib-booklet", inputs: { bookletId: "bookletId", serv: "serv", tkn: "tkn", bookletJSON: "bookletJSON", allIcons: "allIcons", themeColor: "themeColor", cdnIconURL: "cdnIconURL", dropdownDependentData: "dropdownDependentData", labelValue: "labelValue", token: "token", languageCode: "languageCode", fieldRestrictions: "fieldRestrictions", from: "from", apiUrl: "apiUrl", isEdit: "isEdit", direction: "direction", isLoading: "isLoading", onlyView: "onlyView", dataBind: "dataBind" }, outputs: { handleBookletActionEvent: "handleBookletActionEvent", handlePage: "handlePage", hadleDropDownDependent: "hadleDropDownDependent", handleCalendarDate: "handleCalendarDate", handleCalendarEvent: "handleCalendarEvent", formEditEvent: "formEditEvent" }, viewQueries: [{ propertyName: "questionbookComponent", first: true, predicate: ["questionbook"], descendants: true }, { propertyName: "stickyBar", first: true, predicate: ["stickyBar"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Booklet Handling-->\n<!-- HA 19DEC23 For Direction -->\n<div *ngFor=\"let qb of booklet\" [dir]=\"direction\">\n <!-- MR Commented below code to ensure single JSON for UNCONDITIONAL Booklets -->\n <!-- HA 28DEC23 Below If logic is to load from booklet -->\n <div *ngIf=\"qb.subQuestions; else elseBlock\">\n <div *ngFor=\"let ques of qb.subQuestions\" class=\"questiondiv1\">\n <div>\n <!-- HA 17JAN24 - Is title is enabled so that based on the boolean div will be visible -->\n <div *ngIf=\"ques.isTitle\" [class]=\"qb.isShengel ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing label when its available-->\n <div *ngIf=\"ques?.questionText && ques?.style?.showLabel !== false\" >\n {{ (ques.id+'.questionText') | nxtCustomTranslate : ques?.questionText }}\n </div>\n </div>\n <!--VD 06Sep24 calendar changes-->\n <!-- AP-14MAY25 - Added [dataBind] input binding -->\n <!-- AP-19MAY25 - Added [isEditVal] binding --> \n <!-- //MSM10JUL25 allIcons, themeColor, cdnIconURL added for icon-selector-->\n <lib-questionbook [qbItem]=\"qb\" [token]=\"token\"\n [direction] = \"direction\"\n [labelValue]=\"labelValue\"\n [questionItem]=\"ques\"\n [questions]=\"bookQuestionsMap?.get(qb.id)?.subQuestions\"\n (handleDropDown)=\"getDropDown($event)\"\n (handleCalendarDate)=\"getCalendarDate($event)\"\n (handleCalendarEvent)=\"getCalendarEvent($event)\"\n (singleFieldChangeEmit) ='singleFieldChange($event)'\n [dataBind]=\"dataBind\"\n [isEdit]=\"isEditVal\" \n [allIcons]=\"allIcons\"\n [themeColor]=\"themeColor\"\n [cdnIconURL]=\"cdnIconURL\"\n [languageCode]=\"languageCode\"\n [onlyView]=\"onlyView\"\n >\n </lib-questionbook>\n </div>\n </div>\n </div>\n <!-- HA 28DEC23 Below else logic is to load from books or questions -->\n <ng-template #elseBlock>\n <div class=\"questiondiv1\">\n <div>\n <div *ngIf=\"!qb.isTitle\" [class]=\"qb.isShengel ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing label when its available-->\n <div *ngIf=\"qb?.questionText && qb?.style?.showLabel !== false\" >\n {{ (qb.id+'.questionText') | nxtCustomTranslate : qb?.questionText}}\n {{ qb?.title }}\n </div>\n </div> <!-- VD 19JAN24 - getting token as input --> <!-- // VD 11Jun24 - translation changes-->\n <lib-questionbook [onlyView]=\"onlyView\" [qbItem]=\"qb\" [token]=\"token\" [labelValue]=\"labelValue\" [questionItem]=\"qb\" [questions]=\"bookQuestionsMap?.get(qb.id)?.subQuestions\" (handleDropDown)=\"getDropDown($event)\" [languageCode]=\"languageCode\"></lib-questionbook>\n </div>\n </div>\n </ng-template>\n <!-- Group Actions -->\n <!-- HA 19DEC23 For Direction -->\n <!-- AP 23MAY25 - Action Buttons: Dynamically positioned buttons with JSON-configured styles -->\n <div #stickyBar class=\"align-submit-row\" [ngStyle]=\"{\n display: 'flex',\n position: 'sticky',\n bottom: '0px',\n zIndex: '1000',\n width: '100%',\n justifyContent: 'flex-end',\n background: '#ffffff',\n padding: '10px',\n gap: '10px',\n boxShadow: showStickyShadow ? 'rgba(0, 0, 0, 0.12) 0px -10px 8px -10px' : 'none'\n }\" *ngIf=\"abItem?.status != 'Completed' && from !== 'formBuilder' && !onlyView\" [dir]=\"direction\"> <!-- position-relative removed in this tag-->\n <ng-container *ngFor=\"let action of actions; let i = index\">\n <div class=\"action-wrapper\"> <!-- style=\"position: absolute; [style.left.%]=\"action.positionPercent || 0\" removed in this tag -->\n @if(!isEditVal && action.name === 'Save'){\n <nxt-button\n (buttonClickEmit)=\"editChangeClick(action)\"\n [buttonValue]=\"'EDIT' | nxtCustomTranslate : 'Edit'\"\n [btnBorder]=\"action.borderSize\"\n [btnBorderColor]=\"action.borderColor\"\n [btnBorderRadius]=\"action.borderRadius || 4\"\n [btnWidth]=\"action.width || 100\"\n [buttonType]=\"'custom-btn'\"\n [buttonConfig]=\"action?.buttonConfig\" [type]=\"action?.type\"\n [btnIconLeftSrc]=\"action?.btnIconLeftSrc\" [isImageSvg]=\"action?.isImageSvg\"\n >\n </nxt-button>\n } @else if(action.name === 'Cancel' ? isEditVal : true ) {\n <nxt-button\n (buttonClickEmit)=\"handleBookletActionClick(action)\" \n [isLoading]=\"isLoading?.includes(action.id)\"\n [buttonValue]=\"(action.id+'.name') | nxtCustomTranslate : action?.name\"\n [btnBorder]=\"action.borderSize\"\n [btnBorderRadius]=\"action.borderRadius || 4\"\n [btnWidth]=\"action.width || 100\"\n [buttonType]=\"action.name === 'Cancel' ? 'border-btn' : 'custom-btn'\"\n [buttonConfig]=\"action?.buttonConfig\" [type]=\"action?.type\"\n [btnIconLeftSrc]=\"action?.btnIconLeftSrc\" [isImageSvg]=\"action?.isImageSvg\"\n [buttonDisable]=\"action.name === 'Save' && isSaveDisabled\"\n >\n </nxt-button>\n }\n </div>\n </ng-container>\n </div>\n</div>", styles: [".header-style{padding:15px;background:#f8f8f8;color:#898989;border:1px solid #e8e8e8;border-top-left-radius:5px;border-top-right-radius:5px;margin-left:0;justify-content:left;font-size:15px}.rtl{flex-direction:row-reverse}.action-btn{width:100%;height:40px;transition:all .3s ease}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: QuestionbookComponent, selector: "lib-questionbook", inputs: ["qbItem", "questionItem", "questions", "errorFieldId", "labelValue", "token", "isEdit", "dropDownData", "dataBind", "allIcons", "themeColor", "cdnIconURL", "direction", "languageCode", "from", "bgColor", "margin", "onlyView"], outputs: ["handleDropDown", "handleQuestion", "singleFieldChangeEmit", "hadleDropDownDependent", "handleCalendarDate", "handleCalendarEvent"] }, { kind: "pipe", type: NxtCustomTranslatePipe, name: "nxtCustomTranslate" }, { kind: "component", type: NxtButtonComponent, selector: "nxt-button", inputs: ["buttonValue", "buttonType", "type", "buttonDisable", "btnBgColor", "btnBorder", "btnBorderRadius", "btnBorderColor", "btnTextColor", "btnHeight", "btnWidth", "btnIconLeftSrc", "btnIconRightSrc", "btnHoverBgColor", "btnHoverTextColor", "btnId", "dataDismiss", "modalToTrigger", "isImageSvg", "tabIndex", "buttonConfig", "mode", "languageCode", "padding", "isLoading", "selector", "dropdownLoadingButton"], outputs: ["buttonClickEmit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
59069
59026
|
}
|
|
59070
59027
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: BookletComponent, decorators: [{
|
|
59071
59028
|
type: Component,
|
|
@@ -59075,8 +59032,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
59075
59032
|
QuestionbookComponent,
|
|
59076
59033
|
NxtCustomTranslatePipe,
|
|
59077
59034
|
NxtButtonComponent
|
|
59078
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Booklet Handling-->\n<!-- HA 19DEC23 For Direction -->\n<div *ngFor=\"let qb of booklet\" [dir]=\"direction\">\n <!-- MR Commented below code to ensure single JSON for UNCONDITIONAL Booklets -->\n <!-- HA 28DEC23 Below If logic is to load from booklet -->\n <div *ngIf=\"qb.subQuestions; else elseBlock\">\n <div *ngFor=\"let ques of qb.subQuestions\" class=\"questiondiv1\">\n <div>\n <!-- HA 17JAN24 - Is title is enabled so that based on the boolean div will be visible -->\n <div *ngIf=\"ques.isTitle\" [class]=\"qb.isShengel ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing label when its available-->\n <div
|
|
59079
|
-
}], ctorParameters: () => [{ type:
|
|
59035
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Booklet Handling-->\n<!-- HA 19DEC23 For Direction -->\n<div *ngFor=\"let qb of booklet\" [dir]=\"direction\">\n <!-- MR Commented below code to ensure single JSON for UNCONDITIONAL Booklets -->\n <!-- HA 28DEC23 Below If logic is to load from booklet -->\n <div *ngIf=\"qb.subQuestions; else elseBlock\">\n <div *ngFor=\"let ques of qb.subQuestions\" class=\"questiondiv1\">\n <div>\n <!-- HA 17JAN24 - Is title is enabled so that based on the boolean div will be visible -->\n <div *ngIf=\"ques.isTitle\" [class]=\"qb.isShengel ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing label when its available-->\n <div *ngIf=\"ques?.questionText && ques?.style?.showLabel !== false\" >\n {{ (ques.id+'.questionText') | nxtCustomTranslate : ques?.questionText }}\n </div>\n </div>\n <!--VD 06Sep24 calendar changes-->\n <!-- AP-14MAY25 - Added [dataBind] input binding -->\n <!-- AP-19MAY25 - Added [isEditVal] binding --> \n <!-- //MSM10JUL25 allIcons, themeColor, cdnIconURL added for icon-selector-->\n <lib-questionbook [qbItem]=\"qb\" [token]=\"token\"\n [direction] = \"direction\"\n [labelValue]=\"labelValue\"\n [questionItem]=\"ques\"\n [questions]=\"bookQuestionsMap?.get(qb.id)?.subQuestions\"\n (handleDropDown)=\"getDropDown($event)\"\n (handleCalendarDate)=\"getCalendarDate($event)\"\n (handleCalendarEvent)=\"getCalendarEvent($event)\"\n (singleFieldChangeEmit) ='singleFieldChange($event)'\n [dataBind]=\"dataBind\"\n [isEdit]=\"isEditVal\" \n [allIcons]=\"allIcons\"\n [themeColor]=\"themeColor\"\n [cdnIconURL]=\"cdnIconURL\"\n [languageCode]=\"languageCode\"\n [onlyView]=\"onlyView\"\n >\n </lib-questionbook>\n </div>\n </div>\n </div>\n <!-- HA 28DEC23 Below else logic is to load from books or questions -->\n <ng-template #elseBlock>\n <div class=\"questiondiv1\">\n <div>\n <div *ngIf=\"!qb.isTitle\" [class]=\"qb.isShengel ? 'header-style' : 'question-f-size additional'\">\n <!-- VD 08NOV23 - showing label when its available-->\n <div *ngIf=\"qb?.questionText && qb?.style?.showLabel !== false\" >\n {{ (qb.id+'.questionText') | nxtCustomTranslate : qb?.questionText}}\n {{ qb?.title }}\n </div>\n </div> <!-- VD 19JAN24 - getting token as input --> <!-- // VD 11Jun24 - translation changes-->\n <lib-questionbook [onlyView]=\"onlyView\" [qbItem]=\"qb\" [token]=\"token\" [labelValue]=\"labelValue\" [questionItem]=\"qb\" [questions]=\"bookQuestionsMap?.get(qb.id)?.subQuestions\" (handleDropDown)=\"getDropDown($event)\" [languageCode]=\"languageCode\"></lib-questionbook>\n </div>\n </div>\n </ng-template>\n <!-- Group Actions -->\n <!-- HA 19DEC23 For Direction -->\n <!-- AP 23MAY25 - Action Buttons: Dynamically positioned buttons with JSON-configured styles -->\n <div #stickyBar class=\"align-submit-row\" [ngStyle]=\"{\n display: 'flex',\n position: 'sticky',\n bottom: '0px',\n zIndex: '1000',\n width: '100%',\n justifyContent: 'flex-end',\n background: '#ffffff',\n padding: '10px',\n gap: '10px',\n boxShadow: showStickyShadow ? 'rgba(0, 0, 0, 0.12) 0px -10px 8px -10px' : 'none'\n }\" *ngIf=\"abItem?.status != 'Completed' && from !== 'formBuilder' && !onlyView\" [dir]=\"direction\"> <!-- position-relative removed in this tag-->\n <ng-container *ngFor=\"let action of actions; let i = index\">\n <div class=\"action-wrapper\"> <!-- style=\"position: absolute; [style.left.%]=\"action.positionPercent || 0\" removed in this tag -->\n @if(!isEditVal && action.name === 'Save'){\n <nxt-button\n (buttonClickEmit)=\"editChangeClick(action)\"\n [buttonValue]=\"'EDIT' | nxtCustomTranslate : 'Edit'\"\n [btnBorder]=\"action.borderSize\"\n [btnBorderColor]=\"action.borderColor\"\n [btnBorderRadius]=\"action.borderRadius || 4\"\n [btnWidth]=\"action.width || 100\"\n [buttonType]=\"'custom-btn'\"\n [buttonConfig]=\"action?.buttonConfig\" [type]=\"action?.type\"\n [btnIconLeftSrc]=\"action?.btnIconLeftSrc\" [isImageSvg]=\"action?.isImageSvg\"\n >\n </nxt-button>\n } @else if(action.name === 'Cancel' ? isEditVal : true ) {\n <nxt-button\n (buttonClickEmit)=\"handleBookletActionClick(action)\" \n [isLoading]=\"isLoading?.includes(action.id)\"\n [buttonValue]=\"(action.id+'.name') | nxtCustomTranslate : action?.name\"\n [btnBorder]=\"action.borderSize\"\n [btnBorderRadius]=\"action.borderRadius || 4\"\n [btnWidth]=\"action.width || 100\"\n [buttonType]=\"action.name === 'Cancel' ? 'border-btn' : 'custom-btn'\"\n [buttonConfig]=\"action?.buttonConfig\" [type]=\"action?.type\"\n [btnIconLeftSrc]=\"action?.btnIconLeftSrc\" [isImageSvg]=\"action?.isImageSvg\"\n [buttonDisable]=\"action.name === 'Save' && isSaveDisabled\"\n >\n </nxt-button>\n }\n </div>\n </ng-container>\n </div>\n</div>", styles: [".header-style{padding:15px;background:#f8f8f8;color:#898989;border:1px solid #e8e8e8;border-top-left-radius:5px;border-top-right-radius:5px;margin-left:0;justify-content:left;font-size:15px}.rtl{flex-direction:row-reverse}.action-btn{width:100%;height:40px;transition:all .3s ease}\n"] }]
|
|
59036
|
+
}], ctorParameters: () => [{ type: DataService }, { type: ChangeService }, { type: i1$1.HttpClient }, { type: TranslationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { bookletId: [{
|
|
59080
59037
|
type: Input
|
|
59081
59038
|
}], serv: [{
|
|
59082
59039
|
type: Input
|
|
@@ -59145,7 +59102,7 @@ const VERSION = {
|
|
|
59145
59102
|
"semver": null,
|
|
59146
59103
|
"suffix": "ed0865a9-dirty",
|
|
59147
59104
|
"semverString": null,
|
|
59148
|
-
"version": "2.1.
|
|
59105
|
+
"version": "2.1.342"
|
|
59149
59106
|
};
|
|
59150
59107
|
/* tslint:enable */
|
|
59151
59108
|
|