@piserve-tech/form-submission 1.3.310 → 1.3.312
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/esm2022/form-fields/mobile-fields/mobile-fields.component.mjs +1 -2
- package/esm2022/form-submission/navigation-tabs/navigation-tabs.component.mjs +12 -3
- package/esm2022/form-submission/next-prev-navigation/next-prev-navigation.component.mjs +12 -3
- package/esm2022/form-submission/submit-form/submit-form.component.mjs +104 -32
- package/esm2022/services/form.service.mjs +5 -1
- package/fesm2022/piserve-tech-form-submission.mjs +129 -37
- package/fesm2022/piserve-tech-form-submission.mjs.map +1 -1
- package/form-submission/navigation-tabs/navigation-tabs.component.d.ts +4 -1
- package/form-submission/next-prev-navigation/next-prev-navigation.component.d.ts +4 -1
- package/form-submission/submit-form/submit-form.component.d.ts +12 -0
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ import * as i1$1 from '@angular/common';
|
|
|
4
4
|
import { DatePipe, DOCUMENT, CommonModule } from '@angular/common';
|
|
5
5
|
import { Subject } from 'rxjs/internal/Subject';
|
|
6
6
|
import * as i1 from '@angular/common/http';
|
|
7
|
-
import { HttpHeaders, HttpParams } from '@angular/common/http';
|
|
7
|
+
import { HttpHeaders, HttpParams, HttpEventType } from '@angular/common/http';
|
|
8
8
|
import { BehaviorSubject, map } from 'rxjs';
|
|
9
9
|
import * as i2 from '@angular/router';
|
|
10
10
|
import { NavigationEnd } from '@angular/router';
|
|
@@ -1447,6 +1447,8 @@ class FormService {
|
|
|
1447
1447
|
}
|
|
1448
1448
|
return this.http.post(url, formData, {
|
|
1449
1449
|
headers,
|
|
1450
|
+
observe: 'events',
|
|
1451
|
+
reportProgress: true,
|
|
1450
1452
|
});
|
|
1451
1453
|
}
|
|
1452
1454
|
getSubmittedForm(moduleName, submissionId, pageNumber = 1, rowSet = 0, navigateTo) {
|
|
@@ -1478,6 +1480,8 @@ class FormService {
|
|
|
1478
1480
|
}
|
|
1479
1481
|
return this.http.put(url, formData, {
|
|
1480
1482
|
headers,
|
|
1483
|
+
observe: 'events',
|
|
1484
|
+
reportProgress: true,
|
|
1481
1485
|
});
|
|
1482
1486
|
}
|
|
1483
1487
|
previewFile(url) {
|
|
@@ -4076,7 +4080,6 @@ class MobileFieldsComponent {
|
|
|
4076
4080
|
this.validationFailed = false;
|
|
4077
4081
|
this.validationMessage = '';
|
|
4078
4082
|
this.updateAnswer();
|
|
4079
|
-
this.loadCountry(this.questionId, this.currentPage, this.size, '');
|
|
4080
4083
|
}
|
|
4081
4084
|
onInput(event) {
|
|
4082
4085
|
this.validationService.clearInvalid(this.buildElementId());
|
|
@@ -9175,6 +9178,9 @@ class NavigationTabsComponent {
|
|
|
9175
9178
|
this.submissionInProgress = false;
|
|
9176
9179
|
this.submissionInDraft = false;
|
|
9177
9180
|
this.showCancelButton = false;
|
|
9181
|
+
this.submissionProgress = 0;
|
|
9182
|
+
this.currentStep = 'Submitting form';
|
|
9183
|
+
this.animatedDots = '';
|
|
9178
9184
|
this.loadedPages = {};
|
|
9179
9185
|
this.showTooltip = false;
|
|
9180
9186
|
this.showNavArrows = false;
|
|
@@ -9257,11 +9263,11 @@ class NavigationTabsComponent {
|
|
|
9257
9263
|
this.cancel.emit();
|
|
9258
9264
|
}
|
|
9259
9265
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationTabsComponent, deps: [{ token: FormValidationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9260
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NavigationTabsComponent, selector: "lib-navigation-tabs", inputs: { pages: "pages", currentPageIndex: "currentPageIndex", skipValidation: "skipValidation", edit: "edit", acceptedLanguage: "acceptedLanguage", eligibleForSubmission: "eligibleForSubmission", pageDetails: "pageDetails", markAllQuestionsAsRequired: "markAllQuestionsAsRequired", skipMargin: "skipMargin", primaryColor: "primaryColor", secondaryColor: "secondaryColor", isActionTriggered: "isActionTriggered", submissionInProgress: "submissionInProgress", submissionInDraft: "submissionInDraft", showCancelButton: "showCancelButton" }, outputs: { pageChanged: "pageChanged", submitEmit: "submitEmit", saveAsDraftEmit: "saveAsDraftEmit", subFormChange: "subFormChange", rowSetIndex: "rowSetIndex", cancel: "cancel" }, ngImport: i0, template: "<div class=\"tab-inner-container\" [ngClass]=\"{ 'skip-margin': skipMargin}\">\n <div class=\"d-flex gap-2\">\n <div class=\"tab-navigation\" *ngIf=\"!hideTabs\">\n <ul class=\"nav nav-tabs navTabs\" id=\"myTab\" role=\"tablist\">\n <li\n class=\"nav-item\"\n role=\"presentation\"\n *ngFor=\"let page of pageDetails; let i = index; trackBy: trackByIndex\"\n [ngClass]=\"{'nav-item-ara': acceptedLanguage === 'ara', 'nav-item-default': acceptedLanguage !== 'ara'}\"\n >\n <button\n class=\"nav-link\"\n [title]=\"page.name\"\n data-bs-toggle=\"tooltip\"\n data-bs-placement=\"top\"\n data-bs-custom-class=\"custom-tooltip\"\n [class.active]=\"i === currentPageIndex\"\n id=\"tab-{{ i }}\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-controls]=\"'content-' + i\"\n [attr.aria-selected]=\"i === currentPageIndex\"\n (click)=\"setCurrentPage(i)\"\n >\n {{ page.name }}\n </button>\n </li>\n </ul>\n </div>\n <div class=\"d-flex align-items-center\" *ngIf=\"showNavArrows\">\n <button class=\"nav-arrow\">\n <img src=\"assets/icons/left_arrow.svg\" alt=\"left arrow\"\n (click)=\"scrollTabs(-1)\">\n <img src=\"assets/icons/right_arrow.svg\" alt=\"right arrow\"\n (click)=\"scrollTabs(1)\">\n </button>\n </div>\n </div>\n\n\n\n <div class=\"tab-content pt-5 pb-3 px-1\" [attr.name]=\"pages[currentPageIndex].testElementName\">\n <ng-container *ngIf=\"pages[currentPageIndex]\">\n <div\n class=\"tab-pane fade show active\"\n id=\"content-{{ currentPageIndex }}\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'tab-' + currentPageIndex\"\n >\n <div *ngIf=\"loadedPages[currentPageIndex]\">\n <div class=\"data-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"200\"\n (scrolled)=\"loadMoreData()\">\n <div *ngFor=\"let row of pages[currentPageIndex].rows\">\n <div class=\"margin d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / 12)}\">\n <lib-form-elements\n [grid]=\"grid\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [pages]=\"pages\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n </div>\n <div class=\"footerButton d-flex justify-content-between align-items-center me-4 ms-4 position-relative\">\n <!-- Hover detection container -->\n <div [ngStyle]=\"{ display: currentPageIndex === pageDetails.length - 1 ? 'block' : 'none' }\" id=\"captcha-container\"></div>\n <div\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n\n <div *ngIf=\"currentPageIndex == pageDetails.length - 1\">\n <button *ngIf=\"showCancelButton\" class=\"btn submitButton rounded-pill bg-secondary text-white\"\n (click)=\"cancelled()\" type=\"button\"\n >Cancel</button>\n <button\n *ngIf=\"!isActionTriggered && skipValidation\"\n class=\"btn rounded-pill submitButton text-white\"\n [ngStyle]=\"{ 'background-color': secondaryColor ? secondaryColor : '#084fff' }\"\n type=\"button\"\n (click)=\"saveAsDraft()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInDraft\"\n >\n <ng-container *ngIf=\"submissionInDraft; else showSubmitText\">\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Save Draft\n </ng-template>\n </button>\n \n\n <button\n *ngIf=\"!isActionTriggered\"\n class=\"btn rounded-pill submitButton text-white\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n type=\"button\"\n (click)=\"submitForm()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInProgress\"\n >\n <ng-container *ngIf=\"submissionInProgress; else showSubmitText\">\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Submit\n </ng-template>\n </button>\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n </div>\n\n </div>\n\n\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".tab-inner-container{width:100%;position:relative;padding:3rem}@media (max-width: 1024px){.tab-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.tab-inner-container{padding:2rem .5rem}}.skip-margin{padding:0}.custom-tooltip{visibility:hidden;position:absolute;top:-40px;right:0;background:#efefef;color:#7b7878;padding:8px 12px;border-radius:12px;box-shadow:0 4px 8px #00000026;font-size:14px;white-space:nowrap;z-index:10}.custom-tooltip.warning{background:linear-gradient(135deg,gold,#ffb400)}.fade-in{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.footerButton:hover .custom-tooltip{visibility:visible}.navTabs{overflow-x:auto;overflow-y:hidden;flex-wrap:unset;margin:0 0 -1px!important;padding-right:0}.nav-item{background-color:#fff;border-radius:5px}.nav-item.nav-item-default{margin-right:.5%}.nav-item.nav-item-ara{margin-left:.5%}.nav-link{position:relative;margin-bottom:-2px;padding-left:25px;padding-right:25px}.nav-link:after{content:\"\";position:absolute;left:0;bottom:0;width:101%;height:6px;background:#efefef}.nav-link.active:after{display:none}.tab-content{background-color:#fff}.custom-tooltip{--bs-tooltip-bg: var(--bd-violet-bg);--bs-tooltip-color: var(--bs-white)}.tab-navigation{position:relative;display:flex;align-items:center;width:95%}.navTabs{display:flex;overflow-x:auto;scroll-behavior:smooth;white-space:nowrap;width:100%;padding:0;margin:0;scrollbar-width:none;-ms-overflow-style:none}.navTabs::-webkit-scrollbar{display:none}.nav-arrow{position:absolute;background:#fff;border:none;cursor:pointer;font-size:20px;font-weight:700;padding:5px 10px;z-index:1000;box-shadow:0 2px 5px #0003;width:45px;height:27px;gap:13px;display:flex;justify-content:center;align-items:center;border-radius:6px}.nav-arrow img{width:8px;height:15px}.submitButton{margin-right:1rem}.spinner-border{display:inline-block;width:1rem;height:1rem;vertical-align:text-bottom;border:.15em solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite}@keyframes spinner-border{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: FormElementsComponent, selector: "lib-form-elements", inputs: ["currentPageIndex", "edit", "acceptedLanguage", "answer", "grid", "state", "pages"], outputs: ["subFormChange"] }, { kind: "directive", type: i4.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }] }); }
|
|
9266
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NavigationTabsComponent, selector: "lib-navigation-tabs", inputs: { pages: "pages", currentPageIndex: "currentPageIndex", skipValidation: "skipValidation", edit: "edit", acceptedLanguage: "acceptedLanguage", eligibleForSubmission: "eligibleForSubmission", pageDetails: "pageDetails", markAllQuestionsAsRequired: "markAllQuestionsAsRequired", skipMargin: "skipMargin", primaryColor: "primaryColor", secondaryColor: "secondaryColor", isActionTriggered: "isActionTriggered", submissionInProgress: "submissionInProgress", submissionInDraft: "submissionInDraft", showCancelButton: "showCancelButton", submissionProgress: "submissionProgress", currentStep: "currentStep", animatedDots: "animatedDots" }, outputs: { pageChanged: "pageChanged", submitEmit: "submitEmit", saveAsDraftEmit: "saveAsDraftEmit", subFormChange: "subFormChange", rowSetIndex: "rowSetIndex", cancel: "cancel" }, ngImport: i0, template: "<div class=\"tab-inner-container\" [ngClass]=\"{ 'skip-margin': skipMargin}\">\n <div class=\"d-flex gap-2\">\n <div class=\"tab-navigation\" *ngIf=\"!hideTabs\">\n <ul class=\"nav nav-tabs navTabs\" id=\"myTab\" role=\"tablist\">\n <li\n class=\"nav-item\"\n role=\"presentation\"\n *ngFor=\"let page of pageDetails; let i = index; trackBy: trackByIndex\"\n [ngClass]=\"{'nav-item-ara': acceptedLanguage === 'ara', 'nav-item-default': acceptedLanguage !== 'ara'}\"\n >\n <button\n class=\"nav-link\"\n [title]=\"page.name\"\n data-bs-toggle=\"tooltip\"\n data-bs-placement=\"top\"\n data-bs-custom-class=\"custom-tooltip\"\n [class.active]=\"i === currentPageIndex\"\n id=\"tab-{{ i }}\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-controls]=\"'content-' + i\"\n [attr.aria-selected]=\"i === currentPageIndex\"\n (click)=\"setCurrentPage(i)\"\n >\n {{ page.name }}\n </button>\n </li>\n </ul>\n </div>\n <div class=\"d-flex align-items-center\" *ngIf=\"showNavArrows\">\n <button class=\"nav-arrow\">\n <img src=\"assets/icons/left_arrow.svg\" alt=\"left arrow\"\n (click)=\"scrollTabs(-1)\">\n <img src=\"assets/icons/right_arrow.svg\" alt=\"right arrow\"\n (click)=\"scrollTabs(1)\">\n </button>\n </div>\n </div>\n\n\n\n <div class=\"tab-content pt-5 pb-3 px-1\" [attr.name]=\"pages[currentPageIndex].testElementName\">\n <ng-container *ngIf=\"pages[currentPageIndex]\">\n <div\n class=\"tab-pane fade show active\"\n id=\"content-{{ currentPageIndex }}\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'tab-' + currentPageIndex\"\n >\n <div *ngIf=\"loadedPages[currentPageIndex]\">\n <div class=\"data-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"200\"\n (scrolled)=\"loadMoreData()\">\n <div *ngFor=\"let row of pages[currentPageIndex].rows\">\n <div class=\"margin d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / 12)}\">\n <lib-form-elements\n [grid]=\"grid\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [pages]=\"pages\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n </div>\n <div class=\"footerButton d-flex justify-content-between align-items-center me-4 ms-4 position-relative\">\n <!-- Hover detection container -->\n <div [ngStyle]=\"{ display: currentPageIndex === pageDetails.length - 1 ? 'block' : 'none' }\" id=\"captcha-container\"></div>\n <div\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n\n <div *ngIf=\"currentPageIndex == pageDetails.length - 1\">\n <button *ngIf=\"showCancelButton\" class=\"btn submitButton rounded-pill bg-secondary text-white\"\n (click)=\"cancelled()\" type=\"button\"\n >Cancel</button>\n <button\n *ngIf=\"!isActionTriggered && skipValidation\"\n class=\"btn rounded-pill submitButton text-white\"\n [ngStyle]=\"{ 'background-color': secondaryColor ? secondaryColor : '#084fff' }\"\n type=\"button\"\n (click)=\"saveAsDraft()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInDraft\"\n >\n <ng-container *ngIf=\"submissionInDraft; else showSubmitText\">\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Save Draft\n </ng-template>\n </button>\n \n\n <button\n *ngIf=\"!isActionTriggered\"\n class=\"btn rounded-pill submitButton text-white\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n type=\"button\"\n (click)=\"submitForm()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInProgress\"\n >\n <ng-container *ngIf=\"submissionInProgress; else showSubmitText\">\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Submit\n </ng-template>\n </button>\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n </div>\n\n </div>\n <div *ngIf=\"submissionInProgress\" class=\"text-loader\">\n {{ currentStep }}{{ animatedDots }}\n <span class=\"percentage\">{{ submissionProgress }}%</span>\n </div>\n\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".tab-inner-container{width:100%;position:relative;padding:3rem}@media (max-width: 1024px){.tab-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.tab-inner-container{padding:2rem .5rem}}.skip-margin{padding:0}.custom-tooltip{visibility:hidden;position:absolute;top:-40px;right:0;background:#efefef;color:#7b7878;padding:8px 12px;border-radius:12px;box-shadow:0 4px 8px #00000026;font-size:14px;white-space:nowrap;z-index:10}.custom-tooltip.warning{background:linear-gradient(135deg,gold,#ffb400)}.fade-in{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.footerButton:hover .custom-tooltip{visibility:visible}.navTabs{overflow-x:auto;overflow-y:hidden;flex-wrap:unset;margin:0 0 -1px!important;padding-right:0}.nav-item{background-color:#fff;border-radius:5px}.nav-item.nav-item-default{margin-right:.5%}.nav-item.nav-item-ara{margin-left:.5%}.nav-link{position:relative;margin-bottom:-2px;padding-left:25px;padding-right:25px}.nav-link:after{content:\"\";position:absolute;left:0;bottom:0;width:101%;height:6px;background:#efefef}.nav-link.active:after{display:none}.tab-content{background-color:#fff}.custom-tooltip{--bs-tooltip-bg: var(--bd-violet-bg);--bs-tooltip-color: var(--bs-white)}.tab-navigation{position:relative;display:flex;align-items:center;width:95%}.navTabs{display:flex;overflow-x:auto;scroll-behavior:smooth;white-space:nowrap;width:100%;padding:0;margin:0;scrollbar-width:none;-ms-overflow-style:none}.navTabs::-webkit-scrollbar{display:none}.nav-arrow{position:absolute;background:#fff;border:none;cursor:pointer;font-size:20px;font-weight:700;padding:5px 10px;z-index:1000;box-shadow:0 2px 5px #0003;width:45px;height:27px;gap:13px;display:flex;justify-content:center;align-items:center;border-radius:6px}.nav-arrow img{width:8px;height:15px}.submitButton{margin-right:1rem}.spinner-border{display:inline-block;width:1rem;height:1rem;vertical-align:text-bottom;border:.15em solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite}@keyframes spinner-border{to{transform:rotate(360deg)}}.text-loader{font-size:14px;font-weight:500;padding:8px 12px;border-radius:6px;align-items:center;gap:8px;display:flex;justify-content:center}.percentage{font-weight:600;color:var(--primaryColor, #084fff)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: FormElementsComponent, selector: "lib-form-elements", inputs: ["currentPageIndex", "edit", "acceptedLanguage", "answer", "grid", "state", "pages"], outputs: ["subFormChange"] }, { kind: "directive", type: i4.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }] }); }
|
|
9261
9267
|
}
|
|
9262
9268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationTabsComponent, decorators: [{
|
|
9263
9269
|
type: Component,
|
|
9264
|
-
args: [{ selector: 'lib-navigation-tabs', template: "<div class=\"tab-inner-container\" [ngClass]=\"{ 'skip-margin': skipMargin}\">\n <div class=\"d-flex gap-2\">\n <div class=\"tab-navigation\" *ngIf=\"!hideTabs\">\n <ul class=\"nav nav-tabs navTabs\" id=\"myTab\" role=\"tablist\">\n <li\n class=\"nav-item\"\n role=\"presentation\"\n *ngFor=\"let page of pageDetails; let i = index; trackBy: trackByIndex\"\n [ngClass]=\"{'nav-item-ara': acceptedLanguage === 'ara', 'nav-item-default': acceptedLanguage !== 'ara'}\"\n >\n <button\n class=\"nav-link\"\n [title]=\"page.name\"\n data-bs-toggle=\"tooltip\"\n data-bs-placement=\"top\"\n data-bs-custom-class=\"custom-tooltip\"\n [class.active]=\"i === currentPageIndex\"\n id=\"tab-{{ i }}\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-controls]=\"'content-' + i\"\n [attr.aria-selected]=\"i === currentPageIndex\"\n (click)=\"setCurrentPage(i)\"\n >\n {{ page.name }}\n </button>\n </li>\n </ul>\n </div>\n <div class=\"d-flex align-items-center\" *ngIf=\"showNavArrows\">\n <button class=\"nav-arrow\">\n <img src=\"assets/icons/left_arrow.svg\" alt=\"left arrow\"\n (click)=\"scrollTabs(-1)\">\n <img src=\"assets/icons/right_arrow.svg\" alt=\"right arrow\"\n (click)=\"scrollTabs(1)\">\n </button>\n </div>\n </div>\n\n\n\n <div class=\"tab-content pt-5 pb-3 px-1\" [attr.name]=\"pages[currentPageIndex].testElementName\">\n <ng-container *ngIf=\"pages[currentPageIndex]\">\n <div\n class=\"tab-pane fade show active\"\n id=\"content-{{ currentPageIndex }}\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'tab-' + currentPageIndex\"\n >\n <div *ngIf=\"loadedPages[currentPageIndex]\">\n <div class=\"data-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"200\"\n (scrolled)=\"loadMoreData()\">\n <div *ngFor=\"let row of pages[currentPageIndex].rows\">\n <div class=\"margin d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / 12)}\">\n <lib-form-elements\n [grid]=\"grid\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [pages]=\"pages\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n </div>\n <div class=\"footerButton d-flex justify-content-between align-items-center me-4 ms-4 position-relative\">\n <!-- Hover detection container -->\n <div [ngStyle]=\"{ display: currentPageIndex === pageDetails.length - 1 ? 'block' : 'none' }\" id=\"captcha-container\"></div>\n <div\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n\n <div *ngIf=\"currentPageIndex == pageDetails.length - 1\">\n <button *ngIf=\"showCancelButton\" class=\"btn submitButton rounded-pill bg-secondary text-white\"\n (click)=\"cancelled()\" type=\"button\"\n >Cancel</button>\n <button\n *ngIf=\"!isActionTriggered && skipValidation\"\n class=\"btn rounded-pill submitButton text-white\"\n [ngStyle]=\"{ 'background-color': secondaryColor ? secondaryColor : '#084fff' }\"\n type=\"button\"\n (click)=\"saveAsDraft()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInDraft\"\n >\n <ng-container *ngIf=\"submissionInDraft; else showSubmitText\">\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Save Draft\n </ng-template>\n </button>\n \n\n <button\n *ngIf=\"!isActionTriggered\"\n class=\"btn rounded-pill submitButton text-white\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n type=\"button\"\n (click)=\"submitForm()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInProgress\"\n >\n <ng-container *ngIf=\"submissionInProgress; else showSubmitText\">\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Submit\n </ng-template>\n </button>\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n </div>\n\n </div>\n\n\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".tab-inner-container{width:100%;position:relative;padding:3rem}@media (max-width: 1024px){.tab-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.tab-inner-container{padding:2rem .5rem}}.skip-margin{padding:0}.custom-tooltip{visibility:hidden;position:absolute;top:-40px;right:0;background:#efefef;color:#7b7878;padding:8px 12px;border-radius:12px;box-shadow:0 4px 8px #00000026;font-size:14px;white-space:nowrap;z-index:10}.custom-tooltip.warning{background:linear-gradient(135deg,gold,#ffb400)}.fade-in{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.footerButton:hover .custom-tooltip{visibility:visible}.navTabs{overflow-x:auto;overflow-y:hidden;flex-wrap:unset;margin:0 0 -1px!important;padding-right:0}.nav-item{background-color:#fff;border-radius:5px}.nav-item.nav-item-default{margin-right:.5%}.nav-item.nav-item-ara{margin-left:.5%}.nav-link{position:relative;margin-bottom:-2px;padding-left:25px;padding-right:25px}.nav-link:after{content:\"\";position:absolute;left:0;bottom:0;width:101%;height:6px;background:#efefef}.nav-link.active:after{display:none}.tab-content{background-color:#fff}.custom-tooltip{--bs-tooltip-bg: var(--bd-violet-bg);--bs-tooltip-color: var(--bs-white)}.tab-navigation{position:relative;display:flex;align-items:center;width:95%}.navTabs{display:flex;overflow-x:auto;scroll-behavior:smooth;white-space:nowrap;width:100%;padding:0;margin:0;scrollbar-width:none;-ms-overflow-style:none}.navTabs::-webkit-scrollbar{display:none}.nav-arrow{position:absolute;background:#fff;border:none;cursor:pointer;font-size:20px;font-weight:700;padding:5px 10px;z-index:1000;box-shadow:0 2px 5px #0003;width:45px;height:27px;gap:13px;display:flex;justify-content:center;align-items:center;border-radius:6px}.nav-arrow img{width:8px;height:15px}.submitButton{margin-right:1rem}.spinner-border{display:inline-block;width:1rem;height:1rem;vertical-align:text-bottom;border:.15em solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite}@keyframes spinner-border{to{transform:rotate(360deg)}}\n"] }]
|
|
9270
|
+
args: [{ selector: 'lib-navigation-tabs', template: "<div class=\"tab-inner-container\" [ngClass]=\"{ 'skip-margin': skipMargin}\">\n <div class=\"d-flex gap-2\">\n <div class=\"tab-navigation\" *ngIf=\"!hideTabs\">\n <ul class=\"nav nav-tabs navTabs\" id=\"myTab\" role=\"tablist\">\n <li\n class=\"nav-item\"\n role=\"presentation\"\n *ngFor=\"let page of pageDetails; let i = index; trackBy: trackByIndex\"\n [ngClass]=\"{'nav-item-ara': acceptedLanguage === 'ara', 'nav-item-default': acceptedLanguage !== 'ara'}\"\n >\n <button\n class=\"nav-link\"\n [title]=\"page.name\"\n data-bs-toggle=\"tooltip\"\n data-bs-placement=\"top\"\n data-bs-custom-class=\"custom-tooltip\"\n [class.active]=\"i === currentPageIndex\"\n id=\"tab-{{ i }}\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-controls]=\"'content-' + i\"\n [attr.aria-selected]=\"i === currentPageIndex\"\n (click)=\"setCurrentPage(i)\"\n >\n {{ page.name }}\n </button>\n </li>\n </ul>\n </div>\n <div class=\"d-flex align-items-center\" *ngIf=\"showNavArrows\">\n <button class=\"nav-arrow\">\n <img src=\"assets/icons/left_arrow.svg\" alt=\"left arrow\"\n (click)=\"scrollTabs(-1)\">\n <img src=\"assets/icons/right_arrow.svg\" alt=\"right arrow\"\n (click)=\"scrollTabs(1)\">\n </button>\n </div>\n </div>\n\n\n\n <div class=\"tab-content pt-5 pb-3 px-1\" [attr.name]=\"pages[currentPageIndex].testElementName\">\n <ng-container *ngIf=\"pages[currentPageIndex]\">\n <div\n class=\"tab-pane fade show active\"\n id=\"content-{{ currentPageIndex }}\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'tab-' + currentPageIndex\"\n >\n <div *ngIf=\"loadedPages[currentPageIndex]\">\n <div class=\"data-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"200\"\n (scrolled)=\"loadMoreData()\">\n <div *ngFor=\"let row of pages[currentPageIndex].rows\">\n <div class=\"margin d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / 12)}\">\n <lib-form-elements\n [grid]=\"grid\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [pages]=\"pages\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n </div>\n <div class=\"footerButton d-flex justify-content-between align-items-center me-4 ms-4 position-relative\">\n <!-- Hover detection container -->\n <div [ngStyle]=\"{ display: currentPageIndex === pageDetails.length - 1 ? 'block' : 'none' }\" id=\"captcha-container\"></div>\n <div\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n\n <div *ngIf=\"currentPageIndex == pageDetails.length - 1\">\n <button *ngIf=\"showCancelButton\" class=\"btn submitButton rounded-pill bg-secondary text-white\"\n (click)=\"cancelled()\" type=\"button\"\n >Cancel</button>\n <button\n *ngIf=\"!isActionTriggered && skipValidation\"\n class=\"btn rounded-pill submitButton text-white\"\n [ngStyle]=\"{ 'background-color': secondaryColor ? secondaryColor : '#084fff' }\"\n type=\"button\"\n (click)=\"saveAsDraft()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInDraft\"\n >\n <ng-container *ngIf=\"submissionInDraft; else showSubmitText\">\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Save Draft\n </ng-template>\n </button>\n \n\n <button\n *ngIf=\"!isActionTriggered\"\n class=\"btn rounded-pill submitButton text-white\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n type=\"button\"\n (click)=\"submitForm()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInProgress\"\n >\n <ng-container *ngIf=\"submissionInProgress; else showSubmitText\">\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Submit\n </ng-template>\n </button>\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n </div>\n\n </div>\n <div *ngIf=\"submissionInProgress\" class=\"text-loader\">\n {{ currentStep }}{{ animatedDots }}\n <span class=\"percentage\">{{ submissionProgress }}%</span>\n </div>\n\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".tab-inner-container{width:100%;position:relative;padding:3rem}@media (max-width: 1024px){.tab-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.tab-inner-container{padding:2rem .5rem}}.skip-margin{padding:0}.custom-tooltip{visibility:hidden;position:absolute;top:-40px;right:0;background:#efefef;color:#7b7878;padding:8px 12px;border-radius:12px;box-shadow:0 4px 8px #00000026;font-size:14px;white-space:nowrap;z-index:10}.custom-tooltip.warning{background:linear-gradient(135deg,gold,#ffb400)}.fade-in{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.footerButton:hover .custom-tooltip{visibility:visible}.navTabs{overflow-x:auto;overflow-y:hidden;flex-wrap:unset;margin:0 0 -1px!important;padding-right:0}.nav-item{background-color:#fff;border-radius:5px}.nav-item.nav-item-default{margin-right:.5%}.nav-item.nav-item-ara{margin-left:.5%}.nav-link{position:relative;margin-bottom:-2px;padding-left:25px;padding-right:25px}.nav-link:after{content:\"\";position:absolute;left:0;bottom:0;width:101%;height:6px;background:#efefef}.nav-link.active:after{display:none}.tab-content{background-color:#fff}.custom-tooltip{--bs-tooltip-bg: var(--bd-violet-bg);--bs-tooltip-color: var(--bs-white)}.tab-navigation{position:relative;display:flex;align-items:center;width:95%}.navTabs{display:flex;overflow-x:auto;scroll-behavior:smooth;white-space:nowrap;width:100%;padding:0;margin:0;scrollbar-width:none;-ms-overflow-style:none}.navTabs::-webkit-scrollbar{display:none}.nav-arrow{position:absolute;background:#fff;border:none;cursor:pointer;font-size:20px;font-weight:700;padding:5px 10px;z-index:1000;box-shadow:0 2px 5px #0003;width:45px;height:27px;gap:13px;display:flex;justify-content:center;align-items:center;border-radius:6px}.nav-arrow img{width:8px;height:15px}.submitButton{margin-right:1rem}.spinner-border{display:inline-block;width:1rem;height:1rem;vertical-align:text-bottom;border:.15em solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite}@keyframes spinner-border{to{transform:rotate(360deg)}}.text-loader{font-size:14px;font-weight:500;padding:8px 12px;border-radius:6px;align-items:center;gap:8px;display:flex;justify-content:center}.percentage{font-weight:600;color:var(--primaryColor, #084fff)}\n"] }]
|
|
9265
9271
|
}], ctorParameters: function () { return [{ type: FormValidationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { pages: [{
|
|
9266
9272
|
type: Input
|
|
9267
9273
|
}], currentPageIndex: [{
|
|
@@ -9304,6 +9310,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
9304
9310
|
type: Input
|
|
9305
9311
|
}], showCancelButton: [{
|
|
9306
9312
|
type: Input
|
|
9313
|
+
}], submissionProgress: [{
|
|
9314
|
+
type: Input
|
|
9315
|
+
}], currentStep: [{
|
|
9316
|
+
type: Input
|
|
9317
|
+
}], animatedDots: [{
|
|
9318
|
+
type: Input
|
|
9307
9319
|
}] } });
|
|
9308
9320
|
|
|
9309
9321
|
class SaveDraftModalComponent {
|
|
@@ -9525,6 +9537,9 @@ class NextPrevNavigationComponent {
|
|
|
9525
9537
|
this.submissionInDraft = false;
|
|
9526
9538
|
this.eligibleForSubmission = { status: true, message: '' };
|
|
9527
9539
|
this.showCancelButton = false;
|
|
9540
|
+
this.submissionProgress = 0;
|
|
9541
|
+
this.currentStep = 'Submitting form';
|
|
9542
|
+
this.animatedDots = '';
|
|
9528
9543
|
this.showTooltip = false;
|
|
9529
9544
|
}
|
|
9530
9545
|
ngOnInit() {
|
|
@@ -9554,11 +9569,11 @@ class NextPrevNavigationComponent {
|
|
|
9554
9569
|
this.cancel.emit();
|
|
9555
9570
|
}
|
|
9556
9571
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NextPrevNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9557
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NextPrevNavigationComponent, selector: "lib-next-prev-navigation", inputs: { skipValidation: "skipValidation", currentPageIndex: "currentPageIndex", pages: "pages", previousPage: "previousPage", nextPage: "nextPage", currentPage: "currentPage", pageDetails: "pageDetails", skipMargin: "skipMargin", edit: "edit", acceptedLanguage: "acceptedLanguage", primaryColor: "primaryColor", secondaryColor: "secondaryColor", isActionTriggered: "isActionTriggered", submissionInProgress: "submissionInProgress", submissionInDraft: "submissionInDraft", eligibleForSubmission: "eligibleForSubmission", showCancelButton: "showCancelButton" }, outputs: { navigateNext: "navigateNext", navigatePrevious: "navigatePrevious", submitEmit: "submitEmit", saveAsDraftEmit: "saveAsDraftEmit", cancel: "cancel", subFormChange: "subFormChange", rowSetIndex: "rowSetIndex" }, ngImport: i0, template: "<!-- <div class=\"pageTitleDiv\" *ngIf=\"!skipMargin\">\n <p class=\"pageTitle\">{{pageDetails[currentPageIndex]?.name}}</p>\n</div> -->\n<div class=\"button-inner-container rounded\" [ngClass]=\"{ 'skip-margin': skipMargin}\">\n <div class=\"tab-content pt-5 pb-3 row\" [attr.name]=\"pages[currentPageIndex].testElementName\">\n <div class=\"data-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"200\"\n (scrolled)=\"loadMoreData()\">\n\n <div *ngFor=\"let row of pages[currentPageIndex]?.rows\" class=\"marginSize d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / (12))}\">\n <lib-form-elements\n [grid]=\"grid\"\n [currentPageIndex]=\"currentPageIndex\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [pages]=\"pages\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n state=\"parent\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n <div [ngStyle]=\"{ display: currentPageIndex === pageDetails.length - 1 ? 'block' : 'none' }\" id=\"captcha-container\"></div>\n\n <div class=\"footerButton\">\n <div\n class=\"prevButtonDiv\"\n [ngClass]=\"{ 'prevDirection-rtl': acceptedLanguage === 'ara' }\">\n <button\n class=\"me-md-2 rounded-pill navButton\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n type=\"button\"\n (click)=\"onNavigatePrevious()\"\n *ngIf=\"0 < currentPageIndex\"\n >\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #defaultSvg>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n Previous | {{ previousPage.name }}\n </button>\n </div>\n <div\n class=\"nextButtonDiv\"\n [ngClass]=\"{ 'nextDirection-rtl': acceptedLanguage === 'ara' }\"\n >\n <button\n class=\"md-2 rounded-pill navButton\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n type=\"button\"\n (click)=\"onNavigateNext()\"\n *ngIf=\"currentPageIndex < pageDetails.length - 1\"\n >\n Next | {{ nextPage.name }}\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #defaultSvg>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n </button>\n <button *ngIf=\"showCancelButton\" class=\"btn submitButton rounded-pill bg-secondary text-white\"\n (click)=\"cancelled()\" type=\"button\"\n >Cancel</button>\n <div\n *ngIf=\"skipValidation\"\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n <button\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill d-flex align-items-center justify-content-center\"\n [ngStyle]=\"{ 'background-color': secondaryColor ? secondaryColor : '#084fff' }\"\n type=\"button\"\n *ngIf=\"currentPageIndex == pageDetails.length - 1 && !isActionTriggered\"\n (click)=\"saveAsDraft()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInDraft\"\n >\n <ng-container *ngIf=\"submissionInDraft; else showSubmitText\">\n\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Save Draft\n </ng-template>\n </button>\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n\n <div\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n <button\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill d-flex align-items-center justify-content-center\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor : '#084fff' }\"\n type=\"button\"\n *ngIf=\"currentPageIndex == pageDetails.length - 1 && !isActionTriggered\"\n (click)=\"submitForm()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInProgress\"\n >\n <ng-container *ngIf=\"submissionInProgress; else showSubmitText\">\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Submit\n </ng-template>\n </button>\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n\n </div>\n </div>\n</div>\n", styles: [".pageTitle{font-size:15px;font-weight:500}#captcha-container{display:flex;justify-content:center;align-items:center;padding-left:1.8rem}.grecaptcha-popup{position:fixed!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;z-index:9999;border-radius:50%}@media (max-width: 480px){.g-recaptcha{transform:scale(.85);transform-origin:center}}.pageTitleDiv{padding-left:3rem;padding-top:3rem;padding-right:3rem}@media (max-width: 1024px){.pageTitleDiv{padding-left:1rem;padding-right:1rem;padding-top:2rem}}@media (max-width: 576px){.pageTitleDiv{padding-left:.4rem;padding-right:.4rem;padding-top:1.5rem}}.button-inner-container{width:100%;position:relative;padding:2rem}@media (max-width: 1024px){.button-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.button-inner-container{padding:.1rem .5rem 2rem}}.skip-margin{padding:0}@media (max-width: 576px){.marginSize{padding:0!important}}.footerButton{padding:10px 32px 16px 30px;display:flex;flex-wrap:wrap}@media (max-width: 576px){.footerButton{padding-left:20px;padding-right:17px}}.navButton{color:#fff;border:none;padding:10px 8px;width:auto}.submitBtn{color:#fff;border:none;padding:10px 27px;width:auto}.prevButtonDiv{display:flex;justify-content:center;margin-bottom:5px}.nextButtonDiv{display:flex;justify-content:flex-end;margin-left:auto;margin-bottom:5px}.nextDirection-rtl{margin-left:0;margin-right:auto}.tab-content,.row{background-color:#fff}.spinner-border{display:inline-block;width:1rem;height:1rem;vertical-align:text-bottom;border:.15em solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite}@keyframes spinner-border{to{transform:rotate(360deg)}}.custom-tooltip{visibility:hidden;position:absolute;top:-40px;right:0;background:#efefef;color:#7b7878;padding:8px 12px;border-radius:12px;box-shadow:0 4px 8px #00000026;font-size:14px;white-space:nowrap;z-index:10}.custom-tooltip.warning{background:linear-gradient(135deg,gold,#ffb400)}.fade-in{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.footerButton:hover .custom-tooltip{visibility:visible}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: FormElementsComponent, selector: "lib-form-elements", inputs: ["currentPageIndex", "edit", "acceptedLanguage", "answer", "grid", "state", "pages"], outputs: ["subFormChange"] }, { kind: "directive", type: i4.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }] }); }
|
|
9572
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NextPrevNavigationComponent, selector: "lib-next-prev-navigation", inputs: { skipValidation: "skipValidation", currentPageIndex: "currentPageIndex", pages: "pages", previousPage: "previousPage", nextPage: "nextPage", currentPage: "currentPage", pageDetails: "pageDetails", skipMargin: "skipMargin", edit: "edit", acceptedLanguage: "acceptedLanguage", primaryColor: "primaryColor", secondaryColor: "secondaryColor", isActionTriggered: "isActionTriggered", submissionInProgress: "submissionInProgress", submissionInDraft: "submissionInDraft", eligibleForSubmission: "eligibleForSubmission", showCancelButton: "showCancelButton", submissionProgress: "submissionProgress", currentStep: "currentStep", animatedDots: "animatedDots" }, outputs: { navigateNext: "navigateNext", navigatePrevious: "navigatePrevious", submitEmit: "submitEmit", saveAsDraftEmit: "saveAsDraftEmit", cancel: "cancel", subFormChange: "subFormChange", rowSetIndex: "rowSetIndex" }, ngImport: i0, template: "<!-- <div class=\"pageTitleDiv\" *ngIf=\"!skipMargin\">\n <p class=\"pageTitle\">{{pageDetails[currentPageIndex]?.name}}</p>\n</div> -->\n<div class=\"button-inner-container rounded\" [ngClass]=\"{ 'skip-margin': skipMargin}\">\n <div class=\"tab-content pt-5 pb-3 row\" [attr.name]=\"pages[currentPageIndex].testElementName\">\n <div class=\"data-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"200\"\n (scrolled)=\"loadMoreData()\">\n\n <div *ngFor=\"let row of pages[currentPageIndex]?.rows\" class=\"marginSize d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / (12))}\">\n <lib-form-elements\n [grid]=\"grid\"\n [currentPageIndex]=\"currentPageIndex\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [pages]=\"pages\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n state=\"parent\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n <div [ngStyle]=\"{ display: currentPageIndex === pageDetails.length - 1 ? 'block' : 'none' }\" id=\"captcha-container\"></div>\n\n <div class=\"footerButton\">\n <div\n class=\"prevButtonDiv\"\n [ngClass]=\"{ 'prevDirection-rtl': acceptedLanguage === 'ara' }\">\n <button\n class=\"me-md-2 rounded-pill navButton\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n type=\"button\"\n (click)=\"onNavigatePrevious()\"\n *ngIf=\"0 < currentPageIndex\"\n >\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #defaultSvg>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n Previous | {{ previousPage.name }}\n </button>\n </div>\n <div\n class=\"nextButtonDiv\"\n [ngClass]=\"{ 'nextDirection-rtl': acceptedLanguage === 'ara' }\"\n >\n <button\n class=\"md-2 rounded-pill navButton\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n type=\"button\"\n (click)=\"onNavigateNext()\"\n *ngIf=\"currentPageIndex < pageDetails.length - 1\"\n >\n Next | {{ nextPage.name }}\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #defaultSvg>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n </button>\n <button *ngIf=\"showCancelButton && currentPageIndex == pageDetails.length - 1\" class=\"btn submitButton rounded-pill bg-secondary text-white\"\n (click)=\"cancelled()\" type=\"button\"\n >Cancel</button>\n <div\n *ngIf=\"skipValidation\"\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n <button\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill d-flex align-items-center justify-content-center\"\n [ngStyle]=\"{ 'background-color': secondaryColor ? secondaryColor : '#084fff' }\"\n type=\"button\"\n *ngIf=\"currentPageIndex == pageDetails.length - 1 && !isActionTriggered\"\n (click)=\"saveAsDraft()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInDraft\"\n >\n <ng-container *ngIf=\"submissionInDraft; else showSubmitText\">\n\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Save Draft\n </ng-template>\n </button>\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n\n <div\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n <button\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill d-flex align-items-center justify-content-center\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor : '#084fff' }\"\n type=\"button\"\n *ngIf=\"currentPageIndex == pageDetails.length - 1 && !isActionTriggered\"\n (click)=\"submitForm()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInProgress\"\n >\n <ng-container *ngIf=\"submissionInProgress; else showSubmitText\">\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Submit\n </ng-template>\n </button>\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n\n </div>\n </div>\n <div *ngIf=\"submissionInProgress\" class=\"text-loader\">\n {{ currentStep }}{{ animatedDots }}\n <span class=\"percentage\">{{ submissionProgress }}%</span>\n </div>\n</div>\n", styles: [".pageTitle{font-size:15px;font-weight:500}#captcha-container{display:flex;justify-content:center;align-items:center;padding-left:1.8rem}.grecaptcha-popup{position:fixed!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;z-index:9999;border-radius:50%}@media (max-width: 480px){.g-recaptcha{transform:scale(.85);transform-origin:center}}.pageTitleDiv{padding-left:3rem;padding-top:3rem;padding-right:3rem}@media (max-width: 1024px){.pageTitleDiv{padding-left:1rem;padding-right:1rem;padding-top:2rem}}@media (max-width: 576px){.pageTitleDiv{padding-left:.4rem;padding-right:.4rem;padding-top:1.5rem}}.button-inner-container{width:100%;position:relative;padding:2rem}@media (max-width: 1024px){.button-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.button-inner-container{padding:.1rem .5rem 2rem}}.skip-margin{padding:0}@media (max-width: 576px){.marginSize{padding:0!important}}.footerButton{padding:10px 32px 16px 30px;display:flex;flex-wrap:wrap}@media (max-width: 576px){.footerButton{padding-left:20px;padding-right:17px}}.navButton{color:#fff;border:none;padding:10px 8px;width:auto}.submitBtn{color:#fff;border:none;padding:10px 27px;width:auto}.prevButtonDiv{display:flex;justify-content:center;margin-bottom:5px}.nextButtonDiv{display:flex;justify-content:flex-end;margin-left:auto;margin-bottom:5px}.nextDirection-rtl{margin-left:0;margin-right:auto}.tab-content,.row{background-color:#fff}.spinner-border{display:inline-block;width:1rem;height:1rem;vertical-align:text-bottom;border:.15em solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite}@keyframes spinner-border{to{transform:rotate(360deg)}}.custom-tooltip{visibility:hidden;position:absolute;top:-40px;right:0;background:#efefef;color:#7b7878;padding:8px 12px;border-radius:12px;box-shadow:0 4px 8px #00000026;font-size:14px;white-space:nowrap;z-index:10}.custom-tooltip.warning{background:linear-gradient(135deg,gold,#ffb400)}.fade-in{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.footerButton:hover .custom-tooltip{visibility:visible}.text-loader{font-size:14px;font-weight:500;padding:8px 12px;border-radius:6px;align-items:center;gap:8px;display:flex;justify-content:center}.percentage{font-weight:600;color:var(--primaryColor, #084fff)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: FormElementsComponent, selector: "lib-form-elements", inputs: ["currentPageIndex", "edit", "acceptedLanguage", "answer", "grid", "state", "pages"], outputs: ["subFormChange"] }, { kind: "directive", type: i4.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }] }); }
|
|
9558
9573
|
}
|
|
9559
9574
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NextPrevNavigationComponent, decorators: [{
|
|
9560
9575
|
type: Component,
|
|
9561
|
-
args: [{ selector: 'lib-next-prev-navigation', template: "<!-- <div class=\"pageTitleDiv\" *ngIf=\"!skipMargin\">\n <p class=\"pageTitle\">{{pageDetails[currentPageIndex]?.name}}</p>\n</div> -->\n<div class=\"button-inner-container rounded\" [ngClass]=\"{ 'skip-margin': skipMargin}\">\n <div class=\"tab-content pt-5 pb-3 row\" [attr.name]=\"pages[currentPageIndex].testElementName\">\n <div class=\"data-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"200\"\n (scrolled)=\"loadMoreData()\">\n\n <div *ngFor=\"let row of pages[currentPageIndex]?.rows\" class=\"marginSize d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / (12))}\">\n <lib-form-elements\n [grid]=\"grid\"\n [currentPageIndex]=\"currentPageIndex\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [pages]=\"pages\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n state=\"parent\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n <div [ngStyle]=\"{ display: currentPageIndex === pageDetails.length - 1 ? 'block' : 'none' }\" id=\"captcha-container\"></div>\n\n <div class=\"footerButton\">\n <div\n class=\"prevButtonDiv\"\n [ngClass]=\"{ 'prevDirection-rtl': acceptedLanguage === 'ara' }\">\n <button\n class=\"me-md-2 rounded-pill navButton\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n type=\"button\"\n (click)=\"onNavigatePrevious()\"\n *ngIf=\"0 < currentPageIndex\"\n >\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #defaultSvg>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n Previous | {{ previousPage.name }}\n </button>\n </div>\n <div\n class=\"nextButtonDiv\"\n [ngClass]=\"{ 'nextDirection-rtl': acceptedLanguage === 'ara' }\"\n >\n <button\n class=\"md-2 rounded-pill navButton\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n type=\"button\"\n (click)=\"onNavigateNext()\"\n *ngIf=\"currentPageIndex < pageDetails.length - 1\"\n >\n Next | {{ nextPage.name }}\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #defaultSvg>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n </button>\n <button *ngIf=\"showCancelButton\" class=\"btn submitButton rounded-pill bg-secondary text-white\"\n (click)=\"cancelled()\" type=\"button\"\n >Cancel</button>\n <div\n *ngIf=\"skipValidation\"\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n <button\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill d-flex align-items-center justify-content-center\"\n [ngStyle]=\"{ 'background-color': secondaryColor ? secondaryColor : '#084fff' }\"\n type=\"button\"\n *ngIf=\"currentPageIndex == pageDetails.length - 1 && !isActionTriggered\"\n (click)=\"saveAsDraft()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInDraft\"\n >\n <ng-container *ngIf=\"submissionInDraft; else showSubmitText\">\n\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Save Draft\n </ng-template>\n </button>\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n\n <div\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n <button\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill d-flex align-items-center justify-content-center\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor : '#084fff' }\"\n type=\"button\"\n *ngIf=\"currentPageIndex == pageDetails.length - 1 && !isActionTriggered\"\n (click)=\"submitForm()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInProgress\"\n >\n <ng-container *ngIf=\"submissionInProgress; else showSubmitText\">\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Submit\n </ng-template>\n </button>\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n\n </div>\n </div>\n</div>\n", styles: [".pageTitle{font-size:15px;font-weight:500}#captcha-container{display:flex;justify-content:center;align-items:center;padding-left:1.8rem}.grecaptcha-popup{position:fixed!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;z-index:9999;border-radius:50%}@media (max-width: 480px){.g-recaptcha{transform:scale(.85);transform-origin:center}}.pageTitleDiv{padding-left:3rem;padding-top:3rem;padding-right:3rem}@media (max-width: 1024px){.pageTitleDiv{padding-left:1rem;padding-right:1rem;padding-top:2rem}}@media (max-width: 576px){.pageTitleDiv{padding-left:.4rem;padding-right:.4rem;padding-top:1.5rem}}.button-inner-container{width:100%;position:relative;padding:2rem}@media (max-width: 1024px){.button-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.button-inner-container{padding:.1rem .5rem 2rem}}.skip-margin{padding:0}@media (max-width: 576px){.marginSize{padding:0!important}}.footerButton{padding:10px 32px 16px 30px;display:flex;flex-wrap:wrap}@media (max-width: 576px){.footerButton{padding-left:20px;padding-right:17px}}.navButton{color:#fff;border:none;padding:10px 8px;width:auto}.submitBtn{color:#fff;border:none;padding:10px 27px;width:auto}.prevButtonDiv{display:flex;justify-content:center;margin-bottom:5px}.nextButtonDiv{display:flex;justify-content:flex-end;margin-left:auto;margin-bottom:5px}.nextDirection-rtl{margin-left:0;margin-right:auto}.tab-content,.row{background-color:#fff}.spinner-border{display:inline-block;width:1rem;height:1rem;vertical-align:text-bottom;border:.15em solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite}@keyframes spinner-border{to{transform:rotate(360deg)}}.custom-tooltip{visibility:hidden;position:absolute;top:-40px;right:0;background:#efefef;color:#7b7878;padding:8px 12px;border-radius:12px;box-shadow:0 4px 8px #00000026;font-size:14px;white-space:nowrap;z-index:10}.custom-tooltip.warning{background:linear-gradient(135deg,gold,#ffb400)}.fade-in{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.footerButton:hover .custom-tooltip{visibility:visible}\n"] }]
|
|
9576
|
+
args: [{ selector: 'lib-next-prev-navigation', template: "<!-- <div class=\"pageTitleDiv\" *ngIf=\"!skipMargin\">\n <p class=\"pageTitle\">{{pageDetails[currentPageIndex]?.name}}</p>\n</div> -->\n<div class=\"button-inner-container rounded\" [ngClass]=\"{ 'skip-margin': skipMargin}\">\n <div class=\"tab-content pt-5 pb-3 row\" [attr.name]=\"pages[currentPageIndex].testElementName\">\n <div class=\"data-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"200\"\n (scrolled)=\"loadMoreData()\">\n\n <div *ngFor=\"let row of pages[currentPageIndex]?.rows\" class=\"marginSize d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / (12))}\">\n <lib-form-elements\n [grid]=\"grid\"\n [currentPageIndex]=\"currentPageIndex\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [pages]=\"pages\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n state=\"parent\"\n ></lib-form-elements>\n </div>\n </div>\n </div>\n <div [ngStyle]=\"{ display: currentPageIndex === pageDetails.length - 1 ? 'block' : 'none' }\" id=\"captcha-container\"></div>\n\n <div class=\"footerButton\">\n <div\n class=\"prevButtonDiv\"\n [ngClass]=\"{ 'prevDirection-rtl': acceptedLanguage === 'ara' }\">\n <button\n class=\"me-md-2 rounded-pill navButton\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n type=\"button\"\n (click)=\"onNavigatePrevious()\"\n *ngIf=\"0 < currentPageIndex\"\n >\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #defaultSvg>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n Previous | {{ previousPage.name }}\n </button>\n </div>\n <div\n class=\"nextButtonDiv\"\n [ngClass]=\"{ 'nextDirection-rtl': acceptedLanguage === 'ara' }\"\n >\n <button\n class=\"md-2 rounded-pill navButton\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\n type=\"button\"\n (click)=\"onNavigateNext()\"\n *ngIf=\"currentPageIndex < pageDetails.length - 1\"\n >\n Next | {{ nextPage.name }}\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51025 11.9883L19.5003 11.9883\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n <ng-template #defaultSvg>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.4897 12.0117L4.49975 12.0117\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n </button>\n <button *ngIf=\"showCancelButton && currentPageIndex == pageDetails.length - 1\" class=\"btn submitButton rounded-pill bg-secondary text-white\"\n (click)=\"cancelled()\" type=\"button\"\n >Cancel</button>\n <div\n *ngIf=\"skipValidation\"\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n <button\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill d-flex align-items-center justify-content-center\"\n [ngStyle]=\"{ 'background-color': secondaryColor ? secondaryColor : '#084fff' }\"\n type=\"button\"\n *ngIf=\"currentPageIndex == pageDetails.length - 1 && !isActionTriggered\"\n (click)=\"saveAsDraft()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInDraft\"\n >\n <ng-container *ngIf=\"submissionInDraft; else showSubmitText\">\n\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Save Draft\n </ng-template>\n </button>\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n\n <div\n class=\"button-container position-relative\"\n (mouseenter)=\"showTooltip = true\"\n (mouseleave)=\"showTooltip = false\"\n >\n <button\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill d-flex align-items-center justify-content-center\"\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor : '#084fff' }\"\n type=\"button\"\n *ngIf=\"currentPageIndex == pageDetails.length - 1 && !isActionTriggered\"\n (click)=\"submitForm()\"\n [disabled]=\"!eligibleForSubmission.status || submissionInProgress\"\n >\n <ng-container *ngIf=\"submissionInProgress; else showSubmitText\">\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\n Submitting...\n </ng-container>\n <ng-template #showSubmitText>\n Submit\n </ng-template>\n </button>\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\n {{eligibleForSubmission.message}}\n </div>\n </div>\n\n </div>\n </div>\n <div *ngIf=\"submissionInProgress\" class=\"text-loader\">\n {{ currentStep }}{{ animatedDots }}\n <span class=\"percentage\">{{ submissionProgress }}%</span>\n </div>\n</div>\n", styles: [".pageTitle{font-size:15px;font-weight:500}#captcha-container{display:flex;justify-content:center;align-items:center;padding-left:1.8rem}.grecaptcha-popup{position:fixed!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;z-index:9999;border-radius:50%}@media (max-width: 480px){.g-recaptcha{transform:scale(.85);transform-origin:center}}.pageTitleDiv{padding-left:3rem;padding-top:3rem;padding-right:3rem}@media (max-width: 1024px){.pageTitleDiv{padding-left:1rem;padding-right:1rem;padding-top:2rem}}@media (max-width: 576px){.pageTitleDiv{padding-left:.4rem;padding-right:.4rem;padding-top:1.5rem}}.button-inner-container{width:100%;position:relative;padding:2rem}@media (max-width: 1024px){.button-inner-container{padding-left:1rem;padding-right:1rem}}@media (max-width: 576px){.button-inner-container{padding:.1rem .5rem 2rem}}.skip-margin{padding:0}@media (max-width: 576px){.marginSize{padding:0!important}}.footerButton{padding:10px 32px 16px 30px;display:flex;flex-wrap:wrap}@media (max-width: 576px){.footerButton{padding-left:20px;padding-right:17px}}.navButton{color:#fff;border:none;padding:10px 8px;width:auto}.submitBtn{color:#fff;border:none;padding:10px 27px;width:auto}.prevButtonDiv{display:flex;justify-content:center;margin-bottom:5px}.nextButtonDiv{display:flex;justify-content:flex-end;margin-left:auto;margin-bottom:5px}.nextDirection-rtl{margin-left:0;margin-right:auto}.tab-content,.row{background-color:#fff}.spinner-border{display:inline-block;width:1rem;height:1rem;vertical-align:text-bottom;border:.15em solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite}@keyframes spinner-border{to{transform:rotate(360deg)}}.custom-tooltip{visibility:hidden;position:absolute;top:-40px;right:0;background:#efefef;color:#7b7878;padding:8px 12px;border-radius:12px;box-shadow:0 4px 8px #00000026;font-size:14px;white-space:nowrap;z-index:10}.custom-tooltip.warning{background:linear-gradient(135deg,gold,#ffb400)}.fade-in{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.footerButton:hover .custom-tooltip{visibility:visible}.text-loader{font-size:14px;font-weight:500;padding:8px 12px;border-radius:6px;align-items:center;gap:8px;display:flex;justify-content:center}.percentage{font-weight:600;color:var(--primaryColor, #084fff)}\n"] }]
|
|
9562
9577
|
}], propDecorators: { skipValidation: [{
|
|
9563
9578
|
type: Input
|
|
9564
9579
|
}], currentPageIndex: [{
|
|
@@ -9607,6 +9622,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
9607
9622
|
type: Input
|
|
9608
9623
|
}], showCancelButton: [{
|
|
9609
9624
|
type: Input
|
|
9625
|
+
}], submissionProgress: [{
|
|
9626
|
+
type: Input
|
|
9627
|
+
}], currentStep: [{
|
|
9628
|
+
type: Input
|
|
9629
|
+
}], animatedDots: [{
|
|
9630
|
+
type: Input
|
|
9610
9631
|
}] } });
|
|
9611
9632
|
|
|
9612
9633
|
class SubmissionContainerComponent {
|
|
@@ -9705,12 +9726,16 @@ class SubmitFormComponent {
|
|
|
9705
9726
|
this.inValidQuestions = new Map();
|
|
9706
9727
|
this.visitedRows = new Map();
|
|
9707
9728
|
this.allElementIds = [];
|
|
9708
|
-
this.primaryColor = '';
|
|
9729
|
+
this.primaryColor = '#084fff';
|
|
9709
9730
|
this.secondaryColor = '';
|
|
9710
9731
|
this.isLoadingPages = false;
|
|
9711
9732
|
this.copySubforms = [];
|
|
9712
9733
|
this.emitters = [];
|
|
9713
9734
|
this.draft = false;
|
|
9735
|
+
this.submissionProgress = 0;
|
|
9736
|
+
this.showSubmissionLoader = false;
|
|
9737
|
+
this.currentStep = 'Submitting form';
|
|
9738
|
+
this.animatedDots = '';
|
|
9714
9739
|
this.updateSubForm = (pages, updatedSubForm) => {
|
|
9715
9740
|
pages.forEach((page) => {
|
|
9716
9741
|
page.rows.forEach((row) => {
|
|
@@ -9837,7 +9862,7 @@ class SubmitFormComponent {
|
|
|
9837
9862
|
this.emitters = this.question.emitters || [];
|
|
9838
9863
|
this.assignQuestionProperties(this.question);
|
|
9839
9864
|
this.setUpFontFamily(response);
|
|
9840
|
-
this.primaryColor = response.result.primaryColor;
|
|
9865
|
+
this.primaryColor = response.result.primaryColor || '#084fff';
|
|
9841
9866
|
this.secondaryColor = response.result.secondaryColor;
|
|
9842
9867
|
if (this.enableGoogleRecaptcha)
|
|
9843
9868
|
this.recaptchaInitialized();
|
|
@@ -9867,7 +9892,7 @@ class SubmitFormComponent {
|
|
|
9867
9892
|
response.result.moduleConfiguration.enableGoogleRecaptcha;
|
|
9868
9893
|
this.question = mapPublicFormToModel(response);
|
|
9869
9894
|
this.assignQuestionProperties(this.question);
|
|
9870
|
-
this.primaryColor = response.result.primaryColor;
|
|
9895
|
+
this.primaryColor = response.result.primaryColor || '#084fff';
|
|
9871
9896
|
this.secondaryColor = response.result.secondaryColor;
|
|
9872
9897
|
this.emitters = this.question.emitters || [];
|
|
9873
9898
|
if (response?.result?.pageDetails) {
|
|
@@ -10541,6 +10566,7 @@ class SubmitFormComponent {
|
|
|
10541
10566
|
this.submitForm();
|
|
10542
10567
|
}
|
|
10543
10568
|
async submitForm() {
|
|
10569
|
+
this.startSubmissionLoader();
|
|
10544
10570
|
if (this.webhook) {
|
|
10545
10571
|
this.webhookPayloadArray = this.webhook.map((w) => ({
|
|
10546
10572
|
id: w.id,
|
|
@@ -10570,6 +10596,7 @@ class SubmitFormComponent {
|
|
|
10570
10596
|
this.toastr.error('Please complete the CAPTCHA verification before submitting the form.');
|
|
10571
10597
|
this.submissionInProgress = false;
|
|
10572
10598
|
this.submissionInDraft = false;
|
|
10599
|
+
this.resetSubmissionLoader();
|
|
10573
10600
|
this.validationSkip = false;
|
|
10574
10601
|
this.draft = false;
|
|
10575
10602
|
this.submit.emit({
|
|
@@ -10583,6 +10610,7 @@ class SubmitFormComponent {
|
|
|
10583
10610
|
this.toastr.error('Failed to verify reCAPTCHA.');
|
|
10584
10611
|
this.submissionInProgress = false;
|
|
10585
10612
|
this.submissionInDraft = false;
|
|
10613
|
+
this.resetSubmissionLoader();
|
|
10586
10614
|
this.validationSkip = false;
|
|
10587
10615
|
this.draft = false;
|
|
10588
10616
|
this.submit.emit({
|
|
@@ -10605,6 +10633,7 @@ class SubmitFormComponent {
|
|
|
10605
10633
|
this.saveasDraftPopup();
|
|
10606
10634
|
this.submissionInProgress = false;
|
|
10607
10635
|
this.submissionInDraft = false;
|
|
10636
|
+
this.resetSubmissionLoader();
|
|
10608
10637
|
this.validationSkip = false;
|
|
10609
10638
|
this.draft = false;
|
|
10610
10639
|
this.submit.emit({
|
|
@@ -10657,40 +10686,52 @@ class SubmitFormComponent {
|
|
|
10657
10686
|
? this.formService.updateForm(this.moduleName, this.submissionId, formData, recaptchaToken ?? '')
|
|
10658
10687
|
: this.formService.submitForm(this.moduleName, formData, recaptchaToken ?? '');
|
|
10659
10688
|
formServiceCall.subscribe({
|
|
10660
|
-
next: (
|
|
10661
|
-
|
|
10662
|
-
|
|
10663
|
-
|
|
10664
|
-
|
|
10665
|
-
|
|
10666
|
-
emittingValues = this.mapEmittersToValues();
|
|
10667
|
-
}
|
|
10668
|
-
if (this.validationSkip || this.draft) {
|
|
10669
|
-
this.submit.emit({
|
|
10670
|
-
status: 'draft',
|
|
10671
|
-
submissionId: response.result,
|
|
10672
|
-
score: formFinalScore,
|
|
10673
|
-
...(emittingValues || {}),
|
|
10674
|
-
});
|
|
10689
|
+
next: (event) => {
|
|
10690
|
+
if (event.type === HttpEventType.UploadProgress) {
|
|
10691
|
+
if (event.total) {
|
|
10692
|
+
const percentDone = Math.round((event.loaded / event.total) * 100);
|
|
10693
|
+
this.setProgress(Math.min(95, percentDone));
|
|
10694
|
+
}
|
|
10675
10695
|
}
|
|
10676
|
-
|
|
10677
|
-
this.
|
|
10678
|
-
|
|
10679
|
-
|
|
10680
|
-
|
|
10681
|
-
|
|
10682
|
-
|
|
10696
|
+
if (event.type === HttpEventType.Response) {
|
|
10697
|
+
this.completeSubmissionLoader();
|
|
10698
|
+
const response = event.body;
|
|
10699
|
+
// existing success logic ↓
|
|
10700
|
+
this.toastr.success(this.edit
|
|
10701
|
+
? 'Form updated successfully'
|
|
10702
|
+
: 'Form submitted successfully');
|
|
10703
|
+
let emittingValues;
|
|
10704
|
+
if (this.emitters) {
|
|
10705
|
+
emittingValues = this.mapEmittersToValues();
|
|
10706
|
+
}
|
|
10707
|
+
if (this.validationSkip || this.draft) {
|
|
10708
|
+
this.submit.emit({
|
|
10709
|
+
status: 'draft',
|
|
10710
|
+
submissionId: response.result,
|
|
10711
|
+
score: formFinalScore,
|
|
10712
|
+
...(emittingValues || {}),
|
|
10713
|
+
});
|
|
10714
|
+
}
|
|
10715
|
+
else {
|
|
10716
|
+
this.submit.emit({
|
|
10717
|
+
status: 'success',
|
|
10718
|
+
submissionId: response.result,
|
|
10719
|
+
score: formFinalScore,
|
|
10720
|
+
...(emittingValues || {}),
|
|
10721
|
+
});
|
|
10722
|
+
}
|
|
10723
|
+
this.submissionInProgress = false;
|
|
10724
|
+
this.submissionInDraft = false;
|
|
10725
|
+
this.draft = false;
|
|
10726
|
+
this.validationSkip = false;
|
|
10683
10727
|
}
|
|
10684
|
-
this.submissionInProgress = false;
|
|
10685
|
-
this.submissionInDraft = false;
|
|
10686
|
-
this.draft = false;
|
|
10687
|
-
this.validationSkip = false;
|
|
10688
10728
|
},
|
|
10689
10729
|
error: (error) => {
|
|
10690
10730
|
this.validationService.clearAll();
|
|
10691
10731
|
this.findQuestionPageIndex(this.parseErrorsToMap(error.error.message));
|
|
10692
10732
|
this.currentPageIndex = this.pages.length - 1;
|
|
10693
10733
|
this.navigateToFirstError();
|
|
10734
|
+
this.resetSubmissionLoader();
|
|
10694
10735
|
this.submissionInProgress = false;
|
|
10695
10736
|
this.draft = false;
|
|
10696
10737
|
this.validationSkip = false;
|
|
@@ -10711,10 +10752,61 @@ class SubmitFormComponent {
|
|
|
10711
10752
|
this.saveasDraftPopup();
|
|
10712
10753
|
this.submissionInProgress = false;
|
|
10713
10754
|
this.submissionInDraft = false;
|
|
10755
|
+
this.resetSubmissionLoader();
|
|
10714
10756
|
this.validationSkip = false;
|
|
10715
10757
|
this.draft = false;
|
|
10716
10758
|
}
|
|
10717
10759
|
}
|
|
10760
|
+
setProgress(value) {
|
|
10761
|
+
this.submissionProgress = value;
|
|
10762
|
+
this.updateStepText(value);
|
|
10763
|
+
}
|
|
10764
|
+
startSubmissionLoader() {
|
|
10765
|
+
this.showSubmissionLoader = true;
|
|
10766
|
+
this.setProgress(0);
|
|
10767
|
+
// Simulated progress until backend upload updates it
|
|
10768
|
+
this.progressInterval = setInterval(() => {
|
|
10769
|
+
if (this.submissionProgress < 85) {
|
|
10770
|
+
this.setProgress(this.submissionProgress + 2);
|
|
10771
|
+
}
|
|
10772
|
+
}, 300);
|
|
10773
|
+
}
|
|
10774
|
+
completeSubmissionLoader() {
|
|
10775
|
+
clearInterval(this.progressInterval);
|
|
10776
|
+
this.setProgress(100);
|
|
10777
|
+
setTimeout(() => {
|
|
10778
|
+
this.showSubmissionLoader = false;
|
|
10779
|
+
this.setProgress(0);
|
|
10780
|
+
}, 500);
|
|
10781
|
+
}
|
|
10782
|
+
resetSubmissionLoader() {
|
|
10783
|
+
clearInterval(this.progressInterval);
|
|
10784
|
+
this.showSubmissionLoader = false;
|
|
10785
|
+
clearInterval(this.dotInterval);
|
|
10786
|
+
this.animatedDots = '';
|
|
10787
|
+
this.setProgress(0);
|
|
10788
|
+
}
|
|
10789
|
+
startTextLoader() {
|
|
10790
|
+
let dotCount = 0;
|
|
10791
|
+
this.dotInterval = setInterval(() => {
|
|
10792
|
+
dotCount = (dotCount + 1) % 4;
|
|
10793
|
+
this.animatedDots = '.'.repeat(dotCount);
|
|
10794
|
+
}, 500);
|
|
10795
|
+
}
|
|
10796
|
+
updateStepText(progress) {
|
|
10797
|
+
if (progress < 25) {
|
|
10798
|
+
this.currentStep = 'Validating form';
|
|
10799
|
+
}
|
|
10800
|
+
else if (progress < 60) {
|
|
10801
|
+
this.currentStep = 'Uploading data';
|
|
10802
|
+
}
|
|
10803
|
+
else if (progress < 90) {
|
|
10804
|
+
this.currentStep = 'Saving submission';
|
|
10805
|
+
}
|
|
10806
|
+
else {
|
|
10807
|
+
this.currentStep = 'Finalizing';
|
|
10808
|
+
}
|
|
10809
|
+
}
|
|
10718
10810
|
calculateFormFinalScore() {
|
|
10719
10811
|
const goodScore = this.maxPossibleGoodScore
|
|
10720
10812
|
? 100 - (this.sumOfGoodFindings / this.maxPossibleGoodScore) * 100
|
|
@@ -11100,11 +11192,11 @@ class SubmitFormComponent {
|
|
|
11100
11192
|
this.cancel.emit();
|
|
11101
11193
|
}
|
|
11102
11194
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmitFormComponent, deps: [{ token: FormService }, { token: i1$4.ToastrService }, { token: i2.Router }, { token: DataService }, { token: RecaptchaService }, { token: ValidationService }, { token: i0.ChangeDetectorRef }, { token: ElementTrackerService }, { token: FormValidationService }, { token: AggregationFunctionService }, { token: ScoreCalculationService }, { token: i1$3.MatDialog }, { token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11103
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SubmitFormComponent, selector: "lib-submit-form", inputs: { moduleName: "moduleName", edit: "edit", submissionId: "submissionId", acceptedLanguage: "acceptedLanguage", skipMargin: "skipMargin", skipValidation: "skipValidation", navigateTo: "navigateTo", country: "country", showCancelButton: "showCancelButton", isActionTriggered: "isActionTriggered" }, outputs: { submit: "submit", apiCalled: "apiCalled", currentPageIndexChange: "currentPageIndexChange", cancel: "cancel" }, viewQueries: [{ propertyName: "child", first: true, predicate: NavigationTabsComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"outer-container\">\n\n<ng-container *ngIf=\"isLoadingPages\">\n <ngx-skeleton-loader count=\"5\"></ngx-skeleton-loader>\n</ng-container>\n\n <div class=\"head container\" *ngIf=\"!skipMargin\">\n <lib-header [name]=\"name\" [skipMargin]=\"skipMargin\"></lib-header>\n </div>\n\n\n\n <div class=\"body\" [ngClass]=\"{ 'skip-margin': skipMargin,container: !skipMargin}\">\n\n <lib-submission-container [parentQuestionAnswers]=\"parentQuestionAnswers\"\n *ngIf=\"parentQuestionAnswers\"></lib-submission-container>\n\n <lib-navigation-tabs\n *ngIf=\"navigation == 'TAB'\"\n [skipMargin]=\"skipMargin\"\n [skipValidation]=\"skipValidation\"\n [pages]=\"pages\"\n [currentPageIndex]=\"currentPageIndex\"\n (pageChanged)=\"setCurrentPage($event)\"\n (submitEmit)=\"submitForm()\"\n [pageDetails]=\"pageDetails\"\n [eligibleForSubmission]=\"eligibleForSubmission\"\n [edit]=\"edit\"\n [acceptedLanguage] = \"acceptedLanguage\"\n [isActionTriggered]=\"isActionTriggered\"\n [primaryColor]=\"primaryColor\"\n [secondaryColor]=\"secondaryColor\"\n [markAllQuestionsAsRequired]=\"markAllQuestionsAsRequired\"\n [submissionInProgress]=\"submissionInProgress\"\n [submissionInDraft]=\"submissionInDraft\"\n [showCancelButton]=\"showCancelButton\"\n (saveAsDraftEmit)=\"saveAsDraft()\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n (rowSetIndex)=\"loadMoreData($event)\"\n (cancel)=\"cancelled()\"\n ></lib-navigation-tabs>\n <lib-next-prev-navigation\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\n [skipMargin]=\"skipMargin\"\n [currentPageIndex]=\"currentPageIndex\"\n [pageDetails]=\"pageDetails\"\n (rowSetIndex)=\"loadMoreData($event)\"\n [pages]=\"pages\"\n [previousPage]=\"previousPage\"\n [isActionTriggered]=\"isActionTriggered\"\n [currentPage]=\"currentPage\"\n [primaryColor]=\"primaryColor\"\n [secondaryColor]=\"secondaryColor\"\n [nextPage]=\"nextPage\"\n (navigateNext)=\"navigateToNextPage()\"\n (navigatePrevious)=\"navigateToPreviousPage()\"\n [acceptedLanguage] = \"acceptedLanguage\"\n (submitEmit)=\"submitForm()\"\n (saveAsDraftEmit)=\"saveAsDraft()\"\n [edit]=\"edit\"\n [eligibleForSubmission]=\"eligibleForSubmission\"\n [submissionInProgress]=\"submissionInProgress\"\n [submissionInDraft]=\"submissionInDraft\"\n [showCancelButton]=\"showCancelButton\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n (cancel)=\"cancelled()\"\n [skipValidation]=\"skipValidation\"\n ></lib-next-prev-navigation>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.head{background-color:#fff;padding:0!important}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}.skip-margin{background:#fff}.save-draft-wrapper{display:flex;justify-content:flex-end;gap:1rem;margin-top:1rem;margin-right:2rem;padding:0 1.5rem 1.5rem}.draft-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:.65rem 1.6rem;font-size:14px;font-weight:500;border-radius:9999px;border:1px solid transparent;cursor:pointer;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;transition:all .2s ease}.draft-btn:hover:not(:disabled){background:linear-gradient(135deg,#1e40af,#1d4ed8);transform:translateY(-1px);box-shadow:0 3px 6px #0000001a}.draft-btn:disabled{background:#cbd5e1;color:#64748b;cursor:not-allowed;box-shadow:none}.draft-btn .spinner{border:2px solid rgba(255,255,255,.3);border-top:2px solid #fff;border-radius:50%;width:14px;height:14px;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i14.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "component", type: HeaderComponent, selector: "lib-header", inputs: ["name", "skipMargin"] }, { kind: "component", type: NavigationTabsComponent, selector: "lib-navigation-tabs", inputs: ["pages", "currentPageIndex", "skipValidation", "edit", "acceptedLanguage", "eligibleForSubmission", "pageDetails", "markAllQuestionsAsRequired", "skipMargin", "primaryColor", "secondaryColor", "isActionTriggered", "submissionInProgress", "submissionInDraft", "showCancelButton"], outputs: ["pageChanged", "submitEmit", "saveAsDraftEmit", "subFormChange", "rowSetIndex", "cancel"] }, { kind: "component", type: NextPrevNavigationComponent, selector: "lib-next-prev-navigation", inputs: ["skipValidation", "currentPageIndex", "pages", "previousPage", "nextPage", "currentPage", "pageDetails", "skipMargin", "edit", "acceptedLanguage", "primaryColor", "secondaryColor", "isActionTriggered", "submissionInProgress", "submissionInDraft", "eligibleForSubmission", "showCancelButton"], outputs: ["navigateNext", "navigatePrevious", "submitEmit", "saveAsDraftEmit", "cancel", "subFormChange", "rowSetIndex"] }, { kind: "component", type: SubmissionContainerComponent, selector: "lib-submission-container", inputs: ["parentQuestionAnswers"] }] }); }
|
|
11195
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SubmitFormComponent, selector: "lib-submit-form", inputs: { moduleName: "moduleName", edit: "edit", submissionId: "submissionId", acceptedLanguage: "acceptedLanguage", skipMargin: "skipMargin", skipValidation: "skipValidation", navigateTo: "navigateTo", country: "country", showCancelButton: "showCancelButton", isActionTriggered: "isActionTriggered" }, outputs: { submit: "submit", apiCalled: "apiCalled", currentPageIndexChange: "currentPageIndexChange", cancel: "cancel" }, viewQueries: [{ propertyName: "child", first: true, predicate: NavigationTabsComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"outer-container\">\n\n<ng-container *ngIf=\"isLoadingPages\">\n <ngx-skeleton-loader count=\"5\"></ngx-skeleton-loader>\n</ng-container>\n\n <div class=\"head container\" *ngIf=\"!skipMargin\">\n <lib-header [name]=\"name\" [skipMargin]=\"skipMargin\"></lib-header>\n </div>\n\n\n\n <div class=\"body\" [ngClass]=\"{ 'skip-margin': skipMargin,container: !skipMargin}\">\n\n <lib-submission-container [parentQuestionAnswers]=\"parentQuestionAnswers\"\n *ngIf=\"parentQuestionAnswers\"></lib-submission-container>\n\n <lib-navigation-tabs\n *ngIf=\"navigation == 'TAB'\"\n [skipMargin]=\"skipMargin\"\n [skipValidation]=\"skipValidation\"\n [pages]=\"pages\"\n [currentPageIndex]=\"currentPageIndex\"\n (pageChanged)=\"setCurrentPage($event)\"\n (submitEmit)=\"submitForm()\"\n [pageDetails]=\"pageDetails\"\n [eligibleForSubmission]=\"eligibleForSubmission\"\n [edit]=\"edit\"\n [acceptedLanguage] = \"acceptedLanguage\"\n [isActionTriggered]=\"isActionTriggered\"\n [primaryColor]=\"primaryColor\"\n [secondaryColor]=\"secondaryColor\"\n [markAllQuestionsAsRequired]=\"markAllQuestionsAsRequired\"\n [submissionInProgress]=\"submissionInProgress\"\n [submissionInDraft]=\"submissionInDraft\"\n [showCancelButton]=\"showCancelButton\"\n [submissionProgress]=\"submissionProgress\"\n [animatedDots]=\"animatedDots\"\n [currentStep]=\"currentStep\"\n (saveAsDraftEmit)=\"saveAsDraft()\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n (rowSetIndex)=\"loadMoreData($event)\"\n (cancel)=\"cancelled()\"\n ></lib-navigation-tabs>\n <lib-next-prev-navigation\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\n [skipMargin]=\"skipMargin\"\n [currentPageIndex]=\"currentPageIndex\"\n [pageDetails]=\"pageDetails\"\n (rowSetIndex)=\"loadMoreData($event)\"\n [pages]=\"pages\"\n [previousPage]=\"previousPage\"\n [isActionTriggered]=\"isActionTriggered\"\n [currentPage]=\"currentPage\"\n [primaryColor]=\"primaryColor\"\n [secondaryColor]=\"secondaryColor\"\n [nextPage]=\"nextPage\"\n (navigateNext)=\"navigateToNextPage()\"\n (navigatePrevious)=\"navigateToPreviousPage()\"\n [acceptedLanguage] = \"acceptedLanguage\"\n (submitEmit)=\"submitForm()\"\n (saveAsDraftEmit)=\"saveAsDraft()\"\n [edit]=\"edit\"\n [eligibleForSubmission]=\"eligibleForSubmission\"\n [submissionInProgress]=\"submissionInProgress\"\n [submissionInDraft]=\"submissionInDraft\"\n [showCancelButton]=\"showCancelButton\"\n [submissionProgress]=\"submissionProgress\"\n [animatedDots]=\"animatedDots\"\n [currentStep]=\"currentStep\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n (cancel)=\"cancelled()\"\n [skipValidation]=\"skipValidation\"\n ></lib-next-prev-navigation>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.head{background-color:#fff;padding:0!important}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}.skip-margin{background:#fff}.save-draft-wrapper{display:flex;justify-content:flex-end;gap:1rem;margin-top:1rem;margin-right:2rem;padding:0 1.5rem 1.5rem}.draft-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:.65rem 1.6rem;font-size:14px;font-weight:500;border-radius:9999px;border:1px solid transparent;cursor:pointer;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;transition:all .2s ease}.draft-btn:hover:not(:disabled){background:linear-gradient(135deg,#1e40af,#1d4ed8);transform:translateY(-1px);box-shadow:0 3px 6px #0000001a}.draft-btn:disabled{background:#cbd5e1;color:#64748b;cursor:not-allowed;box-shadow:none}.draft-btn .spinner{border:2px solid rgba(255,255,255,.3);border-top:2px solid #fff;border-radius:50%;width:14px;height:14px;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i14.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "component", type: HeaderComponent, selector: "lib-header", inputs: ["name", "skipMargin"] }, { kind: "component", type: NavigationTabsComponent, selector: "lib-navigation-tabs", inputs: ["pages", "currentPageIndex", "skipValidation", "edit", "acceptedLanguage", "eligibleForSubmission", "pageDetails", "markAllQuestionsAsRequired", "skipMargin", "primaryColor", "secondaryColor", "isActionTriggered", "submissionInProgress", "submissionInDraft", "showCancelButton", "submissionProgress", "currentStep", "animatedDots"], outputs: ["pageChanged", "submitEmit", "saveAsDraftEmit", "subFormChange", "rowSetIndex", "cancel"] }, { kind: "component", type: NextPrevNavigationComponent, selector: "lib-next-prev-navigation", inputs: ["skipValidation", "currentPageIndex", "pages", "previousPage", "nextPage", "currentPage", "pageDetails", "skipMargin", "edit", "acceptedLanguage", "primaryColor", "secondaryColor", "isActionTriggered", "submissionInProgress", "submissionInDraft", "eligibleForSubmission", "showCancelButton", "submissionProgress", "currentStep", "animatedDots"], outputs: ["navigateNext", "navigatePrevious", "submitEmit", "saveAsDraftEmit", "cancel", "subFormChange", "rowSetIndex"] }, { kind: "component", type: SubmissionContainerComponent, selector: "lib-submission-container", inputs: ["parentQuestionAnswers"] }] }); }
|
|
11104
11196
|
}
|
|
11105
11197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmitFormComponent, decorators: [{
|
|
11106
11198
|
type: Component,
|
|
11107
|
-
args: [{ selector: 'lib-submit-form', template: "<div class=\"outer-container\">\n\n<ng-container *ngIf=\"isLoadingPages\">\n <ngx-skeleton-loader count=\"5\"></ngx-skeleton-loader>\n</ng-container>\n\n <div class=\"head container\" *ngIf=\"!skipMargin\">\n <lib-header [name]=\"name\" [skipMargin]=\"skipMargin\"></lib-header>\n </div>\n\n\n\n <div class=\"body\" [ngClass]=\"{ 'skip-margin': skipMargin,container: !skipMargin}\">\n\n <lib-submission-container [parentQuestionAnswers]=\"parentQuestionAnswers\"\n *ngIf=\"parentQuestionAnswers\"></lib-submission-container>\n\n <lib-navigation-tabs\n *ngIf=\"navigation == 'TAB'\"\n [skipMargin]=\"skipMargin\"\n [skipValidation]=\"skipValidation\"\n [pages]=\"pages\"\n [currentPageIndex]=\"currentPageIndex\"\n (pageChanged)=\"setCurrentPage($event)\"\n (submitEmit)=\"submitForm()\"\n [pageDetails]=\"pageDetails\"\n [eligibleForSubmission]=\"eligibleForSubmission\"\n [edit]=\"edit\"\n [acceptedLanguage] = \"acceptedLanguage\"\n [isActionTriggered]=\"isActionTriggered\"\n [primaryColor]=\"primaryColor\"\n [secondaryColor]=\"secondaryColor\"\n [markAllQuestionsAsRequired]=\"markAllQuestionsAsRequired\"\n [submissionInProgress]=\"submissionInProgress\"\n [submissionInDraft]=\"submissionInDraft\"\n [showCancelButton]=\"showCancelButton\"\n (saveAsDraftEmit)=\"saveAsDraft()\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n (rowSetIndex)=\"loadMoreData($event)\"\n (cancel)=\"cancelled()\"\n ></lib-navigation-tabs>\n <lib-next-prev-navigation\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\n [skipMargin]=\"skipMargin\"\n [currentPageIndex]=\"currentPageIndex\"\n [pageDetails]=\"pageDetails\"\n (rowSetIndex)=\"loadMoreData($event)\"\n [pages]=\"pages\"\n [previousPage]=\"previousPage\"\n [isActionTriggered]=\"isActionTriggered\"\n [currentPage]=\"currentPage\"\n [primaryColor]=\"primaryColor\"\n [secondaryColor]=\"secondaryColor\"\n [nextPage]=\"nextPage\"\n (navigateNext)=\"navigateToNextPage()\"\n (navigatePrevious)=\"navigateToPreviousPage()\"\n [acceptedLanguage] = \"acceptedLanguage\"\n (submitEmit)=\"submitForm()\"\n (saveAsDraftEmit)=\"saveAsDraft()\"\n [edit]=\"edit\"\n [eligibleForSubmission]=\"eligibleForSubmission\"\n [submissionInProgress]=\"submissionInProgress\"\n [submissionInDraft]=\"submissionInDraft\"\n [showCancelButton]=\"showCancelButton\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n (cancel)=\"cancelled()\"\n [skipValidation]=\"skipValidation\"\n ></lib-next-prev-navigation>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.head{background-color:#fff;padding:0!important}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}.skip-margin{background:#fff}.save-draft-wrapper{display:flex;justify-content:flex-end;gap:1rem;margin-top:1rem;margin-right:2rem;padding:0 1.5rem 1.5rem}.draft-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:.65rem 1.6rem;font-size:14px;font-weight:500;border-radius:9999px;border:1px solid transparent;cursor:pointer;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;transition:all .2s ease}.draft-btn:hover:not(:disabled){background:linear-gradient(135deg,#1e40af,#1d4ed8);transform:translateY(-1px);box-shadow:0 3px 6px #0000001a}.draft-btn:disabled{background:#cbd5e1;color:#64748b;cursor:not-allowed;box-shadow:none}.draft-btn .spinner{border:2px solid rgba(255,255,255,.3);border-top:2px solid #fff;border-radius:50%;width:14px;height:14px;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"] }]
|
|
11199
|
+
args: [{ selector: 'lib-submit-form', template: "<div class=\"outer-container\">\n\n<ng-container *ngIf=\"isLoadingPages\">\n <ngx-skeleton-loader count=\"5\"></ngx-skeleton-loader>\n</ng-container>\n\n <div class=\"head container\" *ngIf=\"!skipMargin\">\n <lib-header [name]=\"name\" [skipMargin]=\"skipMargin\"></lib-header>\n </div>\n\n\n\n <div class=\"body\" [ngClass]=\"{ 'skip-margin': skipMargin,container: !skipMargin}\">\n\n <lib-submission-container [parentQuestionAnswers]=\"parentQuestionAnswers\"\n *ngIf=\"parentQuestionAnswers\"></lib-submission-container>\n\n <lib-navigation-tabs\n *ngIf=\"navigation == 'TAB'\"\n [skipMargin]=\"skipMargin\"\n [skipValidation]=\"skipValidation\"\n [pages]=\"pages\"\n [currentPageIndex]=\"currentPageIndex\"\n (pageChanged)=\"setCurrentPage($event)\"\n (submitEmit)=\"submitForm()\"\n [pageDetails]=\"pageDetails\"\n [eligibleForSubmission]=\"eligibleForSubmission\"\n [edit]=\"edit\"\n [acceptedLanguage] = \"acceptedLanguage\"\n [isActionTriggered]=\"isActionTriggered\"\n [primaryColor]=\"primaryColor\"\n [secondaryColor]=\"secondaryColor\"\n [markAllQuestionsAsRequired]=\"markAllQuestionsAsRequired\"\n [submissionInProgress]=\"submissionInProgress\"\n [submissionInDraft]=\"submissionInDraft\"\n [showCancelButton]=\"showCancelButton\"\n [submissionProgress]=\"submissionProgress\"\n [animatedDots]=\"animatedDots\"\n [currentStep]=\"currentStep\"\n (saveAsDraftEmit)=\"saveAsDraft()\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n (rowSetIndex)=\"loadMoreData($event)\"\n (cancel)=\"cancelled()\"\n ></lib-navigation-tabs>\n <lib-next-prev-navigation\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\n [skipMargin]=\"skipMargin\"\n [currentPageIndex]=\"currentPageIndex\"\n [pageDetails]=\"pageDetails\"\n (rowSetIndex)=\"loadMoreData($event)\"\n [pages]=\"pages\"\n [previousPage]=\"previousPage\"\n [isActionTriggered]=\"isActionTriggered\"\n [currentPage]=\"currentPage\"\n [primaryColor]=\"primaryColor\"\n [secondaryColor]=\"secondaryColor\"\n [nextPage]=\"nextPage\"\n (navigateNext)=\"navigateToNextPage()\"\n (navigatePrevious)=\"navigateToPreviousPage()\"\n [acceptedLanguage] = \"acceptedLanguage\"\n (submitEmit)=\"submitForm()\"\n (saveAsDraftEmit)=\"saveAsDraft()\"\n [edit]=\"edit\"\n [eligibleForSubmission]=\"eligibleForSubmission\"\n [submissionInProgress]=\"submissionInProgress\"\n [submissionInDraft]=\"submissionInDraft\"\n [showCancelButton]=\"showCancelButton\"\n [submissionProgress]=\"submissionProgress\"\n [animatedDots]=\"animatedDots\"\n [currentStep]=\"currentStep\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n (cancel)=\"cancelled()\"\n [skipValidation]=\"skipValidation\"\n ></lib-next-prev-navigation>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.head{background-color:#fff;padding:0!important}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}.skip-margin{background:#fff}.save-draft-wrapper{display:flex;justify-content:flex-end;gap:1rem;margin-top:1rem;margin-right:2rem;padding:0 1.5rem 1.5rem}.draft-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:.65rem 1.6rem;font-size:14px;font-weight:500;border-radius:9999px;border:1px solid transparent;cursor:pointer;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;transition:all .2s ease}.draft-btn:hover:not(:disabled){background:linear-gradient(135deg,#1e40af,#1d4ed8);transform:translateY(-1px);box-shadow:0 3px 6px #0000001a}.draft-btn:disabled{background:#cbd5e1;color:#64748b;cursor:not-allowed;box-shadow:none}.draft-btn .spinner{border:2px solid rgba(255,255,255,.3);border-top:2px solid #fff;border-radius:50%;width:14px;height:14px;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"] }]
|
|
11108
11200
|
}], ctorParameters: function () { return [{ type: FormService }, { type: i1$4.ToastrService }, { type: i2.Router }, { type: DataService }, { type: RecaptchaService }, { type: ValidationService }, { type: i0.ChangeDetectorRef }, { type: ElementTrackerService }, { type: FormValidationService }, { type: AggregationFunctionService }, { type: ScoreCalculationService }, { type: i1$3.MatDialog }, { type: WhenClauseService }]; }, propDecorators: { moduleName: [{
|
|
11109
11201
|
type: Input
|
|
11110
11202
|
}], edit: [{
|