@piserve-tech/form-submission 1.3.319 → 1.3.320
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/README.md +24 -24
- package/assets/icons/close-sidebar-mark-icon.svg +3 -3
- package/assets/icons/copy-icon.svg +5 -5
- package/assets/icons/delete-icon.svg +7 -7
- package/assets/icons/delete-no-outline-icon.svg +7 -7
- package/esm2022/form-fields/aggregate-function/aggregate-function.component.mjs +3 -3
- package/esm2022/form-fields/check-box-fields/check-box-fields.component.mjs +10 -7
- package/esm2022/form-fields/currency-fields/currency-fields.component.mjs +11 -8
- package/esm2022/form-fields/date-time-fields/date-time-fields.component.mjs +12 -9
- package/esm2022/form-fields/drop-down-fields/drop-down-fields.component.mjs +11 -8
- package/esm2022/form-fields/file-picker-fields/file-picker-fields.component.mjs +11 -8
- package/esm2022/form-fields/form-fields.module.mjs +1 -1
- package/esm2022/form-fields/hidden-field/hidden-field.component.mjs +26 -19
- package/esm2022/form-fields/iframe-fields/iframe-fields.component.mjs +21 -21
- package/esm2022/form-fields/location-fields/location-fields.component.mjs +3 -3
- package/esm2022/form-fields/mail-fields/mail-fields.component.mjs +11 -8
- package/esm2022/form-fields/mobile-fields/mobile-fields.component.mjs +12 -9
- package/esm2022/form-fields/number-fields/number-fields.component.mjs +11 -8
- package/esm2022/form-fields/password-fields/password-fields.component.mjs +11 -8
- package/esm2022/form-fields/radio-button-fields/radio-button-fields.component.mjs +11 -8
- package/esm2022/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.mjs +12 -9
- package/esm2022/form-fields/section-fields/section-fields.component.mjs +3 -3
- package/esm2022/form-fields/selection-matrix-fields/selection-matrix-fields.component.mjs +11 -8
- package/esm2022/form-fields/signature-fields/signature-fields.component.mjs +3 -3
- package/esm2022/form-fields/slider-fields/slider-fields.component.mjs +12 -9
- package/esm2022/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.mjs +9 -7
- package/esm2022/form-fields/text-area-fields/text-area-fields.component.mjs +11 -8
- package/esm2022/form-fields/text-fields/text-fields.component.mjs +11 -8
- package/esm2022/form-fields/toggle-switch-fields/toggle-switch-fields.component.mjs +10 -7
- package/esm2022/form-fields/url-fields/url-fields.component.mjs +11 -8
- package/esm2022/form-submission/form-submission.module.mjs +1 -1
- package/esm2022/form-submission/header/header.component.mjs +3 -3
- package/esm2022/form-submission/navigation-tabs/navigation-tabs.component.mjs +3 -3
- package/esm2022/form-submission/next-prev-navigation/next-prev-navigation.component.mjs +3 -3
- package/esm2022/form-submission/save-as-draft/saveDraftModalComponent .mjs +3 -3
- package/esm2022/form-submission/submit-form/submit-form.component.mjs +25 -22
- package/esm2022/lib/form-submission.component.mjs +3 -3
- package/esm2022/lib/form-submission.module.mjs +1 -1
- package/esm2022/models/aggregate.model.mjs +1 -1
- package/esm2022/models/answer.model.mjs +1 -1
- package/esm2022/models/appearance.model.mjs +1 -1
- package/esm2022/models/attachment.model.mjs +1 -1
- package/esm2022/models/defaultAnswerEntry.model.mjs +1 -1
- package/esm2022/models/defaultAnswersModel.model.mjs +1 -1
- package/esm2022/models/defaultQuestionAnswer.model.mjs +1 -1
- package/esm2022/models/elementOptionAPI.model.mjs +1 -1
- package/esm2022/models/elementOptionDB.model.mjs +1 -1
- package/esm2022/models/emitters.model.mjs +1 -1
- package/esm2022/models/formElement.model.mjs +1 -1
- package/esm2022/models/grid.model.mjs +1 -1
- package/esm2022/models/hiddenField.model.mjs +1 -1
- package/esm2022/models/iFrameProperties.model.mjs +1 -1
- package/esm2022/models/multifields.model.mjs +1 -1
- package/esm2022/models/page.model.mjs +1 -1
- package/esm2022/models/publicForm.model.mjs +1 -1
- package/esm2022/models/question.model.mjs +1 -1
- package/esm2022/models/questionGroup.model.mjs +1 -1
- package/esm2022/models/scoring.model.mjs +1 -1
- package/esm2022/models/section.model.mjs +1 -1
- package/esm2022/models/subForm.model.mjs +1 -1
- package/esm2022/models/subformConfiguration.model.mjs +1 -1
- package/esm2022/models/subformPropery.model.mjs +1 -1
- package/esm2022/models/submission.model.mjs +1 -1
- package/esm2022/models/submissionCopyConfig.mopdel.mjs +1 -1
- package/esm2022/models/whenClause.model.mjs +1 -1
- package/esm2022/models/whenClauseCondition.model.mjs +1 -1
- package/esm2022/models/whenClauseElements.model.mjs +1 -1
- package/esm2022/question/card-subform/card-subform.component.mjs +83 -53
- package/esm2022/question/confirm-dialog/confirm-dialog.component.mjs +3 -3
- package/esm2022/question/form-elements/form-elements.component.mjs +3 -3
- package/esm2022/question/inline-multiple-subform/inline-multiple-subform.component.mjs +37 -30
- package/esm2022/question/multifields/multifields.component.mjs +3 -3
- package/esm2022/question/multiple-subform/multiple-subform.component.mjs +3 -3
- package/esm2022/question/question/question.component.mjs +3 -3
- package/esm2022/question/question-group/question-group.component.mjs +3 -3
- package/esm2022/question/recursive-logic/recursive-logic.component.mjs +3 -3
- package/esm2022/question/sub-form/sub-form.component.mjs +3 -3
- package/esm2022/services/aggregate.service.mjs +1 -1
- package/esm2022/services/countryService.mjs +1 -1
- package/esm2022/services/data.service.mjs +1 -1
- package/esm2022/services/form-validation.service.mjs +1 -1
- package/esm2022/services/form.service.mjs +1 -1
- package/esm2022/services/hidden-field.service.mjs +160 -0
- package/esm2022/services/mapper.service.mjs +3 -2
- package/esm2022/services/recaptcha.service.mjs +1 -1
- package/esm2022/services/score.service.mjs +1 -1
- package/esm2022/services/subform-copy.service.mjs +1 -1
- package/esm2022/services/whenClause.service.mjs +1 -1
- package/esm2022/shared/shared.module.mjs +1 -1
- package/esm2022/sub-form/submission-modal/submission-modal.component.mjs +3 -3
- package/fesm2022/piserve-tech-form-submission.mjs +457 -225
- package/fesm2022/piserve-tech-form-submission.mjs.map +1 -1
- package/form-fields/check-box-fields/check-box-fields.component.d.ts +3 -1
- package/form-fields/currency-fields/currency-fields.component.d.ts +3 -1
- package/form-fields/date-time-fields/date-time-fields.component.d.ts +3 -1
- package/form-fields/drop-down-fields/drop-down-fields.component.d.ts +3 -1
- package/form-fields/file-picker-fields/file-picker-fields.component.d.ts +3 -1
- package/form-fields/hidden-field/hidden-field.component.d.ts +6 -1
- package/form-fields/mail-fields/mail-fields.component.d.ts +3 -1
- package/form-fields/mobile-fields/mobile-fields.component.d.ts +3 -1
- package/form-fields/number-fields/number-fields.component.d.ts +3 -1
- package/form-fields/password-fields/password-fields.component.d.ts +3 -1
- package/form-fields/radio-button-fields/radio-button-fields.component.d.ts +3 -1
- package/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.d.ts +3 -1
- package/form-fields/selection-matrix-fields/selection-matrix-fields.component.d.ts +3 -1
- package/form-fields/slider-fields/slider-fields.component.d.ts +3 -1
- package/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.d.ts +3 -1
- package/form-fields/text-area-fields/text-area-fields.component.d.ts +3 -1
- package/form-fields/text-fields/text-fields.component.d.ts +3 -1
- package/form-fields/toggle-switch-fields/toggle-switch-fields.component.d.ts +3 -0
- package/form-fields/url-fields/url-fields.component.d.ts +3 -1
- package/form-submission/submit-form/submit-form.component.d.ts +3 -1
- package/models/hiddenField.model.d.ts +1 -0
- package/package.json +1 -1
- package/question/card-subform/card-subform.component.d.ts +7 -1
- package/question/inline-multiple-subform/inline-multiple-subform.component.d.ts +4 -1
- package/services/hidden-field.service.d.ts +31 -0
|
@@ -10,19 +10,19 @@ import * as i2 from '@angular/router';
|
|
|
10
10
|
import { NavigationEnd } from '@angular/router';
|
|
11
11
|
import * as i5 from '@angular/forms';
|
|
12
12
|
import { FormsModule } from '@angular/forms';
|
|
13
|
-
import * as
|
|
13
|
+
import * as i7 from 'ngx-bootstrap/datepicker';
|
|
14
14
|
import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
|
|
15
|
-
import * as
|
|
15
|
+
import * as i8 from 'ngx-material-timepicker';
|
|
16
16
|
import { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';
|
|
17
|
-
import * as
|
|
17
|
+
import * as i8$1 from '@piserve-tech/drop-down';
|
|
18
18
|
import { DropdownModule } from '@piserve-tech/drop-down';
|
|
19
|
-
import * as
|
|
19
|
+
import * as i8$2 from '@piserve-tech/file-upload';
|
|
20
20
|
import { DocUploadModule } from '@piserve-tech/file-upload';
|
|
21
21
|
import * as i2$1 from '@angular/google-maps';
|
|
22
22
|
import { GoogleMap, GoogleMapsModule } from '@angular/google-maps';
|
|
23
|
-
import * as
|
|
23
|
+
import * as i6 from 'ngx-quill';
|
|
24
24
|
import { QuillModule } from 'ngx-quill';
|
|
25
|
-
import * as
|
|
25
|
+
import * as i4 from '@angular/material/slider';
|
|
26
26
|
import { MatSliderModule } from '@angular/material/slider';
|
|
27
27
|
import * as i1$2 from '@angular/platform-browser';
|
|
28
28
|
import * as i1$3 from '@angular/material/dialog';
|
|
@@ -30,15 +30,15 @@ import { MAT_DIALOG_DATA, MatDialogConfig, MatDialogModule } from '@angular/mate
|
|
|
30
30
|
import { v4 } from 'uuid';
|
|
31
31
|
import * as i6$1 from '@angular/material/table';
|
|
32
32
|
import { MatTableModule } from '@angular/material/table';
|
|
33
|
-
import * as i7$
|
|
33
|
+
import * as i7$1 from '@angular/material/menu';
|
|
34
34
|
import { MatMenuModule } from '@angular/material/menu';
|
|
35
|
-
import * as i8 from '@angular/material/icon';
|
|
35
|
+
import * as i8$3 from '@angular/material/icon';
|
|
36
36
|
import { MatIconModule } from '@angular/material/icon';
|
|
37
|
-
import * as i4 from 'ngx-infinite-scroll';
|
|
37
|
+
import * as i4$1 from 'ngx-infinite-scroll';
|
|
38
38
|
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
|
|
39
39
|
import * as i1$4 from 'ngx-toastr';
|
|
40
40
|
import { ToastrModule } from 'ngx-toastr';
|
|
41
|
-
import * as
|
|
41
|
+
import * as i15 from 'ngx-skeleton-loader';
|
|
42
42
|
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
|
43
43
|
import { FilePreviewModule } from '@piserve-tech/file-preview';
|
|
44
44
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
@@ -248,7 +248,8 @@ function mapHiddenFieldToModel(hiddenField) {
|
|
|
248
248
|
return {
|
|
249
249
|
value: hiddenField?.value,
|
|
250
250
|
valueSource: hiddenField?.valueSource,
|
|
251
|
-
key: hiddenField?.key
|
|
251
|
+
key: hiddenField?.key,
|
|
252
|
+
updateOn: hiddenField?.updateOn || 'BOTH'
|
|
252
253
|
};
|
|
253
254
|
}
|
|
254
255
|
function mapAggregateFunction(aggregateFunction) {
|
|
@@ -1177,11 +1178,11 @@ class SectionFieldsComponent {
|
|
|
1177
1178
|
}
|
|
1178
1179
|
}
|
|
1179
1180
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SectionFieldsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1180
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SectionFieldsComponent, selector: "lib-section-fields", inputs: { section: "section" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"mb-4 px-3\" [attr.name]=\"section.testElementName\">\
|
|
1181
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SectionFieldsComponent, selector: "lib-section-fields", inputs: { section: "section" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"mb-4 px-3\" [attr.name]=\"section.testElementName\">\n <p class=\"sectionTitle\">{{ section.title }}</p>\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\n</div>\n", styles: [".sectionTitle{font-size:19px;font-weight:700;margin-bottom:20px;word-break:break-word}.description{font-size:17px;font-weight:500;margin-bottom:18px;word-break:break-word}::ng-deep .description img{max-width:100%}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}\n"] }); }
|
|
1181
1182
|
}
|
|
1182
1183
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SectionFieldsComponent, decorators: [{
|
|
1183
1184
|
type: Component,
|
|
1184
|
-
args: [{ selector: 'lib-section-fields', template: "<div class=\"mb-4 px-3\" [attr.name]=\"section.testElementName\">\
|
|
1185
|
+
args: [{ selector: 'lib-section-fields', template: "<div class=\"mb-4 px-3\" [attr.name]=\"section.testElementName\">\n <p class=\"sectionTitle\">{{ section.title }}</p>\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\n</div>\n", styles: [".sectionTitle{font-size:19px;font-weight:700;margin-bottom:20px;word-break:break-word}.description{font-size:17px;font-weight:500;margin-bottom:18px;word-break:break-word}::ng-deep .description img{max-width:100%}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
1185
1186
|
}], propDecorators: { section: [{
|
|
1186
1187
|
type: Input
|
|
1187
1188
|
}] } });
|
|
@@ -1837,13 +1838,170 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1837
1838
|
}]
|
|
1838
1839
|
}], ctorParameters: function () { return []; } });
|
|
1839
1840
|
|
|
1841
|
+
class HiddenFieldService {
|
|
1842
|
+
constructor(dataService) {
|
|
1843
|
+
this.dataService = dataService;
|
|
1844
|
+
this.hiddenFieldMap = new Map();
|
|
1845
|
+
this.hiddenFieldResultsSubject = new BehaviorSubject(null);
|
|
1846
|
+
this.hiddenFieldResults$ = this.hiddenFieldResultsSubject.asObservable();
|
|
1847
|
+
this.isEdit = false;
|
|
1848
|
+
this.subformHiddenFieldsMap = new Map();
|
|
1849
|
+
this.user = '';
|
|
1850
|
+
this.dataService.header$.subscribe((data) => {
|
|
1851
|
+
this.user = data.authUser;
|
|
1852
|
+
});
|
|
1853
|
+
}
|
|
1854
|
+
setEditMode(value) {
|
|
1855
|
+
this.isEdit = value;
|
|
1856
|
+
}
|
|
1857
|
+
getEditMode() {
|
|
1858
|
+
return this.isEdit;
|
|
1859
|
+
}
|
|
1860
|
+
setHiddenField(id, field) {
|
|
1861
|
+
this.hiddenFieldMap.set(id, field);
|
|
1862
|
+
}
|
|
1863
|
+
getHiddenField(id) {
|
|
1864
|
+
return this.hiddenFieldMap.get(id);
|
|
1865
|
+
}
|
|
1866
|
+
getAllHiddenFields() {
|
|
1867
|
+
return Array.from(this.hiddenFieldMap.values());
|
|
1868
|
+
}
|
|
1869
|
+
updateHiddenFieldsOnChange() {
|
|
1870
|
+
this.hiddenFieldMap.forEach((hiddenField, id) => {
|
|
1871
|
+
const updateOn = hiddenField.formElement?.hiddenField.updateOn;
|
|
1872
|
+
// ✅ Only process UPDATE / BOTH
|
|
1873
|
+
if (updateOn !== 'UPDATE' && updateOn !== 'BOTH') {
|
|
1874
|
+
return;
|
|
1875
|
+
}
|
|
1876
|
+
// ✅ Recalculate value
|
|
1877
|
+
const result = this.resolveHiddenFieldValue(hiddenField.formElement?.hiddenField);
|
|
1878
|
+
// ✅ Emit result
|
|
1879
|
+
this.hiddenFieldResultsSubject.next({
|
|
1880
|
+
id: id,
|
|
1881
|
+
result: result,
|
|
1882
|
+
});
|
|
1883
|
+
});
|
|
1884
|
+
}
|
|
1885
|
+
resolveHiddenFieldValue(hiddenField) {
|
|
1886
|
+
if (!hiddenField?.valueSource)
|
|
1887
|
+
return null;
|
|
1888
|
+
switch (hiddenField.valueSource) {
|
|
1889
|
+
case 'CUSTOM_INPUT':
|
|
1890
|
+
// Directly return the provided value
|
|
1891
|
+
return hiddenField.value;
|
|
1892
|
+
case 'LOCAL_STORAGE':
|
|
1893
|
+
if (hiddenField.key) {
|
|
1894
|
+
return localStorage.getItem(hiddenField.key);
|
|
1895
|
+
}
|
|
1896
|
+
return null;
|
|
1897
|
+
case 'SESSION_STORAGE':
|
|
1898
|
+
if (hiddenField.key) {
|
|
1899
|
+
return sessionStorage.getItem(hiddenField.key);
|
|
1900
|
+
}
|
|
1901
|
+
return null;
|
|
1902
|
+
case 'PREDEFINED_VARIABLE':
|
|
1903
|
+
return this.resolvePredefinedVariable(hiddenField.value);
|
|
1904
|
+
default:
|
|
1905
|
+
return null;
|
|
1906
|
+
}
|
|
1907
|
+
}
|
|
1908
|
+
resolvePredefinedVariable(variable) {
|
|
1909
|
+
if (!variable)
|
|
1910
|
+
return null;
|
|
1911
|
+
const now = new Date();
|
|
1912
|
+
switch (variable) {
|
|
1913
|
+
case 'CURRENT_DATE':
|
|
1914
|
+
return now.toISOString().split('T')[0]; // e.g. "2025-09-29"
|
|
1915
|
+
case 'CURRENT_TIME':
|
|
1916
|
+
return now.toTimeString().split(' ')[0]; // e.g. "15:42:18"
|
|
1917
|
+
case 'CURRENT_DATE_TIME':
|
|
1918
|
+
return now.toLocaleString(); // full ISO datetime
|
|
1919
|
+
case 'EPOCH_TIME':
|
|
1920
|
+
return now.getTime(); // milliseconds since 1970
|
|
1921
|
+
case 'YEAR':
|
|
1922
|
+
return now.getFullYear();
|
|
1923
|
+
case 'MONTH':
|
|
1924
|
+
return now.getMonth() + 1; // 1-12
|
|
1925
|
+
case 'DAY':
|
|
1926
|
+
return now.getDate(); // 1-31
|
|
1927
|
+
case 'SUBMITTED_BY':
|
|
1928
|
+
return this.user ? this.user : 'Unknown';
|
|
1929
|
+
default:
|
|
1930
|
+
return null;
|
|
1931
|
+
}
|
|
1932
|
+
}
|
|
1933
|
+
extractSubformHiddenFields(subForm) {
|
|
1934
|
+
if (!subForm?.rows)
|
|
1935
|
+
return;
|
|
1936
|
+
const hiddenFields = [];
|
|
1937
|
+
subForm.rows.forEach((row) => {
|
|
1938
|
+
row.grid?.forEach((item) => {
|
|
1939
|
+
const element = item?.element;
|
|
1940
|
+
if (element?.formElement?.elementType === 'HIDDEN_FIELD' &&
|
|
1941
|
+
item?.show) {
|
|
1942
|
+
hiddenFields.push({
|
|
1943
|
+
id: element.id,
|
|
1944
|
+
config: element.formElement.hiddenField
|
|
1945
|
+
});
|
|
1946
|
+
}
|
|
1947
|
+
});
|
|
1948
|
+
});
|
|
1949
|
+
// Store using subform id
|
|
1950
|
+
this.subformHiddenFieldsMap.set(subForm.id, hiddenFields);
|
|
1951
|
+
}
|
|
1952
|
+
updateSubformHiddenFieldsFromCache(subFormId, submission, trigger) {
|
|
1953
|
+
const hiddenFields = this.subformHiddenFieldsMap.get(subFormId);
|
|
1954
|
+
if (!hiddenFields || !submission?.answers)
|
|
1955
|
+
return submission;
|
|
1956
|
+
hiddenFields.forEach((field) => {
|
|
1957
|
+
const hiddenConfig = field.config;
|
|
1958
|
+
if (!hiddenConfig)
|
|
1959
|
+
return;
|
|
1960
|
+
const updateOn = hiddenConfig.updateOn;
|
|
1961
|
+
const shouldUpdate = updateOn === 'BOTH' ||
|
|
1962
|
+
(updateOn === 'SAVE' && trigger === 'SAVE') ||
|
|
1963
|
+
(updateOn === 'UPDATE' && trigger === 'UPDATE');
|
|
1964
|
+
if (!shouldUpdate)
|
|
1965
|
+
return;
|
|
1966
|
+
// ✅ Resolve value
|
|
1967
|
+
const value = this.resolveHiddenFieldValue(hiddenConfig);
|
|
1968
|
+
// ✅ Find answer
|
|
1969
|
+
const answerObj = submission.answers.find((ans) => ans.questionId === field.id);
|
|
1970
|
+
if (answerObj) {
|
|
1971
|
+
if (answerObj.answer !== value) {
|
|
1972
|
+
answerObj.answer = value;
|
|
1973
|
+
}
|
|
1974
|
+
}
|
|
1975
|
+
else {
|
|
1976
|
+
submission.answers.push({
|
|
1977
|
+
questionId: field.id,
|
|
1978
|
+
answer: value,
|
|
1979
|
+
maximumPossibleScore: 0,
|
|
1980
|
+
show: true,
|
|
1981
|
+
required: false,
|
|
1982
|
+
});
|
|
1983
|
+
}
|
|
1984
|
+
});
|
|
1985
|
+
return submission;
|
|
1986
|
+
}
|
|
1987
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HiddenFieldService, deps: [{ token: DataService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1988
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HiddenFieldService, providedIn: 'root' }); }
|
|
1989
|
+
}
|
|
1990
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HiddenFieldService, decorators: [{
|
|
1991
|
+
type: Injectable,
|
|
1992
|
+
args: [{
|
|
1993
|
+
providedIn: 'root',
|
|
1994
|
+
}]
|
|
1995
|
+
}], ctorParameters: function () { return [{ type: DataService }]; } });
|
|
1996
|
+
|
|
1840
1997
|
class CheckBoxFieldsComponent {
|
|
1841
|
-
constructor(formService, validationService, tracker, scoreCalcService, whenClauseService) {
|
|
1998
|
+
constructor(formService, validationService, tracker, scoreCalcService, whenClauseService, hiddenFieldService) {
|
|
1842
1999
|
this.formService = formService;
|
|
1843
2000
|
this.validationService = validationService;
|
|
1844
2001
|
this.tracker = tracker;
|
|
1845
2002
|
this.scoreCalcService = scoreCalcService;
|
|
1846
2003
|
this.whenClauseService = whenClauseService;
|
|
2004
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
1847
2005
|
this.question = {};
|
|
1848
2006
|
this.inLine = false;
|
|
1849
2007
|
this.inCard = false;
|
|
@@ -1989,6 +2147,7 @@ class CheckBoxFieldsComponent {
|
|
|
1989
2147
|
const answers = Array.isArray(this.question.answer) ? this.question.answer : [];
|
|
1990
2148
|
const parsedAnswers = answers.map((ans) => ans.split('|')[1]);
|
|
1991
2149
|
this.whenClauseService.setQuestionAnswer(this.question.id, parsedAnswers);
|
|
2150
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
1992
2151
|
}
|
|
1993
2152
|
updateChildLogics(question) {
|
|
1994
2153
|
if (question.childLogics && Array.isArray(question.childLogics)) {
|
|
@@ -2280,13 +2439,13 @@ class CheckBoxFieldsComponent {
|
|
|
2280
2439
|
this.tracker.unregisterElement(this.elementId);
|
|
2281
2440
|
}
|
|
2282
2441
|
}
|
|
2283
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckBoxFieldsComponent, deps: [{ token: FormService }, { token: ValidationService }, { token: ElementTrackerService }, { token: ScoreCalculationService }, { token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2284
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", rowId: "rowId", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
2442
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckBoxFieldsComponent, deps: [{ token: FormService }, { token: ValidationService }, { token: ElementTrackerService }, { token: ScoreCalculationService }, { token: WhenClauseService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2443
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", rowId: "rowId", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-3\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div\n class=\"checkboxField-container\"\n [class.two-column]=\"displayOptionsInColumn\"\n >\n <div class=\"form-check\" *ngFor=\"let option of customOptions\">\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [id]=\"question.id+'-'+rowId+'-'+option.value\"\n [name]=\"option.value + 'Checkbox'\"\n [value]=\"option.value\"\n (change)=\"onCheckboxChange(option, $event)\"\n [disabled]=\"isOptionDisabled(option)\"\n [checked]=\"selectedOptions.includes(option)\"\n [attr.data-value]=\"selectedOptions.includes(option)\"\n [disabled]=\"disableEdit\"\n />\n <label\n class=\"formCheckLabel me-4 mb-2\"\n [for]=\"question.id+'-'+rowId+'-'+option.value\"\n >{{ option.label }}</label\n >\n </div>\n </div>\n <div\n *ngIf=\"isInvalid && (!inLine || selectedOptions.length === 0)\"\n class=\"error-message\"\n >\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.form-check-input{cursor:pointer}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.formCheckLabel{margin-top:5px;cursor:pointer}.checkboxField-container{display:block}.checkboxField-container.two-column{display:grid;grid-template-columns:repeat(2,1fr)}\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"] }] }); }
|
|
2285
2444
|
}
|
|
2286
2445
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckBoxFieldsComponent, decorators: [{
|
|
2287
2446
|
type: Component,
|
|
2288
|
-
args: [{ selector: 'lib-check-box-fields', template: "<div\
|
|
2289
|
-
}], ctorParameters: function () { return [{ type: FormService }, { type: ValidationService }, { type: ElementTrackerService }, { type: ScoreCalculationService }, { type: WhenClauseService }]; }, propDecorators: { question: [{
|
|
2447
|
+
args: [{ selector: 'lib-check-box-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-3\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div\n class=\"checkboxField-container\"\n [class.two-column]=\"displayOptionsInColumn\"\n >\n <div class=\"form-check\" *ngFor=\"let option of customOptions\">\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [id]=\"question.id+'-'+rowId+'-'+option.value\"\n [name]=\"option.value + 'Checkbox'\"\n [value]=\"option.value\"\n (change)=\"onCheckboxChange(option, $event)\"\n [disabled]=\"isOptionDisabled(option)\"\n [checked]=\"selectedOptions.includes(option)\"\n [attr.data-value]=\"selectedOptions.includes(option)\"\n [disabled]=\"disableEdit\"\n />\n <label\n class=\"formCheckLabel me-4 mb-2\"\n [for]=\"question.id+'-'+rowId+'-'+option.value\"\n >{{ option.label }}</label\n >\n </div>\n </div>\n <div\n *ngIf=\"isInvalid && (!inLine || selectedOptions.length === 0)\"\n class=\"error-message\"\n >\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.form-check-input{cursor:pointer}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.formCheckLabel{margin-top:5px;cursor:pointer}.checkboxField-container{display:block}.checkboxField-container.two-column{display:grid;grid-template-columns:repeat(2,1fr)}\n"] }]
|
|
2448
|
+
}], ctorParameters: function () { return [{ type: FormService }, { type: ValidationService }, { type: ElementTrackerService }, { type: ScoreCalculationService }, { type: WhenClauseService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
2290
2449
|
type: Input
|
|
2291
2450
|
}], inLine: [{
|
|
2292
2451
|
type: Input
|
|
@@ -2303,11 +2462,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2303
2462
|
}] } });
|
|
2304
2463
|
|
|
2305
2464
|
class DateTimeFieldsComponent {
|
|
2306
|
-
constructor(datePipe, router, validationService, tracker) {
|
|
2465
|
+
constructor(datePipe, router, validationService, tracker, hiddenFieldService) {
|
|
2307
2466
|
this.datePipe = datePipe;
|
|
2308
2467
|
this.router = router;
|
|
2309
2468
|
this.validationService = validationService;
|
|
2310
2469
|
this.tracker = tracker;
|
|
2470
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
2311
2471
|
this.bsConfig = {
|
|
2312
2472
|
containerClass: 'theme-custom',
|
|
2313
2473
|
isAnimated: true,
|
|
@@ -2571,6 +2731,7 @@ class DateTimeFieldsComponent {
|
|
|
2571
2731
|
this.validateDateRange();
|
|
2572
2732
|
}
|
|
2573
2733
|
this.answerChange.emit({ answer: this.question.answer, maxPossibleScore: 0 });
|
|
2734
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
2574
2735
|
}
|
|
2575
2736
|
formatDate(date, type = 'dateTime') {
|
|
2576
2737
|
switch (this.dateType) {
|
|
@@ -2864,13 +3025,13 @@ class DateTimeFieldsComponent {
|
|
|
2864
3025
|
get errorMessage() {
|
|
2865
3026
|
return this.validationService.getErrorMessage(this.buildElementId());
|
|
2866
3027
|
}
|
|
2867
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimeFieldsComponent, deps: [{ token: i1$1.DatePipe }, { token: i2.Router }, { token: ValidationService }, { token: ElementTrackerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2868
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, providers: [DatePipe], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datepickerYMD"], descendants: true }, { propertyName: "dateRangePicker", first: true, predicate: ["daterangepicker"], descendants: true }, { propertyName: "dateAndTimePicker", first: true, predicate: ["dateAndTimePicker"], descendants: true }, { propertyName: "fullTime3", first: true, predicate: ["fullTime3"], descendants: true }, { propertyName: "fullTime4", first: true, predicate: ["fullTime4"], descendants: true }], ngImport: i0, template: "<div\r\n [ngClass]=\"{ 'mb-4': !inLine }\"\r\n class=\"px-3\"\r\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\r\n [attr.name]=\"question.testElementName\"\r\n>\r\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\r\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\r\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\r\n > \r\n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\r\n <div\r\n class=\"svg-wrapper mb-2 hintIcon\"\r\n [attr.data-title]=\"hint\"\r\n *ngIf=\"hint\"\r\n >\r\n <svg\r\n class=\"hintSvg\"\r\n viewBox=\"0 0 30 30\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\r\n <!-- Date only picker -->\r\n <div class=\"input-container\">\r\n <input\r\n class=\"form-control height\"\r\n #datepickerYMD=\"bsDatepicker\"\r\n bsDatepicker\r\n [minDate]=\"minDate ? minDate : undefined\"\r\n [maxDate]=\"maxDate ? maxDate : undefined\"\r\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\r\n [(ngModel)]=\"selectedDate\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n placeholder=\"Select date\"\r\n container=\"body\"\r\n placement=\"top\"\r\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedDate)\"\r\n [disabled]=\"disableEdit\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDatePicker()\"\r\n ></i>\r\n </div>\r\n <div *ngIf=\"isInvalid && (!inLine || !selectedDate)\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message mt-2\">\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'MONTH_YEAR'\">\r\n <div class=\"input-container\">\r\n <input\r\n class=\"form-control height\"\r\n #datepickerYMD=\"bsDatepicker\"\r\n bsDatepicker\r\n [minDate]=\"minDate ? minDate : undefined\"\r\n [maxDate]=\"maxDate ? maxDate : undefined\"\r\n [bsConfig]=\"{\r\n containerClass: 'theme-dark-blue',\r\n isAnimated: true,\r\n adaptivePosition: true,\r\n showWeekNumbers: false,\r\n minMode: 'month',\r\n dateInputFormat: format\r\n }\"\r\n [(ngModel)]=\"selectedDate\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n placeholder=\"Select date\"\r\n container=\"body\"\r\n placement=\"top\"\r\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedDate)\"\r\n [disabled]=\"disableEdit\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDatePicker()\"\r\n ></i>\r\n </div>\r\n <div *ngIf=\"isInvalid && (!inLine || !selectedDate)\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mt-2\">\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\r\n <!-- Time picker -->\r\n\r\n <div class=\"input-container\">\r\n <input\r\n class=\"form-control height appearanceInput mt-3\"\r\n aria-label=\"Select time\"\r\n placeholder=\"Select time\"\r\n readonly\r\n [format]=\"timeFormat === '24' ? 24 : 12\"\r\n [ngxTimepicker]=\"fullTime3\"\r\n [(ngModel)]=\"selectedTime\"\r\n [max]=\"maxTime\"\r\n [min]=\"minTime\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedTime)\"\r\n container=\"body\"\r\n placement=\"top\"\r\n [disabled]=\"disableEdit\"\r\n />\r\n\r\n <i\r\n id=\"startDateIcon\"\r\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\r\n (click)=\"fullTime3.open()\"\r\n style=\"cursor: pointer\"\r\n ></i>\r\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\r\n </div>\r\n <div *ngIf=\"isInvalid && (!inLine || !selectedTime)\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mt-2\">\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\r\n <!-- Date and time picker -->\r\n <div class=\"input-container\">\r\n <input\r\n #dateAndTimePicker=\"bsDatepicker\"\r\n type=\"text\"\r\n class=\"form-control height\"\r\n [minDate]=\"minDate ? minDate : undefined\"\r\n [maxDate]=\"maxDate ? maxDate : undefined\"\r\n [bsConfig]=\"{\r\n dateInputFormat: format,\r\n containerClass: 'theme-custom'\r\n }\"\r\n placeholder=\"Select date\"\r\n container=\"body\"\r\n placement=\"top\"\r\n bsDatepicker\r\n [class.invalid]=\"validationFailed\"\r\n [(ngModel)]=\"selectedDateAndTime\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid-question]=\"isInvalid\"\r\n [disabled]=\"disableEdit\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDateAndTimePicker()\"\r\n ></i>\r\n </div>\r\n <div\r\n class=\"input-container\"\r\n *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\"\r\n >\r\n <input\r\n class=\"form-control height appearanceInput mt-3\"\r\n aria-label=\"Select time\"\r\n placeholder=\"Select time\"\r\n readonly\r\n [format]=\"timeFormat === '24' ? 24 : 12\"\r\n [ngxTimepicker]=\"fullTime4\"\r\n [(ngModel)]=\"selectedTime\"\r\n [max]=\"maxTime\"\r\n [min]=\"minTime\"\r\n (ngModelChange)=\"validateField()\"\r\n (focus)=\"closeDatepicker()\"\r\n [class.invalid]=\"timeValidationFailed\"\r\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedTime)\"\r\n container=\"body\"\r\n placement=\"top\"\r\n [disabled]=\"disableEdit\"\r\n />\r\n\r\n <i\r\n id=\"startDateIcon\"\r\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\r\n (click)=\"fullTime4.open()\"\r\n style=\"cursor: pointer\"\r\n ></i>\r\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\r\n </div>\r\n <!-- <div *ngIf=\"isInvalid\" class=\"error-message\"> -->\r\n <div *ngIf=\"isInvalid && (!inLine || !selectedTime)\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <div\r\n *ngIf=\"(validationFailed || timeValidationFailed) && !isInvalid\"\r\n class=\"text-danger mt-2\"\r\n >\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\r\n <!-- Date range picker -->\r\n <div class=\"input-container\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control height\"\r\n #daterangepicker=\"bsDaterangepicker\"\r\n bsDaterangepicker\r\n placeholder=\"Select date\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n [bsConfig]=\"{\r\n rangeInputFormat: format,\r\n dateInputFormat: format,\r\n containerClass: 'theme-custom',\r\n displayOneMonthRange: true\r\n }\"\r\n [(ngModel)]=\"selectedDateRange\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedDateRange)\"\r\n container=\"body\"\r\n placement=\"top\"\r\n [disabled]=\"disableEdit\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDateRangePicker()\"\r\n ></i>\r\n </div>\r\n <div *ngIf=\"isInvalid && (!inLine || !selectedDateRange)\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mt-2\">\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n</div>\r\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.input-container{position:relative}.input-container .form-control{padding-right:30px}.input-container .calendar-icon,.clock-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.appearanceInput{background-color:#fff}::ng-deep ngx-material-timepicker-content{--body-background-color: #fff;--button-color: #08bff6 !important;--dial-active-color: #fff;--dial-inactive-color: rgba(255, 255, 255, .5);--dial-background-color: #08bff6 !important;--dial-editable-active-color: #08bff6!important;--dial-editable-background-color: #fff;--clock-face-time-active-color: #fff;--clock-face-time-inactive-color: #6c6c6c;--clock-face-inner-time-inactive-color: #929292;--clock-face-time-disabled-color: #c5c5c5;--clock-face-background-color: #f0f0f0;--clock-hand-color: #08bff6 !important;position:relative;z-index:99999999}::ng-deep ngx-material-timepicker-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:99998}.theme-custom .bs-datepicker-head,.timepicker__header{background-color:#08bff6!important}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.bs-datepicker-body table td span.selected,.bs-datepicker-body table td.selected span{color:#fff!important;background-color:#08bff6!important;border-radius:50%}\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: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i6.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i6.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i6.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }, { kind: "component", type: i7.NgxMaterialTimepickerComponent, selector: "ngx-material-timepicker", inputs: ["cancelBtnTmpl", "editableHintTmpl", "confirmBtnTmpl", "ESC", "enableKeyboardInput", "preventOverlayClick", "disableAnimation", "appendToInput", "hoursOnly", "defaultTime", "timepickerClass", "theme", "min", "max", "ngxMaterialTimepickerTheme", "format", "minutesGap"], outputs: ["timeSet", "opened", "closed", "hourSelected", "timeChanged"] }, { kind: "directive", type: i7.TimepickerDirective, selector: "[ngxTimepicker]", inputs: ["format", "min", "max", "ngxTimepicker", "value", "disabled", "disableClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
3028
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimeFieldsComponent, deps: [{ token: i1$1.DatePipe }, { token: i2.Router }, { token: ValidationService }, { token: ElementTrackerService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3029
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, providers: [DatePipe], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datepickerYMD"], descendants: true }, { propertyName: "dateRangePicker", first: true, predicate: ["daterangepicker"], descendants: true }, { propertyName: "dateAndTimePicker", first: true, predicate: ["dateAndTimePicker"], descendants: true }, { propertyName: "fullTime3", first: true, predicate: ["fullTime3"], descendants: true }, { propertyName: "fullTime4", first: true, predicate: ["fullTime4"], descendants: true }], ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\n <!-- Date only picker -->\n <div class=\"input-container\">\n <input\n class=\"form-control height\"\n #datepickerYMD=\"bsDatepicker\"\n bsDatepicker\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\n [(ngModel)]=\"selectedDate\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n placeholder=\"Select date\"\n container=\"body\"\n placement=\"top\"\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedDate)\"\n [disabled]=\"disableEdit\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDatePicker()\"\n ></i>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !selectedDate)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message mt-2\">\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'MONTH_YEAR'\">\n <div class=\"input-container\">\n <input\n class=\"form-control height\"\n #datepickerYMD=\"bsDatepicker\"\n bsDatepicker\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n containerClass: 'theme-dark-blue',\n isAnimated: true,\n adaptivePosition: true,\n showWeekNumbers: false,\n minMode: 'month',\n dateInputFormat: format\n }\"\n [(ngModel)]=\"selectedDate\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n placeholder=\"Select date\"\n container=\"body\"\n placement=\"top\"\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedDate)\"\n [disabled]=\"disableEdit\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDatePicker()\"\n ></i>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !selectedDate)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mt-2\">\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\n <!-- Time picker -->\n\n <div class=\"input-container\">\n <input\n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat === '24' ? 24 : 12\"\n [ngxTimepicker]=\"fullTime3\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedTime)\"\n container=\"body\"\n placement=\"top\"\n [disabled]=\"disableEdit\"\n />\n\n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime3.open()\"\n style=\"cursor: pointer\"\n ></i>\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !selectedTime)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mt-2\">\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\n <!-- Date and time picker -->\n <div class=\"input-container\">\n <input\n #dateAndTimePicker=\"bsDatepicker\"\n type=\"text\"\n class=\"form-control height\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n dateInputFormat: format,\n containerClass: 'theme-custom'\n }\"\n placeholder=\"Select date\"\n container=\"body\"\n placement=\"top\"\n bsDatepicker\n [class.invalid]=\"validationFailed\"\n [(ngModel)]=\"selectedDateAndTime\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid-question]=\"isInvalid\"\n [disabled]=\"disableEdit\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateAndTimePicker()\"\n ></i>\n </div>\n <div\n class=\"input-container\"\n *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\"\n >\n <input\n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat === '24' ? 24 : 12\"\n [ngxTimepicker]=\"fullTime4\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n (focus)=\"closeDatepicker()\"\n [class.invalid]=\"timeValidationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedTime)\"\n container=\"body\"\n placement=\"top\"\n [disabled]=\"disableEdit\"\n />\n\n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime4.open()\"\n style=\"cursor: pointer\"\n ></i>\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\n </div>\n <!-- <div *ngIf=\"isInvalid\" class=\"error-message\"> -->\n <div *ngIf=\"isInvalid && (!inLine || !selectedTime)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div\n *ngIf=\"(validationFailed || timeValidationFailed) && !isInvalid\"\n class=\"text-danger mt-2\"\n >\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\n <!-- Date range picker -->\n <div class=\"input-container\">\n <input\n type=\"text\"\n class=\"form-control height\"\n #daterangepicker=\"bsDaterangepicker\"\n bsDaterangepicker\n placeholder=\"Select date\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [bsConfig]=\"{\n rangeInputFormat: format,\n dateInputFormat: format,\n containerClass: 'theme-custom',\n displayOneMonthRange: true\n }\"\n [(ngModel)]=\"selectedDateRange\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedDateRange)\"\n container=\"body\"\n placement=\"top\"\n [disabled]=\"disableEdit\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateRangePicker()\"\n ></i>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !selectedDateRange)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mt-2\">\n {{ validationMessage }}\n </div>\n </ng-container>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.input-container{position:relative}.input-container .form-control{padding-right:30px}.input-container .calendar-icon,.clock-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.appearanceInput{background-color:#fff}::ng-deep ngx-material-timepicker-content{--body-background-color: #fff;--button-color: #08bff6 !important;--dial-active-color: #fff;--dial-inactive-color: rgba(255, 255, 255, .5);--dial-background-color: #08bff6 !important;--dial-editable-active-color: #08bff6!important;--dial-editable-background-color: #fff;--clock-face-time-active-color: #fff;--clock-face-time-inactive-color: #6c6c6c;--clock-face-inner-time-inactive-color: #929292;--clock-face-time-disabled-color: #c5c5c5;--clock-face-background-color: #f0f0f0;--clock-hand-color: #08bff6 !important;position:relative;z-index:99999999}::ng-deep ngx-material-timepicker-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:99998}.theme-custom .bs-datepicker-head,.timepicker__header{background-color:#08bff6!important}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.bs-datepicker-body table td span.selected,.bs-datepicker-body table td.selected span{color:#fff!important;background-color:#08bff6!important;border-radius:50%}\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: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i7.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i7.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i7.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }, { kind: "component", type: i8.NgxMaterialTimepickerComponent, selector: "ngx-material-timepicker", inputs: ["cancelBtnTmpl", "editableHintTmpl", "confirmBtnTmpl", "ESC", "enableKeyboardInput", "preventOverlayClick", "disableAnimation", "appendToInput", "hoursOnly", "defaultTime", "timepickerClass", "theme", "min", "max", "ngxMaterialTimepickerTheme", "format", "minutesGap"], outputs: ["timeSet", "opened", "closed", "hourSelected", "timeChanged"] }, { kind: "directive", type: i8.TimepickerDirective, selector: "[ngxTimepicker]", inputs: ["format", "min", "max", "ngxTimepicker", "value", "disabled", "disableClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2869
3030
|
}
|
|
2870
3031
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimeFieldsComponent, decorators: [{
|
|
2871
3032
|
type: Component,
|
|
2872
|
-
args: [{ selector: 'lib-date-time-fields', providers: [DatePipe], encapsulation: ViewEncapsulation.None, template: "<div\r\n [ngClass]=\"{ 'mb-4': !inLine }\"\r\n class=\"px-3\"\r\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\r\n [attr.name]=\"question.testElementName\"\r\n>\r\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\r\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\r\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\r\n > \r\n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\r\n <div\r\n class=\"svg-wrapper mb-2 hintIcon\"\r\n [attr.data-title]=\"hint\"\r\n *ngIf=\"hint\"\r\n >\r\n <svg\r\n class=\"hintSvg\"\r\n viewBox=\"0 0 30 30\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\r\n <!-- Date only picker -->\r\n <div class=\"input-container\">\r\n <input\r\n class=\"form-control height\"\r\n #datepickerYMD=\"bsDatepicker\"\r\n bsDatepicker\r\n [minDate]=\"minDate ? minDate : undefined\"\r\n [maxDate]=\"maxDate ? maxDate : undefined\"\r\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\r\n [(ngModel)]=\"selectedDate\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n placeholder=\"Select date\"\r\n container=\"body\"\r\n placement=\"top\"\r\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedDate)\"\r\n [disabled]=\"disableEdit\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDatePicker()\"\r\n ></i>\r\n </div>\r\n <div *ngIf=\"isInvalid && (!inLine || !selectedDate)\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message mt-2\">\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'MONTH_YEAR'\">\r\n <div class=\"input-container\">\r\n <input\r\n class=\"form-control height\"\r\n #datepickerYMD=\"bsDatepicker\"\r\n bsDatepicker\r\n [minDate]=\"minDate ? minDate : undefined\"\r\n [maxDate]=\"maxDate ? maxDate : undefined\"\r\n [bsConfig]=\"{\r\n containerClass: 'theme-dark-blue',\r\n isAnimated: true,\r\n adaptivePosition: true,\r\n showWeekNumbers: false,\r\n minMode: 'month',\r\n dateInputFormat: format\r\n }\"\r\n [(ngModel)]=\"selectedDate\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n placeholder=\"Select date\"\r\n container=\"body\"\r\n placement=\"top\"\r\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedDate)\"\r\n [disabled]=\"disableEdit\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDatePicker()\"\r\n ></i>\r\n </div>\r\n <div *ngIf=\"isInvalid && (!inLine || !selectedDate)\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mt-2\">\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\r\n <!-- Time picker -->\r\n\r\n <div class=\"input-container\">\r\n <input\r\n class=\"form-control height appearanceInput mt-3\"\r\n aria-label=\"Select time\"\r\n placeholder=\"Select time\"\r\n readonly\r\n [format]=\"timeFormat === '24' ? 24 : 12\"\r\n [ngxTimepicker]=\"fullTime3\"\r\n [(ngModel)]=\"selectedTime\"\r\n [max]=\"maxTime\"\r\n [min]=\"minTime\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedTime)\"\r\n container=\"body\"\r\n placement=\"top\"\r\n [disabled]=\"disableEdit\"\r\n />\r\n\r\n <i\r\n id=\"startDateIcon\"\r\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\r\n (click)=\"fullTime3.open()\"\r\n style=\"cursor: pointer\"\r\n ></i>\r\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\r\n </div>\r\n <div *ngIf=\"isInvalid && (!inLine || !selectedTime)\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mt-2\">\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\r\n <!-- Date and time picker -->\r\n <div class=\"input-container\">\r\n <input\r\n #dateAndTimePicker=\"bsDatepicker\"\r\n type=\"text\"\r\n class=\"form-control height\"\r\n [minDate]=\"minDate ? minDate : undefined\"\r\n [maxDate]=\"maxDate ? maxDate : undefined\"\r\n [bsConfig]=\"{\r\n dateInputFormat: format,\r\n containerClass: 'theme-custom'\r\n }\"\r\n placeholder=\"Select date\"\r\n container=\"body\"\r\n placement=\"top\"\r\n bsDatepicker\r\n [class.invalid]=\"validationFailed\"\r\n [(ngModel)]=\"selectedDateAndTime\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid-question]=\"isInvalid\"\r\n [disabled]=\"disableEdit\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDateAndTimePicker()\"\r\n ></i>\r\n </div>\r\n <div\r\n class=\"input-container\"\r\n *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\"\r\n >\r\n <input\r\n class=\"form-control height appearanceInput mt-3\"\r\n aria-label=\"Select time\"\r\n placeholder=\"Select time\"\r\n readonly\r\n [format]=\"timeFormat === '24' ? 24 : 12\"\r\n [ngxTimepicker]=\"fullTime4\"\r\n [(ngModel)]=\"selectedTime\"\r\n [max]=\"maxTime\"\r\n [min]=\"minTime\"\r\n (ngModelChange)=\"validateField()\"\r\n (focus)=\"closeDatepicker()\"\r\n [class.invalid]=\"timeValidationFailed\"\r\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedTime)\"\r\n container=\"body\"\r\n placement=\"top\"\r\n [disabled]=\"disableEdit\"\r\n />\r\n\r\n <i\r\n id=\"startDateIcon\"\r\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\r\n (click)=\"fullTime4.open()\"\r\n style=\"cursor: pointer\"\r\n ></i>\r\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\r\n </div>\r\n <!-- <div *ngIf=\"isInvalid\" class=\"error-message\"> -->\r\n <div *ngIf=\"isInvalid && (!inLine || !selectedTime)\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <div\r\n *ngIf=\"(validationFailed || timeValidationFailed) && !isInvalid\"\r\n class=\"text-danger mt-2\"\r\n >\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\r\n <!-- Date range picker -->\r\n <div class=\"input-container\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control height\"\r\n #daterangepicker=\"bsDaterangepicker\"\r\n bsDaterangepicker\r\n placeholder=\"Select date\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n [bsConfig]=\"{\r\n rangeInputFormat: format,\r\n dateInputFormat: format,\r\n containerClass: 'theme-custom',\r\n displayOneMonthRange: true\r\n }\"\r\n [(ngModel)]=\"selectedDateRange\"\r\n (blur)=\"validateField()\"\r\n (ngModelChange)=\"validateField()\"\r\n [class.invalid]=\"validationFailed\"\r\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedDateRange)\"\r\n container=\"body\"\r\n placement=\"top\"\r\n [disabled]=\"disableEdit\"\r\n />\r\n <i\r\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\r\n (click)=\"openDateRangePicker()\"\r\n ></i>\r\n </div>\r\n <div *ngIf=\"isInvalid && (!inLine || !selectedDateRange)\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mt-2\">\r\n {{ validationMessage }}\r\n </div>\r\n </ng-container>\r\n</div>\r\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.input-container{position:relative}.input-container .form-control{padding-right:30px}.input-container .calendar-icon,.clock-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.appearanceInput{background-color:#fff}::ng-deep ngx-material-timepicker-content{--body-background-color: #fff;--button-color: #08bff6 !important;--dial-active-color: #fff;--dial-inactive-color: rgba(255, 255, 255, .5);--dial-background-color: #08bff6 !important;--dial-editable-active-color: #08bff6!important;--dial-editable-background-color: #fff;--clock-face-time-active-color: #fff;--clock-face-time-inactive-color: #6c6c6c;--clock-face-inner-time-inactive-color: #929292;--clock-face-time-disabled-color: #c5c5c5;--clock-face-background-color: #f0f0f0;--clock-hand-color: #08bff6 !important;position:relative;z-index:99999999}::ng-deep ngx-material-timepicker-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:99998}.theme-custom .bs-datepicker-head,.timepicker__header{background-color:#08bff6!important}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.bs-datepicker-body table td span.selected,.bs-datepicker-body table td.selected span{color:#fff!important;background-color:#08bff6!important;border-radius:50%}\n"] }]
|
|
2873
|
-
}], ctorParameters: function () { return [{ type: i1$1.DatePipe }, { type: i2.Router }, { type: ValidationService }, { type: ElementTrackerService }]; }, propDecorators: { question: [{
|
|
3033
|
+
args: [{ selector: 'lib-date-time-fields', providers: [DatePipe], encapsulation: ViewEncapsulation.None, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <ng-container *ngIf=\"dateType === 'DATE_ONLY'\">\n <!-- Date only picker -->\n <div class=\"input-container\">\n <input\n class=\"form-control height\"\n #datepickerYMD=\"bsDatepicker\"\n bsDatepicker\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{ dateInputFormat: format, containerClass: 'theme-custom' }\"\n [(ngModel)]=\"selectedDate\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n placeholder=\"Select date\"\n container=\"body\"\n placement=\"top\"\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedDate)\"\n [disabled]=\"disableEdit\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDatePicker()\"\n ></i>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !selectedDate)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message mt-2\">\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'MONTH_YEAR'\">\n <div class=\"input-container\">\n <input\n class=\"form-control height\"\n #datepickerYMD=\"bsDatepicker\"\n bsDatepicker\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n containerClass: 'theme-dark-blue',\n isAnimated: true,\n adaptivePosition: true,\n showWeekNumbers: false,\n minMode: 'month',\n dateInputFormat: format\n }\"\n [(ngModel)]=\"selectedDate\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n placeholder=\"Select date\"\n container=\"body\"\n placement=\"top\"\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedDate)\"\n [disabled]=\"disableEdit\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDatePicker()\"\n ></i>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !selectedDate)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mt-2\">\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'TIME_ONLY'\">\n <!-- Time picker -->\n\n <div class=\"input-container\">\n <input\n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat === '24' ? 24 : 12\"\n [ngxTimepicker]=\"fullTime3\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedTime)\"\n container=\"body\"\n placement=\"top\"\n [disabled]=\"disableEdit\"\n />\n\n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime3.open()\"\n style=\"cursor: pointer\"\n ></i>\n <ngx-material-timepicker #fullTime3></ngx-material-timepicker>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !selectedTime)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mt-2\">\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_AND_TIME'\">\n <!-- Date and time picker -->\n <div class=\"input-container\">\n <input\n #dateAndTimePicker=\"bsDatepicker\"\n type=\"text\"\n class=\"form-control height\"\n [minDate]=\"minDate ? minDate : undefined\"\n [maxDate]=\"maxDate ? maxDate : undefined\"\n [bsConfig]=\"{\n dateInputFormat: format,\n containerClass: 'theme-custom'\n }\"\n placeholder=\"Select date\"\n container=\"body\"\n placement=\"top\"\n bsDatepicker\n [class.invalid]=\"validationFailed\"\n [(ngModel)]=\"selectedDateAndTime\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid-question]=\"isInvalid\"\n [disabled]=\"disableEdit\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateAndTimePicker()\"\n ></i>\n </div>\n <div\n class=\"input-container\"\n *ngIf=\"selectedDateAndTime && selectedDateAndTime != null\"\n >\n <input\n class=\"form-control height appearanceInput mt-3\"\n aria-label=\"Select time\"\n placeholder=\"Select time\"\n readonly\n [format]=\"timeFormat === '24' ? 24 : 12\"\n [ngxTimepicker]=\"fullTime4\"\n [(ngModel)]=\"selectedTime\"\n [max]=\"maxTime\"\n [min]=\"minTime\"\n (ngModelChange)=\"validateField()\"\n (focus)=\"closeDatepicker()\"\n [class.invalid]=\"timeValidationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedTime)\"\n container=\"body\"\n placement=\"top\"\n [disabled]=\"disableEdit\"\n />\n\n <i\n id=\"startDateIcon\"\n class=\"fa-solid fa-clock text-primary fs-6 clock-icon\"\n (click)=\"fullTime4.open()\"\n style=\"cursor: pointer\"\n ></i>\n <ngx-material-timepicker #fullTime4></ngx-material-timepicker>\n </div>\n <!-- <div *ngIf=\"isInvalid\" class=\"error-message\"> -->\n <div *ngIf=\"isInvalid && (!inLine || !selectedTime)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div\n *ngIf=\"(validationFailed || timeValidationFailed) && !isInvalid\"\n class=\"text-danger mt-2\"\n >\n {{ validationMessage }}\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"dateType === 'DATE_RANGE'\">\n <!-- Date range picker -->\n <div class=\"input-container\">\n <input\n type=\"text\"\n class=\"form-control height\"\n #daterangepicker=\"bsDaterangepicker\"\n bsDaterangepicker\n placeholder=\"Select date\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [bsConfig]=\"{\n rangeInputFormat: format,\n dateInputFormat: format,\n containerClass: 'theme-custom',\n displayOneMonthRange: true\n }\"\n [(ngModel)]=\"selectedDateRange\"\n (blur)=\"validateField()\"\n (ngModelChange)=\"validateField()\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !selectedDateRange)\"\n container=\"body\"\n placement=\"top\"\n [disabled]=\"disableEdit\"\n />\n <i\n class=\"fa-solid fa-calendar-days calendar-icon text-primary fs-5\"\n (click)=\"openDateRangePicker()\"\n ></i>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !selectedDateRange)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mt-2\">\n {{ validationMessage }}\n </div>\n </ng-container>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.input-container{position:relative}.input-container .form-control{padding-right:30px}.input-container .calendar-icon,.clock-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);cursor:pointer}.appearanceInput{background-color:#fff}::ng-deep ngx-material-timepicker-content{--body-background-color: #fff;--button-color: #08bff6 !important;--dial-active-color: #fff;--dial-inactive-color: rgba(255, 255, 255, .5);--dial-background-color: #08bff6 !important;--dial-editable-active-color: #08bff6!important;--dial-editable-background-color: #fff;--clock-face-time-active-color: #fff;--clock-face-time-inactive-color: #6c6c6c;--clock-face-inner-time-inactive-color: #929292;--clock-face-time-disabled-color: #c5c5c5;--clock-face-background-color: #f0f0f0;--clock-hand-color: #08bff6 !important;position:relative;z-index:99999999}::ng-deep ngx-material-timepicker-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000052;z-index:99998}.theme-custom .bs-datepicker-head,.timepicker__header{background-color:#08bff6!important}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.bs-datepicker-body table td span.selected,.bs-datepicker-body table td.selected span{color:#fff!important;background-color:#08bff6!important;border-radius:50%}\n"] }]
|
|
3034
|
+
}], ctorParameters: function () { return [{ type: i1$1.DatePipe }, { type: i2.Router }, { type: ValidationService }, { type: ElementTrackerService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
2874
3035
|
type: Input
|
|
2875
3036
|
}], inLine: [{
|
|
2876
3037
|
type: Input
|
|
@@ -2900,13 +3061,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2900
3061
|
}] } });
|
|
2901
3062
|
|
|
2902
3063
|
class DropDownFieldsComponent {
|
|
2903
|
-
constructor(formService, cdr, validationService, tracker, scoreCalcService, whenClauseService) {
|
|
3064
|
+
constructor(formService, cdr, validationService, tracker, scoreCalcService, whenClauseService, hiddenFieldService) {
|
|
2904
3065
|
this.formService = formService;
|
|
2905
3066
|
this.cdr = cdr;
|
|
2906
3067
|
this.validationService = validationService;
|
|
2907
3068
|
this.tracker = tracker;
|
|
2908
3069
|
this.scoreCalcService = scoreCalcService;
|
|
2909
3070
|
this.whenClauseService = whenClauseService;
|
|
3071
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
2910
3072
|
this.question = {};
|
|
2911
3073
|
this.inLine = false;
|
|
2912
3074
|
this.inCard = false;
|
|
@@ -3224,6 +3386,7 @@ class DropDownFieldsComponent {
|
|
|
3224
3386
|
const answers = Array.isArray(this.question.answer) ? this.question.answer : [];
|
|
3225
3387
|
const parsedAnswers = answers.map((ans) => ans.split('|')[1]);
|
|
3226
3388
|
this.whenClauseService.setQuestionAnswer(this.question.id, parsedAnswers);
|
|
3389
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
3227
3390
|
}
|
|
3228
3391
|
updateChildLogics(question) {
|
|
3229
3392
|
if (question.childLogics && Array.isArray(question.childLogics)) {
|
|
@@ -3455,13 +3618,13 @@ class DropDownFieldsComponent {
|
|
|
3455
3618
|
this.tracker.unregisterElement(this.elementId);
|
|
3456
3619
|
}
|
|
3457
3620
|
}
|
|
3458
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownFieldsComponent, deps: [{ token: FormService }, { token: i0.ChangeDetectorRef }, { token: ValidationService }, { token: ElementTrackerService }, { token: ScoreCalculationService }, { token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3459
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
3621
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownFieldsComponent, deps: [{ token: FormService }, { token: i0.ChangeDetectorRef }, { token: ValidationService }, { token: ElementTrackerService }, { token: ScoreCalculationService }, { token: WhenClauseService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3622
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <!-- <lib-dropdown\n [items]=\"customOptions\"\n [multiple]=\"selectionType === 'SINGLE' ? false : true\"\n (click)=\"selectItems()\"\n [(selectedItems)]=\"selectedValue\"\n ></lib-dropdown> -->\n\n <lib-dropdown\n [placeholder]=\"'select'\"\n [items]=\"customOptions\"\n [multiple]=\"selectionType === 'SINGLE' ? false : true\"\n [disable]=\"disableEdit\"\n (selectedItemsChange)=\"selectItems($event)\"\n [(selectedItems)]=\"selectedValue\"\n (onDropdownScroll)=\"getNextSetOfItems($event)\"\n (onSearch)=\"search($event)\"\n ></lib-dropdown>\n\n <!-- (onDropdownScroll)=\"getNextSetOfItems($event)\"\n (onSearch)=\"search($event)\" -->\n <div\n *ngIf=\"isInvalid && (!inLine || selectedValue.length === 0)\"\n class=\"error-message\"\n >\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message mb-2\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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: i8$1.DropdownComponent, selector: "lib-dropdown", inputs: ["multiple", "selectedItems", "placeholder", "showCreateNew", "selectedValues", "customButtons", "showBorder", "disable", "showSubLabel", "items"], outputs: ["buttonClick", "selectedItemsChange", "onDropdownScroll", "onCreateNew", "onSearch"] }] }); }
|
|
3460
3623
|
}
|
|
3461
3624
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownFieldsComponent, decorators: [{
|
|
3462
3625
|
type: Component,
|
|
3463
|
-
args: [{ selector: 'lib-drop-down-fields', template: "<div\
|
|
3464
|
-
}], ctorParameters: function () { return [{ type: FormService }, { type: i0.ChangeDetectorRef }, { type: ValidationService }, { type: ElementTrackerService }, { type: ScoreCalculationService }, { type: WhenClauseService }]; }, propDecorators: { question: [{
|
|
3626
|
+
args: [{ selector: 'lib-drop-down-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <!-- <lib-dropdown\n [items]=\"customOptions\"\n [multiple]=\"selectionType === 'SINGLE' ? false : true\"\n (click)=\"selectItems()\"\n [(selectedItems)]=\"selectedValue\"\n ></lib-dropdown> -->\n\n <lib-dropdown\n [placeholder]=\"'select'\"\n [items]=\"customOptions\"\n [multiple]=\"selectionType === 'SINGLE' ? false : true\"\n [disable]=\"disableEdit\"\n (selectedItemsChange)=\"selectItems($event)\"\n [(selectedItems)]=\"selectedValue\"\n (onDropdownScroll)=\"getNextSetOfItems($event)\"\n (onSearch)=\"search($event)\"\n ></lib-dropdown>\n\n <!-- (onDropdownScroll)=\"getNextSetOfItems($event)\"\n (onSearch)=\"search($event)\" -->\n <div\n *ngIf=\"isInvalid && (!inLine || selectedValue.length === 0)\"\n class=\"error-message\"\n >\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message mb-2\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
3627
|
+
}], ctorParameters: function () { return [{ type: FormService }, { type: i0.ChangeDetectorRef }, { type: ValidationService }, { type: ElementTrackerService }, { type: ScoreCalculationService }, { type: WhenClauseService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
3465
3628
|
type: Input
|
|
3466
3629
|
}], inLine: [{
|
|
3467
3630
|
type: Input
|
|
@@ -3476,12 +3639,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3476
3639
|
}] } });
|
|
3477
3640
|
|
|
3478
3641
|
class FilePickerFieldsComponent {
|
|
3479
|
-
constructor(validationService, tracker, dataService, whenClauseService, http) {
|
|
3642
|
+
constructor(validationService, tracker, dataService, whenClauseService, http, hiddenFieldService) {
|
|
3480
3643
|
this.validationService = validationService;
|
|
3481
3644
|
this.tracker = tracker;
|
|
3482
3645
|
this.dataService = dataService;
|
|
3483
3646
|
this.whenClauseService = whenClauseService;
|
|
3484
3647
|
this.http = http;
|
|
3648
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
3485
3649
|
this.question = {};
|
|
3486
3650
|
this.inLine = false;
|
|
3487
3651
|
this.inCard = false;
|
|
@@ -3598,6 +3762,7 @@ class FilePickerFieldsComponent {
|
|
|
3598
3762
|
this.selectedFiles.push(this.selectedFile);
|
|
3599
3763
|
this.question.answer = this.selectedFiles;
|
|
3600
3764
|
this.answerChange.emit({ answer: this.question.answer, maxPossibleScore: 0 });
|
|
3765
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
3601
3766
|
}
|
|
3602
3767
|
handleFinalArray(fileType) {
|
|
3603
3768
|
const extractedData = fileType.map((item) => ({
|
|
@@ -3667,13 +3832,13 @@ class FilePickerFieldsComponent {
|
|
|
3667
3832
|
this.tracker.unregisterElement(this.elementId);
|
|
3668
3833
|
}
|
|
3669
3834
|
}
|
|
3670
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilePickerFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: DataService }, { token: WhenClauseService }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3671
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange", inlineDeleteFiles: "inlineDeleteFiles" }, ngImport: i0, template: "<div\
|
|
3835
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilePickerFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: DataService }, { token: WhenClauseService }, { token: i1.HttpClient }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3836
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange", inlineDeleteFiles: "inlineDeleteFiles" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div\n [ngClass]=\"{'field-disabled':disableEdit}\"\n >\n <lib-docUpload\n [totalSize]=\"totalFileSize\"\n [fileAllowed]=\"fileTypes\"\n [multiple]=\"multiFileUploads\"\n [fileSize]=\"fileSize\"\n [files]=\"files\"\n [avatarPicker]=\"avatarPicker\"\n (fileTypeNotAllowed)=\"handleFileTypeNotAllowed($event)\"\n (fileSizeAllowed)=\"handleFileSize($event)\"\n (finalArray)=\"handleFinalArray($event)\"\n [attachments]=\"attachments\"\n (deleteFiles)=\"deleteFiles($event)\"\n ></lib-docUpload>\n </div>\n\n <div *ngIf=\"isInvalid && (!inLine || (!question.answer||!attachments))\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.fileInput{position:relative;height:44px;width:111px;background:#d3d3d3;border-radius:6px;padding:0 16px;display:flex;align-items:center;justify-content:center;cursor:pointer}.fileInput input{opacity:0;position:absolute;left:0;top:0;width:100%;height:inherit}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.field-disabled{pointer-events:none}\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: i8$2.DocUploadComponent, selector: "lib-docUpload", inputs: ["totalSize", "fileAllowed", "multiple", "avatarPicker", "attachments", "files", "fileSize"], outputs: ["fileTypeNotAllowed", "fileSizeAllowed", "finalArray", "deleteFiles"] }] }); }
|
|
3672
3837
|
}
|
|
3673
3838
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilePickerFieldsComponent, decorators: [{
|
|
3674
3839
|
type: Component,
|
|
3675
|
-
args: [{ selector: 'lib-file-picker-fields', template: "<div\
|
|
3676
|
-
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: DataService }, { type: WhenClauseService }, { type: i1.HttpClient }]; }, propDecorators: { question: [{
|
|
3840
|
+
args: [{ selector: 'lib-file-picker-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div\n [ngClass]=\"{'field-disabled':disableEdit}\"\n >\n <lib-docUpload\n [totalSize]=\"totalFileSize\"\n [fileAllowed]=\"fileTypes\"\n [multiple]=\"multiFileUploads\"\n [fileSize]=\"fileSize\"\n [files]=\"files\"\n [avatarPicker]=\"avatarPicker\"\n (fileTypeNotAllowed)=\"handleFileTypeNotAllowed($event)\"\n (fileSizeAllowed)=\"handleFileSize($event)\"\n (finalArray)=\"handleFinalArray($event)\"\n [attachments]=\"attachments\"\n (deleteFiles)=\"deleteFiles($event)\"\n ></lib-docUpload>\n </div>\n\n <div *ngIf=\"isInvalid && (!inLine || (!question.answer||!attachments))\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.fileInput{position:relative;height:44px;width:111px;background:#d3d3d3;border-radius:6px;padding:0 16px;display:flex;align-items:center;justify-content:center;cursor:pointer}.fileInput input{opacity:0;position:absolute;left:0;top:0;width:100%;height:inherit}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.field-disabled{pointer-events:none}\n"] }]
|
|
3841
|
+
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: DataService }, { type: WhenClauseService }, { type: i1.HttpClient }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
3677
3842
|
type: Input
|
|
3678
3843
|
}], inLine: [{
|
|
3679
3844
|
type: Input
|
|
@@ -3750,11 +3915,11 @@ class LocationFieldsComponent {
|
|
|
3750
3915
|
});
|
|
3751
3916
|
}
|
|
3752
3917
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocationFieldsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3753
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: { question: "question", inLine: "inLine" }, outputs: { answerChange: "answerChange" }, viewQueries: [{ propertyName: "searchField", first: true, predicate: ["mapSearchField"], descendants: true }, { propertyName: "map", first: true, predicate: GoogleMap, descendants: true }], ngImport: i0, template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\
|
|
3918
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: { question: "question", inLine: "inLine" }, outputs: { answerChange: "answerChange" }, viewQueries: [{ propertyName: "searchField", first: true, predicate: ["mapSearchField"], descendants: true }, { propertyName: "map", first: true, predicate: GoogleMap, descendants: true }], ngImport: i0, template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"input-group\">\n <input\n type=\"text\"\n class=\"form-control location-input\"\n placeholder=\"Enter location\"\n #locationInput\n />\n </div>\n\n <input #mapSearchField class=\"my-map-search-field\" type=\"text\" />\n <google-map width=\"100%\" [options]=\"mapConfigurations\"></google-map>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.location-input{position:relative}.input-group-append{cursor:pointer;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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: i2$1.GoogleMap, selector: "google-map", inputs: ["height", "width", "mapTypeId", "center", "zoom", "options"], outputs: ["mapInitialized", "authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }] }); }
|
|
3754
3919
|
}
|
|
3755
3920
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocationFieldsComponent, decorators: [{
|
|
3756
3921
|
type: Component,
|
|
3757
|
-
args: [{ selector: 'lib-location-fields', template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\
|
|
3922
|
+
args: [{ selector: 'lib-location-fields', template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"input-group\">\n <input\n type=\"text\"\n class=\"form-control location-input\"\n placeholder=\"Enter location\"\n #locationInput\n />\n </div>\n\n <input #mapSearchField class=\"my-map-search-field\" type=\"text\" />\n <google-map width=\"100%\" [options]=\"mapConfigurations\"></google-map>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.location-input{position:relative}.input-group-append{cursor:pointer;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
3758
3923
|
}], propDecorators: { question: [{
|
|
3759
3924
|
type: Input
|
|
3760
3925
|
}], inLine: [{
|
|
@@ -3770,9 +3935,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3770
3935
|
}] } });
|
|
3771
3936
|
|
|
3772
3937
|
class MailFieldsComponent {
|
|
3773
|
-
constructor(validationService, tracker) {
|
|
3938
|
+
constructor(validationService, tracker, hiddenFieldService) {
|
|
3774
3939
|
this.validationService = validationService;
|
|
3775
3940
|
this.tracker = tracker;
|
|
3941
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
3776
3942
|
this.question = {};
|
|
3777
3943
|
this.inLine = false;
|
|
3778
3944
|
this.inCard = false;
|
|
@@ -3840,6 +4006,7 @@ class MailFieldsComponent {
|
|
|
3840
4006
|
this.question.answer = event.target.value;
|
|
3841
4007
|
this.answerChange.emit({ answer: this.question.answer, maxPossibleScore: 0 });
|
|
3842
4008
|
this.validateEmail();
|
|
4009
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
3843
4010
|
}
|
|
3844
4011
|
handleValidation(isValid, message = 'This field is required') {
|
|
3845
4012
|
if (isValid) {
|
|
@@ -3874,13 +4041,13 @@ class MailFieldsComponent {
|
|
|
3874
4041
|
this.tracker.unregisterElement(this.elementId);
|
|
3875
4042
|
}
|
|
3876
4043
|
}
|
|
3877
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MailFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3878
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
4044
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MailFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4045
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <input\n type=\"email\"\n class=\"form-control mb-2 height\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"email\"\n (blur)=\"validateEmail()\"\n (input)=\"validateInput($event)\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !email)\"\n [disabled]=\"disableEdit\"\n />\n <!-- <div *ngIf=\"isInvalid\" class=\"error-message\"> -->\n <div *ngIf=\"isInvalid && (!inLine || !email)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
3879
4046
|
}
|
|
3880
4047
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MailFieldsComponent, decorators: [{
|
|
3881
4048
|
type: Component,
|
|
3882
|
-
args: [{ selector: 'lib-mail-fields', template: "<div\
|
|
3883
|
-
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }]; }, propDecorators: { question: [{
|
|
4049
|
+
args: [{ selector: 'lib-mail-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <input\n type=\"email\"\n class=\"form-control mb-2 height\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"email\"\n (blur)=\"validateEmail()\"\n (input)=\"validateInput($event)\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !email)\"\n [disabled]=\"disableEdit\"\n />\n <!-- <div *ngIf=\"isInvalid\" class=\"error-message\"> -->\n <div *ngIf=\"isInvalid && (!inLine || !email)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
4050
|
+
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
3884
4051
|
type: Input
|
|
3885
4052
|
}], inLine: [{
|
|
3886
4053
|
type: Input
|
|
@@ -3980,10 +4147,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
3980
4147
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: DataService }]; } });
|
|
3981
4148
|
|
|
3982
4149
|
class MobileFieldsComponent {
|
|
3983
|
-
constructor(countryService, validationService, tracker) {
|
|
4150
|
+
constructor(countryService, validationService, tracker, hiddenFieldService) {
|
|
3984
4151
|
this.countryService = countryService;
|
|
3985
4152
|
this.validationService = validationService;
|
|
3986
4153
|
this.tracker = tracker;
|
|
4154
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
3987
4155
|
this.question = {};
|
|
3988
4156
|
this.inLine = false;
|
|
3989
4157
|
this.inCard = false;
|
|
@@ -4111,6 +4279,7 @@ class MobileFieldsComponent {
|
|
|
4111
4279
|
this.question.answer = this.mobileNumber;
|
|
4112
4280
|
}
|
|
4113
4281
|
this.answerChange.emit({ answer: this.question.answer, maxPossibleScore: 0 });
|
|
4282
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
4114
4283
|
}
|
|
4115
4284
|
validateMobile() {
|
|
4116
4285
|
this.validationFailed = false;
|
|
@@ -4221,13 +4390,13 @@ class MobileFieldsComponent {
|
|
|
4221
4390
|
this.tracker.unregisterElement(this.elementId);
|
|
4222
4391
|
}
|
|
4223
4392
|
}
|
|
4224
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MobileFieldsComponent, deps: [{ token: CountryService }, { token: ValidationService }, { token: ElementTrackerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4225
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
4393
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MobileFieldsComponent, deps: [{ token: CountryService }, { token: ValidationService }, { token: ElementTrackerService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4394
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"input-group mb-2\">\n <ng-container *ngIf=\"displayCountryCode; else fullWidthInput\">\n <div class=\"col-xs-5 col-5 col-md-3 px-0 pe-2 ps-2\"\n [ngClass]=\"{'disable':disableEdit}\">\n <lib-dropdown\n [items]=\"countryDetails\"\n [multiple]=\"false\"\n [(selectedItems)]=\"selectedCountry\"\n (selectedItemsChange)=\"onCountryChange()\"\n [disable]=\"disableEdit\"\n (onDropdownScroll)=\"getNextSetOfItems($event)\"\n (onSearch)=\"search($event)\"\n ></lib-dropdown>\n </div>\n <input\n type=\"text\"\n class=\"form-control col-xs-7 col-7 col-md-9 height mobileField\"\n [placeholder]=\"placeholder\"\n aria-label=\"Mobile Number\"\n (blur)=\"validateMobile()\"\n [(ngModel)]=\"mobileNumber\"\n (ngModelChange)=\"onMobileNumberChange()\"\n (input)=\"onInput($event)\"\n [disabled]=\"disableEdit\"\n />\n </ng-container>\n\n <!-- Full-width input when displayCountryCode is false -->\n <ng-template #fullWidthInput>\n <input\n type=\"text\"\n class=\"form-control col-12 height mobileField\"\n [placeholder]=\"placeholder\"\n aria-label=\"Mobile Number\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid\"\n (blur)=\"validateMobile()\"\n [(ngModel)]=\"mobileNumber\"\n (ngModelChange)=\"onMobileNumberChange()\"\n (input)=\"onInput($event)\"\n />\n </ng-template>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !mobileNumber)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.mobileField{border-radius:6px!important}::ng-deep .dropdown .dropdown-field .input-field .dropdown_text{height:40px!important;width:80%!important}@media (max-width: 992px){::ng-deep .dropdown .dropdown-field .input-field .dropdown_text{height:40px!important;width:50%!important}}@media screen and (max-width: 786px){::ng-deep .dropdown .dropdown-field .input-field .dropdown_text{height:40px!important;width:50%!important}}@media screen and (max-width: 576px){::ng-deep .dropdown .dropdown-field .input-field .dropdown_text{height:40px!important;width:39%!important}}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.disable{pointer-events:none}\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: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8$1.DropdownComponent, selector: "lib-dropdown", inputs: ["multiple", "selectedItems", "placeholder", "showCreateNew", "selectedValues", "customButtons", "showBorder", "disable", "showSubLabel", "items"], outputs: ["buttonClick", "selectedItemsChange", "onDropdownScroll", "onCreateNew", "onSearch"] }] }); }
|
|
4226
4395
|
}
|
|
4227
4396
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MobileFieldsComponent, decorators: [{
|
|
4228
4397
|
type: Component,
|
|
4229
|
-
args: [{ selector: 'lib-mobile-fields', template: "<div\
|
|
4230
|
-
}], ctorParameters: function () { return [{ type: CountryService }, { type: ValidationService }, { type: ElementTrackerService }]; }, propDecorators: { question: [{
|
|
4398
|
+
args: [{ selector: 'lib-mobile-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"input-group mb-2\">\n <ng-container *ngIf=\"displayCountryCode; else fullWidthInput\">\n <div class=\"col-xs-5 col-5 col-md-3 px-0 pe-2 ps-2\"\n [ngClass]=\"{'disable':disableEdit}\">\n <lib-dropdown\n [items]=\"countryDetails\"\n [multiple]=\"false\"\n [(selectedItems)]=\"selectedCountry\"\n (selectedItemsChange)=\"onCountryChange()\"\n [disable]=\"disableEdit\"\n (onDropdownScroll)=\"getNextSetOfItems($event)\"\n (onSearch)=\"search($event)\"\n ></lib-dropdown>\n </div>\n <input\n type=\"text\"\n class=\"form-control col-xs-7 col-7 col-md-9 height mobileField\"\n [placeholder]=\"placeholder\"\n aria-label=\"Mobile Number\"\n (blur)=\"validateMobile()\"\n [(ngModel)]=\"mobileNumber\"\n (ngModelChange)=\"onMobileNumberChange()\"\n (input)=\"onInput($event)\"\n [disabled]=\"disableEdit\"\n />\n </ng-container>\n\n <!-- Full-width input when displayCountryCode is false -->\n <ng-template #fullWidthInput>\n <input\n type=\"text\"\n class=\"form-control col-12 height mobileField\"\n [placeholder]=\"placeholder\"\n aria-label=\"Mobile Number\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid\"\n (blur)=\"validateMobile()\"\n [(ngModel)]=\"mobileNumber\"\n (ngModelChange)=\"onMobileNumberChange()\"\n (input)=\"onInput($event)\"\n />\n </ng-template>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !mobileNumber)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.mobileField{border-radius:6px!important}::ng-deep .dropdown .dropdown-field .input-field .dropdown_text{height:40px!important;width:80%!important}@media (max-width: 992px){::ng-deep .dropdown .dropdown-field .input-field .dropdown_text{height:40px!important;width:50%!important}}@media screen and (max-width: 786px){::ng-deep .dropdown .dropdown-field .input-field .dropdown_text{height:40px!important;width:50%!important}}@media screen and (max-width: 576px){::ng-deep .dropdown .dropdown-field .input-field .dropdown_text{height:40px!important;width:39%!important}}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.disable{pointer-events:none}\n"] }]
|
|
4399
|
+
}], ctorParameters: function () { return [{ type: CountryService }, { type: ValidationService }, { type: ElementTrackerService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
4231
4400
|
type: Input
|
|
4232
4401
|
}], inLine: [{
|
|
4233
4402
|
type: Input
|
|
@@ -4378,11 +4547,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
4378
4547
|
}], ctorParameters: function () { return []; } });
|
|
4379
4548
|
|
|
4380
4549
|
class NumberFieldsComponent {
|
|
4381
|
-
constructor(validationService, tracker, aggregateService, whenClauseService) {
|
|
4550
|
+
constructor(validationService, tracker, aggregateService, whenClauseService, hiddenFieldService) {
|
|
4382
4551
|
this.validationService = validationService;
|
|
4383
4552
|
this.tracker = tracker;
|
|
4384
4553
|
this.aggregateService = aggregateService;
|
|
4385
4554
|
this.whenClauseService = whenClauseService;
|
|
4555
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
4386
4556
|
this.question = {};
|
|
4387
4557
|
this.inLine = false;
|
|
4388
4558
|
this.inCard = false;
|
|
@@ -4496,6 +4666,7 @@ class NumberFieldsComponent {
|
|
|
4496
4666
|
}
|
|
4497
4667
|
this.answerChange.emit({ answer: this.question.answer, maxPossibleScore: 0 });
|
|
4498
4668
|
this.whenClauseService.setQuestionAnswer(this.question.id, this.question.answer);
|
|
4669
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
4499
4670
|
}
|
|
4500
4671
|
updateChildLogics(question) {
|
|
4501
4672
|
if (question.childLogics && Array.isArray(question.childLogics)) {
|
|
@@ -4589,13 +4760,13 @@ class NumberFieldsComponent {
|
|
|
4589
4760
|
this.tracker.unregisterElement(this.elementId);
|
|
4590
4761
|
}
|
|
4591
4762
|
}
|
|
4592
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NumberFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: AggregationFunctionService }, { token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4593
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", rowId: "rowId", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
4763
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NumberFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: AggregationFunctionService }, { token: WhenClauseService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4764
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", rowId: "rowId", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span>\n <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <input\n type=\"number\"\n class=\"form-control mb-2 height\"\n [placeholder]=\"placeholder\"\n [class.hide-spin-buttons]=\"!upDown\"\n (blur)=\"validateNumber()\"\n [(ngModel)]=\"enteredNumber\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredNumber)\"\n (input)=\"validateInput($event)\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n (wheel)=\"preventNumberScroll($event)\"\n [disabled]=\"disableEdit\"\n />\n <div *ngIf=\"isInvalid && (!inLine || !enteredNumber)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.hide-spin-buttons::-webkit-outer-spin-button,.hide-spin-buttons::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
4594
4765
|
}
|
|
4595
4766
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NumberFieldsComponent, decorators: [{
|
|
4596
4767
|
type: Component,
|
|
4597
|
-
args: [{ selector: 'lib-number-fields', template: "<div\
|
|
4598
|
-
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: AggregationFunctionService }, { type: WhenClauseService }]; }, propDecorators: { question: [{
|
|
4768
|
+
args: [{ selector: 'lib-number-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span>\n <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <input\n type=\"number\"\n class=\"form-control mb-2 height\"\n [placeholder]=\"placeholder\"\n [class.hide-spin-buttons]=\"!upDown\"\n (blur)=\"validateNumber()\"\n [(ngModel)]=\"enteredNumber\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredNumber)\"\n (input)=\"validateInput($event)\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n (wheel)=\"preventNumberScroll($event)\"\n [disabled]=\"disableEdit\"\n />\n <div *ngIf=\"isInvalid && (!inLine || !enteredNumber)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.hide-spin-buttons::-webkit-outer-spin-button,.hide-spin-buttons::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
4769
|
+
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: AggregationFunctionService }, { type: WhenClauseService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
4599
4770
|
type: Input
|
|
4600
4771
|
}], inLine: [{
|
|
4601
4772
|
type: Input
|
|
@@ -4612,9 +4783,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
4612
4783
|
}] } });
|
|
4613
4784
|
|
|
4614
4785
|
class PasswordFieldsComponent {
|
|
4615
|
-
constructor(validationService, tracker) {
|
|
4786
|
+
constructor(validationService, tracker, hiddenFieldService) {
|
|
4616
4787
|
this.validationService = validationService;
|
|
4617
4788
|
this.tracker = tracker;
|
|
4789
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
4618
4790
|
this.question = {};
|
|
4619
4791
|
this.inLine = false;
|
|
4620
4792
|
this.inCard = false;
|
|
@@ -4795,6 +4967,7 @@ class PasswordFieldsComponent {
|
|
|
4795
4967
|
this.question.answer = sanitizedValue;
|
|
4796
4968
|
this.validatePassword();
|
|
4797
4969
|
this.answerChange.emit({ answer: this.question.answer, maxPossibleScore: 0 });
|
|
4970
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
4798
4971
|
}
|
|
4799
4972
|
validateCnfrm(event) {
|
|
4800
4973
|
const sanitizedValue = event.target.value.replace(/\s+/g, '');
|
|
@@ -4842,13 +5015,13 @@ class PasswordFieldsComponent {
|
|
|
4842
5015
|
this.tracker.unregisterElement(this.elementId);
|
|
4843
5016
|
}
|
|
4844
5017
|
}
|
|
4845
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PasswordFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4846
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
5018
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PasswordFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5019
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span>\n <label [for]=\"'passwordField' + questionId\">{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"passwordWrapper\">\n <input\n type=\"password\"\n class=\"form-control mb-2 height\"\n [id]=\"'passwordField' + questionId\"\n (blur)=\"validatePassword()\"\n [(ngModel)]=\"enteredPassword\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredPassword)\"\n (input)=\"validateInput($event)\"\n [disabled]=\"disableEdit\"\n />\n <button\n id=\"togglePasswordBtn\"\n class=\"toggle-password-btn\"\n (click)=\"togglePasswordVisibility()\"\n *ngIf=\"viewButton\"\n >\n <i class=\"bi bi-eye-fill\" [id]=\"'passwordEyeIcon' + questionId\"></i>\n </button>\n </div>\n <div class=\"password-strength-meter\" *ngIf=\"displayStrength\">\n <div class=\"progress\">\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n [style.width]=\"passwordStrength + '%'\"\n [class.bg-danger]=\"passwordStrength < 30\"\n [class.bg-warning]=\"passwordStrength >= 30 && passwordStrength < 70\"\n [class.bg-success]=\"passwordStrength >= 70\"\n ></div>\n </div>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !enteredPassword)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mb-2\">\n {{ validationMessage }}\n </div>\n\n <div class=\"cnfrmPasswordWrapper\" *ngIf=\"confirmPassword\">\n <label for=\"'cnfrmPasswordField'+questionId\">Confirm password</label>\n <input\n type=\"password\"\n class=\"form-control mb-2 height\"\n [id]=\"'cnfrmPasswordField' + questionId\"\n (blur)=\"checkPasswordMatch()\"\n [(ngModel)]=\"enteredCnfrmPassword\"\n [class.invalid]=\"validatedCnfrmPassword\"\n (input)=\"validateCnfrm($event)\"\n [disabled]=\"disableEdit\"\n />\n <button\n id=\"toggleCnfrmPasswordBtn\"\n class=\"toggle-password-btn\"\n (click)=\"toggleCnfrmPasswordVisibility()\"\n *ngIf=\"viewButton\"\n >\n <i class=\"bi bi-eye-fill\" [id]=\"'CnfrmPasswordEyeIcon' + questionId\"></i>\n </button>\n </div>\n <div *ngIf=\"validatedCnfrmPassword\" class=\"text-danger error-message\">\n {{ cnfrmValidationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.form-control,.password-input-wrapper{position:relative}.password-input{padding-right:40px}.toggle-password-btn{position:absolute;top:70%;right:15px;transform:translateY(-50%);border:none;background-color:transparent;cursor:pointer}.toggle-password-btn:focus{outline:none}.passwordWrapper,.cnfrmPasswordWrapper{position:relative}.password-strength-meter{width:40%;margin-top:10px;margin-left:auto}.progress{height:10px}.progress-bar{transition:width .3s ease-in-out}.bi{font-size:20px}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
4847
5020
|
}
|
|
4848
5021
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PasswordFieldsComponent, decorators: [{
|
|
4849
5022
|
type: Component,
|
|
4850
|
-
args: [{ selector: 'lib-password-fields', template: "<div\
|
|
4851
|
-
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }]; }, propDecorators: { question: [{
|
|
5023
|
+
args: [{ selector: 'lib-password-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span>\n <label [for]=\"'passwordField' + questionId\">{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"passwordWrapper\">\n <input\n type=\"password\"\n class=\"form-control mb-2 height\"\n [id]=\"'passwordField' + questionId\"\n (blur)=\"validatePassword()\"\n [(ngModel)]=\"enteredPassword\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredPassword)\"\n (input)=\"validateInput($event)\"\n [disabled]=\"disableEdit\"\n />\n <button\n id=\"togglePasswordBtn\"\n class=\"toggle-password-btn\"\n (click)=\"togglePasswordVisibility()\"\n *ngIf=\"viewButton\"\n >\n <i class=\"bi bi-eye-fill\" [id]=\"'passwordEyeIcon' + questionId\"></i>\n </button>\n </div>\n <div class=\"password-strength-meter\" *ngIf=\"displayStrength\">\n <div class=\"progress\">\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n [style.width]=\"passwordStrength + '%'\"\n [class.bg-danger]=\"passwordStrength < 30\"\n [class.bg-warning]=\"passwordStrength >= 30 && passwordStrength < 70\"\n [class.bg-success]=\"passwordStrength >= 70\"\n ></div>\n </div>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !enteredPassword)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger mb-2\">\n {{ validationMessage }}\n </div>\n\n <div class=\"cnfrmPasswordWrapper\" *ngIf=\"confirmPassword\">\n <label for=\"'cnfrmPasswordField'+questionId\">Confirm password</label>\n <input\n type=\"password\"\n class=\"form-control mb-2 height\"\n [id]=\"'cnfrmPasswordField' + questionId\"\n (blur)=\"checkPasswordMatch()\"\n [(ngModel)]=\"enteredCnfrmPassword\"\n [class.invalid]=\"validatedCnfrmPassword\"\n (input)=\"validateCnfrm($event)\"\n [disabled]=\"disableEdit\"\n />\n <button\n id=\"toggleCnfrmPasswordBtn\"\n class=\"toggle-password-btn\"\n (click)=\"toggleCnfrmPasswordVisibility()\"\n *ngIf=\"viewButton\"\n >\n <i class=\"bi bi-eye-fill\" [id]=\"'CnfrmPasswordEyeIcon' + questionId\"></i>\n </button>\n </div>\n <div *ngIf=\"validatedCnfrmPassword\" class=\"text-danger error-message\">\n {{ cnfrmValidationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.form-control,.password-input-wrapper{position:relative}.password-input{padding-right:40px}.toggle-password-btn{position:absolute;top:70%;right:15px;transform:translateY(-50%);border:none;background-color:transparent;cursor:pointer}.toggle-password-btn:focus{outline:none}.passwordWrapper,.cnfrmPasswordWrapper{position:relative}.password-strength-meter{width:40%;margin-top:10px;margin-left:auto}.progress{height:10px}.progress-bar{transition:width .3s ease-in-out}.bi{font-size:20px}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
5024
|
+
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
4852
5025
|
type: Input
|
|
4853
5026
|
}], inLine: [{
|
|
4854
5027
|
type: Input
|
|
@@ -4863,12 +5036,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
4863
5036
|
}] } });
|
|
4864
5037
|
|
|
4865
5038
|
class RadioButtonFieldsComponent {
|
|
4866
|
-
constructor(formService, validationService, tracker, scoreCalcService, whenClauseService) {
|
|
5039
|
+
constructor(formService, validationService, tracker, scoreCalcService, whenClauseService, hiddenFieldService) {
|
|
4867
5040
|
this.formService = formService;
|
|
4868
5041
|
this.validationService = validationService;
|
|
4869
5042
|
this.tracker = tracker;
|
|
4870
5043
|
this.scoreCalcService = scoreCalcService;
|
|
4871
5044
|
this.whenClauseService = whenClauseService;
|
|
5045
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
4872
5046
|
this.question = {};
|
|
4873
5047
|
this.inLine = false;
|
|
4874
5048
|
this.inCard = false;
|
|
@@ -5081,6 +5255,7 @@ class RadioButtonFieldsComponent {
|
|
|
5081
5255
|
});
|
|
5082
5256
|
const answers = this.question.answer.split('|')[1];
|
|
5083
5257
|
this.whenClauseService.setQuestionAnswer(this.question.id, answers);
|
|
5258
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
5084
5259
|
}
|
|
5085
5260
|
updateChildLogics(question) {
|
|
5086
5261
|
if (question.childLogics && Array.isArray(question.childLogics)) {
|
|
@@ -5177,13 +5352,13 @@ class RadioButtonFieldsComponent {
|
|
|
5177
5352
|
this.tracker.unregisterElement(this.elementId);
|
|
5178
5353
|
}
|
|
5179
5354
|
}
|
|
5180
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioButtonFieldsComponent, deps: [{ token: FormService }, { token: ValidationService }, { token: ElementTrackerService }, { token: ScoreCalculationService }, { token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5181
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", rowId: "rowId", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
5355
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioButtonFieldsComponent, deps: [{ token: FormService }, { token: ValidationService }, { token: ElementTrackerService }, { token: ScoreCalculationService }, { token: WhenClauseService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5356
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", rowId: "rowId", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-3\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n\n <div\n class=\"checkboxField-container\"\n [class.two-column]=\"displayOptionsInColumn\"\n >\n <div class=\"checkboxField\" *ngFor=\"let option of customOptions\">\n <input\n class=\"formCheckbox mb-2\"\n type=\"radio\"\n [name]=\"question.id+'-'+rowId\"\n [id]=\"question.id+'-'+rowId+'-'+option.value\"\n [value]=\"option.label + '|' + option.value\"\n [style.accent-color]=\"color\"\n (blur)=\"validateInput()\"\n [(ngModel)]=\"selectedOption\"\n (ngModelChange)=\"validateInput()\"\n [attr.data-state]=\"option.label + '|' + option.value\"\n [attr.data-value]=\"selectedOption == option.label + '|' + option.value\"\n [disabled]=\"disableEdit\"\n />\n <label class=\"formCheckLabel ms-2 me-2 mb-2\" [for]=\"question.id+'-'+rowId+'-'+option.value\">{{\n option.label\n }}</label>\n </div>\n </div>\n <div\n *ngIf=\"isInvalid && (!inLine || !selectedOption)\"\n class=\"error-message\"\n >\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.formCheckbox,.formCheckLabel{cursor:pointer}.formCheckbox{width:15px;height:15px}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.checkboxField-container{display:block}.checkboxField-container.two-column{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}\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: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
5182
5357
|
}
|
|
5183
5358
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioButtonFieldsComponent, decorators: [{
|
|
5184
5359
|
type: Component,
|
|
5185
|
-
args: [{ selector: 'lib-radio-button-fields', template: "<div\
|
|
5186
|
-
}], ctorParameters: function () { return [{ type: FormService }, { type: ValidationService }, { type: ElementTrackerService }, { type: ScoreCalculationService }, { type: WhenClauseService }]; }, propDecorators: { question: [{
|
|
5360
|
+
args: [{ selector: 'lib-radio-button-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-3\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n\n <div\n class=\"checkboxField-container\"\n [class.two-column]=\"displayOptionsInColumn\"\n >\n <div class=\"checkboxField\" *ngFor=\"let option of customOptions\">\n <input\n class=\"formCheckbox mb-2\"\n type=\"radio\"\n [name]=\"question.id+'-'+rowId\"\n [id]=\"question.id+'-'+rowId+'-'+option.value\"\n [value]=\"option.label + '|' + option.value\"\n [style.accent-color]=\"color\"\n (blur)=\"validateInput()\"\n [(ngModel)]=\"selectedOption\"\n (ngModelChange)=\"validateInput()\"\n [attr.data-state]=\"option.label + '|' + option.value\"\n [attr.data-value]=\"selectedOption == option.label + '|' + option.value\"\n [disabled]=\"disableEdit\"\n />\n <label class=\"formCheckLabel ms-2 me-2 mb-2\" [for]=\"question.id+'-'+rowId+'-'+option.value\">{{\n option.label\n }}</label>\n </div>\n </div>\n <div\n *ngIf=\"isInvalid && (!inLine || !selectedOption)\"\n class=\"error-message\"\n >\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.formCheckbox,.formCheckLabel{cursor:pointer}.formCheckbox{width:15px;height:15px}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.checkboxField-container{display:block}.checkboxField-container.two-column{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}\n"] }]
|
|
5361
|
+
}], ctorParameters: function () { return [{ type: FormService }, { type: ValidationService }, { type: ElementTrackerService }, { type: ScoreCalculationService }, { type: WhenClauseService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
5187
5362
|
type: Input
|
|
5188
5363
|
}], inLine: [{
|
|
5189
5364
|
type: Input
|
|
@@ -5200,9 +5375,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
5200
5375
|
}] } });
|
|
5201
5376
|
|
|
5202
5377
|
class RichTextEditorFieldsComponent {
|
|
5203
|
-
constructor(validationService, tracker) {
|
|
5378
|
+
constructor(validationService, tracker, hiddenFieldService) {
|
|
5204
5379
|
this.validationService = validationService;
|
|
5205
5380
|
this.tracker = tracker;
|
|
5381
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
5206
5382
|
this.question = {};
|
|
5207
5383
|
this.inLine = false;
|
|
5208
5384
|
this.inSubForm = false;
|
|
@@ -5284,6 +5460,7 @@ class RichTextEditorFieldsComponent {
|
|
|
5284
5460
|
this.question.answer = this.htmlContent;
|
|
5285
5461
|
this.validateEditor();
|
|
5286
5462
|
this.answerChange.emit({ answer: this.question.answer, maxPossibleScore: 0 });
|
|
5463
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
5287
5464
|
}
|
|
5288
5465
|
handleValidation(isValid, message = 'This field is required') {
|
|
5289
5466
|
if (isValid) {
|
|
@@ -5318,13 +5495,13 @@ class RichTextEditorFieldsComponent {
|
|
|
5318
5495
|
this.tracker.unregisterElement(this.elementId);
|
|
5319
5496
|
}
|
|
5320
5497
|
}
|
|
5321
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RichTextEditorFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5322
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: { question: "question", inLine: "inLine", inSubForm: "inSubForm", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
5498
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RichTextEditorFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5499
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: { question: "question", inLine: "inLine", inSubForm: "inSubForm", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <quill-editor\n [(ngModel)]=\"htmlContent\"\n (ngModelChange)=\"updateAnswer($event)\"\n (onEditorCreated)=\"editorCreated($event)\"\n (blur)=\"validateEditor()\"\n class=\"editor\"\n [ngClass]=\"{\n 'inSubform': inSubForm && !disableEdit,\n 'disable': disableEdit\n }\"\n placeholder=\"\"\n [disabled]=\"disableEdit\"\n ></quill-editor>\n <div *ngIf=\"isInvalid && (!inLine || !htmlContent)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.editor{width:100%}::ng-deep .ql-container{min-height:150px}.inSubform{background:#fff!important}.disable{background:#e9ecef}\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: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.QuillEditorComponent, selector: "quill-editor" }] }); }
|
|
5323
5500
|
}
|
|
5324
5501
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RichTextEditorFieldsComponent, decorators: [{
|
|
5325
5502
|
type: Component,
|
|
5326
|
-
args: [{ selector: 'lib-rich-text-editor-fields', template: "<div\
|
|
5327
|
-
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }]; }, propDecorators: { question: [{
|
|
5503
|
+
args: [{ selector: 'lib-rich-text-editor-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <quill-editor\n [(ngModel)]=\"htmlContent\"\n (ngModelChange)=\"updateAnswer($event)\"\n (onEditorCreated)=\"editorCreated($event)\"\n (blur)=\"validateEditor()\"\n class=\"editor\"\n [ngClass]=\"{\n 'inSubform': inSubForm && !disableEdit,\n 'disable': disableEdit\n }\"\n placeholder=\"\"\n [disabled]=\"disableEdit\"\n ></quill-editor>\n <div *ngIf=\"isInvalid && (!inLine || !htmlContent)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.editor{width:100%}::ng-deep .ql-container{min-height:150px}.inSubform{background:#fff!important}.disable{background:#e9ecef}\n"] }]
|
|
5504
|
+
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
5328
5505
|
type: Input
|
|
5329
5506
|
}], inLine: [{
|
|
5330
5507
|
type: Input
|
|
@@ -5341,9 +5518,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
5341
5518
|
}] } });
|
|
5342
5519
|
|
|
5343
5520
|
class SelectionMatrixFieldsComponent {
|
|
5344
|
-
constructor(validationService, tracker) {
|
|
5521
|
+
constructor(validationService, tracker, hiddenFieldService) {
|
|
5345
5522
|
this.validationService = validationService;
|
|
5346
5523
|
this.tracker = tracker;
|
|
5524
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
5347
5525
|
this.question = {};
|
|
5348
5526
|
this.inLine = false;
|
|
5349
5527
|
this.acceptedLanguage = '';
|
|
@@ -5434,6 +5612,7 @@ class SelectionMatrixFieldsComponent {
|
|
|
5434
5612
|
this.question.validation = true;
|
|
5435
5613
|
}
|
|
5436
5614
|
this.answerChange.emit({ answer: this.question.answer, maxPossibleScore: 0 });
|
|
5615
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
5437
5616
|
}
|
|
5438
5617
|
handleValidation(isValid, message = 'This field is required') {
|
|
5439
5618
|
if (isValid) {
|
|
@@ -5468,13 +5647,13 @@ class SelectionMatrixFieldsComponent {
|
|
|
5468
5647
|
this.tracker.unregisterElement(this.elementId);
|
|
5469
5648
|
}
|
|
5470
5649
|
}
|
|
5471
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectionMatrixFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5472
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: { question: "question", inLine: "inLine", acceptedLanguage: "acceptedLanguage", rowId: "rowId", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
5650
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectionMatrixFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5651
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: { question: "question", inLine: "inLine", acceptedLanguage: "acceptedLanguage", rowId: "rowId", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n\n <div [ngClass]=\"{ 'labelBorder-rtl': acceptedLanguage === 'ara' }\">\n <table class=\"selectionMatrix\">\n <thead>\n <tr>\n <th></th>\n <th\n class=\"text-center table-cell-wrap\"\n *ngFor=\"let column of selectionMatrixColumn\"\n >\n {{ column.column }}\n </th>\n </tr>\n </thead>\n <tbody class=\"table-group-divider\">\n <tr *ngFor=\"let label of selectionMatrixLabel; let rowIndex = index\">\n <td class=\"table-cell-wrap\">{{ label.label }}</td>\n <td\n *ngFor=\"let column of selectionMatrixColumn; let colIndex = index\"\n class=\"text-center\"\n >\n <input\n type=\"radio\"\n [attr.id]=\"'radio-' + rowIndex + '-' + colIndex + '-' + rowId\"\n [name]=\"'radio-' + rowIndex + '-' + colIndex + '-' + rowId\"\n class=\"selectionRadio\"\n [style.accent-color]=\"selectionColor\"\n [value]=\"label.label + '_' + column.column\"\n [(ngModel)]=\"selectedOptions[rowIndex]\"\n (ngModelChange)=\"\n onSelectionChange(rowIndex, label.label + '_' + column.column)\n \"\n [disabled]=\"disableEdit\"\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || selectedOptions.length == 0)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message mt-2\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.selectionMatrix{border-collapse:collapse;width:100%}.selectionMatrix th,.selectionMatrix td{padding:8px}.selectionMatrix th{border-bottom:2px solid black}.selectionMatrix th:first-child,.selectionMatrix td:first-child,.labelBorder-rtl .selectionMatrix th:first-child{border-right:1px solid #C9C8C8}.table-group-divider{border-top:1px solid #000000}.selectionRadio{cursor:pointer;width:18px;height:18px}.table-cell-wrap{word-wrap:break-word;white-space:normal;max-width:200px}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
5473
5652
|
}
|
|
5474
5653
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectionMatrixFieldsComponent, decorators: [{
|
|
5475
5654
|
type: Component,
|
|
5476
|
-
args: [{ selector: 'lib-selection-matrix-fields', template: "<div\
|
|
5477
|
-
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }]; }, propDecorators: { question: [{
|
|
5655
|
+
args: [{ selector: 'lib-selection-matrix-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n\n <div [ngClass]=\"{ 'labelBorder-rtl': acceptedLanguage === 'ara' }\">\n <table class=\"selectionMatrix\">\n <thead>\n <tr>\n <th></th>\n <th\n class=\"text-center table-cell-wrap\"\n *ngFor=\"let column of selectionMatrixColumn\"\n >\n {{ column.column }}\n </th>\n </tr>\n </thead>\n <tbody class=\"table-group-divider\">\n <tr *ngFor=\"let label of selectionMatrixLabel; let rowIndex = index\">\n <td class=\"table-cell-wrap\">{{ label.label }}</td>\n <td\n *ngFor=\"let column of selectionMatrixColumn; let colIndex = index\"\n class=\"text-center\"\n >\n <input\n type=\"radio\"\n [attr.id]=\"'radio-' + rowIndex + '-' + colIndex + '-' + rowId\"\n [name]=\"'radio-' + rowIndex + '-' + colIndex + '-' + rowId\"\n class=\"selectionRadio\"\n [style.accent-color]=\"selectionColor\"\n [value]=\"label.label + '_' + column.column\"\n [(ngModel)]=\"selectedOptions[rowIndex]\"\n (ngModelChange)=\"\n onSelectionChange(rowIndex, label.label + '_' + column.column)\n \"\n [disabled]=\"disableEdit\"\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || selectedOptions.length == 0)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message mt-2\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.selectionMatrix{border-collapse:collapse;width:100%}.selectionMatrix th,.selectionMatrix td{padding:8px}.selectionMatrix th{border-bottom:2px solid black}.selectionMatrix th:first-child,.selectionMatrix td:first-child,.labelBorder-rtl .selectionMatrix th:first-child{border-right:1px solid #C9C8C8}.table-group-divider{border-top:1px solid #000000}.selectionRadio{cursor:pointer;width:18px;height:18px}.table-cell-wrap{word-wrap:break-word;white-space:normal;max-width:200px}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
5656
|
+
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
5478
5657
|
type: Input
|
|
5479
5658
|
}], inLine: [{
|
|
5480
5659
|
type: Input
|
|
@@ -5510,11 +5689,11 @@ class SignatureFieldsComponent {
|
|
|
5510
5689
|
this.minFileSize = this.question.formElement.validation.minFileSize;
|
|
5511
5690
|
}
|
|
5512
5691
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SignatureFieldsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5513
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: { question: "question", inLine: "inLine" }, ngImport: i0, template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\
|
|
5692
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: { question: "question", inLine: "inLine" }, ngImport: i0, template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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"] }] }); }
|
|
5514
5693
|
}
|
|
5515
5694
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SignatureFieldsComponent, decorators: [{
|
|
5516
5695
|
type: Component,
|
|
5517
|
-
args: [{ selector: 'lib-signature-fields', template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\
|
|
5696
|
+
args: [{ selector: 'lib-signature-fields', template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
5518
5697
|
}], propDecorators: { question: [{
|
|
5519
5698
|
type: Input
|
|
5520
5699
|
}], inLine: [{
|
|
@@ -5522,9 +5701,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
5522
5701
|
}] } });
|
|
5523
5702
|
|
|
5524
5703
|
class SliderFieldsComponent {
|
|
5525
|
-
constructor(renderer, el) {
|
|
5704
|
+
constructor(renderer, el, hiddenFieldService) {
|
|
5526
5705
|
this.renderer = renderer;
|
|
5527
5706
|
this.el = el;
|
|
5707
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
5528
5708
|
this.question = {};
|
|
5529
5709
|
this.inLine = false;
|
|
5530
5710
|
this.inCard = false;
|
|
@@ -5568,14 +5748,15 @@ class SliderFieldsComponent {
|
|
|
5568
5748
|
this.question.answer = String(this.selectedValue);
|
|
5569
5749
|
this.question.validation = true;
|
|
5570
5750
|
this.answerChange.emit({ answer: this.question.answer, maxPossibleScore: 0 });
|
|
5751
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
5571
5752
|
}
|
|
5572
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SliderFieldsComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5573
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\
|
|
5753
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SliderFieldsComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5754
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"sliderRow\">\n <div class=\"sliderLeft\">\n <mat-slider\n [min]=\"minValue\"\n [max]=\"maxValue\"\n [step]=\"stepValue\"\n [ngStyle]=\"{\n '--mdc-slider-active-track-color': changeSliderColor\n ? sliderColor\n : ''\n }\"\n >\n <input\n matSliderThumb\n [(ngModel)]=\"selectedValue\"\n (input)=\"validateInput($event)\"\n [disabled]=\"disableEdit\"\n />\n </mat-slider>\n </div>\n <div class=\"sliderRight\">\n <label class=\"selected-count font-weight-bold\">{{ selectedValue }}</label>\n </div>\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.selected-count{font-size:.8rem;color:#000}mat-slider{width:100%}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #fcfcfc;--mdc-slider-handle-width: 15px;--mdc-slider-handle-height: 15px;--mat-mdc-slider-focus-ripple-color: none;--mat-mdc-slider-hover-ripple-color: none;--mdc-slider-focus-handle-color: #fcfcfc;--mdc-slider-inactive-track-color: #9e9d9d}.mat-mdc-slider .mdc-slider__thumb-knob{outline:1px solid #ff0000!important}.mat-slider-thumb{background-color:none!important;border:none!important;box-shadow:none;outline:none}.sliderRow{display:flex;align-items:center;gap:32px;width:100%}.sliderLeft{flex:1}.sliderRight label{margin-bottom:0}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatSlider, selector: "mat-slider", inputs: ["color", "disableRipple", "disabled", "discrete", "showTickMarks", "min", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i4.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }] }); }
|
|
5574
5755
|
}
|
|
5575
5756
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SliderFieldsComponent, decorators: [{
|
|
5576
5757
|
type: Component,
|
|
5577
|
-
args: [{ selector: 'lib-slider-fields', template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\
|
|
5578
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { question: [{
|
|
5758
|
+
args: [{ selector: 'lib-slider-fields', template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"sliderRow\">\n <div class=\"sliderLeft\">\n <mat-slider\n [min]=\"minValue\"\n [max]=\"maxValue\"\n [step]=\"stepValue\"\n [ngStyle]=\"{\n '--mdc-slider-active-track-color': changeSliderColor\n ? sliderColor\n : ''\n }\"\n >\n <input\n matSliderThumb\n [(ngModel)]=\"selectedValue\"\n (input)=\"validateInput($event)\"\n [disabled]=\"disableEdit\"\n />\n </mat-slider>\n </div>\n <div class=\"sliderRight\">\n <label class=\"selected-count font-weight-bold\">{{ selectedValue }}</label>\n </div>\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.selected-count{font-size:.8rem;color:#000}mat-slider{width:100%}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #fcfcfc;--mdc-slider-handle-width: 15px;--mdc-slider-handle-height: 15px;--mat-mdc-slider-focus-ripple-color: none;--mat-mdc-slider-hover-ripple-color: none;--mdc-slider-focus-handle-color: #fcfcfc;--mdc-slider-inactive-track-color: #9e9d9d}.mat-mdc-slider .mdc-slider__thumb-knob{outline:1px solid #ff0000!important}.mat-slider-thumb{background-color:none!important;border:none!important;box-shadow:none;outline:none}.sliderRow{display:flex;align-items:center;gap:32px;width:100%}.sliderLeft{flex:1}.sliderRight label{margin-bottom:0}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
5759
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
5579
5760
|
type: Input
|
|
5580
5761
|
}], inLine: [{
|
|
5581
5762
|
type: Input
|
|
@@ -5590,10 +5771,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
5590
5771
|
}] } });
|
|
5591
5772
|
|
|
5592
5773
|
class TermsAndConditionFieldsComponent {
|
|
5593
|
-
constructor(formService, http, dataService) {
|
|
5774
|
+
constructor(formService, http, dataService, hiddenFieldService) {
|
|
5594
5775
|
this.formService = formService;
|
|
5595
5776
|
this.http = http;
|
|
5596
5777
|
this.dataService = dataService;
|
|
5778
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
5597
5779
|
this.question = {};
|
|
5598
5780
|
this.inLine = false;
|
|
5599
5781
|
this.count = 0;
|
|
@@ -5636,13 +5818,13 @@ class TermsAndConditionFieldsComponent {
|
|
|
5636
5818
|
closeModal() {
|
|
5637
5819
|
this.visible = false;
|
|
5638
5820
|
}
|
|
5639
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TermsAndConditionFieldsComponent, deps: [{ token: FormService }, { token: i1.HttpClient }, { token: DataService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5640
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: { question: "question", inLine: "inLine" }, ngImport: i0, template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\
|
|
5821
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TermsAndConditionFieldsComponent, deps: [{ token: FormService }, { token: i1.HttpClient }, { token: DataService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5822
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: { question: "question", inLine: "inLine" }, ngImport: i0, template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\" ></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label (click)=\"preview()\">{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"modal1\" *ngIf=\"visible\">\n <div class=\"modal-content1\">\n <span class=\"close\" (click)=\"closeModal()\">×</span>\n <div class=\"imgContiner\">\n <img [src]=\"imgUrl\" alt=\"Image\">\n </div>\n </div>\n </div>\n</div>\n\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}label{color:#084fff}.modal1{display:flex;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;background-color:#000;background-color:#0006;align-items:center}.modal-content1{background-color:#fefefe;margin:15% auto;padding:20px;border:1px solid #888;width:80%;max-width:877px}.close{color:#aaa;float:right;font-size:28px;font-weight:700;justify-content:flex-end;display:flex;opacity:1}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer}.imgContiner{height:500px;overflow-y:auto}.imgContiner img{max-width:100%;width:100%}div::-webkit-scrollbar,main::-webkit-scrollbar,ul::-webkit-scrollbar{width:6px;height:8px;visibility:hidden}div::-webkit-scrollbar-thumb,main::-webkit-scrollbar-thumb,ul::-webkit-scrollbar-thumb{background-color:var(--scrollBarThumbColor);border-radius:8px;visibility:hidden}div:hover::-webkit-scrollbar,main:hover::-webkit-scrollbar,ul:hover::-webkit-scrollbar{visibility:unset}div:hover::-webkit-scrollbar-thumb,main:hover::-webkit-scrollbar-thumb,ul:hover::-webkit-scrollbar-thumb{visibility:unset}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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"] }] }); }
|
|
5641
5823
|
}
|
|
5642
5824
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TermsAndConditionFieldsComponent, decorators: [{
|
|
5643
5825
|
type: Component,
|
|
5644
|
-
args: [{ selector: 'lib-terms-and-condition-fields', template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\
|
|
5645
|
-
}], ctorParameters: function () { return [{ type: FormService }, { type: i1.HttpClient }, { type: DataService }]; }, propDecorators: { question: [{
|
|
5826
|
+
args: [{ selector: 'lib-terms-and-condition-fields', template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\" ></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label (click)=\"preview()\">{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"modal1\" *ngIf=\"visible\">\n <div class=\"modal-content1\">\n <span class=\"close\" (click)=\"closeModal()\">×</span>\n <div class=\"imgContiner\">\n <img [src]=\"imgUrl\" alt=\"Image\">\n </div>\n </div>\n </div>\n</div>\n\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}label{color:#084fff}.modal1{display:flex;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;background-color:#000;background-color:#0006;align-items:center}.modal-content1{background-color:#fefefe;margin:15% auto;padding:20px;border:1px solid #888;width:80%;max-width:877px}.close{color:#aaa;float:right;font-size:28px;font-weight:700;justify-content:flex-end;display:flex;opacity:1}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer}.imgContiner{height:500px;overflow-y:auto}.imgContiner img{max-width:100%;width:100%}div::-webkit-scrollbar,main::-webkit-scrollbar,ul::-webkit-scrollbar{width:6px;height:8px;visibility:hidden}div::-webkit-scrollbar-thumb,main::-webkit-scrollbar-thumb,ul::-webkit-scrollbar-thumb{background-color:var(--scrollBarThumbColor);border-radius:8px;visibility:hidden}div:hover::-webkit-scrollbar,main:hover::-webkit-scrollbar,ul:hover::-webkit-scrollbar{visibility:unset}div:hover::-webkit-scrollbar-thumb,main:hover::-webkit-scrollbar-thumb,ul:hover::-webkit-scrollbar-thumb{visibility:unset}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
5827
|
+
}], ctorParameters: function () { return [{ type: FormService }, { type: i1.HttpClient }, { type: DataService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
5646
5828
|
type: Input
|
|
5647
5829
|
}], inLine: [{
|
|
5648
5830
|
type: Input
|
|
@@ -5652,10 +5834,11 @@ class TextAreaFieldsComponent {
|
|
|
5652
5834
|
ngOnInit() {
|
|
5653
5835
|
this.valueAssigned();
|
|
5654
5836
|
}
|
|
5655
|
-
constructor(validationService, tracker, whenClauseService) {
|
|
5837
|
+
constructor(validationService, tracker, whenClauseService, hiddenFieldService) {
|
|
5656
5838
|
this.validationService = validationService;
|
|
5657
5839
|
this.tracker = tracker;
|
|
5658
5840
|
this.whenClauseService = whenClauseService;
|
|
5841
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
5659
5842
|
this.question = {};
|
|
5660
5843
|
this.inLine = false;
|
|
5661
5844
|
this.inCard = false;
|
|
@@ -5732,6 +5915,7 @@ class TextAreaFieldsComponent {
|
|
|
5732
5915
|
this.whenClauseService.setQuestionAnswer(this.question.id, this.question.answer, true);
|
|
5733
5916
|
});
|
|
5734
5917
|
this.validateTextarea();
|
|
5918
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
5735
5919
|
}
|
|
5736
5920
|
validateTextarea() {
|
|
5737
5921
|
this.validationFailed = false;
|
|
@@ -5777,13 +5961,13 @@ class TextAreaFieldsComponent {
|
|
|
5777
5961
|
this.tracker.unregisterElement(this.elementId);
|
|
5778
5962
|
}
|
|
5779
5963
|
}
|
|
5780
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextAreaFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5781
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, viewQueries: [{ propertyName: "textarea", first: true, predicate: ["textarea"], descendants: true }], ngImport: i0, template: "<div\
|
|
5964
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextAreaFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: WhenClauseService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5965
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, viewQueries: [{ propertyName: "textarea", first: true, predicate: ["textarea"], descendants: true }], ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <textarea\n #textarea\n class=\"form-control mb-2\"\n [ngClass]=\"{ 'no-scroll': numberOfRows }\"\n [rows]=\"numberOfRows\"\n wrap=\"hard\"\n (input)=\"validateInput($event)\"\n (blur)=\"validateTextarea()\"\n [(ngModel)]=\"enteredText\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredText)\"\n [maxlength]=\"characterCount\"\n [disabled]=\"disableEdit\"\n ></textarea>\n <div *ngIf=\"isInvalid && (!inLine || !enteredText)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.no-scroll{overflow:hidden!important;resize:none;line-height:1.5;padding:5px 10px}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
5782
5966
|
}
|
|
5783
5967
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextAreaFieldsComponent, decorators: [{
|
|
5784
5968
|
type: Component,
|
|
5785
|
-
args: [{ selector: 'lib-text-area-fields', template: "<div\
|
|
5786
|
-
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: WhenClauseService }]; }, propDecorators: { question: [{
|
|
5969
|
+
args: [{ selector: 'lib-text-area-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <textarea\n #textarea\n class=\"form-control mb-2\"\n [ngClass]=\"{ 'no-scroll': numberOfRows }\"\n [rows]=\"numberOfRows\"\n wrap=\"hard\"\n (input)=\"validateInput($event)\"\n (blur)=\"validateTextarea()\"\n [(ngModel)]=\"enteredText\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredText)\"\n [maxlength]=\"characterCount\"\n [disabled]=\"disableEdit\"\n ></textarea>\n <div *ngIf=\"isInvalid && (!inLine || !enteredText)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.no-scroll{overflow:hidden!important;resize:none;line-height:1.5;padding:5px 10px}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
5970
|
+
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: WhenClauseService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
5787
5971
|
type: Input
|
|
5788
5972
|
}], inLine: [{
|
|
5789
5973
|
type: Input
|
|
@@ -5801,10 +5985,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
5801
5985
|
}] } });
|
|
5802
5986
|
|
|
5803
5987
|
class TextFieldsComponent {
|
|
5804
|
-
constructor(validationService, tracker, whenClauseService) {
|
|
5988
|
+
constructor(validationService, tracker, whenClauseService, hiddenFieldService) {
|
|
5805
5989
|
this.validationService = validationService;
|
|
5806
5990
|
this.tracker = tracker;
|
|
5807
5991
|
this.whenClauseService = whenClauseService;
|
|
5992
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
5808
5993
|
this.question = {};
|
|
5809
5994
|
this.inLine = false;
|
|
5810
5995
|
this.inCard = false;
|
|
@@ -5915,6 +6100,7 @@ class TextFieldsComponent {
|
|
|
5915
6100
|
this.question.answer = event.target.value;
|
|
5916
6101
|
this.answerChange.emit({ answer: event.target.value, maxPossibleScore: 0 });
|
|
5917
6102
|
this.whenClauseService.setQuestionAnswer(this.question.id, this.question.answer);
|
|
6103
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
5918
6104
|
this.validatetextField();
|
|
5919
6105
|
if (!this.inLine && !this.inCard) {
|
|
5920
6106
|
setTimeout(() => {
|
|
@@ -6018,13 +6204,13 @@ class TextFieldsComponent {
|
|
|
6018
6204
|
this.tracker.unregisterElement(this.elementId);
|
|
6019
6205
|
}
|
|
6020
6206
|
}
|
|
6021
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6022
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TextFieldsComponent, selector: "lib-text-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
6207
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: WhenClauseService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6208
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TextFieldsComponent, selector: "lib-text-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n\n <input\n type=\"text\"\n class=\"form-control mb-2 height\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"enteredText\"\n (blur)=\"validatetextField()\"\n (input)=\"validateInput($event)\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredText)\"\n [id]=\"question.id\"\n [disabled]=\"disableEdit\"\n />\n <div *ngIf=\"isInvalid && (!inLine || !enteredText)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.form-control:not(:placeholder-shown).bold{font-weight:700}.form-control:not(:placeholder-shown).underline{text-decoration:underline}.form-control:not(:placeholder-shown).italics{font-style:italic}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
6023
6209
|
}
|
|
6024
6210
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextFieldsComponent, decorators: [{
|
|
6025
6211
|
type: Component,
|
|
6026
|
-
args: [{ selector: 'lib-text-fields', template: "<div\
|
|
6027
|
-
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: WhenClauseService }]; }, propDecorators: { question: [{
|
|
6212
|
+
args: [{ selector: 'lib-text-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n\n <input\n type=\"text\"\n class=\"form-control mb-2 height\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"enteredText\"\n (blur)=\"validatetextField()\"\n (input)=\"validateInput($event)\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredText)\"\n [id]=\"question.id\"\n [disabled]=\"disableEdit\"\n />\n <div *ngIf=\"isInvalid && (!inLine || !enteredText)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.form-control:not(:placeholder-shown).bold{font-weight:700}.form-control:not(:placeholder-shown).underline{text-decoration:underline}.form-control:not(:placeholder-shown).italics{font-style:italic}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
6213
|
+
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: WhenClauseService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
6028
6214
|
type: Input
|
|
6029
6215
|
}], inLine: [{
|
|
6030
6216
|
type: Input
|
|
@@ -6039,7 +6225,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
6039
6225
|
}] } });
|
|
6040
6226
|
|
|
6041
6227
|
class ToggleSwitchFieldsComponent {
|
|
6042
|
-
constructor() {
|
|
6228
|
+
constructor(hiddenFieldService) {
|
|
6229
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
6043
6230
|
this.question = {};
|
|
6044
6231
|
this.inLine = false;
|
|
6045
6232
|
this.inCard = false;
|
|
@@ -6097,14 +6284,15 @@ class ToggleSwitchFieldsComponent {
|
|
|
6097
6284
|
? this.question.formElement.appearance.labelOnColor
|
|
6098
6285
|
: this.question.formElement.appearance.labelOffColor;
|
|
6099
6286
|
this.answerChange.emit({ answer: this.question.answer, maxPossibleScore: 0 });
|
|
6287
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
6100
6288
|
}
|
|
6101
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToggleSwitchFieldsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6102
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", acceptedLanguage: "acceptedLanguage", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\
|
|
6289
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToggleSwitchFieldsComponent, deps: [{ token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6290
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", acceptedLanguage: "acceptedLanguage", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"mt-2\">\n <label\n class=\"switch\"\n [ngClass]=\"{\n 'direction-rtl': acceptedLanguage === 'ara',\n 'direction-ltr': acceptedLanguage !== 'ara'\n }\"\n [attr.name]=\"question.testElementName\"\n >\n <input\n type=\"checkbox\"\n id=\"togBtn\"\n (change)=\"toggleSliderColor($event)\"\n [checked]=\"selectedValue === labelOnValue\"\n [attr.data-state]=\"selectedValue\"\n [disabled]=\"disableEdit\"\n />\n <div\n class=\"slider round\"\n [ngClass]=\"getDirectionClass()\"\n [ngStyle]=\"{ 'background-color': toggleBackgroundColor }\"\n >\n <span class=\"on action-btn-text\">{{ labelOnValue }}</span>\n <span class=\"off action-btn-text\">{{ labelOffValue }}</span>\n </div>\n </label>\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.switch{position:relative;display:inline-block;width:auto;height:34px;min-width:120px}.switch input{display:none}.slider{position:absolute;cursor:pointer;inset:0;transition:.4s}.slider:before{position:absolute;content:\"\";height:26px;width:26px;bottom:4px;background-color:#fff;transition:.4s}input:checked+.slider{background-color:#00c48c}input:not(:checked)+.slider{background-color:#00c48c}input:focus+.slider{box-shadow:0 0 1px #2196f3}.direction-rtl input:checked+.slider:before{transform:translate(-86px)}input:checked+.slider:before{transform:translate(86px)}.on{display:none}.on,.off{color:#fff;position:absolute;transform:translate(-50%,-50%);top:50%;left:50%;font-size:13px;font-weight:500}input:checked+.slider .on{display:block}input:checked+.slider .off{display:none}.slider.round{border-radius:28px}.slider.round:before{border-radius:50%}.direction-rtl .slider:before{left:59px;right:4px}.direction-ltr .slider:before{left:4px;right:59px}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
6103
6291
|
}
|
|
6104
6292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToggleSwitchFieldsComponent, decorators: [{
|
|
6105
6293
|
type: Component,
|
|
6106
|
-
args: [{ selector: 'lib-toggle-switch-fields', template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\
|
|
6107
|
-
}], propDecorators: { question: [{
|
|
6294
|
+
args: [{ selector: 'lib-toggle-switch-fields', template: "<div [ngClass]=\"{ 'mb-4': !inLine }\" class=\"px-3\" [attr.name]=\"question.testElementName\">\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"mt-2\">\n <label\n class=\"switch\"\n [ngClass]=\"{\n 'direction-rtl': acceptedLanguage === 'ara',\n 'direction-ltr': acceptedLanguage !== 'ara'\n }\"\n [attr.name]=\"question.testElementName\"\n >\n <input\n type=\"checkbox\"\n id=\"togBtn\"\n (change)=\"toggleSliderColor($event)\"\n [checked]=\"selectedValue === labelOnValue\"\n [attr.data-state]=\"selectedValue\"\n [disabled]=\"disableEdit\"\n />\n <div\n class=\"slider round\"\n [ngClass]=\"getDirectionClass()\"\n [ngStyle]=\"{ 'background-color': toggleBackgroundColor }\"\n >\n <span class=\"on action-btn-text\">{{ labelOnValue }}</span>\n <span class=\"off action-btn-text\">{{ labelOffValue }}</span>\n </div>\n </label>\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.switch{position:relative;display:inline-block;width:auto;height:34px;min-width:120px}.switch input{display:none}.slider{position:absolute;cursor:pointer;inset:0;transition:.4s}.slider:before{position:absolute;content:\"\";height:26px;width:26px;bottom:4px;background-color:#fff;transition:.4s}input:checked+.slider{background-color:#00c48c}input:not(:checked)+.slider{background-color:#00c48c}input:focus+.slider{box-shadow:0 0 1px #2196f3}.direction-rtl input:checked+.slider:before{transform:translate(-86px)}input:checked+.slider:before{transform:translate(86px)}.on{display:none}.on,.off{color:#fff;position:absolute;transform:translate(-50%,-50%);top:50%;left:50%;font-size:13px;font-weight:500}input:checked+.slider .on{display:block}input:checked+.slider .off{display:none}.slider.round{border-radius:28px}.slider.round:before{border-radius:50%}.direction-rtl .slider:before{left:59px;right:4px}.direction-ltr .slider:before{left:4px;right:59px}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
6295
|
+
}], ctorParameters: function () { return [{ type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
6108
6296
|
type: Input
|
|
6109
6297
|
}], inLine: [{
|
|
6110
6298
|
type: Input
|
|
@@ -6121,9 +6309,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
6121
6309
|
}] } });
|
|
6122
6310
|
|
|
6123
6311
|
class UrlFieldsComponent {
|
|
6124
|
-
constructor(validationService, tracker) {
|
|
6312
|
+
constructor(validationService, tracker, hiddenFieldService) {
|
|
6125
6313
|
this.validationService = validationService;
|
|
6126
6314
|
this.tracker = tracker;
|
|
6315
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
6127
6316
|
this.question = {};
|
|
6128
6317
|
this.inLine = false;
|
|
6129
6318
|
this.inCard = false;
|
|
@@ -6184,6 +6373,7 @@ class UrlFieldsComponent {
|
|
|
6184
6373
|
this.validateUrl();
|
|
6185
6374
|
this.question.answer = event.target.value;
|
|
6186
6375
|
this.answerChange.emit({ answer: this.question.answer, maxPossibleScore: 0 });
|
|
6376
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
6187
6377
|
}
|
|
6188
6378
|
handleValidation(isValid, message = 'This field is required') {
|
|
6189
6379
|
if (isValid) {
|
|
@@ -6218,13 +6408,13 @@ class UrlFieldsComponent {
|
|
|
6218
6408
|
this.tracker.unregisterElement(this.elementId);
|
|
6219
6409
|
}
|
|
6220
6410
|
}
|
|
6221
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UrlFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6222
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
6411
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UrlFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6412
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"input-group\">\n <input\n [id]=\"question.id\"\n type=\"text\"\n class=\"form-control col-11.5 rounded height\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"enteredUrl\"\n (blur)=\"validateUrl()\"\n (input)=\"validateInput($event)\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredUrl)\"\n [disabled]=\"disableEdit\"\n />\n <div class=\"ps-2 pe-2\">\n <button\n *ngIf=\"showPreviewButton\"\n type=\"button\"\n class=\"btn col-.5 custom-button rounded d-flex justify-content-center align-items-center height\"\n (click)=\"handleClick()\"\n >\n <svg\n width=\"30\"\n height=\"30\"\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.99561 16.2503C4.99561 21.7754 9.47462 26.2544 14.9998 26.2544C20.5249 26.2544 25.0039 21.7754 25.0039 16.2503C25.0039 10.7251 20.5249 6.24609 14.9998 6.24609H6.24613\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M9.99766 2.49219L6.24609 6.24375\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M9.99766 9.99766L6.24609 6.24609\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M17.7924 14.8125L14.3035 18.3015L12.2051 16.2106\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !enteredUrl)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.custom-button{border:1px solid #ced4da;background-color:transparent;padding:.375rem .75rem;line-height:1.5;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\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: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
6223
6413
|
}
|
|
6224
6414
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UrlFieldsComponent, decorators: [{
|
|
6225
6415
|
type: Component,
|
|
6226
|
-
args: [{ selector: 'lib-url-fields', template: "<div\
|
|
6227
|
-
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }]; }, propDecorators: { question: [{
|
|
6416
|
+
args: [{ selector: 'lib-url-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"input-group\">\n <input\n [id]=\"question.id\"\n type=\"text\"\n class=\"form-control col-11.5 rounded height\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"enteredUrl\"\n (blur)=\"validateUrl()\"\n (input)=\"validateInput($event)\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredUrl)\"\n [disabled]=\"disableEdit\"\n />\n <div class=\"ps-2 pe-2\">\n <button\n *ngIf=\"showPreviewButton\"\n type=\"button\"\n class=\"btn col-.5 custom-button rounded d-flex justify-content-center align-items-center height\"\n (click)=\"handleClick()\"\n >\n <svg\n width=\"30\"\n height=\"30\"\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.99561 16.2503C4.99561 21.7754 9.47462 26.2544 14.9998 26.2544C20.5249 26.2544 25.0039 21.7754 25.0039 16.2503C25.0039 10.7251 20.5249 6.24609 14.9998 6.24609H6.24613\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M9.99766 2.49219L6.24609 6.24375\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M9.99766 9.99766L6.24609 6.24609\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M17.7924 14.8125L14.3035 18.3015L12.2051 16.2106\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !enteredUrl)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.custom-button{border:1px solid #ced4da;background-color:transparent;padding:.375rem .75rem;line-height:1.5;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}\n"] }]
|
|
6417
|
+
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
6228
6418
|
type: Input
|
|
6229
6419
|
}], inLine: [{
|
|
6230
6420
|
type: Input
|
|
@@ -6356,11 +6546,11 @@ class AggregateFunctionComponent {
|
|
|
6356
6546
|
}
|
|
6357
6547
|
}
|
|
6358
6548
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AggregateFunctionComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: AggregationFunctionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6359
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", rowId: "rowId", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
6549
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", rowId: "rowId", disableEdit: "disableEdit" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <input\n type=\"text\"\n class=\"form-control mb-2 height\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"result\"\n readonly\n [class.invalid-question]=\"isInvalid && (!inLine || !result)\"\n [id]=\"question.id\"\n />\n <div *ngIf=\"isInvalid && (!inLine || !result)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}\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: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
6360
6550
|
}
|
|
6361
6551
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AggregateFunctionComponent, decorators: [{
|
|
6362
6552
|
type: Component,
|
|
6363
|
-
args: [{ selector: 'lib-aggregate-function', template: "<div\
|
|
6553
|
+
args: [{ selector: 'lib-aggregate-function', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span> <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <input\n type=\"text\"\n class=\"form-control mb-2 height\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"result\"\n readonly\n [class.invalid-question]=\"isInvalid && (!inLine || !result)\"\n [id]=\"question.id\"\n />\n <div *ngIf=\"isInvalid && (!inLine || !result)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
6364
6554
|
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: AggregationFunctionService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { question: [{
|
|
6365
6555
|
type: Input
|
|
6366
6556
|
}], inLine: [{
|
|
@@ -6378,10 +6568,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
6378
6568
|
}] } });
|
|
6379
6569
|
|
|
6380
6570
|
class CurrencyFieldsComponent {
|
|
6381
|
-
constructor(validationService, tracker, aggregateService) {
|
|
6571
|
+
constructor(validationService, tracker, aggregateService, hiddenFieldService) {
|
|
6382
6572
|
this.validationService = validationService;
|
|
6383
6573
|
this.tracker = tracker;
|
|
6384
6574
|
this.aggregateService = aggregateService;
|
|
6575
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
6385
6576
|
this.question = {};
|
|
6386
6577
|
this.inLine = false;
|
|
6387
6578
|
this.inCard = false;
|
|
@@ -6630,6 +6821,7 @@ class CurrencyFieldsComponent {
|
|
|
6630
6821
|
currency: this.currencySymbol
|
|
6631
6822
|
});
|
|
6632
6823
|
this.validateNumber();
|
|
6824
|
+
this.hiddenFieldService.updateHiddenFieldsOnChange();
|
|
6633
6825
|
}
|
|
6634
6826
|
// 3) convertAmountToWords using CurrencyMeta typing
|
|
6635
6827
|
convertAmountToWords(value) {
|
|
@@ -6850,13 +7042,13 @@ class CurrencyFieldsComponent {
|
|
|
6850
7042
|
this.tracker.unregisterElement(this.elementId);
|
|
6851
7043
|
}
|
|
6852
7044
|
}
|
|
6853
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CurrencyFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: AggregationFunctionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6854
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit", rowId: "rowId" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\
|
|
7045
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CurrencyFieldsComponent, deps: [{ token: ValidationService }, { token: ElementTrackerService }, { token: AggregationFunctionService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7046
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex", disableEdit: "disableEdit", rowId: "rowId" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span>\n <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n\n <div class=\"currency-input inside\">\n <span *ngIf=\"symbolPosition === 'Before the value'\" class=\"currency-symbol left\">\n {{ currencySymbol }}\n </span>\n\n <input\n type=\"text\"\n class=\"form-control mb-2 height\"\n [placeholder]=\"placeholder\"\n [class.hide-spin-buttons]=\"true\"\n (blur)=\"validateNumber()\"\n [(ngModel)]=\"enteredAmount\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredAmount)\"\n (input)=\"validateInput($event)\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n (wheel)=\"preventNumberScroll($event)\"\n [disabled]=\"disableEdit\"\n />\n\n <span *ngIf=\"symbolPosition === 'After the value'\" class=\"currency-symbol right\">\n {{ currencySymbol }}\n </span>\n\n </div>\n <div *ngIf=\"showAmountInWords && amountInWordsText\" class=\"amount-in-words\">\n {{ amountInWordsText }}\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !enteredAmount)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.hide-spin-buttons::-webkit-outer-spin-button,.hide-spin-buttons::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.currency-input.inside{position:relative}.currency-input.inside input{padding-left:.75rem;padding-right:.75rem}.currency-input.inside .currency-symbol{position:absolute;top:50%;transform:translateY(-50%);color:#444;font-weight:700;pointer-events:none;white-space:nowrap}.currency-input.inside .currency-symbol.left{left:1%}.currency-input.inside .currency-symbol.left+input{padding-left:6ch}.currency-input.inside input+.currency-symbol.right{right:10px;padding-right:4ch}\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: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
6855
7047
|
}
|
|
6856
7048
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CurrencyFieldsComponent, decorators: [{
|
|
6857
7049
|
type: Component,
|
|
6858
|
-
args: [{ selector: 'lib-currency-fields', template: "<div\
|
|
6859
|
-
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: AggregationFunctionService }]; }, propDecorators: { question: [{
|
|
7050
|
+
args: [{ selector: 'lib-currency-fields', template: "<div\n [ngClass]=\"{ 'mb-4': !inLine }\"\n class=\"px-3\"\n [id]=\"(inLine || inCard) ? 'question-' + submissionIndex + '-' + question.id : 'question-' + question.id\"\n [attr.name]=\"question.testElementName\"\n>\n <div class=\"input-wrapper mb-2\" *ngIf=\"!inLine\">\n <div *ngIf=\"question.questionNumber\" [innerHTML]=\"question.questionNumber\"></div>\n <span *ngIf=\"question.questionNumber\" class=\"space\"></span>\n <label>{{ question.question }}</label\n > \n <span class=\"text-danger\" *ngIf=\"question?.required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n\n <div class=\"currency-input inside\">\n <span *ngIf=\"symbolPosition === 'Before the value'\" class=\"currency-symbol left\">\n {{ currencySymbol }}\n </span>\n\n <input\n type=\"text\"\n class=\"form-control mb-2 height\"\n [placeholder]=\"placeholder\"\n [class.hide-spin-buttons]=\"true\"\n (blur)=\"validateNumber()\"\n [(ngModel)]=\"enteredAmount\"\n [class.invalid]=\"validationFailed\"\n [class.invalid-question]=\"isInvalid && (!inLine || !enteredAmount)\"\n (input)=\"validateInput($event)\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n (wheel)=\"preventNumberScroll($event)\"\n [disabled]=\"disableEdit\"\n />\n\n <span *ngIf=\"symbolPosition === 'After the value'\" class=\"currency-symbol right\">\n {{ currencySymbol }}\n </span>\n\n </div>\n <div *ngIf=\"showAmountInWords && amountInWordsText\" class=\"amount-in-words\">\n {{ amountInWordsText }}\n </div>\n <div *ngIf=\"isInvalid && (!inLine || !enteredAmount)\" class=\"error-message\">\n {{ errorMessage }}\n </div>\n <div *ngIf=\"validationFailed && !isInvalid\" class=\"text-danger error-message\">\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-inline-start:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);right:0;padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;min-width:300px;word-wrap:break-word;word-break:break-word;text-align:center;white-space:normal}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}::ng-deep html lib-formSubmission{font-family:var(--library-font-family)!important;font-size:var(--library-font-size)!important}::ng-deep .timepicker-overlay{z-index:1000!important}::ng-deep .timepicker-backdrop-overlay{z-index:1000!important}.space{width:5px}.error-message{color:#f44336;font-size:.8em;margin-top:4px;padding:0 8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.hide-spin-buttons::-webkit-outer-spin-button,.hide-spin-buttons::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.invalid-question{border:2px solid #f44336;border-radius:4px;padding:8px;margin-bottom:4px}.currency-input.inside{position:relative}.currency-input.inside input{padding-left:.75rem;padding-right:.75rem}.currency-input.inside .currency-symbol{position:absolute;top:50%;transform:translateY(-50%);color:#444;font-weight:700;pointer-events:none;white-space:nowrap}.currency-input.inside .currency-symbol.left{left:1%}.currency-input.inside .currency-symbol.left+input{padding-left:6ch}.currency-input.inside input+.currency-symbol.right{right:10px;padding-right:4ch}\n"] }]
|
|
7051
|
+
}], ctorParameters: function () { return [{ type: ValidationService }, { type: ElementTrackerService }, { type: AggregationFunctionService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
6860
7052
|
type: Input
|
|
6861
7053
|
}], inLine: [{
|
|
6862
7054
|
type: Input
|
|
@@ -6873,10 +7065,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
6873
7065
|
}] } });
|
|
6874
7066
|
|
|
6875
7067
|
class HiddenFieldComponent {
|
|
6876
|
-
constructor(tracker, dataService, whenClauseService) {
|
|
7068
|
+
constructor(tracker, dataService, whenClauseService, hiddenFieldService) {
|
|
6877
7069
|
this.tracker = tracker;
|
|
6878
7070
|
this.dataService = dataService;
|
|
6879
7071
|
this.whenClauseService = whenClauseService;
|
|
7072
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
6880
7073
|
this.question = {};
|
|
6881
7074
|
this.inLine = false;
|
|
6882
7075
|
this.inCard = false;
|
|
@@ -6885,13 +7078,27 @@ class HiddenFieldComponent {
|
|
|
6885
7078
|
this.key = '';
|
|
6886
7079
|
this.valueSource = '';
|
|
6887
7080
|
this.value = '';
|
|
7081
|
+
this.updateOn = '';
|
|
6888
7082
|
this.user = '';
|
|
6889
7083
|
this.elementId = '';
|
|
7084
|
+
this.isEdit = this.hiddenFieldService.getEditMode();
|
|
6890
7085
|
this.dataService.header$.subscribe((data) => {
|
|
6891
7086
|
this.user = data.authUser;
|
|
6892
7087
|
});
|
|
6893
7088
|
}
|
|
6894
7089
|
ngOnInit() {
|
|
7090
|
+
if (!this.inCard || !this.inLine) {
|
|
7091
|
+
this.hiddenFieldService.setHiddenField(this.question.id, this.question);
|
|
7092
|
+
}
|
|
7093
|
+
this.subscription = this.hiddenFieldService.hiddenFieldResults$.subscribe((update) => {
|
|
7094
|
+
if (update && update.id === this.question.id) {
|
|
7095
|
+
// include rowId
|
|
7096
|
+
if (this.isEdit &&
|
|
7097
|
+
(this.updateOn == 'UPDATE' || this.updateOn == 'BOTH')) {
|
|
7098
|
+
this.question.answer = update.result;
|
|
7099
|
+
}
|
|
7100
|
+
}
|
|
7101
|
+
});
|
|
6895
7102
|
this.valueAssigned();
|
|
6896
7103
|
}
|
|
6897
7104
|
valueAssigned() {
|
|
@@ -6900,20 +7107,8 @@ class HiddenFieldComponent {
|
|
|
6900
7107
|
this.key = this.hiddenField?.key;
|
|
6901
7108
|
this.value = this.hiddenField?.value;
|
|
6902
7109
|
this.valueSource = this.hiddenField?.valueSource;
|
|
6903
|
-
|
|
6904
|
-
|
|
6905
|
-
'LOCAL_STORAGE',
|
|
6906
|
-
'SESSION_STORAGE'
|
|
6907
|
-
];
|
|
6908
|
-
const hasExistingAnswer = this.question.answer !== null &&
|
|
6909
|
-
this.question.answer !== undefined &&
|
|
6910
|
-
this.question.answer !== '';
|
|
6911
|
-
// 🚨 Skip overwrite if answer exists for specific sources
|
|
6912
|
-
if (sourcesThatShouldNotOverride.includes(this.valueSource) &&
|
|
6913
|
-
hasExistingAnswer) {
|
|
6914
|
-
// Do nothing — keep existing answer
|
|
6915
|
-
}
|
|
6916
|
-
else {
|
|
7110
|
+
this.updateOn = this.hiddenField?.updateOn;
|
|
7111
|
+
if (!this.isEdit || !this.question.answer) {
|
|
6917
7112
|
this.question.answer = this.resolveHiddenFieldValue(this.hiddenField);
|
|
6918
7113
|
}
|
|
6919
7114
|
setTimeout(() => {
|
|
@@ -6921,7 +7116,7 @@ class HiddenFieldComponent {
|
|
|
6921
7116
|
});
|
|
6922
7117
|
this.answerChange.emit({
|
|
6923
7118
|
answer: this.question.answer,
|
|
6924
|
-
maxPossibleScore: 0
|
|
7119
|
+
maxPossibleScore: 0,
|
|
6925
7120
|
});
|
|
6926
7121
|
}
|
|
6927
7122
|
resolveHiddenFieldValue(hiddenField) {
|
|
@@ -6985,14 +7180,17 @@ class HiddenFieldComponent {
|
|
|
6985
7180
|
if (this.elementId) {
|
|
6986
7181
|
this.tracker.unregisterElement(this.elementId);
|
|
6987
7182
|
}
|
|
7183
|
+
if (this.subscription) {
|
|
7184
|
+
this.subscription.unsubscribe();
|
|
7185
|
+
}
|
|
6988
7186
|
}
|
|
6989
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HiddenFieldComponent, deps: [{ token: ElementTrackerService }, { token: DataService }, { token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7187
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HiddenFieldComponent, deps: [{ token: ElementTrackerService }, { token: DataService }, { token: WhenClauseService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6990
7188
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: { question: "question", inLine: "inLine", inCard: "inCard", submissionIndex: "submissionIndex" }, outputs: { answerChange: "answerChange" }, ngImport: i0, template: '', isInline: true, styles: [""] }); }
|
|
6991
7189
|
}
|
|
6992
7190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HiddenFieldComponent, decorators: [{
|
|
6993
7191
|
type: Component,
|
|
6994
7192
|
args: [{ selector: 'lib-hidden-field', template: '' }]
|
|
6995
|
-
}], ctorParameters: function () { return [{ type: ElementTrackerService }, { type: DataService }, { type: WhenClauseService }]; }, propDecorators: { question: [{
|
|
7193
|
+
}], ctorParameters: function () { return [{ type: ElementTrackerService }, { type: DataService }, { type: WhenClauseService }, { type: HiddenFieldService }]; }, propDecorators: { question: [{
|
|
6996
7194
|
type: Input
|
|
6997
7195
|
}], inLine: [{
|
|
6998
7196
|
type: Input
|
|
@@ -7073,26 +7271,26 @@ class IframeFieldsComponent {
|
|
|
7073
7271
|
const iframeDoc = iframe.contentDocument || iframe.contentWindow?.document;
|
|
7074
7272
|
if (iframeDoc) {
|
|
7075
7273
|
// Build the complete HTML content to inject into the iframe
|
|
7076
|
-
const safeHtml = `
|
|
7077
|
-
<html>
|
|
7078
|
-
<head>
|
|
7079
|
-
<style>${this.cssContent || ''}</style>
|
|
7080
|
-
</head>
|
|
7081
|
-
<body>
|
|
7082
|
-
${this.htmlContent || ''}
|
|
7083
|
-
<script>
|
|
7084
|
-
(function(localStorage) {
|
|
7085
|
-
try {
|
|
7274
|
+
const safeHtml = `
|
|
7275
|
+
<html>
|
|
7276
|
+
<head>
|
|
7277
|
+
<style>${this.cssContent || ''}</style>
|
|
7278
|
+
</head>
|
|
7279
|
+
<body>
|
|
7280
|
+
${this.htmlContent || ''}
|
|
7281
|
+
<script>
|
|
7282
|
+
(function(localStorage) {
|
|
7283
|
+
try {
|
|
7086
7284
|
${this.isSafeScript(this.scriptContent)
|
|
7087
7285
|
? this.scriptContent
|
|
7088
|
-
: ''}
|
|
7089
|
-
} catch (e) {
|
|
7090
|
-
document.body.innerHTML += '<p style="color:red">Script Error: ' + e.message + '</p>';
|
|
7091
|
-
}
|
|
7092
|
-
})(window.localStorage);
|
|
7093
|
-
</script>
|
|
7094
|
-
</body>
|
|
7095
|
-
</html>
|
|
7286
|
+
: ''}
|
|
7287
|
+
} catch (e) {
|
|
7288
|
+
document.body.innerHTML += '<p style="color:red">Script Error: ' + e.message + '</p>';
|
|
7289
|
+
}
|
|
7290
|
+
})(window.localStorage);
|
|
7291
|
+
</script>
|
|
7292
|
+
</body>
|
|
7293
|
+
</html>
|
|
7096
7294
|
`;
|
|
7097
7295
|
iframeDoc.open();
|
|
7098
7296
|
iframeDoc.write(safeHtml);
|
|
@@ -7186,11 +7384,11 @@ class IframeFieldsComponent {
|
|
|
7186
7384
|
return !unsafePatterns.some((pattern) => pattern.test(code));
|
|
7187
7385
|
}
|
|
7188
7386
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IframeFieldsComponent, deps: [{ token: i1$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7189
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IframeFieldsComponent, selector: "lib-iframe-fields", inputs: { question: "question" }, viewQueries: [{ propertyName: "iframeRef", first: true, predicate: ["iframeRef"], descendants: true }], ngImport: i0, template: "<div class=\"custom-embed mb-4\"\
|
|
7387
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IframeFieldsComponent, selector: "lib-iframe-fields", inputs: { question: "question" }, viewQueries: [{ propertyName: "iframeRef", first: true, predicate: ["iframeRef"], descendants: true }], ngImport: i0, template: "<div class=\"custom-embed mb-4\"\n [style.width]=\"width\"\n [style.height]=\"height\">\n\n <ng-container [ngSwitch]=\"contentType\">\n\n <!-- HTML, CSS, and Script rendered together -->\n <iframe\n *ngSwitchCase=\"'HTML'\"\n #iframeRef\n sandbox=\"allow-scripts allow-same-origin\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n frameborder=\"0\"\n ></iframe>\n\n <!-- Link Embed -->\n <div *ngSwitchCase=\"'LINK'\">\n <iframe\n *ngIf=\"safeUrl\"\n [src]=\"safeUrl\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n frameborder=\"0\"\n allowfullscreen>\n </iframe>\n </div>\n \n\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] }); }
|
|
7190
7388
|
}
|
|
7191
7389
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IframeFieldsComponent, decorators: [{
|
|
7192
7390
|
type: Component,
|
|
7193
|
-
args: [{ selector: 'lib-iframe-fields', template: "<div class=\"custom-embed mb-4\"\
|
|
7391
|
+
args: [{ selector: 'lib-iframe-fields', template: "<div class=\"custom-embed mb-4\"\n [style.width]=\"width\"\n [style.height]=\"height\">\n\n <ng-container [ngSwitch]=\"contentType\">\n\n <!-- HTML, CSS, and Script rendered together -->\n <iframe\n *ngSwitchCase=\"'HTML'\"\n #iframeRef\n sandbox=\"allow-scripts allow-same-origin\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n frameborder=\"0\"\n ></iframe>\n\n <!-- Link Embed -->\n <div *ngSwitchCase=\"'LINK'\">\n <iframe\n *ngIf=\"safeUrl\"\n [src]=\"safeUrl\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n frameborder=\"0\"\n allowfullscreen>\n </iframe>\n </div>\n \n\n </ng-container>\n</div>\n" }]
|
|
7194
7392
|
}], ctorParameters: function () { return [{ type: i1$2.DomSanitizer }]; }, propDecorators: { question: [{
|
|
7195
7393
|
type: Input
|
|
7196
7394
|
}], iframeRef: [{
|
|
@@ -7298,11 +7496,11 @@ class QuestionComponent {
|
|
|
7298
7496
|
this.cdr.detectChanges();
|
|
7299
7497
|
}
|
|
7300
7498
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuestionComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7301
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: QuestionComponent, selector: "lib-question", inputs: { question: "question", edit: "edit", acceptedLanguage: "acceptedLanguage", currentPageIndex: "currentPageIndex" }, outputs: { emitValidations: "emitValidations", subFormChange: "subFormChange" }, ngImport: i0, template: "<div [ngSwitch]=\"question.formElement.elementType\">\
|
|
7499
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: QuestionComponent, selector: "lib-question", inputs: { question: "question", edit: "edit", acceptedLanguage: "acceptedLanguage", currentPageIndex: "currentPageIndex" }, outputs: { emitValidations: "emitValidations", subFormChange: "subFormChange" }, ngImport: i0, template: "<div [ngSwitch]=\"question.formElement.elementType\">\n\n <lib-check-box-fields *ngSwitchCase=\"'CHECK_BOX'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-check-box-fields>\n <lib-date-time-fields *ngSwitchCase=\"'DATE_TIME'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-date-time-fields>\n <lib-drop-down-fields *ngSwitchCase=\"'DROP_DOWN'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-drop-down-fields>\n <lib-file-picker-fields *ngSwitchCase=\"'FILE_PICKER'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-file-picker-fields>\n <lib-location-fields *ngSwitchCase=\"'LOCATION'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-location-fields>\n <lib-mail-fields *ngSwitchCase=\"'EMAIL'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-mail-fields>\n <lib-mobile-fields *ngSwitchCase=\"'MOBILE'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-mobile-fields>\n <lib-number-fields *ngSwitchCase=\"'NUMBER'\" [question]=\"question\" (validate)=\"handleValidation($event)\" [rowId]=\"'0'\"></lib-number-fields>\n <lib-password-fields *ngSwitchCase=\"'PASSWORD'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-password-fields>\n <lib-radio-button-fields *ngSwitchCase=\"'RADIO_BUTTON'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-radio-button-fields>\n <lib-rich-text-editor-fields *ngSwitchCase=\"'RICH_TEXT_EDITOR'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields *ngSwitchCase=\"'SELECTION_MATRIX'\" [question]=\"question\" [acceptedLanguage]=\"acceptedLanguage\" (validate)=\"handleValidation($event)\"></lib-selection-matrix-fields>\n <lib-signature-fields *ngSwitchCase=\"'SIGNATURE'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-signature-fields>\n <lib-slider-fields *ngSwitchCase=\"'SLIDER'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-slider-fields>\n <lib-terms-and-condition-fields *ngSwitchCase=\"'TERMS_AND_CONDITION'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-terms-and-condition-fields>\n <lib-text-area-fields *ngSwitchCase=\"'TEXT_AREA'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-text-area-fields>\n <lib-text-fields *ngSwitchCase=\"'TEXT_BOX'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-text-fields>\n <lib-toggle-switch-fields *ngSwitchCase=\"'TOGGLE_SWITCH'\" [question]=\"question\" [acceptedLanguage]=\"acceptedLanguage\" (validate)=\"handleValidation($event)\"></lib-toggle-switch-fields>\n <lib-url-fields *ngSwitchCase=\"'URL'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-url-fields>\n <lib-aggregate-function *ngSwitchCase=\"'AGGREGATE_FUNCTION'\" [question]=\"question\" (validate)=\"handleValidation($event)\" [rowId]=\"'0'\"></lib-aggregate-function>\n <lib-currency-fields *ngSwitchCase=\"'CURRENCY'\" [question]=\"question\" (validate)=\"handleValidation($event)\" [rowId]=\"'0'\"></lib-currency-fields>\n <lib-hidden-field *ngSwitchCase=\"'HIDDEN_FIELD'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-hidden-field>\n <lib-iframe-fields *ngSwitchCase=\"'IFRAME_WIDGET'\" [question]=\"question\" ></lib-iframe-fields>\n</div>\n\n<ng-container *ngIf=\"question.childLogics\">\n\n <!-- <ng-container *ngIf=\"componentToLoad\">\n <ng-container *ngComponentOutlet=\"componentToLoad;\n inputs: { grid: question.childLogics,\n answer: question.answer,\n state: 'child' }\"></ng-container>\n </ng-container> -->\n\n <!-- <ng-container *ngIf=\"getComponentForChildLogics(question.childLogics, 'child', question.answer) as cached\">\n <ng-container\n *ngComponentOutlet=\"cached.component | async; injector: cached.injector\">\n </ng-container>\n </ng-container> -->\n\n\n <ng-container *ngIf=\"componentToLoad\">\n\n <ng-container *ngComponentOutlet=\"componentToLoad;\n inputs: { grid: question.childLogics,\n answer: question?.answer,\n state: 'child' }\"></ng-container>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: ["question", "inLine"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "component", type: IframeFieldsComponent, selector: "lib-iframe-fields", inputs: ["question"] }] }); }
|
|
7302
7500
|
}
|
|
7303
7501
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuestionComponent, decorators: [{
|
|
7304
7502
|
type: Component,
|
|
7305
|
-
args: [{ selector: 'lib-question', template: "<div [ngSwitch]=\"question.formElement.elementType\">\
|
|
7503
|
+
args: [{ selector: 'lib-question', template: "<div [ngSwitch]=\"question.formElement.elementType\">\n\n <lib-check-box-fields *ngSwitchCase=\"'CHECK_BOX'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-check-box-fields>\n <lib-date-time-fields *ngSwitchCase=\"'DATE_TIME'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-date-time-fields>\n <lib-drop-down-fields *ngSwitchCase=\"'DROP_DOWN'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-drop-down-fields>\n <lib-file-picker-fields *ngSwitchCase=\"'FILE_PICKER'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-file-picker-fields>\n <lib-location-fields *ngSwitchCase=\"'LOCATION'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-location-fields>\n <lib-mail-fields *ngSwitchCase=\"'EMAIL'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-mail-fields>\n <lib-mobile-fields *ngSwitchCase=\"'MOBILE'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-mobile-fields>\n <lib-number-fields *ngSwitchCase=\"'NUMBER'\" [question]=\"question\" (validate)=\"handleValidation($event)\" [rowId]=\"'0'\"></lib-number-fields>\n <lib-password-fields *ngSwitchCase=\"'PASSWORD'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-password-fields>\n <lib-radio-button-fields *ngSwitchCase=\"'RADIO_BUTTON'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-radio-button-fields>\n <lib-rich-text-editor-fields *ngSwitchCase=\"'RICH_TEXT_EDITOR'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields *ngSwitchCase=\"'SELECTION_MATRIX'\" [question]=\"question\" [acceptedLanguage]=\"acceptedLanguage\" (validate)=\"handleValidation($event)\"></lib-selection-matrix-fields>\n <lib-signature-fields *ngSwitchCase=\"'SIGNATURE'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-signature-fields>\n <lib-slider-fields *ngSwitchCase=\"'SLIDER'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-slider-fields>\n <lib-terms-and-condition-fields *ngSwitchCase=\"'TERMS_AND_CONDITION'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-terms-and-condition-fields>\n <lib-text-area-fields *ngSwitchCase=\"'TEXT_AREA'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-text-area-fields>\n <lib-text-fields *ngSwitchCase=\"'TEXT_BOX'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-text-fields>\n <lib-toggle-switch-fields *ngSwitchCase=\"'TOGGLE_SWITCH'\" [question]=\"question\" [acceptedLanguage]=\"acceptedLanguage\" (validate)=\"handleValidation($event)\"></lib-toggle-switch-fields>\n <lib-url-fields *ngSwitchCase=\"'URL'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-url-fields>\n <lib-aggregate-function *ngSwitchCase=\"'AGGREGATE_FUNCTION'\" [question]=\"question\" (validate)=\"handleValidation($event)\" [rowId]=\"'0'\"></lib-aggregate-function>\n <lib-currency-fields *ngSwitchCase=\"'CURRENCY'\" [question]=\"question\" (validate)=\"handleValidation($event)\" [rowId]=\"'0'\"></lib-currency-fields>\n <lib-hidden-field *ngSwitchCase=\"'HIDDEN_FIELD'\" [question]=\"question\" (validate)=\"handleValidation($event)\"></lib-hidden-field>\n <lib-iframe-fields *ngSwitchCase=\"'IFRAME_WIDGET'\" [question]=\"question\" ></lib-iframe-fields>\n</div>\n\n<ng-container *ngIf=\"question.childLogics\">\n\n <!-- <ng-container *ngIf=\"componentToLoad\">\n <ng-container *ngComponentOutlet=\"componentToLoad;\n inputs: { grid: question.childLogics,\n answer: question.answer,\n state: 'child' }\"></ng-container>\n </ng-container> -->\n\n <!-- <ng-container *ngIf=\"getComponentForChildLogics(question.childLogics, 'child', question.answer) as cached\">\n <ng-container\n *ngComponentOutlet=\"cached.component | async; injector: cached.injector\">\n </ng-container>\n </ng-container> -->\n\n\n <ng-container *ngIf=\"componentToLoad\">\n\n <ng-container *ngComponentOutlet=\"componentToLoad;\n inputs: { grid: question.childLogics,\n answer: question?.answer,\n state: 'child' }\"></ng-container>\n </ng-container>\n</ng-container>\n" }]
|
|
7306
7504
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { question: [{
|
|
7307
7505
|
type: Input
|
|
7308
7506
|
}], edit: [{
|
|
@@ -7330,11 +7528,11 @@ class ConfirmDialogComponent {
|
|
|
7330
7528
|
this.dialogRef.close();
|
|
7331
7529
|
}
|
|
7332
7530
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$3.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7333
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfirmDialogComponent, selector: "lib-confirm-dialog", ngImport: i0, template: "<div class=\"\" id=\"checkdeleteModal\" tabindex=\"-1\">\
|
|
7531
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfirmDialogComponent, selector: "lib-confirm-dialog", ngImport: i0, template: "<div class=\"\" id=\"checkdeleteModal\" tabindex=\"-1\">\n <div class=\"modal-dialog\">\n <div class=\"modal-content\">\n <div class=\"modalHeader\">\n <div class=\"title-div\">\n </div>\n <div class=\"header-btn\">\n <img (click)=\"closeModal()\" src=\"/assets/icons/close-sidebar-mark-icon.svg\" alt=\"Close Sidebar Icon\"> \n </div>\n </div>\n <div class=\"modalBody\">\n <div class=\"row text-center\">\n <img class=\"delete-icon\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\"> \n <p class=\"delete-confirm\">{{messageHeader}}</p>\n <p class=\"delete-dialog\">{{message}}</p>\n </div>\n </div>\n <div class=\"modalFooter\">\n <div class=\"footer-btn \">\n <button type=\"button\" class=\"delete-btn\"\n (click)=\"dialogRef.close(true)\"\n >Yes</button>\n <button class=\"cancel-btn\"\n (click)=\"dialogRef.close(false)\"\n type=\"button\">\n No\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".modalHeader{width:100%;display:flex;flex-direction:row}.modalHeader .title-div{width:90%;display:flex;justify-content:center;margin-top:5%}.modalHeader .title-div .title{width:105px;height:24px;font-style:normal;font-weight:600;font-size:24px;font-weight:550;line-height:24px;text-align:center;color:#1d252d;letter-spacing:.5px}.modalHeader .header-btn{width:10%;margin-top:4%}.modalHeader .header-btn img{width:2em;cursor:pointer}.modalBody{padding:4%}.appearanceInput{box-sizing:border-box;width:100%;left:1043px;top:346px;background:#fff;border:1px solid #D8D8D8;box-shadow:0 4px 4px -5px #00000040;border-radius:6px;margin-bottom:3%;padding:3%}.hintModalFooter{margin:5%;display:flex;justify-content:flex-end}.hintModalFooter .footer-btn button{width:102px;height:46px;border-radius:23px;background:#084fff;color:#fff;border:0}.modalFooter .footer-btn{margin-bottom:11%;display:flex;justify-content:center}.modalFooter .footer-btn .delete-btn{width:102px;height:46px;border-radius:23px;background:#084fff;color:#fff;border:0;margin-left:2%;font-size:14px;font-weight:500}.modalFooter .footer-btn .cancel-btn{width:102px;height:46px;border-radius:23px;background:#8e9aa0;color:#fff;border:0;margin-left:2%;font-size:14px;font-weight:500}.modal-dialog{top:30%}.delete-confirm{font-size:24px;font-weight:500;margin-top:2%}.delete-dialog{font-size:15px;font-weight:400;color:#8e9aa0;margin-top:2%}.delete-icon{width:70px;margin:0 auto}\n"] }); }
|
|
7334
7532
|
}
|
|
7335
7533
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
|
|
7336
7534
|
type: Component,
|
|
7337
|
-
args: [{ selector: 'lib-confirm-dialog', template: "<div class=\"\" id=\"checkdeleteModal\" tabindex=\"-1\">\
|
|
7535
|
+
args: [{ selector: 'lib-confirm-dialog', template: "<div class=\"\" id=\"checkdeleteModal\" tabindex=\"-1\">\n <div class=\"modal-dialog\">\n <div class=\"modal-content\">\n <div class=\"modalHeader\">\n <div class=\"title-div\">\n </div>\n <div class=\"header-btn\">\n <img (click)=\"closeModal()\" src=\"/assets/icons/close-sidebar-mark-icon.svg\" alt=\"Close Sidebar Icon\"> \n </div>\n </div>\n <div class=\"modalBody\">\n <div class=\"row text-center\">\n <img class=\"delete-icon\" src=\"/assets/icons/delete-no-outline-icon.svg\" alt=\"Delete Icon\"> \n <p class=\"delete-confirm\">{{messageHeader}}</p>\n <p class=\"delete-dialog\">{{message}}</p>\n </div>\n </div>\n <div class=\"modalFooter\">\n <div class=\"footer-btn \">\n <button type=\"button\" class=\"delete-btn\"\n (click)=\"dialogRef.close(true)\"\n >Yes</button>\n <button class=\"cancel-btn\"\n (click)=\"dialogRef.close(false)\"\n type=\"button\">\n No\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".modalHeader{width:100%;display:flex;flex-direction:row}.modalHeader .title-div{width:90%;display:flex;justify-content:center;margin-top:5%}.modalHeader .title-div .title{width:105px;height:24px;font-style:normal;font-weight:600;font-size:24px;font-weight:550;line-height:24px;text-align:center;color:#1d252d;letter-spacing:.5px}.modalHeader .header-btn{width:10%;margin-top:4%}.modalHeader .header-btn img{width:2em;cursor:pointer}.modalBody{padding:4%}.appearanceInput{box-sizing:border-box;width:100%;left:1043px;top:346px;background:#fff;border:1px solid #D8D8D8;box-shadow:0 4px 4px -5px #00000040;border-radius:6px;margin-bottom:3%;padding:3%}.hintModalFooter{margin:5%;display:flex;justify-content:flex-end}.hintModalFooter .footer-btn button{width:102px;height:46px;border-radius:23px;background:#084fff;color:#fff;border:0}.modalFooter .footer-btn{margin-bottom:11%;display:flex;justify-content:center}.modalFooter .footer-btn .delete-btn{width:102px;height:46px;border-radius:23px;background:#084fff;color:#fff;border:0;margin-left:2%;font-size:14px;font-weight:500}.modalFooter .footer-btn .cancel-btn{width:102px;height:46px;border-radius:23px;background:#8e9aa0;color:#fff;border:0;margin-left:2%;font-size:14px;font-weight:500}.modal-dialog{top:30%}.delete-confirm{font-size:24px;font-weight:500;margin-top:2%}.delete-dialog{font-size:15px;font-weight:400;color:#8e9aa0;margin-top:2%}.delete-icon{width:70px;margin:0 auto}\n"] }]
|
|
7338
7536
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
7339
7537
|
type: Inject,
|
|
7340
7538
|
args: [MAT_DIALOG_DATA]
|
|
@@ -7552,11 +7750,11 @@ class SubmissionModalComponent {
|
|
|
7552
7750
|
}
|
|
7553
7751
|
}
|
|
7554
7752
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmissionModalComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: ValidationService }, { token: i1$3.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7555
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SubmissionModalComponent, selector: "lib-submission-modal", ngImport: i0, template: "<div class=\"mb-5\">\r\n <div class=\"modalHeader mb-4\">\r\n <div class=\"title-div\">\r\n <p class=\"title\">{{subForm.title}}</p>\r\n </div>\r\n <div class=\"header-btn\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" (click)=\"closeModal()\">\r\n <path d=\"M8 8L16 16\" stroke=\"#1D252D\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M16 8L8 16\" stroke=\"#1D252D\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"px-3\" *ngFor=\"let row of subForm.rows\">\r\n <ng-container *ngFor=\"let formElement of row.grid\">\r\n <div *ngIf=\"formElement.entityType === 'QUESTION'\">\r\n <lib-check-box-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'CHECK_BOX'\"\r\n [question]=\"formElement.element\"\r\n ></lib-check-box-fields>\r\n <lib-date-time-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'DATE_TIME'\"\r\n [question]=\"formElement.element\"\r\n ></lib-date-time-fields>\r\n <lib-drop-down-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'DROP_DOWN'\"\r\n [question]=\"formElement.element\"\r\n ></lib-drop-down-fields>\r\n <lib-file-picker-fields\r\n *ngIf=\"\r\n formElement.element.formElement.elementType === 'FILE_PICKER'\r\n \"\r\n [question]=\"formElement.element\"\r\n ></lib-file-picker-fields>\r\n <lib-location-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'LOCATION'\"\r\n [question]=\"formElement.element\"\r\n ></lib-location-fields>\r\n\r\n <lib-mail-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'EMAIL'\"\r\n [question]=\"formElement.element\"\r\n >\r\n </lib-mail-fields>\r\n <lib-mobile-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'MOBILE'\"\r\n [question]=\"formElement.element\"\r\n >\r\n </lib-mobile-fields>\r\n <lib-number-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'NUMBER'\"\r\n [question]=\"formElement.element\"\r\n [rowId]=\"'0'\"\r\n >\r\n </lib-number-fields>\r\n <lib-password-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'PASSWORD'\"\r\n [question]=\"formElement.element\"\r\n >\r\n </lib-password-fields>\r\n <lib-radio-button-fields\r\n *ngIf=\"\r\n formElement.element.formElement.elementType === 'RADIO_BUTTON'\r\n \"\r\n [question]=\"formElement.element\"\r\n ></lib-radio-button-fields>\r\n <lib-rich-text-editor-fields\r\n *ngIf=\"\r\n formElement.element.formElement.elementType === 'RICH_TEXT_EDITOR'\r\n \"\r\n [question]=\"formElement.element\"\r\n ></lib-rich-text-editor-fields>\r\n <lib-selection-matrix-fields\r\n *ngIf=\"\r\n formElement.element.formElement.elementType === 'SELECTION_MATRIX'\r\n \"\r\n [question]=\"formElement.element\"\r\n [acceptedLanguage] = \"acceptedLanguage\"\r\n ></lib-selection-matrix-fields>\r\n <lib-signature-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'SIGNATURE'\"\r\n [question]=\"formElement.element\"\r\n ></lib-signature-fields>\r\n <lib-slider-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'SLIDER'\"\r\n [question]=\"formElement.element\"\r\n ></lib-slider-fields>\r\n <lib-terms-and-condition-fields\r\n *ngIf=\"\r\n formElement.element.formElement.elementType ===\r\n 'TERMS_AND_CONDITION'\r\n \"\r\n [question]=\"formElement.element\"\r\n ></lib-terms-and-condition-fields>\r\n <lib-text-area-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'TEXT_AREA'\"\r\n [question]=\"formElement.element\"\r\n ></lib-text-area-fields>\r\n <lib-text-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'TEXT_BOX'\"\r\n [question]=\"formElement.element\"\r\n ></lib-text-fields>\r\n <lib-toggle-switch-fields\r\n *ngIf=\"\r\n formElement.element.formElement.elementType === 'TOGGLE_SWITCH'\r\n \"\r\n [question]=\"formElement.element\"\r\n [acceptedLanguage] = \"acceptedLanguage\"\r\n ></lib-toggle-switch-fields>\r\n <lib-url-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'URL'\"\r\n [question]=\"formElement.element\"\r\n ></lib-url-fields>\r\n <lib-currency-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'CURRENCY'\"\r\n [question]=\"formElement.element\"\r\n ></lib-currency-fields>\r\n <lib-hidden-field\r\n *ngIf=\"formElement.element.formElement.elementType === 'HIDDEN_FIELD'\"\r\n [question]=\"formElement.element\"\r\n ></lib-hidden-field>\r\n <lib-iframe-fields\r\n *ngIf=\"formElement.element.formElement.elementType === 'IFRAME_WIDGET'\"\r\n [question]=\"formElement.element\"\r\n ></lib-iframe-fields>\r\n <lib-aggregate-function\r\n *ngIf=\"formElement.element.formElement.elementType === 'AGGREGATE_FUNCTION'\"\r\n [question]=\"formElement.element\"\r\n [rowId]=\"'0'\"\r\n ></lib-aggregate-function>\r\n <ng-container *ngIf=\"formElement?.element?.childLogics\">\r\n\r\n <ng-container *ngIf=\"componentToLoad\">\r\n\r\n <ng-container *ngComponentOutlet=\"componentToLoad;\r\n inputs: { grid: formElement?.element?.childLogics,\r\n answer: formElement?.element?.answer,\r\n state: 'child' }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"formElement.entityType === 'SECTION'\">\r\n <lib-section-fields\r\n [section]=\"formElement.element\"\r\n ></lib-section-fields>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n\r\n <div class=\"okBtn me-4 ms-4\">\r\n <button\r\n class=\"submitBtn ms-md-3 me-md-2 rounded-pill\"\r\n type=\"button\"\r\n (click)=\"saveSubmission()\">\r\n Ok\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".modalHeader{width:100%;display:flex;flex-direction:row}.modalHeader .title-div{width:90%;display:flex;justify-content:center;margin-top:5%}.modalHeader .title-div .title{height:24px;font-style:normal;font-weight:600;font-size:24px;font-weight:550;line-height:24px;text-align:center;color:#1d252d;letter-spacing:.5px}.modalHeader .header-btn{width:10%;margin-top:4%;display:flex;justify-content:center}.modalHeader .header-btn svg{font-size:20px;cursor:pointer}.submitBtn{background:#084fff;color:#fff;border:none;padding:10px 27px;width:auto}.okBtn{display:flex;justify-content:flex-end;margin-left:auto;margin-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: ["question", "inLine"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SectionFieldsComponent, selector: "lib-section-fields", inputs: ["section"] }, { kind: "component", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "component", type: IframeFieldsComponent, selector: "lib-iframe-fields", inputs: ["question"] }] }); }
|
|
7753
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SubmissionModalComponent, selector: "lib-submission-modal", ngImport: i0, template: "<div class=\"mb-5\">\n <div class=\"modalHeader mb-4\">\n <div class=\"title-div\">\n <p class=\"title\">{{subForm.title}}</p>\n </div>\n <div class=\"header-btn\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" (click)=\"closeModal()\">\n <path d=\"M8 8L16 16\" stroke=\"#1D252D\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M16 8L8 16\" stroke=\"#1D252D\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n </div>\n\n <div class=\"px-3\" *ngFor=\"let row of subForm.rows\">\n <ng-container *ngFor=\"let formElement of row.grid\">\n <div *ngIf=\"formElement.entityType === 'QUESTION'\">\n <lib-check-box-fields\n *ngIf=\"formElement.element.formElement.elementType === 'CHECK_BOX'\"\n [question]=\"formElement.element\"\n ></lib-check-box-fields>\n <lib-date-time-fields\n *ngIf=\"formElement.element.formElement.elementType === 'DATE_TIME'\"\n [question]=\"formElement.element\"\n ></lib-date-time-fields>\n <lib-drop-down-fields\n *ngIf=\"formElement.element.formElement.elementType === 'DROP_DOWN'\"\n [question]=\"formElement.element\"\n ></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'FILE_PICKER'\n \"\n [question]=\"formElement.element\"\n ></lib-file-picker-fields>\n <lib-location-fields\n *ngIf=\"formElement.element.formElement.elementType === 'LOCATION'\"\n [question]=\"formElement.element\"\n ></lib-location-fields>\n\n <lib-mail-fields\n *ngIf=\"formElement.element.formElement.elementType === 'EMAIL'\"\n [question]=\"formElement.element\"\n >\n </lib-mail-fields>\n <lib-mobile-fields\n *ngIf=\"formElement.element.formElement.elementType === 'MOBILE'\"\n [question]=\"formElement.element\"\n >\n </lib-mobile-fields>\n <lib-number-fields\n *ngIf=\"formElement.element.formElement.elementType === 'NUMBER'\"\n [question]=\"formElement.element\"\n [rowId]=\"'0'\"\n >\n </lib-number-fields>\n <lib-password-fields\n *ngIf=\"formElement.element.formElement.elementType === 'PASSWORD'\"\n [question]=\"formElement.element\"\n >\n </lib-password-fields>\n <lib-radio-button-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'RADIO_BUTTON'\n \"\n [question]=\"formElement.element\"\n ></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'RICH_TEXT_EDITOR'\n \"\n [question]=\"formElement.element\"\n ></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'SELECTION_MATRIX'\n \"\n [question]=\"formElement.element\"\n [acceptedLanguage] = \"acceptedLanguage\"\n ></lib-selection-matrix-fields>\n <lib-signature-fields\n *ngIf=\"formElement.element.formElement.elementType === 'SIGNATURE'\"\n [question]=\"formElement.element\"\n ></lib-signature-fields>\n <lib-slider-fields\n *ngIf=\"formElement.element.formElement.elementType === 'SLIDER'\"\n [question]=\"formElement.element\"\n ></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngIf=\"\n formElement.element.formElement.elementType ===\n 'TERMS_AND_CONDITION'\n \"\n [question]=\"formElement.element\"\n ></lib-terms-and-condition-fields>\n <lib-text-area-fields\n *ngIf=\"formElement.element.formElement.elementType === 'TEXT_AREA'\"\n [question]=\"formElement.element\"\n ></lib-text-area-fields>\n <lib-text-fields\n *ngIf=\"formElement.element.formElement.elementType === 'TEXT_BOX'\"\n [question]=\"formElement.element\"\n ></lib-text-fields>\n <lib-toggle-switch-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'TOGGLE_SWITCH'\n \"\n [question]=\"formElement.element\"\n [acceptedLanguage] = \"acceptedLanguage\"\n ></lib-toggle-switch-fields>\n <lib-url-fields\n *ngIf=\"formElement.element.formElement.elementType === 'URL'\"\n [question]=\"formElement.element\"\n ></lib-url-fields>\n <lib-currency-fields\n *ngIf=\"formElement.element.formElement.elementType === 'CURRENCY'\"\n [question]=\"formElement.element\"\n ></lib-currency-fields>\n <lib-hidden-field\n *ngIf=\"formElement.element.formElement.elementType === 'HIDDEN_FIELD'\"\n [question]=\"formElement.element\"\n ></lib-hidden-field>\n <lib-iframe-fields\n *ngIf=\"formElement.element.formElement.elementType === 'IFRAME_WIDGET'\"\n [question]=\"formElement.element\"\n ></lib-iframe-fields>\n <lib-aggregate-function\n *ngIf=\"formElement.element.formElement.elementType === 'AGGREGATE_FUNCTION'\"\n [question]=\"formElement.element\"\n [rowId]=\"'0'\"\n ></lib-aggregate-function>\n <ng-container *ngIf=\"formElement?.element?.childLogics\">\n\n <ng-container *ngIf=\"componentToLoad\">\n\n <ng-container *ngComponentOutlet=\"componentToLoad;\n inputs: { grid: formElement?.element?.childLogics,\n answer: formElement?.element?.answer,\n state: 'child' }\"></ng-container>\n </ng-container>\n </ng-container>\n\n </div>\n <div *ngIf=\"formElement.entityType === 'SECTION'\">\n <lib-section-fields\n [section]=\"formElement.element\"\n ></lib-section-fields>\n </div>\n </ng-container>\n\n </div>\n\n <div class=\"okBtn me-4 ms-4\">\n <button\n class=\"submitBtn ms-md-3 me-md-2 rounded-pill\"\n type=\"button\"\n (click)=\"saveSubmission()\">\n Ok\n </button>\n </div>\n</div>\n", styles: [".modalHeader{width:100%;display:flex;flex-direction:row}.modalHeader .title-div{width:90%;display:flex;justify-content:center;margin-top:5%}.modalHeader .title-div .title{height:24px;font-style:normal;font-weight:600;font-size:24px;font-weight:550;line-height:24px;text-align:center;color:#1d252d;letter-spacing:.5px}.modalHeader .header-btn{width:10%;margin-top:4%;display:flex;justify-content:center}.modalHeader .header-btn svg{font-size:20px;cursor:pointer}.submitBtn{background:#084fff;color:#fff;border:none;padding:10px 27px;width:auto}.okBtn{display:flex;justify-content:flex-end;margin-left:auto;margin-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: ["question", "inLine"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SectionFieldsComponent, selector: "lib-section-fields", inputs: ["section"] }, { kind: "component", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "component", type: IframeFieldsComponent, selector: "lib-iframe-fields", inputs: ["question"] }] }); }
|
|
7556
7754
|
}
|
|
7557
7755
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmissionModalComponent, decorators: [{
|
|
7558
7756
|
type: Component,
|
|
7559
|
-
args: [{ selector: 'lib-submission-modal', template: "<div class=\"mb-5\">\
|
|
7757
|
+
args: [{ selector: 'lib-submission-modal', template: "<div class=\"mb-5\">\n <div class=\"modalHeader mb-4\">\n <div class=\"title-div\">\n <p class=\"title\">{{subForm.title}}</p>\n </div>\n <div class=\"header-btn\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" (click)=\"closeModal()\">\n <path d=\"M8 8L16 16\" stroke=\"#1D252D\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M16 8L8 16\" stroke=\"#1D252D\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n </div>\n\n <div class=\"px-3\" *ngFor=\"let row of subForm.rows\">\n <ng-container *ngFor=\"let formElement of row.grid\">\n <div *ngIf=\"formElement.entityType === 'QUESTION'\">\n <lib-check-box-fields\n *ngIf=\"formElement.element.formElement.elementType === 'CHECK_BOX'\"\n [question]=\"formElement.element\"\n ></lib-check-box-fields>\n <lib-date-time-fields\n *ngIf=\"formElement.element.formElement.elementType === 'DATE_TIME'\"\n [question]=\"formElement.element\"\n ></lib-date-time-fields>\n <lib-drop-down-fields\n *ngIf=\"formElement.element.formElement.elementType === 'DROP_DOWN'\"\n [question]=\"formElement.element\"\n ></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'FILE_PICKER'\n \"\n [question]=\"formElement.element\"\n ></lib-file-picker-fields>\n <lib-location-fields\n *ngIf=\"formElement.element.formElement.elementType === 'LOCATION'\"\n [question]=\"formElement.element\"\n ></lib-location-fields>\n\n <lib-mail-fields\n *ngIf=\"formElement.element.formElement.elementType === 'EMAIL'\"\n [question]=\"formElement.element\"\n >\n </lib-mail-fields>\n <lib-mobile-fields\n *ngIf=\"formElement.element.formElement.elementType === 'MOBILE'\"\n [question]=\"formElement.element\"\n >\n </lib-mobile-fields>\n <lib-number-fields\n *ngIf=\"formElement.element.formElement.elementType === 'NUMBER'\"\n [question]=\"formElement.element\"\n [rowId]=\"'0'\"\n >\n </lib-number-fields>\n <lib-password-fields\n *ngIf=\"formElement.element.formElement.elementType === 'PASSWORD'\"\n [question]=\"formElement.element\"\n >\n </lib-password-fields>\n <lib-radio-button-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'RADIO_BUTTON'\n \"\n [question]=\"formElement.element\"\n ></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'RICH_TEXT_EDITOR'\n \"\n [question]=\"formElement.element\"\n ></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'SELECTION_MATRIX'\n \"\n [question]=\"formElement.element\"\n [acceptedLanguage] = \"acceptedLanguage\"\n ></lib-selection-matrix-fields>\n <lib-signature-fields\n *ngIf=\"formElement.element.formElement.elementType === 'SIGNATURE'\"\n [question]=\"formElement.element\"\n ></lib-signature-fields>\n <lib-slider-fields\n *ngIf=\"formElement.element.formElement.elementType === 'SLIDER'\"\n [question]=\"formElement.element\"\n ></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngIf=\"\n formElement.element.formElement.elementType ===\n 'TERMS_AND_CONDITION'\n \"\n [question]=\"formElement.element\"\n ></lib-terms-and-condition-fields>\n <lib-text-area-fields\n *ngIf=\"formElement.element.formElement.elementType === 'TEXT_AREA'\"\n [question]=\"formElement.element\"\n ></lib-text-area-fields>\n <lib-text-fields\n *ngIf=\"formElement.element.formElement.elementType === 'TEXT_BOX'\"\n [question]=\"formElement.element\"\n ></lib-text-fields>\n <lib-toggle-switch-fields\n *ngIf=\"\n formElement.element.formElement.elementType === 'TOGGLE_SWITCH'\n \"\n [question]=\"formElement.element\"\n [acceptedLanguage] = \"acceptedLanguage\"\n ></lib-toggle-switch-fields>\n <lib-url-fields\n *ngIf=\"formElement.element.formElement.elementType === 'URL'\"\n [question]=\"formElement.element\"\n ></lib-url-fields>\n <lib-currency-fields\n *ngIf=\"formElement.element.formElement.elementType === 'CURRENCY'\"\n [question]=\"formElement.element\"\n ></lib-currency-fields>\n <lib-hidden-field\n *ngIf=\"formElement.element.formElement.elementType === 'HIDDEN_FIELD'\"\n [question]=\"formElement.element\"\n ></lib-hidden-field>\n <lib-iframe-fields\n *ngIf=\"formElement.element.formElement.elementType === 'IFRAME_WIDGET'\"\n [question]=\"formElement.element\"\n ></lib-iframe-fields>\n <lib-aggregate-function\n *ngIf=\"formElement.element.formElement.elementType === 'AGGREGATE_FUNCTION'\"\n [question]=\"formElement.element\"\n [rowId]=\"'0'\"\n ></lib-aggregate-function>\n <ng-container *ngIf=\"formElement?.element?.childLogics\">\n\n <ng-container *ngIf=\"componentToLoad\">\n\n <ng-container *ngComponentOutlet=\"componentToLoad;\n inputs: { grid: formElement?.element?.childLogics,\n answer: formElement?.element?.answer,\n state: 'child' }\"></ng-container>\n </ng-container>\n </ng-container>\n\n </div>\n <div *ngIf=\"formElement.entityType === 'SECTION'\">\n <lib-section-fields\n [section]=\"formElement.element\"\n ></lib-section-fields>\n </div>\n </ng-container>\n\n </div>\n\n <div class=\"okBtn me-4 ms-4\">\n <button\n class=\"submitBtn ms-md-3 me-md-2 rounded-pill\"\n type=\"button\"\n (click)=\"saveSubmission()\">\n Ok\n </button>\n </div>\n</div>\n", styles: [".modalHeader{width:100%;display:flex;flex-direction:row}.modalHeader .title-div{width:90%;display:flex;justify-content:center;margin-top:5%}.modalHeader .title-div .title{height:24px;font-style:normal;font-weight:600;font-size:24px;font-weight:550;line-height:24px;text-align:center;color:#1d252d;letter-spacing:.5px}.modalHeader .header-btn{width:10%;margin-top:4%;display:flex;justify-content:center}.modalHeader .header-btn svg{font-size:20px;cursor:pointer}.submitBtn{background:#084fff;color:#fff;border:none;padding:10px 27px;width:auto}.okBtn{display:flex;justify-content:flex-end;margin-left:auto;margin-bottom:5px}\n"] }]
|
|
7560
7758
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
7561
7759
|
type: Inject,
|
|
7562
7760
|
args: [MAT_DIALOG_DATA]
|
|
@@ -7950,11 +8148,11 @@ class MultipleSubformComponent {
|
|
|
7950
8148
|
this.updateSubFormWithSubmissions();
|
|
7951
8149
|
}
|
|
7952
8150
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultipleSubformComponent, deps: [{ token: i1$3.MatDialog }, { token: i1$2.DomSanitizer }, { token: ScoreCalculationService }, { token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7953
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultipleSubformComponent, selector: "lib-multiple-subform", inputs: { subForm: "subForm", acceptedLanguage: "acceptedLanguage" }, outputs: { subFormChange: "subFormChange" }, ngImport: i0, template: "<div class=\"example-container\" tabindex=\"0\">\
|
|
8151
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultipleSubformComponent, selector: "lib-multiple-subform", inputs: { subForm: "subForm", acceptedLanguage: "acceptedLanguage" }, outputs: { subFormChange: "subFormChange" }, ngImport: i0, template: "<div class=\"example-container\" tabindex=\"0\">\n <div class=\"table-container\">\n <table mat-table [dataSource]=\"submissions\" class=\"mat-elevation-z8\">\n <ng-container *ngFor=\"let row of subForm.rows\">\n <ng-container\n *ngFor=\"let formElement of row.grid\"\n [matColumnDef]=\"formElement.element.question\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n class=\"border border-1 column-width\"\n >\n {{ formElement.element.question }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let submission\"\n class=\"border border-1\"\n [id]=\"'question-'+submission.submissionId\"\n [ngClass]=\"{\n hidden: getAnswerByQuestionId(submission, formElement)\n ?.isChild\n }\"\n >\n <div\n [innerHTML]=\"\n getAnswerByQuestionId(submission, formElement)\n ?.htmlContent\n \"\n ></div>\n </td>\n </ng-container>\n </ng-container>\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th mat-header-cell *matHeaderCellDef class=\"border border-1\">\n Actions\n </th>\n <td\n mat-cell\n *matCellDef=\"let submission; let i = index\"\n class=\"text-center border border-1\"\n >\n <div>\n <button\n class=\"btn\"\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n aria-label=\"Example icon-button with a menu\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n (click)=\"editSubFormSubmission(i, submission)\"\n >\n <svg\n width=\"29\"\n height=\"28\"\n viewBox=\"0 0 29 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"28\"\n height=\"26.4737\"\n rx=\"5.5\"\n fill=\"white\"\n stroke=\"#D8D8D8\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.0009 19.0787H9.1582V16.2361C9.1582 15.9447 9.2739 15.6653 9.47999 15.4593L16.2224 8.71686C16.4284 8.5105 16.708 8.39453 16.9995 8.39453C17.2911 8.39453 17.5707 8.5105 17.7767 8.71686L19.5201 10.4603C19.7264 10.6663 19.8424 10.9458 19.8424 11.2374C19.8424 11.529 19.7264 11.8086 19.5201 12.0145L12.7777 18.757C12.5715 18.9628 12.2922 19.0785 12.0009 19.0787Z\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15.1704 10.3984L17.8415 13.0695\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <button mat-menu-item (click)=\"deleteSubForm(i)\">\n <svg\n width=\"29\"\n height=\"28\"\n viewBox=\"0 0 29 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"27.6402\"\n height=\"26.1328\"\n rx=\"5.5\"\n fill=\"white\"\n stroke=\"#D8D8D8\"\n />\n <path\n d=\"M8.60449 9.20637H20.0354\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M19.2189 9.20703V17.7863C19.2189 18.6482 18.4881 19.3462 17.5859 19.3462H11.0539C10.1517 19.3462 9.4209 18.6482 9.4209 17.7863V9.20703\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M16.7696 6.67122H11.8706\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12.6871 12.3242V16.2239\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15.9532 12.3242V16.2239\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </mat-menu>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n </div>\n\n <div class=\"footer\">\n <div class=\"addNewBtn\" (click)=\"addNewSubmission()\">\n <svg\n width=\"15\"\n height=\"14\"\n viewBox=\"0 0 15 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.5556 13.2778H2.44444C1.64639 13.2778 1 12.6673 1 11.9136V2.3642C1 1.61048 1.64639 1 2.44444 1H12.5556C13.3536 1 14 1.61048 14 2.3642V11.9136C14 12.6673 13.3536 13.2778 12.5556 13.2778Z\"\n stroke=\"#D8D8D8\"\n stroke-width=\"0.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M5.3335 7.50347H9.66683\"\n stroke=\"#084FFF\"\n stroke-width=\"0.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7.50005 5.33594V9.66927\"\n stroke=\"#084FFF\"\n stroke-width=\"0.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <a class=\"ms-2 text-decoration-none\">{{addButtonLabel}}</a>\n </div>\n </div>\n</div>\n", styles: [".table-container{overflow-x:auto;width:100%}.table-container .mat-table-sticky{background:#fff;z-index:1}.footer{display:flex;justify-content:flex-end;align-items:center;cursor:pointer;margin-top:15px}.hidden{display:none}.dropdown-menu{position:relative;z-index:999}::-webkit-scrollbar{width:2px;height:8px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#dbd9d9;border-radius:6px}::ng-deep .mat-mdc-menu-panel{min-width:65px!important}table{border-collapse:separate!important}.column-width{min-width:300px;max-width:500px;white-space:nowrap}\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: "component", type: i6$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i6$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i7$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i7$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i8$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
7954
8152
|
}
|
|
7955
8153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultipleSubformComponent, decorators: [{
|
|
7956
8154
|
type: Component,
|
|
7957
|
-
args: [{ selector: 'lib-multiple-subform', template: "<div class=\"example-container\" tabindex=\"0\">\
|
|
8155
|
+
args: [{ selector: 'lib-multiple-subform', template: "<div class=\"example-container\" tabindex=\"0\">\n <div class=\"table-container\">\n <table mat-table [dataSource]=\"submissions\" class=\"mat-elevation-z8\">\n <ng-container *ngFor=\"let row of subForm.rows\">\n <ng-container\n *ngFor=\"let formElement of row.grid\"\n [matColumnDef]=\"formElement.element.question\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n class=\"border border-1 column-width\"\n >\n {{ formElement.element.question }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let submission\"\n class=\"border border-1\"\n [id]=\"'question-'+submission.submissionId\"\n [ngClass]=\"{\n hidden: getAnswerByQuestionId(submission, formElement)\n ?.isChild\n }\"\n >\n <div\n [innerHTML]=\"\n getAnswerByQuestionId(submission, formElement)\n ?.htmlContent\n \"\n ></div>\n </td>\n </ng-container>\n </ng-container>\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th mat-header-cell *matHeaderCellDef class=\"border border-1\">\n Actions\n </th>\n <td\n mat-cell\n *matCellDef=\"let submission; let i = index\"\n class=\"text-center border border-1\"\n >\n <div>\n <button\n class=\"btn\"\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n aria-label=\"Example icon-button with a menu\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n (click)=\"editSubFormSubmission(i, submission)\"\n >\n <svg\n width=\"29\"\n height=\"28\"\n viewBox=\"0 0 29 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"28\"\n height=\"26.4737\"\n rx=\"5.5\"\n fill=\"white\"\n stroke=\"#D8D8D8\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.0009 19.0787H9.1582V16.2361C9.1582 15.9447 9.2739 15.6653 9.47999 15.4593L16.2224 8.71686C16.4284 8.5105 16.708 8.39453 16.9995 8.39453C17.2911 8.39453 17.5707 8.5105 17.7767 8.71686L19.5201 10.4603C19.7264 10.6663 19.8424 10.9458 19.8424 11.2374C19.8424 11.529 19.7264 11.8086 19.5201 12.0145L12.7777 18.757C12.5715 18.9628 12.2922 19.0785 12.0009 19.0787Z\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15.1704 10.3984L17.8415 13.0695\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <button mat-menu-item (click)=\"deleteSubForm(i)\">\n <svg\n width=\"29\"\n height=\"28\"\n viewBox=\"0 0 29 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"27.6402\"\n height=\"26.1328\"\n rx=\"5.5\"\n fill=\"white\"\n stroke=\"#D8D8D8\"\n />\n <path\n d=\"M8.60449 9.20637H20.0354\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M19.2189 9.20703V17.7863C19.2189 18.6482 18.4881 19.3462 17.5859 19.3462H11.0539C10.1517 19.3462 9.4209 18.6482 9.4209 17.7863V9.20703\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M16.7696 6.67122H11.8706\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12.6871 12.3242V16.2239\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15.9532 12.3242V16.2239\"\n stroke=\"#084FFF\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </mat-menu>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n </div>\n\n <div class=\"footer\">\n <div class=\"addNewBtn\" (click)=\"addNewSubmission()\">\n <svg\n width=\"15\"\n height=\"14\"\n viewBox=\"0 0 15 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.5556 13.2778H2.44444C1.64639 13.2778 1 12.6673 1 11.9136V2.3642C1 1.61048 1.64639 1 2.44444 1H12.5556C13.3536 1 14 1.61048 14 2.3642V11.9136C14 12.6673 13.3536 13.2778 12.5556 13.2778Z\"\n stroke=\"#D8D8D8\"\n stroke-width=\"0.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M5.3335 7.50347H9.66683\"\n stroke=\"#084FFF\"\n stroke-width=\"0.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7.50005 5.33594V9.66927\"\n stroke=\"#084FFF\"\n stroke-width=\"0.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <a class=\"ms-2 text-decoration-none\">{{addButtonLabel}}</a>\n </div>\n </div>\n</div>\n", styles: [".table-container{overflow-x:auto;width:100%}.table-container .mat-table-sticky{background:#fff;z-index:1}.footer{display:flex;justify-content:flex-end;align-items:center;cursor:pointer;margin-top:15px}.hidden{display:none}.dropdown-menu{position:relative;z-index:999}::-webkit-scrollbar{width:2px;height:8px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#dbd9d9;border-radius:6px}::ng-deep .mat-mdc-menu-panel{min-width:65px!important}table{border-collapse:separate!important}.column-width{min-width:300px;max-width:500px;white-space:nowrap}\n"] }]
|
|
7958
8156
|
}], ctorParameters: function () { return [{ type: i1$3.MatDialog }, { type: i1$2.DomSanitizer }, { type: ScoreCalculationService }, { type: WhenClauseService }]; }, propDecorators: { subForm: [{
|
|
7959
8157
|
type: Input
|
|
7960
8158
|
}], subFormChange: [{
|
|
@@ -7964,10 +8162,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
7964
8162
|
}] } });
|
|
7965
8163
|
|
|
7966
8164
|
class InlineMultipleSubformComponent {
|
|
7967
|
-
constructor(scoreCalcService, dataService, whenClauseService) {
|
|
8165
|
+
constructor(scoreCalcService, dataService, whenClauseService, hiddenFieldService) {
|
|
7968
8166
|
this.scoreCalcService = scoreCalcService;
|
|
7969
8167
|
this.dataService = dataService;
|
|
7970
8168
|
this.whenClauseService = whenClauseService;
|
|
8169
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
7971
8170
|
this.subForm = {};
|
|
7972
8171
|
this.subFormChange = new EventEmitter();
|
|
7973
8172
|
this.acceptedLanguage = '';
|
|
@@ -7977,6 +8176,7 @@ class InlineMultipleSubformComponent {
|
|
|
7977
8176
|
this.addButtonLabel = 'Add New';
|
|
7978
8177
|
this.user = '';
|
|
7979
8178
|
this.editableQuestions = [];
|
|
8179
|
+
this.isEdit = this.hiddenFieldService.getEditMode();
|
|
7980
8180
|
this.dataService.header$.subscribe((data) => {
|
|
7981
8181
|
this.user = data.authUser;
|
|
7982
8182
|
});
|
|
@@ -7995,6 +8195,7 @@ class InlineMultipleSubformComponent {
|
|
|
7995
8195
|
}
|
|
7996
8196
|
this.initializeDisplayedColumns();
|
|
7997
8197
|
this.elementsWithWhenClause = this.whenClauseService.getWhenClauseElements(this.subForm);
|
|
8198
|
+
this.hiddenFieldService.extractSubformHiddenFields(this.subForm);
|
|
7998
8199
|
this.updateWhenClause();
|
|
7999
8200
|
if (this.subForm.submissionCopyConfig?.allowCopyFromOtherSubmissions) {
|
|
8000
8201
|
this.editableQuestions = this.subForm.submissionCopyConfig.editableQuestions || [];
|
|
@@ -8147,6 +8348,9 @@ class InlineMultipleSubformComponent {
|
|
|
8147
8348
|
return questionClone;
|
|
8148
8349
|
}
|
|
8149
8350
|
updateInlineAnswer(submission, question, newAnswerObject) {
|
|
8351
|
+
if (question.formElement.elementType != 'HIDDEN_FIELD' && this.isEdit) {
|
|
8352
|
+
submission = this.hiddenFieldService.updateSubformHiddenFieldsFromCache(this.subForm.id, submission, 'UPDATE');
|
|
8353
|
+
}
|
|
8150
8354
|
const newAnswer = newAnswerObject.answer;
|
|
8151
8355
|
const amountInWords = newAnswerObject?.amountInWords;
|
|
8152
8356
|
const currency = newAnswerObject?.currency;
|
|
@@ -8304,13 +8508,13 @@ class InlineMultipleSubformComponent {
|
|
|
8304
8508
|
}
|
|
8305
8509
|
}
|
|
8306
8510
|
}
|
|
8307
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InlineMultipleSubformComponent, deps: [{ token: ScoreCalculationService }, { token: DataService }, { token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8308
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InlineMultipleSubformComponent, selector: "lib-inline-multiple-subform", inputs: { subForm: "subForm", acceptedLanguage: "acceptedLanguage" }, outputs: { subFormChange: "subFormChange" }, ngImport: i0, template: "<div class=\"example-container\" tabindex=\"0\">\r\n <div class=\"table-container\">\r\n <table mat-table [dataSource]=\"submissions\" class=\"mat-elevation-z8\">\r\n <ng-container *ngFor=\"let row of subForm.rows\">\r\n <ng-container\r\n *ngFor=\"let formElement of row.grid\"\r\n [matColumnDef]=\"formElement.element.question\"\r\n >\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"border border-1 column-width\"\r\n >\r\n {{ formElement.element.question }}\r\n </th>\r\n <td\r\n mat-cell\r\n *matCellDef=\"let submission;let i=index\"\r\n class=\"border-cell column-width\"\r\n [id]=\"'question-'+submission.submissionId\"\r\n >\r\n <div *ngIf=\"formElement.entityType === 'QUESTION' && whenClauseService.checkElementVisibility(formElement.element.id,submission)\">\r\n <div [ngSwitch]=\"formElement.element.formElement.elementType\">\r\n <lib-check-box-fields\r\n *ngSwitchCase=\"'CHECK_BOX'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [rowId]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-check-box-fields>\r\n <lib-date-time-fields\r\n *ngSwitchCase=\"'DATE_TIME'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-date-time-fields>\r\n <lib-drop-down-fields\r\n *ngSwitchCase=\"'DROP_DOWN'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-drop-down-fields>\r\n <lib-file-picker-fields\r\n *ngSwitchCase=\"'FILE_PICKER'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n (inlineDeleteFiles)=\"\r\n updateDeletedFiles(submission, formElement.element, $event)\r\n \"\r\n ></lib-file-picker-fields>\r\n <lib-location-fields\r\n *ngSwitchCase=\"'LOCATION'\"\r\n [inLine]=\"true\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-location-fields>\r\n <lib-mail-fields\r\n *ngSwitchCase=\"'EMAIL'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-mail-fields>\r\n <lib-mobile-fields\r\n *ngSwitchCase=\"'MOBILE'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-mobile-fields>\r\n <lib-number-fields\r\n *ngSwitchCase=\"'NUMBER'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n [rowId]=\"i\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-number-fields>\r\n <lib-password-fields\r\n *ngSwitchCase=\"'PASSWORD'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-password-fields>\r\n <lib-radio-button-fields\r\n *ngSwitchCase=\"'RADIO_BUTTON'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n [rowId]=\"i\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-radio-button-fields>\r\n <lib-rich-text-editor-fields\r\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-rich-text-editor-fields>\r\n <lib-selection-matrix-fields\r\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n [rowId]=\"i\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-selection-matrix-fields>\r\n <lib-signature-fields\r\n *ngSwitchCase=\"'SIGNATURE'\"\r\n [inLine]=\"true\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-signature-fields>\r\n <lib-slider-fields\r\n *ngSwitchCase=\"'SLIDER'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-slider-fields>\r\n <lib-terms-and-condition-fields\r\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\r\n [inLine]=\"true\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-terms-and-condition-fields>\r\n <lib-text-area-fields\r\n *ngSwitchCase=\"'TEXT_AREA'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-text-area-fields>\r\n <lib-text-fields\r\n *ngSwitchCase=\"'TEXT_BOX'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-text-fields>\r\n <lib-toggle-switch-fields\r\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-toggle-switch-fields>\r\n <lib-url-fields\r\n *ngSwitchCase=\"'URL'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-url-fields>\r\n <lib-currency-fields\r\n *ngSwitchCase=\"'CURRENCY'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-currency-fields>\r\n <lib-hidden-field\r\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-hidden-field>\r\n <lib-aggregate-function\r\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n [rowId]=\"i\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-aggregate-function>\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\" stickyEnd>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"border border-1 action-column\"\r\n >\r\n Actions\r\n </th>\r\n <td\r\n mat-cell\r\n *matCellDef=\"let submission; let i = index\"\r\n class=\"border-cell text-center\"\r\n >\r\n <button class=\"delete-button\" (click)=\"deleteSubmission(i)\">\r\n <i class=\"bi bi-trash\"></i>\r\n </button>\r\n </td>\r\n </ng-container>\r\n\r\n <tr\r\n mat-header-row\r\n *matHeaderRowDef=\"displayedColumns\"\r\n class=\"border-row\"\r\n ></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let submission; columns: displayedColumns\"\r\n class=\"border-row\"\r\n ></tr>\r\n </table>\r\n </div>\r\n\r\n <div class=\"footer\">\r\n <div class=\"addNewBtn\" (click)=\"addNewSubmission()\">\r\n <svg\r\n width=\"15\"\r\n height=\"14\"\r\n viewBox=\"0 0 15 14\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12.5556 13.2778H2.44444C1.64639 13.2778 1 12.6673 1 11.9136V2.3642C1 1.61048 1.64639 1 2.44444 1H12.5556C13.3536 1 14 1.61048 14 2.3642V11.9136C14 12.6673 13.3536 13.2778 12.5556 13.2778Z\"\r\n stroke=\"#D8D8D8\"\r\n stroke-width=\"0.8\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M5.3335 7.50347H9.66683\"\r\n stroke=\"#084FFF\"\r\n stroke-width=\"0.8\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M7.50005 5.33594V9.66927\"\r\n stroke=\"#084FFF\"\r\n stroke-width=\"0.8\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <a class=\"ms-2 text-decoration-none\">{{addButtonLabel}}</a>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".table-container{overflow-x:auto;width:100%}.table-container .mat-table-sticky{background:#fff;z-index:1}.footer{display:flex;justify-content:flex-end;align-items:center;cursor:pointer;margin-top:15px}.hidden{display:none}.dropdown-menu{position:relative;z-index:999}::-webkit-scrollbar{width:2px;height:8px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#dbd9d9;border-radius:6px}::ng-deep .mat-mdc-menu-panel{min-width:65px!important}table{border-collapse:separate!important}.border-row th,.border-row td{border:1px solid #d8d8d8}.border-cell{padding-top:10px;padding-bottom:10px}.delete-button{border:none;background-color:#fff;font-size:20px}.action-column{width:30px;padding-left:5px;padding-right:5px}.column-width{min-width:320px;white-space:nowrap}::ng-deep .ql-toolbar.ql-snow{display:flex}\n"], dependencies: [{ 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.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: ["question", "inLine"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "component", type: i6$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i6$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }] }); }
|
|
8511
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InlineMultipleSubformComponent, deps: [{ token: ScoreCalculationService }, { token: DataService }, { token: WhenClauseService }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8512
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InlineMultipleSubformComponent, selector: "lib-inline-multiple-subform", inputs: { subForm: "subForm", acceptedLanguage: "acceptedLanguage" }, outputs: { subFormChange: "subFormChange" }, ngImport: i0, template: "<div class=\"example-container\" tabindex=\"0\">\n <div class=\"table-container\">\n <table mat-table [dataSource]=\"submissions\" class=\"mat-elevation-z8\">\n <ng-container *ngFor=\"let row of subForm.rows\">\n <ng-container\n *ngFor=\"let formElement of row.grid\"\n [matColumnDef]=\"formElement.element.question\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n class=\"border border-1 column-width\"\n >\n {{ formElement.element.question }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let submission;let i=index\"\n class=\"border-cell column-width\"\n [id]=\"'question-'+submission.submissionId\"\n >\n <div *ngIf=\"formElement.entityType === 'QUESTION' && whenClauseService.checkElementVisibility(formElement.element.id,submission)\">\n <div [ngSwitch]=\"formElement.element.formElement.elementType\">\n <lib-check-box-fields\n *ngSwitchCase=\"'CHECK_BOX'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [rowId]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-check-box-fields>\n <lib-date-time-fields\n *ngSwitchCase=\"'DATE_TIME'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-date-time-fields>\n <lib-drop-down-fields\n *ngSwitchCase=\"'DROP_DOWN'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngSwitchCase=\"'FILE_PICKER'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n (inlineDeleteFiles)=\"\n updateDeletedFiles(submission, formElement.element, $event)\n \"\n ></lib-file-picker-fields>\n <lib-location-fields\n *ngSwitchCase=\"'LOCATION'\"\n [inLine]=\"true\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-location-fields>\n <lib-mail-fields\n *ngSwitchCase=\"'EMAIL'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-mail-fields>\n <lib-mobile-fields\n *ngSwitchCase=\"'MOBILE'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-mobile-fields>\n <lib-number-fields\n *ngSwitchCase=\"'NUMBER'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n [rowId]=\"i\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-number-fields>\n <lib-password-fields\n *ngSwitchCase=\"'PASSWORD'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-password-fields>\n <lib-radio-button-fields\n *ngSwitchCase=\"'RADIO_BUTTON'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n [rowId]=\"i\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n [rowId]=\"i\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-selection-matrix-fields>\n <lib-signature-fields\n *ngSwitchCase=\"'SIGNATURE'\"\n [inLine]=\"true\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-signature-fields>\n <lib-slider-fields\n *ngSwitchCase=\"'SLIDER'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n [inLine]=\"true\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-terms-and-condition-fields>\n <lib-text-area-fields\n *ngSwitchCase=\"'TEXT_AREA'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-text-area-fields>\n <lib-text-fields\n *ngSwitchCase=\"'TEXT_BOX'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-text-fields>\n <lib-toggle-switch-fields\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n [acceptedLanguage]=\"acceptedLanguage\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-toggle-switch-fields>\n <lib-url-fields\n *ngSwitchCase=\"'URL'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-url-fields>\n <lib-currency-fields\n *ngSwitchCase=\"'CURRENCY'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-currency-fields>\n <lib-hidden-field\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-hidden-field>\n <lib-aggregate-function\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n [rowId]=\"i\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-aggregate-function>\n </div>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th\n mat-header-cell\n *matHeaderCellDef\n class=\"border border-1 action-column\"\n >\n Actions\n </th>\n <td\n mat-cell\n *matCellDef=\"let submission; let i = index\"\n class=\"border-cell text-center\"\n >\n <button class=\"delete-button\" (click)=\"deleteSubmission(i)\">\n <i class=\"bi bi-trash\"></i>\n </button>\n </td>\n </ng-container>\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns\"\n class=\"border-row\"\n ></tr>\n <tr\n mat-row\n *matRowDef=\"let submission; columns: displayedColumns\"\n class=\"border-row\"\n ></tr>\n </table>\n </div>\n\n <div class=\"footer\">\n <div class=\"addNewBtn\" (click)=\"addNewSubmission()\">\n <svg\n width=\"15\"\n height=\"14\"\n viewBox=\"0 0 15 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.5556 13.2778H2.44444C1.64639 13.2778 1 12.6673 1 11.9136V2.3642C1 1.61048 1.64639 1 2.44444 1H12.5556C13.3536 1 14 1.61048 14 2.3642V11.9136C14 12.6673 13.3536 13.2778 12.5556 13.2778Z\"\n stroke=\"#D8D8D8\"\n stroke-width=\"0.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M5.3335 7.50347H9.66683\"\n stroke=\"#084FFF\"\n stroke-width=\"0.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7.50005 5.33594V9.66927\"\n stroke=\"#084FFF\"\n stroke-width=\"0.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <a class=\"ms-2 text-decoration-none\">{{addButtonLabel}}</a>\n </div>\n </div>\n</div>\n", styles: [".table-container{overflow-x:auto;width:100%}.table-container .mat-table-sticky{background:#fff;z-index:1}.footer{display:flex;justify-content:flex-end;align-items:center;cursor:pointer;margin-top:15px}.hidden{display:none}.dropdown-menu{position:relative;z-index:999}::-webkit-scrollbar{width:2px;height:8px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#dbd9d9;border-radius:6px}::ng-deep .mat-mdc-menu-panel{min-width:65px!important}table{border-collapse:separate!important}.border-row th,.border-row td{border:1px solid #d8d8d8}.border-cell{padding-top:10px;padding-bottom:10px}.delete-button{border:none;background-color:#fff;font-size:20px}.action-column{width:30px;padding-left:5px;padding-right:5px}.column-width{min-width:320px;white-space:nowrap}::ng-deep .ql-toolbar.ql-snow{display:flex}\n"], dependencies: [{ 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.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: ["question", "inLine"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "component", type: i6$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i6$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }] }); }
|
|
8309
8513
|
}
|
|
8310
8514
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InlineMultipleSubformComponent, decorators: [{
|
|
8311
8515
|
type: Component,
|
|
8312
|
-
args: [{ selector: 'lib-inline-multiple-subform', template: "<div class=\"example-container\" tabindex=\"0\">\r\n <div class=\"table-container\">\r\n <table mat-table [dataSource]=\"submissions\" class=\"mat-elevation-z8\">\r\n <ng-container *ngFor=\"let row of subForm.rows\">\r\n <ng-container\r\n *ngFor=\"let formElement of row.grid\"\r\n [matColumnDef]=\"formElement.element.question\"\r\n >\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"border border-1 column-width\"\r\n >\r\n {{ formElement.element.question }}\r\n </th>\r\n <td\r\n mat-cell\r\n *matCellDef=\"let submission;let i=index\"\r\n class=\"border-cell column-width\"\r\n [id]=\"'question-'+submission.submissionId\"\r\n >\r\n <div *ngIf=\"formElement.entityType === 'QUESTION' && whenClauseService.checkElementVisibility(formElement.element.id,submission)\">\r\n <div [ngSwitch]=\"formElement.element.formElement.elementType\">\r\n <lib-check-box-fields\r\n *ngSwitchCase=\"'CHECK_BOX'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [rowId]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-check-box-fields>\r\n <lib-date-time-fields\r\n *ngSwitchCase=\"'DATE_TIME'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-date-time-fields>\r\n <lib-drop-down-fields\r\n *ngSwitchCase=\"'DROP_DOWN'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-drop-down-fields>\r\n <lib-file-picker-fields\r\n *ngSwitchCase=\"'FILE_PICKER'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n (inlineDeleteFiles)=\"\r\n updateDeletedFiles(submission, formElement.element, $event)\r\n \"\r\n ></lib-file-picker-fields>\r\n <lib-location-fields\r\n *ngSwitchCase=\"'LOCATION'\"\r\n [inLine]=\"true\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-location-fields>\r\n <lib-mail-fields\r\n *ngSwitchCase=\"'EMAIL'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-mail-fields>\r\n <lib-mobile-fields\r\n *ngSwitchCase=\"'MOBILE'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-mobile-fields>\r\n <lib-number-fields\r\n *ngSwitchCase=\"'NUMBER'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n [rowId]=\"i\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-number-fields>\r\n <lib-password-fields\r\n *ngSwitchCase=\"'PASSWORD'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-password-fields>\r\n <lib-radio-button-fields\r\n *ngSwitchCase=\"'RADIO_BUTTON'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n [rowId]=\"i\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-radio-button-fields>\r\n <lib-rich-text-editor-fields\r\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-rich-text-editor-fields>\r\n <lib-selection-matrix-fields\r\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n [rowId]=\"i\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-selection-matrix-fields>\r\n <lib-signature-fields\r\n *ngSwitchCase=\"'SIGNATURE'\"\r\n [inLine]=\"true\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-signature-fields>\r\n <lib-slider-fields\r\n *ngSwitchCase=\"'SLIDER'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-slider-fields>\r\n <lib-terms-and-condition-fields\r\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\r\n [inLine]=\"true\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-terms-and-condition-fields>\r\n <lib-text-area-fields\r\n *ngSwitchCase=\"'TEXT_AREA'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-text-area-fields>\r\n <lib-text-fields\r\n *ngSwitchCase=\"'TEXT_BOX'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-text-fields>\r\n <lib-toggle-switch-fields\r\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-toggle-switch-fields>\r\n <lib-url-fields\r\n *ngSwitchCase=\"'URL'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-url-fields>\r\n <lib-currency-fields\r\n *ngSwitchCase=\"'CURRENCY'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-currency-fields>\r\n <lib-hidden-field\r\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-hidden-field>\r\n <lib-aggregate-function\r\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\r\n [inLine]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [question]=\"getSubmissionQuestion(submission, formElement)\"\r\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\r\n [rowId]=\"i\"\r\n (answerChange)=\"\r\n updateInlineAnswer(submission, formElement.element, $event)\r\n \"\r\n ></lib-aggregate-function>\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\" stickyEnd>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"border border-1 action-column\"\r\n >\r\n Actions\r\n </th>\r\n <td\r\n mat-cell\r\n *matCellDef=\"let submission; let i = index\"\r\n class=\"border-cell text-center\"\r\n >\r\n <button class=\"delete-button\" (click)=\"deleteSubmission(i)\">\r\n <i class=\"bi bi-trash\"></i>\r\n </button>\r\n </td>\r\n </ng-container>\r\n\r\n <tr\r\n mat-header-row\r\n *matHeaderRowDef=\"displayedColumns\"\r\n class=\"border-row\"\r\n ></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let submission; columns: displayedColumns\"\r\n class=\"border-row\"\r\n ></tr>\r\n </table>\r\n </div>\r\n\r\n <div class=\"footer\">\r\n <div class=\"addNewBtn\" (click)=\"addNewSubmission()\">\r\n <svg\r\n width=\"15\"\r\n height=\"14\"\r\n viewBox=\"0 0 15 14\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12.5556 13.2778H2.44444C1.64639 13.2778 1 12.6673 1 11.9136V2.3642C1 1.61048 1.64639 1 2.44444 1H12.5556C13.3536 1 14 1.61048 14 2.3642V11.9136C14 12.6673 13.3536 13.2778 12.5556 13.2778Z\"\r\n stroke=\"#D8D8D8\"\r\n stroke-width=\"0.8\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M5.3335 7.50347H9.66683\"\r\n stroke=\"#084FFF\"\r\n stroke-width=\"0.8\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M7.50005 5.33594V9.66927\"\r\n stroke=\"#084FFF\"\r\n stroke-width=\"0.8\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <a class=\"ms-2 text-decoration-none\">{{addButtonLabel}}</a>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".table-container{overflow-x:auto;width:100%}.table-container .mat-table-sticky{background:#fff;z-index:1}.footer{display:flex;justify-content:flex-end;align-items:center;cursor:pointer;margin-top:15px}.hidden{display:none}.dropdown-menu{position:relative;z-index:999}::-webkit-scrollbar{width:2px;height:8px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#dbd9d9;border-radius:6px}::ng-deep .mat-mdc-menu-panel{min-width:65px!important}table{border-collapse:separate!important}.border-row th,.border-row td{border:1px solid #d8d8d8}.border-cell{padding-top:10px;padding-bottom:10px}.delete-button{border:none;background-color:#fff;font-size:20px}.action-column{width:30px;padding-left:5px;padding-right:5px}.column-width{min-width:320px;white-space:nowrap}::ng-deep .ql-toolbar.ql-snow{display:flex}\n"] }]
|
|
8313
|
-
}], ctorParameters: function () { return [{ type: ScoreCalculationService }, { type: DataService }, { type: WhenClauseService }]; }, propDecorators: { subForm: [{
|
|
8516
|
+
args: [{ selector: 'lib-inline-multiple-subform', template: "<div class=\"example-container\" tabindex=\"0\">\n <div class=\"table-container\">\n <table mat-table [dataSource]=\"submissions\" class=\"mat-elevation-z8\">\n <ng-container *ngFor=\"let row of subForm.rows\">\n <ng-container\n *ngFor=\"let formElement of row.grid\"\n [matColumnDef]=\"formElement.element.question\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n class=\"border border-1 column-width\"\n >\n {{ formElement.element.question }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let submission;let i=index\"\n class=\"border-cell column-width\"\n [id]=\"'question-'+submission.submissionId\"\n >\n <div *ngIf=\"formElement.entityType === 'QUESTION' && whenClauseService.checkElementVisibility(formElement.element.id,submission)\">\n <div [ngSwitch]=\"formElement.element.formElement.elementType\">\n <lib-check-box-fields\n *ngSwitchCase=\"'CHECK_BOX'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [rowId]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-check-box-fields>\n <lib-date-time-fields\n *ngSwitchCase=\"'DATE_TIME'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-date-time-fields>\n <lib-drop-down-fields\n *ngSwitchCase=\"'DROP_DOWN'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngSwitchCase=\"'FILE_PICKER'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n (inlineDeleteFiles)=\"\n updateDeletedFiles(submission, formElement.element, $event)\n \"\n ></lib-file-picker-fields>\n <lib-location-fields\n *ngSwitchCase=\"'LOCATION'\"\n [inLine]=\"true\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-location-fields>\n <lib-mail-fields\n *ngSwitchCase=\"'EMAIL'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-mail-fields>\n <lib-mobile-fields\n *ngSwitchCase=\"'MOBILE'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-mobile-fields>\n <lib-number-fields\n *ngSwitchCase=\"'NUMBER'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n [rowId]=\"i\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-number-fields>\n <lib-password-fields\n *ngSwitchCase=\"'PASSWORD'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-password-fields>\n <lib-radio-button-fields\n *ngSwitchCase=\"'RADIO_BUTTON'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n [rowId]=\"i\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n [rowId]=\"i\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-selection-matrix-fields>\n <lib-signature-fields\n *ngSwitchCase=\"'SIGNATURE'\"\n [inLine]=\"true\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-signature-fields>\n <lib-slider-fields\n *ngSwitchCase=\"'SLIDER'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n [inLine]=\"true\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-terms-and-condition-fields>\n <lib-text-area-fields\n *ngSwitchCase=\"'TEXT_AREA'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-text-area-fields>\n <lib-text-fields\n *ngSwitchCase=\"'TEXT_BOX'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-text-fields>\n <lib-toggle-switch-fields\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n [acceptedLanguage]=\"acceptedLanguage\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-toggle-switch-fields>\n <lib-url-fields\n *ngSwitchCase=\"'URL'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-url-fields>\n <lib-currency-fields\n *ngSwitchCase=\"'CURRENCY'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-currency-fields>\n <lib-hidden-field\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-hidden-field>\n <lib-aggregate-function\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\n [inLine]=\"true\"\n [submissionIndex]=\"i\"\n [question]=\"getSubmissionQuestion(submission, formElement)\"\n [disableEdit]=\"isSubmissionEditable(submission,formElement.element.id)\"\n [rowId]=\"i\"\n (answerChange)=\"\n updateInlineAnswer(submission, formElement.element, $event)\n \"\n ></lib-aggregate-function>\n </div>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th\n mat-header-cell\n *matHeaderCellDef\n class=\"border border-1 action-column\"\n >\n Actions\n </th>\n <td\n mat-cell\n *matCellDef=\"let submission; let i = index\"\n class=\"border-cell text-center\"\n >\n <button class=\"delete-button\" (click)=\"deleteSubmission(i)\">\n <i class=\"bi bi-trash\"></i>\n </button>\n </td>\n </ng-container>\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns\"\n class=\"border-row\"\n ></tr>\n <tr\n mat-row\n *matRowDef=\"let submission; columns: displayedColumns\"\n class=\"border-row\"\n ></tr>\n </table>\n </div>\n\n <div class=\"footer\">\n <div class=\"addNewBtn\" (click)=\"addNewSubmission()\">\n <svg\n width=\"15\"\n height=\"14\"\n viewBox=\"0 0 15 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.5556 13.2778H2.44444C1.64639 13.2778 1 12.6673 1 11.9136V2.3642C1 1.61048 1.64639 1 2.44444 1H12.5556C13.3536 1 14 1.61048 14 2.3642V11.9136C14 12.6673 13.3536 13.2778 12.5556 13.2778Z\"\n stroke=\"#D8D8D8\"\n stroke-width=\"0.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M5.3335 7.50347H9.66683\"\n stroke=\"#084FFF\"\n stroke-width=\"0.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7.50005 5.33594V9.66927\"\n stroke=\"#084FFF\"\n stroke-width=\"0.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <a class=\"ms-2 text-decoration-none\">{{addButtonLabel}}</a>\n </div>\n </div>\n</div>\n", styles: [".table-container{overflow-x:auto;width:100%}.table-container .mat-table-sticky{background:#fff;z-index:1}.footer{display:flex;justify-content:flex-end;align-items:center;cursor:pointer;margin-top:15px}.hidden{display:none}.dropdown-menu{position:relative;z-index:999}::-webkit-scrollbar{width:2px;height:8px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background-color:#dbd9d9;border-radius:6px}::ng-deep .mat-mdc-menu-panel{min-width:65px!important}table{border-collapse:separate!important}.border-row th,.border-row td{border:1px solid #d8d8d8}.border-cell{padding-top:10px;padding-bottom:10px}.delete-button{border:none;background-color:#fff;font-size:20px}.action-column{width:30px;padding-left:5px;padding-right:5px}.column-width{min-width:320px;white-space:nowrap}::ng-deep .ql-toolbar.ql-snow{display:flex}\n"] }]
|
|
8517
|
+
}], ctorParameters: function () { return [{ type: ScoreCalculationService }, { type: DataService }, { type: WhenClauseService }, { type: HiddenFieldService }]; }, propDecorators: { subForm: [{
|
|
8314
8518
|
type: Input
|
|
8315
8519
|
}], subFormChange: [{
|
|
8316
8520
|
type: Output
|
|
@@ -8319,9 +8523,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
8319
8523
|
}] } });
|
|
8320
8524
|
|
|
8321
8525
|
class CardSubformComponent {
|
|
8322
|
-
constructor(scoreCalcService, whenClauseService) {
|
|
8526
|
+
constructor(scoreCalcService, whenClauseService, hiddenFieldService, dialog) {
|
|
8323
8527
|
this.scoreCalcService = scoreCalcService;
|
|
8324
8528
|
this.whenClauseService = whenClauseService;
|
|
8529
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
8530
|
+
this.dialog = dialog;
|
|
8325
8531
|
this.subForm = {};
|
|
8326
8532
|
this.acceptedLanguage = '';
|
|
8327
8533
|
this.edit = false;
|
|
@@ -8331,6 +8537,7 @@ class CardSubformComponent {
|
|
|
8331
8537
|
this.subFormChange = new EventEmitter();
|
|
8332
8538
|
this.Math = Math;
|
|
8333
8539
|
this.editableQuestions = [];
|
|
8540
|
+
this.isEdit = this.hiddenFieldService.getEditMode();
|
|
8334
8541
|
}
|
|
8335
8542
|
ngOnInit() {
|
|
8336
8543
|
const { goodMax, badMax } = this.scoreCalcService.getMaxPossibleScore(this.subForm);
|
|
@@ -8351,9 +8558,11 @@ class CardSubformComponent {
|
|
|
8351
8558
|
this.addButtonLabel = this.subForm.property.addButtonLabel;
|
|
8352
8559
|
}
|
|
8353
8560
|
this.elementsWithWhenClause = this.whenClauseService.getWhenClauseElements(this.subForm);
|
|
8561
|
+
this.hiddenFieldService.extractSubformHiddenFields(this.subForm);
|
|
8354
8562
|
this.updateWhenClause();
|
|
8355
8563
|
if (this.subForm.submissionCopyConfig?.allowCopyFromOtherSubmissions) {
|
|
8356
|
-
this.editableQuestions =
|
|
8564
|
+
this.editableQuestions =
|
|
8565
|
+
this.subForm.submissionCopyConfig.editableQuestions || [];
|
|
8357
8566
|
}
|
|
8358
8567
|
}
|
|
8359
8568
|
ngOnChanges() {
|
|
@@ -8424,10 +8633,17 @@ class CardSubformComponent {
|
|
|
8424
8633
|
? questionClone.disableEdit
|
|
8425
8634
|
: false;
|
|
8426
8635
|
questionClone.attachments = ansObj?.attachments ? ansObj.attachments : [];
|
|
8427
|
-
questionClone.copiedAttachments = ansObj?.copiedAttachments
|
|
8428
|
-
|
|
8429
|
-
|
|
8430
|
-
questionClone.
|
|
8636
|
+
questionClone.copiedAttachments = ansObj?.copiedAttachments
|
|
8637
|
+
? ansObj.copiedAttachments
|
|
8638
|
+
: [];
|
|
8639
|
+
questionClone.amountInWords = ansObj?.amountInWords
|
|
8640
|
+
? ansObj.amountInWords
|
|
8641
|
+
: '';
|
|
8642
|
+
questionClone.required =
|
|
8643
|
+
ansObj?.required !== undefined ? ansObj.required : questionClone.required;
|
|
8644
|
+
questionClone.answerCurrency = ansObj?.answerCurrency
|
|
8645
|
+
? ansObj.answerCurrency
|
|
8646
|
+
: '';
|
|
8431
8647
|
return questionClone;
|
|
8432
8648
|
}
|
|
8433
8649
|
isSubmissionEditable(submission, questionId) {
|
|
@@ -8453,7 +8669,7 @@ class CardSubformComponent {
|
|
|
8453
8669
|
answer: '',
|
|
8454
8670
|
maximumPossibleScore: 0,
|
|
8455
8671
|
show: gridItem.show,
|
|
8456
|
-
required: gridItem.element.required
|
|
8672
|
+
required: gridItem.element.required,
|
|
8457
8673
|
});
|
|
8458
8674
|
}
|
|
8459
8675
|
});
|
|
@@ -8484,6 +8700,9 @@ class CardSubformComponent {
|
|
|
8484
8700
|
this.subFormChange.emit(this.subForm);
|
|
8485
8701
|
}
|
|
8486
8702
|
updateAnswer(submission, question, newAnswerObject) {
|
|
8703
|
+
if (question.formElement.elementType != 'HIDDEN_FIELD' && this.isEdit) {
|
|
8704
|
+
submission = this.hiddenFieldService.updateSubformHiddenFieldsFromCache(this.subForm.id, submission, 'UPDATE');
|
|
8705
|
+
}
|
|
8487
8706
|
const newAnswer = newAnswerObject.answer;
|
|
8488
8707
|
const amountInWords = newAnswerObject?.amountInWords;
|
|
8489
8708
|
const currency = newAnswerObject?.currency;
|
|
@@ -8547,7 +8766,7 @@ class CardSubformComponent {
|
|
|
8547
8766
|
answer: newAnswer,
|
|
8548
8767
|
maximumPossibleScore: newAnswerObject.maxPossibleScore,
|
|
8549
8768
|
amountInWords: amountInWords,
|
|
8550
|
-
currencySymbol: currency
|
|
8769
|
+
currencySymbol: currency,
|
|
8551
8770
|
});
|
|
8552
8771
|
}
|
|
8553
8772
|
if (question.formElement &&
|
|
@@ -8575,12 +8794,11 @@ class CardSubformComponent {
|
|
|
8575
8794
|
}
|
|
8576
8795
|
}
|
|
8577
8796
|
const hasAnyScore = this.submissions.some((sub) => sub.scores?.some((s) => s.score !== null && s.score !== undefined));
|
|
8578
|
-
|
|
8579
|
-
this.subForm.scores =
|
|
8580
|
-
|
|
8581
|
-
|
|
8582
|
-
|
|
8583
|
-
}
|
|
8797
|
+
Promise.resolve().then(() => {
|
|
8798
|
+
this.subForm.scores = hasAnyScore
|
|
8799
|
+
? this.scoreCalcService.calculateFinalScore(this.subForm.submissions, this.maxPossibleGoodScore, this.maxPossibleBadScore)
|
|
8800
|
+
: [];
|
|
8801
|
+
});
|
|
8584
8802
|
this.updateSubFormWithSubmissions();
|
|
8585
8803
|
}
|
|
8586
8804
|
}
|
|
@@ -8598,20 +8816,32 @@ class CardSubformComponent {
|
|
|
8598
8816
|
answerObj.deleteFiles.push(fileId);
|
|
8599
8817
|
}
|
|
8600
8818
|
});
|
|
8601
|
-
answerObj.copiedAttachments = answerObj.copiedAttachments?.filter(item => {
|
|
8819
|
+
answerObj.copiedAttachments = answerObj.copiedAttachments?.filter((item) => {
|
|
8602
8820
|
return !deletedFiles.includes(item);
|
|
8603
8821
|
});
|
|
8604
8822
|
}
|
|
8605
8823
|
}
|
|
8606
8824
|
deleteSubmission(index) {
|
|
8607
|
-
const
|
|
8608
|
-
|
|
8609
|
-
|
|
8610
|
-
|
|
8611
|
-
|
|
8612
|
-
|
|
8613
|
-
|
|
8614
|
-
this.
|
|
8825
|
+
const dialogConfig = new MatDialogConfig();
|
|
8826
|
+
dialogConfig.data = {
|
|
8827
|
+
messageHeader: 'Are you sure?',
|
|
8828
|
+
message: 'Do you want to delete this submission?',
|
|
8829
|
+
};
|
|
8830
|
+
dialogConfig.hasBackdrop = true;
|
|
8831
|
+
dialogConfig.disableClose = true;
|
|
8832
|
+
this.dialogRef = this.dialog.open(ConfirmDialogComponent, dialogConfig);
|
|
8833
|
+
this.dialogRef.afterClosed().subscribe((result) => {
|
|
8834
|
+
if (result) {
|
|
8835
|
+
const submission = this.submissions[index];
|
|
8836
|
+
if (submission.submissionId) {
|
|
8837
|
+
this.deletedSubmissions.push(submission.submissionId);
|
|
8838
|
+
}
|
|
8839
|
+
this.submissions.splice(index, 1);
|
|
8840
|
+
this.submissions = [...this.submissions];
|
|
8841
|
+
this.subForm.scores = this.scoreCalcService.calculateFinalScore(this.submissions, this.maxPossibleGoodScore, this.maxPossibleBadScore);
|
|
8842
|
+
this.updateSubFormWithSubmissions();
|
|
8843
|
+
}
|
|
8844
|
+
});
|
|
8615
8845
|
}
|
|
8616
8846
|
clearHiddenAnswers() {
|
|
8617
8847
|
for (const submission of this.submissions) {
|
|
@@ -8620,20 +8850,20 @@ class CardSubformComponent {
|
|
|
8620
8850
|
for (const ans of submission.answers) {
|
|
8621
8851
|
// If show flag is explicitly false → clear the answer value
|
|
8622
8852
|
if (ans.show === false) {
|
|
8623
|
-
ans.answer =
|
|
8853
|
+
ans.answer = ''; // clear the answer
|
|
8624
8854
|
ans.files = []; // clear files (optional)
|
|
8625
8855
|
ans.scores = []; // clear score (optional)
|
|
8626
8856
|
}
|
|
8627
8857
|
}
|
|
8628
8858
|
}
|
|
8629
8859
|
}
|
|
8630
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardSubformComponent, deps: [{ token: ScoreCalculationService }, { token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8631
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardSubformComponent, selector: "lib-card-subform", inputs: { subForm: "subForm", acceptedLanguage: "acceptedLanguage", edit: "edit" }, outputs: { subFormChange: "subFormChange" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngFor=\"let submission of submissions;let i=index ;trackBy: trackBySubmissionId\">\r\n <div class=\"card-subform mb-4\" [id]=\"'question-'+submission.submissionId\">\r\n <div class=\"delete d-flex justify-content-end me-4 mb-2 mt-2 gap-3\"\r\n >\r\n <ng-container *ngIf=\"submission?.scores?.[0] as firstScore\">\r\n <div\r\n class=\"submissionScore\"\r\n [ngClass]=\"{\r\n 'good-score': firstScore.scoreType === 'GOOD_SCORE',\r\n 'bad-score': firstScore.scoreType === 'BAD_SCORE'\r\n }\"\r\n >\r\n <span>{{ Math.abs(firstScore.score) }}</span>\r\n </div>\r\n </ng-container>\r\n <img class=\"delete-icon\" src=\"assets/icons/delete-icon.svg\" alt=\"delete\"\r\n *ngIf=\"submission.configuration?.allowDelete\"\r\n (click)=\"deleteSubmission(i)\">\r\n </div>\r\n <div *ngFor=\"let row of subForm.rows\">\r\n <div class=\"d-flex\">\r\n <div\r\n *ngFor=\"let grid of row.grid\"\r\n [ngStyle]=\"{ 'width.%': grid.element.count * (100 / 12) }\"\r\n >\r\n <div *ngIf=\"grid.entityType === 'QUESTION' && whenClauseService.checkElementVisibility(grid.element.id,submission)\">\r\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\r\n <lib-check-box-fields\r\n *ngSwitchCase=\"'CHECK_BOX'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [rowId]=\"i\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-check-box-fields>\r\n <lib-date-time-fields\r\n *ngSwitchCase=\"'DATE_TIME'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-date-time-fields>\r\n <lib-drop-down-fields\r\n *ngSwitchCase=\"'DROP_DOWN'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-drop-down-fields>\r\n <lib-file-picker-fields\r\n *ngSwitchCase=\"'FILE_PICKER'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n (inlineDeleteFiles)=\"\r\n updateDeletedFiles(submission, grid.element, $event)\r\n \"\r\n ></lib-file-picker-fields>\r\n <lib-location-fields\r\n *ngSwitchCase=\"'LOCATION'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-location-fields>\r\n <lib-mail-fields\r\n *ngSwitchCase=\"'EMAIL'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-mail-fields>\r\n <lib-mobile-fields\r\n *ngSwitchCase=\"'MOBILE'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-mobile-fields>\r\n <lib-number-fields\r\n *ngSwitchCase=\"'NUMBER'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [rowId]=\"'0'\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-number-fields>\r\n <lib-password-fields\r\n *ngSwitchCase=\"'PASSWORD'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-password-fields>\r\n <lib-radio-button-fields\r\n *ngSwitchCase=\"'RADIO_BUTTON'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [rowId]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-radio-button-fields>\r\n <lib-rich-text-editor-fields\r\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [inSubForm]=\"true\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-rich-text-editor-fields>\r\n <lib-selection-matrix-fields\r\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n [rowId]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-selection-matrix-fields>\r\n <lib-slider-fields\r\n *ngSwitchCase=\"'SLIDER'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-slider-fields>\r\n <lib-terms-and-condition-fields\r\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-terms-and-condition-fields>\r\n <lib-text-area-fields\r\n *ngSwitchCase=\"'TEXT_AREA'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-text-area-fields>\r\n <lib-text-fields\r\n *ngSwitchCase=\"'TEXT_BOX'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-text-fields>\r\n <lib-toggle-switch-fields\r\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-toggle-switch-fields>\r\n <lib-url-fields\r\n *ngSwitchCase=\"'URL'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-url-fields>\r\n <lib-currency-fields\r\n *ngSwitchCase=\"'CURRENCY'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-currency-fields>\r\n <lib-hidden-field\r\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-hidden-field>\r\n <lib-iframe-fields\r\n *ngSwitchCase=\"'IFRAME_WIDGET'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n ></lib-iframe-fields>\r\n <lib-aggregate-function\r\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [rowId]=\"'0'\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-aggregate-function>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"grid.element.childLogics\">\r\n <ng-container\r\n *ngIf=\"getComponentForChildLogics(grid.element.childLogics, 'child', grid.element.answer) as outlet\">\r\n <ng-container *ngComponentOutlet=\"outlet.component | async; injector: outlet.injector\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container> -->\r\n <ng-container *ngIf=\"grid?.element?.childLogics\">\r\n <ng-container *ngIf=\"componentToLoad\">\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n componentToLoad;\r\n inputs: {\r\n grid: grid?.element?.childLogics,\r\n answer: grid?.element?.answer,\r\n state: 'child'\r\n }\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"grid.entityType === 'SECTION'\">\r\n <lib-section-fields [section]=\"grid.element\"></lib-section-fields>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"subform-footer\">\r\n <button class=\"btn btn-primary\" (click)=\"addNewSubmission()\">{{addButtonLabel}}</button>\r\n</div>\r\n", styles: [".card-subform{background:#f9f6f6;border-radius:6px;padding:8px 0}.delete-icon{cursor:pointer;margin-right:10px;width:36px;height:36px;fill:none}.delete-icon path{stroke:#084fff;stroke-linecap:round;stroke-linejoin:round}.delete-icon rect{stroke:#d8d8d8;fill:#fff;width:35px;height:35px}.submissionScore{width:45px;height:37px;border-radius:6px;border:1px solid #c8c8c8;display:flex;justify-content:center;align-items:center;font-weight:500;text-align:center;padding:0}.submissionScore span{margin-top:5px}.submissionScore.good-score{border-color:#50f550}.submissionScore.bad-score{border-color:#f08080}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SectionFieldsComponent, selector: "lib-section-fields", inputs: ["section"] }, { kind: "component", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "component", type: IframeFieldsComponent, selector: "lib-iframe-fields", inputs: ["question"] }] }); }
|
|
8860
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardSubformComponent, deps: [{ token: ScoreCalculationService }, { token: WhenClauseService }, { token: HiddenFieldService }, { token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8861
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardSubformComponent, selector: "lib-card-subform", inputs: { subForm: "subForm", acceptedLanguage: "acceptedLanguage", edit: "edit" }, outputs: { subFormChange: "subFormChange" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngFor=\"let submission of submissions;let i=index ;trackBy: trackBySubmissionId\">\n <div class=\"card-subform mb-4\" [id]=\"'question-'+submission.submissionId\">\n <div class=\"delete d-flex justify-content-end me-4 mb-2 mt-2 gap-3\"\n >\n <ng-container *ngIf=\"submission?.scores?.[0] as firstScore\">\n <div\n class=\"submissionScore\"\n [ngClass]=\"{\n 'good-score': firstScore.scoreType === 'GOOD_SCORE',\n 'bad-score': firstScore.scoreType === 'BAD_SCORE'\n }\"\n >\n <span>{{ Math.abs(firstScore.score) }}</span>\n </div>\n </ng-container>\n <img class=\"delete-icon\" src=\"assets/icons/delete-icon.svg\" alt=\"delete\"\n *ngIf=\"submission.configuration?.allowDelete\"\n (click)=\"deleteSubmission(i)\">\n </div>\n <div *ngFor=\"let row of subForm.rows\">\n <div class=\"d-flex\">\n <div\n *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{ 'width.%': grid.element.count * (100 / 12) }\"\n >\n <div *ngIf=\"grid.entityType === 'QUESTION' && whenClauseService.checkElementVisibility(grid.element.id,submission)\">\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\n <lib-check-box-fields\n *ngSwitchCase=\"'CHECK_BOX'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [rowId]=\"i\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-check-box-fields>\n <lib-date-time-fields\n *ngSwitchCase=\"'DATE_TIME'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-date-time-fields>\n <lib-drop-down-fields\n *ngSwitchCase=\"'DROP_DOWN'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngSwitchCase=\"'FILE_PICKER'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n (inlineDeleteFiles)=\"\n updateDeletedFiles(submission, grid.element, $event)\n \"\n ></lib-file-picker-fields>\n <lib-location-fields\n *ngSwitchCase=\"'LOCATION'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-location-fields>\n <lib-mail-fields\n *ngSwitchCase=\"'EMAIL'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-mail-fields>\n <lib-mobile-fields\n *ngSwitchCase=\"'MOBILE'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-mobile-fields>\n <lib-number-fields\n *ngSwitchCase=\"'NUMBER'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [rowId]=\"'0'\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-number-fields>\n <lib-password-fields\n *ngSwitchCase=\"'PASSWORD'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-password-fields>\n <lib-radio-button-fields\n *ngSwitchCase=\"'RADIO_BUTTON'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [rowId]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [inSubForm]=\"true\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [rowId]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-selection-matrix-fields>\n <lib-slider-fields\n *ngSwitchCase=\"'SLIDER'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-terms-and-condition-fields>\n <lib-text-area-fields\n *ngSwitchCase=\"'TEXT_AREA'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-text-area-fields>\n <lib-text-fields\n *ngSwitchCase=\"'TEXT_BOX'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-text-fields>\n <lib-toggle-switch-fields\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-toggle-switch-fields>\n <lib-url-fields\n *ngSwitchCase=\"'URL'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-url-fields>\n <lib-currency-fields\n *ngSwitchCase=\"'CURRENCY'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-currency-fields>\n <lib-hidden-field\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-hidden-field>\n <lib-iframe-fields\n *ngSwitchCase=\"'IFRAME_WIDGET'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n ></lib-iframe-fields>\n <lib-aggregate-function\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [rowId]=\"'0'\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-aggregate-function>\n </div>\n\n <!-- <ng-container *ngIf=\"grid.element.childLogics\">\n <ng-container\n *ngIf=\"getComponentForChildLogics(grid.element.childLogics, 'child', grid.element.answer) as outlet\">\n <ng-container *ngComponentOutlet=\"outlet.component | async; injector: outlet.injector\">\n </ng-container>\n </ng-container>\n </ng-container> -->\n <ng-container *ngIf=\"grid?.element?.childLogics\">\n <ng-container *ngIf=\"componentToLoad\">\n <ng-container\n *ngComponentOutlet=\"\n componentToLoad;\n inputs: {\n grid: grid?.element?.childLogics,\n answer: grid?.element?.answer,\n state: 'child'\n }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"grid.entityType === 'SECTION'\">\n <lib-section-fields [section]=\"grid.element\"></lib-section-fields>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n\n<div class=\"subform-footer\">\n <button class=\"btn btn-primary\" (click)=\"addNewSubmission()\">{{addButtonLabel}}</button>\n</div>\n", styles: [".card-subform{background:#f9f6f6;border-radius:6px;padding:8px 0}.delete-icon{cursor:pointer;margin-right:10px;width:36px;height:36px;fill:none}.delete-icon path{stroke:#084fff;stroke-linecap:round;stroke-linejoin:round}.delete-icon rect{stroke:#d8d8d8;fill:#fff;width:35px;height:35px}.submissionScore{width:45px;height:37px;border-radius:6px;border:1px solid #c8c8c8;display:flex;justify-content:center;align-items:center;font-weight:500;text-align:center;padding:0}.submissionScore span{margin-top:5px}.submissionScore.good-score{border-color:#50f550}.submissionScore.bad-score{border-color:#f08080}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SectionFieldsComponent, selector: "lib-section-fields", inputs: ["section"] }, { kind: "component", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "component", type: IframeFieldsComponent, selector: "lib-iframe-fields", inputs: ["question"] }] }); }
|
|
8632
8862
|
}
|
|
8633
8863
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardSubformComponent, decorators: [{
|
|
8634
8864
|
type: Component,
|
|
8635
|
-
args: [{ selector: 'lib-card-subform', template: "<ng-container *ngFor=\"let submission of submissions;let i=index ;trackBy: trackBySubmissionId\">\r\n <div class=\"card-subform mb-4\" [id]=\"'question-'+submission.submissionId\">\r\n <div class=\"delete d-flex justify-content-end me-4 mb-2 mt-2 gap-3\"\r\n >\r\n <ng-container *ngIf=\"submission?.scores?.[0] as firstScore\">\r\n <div\r\n class=\"submissionScore\"\r\n [ngClass]=\"{\r\n 'good-score': firstScore.scoreType === 'GOOD_SCORE',\r\n 'bad-score': firstScore.scoreType === 'BAD_SCORE'\r\n }\"\r\n >\r\n <span>{{ Math.abs(firstScore.score) }}</span>\r\n </div>\r\n </ng-container>\r\n <img class=\"delete-icon\" src=\"assets/icons/delete-icon.svg\" alt=\"delete\"\r\n *ngIf=\"submission.configuration?.allowDelete\"\r\n (click)=\"deleteSubmission(i)\">\r\n </div>\r\n <div *ngFor=\"let row of subForm.rows\">\r\n <div class=\"d-flex\">\r\n <div\r\n *ngFor=\"let grid of row.grid\"\r\n [ngStyle]=\"{ 'width.%': grid.element.count * (100 / 12) }\"\r\n >\r\n <div *ngIf=\"grid.entityType === 'QUESTION' && whenClauseService.checkElementVisibility(grid.element.id,submission)\">\r\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\r\n <lib-check-box-fields\r\n *ngSwitchCase=\"'CHECK_BOX'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [rowId]=\"i\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-check-box-fields>\r\n <lib-date-time-fields\r\n *ngSwitchCase=\"'DATE_TIME'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-date-time-fields>\r\n <lib-drop-down-fields\r\n *ngSwitchCase=\"'DROP_DOWN'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-drop-down-fields>\r\n <lib-file-picker-fields\r\n *ngSwitchCase=\"'FILE_PICKER'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n (inlineDeleteFiles)=\"\r\n updateDeletedFiles(submission, grid.element, $event)\r\n \"\r\n ></lib-file-picker-fields>\r\n <lib-location-fields\r\n *ngSwitchCase=\"'LOCATION'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-location-fields>\r\n <lib-mail-fields\r\n *ngSwitchCase=\"'EMAIL'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-mail-fields>\r\n <lib-mobile-fields\r\n *ngSwitchCase=\"'MOBILE'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-mobile-fields>\r\n <lib-number-fields\r\n *ngSwitchCase=\"'NUMBER'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [rowId]=\"'0'\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-number-fields>\r\n <lib-password-fields\r\n *ngSwitchCase=\"'PASSWORD'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-password-fields>\r\n <lib-radio-button-fields\r\n *ngSwitchCase=\"'RADIO_BUTTON'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [rowId]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-radio-button-fields>\r\n <lib-rich-text-editor-fields\r\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [inSubForm]=\"true\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-rich-text-editor-fields>\r\n <lib-selection-matrix-fields\r\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n [rowId]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-selection-matrix-fields>\r\n <lib-slider-fields\r\n *ngSwitchCase=\"'SLIDER'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-slider-fields>\r\n <lib-terms-and-condition-fields\r\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-terms-and-condition-fields>\r\n <lib-text-area-fields\r\n *ngSwitchCase=\"'TEXT_AREA'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-text-area-fields>\r\n <lib-text-fields\r\n *ngSwitchCase=\"'TEXT_BOX'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-text-fields>\r\n <lib-toggle-switch-fields\r\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-toggle-switch-fields>\r\n <lib-url-fields\r\n *ngSwitchCase=\"'URL'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-url-fields>\r\n <lib-currency-fields\r\n *ngSwitchCase=\"'CURRENCY'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-currency-fields>\r\n <lib-hidden-field\r\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-hidden-field>\r\n <lib-iframe-fields\r\n *ngSwitchCase=\"'IFRAME_WIDGET'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n ></lib-iframe-fields>\r\n <lib-aggregate-function\r\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\r\n [question]=\"getSubmissionQuestion(submission,grid)\"\r\n [inCard]=\"true\"\r\n [submissionIndex]=\"i\"\r\n [rowId]=\"'0'\"\r\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\r\n (answerChange)=\"\r\n updateAnswer(submission, grid.element, $event)\r\n \"\r\n ></lib-aggregate-function>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"grid.element.childLogics\">\r\n <ng-container\r\n *ngIf=\"getComponentForChildLogics(grid.element.childLogics, 'child', grid.element.answer) as outlet\">\r\n <ng-container *ngComponentOutlet=\"outlet.component | async; injector: outlet.injector\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container> -->\r\n <ng-container *ngIf=\"grid?.element?.childLogics\">\r\n <ng-container *ngIf=\"componentToLoad\">\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n componentToLoad;\r\n inputs: {\r\n grid: grid?.element?.childLogics,\r\n answer: grid?.element?.answer,\r\n state: 'child'\r\n }\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"grid.entityType === 'SECTION'\">\r\n <lib-section-fields [section]=\"grid.element\"></lib-section-fields>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div class=\"subform-footer\">\r\n <button class=\"btn btn-primary\" (click)=\"addNewSubmission()\">{{addButtonLabel}}</button>\r\n</div>\r\n", styles: [".card-subform{background:#f9f6f6;border-radius:6px;padding:8px 0}.delete-icon{cursor:pointer;margin-right:10px;width:36px;height:36px;fill:none}.delete-icon path{stroke:#084fff;stroke-linecap:round;stroke-linejoin:round}.delete-icon rect{stroke:#d8d8d8;fill:#fff;width:35px;height:35px}.submissionScore{width:45px;height:37px;border-radius:6px;border:1px solid #c8c8c8;display:flex;justify-content:center;align-items:center;font-weight:500;text-align:center;padding:0}.submissionScore span{margin-top:5px}.submissionScore.good-score{border-color:#50f550}.submissionScore.bad-score{border-color:#f08080}\n"] }]
|
|
8636
|
-
}], ctorParameters: function () { return [{ type: ScoreCalculationService }, { type: WhenClauseService }]; }, propDecorators: { subForm: [{
|
|
8865
|
+
args: [{ selector: 'lib-card-subform', template: "<ng-container *ngFor=\"let submission of submissions;let i=index ;trackBy: trackBySubmissionId\">\n <div class=\"card-subform mb-4\" [id]=\"'question-'+submission.submissionId\">\n <div class=\"delete d-flex justify-content-end me-4 mb-2 mt-2 gap-3\"\n >\n <ng-container *ngIf=\"submission?.scores?.[0] as firstScore\">\n <div\n class=\"submissionScore\"\n [ngClass]=\"{\n 'good-score': firstScore.scoreType === 'GOOD_SCORE',\n 'bad-score': firstScore.scoreType === 'BAD_SCORE'\n }\"\n >\n <span>{{ Math.abs(firstScore.score) }}</span>\n </div>\n </ng-container>\n <img class=\"delete-icon\" src=\"assets/icons/delete-icon.svg\" alt=\"delete\"\n *ngIf=\"submission.configuration?.allowDelete\"\n (click)=\"deleteSubmission(i)\">\n </div>\n <div *ngFor=\"let row of subForm.rows\">\n <div class=\"d-flex\">\n <div\n *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{ 'width.%': grid.element.count * (100 / 12) }\"\n >\n <div *ngIf=\"grid.entityType === 'QUESTION' && whenClauseService.checkElementVisibility(grid.element.id,submission)\">\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\n <lib-check-box-fields\n *ngSwitchCase=\"'CHECK_BOX'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [rowId]=\"i\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-check-box-fields>\n <lib-date-time-fields\n *ngSwitchCase=\"'DATE_TIME'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-date-time-fields>\n <lib-drop-down-fields\n *ngSwitchCase=\"'DROP_DOWN'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngSwitchCase=\"'FILE_PICKER'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n (inlineDeleteFiles)=\"\n updateDeletedFiles(submission, grid.element, $event)\n \"\n ></lib-file-picker-fields>\n <lib-location-fields\n *ngSwitchCase=\"'LOCATION'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-location-fields>\n <lib-mail-fields\n *ngSwitchCase=\"'EMAIL'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-mail-fields>\n <lib-mobile-fields\n *ngSwitchCase=\"'MOBILE'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-mobile-fields>\n <lib-number-fields\n *ngSwitchCase=\"'NUMBER'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [rowId]=\"'0'\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-number-fields>\n <lib-password-fields\n *ngSwitchCase=\"'PASSWORD'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-password-fields>\n <lib-radio-button-fields\n *ngSwitchCase=\"'RADIO_BUTTON'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [rowId]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [inSubForm]=\"true\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [rowId]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-selection-matrix-fields>\n <lib-slider-fields\n *ngSwitchCase=\"'SLIDER'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-terms-and-condition-fields>\n <lib-text-area-fields\n *ngSwitchCase=\"'TEXT_AREA'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-text-area-fields>\n <lib-text-fields\n *ngSwitchCase=\"'TEXT_BOX'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-text-fields>\n <lib-toggle-switch-fields\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-toggle-switch-fields>\n <lib-url-fields\n *ngSwitchCase=\"'URL'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-url-fields>\n <lib-currency-fields\n *ngSwitchCase=\"'CURRENCY'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-currency-fields>\n <lib-hidden-field\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-hidden-field>\n <lib-iframe-fields\n *ngSwitchCase=\"'IFRAME_WIDGET'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n ></lib-iframe-fields>\n <lib-aggregate-function\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\n [question]=\"getSubmissionQuestion(submission,grid)\"\n [inCard]=\"true\"\n [submissionIndex]=\"i\"\n [rowId]=\"'0'\"\n [disableEdit]=\"isSubmissionEditable(submission,grid.element.id)\"\n (answerChange)=\"\n updateAnswer(submission, grid.element, $event)\n \"\n ></lib-aggregate-function>\n </div>\n\n <!-- <ng-container *ngIf=\"grid.element.childLogics\">\n <ng-container\n *ngIf=\"getComponentForChildLogics(grid.element.childLogics, 'child', grid.element.answer) as outlet\">\n <ng-container *ngComponentOutlet=\"outlet.component | async; injector: outlet.injector\">\n </ng-container>\n </ng-container>\n </ng-container> -->\n <ng-container *ngIf=\"grid?.element?.childLogics\">\n <ng-container *ngIf=\"componentToLoad\">\n <ng-container\n *ngComponentOutlet=\"\n componentToLoad;\n inputs: {\n grid: grid?.element?.childLogics,\n answer: grid?.element?.answer,\n state: 'child'\n }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"grid.entityType === 'SECTION'\">\n <lib-section-fields [section]=\"grid.element\"></lib-section-fields>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n\n<div class=\"subform-footer\">\n <button class=\"btn btn-primary\" (click)=\"addNewSubmission()\">{{addButtonLabel}}</button>\n</div>\n", styles: [".card-subform{background:#f9f6f6;border-radius:6px;padding:8px 0}.delete-icon{cursor:pointer;margin-right:10px;width:36px;height:36px;fill:none}.delete-icon path{stroke:#084fff;stroke-linecap:round;stroke-linejoin:round}.delete-icon rect{stroke:#d8d8d8;fill:#fff;width:35px;height:35px}.submissionScore{width:45px;height:37px;border-radius:6px;border:1px solid #c8c8c8;display:flex;justify-content:center;align-items:center;font-weight:500;text-align:center;padding:0}.submissionScore span{margin-top:5px}.submissionScore.good-score{border-color:#50f550}.submissionScore.bad-score{border-color:#f08080}\n"] }]
|
|
8866
|
+
}], ctorParameters: function () { return [{ type: ScoreCalculationService }, { type: WhenClauseService }, { type: HiddenFieldService }, { type: i1$3.MatDialog }]; }, propDecorators: { subForm: [{
|
|
8637
8867
|
type: Input
|
|
8638
8868
|
}], acceptedLanguage: [{
|
|
8639
8869
|
type: Input
|
|
@@ -8936,11 +9166,11 @@ class SubFormComponent {
|
|
|
8936
9166
|
}
|
|
8937
9167
|
}
|
|
8938
9168
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubFormComponent, deps: [{ token: SubformCopyService }, { token: i1$3.MatDialog }, { token: DataService }, { token: FormService }, { token: WhenClauseService }, { token: ValidationService }, { token: ScoreCalculationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8939
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SubFormComponent, selector: "lib-sub-form", inputs: { subForm: "subForm", edit: "edit", acceptedLanguage: "acceptedLanguage", pages: "pages" }, outputs: { subFormChange: "subFormChange" }, host: { listeners: { "click": "onAnyClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"outer-container mb-4 px-3\"\r\n [id]=\"'question-' + subForm.id\"\r\n [attr.name]=\"subForm.testElementName\"\r\n *ngIf=\"!subForm.deleted\"\r\n>\r\n <div class=\"body py-1 px-1\">\r\n <div class=\"tab-content pt-4 pb-3 px-3\">\r\n <ng-container *ngIf=\"!subForm.copied; else copySubformContainer\">\r\n <div class=\"subform-header\">\r\n <div class=\"data-container\">\r\n <p class=\"sectionTitle\">{{ subForm.title }}</p>\r\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\r\n </div>\r\n <div class=\"d-flex gap-3\">\r\n <div\r\n class=\"finalScore\"\r\n *ngFor=\"let s of subForm?.scores\"\r\n [ngClass]=\"{\r\n goodScore: s.scoreType === 'GOOD_SCORE',\r\n badScore: s.scoreType === 'BAD_SCORE'\r\n }\"\r\n >\r\n <span class=\"scoreTitle\">Score</span>\r\n <p class=\"mb-0\">{{ s.score }}</p>\r\n </div>\r\n <div class=\"icon-container\">\r\n <img\r\n src=\"assets/icons/copy-icon.svg\"\r\n alt=\"copy-icon\"\r\n (click)=\"copySubform()\"\r\n *ngIf=\"allowCopy\"\r\n />\r\n <img\r\n src=\"assets/icons/delete-icon.svg\"\r\n class=\"delete-icon ms-3\"\r\n alt=\"delete icon\"\r\n (click)=\"deleteMainSubform(subForm.id)\"\r\n *ngIf=\"allowDelete\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-template #copySubformContainer>\r\n <div class=\"d-flex justify-content-end gap-4\">\r\n <div\r\n class=\"finalScore\"\r\n *ngFor=\"let s of subForm?.scores\"\r\n [ngClass]=\"{\r\n goodScore: s.scoreType === 'GOOD_SCORE',\r\n badScore: s.scoreType === 'BAD_SCORE'\r\n }\"\r\n >\r\n <span class=\"scoreTitle\">Score</span>\r\n <p class=\"mb-0\">{{ s.score }}</p>\r\n </div>\r\n <div class=\"icon-container\" (click)=\"deleteCopySubform(subForm.id)\">\r\n <img\r\n src=\"assets/icons/delete-icon.svg\"\r\n class=\"delete-icon\"\r\n alt=\"delete icon\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"copy-subform-container mb-3\">\r\n <p>Title</p>\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"subformTitle\"\r\n (ngModelChange)=\"updateSubformData($event, subForm.id, 'title')\"\r\n />\r\n <p class=\"mt-3\">Description</p>\r\n <quill-editor\r\n [(ngModel)]=\"subformDescription\"\r\n (ngModelChange)=\"\r\n updateSubformData($event, subForm.id, 'description')\r\n \"\r\n (onEditorCreated)=\"editorCreated($event)\"\r\n class=\"editor\"\r\n placeholder=\"\"\r\n ></quill-editor>\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"subForm.property.subFormStructure == 'multiple'\">\r\n <lib-multiple-subform\r\n *ngIf=\"subForm.property.subFormType === 'table'\"\r\n [subForm]=\"subForm\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n ></lib-multiple-subform>\r\n\r\n <lib-inline-multiple-subform\r\n *ngIf=\"subForm.property.subFormType === 'inline'\"\r\n [subForm]=\"subForm\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n ></lib-inline-multiple-subform>\r\n <lib-card-subform\r\n *ngIf=\"subForm.property.subFormType === 'card'\"\r\n [subForm]=\"subForm\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n [edit]=\"edit\"\r\n ></lib-card-subform>\r\n </div>\r\n <div *ngIf=\"subForm.property.subFormStructure == 'single'\">\r\n <div *ngFor=\"let row of subForm.rows\">\r\n <div class=\"d-flex\">\r\n <div\r\n *ngFor=\"let grid of row.grid\"\r\n [ngStyle]=\"{ 'width.%': grid.element.count * (100 / 12) }\"\r\n >\r\n <div *ngIf=\"grid.entityType === 'QUESTION' && grid.show\">\r\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\r\n <lib-check-box-fields\r\n *ngSwitchCase=\"'CHECK_BOX'\"\r\n [question]=\"grid.element\"\r\n ></lib-check-box-fields>\r\n <lib-date-time-fields\r\n *ngSwitchCase=\"'DATE_TIME'\"\r\n [question]=\"grid.element\"\r\n ></lib-date-time-fields>\r\n <lib-drop-down-fields\r\n *ngSwitchCase=\"'DROP_DOWN'\"\r\n [question]=\"grid.element\"\r\n ></lib-drop-down-fields>\r\n <lib-file-picker-fields\r\n *ngSwitchCase=\"'FILE_PICKER'\"\r\n [question]=\"grid.element\"\r\n ></lib-file-picker-fields>\r\n <lib-location-fields\r\n *ngSwitchCase=\"'LOCATION'\"\r\n [question]=\"grid.element\"\r\n ></lib-location-fields>\r\n <lib-mail-fields\r\n *ngSwitchCase=\"'EMAIL'\"\r\n [question]=\"grid.element\"\r\n ></lib-mail-fields>\r\n <lib-mobile-fields\r\n *ngSwitchCase=\"'MOBILE'\"\r\n [question]=\"grid.element\"\r\n ></lib-mobile-fields>\r\n <lib-number-fields\r\n *ngSwitchCase=\"'NUMBER'\"\r\n [question]=\"grid.element\"\r\n [rowId]=\"'0'\"\r\n ></lib-number-fields>\r\n <lib-password-fields\r\n *ngSwitchCase=\"'PASSWORD'\"\r\n [question]=\"grid.element\"\r\n ></lib-password-fields>\r\n <lib-radio-button-fields\r\n *ngSwitchCase=\"'RADIO_BUTTON'\"\r\n [question]=\"grid.element\"\r\n ></lib-radio-button-fields>\r\n <lib-rich-text-editor-fields\r\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\r\n [question]=\"grid.element\"\r\n ></lib-rich-text-editor-fields>\r\n <lib-selection-matrix-fields\r\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\r\n [question]=\"grid.element\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n ></lib-selection-matrix-fields>\r\n <lib-signature-fields\r\n *ngSwitchCase=\"'SIGNATURE'\"\r\n [question]=\"grid.element\"\r\n ></lib-signature-fields>\r\n <lib-slider-fields\r\n *ngSwitchCase=\"'SLIDER'\"\r\n [question]=\"grid.element\"\r\n ></lib-slider-fields>\r\n <lib-terms-and-condition-fields\r\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\r\n [question]=\"grid.element\"\r\n ></lib-terms-and-condition-fields>\r\n <lib-text-area-fields\r\n *ngSwitchCase=\"'TEXT_AREA'\"\r\n [question]=\"grid.element\"\r\n ></lib-text-area-fields>\r\n <lib-text-fields\r\n *ngSwitchCase=\"'TEXT_BOX'\"\r\n [question]=\"grid.element\"\r\n ></lib-text-fields>\r\n <lib-toggle-switch-fields\r\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\r\n [question]=\"grid.element\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n ></lib-toggle-switch-fields>\r\n <lib-url-fields\r\n *ngSwitchCase=\"'URL'\"\r\n [question]=\"grid.element\"\r\n ></lib-url-fields>\r\n <lib-currency-fields\r\n *ngSwitchCase=\"'CURRENCY'\"\r\n [question]=\"grid.element\"\r\n ></lib-currency-fields>\r\n <lib-aggregate-function\r\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\r\n [question]=\"grid.element\"\r\n [rowId]=\"'0'\"\r\n ></lib-aggregate-function>\r\n <lib-hidden-field\r\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\r\n [question]=\"grid.element\"\r\n ></lib-hidden-field>\r\n <lib-iframe-fields\r\n *ngSwitchCase=\"'IFRAME_WIDGET'\"\r\n [question]=\"grid.element\"\r\n ></lib-iframe-fields>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"grid.element.childLogics\">\r\n <ng-container\r\n *ngIf=\"getComponentForChildLogics(grid.element.childLogics, 'child', grid.element.answer) as outlet\">\r\n <ng-container *ngComponentOutlet=\"outlet.component | async; injector: outlet.injector\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container> -->\r\n <ng-container *ngIf=\"grid?.element?.childLogics\">\r\n <ng-container *ngIf=\"componentToLoad\">\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n componentToLoad;\r\n inputs: {\r\n grid: grid?.element?.childLogics,\r\n answer: grid?.element?.answer,\r\n state: 'child'\r\n }\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"grid.entityType === 'SECTION' && grid.show\">\r\n <lib-section-fields\r\n [section]=\"grid.element\"\r\n ></lib-section-fields>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isInvalid\" class=\"error-message mt-4\">\r\n {{ errorMessage }}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".outer-container{background-color:#fff;position:relative}@media (max-width: 576px){.outer-container{padding:8px}}.body{position:relative;background:#efefef;border-radius:6px}.tab-content{background-color:#fff}.sectionTitle{font-size:19px;font-weight:700;margin-bottom:20px;word-break:break-word}.description{font-size:17px;font-weight:500;margin-bottom:18px;word-break:break-word}::ng-deep .description img{max-width:100%}.subform-header{display:flex;justify-content:space-between;margin-bottom:10px}.icon-container{cursor:pointer}.delete-icon{height:36px;width:36px}.finalScore{width:57px;height:52px;border-radius:6px;border:1px solid #c8c8c8;display:flex;flex-direction:column;justify-content:center;align-items:center;font-weight:500}.goodScore{border-color:#50f550}.badScore{border-color:#f08080}.scoreTitle{font-weight:400;font-size:14px;color:#2b2e3e80}.error-message{color:#f44336;font-size:1em;margin-top:4px;padding:0 8px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: ["question", "inLine"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SectionFieldsComponent, selector: "lib-section-fields", inputs: ["section"] }, { kind: "component", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "component", type: IframeFieldsComponent, selector: "lib-iframe-fields", inputs: ["question"] }, { kind: "component", type: i5$1.QuillEditorComponent, selector: "quill-editor" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MultipleSubformComponent, selector: "lib-multiple-subform", inputs: ["subForm", "acceptedLanguage"], outputs: ["subFormChange"] }, { kind: "component", type: InlineMultipleSubformComponent, selector: "lib-inline-multiple-subform", inputs: ["subForm", "acceptedLanguage"], outputs: ["subFormChange"] }, { kind: "component", type: CardSubformComponent, selector: "lib-card-subform", inputs: ["subForm", "acceptedLanguage", "edit"], outputs: ["subFormChange"] }] }); }
|
|
9169
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SubFormComponent, selector: "lib-sub-form", inputs: { subForm: "subForm", edit: "edit", acceptedLanguage: "acceptedLanguage", pages: "pages" }, outputs: { subFormChange: "subFormChange" }, host: { listeners: { "click": "onAnyClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"outer-container mb-4 px-3\"\n [id]=\"'question-' + subForm.id\"\n [attr.name]=\"subForm.testElementName\"\n *ngIf=\"!subForm.deleted\"\n>\n <div class=\"body py-1 px-1\">\n <div class=\"tab-content pt-4 pb-3 px-3\">\n <ng-container *ngIf=\"!subForm.copied; else copySubformContainer\">\n <div class=\"subform-header\">\n <div class=\"data-container\">\n <p class=\"sectionTitle\">{{ subForm.title }}</p>\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\n </div>\n <div class=\"d-flex gap-3\">\n <div\n class=\"finalScore\"\n *ngFor=\"let s of subForm?.scores\"\n [ngClass]=\"{\n goodScore: s.scoreType === 'GOOD_SCORE',\n badScore: s.scoreType === 'BAD_SCORE'\n }\"\n >\n <span class=\"scoreTitle\">Score</span>\n <p class=\"mb-0\">{{ s.score }}</p>\n </div>\n <div class=\"icon-container\">\n <img\n src=\"assets/icons/copy-icon.svg\"\n alt=\"copy-icon\"\n (click)=\"copySubform()\"\n *ngIf=\"allowCopy\"\n />\n <img\n src=\"assets/icons/delete-icon.svg\"\n class=\"delete-icon ms-3\"\n alt=\"delete icon\"\n (click)=\"deleteMainSubform(subForm.id)\"\n *ngIf=\"allowDelete\"\n />\n </div>\n </div>\n </div>\n </ng-container>\n <ng-template #copySubformContainer>\n <div class=\"d-flex justify-content-end gap-4\">\n <ng-container *ngIf=\"subForm?.scores?.length\">\n <div\n class=\"finalScore\"\n *ngFor=\"let s of subForm?.scores\"\n [ngClass]=\"{\n goodScore: s.scoreType === 'GOOD_SCORE',\n badScore: s.scoreType === 'BAD_SCORE'\n }\"\n >\n <span class=\"scoreTitle\">Score</span>\n <p class=\"mb-0\">{{ s?.score }}</p>\n </div>\n </ng-container>\n <div class=\"icon-container\" (click)=\"deleteCopySubform(subForm.id)\">\n <img\n src=\"assets/icons/delete-icon.svg\"\n class=\"delete-icon\"\n alt=\"delete icon\"\n />\n </div>\n </div>\n <div class=\"copy-subform-container mb-3\">\n <p>Title</p>\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"subformTitle\"\n (ngModelChange)=\"updateSubformData($event, subForm.id, 'title')\"\n />\n <p class=\"mt-3\">Description</p>\n <quill-editor\n [(ngModel)]=\"subformDescription\"\n (ngModelChange)=\"\n updateSubformData($event, subForm.id, 'description')\n \"\n (onEditorCreated)=\"editorCreated($event)\"\n class=\"editor\"\n placeholder=\"\"\n ></quill-editor>\n </div>\n </ng-template>\n\n <div *ngIf=\"subForm.property.subFormStructure == 'multiple'\">\n <lib-multiple-subform\n *ngIf=\"subForm.property.subFormType === 'table'\"\n [subForm]=\"subForm\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-multiple-subform>\n\n <lib-inline-multiple-subform\n *ngIf=\"subForm.property.subFormType === 'inline'\"\n [subForm]=\"subForm\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-inline-multiple-subform>\n <lib-card-subform\n *ngIf=\"subForm.property.subFormType === 'card'\"\n [subForm]=\"subForm\"\n [acceptedLanguage]=\"acceptedLanguage\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n [edit]=\"edit\"\n ></lib-card-subform>\n </div>\n <div *ngIf=\"subForm.property.subFormStructure == 'single'\">\n <div *ngFor=\"let row of subForm.rows\">\n <div class=\"d-flex\">\n <div\n *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{ 'width.%': grid.element.count * (100 / 12) }\"\n >\n <div *ngIf=\"grid.entityType === 'QUESTION' && grid.show\">\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\n <lib-check-box-fields\n *ngSwitchCase=\"'CHECK_BOX'\"\n [question]=\"grid.element\"\n ></lib-check-box-fields>\n <lib-date-time-fields\n *ngSwitchCase=\"'DATE_TIME'\"\n [question]=\"grid.element\"\n ></lib-date-time-fields>\n <lib-drop-down-fields\n *ngSwitchCase=\"'DROP_DOWN'\"\n [question]=\"grid.element\"\n ></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngSwitchCase=\"'FILE_PICKER'\"\n [question]=\"grid.element\"\n ></lib-file-picker-fields>\n <lib-location-fields\n *ngSwitchCase=\"'LOCATION'\"\n [question]=\"grid.element\"\n ></lib-location-fields>\n <lib-mail-fields\n *ngSwitchCase=\"'EMAIL'\"\n [question]=\"grid.element\"\n ></lib-mail-fields>\n <lib-mobile-fields\n *ngSwitchCase=\"'MOBILE'\"\n [question]=\"grid.element\"\n ></lib-mobile-fields>\n <lib-number-fields\n *ngSwitchCase=\"'NUMBER'\"\n [question]=\"grid.element\"\n [rowId]=\"'0'\"\n ></lib-number-fields>\n <lib-password-fields\n *ngSwitchCase=\"'PASSWORD'\"\n [question]=\"grid.element\"\n ></lib-password-fields>\n <lib-radio-button-fields\n *ngSwitchCase=\"'RADIO_BUTTON'\"\n [question]=\"grid.element\"\n ></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n [question]=\"grid.element\"\n ></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\n [question]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-selection-matrix-fields>\n <lib-signature-fields\n *ngSwitchCase=\"'SIGNATURE'\"\n [question]=\"grid.element\"\n ></lib-signature-fields>\n <lib-slider-fields\n *ngSwitchCase=\"'SLIDER'\"\n [question]=\"grid.element\"\n ></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n [question]=\"grid.element\"\n ></lib-terms-and-condition-fields>\n <lib-text-area-fields\n *ngSwitchCase=\"'TEXT_AREA'\"\n [question]=\"grid.element\"\n ></lib-text-area-fields>\n <lib-text-fields\n *ngSwitchCase=\"'TEXT_BOX'\"\n [question]=\"grid.element\"\n ></lib-text-fields>\n <lib-toggle-switch-fields\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n [question]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-toggle-switch-fields>\n <lib-url-fields\n *ngSwitchCase=\"'URL'\"\n [question]=\"grid.element\"\n ></lib-url-fields>\n <lib-currency-fields\n *ngSwitchCase=\"'CURRENCY'\"\n [question]=\"grid.element\"\n ></lib-currency-fields>\n <lib-aggregate-function\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\n [question]=\"grid.element\"\n [rowId]=\"'0'\"\n ></lib-aggregate-function>\n <lib-hidden-field\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\n [question]=\"grid.element\"\n ></lib-hidden-field>\n <lib-iframe-fields\n *ngSwitchCase=\"'IFRAME_WIDGET'\"\n [question]=\"grid.element\"\n ></lib-iframe-fields>\n </div>\n\n <!-- <ng-container *ngIf=\"grid.element.childLogics\">\n <ng-container\n *ngIf=\"getComponentForChildLogics(grid.element.childLogics, 'child', grid.element.answer) as outlet\">\n <ng-container *ngComponentOutlet=\"outlet.component | async; injector: outlet.injector\">\n </ng-container>\n </ng-container>\n </ng-container> -->\n <ng-container *ngIf=\"grid?.element?.childLogics\">\n <ng-container *ngIf=\"componentToLoad\">\n <ng-container\n *ngComponentOutlet=\"\n componentToLoad;\n inputs: {\n grid: grid?.element?.childLogics,\n answer: grid?.element?.answer,\n state: 'child'\n }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"grid.entityType === 'SECTION' && grid.show\">\n <lib-section-fields\n [section]=\"grid.element\"\n ></lib-section-fields>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"isInvalid\" class=\"error-message mt-4\">\n {{ errorMessage }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;position:relative}@media (max-width: 576px){.outer-container{padding:8px}}.body{position:relative;background:#efefef;border-radius:6px}.tab-content{background-color:#fff}.sectionTitle{font-size:19px;font-weight:700;margin-bottom:20px;word-break:break-word}.description{font-size:17px;font-weight:500;margin-bottom:18px;word-break:break-word}::ng-deep .description img{max-width:100%}.subform-header{display:flex;justify-content:space-between;margin-bottom:10px}.icon-container{cursor:pointer}.delete-icon{height:36px;width:36px}.finalScore{width:57px;height:52px;border-radius:6px;border:1px solid #c8c8c8;display:flex;flex-direction:column;justify-content:center;align-items:center;font-weight:500}.goodScore{border-color:#50f550}.badScore{border-color:#f08080}.scoreTitle{font-weight:400;font-size:14px;color:#2b2e3e80}.error-message{color:#f44336;font-size:1em;margin-top:4px;padding:0 8px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: ["question", "inLine"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SectionFieldsComponent, selector: "lib-section-fields", inputs: ["section"] }, { kind: "component", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "component", type: IframeFieldsComponent, selector: "lib-iframe-fields", inputs: ["question"] }, { kind: "component", type: i6.QuillEditorComponent, selector: "quill-editor" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MultipleSubformComponent, selector: "lib-multiple-subform", inputs: ["subForm", "acceptedLanguage"], outputs: ["subFormChange"] }, { kind: "component", type: InlineMultipleSubformComponent, selector: "lib-inline-multiple-subform", inputs: ["subForm", "acceptedLanguage"], outputs: ["subFormChange"] }, { kind: "component", type: CardSubformComponent, selector: "lib-card-subform", inputs: ["subForm", "acceptedLanguage", "edit"], outputs: ["subFormChange"] }] }); }
|
|
8940
9170
|
}
|
|
8941
9171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubFormComponent, decorators: [{
|
|
8942
9172
|
type: Component,
|
|
8943
|
-
args: [{ selector: 'lib-sub-form', template: "<div\r\n class=\"outer-container mb-4 px-3\"\r\n [id]=\"'question-' + subForm.id\"\r\n [attr.name]=\"subForm.testElementName\"\r\n *ngIf=\"!subForm.deleted\"\r\n>\r\n <div class=\"body py-1 px-1\">\r\n <div class=\"tab-content pt-4 pb-3 px-3\">\r\n <ng-container *ngIf=\"!subForm.copied; else copySubformContainer\">\r\n <div class=\"subform-header\">\r\n <div class=\"data-container\">\r\n <p class=\"sectionTitle\">{{ subForm.title }}</p>\r\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\r\n </div>\r\n <div class=\"d-flex gap-3\">\r\n <div\r\n class=\"finalScore\"\r\n *ngFor=\"let s of subForm?.scores\"\r\n [ngClass]=\"{\r\n goodScore: s.scoreType === 'GOOD_SCORE',\r\n badScore: s.scoreType === 'BAD_SCORE'\r\n }\"\r\n >\r\n <span class=\"scoreTitle\">Score</span>\r\n <p class=\"mb-0\">{{ s.score }}</p>\r\n </div>\r\n <div class=\"icon-container\">\r\n <img\r\n src=\"assets/icons/copy-icon.svg\"\r\n alt=\"copy-icon\"\r\n (click)=\"copySubform()\"\r\n *ngIf=\"allowCopy\"\r\n />\r\n <img\r\n src=\"assets/icons/delete-icon.svg\"\r\n class=\"delete-icon ms-3\"\r\n alt=\"delete icon\"\r\n (click)=\"deleteMainSubform(subForm.id)\"\r\n *ngIf=\"allowDelete\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-template #copySubformContainer>\r\n <div class=\"d-flex justify-content-end gap-4\">\r\n <div\r\n class=\"finalScore\"\r\n *ngFor=\"let s of subForm?.scores\"\r\n [ngClass]=\"{\r\n goodScore: s.scoreType === 'GOOD_SCORE',\r\n badScore: s.scoreType === 'BAD_SCORE'\r\n }\"\r\n >\r\n <span class=\"scoreTitle\">Score</span>\r\n <p class=\"mb-0\">{{ s.score }}</p>\r\n </div>\r\n <div class=\"icon-container\" (click)=\"deleteCopySubform(subForm.id)\">\r\n <img\r\n src=\"assets/icons/delete-icon.svg\"\r\n class=\"delete-icon\"\r\n alt=\"delete icon\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"copy-subform-container mb-3\">\r\n <p>Title</p>\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"subformTitle\"\r\n (ngModelChange)=\"updateSubformData($event, subForm.id, 'title')\"\r\n />\r\n <p class=\"mt-3\">Description</p>\r\n <quill-editor\r\n [(ngModel)]=\"subformDescription\"\r\n (ngModelChange)=\"\r\n updateSubformData($event, subForm.id, 'description')\r\n \"\r\n (onEditorCreated)=\"editorCreated($event)\"\r\n class=\"editor\"\r\n placeholder=\"\"\r\n ></quill-editor>\r\n </div>\r\n </ng-template>\r\n\r\n <div *ngIf=\"subForm.property.subFormStructure == 'multiple'\">\r\n <lib-multiple-subform\r\n *ngIf=\"subForm.property.subFormType === 'table'\"\r\n [subForm]=\"subForm\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n ></lib-multiple-subform>\r\n\r\n <lib-inline-multiple-subform\r\n *ngIf=\"subForm.property.subFormType === 'inline'\"\r\n [subForm]=\"subForm\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n ></lib-inline-multiple-subform>\r\n <lib-card-subform\r\n *ngIf=\"subForm.property.subFormType === 'card'\"\r\n [subForm]=\"subForm\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n [edit]=\"edit\"\r\n ></lib-card-subform>\r\n </div>\r\n <div *ngIf=\"subForm.property.subFormStructure == 'single'\">\r\n <div *ngFor=\"let row of subForm.rows\">\r\n <div class=\"d-flex\">\r\n <div\r\n *ngFor=\"let grid of row.grid\"\r\n [ngStyle]=\"{ 'width.%': grid.element.count * (100 / 12) }\"\r\n >\r\n <div *ngIf=\"grid.entityType === 'QUESTION' && grid.show\">\r\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\r\n <lib-check-box-fields\r\n *ngSwitchCase=\"'CHECK_BOX'\"\r\n [question]=\"grid.element\"\r\n ></lib-check-box-fields>\r\n <lib-date-time-fields\r\n *ngSwitchCase=\"'DATE_TIME'\"\r\n [question]=\"grid.element\"\r\n ></lib-date-time-fields>\r\n <lib-drop-down-fields\r\n *ngSwitchCase=\"'DROP_DOWN'\"\r\n [question]=\"grid.element\"\r\n ></lib-drop-down-fields>\r\n <lib-file-picker-fields\r\n *ngSwitchCase=\"'FILE_PICKER'\"\r\n [question]=\"grid.element\"\r\n ></lib-file-picker-fields>\r\n <lib-location-fields\r\n *ngSwitchCase=\"'LOCATION'\"\r\n [question]=\"grid.element\"\r\n ></lib-location-fields>\r\n <lib-mail-fields\r\n *ngSwitchCase=\"'EMAIL'\"\r\n [question]=\"grid.element\"\r\n ></lib-mail-fields>\r\n <lib-mobile-fields\r\n *ngSwitchCase=\"'MOBILE'\"\r\n [question]=\"grid.element\"\r\n ></lib-mobile-fields>\r\n <lib-number-fields\r\n *ngSwitchCase=\"'NUMBER'\"\r\n [question]=\"grid.element\"\r\n [rowId]=\"'0'\"\r\n ></lib-number-fields>\r\n <lib-password-fields\r\n *ngSwitchCase=\"'PASSWORD'\"\r\n [question]=\"grid.element\"\r\n ></lib-password-fields>\r\n <lib-radio-button-fields\r\n *ngSwitchCase=\"'RADIO_BUTTON'\"\r\n [question]=\"grid.element\"\r\n ></lib-radio-button-fields>\r\n <lib-rich-text-editor-fields\r\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\r\n [question]=\"grid.element\"\r\n ></lib-rich-text-editor-fields>\r\n <lib-selection-matrix-fields\r\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\r\n [question]=\"grid.element\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n ></lib-selection-matrix-fields>\r\n <lib-signature-fields\r\n *ngSwitchCase=\"'SIGNATURE'\"\r\n [question]=\"grid.element\"\r\n ></lib-signature-fields>\r\n <lib-slider-fields\r\n *ngSwitchCase=\"'SLIDER'\"\r\n [question]=\"grid.element\"\r\n ></lib-slider-fields>\r\n <lib-terms-and-condition-fields\r\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\r\n [question]=\"grid.element\"\r\n ></lib-terms-and-condition-fields>\r\n <lib-text-area-fields\r\n *ngSwitchCase=\"'TEXT_AREA'\"\r\n [question]=\"grid.element\"\r\n ></lib-text-area-fields>\r\n <lib-text-fields\r\n *ngSwitchCase=\"'TEXT_BOX'\"\r\n [question]=\"grid.element\"\r\n ></lib-text-fields>\r\n <lib-toggle-switch-fields\r\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\r\n [question]=\"grid.element\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n ></lib-toggle-switch-fields>\r\n <lib-url-fields\r\n *ngSwitchCase=\"'URL'\"\r\n [question]=\"grid.element\"\r\n ></lib-url-fields>\r\n <lib-currency-fields\r\n *ngSwitchCase=\"'CURRENCY'\"\r\n [question]=\"grid.element\"\r\n ></lib-currency-fields>\r\n <lib-aggregate-function\r\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\r\n [question]=\"grid.element\"\r\n [rowId]=\"'0'\"\r\n ></lib-aggregate-function>\r\n <lib-hidden-field\r\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\r\n [question]=\"grid.element\"\r\n ></lib-hidden-field>\r\n <lib-iframe-fields\r\n *ngSwitchCase=\"'IFRAME_WIDGET'\"\r\n [question]=\"grid.element\"\r\n ></lib-iframe-fields>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"grid.element.childLogics\">\r\n <ng-container\r\n *ngIf=\"getComponentForChildLogics(grid.element.childLogics, 'child', grid.element.answer) as outlet\">\r\n <ng-container *ngComponentOutlet=\"outlet.component | async; injector: outlet.injector\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container> -->\r\n <ng-container *ngIf=\"grid?.element?.childLogics\">\r\n <ng-container *ngIf=\"componentToLoad\">\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n componentToLoad;\r\n inputs: {\r\n grid: grid?.element?.childLogics,\r\n answer: grid?.element?.answer,\r\n state: 'child'\r\n }\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"grid.entityType === 'SECTION' && grid.show\">\r\n <lib-section-fields\r\n [section]=\"grid.element\"\r\n ></lib-section-fields>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isInvalid\" class=\"error-message mt-4\">\r\n {{ errorMessage }}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".outer-container{background-color:#fff;position:relative}@media (max-width: 576px){.outer-container{padding:8px}}.body{position:relative;background:#efefef;border-radius:6px}.tab-content{background-color:#fff}.sectionTitle{font-size:19px;font-weight:700;margin-bottom:20px;word-break:break-word}.description{font-size:17px;font-weight:500;margin-bottom:18px;word-break:break-word}::ng-deep .description img{max-width:100%}.subform-header{display:flex;justify-content:space-between;margin-bottom:10px}.icon-container{cursor:pointer}.delete-icon{height:36px;width:36px}.finalScore{width:57px;height:52px;border-radius:6px;border:1px solid #c8c8c8;display:flex;flex-direction:column;justify-content:center;align-items:center;font-weight:500}.goodScore{border-color:#50f550}.badScore{border-color:#f08080}.scoreTitle{font-weight:400;font-size:14px;color:#2b2e3e80}.error-message{color:#f44336;font-size:1em;margin-top:4px;padding:0 8px}\n"] }]
|
|
9173
|
+
args: [{ selector: 'lib-sub-form', template: "<div\n class=\"outer-container mb-4 px-3\"\n [id]=\"'question-' + subForm.id\"\n [attr.name]=\"subForm.testElementName\"\n *ngIf=\"!subForm.deleted\"\n>\n <div class=\"body py-1 px-1\">\n <div class=\"tab-content pt-4 pb-3 px-3\">\n <ng-container *ngIf=\"!subForm.copied; else copySubformContainer\">\n <div class=\"subform-header\">\n <div class=\"data-container\">\n <p class=\"sectionTitle\">{{ subForm.title }}</p>\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\n </div>\n <div class=\"d-flex gap-3\">\n <div\n class=\"finalScore\"\n *ngFor=\"let s of subForm?.scores\"\n [ngClass]=\"{\n goodScore: s.scoreType === 'GOOD_SCORE',\n badScore: s.scoreType === 'BAD_SCORE'\n }\"\n >\n <span class=\"scoreTitle\">Score</span>\n <p class=\"mb-0\">{{ s.score }}</p>\n </div>\n <div class=\"icon-container\">\n <img\n src=\"assets/icons/copy-icon.svg\"\n alt=\"copy-icon\"\n (click)=\"copySubform()\"\n *ngIf=\"allowCopy\"\n />\n <img\n src=\"assets/icons/delete-icon.svg\"\n class=\"delete-icon ms-3\"\n alt=\"delete icon\"\n (click)=\"deleteMainSubform(subForm.id)\"\n *ngIf=\"allowDelete\"\n />\n </div>\n </div>\n </div>\n </ng-container>\n <ng-template #copySubformContainer>\n <div class=\"d-flex justify-content-end gap-4\">\n <ng-container *ngIf=\"subForm?.scores?.length\">\n <div\n class=\"finalScore\"\n *ngFor=\"let s of subForm?.scores\"\n [ngClass]=\"{\n goodScore: s.scoreType === 'GOOD_SCORE',\n badScore: s.scoreType === 'BAD_SCORE'\n }\"\n >\n <span class=\"scoreTitle\">Score</span>\n <p class=\"mb-0\">{{ s?.score }}</p>\n </div>\n </ng-container>\n <div class=\"icon-container\" (click)=\"deleteCopySubform(subForm.id)\">\n <img\n src=\"assets/icons/delete-icon.svg\"\n class=\"delete-icon\"\n alt=\"delete icon\"\n />\n </div>\n </div>\n <div class=\"copy-subform-container mb-3\">\n <p>Title</p>\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"subformTitle\"\n (ngModelChange)=\"updateSubformData($event, subForm.id, 'title')\"\n />\n <p class=\"mt-3\">Description</p>\n <quill-editor\n [(ngModel)]=\"subformDescription\"\n (ngModelChange)=\"\n updateSubformData($event, subForm.id, 'description')\n \"\n (onEditorCreated)=\"editorCreated($event)\"\n class=\"editor\"\n placeholder=\"\"\n ></quill-editor>\n </div>\n </ng-template>\n\n <div *ngIf=\"subForm.property.subFormStructure == 'multiple'\">\n <lib-multiple-subform\n *ngIf=\"subForm.property.subFormType === 'table'\"\n [subForm]=\"subForm\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-multiple-subform>\n\n <lib-inline-multiple-subform\n *ngIf=\"subForm.property.subFormType === 'inline'\"\n [subForm]=\"subForm\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-inline-multiple-subform>\n <lib-card-subform\n *ngIf=\"subForm.property.subFormType === 'card'\"\n [subForm]=\"subForm\"\n [acceptedLanguage]=\"acceptedLanguage\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n [edit]=\"edit\"\n ></lib-card-subform>\n </div>\n <div *ngIf=\"subForm.property.subFormStructure == 'single'\">\n <div *ngFor=\"let row of subForm.rows\">\n <div class=\"d-flex\">\n <div\n *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{ 'width.%': grid.element.count * (100 / 12) }\"\n >\n <div *ngIf=\"grid.entityType === 'QUESTION' && grid.show\">\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\n <lib-check-box-fields\n *ngSwitchCase=\"'CHECK_BOX'\"\n [question]=\"grid.element\"\n ></lib-check-box-fields>\n <lib-date-time-fields\n *ngSwitchCase=\"'DATE_TIME'\"\n [question]=\"grid.element\"\n ></lib-date-time-fields>\n <lib-drop-down-fields\n *ngSwitchCase=\"'DROP_DOWN'\"\n [question]=\"grid.element\"\n ></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngSwitchCase=\"'FILE_PICKER'\"\n [question]=\"grid.element\"\n ></lib-file-picker-fields>\n <lib-location-fields\n *ngSwitchCase=\"'LOCATION'\"\n [question]=\"grid.element\"\n ></lib-location-fields>\n <lib-mail-fields\n *ngSwitchCase=\"'EMAIL'\"\n [question]=\"grid.element\"\n ></lib-mail-fields>\n <lib-mobile-fields\n *ngSwitchCase=\"'MOBILE'\"\n [question]=\"grid.element\"\n ></lib-mobile-fields>\n <lib-number-fields\n *ngSwitchCase=\"'NUMBER'\"\n [question]=\"grid.element\"\n [rowId]=\"'0'\"\n ></lib-number-fields>\n <lib-password-fields\n *ngSwitchCase=\"'PASSWORD'\"\n [question]=\"grid.element\"\n ></lib-password-fields>\n <lib-radio-button-fields\n *ngSwitchCase=\"'RADIO_BUTTON'\"\n [question]=\"grid.element\"\n ></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n [question]=\"grid.element\"\n ></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\n [question]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-selection-matrix-fields>\n <lib-signature-fields\n *ngSwitchCase=\"'SIGNATURE'\"\n [question]=\"grid.element\"\n ></lib-signature-fields>\n <lib-slider-fields\n *ngSwitchCase=\"'SLIDER'\"\n [question]=\"grid.element\"\n ></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n [question]=\"grid.element\"\n ></lib-terms-and-condition-fields>\n <lib-text-area-fields\n *ngSwitchCase=\"'TEXT_AREA'\"\n [question]=\"grid.element\"\n ></lib-text-area-fields>\n <lib-text-fields\n *ngSwitchCase=\"'TEXT_BOX'\"\n [question]=\"grid.element\"\n ></lib-text-fields>\n <lib-toggle-switch-fields\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n [question]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-toggle-switch-fields>\n <lib-url-fields\n *ngSwitchCase=\"'URL'\"\n [question]=\"grid.element\"\n ></lib-url-fields>\n <lib-currency-fields\n *ngSwitchCase=\"'CURRENCY'\"\n [question]=\"grid.element\"\n ></lib-currency-fields>\n <lib-aggregate-function\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\n [question]=\"grid.element\"\n [rowId]=\"'0'\"\n ></lib-aggregate-function>\n <lib-hidden-field\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\n [question]=\"grid.element\"\n ></lib-hidden-field>\n <lib-iframe-fields\n *ngSwitchCase=\"'IFRAME_WIDGET'\"\n [question]=\"grid.element\"\n ></lib-iframe-fields>\n </div>\n\n <!-- <ng-container *ngIf=\"grid.element.childLogics\">\n <ng-container\n *ngIf=\"getComponentForChildLogics(grid.element.childLogics, 'child', grid.element.answer) as outlet\">\n <ng-container *ngComponentOutlet=\"outlet.component | async; injector: outlet.injector\">\n </ng-container>\n </ng-container>\n </ng-container> -->\n <ng-container *ngIf=\"grid?.element?.childLogics\">\n <ng-container *ngIf=\"componentToLoad\">\n <ng-container\n *ngComponentOutlet=\"\n componentToLoad;\n inputs: {\n grid: grid?.element?.childLogics,\n answer: grid?.element?.answer,\n state: 'child'\n }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"grid.entityType === 'SECTION' && grid.show\">\n <lib-section-fields\n [section]=\"grid.element\"\n ></lib-section-fields>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"isInvalid\" class=\"error-message mt-4\">\n {{ errorMessage }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;position:relative}@media (max-width: 576px){.outer-container{padding:8px}}.body{position:relative;background:#efefef;border-radius:6px}.tab-content{background-color:#fff}.sectionTitle{font-size:19px;font-weight:700;margin-bottom:20px;word-break:break-word}.description{font-size:17px;font-weight:500;margin-bottom:18px;word-break:break-word}::ng-deep .description img{max-width:100%}.subform-header{display:flex;justify-content:space-between;margin-bottom:10px}.icon-container{cursor:pointer}.delete-icon{height:36px;width:36px}.finalScore{width:57px;height:52px;border-radius:6px;border:1px solid #c8c8c8;display:flex;flex-direction:column;justify-content:center;align-items:center;font-weight:500}.goodScore{border-color:#50f550}.badScore{border-color:#f08080}.scoreTitle{font-weight:400;font-size:14px;color:#2b2e3e80}.error-message{color:#f44336;font-size:1em;margin-top:4px;padding:0 8px}\n"] }]
|
|
8944
9174
|
}], ctorParameters: function () { return [{ type: SubformCopyService }, { type: i1$3.MatDialog }, { type: DataService }, { type: FormService }, { type: WhenClauseService }, { type: ValidationService }, { type: ScoreCalculationService }]; }, propDecorators: { subForm: [{
|
|
8945
9175
|
type: Input
|
|
8946
9176
|
}], edit: [{
|
|
@@ -9018,11 +9248,11 @@ class QuestionGroupComponent {
|
|
|
9018
9248
|
});
|
|
9019
9249
|
}
|
|
9020
9250
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuestionGroupComponent, deps: [{ token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9021
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: QuestionGroupComponent, selector: "lib-question-group", inputs: { questionGroup: "questionGroup", edit: "edit", acceptedLanguage: "acceptedLanguage" }, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"outer-container mb-4 px-3\"\r\n [attr.name]=\"questionGroup.testElementName\"\r\n [id]=\"'question-' + questionGroup.id\"\r\n>\r\n <div class=\"body container pt-3 pb-3 px-3\">\r\n <div class=\"tab-content pt-4 pb-3 px-3\">\r\n <p class=\"sectionTitle\">{{ questionGroup.title }}</p>\r\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\r\n\r\n <div class=\"mt-5\">\r\n <div *ngFor=\"let row of questionGroup.rows\">\r\n <div class=\"d-flex\">\r\n <div\r\n *ngFor=\"let grid of row.grid\"\r\n [ngStyle]=\"{ 'width.%': grid.element.count * (100 / 12) }\"\r\n >\r\n <div *ngIf=\"grid.entityType === 'QUESTION' && grid.show\">\r\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\r\n <lib-check-box-fields\r\n *ngSwitchCase=\"'CHECK_BOX'\"\r\n [question]=\"grid.element\"\r\n ></lib-check-box-fields>\r\n <lib-date-time-fields\r\n *ngSwitchCase=\"'DATE_TIME'\"\r\n [question]=\"grid.element\"\r\n ></lib-date-time-fields>\r\n <lib-drop-down-fields\r\n *ngSwitchCase=\"'DROP_DOWN'\"\r\n [question]=\"grid.element\"\r\n ></lib-drop-down-fields>\r\n <lib-file-picker-fields\r\n *ngSwitchCase=\"'FILE_PICKER'\"\r\n [question]=\"grid.element\"\r\n ></lib-file-picker-fields>\r\n <lib-location-fields\r\n *ngSwitchCase=\"'LOCATION'\"\r\n [question]=\"grid.element\"\r\n ></lib-location-fields>\r\n <lib-mail-fields\r\n *ngSwitchCase=\"'EMAIL'\"\r\n [question]=\"grid.element\"\r\n ></lib-mail-fields>\r\n <lib-mobile-fields\r\n *ngSwitchCase=\"'MOBILE'\"\r\n [question]=\"grid.element\"\r\n ></lib-mobile-fields>\r\n <lib-number-fields\r\n *ngSwitchCase=\"'NUMBER'\"\r\n [question]=\"grid.element\"\r\n [rowId]=\"'0'\"\r\n ></lib-number-fields>\r\n <lib-password-fields\r\n *ngSwitchCase=\"'PASSWORD'\"\r\n [question]=\"grid.element\"\r\n ></lib-password-fields>\r\n <lib-radio-button-fields\r\n *ngSwitchCase=\"'RADIO_BUTTON'\"\r\n [question]=\"grid.element\"\r\n ></lib-radio-button-fields>\r\n <lib-rich-text-editor-fields\r\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\r\n [question]=\"grid.element\"\r\n ></lib-rich-text-editor-fields>\r\n <lib-selection-matrix-fields\r\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\r\n [question]=\"grid.element\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n ></lib-selection-matrix-fields>\r\n <lib-signature-fields\r\n *ngSwitchCase=\"'SIGNATURE'\"\r\n [question]=\"grid.element\"\r\n ></lib-signature-fields>\r\n <lib-slider-fields\r\n *ngSwitchCase=\"'SLIDER'\"\r\n [question]=\"grid.element\"\r\n ></lib-slider-fields>\r\n <lib-terms-and-condition-fields\r\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\r\n [question]=\"grid.element\"\r\n ></lib-terms-and-condition-fields>\r\n <lib-text-area-fields\r\n *ngSwitchCase=\"'TEXT_AREA'\"\r\n [question]=\"grid.element\"\r\n ></lib-text-area-fields>\r\n <lib-text-fields\r\n *ngSwitchCase=\"'TEXT_BOX'\"\r\n [question]=\"grid.element\"\r\n ></lib-text-fields>\r\n <lib-toggle-switch-fields\r\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\r\n [question]=\"grid.element\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n ></lib-toggle-switch-fields>\r\n <lib-url-fields\r\n *ngSwitchCase=\"'URL'\"\r\n [question]=\"grid.element\"\r\n ></lib-url-fields>\r\n <lib-currency-fields\r\n *ngSwitchCase=\"'CURRENCY'\"\r\n [question]=\"grid.element\"\r\n ></lib-currency-fields>\r\n <lib-aggregate-function\r\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\r\n [question]=\"grid.element\"\r\n [rowId]=\"'0'\"\r\n ></lib-aggregate-function>\r\n <lib-hidden-field\r\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\r\n [question]=\"grid.element\"\r\n ></lib-hidden-field>\r\n <lib-iframe-fields\r\n *ngSwitchCase=\"'IFRAME_WIDGET'\"\r\n [question]=\"grid.element\"\r\n ></lib-iframe-fields>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"grid.element.childLogics\">\r\n <ng-container *ngIf=\"getComponentForChildLogics(grid.element.childLogics, 'child', grid.element.answer) as cached\">\r\n <ng-container\r\n *ngComponentOutlet=\"cached.component | async; injector: cached.injector\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container> -->\r\n\r\n <ng-container *ngIf=\"grid?.element?.childLogics\">\r\n <ng-container *ngIf=\"componentToLoad\">\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n componentToLoad;\r\n inputs: {\r\n grid: grid?.element?.childLogics,\r\n answer: grid?.element?.answer,\r\n state: 'child'\r\n }\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".outer-container{background-color:#fff;position:relative}@media (max-width: 576px){.outer-container{padding:8px}}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}.tab-content{background-color:#fff}.sectionTitle{font-size:19px;font-weight:700;margin-bottom:20px;word-break:break-word}.description{font-size:17px;font-weight:500;margin-bottom:18px;word-break:break-word}::ng-deep .description img{max-width:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: ["question", "inLine"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "component", type: IframeFieldsComponent, selector: "lib-iframe-fields", inputs: ["question"] }] }); }
|
|
9251
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: QuestionGroupComponent, selector: "lib-question-group", inputs: { questionGroup: "questionGroup", edit: "edit", acceptedLanguage: "acceptedLanguage" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"outer-container mb-4 px-3\"\n [attr.name]=\"questionGroup.testElementName\"\n [id]=\"'question-' + questionGroup.id\"\n>\n <div class=\"body container pt-3 pb-3 px-3\">\n <div class=\"tab-content pt-4 pb-3 px-3\">\n <p class=\"sectionTitle\">{{ questionGroup.title }}</p>\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\n\n <div class=\"mt-5\">\n <div *ngFor=\"let row of questionGroup.rows\">\n <div class=\"d-flex\">\n <div\n *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{ 'width.%': grid.element.count * (100 / 12) }\"\n >\n <div *ngIf=\"grid.entityType === 'QUESTION' && grid.show\">\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\n <lib-check-box-fields\n *ngSwitchCase=\"'CHECK_BOX'\"\n [question]=\"grid.element\"\n ></lib-check-box-fields>\n <lib-date-time-fields\n *ngSwitchCase=\"'DATE_TIME'\"\n [question]=\"grid.element\"\n ></lib-date-time-fields>\n <lib-drop-down-fields\n *ngSwitchCase=\"'DROP_DOWN'\"\n [question]=\"grid.element\"\n ></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngSwitchCase=\"'FILE_PICKER'\"\n [question]=\"grid.element\"\n ></lib-file-picker-fields>\n <lib-location-fields\n *ngSwitchCase=\"'LOCATION'\"\n [question]=\"grid.element\"\n ></lib-location-fields>\n <lib-mail-fields\n *ngSwitchCase=\"'EMAIL'\"\n [question]=\"grid.element\"\n ></lib-mail-fields>\n <lib-mobile-fields\n *ngSwitchCase=\"'MOBILE'\"\n [question]=\"grid.element\"\n ></lib-mobile-fields>\n <lib-number-fields\n *ngSwitchCase=\"'NUMBER'\"\n [question]=\"grid.element\"\n [rowId]=\"'0'\"\n ></lib-number-fields>\n <lib-password-fields\n *ngSwitchCase=\"'PASSWORD'\"\n [question]=\"grid.element\"\n ></lib-password-fields>\n <lib-radio-button-fields\n *ngSwitchCase=\"'RADIO_BUTTON'\"\n [question]=\"grid.element\"\n ></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n [question]=\"grid.element\"\n ></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\n [question]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-selection-matrix-fields>\n <lib-signature-fields\n *ngSwitchCase=\"'SIGNATURE'\"\n [question]=\"grid.element\"\n ></lib-signature-fields>\n <lib-slider-fields\n *ngSwitchCase=\"'SLIDER'\"\n [question]=\"grid.element\"\n ></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n [question]=\"grid.element\"\n ></lib-terms-and-condition-fields>\n <lib-text-area-fields\n *ngSwitchCase=\"'TEXT_AREA'\"\n [question]=\"grid.element\"\n ></lib-text-area-fields>\n <lib-text-fields\n *ngSwitchCase=\"'TEXT_BOX'\"\n [question]=\"grid.element\"\n ></lib-text-fields>\n <lib-toggle-switch-fields\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n [question]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-toggle-switch-fields>\n <lib-url-fields\n *ngSwitchCase=\"'URL'\"\n [question]=\"grid.element\"\n ></lib-url-fields>\n <lib-currency-fields\n *ngSwitchCase=\"'CURRENCY'\"\n [question]=\"grid.element\"\n ></lib-currency-fields>\n <lib-aggregate-function\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\n [question]=\"grid.element\"\n [rowId]=\"'0'\"\n ></lib-aggregate-function>\n <lib-hidden-field\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\n [question]=\"grid.element\"\n ></lib-hidden-field>\n <lib-iframe-fields\n *ngSwitchCase=\"'IFRAME_WIDGET'\"\n [question]=\"grid.element\"\n ></lib-iframe-fields>\n </div>\n\n <!-- <ng-container *ngIf=\"grid.element.childLogics\">\n <ng-container *ngIf=\"getComponentForChildLogics(grid.element.childLogics, 'child', grid.element.answer) as cached\">\n <ng-container\n *ngComponentOutlet=\"cached.component | async; injector: cached.injector\">\n </ng-container>\n </ng-container>\n </ng-container> -->\n\n <ng-container *ngIf=\"grid?.element?.childLogics\">\n <ng-container *ngIf=\"componentToLoad\">\n <ng-container\n *ngComponentOutlet=\"\n componentToLoad;\n inputs: {\n grid: grid?.element?.childLogics,\n answer: grid?.element?.answer,\n state: 'child'\n }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;position:relative}@media (max-width: 576px){.outer-container{padding:8px}}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}.tab-content{background-color:#fff}.sectionTitle{font-size:19px;font-weight:700;margin-bottom:20px;word-break:break-word}.description{font-size:17px;font-weight:500;margin-bottom:18px;word-break:break-word}::ng-deep .description img{max-width:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: ["question", "inLine"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: AggregateFunctionComponent, selector: "lib-aggregate-function", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "component", type: IframeFieldsComponent, selector: "lib-iframe-fields", inputs: ["question"] }] }); }
|
|
9022
9252
|
}
|
|
9023
9253
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuestionGroupComponent, decorators: [{
|
|
9024
9254
|
type: Component,
|
|
9025
|
-
args: [{ selector: 'lib-question-group', template: "<div\
|
|
9255
|
+
args: [{ selector: 'lib-question-group', template: "<div\n class=\"outer-container mb-4 px-3\"\n [attr.name]=\"questionGroup.testElementName\"\n [id]=\"'question-' + questionGroup.id\"\n>\n <div class=\"body container pt-3 pb-3 px-3\">\n <div class=\"tab-content pt-4 pb-3 px-3\">\n <p class=\"sectionTitle\">{{ questionGroup.title }}</p>\n <p [innerHTML]=\"decodedDescription\" class=\"description\"></p>\n\n <div class=\"mt-5\">\n <div *ngFor=\"let row of questionGroup.rows\">\n <div class=\"d-flex\">\n <div\n *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{ 'width.%': grid.element.count * (100 / 12) }\"\n >\n <div *ngIf=\"grid.entityType === 'QUESTION' && grid.show\">\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\n <lib-check-box-fields\n *ngSwitchCase=\"'CHECK_BOX'\"\n [question]=\"grid.element\"\n ></lib-check-box-fields>\n <lib-date-time-fields\n *ngSwitchCase=\"'DATE_TIME'\"\n [question]=\"grid.element\"\n ></lib-date-time-fields>\n <lib-drop-down-fields\n *ngSwitchCase=\"'DROP_DOWN'\"\n [question]=\"grid.element\"\n ></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngSwitchCase=\"'FILE_PICKER'\"\n [question]=\"grid.element\"\n ></lib-file-picker-fields>\n <lib-location-fields\n *ngSwitchCase=\"'LOCATION'\"\n [question]=\"grid.element\"\n ></lib-location-fields>\n <lib-mail-fields\n *ngSwitchCase=\"'EMAIL'\"\n [question]=\"grid.element\"\n ></lib-mail-fields>\n <lib-mobile-fields\n *ngSwitchCase=\"'MOBILE'\"\n [question]=\"grid.element\"\n ></lib-mobile-fields>\n <lib-number-fields\n *ngSwitchCase=\"'NUMBER'\"\n [question]=\"grid.element\"\n [rowId]=\"'0'\"\n ></lib-number-fields>\n <lib-password-fields\n *ngSwitchCase=\"'PASSWORD'\"\n [question]=\"grid.element\"\n ></lib-password-fields>\n <lib-radio-button-fields\n *ngSwitchCase=\"'RADIO_BUTTON'\"\n [question]=\"grid.element\"\n ></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n [question]=\"grid.element\"\n ></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\n [question]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-selection-matrix-fields>\n <lib-signature-fields\n *ngSwitchCase=\"'SIGNATURE'\"\n [question]=\"grid.element\"\n ></lib-signature-fields>\n <lib-slider-fields\n *ngSwitchCase=\"'SLIDER'\"\n [question]=\"grid.element\"\n ></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n [question]=\"grid.element\"\n ></lib-terms-and-condition-fields>\n <lib-text-area-fields\n *ngSwitchCase=\"'TEXT_AREA'\"\n [question]=\"grid.element\"\n ></lib-text-area-fields>\n <lib-text-fields\n *ngSwitchCase=\"'TEXT_BOX'\"\n [question]=\"grid.element\"\n ></lib-text-fields>\n <lib-toggle-switch-fields\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n [question]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-toggle-switch-fields>\n <lib-url-fields\n *ngSwitchCase=\"'URL'\"\n [question]=\"grid.element\"\n ></lib-url-fields>\n <lib-currency-fields\n *ngSwitchCase=\"'CURRENCY'\"\n [question]=\"grid.element\"\n ></lib-currency-fields>\n <lib-aggregate-function\n *ngSwitchCase=\"'AGGREGATE_FUNCTION'\"\n [question]=\"grid.element\"\n [rowId]=\"'0'\"\n ></lib-aggregate-function>\n <lib-hidden-field\n *ngSwitchCase=\"'HIDDEN_FIELD'\"\n [question]=\"grid.element\"\n ></lib-hidden-field>\n <lib-iframe-fields\n *ngSwitchCase=\"'IFRAME_WIDGET'\"\n [question]=\"grid.element\"\n ></lib-iframe-fields>\n </div>\n\n <!-- <ng-container *ngIf=\"grid.element.childLogics\">\n <ng-container *ngIf=\"getComponentForChildLogics(grid.element.childLogics, 'child', grid.element.answer) as cached\">\n <ng-container\n *ngComponentOutlet=\"cached.component | async; injector: cached.injector\">\n </ng-container>\n </ng-container>\n </ng-container> -->\n\n <ng-container *ngIf=\"grid?.element?.childLogics\">\n <ng-container *ngIf=\"componentToLoad\">\n <ng-container\n *ngComponentOutlet=\"\n componentToLoad;\n inputs: {\n grid: grid?.element?.childLogics,\n answer: grid?.element?.answer,\n state: 'child'\n }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;position:relative}@media (max-width: 576px){.outer-container{padding:8px}}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}.tab-content{background-color:#fff}.sectionTitle{font-size:19px;font-weight:700;margin-bottom:20px;word-break:break-word}.description{font-size:17px;font-weight:500;margin-bottom:18px;word-break:break-word}::ng-deep .description img{max-width:100%}\n"] }]
|
|
9026
9256
|
}], ctorParameters: function () { return [{ type: WhenClauseService }]; }, propDecorators: { questionGroup: [{
|
|
9027
9257
|
type: Input
|
|
9028
9258
|
}], edit: [{
|
|
@@ -9050,11 +9280,11 @@ class MultifieldsComponent {
|
|
|
9050
9280
|
});
|
|
9051
9281
|
}
|
|
9052
9282
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultifieldsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9053
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultifieldsComponent, selector: "lib-multifields", inputs: { multiFields: "multiFields", acceptedLanguage: "acceptedLanguage" }, ngImport: i0, template: "<div class=\"outer-container mb-4 px-3 multifields\" [attr.name]=\"multiFields.testElementName\"\r\n[id]=\"'question-'+ multiFields.id\">\r\n <div class=\"d-flex align-items-center\">\r\n <div [innerHTML]=\"multiFields.questionNumber\"></div><span class=\"space\"></span>\r\n <label>{{ multiFields.question }}</label>\r\n </div>\r\n\r\n <div class=\"multifields-row\">\r\n <ng-container *ngFor=\"let row of multiFields.rows\">\r\n <div class=\"d-flex\">\r\n <div *ngFor=\"let grid of row.grid\"\r\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / 12)}\">\r\n <div *ngIf=\"grid.entityType === 'QUESTION'\">\r\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\r\n <lib-check-box-fields *ngSwitchCase=\"'CHECK_BOX'\"\r\n [question]=\"grid.element\"></lib-check-box-fields>\r\n <lib-date-time-fields *ngSwitchCase=\"'DATE_TIME'\"\r\n [question]=\"grid.element\"></lib-date-time-fields>\r\n <lib-drop-down-fields *ngSwitchCase=\"'DROP_DOWN'\"\r\n [question]=\"grid.element\"></lib-drop-down-fields>\r\n <lib-file-picker-fields\r\n *ngSwitchCase=\"'FILE_PICKER'\"\r\n [question]=\"grid.element\"></lib-file-picker-fields>\r\n <lib-location-fields *ngSwitchCase=\"'LOCATION'\"\r\n [question]=\"grid.element\"></lib-location-fields>\r\n <lib-mail-fields *ngSwitchCase=\"'EMAIL'\"\r\n [question]=\"grid.element\"></lib-mail-fields>\r\n <lib-mobile-fields *ngSwitchCase=\"'MOBILE'\"\r\n [question]=\"grid.element\"></lib-mobile-fields>\r\n <lib-number-fields *ngSwitchCase=\"'NUMBER'\"\r\n [question]=\"grid.element\"></lib-number-fields>\r\n <lib-password-fields *ngSwitchCase=\"'PASSWORD'\"\r\n [question]=\"grid.element\"></lib-password-fields>\r\n <lib-radio-button-fields\r\n *ngSwitchCase=\"'RADIO_BUTTON'\"\r\n [question]=\"grid.element\"></lib-radio-button-fields>\r\n <lib-rich-text-editor-fields\r\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\r\n [question]=\"grid.element\"></lib-rich-text-editor-fields>\r\n <lib-selection-matrix-fields\r\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\r\n [question]=\"grid.element\"\r\n [acceptedLanguage]=\"acceptedLanguage\"></lib-selection-matrix-fields>\r\n <lib-signature-fields *ngSwitchCase=\"'SIGNATURE'\"\r\n [question]=\"grid.element\"></lib-signature-fields>\r\n <lib-slider-fields *ngSwitchCase=\"'SLIDER'\"\r\n [question]=\"grid.element\"></lib-slider-fields>\r\n <lib-terms-and-condition-fields\r\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\r\n [question]=\"grid.element\"></lib-terms-and-condition-fields>\r\n <lib-text-area-fields *ngSwitchCase=\"'TEXT_AREA'\"\r\n [question]=\"grid.element\"></lib-text-area-fields>\r\n <lib-text-fields *ngSwitchCase=\"'TEXT_BOX'\"\r\n [question]=\"grid.element\"></lib-text-fields>\r\n <lib-toggle-switch-fields\r\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\r\n [question]=\"grid.element\"\r\n [acceptedLanguage]=\"acceptedLanguage\"></lib-toggle-switch-fields>\r\n <lib-url-fields *ngSwitchCase=\"'URL'\"\r\n [question]=\"grid.element\"></lib-url-fields>\r\n <lib-currency-fields *ngSwitchCase=\"'CURRENCY'\"\r\n [question]=\"grid.element\"></lib-currency-fields>\r\n <lib-hidden-field *ngSwitchCase=\"'HIDDEN_FIELD'\" \r\n [question]=\"grid.element\"></lib-hidden-field>\r\n </div>\r\n\r\n <ng-container *ngIf=\"grid.element.childLogics\">\r\n <ng-container\r\n *ngComponentOutlet=\"loadFormElementsComponent(grid.element.childLogics) | async\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: ["::ng-deep .multifields .mb-5{margin:0!important}.space{width:5px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: ["question", "inLine"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] }); }
|
|
9283
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultifieldsComponent, selector: "lib-multifields", inputs: { multiFields: "multiFields", acceptedLanguage: "acceptedLanguage" }, ngImport: i0, template: "<div class=\"outer-container mb-4 px-3 multifields\" [attr.name]=\"multiFields.testElementName\"\n[id]=\"'question-'+ multiFields.id\">\n <div class=\"d-flex align-items-center\">\n <div [innerHTML]=\"multiFields.questionNumber\"></div><span class=\"space\"></span>\n <label>{{ multiFields.question }}</label>\n </div>\n\n <div class=\"multifields-row\">\n <ng-container *ngFor=\"let row of multiFields.rows\">\n <div class=\"d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / 12)}\">\n <div *ngIf=\"grid.entityType === 'QUESTION'\">\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\n <lib-check-box-fields *ngSwitchCase=\"'CHECK_BOX'\"\n [question]=\"grid.element\"></lib-check-box-fields>\n <lib-date-time-fields *ngSwitchCase=\"'DATE_TIME'\"\n [question]=\"grid.element\"></lib-date-time-fields>\n <lib-drop-down-fields *ngSwitchCase=\"'DROP_DOWN'\"\n [question]=\"grid.element\"></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngSwitchCase=\"'FILE_PICKER'\"\n [question]=\"grid.element\"></lib-file-picker-fields>\n <lib-location-fields *ngSwitchCase=\"'LOCATION'\"\n [question]=\"grid.element\"></lib-location-fields>\n <lib-mail-fields *ngSwitchCase=\"'EMAIL'\"\n [question]=\"grid.element\"></lib-mail-fields>\n <lib-mobile-fields *ngSwitchCase=\"'MOBILE'\"\n [question]=\"grid.element\"></lib-mobile-fields>\n <lib-number-fields *ngSwitchCase=\"'NUMBER'\"\n [question]=\"grid.element\"></lib-number-fields>\n <lib-password-fields *ngSwitchCase=\"'PASSWORD'\"\n [question]=\"grid.element\"></lib-password-fields>\n <lib-radio-button-fields\n *ngSwitchCase=\"'RADIO_BUTTON'\"\n [question]=\"grid.element\"></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n [question]=\"grid.element\"></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\n [question]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"></lib-selection-matrix-fields>\n <lib-signature-fields *ngSwitchCase=\"'SIGNATURE'\"\n [question]=\"grid.element\"></lib-signature-fields>\n <lib-slider-fields *ngSwitchCase=\"'SLIDER'\"\n [question]=\"grid.element\"></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n [question]=\"grid.element\"></lib-terms-and-condition-fields>\n <lib-text-area-fields *ngSwitchCase=\"'TEXT_AREA'\"\n [question]=\"grid.element\"></lib-text-area-fields>\n <lib-text-fields *ngSwitchCase=\"'TEXT_BOX'\"\n [question]=\"grid.element\"></lib-text-fields>\n <lib-toggle-switch-fields\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n [question]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"></lib-toggle-switch-fields>\n <lib-url-fields *ngSwitchCase=\"'URL'\"\n [question]=\"grid.element\"></lib-url-fields>\n <lib-currency-fields *ngSwitchCase=\"'CURRENCY'\"\n [question]=\"grid.element\"></lib-currency-fields>\n <lib-hidden-field *ngSwitchCase=\"'HIDDEN_FIELD'\" \n [question]=\"grid.element\"></lib-hidden-field>\n </div>\n\n <ng-container *ngIf=\"grid.element.childLogics\">\n <ng-container\n *ngComponentOutlet=\"loadFormElementsComponent(grid.element.childLogics) | async\"></ng-container>\n </ng-container>\n </div>\n\n </div>\n </div>\n\n </ng-container>\n </div>\n</div>\n", styles: ["::ng-deep .multifields .mb-5{margin:0!important}.space{width:5px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DateTimeFieldsComponent, selector: "lib-date-time-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: DropDownFieldsComponent, selector: "lib-drop-down-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: FilePickerFieldsComponent, selector: "lib-file-picker-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange", "inlineDeleteFiles"] }, { kind: "component", type: LocationFieldsComponent, selector: "lib-location-fields", inputs: ["question", "inLine"], outputs: ["answerChange"] }, { kind: "component", type: MailFieldsComponent, selector: "lib-mail-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: MobileFieldsComponent, selector: "lib-mobile-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: NumberFieldsComponent, selector: "lib-number-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: PasswordFieldsComponent, selector: "lib-password-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RadioButtonFieldsComponent, selector: "lib-radio-button-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "rowId", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: RichTextEditorFieldsComponent, selector: "lib-rich-text-editor-fields", inputs: ["question", "inLine", "inSubForm", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SelectionMatrixFieldsComponent, selector: "lib-selection-matrix-fields", inputs: ["question", "inLine", "acceptedLanguage", "rowId", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: SignatureFieldsComponent, selector: "lib-signature-fields", inputs: ["question", "inLine"] }, { kind: "component", type: SliderFieldsComponent, selector: "lib-slider-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TermsAndConditionFieldsComponent, selector: "lib-terms-and-condition-fields", inputs: ["question", "inLine"] }, { kind: "component", type: TextAreaFieldsComponent, selector: "lib-text-area-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: TextFieldsComponent, selector: "lib-text-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: ToggleSwitchFieldsComponent, selector: "lib-toggle-switch-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "acceptedLanguage", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: UrlFieldsComponent, selector: "lib-url-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit"], outputs: ["answerChange"] }, { kind: "component", type: CurrencyFieldsComponent, selector: "lib-currency-fields", inputs: ["question", "inLine", "inCard", "submissionIndex", "disableEdit", "rowId"], outputs: ["answerChange"] }, { kind: "component", type: HiddenFieldComponent, selector: "lib-hidden-field", inputs: ["question", "inLine", "inCard", "submissionIndex"], outputs: ["answerChange"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] }); }
|
|
9054
9284
|
}
|
|
9055
9285
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultifieldsComponent, decorators: [{
|
|
9056
9286
|
type: Component,
|
|
9057
|
-
args: [{ selector: 'lib-multifields', template: "<div class=\"outer-container mb-4 px-3 multifields\" [attr.name]=\"multiFields.testElementName\"\
|
|
9287
|
+
args: [{ selector: 'lib-multifields', template: "<div class=\"outer-container mb-4 px-3 multifields\" [attr.name]=\"multiFields.testElementName\"\n[id]=\"'question-'+ multiFields.id\">\n <div class=\"d-flex align-items-center\">\n <div [innerHTML]=\"multiFields.questionNumber\"></div><span class=\"space\"></span>\n <label>{{ multiFields.question }}</label>\n </div>\n\n <div class=\"multifields-row\">\n <ng-container *ngFor=\"let row of multiFields.rows\">\n <div class=\"d-flex\">\n <div *ngFor=\"let grid of row.grid\"\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / 12)}\">\n <div *ngIf=\"grid.entityType === 'QUESTION'\">\n <div [ngSwitch]=\"grid.element.formElement.elementType\">\n <lib-check-box-fields *ngSwitchCase=\"'CHECK_BOX'\"\n [question]=\"grid.element\"></lib-check-box-fields>\n <lib-date-time-fields *ngSwitchCase=\"'DATE_TIME'\"\n [question]=\"grid.element\"></lib-date-time-fields>\n <lib-drop-down-fields *ngSwitchCase=\"'DROP_DOWN'\"\n [question]=\"grid.element\"></lib-drop-down-fields>\n <lib-file-picker-fields\n *ngSwitchCase=\"'FILE_PICKER'\"\n [question]=\"grid.element\"></lib-file-picker-fields>\n <lib-location-fields *ngSwitchCase=\"'LOCATION'\"\n [question]=\"grid.element\"></lib-location-fields>\n <lib-mail-fields *ngSwitchCase=\"'EMAIL'\"\n [question]=\"grid.element\"></lib-mail-fields>\n <lib-mobile-fields *ngSwitchCase=\"'MOBILE'\"\n [question]=\"grid.element\"></lib-mobile-fields>\n <lib-number-fields *ngSwitchCase=\"'NUMBER'\"\n [question]=\"grid.element\"></lib-number-fields>\n <lib-password-fields *ngSwitchCase=\"'PASSWORD'\"\n [question]=\"grid.element\"></lib-password-fields>\n <lib-radio-button-fields\n *ngSwitchCase=\"'RADIO_BUTTON'\"\n [question]=\"grid.element\"></lib-radio-button-fields>\n <lib-rich-text-editor-fields\n *ngSwitchCase=\"'RICH_TEXT_EDITOR'\"\n [question]=\"grid.element\"></lib-rich-text-editor-fields>\n <lib-selection-matrix-fields\n *ngSwitchCase=\"'SELECTION_MATRIX'\"\n [question]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"></lib-selection-matrix-fields>\n <lib-signature-fields *ngSwitchCase=\"'SIGNATURE'\"\n [question]=\"grid.element\"></lib-signature-fields>\n <lib-slider-fields *ngSwitchCase=\"'SLIDER'\"\n [question]=\"grid.element\"></lib-slider-fields>\n <lib-terms-and-condition-fields\n *ngSwitchCase=\"'TERMS_AND_CONDITION'\"\n [question]=\"grid.element\"></lib-terms-and-condition-fields>\n <lib-text-area-fields *ngSwitchCase=\"'TEXT_AREA'\"\n [question]=\"grid.element\"></lib-text-area-fields>\n <lib-text-fields *ngSwitchCase=\"'TEXT_BOX'\"\n [question]=\"grid.element\"></lib-text-fields>\n <lib-toggle-switch-fields\n *ngSwitchCase=\"'TOGGLE_SWITCH'\"\n [question]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"></lib-toggle-switch-fields>\n <lib-url-fields *ngSwitchCase=\"'URL'\"\n [question]=\"grid.element\"></lib-url-fields>\n <lib-currency-fields *ngSwitchCase=\"'CURRENCY'\"\n [question]=\"grid.element\"></lib-currency-fields>\n <lib-hidden-field *ngSwitchCase=\"'HIDDEN_FIELD'\" \n [question]=\"grid.element\"></lib-hidden-field>\n </div>\n\n <ng-container *ngIf=\"grid.element.childLogics\">\n <ng-container\n *ngComponentOutlet=\"loadFormElementsComponent(grid.element.childLogics) | async\"></ng-container>\n </ng-container>\n </div>\n\n </div>\n </div>\n\n </ng-container>\n </div>\n</div>\n", styles: ["::ng-deep .multifields .mb-5{margin:0!important}.space{width:5px}\n"] }]
|
|
9058
9288
|
}], propDecorators: { multiFields: [{
|
|
9059
9289
|
type: Input
|
|
9060
9290
|
}], acceptedLanguage: [{
|
|
@@ -9078,11 +9308,11 @@ class RecursiveLogicComponent {
|
|
|
9078
9308
|
this.subFormChange.emit(event);
|
|
9079
9309
|
}
|
|
9080
9310
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecursiveLogicComponent, deps: [{ token: WhenClauseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9081
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecursiveLogicComponent, selector: "lib-recursive-logic", inputs: { grid: "grid", currentPageIndex: "currentPageIndex", edit: "edit", acceptedLanguage: "acceptedLanguage", state: "state", answer: "answer", pages: "pages" }, outputs: { subFormChange: "subFormChange" }, ngImport: i0, template: "<div *ngIf=\"grid.show\">\
|
|
9311
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecursiveLogicComponent, selector: "lib-recursive-logic", inputs: { grid: "grid", currentPageIndex: "currentPageIndex", edit: "edit", acceptedLanguage: "acceptedLanguage", state: "state", answer: "answer", pages: "pages" }, outputs: { subFormChange: "subFormChange" }, ngImport: i0, template: "<div *ngIf=\"grid.show\">\n <div *ngIf=\"grid.entityType === 'QUESTION'\">\n <lib-question\n [question]=\"grid?.element\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-question>\n </div>\n <div *ngIf=\"grid.entityType === 'SECTION'\">\n <lib-section-fields [section]=\"grid.element\"></lib-section-fields>\n </div>\n <ng-container *ngIf=\"grid.entityType === 'SUBFORM'\">\n <lib-sub-form\n [subForm]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n [edit]=\"edit\"\n [pages]=\"pages\"\n ></lib-sub-form>\n </ng-container>\n \n <ng-container *ngIf=\"grid.entityType === 'QUESTION_GROUP'\">\n <lib-question-group\n [questionGroup]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-question-group>\n </ng-container>\n \n \n <ng-container *ngIf=\"grid.entityType === 'MULTIFIELD'\">\n <lib-multifields [multiFields]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"></lib-multifields>\n </ng-container>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SectionFieldsComponent, selector: "lib-section-fields", inputs: ["section"] }, { kind: "component", type: QuestionComponent, selector: "lib-question", inputs: ["question", "edit", "acceptedLanguage", "currentPageIndex"], outputs: ["emitValidations", "subFormChange"] }, { kind: "component", type: SubFormComponent, selector: "lib-sub-form", inputs: ["subForm", "edit", "acceptedLanguage", "pages"], outputs: ["subFormChange"] }, { kind: "component", type: QuestionGroupComponent, selector: "lib-question-group", inputs: ["questionGroup", "edit", "acceptedLanguage"] }, { kind: "component", type: MultifieldsComponent, selector: "lib-multifields", inputs: ["multiFields", "acceptedLanguage"] }] }); }
|
|
9082
9312
|
}
|
|
9083
9313
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecursiveLogicComponent, decorators: [{
|
|
9084
9314
|
type: Component,
|
|
9085
|
-
args: [{ selector: 'lib-recursive-logic', template: "<div *ngIf=\"grid.show\">\
|
|
9315
|
+
args: [{ selector: 'lib-recursive-logic', template: "<div *ngIf=\"grid.show\">\n <div *ngIf=\"grid.entityType === 'QUESTION'\">\n <lib-question\n [question]=\"grid?.element\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-question>\n </div>\n <div *ngIf=\"grid.entityType === 'SECTION'\">\n <lib-section-fields [section]=\"grid.element\"></lib-section-fields>\n </div>\n <ng-container *ngIf=\"grid.entityType === 'SUBFORM'\">\n <lib-sub-form\n [subForm]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n [edit]=\"edit\"\n [pages]=\"pages\"\n ></lib-sub-form>\n </ng-container>\n \n <ng-container *ngIf=\"grid.entityType === 'QUESTION_GROUP'\">\n <lib-question-group\n [questionGroup]=\"grid.element\"\n [acceptedLanguage]=\"acceptedLanguage\"\n ></lib-question-group>\n </ng-container>\n \n \n <ng-container *ngIf=\"grid.entityType === 'MULTIFIELD'\">\n <lib-multifields [multiFields]=\"grid.element\" [acceptedLanguage]=\"acceptedLanguage\"></lib-multifields>\n </ng-container>\n</div>" }]
|
|
9086
9316
|
}], ctorParameters: function () { return [{ type: WhenClauseService }]; }, propDecorators: { grid: [{
|
|
9087
9317
|
type: Input
|
|
9088
9318
|
}], currentPageIndex: [{
|
|
@@ -9121,11 +9351,11 @@ class FormElementsComponent {
|
|
|
9121
9351
|
this.subFormChange.emit(event);
|
|
9122
9352
|
}
|
|
9123
9353
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormElementsComponent, deps: [{ token: 'grid', optional: true }, { token: 'state', optional: true }, { token: 'answer', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9124
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormElementsComponent, selector: "lib-form-elements", inputs: { currentPageIndex: "currentPageIndex", edit: "edit", acceptedLanguage: "acceptedLanguage", answer: "answer", grid: "grid", state: "state", pages: "pages" }, outputs: { subFormChange: "subFormChange" }, ngImport: i0, template: "<ng-container *ngIf=\"state === 'child'; else parentBlock\">\
|
|
9354
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormElementsComponent, selector: "lib-form-elements", inputs: { currentPageIndex: "currentPageIndex", edit: "edit", acceptedLanguage: "acceptedLanguage", answer: "answer", grid: "grid", state: "state", pages: "pages" }, outputs: { subFormChange: "subFormChange" }, ngImport: i0, template: "<ng-container *ngIf=\"state === 'child'; else parentBlock\">\n <div *ngFor=\"let childLogic of grid\">\n <div *ngIf=\"childLogic.showLogic && answer\">\n <div *ngFor=\"let row of childLogic.rows\">\n <div *ngFor=\"let grid of row.grid\">\n <lib-recursive-logic\n [grid]=\"grid\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [pages]=\"pages\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n >\n </lib-recursive-logic>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-template #parentBlock>\n <lib-recursive-logic\n [grid]=\"grid\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [pages]=\"pages\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n >\n </lib-recursive-logic>\n</ng-template>\n", styles: [""], dependencies: [{ 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: "component", type: RecursiveLogicComponent, selector: "lib-recursive-logic", inputs: ["grid", "currentPageIndex", "edit", "acceptedLanguage", "state", "answer", "pages"], outputs: ["subFormChange"] }] }); }
|
|
9125
9355
|
}
|
|
9126
9356
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormElementsComponent, decorators: [{
|
|
9127
9357
|
type: Component,
|
|
9128
|
-
args: [{ selector: 'lib-form-elements', template: "<ng-container *ngIf=\"state === 'child'; else parentBlock\">\
|
|
9358
|
+
args: [{ selector: 'lib-form-elements', template: "<ng-container *ngIf=\"state === 'child'; else parentBlock\">\n <div *ngFor=\"let childLogic of grid\">\n <div *ngIf=\"childLogic.showLogic && answer\">\n <div *ngFor=\"let row of childLogic.rows\">\n <div *ngFor=\"let grid of row.grid\">\n <lib-recursive-logic\n [grid]=\"grid\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [pages]=\"pages\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n >\n </lib-recursive-logic>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-template #parentBlock>\n <lib-recursive-logic\n [grid]=\"grid\"\n [edit]=\"edit\"\n [acceptedLanguage]=\"acceptedLanguage\"\n [pages]=\"pages\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n >\n </lib-recursive-logic>\n</ng-template>\n" }]
|
|
9129
9359
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
9130
9360
|
type: Inject,
|
|
9131
9361
|
args: ['grid']
|
|
@@ -9274,11 +9504,11 @@ class NavigationTabsComponent {
|
|
|
9274
9504
|
this.cancel.emit();
|
|
9275
9505
|
}
|
|
9276
9506
|
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 }); }
|
|
9277
|
-
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}\">\r\n <div class=\"d-flex gap-2\">\r\n <div class=\"tab-navigation\" *ngIf=\"!hideTabs\">\r\n <ul class=\"nav nav-tabs navTabs\" id=\"myTab\" role=\"tablist\">\r\n <li\r\n class=\"nav-item\"\r\n role=\"presentation\"\r\n *ngFor=\"let page of pageDetails; let i = index; trackBy: trackByIndex\"\r\n [ngClass]=\"{'nav-item-ara': acceptedLanguage === 'ara', 'nav-item-default': acceptedLanguage !== 'ara'}\"\r\n >\r\n <button\r\n class=\"nav-link\"\r\n [title]=\"page.name\"\r\n data-bs-toggle=\"tooltip\"\r\n data-bs-placement=\"top\"\r\n data-bs-custom-class=\"custom-tooltip\"\r\n [class.active]=\"i === currentPageIndex\"\r\n id=\"tab-{{ i }}\"\r\n type=\"button\"\r\n role=\"tab\"\r\n [attr.aria-controls]=\"'content-' + i\"\r\n [attr.aria-selected]=\"i === currentPageIndex\"\r\n (click)=\"setCurrentPage(i)\"\r\n >\r\n {{ page.name }}\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"d-flex align-items-center\" *ngIf=\"showNavArrows\">\r\n <button class=\"nav-arrow\">\r\n <img src=\"assets/icons/left_arrow.svg\" alt=\"left arrow\"\r\n (click)=\"scrollTabs(-1)\">\r\n <img src=\"assets/icons/right_arrow.svg\" alt=\"right arrow\"\r\n (click)=\"scrollTabs(1)\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"tab-content pt-5 pb-3 px-1\" [attr.name]=\"pages[currentPageIndex].testElementName\">\r\n <ng-container *ngIf=\"pages[currentPageIndex]\">\r\n <div\r\n class=\"tab-pane fade show active\"\r\n id=\"content-{{ currentPageIndex }}\"\r\n role=\"tabpanel\"\r\n [attr.aria-labelledby]=\"'tab-' + currentPageIndex\"\r\n >\r\n <div *ngIf=\"loadedPages[currentPageIndex]\">\r\n <div class=\"data-container\"\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"2\"\r\n [infiniteScrollThrottle]=\"200\"\r\n (scrolled)=\"loadMoreData()\">\r\n <div *ngFor=\"let row of pages[currentPageIndex].rows\">\r\n <div class=\"margin d-flex\">\r\n <div *ngFor=\"let grid of row.grid\"\r\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / 12)}\">\r\n <lib-form-elements\r\n [grid]=\"grid\"\r\n [edit]=\"edit\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n [pages]=\"pages\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n ></lib-form-elements>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footerButton d-flex justify-content-between align-items-center me-4 ms-4 position-relative\">\r\n <!-- Hover detection container -->\r\n <div [ngStyle]=\"{ display: currentPageIndex === pageDetails.length - 1 ? 'block' : 'none' }\" id=\"captcha-container\"></div>\r\n <div\r\n class=\"button-container position-relative\"\r\n (mouseenter)=\"showTooltip = true\"\r\n (mouseleave)=\"showTooltip = false\"\r\n >\r\n\r\n <div *ngIf=\"currentPageIndex == pageDetails.length - 1\">\r\n <button *ngIf=\"showCancelButton\" class=\"btn submitButton rounded-pill bg-secondary text-white\"\r\n (click)=\"cancelled()\" type=\"button\"\r\n >Cancel</button>\r\n <button\r\n *ngIf=\"!isActionTriggered && skipValidation\"\r\n class=\"btn rounded-pill submitButton text-white\"\r\n [ngStyle]=\"{ 'background-color': secondaryColor ? secondaryColor : '#084fff' }\"\r\n type=\"button\"\r\n (click)=\"saveAsDraft()\"\r\n [disabled]=\"!eligibleForSubmission.status || submissionInDraft\"\r\n >\r\n <ng-container *ngIf=\"submissionInDraft; else showSubmitText\">\r\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\r\n Submitting...\r\n </ng-container>\r\n <ng-template #showSubmitText>\r\n Save Draft\r\n </ng-template>\r\n </button>\r\n \r\n\r\n <button\r\n *ngIf=\"!isActionTriggered\"\r\n class=\"btn rounded-pill submitButton text-white\"\r\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\r\n type=\"button\"\r\n (click)=\"submitForm()\"\r\n [disabled]=\"!eligibleForSubmission.status || submissionInProgress\"\r\n >\r\n <ng-container *ngIf=\"submissionInProgress; else showSubmitText\">\r\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\r\n Submitting...\r\n </ng-container>\r\n <ng-template #showSubmitText>\r\n Submit\r\n </ng-template>\r\n </button>\r\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\r\n {{eligibleForSubmission.message}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"submissionInProgress\" class=\"text-loader\">\r\n {{ currentStep }}{{ animatedDots }}\r\n <span class=\"percentage\">{{ submissionProgress }}%</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\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"] }] }); }
|
|
9507
|
+
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$1.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }] }); }
|
|
9278
9508
|
}
|
|
9279
9509
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavigationTabsComponent, decorators: [{
|
|
9280
9510
|
type: Component,
|
|
9281
|
-
args: [{ selector: 'lib-navigation-tabs', template: "<div class=\"tab-inner-container\" [ngClass]=\"{ 'skip-margin': skipMargin}\">\
|
|
9511
|
+
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"] }]
|
|
9282
9512
|
}], ctorParameters: function () { return [{ type: FormValidationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { pages: [{
|
|
9283
9513
|
type: Input
|
|
9284
9514
|
}], currentPageIndex: [{
|
|
@@ -9365,11 +9595,11 @@ class SaveDraftModalComponent {
|
|
|
9365
9595
|
this.dialogRef.close(false);
|
|
9366
9596
|
}
|
|
9367
9597
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SaveDraftModalComponent, deps: [{ token: i1$3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9368
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SaveDraftModalComponent, selector: "lib-form-submission-conformation", ngImport: i0, template: "<div class=\"save-draft-modal\"\
|
|
9598
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SaveDraftModalComponent, selector: "lib-form-submission-conformation", ngImport: i0, template: "<div class=\"save-draft-modal\"\n [style.--primary-color]=\"primaryColor\"\n [style.--primary-color-rgb]=\"primaryColorRgb\">\n <div class=\"modal-card\">\n <div class=\"status-icon\">\n <div class=\"icon-wrapper\">\n <i class=\"bi bi-file-earmark-text-fill\"></i>\n </div>\n </div>\n\n <h3>Form Submission Incomplete</h3>\n <p class=\"subheader\">We noticed some information needs attention</p>\n\n <div class=\"message-card\">\n <div class=\"message-content\">\n <p>Your form contains:</p>\n <ul>\n <li><i class=\"bi bi-x-circle\"></i> Missing required fields</li>\n <li><i class=\"bi bi-exclamation-triangle\"></i> Incorrectly formatted answers</li>\n </ul>\n </div>\n </div>\n\n <div class=\"action-buttons\">\n <button class=\"btn btn-continue\" (click)=\"continueEditing()\">\n <i class=\"bi bi-pencil-square\"></i> Continue Editing\n </button>\n <button class=\"btn btn-save\" (click)=\"saveAsDraft()\">\n <i class=\"bi bi-cloud-arrow-up\"></i> Save as Draft\n </button>\n </div>\n </div>\n</div>\n", styles: [".save-draft-modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#0009;display:flex;justify-content:center;align-items:center;z-index:1050;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);overflow:hidden;animation:fadeIn .25s ease-out forwards}.save-draft-modal .modal-card{background:#fff;border-radius:12px;width:90%;max-width:480px;min-height:300px;padding:2.5rem;box-shadow:0 10px 30px #0003;margin:20px;position:relative;display:flex;flex-direction:column;border:1px solid rgba(0,0,0,.1);transform:scale(.98);animation:scaleIn .25s ease-out forwards .1s}.save-draft-modal .status-icon{text-align:center;margin-bottom:1.5rem;flex-shrink:0}.save-draft-modal .status-icon .icon-wrapper{display:inline-flex;background:linear-gradient(135deg,var(--primary-color),color-mix(in srgb,var(--primary-color) 90%,white));box-shadow:0 4px 15px rgba(var(--primary-color-rgb),.3);width:70px;height:70px;border-radius:50%;align-items:center;justify-content:center}.save-draft-modal .status-icon .icon-wrapper i{color:#fff;font-size:2.2rem}.save-draft-modal h3{color:#2c3e50;text-align:center;margin-bottom:.5rem;font-weight:700;font-size:1.5rem}.save-draft-modal .subheader{color:#6c757d;text-align:center;margin-bottom:1.5rem;font-size:1rem}.save-draft-modal .message-card{background:#f8f9fa;border-radius:8px;padding:1.25rem;margin-bottom:2rem;border-left:4px solid var(--primary-color);transition:transform .2s ease}.save-draft-modal .message-card:hover{transform:translateY(-2px)}.save-draft-modal .message-card .message-content p{color:#495057;font-weight:500;margin-bottom:.75rem}.save-draft-modal .message-card .message-content ul{list-style:none;padding-left:0;margin-bottom:0}.save-draft-modal .message-card .message-content ul li{color:#495057;margin-bottom:.5rem;display:flex;align-items:center;font-size:.95rem}.save-draft-modal .message-card .message-content ul li i{margin-right:.5rem;font-size:1.1rem}.save-draft-modal .message-card .message-content ul li .bi-x-circle{color:#dc3545}.save-draft-modal .message-card .message-content ul li .bi-exclamation-triangle{color:#ffc107}.save-draft-modal .action-buttons{margin-top:auto;flex-shrink:0;display:flex;gap:1rem}.save-draft-modal .action-buttons .btn{flex:1;padding:.8rem;border-radius:8px;font-weight:500;display:flex;align-items:center;justify-content:center;transition:all .2s ease;border:none}.save-draft-modal .action-buttons .btn i{margin-right:.5rem;font-size:1.1rem}.save-draft-modal .action-buttons .btn:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.save-draft-modal .action-buttons .btn:active{transform:translateY(0)}.save-draft-modal .action-buttons .btn-continue{background:#fff;color:var(--primary-color);border:1px solid var(--primary-color)}.save-draft-modal .action-buttons .btn-continue:hover{background-color:color-mix(in srgb,var(--primary-color) 5%,white)}.save-draft-modal .action-buttons .btn-save{background:var(--primary-color);color:#fff;box-shadow:0 4px 15px rgba(var(--primary-color-rgb),.3)}.save-draft-modal .action-buttons .btn-save:hover{background-color:color-mix(in srgb,var(--primary-color) 95%,black)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width: 576px){.save-draft-modal .modal-card{padding:1.5rem;min-height:auto;height:auto;max-height:90vh;overflow-y:auto}.save-draft-modal .action-buttons{flex-direction:column}}\n"] }); }
|
|
9369
9599
|
}
|
|
9370
9600
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SaveDraftModalComponent, decorators: [{
|
|
9371
9601
|
type: Component,
|
|
9372
|
-
args: [{ selector: 'lib-form-submission-conformation', template: "<div class=\"save-draft-modal\"\
|
|
9602
|
+
args: [{ selector: 'lib-form-submission-conformation', template: "<div class=\"save-draft-modal\"\n [style.--primary-color]=\"primaryColor\"\n [style.--primary-color-rgb]=\"primaryColorRgb\">\n <div class=\"modal-card\">\n <div class=\"status-icon\">\n <div class=\"icon-wrapper\">\n <i class=\"bi bi-file-earmark-text-fill\"></i>\n </div>\n </div>\n\n <h3>Form Submission Incomplete</h3>\n <p class=\"subheader\">We noticed some information needs attention</p>\n\n <div class=\"message-card\">\n <div class=\"message-content\">\n <p>Your form contains:</p>\n <ul>\n <li><i class=\"bi bi-x-circle\"></i> Missing required fields</li>\n <li><i class=\"bi bi-exclamation-triangle\"></i> Incorrectly formatted answers</li>\n </ul>\n </div>\n </div>\n\n <div class=\"action-buttons\">\n <button class=\"btn btn-continue\" (click)=\"continueEditing()\">\n <i class=\"bi bi-pencil-square\"></i> Continue Editing\n </button>\n <button class=\"btn btn-save\" (click)=\"saveAsDraft()\">\n <i class=\"bi bi-cloud-arrow-up\"></i> Save as Draft\n </button>\n </div>\n </div>\n</div>\n", styles: [".save-draft-modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#0009;display:flex;justify-content:center;align-items:center;z-index:1050;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);overflow:hidden;animation:fadeIn .25s ease-out forwards}.save-draft-modal .modal-card{background:#fff;border-radius:12px;width:90%;max-width:480px;min-height:300px;padding:2.5rem;box-shadow:0 10px 30px #0003;margin:20px;position:relative;display:flex;flex-direction:column;border:1px solid rgba(0,0,0,.1);transform:scale(.98);animation:scaleIn .25s ease-out forwards .1s}.save-draft-modal .status-icon{text-align:center;margin-bottom:1.5rem;flex-shrink:0}.save-draft-modal .status-icon .icon-wrapper{display:inline-flex;background:linear-gradient(135deg,var(--primary-color),color-mix(in srgb,var(--primary-color) 90%,white));box-shadow:0 4px 15px rgba(var(--primary-color-rgb),.3);width:70px;height:70px;border-radius:50%;align-items:center;justify-content:center}.save-draft-modal .status-icon .icon-wrapper i{color:#fff;font-size:2.2rem}.save-draft-modal h3{color:#2c3e50;text-align:center;margin-bottom:.5rem;font-weight:700;font-size:1.5rem}.save-draft-modal .subheader{color:#6c757d;text-align:center;margin-bottom:1.5rem;font-size:1rem}.save-draft-modal .message-card{background:#f8f9fa;border-radius:8px;padding:1.25rem;margin-bottom:2rem;border-left:4px solid var(--primary-color);transition:transform .2s ease}.save-draft-modal .message-card:hover{transform:translateY(-2px)}.save-draft-modal .message-card .message-content p{color:#495057;font-weight:500;margin-bottom:.75rem}.save-draft-modal .message-card .message-content ul{list-style:none;padding-left:0;margin-bottom:0}.save-draft-modal .message-card .message-content ul li{color:#495057;margin-bottom:.5rem;display:flex;align-items:center;font-size:.95rem}.save-draft-modal .message-card .message-content ul li i{margin-right:.5rem;font-size:1.1rem}.save-draft-modal .message-card .message-content ul li .bi-x-circle{color:#dc3545}.save-draft-modal .message-card .message-content ul li .bi-exclamation-triangle{color:#ffc107}.save-draft-modal .action-buttons{margin-top:auto;flex-shrink:0;display:flex;gap:1rem}.save-draft-modal .action-buttons .btn{flex:1;padding:.8rem;border-radius:8px;font-weight:500;display:flex;align-items:center;justify-content:center;transition:all .2s ease;border:none}.save-draft-modal .action-buttons .btn i{margin-right:.5rem;font-size:1.1rem}.save-draft-modal .action-buttons .btn:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.save-draft-modal .action-buttons .btn:active{transform:translateY(0)}.save-draft-modal .action-buttons .btn-continue{background:#fff;color:var(--primary-color);border:1px solid var(--primary-color)}.save-draft-modal .action-buttons .btn-continue:hover{background-color:color-mix(in srgb,var(--primary-color) 5%,white)}.save-draft-modal .action-buttons .btn-save{background:var(--primary-color);color:#fff;box-shadow:0 4px 15px rgba(var(--primary-color-rgb),.3)}.save-draft-modal .action-buttons .btn-save:hover{background-color:color-mix(in srgb,var(--primary-color) 95%,black)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width: 576px){.save-draft-modal .modal-card{padding:1.5rem;min-height:auto;height:auto;max-height:90vh;overflow-y:auto}.save-draft-modal .action-buttons{flex-direction:column}}\n"] }]
|
|
9373
9603
|
}], ctorParameters: function () { return [{ type: i1$3.MatDialogRef }, { type: undefined, decorators: [{
|
|
9374
9604
|
type: Inject,
|
|
9375
9605
|
args: [MAT_DIALOG_DATA]
|
|
@@ -9511,11 +9741,11 @@ class HeaderComponent {
|
|
|
9511
9741
|
this.skipMargin = false;
|
|
9512
9742
|
}
|
|
9513
9743
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9514
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HeaderComponent, selector: "lib-header", inputs: { name: "name", skipMargin: "skipMargin" }, ngImport: i0, template: "<div class=\"head container\">\
|
|
9744
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HeaderComponent, selector: "lib-header", inputs: { name: "name", skipMargin: "skipMargin" }, ngImport: i0, template: "<div class=\"head container\">\n <div class=\"registration-header\">\n <p>{{ name }}</p>\n </div>\n <div class=\"line\" *ngIf=\"!skipMargin\"></div>\n</div>\n", styles: [".head{background-color:#fff;padding:0!important}.registration-header{top:20px;left:50%}.registration-header p{font-size:20px;font-weight:600}.line{margin-top:1%;margin-bottom:2%;width:100%;height:0px;border:1.5px solid #eaeaea;transform:rotate(180deg)}@media (max-width: 576px){.line{margin-bottom:5%}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
9515
9745
|
}
|
|
9516
9746
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
9517
9747
|
type: Component,
|
|
9518
|
-
args: [{ selector: 'lib-header', template: "<div class=\"head container\">\
|
|
9748
|
+
args: [{ selector: 'lib-header', template: "<div class=\"head container\">\n <div class=\"registration-header\">\n <p>{{ name }}</p>\n </div>\n <div class=\"line\" *ngIf=\"!skipMargin\"></div>\n</div>\n", styles: [".head{background-color:#fff;padding:0!important}.registration-header{top:20px;left:50%}.registration-header p{font-size:20px;font-weight:600}.line{margin-top:1%;margin-bottom:2%;width:100%;height:0px;border:1.5px solid #eaeaea;transform:rotate(180deg)}@media (max-width: 576px){.line{margin-bottom:5%}}\n"] }]
|
|
9519
9749
|
}], propDecorators: { name: [{
|
|
9520
9750
|
type: Input
|
|
9521
9751
|
}], skipMargin: [{
|
|
@@ -9580,11 +9810,11 @@ class NextPrevNavigationComponent {
|
|
|
9580
9810
|
this.cancel.emit();
|
|
9581
9811
|
}
|
|
9582
9812
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NextPrevNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9583
|
-
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\">\r\n <p class=\"pageTitle\">{{pageDetails[currentPageIndex]?.name}}</p>\r\n</div> -->\r\n<div class=\"button-inner-container rounded\" [ngClass]=\"{ 'skip-margin': skipMargin}\">\r\n <div class=\"tab-content pt-5 pb-3 row\" [attr.name]=\"pages[currentPageIndex].testElementName\">\r\n <div class=\"data-container\"\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"2\"\r\n [infiniteScrollThrottle]=\"200\"\r\n (scrolled)=\"loadMoreData()\">\r\n\r\n <div *ngFor=\"let row of pages[currentPageIndex]?.rows\" class=\"marginSize d-flex\">\r\n <div *ngFor=\"let grid of row.grid\"\r\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / (12))}\">\r\n <lib-form-elements\r\n [grid]=\"grid\"\r\n [currentPageIndex]=\"currentPageIndex\"\r\n [edit]=\"edit\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n [pages]=\"pages\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n state=\"parent\"\r\n ></lib-form-elements>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngStyle]=\"{ display: currentPageIndex === pageDetails.length - 1 ? 'block' : 'none' }\" id=\"captcha-container\"></div>\r\n\r\n <div class=\"footerButton\">\r\n <div\r\n class=\"prevButtonDiv\"\r\n [ngClass]=\"{ 'prevDirection-rtl': acceptedLanguage === 'ara' }\">\r\n <button\r\n class=\"me-md-2 rounded-pill navButton\"\r\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\r\n type=\"button\"\r\n (click)=\"onNavigatePrevious()\"\r\n *ngIf=\"0 < currentPageIndex\"\r\n >\r\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M19.4897 12.0117L4.49975 12.0117\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </ng-container>\r\n <ng-template #defaultSvg>\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M4.51025 11.9883L19.5003 11.9883\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </ng-template>\r\n Previous | {{ previousPage.name }}\r\n </button>\r\n </div>\r\n <div\r\n class=\"nextButtonDiv\"\r\n [ngClass]=\"{ 'nextDirection-rtl': acceptedLanguage === 'ara' }\"\r\n >\r\n <button\r\n class=\"md-2 rounded-pill navButton\"\r\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\r\n type=\"button\"\r\n (click)=\"onNavigateNext()\"\r\n *ngIf=\"currentPageIndex < pageDetails.length - 1\"\r\n >\r\n Next | {{ nextPage.name }}\r\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M4.51025 11.9883L19.5003 11.9883\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </ng-container>\r\n <ng-template #defaultSvg>\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M19.4897 12.0117L4.49975 12.0117\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </ng-template>\r\n </button>\r\n <button *ngIf=\"showCancelButton && currentPageIndex == pageDetails.length - 1\" class=\"btn submitButton rounded-pill bg-secondary text-white\"\r\n (click)=\"cancelled()\" type=\"button\"\r\n >Cancel</button>\r\n <div\r\n *ngIf=\"skipValidation\"\r\n class=\"button-container position-relative\"\r\n (mouseenter)=\"showTooltip = true\"\r\n (mouseleave)=\"showTooltip = false\"\r\n >\r\n <button\r\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill d-flex align-items-center justify-content-center\"\r\n [ngStyle]=\"{ 'background-color': secondaryColor ? secondaryColor : '#084fff' }\"\r\n type=\"button\"\r\n *ngIf=\"currentPageIndex == pageDetails.length - 1 && !isActionTriggered\"\r\n (click)=\"saveAsDraft()\"\r\n [disabled]=\"!eligibleForSubmission.status || submissionInDraft\"\r\n >\r\n <ng-container *ngIf=\"submissionInDraft; else showSubmitText\">\r\n\r\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\r\n Submitting...\r\n </ng-container>\r\n <ng-template #showSubmitText>\r\n Save Draft\r\n </ng-template>\r\n </button>\r\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\r\n {{eligibleForSubmission.message}}\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"button-container position-relative\"\r\n (mouseenter)=\"showTooltip = true\"\r\n (mouseleave)=\"showTooltip = false\"\r\n >\r\n <button\r\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill d-flex align-items-center justify-content-center\"\r\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor : '#084fff' }\"\r\n type=\"button\"\r\n *ngIf=\"currentPageIndex == pageDetails.length - 1 && !isActionTriggered\"\r\n (click)=\"submitForm()\"\r\n [disabled]=\"!eligibleForSubmission.status || submissionInProgress\"\r\n >\r\n <ng-container *ngIf=\"submissionInProgress; else showSubmitText\">\r\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\r\n Submitting...\r\n </ng-container>\r\n <ng-template #showSubmitText>\r\n Submit\r\n </ng-template>\r\n </button>\r\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\r\n {{eligibleForSubmission.message}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"submissionInProgress\" class=\"text-loader\">\r\n {{ currentStep }}{{ animatedDots }}\r\n <span class=\"percentage\">{{ submissionProgress }}%</span>\r\n </div>\r\n</div>\r\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"] }] }); }
|
|
9813
|
+
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$1.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }] }); }
|
|
9584
9814
|
}
|
|
9585
9815
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NextPrevNavigationComponent, decorators: [{
|
|
9586
9816
|
type: Component,
|
|
9587
|
-
args: [{ selector: 'lib-next-prev-navigation', template: "<!-- <div class=\"pageTitleDiv\" *ngIf=\"!skipMargin\">\r\n <p class=\"pageTitle\">{{pageDetails[currentPageIndex]?.name}}</p>\r\n</div> -->\r\n<div class=\"button-inner-container rounded\" [ngClass]=\"{ 'skip-margin': skipMargin}\">\r\n <div class=\"tab-content pt-5 pb-3 row\" [attr.name]=\"pages[currentPageIndex].testElementName\">\r\n <div class=\"data-container\"\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"2\"\r\n [infiniteScrollThrottle]=\"200\"\r\n (scrolled)=\"loadMoreData()\">\r\n\r\n <div *ngFor=\"let row of pages[currentPageIndex]?.rows\" class=\"marginSize d-flex\">\r\n <div *ngFor=\"let grid of row.grid\"\r\n [ngStyle]=\"{'width.%': (grid.element.count) * (100 / (12))}\">\r\n <lib-form-elements\r\n [grid]=\"grid\"\r\n [currentPageIndex]=\"currentPageIndex\"\r\n [edit]=\"edit\"\r\n [acceptedLanguage]=\"acceptedLanguage\"\r\n [pages]=\"pages\"\r\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\r\n state=\"parent\"\r\n ></lib-form-elements>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngStyle]=\"{ display: currentPageIndex === pageDetails.length - 1 ? 'block' : 'none' }\" id=\"captcha-container\"></div>\r\n\r\n <div class=\"footerButton\">\r\n <div\r\n class=\"prevButtonDiv\"\r\n [ngClass]=\"{ 'prevDirection-rtl': acceptedLanguage === 'ara' }\">\r\n <button\r\n class=\"me-md-2 rounded-pill navButton\"\r\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\r\n type=\"button\"\r\n (click)=\"onNavigatePrevious()\"\r\n *ngIf=\"0 < currentPageIndex\"\r\n >\r\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M19.4897 12.0117L4.49975 12.0117\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </ng-container>\r\n <ng-template #defaultSvg>\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M4.51025 11.9883L19.5003 11.9883\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </ng-template>\r\n Previous | {{ previousPage.name }}\r\n </button>\r\n </div>\r\n <div\r\n class=\"nextButtonDiv\"\r\n [ngClass]=\"{ 'nextDirection-rtl': acceptedLanguage === 'ara' }\"\r\n >\r\n <button\r\n class=\"md-2 rounded-pill navButton\"\r\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor: '#084fff' }\"\r\n type=\"button\"\r\n (click)=\"onNavigateNext()\"\r\n *ngIf=\"currentPageIndex < pageDetails.length - 1\"\r\n >\r\n Next | {{ nextPage.name }}\r\n <ng-container *ngIf=\"acceptedLanguage === 'ara'; else defaultSvg\">\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M4.51025 11.9883L19.5003 11.9883\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M10.514 17.9766L4.49805 11.9996L10.514 6.02256\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </ng-container>\r\n <ng-template #defaultSvg>\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M19.4897 12.0117L4.49975 12.0117\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M13.486 6.02344L19.502 12.0004L13.486 17.9774\"\r\n stroke=\"white\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </ng-template>\r\n </button>\r\n <button *ngIf=\"showCancelButton && currentPageIndex == pageDetails.length - 1\" class=\"btn submitButton rounded-pill bg-secondary text-white\"\r\n (click)=\"cancelled()\" type=\"button\"\r\n >Cancel</button>\r\n <div\r\n *ngIf=\"skipValidation\"\r\n class=\"button-container position-relative\"\r\n (mouseenter)=\"showTooltip = true\"\r\n (mouseleave)=\"showTooltip = false\"\r\n >\r\n <button\r\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill d-flex align-items-center justify-content-center\"\r\n [ngStyle]=\"{ 'background-color': secondaryColor ? secondaryColor : '#084fff' }\"\r\n type=\"button\"\r\n *ngIf=\"currentPageIndex == pageDetails.length - 1 && !isActionTriggered\"\r\n (click)=\"saveAsDraft()\"\r\n [disabled]=\"!eligibleForSubmission.status || submissionInDraft\"\r\n >\r\n <ng-container *ngIf=\"submissionInDraft; else showSubmitText\">\r\n\r\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\r\n Submitting...\r\n </ng-container>\r\n <ng-template #showSubmitText>\r\n Save Draft\r\n </ng-template>\r\n </button>\r\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\r\n {{eligibleForSubmission.message}}\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"button-container position-relative\"\r\n (mouseenter)=\"showTooltip = true\"\r\n (mouseleave)=\"showTooltip = false\"\r\n >\r\n <button\r\n class=\"submitBtn ms-md-2 me-md-2 rounded-pill d-flex align-items-center justify-content-center\"\r\n [ngStyle]=\"{ 'background-color': primaryColor ? primaryColor : '#084fff' }\"\r\n type=\"button\"\r\n *ngIf=\"currentPageIndex == pageDetails.length - 1 && !isActionTriggered\"\r\n (click)=\"submitForm()\"\r\n [disabled]=\"!eligibleForSubmission.status || submissionInProgress\"\r\n >\r\n <ng-container *ngIf=\"submissionInProgress; else showSubmitText\">\r\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\r\n Submitting...\r\n </ng-container>\r\n <ng-template #showSubmitText>\r\n Submit\r\n </ng-template>\r\n </button>\r\n <div *ngIf=\"showTooltip && !eligibleForSubmission.status\" class=\"custom-tooltip\">\r\n {{eligibleForSubmission.message}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"submissionInProgress\" class=\"text-loader\">\r\n {{ currentStep }}{{ animatedDots }}\r\n <span class=\"percentage\">{{ submissionProgress }}%</span>\r\n </div>\r\n</div>\r\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"] }]
|
|
9817
|
+
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"] }]
|
|
9588
9818
|
}], propDecorators: { skipValidation: [{
|
|
9589
9819
|
type: Input
|
|
9590
9820
|
}], currentPageIndex: [{
|
|
@@ -9656,7 +9886,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
9656
9886
|
}] } });
|
|
9657
9887
|
|
|
9658
9888
|
class SubmitFormComponent {
|
|
9659
|
-
constructor(formService, toastr, router, dataService, recaptchaService, validationService, changeDetectorRef, elementTracker, formValidationService, aggregateService, scoreCalcService, dialog, whenClauseService) {
|
|
9889
|
+
constructor(formService, toastr, router, dataService, recaptchaService, validationService, changeDetectorRef, elementTracker, formValidationService, aggregateService, scoreCalcService, dialog, whenClauseService, hiddenFieldService) {
|
|
9660
9890
|
this.formService = formService;
|
|
9661
9891
|
this.toastr = toastr;
|
|
9662
9892
|
this.router = router;
|
|
@@ -9670,6 +9900,7 @@ class SubmitFormComponent {
|
|
|
9670
9900
|
this.scoreCalcService = scoreCalcService;
|
|
9671
9901
|
this.dialog = dialog;
|
|
9672
9902
|
this.whenClauseService = whenClauseService;
|
|
9903
|
+
this.hiddenFieldService = hiddenFieldService;
|
|
9673
9904
|
this.question = null;
|
|
9674
9905
|
this.moduleName = '';
|
|
9675
9906
|
this.edit = false;
|
|
@@ -9807,6 +10038,7 @@ class SubmitFormComponent {
|
|
|
9807
10038
|
}
|
|
9808
10039
|
}
|
|
9809
10040
|
ngOnInit() {
|
|
10041
|
+
this.hiddenFieldService.setEditMode(this.edit);
|
|
9810
10042
|
if (this.edit && this.submissionId) {
|
|
9811
10043
|
// this.getSubmittedFormData();
|
|
9812
10044
|
}
|
|
@@ -9848,16 +10080,16 @@ class SubmitFormComponent {
|
|
|
9848
10080
|
loadFont(fontName) {
|
|
9849
10081
|
const fontPath = `assets/fonts/${fontName}.woff2`; // Adjust extension as per your font file
|
|
9850
10082
|
const style = document.createElement('style');
|
|
9851
|
-
style.innerHTML = `
|
|
9852
|
-
@font-face {
|
|
9853
|
-
font-family: '${fontName}';
|
|
9854
|
-
src: url('${fontPath}') format('woff2');
|
|
9855
|
-
font-weight: normal;
|
|
9856
|
-
font-style: normal;
|
|
9857
|
-
}
|
|
9858
|
-
body {
|
|
9859
|
-
font-family: '${fontName}', sans-serif;
|
|
9860
|
-
}
|
|
10083
|
+
style.innerHTML = `
|
|
10084
|
+
@font-face {
|
|
10085
|
+
font-family: '${fontName}';
|
|
10086
|
+
src: url('${fontPath}') format('woff2');
|
|
10087
|
+
font-weight: normal;
|
|
10088
|
+
font-style: normal;
|
|
10089
|
+
}
|
|
10090
|
+
body {
|
|
10091
|
+
font-family: '${fontName}', sans-serif;
|
|
10092
|
+
}
|
|
9861
10093
|
`;
|
|
9862
10094
|
document.head.appendChild(style);
|
|
9863
10095
|
}
|
|
@@ -11202,13 +11434,13 @@ class SubmitFormComponent {
|
|
|
11202
11434
|
cancelled() {
|
|
11203
11435
|
this.cancel.emit();
|
|
11204
11436
|
}
|
|
11205
|
-
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 }); }
|
|
11206
|
-
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\">\
|
|
11437
|
+
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 }, { token: HiddenFieldService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11438
|
+
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: i15.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"] }] }); }
|
|
11207
11439
|
}
|
|
11208
11440
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmitFormComponent, decorators: [{
|
|
11209
11441
|
type: Component,
|
|
11210
|
-
args: [{ selector: 'lib-submit-form', template: "<div class=\"outer-container\">\
|
|
11211
|
-
}], 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: [{
|
|
11442
|
+
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"] }]
|
|
11443
|
+
}], 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 }, { type: HiddenFieldService }]; }, propDecorators: { moduleName: [{
|
|
11212
11444
|
type: Input
|
|
11213
11445
|
}], edit: [{
|
|
11214
11446
|
type: Input
|
|
@@ -11318,11 +11550,11 @@ class FormSubmissionComponent {
|
|
|
11318
11550
|
this.cancel.emit();
|
|
11319
11551
|
}
|
|
11320
11552
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormSubmissionComponent, deps: [{ token: DataService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11321
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormSubmissionComponent, selector: "lib-formSubmission", inputs: { formData: "formData", edit: "edit", skipValidation: "skipValidation", submissionId: "submissionId", triggerFormSave: "triggerFormSave" }, outputs: { submitForm: "submitForm", apiCalled: "apiCalled", cancel: "cancel" }, viewQueries: [{ propertyName: "submitFormComponent", first: true, predicate: SubmitFormComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<lib-submit-form\
|
|
11553
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormSubmissionComponent, selector: "lib-formSubmission", inputs: { formData: "formData", edit: "edit", skipValidation: "skipValidation", submissionId: "submissionId", triggerFormSave: "triggerFormSave" }, outputs: { submitForm: "submitForm", apiCalled: "apiCalled", cancel: "cancel" }, viewQueries: [{ propertyName: "submitFormComponent", first: true, predicate: SubmitFormComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<lib-submit-form\n [moduleName]=\"formData.moduleName\"\n [submissionId]=\"submissionId\"\n [edit]=\"edit\"\n [acceptedLanguage] = \"formData.headers.acceptedLanguage\"\n [skipMargin]=\"formData.skipMargin\"\n [skipValidation]=\"skipValidation\"\n [isActionTriggered]=\"isActionTriggered\"\n [navigateTo]=\"formData.navigateTo\"\n [country]=\"formData.country\"\n [showCancelButton]=\"showCancelButton\"\n (submit)=\"submit($event)\"\n (apiCalled)=\"getFormApiCalled($event)\"\n (cancel)=\"cancelled()\"\n></lib-submit-form>\n", styles: [""], dependencies: [{ kind: "component", type: SubmitFormComponent, selector: "lib-submit-form", inputs: ["moduleName", "edit", "submissionId", "acceptedLanguage", "skipMargin", "skipValidation", "navigateTo", "country", "showCancelButton", "isActionTriggered"], outputs: ["submit", "apiCalled", "currentPageIndexChange", "cancel"] }] }); }
|
|
11322
11554
|
}
|
|
11323
11555
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormSubmissionComponent, decorators: [{
|
|
11324
11556
|
type: Component,
|
|
11325
|
-
args: [{ selector: 'lib-formSubmission', template: "<lib-submit-form\
|
|
11557
|
+
args: [{ selector: 'lib-formSubmission', template: "<lib-submit-form\n [moduleName]=\"formData.moduleName\"\n [submissionId]=\"submissionId\"\n [edit]=\"edit\"\n [acceptedLanguage] = \"formData.headers.acceptedLanguage\"\n [skipMargin]=\"formData.skipMargin\"\n [skipValidation]=\"skipValidation\"\n [isActionTriggered]=\"isActionTriggered\"\n [navigateTo]=\"formData.navigateTo\"\n [country]=\"formData.country\"\n [showCancelButton]=\"showCancelButton\"\n (submit)=\"submit($event)\"\n (apiCalled)=\"getFormApiCalled($event)\"\n (cancel)=\"cancelled()\"\n></lib-submit-form>\n" }]
|
|
11326
11558
|
}], ctorParameters: function () { return [{ type: DataService }, { type: Document, decorators: [{
|
|
11327
11559
|
type: Inject,
|
|
11328
11560
|
args: [DOCUMENT]
|
|
@@ -11374,7 +11606,7 @@ class FormFieldsModule {
|
|
|
11374
11606
|
HiddenFieldComponent,
|
|
11375
11607
|
IframeFieldsComponent], imports: [CommonModule,
|
|
11376
11608
|
FormsModule,
|
|
11377
|
-
MatSliderModule,
|
|
11609
|
+
MatSliderModule, i7.BsDatepickerModule, DropdownModule,
|
|
11378
11610
|
DocUploadModule,
|
|
11379
11611
|
GoogleMapsModule,
|
|
11380
11612
|
FilePreviewModule,
|
|
@@ -11567,7 +11799,7 @@ class FormSubmitModule {
|
|
|
11567
11799
|
NavigationTabsComponent,
|
|
11568
11800
|
NextPrevNavigationComponent,
|
|
11569
11801
|
SubmissionContainerComponent,
|
|
11570
|
-
SaveDraftModalComponent], imports: [CommonModule,
|
|
11802
|
+
SaveDraftModalComponent], imports: [CommonModule, i7.BsDatepickerModule, ToastrModule,
|
|
11571
11803
|
SharedModule,
|
|
11572
11804
|
InfiniteScrollModule,
|
|
11573
11805
|
NgxSkeletonLoaderModule,
|