@rangertechnologies/ngnxt 2.1.76 → 2.1.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +29 -29
  2. package/esm2022/lib/ar.i18n.mjs +29 -29
  3. package/esm2022/lib/components/custom-button/custom-button.component.mjs +39 -39
  4. package/esm2022/lib/components/custom-calendar/custom-calendar.component.mjs +366 -366
  5. package/esm2022/lib/components/custom-date/custom-date.component.mjs +47 -47
  6. package/esm2022/lib/components/custom-date-picker/custom-date-picker.component.mjs +48 -48
  7. package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +219 -212
  8. package/esm2022/lib/components/custom-image/custom-image.component.mjs +34 -34
  9. package/esm2022/lib/components/custom-input/custom-input.component.mjs +93 -93
  10. package/esm2022/lib/components/custom-label/custom-label.component.mjs +21 -21
  11. package/esm2022/lib/components/custom-model/custom-model.component.mjs +48 -48
  12. package/esm2022/lib/components/custom-radio/custom-radio.component.mjs +115 -115
  13. package/esm2022/lib/components/custom-table/custom-table.component.mjs +169 -169
  14. package/esm2022/lib/components/custom-text-area/custom-text-area.component.mjs +65 -65
  15. package/esm2022/lib/components/custom-time/custom-time.component.mjs +61 -61
  16. package/esm2022/lib/components/dependent-table/dependent-table.component.mjs +42 -42
  17. package/esm2022/lib/components/dropdown-with-flag/dropdown-with-flag.component.mjs +39 -39
  18. package/esm2022/lib/components/file-upload/file-upload.component.mjs +233 -233
  19. package/esm2022/lib/components/file-view/file-view.component.mjs +46 -46
  20. package/esm2022/lib/components/loader/loader.component.mjs +23 -23
  21. package/esm2022/lib/components/pick-location/pick-location.component.mjs +188 -188
  22. package/esm2022/lib/components/search-box/search-box.component.mjs +130 -130
  23. package/esm2022/lib/components/table-appendix/table-appendix.component.mjs +123 -123
  24. package/esm2022/lib/directives/componenthost/componenthost.directive.mjs +19 -19
  25. package/esm2022/lib/en.i18n.mjs +29 -29
  26. package/esm2022/lib/i18n-config.service.mjs +4 -4
  27. package/esm2022/lib/i18n.component.mjs +47 -47
  28. package/esm2022/lib/i18n.module.mjs +38 -38
  29. package/esm2022/lib/i18n.pipe.mjs +25 -25
  30. package/esm2022/lib/i18n.service.mjs +56 -56
  31. package/esm2022/lib/interfaces/actionMeta.mjs +2 -2
  32. package/esm2022/lib/interfaces/apimeta.mjs +2 -2
  33. package/esm2022/lib/interfaces/dependencyMeta.mjs +2 -2
  34. package/esm2022/lib/model/bookletWrapper.mjs +9 -9
  35. package/esm2022/lib/model/changeWrapper.mjs +11 -11
  36. package/esm2022/lib/model/errorWrapper.mjs +6 -6
  37. package/esm2022/lib/model/tableWrapper.mjs +20 -20
  38. package/esm2022/lib/nxt-app.component.mjs +22 -22
  39. package/esm2022/lib/nxt-app.module.mjs +352 -352
  40. package/esm2022/lib/nxt-app.service.mjs +14 -14
  41. package/esm2022/lib/pages/booklet/booklet.component.mjs +541 -541
  42. package/esm2022/lib/pages/questionbook/questionbook.component.mjs +407 -407
  43. package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +2373 -2373
  44. package/esm2022/lib/pages/summary-page/summary-page.component.mjs +76 -76
  45. package/esm2022/lib/pipe/get-value.pipe.mjs +50 -50
  46. package/esm2022/lib/sample.mjs +3430 -3430
  47. package/esm2022/lib/services/change.service.mjs +53 -53
  48. package/esm2022/lib/services/data.service.mjs +80 -80
  49. package/esm2022/lib/services/salesforce.service.mjs +46 -46
  50. package/esm2022/lib/services/shared.service.mjs +100 -100
  51. package/esm2022/lib/services/storage.service.mjs +44 -44
  52. package/esm2022/lib/tam.i18n.mjs +29 -29
  53. package/esm2022/lib/wrapper.mjs +175 -175
  54. package/esm2022/public-api.mjs +15 -15
  55. package/esm2022/rangertechnologies-ngnxt.mjs +4 -4
  56. package/fesm2022/rangertechnologies-ngnxt.mjs +9812 -9805
  57. package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
  58. package/index.d.ts +5 -5
  59. package/lib/ar.i18n.d.ts +24 -24
  60. package/lib/components/custom-button/custom-button.component.d.ts +16 -16
  61. package/lib/components/custom-calendar/custom-calendar.component.d.ts +65 -65
  62. package/lib/components/custom-date/custom-date.component.d.ts +18 -18
  63. package/lib/components/custom-date-picker/custom-date-picker.component.d.ts +19 -19
  64. package/lib/components/custom-dropdown/custom-dropdown.component.d.ts +39 -39
  65. package/lib/components/custom-image/custom-image.component.d.ts +13 -13
  66. package/lib/components/custom-input/custom-input.component.d.ts +31 -31
  67. package/lib/components/custom-label/custom-label.component.d.ts +10 -10
  68. package/lib/components/custom-model/custom-model.component.d.ts +19 -19
  69. package/lib/components/custom-radio/custom-radio.component.d.ts +33 -33
  70. package/lib/components/custom-table/custom-table.component.d.ts +43 -43
  71. package/lib/components/custom-text-area/custom-text-area.component.d.ts +22 -22
  72. package/lib/components/custom-time/custom-time.component.d.ts +18 -18
  73. package/lib/components/dependent-table/dependent-table.component.d.ts +15 -15
  74. package/lib/components/dropdown-with-flag/dropdown-with-flag.component.d.ts +16 -16
  75. package/lib/components/file-upload/file-upload.component.d.ts +42 -42
  76. package/lib/components/file-view/file-view.component.d.ts +16 -16
  77. package/lib/components/loader/loader.component.d.ts +11 -11
  78. package/lib/components/pick-location/pick-location.component.d.ts +42 -42
  79. package/lib/components/search-box/search-box.component.d.ts +40 -40
  80. package/lib/components/table-appendix/table-appendix.component.d.ts +30 -30
  81. package/lib/directives/componenthost/componenthost.directive.d.ts +8 -8
  82. package/lib/en.i18n.d.ts +24 -24
  83. package/lib/i18n-config.service.d.ts +2 -2
  84. package/lib/i18n.component.d.ts +11 -11
  85. package/lib/i18n.module.d.ts +9 -9
  86. package/lib/i18n.pipe.d.ts +10 -10
  87. package/lib/i18n.service.d.ts +14 -14
  88. package/lib/interfaces/actionMeta.d.ts +5 -5
  89. package/lib/interfaces/apimeta.d.ts +14 -13
  90. package/lib/interfaces/dependencyMeta.d.ts +8 -8
  91. package/lib/model/bookletWrapper.d.ts +5 -5
  92. package/lib/model/changeWrapper.d.ts +10 -10
  93. package/lib/model/errorWrapper.d.ts +5 -5
  94. package/lib/model/tableWrapper.d.ts +18 -18
  95. package/lib/nxt-app.component.d.ts +8 -8
  96. package/lib/nxt-app.module.d.ts +46 -46
  97. package/lib/nxt-app.service.d.ts +6 -6
  98. package/lib/pages/booklet/booklet.component.d.ts +68 -68
  99. package/lib/pages/questionbook/questionbook.component.d.ts +66 -66
  100. package/lib/pages/questionnaire/questionnaire.component.d.ts +218 -218
  101. package/lib/pages/summary-page/summary-page.component.d.ts +20 -20
  102. package/lib/pipe/get-value.pipe.d.ts +7 -7
  103. package/lib/sample.d.ts +10 -10
  104. package/lib/services/change.service.d.ts +22 -22
  105. package/lib/services/data.service.d.ts +13 -13
  106. package/lib/services/salesforce.service.d.ts +11 -11
  107. package/lib/services/shared.service.d.ts +15 -15
  108. package/lib/services/storage.service.d.ts +13 -13
  109. package/lib/tam.i18n.d.ts +24 -24
  110. package/lib/wrapper.d.ts +203 -203
  111. package/package.json +1 -1
  112. package/public-api.d.ts +10 -10
  113. package/rangertechnologies-ngnxt-2.1.78.tgz +0 -0
  114. package/rangertechnologies-ngnxt-2.1.76.tgz +0 -0
@@ -1,169 +1,169 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../services/change.service";
4
- import * as i2 from "../../i18n.service";
5
- import * as i3 from "../../services/salesforce.service";
6
- import * as i4 from "../../services/data.service";
7
- import * as i5 from "@angular/common";
8
- import * as i6 from "@angular/forms";
9
- import * as i7 from "../../pipe/get-value.pipe";
10
- export class CustomTableComponent {
11
- changeService;
12
- i18nService;
13
- sfService;
14
- dataService;
15
- question;
16
- valueChange = new EventEmitter();
17
- tableInfo;
18
- tableHeader = [];
19
- tableData = [];
20
- addRowColSpan;
21
- tableSize; // HA 28DEC23 table size declaration
22
- objName;
23
- filterLogic;
24
- fieldMeta;
25
- firStr;
26
- searchBox = false;
27
- apiMeta;
28
- options;
29
- isDisabled = true;
30
- subscription;
31
- labelField;
32
- constructor(changeService, i18nService, sfService, dataService) {
33
- this.changeService = changeService;
34
- this.i18nService = i18nService;
35
- this.sfService = sfService;
36
- this.dataService = dataService;
37
- }
38
- // RS 09DEC24 Changed keys
39
- ngOnInit() {
40
- this.tableHeader = JSON.parse(this.question['fieldsMeta']);
41
- this.tableSize = 10 / this.tableHeader.length;
42
- // 12JUN24 - default table value
43
- if (this.question?.input) {
44
- this.tableData = this.question?.input;
45
- }
46
- if (this.apiMeta !== undefined) {
47
- this.options = [];
48
- let apiObj = JSON.parse(this.apiMeta);
49
- this.labelField = apiObj.field;
50
- if (apiObj.endpoint) {
51
- this.dataService.apiResponse(apiObj.endpoint)?.subscribe((apiResponse) => {
52
- let responses;
53
- if (apiObj.variable) {
54
- // VD 22May24 - handling multiple child objects
55
- responses = this.dataService.getValue(apiResponse, apiObj.variable);
56
- let results = [];
57
- // HA 19JAN24 To avoid undefined error in console
58
- for (let i = 0; i < responses?.length; i++) {
59
- var resp = responses[i];
60
- results.push(resp);
61
- }
62
- this.options = results;
63
- }
64
- else { // VD 19JAN24 - if response has value(which is array) only
65
- responses = apiResponse;
66
- this.options = responses;
67
- }
68
- this.options = this.options.map((obj) => ({ ...obj, edit: false }));
69
- // Reference https://www.npmjs.com/package/@ng-select/ng-select
70
- this.tableData = this.options;
71
- console.log('tableData', this.tableData);
72
- });
73
- }
74
- // VD NOV23 - handle the dependent update for dropdown
75
- let sourceId = apiObj.sourceQuestionId;
76
- let field = apiObj.field; // VD 13MAY24 - dynamic field changes
77
- if (sourceId) {
78
- // // VD 10May24 Subscribe for the changes
79
- this.subscription = this.changeService.changeAnnounced$.subscribe((changeValue) => {
80
- if (changeValue != undefined) {
81
- if (changeValue.valueObj != undefined && changeValue.fromQuestionId == apiObj.sourceQuestionId) {
82
- console.log('changes happen');
83
- this.options = this.options.map((obj) => ({ ...obj, edit: false }));
84
- let item = changeValue.valueObj;
85
- let validItem = true;
86
- // VD 13MAY24 - bind dynamic field
87
- if (this.tableData.length > 0) {
88
- this.tableData.forEach(element => {
89
- // VD 26Jun24 - to handle multiple objects
90
- const objElementValue = this.dataService.getValue(element, field);
91
- const objItemValue = this.dataService.getValue(item, field);
92
- if (objElementValue == objItemValue) {
93
- validItem = false;
94
- }
95
- });
96
- }
97
- if (validItem) {
98
- if (this.tableData.length > 0) {
99
- this.tableData = [...this.tableData, item];
100
- this.emitTableDataValue(this.tableData);
101
- }
102
- else {
103
- this.tableData.push(item);
104
- this.emitTableDataValue(this.tableData);
105
- }
106
- }
107
- }
108
- this.changeService.confirmChange(apiObj.sourceQuestionId);
109
- }
110
- });
111
- }
112
- }
113
- console.log('tableData', this.tableData);
114
- console.log('tableHeader', this.tableHeader);
115
- console.log('tableInfo', this.tableInfo);
116
- }
117
- addRow() {
118
- let newItem = {};
119
- this.tableHeader.forEach(item => {
120
- if (item.apiName) {
121
- newItem[item.apiName] = "";
122
- }
123
- });
124
- const updatedTableData = [...this.tableData, newItem];
125
- this.tableData = updatedTableData;
126
- this.emitTableDataValue(updatedTableData);
127
- }
128
- updateRadio(item, value) {
129
- item.value = value;
130
- this.emitTableDataValue(this.tableData);
131
- }
132
- // VD 23Aug24 handle Type
133
- updateLabel(rowIndex, label, value) {
134
- this.tableData[rowIndex][label] = value;
135
- this.emitTableDataValue(this.tableData);
136
- }
137
- deleteRow(rowIndex) {
138
- this.tableData.splice(rowIndex, 1);
139
- }
140
- editRow(rowIndex) {
141
- var a = 0;
142
- this.tableData.forEach(element => {
143
- if (a === rowIndex) {
144
- element.edit = true;
145
- }
146
- a++;
147
- });
148
- }
149
- updateNumber(item, label, value) {
150
- item.value[label] = value;
151
- this.emitTableDataValue(this.tableData);
152
- }
153
- emitTableDataValue(updatedTableData) {
154
- this.valueChange.emit(updatedTableData);
155
- }
156
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CustomTableComponent, deps: [{ token: i1.ChangeService }, { token: i2.I18nService }, { token: i3.SalesforceService }, { token: i4.DataService }], target: i0.ɵɵFactoryTarget.Component });
157
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CustomTableComponent, selector: "app-custom-table", inputs: { question: "question", apiMeta: "apiMeta" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<table class=\"table table-striped table-bordered\">\n <thead>\n <!-- HA 28DEC23 changed table header values and changed table size logic to evenly visible -->\n <!-- <th><input type=\"checkbox\" (change)=\"selectAll($event.target.checked)\"></th> -->\n <th *ngFor=\"let header of tableHeader; let hi = index\" [class]=\"'col-md-' + tableSize\">\n {{ header.label }}\n </th>\n <th class=\"col-md-2\" colspan=\"2\">Actions</th>\n </thead>\n <tbody *ngIf=\"tableData\">\n <tr *ngFor=\"let item of tableData; let i = index\">\n <!-- <td><input type=\"checkbox\" [(ngModel)]=\"item.selected\" (change)=\"selectItem(item)\"></td> -->\n <td *ngFor=\"let header of tableHeader; let j = index\">\n <div *ngIf=\"header.fldType === 'imagetext'\" [class]=\"'col-md-' + header.size\" style=\"display: flex;\">\n <img style=\"width: 35px; height: 32px; margin-right: 5px;\" [src]=\"item.imageSrc\" [alt]=\"item.altText\">\n <input type=\"text\" [(ngModel)]=\"item[header.fieldName]\" (ngModelChange)=\"updateLabel(i, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\n </div>\n <div *ngIf=\"header.fldType === 'image'\" [class]=\"'col-md-' + header.size\">\n <img style=\"width: 35px; height: 32px; margin-right: 5px;\" [src]=\"item[header.fieldName]\" [alt]=\"item.altText\">\n </div>\n <!--VD 23Aug24 handle readOnly -->\n <div *ngIf=\"header.fldType === 'Text' || header.fldType === 'Text'\">\n <!-- VD 26Jun24 - pipe change to handle multiple objects-->\n <input type=\"text\" [readonly]=\"header.readOnly\" [disabled]=\"!item.edit\" [ngClass]=\"{'editInput': item.edit && !header.readOnly}\" [ngModel]=\"'' | getValue: item : header.apiName\" (ngModelChange)=\"updateLabel(i, header.apiName,$event)\" class=\"she-line-input table-input\">\n </div>\n <!--VD 23Aug24 handle Number Type -->\n <div *ngIf=\"header.fldType === 'Number' || header.fldType === 'Number'\">\n <!-- VD 26Jun24 - pipe change to handle multiple objects-->\n <input type=\"Number\" [readonly]=\"header.readOnly\" [disabled]=\"!item.edit\" [ngClass]=\"{'editInput': item.edit && !header.readOnly}\" [ngModel]=\"'' | getValue: item : header.apiName\" (ngModelChange)=\"updateLabel(i, header.apiName,$event)\" class=\"she-line-input table-input\">\n </div>\n <div *ngIf=\"header.fldType === 'radio'\" [class]=\"'col-md-' + header.size\">\n <input type=\"radio\" [name]=\"item.name\" [checked]=\"item.value == header.fieldName\" (click)=\"updateRadio(item, header.fieldName)\">\n </div>\n </td>\n <td class=\"action\">\n <a style=\"display: flex; justify-content: space-evenly;\" (click)=\"editRow(i)\"><img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-edit%402x.png\" class=\"icon-edit1\" /><span>Edit</span></a>\n </td>\n <td class=\"action\">\n <a style=\"display: flex; justify-content: space-evenly;\" (click)=\"deleteRow(i)\"><img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-delete%402x.png\" class=\"deleteIcon\"/><span>Delete</span></a>\n </td>\n </tr>\n </tbody>\n</table>\n<div (click)=\"addRow()\" class=\"addRowClass\"><div class=\"circle-button\">+</div></div>", styles: [".table{width:100%;max-width:100%;margin-bottom:20px;border-collapse:collapse;border-spacing:0}.table-bordered{border:1px solid #ddd}thead{background-color:#03a9f4}thead th{color:#fff;font-size:14px;text-align:center}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}th{text-align:left}thead .permission{text-align:center}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}tbody{color:#797979}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}tbody td{font-size:13px}.permission_yes,.permission_no,.permission_na{text-align:center}.none-border th{border:none}.addRowClass{float:right;margin-right:15%}.editInput{border-bottom:1px solid red!important}.action,.addRowClass{cursor:pointer}.action :hover{color:red}.circle-button{width:50px;height:50px;border-radius:50%;background-color:#03a9f4;color:#fff;font-size:25px;display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:0 2px 4px #0003}.circle-button:hover{background-color:#03a9f4}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i7.GetValuePipe, name: "getValue" }] });
158
- }
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CustomTableComponent, decorators: [{
160
- type: Component,
161
- args: [{ selector: 'app-custom-table', template: "<table class=\"table table-striped table-bordered\">\n <thead>\n <!-- HA 28DEC23 changed table header values and changed table size logic to evenly visible -->\n <!-- <th><input type=\"checkbox\" (change)=\"selectAll($event.target.checked)\"></th> -->\n <th *ngFor=\"let header of tableHeader; let hi = index\" [class]=\"'col-md-' + tableSize\">\n {{ header.label }}\n </th>\n <th class=\"col-md-2\" colspan=\"2\">Actions</th>\n </thead>\n <tbody *ngIf=\"tableData\">\n <tr *ngFor=\"let item of tableData; let i = index\">\n <!-- <td><input type=\"checkbox\" [(ngModel)]=\"item.selected\" (change)=\"selectItem(item)\"></td> -->\n <td *ngFor=\"let header of tableHeader; let j = index\">\n <div *ngIf=\"header.fldType === 'imagetext'\" [class]=\"'col-md-' + header.size\" style=\"display: flex;\">\n <img style=\"width: 35px; height: 32px; margin-right: 5px;\" [src]=\"item.imageSrc\" [alt]=\"item.altText\">\n <input type=\"text\" [(ngModel)]=\"item[header.fieldName]\" (ngModelChange)=\"updateLabel(i, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\n </div>\n <div *ngIf=\"header.fldType === 'image'\" [class]=\"'col-md-' + header.size\">\n <img style=\"width: 35px; height: 32px; margin-right: 5px;\" [src]=\"item[header.fieldName]\" [alt]=\"item.altText\">\n </div>\n <!--VD 23Aug24 handle readOnly -->\n <div *ngIf=\"header.fldType === 'Text' || header.fldType === 'Text'\">\n <!-- VD 26Jun24 - pipe change to handle multiple objects-->\n <input type=\"text\" [readonly]=\"header.readOnly\" [disabled]=\"!item.edit\" [ngClass]=\"{'editInput': item.edit && !header.readOnly}\" [ngModel]=\"'' | getValue: item : header.apiName\" (ngModelChange)=\"updateLabel(i, header.apiName,$event)\" class=\"she-line-input table-input\">\n </div>\n <!--VD 23Aug24 handle Number Type -->\n <div *ngIf=\"header.fldType === 'Number' || header.fldType === 'Number'\">\n <!-- VD 26Jun24 - pipe change to handle multiple objects-->\n <input type=\"Number\" [readonly]=\"header.readOnly\" [disabled]=\"!item.edit\" [ngClass]=\"{'editInput': item.edit && !header.readOnly}\" [ngModel]=\"'' | getValue: item : header.apiName\" (ngModelChange)=\"updateLabel(i, header.apiName,$event)\" class=\"she-line-input table-input\">\n </div>\n <div *ngIf=\"header.fldType === 'radio'\" [class]=\"'col-md-' + header.size\">\n <input type=\"radio\" [name]=\"item.name\" [checked]=\"item.value == header.fieldName\" (click)=\"updateRadio(item, header.fieldName)\">\n </div>\n </td>\n <td class=\"action\">\n <a style=\"display: flex; justify-content: space-evenly;\" (click)=\"editRow(i)\"><img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-edit%402x.png\" class=\"icon-edit1\" /><span>Edit</span></a>\n </td>\n <td class=\"action\">\n <a style=\"display: flex; justify-content: space-evenly;\" (click)=\"deleteRow(i)\"><img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-delete%402x.png\" class=\"deleteIcon\"/><span>Delete</span></a>\n </td>\n </tr>\n </tbody>\n</table>\n<div (click)=\"addRow()\" class=\"addRowClass\"><div class=\"circle-button\">+</div></div>", styles: [".table{width:100%;max-width:100%;margin-bottom:20px;border-collapse:collapse;border-spacing:0}.table-bordered{border:1px solid #ddd}thead{background-color:#03a9f4}thead th{color:#fff;font-size:14px;text-align:center}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}th{text-align:left}thead .permission{text-align:center}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}tbody{color:#797979}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}tbody td{font-size:13px}.permission_yes,.permission_no,.permission_na{text-align:center}.none-border th{border:none}.addRowClass{float:right;margin-right:15%}.editInput{border-bottom:1px solid red!important}.action,.addRowClass{cursor:pointer}.action :hover{color:red}.circle-button{width:50px;height:50px;border-radius:50%;background-color:#03a9f4;color:#fff;font-size:25px;display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:0 2px 4px #0003}.circle-button:hover{background-color:#03a9f4}\n"] }]
162
- }], ctorParameters: function () { return [{ type: i1.ChangeService }, { type: i2.I18nService }, { type: i3.SalesforceService }, { type: i4.DataService }]; }, propDecorators: { question: [{
163
- type: Input
164
- }], valueChange: [{
165
- type: Output
166
- }], apiMeta: [{
167
- type: Input
168
- }] } });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS10YWJsZS9jdXN0b20tdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLXRhYmxlL2N1c3RvbS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFtQi9FLE1BQU0sT0FBTyxvQkFBb0I7SUFxQlg7SUFBb0M7SUFBa0M7SUFBc0M7SUFwQnZILFFBQVEsQ0FBVTtJQUNqQixXQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFbkUsU0FBUyxDQUFlO0lBQ3hCLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDakIsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNmLGFBQWEsQ0FBUztJQUN0QixTQUFTLENBQVMsQ0FBQyxvQ0FBb0M7SUFDdkQsT0FBTyxDQUFNO0lBQ2IsV0FBVyxDQUFNO0lBQ2pCLFNBQVMsQ0FBUztJQUNsQixNQUFNLENBQVM7SUFDZixTQUFTLEdBQVksS0FBSyxDQUFDO0lBQ2xCLE9BQU8sQ0FBUztJQUNsQixPQUFPLENBQVc7SUFDekIsVUFBVSxHQUFZLElBQUksQ0FBQztJQUMzQixZQUFZLENBQWU7SUFFcEIsVUFBVSxDQUFTO0lBRTFCLFlBQW9CLGFBQTRCLEVBQVEsV0FBd0IsRUFBVSxTQUE0QixFQUFVLFdBQXdCO1FBQXBJLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVEsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUFVLGdCQUFX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dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gSEEgMTlERUMyMyBpbXBvcnRlZCB0cmFuc2xhdGlvbiBzZXJ2aWNlXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZVdyYXBwZXIgfSBmcm9tICcuLi8uLi9tb2RlbC90YWJsZVdyYXBwZXInO1xuaW1wb3J0IHsgU2FsZXNmb3JjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zYWxlc2ZvcmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tICcuLi8uLi93cmFwcGVyJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEFQSU1ldGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FwaW1ldGEnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2UnO1xuXG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5jc3MnXVxufSlcblxuZXhwb3J0IGNsYXNzIEN1c3RvbVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcXVlc3Rpb246IFF1ZXN0aW9uXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICB0YWJsZUluZm86IFRhYmxlV3JhcHBlcjtcbiAgdGFibGVIZWFkZXIgPSBbXTtcbiAgdGFibGVEYXRhID0gW107XG4gIGFkZFJvd0NvbFNwYW46IG51bWJlcjtcbiAgdGFibGVTaXplOiBudW1iZXI7IC8vIEhBIDI4REVDMjMgdGFibGUgc2l6ZSBkZWNsYXJhdGlvblxuICBvYmpOYW1lOiBhbnk7XG4gIGZpbHRlckxvZ2ljOiBhbnk7XG4gIGZpZWxkTWV0YTogc3RyaW5nO1xuICBmaXJTdHI6IHN0cmluZztcbiAgc2VhcmNoQm94OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFwaU1ldGE6IHN0cmluZztcbiAgcHVibGljIG9wdGlvbnM6IHN0cmluZ1tdO1xuICBpc0Rpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHVibGljIGxhYmVsRmllbGQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UscHVibGljIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSwgcHJpdmF0ZSBzZlNlcnZpY2U6IFNhbGVzZm9yY2VTZXJ2aWNlLCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSkgeyB9XG4gIC8vIFJTIDA5REVDMjQgQ2hhbmdlZCBrZXlzXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGFibGVIZWFkZXIgPSBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb25bJ2ZpZWxkc01ldGEnXSk7XG4gICAgdGhpcy50YWJsZVNpemUgPSAxMC90aGlzLnRhYmxlSGVhZGVyLmxlbmd0aDtcbi8vIDEySlVOMjQgLSBkZWZhdWx0IHRhYmxlIHZhbHVlXG4gICAgaWYodGhpcy5xdWVzdGlvbj8uaW5wdXQpe1xuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMucXVlc3Rpb24/LmlucHV0O1xuICAgIH1cbiAgICBpZih0aGlzLmFwaU1ldGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgICBsZXQgYXBpT2JqOiBBUElNZXRhID0gSlNPTi5wYXJzZSh0aGlzLmFwaU1ldGEpO1xuICAgICAgdGhpcy5sYWJlbEZpZWxkID0gYXBpT2JqLmZpZWxkO1xuICAgICAgaWYoYXBpT2JqLmVuZHBvaW50KXtcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5hcGlSZXNwb25zZShhcGlPYmouZW5kcG9pbnQpPy5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgbGV0IHJlc3BvbnNlcztcbiAgICAgICAgICBpZihhcGlPYmoudmFyaWFibGUpe1xuICAgICAgICAgICAgIC8vIFZEIDIyTWF5MjQgLSBoYW5kbGluZyBtdWx0aXBsZSBjaGlsZCBvYmplY3RzXG4gICAgICAgICAgICByZXNwb25zZXMgPSAgdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShhcGlSZXNwb25zZSxhcGlPYmoudmFyaWFibGUpO1xuICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgIC8vIEhBIDE5SkFOMjQgVG8gYXZvaWQgdW5kZWZpbmVkIGVycm9yIGluIGNvbnNvbGVcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcG9uc2VzPy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICB2YXIgcmVzcCA9IHJlc3BvbnNlc1tpXTtcbiAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzdWx0cztcbiAgICAgICAgICB9ZWxzZXsgIC8vIFZEIDE5SkFOMjQgLSBpZiByZXNwb25zZSBoYXMgdmFsdWUod2hpY2ggaXMgYXJyYXkpIG9ubHlcbiAgICAgICAgICAgIHJlc3BvbnNlcyA9IGFwaVJlc3BvbnNlO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzcG9uc2VzO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnMubWFwKChvYmo6IGFueSkgPT4gKHsgLi4ub2JqLCBlZGl0OiBmYWxzZSB9KSk7XG4gICAgICAgICAgLy8gUmVmZXJlbmNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BuZy1zZWxlY3Qvbmctc2VsZWN0XG4gICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgY29uc29sZS5sb2coJ3RhYmxlRGF0YScsIHRoaXMudGFibGVEYXRhKTtcbiAgICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgIFxuICAgICAgLy8gVkQgTk9WMjMgLSBoYW5kbGUgdGhlIGRlcGVuZGVudCB1cGRhdGUgZm9yIGRyb3Bkb3duXG4gICAgICBsZXQgc291cmNlSWQgPSBhcGlPYmouc291cmNlUXVlc3Rpb25JZDtcbiAgICAgIGxldCBmaWVsZCA9IGFwaU9iai5maWVsZDsgICAgICAgIC8vIFZEIDEzTUFZMjQgLSBkeW5hbWljIGZpZWxkIGNoYW5nZXNcbiAgICAgIGlmKHNvdXJjZUlkKXtcbiAgICAgICAgLy8gLy8gVkQgMTBNYXkyNCBTdWJzY3JpYmUgZm9yIHRoZSBjaGFuZ2VzXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jaGFuZ2VTZXJ2aWNlLmNoYW5nZUFubm91bmNlZCQuc3Vic2NyaWJlKFxuICAgICAgICAgIChjaGFuZ2VWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYoY2hhbmdlVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGlmKGNoYW5nZVZhbHVlLnZhbHVlT2JqICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VWYWx1ZS5mcm9tUXVlc3Rpb25JZCA9PSBhcGlPYmouc291cmNlUXVlc3Rpb25JZCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjaGFuZ2VzIGhhcHBlbicpO1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucy5tYXAoKG9iajogYW55KSA9PiAoeyAuLi5vYmosIGVkaXQ6IGZhbHNlIH0pKTtcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSA9IGNoYW5nZVZhbHVlLnZhbHVlT2JqO1xuICAgICAgICAgICAgICAgIGxldCB2YWxpZEl0ZW0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAvLyBWRCAxM01BWTI0IC0gYmluZCBkeW5hbWljIGZpZWxkXG4gICAgICAgICAgICAgICAgaWYodGhpcy50YWJsZURhdGEubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgIC8vIFZEIDI2SnVuMjQgLSB0byBoYW5kbGUgbXVsdGlwbGUgb2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvYmpFbGVtZW50VmFsdWUgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGVsZW1lbnQsZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvYmpJdGVtVmFsdWUgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGl0ZW0sZmllbGQpXG4gICAgICAgICAgICAgICAgICAgIGlmKG9iakVsZW1lbnRWYWx1ZSA9PSBvYmpJdGVtVmFsdWUpe1xuICAgICAgICAgICAgICAgICAgICAgICB2YWxpZEl0ZW0gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHZhbGlkSXRlbSl7XG4gICAgICAgICAgICAgICAgICBpZih0aGlzLnRhYmxlRGF0YS5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbLi4udGhpcy50YWJsZURhdGEsaXRlbV07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcbiAgICAgICAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodGhpcy50YWJsZURhdGEpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZVNlcnZpY2UuY29uZmlybUNoYW5nZShhcGlPYmouc291cmNlUXVlc3Rpb25JZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zb2xlLmxvZygndGFibGVEYXRhJywgdGhpcy50YWJsZURhdGEpO1xuICAgIGNvbnNvbGUubG9nKCd0YWJsZUhlYWRlcicsIHRoaXMudGFibGVIZWFkZXIpO1xuICAgIGNvbnNvbGUubG9nKCd0YWJsZUluZm8nLCB0aGlzLnRhYmxlSW5mbyk7XG4gIH1cblxuXG4gIGFkZFJvdygpOiB2b2lkIHtcbiAgICBsZXQgbmV3SXRlbSA9IHt9O1xuICAgICAgdGhpcy50YWJsZUhlYWRlci5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZihpdGVtLmFwaU5hbWUpe1xuICAgICAgICAgIG5ld0l0ZW1baXRlbS5hcGlOYW1lXT0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgY29uc3QgdXBkYXRlZFRhYmxlRGF0YSA9IFsuLi50aGlzLnRhYmxlRGF0YSwgbmV3SXRlbV07XG4gICAgdGhpcy50YWJsZURhdGEgPSB1cGRhdGVkVGFibGVEYXRhO1xuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHVwZGF0ZWRUYWJsZURhdGEpO1xuICB9XG5cbiAgdXBkYXRlUmFkaW8oaXRlbTogYW55LCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaXRlbS52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcbiAgfVxuICAvLyBWRCAyM0F1ZzI0IGhhbmRsZSAgVHlwZVxuICB1cGRhdGVMYWJlbChyb3dJbmRleDogbnVtYmVyLCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy50YWJsZURhdGFbcm93SW5kZXhdW2xhYmVsXSA9IHZhbHVlO1xuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcbiAgfVxuICBkZWxldGVSb3cocm93SW5kZXg6IG51bWJlcil7XG4gICAgdGhpcy50YWJsZURhdGEuc3BsaWNlKHJvd0luZGV4LCAxKTtcbiAgfVxuICBlZGl0Um93KHJvd0luZGV4OiBudW1iZXIpe1xuICAgIHZhciBhID0gMDtcbiAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYoYSA9PT0gcm93SW5kZXgpe1xuICAgICAgICBlbGVtZW50LmVkaXQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgYSsrO1xuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTnVtYmVyKGl0ZW06IGFueSwgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyl7XG4gICAgaXRlbS52YWx1ZVtsYWJlbF0gPSB2YWx1ZTtcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSk7XG4gIH1cblxuXG4gIGVtaXRUYWJsZURhdGFWYWx1ZSh1cGRhdGVkVGFibGVEYXRhOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh1cGRhdGVkVGFibGVEYXRhKTtcbiAgfVxufSIsIjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWRcIj5cbiAgPHRoZWFkPlxuICAgIDwhLS0gSEEgMjhERUMyMyBjaGFuZ2VkIHRhYmxlIGhlYWRlciB2YWx1ZXMgYW5kIGNoYW5nZWQgdGFibGUgc2l6ZSBsb2dpYyB0byBldmVubHkgdmlzaWJsZSAtLT5cbiAgICA8IS0tIDx0aD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgKGNoYW5nZSk9XCJzZWxlY3RBbGwoJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiPjwvdGg+IC0tPlxuICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHRhYmxlSGVhZGVyOyBsZXQgaGkgPSBpbmRleFwiIFtjbGFzc109XCInY29sLW1kLScgKyB0YWJsZVNpemVcIj5cbiAgICAgIHt7IGhlYWRlci5sYWJlbCB9fVxuICAgIDwvdGg+XG4gICAgPHRoIGNsYXNzPVwiY29sLW1kLTJcIiBjb2xzcGFuPVwiMlwiPkFjdGlvbnM8L3RoPlxuICA8L3RoZWFkPlxuICA8dGJvZHkgKm5nSWY9XCJ0YWJsZURhdGFcIj5cbiAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFibGVEYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8IS0tIDx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJpdGVtLnNlbGVjdGVkXCIgKGNoYW5nZSk9XCJzZWxlY3RJdGVtKGl0ZW0pXCI+PC90ZD4gLS0+XG4gICAgICA8dGQgKm5nRm9yPVwibGV0IGhlYWRlciBvZiB0YWJsZUhlYWRlcjsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdpbWFnZXRleHQnXCIgW2NsYXNzXT1cIidjb2wtbWQtJyArIGhlYWRlci5zaXplXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICAgICAgICAgIDxpbWcgc3R5bGU9XCJ3aWR0aDogMzVweDsgaGVpZ2h0OiAzMnB4OyBtYXJnaW4tcmlnaHQ6IDVweDtcIiBbc3JjXT1cIml0ZW0uaW1hZ2VTcmNcIiBbYWx0XT1cIml0ZW0uYWx0VGV4dFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiaXRlbVtoZWFkZXIuZmllbGROYW1lXVwiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKGksIGhlYWRlci5maWVsZE5hbWUsIGl0ZW1baGVhZGVyLmZpZWxkTmFtZV0pXCIgY2xhc3M9XCJzaGUtbGluZS1pbnB1dCB0YWJsZS1pbnB1dFwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlci5mbGRUeXBlID09PSAnaW1hZ2UnXCIgW2NsYXNzXT1cIidjb2wtbWQtJyArIGhlYWRlci5zaXplXCI+XG4gICAgICAgICAgPGltZyBzdHlsZT1cIndpZHRoOiAzNXB4OyBoZWlnaHQ6IDMycHg7IG1hcmdpbi1yaWdodDogNXB4O1wiIFtzcmNdPVwiaXRlbVtoZWFkZXIuZmllbGROYW1lXVwiIFthbHRdPVwiaXRlbS5hbHRUZXh0XCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tVkQgMjNBdWcyNCBoYW5kbGUgcmVhZE9ubHkgIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdUZXh0JyB8fCBoZWFkZXIuZmxkVHlwZSA9PT0gJ1RleHQnXCI+XG4gICAgICAgICAgPCEtLSBWRCAyNkp1bjI0IC0gcGlwZSBjaGFuZ2UgdG8gaGFuZGxlIG11bHRpcGxlIG9iamVjdHMtLT5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbcmVhZG9ubHldPVwiaGVhZGVyLnJlYWRPbmx5XCIgW2Rpc2FibGVkXT1cIiFpdGVtLmVkaXRcIiBbbmdDbGFzc109XCJ7J2VkaXRJbnB1dCc6IGl0ZW0uZWRpdCAmJiAhaGVhZGVyLnJlYWRPbmx5fVwiIFtuZ01vZGVsXT1cIicnIHwgZ2V0VmFsdWU6IGl0ZW0gOiBoZWFkZXIuYXBpTmFtZVwiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKGksIGhlYWRlci5hcGlOYW1lLCRldmVudClcIiBjbGFzcz1cInNoZS1saW5lLWlucHV0IHRhYmxlLWlucHV0XCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tVkQgMjNBdWcyNCBoYW5kbGUgTnVtYmVyIFR5cGUgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIuZmxkVHlwZSA9PT0gJ051bWJlcicgfHwgaGVhZGVyLmZsZFR5cGUgPT09ICdOdW1iZXInXCI+XG4gICAgICAgICAgPCEtLSBWRCAyNkp1bjI0IC0gcGlwZSBjaGFuZ2UgdG8gaGFuZGxlIG11bHRpcGxlIG9iamVjdHMtLT5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIk51bWJlclwiIFtyZWFkb25seV09XCJoZWFkZXIucmVhZE9ubHlcIiBbZGlzYWJsZWRdPVwiIWl0ZW0uZWRpdFwiIFtuZ0NsYXNzXT1cInsnZWRpdElucHV0JzogaXRlbS5lZGl0ICYmICFoZWFkZXIucmVhZE9ubHl9XCIgW25nTW9kZWxdPVwiJycgfCBnZXRWYWx1ZTogaXRlbSA6IGhlYWRlci5hcGlOYW1lXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlTGFiZWwoaSwgaGVhZGVyLmFwaU5hbWUsJGV2ZW50KVwiIGNsYXNzPVwic2hlLWxpbmUtaW5wdXQgdGFibGUtaW5wdXRcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIuZmxkVHlwZSA9PT0gJ3JhZGlvJ1wiIFtjbGFzc109XCInY29sLW1kLScgKyBoZWFkZXIuc2l6ZVwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBbbmFtZV09XCJpdGVtLm5hbWVcIiBbY2hlY2tlZF09XCJpdGVtLnZhbHVlID09IGhlYWRlci5maWVsZE5hbWVcIiAgKGNsaWNrKT1cInVwZGF0ZVJhZGlvKGl0ZW0sIGhlYWRlci5maWVsZE5hbWUpXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cImFjdGlvblwiPlxuICAgICAgICA8YSBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtZXZlbmx5O1wiIChjbGljayk9XCJlZGl0Um93KGkpXCI+PGltZyBzcmM9XCJodHRwczovL3JueHQuczMuYW1hem9uYXdzLmNvbS9NeXRJY29uL2ljb24tZWRpdCU0MDJ4LnBuZ1wiIGNsYXNzPVwiaWNvbi1lZGl0MVwiIC8+PHNwYW4+RWRpdDwvc3Bhbj48L2E+XG4gICAgICA8L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiYWN0aW9uXCI+XG4gICAgICAgIDxhIHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XCIgKGNsaWNrKT1cImRlbGV0ZVJvdyhpKVwiPjxpbWcgc3JjPVwiaHR0cHM6Ly9ybnh0LnMzLmFtYXpvbmF3cy5jb20vTXl0SWNvbi9pY29uLWRlbGV0ZSU0MDJ4LnBuZ1wiIGNsYXNzPVwiZGVsZXRlSWNvblwiLz48c3Bhbj5EZWxldGU8L3NwYW4+PC9hPlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L3Rib2R5PlxuPC90YWJsZT5cbjxkaXYgKGNsaWNrKT1cImFkZFJvdygpXCIgY2xhc3M9XCJhZGRSb3dDbGFzc1wiPjxkaXYgY2xhc3M9XCJjaXJjbGUtYnV0dG9uXCI+KzwvZGl2PjwvZGl2PiJdfQ==
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/change.service";
4
+ import * as i2 from "../../i18n.service";
5
+ import * as i3 from "../../services/salesforce.service";
6
+ import * as i4 from "../../services/data.service";
7
+ import * as i5 from "@angular/common";
8
+ import * as i6 from "@angular/forms";
9
+ import * as i7 from "../../pipe/get-value.pipe";
10
+ export class CustomTableComponent {
11
+ changeService;
12
+ i18nService;
13
+ sfService;
14
+ dataService;
15
+ question;
16
+ valueChange = new EventEmitter();
17
+ tableInfo;
18
+ tableHeader = [];
19
+ tableData = [];
20
+ addRowColSpan;
21
+ tableSize; // HA 28DEC23 table size declaration
22
+ objName;
23
+ filterLogic;
24
+ fieldMeta;
25
+ firStr;
26
+ searchBox = false;
27
+ apiMeta;
28
+ options;
29
+ isDisabled = true;
30
+ subscription;
31
+ labelField;
32
+ constructor(changeService, i18nService, sfService, dataService) {
33
+ this.changeService = changeService;
34
+ this.i18nService = i18nService;
35
+ this.sfService = sfService;
36
+ this.dataService = dataService;
37
+ }
38
+ // RS 09DEC24 Changed keys
39
+ ngOnInit() {
40
+ this.tableHeader = JSON.parse(this.question['fieldsMeta']);
41
+ this.tableSize = 10 / this.tableHeader.length;
42
+ // 12JUN24 - default table value
43
+ if (this.question?.input) {
44
+ this.tableData = this.question?.input;
45
+ }
46
+ if (this.apiMeta !== undefined) {
47
+ this.options = [];
48
+ let apiObj = JSON.parse(this.apiMeta);
49
+ this.labelField = apiObj.field;
50
+ if (apiObj.endpoint) {
51
+ this.dataService.apiResponse(apiObj.endpoint)?.subscribe((apiResponse) => {
52
+ let responses;
53
+ if (apiObj.variable) {
54
+ // VD 22May24 - handling multiple child objects
55
+ responses = this.dataService.getValue(apiResponse, apiObj.variable);
56
+ let results = [];
57
+ // HA 19JAN24 To avoid undefined error in console
58
+ for (let i = 0; i < responses?.length; i++) {
59
+ var resp = responses[i];
60
+ results.push(resp);
61
+ }
62
+ this.options = results;
63
+ }
64
+ else { // VD 19JAN24 - if response has value(which is array) only
65
+ responses = apiResponse;
66
+ this.options = responses;
67
+ }
68
+ this.options = this.options.map((obj) => ({ ...obj, edit: false }));
69
+ // Reference https://www.npmjs.com/package/@ng-select/ng-select
70
+ this.tableData = this.options;
71
+ console.log('tableData', this.tableData);
72
+ });
73
+ }
74
+ // VD NOV23 - handle the dependent update for dropdown
75
+ let sourceId = apiObj.sourceQuestionId;
76
+ let field = apiObj.field; // VD 13MAY24 - dynamic field changes
77
+ if (sourceId) {
78
+ // // VD 10May24 Subscribe for the changes
79
+ this.subscription = this.changeService.changeAnnounced$.subscribe((changeValue) => {
80
+ if (changeValue != undefined) {
81
+ if (changeValue.valueObj != undefined && changeValue.fromQuestionId == apiObj.sourceQuestionId) {
82
+ console.log('changes happen');
83
+ this.options = this.options.map((obj) => ({ ...obj, edit: false }));
84
+ let item = changeValue.valueObj;
85
+ let validItem = true;
86
+ // VD 13MAY24 - bind dynamic field
87
+ if (this.tableData.length > 0) {
88
+ this.tableData.forEach(element => {
89
+ // VD 26Jun24 - to handle multiple objects
90
+ const objElementValue = this.dataService.getValue(element, field);
91
+ const objItemValue = this.dataService.getValue(item, field);
92
+ if (objElementValue == objItemValue) {
93
+ validItem = false;
94
+ }
95
+ });
96
+ }
97
+ if (validItem) {
98
+ if (this.tableData.length > 0) {
99
+ this.tableData = [...this.tableData, item];
100
+ this.emitTableDataValue(this.tableData);
101
+ }
102
+ else {
103
+ this.tableData.push(item);
104
+ this.emitTableDataValue(this.tableData);
105
+ }
106
+ }
107
+ }
108
+ this.changeService.confirmChange(apiObj.sourceQuestionId);
109
+ }
110
+ });
111
+ }
112
+ }
113
+ console.log('tableData', this.tableData);
114
+ console.log('tableHeader', this.tableHeader);
115
+ console.log('tableInfo', this.tableInfo);
116
+ }
117
+ addRow() {
118
+ let newItem = {};
119
+ this.tableHeader.forEach(item => {
120
+ if (item.apiName) {
121
+ newItem[item.apiName] = "";
122
+ }
123
+ });
124
+ const updatedTableData = [...this.tableData, newItem];
125
+ this.tableData = updatedTableData;
126
+ this.emitTableDataValue(updatedTableData);
127
+ }
128
+ updateRadio(item, value) {
129
+ item.value = value;
130
+ this.emitTableDataValue(this.tableData);
131
+ }
132
+ // VD 23Aug24 handle Type
133
+ updateLabel(rowIndex, label, value) {
134
+ this.tableData[rowIndex][label] = value;
135
+ this.emitTableDataValue(this.tableData);
136
+ }
137
+ deleteRow(rowIndex) {
138
+ this.tableData.splice(rowIndex, 1);
139
+ }
140
+ editRow(rowIndex) {
141
+ var a = 0;
142
+ this.tableData.forEach(element => {
143
+ if (a === rowIndex) {
144
+ element.edit = true;
145
+ }
146
+ a++;
147
+ });
148
+ }
149
+ updateNumber(item, label, value) {
150
+ item.value[label] = value;
151
+ this.emitTableDataValue(this.tableData);
152
+ }
153
+ emitTableDataValue(updatedTableData) {
154
+ this.valueChange.emit(updatedTableData);
155
+ }
156
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CustomTableComponent, deps: [{ token: i1.ChangeService }, { token: i2.I18nService }, { token: i3.SalesforceService }, { token: i4.DataService }], target: i0.ɵɵFactoryTarget.Component });
157
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CustomTableComponent, selector: "app-custom-table", inputs: { question: "question", apiMeta: "apiMeta" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<table class=\"table table-striped table-bordered\">\r\n <thead>\r\n <!-- HA 28DEC23 changed table header values and changed table size logic to evenly visible -->\r\n <!-- <th><input type=\"checkbox\" (change)=\"selectAll($event.target.checked)\"></th> -->\r\n <th *ngFor=\"let header of tableHeader; let hi = index\" [class]=\"'col-md-' + tableSize\">\r\n {{ header.label }}\r\n </th>\r\n <th class=\"col-md-2\" colspan=\"2\">Actions</th>\r\n </thead>\r\n <tbody *ngIf=\"tableData\">\r\n <tr *ngFor=\"let item of tableData; let i = index\">\r\n <!-- <td><input type=\"checkbox\" [(ngModel)]=\"item.selected\" (change)=\"selectItem(item)\"></td> -->\r\n <td *ngFor=\"let header of tableHeader; let j = index\">\r\n <div *ngIf=\"header.fldType === 'imagetext'\" [class]=\"'col-md-' + header.size\" style=\"display: flex;\">\r\n <img style=\"width: 35px; height: 32px; margin-right: 5px;\" [src]=\"item.imageSrc\" [alt]=\"item.altText\">\r\n <input type=\"text\" [(ngModel)]=\"item[header.fieldName]\" (ngModelChange)=\"updateLabel(i, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\r\n </div>\r\n <div *ngIf=\"header.fldType === 'image'\" [class]=\"'col-md-' + header.size\">\r\n <img style=\"width: 35px; height: 32px; margin-right: 5px;\" [src]=\"item[header.fieldName]\" [alt]=\"item.altText\">\r\n </div>\r\n <!--VD 23Aug24 handle readOnly -->\r\n <div *ngIf=\"header.fldType === 'Text' || header.fldType === 'Text'\">\r\n <!-- VD 26Jun24 - pipe change to handle multiple objects-->\r\n <input type=\"text\" [readonly]=\"header.readOnly\" [disabled]=\"!item.edit\" [ngClass]=\"{'editInput': item.edit && !header.readOnly}\" [ngModel]=\"'' | getValue: item : header.apiName\" (ngModelChange)=\"updateLabel(i, header.apiName,$event)\" class=\"she-line-input table-input\">\r\n </div>\r\n <!--VD 23Aug24 handle Number Type -->\r\n <div *ngIf=\"header.fldType === 'Number' || header.fldType === 'Number'\">\r\n <!-- VD 26Jun24 - pipe change to handle multiple objects-->\r\n <input type=\"Number\" [readonly]=\"header.readOnly\" [disabled]=\"!item.edit\" [ngClass]=\"{'editInput': item.edit && !header.readOnly}\" [ngModel]=\"'' | getValue: item : header.apiName\" (ngModelChange)=\"updateLabel(i, header.apiName,$event)\" class=\"she-line-input table-input\">\r\n </div>\r\n <div *ngIf=\"header.fldType === 'radio'\" [class]=\"'col-md-' + header.size\">\r\n <input type=\"radio\" [name]=\"item.name\" [checked]=\"item.value == header.fieldName\" (click)=\"updateRadio(item, header.fieldName)\">\r\n </div>\r\n </td>\r\n <td class=\"action\">\r\n <a style=\"display: flex; justify-content: space-evenly;\" (click)=\"editRow(i)\"><img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-edit%402x.png\" class=\"icon-edit1\" /><span>Edit</span></a>\r\n </td>\r\n <td class=\"action\">\r\n <a style=\"display: flex; justify-content: space-evenly;\" (click)=\"deleteRow(i)\"><img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-delete%402x.png\" class=\"deleteIcon\"/><span>Delete</span></a>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<div (click)=\"addRow()\" class=\"addRowClass\"><div class=\"circle-button\">+</div></div>", styles: [".table{width:100%;max-width:100%;margin-bottom:20px;border-collapse:collapse;border-spacing:0}.table-bordered{border:1px solid #ddd}thead{background-color:#03a9f4}thead th{color:#fff;font-size:14px;text-align:center}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}th{text-align:left}thead .permission{text-align:center}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}tbody{color:#797979}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}tbody td{font-size:13px}.permission_yes,.permission_no,.permission_na{text-align:center}.none-border th{border:none}.addRowClass{float:right;margin-right:15%}.editInput{border-bottom:1px solid red!important}.action,.addRowClass{cursor:pointer}.action :hover{color:red}.circle-button{width:50px;height:50px;border-radius:50%;background-color:#03a9f4;color:#fff;font-size:25px;display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:0 2px 4px #0003}.circle-button:hover{background-color:#03a9f4}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i7.GetValuePipe, name: "getValue" }] });
158
+ }
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CustomTableComponent, decorators: [{
160
+ type: Component,
161
+ args: [{ selector: 'app-custom-table', template: "<table class=\"table table-striped table-bordered\">\r\n <thead>\r\n <!-- HA 28DEC23 changed table header values and changed table size logic to evenly visible -->\r\n <!-- <th><input type=\"checkbox\" (change)=\"selectAll($event.target.checked)\"></th> -->\r\n <th *ngFor=\"let header of tableHeader; let hi = index\" [class]=\"'col-md-' + tableSize\">\r\n {{ header.label }}\r\n </th>\r\n <th class=\"col-md-2\" colspan=\"2\">Actions</th>\r\n </thead>\r\n <tbody *ngIf=\"tableData\">\r\n <tr *ngFor=\"let item of tableData; let i = index\">\r\n <!-- <td><input type=\"checkbox\" [(ngModel)]=\"item.selected\" (change)=\"selectItem(item)\"></td> -->\r\n <td *ngFor=\"let header of tableHeader; let j = index\">\r\n <div *ngIf=\"header.fldType === 'imagetext'\" [class]=\"'col-md-' + header.size\" style=\"display: flex;\">\r\n <img style=\"width: 35px; height: 32px; margin-right: 5px;\" [src]=\"item.imageSrc\" [alt]=\"item.altText\">\r\n <input type=\"text\" [(ngModel)]=\"item[header.fieldName]\" (ngModelChange)=\"updateLabel(i, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\r\n </div>\r\n <div *ngIf=\"header.fldType === 'image'\" [class]=\"'col-md-' + header.size\">\r\n <img style=\"width: 35px; height: 32px; margin-right: 5px;\" [src]=\"item[header.fieldName]\" [alt]=\"item.altText\">\r\n </div>\r\n <!--VD 23Aug24 handle readOnly -->\r\n <div *ngIf=\"header.fldType === 'Text' || header.fldType === 'Text'\">\r\n <!-- VD 26Jun24 - pipe change to handle multiple objects-->\r\n <input type=\"text\" [readonly]=\"header.readOnly\" [disabled]=\"!item.edit\" [ngClass]=\"{'editInput': item.edit && !header.readOnly}\" [ngModel]=\"'' | getValue: item : header.apiName\" (ngModelChange)=\"updateLabel(i, header.apiName,$event)\" class=\"she-line-input table-input\">\r\n </div>\r\n <!--VD 23Aug24 handle Number Type -->\r\n <div *ngIf=\"header.fldType === 'Number' || header.fldType === 'Number'\">\r\n <!-- VD 26Jun24 - pipe change to handle multiple objects-->\r\n <input type=\"Number\" [readonly]=\"header.readOnly\" [disabled]=\"!item.edit\" [ngClass]=\"{'editInput': item.edit && !header.readOnly}\" [ngModel]=\"'' | getValue: item : header.apiName\" (ngModelChange)=\"updateLabel(i, header.apiName,$event)\" class=\"she-line-input table-input\">\r\n </div>\r\n <div *ngIf=\"header.fldType === 'radio'\" [class]=\"'col-md-' + header.size\">\r\n <input type=\"radio\" [name]=\"item.name\" [checked]=\"item.value == header.fieldName\" (click)=\"updateRadio(item, header.fieldName)\">\r\n </div>\r\n </td>\r\n <td class=\"action\">\r\n <a style=\"display: flex; justify-content: space-evenly;\" (click)=\"editRow(i)\"><img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-edit%402x.png\" class=\"icon-edit1\" /><span>Edit</span></a>\r\n </td>\r\n <td class=\"action\">\r\n <a style=\"display: flex; justify-content: space-evenly;\" (click)=\"deleteRow(i)\"><img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-delete%402x.png\" class=\"deleteIcon\"/><span>Delete</span></a>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<div (click)=\"addRow()\" class=\"addRowClass\"><div class=\"circle-button\">+</div></div>", styles: [".table{width:100%;max-width:100%;margin-bottom:20px;border-collapse:collapse;border-spacing:0}.table-bordered{border:1px solid #ddd}thead{background-color:#03a9f4}thead th{color:#fff;font-size:14px;text-align:center}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}th{text-align:left}thead .permission{text-align:center}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}tbody{color:#797979}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}tbody td{font-size:13px}.permission_yes,.permission_no,.permission_na{text-align:center}.none-border th{border:none}.addRowClass{float:right;margin-right:15%}.editInput{border-bottom:1px solid red!important}.action,.addRowClass{cursor:pointer}.action :hover{color:red}.circle-button{width:50px;height:50px;border-radius:50%;background-color:#03a9f4;color:#fff;font-size:25px;display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:0 2px 4px #0003}.circle-button:hover{background-color:#03a9f4}\n"] }]
162
+ }], ctorParameters: function () { return [{ type: i1.ChangeService }, { type: i2.I18nService }, { type: i3.SalesforceService }, { type: i4.DataService }]; }, propDecorators: { question: [{
163
+ type: Input
164
+ }], valueChange: [{
165
+ type: Output
166
+ }], apiMeta: [{
167
+ type: Input
168
+ }] } });
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS10YWJsZS9jdXN0b20tdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLXRhYmxlL2N1c3RvbS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFtQi9FLE1BQU0sT0FBTyxvQkFBb0I7SUFxQlg7SUFBb0M7SUFBa0M7SUFBc0M7SUFwQnZILFFBQVEsQ0FBVTtJQUNqQixXQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFbkUsU0FBUyxDQUFlO0lBQ3hCLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDakIsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNmLGFBQWEsQ0FBUztJQUN0QixTQUFTLENBQVMsQ0FBQyxvQ0FBb0M7SUFDdkQsT0FBTyxDQUFNO0lBQ2IsV0FBVyxDQUFNO0lBQ2pCLFNBQVMsQ0FBUztJQUNsQixNQUFNLENBQVM7SUFDZixTQUFTLEdBQVksS0FBSyxDQUFDO0lBQ2xCLE9BQU8sQ0FBUztJQUNsQixPQUFPLENBQVc7SUFDekIsVUFBVSxHQUFZLElBQUksQ0FBQztJQUMzQixZQUFZLENBQWU7SUFFcEIsVUFBVSxDQUFTO0lBRTFCLFlBQW9CLGFBQTRCLEVBQVEsV0FBd0IsRUFBVSxTQUE0QixFQUFVLFdBQXdCO1FBQXBJLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVEsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUFVLGdCQUFX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dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9pMThuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUYWJsZVdyYXBwZXIgfSBmcm9tICcuLi8uLi9tb2RlbC90YWJsZVdyYXBwZXInO1xyXG5pbXBvcnQgeyBTYWxlc2ZvcmNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NhbGVzZm9yY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vd3JhcHBlcic7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBJTWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXBpbWV0YSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2UnO1xyXG5cclxuZGVjbGFyZSB2YXIgJDogYW55O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tdGFibGUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBRdWVzdGlvblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgdGFibGVJbmZvOiBUYWJsZVdyYXBwZXI7XHJcbiAgdGFibGVIZWFkZXIgPSBbXTtcclxuICB0YWJsZURhdGEgPSBbXTtcclxuICBhZGRSb3dDb2xTcGFuOiBudW1iZXI7XHJcbiAgdGFibGVTaXplOiBudW1iZXI7IC8vIEhBIDI4REVDMjMgdGFibGUgc2l6ZSBkZWNsYXJhdGlvblxyXG4gIG9iak5hbWU6IGFueTtcclxuICBmaWx0ZXJMb2dpYzogYW55O1xyXG4gIGZpZWxkTWV0YTogc3RyaW5nO1xyXG4gIGZpclN0cjogc3RyaW5nO1xyXG4gIHNlYXJjaEJveDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFwaU1ldGE6IHN0cmluZztcclxuICBwdWJsaWMgb3B0aW9uczogc3RyaW5nW107XHJcbiAgaXNEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHB1YmxpYyBsYWJlbEZpZWxkOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlU2VydmljZTogQ2hhbmdlU2VydmljZSxwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlLCBwcml2YXRlIHNmU2VydmljZTogU2FsZXNmb3JjZVNlcnZpY2UsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKSB7IH1cclxuICAvLyBSUyAwOURFQzI0IENoYW5nZWQga2V5c1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJsZUhlYWRlciA9IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddKTtcclxuICAgIHRoaXMudGFibGVTaXplID0gMTAvdGhpcy50YWJsZUhlYWRlci5sZW5ndGg7XHJcbi8vIDEySlVOMjQgLSBkZWZhdWx0IHRhYmxlIHZhbHVlXHJcbiAgICBpZih0aGlzLnF1ZXN0aW9uPy5pbnB1dCl7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLnF1ZXN0aW9uPy5pbnB1dDtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuYXBpTWV0YSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xyXG4gICAgICBsZXQgYXBpT2JqOiBBUElNZXRhID0gSlNPTi5wYXJzZSh0aGlzLmFwaU1ldGEpO1xyXG4gICAgICB0aGlzLmxhYmVsRmllbGQgPSBhcGlPYmouZmllbGQ7XHJcbiAgICAgIGlmKGFwaU9iai5lbmRwb2ludCl7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5hcGlSZXNwb25zZShhcGlPYmouZW5kcG9pbnQpPy5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBsZXQgcmVzcG9uc2VzO1xyXG4gICAgICAgICAgaWYoYXBpT2JqLnZhcmlhYmxlKXtcclxuICAgICAgICAgICAgIC8vIFZEIDIyTWF5MjQgLSBoYW5kbGluZyBtdWx0aXBsZSBjaGlsZCBvYmplY3RzXHJcbiAgICAgICAgICAgIHJlc3BvbnNlcyA9ICB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGFwaVJlc3BvbnNlLGFwaU9iai52YXJpYWJsZSk7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHRzID0gW107XHJcbiAgICAgICAgICAgIC8vIEhBIDE5SkFOMjQgVG8gYXZvaWQgdW5kZWZpbmVkIGVycm9yIGluIGNvbnNvbGVcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNwb25zZXM/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgdmFyIHJlc3AgPSByZXNwb25zZXNbaV07XHJcbiAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3ApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3VsdHM7XHJcbiAgICAgICAgICB9ZWxzZXsgIC8vIFZEIDE5SkFOMjQgLSBpZiByZXNwb25zZSBoYXMgdmFsdWUod2hpY2ggaXMgYXJyYXkpIG9ubHlcclxuICAgICAgICAgICAgcmVzcG9uc2VzID0gYXBpUmVzcG9uc2U7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHJlc3BvbnNlcztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucy5tYXAoKG9iajogYW55KSA9PiAoeyAuLi5vYmosIGVkaXQ6IGZhbHNlIH0pKTtcclxuICAgICAgICAgIC8vIFJlZmVyZW5jZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Abmctc2VsZWN0L25nLXNlbGVjdFxyXG4gICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMub3B0aW9ucztcclxuICAgICAgICBjb25zb2xlLmxvZygndGFibGVEYXRhJywgdGhpcy50YWJsZURhdGEpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICBcclxuICAgICAgLy8gVkQgTk9WMjMgLSBoYW5kbGUgdGhlIGRlcGVuZGVudCB1cGRhdGUgZm9yIGRyb3Bkb3duXHJcbiAgICAgIGxldCBzb3VyY2VJZCA9IGFwaU9iai5zb3VyY2VRdWVzdGlvbklkO1xyXG4gICAgICBsZXQgZmllbGQgPSBhcGlPYmouZmllbGQ7ICAgICAgICAvLyBWRCAxM01BWTI0IC0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzXHJcbiAgICAgIGlmKHNvdXJjZUlkKXtcclxuICAgICAgICAvLyAvLyBWRCAxME1heTI0IFN1YnNjcmliZSBmb3IgdGhlIGNoYW5nZXNcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbmdlU2VydmljZS5jaGFuZ2VBbm5vdW5jZWQkLnN1YnNjcmliZShcclxuICAgICAgICAgIChjaGFuZ2VWYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBpZihjaGFuZ2VWYWx1ZS52YWx1ZU9iaiAhPSB1bmRlZmluZWQgJiYgY2hhbmdlVmFsdWUuZnJvbVF1ZXN0aW9uSWQgPT0gYXBpT2JqLnNvdXJjZVF1ZXN0aW9uSWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjaGFuZ2VzIGhhcHBlbicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zLm1hcCgob2JqOiBhbnkpID0+ICh7IC4uLm9iaiwgZWRpdDogZmFsc2UgfSkpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBjaGFuZ2VWYWx1ZS52YWx1ZU9iajtcclxuICAgICAgICAgICAgICAgIGxldCB2YWxpZEl0ZW0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgIC8vIFZEIDEzTUFZMjQgLSBiaW5kIGR5bmFtaWMgZmllbGRcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMudGFibGVEYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgLy8gVkQgMjZKdW4yNCAtIHRvIGhhbmRsZSBtdWx0aXBsZSBvYmplY3RzXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqRWxlbWVudFZhbHVlID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShlbGVtZW50LGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvYmpJdGVtVmFsdWUgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGl0ZW0sZmllbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYob2JqRWxlbWVudFZhbHVlID09IG9iakl0ZW1WYWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRJdGVtID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKHZhbGlkSXRlbSl7XHJcbiAgICAgICAgICAgICAgICAgIGlmKHRoaXMudGFibGVEYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gWy4uLnRoaXMudGFibGVEYXRhLGl0ZW1dO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVEYXRhLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlU2VydmljZS5jb25maXJtQ2hhbmdlKGFwaU9iai5zb3VyY2VRdWVzdGlvbklkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCd0YWJsZURhdGEnLCB0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICBjb25zb2xlLmxvZygndGFibGVIZWFkZXInLCB0aGlzLnRhYmxlSGVhZGVyKTtcclxuICAgIGNvbnNvbGUubG9nKCd0YWJsZUluZm8nLCB0aGlzLnRhYmxlSW5mbyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYWRkUm93KCk6IHZvaWQge1xyXG4gICAgbGV0IG5ld0l0ZW0gPSB7fTtcclxuICAgICAgdGhpcy50YWJsZUhlYWRlci5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmKGl0ZW0uYXBpTmFtZSl7XHJcbiAgICAgICAgICBuZXdJdGVtW2l0ZW0uYXBpTmFtZV09IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIGNvbnN0IHVwZGF0ZWRUYWJsZURhdGEgPSBbLi4udGhpcy50YWJsZURhdGEsIG5ld0l0ZW1dO1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSB1cGRhdGVkVGFibGVEYXRhO1xyXG4gICAgdGhpcy5lbWl0VGFibGVEYXRhVmFsdWUodXBkYXRlZFRhYmxlRGF0YSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVSYWRpbyhpdGVtOiBhbnksIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGl0ZW0udmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICB9XHJcbiAgLy8gVkQgMjNBdWcyNCBoYW5kbGUgIFR5cGVcclxuICB1cGRhdGVMYWJlbChyb3dJbmRleDogbnVtYmVyLCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlRGF0YVtyb3dJbmRleF1bbGFiZWxdID0gdmFsdWU7XHJcbiAgICB0aGlzLmVtaXRUYWJsZURhdGFWYWx1ZSh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgfVxyXG4gIGRlbGV0ZVJvdyhyb3dJbmRleDogbnVtYmVyKXtcclxuICAgIHRoaXMudGFibGVEYXRhLnNwbGljZShyb3dJbmRleCwgMSk7XHJcbiAgfVxyXG4gIGVkaXRSb3cocm93SW5kZXg6IG51bWJlcil7XHJcbiAgICB2YXIgYSA9IDA7XHJcbiAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBpZihhID09PSByb3dJbmRleCl7XHJcbiAgICAgICAgZWxlbWVudC5lZGl0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBhKys7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZU51bWJlcihpdGVtOiBhbnksIGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpe1xyXG4gICAgaXRlbS52YWx1ZVtsYWJlbF0gPSB2YWx1ZTtcclxuICAgIHRoaXMuZW1pdFRhYmxlRGF0YVZhbHVlKHRoaXMudGFibGVEYXRhKTtcclxuICB9XHJcblxyXG5cclxuICBlbWl0VGFibGVEYXRhVmFsdWUodXBkYXRlZFRhYmxlRGF0YTogYW55W10pOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh1cGRhdGVkVGFibGVEYXRhKTtcclxuICB9XHJcbn0iLCI8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWJvcmRlcmVkXCI+XHJcbiAgPHRoZWFkPlxyXG4gICAgPCEtLSBIQSAyOERFQzIzIGNoYW5nZWQgdGFibGUgaGVhZGVyIHZhbHVlcyBhbmQgY2hhbmdlZCB0YWJsZSBzaXplIGxvZ2ljIHRvIGV2ZW5seSB2aXNpYmxlIC0tPlxyXG4gICAgPCEtLSA8dGg+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwic2VsZWN0QWxsKCRldmVudC50YXJnZXQuY2hlY2tlZClcIj48L3RoPiAtLT5cclxuICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHRhYmxlSGVhZGVyOyBsZXQgaGkgPSBpbmRleFwiIFtjbGFzc109XCInY29sLW1kLScgKyB0YWJsZVNpemVcIj5cclxuICAgICAge3sgaGVhZGVyLmxhYmVsIH19XHJcbiAgICA8L3RoPlxyXG4gICAgPHRoIGNsYXNzPVwiY29sLW1kLTJcIiBjb2xzcGFuPVwiMlwiPkFjdGlvbnM8L3RoPlxyXG4gIDwvdGhlYWQ+XHJcbiAgPHRib2R5ICpuZ0lmPVwidGFibGVEYXRhXCI+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFibGVEYXRhOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgIDwhLS0gPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cIml0ZW0uc2VsZWN0ZWRcIiAoY2hhbmdlKT1cInNlbGVjdEl0ZW0oaXRlbSlcIj48L3RkPiAtLT5cclxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgdGFibGVIZWFkZXI7IGxldCBqID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdpbWFnZXRleHQnXCIgW2NsYXNzXT1cIidjb2wtbWQtJyArIGhlYWRlci5zaXplXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgICAgPGltZyBzdHlsZT1cIndpZHRoOiAzNXB4OyBoZWlnaHQ6IDMycHg7IG1hcmdpbi1yaWdodDogNXB4O1wiIFtzcmNdPVwiaXRlbS5pbWFnZVNyY1wiIFthbHRdPVwiaXRlbS5hbHRUZXh0XCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIml0ZW1baGVhZGVyLmZpZWxkTmFtZV1cIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVMYWJlbChpLCBoZWFkZXIuZmllbGROYW1lLCBpdGVtW2hlYWRlci5maWVsZE5hbWVdKVwiIGNsYXNzPVwic2hlLWxpbmUtaW5wdXQgdGFibGUtaW5wdXRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdpbWFnZSdcIiBbY2xhc3NdPVwiJ2NvbC1tZC0nICsgaGVhZGVyLnNpemVcIj5cclxuICAgICAgICAgIDxpbWcgc3R5bGU9XCJ3aWR0aDogMzVweDsgaGVpZ2h0OiAzMnB4OyBtYXJnaW4tcmlnaHQ6IDVweDtcIiBbc3JjXT1cIml0ZW1baGVhZGVyLmZpZWxkTmFtZV1cIiBbYWx0XT1cIml0ZW0uYWx0VGV4dFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1WRCAyM0F1ZzI0IGhhbmRsZSByZWFkT25seSAgLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlci5mbGRUeXBlID09PSAnVGV4dCcgfHwgaGVhZGVyLmZsZFR5cGUgPT09ICdUZXh0J1wiPlxyXG4gICAgICAgICAgPCEtLSBWRCAyNkp1bjI0IC0gcGlwZSBjaGFuZ2UgdG8gaGFuZGxlIG11bHRpcGxlIG9iamVjdHMtLT5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtyZWFkb25seV09XCJoZWFkZXIucmVhZE9ubHlcIiBbZGlzYWJsZWRdPVwiIWl0ZW0uZWRpdFwiIFtuZ0NsYXNzXT1cInsnZWRpdElucHV0JzogaXRlbS5lZGl0ICYmICFoZWFkZXIucmVhZE9ubHl9XCIgW25nTW9kZWxdPVwiJycgfCBnZXRWYWx1ZTogaXRlbSA6IGhlYWRlci5hcGlOYW1lXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlTGFiZWwoaSwgaGVhZGVyLmFwaU5hbWUsJGV2ZW50KVwiIGNsYXNzPVwic2hlLWxpbmUtaW5wdXQgdGFibGUtaW5wdXRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tVkQgMjNBdWcyNCBoYW5kbGUgTnVtYmVyIFR5cGUgLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlci5mbGRUeXBlID09PSAnTnVtYmVyJyB8fCBoZWFkZXIuZmxkVHlwZSA9PT0gJ051bWJlcidcIj5cclxuICAgICAgICAgIDwhLS0gVkQgMjZKdW4yNCAtIHBpcGUgY2hhbmdlIHRvIGhhbmRsZSBtdWx0aXBsZSBvYmplY3RzLS0+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIk51bWJlclwiIFtyZWFkb25seV09XCJoZWFkZXIucmVhZE9ubHlcIiBbZGlzYWJsZWRdPVwiIWl0ZW0uZWRpdFwiIFtuZ0NsYXNzXT1cInsnZWRpdElucHV0JzogaXRlbS5lZGl0ICYmICFoZWFkZXIucmVhZE9ubHl9XCIgW25nTW9kZWxdPVwiJycgfCBnZXRWYWx1ZTogaXRlbSA6IGhlYWRlci5hcGlOYW1lXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlTGFiZWwoaSwgaGVhZGVyLmFwaU5hbWUsJGV2ZW50KVwiIGNsYXNzPVwic2hlLWxpbmUtaW5wdXQgdGFibGUtaW5wdXRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyLmZsZFR5cGUgPT09ICdyYWRpbydcIiBbY2xhc3NdPVwiJ2NvbC1tZC0nICsgaGVhZGVyLnNpemVcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBbbmFtZV09XCJpdGVtLm5hbWVcIiBbY2hlY2tlZF09XCJpdGVtLnZhbHVlID09IGhlYWRlci5maWVsZE5hbWVcIiAgKGNsaWNrKT1cInVwZGF0ZVJhZGlvKGl0ZW0sIGhlYWRlci5maWVsZE5hbWUpXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0ZCBjbGFzcz1cImFjdGlvblwiPlxyXG4gICAgICAgIDxhIHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XCIgKGNsaWNrKT1cImVkaXRSb3coaSlcIj48aW1nIHNyYz1cImh0dHBzOi8vcm54dC5zMy5hbWF6b25hd3MuY29tL015dEljb24vaWNvbi1lZGl0JTQwMngucG5nXCIgY2xhc3M9XCJpY29uLWVkaXQxXCIgLz48c3Bhbj5FZGl0PC9zcGFuPjwvYT5cclxuICAgICAgPC90ZD5cclxuICAgICAgPHRkIGNsYXNzPVwiYWN0aW9uXCI+XHJcbiAgICAgICAgPGEgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcIiAoY2xpY2spPVwiZGVsZXRlUm93KGkpXCI+PGltZyBzcmM9XCJodHRwczovL3JueHQuczMuYW1hem9uYXdzLmNvbS9NeXRJY29uL2ljb24tZGVsZXRlJTQwMngucG5nXCIgY2xhc3M9XCJkZWxldGVJY29uXCIvPjxzcGFuPkRlbGV0ZTwvc3Bhbj48L2E+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGJvZHk+XHJcbjwvdGFibGU+XHJcbjxkaXYgKGNsaWNrKT1cImFkZFJvdygpXCIgY2xhc3M9XCJhZGRSb3dDbGFzc1wiPjxkaXYgY2xhc3M9XCJjaXJjbGUtYnV0dG9uXCI+KzwvZGl2PjwvZGl2PiJdfQ==