@rangertechnologies/ngnxt 2.0.27 → 2.0.29
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 +2 -24
- package/esm2022/lib/components/custom-date-picker/custom-date-picker.component.mjs +33 -33
- package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +82 -73
- package/esm2022/lib/components/custom-input/custom-input.component.mjs +75 -46
- package/esm2022/lib/components/custom-table/custom-table.component.mjs +52 -51
- package/esm2022/lib/components/custom-text-area/custom-text-area.component.mjs +34 -34
- package/esm2022/lib/components/dropdown-with-flag/dropdown-with-flag.component.mjs +34 -34
- package/esm2022/lib/components/pick-location/pick-location.component.mjs +134 -134
- package/esm2022/lib/components/search-box/search-box.component.mjs +84 -84
- package/esm2022/lib/interfaces/actionMeta.mjs +2 -0
- package/esm2022/lib/interfaces/apimeta.mjs +2 -2
- package/esm2022/lib/interfaces/dependencyMeta.mjs +2 -0
- package/esm2022/lib/model/changeWrapper.mjs +8 -0
- package/esm2022/lib/model/tableWrapper.mjs +16 -0
- package/esm2022/lib/nxt-app.component.mjs +22 -22
- package/esm2022/lib/nxt-app.module.mjs +262 -262
- package/esm2022/lib/nxt-app.service.mjs +14 -14
- package/esm2022/lib/pages/booklet/booklet.component.mjs +89 -79
- package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +2139 -2131
- package/esm2022/lib/sample.mjs +432 -432
- package/esm2022/lib/services/change.service.mjs +33 -0
- package/esm2022/lib/services/data.service.mjs +40 -40
- package/esm2022/lib/services/salesforce.service.mjs +46 -46
- package/esm2022/lib/wrapper.mjs +165 -165
- package/esm2022/public-api.mjs +10 -10
- package/esm2022/rangertechnologies-ngnxt.mjs +4 -4
- package/fesm2022/rangertechnologies-ngnxt.mjs +3643 -3551
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/components/custom-date-picker/custom-date-picker.component.d.ts +14 -14
- package/lib/components/custom-dropdown/custom-dropdown.component.d.ts +26 -23
- package/lib/components/custom-input/custom-input.component.d.ts +26 -18
- package/lib/components/custom-table/custom-table.component.d.ts +27 -23
- package/lib/components/custom-text-area/custom-text-area.component.d.ts +14 -14
- package/lib/components/dropdown-with-flag/dropdown-with-flag.component.d.ts +14 -14
- package/lib/components/pick-location/pick-location.component.d.ts +38 -38
- package/lib/components/search-box/search-box.component.d.ts +34 -34
- package/lib/interfaces/actionMeta.d.ts +5 -0
- package/lib/interfaces/apimeta.d.ts +5 -5
- package/lib/interfaces/dependencyMeta.d.ts +5 -0
- package/lib/model/changeWrapper.d.ts +7 -0
- package/lib/model/tableWrapper.d.ts +15 -0
- package/lib/nxt-app.component.d.ts +8 -8
- package/lib/nxt-app.module.d.ts +26 -26
- package/lib/nxt-app.service.d.ts +6 -6
- package/lib/pages/booklet/booklet.component.d.ts +33 -29
- package/lib/pages/questionnaire/questionnaire.component.d.ts +209 -207
- package/lib/sample.d.ts +10 -10
- package/lib/services/change.service.d.ts +13 -0
- package/lib/services/data.service.d.ts +9 -9
- package/lib/services/salesforce.service.d.ts +11 -11
- package/lib/wrapper.d.ts +164 -164
- package/package.json +1 -1
- package/public-api.d.ts +6 -6
- package/rangertechnologies-ngnxt-2.0.29.tgz +0 -0
- package/rangertechnologies-ngnxt-2.0.27.tgz +0 -0
package/README.md
CHANGED
|
@@ -1,24 +1,2 @@
|
|
|
1
|
-
# NxtApp
|
|
2
|
-
|
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.14.
|
|
4
|
-
|
|
5
|
-
## Code scaffolding
|
|
6
|
-
|
|
7
|
-
Run `ng generate component component-name --project nxt-app` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project nxt-app`.
|
|
8
|
-
> Note: Don't forget to add `--project nxt-app` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
-
|
|
10
|
-
## Build
|
|
11
|
-
|
|
12
|
-
Run `ng build nxt-app` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
-
|
|
14
|
-
## Publishing
|
|
15
|
-
|
|
16
|
-
After building your library with `ng build nxt-app`, go to the dist folder `cd dist/nxt-app` and run `npm publish`.
|
|
17
|
-
|
|
18
|
-
## Running unit tests
|
|
19
|
-
|
|
20
|
-
Run `ng test nxt-app` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
-
|
|
22
|
-
## Further help
|
|
23
|
-
|
|
24
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
|
1
|
+
# NxtApp
|
|
2
|
+
This need to be updated for better impact.
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/forms";
|
|
4
|
-
import * as i2 from "ng-pick-datetime";
|
|
5
|
-
export class CustomDatePickerComponent {
|
|
6
|
-
date;
|
|
7
|
-
minDate;
|
|
8
|
-
maxDate;
|
|
9
|
-
dateChange = new EventEmitter();
|
|
10
|
-
dateSelected;
|
|
11
|
-
constructor() { }
|
|
12
|
-
ngOnInit() {
|
|
13
|
-
this.dateSelected = new Date(this.date);
|
|
14
|
-
}
|
|
15
|
-
onDateChange(event) {
|
|
16
|
-
this.dateChange.emit(event);
|
|
17
|
-
}
|
|
18
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomDatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomDatePickerComponent, selector: "app-custom-date-picker", inputs: { date: "date", minDate: "minDate", maxDate: "maxDate" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<!-- <div class=\"date-picker-container\">\n <label>{{label}}</label>\n <input type=\"date\" [min]=\"minDate\" [max]=\"maxDate\" [required]=\"required\" (change)=\"onDateChanged($event)\">\n</div> -->\n<!-- <mat-form-field>\n <input matInput [matDatepicker]=\"picker\" [placeholder]=\"placeholder\" [min]=\"minDate\" [max]=\"maxDate\" [(ngModel)]=\"selectedDate\" (dateChange)=\"onDateChange($event)\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field> -->\n\n<p>\n <input class=\"input-shengel\"\n [(ngModel)]=\"dateSelected\" \n [owlDateTimeTrigger]=\"dt\" \n [owlDateTime]=\"dt\" \n [min]=\"minDate\"\n placeholder=\"DD/MM/YYYY HH:MM\"\n style=\"width: 100%; height: 35px; border: none; box-shadow: none; border-bottom: 1px solid #ccc;\"\n (dateTimeChange)=\"onDateChange($event)\">\n <owl-date-time #dt></owl-date-time>\n</p>\n ", styles: [""], dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.OwlDateTimeTriggerDirective, selector: "[owlDateTimeTrigger]", inputs: ["disabled", "owlDateTimeTrigger"] }, { kind: "directive", type: i2.OwlDateTimeInputDirective, selector: "input[owlDateTime]", inputs: ["rangeSeparator", "owlDateTime", "owlDateTimeFilter", "min", "max", "selectMode", "value", "values", "_disabled"], outputs: ["dateTimeChange", "dateTimeInput"], exportAs: ["owlDateTimeInput"] }, { kind: "component", type: i2.OwlDateTimeComponent, selector: "owl-date-time", inputs: ["startAt", "pickerType", "pickerMode", "disabled", "opened", "backdropClass", "panelClass", "scrollStrategy"], outputs: ["afterPickerClosed", "afterPickerOpen", "yearSelected", "monthSelected"], exportAs: ["owlDateTime"] }] });
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomDatePickerComponent, decorators: [{
|
|
22
|
-
type: Component,
|
|
23
|
-
args: [{ selector: 'app-custom-date-picker', template: "<!-- <div class=\"date-picker-container\">\n <label>{{label}}</label>\n <input type=\"date\" [min]=\"minDate\" [max]=\"maxDate\" [required]=\"required\" (change)=\"onDateChanged($event)\">\n</div> -->\n<!-- <mat-form-field>\n <input matInput [matDatepicker]=\"picker\" [placeholder]=\"placeholder\" [min]=\"minDate\" [max]=\"maxDate\" [(ngModel)]=\"selectedDate\" (dateChange)=\"onDateChange($event)\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field> -->\n\n<p>\n <input class=\"input-shengel\"\n [(ngModel)]=\"dateSelected\" \n [owlDateTimeTrigger]=\"dt\" \n [owlDateTime]=\"dt\" \n [min]=\"minDate\"\n placeholder=\"DD/MM/YYYY HH:MM\"\n style=\"width: 100%; height: 35px; border: none; box-shadow: none; border-bottom: 1px solid #ccc;\"\n (dateTimeChange)=\"onDateChange($event)\">\n <owl-date-time #dt></owl-date-time>\n</p>\n " }]
|
|
24
|
-
}], ctorParameters: function () { return []; }, propDecorators: { date: [{
|
|
25
|
-
type: Input
|
|
26
|
-
}], minDate: [{
|
|
27
|
-
type: Input
|
|
28
|
-
}], maxDate: [{
|
|
29
|
-
type: Input
|
|
30
|
-
}], dateChange: [{
|
|
31
|
-
type: Output
|
|
32
|
-
}] } });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/forms";
|
|
4
|
+
import * as i2 from "ng-pick-datetime";
|
|
5
|
+
export class CustomDatePickerComponent {
|
|
6
|
+
date;
|
|
7
|
+
minDate;
|
|
8
|
+
maxDate;
|
|
9
|
+
dateChange = new EventEmitter();
|
|
10
|
+
dateSelected;
|
|
11
|
+
constructor() { }
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
this.dateSelected = new Date(this.date);
|
|
14
|
+
}
|
|
15
|
+
onDateChange(event) {
|
|
16
|
+
this.dateChange.emit(event);
|
|
17
|
+
}
|
|
18
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomDatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomDatePickerComponent, selector: "app-custom-date-picker", inputs: { date: "date", minDate: "minDate", maxDate: "maxDate" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<!-- <div class=\"date-picker-container\">\r\n <label>{{label}}</label>\r\n <input type=\"date\" [min]=\"minDate\" [max]=\"maxDate\" [required]=\"required\" (change)=\"onDateChanged($event)\">\r\n</div> -->\r\n<!-- <mat-form-field>\r\n <input matInput [matDatepicker]=\"picker\" [placeholder]=\"placeholder\" [min]=\"minDate\" [max]=\"maxDate\" [(ngModel)]=\"selectedDate\" (dateChange)=\"onDateChange($event)\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n</mat-form-field> -->\r\n\r\n<p>\r\n <input class=\"input-shengel\"\r\n [(ngModel)]=\"dateSelected\" \r\n [owlDateTimeTrigger]=\"dt\" \r\n [owlDateTime]=\"dt\" \r\n [min]=\"minDate\"\r\n placeholder=\"DD/MM/YYYY HH:MM\"\r\n style=\"width: 100%; height: 35px; border: none; box-shadow: none; border-bottom: 1px solid #ccc;\"\r\n (dateTimeChange)=\"onDateChange($event)\">\r\n <owl-date-time #dt></owl-date-time>\r\n</p>\r\n ", styles: [""], dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.OwlDateTimeTriggerDirective, selector: "[owlDateTimeTrigger]", inputs: ["disabled", "owlDateTimeTrigger"] }, { kind: "directive", type: i2.OwlDateTimeInputDirective, selector: "input[owlDateTime]", inputs: ["rangeSeparator", "owlDateTime", "owlDateTimeFilter", "min", "max", "selectMode", "value", "values", "_disabled"], outputs: ["dateTimeChange", "dateTimeInput"], exportAs: ["owlDateTimeInput"] }, { kind: "component", type: i2.OwlDateTimeComponent, selector: "owl-date-time", inputs: ["startAt", "pickerType", "pickerMode", "disabled", "opened", "backdropClass", "panelClass", "scrollStrategy"], outputs: ["afterPickerClosed", "afterPickerOpen", "yearSelected", "monthSelected"], exportAs: ["owlDateTime"] }] });
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomDatePickerComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{ selector: 'app-custom-date-picker', template: "<!-- <div class=\"date-picker-container\">\r\n <label>{{label}}</label>\r\n <input type=\"date\" [min]=\"minDate\" [max]=\"maxDate\" [required]=\"required\" (change)=\"onDateChanged($event)\">\r\n</div> -->\r\n<!-- <mat-form-field>\r\n <input matInput [matDatepicker]=\"picker\" [placeholder]=\"placeholder\" [min]=\"minDate\" [max]=\"maxDate\" [(ngModel)]=\"selectedDate\" (dateChange)=\"onDateChange($event)\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n</mat-form-field> -->\r\n\r\n<p>\r\n <input class=\"input-shengel\"\r\n [(ngModel)]=\"dateSelected\" \r\n [owlDateTimeTrigger]=\"dt\" \r\n [owlDateTime]=\"dt\" \r\n [min]=\"minDate\"\r\n placeholder=\"DD/MM/YYYY HH:MM\"\r\n style=\"width: 100%; height: 35px; border: none; box-shadow: none; border-bottom: 1px solid #ccc;\"\r\n (dateTimeChange)=\"onDateChange($event)\">\r\n <owl-date-time #dt></owl-date-time>\r\n</p>\r\n " }]
|
|
24
|
+
}], ctorParameters: function () { return []; }, propDecorators: { date: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], minDate: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}], maxDate: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}], dateChange: [{
|
|
31
|
+
type: Output
|
|
32
|
+
}] } });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRhdGUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1kYXRlLXBpY2tlci9jdXN0b20tZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWRhdGUtcGlja2VyL2N1c3RvbS1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFTLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7O0FBTzNFLE1BQU0sT0FBTyx5QkFBeUI7SUFDM0IsSUFBSSxDQUFTO0lBQ2IsT0FBTyxDQUFLO0lBQ1osT0FBTyxDQUFLO0lBQ1gsVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ2xFLFlBQVksQ0FBSTtJQUNoQixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO1FBQ1AsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7d0dBZFUseUJBQXlCOzRGQUF6Qix5QkFBeUIsdUtDUHRDLG0vQkFxQkU7OzRGRGRXLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx3QkFBd0I7MEVBS3pCLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCxJbnB1dCxPdXRwdXQsRXZlbnRFbWl0dGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS1kYXRlLXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLWRhdGUtcGlja2VyLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZGF0ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1pbkRhdGU6YW55O1xyXG4gIEBJbnB1dCgpIG1heERhdGU6YW55O1xyXG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIGRhdGVTZWxlY3RlZDphbnlcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgdGhpcy5kYXRlU2VsZWN0ZWQgPSBuZXcgRGF0ZSh0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgb25EYXRlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG59XHJcbiIsIjwhLS0gPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWNvbnRhaW5lclwiPlxyXG4gICAgPGxhYmVsPnt7bGFiZWx9fTwvbGFiZWw+XHJcbiAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBbbWluXT1cIm1pbkRhdGVcIiBbbWF4XT1cIm1heERhdGVcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIiAoY2hhbmdlKT1cIm9uRGF0ZUNoYW5nZWQoJGV2ZW50KVwiPlxyXG48L2Rpdj4gLS0+XHJcbjwhLS0gPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFttaW5dPVwibWluRGF0ZVwiIFttYXhdPVwibWF4RGF0ZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlXCIgKGRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIj5cclxuICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxyXG48L21hdC1mb3JtLWZpZWxkPiAtLT5cclxuXHJcbjxwPlxyXG4gICAgPGlucHV0ICBjbGFzcz1cImlucHV0LXNoZW5nZWxcIlxyXG4gICAgWyhuZ01vZGVsKV09XCJkYXRlU2VsZWN0ZWRcIiBcclxuICAgIFtvd2xEYXRlVGltZVRyaWdnZXJdPVwiZHRcIiBcclxuICAgIFtvd2xEYXRlVGltZV09XCJkdFwiICBcclxuICAgIFttaW5dPVwibWluRGF0ZVwiXHJcbiAgICBwbGFjZWhvbGRlcj1cIkREL01NL1lZWVkgSEg6TU1cIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAzNXB4OyBib3JkZXI6IG5vbmU7IGJveC1zaGFkb3c6IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1wiXHJcbiAgICAoZGF0ZVRpbWVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIj5cclxuICAgIDxvd2wtZGF0ZS10aW1lICNkdD48L293bC1kYXRlLXRpbWU+XHJcbjwvcD5cclxuICAiXX0=
|
|
@@ -1,73 +1,82 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import
|
|
3
|
-
import * as
|
|
4
|
-
import * as
|
|
5
|
-
import * as
|
|
6
|
-
import * as
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}],
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}],
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { ChangeWrapper } from '../../model/changeWrapper';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common/http";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "@ng-select/ng-select";
|
|
8
|
+
export class CustomDropdownComponent {
|
|
9
|
+
http;
|
|
10
|
+
options;
|
|
11
|
+
placeholder;
|
|
12
|
+
apiMeta;
|
|
13
|
+
selectedValue;
|
|
14
|
+
progressBar;
|
|
15
|
+
id;
|
|
16
|
+
errorMessage;
|
|
17
|
+
error;
|
|
18
|
+
fromShengel = false;
|
|
19
|
+
valueChange = new EventEmitter();
|
|
20
|
+
constructor(http) {
|
|
21
|
+
this.http = http;
|
|
22
|
+
}
|
|
23
|
+
labelField;
|
|
24
|
+
valueField;
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
console.log('inside oninit of custom-dropdown of ' + this.id);
|
|
27
|
+
// console.log(this.apiMeta);
|
|
28
|
+
if (this.apiMeta !== undefined) {
|
|
29
|
+
this.options = [];
|
|
30
|
+
let apiObj = JSON.parse(this.apiMeta);
|
|
31
|
+
this.labelField = apiObj.field;
|
|
32
|
+
this.apiResponse(apiObj.endpoint).subscribe((apiResponse) => {
|
|
33
|
+
let responses = apiResponse[apiObj.variable];
|
|
34
|
+
let results = [];
|
|
35
|
+
for (let i = 0; i < responses.length; i++) {
|
|
36
|
+
var resp = responses[i];
|
|
37
|
+
results.push(resp);
|
|
38
|
+
}
|
|
39
|
+
// Reference https://www.npmjs.com/package/@ng-select/ng-select
|
|
40
|
+
this.options = results;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
apiResponse(endpoint) {
|
|
45
|
+
return this.http.get(endpoint);
|
|
46
|
+
}
|
|
47
|
+
selectChange(event) {
|
|
48
|
+
console.log('inside selectChange from ' + this.id);
|
|
49
|
+
// console.log(event);
|
|
50
|
+
let change = new ChangeWrapper(); // ChangeWrapper = JSON.parse('{}');
|
|
51
|
+
change.fromQuestionId = this.id;
|
|
52
|
+
change.valueObj = event;
|
|
53
|
+
this.valueChange.emit(change);
|
|
54
|
+
}
|
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomDropdownComponent, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomDropdownComponent, selector: "app-custom-dropdown", inputs: { options: "options", placeholder: "placeholder", apiMeta: "apiMeta", selectedValue: "selectedValue", progressBar: "progressBar", id: "id", errorMessage: "errorMessage", error: "error", fromShengel: "fromShengel" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<select *ngIf=\"!fromShengel\"\r\n [ngClass]=\"{\r\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\r\n 'custom-select': !progressBar\r\n }\" class=\"custom-select mr-sm-2 dd-height\" \r\n [id]=\"id\" \r\n [(ngModel)]=\"selectedValue\"\r\n (change)=\"selectChange($event.target.value);\" \r\n [style.borderColor]=\"error ? 'red' : '#858585'\"\r\n [style.color]=\"error ? 'red' : ''\">\r\n <option *ngFor=\"let option of options\" [value]=\"option.Value__c\" class=\"option\">{{ option.Value__c }}</option>\r\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\r\n</select>\r\n\r\n<ng-select *ngIf=\"fromShengel\"\r\n class=\"shengel-custom-select\"\r\n [(ngModel)]=\"selectedValue\" \r\n [placeholder]=\"placeholder\"\r\n (change)=\"selectChange($event)\"\r\n [id]=\"id\">\r\n <ng-option *ngFor=\"let option of options\" [value]=\"option\">{{ option[labelField] }}</ng-option> \r\n <ng-option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</ng-option>\r\n</ng-select>\r\n\r\n<span *ngIf=\"error && fromShengel\" class=\"error-msg\">Required*</span>", styles: [".ng-select{width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4.ɵr, selector: "ng-option", inputs: ["disabled", "value"] }] });
|
|
57
|
+
}
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomDropdownComponent, decorators: [{
|
|
59
|
+
type: Component,
|
|
60
|
+
args: [{ selector: 'app-custom-dropdown', template: "<select *ngIf=\"!fromShengel\"\r\n [ngClass]=\"{\r\n 'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\r\n 'custom-select': !progressBar\r\n }\" class=\"custom-select mr-sm-2 dd-height\" \r\n [id]=\"id\" \r\n [(ngModel)]=\"selectedValue\"\r\n (change)=\"selectChange($event.target.value);\" \r\n [style.borderColor]=\"error ? 'red' : '#858585'\"\r\n [style.color]=\"error ? 'red' : ''\">\r\n <option *ngFor=\"let option of options\" [value]=\"option.Value__c\" class=\"option\">{{ option.Value__c }}</option>\r\n <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\r\n</select>\r\n\r\n<ng-select *ngIf=\"fromShengel\"\r\n class=\"shengel-custom-select\"\r\n [(ngModel)]=\"selectedValue\" \r\n [placeholder]=\"placeholder\"\r\n (change)=\"selectChange($event)\"\r\n [id]=\"id\">\r\n <ng-option *ngFor=\"let option of options\" [value]=\"option\">{{ option[labelField] }}</ng-option> \r\n <ng-option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</ng-option>\r\n</ng-select>\r\n\r\n<span *ngIf=\"error && fromShengel\" class=\"error-msg\">Required*</span>", styles: [".ng-select{width:100%}\n"] }]
|
|
61
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; }, propDecorators: { options: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], placeholder: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], apiMeta: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], selectedValue: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], progressBar: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], id: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], errorMessage: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], error: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], fromShengel: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], valueChange: [{
|
|
80
|
+
type: Output
|
|
81
|
+
}] } });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1kcm9wZG93bi9jdXN0b20tZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWRyb3Bkb3duL2N1c3RvbS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFTLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBTzFELE1BQU0sT0FBTyx1QkFBdUI7SUFZZDtJQVhYLE9BQU8sQ0FBVztJQUNsQixXQUFXLENBQVM7SUFDcEIsT0FBTyxDQUFTO0lBQ2hCLGFBQWEsQ0FBUztJQUN0QixXQUFXLENBQVU7SUFDckIsRUFBRSxDQUFRO0lBQ1YsWUFBWSxDQUFTO0lBQ3JCLEtBQUssQ0FBSztJQUNWLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDNUIsV0FBVyxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztJQUV2RixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3BDLENBQUM7SUFFTSxVQUFVLENBQVM7SUFDbkIsVUFBVSxDQUFTO0lBRTFCLFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RCw2QkFBNkI7UUFDN0IsSUFBRyxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLE1BQU0sR0FBWSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFFL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQzFELElBQUksU0FBUyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdDLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3pDLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDcEI7Z0JBQ0QsK0RBQStEO2dCQUMvRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQTtTQUNIO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUFnQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBUztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRCxzQkFBc0I7UUFDdEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQyxDQUFDLG9DQUFvQztRQUN0RSxNQUFNLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQzt3R0FsRFUsdUJBQXVCOzRGQUF2Qix1QkFBdUIsb1VDWHBDLDByQ0F3QnFFOzs0RkRieEQsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQjtpR0FLdEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsSW5wdXQsT3V0cHV0LEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFQSU1ldGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FwaW1ldGEnO1xyXG5pbXBvcnQgeyBDaGFuZ2VXcmFwcGVyIH0gZnJvbSAnLi4vLi4vbW9kZWwvY2hhbmdlV3JhcHBlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tZHJvcGRvd24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbS1kcm9wZG93bi5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbURyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBvcHRpb25zOiBzdHJpbmdbXTtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFwaU1ldGE6IHN0cmluZztcclxuICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHJvZ3Jlc3NCYXI6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaWQ6c3RyaW5nO1xyXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGVycm9yOmFueTtcclxuICBASW5wdXQoKSBmcm9tU2hlbmdlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPENoYW5nZVdyYXBwZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGFuZ2VXcmFwcGVyPigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHsgXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbGFiZWxGaWVsZDogc3RyaW5nO1xyXG4gIHB1YmxpYyB2YWx1ZUZpZWxkOiBzdHJpbmc7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ2luc2lkZSBvbmluaXQgb2YgY3VzdG9tLWRyb3Bkb3duIG9mICcgKyB0aGlzLmlkKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuYXBpTWV0YSk7XHJcbiAgICBpZih0aGlzLmFwaU1ldGEgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcclxuICAgICAgbGV0IGFwaU9iajogQVBJTWV0YSA9IEpTT04ucGFyc2UodGhpcy5hcGlNZXRhKTtcclxuICAgICAgdGhpcy5sYWJlbEZpZWxkID0gYXBpT2JqLmZpZWxkO1xyXG5cclxuICAgICAgdGhpcy5hcGlSZXNwb25zZShhcGlPYmouZW5kcG9pbnQpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBsZXQgcmVzcG9uc2VzID0gYXBpUmVzcG9uc2VbYXBpT2JqLnZhcmlhYmxlXTtcclxuICAgICAgICBsZXQgcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcG9uc2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB2YXIgcmVzcCA9IHJlc3BvbnNlc1tpXTtcclxuICAgICAgICAgIHJlc3VsdHMucHVzaChyZXNwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gUmVmZXJlbmNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BuZy1zZWxlY3Qvbmctc2VsZWN0XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzdWx0cztcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcGlSZXNwb25zZShlbmRwb2ludDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGVuZHBvaW50KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdENoYW5nZShldmVudDphbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgc2VsZWN0Q2hhbmdlIGZyb20gJyArIHRoaXMuaWQpO1xyXG4gICAgLy8gY29uc29sZS5sb2coZXZlbnQpO1xyXG4gICAgbGV0IGNoYW5nZSA9IG5ldyBDaGFuZ2VXcmFwcGVyKCk7IC8vIENoYW5nZVdyYXBwZXIgPSBKU09OLnBhcnNlKCd7fScpO1xyXG4gICAgY2hhbmdlLmZyb21RdWVzdGlvbklkID0gdGhpcy5pZDtcclxuICAgIGNoYW5nZS52YWx1ZU9iaiA9IGV2ZW50O1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGNoYW5nZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxzZWxlY3QgKm5nSWY9XCIhZnJvbVNoZW5nZWxcIlxyXG4gIFtuZ0NsYXNzXT1cIntcclxuICAgICdkdC1saW5lIGRwRG93biBkb3duIG15dC1kcm9wYm94IG15dC1ib3JkZXItciBteXQtZm9udDEnOiBwcm9ncmVzc0JhcixcclxuICAgICdjdXN0b20tc2VsZWN0JzogIXByb2dyZXNzQmFyXHJcbiAgfVwiIGNsYXNzPVwiY3VzdG9tLXNlbGVjdCBtci1zbS0yIGRkLWhlaWdodFwiIFxyXG4gIFtpZF09XCJpZFwiIFxyXG4gIFsobmdNb2RlbCldPVwic2VsZWN0ZWRWYWx1ZVwiXHJcbiAgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSk7XCIgXHJcbiAgW3N0eWxlLmJvcmRlckNvbG9yXT1cImVycm9yID8gJ3JlZCcgOiAnIzg1ODU4NSdcIlxyXG4gIFtzdHlsZS5jb2xvcl09XCJlcnJvciA/ICdyZWQnIDogJydcIj5cclxuICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi5WYWx1ZV9fY1wiIGNsYXNzPVwib3B0aW9uXCI+e3sgb3B0aW9uLlZhbHVlX19jIH19PC9vcHRpb24+XHJcbiAgICA8b3B0aW9uICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCIgdmFsdWU9XCJcIiBkaXNhYmxlZCBoaWRkZW4+e3sgZXJyb3JNZXNzYWdlIH19PC9vcHRpb24+XHJcbjwvc2VsZWN0PlxyXG5cclxuPG5nLXNlbGVjdCAgKm5nSWY9XCJmcm9tU2hlbmdlbFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2hlbmdlbC1jdXN0b20tc2VsZWN0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZhbHVlXCIgXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICBbaWRdPVwiaWRcIj5cclxuICA8bmctb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIj57eyBvcHRpb25bbGFiZWxGaWVsZF0gfX08L25nLW9wdGlvbj4gXHJcbiAgPG5nLW9wdGlvbiAqbmdJZj1cImVycm9yTWVzc2FnZVwiICB2YWx1ZT1cIlwiIGRpc2FibGVkIGhpZGRlbj57eyBlcnJvck1lc3NhZ2UgfX08L25nLW9wdGlvbj5cclxuPC9uZy1zZWxlY3Q+XHJcblxyXG48c3BhbiAqbmdJZj1cImVycm9yICYmIGZyb21TaGVuZ2VsXCIgY2xhc3M9XCJlcnJvci1tc2dcIj5SZXF1aXJlZCo8L3NwYW4+Il19
|
|
@@ -1,46 +1,75 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "
|
|
4
|
-
import * as i2 from "@angular/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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 "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/forms";
|
|
6
|
+
export class CustomInputComponent {
|
|
7
|
+
changeService;
|
|
8
|
+
value; // input value
|
|
9
|
+
question;
|
|
10
|
+
disabled = false; // input disabled or not
|
|
11
|
+
placeholder;
|
|
12
|
+
error;
|
|
13
|
+
fromShengel = false;
|
|
14
|
+
ngClassValue;
|
|
15
|
+
idValue;
|
|
16
|
+
focusEvent;
|
|
17
|
+
inputValue = new EventEmitter();
|
|
18
|
+
subscription;
|
|
19
|
+
constructor(changeService) {
|
|
20
|
+
this.changeService = changeService;
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() {
|
|
23
|
+
// Since the idValue holds the Parent Question
|
|
24
|
+
if (this.question.Sub_Text__c != undefined) {
|
|
25
|
+
this.disabled = true;
|
|
26
|
+
let dependencyObj = JSON.parse(this.question.Sub_Text__c);
|
|
27
|
+
// Subscribe for the changes
|
|
28
|
+
this.subscription = this.changeService.changeAnnounced$.subscribe((changeValue) => {
|
|
29
|
+
if (changeValue != undefined) {
|
|
30
|
+
console.log('inside subscription for the change');
|
|
31
|
+
if (changeValue != undefined) {
|
|
32
|
+
this.value = changeValue.valueObj[dependencyObj.valueField];
|
|
33
|
+
}
|
|
34
|
+
this.changeService.confirmChange(dependencyObj.sourceQuestionId);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
ngOnChange() {
|
|
40
|
+
}
|
|
41
|
+
ngOnDestroy() {
|
|
42
|
+
// prevent memory leak when component destroyed
|
|
43
|
+
this.subscription.unsubscribe();
|
|
44
|
+
}
|
|
45
|
+
onInputChange(input) {
|
|
46
|
+
this.inputValue.emit(input.target.value);
|
|
47
|
+
}
|
|
48
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomInputComponent, deps: [{ token: i1.ChangeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomInputComponent, selector: "app-custom-input", inputs: { value: "value", question: "question", disabled: "disabled", placeholder: "placeholder", error: "error", fromShengel: "fromShengel", ngClassValue: "ngClassValue", idValue: "idValue", focusEvent: "focusEvent" }, outputs: { inputValue: "inputValue" }, ngImport: i0, template: "<input *ngIf=\"!fromShengel\" type=\"text\" \r\n [(ngModel)]=\"value\"\r\n [ngClass]=\"ngClassValue\"\r\n [id]=\"idValue\"\r\n (focus)=\"focusEvent\"\r\n [style.border-color]=\"error ? 'red' : ''\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\" />\r\n\r\n<input *ngIf=\"fromShengel\" class=\"input-shengel\"\r\n [(ngModel)]=\"value\"\r\n type=\"text\" \r\n class=\"she-line-input form-control\" \r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n (input)=\"onInputChange($event)\" />\r\n\r\n<span *ngIf=\"error\" class=\"error-msg\">Required*</span>\r\n", styles: [".form-control[disabled]{border-radius:5px;background-color:#e9ecef!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomInputComponent, decorators: [{
|
|
52
|
+
type: Component,
|
|
53
|
+
args: [{ selector: 'app-custom-input', template: "<input *ngIf=\"!fromShengel\" type=\"text\" \r\n [(ngModel)]=\"value\"\r\n [ngClass]=\"ngClassValue\"\r\n [id]=\"idValue\"\r\n (focus)=\"focusEvent\"\r\n [style.border-color]=\"error ? 'red' : ''\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\" />\r\n\r\n<input *ngIf=\"fromShengel\" class=\"input-shengel\"\r\n [(ngModel)]=\"value\"\r\n type=\"text\" \r\n class=\"she-line-input form-control\" \r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n (input)=\"onInputChange($event)\" />\r\n\r\n<span *ngIf=\"error\" class=\"error-msg\">Required*</span>\r\n", styles: [".form-control[disabled]{border-radius:5px;background-color:#e9ecef!important}\n"] }]
|
|
54
|
+
}], ctorParameters: function () { return [{ type: i1.ChangeService }]; }, propDecorators: { value: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], question: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], disabled: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], placeholder: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], error: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], fromShengel: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], ngClassValue: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], idValue: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], focusEvent: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], inputValue: [{
|
|
73
|
+
type: Output
|
|
74
|
+
}] } });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1pbnB1dC9jdXN0b20taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWlucHV0L2N1c3RvbS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQWEvRSxNQUFNLE9BQU8sb0JBQW9CO0lBZVg7SUFkWCxLQUFLLENBQWMsQ0FBQyxjQUFjO0lBQ2xDLFFBQVEsQ0FBVTtJQUNsQixRQUFRLEdBQVksS0FBSyxDQUFDLENBQUMsd0JBQXdCO0lBQ25ELFdBQVcsQ0FBUTtJQUNuQixLQUFLLENBQUs7SUFDVixXQUFXLEdBQVksS0FBSyxDQUFDO0lBRTdCLFlBQVksQ0FBSztJQUNqQixPQUFPLENBQUs7SUFDWixVQUFVLENBQU07SUFDZixVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUUvQyxZQUFZLENBQWU7SUFFM0IsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFDaEQsQ0FBQztJQUVELFFBQVE7UUFDTiw4Q0FBOEM7UUFDOUMsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxTQUFTLEVBQUU7WUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxhQUFhLEdBQW1CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUUxRSw0QkFBNEI7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FDL0QsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDZCxJQUFHLFdBQVcsSUFBSSxTQUFTLEVBQUU7b0JBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztvQkFDbEQsSUFBRyxXQUFXLElBQUksU0FBUyxFQUFFO3dCQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3FCQUM3RDtvQkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDbEU7WUFDSCxDQUFDLENBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELFVBQVU7SUFDVixDQUFDO0lBRUQsV0FBVztRQUNULCtDQUErQztRQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBUztRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzFDLENBQUM7d0dBakRVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLDJUQ2JqQyxpcUJBa0JBOzs0RkRMYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usa0JBQWtCO29HQU1uQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hhbmdlV3JhcHBlciB9IGZyb20gJy4uLy4uL21vZGVsL2NoYW5nZVdyYXBwZXInO1xyXG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uLy4uL3dyYXBwZXInO1xyXG5pbXBvcnQgeyBEZXBlbmRlbmN5TWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGVwZW5kZW5jeU1ldGEnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLWlucHV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20taW5wdXQuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBhbnkgfCBhbnlbXTsgLy8gaW5wdXQgdmFsdWVcclxuICBASW5wdXQoKSBxdWVzdGlvbjogUXVlc3Rpb25cclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlOyAvLyBpbnB1dCBkaXNhYmxlZCBvciBub3RcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjpzdHJpbmc7XHJcbiAgQElucHV0KCkgZXJyb3I6YW55O1xyXG4gIEBJbnB1dCgpIGZyb21TaGVuZ2VsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIG5nQ2xhc3NWYWx1ZTphbnk7XHJcbiAgQElucHV0KCkgaWRWYWx1ZTphbnk7XHJcbiAgQElucHV0KCkgZm9jdXNFdmVudDogYW55O1xyXG4gIEBPdXRwdXQoKSBpbnB1dFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7IFxyXG5cclxuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlKSB7IFxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBTaW5jZSB0aGUgaWRWYWx1ZSBob2xkcyB0aGUgUGFyZW50IFF1ZXN0aW9uXHJcbiAgICBpZih0aGlzLnF1ZXN0aW9uLlN1Yl9UZXh0X19jICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgbGV0IGRlcGVuZGVuY3lPYmo6IERlcGVuZGVuY3lNZXRhID0gSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uLlN1Yl9UZXh0X19jKTtcclxuXHJcbiAgICAgIC8vIFN1YnNjcmliZSBmb3IgdGhlIGNoYW5nZXNcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuY2hhbmdlQW5ub3VuY2VkJC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGNoYW5nZVZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2luc2lkZSBzdWJzY3JpcHRpb24gZm9yIHRoZSBjaGFuZ2UnKTtcclxuICAgICAgICAgICAgaWYoY2hhbmdlVmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGNoYW5nZVZhbHVlLnZhbHVlT2JqW2RlcGVuZGVuY3lPYmoudmFsdWVGaWVsZF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmNvbmZpcm1DaGFuZ2UoZGVwZW5kZW5jeU9iai5zb3VyY2VRdWVzdGlvbklkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBwcmV2ZW50IG1lbW9yeSBsZWFrIHdoZW4gY29tcG9uZW50IGRlc3Ryb3llZFxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbiAgXHJcbiAgb25JbnB1dENoYW5nZShpbnB1dDphbnkpe1xyXG4gICAgdGhpcy5pbnB1dFZhbHVlLmVtaXQoaW5wdXQudGFyZ2V0LnZhbHVlKVxyXG4gIH1cclxufVxyXG4iLCI8aW5wdXQgKm5nSWY9XCIhZnJvbVNoZW5nZWxcIiB0eXBlPVwidGV4dFwiIFxyXG4gICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICBbbmdDbGFzc109XCJuZ0NsYXNzVmFsdWVcIlxyXG4gICAgICAgW2lkXT1cImlkVmFsdWVcIlxyXG4gICAgICAgKGZvY3VzKT1cImZvY3VzRXZlbnRcIlxyXG4gICAgICAgW3N0eWxlLmJvcmRlci1jb2xvcl09XCJlcnJvciA/ICdyZWQnIDogJydcIlxyXG4gICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIiAvPlxyXG5cclxuPGlucHV0ICpuZ0lmPVwiZnJvbVNoZW5nZWxcIiBjbGFzcz1cImlucHV0LXNoZW5nZWxcIlxyXG4gICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICB0eXBlPVwidGV4dFwiIFxyXG4gICAgICAgY2xhc3M9XCJzaGUtbGluZS1pbnB1dCBmb3JtLWNvbnRyb2xcIiBcclxuICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiIC8+XHJcblxyXG48c3BhbiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvci1tc2dcIj5SZXF1aXJlZCo8L3NwYW4+XHJcbiJdfQ==
|